From 7dcd78d3efe26c3294d186694acd09d71b3ce074 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Thu, 9 May 2024 17:18:16 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E9=82=80=E8=AF=B7=E5=88=86=E4=BA=AB?= =?UTF-8?q?=E9=93=BE=E6=8E=A5=E7=AE=80=E5=8C=96=20=E5=85=AC=E5=91=8A?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B8=A0=E9=81=93=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/DB_Createroom.dat | Bin 7755 -> 11475 bytes data/DB_Createroom.json | 1894 ++++++++++++++++++++++++++++++++-- data/DB_Game_Drop.dat | 382 +++---- data/DB_Game_Drop.json | 420 ++++---- data/DB_PropExchange.dat | 6 +- data/DB_Task.dat | Bin 1999 -> 1999 bytes protocol/gamehall/game.pb.go | 660 ++++++------ protocol/gamehall/game.proto | 1 + protocol/webapi/common.pb.go | 808 ++++++++------- protocol/webapi/common.proto | 1 + protocol/webapi/webapi.pb.go | 290 ++++-- protocol/webapi/webapi.proto | 14 +- public | 2 +- webapi/deprecated.go | 839 +-------------- worldsrv/action_game.go | 25 +- worldsrv/action_player.go | 311 ------ worldsrv/action_welfare.go | 47 +- worldsrv/welfmgr.go | 1 - xlsx/DB_Createroom.xlsx | Bin 19438 -> 22698 bytes xlsx/DB_Game_Drop.xlsx | Bin 21037 -> 21201 bytes 20 files changed, 3221 insertions(+), 2480 deletions(-) diff --git a/data/DB_Createroom.dat b/data/DB_Createroom.dat index 8fc44c6b5b5d34bdee12902de2c4486bf95c1fb6..ab19bcb0028c04acef25521719ca3b527149f332 100644 GIT binary patch delta 1915 zcmZvdTWl0n7{@t#W@gXsb~`idcDu8?Gkcr8bg5{)g>Y-V#i)SRI~bLEkMW@x6XPv* zBPviEX^)~JrmaS!QlStpF-B-L-r}X*qCUXFn>-K^c=E**|KCh}pz&qC-~a!8XXkYO zbEZG8JhXmtu(igF21~MnvS@4vudzkpmBg5p3+Yr zZ?9>y`j*P}bzw`W7#I&GnI`93Z5EUnJ;#Jxr59O9_UT0)HX6fcUAY@Zi=5G29>s#b z_8c#YR%sb7)8%TT#0|K|SXsUVUJULJm3RzwZPHaMA`Y4km3bTLIGn0TfMx<6a=^4$ zQtmWuZo%oYGCV6%^04Xff=J7M%selNjLa`~)snC=agdkgql=4BS*YHK%W`ts>*k?H zp$pQC(R2~|B(y90JY9lb(c)r{`(m!_Q5AVOR>ZGYC5yW`OLWi^!d(YW{E-~^VSZIj zo7%i;VC$1%Thy?0kLs|7G^2Um33Wzw<-T}HT_To3b!(mI)iYJ-3!wLU)CD@~(S@Lh zUFB7Ak(_F)bQ0N5fA-zP(8`j1aX15IO@nDM0jp%8%T-FngS`aH> zcI$b*5;ZG|Y;O2$fv<*`&8mO5-g|CIjC!8uSFYLhyJ{o zMI_gQn&GmXwkW_}s9K~f%@oCOlU$Z^QE!$Ty?Tq>;?-N_WQyXv4b!uV%WfY@lUxt! zs4m+eZ}9XT(334?Ii7A;ZE+{m9yP=7LN%jB8OY?Z{f$r?qE&fgrh_jL_sC~6HPn0M zM_#>89`Wk^GGy2A=RJVwT(HvipwV0q)k8*8jFlTH?Y80x3iBovMjf5d2x=r)9d zbJRo-MO?EY&-;xg1+fX!6S@nt;azc(5W{0|(>O~_giykjB6u9$kWq%Bv-AWM&eDjf zz@Ve_6b%0;Jq@B9oyrkRJFH|h7A;eu8c&yjtQ6K*CvVY$ll z1icaRULahaa+MbeMm=u};Wl_%2~K+6Ho{qjmJAXO#wxf4GKVol#u3k$Y$<3d@iG}p z;%Q7ANN1E`l4dlkxnhLyjGEJ`LK1F>x>~1rg|J(z0$(MpXKKn0g1vy(2#x|?Cy3ZJ z^LG!Xto%oY2DIt zVvJgjo{^&o742?4s};rDWM&0z{T;$ni4uAfdJe|BWHdZ{kFc+udTAr4mBjmG^cZn zA0QlzxynHTKlLfXBk-mP5PTsez5@RLm(>wp)7XJ@7B}?Yg>T64--T}p{deIzLjPU( zp0J)d4=eV1*Q4GwVw2gw6aREvS?Hi<3CE$(zsR@6s!CNTwgLvUQMfC*X1>|c9$5?gp(C9Sc_53f@Ykr zC14#c*Aj9I)wQ?-1^lMlumSU$BX1bb^{4V$pupOiO~n~1x#uMl$NE%ek9bjbZGo`dO8mu$$h&BrG@_~{+JMjuN3qTFQM-n)skmY{ zV0@;dx?&GkM`WAaUce^L?PIrix=rQ%gq>AfJplOCs~+U)BF`NHoKwkN4zn9qc;6Ag zot`_&F7D$l#~1?<#^a3H8May_PB1n`bTuwcGUjcQ<_naYsv|mCeD_&uN+4rT+Eq?5 zEKpNwMx18MmZy}AI0I+~)8x*wn@H4AkCA9ftr6!~mg0zO zfD^h+>N-~onnienu^AX|GHPxT-eH5kn$G1Gi%*m{SKJ27ha7dbxWlfcG=X{7ho+IF z!??>TSL!G!aSyP?aOpemv&&0KnmEhY9?+GT=mGp>L}=h%z@J8(-~nJP%#-&4)`$6} z{k+|p$@enASj@p7U^dLRI>e50Kr=lAob=oyc3qx(47jk0_dQ`Zx02foGZusJ6fozN zN7zvisLd##7U7@d*ij6WD)9_(X~e*Ww2uxWZ%38qTr0-l1tZ0PKKCWymxxRE{EA&M z2Cuy?<(!B&jMc#uHrD#EBU(er7y}%Rrs;s*a*cuzd?5Kh6oW9@tMH#XCi*1&RU4D~ mC5&cFX+XmH89Ov6`9J=*Z-^95)kc(u4Dn1%dBm_F6Z;Kee<(2k diff --git a/data/DB_Createroom.json b/data/DB_Createroom.json index 6890794..36b85c5 100644 --- a/data/DB_Createroom.json +++ b/data/DB_Createroom.json @@ -1675,7 +1675,7 @@ ] }, { - "Id": 103, + "Id": 1, "GameId": 209, "GameSite": 1, "GoldRange": [ @@ -1687,7 +1687,7 @@ ] }, { - "Id": 104, + "Id": 2, "GameId": 209, "GameSite": 1, "GoldRange": [ @@ -1699,7 +1699,7 @@ ] }, { - "Id": 105, + "Id": 3, "GameId": 209, "GameSite": 1, "GoldRange": [ @@ -1712,7 +1712,7 @@ ] }, { - "Id": 106, + "Id": 4, "GameId": 209, "GameSite": 1, "GoldRange": [ @@ -1726,7 +1726,7 @@ ] }, { - "Id": 107, + "Id": 5, "GameId": 209, "GameSite": 1, "GoldRange": [ @@ -1741,7 +1741,7 @@ ] }, { - "Id": 108, + "Id": 6, "GameId": 209, "GameSite": 1, "GoldRange": [ @@ -1757,7 +1757,7 @@ ] }, { - "Id": 109, + "Id": 7, "GameId": 209, "GameSite": 1, "GoldRange": [ @@ -1774,7 +1774,7 @@ ] }, { - "Id": 110, + "Id": 8, "GameId": 209, "GameSite": 1, "GoldRange": [ @@ -1791,9 +1791,1683 @@ 30000 ] }, + { + "Id": 9, + "GameId": 209, + "GameSite": 1, + "GoldRange": [ + 910000, + 1040000 + ], + "BetRange": [ + 2000, + 5000, + 10000, + 15000, + 20000, + 25000, + 35000 + ] + }, + { + "Id": 10, + "GameId": 209, + "GameSite": 1, + "GoldRange": [ + 1040000, + 1170000 + ], + "BetRange": [ + 5000, + 10000, + 15000, + 20000, + 25000, + 35000, + 40000 + ] + }, + { + "Id": 11, + "GameId": 209, + "GameSite": 1, + "GoldRange": [ + 1170000, + 1300000 + ], + "BetRange": [ + 5000, + 10000, + 15000, + 20000, + 25000, + 35000, + 45000 + ] + }, + { + "Id": 12, + "GameId": 209, + "GameSite": 1, + "GoldRange": [ + 1300000, + 1430000 + ], + "BetRange": [ + 5000, + 10000, + 15000, + 20000, + 25000, + 35000, + 50000 + ] + }, + { + "Id": 13, + "GameId": 209, + "GameSite": 1, + "GoldRange": [ + 1430000, + 1560000 + ], + "BetRange": [ + 5000, + 10000, + 15000, + 20000, + 25000, + 35000, + 55000 + ] + }, + { + "Id": 14, + "GameId": 209, + "GameSite": 1, + "GoldRange": [ + 1560000, + 1690000 + ], + "BetRange": [ + 5000, + 10000, + 15000, + 20000, + 35000, + 50000, + 60000 + ] + }, + { + "Id": 15, + "GameId": 209, + "GameSite": 1, + "GoldRange": [ + 1690000, + 1820000 + ], + "BetRange": [ + 5000, + 10000, + 20000, + 30000, + 40000, + 50000, + 65000 + ] + }, + { + "Id": 16, + "GameId": 209, + "GameSite": 1, + "GoldRange": [ + 1820000, + 1950000 + ], + "BetRange": [ + 10000, + 20000, + 30000, + 40000, + 50000, + 60000, + 70000 + ] + }, + { + "Id": 17, + "GameId": 209, + "GameSite": 1, + "GoldRange": [ + 1950000, + 2080000 + ], + "BetRange": [ + 10000, + 20000, + 30000, + 40000, + 50000, + 60000, + 75000 + ] + }, + { + "Id": 18, + "GameId": 209, + "GameSite": 1, + "GoldRange": [ + 2080000, + 2210000 + ], + "BetRange": [ + 10000, + 20000, + 30000, + 40000, + 50000, + 60000, + 80000 + ] + }, + { + "Id": 19, + "GameId": 209, + "GameSite": 1, + "GoldRange": [ + 2210000, + 2340000 + ], + "BetRange": [ + 15000, + 30000, + 40000, + 50000, + 60000, + 70000, + 80000 + ] + }, + { + "Id": 20, + "GameId": 209, + "GameSite": 1, + "GoldRange": [ + 2340000, + 2470000 + ], + "BetRange": [ + 15000, + 30000, + 40000, + 50000, + 60000, + 70000, + 90000 + ] + }, + { + "Id": 21, + "GameId": 209, + "GameSite": 1, + "GoldRange": [ + 2470000, + 2600000 + ], + "BetRange": [ + 15000, + 30000, + 40000, + 50000, + 60000, + 75000, + 95000 + ] + }, + { + "Id": 22, + "GameId": 209, + "GameSite": 1, + "GoldRange": [ + 2600000, + 3900000 + ], + "BetRange": [ + 20000, + 35000, + 50000, + 60000, + 70000, + 85000, + 100000 + ] + }, + { + "Id": 23, + "GameId": 209, + "GameSite": 2, + "GoldRange": [ + 3900000, + 5200000 + ], + "BetRange": [ + 100000, + 150000 + ] + }, + { + "Id": 24, + "GameId": 209, + "GameSite": 2, + "GoldRange": [ + 5200000, + 6500000 + ], + "BetRange": [ + 100000, + 150000, + 200000 + ] + }, + { + "Id": 25, + "GameId": 209, + "GameSite": 2, + "GoldRange": [ + 6500000, + 7800000 + ], + "BetRange": [ + 100000, + 150000, + 200000, + 250000 + ] + }, + { + "Id": 26, + "GameId": 209, + "GameSite": 2, + "GoldRange": [ + 7800000, + 9100000 + ], + "BetRange": [ + 100000, + 150000, + 200000, + 300000 + ] + }, + { + "Id": 27, + "GameId": 209, + "GameSite": 2, + "GoldRange": [ + 9100000, + 10400000 + ], + "BetRange": [ + 100000, + 150000, + 200000, + 300000, + 350000 + ] + }, + { + "Id": 28, + "GameId": 209, + "GameSite": 2, + "GoldRange": [ + 10400000, + 11700000 + ], + "BetRange": [ + 100000, + 150000, + 200000, + 300000, + 350000, + 400000 + ] + }, + { + "Id": 29, + "GameId": 209, + "GameSite": 2, + "GoldRange": [ + 11700000, + 13000000 + ], + "BetRange": [ + 100000, + 150000, + 200000, + 300000, + 350000, + 450000 + ] + }, + { + "Id": 30, + "GameId": 209, + "GameSite": 2, + "GoldRange": [ + 13000000, + 14300000 + ], + "BetRange": [ + 100000, + 150000, + 200000, + 300000, + 400000, + 500000 + ] + }, + { + "Id": 31, + "GameId": 209, + "GameSite": 2, + "GoldRange": [ + 14300000, + 15600000 + ], + "BetRange": [ + 100000, + 150000, + 200000, + 300000, + 400000, + 550000 + ] + }, + { + "Id": 32, + "GameId": 209, + "GameSite": 2, + "GoldRange": [ + 15600000, + 16900000 + ], + "BetRange": [ + 100000, + 200000, + 300000, + 400000, + 500000, + 600000 + ] + }, + { + "Id": 33, + "GameId": 209, + "GameSite": 2, + "GoldRange": [ + 16900000, + 18200000 + ], + "BetRange": [ + 100000, + 200000, + 300000, + 400000, + 500000, + 650000 + ] + }, + { + "Id": 34, + "GameId": 209, + "GameSite": 2, + "GoldRange": [ + 18200000, + 19500000 + ], + "BetRange": [ + 100000, + 200000, + 300000, + 500000, + 600000, + 700000 + ] + }, + { + "Id": 35, + "GameId": 209, + "GameSite": 2, + "GoldRange": [ + 19500000, + 20800000 + ], + "BetRange": [ + 200000, + 300000, + 400000, + 500000, + 600000, + 750000 + ] + }, + { + "Id": 36, + "GameId": 209, + "GameSite": 2, + "GoldRange": [ + 20800000, + 22100000 + ], + "BetRange": [ + 200000, + 300000, + 400000, + 500000, + 600000, + 800000 + ] + }, + { + "Id": 37, + "GameId": 209, + "GameSite": 2, + "GoldRange": [ + 22100000, + 23400000 + ], + "BetRange": [ + 200000, + 300000, + 500000, + 600000, + 700000, + 850000 + ] + }, + { + "Id": 38, + "GameId": 209, + "GameSite": 2, + "GoldRange": [ + 23400000, + 24700000 + ], + "BetRange": [ + 200000, + 300000, + 500000, + 600000, + 800000, + 900000 + ] + }, + { + "Id": 39, + "GameId": 209, + "GameSite": 2, + "GoldRange": [ + 24700000, + 26000000 + ], + "BetRange": [ + 200000, + 300000, + 500000, + 600000, + 800000, + 950000 + ] + }, + { + "Id": 40, + "GameId": 209, + "GameSite": 2, + "GoldRange": [ + 26000000, + 52000000 + ], + "BetRange": [ + 200000, + 300000, + 500000, + 600000, + 800000, + 1000000 + ] + }, + { + "Id": 41, + "GameId": 209, + "GameSite": 3, + "GoldRange": [ + 52000000, + 130000000 + ], + "BetRange": [ + 1000000, + 2000000 + ] + }, + { + "Id": 42, + "GameId": 209, + "GameSite": 3, + "GoldRange": [ + 130000000, + 260000000 + ], + "BetRange": [ + 1000000, + 2000000, + 5000000 + ] + }, + { + "Id": 43, + "GameId": 209, + "GameSite": 3, + "GoldRange": [ + 260000000, + 390000000 + ], + "BetRange": [ + 1000000, + 2000000, + 5000000, + 10000000 + ] + }, + { + "Id": 44, + "GameId": 209, + "GameSite": 3, + "GoldRange": [ + 390000000, + 520000000 + ], + "BetRange": [ + 1000000, + 2000000, + 5000000, + 15000000 + ] + }, + { + "Id": 45, + "GameId": 209, + "GameSite": 3, + "GoldRange": [ + 520000000, + 650000000 + ], + "BetRange": [ + 1000000, + 2000000, + 5000000, + 15000000, + 20000000 + ] + }, + { + "Id": 46, + "GameId": 209, + "GameSite": 3, + "GoldRange": [ + 650000000, + 780000000 + ], + "BetRange": [ + 1000000, + 2000000, + 5000000, + 15000000, + 20000000, + 25000000 + ] + }, + { + "Id": 47, + "GameId": 209, + "GameSite": 3, + "GoldRange": [ + 780000000, + 910000000 + ], + "BetRange": [ + 1000000, + 2000000, + 5000000, + 15000000, + 20000000, + 30000000 + ] + }, + { + "Id": 48, + "GameId": 209, + "GameSite": 3, + "GoldRange": [ + 910000000, + 1040000000 + ], + "BetRange": [ + 1000000, + 2000000, + 5000000, + 15000000, + 20000000, + 30000000 + ] + }, + { + "Id": 49, + "GameId": 209, + "GameSite": 3, + "GoldRange": [ + 1040000000, + 1170000000 + ], + "BetRange": [ + 1000000, + 2000000, + 5000000, + 15000000, + 20000000, + 40000000 + ] + }, + { + "Id": 50, + "GameId": 209, + "GameSite": 3, + "GoldRange": [ + 1170000000, + 1300000000 + ], + "BetRange": [ + 1000000, + 2000000, + 5000000, + 15000000, + 20000000, + 40000000 + ] + }, + { + "Id": 51, + "GameId": 209, + "GameSite": 3, + "GoldRange": [ + 1300000000 + ], + "BetRange": [ + 5000000, + 10000000, + 20000000, + 30000000, + 40000000, + 50000000 + ] + }, + { + "Id": 52, + "GameId": 210, + "GameSite": 1, + "GoldRange": [ + 0, + 52000 + ], + "BetRange": [ + 0 + ] + }, + { + "Id": 53, + "GameId": 210, + "GameSite": 1, + "GoldRange": [ + 52000, + 130000 + ], + "BetRange": [ + 2000 + ] + }, + { + "Id": 54, + "GameId": 210, + "GameSite": 1, + "GoldRange": [ + 130000, + 260000 + ], + "BetRange": [ + 2000, + 5000 + ] + }, + { + "Id": 55, + "GameId": 210, + "GameSite": 1, + "GoldRange": [ + 260000, + 390000 + ], + "BetRange": [ + 2000, + 5000, + 10000 + ] + }, + { + "Id": 56, + "GameId": 210, + "GameSite": 1, + "GoldRange": [ + 390000, + 520000 + ], + "BetRange": [ + 2000, + 5000, + 10000, + 15000 + ] + }, + { + "Id": 57, + "GameId": 210, + "GameSite": 1, + "GoldRange": [ + 520000, + 650000 + ], + "BetRange": [ + 2000, + 5000, + 10000, + 15000, + 20000 + ] + }, + { + "Id": 58, + "GameId": 210, + "GameSite": 1, + "GoldRange": [ + 650000, + 780000 + ], + "BetRange": [ + 2000, + 5000, + 10000, + 15000, + 20000, + 25000 + ] + }, + { + "Id": 59, + "GameId": 210, + "GameSite": 1, + "GoldRange": [ + 780000, + 910000 + ], + "BetRange": [ + 2000, + 5000, + 10000, + 15000, + 20000, + 25000, + 30000 + ] + }, + { + "Id": 60, + "GameId": 210, + "GameSite": 1, + "GoldRange": [ + 910000, + 1040000 + ], + "BetRange": [ + 2000, + 5000, + 10000, + 15000, + 20000, + 25000, + 35000 + ] + }, + { + "Id": 61, + "GameId": 210, + "GameSite": 1, + "GoldRange": [ + 1040000, + 1170000 + ], + "BetRange": [ + 5000, + 10000, + 15000, + 20000, + 25000, + 35000, + 40000 + ] + }, + { + "Id": 62, + "GameId": 210, + "GameSite": 1, + "GoldRange": [ + 1170000, + 1300000 + ], + "BetRange": [ + 5000, + 10000, + 15000, + 20000, + 25000, + 35000, + 45000 + ] + }, + { + "Id": 63, + "GameId": 210, + "GameSite": 1, + "GoldRange": [ + 1300000, + 1430000 + ], + "BetRange": [ + 5000, + 10000, + 15000, + 20000, + 25000, + 35000, + 50000 + ] + }, + { + "Id": 64, + "GameId": 210, + "GameSite": 1, + "GoldRange": [ + 1430000, + 1560000 + ], + "BetRange": [ + 5000, + 10000, + 15000, + 20000, + 25000, + 35000, + 55000 + ] + }, + { + "Id": 65, + "GameId": 210, + "GameSite": 1, + "GoldRange": [ + 1560000, + 1690000 + ], + "BetRange": [ + 5000, + 10000, + 15000, + 20000, + 35000, + 50000, + 60000 + ] + }, + { + "Id": 66, + "GameId": 210, + "GameSite": 1, + "GoldRange": [ + 1690000, + 1820000 + ], + "BetRange": [ + 5000, + 10000, + 20000, + 30000, + 40000, + 50000, + 65000 + ] + }, + { + "Id": 67, + "GameId": 210, + "GameSite": 1, + "GoldRange": [ + 1820000, + 1950000 + ], + "BetRange": [ + 10000, + 20000, + 30000, + 40000, + 50000, + 60000, + 70000 + ] + }, + { + "Id": 68, + "GameId": 210, + "GameSite": 1, + "GoldRange": [ + 1950000, + 2080000 + ], + "BetRange": [ + 10000, + 20000, + 30000, + 40000, + 50000, + 60000, + 75000 + ] + }, + { + "Id": 69, + "GameId": 210, + "GameSite": 1, + "GoldRange": [ + 2080000, + 2210000 + ], + "BetRange": [ + 10000, + 20000, + 30000, + 40000, + 50000, + 60000, + 80000 + ] + }, + { + "Id": 70, + "GameId": 210, + "GameSite": 1, + "GoldRange": [ + 2210000, + 2340000 + ], + "BetRange": [ + 15000, + 30000, + 40000, + 50000, + 60000, + 70000, + 80000 + ] + }, + { + "Id": 71, + "GameId": 210, + "GameSite": 1, + "GoldRange": [ + 2340000, + 2470000 + ], + "BetRange": [ + 15000, + 30000, + 40000, + 50000, + 60000, + 70000, + 90000 + ] + }, + { + "Id": 72, + "GameId": 210, + "GameSite": 1, + "GoldRange": [ + 2470000, + 2600000 + ], + "BetRange": [ + 15000, + 30000, + 40000, + 50000, + 60000, + 75000, + 95000 + ] + }, + { + "Id": 73, + "GameId": 210, + "GameSite": 1, + "GoldRange": [ + 2600000, + 3900000 + ], + "BetRange": [ + 20000, + 35000, + 50000, + 60000, + 70000, + 85000, + 100000 + ] + }, + { + "Id": 74, + "GameId": 210, + "GameSite": 2, + "GoldRange": [ + 3900000, + 5200000 + ], + "BetRange": [ + 100000, + 150000 + ] + }, + { + "Id": 75, + "GameId": 210, + "GameSite": 2, + "GoldRange": [ + 5200000, + 6500000 + ], + "BetRange": [ + 100000, + 150000, + 200000 + ] + }, + { + "Id": 76, + "GameId": 210, + "GameSite": 2, + "GoldRange": [ + 6500000, + 7800000 + ], + "BetRange": [ + 100000, + 150000, + 200000, + 250000 + ] + }, + { + "Id": 77, + "GameId": 210, + "GameSite": 2, + "GoldRange": [ + 7800000, + 9100000 + ], + "BetRange": [ + 100000, + 150000, + 200000, + 300000 + ] + }, + { + "Id": 78, + "GameId": 210, + "GameSite": 2, + "GoldRange": [ + 9100000, + 10400000 + ], + "BetRange": [ + 100000, + 150000, + 200000, + 300000, + 350000 + ] + }, + { + "Id": 79, + "GameId": 210, + "GameSite": 2, + "GoldRange": [ + 10400000, + 11700000 + ], + "BetRange": [ + 100000, + 150000, + 200000, + 300000, + 350000, + 400000 + ] + }, + { + "Id": 80, + "GameId": 210, + "GameSite": 2, + "GoldRange": [ + 11700000, + 13000000 + ], + "BetRange": [ + 100000, + 150000, + 200000, + 300000, + 350000, + 450000 + ] + }, + { + "Id": 81, + "GameId": 210, + "GameSite": 2, + "GoldRange": [ + 13000000, + 14300000 + ], + "BetRange": [ + 100000, + 150000, + 200000, + 300000, + 400000, + 500000 + ] + }, + { + "Id": 82, + "GameId": 210, + "GameSite": 2, + "GoldRange": [ + 14300000, + 15600000 + ], + "BetRange": [ + 100000, + 150000, + 200000, + 300000, + 400000, + 550000 + ] + }, + { + "Id": 83, + "GameId": 210, + "GameSite": 2, + "GoldRange": [ + 15600000, + 16900000 + ], + "BetRange": [ + 100000, + 200000, + 300000, + 400000, + 500000, + 600000 + ] + }, + { + "Id": 84, + "GameId": 210, + "GameSite": 2, + "GoldRange": [ + 16900000, + 18200000 + ], + "BetRange": [ + 100000, + 200000, + 300000, + 400000, + 500000, + 650000 + ] + }, + { + "Id": 85, + "GameId": 210, + "GameSite": 2, + "GoldRange": [ + 18200000, + 19500000 + ], + "BetRange": [ + 100000, + 200000, + 300000, + 500000, + 600000, + 700000 + ] + }, + { + "Id": 86, + "GameId": 210, + "GameSite": 2, + "GoldRange": [ + 19500000, + 20800000 + ], + "BetRange": [ + 200000, + 300000, + 400000, + 500000, + 600000, + 750000 + ] + }, + { + "Id": 87, + "GameId": 210, + "GameSite": 2, + "GoldRange": [ + 20800000, + 22100000 + ], + "BetRange": [ + 200000, + 300000, + 400000, + 500000, + 600000, + 800000 + ] + }, + { + "Id": 88, + "GameId": 210, + "GameSite": 2, + "GoldRange": [ + 22100000, + 23400000 + ], + "BetRange": [ + 200000, + 300000, + 500000, + 600000, + 700000, + 850000 + ] + }, + { + "Id": 89, + "GameId": 210, + "GameSite": 2, + "GoldRange": [ + 23400000, + 24700000 + ], + "BetRange": [ + 200000, + 300000, + 500000, + 600000, + 800000, + 900000 + ] + }, + { + "Id": 90, + "GameId": 210, + "GameSite": 2, + "GoldRange": [ + 24700000, + 26000000 + ], + "BetRange": [ + 200000, + 300000, + 500000, + 600000, + 800000, + 950000 + ] + }, + { + "Id": 91, + "GameId": 210, + "GameSite": 2, + "GoldRange": [ + 26000000, + 52000000 + ], + "BetRange": [ + 200000, + 300000, + 500000, + 600000, + 800000, + 1000000 + ] + }, + { + "Id": 92, + "GameId": 210, + "GameSite": 3, + "GoldRange": [ + 52000000, + 130000000 + ], + "BetRange": [ + 1000000, + 2000000 + ] + }, + { + "Id": 93, + "GameId": 210, + "GameSite": 3, + "GoldRange": [ + 130000000, + 260000000 + ], + "BetRange": [ + 1000000, + 2000000, + 5000000 + ] + }, + { + "Id": 94, + "GameId": 210, + "GameSite": 3, + "GoldRange": [ + 260000000, + 390000000 + ], + "BetRange": [ + 1000000, + 2000000, + 5000000, + 10000000 + ] + }, + { + "Id": 95, + "GameId": 210, + "GameSite": 3, + "GoldRange": [ + 390000000, + 520000000 + ], + "BetRange": [ + 1000000, + 2000000, + 5000000, + 15000000 + ] + }, + { + "Id": 96, + "GameId": 210, + "GameSite": 3, + "GoldRange": [ + 520000000, + 650000000 + ], + "BetRange": [ + 1000000, + 2000000, + 5000000, + 15000000, + 20000000 + ] + }, + { + "Id": 97, + "GameId": 210, + "GameSite": 3, + "GoldRange": [ + 650000000, + 780000000 + ], + "BetRange": [ + 1000000, + 2000000, + 5000000, + 15000000, + 20000000, + 25000000 + ] + }, + { + "Id": 98, + "GameId": 210, + "GameSite": 3, + "GoldRange": [ + 780000000, + 910000000 + ], + "BetRange": [ + 1000000, + 2000000, + 5000000, + 15000000, + 20000000, + 30000000 + ] + }, + { + "Id": 99, + "GameId": 210, + "GameSite": 3, + "GoldRange": [ + 910000000, + 1040000000 + ], + "BetRange": [ + 1000000, + 2000000, + 5000000, + 15000000, + 20000000, + 30000000 + ] + }, + { + "Id": 100, + "GameId": 210, + "GameSite": 3, + "GoldRange": [ + 1040000000, + 1170000000 + ], + "BetRange": [ + 1000000, + 2000000, + 5000000, + 15000000, + 20000000, + 40000000 + ] + }, + { + "Id": 101, + "GameId": 210, + "GameSite": 3, + "GoldRange": [ + 1170000000, + 1300000000 + ], + "BetRange": [ + 1000000, + 2000000, + 5000000, + 15000000, + 20000000, + 40000000 + ] + }, + { + "Id": 102, + "GameId": 210, + "GameSite": 3, + "GoldRange": [ + 1300000000 + ], + "BetRange": [ + 5000000, + 10000000, + 20000000, + 30000000, + 40000000, + 50000000 + ] + }, + { + "Id": 103, + "GameId": 220, + "GameSite": 1, + "GoldRange": [ + 0, + 52000 + ], + "BetRange": [ + 0 + ] + }, + { + "Id": 104, + "GameId": 220, + "GameSite": 1, + "GoldRange": [ + 52000, + 130000 + ], + "BetRange": [ + 2000 + ] + }, + { + "Id": 105, + "GameId": 220, + "GameSite": 1, + "GoldRange": [ + 130000, + 260000 + ], + "BetRange": [ + 2000, + 5000 + ] + }, + { + "Id": 106, + "GameId": 220, + "GameSite": 1, + "GoldRange": [ + 260000, + 390000 + ], + "BetRange": [ + 2000, + 5000, + 10000 + ] + }, + { + "Id": 107, + "GameId": 220, + "GameSite": 1, + "GoldRange": [ + 390000, + 520000 + ], + "BetRange": [ + 2000, + 5000, + 10000, + 15000 + ] + }, + { + "Id": 108, + "GameId": 220, + "GameSite": 1, + "GoldRange": [ + 520000, + 650000 + ], + "BetRange": [ + 2000, + 5000, + 10000, + 15000, + 20000 + ] + }, + { + "Id": 109, + "GameId": 220, + "GameSite": 1, + "GoldRange": [ + 650000, + 780000 + ], + "BetRange": [ + 2000, + 5000, + 10000, + 15000, + 20000, + 25000 + ] + }, + { + "Id": 110, + "GameId": 220, + "GameSite": 1, + "GoldRange": [ + 780000, + 910000 + ], + "BetRange": [ + 2000, + 5000, + 10000, + 15000, + 20000, + 25000, + 30000 + ] + }, { "Id": 111, - "GameId": 209, + "GameId": 220, "GameSite": 1, "GoldRange": [ 910000, @@ -1811,7 +3485,7 @@ }, { "Id": 112, - "GameId": 209, + "GameId": 220, "GameSite": 1, "GoldRange": [ 1040000, @@ -1829,7 +3503,7 @@ }, { "Id": 113, - "GameId": 209, + "GameId": 220, "GameSite": 1, "GoldRange": [ 1170000, @@ -1847,7 +3521,7 @@ }, { "Id": 114, - "GameId": 209, + "GameId": 220, "GameSite": 1, "GoldRange": [ 1300000, @@ -1865,7 +3539,7 @@ }, { "Id": 115, - "GameId": 209, + "GameId": 220, "GameSite": 1, "GoldRange": [ 1430000, @@ -1883,7 +3557,7 @@ }, { "Id": 116, - "GameId": 209, + "GameId": 220, "GameSite": 1, "GoldRange": [ 1560000, @@ -1901,7 +3575,7 @@ }, { "Id": 117, - "GameId": 209, + "GameId": 220, "GameSite": 1, "GoldRange": [ 1690000, @@ -1919,7 +3593,7 @@ }, { "Id": 118, - "GameId": 209, + "GameId": 220, "GameSite": 1, "GoldRange": [ 1820000, @@ -1937,7 +3611,7 @@ }, { "Id": 119, - "GameId": 209, + "GameId": 220, "GameSite": 1, "GoldRange": [ 1950000, @@ -1955,7 +3629,7 @@ }, { "Id": 120, - "GameId": 209, + "GameId": 220, "GameSite": 1, "GoldRange": [ 2080000, @@ -1973,7 +3647,7 @@ }, { "Id": 121, - "GameId": 209, + "GameId": 220, "GameSite": 1, "GoldRange": [ 2210000, @@ -1991,7 +3665,7 @@ }, { "Id": 122, - "GameId": 209, + "GameId": 220, "GameSite": 1, "GoldRange": [ 2340000, @@ -2009,7 +3683,7 @@ }, { "Id": 123, - "GameId": 209, + "GameId": 220, "GameSite": 1, "GoldRange": [ 2470000, @@ -2027,7 +3701,7 @@ }, { "Id": 124, - "GameId": 209, + "GameId": 220, "GameSite": 1, "GoldRange": [ 2600000, @@ -2045,7 +3719,7 @@ }, { "Id": 125, - "GameId": 209, + "GameId": 220, "GameSite": 2, "GoldRange": [ 3900000, @@ -2058,7 +3732,7 @@ }, { "Id": 126, - "GameId": 209, + "GameId": 220, "GameSite": 2, "GoldRange": [ 5200000, @@ -2072,7 +3746,7 @@ }, { "Id": 127, - "GameId": 209, + "GameId": 220, "GameSite": 2, "GoldRange": [ 6500000, @@ -2087,7 +3761,7 @@ }, { "Id": 128, - "GameId": 209, + "GameId": 220, "GameSite": 2, "GoldRange": [ 7800000, @@ -2102,7 +3776,7 @@ }, { "Id": 129, - "GameId": 209, + "GameId": 220, "GameSite": 2, "GoldRange": [ 9100000, @@ -2118,7 +3792,7 @@ }, { "Id": 130, - "GameId": 209, + "GameId": 220, "GameSite": 2, "GoldRange": [ 10400000, @@ -2135,7 +3809,7 @@ }, { "Id": 131, - "GameId": 209, + "GameId": 220, "GameSite": 2, "GoldRange": [ 11700000, @@ -2152,7 +3826,7 @@ }, { "Id": 132, - "GameId": 209, + "GameId": 220, "GameSite": 2, "GoldRange": [ 13000000, @@ -2169,7 +3843,7 @@ }, { "Id": 133, - "GameId": 209, + "GameId": 220, "GameSite": 2, "GoldRange": [ 14300000, @@ -2186,7 +3860,7 @@ }, { "Id": 134, - "GameId": 209, + "GameId": 220, "GameSite": 2, "GoldRange": [ 15600000, @@ -2203,7 +3877,7 @@ }, { "Id": 135, - "GameId": 209, + "GameId": 220, "GameSite": 2, "GoldRange": [ 16900000, @@ -2220,7 +3894,7 @@ }, { "Id": 136, - "GameId": 209, + "GameId": 220, "GameSite": 2, "GoldRange": [ 18200000, @@ -2237,7 +3911,7 @@ }, { "Id": 137, - "GameId": 209, + "GameId": 220, "GameSite": 2, "GoldRange": [ 19500000, @@ -2254,7 +3928,7 @@ }, { "Id": 138, - "GameId": 209, + "GameId": 220, "GameSite": 2, "GoldRange": [ 20800000, @@ -2271,7 +3945,7 @@ }, { "Id": 139, - "GameId": 209, + "GameId": 220, "GameSite": 2, "GoldRange": [ 22100000, @@ -2288,7 +3962,7 @@ }, { "Id": 140, - "GameId": 209, + "GameId": 220, "GameSite": 2, "GoldRange": [ 23400000, @@ -2305,7 +3979,7 @@ }, { "Id": 141, - "GameId": 209, + "GameId": 220, "GameSite": 2, "GoldRange": [ 24700000, @@ -2322,7 +3996,7 @@ }, { "Id": 142, - "GameId": 209, + "GameId": 220, "GameSite": 2, "GoldRange": [ 26000000, @@ -2339,7 +4013,7 @@ }, { "Id": 143, - "GameId": 209, + "GameId": 220, "GameSite": 3, "GoldRange": [ 52000000, @@ -2352,7 +4026,7 @@ }, { "Id": 144, - "GameId": 209, + "GameId": 220, "GameSite": 3, "GoldRange": [ 130000000, @@ -2366,7 +4040,7 @@ }, { "Id": 145, - "GameId": 209, + "GameId": 220, "GameSite": 3, "GoldRange": [ 260000000, @@ -2381,7 +4055,7 @@ }, { "Id": 146, - "GameId": 209, + "GameId": 220, "GameSite": 3, "GoldRange": [ 390000000, @@ -2396,7 +4070,7 @@ }, { "Id": 147, - "GameId": 209, + "GameId": 220, "GameSite": 3, "GoldRange": [ 520000000, @@ -2412,7 +4086,7 @@ }, { "Id": 148, - "GameId": 209, + "GameId": 220, "GameSite": 3, "GoldRange": [ 650000000, @@ -2429,7 +4103,7 @@ }, { "Id": 149, - "GameId": 209, + "GameId": 220, "GameSite": 3, "GoldRange": [ 780000000, @@ -2446,7 +4120,7 @@ }, { "Id": 150, - "GameId": 209, + "GameId": 220, "GameSite": 3, "GoldRange": [ 910000000, @@ -2463,7 +4137,7 @@ }, { "Id": 151, - "GameId": 209, + "GameId": 220, "GameSite": 3, "GoldRange": [ 1040000000, @@ -2480,7 +4154,7 @@ }, { "Id": 152, - "GameId": 209, + "GameId": 220, "GameSite": 3, "GoldRange": [ 1170000000, @@ -2497,7 +4171,7 @@ }, { "Id": 153, - "GameId": 209, + "GameId": 220, "GameSite": 3, "GoldRange": [ 1300000000 @@ -2513,7 +4187,7 @@ }, { "Id": 154, - "GameId": 210, + "GameId": 230, "GameSite": 1, "GoldRange": [ 0, @@ -2525,7 +4199,7 @@ }, { "Id": 155, - "GameId": 210, + "GameId": 230, "GameSite": 1, "GoldRange": [ 52000, @@ -2537,7 +4211,7 @@ }, { "Id": 156, - "GameId": 210, + "GameId": 230, "GameSite": 1, "GoldRange": [ 130000, @@ -2550,7 +4224,7 @@ }, { "Id": 157, - "GameId": 210, + "GameId": 230, "GameSite": 1, "GoldRange": [ 260000, @@ -2564,7 +4238,7 @@ }, { "Id": 158, - "GameId": 210, + "GameId": 230, "GameSite": 1, "GoldRange": [ 390000, @@ -2579,7 +4253,7 @@ }, { "Id": 159, - "GameId": 210, + "GameId": 230, "GameSite": 1, "GoldRange": [ 520000, @@ -2595,7 +4269,7 @@ }, { "Id": 160, - "GameId": 210, + "GameId": 230, "GameSite": 1, "GoldRange": [ 650000, @@ -2612,7 +4286,7 @@ }, { "Id": 161, - "GameId": 210, + "GameId": 230, "GameSite": 1, "GoldRange": [ 780000, @@ -2630,7 +4304,7 @@ }, { "Id": 162, - "GameId": 210, + "GameId": 230, "GameSite": 1, "GoldRange": [ 910000, @@ -2648,7 +4322,7 @@ }, { "Id": 163, - "GameId": 210, + "GameId": 230, "GameSite": 1, "GoldRange": [ 1040000, @@ -2666,7 +4340,7 @@ }, { "Id": 164, - "GameId": 210, + "GameId": 230, "GameSite": 1, "GoldRange": [ 1170000, @@ -2684,7 +4358,7 @@ }, { "Id": 165, - "GameId": 210, + "GameId": 230, "GameSite": 1, "GoldRange": [ 1300000, @@ -2702,7 +4376,7 @@ }, { "Id": 166, - "GameId": 210, + "GameId": 230, "GameSite": 1, "GoldRange": [ 1430000, @@ -2720,7 +4394,7 @@ }, { "Id": 167, - "GameId": 210, + "GameId": 230, "GameSite": 1, "GoldRange": [ 1560000, @@ -2738,7 +4412,7 @@ }, { "Id": 168, - "GameId": 210, + "GameId": 230, "GameSite": 1, "GoldRange": [ 1690000, @@ -2756,7 +4430,7 @@ }, { "Id": 169, - "GameId": 210, + "GameId": 230, "GameSite": 1, "GoldRange": [ 1820000, @@ -2774,7 +4448,7 @@ }, { "Id": 170, - "GameId": 210, + "GameId": 230, "GameSite": 1, "GoldRange": [ 1950000, @@ -2792,7 +4466,7 @@ }, { "Id": 171, - "GameId": 210, + "GameId": 230, "GameSite": 1, "GoldRange": [ 2080000, @@ -2810,7 +4484,7 @@ }, { "Id": 172, - "GameId": 210, + "GameId": 230, "GameSite": 1, "GoldRange": [ 2210000, @@ -2828,7 +4502,7 @@ }, { "Id": 173, - "GameId": 210, + "GameId": 230, "GameSite": 1, "GoldRange": [ 2340000, @@ -2846,7 +4520,7 @@ }, { "Id": 174, - "GameId": 210, + "GameId": 230, "GameSite": 1, "GoldRange": [ 2470000, @@ -2864,7 +4538,7 @@ }, { "Id": 175, - "GameId": 210, + "GameId": 230, "GameSite": 1, "GoldRange": [ 2600000, @@ -2882,7 +4556,7 @@ }, { "Id": 176, - "GameId": 210, + "GameId": 230, "GameSite": 2, "GoldRange": [ 3900000, @@ -2895,7 +4569,7 @@ }, { "Id": 177, - "GameId": 210, + "GameId": 230, "GameSite": 2, "GoldRange": [ 5200000, @@ -2909,7 +4583,7 @@ }, { "Id": 178, - "GameId": 210, + "GameId": 230, "GameSite": 2, "GoldRange": [ 6500000, @@ -2924,7 +4598,7 @@ }, { "Id": 179, - "GameId": 210, + "GameId": 230, "GameSite": 2, "GoldRange": [ 7800000, @@ -2939,7 +4613,7 @@ }, { "Id": 180, - "GameId": 210, + "GameId": 230, "GameSite": 2, "GoldRange": [ 9100000, @@ -2955,7 +4629,7 @@ }, { "Id": 181, - "GameId": 210, + "GameId": 230, "GameSite": 2, "GoldRange": [ 10400000, @@ -2972,7 +4646,7 @@ }, { "Id": 182, - "GameId": 210, + "GameId": 230, "GameSite": 2, "GoldRange": [ 11700000, @@ -2989,7 +4663,7 @@ }, { "Id": 183, - "GameId": 210, + "GameId": 230, "GameSite": 2, "GoldRange": [ 13000000, @@ -3006,7 +4680,7 @@ }, { "Id": 184, - "GameId": 210, + "GameId": 230, "GameSite": 2, "GoldRange": [ 14300000, @@ -3023,7 +4697,7 @@ }, { "Id": 185, - "GameId": 210, + "GameId": 230, "GameSite": 2, "GoldRange": [ 15600000, @@ -3040,7 +4714,7 @@ }, { "Id": 186, - "GameId": 210, + "GameId": 230, "GameSite": 2, "GoldRange": [ 16900000, @@ -3057,7 +4731,7 @@ }, { "Id": 187, - "GameId": 210, + "GameId": 230, "GameSite": 2, "GoldRange": [ 18200000, @@ -3074,7 +4748,7 @@ }, { "Id": 188, - "GameId": 210, + "GameId": 230, "GameSite": 2, "GoldRange": [ 19500000, @@ -3091,7 +4765,7 @@ }, { "Id": 189, - "GameId": 210, + "GameId": 230, "GameSite": 2, "GoldRange": [ 20800000, @@ -3108,7 +4782,7 @@ }, { "Id": 190, - "GameId": 210, + "GameId": 230, "GameSite": 2, "GoldRange": [ 22100000, @@ -3125,7 +4799,7 @@ }, { "Id": 191, - "GameId": 210, + "GameId": 230, "GameSite": 2, "GoldRange": [ 23400000, @@ -3142,7 +4816,7 @@ }, { "Id": 192, - "GameId": 210, + "GameId": 230, "GameSite": 2, "GoldRange": [ 24700000, @@ -3159,7 +4833,7 @@ }, { "Id": 193, - "GameId": 210, + "GameId": 230, "GameSite": 2, "GoldRange": [ 26000000, @@ -3176,7 +4850,7 @@ }, { "Id": 194, - "GameId": 210, + "GameId": 230, "GameSite": 3, "GoldRange": [ 52000000, @@ -3189,7 +4863,7 @@ }, { "Id": 195, - "GameId": 210, + "GameId": 230, "GameSite": 3, "GoldRange": [ 130000000, @@ -3203,7 +4877,7 @@ }, { "Id": 196, - "GameId": 210, + "GameId": 230, "GameSite": 3, "GoldRange": [ 260000000, @@ -3218,7 +4892,7 @@ }, { "Id": 197, - "GameId": 210, + "GameId": 230, "GameSite": 3, "GoldRange": [ 390000000, @@ -3233,7 +4907,7 @@ }, { "Id": 198, - "GameId": 210, + "GameId": 230, "GameSite": 3, "GoldRange": [ 520000000, @@ -3249,7 +4923,7 @@ }, { "Id": 199, - "GameId": 210, + "GameId": 230, "GameSite": 3, "GoldRange": [ 650000000, @@ -3266,7 +4940,7 @@ }, { "Id": 200, - "GameId": 210, + "GameId": 230, "GameSite": 3, "GoldRange": [ 780000000, @@ -3283,7 +4957,7 @@ }, { "Id": 201, - "GameId": 210, + "GameId": 230, "GameSite": 3, "GoldRange": [ 910000000, @@ -3300,7 +4974,7 @@ }, { "Id": 202, - "GameId": 210, + "GameId": 230, "GameSite": 3, "GoldRange": [ 1040000000, @@ -3317,7 +4991,7 @@ }, { "Id": 203, - "GameId": 210, + "GameId": 230, "GameSite": 3, "GoldRange": [ 1170000000, @@ -3334,7 +5008,7 @@ }, { "Id": 204, - "GameId": 210, + "GameId": 230, "GameSite": 3, "GoldRange": [ 1300000000 @@ -3349,7 +5023,7 @@ ] }, { - "Id": 307, + "Id": 205, "GameId": 213, "GameSite": 1, "GoldRange": [ @@ -3361,7 +5035,7 @@ ] }, { - "Id": 308, + "Id": 206, "GameId": 213, "GameSite": 1, "GoldRange": [ @@ -3377,7 +5051,7 @@ ] }, { - "Id": 309, + "Id": 207, "GameId": 213, "GameSite": 2, "GoldRange": [ @@ -3393,7 +5067,7 @@ ] }, { - "Id": 310, + "Id": 208, "GameId": 213, "GameSite": 3, "GoldRange": [ @@ -3409,7 +5083,7 @@ ] }, { - "Id": 311, + "Id": 209, "GameId": 214, "GameSite": 1, "GoldRange": [ @@ -3421,7 +5095,7 @@ ] }, { - "Id": 312, + "Id": 210, "GameId": 214, "GameSite": 1, "GoldRange": [ @@ -3437,7 +5111,7 @@ ] }, { - "Id": 313, + "Id": 211, "GameId": 214, "GameSite": 2, "GoldRange": [ @@ -3453,7 +5127,7 @@ ] }, { - "Id": 314, + "Id": 212, "GameId": 214, "GameSite": 3, "GoldRange": [ diff --git a/data/DB_Game_Drop.dat b/data/DB_Game_Drop.dat index 61ff065..cb9b22d 100644 --- a/data/DB_Game_Drop.dat +++ b/data/DB_Game_Drop.dat @@ -1,44 +1,44 @@ -(0N: -'(0N: -N(0N: -u(0N: -(0N: -(0N: -(0N: -(0N: - (0N: +(0: +'(0%: +N(0J: +u(0o: +(0: +(0: +(0: +(0: + (0:  -(0N: - І(0N: - ح(0N: - (0N: -(0N: -(0N: -(0N: -(0N: -(0N: -(0N: -(0N: -(0N: - (0N: - (0N: -(0N: -(0N: -(0N: -(0N: -л(0N: -(0N: -!(0N: -$(0N: - '(0N: -!*(0N: -"-(0N: -#0(0N: -$3(0N: -%6(0N: -&9(0N: -'=(0N: +(0: + І(0: + ح(0: + (0: +(0: +(0: +(0: +(0: +(0: +(0: +(0: +(0: + (0: + (0 : +(0: +(0: +(0: +(0: +л(0: +(0: +!(0: +$(0": + '(0%: +!*(0(: +"-(0+: +#0(0.: +$3(01: +%6(04: +&9(07: +'=(0:: (z(0N: )(0N: @@ -52,45 +52,45 @@ 0(0N: 1ʺ(0N: 2(0N: -3(0N: -4'(0N: -5N(0N: -6u(0N: -7(0N: -8(0N: -9(0N: -:(0N: -;(0N: -<(0N: -=І(0N: ->ح(0N: -?(0N: -@(0N: -A(0N: -B(0N: -C(0N: -D(0N: -E(0N: -F(0N: -G(0N: -H (0N: -I (0N: -J(0N: -K(0N: -L(0N: -M(0N: -Nл(0N: -O(0N: -P!(0N: -Q$(0N: -R'(0N: -S*(0N: -T-(0N: -U0(0N: -V3(0N: -W6(0N: -X9(0N: -Y=(0N: +3(0: +4'(0%: +5N(0J: +6u(0o: +7(0: +8(0: +9(0: +:(0: +;(0: +<(0: +=І(0: +>ح(0: +?(0: +@(0: +A(0: +B(0: +C(0: +D(0: +E(0: +F(0: +G(0: +H (0: +I (0 : +J(0: +K(0: +L(0: +M(0: +Nл(0: +O(0: +P!(0: +Q$(0": +R'(0%: +S*(0(: +T-(0+: +U0(0.: +V3(01: +W6(04: +X9(07: +Y=(0:: Zz(0N: [(0N: @@ -104,45 +104,45 @@ b(0N: cʺ(0N: d(0N: -e(0N: -f'(0N: -gN(0N: -hu(0N: -i(0N: -j(0N: -k(0N: -l(0N: -m(0N: -n(0N: -oІ(0N: -pح(0N: -q(0N: -r(0N: -s(0N: -t(0N: -u(0N: -v(0N: -w(0N: -x(0N: -y(0N: -z (0N: -{ (0N: -|(0N: -}(0N: -~(0N: -(0N: -л(0N: -(0N: -!(0N: -$(0N: -'(0N: -*(0N: --(0N: -0(0N: -3(0N: -6(0N: -9(0N: -=(0N: +e(0: +f'(0%: +gN(0J: +hu(0o: +i(0: +j(0: +k(0: +l(0: +m(0: +n(0: +oІ(0: +pح(0: +q(0: +r(0: +s(0: +t(0: +u(0: +v(0: +w(0: +x(0: +y(0: +z (0: +{ (0 : +|(0: +}(0: +~(0: +(0: +л(0: +(0: +!(0: +$(0": +'(0%: +*(0(: +-(0+: +0(0.: +3(01: +6(04: +9(07: +=(0:: z(0N: (0N: @@ -156,45 +156,45 @@ (0N: ʺ(0N: (0N: -(0N: -'(0N: -N(0N: -u(0N: -(0N: -(0N: -(0N: -(0N: -(0N: -(0N: -І(0N: -ح(0N: -(0N: -(0N: -(0N: -(0N: -(0N: -(0N: -(0N: -(0N: -(0N: - (0N: - (0N: -(0N: -(0N: -(0N: -(0N: -л(0N: -(0N: -!(0N: -$(0N: -'(0N: -*(0N: --(0N: -0(0N: -3(0N: -6(0N: -9(0N: -=(0N: +(0: +'(0%: +N(0J: +u(0o: +(0: +(0: +(0: +(0: +(0: +(0: +І(0: +ح(0: +(0: +(0: +(0: +(0: +(0: +(0: +(0: +(0: +(0: + (0: + (0 : +(0: +(0: +(0: +(0: +л(0: +(0: +!(0: +$(0": +'(0%: +*(0(: +-(0+: +0(0.: +3(01: +6(04: +9(07: +=(0:: z(0N: (0N: @@ -208,59 +208,59 @@ (0N: ʺ(0N: (0N: -N(0N: -І(0N: - (0N: -=(0N: +N(0J: +І(0: + (0 : +=(0:: (0N:   (0N:Kd -(0N: -(0N: -z(0N: -(0N: -(0N: - -_(0N:Kd -N(0N: -І(0N: - (0N: -=(0N: +(0: +(0: +z(0N: + +(0N:2 +(0N: +_(0N: +N(0J: +І(0: + (0 : +=(0:: (0N:   (0N:Kd -N(0N: -І(0N: - (0N: -=(0N: +N(0J: +І(0: + (0 : +=(0:: (0N:   (0N:Kd -N(0N: -І(0N: - (0N: -=(0N: +N(0J: +І(0: + (0 : +=(0:: (0N:   (0N:Kd -N(0N: -І(0N: - (0N: -=(0N: +N(0J: +І(0: + (0 : +=(0:: (0N:   (0N:Kd -N(0N: -І(0N: - (0N: -=(0N: +N(0J: +І(0: + (0 : +=(0:: (0N:   (0N:Kd -N(0N: -І(0N: - (0N: -=(0N: +N(0J: +І(0: + (0 : +=(0:: (0N:   (0N:Kd \ No newline at end of file diff --git a/data/DB_Game_Drop.json b/data/DB_Game_Drop.json index c28e4cf..2968cd8 100644 --- a/data/DB_Game_Drop.json +++ b/data/DB_Game_Drop.json @@ -5,7 +5,7 @@ "GameId": 207, "Bet": 2000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 15, "Amount1": [ 1, 1 @@ -16,7 +16,7 @@ "GameId": 207, "Bet": 5000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 37, "Amount1": [ 1, 1 @@ -27,7 +27,7 @@ "GameId": 207, "Bet": 10000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 74, "Amount1": [ 1, 1 @@ -38,7 +38,7 @@ "GameId": 207, "Bet": 15000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 111, "Amount1": [ 1, 1 @@ -49,7 +49,7 @@ "GameId": 207, "Bet": 20000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 149, "Amount1": [ 1, 1 @@ -60,7 +60,7 @@ "GameId": 207, "Bet": 25000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 186, "Amount1": [ 1, 1 @@ -71,7 +71,7 @@ "GameId": 207, "Bet": 30000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 223, "Amount1": [ 1, 1 @@ -82,7 +82,7 @@ "GameId": 207, "Bet": 35000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 260, "Amount1": [ 1, 1 @@ -93,7 +93,7 @@ "GameId": 207, "Bet": 40000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 297, "Amount1": [ 1, 1 @@ -104,7 +104,7 @@ "GameId": 207, "Bet": 45000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 334, "Amount1": [ 1, 1 @@ -115,7 +115,7 @@ "GameId": 207, "Bet": 50000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 371, "Amount1": [ 1, 1 @@ -126,7 +126,7 @@ "GameId": 207, "Bet": 55000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 408, "Amount1": [ 1, 1 @@ -137,7 +137,7 @@ "GameId": 207, "Bet": 60000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 446, "Amount1": [ 1, 1 @@ -148,7 +148,7 @@ "GameId": 207, "Bet": 65000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 483, "Amount1": [ 1, 1 @@ -159,7 +159,7 @@ "GameId": 207, "Bet": 70000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 520, "Amount1": [ 1, 1 @@ -170,7 +170,7 @@ "GameId": 207, "Bet": 75000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 557, "Amount1": [ 1, 1 @@ -181,7 +181,7 @@ "GameId": 207, "Bet": 80000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 594, "Amount1": [ 1, 1 @@ -192,7 +192,7 @@ "GameId": 207, "Bet": 85000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 631, "Amount1": [ 1, 1 @@ -203,7 +203,7 @@ "GameId": 207, "Bet": 90000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 668, "Amount1": [ 1, 1 @@ -214,7 +214,7 @@ "GameId": 207, "Bet": 95000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 705, "Amount1": [ 1, 1 @@ -225,7 +225,7 @@ "GameId": 207, "Bet": 100000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 743, "Amount1": [ 1, 1 @@ -236,7 +236,7 @@ "GameId": 207, "Bet": 150000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 1114, "Amount1": [ 1, 1 @@ -247,7 +247,7 @@ "GameId": 207, "Bet": 200000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 1485, "Amount1": [ 1, 1 @@ -258,7 +258,7 @@ "GameId": 207, "Bet": 250000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 1856, "Amount1": [ 1, 1 @@ -269,7 +269,7 @@ "GameId": 207, "Bet": 300000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 2228, "Amount1": [ 1, 2 @@ -280,7 +280,7 @@ "GameId": 207, "Bet": 350000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 2599, "Amount1": [ 1, 2 @@ -291,7 +291,7 @@ "GameId": 207, "Bet": 400000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 2970, "Amount1": [ 1, 2 @@ -302,7 +302,7 @@ "GameId": 207, "Bet": 450000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 3341, "Amount1": [ 1, 2 @@ -313,7 +313,7 @@ "GameId": 207, "Bet": 500000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 3713, "Amount1": [ 2, 3 @@ -324,7 +324,7 @@ "GameId": 207, "Bet": 550000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 4084, "Amount1": [ 2, 3 @@ -335,7 +335,7 @@ "GameId": 207, "Bet": 600000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 4455, "Amount1": [ 2, 3 @@ -346,7 +346,7 @@ "GameId": 207, "Bet": 650000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 4826, "Amount1": [ 2, 3 @@ -357,7 +357,7 @@ "GameId": 207, "Bet": 700000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 5198, "Amount1": [ 2, 4 @@ -368,7 +368,7 @@ "GameId": 207, "Bet": 750000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 5569, "Amount1": [ 2, 4 @@ -379,7 +379,7 @@ "GameId": 207, "Bet": 800000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 5940, "Amount1": [ 2, 4 @@ -390,7 +390,7 @@ "GameId": 207, "Bet": 850000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 6311, "Amount1": [ 2, 4 @@ -401,7 +401,7 @@ "GameId": 207, "Bet": 900000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 6683, "Amount1": [ 3, 5 @@ -412,7 +412,7 @@ "GameId": 207, "Bet": 950000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 7054, "Amount1": [ 3, 5 @@ -423,7 +423,7 @@ "GameId": 207, "Bet": 1000000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 7425, "Amount1": [ 3, 5 @@ -555,7 +555,7 @@ "GameId": 208, "Bet": 2000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 15, "Amount1": [ 1, 1 @@ -566,7 +566,7 @@ "GameId": 208, "Bet": 5000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 37, "Amount1": [ 1, 1 @@ -577,7 +577,7 @@ "GameId": 208, "Bet": 10000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 74, "Amount1": [ 1, 1 @@ -588,7 +588,7 @@ "GameId": 208, "Bet": 15000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 111, "Amount1": [ 1, 1 @@ -599,7 +599,7 @@ "GameId": 208, "Bet": 20000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 149, "Amount1": [ 1, 1 @@ -610,7 +610,7 @@ "GameId": 208, "Bet": 25000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 186, "Amount1": [ 1, 1 @@ -621,7 +621,7 @@ "GameId": 208, "Bet": 30000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 223, "Amount1": [ 1, 1 @@ -632,7 +632,7 @@ "GameId": 208, "Bet": 35000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 260, "Amount1": [ 1, 1 @@ -643,7 +643,7 @@ "GameId": 208, "Bet": 40000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 297, "Amount1": [ 1, 1 @@ -654,7 +654,7 @@ "GameId": 208, "Bet": 45000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 334, "Amount1": [ 1, 1 @@ -665,7 +665,7 @@ "GameId": 208, "Bet": 50000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 371, "Amount1": [ 1, 1 @@ -676,7 +676,7 @@ "GameId": 208, "Bet": 55000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 408, "Amount1": [ 1, 1 @@ -687,7 +687,7 @@ "GameId": 208, "Bet": 60000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 446, "Amount1": [ 1, 1 @@ -698,7 +698,7 @@ "GameId": 208, "Bet": 65000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 483, "Amount1": [ 1, 1 @@ -709,7 +709,7 @@ "GameId": 208, "Bet": 70000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 520, "Amount1": [ 1, 1 @@ -720,7 +720,7 @@ "GameId": 208, "Bet": 75000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 557, "Amount1": [ 1, 1 @@ -731,7 +731,7 @@ "GameId": 208, "Bet": 80000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 594, "Amount1": [ 1, 1 @@ -742,7 +742,7 @@ "GameId": 208, "Bet": 85000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 631, "Amount1": [ 1, 1 @@ -753,7 +753,7 @@ "GameId": 208, "Bet": 90000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 668, "Amount1": [ 1, 1 @@ -764,7 +764,7 @@ "GameId": 208, "Bet": 95000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 705, "Amount1": [ 1, 1 @@ -775,7 +775,7 @@ "GameId": 208, "Bet": 100000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 743, "Amount1": [ 1, 1 @@ -786,7 +786,7 @@ "GameId": 208, "Bet": 150000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 1114, "Amount1": [ 1, 1 @@ -797,7 +797,7 @@ "GameId": 208, "Bet": 200000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 1485, "Amount1": [ 1, 1 @@ -808,7 +808,7 @@ "GameId": 208, "Bet": 250000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 1856, "Amount1": [ 1, 1 @@ -819,7 +819,7 @@ "GameId": 208, "Bet": 300000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 2228, "Amount1": [ 1, 2 @@ -830,7 +830,7 @@ "GameId": 208, "Bet": 350000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 2599, "Amount1": [ 1, 2 @@ -841,7 +841,7 @@ "GameId": 208, "Bet": 400000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 2970, "Amount1": [ 1, 2 @@ -852,7 +852,7 @@ "GameId": 208, "Bet": 450000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 3341, "Amount1": [ 1, 2 @@ -863,7 +863,7 @@ "GameId": 208, "Bet": 500000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 3713, "Amount1": [ 2, 3 @@ -874,7 +874,7 @@ "GameId": 208, "Bet": 550000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 4084, "Amount1": [ 2, 3 @@ -885,7 +885,7 @@ "GameId": 208, "Bet": 600000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 4455, "Amount1": [ 2, 3 @@ -896,7 +896,7 @@ "GameId": 208, "Bet": 650000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 4826, "Amount1": [ 2, 3 @@ -907,7 +907,7 @@ "GameId": 208, "Bet": 700000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 5198, "Amount1": [ 2, 4 @@ -918,7 +918,7 @@ "GameId": 208, "Bet": 750000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 5569, "Amount1": [ 2, 4 @@ -929,7 +929,7 @@ "GameId": 208, "Bet": 800000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 5940, "Amount1": [ 2, 4 @@ -940,7 +940,7 @@ "GameId": 208, "Bet": 850000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 6311, "Amount1": [ 2, 4 @@ -951,7 +951,7 @@ "GameId": 208, "Bet": 900000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 6683, "Amount1": [ 3, 5 @@ -962,7 +962,7 @@ "GameId": 208, "Bet": 950000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 7054, "Amount1": [ 3, 5 @@ -973,7 +973,7 @@ "GameId": 208, "Bet": 1000000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 7425, "Amount1": [ 3, 5 @@ -1105,7 +1105,7 @@ "GameId": 209, "Bet": 2000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 15, "Amount1": [ 1, 1 @@ -1116,7 +1116,7 @@ "GameId": 209, "Bet": 5000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 37, "Amount1": [ 1, 1 @@ -1127,7 +1127,7 @@ "GameId": 209, "Bet": 10000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 74, "Amount1": [ 1, 1 @@ -1138,7 +1138,7 @@ "GameId": 209, "Bet": 15000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 111, "Amount1": [ 1, 1 @@ -1149,7 +1149,7 @@ "GameId": 209, "Bet": 20000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 149, "Amount1": [ 1, 1 @@ -1160,7 +1160,7 @@ "GameId": 209, "Bet": 25000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 186, "Amount1": [ 1, 1 @@ -1171,7 +1171,7 @@ "GameId": 209, "Bet": 30000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 223, "Amount1": [ 1, 1 @@ -1182,7 +1182,7 @@ "GameId": 209, "Bet": 35000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 260, "Amount1": [ 1, 1 @@ -1193,7 +1193,7 @@ "GameId": 209, "Bet": 40000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 297, "Amount1": [ 1, 1 @@ -1204,7 +1204,7 @@ "GameId": 209, "Bet": 45000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 334, "Amount1": [ 1, 1 @@ -1215,7 +1215,7 @@ "GameId": 209, "Bet": 50000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 371, "Amount1": [ 1, 1 @@ -1226,7 +1226,7 @@ "GameId": 209, "Bet": 55000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 408, "Amount1": [ 1, 1 @@ -1237,7 +1237,7 @@ "GameId": 209, "Bet": 60000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 446, "Amount1": [ 1, 1 @@ -1248,7 +1248,7 @@ "GameId": 209, "Bet": 65000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 483, "Amount1": [ 1, 1 @@ -1259,7 +1259,7 @@ "GameId": 209, "Bet": 70000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 520, "Amount1": [ 1, 1 @@ -1270,7 +1270,7 @@ "GameId": 209, "Bet": 75000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 557, "Amount1": [ 1, 1 @@ -1281,7 +1281,7 @@ "GameId": 209, "Bet": 80000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 594, "Amount1": [ 1, 1 @@ -1292,7 +1292,7 @@ "GameId": 209, "Bet": 85000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 631, "Amount1": [ 1, 1 @@ -1303,7 +1303,7 @@ "GameId": 209, "Bet": 90000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 668, "Amount1": [ 1, 1 @@ -1314,7 +1314,7 @@ "GameId": 209, "Bet": 95000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 705, "Amount1": [ 1, 1 @@ -1325,7 +1325,7 @@ "GameId": 209, "Bet": 100000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 743, "Amount1": [ 1, 1 @@ -1336,7 +1336,7 @@ "GameId": 209, "Bet": 150000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 1114, "Amount1": [ 1, 1 @@ -1347,7 +1347,7 @@ "GameId": 209, "Bet": 200000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 1485, "Amount1": [ 1, 1 @@ -1358,7 +1358,7 @@ "GameId": 209, "Bet": 250000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 1856, "Amount1": [ 1, 1 @@ -1369,7 +1369,7 @@ "GameId": 209, "Bet": 300000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 2228, "Amount1": [ 1, 2 @@ -1380,7 +1380,7 @@ "GameId": 209, "Bet": 350000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 2599, "Amount1": [ 1, 2 @@ -1391,7 +1391,7 @@ "GameId": 209, "Bet": 400000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 2970, "Amount1": [ 1, 2 @@ -1402,7 +1402,7 @@ "GameId": 209, "Bet": 450000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 3341, "Amount1": [ 1, 2 @@ -1413,7 +1413,7 @@ "GameId": 209, "Bet": 500000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 3713, "Amount1": [ 2, 3 @@ -1424,7 +1424,7 @@ "GameId": 209, "Bet": 550000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 4084, "Amount1": [ 2, 3 @@ -1435,7 +1435,7 @@ "GameId": 209, "Bet": 600000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 4455, "Amount1": [ 2, 3 @@ -1446,7 +1446,7 @@ "GameId": 209, "Bet": 650000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 4826, "Amount1": [ 2, 3 @@ -1457,7 +1457,7 @@ "GameId": 209, "Bet": 700000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 5198, "Amount1": [ 2, 4 @@ -1468,7 +1468,7 @@ "GameId": 209, "Bet": 750000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 5569, "Amount1": [ 2, 4 @@ -1479,7 +1479,7 @@ "GameId": 209, "Bet": 800000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 5940, "Amount1": [ 2, 4 @@ -1490,7 +1490,7 @@ "GameId": 209, "Bet": 850000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 6311, "Amount1": [ 2, 4 @@ -1501,7 +1501,7 @@ "GameId": 209, "Bet": 900000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 6683, "Amount1": [ 3, 5 @@ -1512,7 +1512,7 @@ "GameId": 209, "Bet": 950000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 7054, "Amount1": [ 3, 5 @@ -1523,7 +1523,7 @@ "GameId": 209, "Bet": 1000000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 7425, "Amount1": [ 3, 5 @@ -1655,7 +1655,7 @@ "GameId": 210, "Bet": 2000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 15, "Amount1": [ 1, 1 @@ -1666,7 +1666,7 @@ "GameId": 210, "Bet": 5000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 37, "Amount1": [ 1, 1 @@ -1677,7 +1677,7 @@ "GameId": 210, "Bet": 10000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 74, "Amount1": [ 1, 1 @@ -1688,7 +1688,7 @@ "GameId": 210, "Bet": 15000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 111, "Amount1": [ 1, 1 @@ -1699,7 +1699,7 @@ "GameId": 210, "Bet": 20000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 149, "Amount1": [ 1, 1 @@ -1710,7 +1710,7 @@ "GameId": 210, "Bet": 25000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 186, "Amount1": [ 1, 1 @@ -1721,7 +1721,7 @@ "GameId": 210, "Bet": 30000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 223, "Amount1": [ 1, 1 @@ -1732,7 +1732,7 @@ "GameId": 210, "Bet": 35000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 260, "Amount1": [ 1, 1 @@ -1743,7 +1743,7 @@ "GameId": 210, "Bet": 40000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 297, "Amount1": [ 1, 1 @@ -1754,7 +1754,7 @@ "GameId": 210, "Bet": 45000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 334, "Amount1": [ 1, 1 @@ -1765,7 +1765,7 @@ "GameId": 210, "Bet": 50000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 371, "Amount1": [ 1, 1 @@ -1776,7 +1776,7 @@ "GameId": 210, "Bet": 55000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 408, "Amount1": [ 1, 1 @@ -1787,7 +1787,7 @@ "GameId": 210, "Bet": 60000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 446, "Amount1": [ 1, 1 @@ -1798,7 +1798,7 @@ "GameId": 210, "Bet": 65000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 483, "Amount1": [ 1, 1 @@ -1809,7 +1809,7 @@ "GameId": 210, "Bet": 70000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 520, "Amount1": [ 1, 1 @@ -1820,7 +1820,7 @@ "GameId": 210, "Bet": 75000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 557, "Amount1": [ 1, 1 @@ -1831,7 +1831,7 @@ "GameId": 210, "Bet": 80000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 594, "Amount1": [ 1, 1 @@ -1842,7 +1842,7 @@ "GameId": 210, "Bet": 85000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 631, "Amount1": [ 1, 1 @@ -1853,7 +1853,7 @@ "GameId": 210, "Bet": 90000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 668, "Amount1": [ 1, 1 @@ -1864,7 +1864,7 @@ "GameId": 210, "Bet": 95000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 705, "Amount1": [ 1, 1 @@ -1875,7 +1875,7 @@ "GameId": 210, "Bet": 100000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 743, "Amount1": [ 1, 1 @@ -1886,7 +1886,7 @@ "GameId": 210, "Bet": 150000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 1114, "Amount1": [ 1, 1 @@ -1897,7 +1897,7 @@ "GameId": 210, "Bet": 200000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 1485, "Amount1": [ 1, 1 @@ -1908,7 +1908,7 @@ "GameId": 210, "Bet": 250000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 1856, "Amount1": [ 1, 1 @@ -1919,7 +1919,7 @@ "GameId": 210, "Bet": 300000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 2228, "Amount1": [ 1, 2 @@ -1930,7 +1930,7 @@ "GameId": 210, "Bet": 350000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 2599, "Amount1": [ 1, 2 @@ -1941,7 +1941,7 @@ "GameId": 210, "Bet": 400000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 2970, "Amount1": [ 1, 2 @@ -1952,7 +1952,7 @@ "GameId": 210, "Bet": 450000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 3341, "Amount1": [ 1, 2 @@ -1963,7 +1963,7 @@ "GameId": 210, "Bet": 500000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 3713, "Amount1": [ 2, 3 @@ -1974,7 +1974,7 @@ "GameId": 210, "Bet": 550000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 4084, "Amount1": [ 2, 3 @@ -1985,7 +1985,7 @@ "GameId": 210, "Bet": 600000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 4455, "Amount1": [ 2, 3 @@ -1996,7 +1996,7 @@ "GameId": 210, "Bet": 650000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 4826, "Amount1": [ 2, 3 @@ -2007,7 +2007,7 @@ "GameId": 210, "Bet": 700000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 5198, "Amount1": [ 2, 4 @@ -2018,7 +2018,7 @@ "GameId": 210, "Bet": 750000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 5569, "Amount1": [ 2, 4 @@ -2029,7 +2029,7 @@ "GameId": 210, "Bet": 800000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 5940, "Amount1": [ 2, 4 @@ -2040,7 +2040,7 @@ "GameId": 210, "Bet": 850000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 6311, "Amount1": [ 2, 4 @@ -2051,7 +2051,7 @@ "GameId": 210, "Bet": 900000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 6683, "Amount1": [ 3, 5 @@ -2062,7 +2062,7 @@ "GameId": 210, "Bet": 950000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 7054, "Amount1": [ 3, 5 @@ -2073,7 +2073,7 @@ "GameId": 210, "Bet": 1000000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 7425, "Amount1": [ 3, 5 @@ -2205,7 +2205,7 @@ "GameId": 240, "Bet": 10000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 74, "Amount1": [ 1, 1 @@ -2216,7 +2216,7 @@ "GameId": 240, "Bet": 50000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 371, "Amount1": [ 1, 1 @@ -2227,10 +2227,10 @@ "GameId": 240, "Bet": 200000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 1485, "Amount1": [ - 3, - 5 + 1, + 1 ] }, { @@ -2238,7 +2238,7 @@ "GameId": 240, "Bet": 1000000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 7425, "Amount1": [ 3, 5 @@ -2271,7 +2271,7 @@ "GameId": 244, "Bet": 100000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 743, "Amount1": [ 1, 1 @@ -2282,10 +2282,10 @@ "GameId": 244, "Bet": 500000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 3713, "Amount1": [ - 1, - 1 + 2, + 3 ] }, { @@ -2295,8 +2295,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 3, - 5 + 5, + 10 ] }, { @@ -2306,8 +2306,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 3, - 5 + 25, + 50 ] }, { @@ -2317,8 +2317,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 10, - 25 + 225, + 250 ] }, { @@ -2328,8 +2328,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 75, - 100 + 300, + 500 ] }, { @@ -2337,7 +2337,7 @@ "GameId": 241, "Bet": 10000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 74, "Amount1": [ 1, 1 @@ -2348,7 +2348,7 @@ "GameId": 241, "Bet": 50000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 371, "Amount1": [ 1, 1 @@ -2359,10 +2359,10 @@ "GameId": 241, "Bet": 200000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 1485, "Amount1": [ - 3, - 5 + 1, + 1 ] }, { @@ -2370,7 +2370,7 @@ "GameId": 241, "Bet": 1000000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 7425, "Amount1": [ 3, 5 @@ -2403,7 +2403,7 @@ "GameId": 245, "Bet": 10000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 74, "Amount1": [ 1, 1 @@ -2414,7 +2414,7 @@ "GameId": 245, "Bet": 50000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 371, "Amount1": [ 1, 1 @@ -2425,10 +2425,10 @@ "GameId": 245, "Bet": 200000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 1485, "Amount1": [ - 3, - 5 + 1, + 1 ] }, { @@ -2436,7 +2436,7 @@ "GameId": 245, "Bet": 1000000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 7425, "Amount1": [ 3, 5 @@ -2469,7 +2469,7 @@ "GameId": 242, "Bet": 10000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 74, "Amount1": [ 1, 1 @@ -2480,7 +2480,7 @@ "GameId": 242, "Bet": 50000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 371, "Amount1": [ 1, 1 @@ -2491,10 +2491,10 @@ "GameId": 242, "Bet": 200000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 1485, "Amount1": [ - 3, - 5 + 1, + 1 ] }, { @@ -2502,7 +2502,7 @@ "GameId": 242, "Bet": 1000000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 7425, "Amount1": [ 3, 5 @@ -2535,7 +2535,7 @@ "GameId": 246, "Bet": 10000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 74, "Amount1": [ 1, 1 @@ -2546,7 +2546,7 @@ "GameId": 246, "Bet": 50000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 371, "Amount1": [ 1, 1 @@ -2557,10 +2557,10 @@ "GameId": 246, "Bet": 200000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 1485, "Amount1": [ - 3, - 5 + 1, + 1 ] }, { @@ -2568,7 +2568,7 @@ "GameId": 246, "Bet": 1000000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 7425, "Amount1": [ 3, 5 @@ -2601,7 +2601,7 @@ "GameId": 243, "Bet": 10000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 74, "Amount1": [ 1, 1 @@ -2612,7 +2612,7 @@ "GameId": 243, "Bet": 50000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 371, "Amount1": [ 1, 1 @@ -2623,10 +2623,10 @@ "GameId": 243, "Bet": 200000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 1485, "Amount1": [ - 3, - 5 + 1, + 1 ] }, { @@ -2634,7 +2634,7 @@ "GameId": 243, "Bet": 1000000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 7425, "Amount1": [ 3, 5 @@ -2667,7 +2667,7 @@ "GameId": 247, "Bet": 10000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 74, "Amount1": [ 1, 1 @@ -2678,7 +2678,7 @@ "GameId": 247, "Bet": 50000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 371, "Amount1": [ 1, 1 @@ -2689,10 +2689,10 @@ "GameId": 247, "Bet": 200000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 1485, "Amount1": [ - 3, - 5 + 1, + 1 ] }, { @@ -2700,7 +2700,7 @@ "GameId": 247, "Bet": 1000000, "ItemId1": 30001, - "Rate1": 10000, + "Rate1": 7425, "Amount1": [ 3, 5 diff --git a/data/DB_PropExchange.dat b/data/DB_PropExchange.dat index 7a704a1..b7451ac 100644 --- a/data/DB_PropExchange.dat +++ b/data/DB_PropExchange.dat @@ -1,5 +1,5 @@ 6ӆԆՆֆ׆"= -.نچۆ؆"= -Wӆֆ؆چۆԆՆ׆ن"  -]ӆ؆ۆԆՆֆ׆نچ܆" \ No newline at end of file +.؆نچۆ"= +WنچۆӆԆֆ؆Ն׆"  +]ֆ׆؆چۆ܆ӆԆՆن" \ No newline at end of file diff --git a/data/DB_Task.dat b/data/DB_Task.dat index 41a8487cf049486239ebc6a37df27566fee57c66..bb6d5973e78428c38d446594834b5a66a36cd4a8 100644 GIT binary patch delta 171 zcmX@lf1Y1~ONoO~fKh@`fl-6efYFMLV@WTY0IL-T$3h@|p^bT?f+?dQ8^wqflfmdVc;jV51V6l4_Hti_beIN60waB=}F>*Te}rcl*JRuI(( krfp=J{Ds+O@>4e9$<8dXlUrEDCvRtI#jZLKo;vp1yjb!%}j!m(-`xF zIKi?FYag)yr56FExh6kjG!lZaMXV6go3)s783keD5JMX}t0u2twwip5MSSv4X7kBE hSj8s0u|z?2%RzM?=-tjZc@s;=k_SOaPaIEqed} diff --git a/protocol/gamehall/game.pb.go b/protocol/gamehall/game.pb.go index 99c3eab..a15294c 100644 --- a/protocol/gamehall/game.pb.go +++ b/protocol/gamehall/game.pb.go @@ -6687,19 +6687,20 @@ type CommonNotice struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Sort int32 `protobuf:"varint,1,opt,name=Sort,proto3" json:"Sort,omitempty"` - Title string `protobuf:"bytes,2,opt,name=Title,proto3" json:"Title,omitempty"` - Content string `protobuf:"bytes,3,opt,name=Content,proto3" json:"Content,omitempty"` - TypeName string `protobuf:"bytes,4,opt,name=TypeName,proto3" json:"TypeName,omitempty"` - Type int32 `protobuf:"varint,5,opt,name=Type,proto3" json:"Type,omitempty"` - StartTime int32 `protobuf:"varint,6,opt,name=StartTime,proto3" json:"StartTime,omitempty"` - EndTime int32 `protobuf:"varint,7,opt,name=EndTime,proto3" json:"EndTime,omitempty"` - Platform string `protobuf:"bytes,8,opt,name=Platform,proto3" json:"Platform,omitempty"` - CategoryType int32 `protobuf:"varint,9,opt,name=CategoryType,proto3" json:"CategoryType,omitempty"` - ImgUrl string `protobuf:"bytes,10,opt,name=ImgUrl,proto3" json:"ImgUrl,omitempty"` - NoticeId int32 `protobuf:"varint,11,opt,name=NoticeId,proto3" json:"NoticeId,omitempty"` - IsLoop int32 `protobuf:"varint,12,opt,name=IsLoop,proto3" json:"IsLoop,omitempty"` - LoopTime int32 `protobuf:"varint,13,opt,name=LoopTime,proto3" json:"LoopTime,omitempty"` + Sort int32 `protobuf:"varint,1,opt,name=Sort,proto3" json:"Sort,omitempty"` + Title string `protobuf:"bytes,2,opt,name=Title,proto3" json:"Title,omitempty"` + Content string `protobuf:"bytes,3,opt,name=Content,proto3" json:"Content,omitempty"` + TypeName string `protobuf:"bytes,4,opt,name=TypeName,proto3" json:"TypeName,omitempty"` + Type int32 `protobuf:"varint,5,opt,name=Type,proto3" json:"Type,omitempty"` + StartTime int32 `protobuf:"varint,6,opt,name=StartTime,proto3" json:"StartTime,omitempty"` + EndTime int32 `protobuf:"varint,7,opt,name=EndTime,proto3" json:"EndTime,omitempty"` + Platform string `protobuf:"bytes,8,opt,name=Platform,proto3" json:"Platform,omitempty"` + CategoryType int32 `protobuf:"varint,9,opt,name=CategoryType,proto3" json:"CategoryType,omitempty"` + ImgUrl string `protobuf:"bytes,10,opt,name=ImgUrl,proto3" json:"ImgUrl,omitempty"` + NoticeId int32 `protobuf:"varint,11,opt,name=NoticeId,proto3" json:"NoticeId,omitempty"` + IsLoop int32 `protobuf:"varint,12,opt,name=IsLoop,proto3" json:"IsLoop,omitempty"` + LoopTime int32 `protobuf:"varint,13,opt,name=LoopTime,proto3" json:"LoopTime,omitempty"` + OnChannelName []string `protobuf:"bytes,14,rep,name=OnChannelName,proto3" json:"OnChannelName,omitempty"` } func (x *CommonNotice) Reset() { @@ -6825,6 +6826,13 @@ func (x *CommonNotice) GetLoopTime() int32 { return 0 } +func (x *CommonNotice) GetOnChannelName() []string { + if x != nil { + return x.OnChannelName + } + return nil +} + type PlayerRecord struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -7840,7 +7848,7 @@ var file_game_proto_rawDesc = []byte{ 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, 0xe2, 0x02, 0x0a, 0x0c, 0x43, 0x6f, 0x6d, 0x6d, + 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x88, 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, @@ -7862,319 +7870,321 @@ var file_game_proto_rawDesc = []byte{ 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, 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, + 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, 0x22, 0xc0, 0x01, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, + 0x65, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, + 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x49, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x54, + 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, + 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x54, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x54, 0x79, 0x70, 0x65, 0x22, 0xbc, 0x01, 0x0a, 0x11, 0x53, 0x43, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x4f, + 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, + 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, + 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, + 0x12, 0x2a, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x05, + 0x47, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, + 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x52, 0x05, 0x47, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x6c, + 0x69, 0x73, 0x74, 0x54, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x47, 0x6c, 0x69, + 0x73, 0x74, 0x54, 0x73, 0x22, 0x10, 0x0a, 0x0e, 0x53, 0x43, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x4d, 0x0a, 0x0b, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0xa4, 0x01, 0x0a, 0x0b, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, - 0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x4c, 0x69, - 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, - 0x61, 0x6c, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, - 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x47, 0x6c, 0x69, 0x73, 0x74, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, - 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x05, 0x47, - 0x6c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x6c, 0x69, 0x73, 0x74, 0x54, 0x73, 0x18, - 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x47, 0x6c, 0x69, 0x73, 0x74, 0x54, 0x73, 0x22, 0x10, - 0x0a, 0x0e, 0x53, 0x43, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x22, 0x4d, 0x0a, 0x0b, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, - 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, - 0xa4, 0x01, 0x0a, 0x0b, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, - 0x33, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70, - 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x54, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, - 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x2a, 0xe6, 0x09, 0x0a, 0x11, 0x4f, 0x70, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x10, - 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x47, 0x61, 0x6d, 0x65, - 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, - 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, - 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x5f, 0x47, 0x61, 0x6d, - 0x65, 0x10, 0xf8, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x47, 0x61, 0x6d, - 0x65, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xf9, - 0x07, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x48, 0x61, - 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x10, 0xfa, 0x07, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, - 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x73, 0x46, 0x75, 0x6c, 0x6c, 0x5f, 0x47, 0x61, - 0x6d, 0x65, 0x10, 0xfb, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, - 0x6f, 0x6d, 0x48, 0x61, 0x64, 0x45, 0x78, 0x69, 0x73, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, - 0xfc, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xfe, 0x07, 0x12, - 0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x57, 0x61, - 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x49, 0x6e, 0x4f, 0x74, 0x68, 0x65, 0x72, - 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x80, 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x5f, - 0x47, 0x61, 0x6d, 0x65, 0x10, 0x90, 0x08, 0x12, 0x2c, 0x0a, 0x27, 0x4f, 0x50, 0x52, 0x43, 0x5f, - 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x73, 0x6f, - 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x6f, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x47, 0x61, - 0x6d, 0x65, 0x10, 0x92, 0x08, 0x12, 0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4f, 0x6e, - 0x6c, 0x79, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x6c, 0x75, 0x62, 0x4d, 0x65, 0x6d, 0x62, 0x65, - 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x93, 0x08, 0x12, 0x1e, - 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, 0x72, 0x52, 0x65, 0x73, 0x56, 0x65, - 0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x94, 0x08, 0x12, 0x1e, - 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, 0x72, 0x41, 0x70, 0x70, 0x56, 0x65, - 0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x95, 0x08, 0x12, 0x1b, - 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x50, 0x6f, 0x73, 0x46, - 0x75, 0x6c, 0x6c, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x98, 0x08, 0x12, 0x23, 0x0a, 0x1e, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x46, 0x6f, - 0x72, 0x57, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9a, 0x08, - 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x48, 0x61, 0x64, - 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9d, 0x08, 0x12, 0x22, - 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x53, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, - 0x9e, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x61, 0x6d, 0x65, 0x49, - 0x70, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9f, 0x08, 0x12, - 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74, 0x45, - 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa0, 0x08, 0x12, 0x1a, 0x0a, - 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6f, 0x4d, 0x6f, 0x72, - 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa2, 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52, - 0x43, 0x5f, 0x49, 0x6e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x67, - 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa3, 0x08, 0x12, 0x16, 0x0a, 0x11, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x4f, 0x70, 0x59, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xba, 0x08, - 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x52, 0x6f, - 0x6f, 0x6d, 0x49, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, - 0xc9, 0x08, 0x12, 0x24, 0x0a, 0x1f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x72, 0x69, 0x76, 0x61, - 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xca, 0x08, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x74, 0x10, 0xcb, 0x08, 0x12, - 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x69, 0x63, - 0x65, 0x5f, 0x53, 0x63, 0x65, 0x6e, 0x63, 0x65, 0x4d, 0x61, 0x78, 0x5f, 0x47, 0x61, 0x6d, 0x65, - 0x10, 0xb3, 0x08, 0x12, 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x77, 0x65, - 0x72, 0x52, 0x69, 0x63, 0x65, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x5f, - 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb4, 0x08, 0x12, 0x26, 0x0a, 0x21, 0x4f, 0x50, 0x52, 0x43, 0x5f, - 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x69, 0x63, 0x65, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x44, 0x6f, 0x77, 0x6e, 0x4d, 0x61, 0x78, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb5, 0x08, 0x12, - 0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, 0x72, 0x41, 0x72, 0x65, 0x47, - 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, - 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb6, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, - 0x69, 0x6e, 0x67, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xc8, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xcf, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, - 0x43, 0x5f, 0x4d, 0x75, 0x73, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, - 0x65, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xd9, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x70, - 0x72, 0x63, 0x5f, 0x43, 0x6c, 0x75, 0x62, 0x5f, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x73, 0x43, 0x6c, - 0x6f, 0x73, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9f, 0x27, 0x12, 0x1b, 0x0a, 0x16, 0x4f, - 0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, 0x5f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x45, 0x72, 0x72, - 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa8, 0x46, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, - 0x5f, 0x44, 0x67, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x45, 0x72, 0x72, 0x5f, 0x47, 0x61, 0x6d, - 0x65, 0x10, 0xa9, 0x46, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, 0x5f, - 0x50, 0x6c, 0x61, 0x74, 0x45, 0x72, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xaa, 0x46, 0x12, - 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, 0x5f, 0x51, 0x75, 0x6f, 0x74, 0x61, - 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xab, - 0x46, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x68, 0x72, 0x5f, 0x47, 0x61, - 0x6d, 0x65, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb2, 0x46, 0x2a, - 0xd0, 0x17, 0x0a, 0x10, 0x47, 0x61, 0x6d, 0x65, 0x48, 0x61, 0x6c, 0x6c, 0x50, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, - 0x61, 0x6d, 0x65, 0x48, 0x61, 0x6c, 0x6c, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x17, - 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, - 0x47, 0x41, 0x4d, 0x45, 0x10, 0x98, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x99, 0x11, - 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x52, - 0x45, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9a, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, - 0x4f, 0x4f, 0x4d, 0x10, 0x9b, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x43, 0x53, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9c, 0x11, - 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x45, 0x4e, - 0x54, 0x45, 0x52, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9d, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x52, 0x4f, - 0x4f, 0x4d, 0x10, 0x9e, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x5f, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9f, 0x11, - 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x41, 0x55, - 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x4f, 0x4f, 0x4d, - 0x10, 0xa0, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, - 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xa1, 0x11, 0x12, 0x18, 0x0a, - 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, - 0x47, 0x41, 0x4d, 0x45, 0x10, 0xa2, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x51, 0x55, 0x49, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xa3, 0x11, - 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x51, 0x55, - 0x49, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xa4, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x41, 0x52, 0x44, 0x47, 0x41, 0x49, 0x4e, 0x57, - 0x41, 0x59, 0x10, 0xa5, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x5f, 0x54, 0x41, 0x53, 0x4b, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xa6, 0x11, 0x12, 0x17, - 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x41, 0x53, 0x4b, - 0x4c, 0x49, 0x53, 0x54, 0x10, 0xa7, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x41, 0x53, 0x4b, 0x43, 0x48, 0x47, 0x10, 0xa8, 0x11, 0x12, - 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x41, 0x43, - 0x4b, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x10, 0xa9, 0x11, 0x12, 0x16, 0x0a, 0x11, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x41, 0x53, 0x4b, 0x44, 0x45, - 0x4c, 0x10, 0xaa, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, - 0x53, 0x5f, 0x54, 0x41, 0x43, 0x4b, 0x44, 0x52, 0x41, 0x57, 0x50, 0x52, 0x49, 0x5a, 0x45, 0x10, - 0xab, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, - 0x54, 0x41, 0x43, 0x4b, 0x44, 0x52, 0x41, 0x57, 0x50, 0x52, 0x49, 0x5a, 0x45, 0x10, 0xac, 0x11, - 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, - 0x54, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x52, 0x45, 0x43, 0x10, 0xaf, 0x11, - 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, - 0x54, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x52, 0x45, 0x43, 0x10, 0xb0, 0x11, - 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x44, 0x45, - 0x4c, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x52, 0x45, 0x43, 0x10, 0xb1, 0x11, - 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, - 0x4f, 0x50, 0x42, 0x55, 0x59, 0x10, 0xb2, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x42, 0x55, 0x59, 0x10, 0xb3, 0x11, - 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x49, - 0x4d, 0x49, 0x54, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xb4, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x4c, 0x41, 0x54, 0x45, 0x4c, - 0x59, 0x47, 0x41, 0x4d, 0x45, 0x49, 0x44, 0x53, 0x10, 0xb5, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x4c, 0x41, 0x54, 0x45, - 0x4c, 0x59, 0x47, 0x41, 0x4d, 0x45, 0x49, 0x44, 0x53, 0x10, 0xb6, 0x11, 0x12, 0x1c, 0x0a, 0x17, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, - 0x45, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0xb7, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x43, - 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0xb8, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x47, 0x41, 0x4d, 0x45, - 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0xb9, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x48, 0x41, 0x4c, 0x4c, - 0x10, 0xc0, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x48, 0x41, 0x4c, 0x4c, 0x10, 0xc1, 0x11, 0x12, 0x18, 0x0a, - 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, - 0x48, 0x41, 0x4c, 0x4c, 0x10, 0xc2, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x48, 0x41, 0x4c, 0x4c, 0x10, 0xc3, - 0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x48, - 0x41, 0x4c, 0x4c, 0x52, 0x4f, 0x4f, 0x4d, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xc4, 0x11, 0x12, 0x1b, - 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x48, 0x41, 0x4c, 0x4c, - 0x52, 0x4f, 0x4f, 0x4d, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xc5, 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x50, 0x4c, 0x41, - 0x59, 0x45, 0x52, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x10, 0xc6, 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x50, 0x4c, 0x41, - 0x59, 0x45, 0x52, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xc7, 0x11, 0x12, 0x1d, 0x0a, 0x18, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x4f, 0x4f, 0x4d, 0x53, 0x54, 0x41, - 0x54, 0x45, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x10, 0xc8, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x48, 0x41, 0x4c, 0x4c, 0x50, 0x4c, 0x41, 0x59, - 0x45, 0x52, 0x4e, 0x55, 0x4d, 0x10, 0xc9, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x42, 0x55, 0x4c, 0x4c, 0x45, 0x54, 0x49, 0x4f, 0x4e, 0x49, - 0x4e, 0x46, 0x4f, 0x10, 0xca, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x43, 0x53, 0x5f, 0x42, 0x55, 0x4c, 0x4c, 0x45, 0x54, 0x49, 0x4f, 0x4e, 0x49, 0x4e, 0x46, - 0x4f, 0x10, 0xcb, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, - 0x53, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x45, 0x52, 0x49, 0x4e, 0x46, 0x4f, 0x4c, 0x49, - 0x53, 0x54, 0x10, 0xcc, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x45, 0x52, 0x49, 0x4e, 0x46, 0x4f, 0x4c, - 0x49, 0x53, 0x54, 0x10, 0xcd, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x43, 0x53, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x44, 0x47, 0x47, 0x41, 0x4d, 0x45, 0x10, - 0xce, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, - 0x45, 0x4e, 0x54, 0x45, 0x52, 0x44, 0x47, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xcf, 0x11, 0x12, 0x1a, - 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4c, 0x45, 0x41, 0x56, - 0x45, 0x44, 0x47, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xd0, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x44, 0x47, 0x47, - 0x41, 0x4d, 0x45, 0x10, 0xd1, 0x11, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x52, 0x45, 0x43, 0x48, 0x41, 0x52, - 0x47, 0x45, 0x41, 0x4e, 0x53, 0x57, 0x45, 0x52, 0x10, 0xd2, 0x11, 0x12, 0x25, 0x0a, 0x20, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x41, 0x43, - 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x53, 0x54, 0x49, 0x43, 0x10, - 0xd3, 0x11, 0x12, 0x25, 0x0a, 0x20, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, - 0x54, 0x48, 0x52, 0x49, 0x44, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x53, 0x54, 0x41, 0x54, - 0x49, 0x43, 0x53, 0x54, 0x49, 0x43, 0x10, 0xd4, 0x11, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x41, 0x43, 0x43, 0x4f, - 0x55, 0x4e, 0x54, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x10, 0xd5, 0x11, 0x12, 0x23, - 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x48, 0x52, 0x49, - 0x44, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, - 0x10, 0xd6, 0x11, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, - 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x54, 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x10, - 0xd7, 0x11, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, - 0x45, 0x4e, 0x54, 0x45, 0x52, 0x54, 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xd8, - 0x11, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4c, - 0x45, 0x41, 0x56, 0x45, 0x54, 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xd9, 0x11, - 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x45, - 0x41, 0x56, 0x45, 0x54, 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xda, 0x11, 0x12, - 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x54, 0x48, 0x52, - 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xdb, 0x11, 0x12, 0x1c, 0x0a, - 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, - 0x47, 0x41, 0x4d, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xdc, 0x11, 0x12, 0x25, 0x0a, 0x20, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, - 0x4d, 0x45, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, - 0xdd, 0x11, 0x12, 0x25, 0x0a, 0x20, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, - 0x54, 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, - 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0xde, 0x11, 0x12, 0x2a, 0x0a, 0x25, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, - 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x53, 0x54, 0x41, - 0x54, 0x45, 0x10, 0xdf, 0x11, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, - 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xe0, 0x11, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x50, 0x52, 0x49, 0x56, 0x41, - 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xe1, 0x11, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, - 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xe2, 0x11, 0x12, 0x21, 0x0a, 0x1c, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x50, 0x52, 0x49, - 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xe3, 0x11, 0x12, - 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, - 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x48, 0x49, 0x53, 0x54, 0x4f, - 0x52, 0x59, 0x10, 0xe4, 0x11, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, - 0x4d, 0x48, 0x49, 0x53, 0x54, 0x4f, 0x52, 0x59, 0x10, 0xe5, 0x11, 0x12, 0x21, 0x0a, 0x1c, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, - 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xe6, 0x11, 0x12, 0x21, - 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x44, 0x45, 0x53, 0x54, - 0x52, 0x4f, 0x59, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xe7, - 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x51, - 0x55, 0x45, 0x52, 0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe8, 0x11, 0x12, - 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x51, 0x55, 0x45, - 0x52, 0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe9, 0x11, 0x12, 0x1a, 0x0a, - 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x53, - 0x55, 0x42, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xeb, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x4f, 0x42, 0x53, 0x45, 0x52, - 0x56, 0x45, 0x10, 0xec, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x53, 0x43, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xed, 0x11, 0x12, - 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x59, 0x4e, - 0x43, 0x47, 0x41, 0x4d, 0x45, 0x46, 0x52, 0x45, 0x45, 0x10, 0xee, 0x11, 0x12, 0x1a, 0x0a, 0x15, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x4f, 0x54, 0x54, 0x45, 0x52, - 0x59, 0x53, 0x59, 0x4e, 0x43, 0x10, 0xef, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, - 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4c, 0x4f, 0x54, 0x54, 0x45, 0x52, 0x59, 0x4c, 0x4f, 0x47, - 0x10, 0xf0, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x5f, 0x4c, 0x4f, 0x54, 0x54, 0x45, 0x52, 0x59, 0x4c, 0x4f, 0x47, 0x10, 0xf1, 0x11, 0x12, 0x1a, - 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x4f, 0x54, 0x54, - 0x45, 0x52, 0x59, 0x42, 0x49, 0x4c, 0x4c, 0x10, 0xf2, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x55, 0x50, 0x4c, 0x4f, 0x41, 0x44, 0x4c, 0x4f, - 0x43, 0x10, 0xf3, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, - 0x43, 0x5f, 0x55, 0x50, 0x4c, 0x4f, 0x41, 0x44, 0x4c, 0x4f, 0x43, 0x10, 0xf4, 0x11, 0x12, 0x1a, - 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x41, 0x55, 0x44, 0x49, - 0x45, 0x4e, 0x43, 0x45, 0x53, 0x49, 0x54, 0x10, 0xf5, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, - 0x53, 0x49, 0x54, 0x10, 0xf6, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, - 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x4e, 0x4f, 0x54, 0x49, 0x43, 0x45, 0x10, 0xf7, 0x11, - 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x4f, - 0x4d, 0x4e, 0x4f, 0x54, 0x49, 0x43, 0x45, 0x10, 0xf8, 0x11, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x45, 0x4e, - 0x54, 0x52, 0x59, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0xf9, 0x11, 0x12, 0x1b, 0x0a, 0x16, - 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, - 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xfa, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x52, 0x4f, 0x4f, 0x4d, - 0x10, 0xc1, 0x3e, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, - 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc2, 0x3e, 0x12, 0x1a, 0x0a, - 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, - 0x4f, 0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc3, 0x3e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x52, 0x4f, - 0x4f, 0x4d, 0x10, 0xc4, 0x3e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, - 0x43, 0x53, 0x5f, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xc5, 0x3e, - 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x46, 0x4f, - 0x52, 0x43, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xc6, 0x3e, 0x12, 0x21, 0x0a, 0x1c, 0x50, - 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, - 0x45, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc7, 0x3e, 0x12, 0x20, - 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4c, 0x41, 0x59, - 0x45, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x46, 0x4c, 0x41, 0x47, 0x10, 0xc8, 0x3e, - 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x52, 0x6f, 0x6f, - 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0xc9, 0x3e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, - 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, - 0xca, 0x3e, 0x42, 0x28, 0x5a, 0x26, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x18, 0x0a, 0x07, + 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, + 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, + 0x54, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x2a, 0xe6, 0x09, 0x0a, + 0x11, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, + 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, + 0x73, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x01, 0x12, 0x1b, 0x0a, + 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, + 0x73, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xf8, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, + 0x52, 0x43, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x5f, + 0x47, 0x61, 0x6d, 0x65, 0x10, 0xf9, 0x07, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x47, 0x61, 0x6d, 0x65, 0x48, 0x61, 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x10, 0xfa, 0x07, + 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x73, 0x46, + 0x75, 0x6c, 0x6c, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xfb, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x4f, + 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x48, 0x61, 0x64, 0x45, 0x78, 0x69, 0x73, 0x74, + 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xfc, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x47, 0x61, + 0x6d, 0x65, 0x10, 0xfe, 0x07, 0x12, 0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x61, + 0x6e, 0x6e, 0x6f, 0x74, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x49, + 0x6e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x80, 0x08, 0x12, 0x1d, + 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x4e, 0x6f, 0x74, 0x45, + 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x90, 0x08, 0x12, 0x2c, 0x0a, + 0x27, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x57, 0x61, 0x74, 0x63, + 0x68, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x6f, 0x74, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x92, 0x08, 0x12, 0x27, 0x0a, 0x22, 0x4f, + 0x50, 0x52, 0x43, 0x5f, 0x4f, 0x6e, 0x6c, 0x79, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x6c, 0x75, + 0x62, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x47, 0x61, 0x6d, + 0x65, 0x10, 0x93, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, + 0x72, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77, 0x5f, 0x47, 0x61, 0x6d, + 0x65, 0x10, 0x94, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, + 0x72, 0x41, 0x70, 0x70, 0x56, 0x65, 0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77, 0x5f, 0x47, 0x61, 0x6d, + 0x65, 0x10, 0x95, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x63, 0x65, + 0x6e, 0x65, 0x50, 0x6f, 0x73, 0x46, 0x75, 0x6c, 0x6c, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x98, + 0x08, 0x12, 0x23, 0x0a, 0x1e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x45, + 0x6e, 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x57, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x5f, 0x47, + 0x61, 0x6d, 0x65, 0x10, 0x9a, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, + 0x6f, 0x6f, 0x6d, 0x48, 0x61, 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x47, 0x61, 0x6d, + 0x65, 0x10, 0x9d, 0x08, 0x12, 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x63, 0x65, + 0x6e, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, + 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9e, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x53, 0x61, 0x6d, 0x65, 0x49, 0x70, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x5f, 0x47, 0x61, + 0x6d, 0x65, 0x10, 0x9f, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x6f, + 0x69, 0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x47, 0x61, 0x6d, 0x65, + 0x10, 0xa0, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x6f, 0x69, 0x6e, + 0x54, 0x6f, 0x6f, 0x4d, 0x6f, 0x72, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa2, 0x08, 0x12, + 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x47, + 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x67, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa3, 0x08, 0x12, 0x16, + 0x0a, 0x11, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4f, 0x70, 0x59, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x47, + 0x61, 0x6d, 0x65, 0x10, 0xba, 0x08, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, + 0x6c, 0x6c, 0x6f, 0x63, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, + 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xc9, 0x08, 0x12, 0x24, 0x0a, 0x1f, 0x4f, 0x50, 0x52, 0x43, + 0x5f, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xca, 0x08, 0x12, 0x15, + 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x6f, 0x74, 0x45, 0x78, + 0x69, 0x74, 0x10, 0xcb, 0x08, 0x12, 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, + 0x77, 0x65, 0x72, 0x52, 0x69, 0x63, 0x65, 0x5f, 0x53, 0x63, 0x65, 0x6e, 0x63, 0x65, 0x4d, 0x61, + 0x78, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb3, 0x08, 0x12, 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, + 0x43, 0x5f, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x69, 0x63, 0x65, 0x5f, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x4d, 0x61, 0x78, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb4, 0x08, 0x12, 0x26, 0x0a, + 0x21, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x69, 0x63, 0x65, 0x5f, + 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x4d, 0x61, 0x78, 0x5f, 0x47, 0x61, + 0x6d, 0x65, 0x10, 0xb5, 0x08, 0x12, 0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, + 0x75, 0x72, 0x41, 0x72, 0x65, 0x47, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x6e, 0x6e, 0x6f, + 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb6, 0x08, 0x12, 0x21, + 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x74, 0x50, + 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xc8, + 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x47, 0x61, + 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xcf, 0x08, 0x12, + 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4d, 0x75, 0x73, 0x74, 0x42, 0x69, 0x6e, 0x64, + 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xd9, 0x08, + 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x70, 0x72, 0x63, 0x5f, 0x43, 0x6c, 0x75, 0x62, 0x5f, 0x43, 0x6c, + 0x75, 0x62, 0x49, 0x73, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9f, + 0x27, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, 0x5f, 0x52, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x45, 0x72, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa8, 0x46, 0x12, 0x1a, + 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x45, + 0x72, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa9, 0x46, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, + 0x52, 0x43, 0x5f, 0x44, 0x67, 0x5f, 0x50, 0x6c, 0x61, 0x74, 0x45, 0x72, 0x72, 0x5f, 0x47, 0x61, + 0x6d, 0x65, 0x10, 0xaa, 0x46, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, + 0x5f, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x5f, + 0x47, 0x61, 0x6d, 0x65, 0x10, 0xab, 0x46, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, + 0x54, 0x68, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x47, 0x61, + 0x6d, 0x65, 0x10, 0xb2, 0x46, 0x2a, 0xd0, 0x17, 0x0a, 0x10, 0x47, 0x61, 0x6d, 0x65, 0x48, 0x61, + 0x6c, 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x48, 0x61, 0x6c, 0x6c, 0x5f, 0x5a, 0x45, + 0x52, 0x4f, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, + 0x53, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x98, 0x11, 0x12, 0x17, 0x0a, + 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4a, 0x4f, 0x49, 0x4e, 0x47, + 0x41, 0x4d, 0x45, 0x10, 0x99, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9a, + 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, + 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9b, 0x11, 0x12, 0x18, 0x0a, 0x13, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x52, + 0x4f, 0x4f, 0x4d, 0x10, 0x9c, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9d, 0x11, + 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x52, 0x45, + 0x54, 0x55, 0x52, 0x4e, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9e, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x52, + 0x4f, 0x4f, 0x4d, 0x10, 0x9f, 0x11, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x43, 0x53, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x45, 0x4e, 0x54, + 0x45, 0x52, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xa0, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x47, 0x41, 0x4d, 0x45, + 0x10, 0xa1, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xa2, 0x11, 0x12, 0x17, 0x0a, + 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x51, 0x55, 0x49, 0x54, 0x47, + 0x41, 0x4d, 0x45, 0x10, 0xa3, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x5f, 0x51, 0x55, 0x49, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xa4, 0x11, 0x12, + 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x41, 0x52, + 0x44, 0x47, 0x41, 0x49, 0x4e, 0x57, 0x41, 0x59, 0x10, 0xa5, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x54, 0x41, 0x53, 0x4b, 0x4c, 0x49, 0x53, + 0x54, 0x10, 0xa6, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x5f, 0x54, 0x41, 0x53, 0x4b, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xa7, 0x11, 0x12, 0x16, 0x0a, + 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x41, 0x53, 0x4b, 0x43, + 0x48, 0x47, 0x10, 0xa8, 0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x53, 0x43, 0x5f, 0x54, 0x41, 0x43, 0x4b, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x10, + 0xa9, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, + 0x54, 0x41, 0x53, 0x4b, 0x44, 0x45, 0x4c, 0x10, 0xaa, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x54, 0x41, 0x43, 0x4b, 0x44, 0x52, 0x41, 0x57, + 0x50, 0x52, 0x49, 0x5a, 0x45, 0x10, 0xab, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x41, 0x43, 0x4b, 0x44, 0x52, 0x41, 0x57, 0x50, 0x52, + 0x49, 0x5a, 0x45, 0x10, 0xac, 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x47, 0x41, 0x4d, 0x45, + 0x52, 0x45, 0x43, 0x10, 0xaf, 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x47, 0x41, 0x4d, 0x45, + 0x52, 0x45, 0x43, 0x10, 0xb0, 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x43, 0x53, 0x5f, 0x44, 0x45, 0x4c, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x47, 0x41, 0x4d, 0x45, + 0x52, 0x45, 0x43, 0x10, 0xb1, 0x11, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x42, 0x55, 0x59, 0x10, 0xb2, 0x11, 0x12, 0x16, + 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x48, 0x4f, 0x50, + 0x42, 0x55, 0x59, 0x10, 0xb3, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xb4, 0x11, + 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, + 0x54, 0x4c, 0x41, 0x54, 0x45, 0x4c, 0x59, 0x47, 0x41, 0x4d, 0x45, 0x49, 0x44, 0x53, 0x10, 0xb5, + 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, + 0x45, 0x54, 0x4c, 0x41, 0x54, 0x45, 0x4c, 0x59, 0x47, 0x41, 0x4d, 0x45, 0x49, 0x44, 0x53, 0x10, + 0xb6, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, + 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0xb7, 0x11, + 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, + 0x54, 0x47, 0x41, 0x4d, 0x45, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0xb8, 0x11, 0x12, 0x1f, + 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, + 0x47, 0x45, 0x47, 0x41, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0xb9, 0x11, 0x12, + 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x45, 0x4e, 0x54, + 0x45, 0x52, 0x48, 0x41, 0x4c, 0x4c, 0x10, 0xc0, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x48, 0x41, 0x4c, 0x4c, + 0x10, 0xc1, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, + 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x48, 0x41, 0x4c, 0x4c, 0x10, 0xc2, 0x11, 0x12, 0x18, 0x0a, + 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, + 0x48, 0x41, 0x4c, 0x4c, 0x10, 0xc3, 0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x48, 0x41, 0x4c, 0x4c, 0x52, 0x4f, 0x4f, 0x4d, 0x4c, 0x49, 0x53, + 0x54, 0x10, 0xc4, 0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x5f, 0x48, 0x41, 0x4c, 0x4c, 0x52, 0x4f, 0x4f, 0x4d, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xc5, + 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, + 0x4f, 0x4f, 0x4d, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x10, 0xc6, + 0x11, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, + 0x4f, 0x4f, 0x4d, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0xc7, + 0x11, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, + 0x4f, 0x4f, 0x4d, 0x53, 0x54, 0x41, 0x54, 0x45, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x10, 0xc8, 0x11, + 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x48, 0x41, + 0x4c, 0x4c, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x4e, 0x55, 0x4d, 0x10, 0xc9, 0x11, 0x12, 0x1c, + 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x42, 0x55, 0x4c, 0x4c, + 0x45, 0x54, 0x49, 0x4f, 0x4e, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xca, 0x11, 0x12, 0x1c, 0x0a, 0x17, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x42, 0x55, 0x4c, 0x4c, 0x45, 0x54, + 0x49, 0x4f, 0x4e, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xcb, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x45, 0x52, + 0x49, 0x4e, 0x46, 0x4f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xcc, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x45, + 0x52, 0x49, 0x4e, 0x46, 0x4f, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xcd, 0x11, 0x12, 0x1a, 0x0a, 0x15, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x44, + 0x47, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xce, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x44, 0x47, 0x47, 0x41, 0x4d, + 0x45, 0x10, 0xcf, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, + 0x53, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x44, 0x47, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xd0, 0x11, + 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x45, + 0x41, 0x56, 0x45, 0x44, 0x47, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xd1, 0x11, 0x12, 0x23, 0x0a, 0x1e, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, + 0x52, 0x45, 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x41, 0x4e, 0x53, 0x57, 0x45, 0x52, 0x10, 0xd2, + 0x11, 0x12, 0x25, 0x0a, 0x20, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x54, + 0x48, 0x52, 0x49, 0x44, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x53, 0x54, 0x41, 0x54, 0x49, + 0x43, 0x53, 0x54, 0x49, 0x43, 0x10, 0xd3, 0x11, 0x12, 0x25, 0x0a, 0x20, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x41, 0x43, 0x43, 0x4f, 0x55, + 0x4e, 0x54, 0x53, 0x54, 0x41, 0x54, 0x49, 0x43, 0x53, 0x54, 0x49, 0x43, 0x10, 0xd4, 0x11, 0x12, + 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x54, 0x48, 0x52, + 0x49, 0x44, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x46, 0x45, + 0x52, 0x10, 0xd5, 0x11, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x41, 0x43, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x54, 0x52, + 0x41, 0x4e, 0x53, 0x46, 0x45, 0x52, 0x10, 0xd6, 0x11, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x54, 0x48, 0x52, 0x49, + 0x44, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xd7, 0x11, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x54, 0x48, 0x52, 0x49, 0x44, + 0x47, 0x41, 0x4d, 0x45, 0x10, 0xd8, 0x11, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x54, 0x48, 0x52, 0x49, 0x44, 0x47, + 0x41, 0x4d, 0x45, 0x10, 0xd9, 0x11, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x54, 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, + 0x4d, 0x45, 0x10, 0xda, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x43, 0x53, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x4c, 0x49, 0x53, 0x54, + 0x10, 0xdb, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xdc, + 0x11, 0x12, 0x25, 0x0a, 0x20, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x54, + 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x55, + 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0xdd, 0x11, 0x12, 0x25, 0x0a, 0x20, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x48, 0x52, 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x42, + 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x10, 0xde, 0x11, 0x12, + 0x2a, 0x0a, 0x25, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x54, 0x48, 0x52, + 0x49, 0x44, 0x47, 0x41, 0x4d, 0x45, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x55, 0x50, 0x44, + 0x41, 0x54, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xdf, 0x11, 0x12, 0x20, 0x0a, 0x1b, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x50, + 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xe0, 0x11, 0x12, 0x20, 0x0a, + 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, + 0x45, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xe1, 0x11, 0x12, + 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, + 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x4c, 0x49, 0x53, 0x54, 0x10, + 0xe2, 0x11, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, + 0x47, 0x45, 0x54, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x4c, 0x49, + 0x53, 0x54, 0x10, 0xe3, 0x11, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, + 0x4d, 0x48, 0x49, 0x53, 0x54, 0x4f, 0x52, 0x59, 0x10, 0xe4, 0x11, 0x12, 0x24, 0x0a, 0x1f, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x50, 0x52, 0x49, 0x56, + 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x48, 0x49, 0x53, 0x54, 0x4f, 0x52, 0x59, 0x10, 0xe5, + 0x11, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x44, + 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, + 0x4d, 0x10, 0xe6, 0x11, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, + 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xe7, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, + 0x46, 0x4f, 0x10, 0xe8, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x53, 0x43, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, + 0x10, 0xe9, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, + 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x53, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xeb, 0x11, 0x12, + 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x41, 0x4d, + 0x45, 0x4f, 0x42, 0x53, 0x45, 0x52, 0x56, 0x45, 0x10, 0xec, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x53, 0x54, 0x41, + 0x54, 0x45, 0x10, 0xed, 0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x53, 0x43, 0x5f, 0x53, 0x59, 0x4e, 0x43, 0x47, 0x41, 0x4d, 0x45, 0x46, 0x52, 0x45, 0x45, 0x10, + 0xee, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, + 0x4c, 0x4f, 0x54, 0x54, 0x45, 0x52, 0x59, 0x53, 0x59, 0x4e, 0x43, 0x10, 0xef, 0x11, 0x12, 0x19, + 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4c, 0x4f, 0x54, 0x54, + 0x45, 0x52, 0x59, 0x4c, 0x4f, 0x47, 0x10, 0xf0, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x4f, 0x54, 0x54, 0x45, 0x52, 0x59, 0x4c, 0x4f, + 0x47, 0x10, 0xf1, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, + 0x43, 0x5f, 0x4c, 0x4f, 0x54, 0x54, 0x45, 0x52, 0x59, 0x42, 0x49, 0x4c, 0x4c, 0x10, 0xf2, 0x11, + 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x55, 0x50, + 0x4c, 0x4f, 0x41, 0x44, 0x4c, 0x4f, 0x43, 0x10, 0xf3, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, + 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x55, 0x50, 0x4c, 0x4f, 0x41, 0x44, 0x4c, 0x4f, + 0x43, 0x10, 0xf4, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, + 0x53, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x49, 0x54, 0x10, 0xf5, 0x11, + 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x41, 0x55, + 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x49, 0x54, 0x10, 0xf6, 0x11, 0x12, 0x18, 0x0a, 0x13, + 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x4e, 0x4f, 0x54, + 0x49, 0x43, 0x45, 0x10, 0xf7, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x4f, 0x4d, 0x4e, 0x4f, 0x54, 0x49, 0x43, 0x45, 0x10, 0xf8, 0x11, + 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, + 0x41, 0x4e, 0x47, 0x45, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, + 0xf9, 0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, + 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xfa, 0x11, 0x12, + 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4c, 0x45, 0x41, + 0x56, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc1, 0x3e, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x52, 0x4f, 0x4f, 0x4d, + 0x10, 0xc2, 0x3e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, + 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc3, 0x3e, 0x12, + 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x44, 0x45, 0x53, + 0x54, 0x52, 0x4f, 0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc4, 0x3e, 0x12, 0x19, 0x0a, 0x14, 0x50, + 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x53, 0x54, + 0x41, 0x52, 0x54, 0x10, 0xc5, 0x3e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x53, 0x43, 0x5f, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xc6, + 0x3e, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x41, + 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x52, 0x4f, 0x4f, + 0x4d, 0x10, 0xc7, 0x3e, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, + 0x53, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x46, + 0x4c, 0x41, 0x47, 0x10, 0xc8, 0x3e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, + 0x5f, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0xc9, 0x3e, 0x12, + 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0xca, 0x3e, 0x42, 0x28, 0x5a, 0x26, 0x6d, 0x6f, 0x6e, 0x67, + 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, + 0x6c, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/protocol/gamehall/game.proto b/protocol/gamehall/game.proto index 8ef678b..12137c9 100644 --- a/protocol/gamehall/game.proto +++ b/protocol/gamehall/game.proto @@ -825,6 +825,7 @@ message CommonNotice { int32 NoticeId = 11; int32 IsLoop=12; int32 LoopTime=13; + repeated string OnChannelName = 14; } message PlayerRecord { int32 GameFreeid = 1; // 游戏类型 diff --git a/protocol/webapi/common.pb.go b/protocol/webapi/common.pb.go index bd47a9c..085d71f 100644 --- a/protocol/webapi/common.pb.go +++ b/protocol/webapi/common.pb.go @@ -2844,19 +2844,20 @@ type CommonNotice struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Sort int32 `protobuf:"varint,1,opt,name=Sort,proto3" json:"Sort,omitempty"` - Title string `protobuf:"bytes,2,opt,name=Title,proto3" json:"Title,omitempty"` - Content string `protobuf:"bytes,3,opt,name=Content,proto3" json:"Content,omitempty"` - TypeName string `protobuf:"bytes,4,opt,name=TypeName,proto3" json:"TypeName,omitempty"` - Type int32 `protobuf:"varint,5,opt,name=Type,proto3" json:"Type,omitempty"` - StartTime int64 `protobuf:"varint,6,opt,name=StartTime,proto3" json:"StartTime,omitempty"` - EndTime int64 `protobuf:"varint,7,opt,name=EndTime,proto3" json:"EndTime,omitempty"` - Platform string `protobuf:"bytes,8,opt,name=Platform,proto3" json:"Platform,omitempty"` - CategoryType int32 `protobuf:"varint,9,opt,name=CategoryType,proto3" json:"CategoryType,omitempty"` - ImgUrl string `protobuf:"bytes,10,opt,name=ImgUrl,proto3" json:"ImgUrl,omitempty"` - NoticeId int32 `protobuf:"varint,11,opt,name=NoticeId,proto3" json:"NoticeId,omitempty"` - IsLoop int32 `protobuf:"varint,12,opt,name=IsLoop,proto3" json:"IsLoop,omitempty"` - LoopTime int32 `protobuf:"varint,13,opt,name=LoopTime,proto3" json:"LoopTime,omitempty"` + Sort int32 `protobuf:"varint,1,opt,name=Sort,proto3" json:"Sort,omitempty"` + Title string `protobuf:"bytes,2,opt,name=Title,proto3" json:"Title,omitempty"` + Content string `protobuf:"bytes,3,opt,name=Content,proto3" json:"Content,omitempty"` + TypeName string `protobuf:"bytes,4,opt,name=TypeName,proto3" json:"TypeName,omitempty"` + Type int32 `protobuf:"varint,5,opt,name=Type,proto3" json:"Type,omitempty"` + StartTime int64 `protobuf:"varint,6,opt,name=StartTime,proto3" json:"StartTime,omitempty"` + EndTime int64 `protobuf:"varint,7,opt,name=EndTime,proto3" json:"EndTime,omitempty"` + Platform string `protobuf:"bytes,8,opt,name=Platform,proto3" json:"Platform,omitempty"` + CategoryType int32 `protobuf:"varint,9,opt,name=CategoryType,proto3" json:"CategoryType,omitempty"` + ImgUrl string `protobuf:"bytes,10,opt,name=ImgUrl,proto3" json:"ImgUrl,omitempty"` + NoticeId int32 `protobuf:"varint,11,opt,name=NoticeId,proto3" json:"NoticeId,omitempty"` + IsLoop int32 `protobuf:"varint,12,opt,name=IsLoop,proto3" json:"IsLoop,omitempty"` + LoopTime int32 `protobuf:"varint,13,opt,name=LoopTime,proto3" json:"LoopTime,omitempty"` + OnChannelName []string `protobuf:"bytes,14,rep,name=OnChannelName,proto3" json:"OnChannelName,omitempty"` } func (x *CommonNotice) Reset() { @@ -2982,6 +2983,13 @@ func (x *CommonNotice) GetLoopTime() int32 { return 0 } +func (x *CommonNotice) GetOnChannelName() []string { + if x != nil { + return x.OnChannelName + } + return nil +} + type CommonNoticeList struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -6210,7 +6218,7 @@ var file_common_proto_rawDesc = []byte{ 0x6e, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6e, 0x74, 0x52, 0x09, 0x47, 0x61, - 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xe2, 0x02, 0x0a, 0x0c, 0x43, 0x6f, 0x6d, 0x6d, + 0x6d, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x88, 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, @@ -6232,396 +6240,398 @@ var file_common_proto_rawDesc = []byte{ 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, 0x22, 0x58, 0x0a, 0x10, - 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x28, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x6f, - 0x74, 0x69, 0x63, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, - 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0xaa, 0x02, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, - 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, - 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, - 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x44, 0x61, 0x79, 0x4d, 0x61, 0x78, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x44, 0x61, 0x79, 0x4d, 0x61, 0x78, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x44, 0x61, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x4c, 0x69, - 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x44, 0x61, 0x79, 0x50, 0x6c, - 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, 0x06, 0x45, 0x78, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, - 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x45, - 0x78, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x65, 0x6c, 0x43, 0x68, 0x61, 0x72, - 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x54, 0x65, 0x6c, 0x43, 0x68, 0x61, - 0x72, 0x67, 0x65, 0x22, 0x60, 0x0a, 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x4a, 0x50, 0x72, - 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4a, 0x50, 0x72, 0x69, 0x63, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x61, 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x43, 0x61, 0x73, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x58, 0x0a, 0x10, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x4c, 0x69, 0x73, - 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, - 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x70, 0x52, 0x04, 0x4c, - 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, - 0x83, 0x05, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x0e, 0x0a, 0x02, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, - 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, - 0x65, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x04, 0x50, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, - 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x12, - 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, - 0x0a, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, - 0x41, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x41, 0x64, 0x12, 0x16, 0x0a, 0x06, - 0x41, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x64, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x52, 0x65, 0x70, 0x65, 0x61, - 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x43, 0x6f, 0x6f, 0x6c, 0x69, 0x6e, - 0x67, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6f, - 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x61, 0x62, 0x65, - 0x6c, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x18, - 0x0a, 0x07, 0x41, 0x64, 0x64, 0x41, 0x72, 0x65, 0x61, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, - 0x07, 0x41, 0x64, 0x64, 0x41, 0x72, 0x65, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x10, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x09, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, - 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x41, 0x72, 0x65, 0x61, 0x18, 0x11, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x41, 0x72, 0x65, 0x61, 0x12, 0x31, 0x0a, 0x05, 0x41, 0x77, - 0x61, 0x72, 0x64, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x77, 0x65, 0x62, 0x61, - 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x68, 0x6f, 0x70, 0x2e, 0x41, 0x77, 0x61, 0x72, - 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, - 0x08, 0x56, 0x69, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x56, 0x69, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x61, 0x74, - 0x69, 0x6f, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, - 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x46, 0x69, 0x72, - 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x16, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, - 0x46, 0x69, 0x72, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x1a, 0x38, 0x0a, 0x0a, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x50, 0x0a, 0x0c, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x68, 0x6f, - 0x70, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, - 0x6d, 0x53, 0x68, 0x6f, 0x70, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x50, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, - 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x49, 0x74, - 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xa0, 0x01, 0x0a, 0x0e, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x28, 0x0a, 0x06, - 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, - 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, - 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x44, 0x69, - 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x44, 0x69, 0x61, - 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x55, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x55, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1c, - 0x0a, 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0xb9, 0x06, 0x0a, - 0x0d, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, 0x65, 0x12, 0x0e, - 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1e, - 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x1c, - 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x4e, 0x75, 0x6d, 0x65, 0x62, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x75, 0x6d, 0x65, 0x62, 0x72, 0x12, 0x26, 0x0a, 0x0e, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x05, 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x2c, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, - 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x4d, - 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x05, 0x41, - 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, - 0x73, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x53, 0x69, - 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x2c, 0x0a, 0x11, - 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, - 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, - 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x38, 0x0a, 0x0e, 0x53, 0x69, - 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x0b, 0x20, 0x01, + 0x28, 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, 0x22, 0x58, 0x0a, 0x10, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x69, + 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0xaa, 0x02, 0x0a, + 0x0c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x70, 0x12, 0x0e, 0x0a, + 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, + 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x68, 0x6f, + 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x68, + 0x6f, 0x70, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x44, 0x61, 0x79, 0x4d, 0x61, + 0x78, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x44, 0x61, + 0x79, 0x4d, 0x61, 0x78, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x44, 0x61, 0x79, + 0x50, 0x6c, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0c, 0x44, 0x61, 0x79, 0x50, 0x6c, 0x61, 0x79, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x2c, 0x0a, + 0x06, 0x45, 0x78, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x06, 0x45, 0x78, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x54, + 0x65, 0x6c, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, + 0x54, 0x65, 0x6c, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x22, 0x60, 0x0a, 0x0c, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x4a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x4a, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x43, 0x61, 0x73, 0x68, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x43, 0x61, 0x73, 0x68, 0x12, 0x0e, 0x0a, 0x02, 0x49, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0x58, 0x0a, 0x10, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x12, + 0x28, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x53, + 0x68, 0x6f, 0x70, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x83, 0x05, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x68, + 0x6f, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, + 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x50, 0x61, 0x67, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x41, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, + 0x41, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x41, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x41, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x52, 0x65, + 0x70, 0x65, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0b, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, + 0x43, 0x6f, 0x6f, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x03, 0x28, + 0x05, 0x52, 0x0b, 0x43, 0x6f, 0x6f, 0x6c, 0x69, 0x6e, 0x67, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x4c, + 0x61, 0x62, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x41, 0x72, 0x65, 0x61, 0x18, + 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x41, 0x64, 0x64, 0x41, 0x72, 0x65, 0x61, 0x12, 0x16, + 0x0a, 0x06, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, + 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x43, 0x6f, 0x6e, 0x73, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x41, 0x72, 0x65, 0x61, + 0x18, 0x11, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x41, 0x72, 0x65, 0x61, + 0x12, 0x31, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x68, 0x6f, + 0x70, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x56, 0x69, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, + 0x13, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x56, 0x69, 0x70, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, + 0x14, 0x0a, 0x05, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, + 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x46, 0x69, 0x72, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x16, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x46, 0x69, 0x72, 0x73, 0x74, 0x53, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x1a, 0x38, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x50, 0x0a, 0x0c, 0x49, + 0x74, 0x65, 0x6d, 0x53, 0x68, 0x6f, 0x70, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x24, 0x0a, 0x04, 0x4c, + 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, + 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x68, 0x6f, 0x70, 0x52, 0x04, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x50, 0x0a, + 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, + 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, + 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x4e, + 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x22, + 0xa0, 0x01, 0x0a, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x77, 0x61, + 0x72, 0x64, 0x12, 0x28, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, - 0x49, 0x74, 0x65, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x61, - 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x65, 0x6b, 0x18, 0x0d, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x65, 0x6b, - 0x12, 0x2c, 0x0a, 0x11, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x48, 0x4d, 0x53, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x11, 0x4d, 0x61, 0x74, - 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x4d, 0x53, 0x12, 0x28, - 0x0a, 0x0f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x48, 0x4d, - 0x53, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, - 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x48, 0x4d, 0x53, 0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x74, 0x63, - 0x68, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x10, 0x20, 0x03, 0x28, 0x03, - 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, - 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x11, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x1c, 0x0a, 0x09, - 0x41, 0x77, 0x61, 0x72, 0x64, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x75, - 0x6c, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x14, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x55, 0x73, 0x65, 0x52, 0x6f, 0x62, - 0x6f, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x55, 0x73, 0x65, 0x52, 0x6f, 0x62, - 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, - 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, - 0x61, 0x6d, 0x65, 0x18, 0x17, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x5a, 0x0a, 0x11, 0x47, 0x61, 0x6d, 0x65, - 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x29, 0x0a, - 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x77, 0x65, - 0x62, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, - 0x74, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x64, 0x0a, 0x0b, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, - 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x17, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x5f, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0x4f, 0x0a, 0x14, 0x57, 0x65, - 0x6c, 0x66, 0x61, 0x72, 0x65, 0x54, 0x75, 0x72, 0x6e, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x61, - 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, - 0x49, 0x64, 0x12, 0x27, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, - 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x44, 0x61, 0x74, 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x57, - 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x54, 0x75, 0x72, 0x6e, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, - 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, 0x22, 0xba, 0x01, 0x0a, 0x18, 0x57, 0x65, 0x6c, 0x66, - 0x61, 0x72, 0x65, 0x54, 0x75, 0x72, 0x6e, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x65, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, - 0x61, 0x72, 0x65, 0x54, 0x75, 0x72, 0x6e, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x65, - 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x08, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, - 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x43, 0x6f, 0x69, 0x6e, + 0x12, 0x18, 0x0a, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x07, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x55, 0x70, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x55, 0x70, 0x4c, + 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x4c, 0x69, 0x6d, 0x69, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x44, 0x6f, 0x77, 0x6e, 0x4c, 0x69, 0x6d, + 0x69, 0x74, 0x22, 0xb9, 0x06, 0x0a, 0x0d, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, + 0x44, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x02, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, + 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, + 0x65, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x20, 0x0a, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x75, 0x6d, 0x65, 0x62, 0x72, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4e, 0x75, 0x6d, 0x65, + 0x62, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x2c, 0x0a, 0x05, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x77, 0x65, + 0x62, 0x61, 0x70, 0x69, 0x2e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x6e, 0x66, 0x6f, 0x41, 0x77, + 0x61, 0x72, 0x64, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x26, 0x0a, 0x0e, 0x53, 0x69, + 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x43, 0x6f, + 0x69, 0x6e, 0x12, 0x2c, 0x0a, 0x11, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, + 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x53, + 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, + 0x12, 0x38, 0x0a, 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x74, + 0x65, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, + 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0e, 0x53, 0x69, 0x67, 0x6e, + 0x75, 0x70, 0x43, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x24, 0x0a, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x57, 0x65, 0x65, + 0x6b, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0d, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, + 0x6d, 0x65, 0x57, 0x65, 0x65, 0x6b, 0x12, 0x2c, 0x0a, 0x11, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, + 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x4d, 0x53, 0x18, 0x0e, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x11, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x48, 0x4d, 0x53, 0x12, 0x28, 0x0a, 0x0f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, + 0x65, 0x45, 0x6e, 0x64, 0x48, 0x4d, 0x53, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x48, 0x4d, 0x53, 0x12, 0x26, + 0x0a, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, + 0x18, 0x10, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x69, 0x6d, + 0x65, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x55, + 0x52, 0x4c, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x55, + 0x52, 0x4c, 0x12, 0x1c, 0x0a, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x53, 0x68, 0x6f, 0x77, 0x18, + 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x41, 0x77, 0x61, 0x72, 0x64, 0x53, 0x68, 0x6f, 0x77, + 0x12, 0x12, 0x0a, 0x04, 0x52, 0x75, 0x6c, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x52, 0x75, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x14, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, + 0x55, 0x73, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, + 0x55, 0x73, 0x65, 0x52, 0x6f, 0x62, 0x6f, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x74, 0x63, + 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x16, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4d, 0x61, + 0x74, 0x63, 0x68, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x17, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x5a, + 0x0a, 0x11, 0x47, 0x61, 0x6d, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, 0x65, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x15, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x4d, + 0x61, 0x74, 0x63, 0x68, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0x64, 0x0a, 0x0b, 0x57, 0x65, + 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, + 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x17, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x5f, + 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, + 0x22, 0x4f, 0x0a, 0x14, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x54, 0x75, 0x72, 0x6e, 0x70, + 0x6c, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x65, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, + 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x44, 0x61, 0x74, + 0x65, 0x22, 0x2a, 0x0a, 0x14, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x54, 0x75, 0x72, 0x6e, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x74, + 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x74, 0x65, 0x22, 0xba, 0x01, + 0x0a, 0x18, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x54, 0x75, 0x72, 0x6e, 0x70, 0x6c, 0x61, + 0x74, 0x65, 0x44, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x04, 0x4c, 0x69, + 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x54, 0x75, 0x72, 0x6e, 0x70, 0x6c, 0x61, - 0x74, 0x65, 0x52, 0x61, 0x74, 0x65, 0x52, 0x08, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, - 0x69, 0x74, 0x63, 0x68, 0x22, 0x61, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x55, 0x70, 0x57, 0x65, 0x6c, - 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x55, - 0x70, 0x44, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x64, 0x64, 0x55, - 0x70, 0x44, 0x61, 0x79, 0x12, 0x31, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, - 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, - 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x09, 0x41, 0x64, - 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x10, 0x57, 0x65, 0x6c, 0x66, - 0x61, 0x72, 0x65, 0x37, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x44, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x44, 0x61, 0x79, 0x12, 0x27, - 0x0a, 0x04, 0x44, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, - 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, - 0x65, 0x52, 0x04, 0x44, 0x61, 0x74, 0x65, 0x12, 0x36, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x55, 0x70, - 0x44, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x65, 0x62, - 0x61, 0x70, 0x69, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x70, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, - 0x44, 0x61, 0x74, 0x65, 0x52, 0x09, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x22, - 0x78, 0x0a, 0x14, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x37, 0x53, 0x69, 0x67, 0x6e, 0x44, - 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, - 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x37, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x74, 0x65, 0x52, - 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0xdb, 0x01, 0x0a, 0x0c, 0x42, 0x6c, - 0x69, 0x6e, 0x64, 0x42, 0x6f, 0x78, 0x44, 0x61, 0x74, 0x61, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, - 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x73, - 0x75, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, - 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x31, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x31, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, - 0x69, 0x63, 0x65, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x72, 0x69, 0x63, - 0x65, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x17, - 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x5f, 0x49, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0xa3, 0x01, 0x0a, 0x17, 0x57, 0x65, 0x6c, 0x66, - 0x61, 0x72, 0x65, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x42, 0x6f, 0x78, 0x44, 0x61, 0x74, 0x61, 0x4c, - 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x42, 0x6c, 0x69, 0x6e, 0x64, - 0x42, 0x6f, 0x78, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, - 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x69, 0x6e, 0x49, 0x64, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4d, 0x69, 0x6e, 0x49, 0x64, 0x22, 0xc5, 0x01, - 0x0a, 0x0c, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x53, 0x70, 0x72, 0x65, 0x65, 0x12, 0x10, - 0x0a, 0x03, 0x44, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x44, 0x61, 0x79, - 0x12, 0x27, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, - 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, - 0x61, 0x74, 0x65, 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x49, 0x50, - 0x45, 0x58, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x49, 0x50, 0x45, 0x58, 0x12, - 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x69, - 0x63, 0x65, 0x31, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, - 0x31, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x69, 0x73, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x44, 0x69, 0x73, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x8d, 0x01, 0x0a, 0x17, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, - 0x65, 0x46, 0x69, 0x72, 0x73, 0x74, 0x50, 0x61, 0x79, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, - 0x74, 0x12, 0x28, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, - 0x53, 0x70, 0x72, 0x65, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, + 0x74, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x08, + 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x54, + 0x75, 0x72, 0x6e, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x61, 0x74, 0x65, 0x52, 0x08, 0x52, 0x61, + 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0x61, 0x0a, 0x10, 0x41, 0x64, + 0x64, 0x55, 0x70, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x08, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x79, 0x12, 0x31, 0x0a, 0x09, 0x41, 0x64, + 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, + 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, + 0x74, 0x65, 0x52, 0x09, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x22, 0x85, 0x01, + 0x0a, 0x10, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x37, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, + 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x03, 0x44, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, + 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x44, 0x61, 0x74, 0x65, 0x12, 0x36, 0x0a, + 0x09, 0x41, 0x64, 0x64, 0x55, 0x70, 0x44, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x18, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x41, 0x64, 0x64, 0x55, 0x70, 0x57, + 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x09, 0x41, 0x64, 0x64, 0x55, + 0x70, 0x44, 0x61, 0x74, 0x65, 0x22, 0x78, 0x0a, 0x14, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, + 0x37, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, + 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x77, 0x65, + 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x37, 0x53, 0x69, 0x67, + 0x6e, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, - 0x14, 0x0a, 0x05, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x43, 0x79, 0x63, 0x6c, 0x65, 0x22, 0xa8, 0x01, 0x0a, 0x1c, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, - 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x50, 0x61, 0x79, 0x44, 0x61, - 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, - 0x6c, 0x66, 0x61, 0x72, 0x65, 0x53, 0x70, 0x72, 0x65, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, - 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, - 0x69, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x42, 0x72, - 0x65, 0x61, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x42, 0x72, 0x65, 0x61, 0x6b, - 0x22, 0x9c, 0x05, 0x0a, 0x06, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x56, - 0x69, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x69, 0x70, 0x49, - 0x64, 0x12, 0x2f, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, - 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, - 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x69, 0x70, 0x45, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x56, 0x69, 0x70, 0x45, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, - 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1e, - 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x18, 0x05, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x31, 0x12, 0x1e, - 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x32, 0x12, 0x1e, - 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x18, 0x07, 0x20, 0x03, - 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x33, 0x12, 0x1e, - 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, 0x18, 0x08, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x34, 0x12, 0x1e, - 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x35, 0x12, 0x1e, - 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, 0x18, 0x0a, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x36, 0x12, 0x3e, - 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x18, 0x0b, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x49, 0x50, 0x63, - 0x66, 0x67, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x12, 0x28, - 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x50, 0x72, 0x69, 0x63, - 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, - 0x67, 0x65, 0x37, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, - 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, - 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x12, 0x28, 0x0a, 0x0f, 0x52, 0x65, 0x77, 0x61, - 0x72, 0x64, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x18, 0x0e, 0x20, 0x03, 0x28, - 0x05, 0x52, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, - 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x18, 0x0f, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x32, 0x12, 0x18, 0x0a, 0x07, - 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, - 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x1a, 0x38, 0x0a, 0x0a, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, - 0x70, 0x0a, 0x0e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, - 0x74, 0x12, 0x22, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x0e, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x52, - 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, - 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x61, 0x74, 0x69, - 0x6f, 0x22, 0x95, 0x01, 0x0a, 0x09, 0x57, 0x62, 0x43, 0x74, 0x72, 0x6c, 0x43, 0x66, 0x67, 0x12, - 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x52, - 0x65, 0x61, 0x6c, 0x43, 0x74, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x52, - 0x65, 0x61, 0x6c, 0x43, 0x74, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x4e, 0x6f, 0x76, 0x69, 0x63, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x4e, 0x6f, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x07, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x4b, 0x69, 0x6c, - 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x4b, - 0x69, 0x6c, 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, 0x3f, 0x0a, 0x0b, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x02, 0x20, - 0x03, 0x28, 0x05, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x22, 0x64, 0x0a, 0x0f, 0x43, 0x68, - 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, - 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, - 0x22, 0x75, 0x0a, 0x10, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x63, 0x66, 0x67, - 0x44, 0x61, 0x74, 0x61, 0x12, 0x2d, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x43, 0x68, 0x65, - 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x44, 0x61, - 0x74, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, + 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, + 0xdb, 0x01, 0x0a, 0x0c, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x42, 0x6f, 0x78, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, + 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x69, 0x63, + 0x65, 0x31, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x31, + 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x32, 0x12, 0x1a, 0x0a, 0x08, 0x44, 0x69, 0x73, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x44, 0x69, 0x73, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x5f, 0x49, 0x64, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0xa3, 0x01, + 0x0a, 0x17, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x42, 0x6f, + 0x78, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x4c, 0x69, 0x73, + 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, + 0x2e, 0x42, 0x6c, 0x69, 0x6e, 0x64, 0x42, 0x6f, 0x78, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x4c, + 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, - 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x22, 0xb4, 0x03, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x51, 0x75, 0x44, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x04, 0x51, 0x75, 0x44, 0x75, 0x12, 0x1c, 0x0a, 0x09, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, - 0x64, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x55, 0x70, 0x70, 0x65, 0x72, - 0x4f, 0x64, 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, - 0x73, 0x4d, 0x61, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x55, 0x70, 0x70, 0x65, - 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x6f, 0x77, 0x65, - 0x72, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4c, 0x6f, 0x77, - 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, - 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4c, 0x6f, - 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x46, 0x69, - 0x67, 0x68, 0x74, 0x55, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x46, 0x69, 0x67, - 0x68, 0x74, 0x55, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x46, 0x69, 0x67, 0x68, 0x74, 0x44, 0x6f, 0x77, - 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x46, 0x69, 0x67, 0x68, 0x74, 0x44, 0x6f, - 0x77, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x79, 0x55, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x50, 0x61, 0x79, 0x55, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x61, 0x79, 0x44, - 0x6f, 0x77, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x50, 0x61, 0x79, 0x44, 0x6f, - 0x77, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x52, 0x61, 0x74, 0x65, - 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x52, 0x61, - 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x50, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0xc8, - 0x01, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, - 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, - 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, - 0x68, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x69, - 0x4b, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x69, 0x4b, 0x75, 0x12, - 0x16, 0x0a, 0x06, 0x46, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x06, 0x46, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x12, 0x20, 0x0a, 0x0b, 0x46, 0x65, 0x6e, 0x43, 0x68, - 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x46, 0x65, - 0x6e, 0x43, 0x68, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x6f, 0x6f, - 0x64, 0x46, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, - 0x6f, 0x6f, 0x64, 0x46, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x22, 0x4f, 0x0a, 0x19, 0x57, 0x65, 0x6c, - 0x66, 0x61, 0x72, 0x65, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0x4a, 0x0a, 0x14, 0x57, 0x65, - 0x6c, 0x66, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, - 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, - 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 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, + 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x79, 0x63, 0x6c, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x4d, 0x69, 0x6e, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4d, 0x69, + 0x6e, 0x49, 0x64, 0x22, 0xc5, 0x01, 0x0a, 0x0c, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x53, + 0x70, 0x72, 0x65, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x44, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x03, 0x44, 0x61, 0x79, 0x12, 0x27, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x02, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, + 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, + 0x14, 0x0a, 0x05, 0x56, 0x49, 0x50, 0x45, 0x58, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x56, 0x49, 0x50, 0x45, 0x58, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6d, 0x65, 0x12, + 0x16, 0x0a, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x31, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x31, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, + 0x32, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x70, 0x72, 0x69, 0x63, 0x65, 0x32, 0x12, + 0x1a, 0x0a, 0x08, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x01, 0x52, 0x08, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x8d, 0x01, 0x0a, 0x17, + 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x46, 0x69, 0x72, 0x73, 0x74, 0x50, 0x61, 0x79, 0x44, + 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, + 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x53, 0x70, 0x72, 0x65, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, + 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, + 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x22, 0xa8, 0x01, 0x0a, 0x1c, + 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, + 0x73, 0x50, 0x61, 0x79, 0x44, 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x28, 0x0a, 0x04, + 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, + 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x53, 0x70, 0x72, 0x65, 0x65, + 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, + 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x79, + 0x63, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x43, 0x79, 0x63, 0x6c, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x42, 0x72, 0x65, 0x61, 0x6b, 0x22, 0x9c, 0x05, 0x0a, 0x06, 0x56, 0x49, 0x50, 0x63, 0x66, + 0x67, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x69, 0x70, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x05, 0x56, 0x69, 0x70, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, + 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x2e, 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x69, 0x70, 0x45, + 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x69, 0x70, 0x45, 0x78, 0x12, 0x14, + 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x50, + 0x72, 0x69, 0x63, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, + 0x65, 0x31, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, + 0x65, 0x67, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, + 0x65, 0x32, 0x18, 0x06, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, + 0x65, 0x67, 0x65, 0x32, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, + 0x65, 0x33, 0x18, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, + 0x65, 0x67, 0x65, 0x33, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, + 0x65, 0x34, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, + 0x65, 0x67, 0x65, 0x34, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, + 0x65, 0x35, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, + 0x65, 0x67, 0x65, 0x35, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, + 0x65, 0x36, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, + 0x65, 0x67, 0x65, 0x36, 0x12, 0x3e, 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, + 0x65, 0x37, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, + 0x69, 0x2e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, + 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, + 0x65, 0x67, 0x65, 0x37, 0x12, 0x28, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, + 0x65, 0x37, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x50, + 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x37, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x18, 0x0d, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, 0x65, 0x67, 0x65, 0x38, 0x12, 0x28, + 0x0a, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, + 0x44, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0f, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x4f, + 0x75, 0x74, 0x6c, 0x69, 0x6e, 0x65, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, + 0x49, 0x64, 0x32, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, + 0x64, 0x32, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x18, 0x10, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x53, 0x68, 0x6f, 0x70, 0x49, 0x64, 0x37, 0x1a, 0x38, 0x0a, 0x0a, + 0x41, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3d, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6c, + 0x65, 0x67, 0x65, 0x37, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x70, 0x0a, 0x0e, 0x56, 0x49, 0x50, 0x63, 0x66, 0x67, 0x44, + 0x61, 0x74, 0x61, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x22, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x56, + 0x49, 0x50, 0x63, 0x66, 0x67, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x50, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x6f, 0x6e, 0x65, 0x79, + 0x52, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x4d, 0x6f, 0x6e, + 0x65, 0x79, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x22, 0x95, 0x01, 0x0a, 0x09, 0x57, 0x62, 0x43, 0x74, + 0x72, 0x6c, 0x43, 0x66, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x43, 0x74, 0x72, 0x6c, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x08, 0x52, 0x65, 0x61, 0x6c, 0x43, 0x74, 0x72, 0x6c, 0x12, 0x16, 0x0a, + 0x06, 0x4e, 0x6f, 0x76, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x4e, + 0x6f, 0x76, 0x69, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x4b, 0x69, 0x6c, 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0a, 0x4b, 0x69, 0x6c, 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x22, + 0x3f, 0x0a, 0x0b, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x1a, + 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x14, 0x0a, 0x05, 0x44, 0x61, + 0x74, 0x61, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, + 0x22, 0x64, 0x0a, 0x0f, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x27, 0x0a, + 0x04, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, + 0x62, 0x61, 0x70, 0x69, 0x2e, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x44, 0x61, 0x74, 0x65, + 0x52, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x22, 0x75, 0x0a, 0x10, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, + 0x61, 0x6e, 0x6b, 0x63, 0x66, 0x67, 0x44, 0x61, 0x74, 0x61, 0x12, 0x2d, 0x0a, 0x05, 0x44, 0x61, + 0x74, 0x61, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x77, 0x65, 0x62, 0x61, + 0x70, 0x69, 0x2e, 0x43, 0x68, 0x65, 0x73, 0x73, 0x52, 0x61, 0x6e, 0x6b, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x22, 0xb4, 0x03, + 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x1a, 0x0a, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x70, 0x70, 0x65, + 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x55, 0x70, + 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x4c, 0x6f, 0x77, 0x65, + 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x4c, 0x6f, + 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x51, 0x75, 0x44, 0x75, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x51, 0x75, 0x44, 0x75, 0x12, 0x1c, 0x0a, 0x09, + 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x09, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x55, 0x70, + 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, + 0x52, 0x0c, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x12, 0x1c, + 0x0a, 0x09, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x09, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x12, 0x22, 0x0a, 0x0c, + 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0c, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x4f, 0x64, 0x64, 0x73, 0x4d, 0x61, 0x78, + 0x12, 0x18, 0x0a, 0x07, 0x46, 0x69, 0x67, 0x68, 0x74, 0x55, 0x70, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x07, 0x46, 0x69, 0x67, 0x68, 0x74, 0x55, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x46, 0x69, + 0x67, 0x68, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x46, + 0x69, 0x67, 0x68, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x79, 0x55, + 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x79, 0x55, 0x70, 0x12, 0x18, + 0x0a, 0x07, 0x50, 0x61, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x07, 0x50, 0x61, 0x79, 0x44, 0x6f, 0x77, 0x6e, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x69, 0x61, 0x6e, + 0x48, 0x75, 0x52, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x54, 0x69, + 0x61, 0x6e, 0x48, 0x75, 0x52, 0x61, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x10, 0x50, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x0e, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x10, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x6f, 0x6f, 0x6c, 0x53, 0x77, + 0x69, 0x74, 0x63, 0x68, 0x22, 0xc8, 0x01, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, + 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x69, 0x61, 0x6e, 0x48, + 0x75, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x12, + 0x14, 0x0a, 0x05, 0x50, 0x61, 0x69, 0x4b, 0x75, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x50, 0x61, 0x69, 0x4b, 0x75, 0x12, 0x16, 0x0a, 0x06, 0x46, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x46, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x12, 0x20, 0x0a, + 0x0b, 0x46, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0b, 0x46, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x47, 0x6f, 0x6f, 0x64, 0x46, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x6f, 0x6f, 0x64, 0x46, 0x65, 0x6e, 0x43, 0x68, 0x61, 0x22, + 0x4f, 0x0a, 0x19, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x50, 0x68, 0x6f, 0x6e, 0x65, 0x4c, + 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1a, 0x0a, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, + 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, + 0x22, 0x4a, 0x0a, 0x14, 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x43, 0x6f, 0x6c, 0x6c, 0x65, + 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 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 ( diff --git a/protocol/webapi/common.proto b/protocol/webapi/common.proto index 7b4d1d6..d35d787 100644 --- a/protocol/webapi/common.proto +++ b/protocol/webapi/common.proto @@ -337,6 +337,7 @@ message CommonNotice { int32 NoticeId = 11; int32 IsLoop=12; int32 LoopTime=13; + repeated string OnChannelName = 14; } message CommonNoticeList{ repeated CommonNotice List = 1; diff --git a/protocol/webapi/webapi.pb.go b/protocol/webapi/webapi.pb.go index 1aeea97..51abaea 100644 --- a/protocol/webapi/webapi.pb.go +++ b/protocol/webapi/webapi.pb.go @@ -8359,6 +8359,125 @@ func (x *SAPlayerDelete) GetMsg() string { return "" } +// 获取邀请连接 [/get_invite_link] +type ASPlayerInviteLink struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=platform,proto3" json:"platform,omitempty"` // 平台id + SnId int32 `protobuf:"varint,2,opt,name=SnId,proto3" json:"SnId,omitempty"` // 玩家id +} + +func (x *ASPlayerInviteLink) Reset() { + *x = ASPlayerInviteLink{} + if protoimpl.UnsafeEnabled { + mi := &file_webapi_proto_msgTypes[123] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ASPlayerInviteLink) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ASPlayerInviteLink) ProtoMessage() {} + +func (x *ASPlayerInviteLink) ProtoReflect() protoreflect.Message { + mi := &file_webapi_proto_msgTypes[123] + 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 ASPlayerInviteLink.ProtoReflect.Descriptor instead. +func (*ASPlayerInviteLink) Descriptor() ([]byte, []int) { + return file_webapi_proto_rawDescGZIP(), []int{123} +} + +func (x *ASPlayerInviteLink) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *ASPlayerInviteLink) GetSnId() int32 { + if x != nil { + return x.SnId + } + return 0 +} + +type SAPlayerInviteLink 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"` //错误信息(选填) + Link string `protobuf:"bytes,3,opt,name=Link,proto3" json:"Link,omitempty"` // 分享连接 +} + +func (x *SAPlayerInviteLink) Reset() { + *x = SAPlayerInviteLink{} + if protoimpl.UnsafeEnabled { + mi := &file_webapi_proto_msgTypes[124] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SAPlayerInviteLink) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SAPlayerInviteLink) ProtoMessage() {} + +func (x *SAPlayerInviteLink) ProtoReflect() protoreflect.Message { + mi := &file_webapi_proto_msgTypes[124] + 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 SAPlayerInviteLink.ProtoReflect.Descriptor instead. +func (*SAPlayerInviteLink) Descriptor() ([]byte, []int) { + return file_webapi_proto_rawDescGZIP(), []int{124} +} + +func (x *SAPlayerInviteLink) GetTag() TagCode { + if x != nil { + return x.Tag + } + return TagCode_UNKNOWN +} + +func (x *SAPlayerInviteLink) GetMsg() string { + if x != nil { + return x.Msg + } + return "" +} + +func (x *SAPlayerInviteLink) GetLink() string { + if x != nil { + return x.Link + } + return "" +} + var File_webapi_proto protoreflect.FileDescriptor var file_webapi_proto_rawDesc = []byte{ @@ -9260,23 +9379,33 @@ var file_webapi_proto_rawDesc = []byte{ 0x6c, 0x65, 0x74, 0x65, 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, 0xce, 0x01, 0x0a, 0x07, 0x54, 0x61, - 0x67, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, - 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, - 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x53, - 0x49, 0x47, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x50, - 0x52, 0x4f, 0x54, 0x4f, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, - 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x4a, 0x59, 0x42, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x45, 0x52, - 0x52, 0x4f, 0x52, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x4a, 0x59, 0x42, 0x5f, 0x43, 0x4f, 0x44, - 0x45, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x50, 0x6c, 0x61, - 0x79, 0x5f, 0x4e, 0x6f, 0x74, 0x45, 0x58, 0x49, 0x53, 0x54, 0x10, 0x07, 0x12, 0x09, 0x0a, 0x05, - 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x08, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x65, 0x6c, 0x45, 0x78, - 0x69, 0x73, 0x74, 0x10, 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x0a, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x65, - 0x6c, 0x4e, 0x6f, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x10, 0x0b, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, - 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, - 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x77, 0x65, 0x62, 0x61, - 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x44, 0x0a, 0x12, 0x41, 0x53, 0x50, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x12, + 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x53, + 0x6e, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x22, + 0x5d, 0x0a, 0x12, 0x53, 0x41, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, 0x76, 0x69, 0x74, + 0x65, 0x4c, 0x69, 0x6e, 0x6b, 0x12, 0x21, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x0f, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x54, 0x61, 0x67, 0x43, + 0x6f, 0x64, 0x65, 0x52, 0x03, 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x4c, 0x69, + 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4c, 0x69, 0x6e, 0x6b, 0x2a, 0xce, + 0x01, 0x0a, 0x07, 0x54, 0x61, 0x67, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, + 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, + 0x53, 0x53, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, + 0x12, 0x0e, 0x0a, 0x0a, 0x53, 0x49, 0x47, 0x4e, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, + 0x12, 0x14, 0x0a, 0x10, 0x50, 0x52, 0x4f, 0x54, 0x4f, 0x5f, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x45, + 0x52, 0x52, 0x4f, 0x52, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x4a, 0x59, 0x42, 0x5f, 0x44, 0x41, + 0x54, 0x41, 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x05, 0x12, 0x12, 0x0a, 0x0e, 0x4a, 0x59, + 0x42, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x45, 0x58, 0x49, 0x53, 0x54, 0x10, 0x06, 0x12, 0x11, + 0x0a, 0x0d, 0x50, 0x6c, 0x61, 0x79, 0x5f, 0x4e, 0x6f, 0x74, 0x45, 0x58, 0x49, 0x53, 0x54, 0x10, + 0x07, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x08, 0x12, 0x0c, 0x0a, 0x08, + 0x54, 0x65, 0x6c, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0x09, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x0a, 0x12, + 0x0e, 0x0a, 0x0a, 0x54, 0x65, 0x6c, 0x4e, 0x6f, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x10, 0x0b, 0x42, + 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, + 0x2f, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -9292,7 +9421,7 @@ func file_webapi_proto_rawDescGZIP() []byte { } var file_webapi_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_webapi_proto_msgTypes = make([]protoimpl.MessageInfo, 123) +var file_webapi_proto_msgTypes = make([]protoimpl.MessageInfo, 125) var file_webapi_proto_goTypes = []interface{}{ (TagCode)(0), // 0: webapi.TagCode (*SAPlatformInfo)(nil), // 1: webapi.SAPlatformInfo @@ -9418,92 +9547,94 @@ var file_webapi_proto_goTypes = []interface{}{ (*SAGetImgVerify)(nil), // 121: webapi.SAGetImgVerify (*ASPlayerDelete)(nil), // 122: webapi.ASPlayerDelete (*SAPlayerDelete)(nil), // 123: webapi.SAPlayerDelete - (*Platform)(nil), // 124: webapi.Platform - (*PlatformGameConfig)(nil), // 125: webapi.PlatformGameConfig - (*GameConfigGroup)(nil), // 126: webapi.GameConfigGroup - (*GameConfigGlobal)(nil), // 127: webapi.GameConfigGlobal - (*PlatformDbConfig)(nil), // 128: webapi.PlatformDbConfig - (*CoinPoolSetting)(nil), // 129: webapi.CoinPoolSetting - (*RoomInfo)(nil), // 130: webapi.RoomInfo - (*PlayerSingleAdjust)(nil), // 131: webapi.PlayerSingleAdjust - (*PlayerData)(nil), // 132: webapi.PlayerData - (*HorseRaceLamp)(nil), // 133: webapi.HorseRaceLamp - (*MessageInfo)(nil), // 134: webapi.MessageInfo - (*ServerInfo)(nil), // 135: webapi.ServerInfo - (*OnlineReport)(nil), // 136: webapi.OnlineReport - (*ItemInfo)(nil), // 137: webapi.ItemInfo - (*ExchangeShop)(nil), // 138: webapi.ExchangeShop + (*ASPlayerInviteLink)(nil), // 124: webapi.ASPlayerInviteLink + (*SAPlayerInviteLink)(nil), // 125: webapi.SAPlayerInviteLink + (*Platform)(nil), // 126: webapi.Platform + (*PlatformGameConfig)(nil), // 127: webapi.PlatformGameConfig + (*GameConfigGroup)(nil), // 128: webapi.GameConfigGroup + (*GameConfigGlobal)(nil), // 129: webapi.GameConfigGlobal + (*PlatformDbConfig)(nil), // 130: webapi.PlatformDbConfig + (*CoinPoolSetting)(nil), // 131: webapi.CoinPoolSetting + (*RoomInfo)(nil), // 132: webapi.RoomInfo + (*PlayerSingleAdjust)(nil), // 133: webapi.PlayerSingleAdjust + (*PlayerData)(nil), // 134: webapi.PlayerData + (*HorseRaceLamp)(nil), // 135: webapi.HorseRaceLamp + (*MessageInfo)(nil), // 136: webapi.MessageInfo + (*ServerInfo)(nil), // 137: webapi.ServerInfo + (*OnlineReport)(nil), // 138: webapi.OnlineReport + (*ItemInfo)(nil), // 139: webapi.ItemInfo + (*ExchangeShop)(nil), // 140: webapi.ExchangeShop } var file_webapi_proto_depIdxs = []int32{ 0, // 0: webapi.ASPlatformInfo.Tag:type_name -> webapi.TagCode - 124, // 1: webapi.ASPlatformInfo.Platforms:type_name -> webapi.Platform + 126, // 1: webapi.ASPlatformInfo.Platforms:type_name -> webapi.Platform 0, // 2: webapi.ASGameConfig.Tag:type_name -> webapi.TagCode - 125, // 3: webapi.ASGameConfig.Configs:type_name -> webapi.PlatformGameConfig + 127, // 3: webapi.ASGameConfig.Configs:type_name -> webapi.PlatformGameConfig 0, // 4: webapi.ASGameConfigGroup.Tag:type_name -> webapi.TagCode - 126, // 5: webapi.ASGameConfigGroup.GameConfigGroup:type_name -> webapi.GameConfigGroup + 128, // 5: webapi.ASGameConfigGroup.GameConfigGroup:type_name -> webapi.GameConfigGroup 0, // 6: webapi.ASGameConfigGlobal.Tag:type_name -> webapi.TagCode - 127, // 7: webapi.ASGameConfigGlobal.GameStatus:type_name -> webapi.GameConfigGlobal + 129, // 7: webapi.ASGameConfigGlobal.GameStatus:type_name -> webapi.GameConfigGlobal 0, // 8: webapi.ASDbConfig.Tag:type_name -> webapi.TagCode - 128, // 9: webapi.ASDbConfig.DbConfigs:type_name -> webapi.PlatformDbConfig - 124, // 10: webapi.ASUpdatePlatform.Platforms:type_name -> webapi.Platform + 130, // 9: webapi.ASDbConfig.DbConfigs:type_name -> webapi.PlatformDbConfig + 126, // 10: webapi.ASUpdatePlatform.Platforms:type_name -> webapi.Platform 0, // 11: webapi.SAUpdatePlatform.Tag:type_name -> webapi.TagCode - 127, // 12: webapi.ASUpdateGameConfigGlobal.GameStatus:type_name -> webapi.GameConfigGlobal + 129, // 12: webapi.ASUpdateGameConfigGlobal.GameStatus:type_name -> webapi.GameConfigGlobal 0, // 13: webapi.SAUpdateGameConfigGlobal.Tag:type_name -> webapi.TagCode - 125, // 14: webapi.ASUpdateGameConfig.Config:type_name -> webapi.PlatformGameConfig + 127, // 14: webapi.ASUpdateGameConfig.Config:type_name -> webapi.PlatformGameConfig 0, // 15: webapi.SAUpdateGameConfig.Tag:type_name -> webapi.TagCode - 126, // 16: webapi.ASUpdateGameConfigGroup.GameConfigGroup:type_name -> webapi.GameConfigGroup + 128, // 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 - 129, // 20: webapi.ASUpdateGamePool.CoinPoolSetting:type_name -> webapi.CoinPoolSetting + 131, // 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 - 129, // 23: webapi.SAQueryGamePoolByGameId.CoinPoolSetting:type_name -> webapi.CoinPoolSetting - 129, // 24: webapi.CoinPoolStatesInfo.CoinPoolSetting:type_name -> webapi.CoinPoolSetting + 131, // 23: webapi.SAQueryGamePoolByGameId.CoinPoolSetting:type_name -> webapi.CoinPoolSetting + 131, // 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 - 130, // 28: webapi.SAListRoom.RoomInfo:type_name -> webapi.RoomInfo + 132, // 28: webapi.SAListRoom.RoomInfo:type_name -> webapi.RoomInfo 0, // 29: webapi.SAGetRoom.Tag:type_name -> webapi.TagCode - 130, // 30: webapi.SAGetRoom.RoomInfo:type_name -> webapi.RoomInfo + 132, // 30: webapi.SAGetRoom.RoomInfo:type_name -> webapi.RoomInfo 0, // 31: webapi.SADestroyRoom.Tag:type_name -> webapi.TagCode - 131, // 32: webapi.ASSinglePlayerAdjust.PlayerSingleAdjust:type_name -> webapi.PlayerSingleAdjust + 133, // 32: webapi.ASSinglePlayerAdjust.PlayerSingleAdjust:type_name -> webapi.PlayerSingleAdjust 0, // 33: webapi.SASinglePlayerAdjust.Tag:type_name -> webapi.TagCode - 131, // 34: webapi.SASinglePlayerAdjust.PlayerSingleAdjust:type_name -> webapi.PlayerSingleAdjust + 133, // 34: webapi.SASinglePlayerAdjust.PlayerSingleAdjust:type_name -> webapi.PlayerSingleAdjust 0, // 35: webapi.SAGetPlayerData.Tag:type_name -> webapi.TagCode - 132, // 36: webapi.SAGetPlayerData.PlayerData:type_name -> webapi.PlayerData + 134, // 36: webapi.SAGetPlayerData.PlayerData:type_name -> webapi.PlayerData 0, // 37: webapi.SAMorePlayerData.Tag:type_name -> webapi.TagCode - 132, // 38: webapi.SAMorePlayerData.PlayerData:type_name -> webapi.PlayerData + 134, // 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 - 133, // 44: webapi.SAQueryHorseRaceLampList.HorseRaceLamp:type_name -> webapi.HorseRaceLamp + 135, // 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 - 133, // 47: webapi.SAGetHorseRaceLampById.HorseRaceLamp:type_name -> webapi.HorseRaceLamp - 133, // 48: webapi.ASEditHorseRaceLamp.HorseRaceLamp:type_name -> webapi.HorseRaceLamp + 135, // 47: webapi.SAGetHorseRaceLampById.HorseRaceLamp:type_name -> webapi.HorseRaceLamp + 135, // 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 - 134, // 54: webapi.SAQueryShortMessageList.MessageInfo:type_name -> webapi.MessageInfo + 136, // 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 - 132, // 57: webapi.SAQueryOnlineReportList.PlayerData:type_name -> webapi.PlayerData + 134, // 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 - 135, // 62: webapi.SAListServerStates.ServerInfo:type_name -> webapi.ServerInfo + 137, // 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 - 136, // 66: webapi.SAOnlineReportTotal.OnlineReport:type_name -> webapi.OnlineReport + 138, // 66: webapi.SAOnlineReportTotal.OnlineReport:type_name -> webapi.OnlineReport 0, // 67: webapi.SAAddCoinByIdAndPT.Tag:type_name -> webapi.TagCode - 137, // 68: webapi.JybInfoAward.ItemId:type_name -> webapi.ItemInfo + 139, // 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 @@ -9515,9 +9646,9 @@ 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 - 138, // 80: webapi.SAGetExchangeShop.List:type_name -> webapi.ExchangeShop + 140, // 80: webapi.SAGetExchangeShop.List:type_name -> webapi.ExchangeShop 0, // 81: webapi.SAThdUpdatePlayerCoin.Tag:type_name -> webapi.TagCode - 137, // 82: webapi.SACreateOrder.ItemInfo:type_name -> webapi.ItemInfo + 139, // 82: webapi.SACreateOrder.ItemInfo:type_name -> webapi.ItemInfo 0, // 83: webapi.SACallbackPayment.Tag:type_name -> webapi.TagCode 0, // 84: webapi.SAResource.Tag:type_name -> webapi.TagCode 0, // 85: webapi.SASendSms.Tag:type_name -> webapi.TagCode @@ -9525,11 +9656,12 @@ var file_webapi_proto_depIdxs = []int32{ 0, // 87: webapi.SAUpdateTel.Tag:type_name -> webapi.TagCode 0, // 88: webapi.SAGetImgVerify.Tag:type_name -> webapi.TagCode 0, // 89: webapi.SAPlayerDelete.Tag:type_name -> webapi.TagCode - 90, // [90:90] is the sub-list for method output_type - 90, // [90:90] is the sub-list for method input_type - 90, // [90:90] is the sub-list for extension type_name - 90, // [90:90] is the sub-list for extension extendee - 0, // [0:90] is the sub-list for field type_name + 0, // 90: webapi.SAPlayerInviteLink.Tag:type_name -> webapi.TagCode + 91, // [91:91] is the sub-list for method output_type + 91, // [91:91] is the sub-list for method input_type + 91, // [91:91] is the sub-list for extension type_name + 91, // [91:91] is the sub-list for extension extendee + 0, // [0:91] is the sub-list for field type_name } func init() { file_webapi_proto_init() } @@ -11015,6 +11147,30 @@ func file_webapi_proto_init() { return nil } } + file_webapi_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ASPlayerInviteLink); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_webapi_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SAPlayerInviteLink); 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{ @@ -11022,7 +11178,7 @@ func file_webapi_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_webapi_proto_rawDesc, NumEnums: 1, - NumMessages: 123, + NumMessages: 125, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/webapi/webapi.proto b/protocol/webapi/webapi.proto index d94b04f..9399fbb 100644 --- a/protocol/webapi/webapi.proto +++ b/protocol/webapi/webapi.proto @@ -893,4 +893,16 @@ message ASPlayerDelete{ message SAPlayerDelete{ TagCode Tag = 1; //错误码 string Msg = 2; //错误信息(选填) -} \ No newline at end of file +} + +// 获取邀请连接 [/get_invite_link] +message ASPlayerInviteLink{ + string platform = 1; // 平台id + int32 SnId = 2; // 玩家id +} +message SAPlayerInviteLink{ + TagCode Tag = 1; //错误码 + string Msg = 2; //错误信息(选填) + string Link = 3; // 分享连接 +} + diff --git a/public b/public index 9a168c5..4ccd5ac 160000 --- a/public +++ b/public @@ -1 +1 @@ -Subproject commit 9a168c5baf2683ddd7359a99e2bb9a2f893f8080 +Subproject commit 4ccd5acb111b25d6cf440fa1e390bc4614accbca diff --git a/webapi/deprecated.go b/webapi/deprecated.go index 98206ca..23db785 100644 --- a/webapi/deprecated.go +++ b/webapi/deprecated.go @@ -56,54 +56,6 @@ func ApiGetImageVerify(appId string, body proto.Message) ([]byte, error) { return getRequest(appId, "/get_img_verify", nil, body, "http", DEFAULT_TIMEOUT) } -// 获取包对应的平台和上级关系 -//func API_PackageList(appId string) ([]byte, error) { -// //params := make(map[string]string) -// //params["ts"] = strconv.Itoa(int(time.Now().Unix())) -// //return getRequest(appId, "/package_list", params, "http", DEFAULT_TIMEOUT) -// return nil, nil -//} - -// 游戏返利配置列表 -func API_GetGameRebateConfig(appId string) ([]byte, error) { - //params := make(map[string]string) - //params["ts"] = strconv.Itoa(int(time.Now().Unix())) - //return getRequest(appId, "/getGameRebateConfig", params, "http", time.Duration(time.Second*120)) - return nil, nil -} - -////获取游戏分组列表 -//func API_GetGameGroupData(appId string) ([]byte, error) { -// //params := make(map[string]string) -// //params["ts"] = strconv.Itoa(int(time.Now().Unix())) -// //return getRequest(appId, "/game_config_group_list", params, "http", DEFAULT_TIMEOUT) -// return nil, nil -//} - -// 获取公告列表 -func API_GetBulletData(appId string) ([]byte, error) { - //params := make(map[string]string) - //params["ts"] = strconv.Itoa(int(time.Now().Unix())) - //return getRequest(appId, "/notice_list", params, "http", DEFAULT_TIMEOUT) - return nil, nil -} - -// 获取招商列表 -func API_GetCustomerData(appId string) ([]byte, error) { - //params := make(map[string]string) - //params["ts"] = strconv.Itoa(int(time.Now().Unix())) - //return getRequest(appId, "/agent_customer_list", params, "http", DEFAULT_TIMEOUT) - return nil, nil -} - -////平台详细配置 -//func API_GetPlatformConfigData(appId string) ([]byte, error) { -// //params := make(map[string]string) -// //params["ts"] = strconv.Itoa(int(time.Now().Unix())) -// //return getRequest(appId, "/game_config_list", params, "http", time.Duration(time.Second*120)) -// return nil, nil -//} - // 获得代理配置 func API_GetPromoterConfig(appId string) ([]byte, error) { //params := make(map[string]string) @@ -112,77 +64,6 @@ func API_GetPromoterConfig(appId string) ([]byte, error) { return nil, nil } -// 黑名单列表 -func API_GetBlackData(appId string, page int) ([]byte, error) { - //params := make(map[string]string) - //params["ts"] = strconv.Itoa(int(time.Now().Unix())) - //params["page"] = strconv.Itoa(page) - //return getRequest(appId, "/black_list", params, "http", DEFAULT_TIMEOUT) - return nil, nil -} - -// 团队信息 -func API_GetSpreadPlayer(appId string, SnId int32, platform string) ([]byte, error) { - //params := make(map[string]string) - //params["snid"] = strconv.Itoa(int(SnId)) - //params["platform"] = platform - //return getRequest(appId, "/spread_player", params, "http", DEFAULT_TIMEOUT) - return nil, nil -} - -// 获取公共黑名单信息 -func API_GetCommonBlackData(appId string, page int) ([]byte, error) { - //params := make(map[string]string) - //params["ts"] = strconv.Itoa(int(time.Now().Unix())) - //params["page"] = strconv.Itoa(page) - //return getRequest(appId, "/black_list_common", params, "http", DEFAULT_TIMEOUT) - return nil, nil -} - -// 支付方式 -func API_GetPayList(appId string, platform string, guestUser, newUser, userVip int, logicLevels []int32, os, snid int32) ([]byte, error) { - //params := make(map[string]string) - //params["platform"] = platform - //params["guest"] = strconv.Itoa(guestUser) - //params["new"] = strconv.Itoa(newUser) - //params["vip"] = strconv.Itoa(userVip) - //params["ts"] = strconv.Itoa(int(time.Now().Unix())) - //params["os"] = strconv.Itoa(int(os)) - //params["snid"] = strconv.Itoa(int(snid)) - // - //var logiclevel string - //for _, v := range logicLevels { - // logiclevel = logiclevel + fmt.Sprintf("%v,", v) - //} - //if len(logiclevel) > 0 { - // logiclevel = logiclevel[:len(logiclevel)-1] - // params["logiclevel"] = logiclevel - //} - //return getRequest(appId, "/pay_platform_list", params, "http", DEFAULT_TIMEOUT) - return nil, nil -} - -// CToAPITransfer -func API_Transfer(appId string, info string) ([]byte, error) { - //params := make(map[string]string) - //params["info"] = info - //params["ts"] = strconv.Itoa(int(time.Now().Unix())) - //return getRequest(appId, "/c2api_transfer", params, "http", DEFAULT_TIMEOUT) - return nil, nil -} - -/* - int32 Snid = 1;//用户id - int32 Platform = 2;//用户id - int32 Type = 3;//商品类型 - int32 GoodsId = 4;//商品ID - int32 VCard = 5;//消耗V卡 - string GoodsName = 6;//兑换物品名称 - string UserName = 7;//兑换人姓名 - string Mobile = 8;//兑换人手机号 - string Comment = 9; //备注信息 -*/ - // 兑换订单 func API_CreateExchange(appId string, body proto.Message) ([]byte, error) { @@ -215,56 +96,6 @@ func APIGetMatchAwardCode(appId string, body proto.Message) ([]byte, error) { return postRequest(appId, "/get_match_award_code", nil, body, "http", DEFAULT_TIMEOUT) } -// 积分商城兑换订单 -func API_GradeShopExchangeList(appId, platform string, snid, page, count int32) ([]byte, error) { - //params := make(map[string]string) - //params["Platform"] = platform - //params["SnId"] = strconv.Itoa(int(snid)) - //params["Page"] = strconv.Itoa(int(page)) - //if page > 0 { - // params["Count"] = strconv.Itoa(int(count)) - //} - //params["Ts"] = strconv.Itoa(int(time.Now().Unix())) - //return getRequest(appId, "/list_exchange_shop_order", params, "http", DEFAULT_TIMEOUT) - return nil, nil -} - -// 积分商城重置商品库存 -func API_GradeShopInitShop(appId string, InitShopIds string) ([]byte, error) { - //params := make(map[string]string) - //params["InitShopIds"] = InitShopIds - //params["Ts"] = strconv.Itoa(int(time.Now().Unix())) - //return getRequest(appId, "/zero_to_reset_exshop", params, "http", DEFAULT_TIMEOUT) - return nil, nil -} - -// 发送短信 -func API_SendSMSCode(appId string, tel string, code string) error { - //params := make(map[string]string) - //params["ts"] = strconv.Itoa(int(time.Now().Unix())) - //params["phone"] = tel - //params["code"] = code - //buff, err := getRequest(appId, "/send_sms", params, "http", DEFAULT_TIMEOUT) - //if err != nil { - // return err - //} - //type ApiResult struct { - // Tag int32 - // Msg string - //} - //result := ApiResult{} - //err = json.Unmarshal(buff, &result) - //if err != nil { - // return err - //} - //if result.Tag != 0 { - // return errors.New(result.Msg) - //} else { - // return nil - //} - return nil -} - // 支付订单 商城 func API_CreateOrder(appId, orderId string, configid, SnId, shopId int32, platform string, packageTag string, os, deviceId, shopname string, amount [3]int32, consumptionamount int32, itemInfo []*webapi.ItemInfo, exchangeOrderId, channel string) *webapi.ASCreateOrder { @@ -300,214 +131,6 @@ func API_CreateOrder(appId, orderId string, configid, SnId, shopId int32, platfo return ret } -// 兑换订单 -func API_CreateExchangeOrder(snid int32, platform string, before_coin, before_safe, exchange_count, tag, bank_id int64, - account, username, ip string, win_times, lose_times, win_total, lose_total int64, os, appId, channel, agent string, - promoterTree int32, packageTag string, giveGold int64, forceTax int64, needFlow int64, curFlow int64, payts int64, - payEndTs int64, newUser int, telephonePromoter int32, deviceId string) (error, int64) { - //params := make(map[string]string) - //params["snid"] = strconv.Itoa(int(snid)) - //params["platform"] = platform - //params["before_coin"] = strconv.Itoa(int(before_coin)) - //params["before_safe"] = strconv.Itoa(int(before_safe)) - //params["exchange_count"] = strconv.Itoa(int(exchange_count)) - //params["tag"] = strconv.Itoa(int(tag)) - //params["bank_id"] = strconv.Itoa(int(bank_id)) - //params["account"] = account - //params["username"] = username - //params["ip"] = ip - //params["win_times"] = strconv.Itoa(int(win_times)) - //params["lose_times"] = strconv.Itoa(int(lose_times)) - //params["win_total"] = strconv.Itoa(int(win_total)) - //params["lose_total"] = strconv.Itoa(int(lose_total)) - //params["os"] = DeviceOs(os) - //params["channel"] = channel - //params["promoter"] = agent - //params["promoter_tree"] = strconv.Itoa(int(promoterTree)) - //params["packageTag"] = packageTag - //params["ts"] = strconv.Itoa(int(time.Now().Unix())) - //params["force_tax"] = strconv.Itoa(int(forceTax)) - //params["give_gold"] = strconv.Itoa(int(giveGold)) - //params["need_flow"] = strconv.Itoa(int(needFlow)) - //params["cur_flow"] = strconv.Itoa(int(curFlow)) - //params["new"] = strconv.Itoa(newUser) - //params["pay_ts"] = strconv.Itoa(int(payts)) - //params["pay_endts"] = strconv.Itoa(int(payEndTs)) - //params["telephone_promoter"] = strconv.Itoa(int(telephonePromoter)) - //params["deviceid"] = deviceId - //buff, err := getRequest(appId, "/create_exchange_order", params, "http", DEFAULT_TIMEOUT) - //if err != nil { - // return err, 0 - //} - //type ApiResult struct { - // Tag int32 - // Msg interface{} - //} - //result := ApiResult{} - //err = json.Unmarshal(buff, &result) - //if err != nil { - // return err, 0 - //} - //if result.Tag != 0 { - // errMsg := fmt.Sprintf("Create exchange order result failed._%v", result.Msg) - // return errors.New(errMsg), 0 - //} else { - // var id int64 - // switch result.Msg.(type) { - // case string: - // c, cr := strconv.Atoi(result.Msg.(string)) - // if cr == nil { - // id = int64(c) - // } - // case float64: - // id = int64(result.Msg.(float64)) - // } - // return nil, id - //} - return nil, 0 -} - -// 商品兑换订单 -func API_CreateGradeShopExchangeOrder(LogId, appId, platform string, snid, ShopId int32, Ip, ReceiveName, ReceiveTel, ReceiveAddr string, - LastGrade int64) error { - //params := make(map[string]string) - //params["Platform"] = platform //平台号 - //params["SnId"] = strconv.Itoa(int(snid)) //玩家Id - //params["LogId"] = LogId //订单id - //params["ShopId"] = strconv.Itoa(int(ShopId)) //商品Id - //params["Ip"] = Ip //IP地址 - //params["ReceiveName"] = ReceiveName //收货人名字 - //params["ReceiveTel"] = ReceiveTel //收货人电话 - //params["ReceiveAddr"] = ReceiveAddr //收货人地址 - //params["LastGrade"] = strconv.Itoa(int(LastGrade)) //玩家兑换完剩余积分 - //params["Ts"] = strconv.Itoa(int(time.Now().Unix())) //创建时间 - //buff, err := getRequest(appId, "/create_exchange_shop_order", params, "http", DEFAULT_TIMEOUT) - //if err != nil { - // return err - //} - //type ApiResult struct { - // Tag int32 - // Msg string - //} - //result := ApiResult{} - //err = json.Unmarshal(buff, &result) - //if err != nil { - // return err - //} - //if result.Tag != 0 { - // errMsg := fmt.Sprintf("Create GradeShop exchange order result failed._%v", result.Msg) - // return errors.New(errMsg) - //} else { - // return nil - //} - return nil -} - -// 税收分成 -func API_TaxDivide(snid int32, platform, channel, promoter, packageTag string, tax int64, appId string, gameid, gamemode int, gamefreeid, promoterTree int32) (int32, error) { - //params := make(map[string]string) - //params["snid"] = strconv.Itoa(int(snid)) - //params["platform"] = platform - //params["tax"] = fmt.Sprintf("%v", tax) - //params["channel"] = channel - //params["promoter"] = promoter - //params["promoter_tree"] = strconv.Itoa(int(promoterTree)) - //params["packageTag"] = packageTag - //params["gameId"] = strconv.Itoa(gameid) - //params["modeId"] = strconv.Itoa(gamemode) - //params["gamefreeId"] = strconv.Itoa(int(gamefreeid)) - //params["ts"] = strconv.Itoa(int(time.Now().Unix())) - //buff, err := getRequest(appId, "/tax_divide", params, "http", DEFAULT_TIMEOUT) - //if err != nil { - // return -1, err - //} - //type ApiResult struct { - // Tag int32 - // Msg interface{} - //} - //result := ApiResult{} - //err = json.Unmarshal(buff, &result) - //return result.Tag, err - return 0, nil -} - -// 流水推送 -func API_SpreadAccount(appId string, gamefreeId int32, data []*PlayerStatement) (int32, error) { - //d, err := json.Marshal(data) - //if err != nil { - // return -1, err - //} - //params := make(map[string]string) - //params["gamefreeId"] = strconv.Itoa(int(gamefreeId)) - //params["data"] = string(d[:]) - //params["ts"] = strconv.Itoa(int(time.Now().Unix())) - //buff, err := getRequest(appId, "/spread_account_push", params, "http", DEFAULT_TIMEOUT) - //if err != nil { - // return -1, err - //} - //type ApiResult struct { - // Tag int32 - // Msg interface{} - //} - //result := ApiResult{} - //err = json.Unmarshal(buff, &result) - //return result.Tag, err - return 0, nil -} - -// 系统赠送 -func API_SystemGive(snid int32, platform, channel, promoter string, ammount, tag int32, appId string, packageTag string) (int32, error) { - //params := make(map[string]string) - //params["snid"] = strconv.Itoa(int(snid)) - //params["platform"] = platform - //params["channel"] = channel - //params["promoter"] = promoter - //params["package_tag"] = packageTag - //params["amount"] = fmt.Sprintf("%v", ammount) - //params["tg"] = strconv.Itoa(int(tag)) - //params["ts"] = strconv.Itoa(int(time.Now().Unix())) - //buff, err := getRequest(appId, "/system_give", params, "http", DEFAULT_TIMEOUT) - //if err != nil { - // return -1, err - //} - //type ApiResult struct { - // Tag int32 - // Msg interface{} - //} - //result := ApiResult{} - //err = json.Unmarshal(buff, &result) - //return result.Tag, err - return 0, nil -} - -// 首次登录通知 -func API_PlayerEvent(event int, platform, packageTag string, snid int32, channel string, promoter string, promoterTree int32, isCreate int, isNew int, isBind int, appId string) (int32, error) { - //params := make(map[string]string) - //params["event"] = strconv.Itoa(event) - //params["snid"] = strconv.Itoa(int(snid)) - //params["platform"] = platform - //params["channel"] = channel - //params["promoter"] = promoter - //params["promoter_tree"] = strconv.Itoa(int(promoterTree)) - //params["packageTag"] = packageTag - //params["isCreate"] = strconv.Itoa(isCreate) - //params["isNew"] = strconv.Itoa(isNew) - //params["isBind"] = strconv.Itoa(isBind) - //params["create_time"] = strconv.Itoa(int(time.Now().Unix())) - //buff, err := getRequest(appId, "/player_event", params, "http", DEFAULT_TIMEOUT) - //if err != nil { - // return -1, err - //} - //type ApiResult struct { - // Tag int32 - // Msg interface{} - //} - //result := ApiResult{} - //err = json.Unmarshal(buff, &result) - //return result.Tag, err - return 0, nil -} - // 推送全民推广关系链 func API_PushSpreadLink(snid int32, platform, packageTag string, inviterId int, isBind, isForce int, appId string) (int32, error) { //params := make(map[string]string) @@ -532,84 +155,6 @@ func API_PushSpreadLink(snid int32, platform, packageTag string, inviterId int, return 0, nil } -// 推送全民推广关系链 -func API_PushInviterIp(snid, inviterId, promoterTree int32, promoter string, bundleId, ip string, os string, appId string) (int32, *PromoterData, error) { - //params := make(map[string]string) - //params["snid"] = strconv.Itoa(int(snid)) - //params["bundle_id"] = bundleId - //params["ip"] = ip - //params["os"] = DeviceOs(os) - //params["inviter"] = strconv.Itoa(int(inviterId)) - //params["promoter_tree"] = strconv.Itoa(int(promoterTree)) - //params["promoter"] = promoter - // - //params["ts"] = strconv.Itoa(int(time.Now().Unix())) - //buff, err := getRequest(appId, "/push_inviter_ip", params, "http", DEFAULT_TIMEOUT) - //if err != nil { - // return -1, nil, err - //} - //type ApiResult struct { - // Tag int32 - // Msg *PromoterData - //} - //result := ApiResult{} - //err = json.Unmarshal(buff, &result) - //if err != nil { - // type ErrResult struct { - // Tag int32 - // Msg string - // } - // errRes := ErrResult{} - // errTag := json.Unmarshal(buff, &errRes) - // if errTag == nil { - // logger.Logger.Warnf("API_PushInviterIp response tag:%v msg:%v err:%v snid:%v packagetag:%v ip:%v ", errRes.Tag, errRes.Msg, snid, bundleId, ip) - // } - //} - //return result.Tag, result.Msg, err - return 0, nil, nil -} - -// 推送全民推广关系链 -func API_PushInvitePromoter(snid int32, promoter string, appId string) (int32, error) { - //params := make(map[string]string) - //params["snid"] = strconv.Itoa(int(snid)) - //params["promoter"] = promoter - // - //buff, err := getRequest(appId, "/bind_pay_exchange", params, "http", DEFAULT_TIMEOUT) - //if err != nil { - // return -1, err - //} - //type ApiResult struct { - // Tag int32 - // Msg interface{} - //} - ////fmt.Println("push_spread_link Response:", string(buff[:])) - //result := ApiResult{} - //err = json.Unmarshal(buff, &result) - //return result.Tag, err - return 0, nil -} - -// 无限代信息校验 -func API_ValidPromoterTree(snid int32, packageTag string, promoterTree int32, appId string) (int32, error) { - //params := make(map[string]string) - //params["snid"] = strconv.Itoa(int(snid)) - //params["package_tag"] = packageTag - //params["promoter_tree"] = strconv.Itoa(int(promoterTree)) - //buff, err := getRequest(appId, "/valid_promoter_tree", params, "http", DEFAULT_TIMEOUT) - //if err != nil { - // return -1, err - //} - //type ApiResult struct { - // Tag int32 - // Msg interface{} - //} - //result := ApiResult{} - //err = json.Unmarshal(buff, &result) - //return result.Tag, err - return 0, nil -} - // 玩家透传API func API_PlayerPass(snid int32, platform, channel, promoter, apiName, param, appId string, logicLvls []int32) (string, error) { //params := make(map[string]string) @@ -662,66 +207,6 @@ func API_SystemPass(apiName, param, cBData, appId string) (string, error) { return ret.Response, err } -// 定时任务 -func API_ScheduleDo(appId, action string, dura time.Duration) ([]byte, error) { - //params := make(map[string]string) - //params["ts"] = strconv.Itoa(int(time.Now().Unix())) - //buff, err := getRequest(appId, action, params, "http", DEFAULT_TIMEOUT) - //if err != nil { - // return buff, err - //} - //return buff, nil - return nil, nil -} - -// 平台详细配置 -func API_GetPlatformSignConfig(appId string) ([]byte, error) { - //params := make(map[string]string) - //params["ts"] = strconv.Itoa(int(time.Now().Unix())) - //return getRequest(appId, "/active_sign_config", params, "http", time.Duration(time.Second*120)) - return nil, nil -} - -// 活跃任务 -func API_GetTaskConfig(appId string) ([]byte, error) { - //params := make(map[string]string) - //params["ts"] = strconv.Itoa(int(time.Now().Unix())) - //return getRequest(appId, "/active_task_config", params, "http", DEFAULT_TIMEOUT) - return nil, nil -} - -// 财神任务 -func API_GetGoldTaskConfig(appId string) ([]byte, error) { - //params := make(map[string]string) - //params["ts"] = strconv.Itoa(int(time.Now().Unix())) - //return getRequest(appId, "/active_goldtask_config", params, "http", DEFAULT_TIMEOUT) - return nil, nil -} - -// 财神降临 -func API_GetGoldComeConfig(appId string) ([]byte, error) { - //params := make(map[string]string) - //params["ts"] = strconv.Itoa(int(time.Now().Unix())) - //return getRequest(appId, "/active_goldcome_config", params, "http", DEFAULT_TIMEOUT) - return nil, nil -} - -// vip活动配置 -func API_GetActVipConfig(appId string) ([]byte, error) { - //params := make(map[string]string) - //params["ts"] = strconv.Itoa(int(time.Now().Unix())) - //return getRequest(appId, "/active_vip_config", params, "http", DEFAULT_TIMEOUT) - return nil, nil -} - -// 首充奖励活动配置 -func API_GetActFPayConfig(appId string) ([]byte, error) { - //params := make(map[string]string) - //params["ts"] = strconv.Itoa(int(time.Now().Unix())) - //return getRequest(appId, "/active_fpay_config", params, "http", DEFAULT_TIMEOUT) - return nil, nil -} - // 活动相关统一配置 func API_GetActConfig(appId string) ([]byte, error) { //params := make(map[string]string) @@ -730,325 +215,7 @@ func API_GetActConfig(appId string) ([]byte, error) { return nil, nil } -// 支付活动配置 -func API_GetPayActConfig(appId string) ([]byte, error) { - //params := make(map[string]string) - //params["ts"] = strconv.Itoa(int(time.Now().Unix())) - //return getRequest(appId, "/active_payact_config", params, "http", DEFAULT_TIMEOUT) - return nil, nil -} - -// 获取在线奖励活动配置 -func API_GetOnlineRewardConfig(appId string) ([]byte, error) { - //params := make(map[string]string) - ////params["ts"] = strconv.Itoa(int(time.Now().Unix())) - ////params["platform"] = platform - //return getRequest(appId, "/online_reward_config", params, "http", DEFAULT_TIMEOUT) - return nil, nil -} - -// 获取幸运转盘活动配置 -func API_GetLuckyTurntableConfig(appId string) ([]byte, error) { - //params := make(map[string]string) - ////params["ts"] = strconv.Itoa(int(time.Now().Unix())) - ////params["platform"] = platform - //return getRequest(appId, "/luckly_turntable_config", params, "http", DEFAULT_TIMEOUT) - return nil, nil -} - -// 获取微信分享彩金配置 -func API_GetWeiXinShareConfig(appId string) ([]byte, error) { - //params := make(map[string]string) - //return getRequest(appId, "/weixin_share_config", params, "http", DEFAULT_TIMEOUT) - return nil, nil -} - -// 获取余额宝配置 -func API_GetYebConfig(appId string) ([]byte, error) { - //params := make(map[string]string) - ////params["ts"] = strconv.Itoa(int(time.Now().Unix())) - ////params["platform"] = platform - //return getRequest(appId, "/yeb_config", params, "http", DEFAULT_TIMEOUT) - return nil, nil -} - -// 获取周卡月卡配置 -func API_GetCardConfig(appId string) ([]byte, error) { - //params := make(map[string]string) - //return getRequest(appId, "/card_config", params, "http", DEFAULT_TIMEOUT) - return nil, nil -} - -// 获取阶梯充值配置 -func API_GetStepRechargeConfig(appId string) ([]byte, error) { - //params := make(map[string]string) - //return getRequest(appId, "/step_recharge_config", params, "http", DEFAULT_TIMEOUT) - return nil, nil -} - -// 获取自动黑白名单配置 -func API_GetAutoBWConfig(appId string, page int) ([]byte, error) { - //params := make(map[string]string) - //params["ts"] = strconv.Itoa(int(time.Now().Unix())) - //params["page"] = strconv.Itoa(page) - //return getRequest(appId, "/autobw_config", params, "http", DEFAULT_TIMEOUT) - return nil, nil -} - -// 获取包对应的平台和上级关系 -func API_GetImgVerify(appId string, phone string) (*ImgVerifyMsg, error) { - //params := make(map[string]string) - //params["phone"] = phone - //buff, err := getRequest(appId, "/get_img_verify", params, "http", DEFAULT_TIMEOUT) - //if err != nil { - // return nil, err - //} - // - //type ApiResult struct { - // Tag int32 `json:"Tag"` - // Msg ImgVerifyMsg `json:"Msg"` - //} - //result := ApiResult{} - //err = json.Unmarshal(buff, &result) - //if err != nil { - // return nil, err - //} - //if result.Tag != 0 { - // return nil, errors.New("Get Image Verify Failed.") - //} else { - // return &result.Msg, nil - //} - return nil, nil -} - -type RebateImgUrlMsg struct { - Wx string `json:"wx"` - Image string `json:"image"` -} - -// 获取包对应的平台和上级关系 -func API_GetRebateImgUrl(appId string, platform string) (string, string, error) { - //params := make(map[string]string) - //params["platform"] = platform - //buff, err := getRequest(appId, "/get_weixin_by_range", params, "http", DEFAULT_TIMEOUT) - //if err != nil { - // return "", "", err - //} - // - //type ApiResult struct { - // Tag int32 `json:"Tag"` - // Msg RebateImgUrlMsg `json:"Msg"` - //} - //result := ApiResult{} - //err = json.Unmarshal(buff, &result) - //if err != nil { - // return "", "", err - //} - //if result.Tag != 0 { - // return "", "", errors.New("Get Image Url Failed.") - //} else { - // return result.Msg.Image, result.Msg.Wx, nil - //} - return "", "", nil -} - -////////////////////////////////////////////////////////////////////////////////////////////////// -//请求参数如下: -//int32 snid 玩家id -//==================================================================== -//int64 showTypeId = 2 棋牌游戏 -// showTypeId = 3 捕鱼游戏(废弃,不在使用) -// showTypeId = 4 电子游艺 -// showTypeId = 5 真人视讯 -// showTypeId = 6 彩票游戏 -// showTypeId = 380720001 WWG 大师捕鱼 在三方中的游戏id=3 -// showTypeId = 391590001 FG 捕鱼嘉年华3D 在三方中的游戏id=fish_3D -// showTypeId = 391600001 FG 捕鸟达人 在三方中的游戏id=fish_bn -// showTypeId = 391610001 FG 欢乐捕鱼 在三方中的游戏id=fish_hl -// showTypeId = 391620001 FG 美人捕鱼 在三方中的游戏id=fish_mm -// showTypeId = 391630001 FG 天天捕鱼 在三方中的游戏id=fish_tt -// showTypeId = 391640001 FG 雷霆战警 在三方中的游戏id=fish_zj -// showTypeId = 391650001 FG 魔法王者 在三方中的游戏id=fish_mfwz -//====================================================================== -//int64 timeIndex 0.全部 1.今天 2.昨天 3.一个月内 -//int64 thirdId 那个第三方 0=全部 WWG平台=38 FG平台=39 体育赛事=41 VR彩票=43 真人视讯=28 -//int32 pageNo 当前页 -//int32 pageCount 共几页 - -// API返回的每条格式如下: -// int64 Ts //注单时间戳 -// string ThirdPltName //三方平台名字 -// string ThirdGameId //三方游戏id -// string ThirdGameName //三方游戏名字 -// string SysGamefreeid //我们系统的游戏id,这个不返回占位 -// string RecordId //注单号 -// int64 BetCoin //投注金额 -// int64 ReceivedCoin //已派奖 -func API_GetThirdDetail(appId, pltform string, snid, pageNo, pageCount, showTypeId, timeIndex, thirdId int32) (error, []byte) { - return nil, nil - //params := make(map[string]string) - //params["snid"] = strconv.Itoa(int(snid)) - //params["pageNo"] = strconv.Itoa(int(pageNo)) - //params["pageCount"] = strconv.Itoa(int(pageCount)) - //params["showTypeId"] = strconv.Itoa(int(showTypeId)) - //params["timeIndex"] = strconv.Itoa(int(timeIndex)) - //params["thirdId"] = strconv.Itoa(int(thirdId)) - //params["platform"] = pltform - //buff, err := getRequest(appId, "/third_detail", params, "http", DEFAULT_TIMEOUT) - //if err != nil { - // return err, buff - //} - //return nil, buff - - //下面是以post方式请求,备用 - //var client = &http.Client{} - //var signupDataBuff []byte - //var err error - //ts := time.Now().Unix() - //if params != nil { - // signupDataBuff, err = json.Marshal(params) - // if err != nil { - // return err, nil - // } - //} - // - ////fmt.Println(string(signupDataBuff)) - //sign := MakeMd5String(fmt.Sprintf("%v;%v;%v", ts, string(signupDataBuff), appId)) - //url := fmt.Sprintf("%v?ts=%v&sign=%v", Config.GameApiURL+"/third_detail", ts, sign) - //logger.Trace("API_GetThirdDetail request url:", url) - //request, err := http.NewRequest("POST", url, bytes.NewReader(signupDataBuff)) - //if err != nil { - // return err, nil - //} - //client.Timeout = DEFAULT_TIMEOUT - //resp, err := client.Do(request) - //if err != nil { - // logger.Errorf("Snid=%v API_GetThirdDetail api :%v", snid, err) - // return err, nil - //} - //defer resp.Body.Close() - // - //if resp.StatusCode == 200 { - // buff, err := io.ReadAll(resp.Body) - // if err != nil { - // return err, nil - // } - // return nil, buff - //} - //io.Copy(ioutil.Discard, resp.Body) - //return fmt.Errorf("API_GetThirdDetail HttpStatusCode:%d", resp.StatusCode), nil -} - -////////////////////////////////////////////////////////////////////////////////////////////////// - -////////////////////////////////////////////////////////////////////////////////////////////////// -//请求参数如下: -//int32 snid 玩家id -//==================================================================== -//string hotGameNameSet = "狂欢派对","复仇者联盟","百人牛牛" -//在mysql 中使用in来查询 -//====================================================================== -//int64 timeIndex 0.全部 1.今天 2.昨天 3.一个月内 -//int64 thirdId 那个第三方 WWG平台=38 FG平台=39 体育赛事=41 VR彩票=43 真人视讯=28 -//int32 pageNo 当前页 -//int32 pageCount 共几页 - -// API返回的每条格式如下: -// int64 Ts //注单时间戳 -// string ThirdPltName //三方平台名字 -// string ThirdGameId //三方游戏id -// string ThirdGameName //三方游戏名字 -// string SysGamefreeid //我们系统的游戏id,这个不返回占位 -// string RecordId //注单号 -// int64 BetCoin //投注金额 -// int64 ReceivedCoin //已派奖 -func API_GetThirdHotGameDetail(appId, pltform string, snid, pageNo, pageCount, timeIndex, thirdId int32, hotGameNameSet []string) (error, []byte) { - //params := make(map[string]string) - //params["snid"] = strconv.Itoa(int(snid)) - //params["pageNo"] = strconv.Itoa(int(pageNo)) - //params["pageCount"] = strconv.Itoa(int(pageCount)) - //params["hotGameNameSet"] = strings.Join(hotGameNameSet, ",") - //params["timeIndex"] = strconv.Itoa(int(timeIndex)) - //params["thirdId"] = strconv.Itoa(int(thirdId)) - //params["platform"] = pltform - //buff, err := getRequest(appId, "/hot_third_game", params, "http", DEFAULT_TIMEOUT) - //if err != nil { - // return err, buff - //} - //return nil, buff - return nil, nil -} - -// //////////////////////////////////////////////////////////////////////////////////////////////// -func API_GetRandCoinData(appId string) ([]byte, error) { - //params := make(map[string]string) - //params["ts"] = strconv.Itoa(int(time.Now().Unix())) - //return getRequest(appId, "/activity_read_envelope_config", params, "http", time.Duration(time.Second*120)) - return nil, nil -} - -// //////////////////////////////////////////////////////////////////////////////////////////////// -func API_GetChildData(appId string, platform string, snid int32, ts1, ts2 int64) ([]byte, error) { - //params := make(map[string]string) - //params["platform"] = platform - //params["snid"] = strconv.Itoa(int(snid)) - //params["start_time"] = strconv.Itoa(int(ts1)) - //params["end_time"] = strconv.Itoa(int(ts2)) - //return getRequest(appId, "/spread_child_list", params, "http", DEFAULT_TIMEOUT) - return nil, nil -} - -func API_PushPlayerSingleAdjustCount(appId string, id int32, count int32) ([]byte, error) { - //params := make(map[string]string) - //params["id"] = strconv.Itoa(int(id)) - //params["times"] = strconv.Itoa(int(count)) - //return getRequest(appId, "/game_ctrl_alone_times_push", params, "http", DEFAULT_TIMEOUT) - return nil, nil -} -func API_PlayerSingleAdjustData(appId string, page int32, pagecount int32) ([]byte, error) { - //params := make(map[string]string) - //params["page"] = strconv.Itoa(int(page)) - //params["limit"] = strconv.Itoa(int(pagecount)) - //return getRequest(appId, "/game_ctrl_alone_config", params, "http", DEFAULT_TIMEOUT) - return nil, nil -} - -// 平台杀率配置 -func API_GetPlatformProfitControlConfigData(appId string) ([]byte, error) { - //params := make(map[string]string) - //params["ts"] = strconv.Itoa(int(time.Now().Unix())) - //return getRequest(appId, "/profitcontrol_config_list", params, "http", time.Duration(time.Second*120)) - return nil, nil -} - -// 比赛配置 -func API_GetMatchConfigData(appId string) ([]byte, error) { - //params := make(map[string]string) - //params["ts"] = strconv.Itoa(int(time.Now().Unix())) - //return getRequest(appId, "/match_list", params, "http", time.Duration(time.Second*120)) - return nil, nil -} - -// 比赛报名券活动配置 -func API_GetActTicketConfigData(appId string) ([]byte, error) { - //params := make(map[string]string) - //params["ts"] = strconv.Itoa(int(time.Now().Unix())) - //return getRequest(appId, "/activity_ticket_config", params, "http", time.Duration(time.Second*120)) - return nil, nil -} - -// 比赛积分商城配置 -func API_GetGradeShopConfigData(appId string) ([]byte, error) { - //params := make(map[string]string) - //params["ts"] = strconv.Itoa(int(time.Now().Unix())) - //return getRequest(appId, "/query_exchange_shop", params, "http", time.Duration(time.Second*120)) - return nil, nil -} - -// 用户分层配置 -func API_GetLogicLevelConfigData(appId string) ([]byte, error) { - //params := make(map[string]string) - //params["ts"] = strconv.Itoa(int(time.Now().Unix())) - //return getRequest(appId, "/logic_level_config", params, "http", time.Duration(time.Second*120)) - return nil, nil +// ApiGetInviteLink 获取邀请分享链接 +func ApiGetInviteLink(appId string, body proto.Message) ([]byte, error) { + return postRequest(appId, "/get_invite_link", nil, body, "http", DEFAULT_TIMEOUT) } diff --git a/worldsrv/action_game.go b/worldsrv/action_game.go index 5dcca10..7ac3e77 100644 --- a/worldsrv/action_game.go +++ b/worldsrv/action_game.go @@ -2164,18 +2164,19 @@ func (this *CSRecordAndNoticeHandler) Process(s *netlib.Session, packetid int, d if list != nil { for _, v := range list.List { pack.List = append(pack.List, &gamehall.CommonNotice{ - Sort: v.Sort, // 排序 第几位 - Title: v.Title, // 标题 - Content: v.Content, // 内容 - TypeName: v.TypeName, // 大标题 - Type: v.Type, // 大标题类型 - StartTime: int32(v.StartTime), // 开始显示时间 - EndTime: int32(v.EndTime), // 结束显示时间 - CategoryType: v.CategoryType, - ImgUrl: v.ImgUrl, - NoticeId: v.NoticeId, - IsLoop: v.IsLoop, - LoopTime: v.LoopTime, + Sort: v.Sort, // 排序 第几位 + Title: v.Title, // 标题 + Content: v.Content, // 内容 + TypeName: v.TypeName, // 大标题 + Type: v.Type, // 大标题类型 + StartTime: int32(v.StartTime), // 开始显示时间 + EndTime: int32(v.EndTime), // 结束显示时间 + CategoryType: v.CategoryType, + ImgUrl: v.ImgUrl, + NoticeId: v.NoticeId, + IsLoop: v.IsLoop, + LoopTime: v.LoopTime, + OnChannelName: v.OnChannelName, }) } } diff --git a/worldsrv/action_player.go b/worldsrv/action_player.go index c5258b5..4145bef 100644 --- a/worldsrv/action_player.go +++ b/worldsrv/action_player.go @@ -1445,314 +1445,6 @@ func (this *CSPlayerRegisterHandler) Process(s *netlib.Session, packetid int, da return nil } -type CSWebAPIPlayerPassPacketFactory struct { -} - -type CSWebAPIPlayerPassHandler struct { -} - -func (this *CSWebAPIPlayerPassPacketFactory) CreatePacket() interface{} { - pack := &player_proto.CSWebAPIPlayerPass{} - return pack -} - -func (this *CSWebAPIPlayerPassHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { - logger.Logger.Trace("CSWebAPIPlayerPassHandler Process recv ", data) - if msg, ok := data.(*player_proto.CSWebAPIPlayerPass); ok { - p := PlayerMgrSington.GetPlayer(sid) - if p == nil { - logger.Logger.Warn("CSWebAPIPlayerPassHandler p == nil") - return nil - } - opCode := player_proto.OpResultCode_OPRC_Sucess - errString := "" - var err error - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - errString, err = webapi.API_PlayerPass(p.SnId, p.Platform, p.Channel, p.BeUnderAgentCode, msg.GetApiName(), msg.GetParams(), common.GetAppId(), p.LogicLevels) - if err != nil { - logger.Logger.Errorf("API_PlayerPass error:%v api:%v params:%v", err, msg.GetApiName(), msg.GetParams()) - opCode = player_proto.OpResultCode_OPRC_Error - return nil - } - return err - }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { - pack := &player_proto.SCWebAPIPlayerPass{ - OpRetCode: opCode, - ApiName: msg.ApiName, - CBData: msg.CBData, - Response: proto.String(errString), - } - p.SendToClient(int(player_proto.PlayerPacketID_PACKET_SC_WEBAPI_PLAYERPASS), pack) - logger.Logger.Trace("CSWebAPIPlayerPass:", pack) - }), "API_PlayerPass").Start() - } - return nil -} - -type CSWebAPISystemPassPacketFactory struct { -} - -type CSWebAPISystemPassHandler struct { -} - -func (this *CSWebAPISystemPassPacketFactory) CreatePacket() interface{} { - pack := &player_proto.CSWebAPISystemPass{} - return pack -} - -func (this *CSWebAPISystemPassHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { - logger.Logger.Trace("CSWebAPISystemPassHandler Process recv ", data) - if msg, ok := data.(*player_proto.CSWebAPISystemPass); ok { - opCode := player_proto.OpResultCode_OPRC_Sucess - errString := "" - var err error - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - errString, err = webapi.API_SystemPass(msg.GetApiName(), msg.GetParams(), msg.GetCBData(), common.GetAppId()) - if err != nil { - logger.Logger.Errorf("API_SystemPass error:%v apiname=%v params=%v", err, msg.GetApiName(), msg.GetParams()) - opCode = player_proto.OpResultCode_OPRC_Error - return nil - } - return err - }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { - pack := &player_proto.SCWebAPISystemPass{ - OpRetCode: opCode, - ApiName: msg.ApiName, - CBData: msg.CBData, - Response: proto.String(errString), - } - common.SendToGate(sid, int(player_proto.PlayerPacketID_PACKET_SC_WEBAPI_SYSTEMPASS), pack, s) - logger.Logger.Trace("CSWebAPISystemPass:", pack) - }), "API_SystemPass").Start() - } - return nil -} - -type CSSpreadBindPacketFactory struct { -} - -type CSSpreadBindHandler struct { -} - -func (this *CSSpreadBindPacketFactory) CreatePacket() interface{} { - pack := &player_proto.CSSpreadBind{} - return pack -} - -func (this *CSSpreadBindHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { - logger.Logger.Trace("CSSpreadBindHandler Process recv ", data) - if msg, ok := data.(*player_proto.CSSpreadBind); ok { - p := PlayerMgrSington.GetPlayer(sid) - if p == nil { - logger.Logger.Warn("CSSpreadBindHandler p == nil") - return nil - } - - sendPack := func(opCode player_proto.OpResultCode, parentId int32) { - pack := &player_proto.SCSpreadBind{ - OpRetCode: opCode, - ParentId: msg.ParentId, - } - p.SendToClient(int(player_proto.PlayerPacketID_PACKET_SC_SPREADBIND), pack) - return - } - - parentId := msg.GetParentId() - parent := PlayerMgrSington.GetPlayerBySnId(parentId) - if parent != nil { - if parent.Platform != p.Platform { - sendPack(player_proto.OpResultCode_OPRC_InviterIdNotExist, 0) - return nil - } - if parent.Tel == "" { - sendPack(player_proto.OpResultCode_OPRC_InviterNoBind, 0) - return nil - } - } - - if model.GameParamData.InvitePromoterBind && p.BeUnderAgentCode != "" && p.BeUnderAgentCode != "0" { - sendPack(player_proto.OpResultCode_OPRC_HadSpreadInviterId, 0) - return nil - } - - if p.InviterId != 0 { - sendPack(player_proto.OpResultCode_OPRC_HadSpreadInviterId, 0) - return nil - } - var promoterCfg *PromoterConfig - upPromoterID := "" - opCode := player_proto.OpResultCode_OPRC_Sucess - tag := int32(0) - pAgentCode := "" - PlayerCacheMgrSingleton.Get(p.Platform, parentId, func(ppd *PlayerCacheItem, asyn, isnew bool) { - if ppd == nil || ppd.Platform != p.Platform { - opCode = player_proto.OpResultCode_OPRC_InviterIdNotExist - sendPack(opCode, parentId) - return - } - - if ppd.Tel == "" { - opCode = player_proto.OpResultCode_OPRC_InviterNoBind - sendPack(opCode, parentId) - return - } - - pAgentCode = ppd.BeUnderAgentCode - key, err := GetPromoterKey(0, pAgentCode, "") - if err == nil { - upPromoterID = pAgentCode - promoterCfg = PromoterMgrSington.GetConfig(key) - } - - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - tag, err = webapi.API_PushSpreadLink(p.SnId, p.Platform, p.PackageID, int(parentId), 1, 1, common.GetAppId()) - if (err != nil || tag != 0) && !common.Config.IsDevMode { - logger.Logger.Errorf("API_PushSpreadLink error: %v tag: %v", err, tag) - if tag == 101 { //闭环 - opCode = player_proto.OpResultCode_OPRC_SpreadBindClosedLoop - } else { - opCode = player_proto.OpResultCode_OPRC_SpreadBindFailed - } - return nil - } else { - p.InviterId = parentId - p.dirty = true - if promoterCfg != nil { - if promoterCfg.IsInviteRoot > 0 { - p.BeUnderAgentCode = upPromoterID - } - } - - err = model.UpdatePlayerPackageIdByStr(p.SnId, p.PackageID, p.Platform, p.Channel, p.BeUnderAgentCode, p.InviterId, p.PromoterTree) - } - return err - }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { - if opCode == player_proto.OpResultCode_OPRC_Sucess { - //actRandCoinMgr.OnPlayerInvite(p.Platform, parentId) - //actRandCoinMgr.tempBind[p.SnId] = time.Now().Unix() - - } - sendPack(opCode, parentId) - }), "API_PushSpreadLink").Start() - - }, false) - } - return nil -} - -//type CSBindPromoterPacketFactory struct { -//} -// -//type CSBindPromoterHandler struct { -//} -// -//func (this *CSBindPromoterPacketFactory) CreatePacket() interface{} { -// pack := &player_proto.CSBindPromoter{} -// return pack -//} -// -//func (this *CSBindPromoterHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { -// logger.Logger.Trace("CSBindPromoterHandler Process recv ", data) -// if msg, ok := data.(*player_proto.CSBindPromoter); ok { -// p := PlayerMgrSington.GetPlayer(sid) -// if p == nil { -// logger.Logger.Warn("CSBindPromoterHandler p == nil") -// return nil -// } -// -// sendPack := func(opCode player_proto.OpResultCode, parentId int32) { -// pack := &player_proto.SCBindPromoter{ -// OpRetCode: opCode, -// Promoter: msg.Promoter, -// } -// p.SendToClient(int(player_proto.PlayerPacketID_PACKET_SC_BINDPROMOTER), pack) -// return -// } -// -// promoter := msg.GetPromoter() -// -// info, ok := PlatformMgrSingleton.PromoterList[promoter] -// if !ok { -// sendPack(player_proto.OpResultCode_OPRC_NoPromotor, 0) -// return nil -// } -// -// plt := PlatformMgrSingleton.GetPlatform(p.Platform) -// if plt == nil { -// sendPack(player_proto.OpResultCode_OPRC_NoPlatform, 0) -// return nil -// } -// -// if !plt.IsCanUserBindPromoter { -// sendPack(player_proto.OpResultCode_OPRC_CantUserBind, 0) -// return nil -// } -// -// if p.BeUnderAgentCode != "" && p.BeUnderAgentCode != "0" { -// sendPack(player_proto.OpResultCode_OPRC_PromoterHasBind, 0) -// return nil -// } -// -// if promoter == "" || promoter == "0" { -// sendPack(player_proto.OpResultCode_OPRC_CantUserBind, 0) -// return nil -// } -// -// if info.Platform != p.Platform { -// sendPack(player_proto.OpResultCode_OPRC_PlatformNoPromoter, 0) -// return nil -// } -// if plt.UserBindPromoterPrize > 0 && !p.layered[common.ActId_PromoterBind] { -// p.AddCoin(int64(plt.UserBindPromoterPrize), common.GainWay_PromoterBind, "system", promoter) -// p.ReportSystemGiveEvent(plt.UserBindPromoterPrize, common.GainWay_PromoterBind, true) -// } -// -// p.BeUnderAgentCode = promoter -// p.PackageID = info.Tag -// p.dirty = true -// sendPack(player_proto.OpResultCode_OPRC_Sucess, 0) -// -// p.SendPlatformCanUsePromoterBind() -// task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { -// _, _ = webapi.API_PushInvitePromoter(p.SnId, promoter, common.GetAppId()) -// return nil -// }), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) { -// -// }), "API_PushInviteLinkPromoter").Start() -// -// } -// return nil -//} - -type CSGenCustomerTokenPacketFactory struct { -} - -type CSGenCustomerTokenHandler struct { -} - -func (this *CSGenCustomerTokenPacketFactory) CreatePacket() interface{} { - pack := &player_proto.CSGenCustomerToken{} - return pack -} - -func (this *CSGenCustomerTokenHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error { - logger.Logger.Trace("CSGenCustomerTokenHandler Process recv ", data) - if _, ok := data.(*player_proto.CSGenCustomerToken); ok { - p := PlayerMgrSington.GetPlayer(sid) - if p == nil { - logger.Logger.Warn("CSGenCustomerTokenHandler p == nil") - return nil - } - - token := p.GenCustomerToken() - PlayerMgrSington.UpdatePlayerToken(p, token) - pack := &player_proto.SCGenCustomerToken{Token: proto.String(token)} - proto.SetDefaults(pack) - p.SendToClient(int(player_proto.PlayerPacketID_PACKET_SC_GENCUSTOMTOKEN), pack) - } - return nil -} - type CSCustomerNewMsgAckPacketFactory struct { } @@ -2127,9 +1819,6 @@ func init() { //获取邀请码 common.RegisterHandler(int(player_proto.PlayerPacketID_PACKET_CS_INVITECODE), &CSInviteCodePlayerHandler{}) netlib.RegisterFactory(int(player_proto.PlayerPacketID_PACKET_CS_INVITECODE), &CSInviteCodePlayerPacketFactory{}) - //生成客服会话token - common.RegisterHandler(int(player_proto.PlayerPacketID_PACKET_CS_GENCUSTOMTOKEN), &CSGenCustomerTokenHandler{}) - netlib.RegisterFactory(int(player_proto.PlayerPacketID_PACKET_CS_GENCUSTOMTOKEN), &CSGenCustomerTokenPacketFactory{}) //客服离线消息接收ack common.RegisterHandler(int(player_proto.PlayerPacketID_PACKET_CS_CUSTOMNEWMSGACK), &CSCustomerNewMsgAckHandler{}) netlib.RegisterFactory(int(player_proto.PlayerPacketID_PACKET_CS_CUSTOMNEWMSGACK), &CSCustomerNewMsgAckPacketFactory{}) diff --git a/worldsrv/action_welfare.go b/worldsrv/action_welfare.go index 7f305b6..89b2c88 100644 --- a/worldsrv/action_welfare.go +++ b/worldsrv/action_welfare.go @@ -1,9 +1,6 @@ package main import ( - "encoding/base64" - "fmt" - "mongo.games.com/goserver/core/basic" "mongo.games.com/goserver/core/logger" "mongo.games.com/goserver/core/netlib" @@ -11,8 +8,11 @@ import ( "mongo.games.com/game/common" "mongo.games.com/game/model" + "mongo.games.com/game/proto" + webapi_proto "mongo.games.com/game/protocol/webapi" "mongo.games.com/game/protocol/welfare" "mongo.games.com/game/srvdata" + "mongo.games.com/game/webapi" ) // 救济金 @@ -303,18 +303,39 @@ func CSInviteInfo(s *netlib.Session, packetid int, data interface{}, sid int64) return nil } - ul := fmt.Sprintf("%s?user=%s", model.GameParamData.InviteUrl, base64.StdEncoding.EncodeToString([]byte(fmt.Sprintf("%s|%d", p.Platform, p.SnId)))) + var res []byte + var err error + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + req := &webapi_proto.ASPlayerInviteLink{ + Platform: p.Platform, + SnId: p.SnId, + } + res, err = webapi.ApiGetInviteLink(common.GetAppId(), req) + return nil + }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { + if err != nil || res == nil { + logger.Logger.Errorf("ApiGetInviteLink err %v or not return", err) + return + } - ret := &welfare.SCInviteInfo{ - Num: p.InviteNum, - Code: p.InviteCode, - InviteUrl: ul, - Score: p.InviteScore, - OtherCode: p.OtherCode, - } + var info webapi_proto.SAPlayerInviteLink + proto.Unmarshal(res, &info) - p.SendToClient(int(welfare.SPacketID_PACKET_SCInviteInfo), ret) - logger.Logger.Tracef("SCInviteInfo %v", ret) + if info.Tag == webapi_proto.TagCode_SUCCESS { + ret := &welfare.SCInviteInfo{ + Num: p.InviteNum, + Code: p.InviteCode, + InviteUrl: info.Link, + Score: p.InviteScore, + OtherCode: p.OtherCode, + } + + p.SendToClient(int(welfare.SPacketID_PACKET_SCInviteInfo), ret) + logger.Logger.Tracef("SCInviteInfo %v", ret) + } else { + logger.Logger.Errorf("ApiGetInviteLink:%v", info.String()) + } + })).Start() return nil } diff --git a/worldsrv/welfmgr.go b/worldsrv/welfmgr.go index ccfad96..34add70 100644 --- a/worldsrv/welfmgr.go +++ b/worldsrv/welfmgr.go @@ -1137,7 +1137,6 @@ func (this *WelfareMgr) FirstPayInfo(p *Player) { break } } - } } logger.Logger.Tracef("FirstPayInfo snid: %v pack: %v", p.SnId, pack) diff --git a/xlsx/DB_Createroom.xlsx b/xlsx/DB_Createroom.xlsx index 64f1ec559e660a93a6334d7b3015822e4db9d303..16f0b9cd51a2bb5e682ad75343121f16db320a78 100644 GIT binary patch delta 15667 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 uzfr=?w20t1M#Oagc{Uw|3VCht!`r647Y zNC*hu8GY{ieb)Patc8oU+_SH}|NA=U_dkb=sv^k5OGxbt2rwJH`$->ygJXk>gF}IX zgJbJqgYx$9d>~}w;cX`v;N}|gbV;KdN!_;xUCRH`ragD+@T?Ip&FltwCGY3RFRs^I zo<3D+xf!Xuma{zcEhxRwWEa&c`>X9>?Tl2tgi$Y0C{Mf0HmWO(m5furHFXHSNGA$} z%i5HEX}Civ(f~jo75~EMz2A!9BWb!nmFGs>_kh!h($K-t&Mn8%bq0nnj(%{PM=+K4 z<6Au;FYVb(LCCF$Y%9n!Z)ZMtbm&d;3DUvYu*zKDDTq`z3XS7LLi&jOGT^$S)rIM| z)F=9>ekLtCEzLF(4)3IzC5xF7v?uYk7kWK^DW6NVzu5-LPhYxv^x}Nwb0D5nsQM6y z=;dP>+1=%L-dV^A)WdCGSkK+7vAF8dmVcl4ts&oqn^#Y@LNfIGo7?IZmNl|H_ojQ{ zUnyeQb4^cH0u{R=v?!Hc%;6KBx%FHq?s%W;%3=n~9?_E0^{Z1S#RMsQ{wjA)`%4m~ ziHA=Os!asLiPl+FcrB>z%bmi5#|CJEQb+AUFO>&EGHYI&+?uazycRN|bcLw0!dL%T zZHW3sQDnu=5qBWd2sxl6_TL)+AeKiPzNuDUF`=imqkl?Xr)|or z;h1F2GDcxc-sNp*fO&X8+UZFuO5{@&eAr^WVSKA;Cz@`%FX15WX|qv(e0iqZK=6nW z^+fgqwe_zFDfoZ`Rj}_#2}wKG+=Beglcyt`rgFX^^(kv)H`J7(c(0t_!ei+Dd5)G1mQm#C6vQW+asG2bkUAcFy!DmBRl4DopnA;cR+e6R&&ga{XEOs@X+l)Oa7fFl)JQ}qbsx&{02CAC?azHb<@FH_Tp&1J9=$*En2>fsl6?M zQ@4NYSg7i9Lzisnh4{R@+=W3~vhMNHJn+U@etdN|#;EP9?BVg(mF~&4gEbGK8hP2! zK+*d{4uJ>jeK{M?$@nPHhhHx?_kiHD=g&?|WZtyj3=R$WcKv3zqhU&+QAj=ck$g;l=OGk(&14U`Oh&RluRo`R?vu`*i@g zu_LIXd%wu#V!9i1CVGB(Pv{sp+r}JVx`!|}i~>A0w&dr#7|b5~`PlAD{lU-Brw13^ zL*2Rk{{3UQOE1o!FM5Ag`*6AGdkQqLdsM@_SO#Wdrze*gII!FK;d=OG?e%zAsdr)gyASWowj(v(%$ZTFF430w|#LaxZ(V3d14>g zkJa|U3J=}6teL*S2SJBp7P>&-K}nG@%~_>U>#CXIPV1_~wb9m9!E2-MRznO;1A5u6 z32I}C^^nxNKE$xV!(Da8r%|iGd(yqyBV(^!n!Q)6eb?OUt%-Z~VmMg=T~72b^lfgR z=)xS4PPUr1n>Y4s*i)BmT>Tl4?+zv=Js&nPyvTmOZ@yHf(ziCdx#?7T$+D)&M8FVn zuD_~dy1p2!K2Y&+6|(iY_d~4B&w|&?pC6Ja+hBU`-pOf>C;U!GqI9v^1K7P9;t{Ob ziXF=riIVI4A(J%mGABUxL87t)W*CgT(O1*e`6qOEzCnA`)O<>m?9DM^$RTMWvUP(Y zdQ=H5lV;$Mgs~%j-lbTG%9A?un`A2iGnS3v^=Bp31#ih^F8N^7eFW1<_dP#Arm={@ zpzHL_SIjCO0xWw!%3qwe>L=*;8_D_7aqYeB%dZdE;xE%-UK{dt+{@GBMPjuDz`G`X=z=twyd4AGKtW5ts-E^ty1m@BO=U5+1ebPFMDWT9*7iS+WgcIt(fTeZOLq zHK9I4-qA*`<5A6w)PGvH4GWKt_wo3M#8#OBR%zo)z;+3CPEUwvvtLtyj$2sgWj=+# z1l_wZgxeI()NsEAuA}FNIp$s2E&db39g#JIfD{t)lWufnRE!3Xr&%`sSPh&`9Hc2$ z#>YwXXRM$GsEnj76F3(OYj7^vj_UXyzS;%klF~+jt$3OIx<8Xo9Dgt(r_%lM$7rO- zjMVtfpLM;N@|L%JURdNdk$uAdn9d-{^S#H7g21uM&nkQOO!48%$6jHC$I*bY)rYp% z_~Vx0VaDGS6gsB@TW`E#puw**!N+}DYbF*aL#M4vVAd?pqd_j#NsB*~$^n7y8tdf+ z)Jo*tR#k-4<%h`$gi0(O%iFoaq5id6#IfQ0d7Yk={?$axuuK)?^^NHR`1BQ}HI%LM zIh5^LJW7G5@e0Xzf5FWD@GHPj(PQ3HTn4!6cT)-t#S|adG+pO=CIJX_8E?!cJN0<{ z?s{Ff;CE9o{f^q7xqM)#7PW!CIR)>`uHPm>z89~E`mZ|Hwm1~3h3opxdfhcB-3T>u zA(!W6T^`I4sfW^5hd^86vplcK?}(AAu4e?mtXqkoKW$n(uP*GF0$^TGpePkv12*v; z1;wCZ>NuuKP2M{wskP#|cGm+7giFv>ZEDkIc>@^9=S*CN1ZpjPz5Vd|15X)wBc?b5 z>Si}t<;lh?Hg0=`8MrJ9JpC$)G~<>9;Pk_(Os`J}89hhYCOP}7X2<@1e@_K4?(Z^| zihUPvKlugd`rUcwwx>r6C(5`ZDTCqJiz-c@)M8}6(D<83x_?_vtA70e&_ zcoL`xN92dK3CMk1%C$;GfkJismr$L(y>{u{WS_XOqv~X*{^);5+eOnP-_4sJwsH}} zr-y=yrSp~+7lnl%CGb(-07U>hB8W$!mZnV7{byI0!KMIgSGJ(6_i;f5Is|gm;d1;tWJLv(Z*OGJP$F7EZYz-GVW4Fnf!aJnu~K{!OAf8+`n?4F}&i$AmQ$nmvVYmD)F^D*~m(`2SgP;hrp!mnnV(gYYI>sIoPX zq=$>!EiyPLk15X2oV6y%&!ohM@e}djOw-g%E)ZyTUzy39_AyqI_v3Wm$H%lQMTv;K#7wu2M|Kk=)xXz>kngAES6?4c2JMvd$q8>!Ysd7-bA)sd-4gIzmL$;7YfG zyJTUR8rHG@o~@|)HFbS29QOc4&YQ<-fUM}CG9*)KrGp3y%&J;^_NGYu3RUyRF#7K) zNmD%q=9&uM06mnuA%p1Ljkm&5>B^m!XM0m;QW>r7T&s}T8Ju8VwH<$ zMI5=PlF!Y9RkC&mi2oa5>f18M}AcWtPkmFCBgVFFBQ!xY;Gzg#-S0{x-3ts z(i9sK>9DX|`28T8;x5i_E`oAC`aD*l#5$IIwa(?IGJO|6=2OxXeG&k{O!{V|36l-( zHz5(Ec5esqk5vQ~LFkz>SyI91q5JeI_1_92AS}a%{r^zNt@9~SQLA)c7Z&9@U|9q% z$e1gSkDg=K{GT{pJf0ZfwoEM+RQDqw47Ed!6hgup2+QW6ugI%27!x>>7_eK$ck+c- z=n0e8s3P*9EeYHhO0310-9pHO#zVOC;i$*=`ms6c^dr!31>VdE7HYTlVC_YtbYIdE zNJU;e>Mv8mm1?~T3$#{Y+&dzs6=#|WlmrO-3Y(pi>jdc$A_|J;%-zlg@E#osf~{Al zQtADqxdE{t`+;s(-vs9NUYryZ0q;PCjZtDC%P5a|+&nvcJi<&ZcZTfFu>#28{~Z;F zZob}yqdjByGxmSF#x`UJZUE`1DPDxBSMH3(Cx7Ycw=*q{_RC#h24V?Bdhw4~9k3xI z1XxY8ZY!YloVK04-XAQ53|nr%H=*Gc|6)FR%QR5nKYj%Z`DP_5+ICdSe}@ToaPHi% z<;3NyNviu}LH?AiO4iuk1&XtBf#8$VsQ(LgUi`lTK^1ps(P4r+{0zO<5-5of#T7Py z00{MACAPe<$|NgQewcML$VRJs6Z}U@h)MMnRL7(KX^Ace0?k@gNIeS1%L+;aLc~Z= z36f(J?Dz&;EPuIcCnbezrXb9i7fLM<=nKDgM-RL`@aECAWcHJ`1Vrj7LApNx54+rn z8+m&KR+M*wG}#|;7&F^=@d6^+xuOa8tXqhnJ~sCbX3}ugh@tSwDdBhJrgz3IGnveu zsfp+*K#ZBYLRi?t-vR5gdmB(;%Lv@lSIsPLKq6LNu+4ua@EE)nKz1@QRZxkK%lmNCxoZQnI9U6h2PDM z)Rnv%VbFi1S0~lsn@}UKybQyAB^^bRG1@^qzoP%A6`^Z8*xbL`QCDly?t z-?c&&)<73}`{>P}gkrvEyifT|AO{R8Y}~P|bsTjsK<^Opadkn+%!T6dmBc|@D2a0c zMARs9{`9-$Q^JzgJw!x59VA!u=i9C}Kyb+f4f~DaK=7dhzoq?Uq{eIMb+uLm1WkMW zLVDqEl(|EU7`uU}$uO&de$szu>n9@eagxOF*~&ZO;j=6>%5PpqIDGgI(WKe`@*5~K z>|coC;9wmuT^zn8v0X(~Xq(hgn;mverT7QX;3F2rU!?tMB^7i8Q>$dx_RbU;IsT`_ zl^JuLM>-r`8cCs)}cUHb*gzk z?#ROH1bBTFI_>U|@0>R5%};xsED`heh1YpnDFJ>CGhR3blOS;vD3dZQM@&B4W1o;w z%)qKIeC2M1-7|f6vHopX5!=ypFh{uHV~WlbX>=54VoaQUVMI*a7F#$>PQ?HW9kK^Q zZ}e}!Ev^*SQHjc8Y_DjO$?0p;ZP+`IjdbEVC09B?Js0W_@F}`UdsmVg)fkmb-u${H_MA^(Z3VYA#jP@zn@D!a)Ez`V5#F zhL79vK9E!uzjBYasxpHGvf;CPcLvMt8g+?R9Q z;+c^5smPwJx+lW2^A9t6-r+LB6Y8I!y&4e?_F;me09>ovN=o&9vholZ)+&q`{n#sG z_z3MqfVZ}obarLe&weHX?IZ;+iLrpWaVW2$iX+%A5;{>!pM+AlW_9Q3iY>}#V_T$5 zUQC9{x89}2yJEKfB%htH+bWN}W<1|c17SUmfQ!51sfpw@Dr!OTk{z~vXoqTv@g_YH zr2~MbuVV&f6hexio3Um8+3O+vwH;6;lUh+x*RBpRCIbE+nauaWH3^bBJ^KVhDP57s zQA@DXg$#NLD@z7aP(KXmb^R`Kynah5n|hNC9prqBNI@%3D?`gO#3^UFxolY5wP z>?Azl1Pm=v(@R(820Ek|!7bnd1lmVwBhsU=V;xl<0;f=o#E;sg73CiPqF|QY;px>_ z>LA=p3#Ur+rz#oPe)y+aF#_ep`7jE>M~yP9ee|H9Q#VDsx#3#Mx1wA)h4%k+y^Mg1 z`H^_EYPkX#tDm-3T{Fh4ry-D~Y4l-QyypOIG;5 z=6Kn|^2}Gs$@)F>nq0!DNE1Yv*{c zp}nHIdx6b<@y1x~(n&SK^_4^gC2)s2oVc%D=fsgr=j-qQQ zy_?b~#b?m#jZI`9Gt588!*_#*kWAn9|B2jO&5Lw%N%3lyC2@YZZs&BG{lb4N-*^2N zKGW(~1nJL!zw6?y`J|0^9W@O~0Z6iTBa|X7Y(knQscjzKY1J}LbU+}r>gg5U-Mi_X z-^+=Np(3S9ql>@yg+{qSCsvv1YByS^7NR4C9QCwp9V_bWd%c)>_f;&m&yoSnXvdrz zbH95(9Oqg|jc;P-ww`9WD7-~WylhX)?3E5FGrxxO;c8iZgC)m0O5;HAWd^Unzghm%`QfcA^EY_F z&bx1cz1e-U@zIqI2=E zD0T~jemOw*oizSyy2A3T2M&8<5=60Onw*Cf;h+E@<>VUiOPk_%+eFVe6_6BHSxc7{ zKyY*(Ea9jmfDDSNVbf7Sj)qwVzq1yhpczpkrl6Tp#;3`S;kRcCAYh7#X|honKX@%E zO3^9B5stB*`e1#Aiwzs@=_lfsqPRP(w2zP?rwHng$=fyg@JUW{X5K;P&bDNwa_bnt z9+=?xWR{n$px|LbUO1IruK>PoI39&pKmw6;`;mRIaJZL*nrUn1Edwz|E)@dTKU0~GbhRX~7q|5wgZCP;bTyX76lhG7?lKG1- z6$Hsbh7zx9piQgtz^PJdtTTJ28a3EY*nljTZjnc_a?DKQjdvPz7bPQU+k>~W6Da6v zo=IjnN@VuO#A>kXD8{B+(}tIHp<`wg)$rY{Pm_*Ay%_hA>;b{A+XkNwV|!QG6Mt6B z#8I3cx!mc=%I=p;;U$4|BWjrOlbb?xu1&{^k8nJ*l>jtiEV*^?X@V0}k`Z$gUWCIn=Jy7*xt;v=L^?c}1k%cnzchtW(Nt$(CNi*pgusmu7e9 zB=qDp8hq~u-ts5=Ea9Rh$n}-&W3;Qw3unt^%4Go<_Sz*MTmB1esPU3*q7n!sBXI&7BdJK?#jGUo z_6|}>r0w8eXoJ^%$mC^zwUXviNOVW7S>WlnmfK`He{k`(ZIIdosb$dR347HxxQZ%f zpbueWA+Sl8XQp2%90;x34Jy(kz)LRK&JqBz4yZ-NIwOpDJw(O+m<5bIyl>z2T0+Cr zxb@kI0dhY8Oemu8oSvXK-=9iz(yOcmI*;O(BE zZ}XJ9Q60rXkEJ3gNDtOP%o;)O0D6NzNtpg`2th*N$(E?=WUlilcpp6F z{s;7|+gU~#ffAq5wDVNg8(YT0o-mchgFXc4dtB}D3Z8{Tl0<`d!M4~mkc(&=4!p$0 zr+)nRT^aM7ZNXdaf0qna3@zN-R<@i8mAA3wB-~oHwQa`kk+|y!?xzyG@Dgw_0aC2< z_`_f~rk<8qH@HCpoDLLS3t|=(cxO2~7dSFw zD+jkFXbh6!ph|y4f-`~tvopt-sz!ii{&94}rp>i^SKi4ES@4n=IOR4hE@C51now|< zCQvFsd#T~A1&2`0`}`+huD<&5YHh7F7b(UQPWZ5eYuBS;<`bYe)qw6#zWV8>iibno zh$a+^9?R{l%Dbf?SLi^Tx44A;ezQY2uUy&%2IfxxS|$C$At80EljEeXXe*M>y&eY@@Vv6q;XZUa;sckh0eRe|^SeeBhM zk1FZWL)@81IWFIh`q)cP`ZE?-+ZzuJTNHeTJ2woHkeT^eF&+o_IUL`0$74FpCB>LT zQlE#Kb1Y7EInhPLQFzH3hSwkdx`t3yfI4Y{I!(EF6ag;B@otI+AcB9La%iz|})d%Y!in~(#0c~xAAftglke&gD2fBg3gx<~mxT7PZ19U$(6F^{B>*WU7 z>6I5=v`-lV{mWi^1{i4eO&|cW=%fyX~yq5 za=MAI1f0LEi)&wXcOd;HdeEWr)7z_RTqr)%nwEcB@=!YoLEaFgIfr)g%Hj}a4LCnN zoW)lWuOB<{*&C%>RS?s@I`nJhz14bp*V6zBNT%TXP^NcnC}KH za3(gwUazNwFNzTkhv}%$)T7?CmCaN-ZPsi%G#=TXHZ_fKIFiy+Bn$-($jhlS{{NCr z7x#L^Py;Tl6pFw=jAiTnC0ljuWAM<&=BN$fy%3@77_jkWo|ySw;5zv7k zsj_a_XUc7S9XddQ#lCKHy0^0=WHhw|Z;Rq*iW~utu2RSN0k>pK<0;)>Oy}v@I=Vp)X|xfQ1s@_jPO+ zi7SXU9j^$9c~j|C@g$1q?TGzxhAdeFg98QVubrBA60@!B8zXF{*H%9xl2^7;`+IJ@ zh}`*&tX}R74<> z)W01`J^{|$+eJ@L8~AG^^S5lYOb}+|^u^!p-@WdME?aAE;&Dr1bMm1BW(yWg)WRFx zl87GW29jbwsidMRPGRuHBiZSiwzyEnjrHGLlm6Q5&xhY;J^gW;z&CMP)&LnWF7F~a z_Th6v6HoPo&q#Xdmlc{{V{;9o!O?h+yK<|~*!UjbfC5zy1{gfvQRAsV@dla)izuw` zE>{hyL@6>?jR#e~tgHLx;Sim}2ev}ITJ15}(>GA-bM0w!)I<5C`M36;e&^m7`o#0* zpt}5O0_9Gms3J7y*6sYQC$rTa;XUbamlCa~s%Db9a|mvZ&i6&Hc3m>BB0J5cs0=*0 z%hT728g_w@A+A1KDOtOxm0NG`P7(*ZpkF7A&w?!(qKkG0msD(>-bX9Si z3Ej6#iHYN+;0cEvW%T(KgiBAN@Y&s@3st`O&gb25!+C8Y88*i%LRqQuiBX%q;BMZe zr`Kn|sSLC3$)4G_e5N##40>RG`Kg~~sROKDE!TFReKDR6NK}CaOnsS8NXw|Qr}HTA zPL+bb8v*?{zx?#ikyJ#=3e9|#9)nZ*&6D5mi;-p8t7hat-uE2hzG&4C->TFbJ;d%i z*<=T(w@nS7sNl9={Zf>zH(v6}+u#I&g1s z@GW^1FFT~i?eJbhp$88C<7b0KIB7>Ka8TV~d(ulzLkHdx?E0*&8BhI-z|Y^pA(fzh-tzy)+a zZLNT9b&4?A)oXlk^xB&c*e#OS*)}-bE+lC|`Yr9XMhsgLJ|4b*`1=+UE2Cfqq1nd$ z^a@{VW2pG^yJ2(`^g@OX5}Mx?ipx8thzV_;8eh>7fFtU{;lo>MG{dc=;O`4j$Q30Q z$^5%G(@)x;yv}+|laWKoUtC@$Mf?UJHfDm2=)-RJToK{y=9m*tW!in~m7;x}elQbK zogdK?r%)1TEqphzM{_`X03TIm%Wj@5OwTf&K77kZTFX%Jrj{YZT%I`YF4|C(T7L?a z9q~Cr3-XemKSYRI$!@W5u$0rJBK&C_Ys`d?Ykd)yG|7DHpt8lcPAQ~x0Y)XJ zhGWKLbQ|u6PA07h_BpezFWgJYS%gOM9w50hUcb*mE$zmVq_5CVmppbV1V5&kdNUF( z`a_1QV{!{$)dhT^N<}ku8}$V6P;e=6^Ui21&A!`1DZs+VdUvXb@1y-+~)fOJLTZsM{Vh7CK`SN`a54|l@%}A z8$x8ubf{uKrH25Nto-HZyzm8k@CEI9>G9PEr_Z!)BbuwS=K}T}UM*E&GNWJwB&Ve# z&I-9sl)`%I-PeA&^?}b-J#5uaRuJyqznQWna^|WSZ@4WR?efayA8C1rtGBr51U(M4 zw2Y+VY^5snbPBU}&sHg{N=nS180F+%(1-zM*ZIRLxO7= z%?PxN7{OTYEZU!b(oGoH57pq59d=ex3$}>?)w3p|sKU)z7cM9OpYOk=YWOwtdx&mW z|3o~s!l6- zz(5yYXsO)OA4$UJhHluJ>nXa z+kPSc?>T0i==uO5E?S`B^s}M|c$_>D4+jT(z&XHG=z*h^x1FuNkGGS%!vpMza^Dn1 z@R&0qYA^gU|BD!zpteiS?fLxhSMh{;dsc}iR_YEZu}Xrlg6B6BkMLThFk+Zm;mag9 zj754~Jm;?P*jcbgo5Hqajnmj$cD`gPS{#EWw5pLzto0{ipksD(Wu3IPxkI4qUBnZd z1#;5NmD9|zH?*B%D%9x^U;F8-eKJLxcE?nf-jCkY<%@!4Z6AF-Nhy%ud8g z$y11OEfc*!KOkJS_alp$V1l!h_E6(6ZK12!r2p8)!MT@#R#fkXf8ew0eZQt#Ui|*t zW_v7}dXp@Euz~%f*M;9b*_*7)m&5WuFdsWMX7}&jdm<*r$-L-Y7NZ%_N|ff`?Kd8I%6IF?<4D?H;6bYO|(zqDUcIDF8|WmqIM%u_#T-Fp3{Cl5&ia zg~X+Z>9H~X&slE>4g#AH{Q8@-F~w6)6&Hp~@zMi7rYD4ZD*We1$~!a!ygJyp{|5~D B7!Cjc delta 12305 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 From a943492d8023eb8186172f33c18c31d34dd4e970 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Fri, 10 May 2024 09:17:58 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E5=BC=80=E5=90=AF=E5=85=91=E6=8D=A2?= =?UTF-8?q?=E6=B8=A0=E9=81=93=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/DB_Game_Drop.dat | 104 ++++++++++++------------- data/DB_Game_Drop.json | 132 ++++++++++++++++---------------- data/DB_PropExchange.dat | 6 +- data/DB_Task.dat | Bin 1999 -> 1999 bytes etcd/keyconf.go | 1 + model/config.go | 2 + protocol/gamehall/game.pb.go | 144 +++++++++++++++++++++++++++++++++-- protocol/gamehall/game.proto | 10 +++ protocol/webapi/common.pb.go | 113 ++++++++++++++++++++++----- protocol/webapi/common.proto | 6 ++ worldsrv/action_game.go | 27 +++++++ worldsrv/etcd.go | 12 +++ xlsx/DB_Game_Drop.xlsx | Bin 21201 -> 21232 bytes 13 files changed, 405 insertions(+), 152 deletions(-) diff --git a/data/DB_Game_Drop.dat b/data/DB_Game_Drop.dat index cb9b22d..93817af 100644 --- a/data/DB_Game_Drop.dat +++ b/data/DB_Game_Drop.dat @@ -208,59 +208,51 @@ (0N: ʺ(0N: (0N: -N(0J: -І(0: - (0 : -=(0:: -(0N: - - (0N:Kd -(0: -(0: -z(0N: - -(0N:2 -(0N: -_(0N: -N(0J: -І(0: - (0 : -=(0:: -(0N: - - (0N:Kd -N(0J: -І(0: - (0 : -=(0:: -(0N: - - (0N:Kd -N(0J: -І(0: - (0 : -=(0:: -(0N: - - (0N:Kd -N(0J: -І(0: - (0 : -=(0:: -(0N: - - (0N:Kd -N(0J: -І(0: - (0 : -=(0:: -(0N: - - (0N:Kd -N(0J: -І(0: - (0 : -=(0:: -(0N: - - (0N:Kd \ No newline at end of file +N(0: +І(0: + (0: +=(0N: +(0N: + (0N: +(0 : +(0:: +z(0N: +(0N:  +(0N:HL +_(0N: +N(0: +І(0: + (0: +=(0N: +(0N: + (0N: +N(0: +І(0: + (0: +=(0N: +(0N: + (0N: +N(0: +І(0: + (0: +=(0N: +(0N: + (0N: +N(0: +І(0: + (0: +=(0N: +(0N: + (0N: +N(0: +І(0: + (0: +=(0N: +(0N: + (0N: +N(0: +І(0: + (0: +=(0N: +(0N: + (0N: \ No newline at end of file diff --git a/data/DB_Game_Drop.json b/data/DB_Game_Drop.json index 2968cd8..2da5d7a 100644 --- a/data/DB_Game_Drop.json +++ b/data/DB_Game_Drop.json @@ -2205,7 +2205,7 @@ "GameId": 240, "Bet": 10000, "ItemId1": 30001, - "Rate1": 74, + "Rate1": 149, "Amount1": [ 1, 1 @@ -2216,7 +2216,7 @@ "GameId": 240, "Bet": 50000, "ItemId1": 30001, - "Rate1": 371, + "Rate1": 743, "Amount1": [ 1, 1 @@ -2227,7 +2227,7 @@ "GameId": 240, "Bet": 200000, "ItemId1": 30001, - "Rate1": 1485, + "Rate1": 2970, "Amount1": [ 1, 1 @@ -2238,7 +2238,7 @@ "GameId": 240, "Bet": 1000000, "ItemId1": 30001, - "Rate1": 7425, + "Rate1": 10000, "Amount1": [ 3, 5 @@ -2251,8 +2251,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 10, - 25 + 5, + 9 ] }, { @@ -2262,8 +2262,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 75, - 100 + 28, + 32 ] }, { @@ -2271,7 +2271,7 @@ "GameId": 244, "Bet": 100000, "ItemId1": 30001, - "Rate1": 743, + "Rate1": 1485, "Amount1": [ 1, 1 @@ -2282,7 +2282,7 @@ "GameId": 244, "Bet": 500000, "ItemId1": 30001, - "Rate1": 3713, + "Rate1": 7425, "Amount1": [ 2, 3 @@ -2295,8 +2295,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 5, - 10 + 1, + 5 ] }, { @@ -2306,8 +2306,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 25, - 50 + 13, + 17 ] }, { @@ -2317,8 +2317,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 225, - 250 + 72, + 76 ] }, { @@ -2328,8 +2328,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 300, - 500 + 295, + 299 ] }, { @@ -2337,7 +2337,7 @@ "GameId": 241, "Bet": 10000, "ItemId1": 30001, - "Rate1": 74, + "Rate1": 149, "Amount1": [ 1, 1 @@ -2348,7 +2348,7 @@ "GameId": 241, "Bet": 50000, "ItemId1": 30001, - "Rate1": 371, + "Rate1": 743, "Amount1": [ 1, 1 @@ -2359,7 +2359,7 @@ "GameId": 241, "Bet": 200000, "ItemId1": 30001, - "Rate1": 1485, + "Rate1": 2970, "Amount1": [ 1, 1 @@ -2370,7 +2370,7 @@ "GameId": 241, "Bet": 1000000, "ItemId1": 30001, - "Rate1": 7425, + "Rate1": 10000, "Amount1": [ 3, 5 @@ -2383,8 +2383,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 10, - 25 + 5, + 9 ] }, { @@ -2394,8 +2394,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 75, - 100 + 28, + 32 ] }, { @@ -2403,7 +2403,7 @@ "GameId": 245, "Bet": 10000, "ItemId1": 30001, - "Rate1": 74, + "Rate1": 149, "Amount1": [ 1, 1 @@ -2414,7 +2414,7 @@ "GameId": 245, "Bet": 50000, "ItemId1": 30001, - "Rate1": 371, + "Rate1": 743, "Amount1": [ 1, 1 @@ -2425,7 +2425,7 @@ "GameId": 245, "Bet": 200000, "ItemId1": 30001, - "Rate1": 1485, + "Rate1": 2970, "Amount1": [ 1, 1 @@ -2436,7 +2436,7 @@ "GameId": 245, "Bet": 1000000, "ItemId1": 30001, - "Rate1": 7425, + "Rate1": 10000, "Amount1": [ 3, 5 @@ -2449,8 +2449,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 10, - 25 + 5, + 9 ] }, { @@ -2460,8 +2460,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 75, - 100 + 28, + 32 ] }, { @@ -2469,7 +2469,7 @@ "GameId": 242, "Bet": 10000, "ItemId1": 30001, - "Rate1": 74, + "Rate1": 149, "Amount1": [ 1, 1 @@ -2480,7 +2480,7 @@ "GameId": 242, "Bet": 50000, "ItemId1": 30001, - "Rate1": 371, + "Rate1": 743, "Amount1": [ 1, 1 @@ -2491,7 +2491,7 @@ "GameId": 242, "Bet": 200000, "ItemId1": 30001, - "Rate1": 1485, + "Rate1": 2970, "Amount1": [ 1, 1 @@ -2502,7 +2502,7 @@ "GameId": 242, "Bet": 1000000, "ItemId1": 30001, - "Rate1": 7425, + "Rate1": 10000, "Amount1": [ 3, 5 @@ -2515,8 +2515,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 10, - 25 + 5, + 9 ] }, { @@ -2526,8 +2526,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 75, - 100 + 28, + 32 ] }, { @@ -2535,7 +2535,7 @@ "GameId": 246, "Bet": 10000, "ItemId1": 30001, - "Rate1": 74, + "Rate1": 149, "Amount1": [ 1, 1 @@ -2546,7 +2546,7 @@ "GameId": 246, "Bet": 50000, "ItemId1": 30001, - "Rate1": 371, + "Rate1": 743, "Amount1": [ 1, 1 @@ -2557,7 +2557,7 @@ "GameId": 246, "Bet": 200000, "ItemId1": 30001, - "Rate1": 1485, + "Rate1": 2970, "Amount1": [ 1, 1 @@ -2568,7 +2568,7 @@ "GameId": 246, "Bet": 1000000, "ItemId1": 30001, - "Rate1": 7425, + "Rate1": 10000, "Amount1": [ 3, 5 @@ -2581,8 +2581,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 10, - 25 + 5, + 9 ] }, { @@ -2592,8 +2592,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 75, - 100 + 28, + 32 ] }, { @@ -2601,7 +2601,7 @@ "GameId": 243, "Bet": 10000, "ItemId1": 30001, - "Rate1": 74, + "Rate1": 149, "Amount1": [ 1, 1 @@ -2612,7 +2612,7 @@ "GameId": 243, "Bet": 50000, "ItemId1": 30001, - "Rate1": 371, + "Rate1": 743, "Amount1": [ 1, 1 @@ -2623,7 +2623,7 @@ "GameId": 243, "Bet": 200000, "ItemId1": 30001, - "Rate1": 1485, + "Rate1": 2970, "Amount1": [ 1, 1 @@ -2634,7 +2634,7 @@ "GameId": 243, "Bet": 1000000, "ItemId1": 30001, - "Rate1": 7425, + "Rate1": 10000, "Amount1": [ 3, 5 @@ -2647,8 +2647,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 10, - 25 + 5, + 9 ] }, { @@ -2658,8 +2658,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 75, - 100 + 28, + 32 ] }, { @@ -2667,7 +2667,7 @@ "GameId": 247, "Bet": 10000, "ItemId1": 30001, - "Rate1": 74, + "Rate1": 149, "Amount1": [ 1, 1 @@ -2678,7 +2678,7 @@ "GameId": 247, "Bet": 50000, "ItemId1": 30001, - "Rate1": 371, + "Rate1": 743, "Amount1": [ 1, 1 @@ -2689,7 +2689,7 @@ "GameId": 247, "Bet": 200000, "ItemId1": 30001, - "Rate1": 1485, + "Rate1": 2970, "Amount1": [ 1, 1 @@ -2700,7 +2700,7 @@ "GameId": 247, "Bet": 1000000, "ItemId1": 30001, - "Rate1": 7425, + "Rate1": 10000, "Amount1": [ 3, 5 @@ -2713,8 +2713,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 10, - 25 + 5, + 9 ] }, { @@ -2724,8 +2724,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 75, - 100 + 28, + 32 ] } ] diff --git a/data/DB_PropExchange.dat b/data/DB_PropExchange.dat index b7451ac..bed563e 100644 --- a/data/DB_PropExchange.dat +++ b/data/DB_PropExchange.dat @@ -1,5 +1,5 @@ -6ӆԆՆֆ׆"= +6Նֆ׆ӆԆ"= .؆نچۆ"= -WنچۆӆԆֆ؆Ն׆"  -]ֆ׆؆چۆ܆ӆԆՆن" \ No newline at end of file +WֆՆԆ׆؆نچۆӆ"  +]׆؆ۆӆԆֆ܆Նنچ" \ No newline at end of file diff --git a/data/DB_Task.dat b/data/DB_Task.dat index bb6d5973e78428c38d446594834b5a66a36cd4a8..50d1fa8de0f5314064288ffcb86caf84641cc814 100644 GIT binary patch delta 144 zcmX@lf1ZDWu^=1Al3q3e5i1Ukg+O{iFWW{JLB`3=OoEfs81sZU!J-XoAF)`maV!EV z;M)9*aU&y87l;GX)zDcrc?Gl8c6K2kSq!d^Ck1-)!mY#d8~ERl^af{cP}9E*T#E-Q%affn1zX^eS7Fi}ph zo`$uLST;Xn+{ifDg-vjB0W0g|waliIOW1`re_?jRV#H=|)A5dq diff --git a/etcd/keyconf.go b/etcd/keyconf.go index 7a832c6..a7710b8 100644 --- a/etcd/keyconf.go +++ b/etcd/keyconf.go @@ -53,4 +53,5 @@ const ( ETCDKEY_PLAYERPOOL = "/game/plt/playerpool/" // 个人水池调控配置 ETCDKEY_GAME_CONFIG = "/game/plt/gameconfig/" // 游戏管理/全局配置 ETCDKEY_ACT_PHONELOTTERY = "/game/act_phoneLottery" + ETCDKEY_EXCHANGECHANNEL = "/game/exchange/channel" // 开启兑换功能的渠道 ) diff --git a/model/config.go b/model/config.go index cc0f4a1..d93c6f2 100644 --- a/model/config.go +++ b/model/config.go @@ -115,6 +115,8 @@ type AllConfig struct { *webapi.ExchangeShopList // 商店 ShopInfos map[int32]*ShopInfo // 商品id:商品信息 + // 开启兑换的渠道 + *webapi.ExchangeChannelConfig } type GlobalConfig struct { diff --git a/protocol/gamehall/game.pb.go b/protocol/gamehall/game.pb.go index a15294c..0a97e7f 100644 --- a/protocol/gamehall/game.pb.go +++ b/protocol/gamehall/game.pb.go @@ -284,6 +284,8 @@ const ( GameHallPacketID_PACKET_CS_PLAYER_SWITCHFLAG GameHallPacketID = 8008 GameHallPacketID_PACKET_CSRoomEvent GameHallPacketID = 8009 // 房间事件 GameHallPacketID_PACKET_SCRoomEvent GameHallPacketID = 8010 // 房间事件 + GameHallPacketID_PACKET_CSExchangeChannel GameHallPacketID = 8011 // 开启兑换的渠道 + GameHallPacketID_PACKET_SCExchangeChannel GameHallPacketID = 8012 // 开启兑换的渠道 ) // Enum value maps for GameHallPacketID. @@ -390,6 +392,8 @@ var ( 8008: "PACKET_CS_PLAYER_SWITCHFLAG", 8009: "PACKET_CSRoomEvent", 8010: "PACKET_SCRoomEvent", + 8011: "PACKET_CSExchangeChannel", + 8012: "PACKET_SCExchangeChannel", } GameHallPacketID_value = map[string]int32{ "PACKET_GameHall_ZERO": 0, @@ -493,6 +497,8 @@ var ( "PACKET_CS_PLAYER_SWITCHFLAG": 8008, "PACKET_CSRoomEvent": 8009, "PACKET_SCRoomEvent": 8010, + "PACKET_CSExchangeChannel": 8011, + "PACKET_SCExchangeChannel": 8012, } ) @@ -7182,6 +7188,93 @@ func (x *SCRoomEvent) GetTs() int64 { return 0 } +// PACKET_CSExchangeChannel +type CSExchangeChannel struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *CSExchangeChannel) Reset() { + *x = CSExchangeChannel{} + if protoimpl.UnsafeEnabled { + mi := &file_game_proto_msgTypes[102] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CSExchangeChannel) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CSExchangeChannel) ProtoMessage() {} + +func (x *CSExchangeChannel) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[102] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CSExchangeChannel.ProtoReflect.Descriptor instead. +func (*CSExchangeChannel) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{102} +} + +// PACKET_SCExchangeChannel +type SCExchangeChannel struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OnChannelName []string `protobuf:"bytes,1,rep,name=OnChannelName,proto3" json:"OnChannelName,omitempty"` // 开启渠道 +} + +func (x *SCExchangeChannel) Reset() { + *x = SCExchangeChannel{} + if protoimpl.UnsafeEnabled { + mi := &file_game_proto_msgTypes[103] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SCExchangeChannel) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SCExchangeChannel) ProtoMessage() {} + +func (x *SCExchangeChannel) ProtoReflect() protoreflect.Message { + mi := &file_game_proto_msgTypes[103] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SCExchangeChannel.ProtoReflect.Descriptor instead. +func (*SCExchangeChannel) Descriptor() ([]byte, []int) { + return file_game_proto_rawDescGZIP(), []int{103} +} + +func (x *SCExchangeChannel) GetOnChannelName() []string { + if x != nil { + return x.OnChannelName + } + return nil +} + var File_game_proto protoreflect.FileDescriptor var file_game_proto_rawDesc = []byte{ @@ -7913,7 +8006,12 @@ var file_game_proto_rawDesc = []byte{ 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, - 0x54, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x2a, 0xe6, 0x09, 0x0a, + 0x54, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x22, 0x13, 0x0a, 0x11, + 0x43, 0x53, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, + 0x6c, 0x22, 0x39, 0x0a, 0x11, 0x53, 0x43, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, + 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x2a, 0xe6, 0x09, 0x0a, 0x11, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, @@ -7992,7 +8090,7 @@ var file_game_proto_rawDesc = []byte{ 0x5f, 0x51, 0x75, 0x6f, 0x74, 0x61, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xab, 0x46, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x68, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x47, 0x61, - 0x6d, 0x65, 0x10, 0xb2, 0x46, 0x2a, 0xd0, 0x17, 0x0a, 0x10, 0x47, 0x61, 0x6d, 0x65, 0x48, 0x61, + 0x6d, 0x65, 0x10, 0xb2, 0x46, 0x2a, 0x8e, 0x18, 0x0a, 0x10, 0x47, 0x61, 0x6d, 0x65, 0x48, 0x61, 0x6c, 0x6c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x48, 0x61, 0x6c, 0x6c, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, @@ -8181,10 +8279,14 @@ var file_game_proto_rawDesc = []byte{ 0x4c, 0x41, 0x47, 0x10, 0xc8, 0x3e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0xc9, 0x3e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0xca, 0x3e, 0x42, 0x28, 0x5a, 0x26, 0x6d, 0x6f, 0x6e, 0x67, - 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, - 0x6c, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0xca, 0x3e, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, + 0x45, 0x54, 0x5f, 0x43, 0x53, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x68, 0x61, + 0x6e, 0x6e, 0x65, 0x6c, 0x10, 0xcb, 0x3e, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, + 0x54, 0x5f, 0x53, 0x43, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x10, 0xcc, 0x3e, 0x42, 0x28, 0x5a, 0x26, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, + 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -8200,7 +8302,7 @@ func file_game_proto_rawDescGZIP() []byte { } var file_game_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_game_proto_msgTypes = make([]protoimpl.MessageInfo, 102) +var file_game_proto_msgTypes = make([]protoimpl.MessageInfo, 104) var file_game_proto_goTypes = []interface{}{ (OpResultCode_Game)(0), // 0: gamehall.OpResultCode_Game (GameHallPacketID)(0), // 1: gamehall.GameHallPacketID @@ -8306,6 +8408,8 @@ var file_game_proto_goTypes = []interface{}{ (*SCNoticeChange)(nil), // 101: gamehall.SCNoticeChange (*CSRoomEvent)(nil), // 102: gamehall.CSRoomEvent (*SCRoomEvent)(nil), // 103: gamehall.SCRoomEvent + (*CSExchangeChannel)(nil), // 104: gamehall.CSExchangeChannel + (*SCExchangeChannel)(nil), // 105: gamehall.SCExchangeChannel } var file_game_proto_depIdxs = []int32{ 0, // 0: gamehall.SCEnterHall.OpRetCode:type_name -> gamehall.OpResultCode_Game @@ -9594,6 +9698,30 @@ func file_game_proto_init() { return nil } } + file_game_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CSExchangeChannel); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SCExchangeChannel); 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{ @@ -9601,7 +9729,7 @@ func file_game_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_game_proto_rawDesc, NumEnums: 2, - NumMessages: 102, + NumMessages: 104, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/gamehall/game.proto b/protocol/gamehall/game.proto index 12137c9..c6f81c3 100644 --- a/protocol/gamehall/game.proto +++ b/protocol/gamehall/game.proto @@ -159,6 +159,8 @@ enum GameHallPacketID { PACKET_CS_PLAYER_SWITCHFLAG = 8008; PACKET_CSRoomEvent = 8009; // 房间事件 PACKET_SCRoomEvent = 8010; // 房间事件 + PACKET_CSExchangeChannel = 8011; // 开启兑换的渠道 + PACKET_SCExchangeChannel = 8012; // 开启兑换的渠道 } //进入游戏大厅 //PACKET_CS_ENTERHALL @@ -860,4 +862,12 @@ message SCRoomEvent{ string Content = 4; // 内容 repeated int32 Param= 5; // 参数 int64 Ts = 6; // 时间戳 +} + +// PACKET_CSExchangeChannel +message CSExchangeChannel{} + +// PACKET_SCExchangeChannel +message SCExchangeChannel{ + repeated string OnChannelName = 1; // 开启渠道 } \ No newline at end of file diff --git a/protocol/webapi/common.pb.go b/protocol/webapi/common.pb.go index 085d71f..1edfdf3 100644 --- a/protocol/webapi/common.pb.go +++ b/protocol/webapi/common.pb.go @@ -5701,6 +5701,62 @@ func (x *WelfareCollectConfig) GetSwitch() int32 { return 0 } +// etcd /game/exchange/channel +type ExchangeChannelConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` + OnChannelName []string `protobuf:"bytes,2,rep,name=OnChannelName,proto3" json:"OnChannelName,omitempty"` // 开启渠道 +} + +func (x *ExchangeChannelConfig) Reset() { + *x = ExchangeChannelConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_common_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExchangeChannelConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExchangeChannelConfig) ProtoMessage() {} + +func (x *ExchangeChannelConfig) ProtoReflect() protoreflect.Message { + mi := &file_common_proto_msgTypes[55] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExchangeChannelConfig.ProtoReflect.Descriptor instead. +func (*ExchangeChannelConfig) Descriptor() ([]byte, []int) { + return file_common_proto_rawDescGZIP(), []int{55} +} + +func (x *ExchangeChannelConfig) GetPlatform() string { + if x != nil { + return x.Platform + } + return "" +} + +func (x *ExchangeChannelConfig) GetOnChannelName() []string { + if x != nil { + return x.OnChannelName + } + return nil +} + var File_common_proto protoreflect.FileDescriptor var file_common_proto_rawDesc = []byte{ @@ -6628,10 +6684,16 @@ var file_common_proto_rawDesc = []byte{ 0x63, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 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, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x22, 0x59, 0x0a, 0x15, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, + 0x6d, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, + 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -6646,7 +6708,7 @@ func file_common_proto_rawDescGZIP() []byte { return file_common_proto_rawDescData } -var file_common_proto_msgTypes = make([]protoimpl.MessageInfo, 60) +var file_common_proto_msgTypes = make([]protoimpl.MessageInfo, 61) var file_common_proto_goTypes = []interface{}{ (*MysqlDbSetting)(nil), // 0: webapi.MysqlDbSetting (*MongoDbSetting)(nil), // 1: webapi.MongoDbSetting @@ -6703,31 +6765,32 @@ var file_common_proto_goTypes = []interface{}{ (*GameConfig)(nil), // 52: webapi.GameConfig (*WelfarePhoneLotteryStatus)(nil), // 53: webapi.WelfarePhoneLotteryStatus (*WelfareCollectConfig)(nil), // 54: webapi.WelfareCollectConfig - nil, // 55: webapi.Platform.BindTelRewardEntry - nil, // 56: webapi.PlayerData.RankScoreEntry - nil, // 57: webapi.ItemShop.AwardEntry - nil, // 58: webapi.VIPcfg.AwardEntry - nil, // 59: webapi.VIPcfg.Privilege7Entry - (*server.DB_GameFree)(nil), // 60: server.DB_GameFree + (*ExchangeChannelConfig)(nil), // 55: webapi.ExchangeChannelConfig + nil, // 56: webapi.Platform.BindTelRewardEntry + nil, // 57: webapi.PlayerData.RankScoreEntry + nil, // 58: webapi.ItemShop.AwardEntry + nil, // 59: webapi.VIPcfg.AwardEntry + nil, // 60: webapi.VIPcfg.Privilege7Entry + (*server.DB_GameFree)(nil), // 61: server.DB_GameFree } 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 - 55, // 3: webapi.Platform.BindTelReward:type_name -> webapi.Platform.BindTelRewardEntry + 56, // 3: webapi.Platform.BindTelReward:type_name -> webapi.Platform.BindTelRewardEntry 6, // 4: webapi.GameConfigGlobal.GameStatus:type_name -> webapi.GameStatus - 60, // 5: webapi.GameFree.DbGameFree:type_name -> server.DB_GameFree + 61, // 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 - 60, // 10: webapi.GameConfigGroup.DbGameFree:type_name -> server.DB_GameFree - 56, // 11: webapi.PlayerData.RankScore:type_name -> webapi.PlayerData.RankScoreEntry + 61, // 10: webapi.GameConfigGroup.DbGameFree:type_name -> server.DB_GameFree + 57, // 11: webapi.PlayerData.RankScore:type_name -> webapi.PlayerData.RankScoreEntry 20, // 12: webapi.OnlineReport.GameCount:type_name -> webapi.OnlineGameCnt 22, // 13: webapi.CommonNoticeList.List:type_name -> webapi.CommonNotice 25, // 14: webapi.ExchangeShop.ExType:type_name -> webapi.ExchangeType 24, // 15: webapi.ExchangeShopList.List:type_name -> webapi.ExchangeShop - 57, // 16: webapi.ItemShop.Award:type_name -> webapi.ItemShop.AwardEntry + 58, // 16: webapi.ItemShop.Award:type_name -> webapi.ItemShop.AwardEntry 27, // 17: webapi.ItemShopList.List:type_name -> webapi.ItemShop 29, // 18: webapi.MatchInfoAward.ItemId:type_name -> webapi.ItemInfo 30, // 19: webapi.GameMatchDate.Award:type_name -> webapi.MatchInfoAward @@ -6744,8 +6807,8 @@ var file_common_proto_depIdxs = []int32{ 33, // 30: webapi.WelfareSpree.Item:type_name -> webapi.WelfareDate 42, // 31: webapi.WelfareFirstPayDataList.List:type_name -> webapi.WelfareSpree 42, // 32: webapi.WelfareContinuousPayDataList.List:type_name -> webapi.WelfareSpree - 58, // 33: webapi.VIPcfg.Award:type_name -> webapi.VIPcfg.AwardEntry - 59, // 34: webapi.VIPcfg.Privilege7:type_name -> webapi.VIPcfg.Privilege7Entry + 59, // 33: webapi.VIPcfg.Award:type_name -> webapi.VIPcfg.AwardEntry + 60, // 34: webapi.VIPcfg.Privilege7:type_name -> webapi.VIPcfg.Privilege7Entry 45, // 35: webapi.VIPcfgDataList.List:type_name -> webapi.VIPcfg 33, // 36: webapi.ChessRankConfig.Item:type_name -> webapi.WelfareDate 49, // 37: webapi.ChessRankcfgData.Datas:type_name -> webapi.ChessRankConfig @@ -7422,6 +7485,18 @@ func file_common_proto_init() { return nil } } + file_common_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ExchangeChannelConfig); 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{ @@ -7429,7 +7504,7 @@ func file_common_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_common_proto_rawDesc, NumEnums: 0, - NumMessages: 60, + NumMessages: 61, NumExtensions: 0, NumServices: 0, }, diff --git a/protocol/webapi/common.proto b/protocol/webapi/common.proto index d35d787..236347c 100644 --- a/protocol/webapi/common.proto +++ b/protocol/webapi/common.proto @@ -631,4 +631,10 @@ message WelfarePhoneLotteryStatus{ message WelfareCollectConfig{ string Platform = 1; int32 Switch = 2; // 1.开启 2.关闭 +} + +// etcd /game/exchange/channel +message ExchangeChannelConfig{ + string Platform = 1; + repeated string OnChannelName = 2; // 开启渠道 } \ No newline at end of file diff --git a/worldsrv/action_game.go b/worldsrv/action_game.go index 7ac3e77..4c9d6ba 100644 --- a/worldsrv/action_game.go +++ b/worldsrv/action_game.go @@ -2226,6 +2226,31 @@ func (this *CSRecordAndNoticeHandler) Process(s *netlib.Session, packetid int, d return nil } +func CSExchangeChannel(s *netlib.Session, packetid int, data interface{}, sid int64) error { + logger.Logger.Trace("CSExchangeChannel Process recv ", data) + _, ok := data.(*gamehall.CSExchangeChannel) + if !ok { + return nil + } + + p := PlayerMgrSington.GetPlayer(sid) + if p == nil { + logger.Logger.Warn("CSExchangeChannel p == nil") + return nil + } + + var onChannelName []string + conf := PlatformMgrSingleton.GetConfig(p.Platform).ExchangeChannelConfig + if conf != nil { + onChannelName = conf.OnChannelName + } + + p.SendToClient(int(gamehall.GameHallPacketID_PACKET_SCExchangeChannel), &gamehall.SCExchangeChannel{ + OnChannelName: onChannelName, + }) + return nil +} + func init() { // 观众进入房间 common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_AUDIENCE_ENTERROOM), &CSAudienceEnterRoomHandler{}) @@ -2278,4 +2303,6 @@ func init() { //我的游戏信息及平台公告 common.RegisterHandler(int(gamehall.GameHallPacketID_PACKET_CS_COMNOTICE), &CSRecordAndNoticeHandler{}) netlib.RegisterFactory(int(gamehall.GameHallPacketID_PACKET_CS_COMNOTICE), &CSRecordAndNoticePacketFactory{}) + // 开启兑换的渠道 + common.Register(int(gamehall.GameHallPacketID_PACKET_CSExchangeChannel), gamehall.CSExchangeChannel{}, CSExchangeChannel) } diff --git a/worldsrv/etcd.go b/worldsrv/etcd.go index 5c8c0ea..208dab2 100644 --- a/worldsrv/etcd.go +++ b/worldsrv/etcd.go @@ -35,6 +35,8 @@ func init() { etcd.Register(etcd.ETCDKEY_SHOP_ITEM, webapi.ItemShopList{}, platformConfigEvent) // 集卡活动 etcd.Register(etcd.ETCDKEY_ACT_Collect, webapi.WelfareCollectConfig{}, platformConfigEvent) + // 启动兑换功能的渠道 + etcd.Register(etcd.ETCDKEY_EXCHANGECHANNEL, webapi.ExchangeChannelConfig{}, platformConfigEvent) } func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{}) { @@ -125,6 +127,16 @@ func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, e } else { TournamentMgr.UpdateData(false, config) } + case *webapi.ExchangeChannelConfig: + PlatformMgrSingleton.GetConfig(config.Platform).ExchangeChannelConfig = config + if !isInit { + // 通知变更 + for _, v := range PlayerMgrSington.playerOfPlatform[config.Platform] { + if v != nil && v.IsOnLine() { + v.SendToClient(int(hallproto.GameHallPacketID_PACKET_SCExchangeChannel), &hallproto.SCExchangeChannel{}) + } + } + } default: logger.Logger.Errorf("etcd completeKey:%s, Not processed", completeKey) diff --git a/xlsx/DB_Game_Drop.xlsx b/xlsx/DB_Game_Drop.xlsx index d6dfa2a7a7714ad317618b179fa1603876cf241d..55883fa5840efa32e8e1f7f2d14746fdf1980293 100644 GIT binary patch delta 12327 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 From 22dbae7f8013f179918a027b222f8214059f2c53 Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Fri, 10 May 2024 11:44:58 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E8=A2=AB=E9=82=80=E8=AF=B7=E4=BA=BA?= =?UTF-8?q?=E5=85=85=E5=80=BC=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/constant.go | 5 + data/DB_Game_Drop.dat | 412 +++++++++++++++-------------- data/DB_Game_Drop.json | 488 +++++++++++++++++------------------ data/DB_GiftCard.dat | Bin 57 -> 57 bytes data/DB_PropExchange.dat | 6 +- data/DB_Task.dat | Bin 1999 -> 2032 bytes data/DB_Task.json | 12 + dbproxy/svc/u_invitescore.go | 3 + model/invitecode.go | 15 +- worldsrv/action_welfare.go | 33 ++- worldsrv/invitecode.go | 39 ++- worldsrv/player.go | 3 +- worldsrv/taskmgr.go | 1 + xlsx/DB_Game_Drop.xlsx | Bin 21232 -> 21198 bytes xlsx/DB_Task.xlsx | Bin 19664 -> 20040 bytes 15 files changed, 525 insertions(+), 492 deletions(-) diff --git a/common/constant.go b/common/constant.go index efe6abc..26b1d34 100644 --- a/common/constant.go +++ b/common/constant.go @@ -712,6 +712,7 @@ const ( TaskTypeFirstLogin = 15 // 每日首次登录 TaskTypeInviteNum = 16 // 邀请绑定数量 TaskTypeTurnplate = 17 // 转盘抽奖次数 + TaskTypeInviteRecharge = 18 // 被邀请人充值金额 ) const ( @@ -791,3 +792,7 @@ const ( ) var PetIDs = []int32{PetIDChicken} + +const ( + InviteScoreRecharge = 10000 // 用户每充值$1邀请人获得积分 +) diff --git a/data/DB_Game_Drop.dat b/data/DB_Game_Drop.dat index 93817af..fef8637 100644 --- a/data/DB_Game_Drop.dat +++ b/data/DB_Game_Drop.dat @@ -1,213 +1,209 @@ -(0: -'(0%: -N(0J: -u(0o: -(0: -(0: -(0: -(0: - (0: +(0: +'(0J: +N(0: +u(0: +(0: +(0: +(0: +(0: + (0:  -(0: - І(0: - ح(0: - (0: -(0: -(0: -(0: -(0: -(0: -(0: -(0: -(0: - (0: - (0 : -(0: -(0: -(0: -(0: -л(0: -(0: -!(0: -$(0": - '(0%: -!*(0(: -"-(0+: -#0(0.: -$3(01: -%6(04: -&9(07: -'=(0:: -(z(0N: - -)(0N: - -*(0N:2 -+Ó(0N:2K -, (0N:Kd -- (0N:d} -.(0N:} -/(0N: -0(0N: -1ʺ(0N: -2(0N: -3(0: -4'(0%: -5N(0J: -6u(0o: -7(0: -8(0: -9(0: -:(0: -;(0: -<(0: -=І(0: ->ح(0: -?(0: -@(0: -A(0: -B(0: -C(0: -D(0: -E(0: -F(0: -G(0: -H (0: -I (0 : -J(0: -K(0: -L(0: -M(0: -Nл(0: -O(0: -P!(0: -Q$(0": -R'(0%: -S*(0(: -T-(0+: -U0(0.: -V3(01: -W6(04: -X9(07: -Y=(0:: -Zz(0N: - -[(0N: - -\(0N:2 -]Ó(0N:2K -^ (0N:Kd -_ (0N:d} -`(0N:} -a(0N: -b(0N: -cʺ(0N: -d(0N: -e(0: -f'(0%: -gN(0J: -hu(0o: -i(0: -j(0: -k(0: -l(0: -m(0: -n(0: -oІ(0: -pح(0: -q(0: -r(0: -s(0: -t(0: -u(0: -v(0: -w(0: -x(0: -y(0: -z (0: -{ (0 : -|(0: -}(0: -~(0: -(0: -л(0: -(0: -!(0: -$(0": -'(0%: -*(0(: --(0+: -0(0.: -3(01: -6(04: -9(07: -=(0:: -z(0N: - -(0N: - -(0N:2 -Ó(0N:2K - (0N:Kd - (0N:d} -(0N:} -(0N: -(0N: -ʺ(0N: -(0N: -(0: -'(0%: -N(0J: -u(0o: -(0: -(0: -(0: -(0: -(0: -(0: -І(0: -ح(0: -(0: -(0: -(0: -(0: -(0: -(0: -(0: -(0: -(0: - (0: - (0 : -(0: -(0: -(0: -(0: -л(0: -(0: -!(0: -$(0": -'(0%: -*(0(: --(0+: -0(0.: -3(01: -6(04: -9(07: -=(0:: -z(0N: - -(0N: - -(0N:2 -Ó(0N:2K - (0N:Kd - (0N:d} -(0N:} -(0N: -(0N: -ʺ(0N: -(0N: +(0: + І(0: + ح(0: + (0: +(0: +(0: +(0: +(0 : +(0 : +(0 +: +(0 : +(0 : + (0: + (0: +(0: +(0": +(0(: +(0.: +л(04: +(0:: +!(0?: +$(0E: + '(0K: +!*(0N: +"-(0N: +#0(0N: +$3(0N: +%6(0N: +&9(0N: +'=(0N: +(z(0N: +)(0N: +*(0N:  ++Ó(0N: +, (0N: +- (0N:#' +.(0N:+/ +/(0N:26 +0(0N:9= +1ʺ(0N:AE +2(0N:HL +3(0: +4'(0J: +5N(0: +6u(0: +7(0: +8(0: +9(0: +:(0: +;(0: +<(0: +=І(0: +>ح(0: +?(0: +@(0: +A(0: +B(0: +C(0 : +D(0 : +E(0 +: +F(0 : +G(0 : +H (0: +I (0: +J(0: +K(0": +L(0(: +M(0.: +Nл(04: +O(0:: +P!(0?: +Q$(0E: +R'(0K: +S*(0N: +T-(0N: +U0(0N: +V3(0N: +W6(0N: +X9(0N: +Y=(0N: +Zz(0N: +[(0N: +\(0N:  +]Ó(0N: +^ (0N: +_ (0N:#' +`(0N:+/ +a(0N:26 +b(0N:9= +cʺ(0N:AE +d(0N:HL +e(0: +f'(0J: +gN(0: +hu(0: +i(0: +j(0: +k(0: +l(0: +m(0: +n(0: +oІ(0: +pح(0: +q(0: +r(0: +s(0: +t(0: +u(0 : +v(0 : +w(0 +: +x(0 : +y(0 : +z (0: +{ (0: +|(0: +}(0": +~(0(: +(0.: +л(04: +(0:: +!(0?: +$(0E: +'(0K: +*(0N: +-(0N: +0(0N: +3(0N: +6(0N: +9(0N: +=(0N: +z(0N: +(0N: +(0N:  +Ó(0N: + (0N: + (0N:#' +(0N:+/ +(0N:26 +(0N:9= +ʺ(0N:AE +(0N:HL +(0: +'(0J: +N(0: +u(0: +(0: +(0: +(0: +(0: +(0: +(0: +І(0: +ح(0: +(0: +(0: +(0: +(0: +(0 : +(0 : +(0 +: +(0 : +(0 : + (0: + (0: +(0: +(0": +(0(: +(0.: +л(04: +(0:: +!(0?: +$(0E: +'(0K: +*(0N: +-(0N: +0(0N: +3(0N: +6(0N: +9(0N: +=(0N: +z(0N: +(0N: +(0N:  +Ó(0N: + (0N: + (0N:#' +(0N:+/ +(0N:26 +(0N:9= +ʺ(0N:AE +(0N:HL N(0: І(0:  (0: diff --git a/data/DB_Game_Drop.json b/data/DB_Game_Drop.json index 2da5d7a..acda596 100644 --- a/data/DB_Game_Drop.json +++ b/data/DB_Game_Drop.json @@ -5,7 +5,7 @@ "GameId": 207, "Bet": 2000, "ItemId1": 30001, - "Rate1": 15, + "Rate1": 30, "Amount1": [ 1, 1 @@ -16,7 +16,7 @@ "GameId": 207, "Bet": 5000, "ItemId1": 30001, - "Rate1": 37, + "Rate1": 74, "Amount1": [ 1, 1 @@ -27,7 +27,7 @@ "GameId": 207, "Bet": 10000, "ItemId1": 30001, - "Rate1": 74, + "Rate1": 149, "Amount1": [ 1, 1 @@ -38,7 +38,7 @@ "GameId": 207, "Bet": 15000, "ItemId1": 30001, - "Rate1": 111, + "Rate1": 223, "Amount1": [ 1, 1 @@ -49,7 +49,7 @@ "GameId": 207, "Bet": 20000, "ItemId1": 30001, - "Rate1": 149, + "Rate1": 297, "Amount1": [ 1, 1 @@ -60,7 +60,7 @@ "GameId": 207, "Bet": 25000, "ItemId1": 30001, - "Rate1": 186, + "Rate1": 371, "Amount1": [ 1, 1 @@ -71,7 +71,7 @@ "GameId": 207, "Bet": 30000, "ItemId1": 30001, - "Rate1": 223, + "Rate1": 446, "Amount1": [ 1, 1 @@ -82,7 +82,7 @@ "GameId": 207, "Bet": 35000, "ItemId1": 30001, - "Rate1": 260, + "Rate1": 520, "Amount1": [ 1, 1 @@ -93,7 +93,7 @@ "GameId": 207, "Bet": 40000, "ItemId1": 30001, - "Rate1": 297, + "Rate1": 594, "Amount1": [ 1, 1 @@ -104,7 +104,7 @@ "GameId": 207, "Bet": 45000, "ItemId1": 30001, - "Rate1": 334, + "Rate1": 668, "Amount1": [ 1, 1 @@ -115,7 +115,7 @@ "GameId": 207, "Bet": 50000, "ItemId1": 30001, - "Rate1": 371, + "Rate1": 743, "Amount1": [ 1, 1 @@ -126,7 +126,7 @@ "GameId": 207, "Bet": 55000, "ItemId1": 30001, - "Rate1": 408, + "Rate1": 817, "Amount1": [ 1, 1 @@ -137,7 +137,7 @@ "GameId": 207, "Bet": 60000, "ItemId1": 30001, - "Rate1": 446, + "Rate1": 891, "Amount1": [ 1, 1 @@ -148,7 +148,7 @@ "GameId": 207, "Bet": 65000, "ItemId1": 30001, - "Rate1": 483, + "Rate1": 965, "Amount1": [ 1, 1 @@ -159,7 +159,7 @@ "GameId": 207, "Bet": 70000, "ItemId1": 30001, - "Rate1": 520, + "Rate1": 1040, "Amount1": [ 1, 1 @@ -170,7 +170,7 @@ "GameId": 207, "Bet": 75000, "ItemId1": 30001, - "Rate1": 557, + "Rate1": 1114, "Amount1": [ 1, 1 @@ -181,7 +181,7 @@ "GameId": 207, "Bet": 80000, "ItemId1": 30001, - "Rate1": 594, + "Rate1": 1188, "Amount1": [ 1, 1 @@ -192,7 +192,7 @@ "GameId": 207, "Bet": 85000, "ItemId1": 30001, - "Rate1": 631, + "Rate1": 1262, "Amount1": [ 1, 1 @@ -203,7 +203,7 @@ "GameId": 207, "Bet": 90000, "ItemId1": 30001, - "Rate1": 668, + "Rate1": 1337, "Amount1": [ 1, 1 @@ -214,7 +214,7 @@ "GameId": 207, "Bet": 95000, "ItemId1": 30001, - "Rate1": 705, + "Rate1": 1411, "Amount1": [ 1, 1 @@ -225,7 +225,7 @@ "GameId": 207, "Bet": 100000, "ItemId1": 30001, - "Rate1": 743, + "Rate1": 1485, "Amount1": [ 1, 1 @@ -236,7 +236,7 @@ "GameId": 207, "Bet": 150000, "ItemId1": 30001, - "Rate1": 1114, + "Rate1": 2228, "Amount1": [ 1, 1 @@ -247,7 +247,7 @@ "GameId": 207, "Bet": 200000, "ItemId1": 30001, - "Rate1": 1485, + "Rate1": 2970, "Amount1": [ 1, 1 @@ -258,7 +258,7 @@ "GameId": 207, "Bet": 250000, "ItemId1": 30001, - "Rate1": 1856, + "Rate1": 3713, "Amount1": [ 1, 1 @@ -269,7 +269,7 @@ "GameId": 207, "Bet": 300000, "ItemId1": 30001, - "Rate1": 2228, + "Rate1": 4455, "Amount1": [ 1, 2 @@ -280,7 +280,7 @@ "GameId": 207, "Bet": 350000, "ItemId1": 30001, - "Rate1": 2599, + "Rate1": 5198, "Amount1": [ 1, 2 @@ -291,7 +291,7 @@ "GameId": 207, "Bet": 400000, "ItemId1": 30001, - "Rate1": 2970, + "Rate1": 5940, "Amount1": [ 1, 2 @@ -302,7 +302,7 @@ "GameId": 207, "Bet": 450000, "ItemId1": 30001, - "Rate1": 3341, + "Rate1": 6683, "Amount1": [ 1, 2 @@ -313,7 +313,7 @@ "GameId": 207, "Bet": 500000, "ItemId1": 30001, - "Rate1": 3713, + "Rate1": 7425, "Amount1": [ 2, 3 @@ -324,7 +324,7 @@ "GameId": 207, "Bet": 550000, "ItemId1": 30001, - "Rate1": 4084, + "Rate1": 8168, "Amount1": [ 2, 3 @@ -335,7 +335,7 @@ "GameId": 207, "Bet": 600000, "ItemId1": 30001, - "Rate1": 4455, + "Rate1": 8910, "Amount1": [ 2, 3 @@ -346,7 +346,7 @@ "GameId": 207, "Bet": 650000, "ItemId1": 30001, - "Rate1": 4826, + "Rate1": 9653, "Amount1": [ 2, 3 @@ -357,7 +357,7 @@ "GameId": 207, "Bet": 700000, "ItemId1": 30001, - "Rate1": 5198, + "Rate1": 10000, "Amount1": [ 2, 4 @@ -368,7 +368,7 @@ "GameId": 207, "Bet": 750000, "ItemId1": 30001, - "Rate1": 5569, + "Rate1": 10000, "Amount1": [ 2, 4 @@ -379,7 +379,7 @@ "GameId": 207, "Bet": 800000, "ItemId1": 30001, - "Rate1": 5940, + "Rate1": 10000, "Amount1": [ 2, 4 @@ -390,7 +390,7 @@ "GameId": 207, "Bet": 850000, "ItemId1": 30001, - "Rate1": 6311, + "Rate1": 10000, "Amount1": [ 2, 4 @@ -401,7 +401,7 @@ "GameId": 207, "Bet": 900000, "ItemId1": 30001, - "Rate1": 6683, + "Rate1": 10000, "Amount1": [ 3, 5 @@ -412,7 +412,7 @@ "GameId": 207, "Bet": 950000, "ItemId1": 30001, - "Rate1": 7054, + "Rate1": 10000, "Amount1": [ 3, 5 @@ -423,7 +423,7 @@ "GameId": 207, "Bet": 1000000, "ItemId1": 30001, - "Rate1": 7425, + "Rate1": 10000, "Amount1": [ 3, 5 @@ -436,8 +436,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 5, - 10 + 1, + 5 ] }, { @@ -447,8 +447,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 10, - 25 + 5, + 9 ] }, { @@ -458,8 +458,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 25, - 50 + 13, + 17 ] }, { @@ -469,8 +469,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 50, - 75 + 20, + 24 ] }, { @@ -480,8 +480,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 75, - 100 + 28, + 32 ] }, { @@ -491,8 +491,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 100, - 125 + 35, + 39 ] }, { @@ -502,8 +502,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 125, - 150 + 43, + 47 ] }, { @@ -513,8 +513,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 150, - 175 + 50, + 54 ] }, { @@ -524,8 +524,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 175, - 200 + 57, + 61 ] }, { @@ -535,8 +535,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 200, - 225 + 65, + 69 ] }, { @@ -546,8 +546,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 225, - 250 + 72, + 76 ] }, { @@ -555,7 +555,7 @@ "GameId": 208, "Bet": 2000, "ItemId1": 30001, - "Rate1": 15, + "Rate1": 30, "Amount1": [ 1, 1 @@ -566,7 +566,7 @@ "GameId": 208, "Bet": 5000, "ItemId1": 30001, - "Rate1": 37, + "Rate1": 74, "Amount1": [ 1, 1 @@ -577,7 +577,7 @@ "GameId": 208, "Bet": 10000, "ItemId1": 30001, - "Rate1": 74, + "Rate1": 149, "Amount1": [ 1, 1 @@ -588,7 +588,7 @@ "GameId": 208, "Bet": 15000, "ItemId1": 30001, - "Rate1": 111, + "Rate1": 223, "Amount1": [ 1, 1 @@ -599,7 +599,7 @@ "GameId": 208, "Bet": 20000, "ItemId1": 30001, - "Rate1": 149, + "Rate1": 297, "Amount1": [ 1, 1 @@ -610,7 +610,7 @@ "GameId": 208, "Bet": 25000, "ItemId1": 30001, - "Rate1": 186, + "Rate1": 371, "Amount1": [ 1, 1 @@ -621,7 +621,7 @@ "GameId": 208, "Bet": 30000, "ItemId1": 30001, - "Rate1": 223, + "Rate1": 446, "Amount1": [ 1, 1 @@ -632,7 +632,7 @@ "GameId": 208, "Bet": 35000, "ItemId1": 30001, - "Rate1": 260, + "Rate1": 520, "Amount1": [ 1, 1 @@ -643,7 +643,7 @@ "GameId": 208, "Bet": 40000, "ItemId1": 30001, - "Rate1": 297, + "Rate1": 594, "Amount1": [ 1, 1 @@ -654,7 +654,7 @@ "GameId": 208, "Bet": 45000, "ItemId1": 30001, - "Rate1": 334, + "Rate1": 668, "Amount1": [ 1, 1 @@ -665,7 +665,7 @@ "GameId": 208, "Bet": 50000, "ItemId1": 30001, - "Rate1": 371, + "Rate1": 743, "Amount1": [ 1, 1 @@ -676,7 +676,7 @@ "GameId": 208, "Bet": 55000, "ItemId1": 30001, - "Rate1": 408, + "Rate1": 817, "Amount1": [ 1, 1 @@ -687,7 +687,7 @@ "GameId": 208, "Bet": 60000, "ItemId1": 30001, - "Rate1": 446, + "Rate1": 891, "Amount1": [ 1, 1 @@ -698,7 +698,7 @@ "GameId": 208, "Bet": 65000, "ItemId1": 30001, - "Rate1": 483, + "Rate1": 965, "Amount1": [ 1, 1 @@ -709,7 +709,7 @@ "GameId": 208, "Bet": 70000, "ItemId1": 30001, - "Rate1": 520, + "Rate1": 1040, "Amount1": [ 1, 1 @@ -720,7 +720,7 @@ "GameId": 208, "Bet": 75000, "ItemId1": 30001, - "Rate1": 557, + "Rate1": 1114, "Amount1": [ 1, 1 @@ -731,7 +731,7 @@ "GameId": 208, "Bet": 80000, "ItemId1": 30001, - "Rate1": 594, + "Rate1": 1188, "Amount1": [ 1, 1 @@ -742,7 +742,7 @@ "GameId": 208, "Bet": 85000, "ItemId1": 30001, - "Rate1": 631, + "Rate1": 1262, "Amount1": [ 1, 1 @@ -753,7 +753,7 @@ "GameId": 208, "Bet": 90000, "ItemId1": 30001, - "Rate1": 668, + "Rate1": 1337, "Amount1": [ 1, 1 @@ -764,7 +764,7 @@ "GameId": 208, "Bet": 95000, "ItemId1": 30001, - "Rate1": 705, + "Rate1": 1411, "Amount1": [ 1, 1 @@ -775,7 +775,7 @@ "GameId": 208, "Bet": 100000, "ItemId1": 30001, - "Rate1": 743, + "Rate1": 1485, "Amount1": [ 1, 1 @@ -786,7 +786,7 @@ "GameId": 208, "Bet": 150000, "ItemId1": 30001, - "Rate1": 1114, + "Rate1": 2228, "Amount1": [ 1, 1 @@ -797,7 +797,7 @@ "GameId": 208, "Bet": 200000, "ItemId1": 30001, - "Rate1": 1485, + "Rate1": 2970, "Amount1": [ 1, 1 @@ -808,7 +808,7 @@ "GameId": 208, "Bet": 250000, "ItemId1": 30001, - "Rate1": 1856, + "Rate1": 3713, "Amount1": [ 1, 1 @@ -819,7 +819,7 @@ "GameId": 208, "Bet": 300000, "ItemId1": 30001, - "Rate1": 2228, + "Rate1": 4455, "Amount1": [ 1, 2 @@ -830,7 +830,7 @@ "GameId": 208, "Bet": 350000, "ItemId1": 30001, - "Rate1": 2599, + "Rate1": 5198, "Amount1": [ 1, 2 @@ -841,7 +841,7 @@ "GameId": 208, "Bet": 400000, "ItemId1": 30001, - "Rate1": 2970, + "Rate1": 5940, "Amount1": [ 1, 2 @@ -852,7 +852,7 @@ "GameId": 208, "Bet": 450000, "ItemId1": 30001, - "Rate1": 3341, + "Rate1": 6683, "Amount1": [ 1, 2 @@ -863,7 +863,7 @@ "GameId": 208, "Bet": 500000, "ItemId1": 30001, - "Rate1": 3713, + "Rate1": 7425, "Amount1": [ 2, 3 @@ -874,7 +874,7 @@ "GameId": 208, "Bet": 550000, "ItemId1": 30001, - "Rate1": 4084, + "Rate1": 8168, "Amount1": [ 2, 3 @@ -885,7 +885,7 @@ "GameId": 208, "Bet": 600000, "ItemId1": 30001, - "Rate1": 4455, + "Rate1": 8910, "Amount1": [ 2, 3 @@ -896,7 +896,7 @@ "GameId": 208, "Bet": 650000, "ItemId1": 30001, - "Rate1": 4826, + "Rate1": 9653, "Amount1": [ 2, 3 @@ -907,7 +907,7 @@ "GameId": 208, "Bet": 700000, "ItemId1": 30001, - "Rate1": 5198, + "Rate1": 10000, "Amount1": [ 2, 4 @@ -918,7 +918,7 @@ "GameId": 208, "Bet": 750000, "ItemId1": 30001, - "Rate1": 5569, + "Rate1": 10000, "Amount1": [ 2, 4 @@ -929,7 +929,7 @@ "GameId": 208, "Bet": 800000, "ItemId1": 30001, - "Rate1": 5940, + "Rate1": 10000, "Amount1": [ 2, 4 @@ -940,7 +940,7 @@ "GameId": 208, "Bet": 850000, "ItemId1": 30001, - "Rate1": 6311, + "Rate1": 10000, "Amount1": [ 2, 4 @@ -951,7 +951,7 @@ "GameId": 208, "Bet": 900000, "ItemId1": 30001, - "Rate1": 6683, + "Rate1": 10000, "Amount1": [ 3, 5 @@ -962,7 +962,7 @@ "GameId": 208, "Bet": 950000, "ItemId1": 30001, - "Rate1": 7054, + "Rate1": 10000, "Amount1": [ 3, 5 @@ -973,7 +973,7 @@ "GameId": 208, "Bet": 1000000, "ItemId1": 30001, - "Rate1": 7425, + "Rate1": 10000, "Amount1": [ 3, 5 @@ -986,8 +986,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 5, - 10 + 1, + 5 ] }, { @@ -997,8 +997,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 10, - 25 + 5, + 9 ] }, { @@ -1008,8 +1008,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 25, - 50 + 13, + 17 ] }, { @@ -1019,8 +1019,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 50, - 75 + 20, + 24 ] }, { @@ -1030,8 +1030,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 75, - 100 + 28, + 32 ] }, { @@ -1041,8 +1041,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 100, - 125 + 35, + 39 ] }, { @@ -1052,8 +1052,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 125, - 150 + 43, + 47 ] }, { @@ -1063,8 +1063,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 150, - 175 + 50, + 54 ] }, { @@ -1074,8 +1074,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 175, - 200 + 57, + 61 ] }, { @@ -1085,8 +1085,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 200, - 225 + 65, + 69 ] }, { @@ -1096,8 +1096,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 225, - 250 + 72, + 76 ] }, { @@ -1105,7 +1105,7 @@ "GameId": 209, "Bet": 2000, "ItemId1": 30001, - "Rate1": 15, + "Rate1": 30, "Amount1": [ 1, 1 @@ -1116,7 +1116,7 @@ "GameId": 209, "Bet": 5000, "ItemId1": 30001, - "Rate1": 37, + "Rate1": 74, "Amount1": [ 1, 1 @@ -1127,7 +1127,7 @@ "GameId": 209, "Bet": 10000, "ItemId1": 30001, - "Rate1": 74, + "Rate1": 149, "Amount1": [ 1, 1 @@ -1138,7 +1138,7 @@ "GameId": 209, "Bet": 15000, "ItemId1": 30001, - "Rate1": 111, + "Rate1": 223, "Amount1": [ 1, 1 @@ -1149,7 +1149,7 @@ "GameId": 209, "Bet": 20000, "ItemId1": 30001, - "Rate1": 149, + "Rate1": 297, "Amount1": [ 1, 1 @@ -1160,7 +1160,7 @@ "GameId": 209, "Bet": 25000, "ItemId1": 30001, - "Rate1": 186, + "Rate1": 371, "Amount1": [ 1, 1 @@ -1171,7 +1171,7 @@ "GameId": 209, "Bet": 30000, "ItemId1": 30001, - "Rate1": 223, + "Rate1": 446, "Amount1": [ 1, 1 @@ -1182,7 +1182,7 @@ "GameId": 209, "Bet": 35000, "ItemId1": 30001, - "Rate1": 260, + "Rate1": 520, "Amount1": [ 1, 1 @@ -1193,7 +1193,7 @@ "GameId": 209, "Bet": 40000, "ItemId1": 30001, - "Rate1": 297, + "Rate1": 594, "Amount1": [ 1, 1 @@ -1204,7 +1204,7 @@ "GameId": 209, "Bet": 45000, "ItemId1": 30001, - "Rate1": 334, + "Rate1": 668, "Amount1": [ 1, 1 @@ -1215,7 +1215,7 @@ "GameId": 209, "Bet": 50000, "ItemId1": 30001, - "Rate1": 371, + "Rate1": 743, "Amount1": [ 1, 1 @@ -1226,7 +1226,7 @@ "GameId": 209, "Bet": 55000, "ItemId1": 30001, - "Rate1": 408, + "Rate1": 817, "Amount1": [ 1, 1 @@ -1237,7 +1237,7 @@ "GameId": 209, "Bet": 60000, "ItemId1": 30001, - "Rate1": 446, + "Rate1": 891, "Amount1": [ 1, 1 @@ -1248,7 +1248,7 @@ "GameId": 209, "Bet": 65000, "ItemId1": 30001, - "Rate1": 483, + "Rate1": 965, "Amount1": [ 1, 1 @@ -1259,7 +1259,7 @@ "GameId": 209, "Bet": 70000, "ItemId1": 30001, - "Rate1": 520, + "Rate1": 1040, "Amount1": [ 1, 1 @@ -1270,7 +1270,7 @@ "GameId": 209, "Bet": 75000, "ItemId1": 30001, - "Rate1": 557, + "Rate1": 1114, "Amount1": [ 1, 1 @@ -1281,7 +1281,7 @@ "GameId": 209, "Bet": 80000, "ItemId1": 30001, - "Rate1": 594, + "Rate1": 1188, "Amount1": [ 1, 1 @@ -1292,7 +1292,7 @@ "GameId": 209, "Bet": 85000, "ItemId1": 30001, - "Rate1": 631, + "Rate1": 1262, "Amount1": [ 1, 1 @@ -1303,7 +1303,7 @@ "GameId": 209, "Bet": 90000, "ItemId1": 30001, - "Rate1": 668, + "Rate1": 1337, "Amount1": [ 1, 1 @@ -1314,7 +1314,7 @@ "GameId": 209, "Bet": 95000, "ItemId1": 30001, - "Rate1": 705, + "Rate1": 1411, "Amount1": [ 1, 1 @@ -1325,7 +1325,7 @@ "GameId": 209, "Bet": 100000, "ItemId1": 30001, - "Rate1": 743, + "Rate1": 1485, "Amount1": [ 1, 1 @@ -1336,7 +1336,7 @@ "GameId": 209, "Bet": 150000, "ItemId1": 30001, - "Rate1": 1114, + "Rate1": 2228, "Amount1": [ 1, 1 @@ -1347,7 +1347,7 @@ "GameId": 209, "Bet": 200000, "ItemId1": 30001, - "Rate1": 1485, + "Rate1": 2970, "Amount1": [ 1, 1 @@ -1358,7 +1358,7 @@ "GameId": 209, "Bet": 250000, "ItemId1": 30001, - "Rate1": 1856, + "Rate1": 3713, "Amount1": [ 1, 1 @@ -1369,7 +1369,7 @@ "GameId": 209, "Bet": 300000, "ItemId1": 30001, - "Rate1": 2228, + "Rate1": 4455, "Amount1": [ 1, 2 @@ -1380,7 +1380,7 @@ "GameId": 209, "Bet": 350000, "ItemId1": 30001, - "Rate1": 2599, + "Rate1": 5198, "Amount1": [ 1, 2 @@ -1391,7 +1391,7 @@ "GameId": 209, "Bet": 400000, "ItemId1": 30001, - "Rate1": 2970, + "Rate1": 5940, "Amount1": [ 1, 2 @@ -1402,7 +1402,7 @@ "GameId": 209, "Bet": 450000, "ItemId1": 30001, - "Rate1": 3341, + "Rate1": 6683, "Amount1": [ 1, 2 @@ -1413,7 +1413,7 @@ "GameId": 209, "Bet": 500000, "ItemId1": 30001, - "Rate1": 3713, + "Rate1": 7425, "Amount1": [ 2, 3 @@ -1424,7 +1424,7 @@ "GameId": 209, "Bet": 550000, "ItemId1": 30001, - "Rate1": 4084, + "Rate1": 8168, "Amount1": [ 2, 3 @@ -1435,7 +1435,7 @@ "GameId": 209, "Bet": 600000, "ItemId1": 30001, - "Rate1": 4455, + "Rate1": 8910, "Amount1": [ 2, 3 @@ -1446,7 +1446,7 @@ "GameId": 209, "Bet": 650000, "ItemId1": 30001, - "Rate1": 4826, + "Rate1": 9653, "Amount1": [ 2, 3 @@ -1457,7 +1457,7 @@ "GameId": 209, "Bet": 700000, "ItemId1": 30001, - "Rate1": 5198, + "Rate1": 10000, "Amount1": [ 2, 4 @@ -1468,7 +1468,7 @@ "GameId": 209, "Bet": 750000, "ItemId1": 30001, - "Rate1": 5569, + "Rate1": 10000, "Amount1": [ 2, 4 @@ -1479,7 +1479,7 @@ "GameId": 209, "Bet": 800000, "ItemId1": 30001, - "Rate1": 5940, + "Rate1": 10000, "Amount1": [ 2, 4 @@ -1490,7 +1490,7 @@ "GameId": 209, "Bet": 850000, "ItemId1": 30001, - "Rate1": 6311, + "Rate1": 10000, "Amount1": [ 2, 4 @@ -1501,7 +1501,7 @@ "GameId": 209, "Bet": 900000, "ItemId1": 30001, - "Rate1": 6683, + "Rate1": 10000, "Amount1": [ 3, 5 @@ -1512,7 +1512,7 @@ "GameId": 209, "Bet": 950000, "ItemId1": 30001, - "Rate1": 7054, + "Rate1": 10000, "Amount1": [ 3, 5 @@ -1523,7 +1523,7 @@ "GameId": 209, "Bet": 1000000, "ItemId1": 30001, - "Rate1": 7425, + "Rate1": 10000, "Amount1": [ 3, 5 @@ -1536,8 +1536,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 5, - 10 + 1, + 5 ] }, { @@ -1547,8 +1547,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 10, - 25 + 5, + 9 ] }, { @@ -1558,8 +1558,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 25, - 50 + 13, + 17 ] }, { @@ -1569,8 +1569,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 50, - 75 + 20, + 24 ] }, { @@ -1580,8 +1580,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 75, - 100 + 28, + 32 ] }, { @@ -1591,8 +1591,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 100, - 125 + 35, + 39 ] }, { @@ -1602,8 +1602,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 125, - 150 + 43, + 47 ] }, { @@ -1613,8 +1613,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 150, - 175 + 50, + 54 ] }, { @@ -1624,8 +1624,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 175, - 200 + 57, + 61 ] }, { @@ -1635,8 +1635,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 200, - 225 + 65, + 69 ] }, { @@ -1646,8 +1646,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 225, - 250 + 72, + 76 ] }, { @@ -1655,7 +1655,7 @@ "GameId": 210, "Bet": 2000, "ItemId1": 30001, - "Rate1": 15, + "Rate1": 30, "Amount1": [ 1, 1 @@ -1666,7 +1666,7 @@ "GameId": 210, "Bet": 5000, "ItemId1": 30001, - "Rate1": 37, + "Rate1": 74, "Amount1": [ 1, 1 @@ -1677,7 +1677,7 @@ "GameId": 210, "Bet": 10000, "ItemId1": 30001, - "Rate1": 74, + "Rate1": 149, "Amount1": [ 1, 1 @@ -1688,7 +1688,7 @@ "GameId": 210, "Bet": 15000, "ItemId1": 30001, - "Rate1": 111, + "Rate1": 223, "Amount1": [ 1, 1 @@ -1699,7 +1699,7 @@ "GameId": 210, "Bet": 20000, "ItemId1": 30001, - "Rate1": 149, + "Rate1": 297, "Amount1": [ 1, 1 @@ -1710,7 +1710,7 @@ "GameId": 210, "Bet": 25000, "ItemId1": 30001, - "Rate1": 186, + "Rate1": 371, "Amount1": [ 1, 1 @@ -1721,7 +1721,7 @@ "GameId": 210, "Bet": 30000, "ItemId1": 30001, - "Rate1": 223, + "Rate1": 446, "Amount1": [ 1, 1 @@ -1732,7 +1732,7 @@ "GameId": 210, "Bet": 35000, "ItemId1": 30001, - "Rate1": 260, + "Rate1": 520, "Amount1": [ 1, 1 @@ -1743,7 +1743,7 @@ "GameId": 210, "Bet": 40000, "ItemId1": 30001, - "Rate1": 297, + "Rate1": 594, "Amount1": [ 1, 1 @@ -1754,7 +1754,7 @@ "GameId": 210, "Bet": 45000, "ItemId1": 30001, - "Rate1": 334, + "Rate1": 668, "Amount1": [ 1, 1 @@ -1765,7 +1765,7 @@ "GameId": 210, "Bet": 50000, "ItemId1": 30001, - "Rate1": 371, + "Rate1": 743, "Amount1": [ 1, 1 @@ -1776,7 +1776,7 @@ "GameId": 210, "Bet": 55000, "ItemId1": 30001, - "Rate1": 408, + "Rate1": 817, "Amount1": [ 1, 1 @@ -1787,7 +1787,7 @@ "GameId": 210, "Bet": 60000, "ItemId1": 30001, - "Rate1": 446, + "Rate1": 891, "Amount1": [ 1, 1 @@ -1798,7 +1798,7 @@ "GameId": 210, "Bet": 65000, "ItemId1": 30001, - "Rate1": 483, + "Rate1": 965, "Amount1": [ 1, 1 @@ -1809,7 +1809,7 @@ "GameId": 210, "Bet": 70000, "ItemId1": 30001, - "Rate1": 520, + "Rate1": 1040, "Amount1": [ 1, 1 @@ -1820,7 +1820,7 @@ "GameId": 210, "Bet": 75000, "ItemId1": 30001, - "Rate1": 557, + "Rate1": 1114, "Amount1": [ 1, 1 @@ -1831,7 +1831,7 @@ "GameId": 210, "Bet": 80000, "ItemId1": 30001, - "Rate1": 594, + "Rate1": 1188, "Amount1": [ 1, 1 @@ -1842,7 +1842,7 @@ "GameId": 210, "Bet": 85000, "ItemId1": 30001, - "Rate1": 631, + "Rate1": 1262, "Amount1": [ 1, 1 @@ -1853,7 +1853,7 @@ "GameId": 210, "Bet": 90000, "ItemId1": 30001, - "Rate1": 668, + "Rate1": 1337, "Amount1": [ 1, 1 @@ -1864,7 +1864,7 @@ "GameId": 210, "Bet": 95000, "ItemId1": 30001, - "Rate1": 705, + "Rate1": 1411, "Amount1": [ 1, 1 @@ -1875,7 +1875,7 @@ "GameId": 210, "Bet": 100000, "ItemId1": 30001, - "Rate1": 743, + "Rate1": 1485, "Amount1": [ 1, 1 @@ -1886,7 +1886,7 @@ "GameId": 210, "Bet": 150000, "ItemId1": 30001, - "Rate1": 1114, + "Rate1": 2228, "Amount1": [ 1, 1 @@ -1897,7 +1897,7 @@ "GameId": 210, "Bet": 200000, "ItemId1": 30001, - "Rate1": 1485, + "Rate1": 2970, "Amount1": [ 1, 1 @@ -1908,7 +1908,7 @@ "GameId": 210, "Bet": 250000, "ItemId1": 30001, - "Rate1": 1856, + "Rate1": 3713, "Amount1": [ 1, 1 @@ -1919,7 +1919,7 @@ "GameId": 210, "Bet": 300000, "ItemId1": 30001, - "Rate1": 2228, + "Rate1": 4455, "Amount1": [ 1, 2 @@ -1930,7 +1930,7 @@ "GameId": 210, "Bet": 350000, "ItemId1": 30001, - "Rate1": 2599, + "Rate1": 5198, "Amount1": [ 1, 2 @@ -1941,7 +1941,7 @@ "GameId": 210, "Bet": 400000, "ItemId1": 30001, - "Rate1": 2970, + "Rate1": 5940, "Amount1": [ 1, 2 @@ -1952,7 +1952,7 @@ "GameId": 210, "Bet": 450000, "ItemId1": 30001, - "Rate1": 3341, + "Rate1": 6683, "Amount1": [ 1, 2 @@ -1963,7 +1963,7 @@ "GameId": 210, "Bet": 500000, "ItemId1": 30001, - "Rate1": 3713, + "Rate1": 7425, "Amount1": [ 2, 3 @@ -1974,7 +1974,7 @@ "GameId": 210, "Bet": 550000, "ItemId1": 30001, - "Rate1": 4084, + "Rate1": 8168, "Amount1": [ 2, 3 @@ -1985,7 +1985,7 @@ "GameId": 210, "Bet": 600000, "ItemId1": 30001, - "Rate1": 4455, + "Rate1": 8910, "Amount1": [ 2, 3 @@ -1996,7 +1996,7 @@ "GameId": 210, "Bet": 650000, "ItemId1": 30001, - "Rate1": 4826, + "Rate1": 9653, "Amount1": [ 2, 3 @@ -2007,7 +2007,7 @@ "GameId": 210, "Bet": 700000, "ItemId1": 30001, - "Rate1": 5198, + "Rate1": 10000, "Amount1": [ 2, 4 @@ -2018,7 +2018,7 @@ "GameId": 210, "Bet": 750000, "ItemId1": 30001, - "Rate1": 5569, + "Rate1": 10000, "Amount1": [ 2, 4 @@ -2029,7 +2029,7 @@ "GameId": 210, "Bet": 800000, "ItemId1": 30001, - "Rate1": 5940, + "Rate1": 10000, "Amount1": [ 2, 4 @@ -2040,7 +2040,7 @@ "GameId": 210, "Bet": 850000, "ItemId1": 30001, - "Rate1": 6311, + "Rate1": 10000, "Amount1": [ 2, 4 @@ -2051,7 +2051,7 @@ "GameId": 210, "Bet": 900000, "ItemId1": 30001, - "Rate1": 6683, + "Rate1": 10000, "Amount1": [ 3, 5 @@ -2062,7 +2062,7 @@ "GameId": 210, "Bet": 950000, "ItemId1": 30001, - "Rate1": 7054, + "Rate1": 10000, "Amount1": [ 3, 5 @@ -2073,7 +2073,7 @@ "GameId": 210, "Bet": 1000000, "ItemId1": 30001, - "Rate1": 7425, + "Rate1": 10000, "Amount1": [ 3, 5 @@ -2086,8 +2086,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 5, - 10 + 1, + 5 ] }, { @@ -2097,8 +2097,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 10, - 25 + 5, + 9 ] }, { @@ -2108,8 +2108,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 25, - 50 + 13, + 17 ] }, { @@ -2119,8 +2119,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 50, - 75 + 20, + 24 ] }, { @@ -2130,8 +2130,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 75, - 100 + 28, + 32 ] }, { @@ -2141,8 +2141,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 100, - 125 + 35, + 39 ] }, { @@ -2152,8 +2152,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 125, - 150 + 43, + 47 ] }, { @@ -2163,8 +2163,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 150, - 175 + 50, + 54 ] }, { @@ -2174,8 +2174,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 175, - 200 + 57, + 61 ] }, { @@ -2185,8 +2185,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 200, - 225 + 65, + 69 ] }, { @@ -2196,8 +2196,8 @@ "ItemId1": 30001, "Rate1": 10000, "Amount1": [ - 225, - 250 + 72, + 76 ] }, { diff --git a/data/DB_GiftCard.dat b/data/DB_GiftCard.dat index 15600367ff42a73b75826e6378f02a3bde3a8661..96640b07f274cbbbda035ee3e52503c8356a73cb 100644 GIT binary patch delta 38 pcmcDtoFJjd$+57PP2j+^jZ8{x92eV|1-P_0AVMv+2JBXh3;@YB39kSE delta 38 pcmcDtoFJjd#&NNYS%6E4lVf2oo4|o-8=15?Aj}q919mG$1^~Z739kSE diff --git a/data/DB_PropExchange.dat b/data/DB_PropExchange.dat index bed563e..f970136 100644 --- a/data/DB_PropExchange.dat +++ b/data/DB_PropExchange.dat @@ -1,5 +1,5 @@ 6Նֆ׆ӆԆ"= -.؆نچۆ"= -WֆՆԆ׆؆نچۆӆ"  -]׆؆ۆӆԆֆ܆Նنچ" \ No newline at end of file +.ۆ؆نچ"= +W׆؆نچۆӆԆՆֆ"  +]׆چӆՆ؆نۆ܆Ԇֆ" \ No newline at end of file diff --git a/data/DB_Task.dat b/data/DB_Task.dat index 50d1fa8de0f5314064288ffcb86caf84641cc814..f737dc064b100da94bcf1492f644cd3cf7304e76 100644 GIT binary patch delta 173 zcmX@l|ABwPOhFEgg}rP73wqhC*f^E|S#ld!*)wvA3b08qD+p<%OuopNCB(+D2qkyRn>`Y``KhS%)#?8}M)fgvBFoATRV-pu<2OEEa5!w77Y&DZ7vk6UZV>g>D!YT{^Len!- delta 199 zcmeysf1ZEBOhGn|CB19{a#kE13xV{4Ubc;^>=`F>F$D>6f<+o`9pSWM<5&cgG@6{p zbWI4tPO*YYuYJTaIgB|8Xbwn;2-KX0&Z@~LnL8%4u?tU5VYxUtkVRs$FKfi)PfVhl tcd;rnVl(AEn>bLN@MKB$8mP1p)RF_!HZo0K&Tb~m4z}b3Bg}H3+W=r5JJkRH diff --git a/data/DB_Task.json b/data/DB_Task.json index 038ecda..2179a0d 100644 --- a/data/DB_Task.json +++ b/data/DB_Task.json @@ -199,6 +199,18 @@ "100002": 10 } }, + { + "Id": 21, + "Order": 6, + "ActivityType": 3, + "TaskType": 18, + "TargetTimes": 100, + "FinishTimes": 1, + "Award": { + "100001": 10000000, + "100002": 10 + } + }, { "Id": 17, "Order": 1, diff --git a/dbproxy/svc/u_invitescore.go b/dbproxy/svc/u_invitescore.go index 927913d..2684de5 100644 --- a/dbproxy/svc/u_invitescore.go +++ b/dbproxy/svc/u_invitescore.go @@ -48,6 +48,7 @@ func (b *BindScoreSvc) GetInviteScore(req *model.InviteScoreReq, ret *model.Invi type M struct { Score int64 + Money int64 } var tc []M @@ -58,6 +59,7 @@ func (b *BindScoreSvc) GetInviteScore(req *model.InviteScoreReq, ret *model.Invi {"$group": bson.M{ "_id": nil, "score": bson.M{"$sum": "$score"}, + "money": bson.M{"$sum": "$money"}, }}, }).AllowDiskUse().All(&tc) if err != nil { @@ -67,6 +69,7 @@ func (b *BindScoreSvc) GetInviteScore(req *model.InviteScoreReq, ret *model.Invi if len(tc) > 0 { ret.Score = tc[0].Score + ret.Money = tc[0].Money c := PlayerDataCollection(req.Platform) if c == nil { return PlayerColError diff --git a/model/invitecode.go b/model/invitecode.go index c99bc8b..598dc9d 100644 --- a/model/invitecode.go +++ b/model/invitecode.go @@ -53,6 +53,7 @@ type InviteScore struct { Tp int32 // 积分类型 common.InviteScoreType~ Score int64 // 积分 Ts int64 // 时间戳 + Money int64 // 充值金额 } type InviteScoreReq struct { @@ -61,16 +62,18 @@ type InviteScoreReq struct { } type InviteScoreRet struct { - Score int64 - ZScore int64 + Score int64 // 包含扣积分 + ZScore int64 // 只包含大于0的积分 + Money int64 // 充值金额 } // GetInviteScore 查询总积分 // 下级玩家所有积分 -func GetInviteScore(plt string, snid int32) (int64, int64, error) { +// 返回 包含扣积分,只包含大于0的积分,充值金额 +func GetInviteScore(plt string, snid int32) (int64, int64, int64, error) { if rpcCli == nil { logger.Logger.Warnf("rpcCli is nil") - return 0, 0, errors.New("rpcCli is nil") + return 0, 0, 0, errors.New("rpcCli is nil") } req := &InviteScoreReq{ @@ -81,10 +84,10 @@ func GetInviteScore(plt string, snid int32) (int64, int64, error) { err := rpcCli.CallWithTimeout("BindScoreSvc.GetInviteScore", req, ret, time.Second*30) if err != nil { logger.Logger.Warnf("GetInviteScore err:%v", err) - return 0, 0, err + return 0, 0, 0, err } - return ret.Score, ret.ZScore, err + return ret.Score, ret.ZScore, ret.Money, err } // SaveInviteScore 保存积分变更记录 diff --git a/worldsrv/action_welfare.go b/worldsrv/action_welfare.go index 89b2c88..abe2225 100644 --- a/worldsrv/action_welfare.go +++ b/worldsrv/action_welfare.go @@ -313,28 +313,25 @@ func CSInviteInfo(s *netlib.Session, packetid int, data interface{}, sid int64) res, err = webapi.ApiGetInviteLink(common.GetAppId(), req) return nil }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { + info := webapi_proto.SAPlayerInviteLink{} + link := "" if err != nil || res == nil { logger.Logger.Errorf("ApiGetInviteLink err %v or not return", err) - return - } - - var info webapi_proto.SAPlayerInviteLink - proto.Unmarshal(res, &info) - - if info.Tag == webapi_proto.TagCode_SUCCESS { - ret := &welfare.SCInviteInfo{ - Num: p.InviteNum, - Code: p.InviteCode, - InviteUrl: info.Link, - Score: p.InviteScore, - OtherCode: p.OtherCode, - } - - p.SendToClient(int(welfare.SPacketID_PACKET_SCInviteInfo), ret) - logger.Logger.Tracef("SCInviteInfo %v", ret) } else { - logger.Logger.Errorf("ApiGetInviteLink:%v", info.String()) + proto.Unmarshal(res, &info) + logger.Logger.Infof("ApiGetInviteLink info %v", info.String()) + link = info.Link } + + ret := &welfare.SCInviteInfo{ + Num: p.InviteNum, + Code: p.InviteCode, + InviteUrl: link, + Score: p.InviteScore, + OtherCode: p.OtherCode, + } + p.SendToClient(int(welfare.SPacketID_PACKET_SCInviteInfo), ret) + logger.Logger.Tracef("SCInviteInfo %v", ret) })).Start() return nil } diff --git a/worldsrv/invitecode.go b/worldsrv/invitecode.go index 9d17ecd..74eb10f 100644 --- a/worldsrv/invitecode.go +++ b/worldsrv/invitecode.go @@ -30,20 +30,29 @@ func SaveInviteScore(data *model.InviteScore) { return nil }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { p := PlayerMgrSington.GetPlayerBySnId(data.InviteSnId) - if err == nil && p != nil && data.Score != 0 { - if data.Score < 0 { - if -data.Score > p.InviteScore { - data.Score = -p.InviteScore + if err == nil && p != nil { + if data.Score != 0 { + if data.Score < 0 { + if -data.Score > p.InviteScore { + data.Score = -p.InviteScore + } + } + p.InviteScore += data.Score + p.dirty = true + + // 更新邀请任务进度 + if data.Score > 0 { + TaskSubjectSingleton.Touch(common.TaskTypeInviteScore, &TaskData{ + SnId: p.SnId, + Num: data.Score, + }) } } - p.InviteScore += data.Score - p.dirty = true - // 更新邀请任务进度 - if data.Score > 0 { - TaskSubjectSingleton.Touch(common.TaskTypeInviteScore, &TaskData{ + if data.Money > 0 { + TaskSubjectSingleton.Touch(common.TaskTypeInviteRecharge, &TaskData{ SnId: p.SnId, - Num: data.Score, + Num: data.Money, }) } } @@ -51,10 +60,10 @@ func SaveInviteScore(data *model.InviteScore) { } func GetInviteScore(platform string, snid int32) { - var n, z int64 + var n, z, money int64 var err error task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - n, z, err = model.GetInviteScore(platform, snid) + n, z, money, err = model.GetInviteScore(platform, snid) if err != nil { logger.Logger.Errorf("GetInviteScore error:%v", err) return err @@ -72,6 +81,12 @@ func GetInviteScore(platform string, snid int32) { SnId: p.SnId, Num: z, }) + + p.ResetTaskN(common.TaskTypeInviteRecharge) + TaskSubjectSingleton.Touch(common.TaskTypeInviteRecharge, &TaskData{ + SnId: p.SnId, + Num: money, + }) } })).StartByFixExecutor(fmt.Sprintf("invite_score_%v", snid)) } diff --git a/worldsrv/player.go b/worldsrv/player.go index 42ff50c..d42d8b1 100644 --- a/worldsrv/player.go +++ b/worldsrv/player.go @@ -4431,8 +4431,9 @@ func (this *Player) InviteTask(scoreType int32, gameId int32, n int64) { SnId: this.SnId, InviteSnId: this.InviteSnId, Tp: scoreType, - Score: a * 10000, + Score: a * common.InviteScoreRecharge, Ts: time.Now().UnixNano(), + Money: n, }) case common.InviteScoreTypeGameTimes: diff --git a/worldsrv/taskmgr.go b/worldsrv/taskmgr.go index fab15fb..0ef1159 100644 --- a/worldsrv/taskmgr.go +++ b/worldsrv/taskmgr.go @@ -245,4 +245,5 @@ func init() { TaskSubjectSingleton.Attach(common.TaskTypeFirstLogin, taskHandle) TaskSubjectSingleton.Attach(common.TaskTypeInviteNum, taskHandle) TaskSubjectSingleton.Attach(common.TaskTypeTurnplate, taskHandle) + TaskSubjectSingleton.Attach(common.TaskTypeInviteRecharge, taskHandle) } diff --git a/xlsx/DB_Game_Drop.xlsx b/xlsx/DB_Game_Drop.xlsx index 55883fa5840efa32e8e1f7f2d14746fdf1980293..4baa28c70756a6757fee7cc705d0e278a3afb7c9 100644 GIT binary patch delta 12550 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 AJpcdz delta 12572 zcmZ{rcQ{;a*Y@=m-C*=Ch%)*_^p=P=LWGDOEkQ{1lC2wz7NSHjNRSXELo-i+*!g(q6gVfeO&ciT1zW;BCEMzOK;O|S3zgO#Z|x}>*W0R;knxT zfxEW{E}7h6&g2>A5x^5c3Gc~YKNxbCS5Dlyr)|MRadkXMEpKj@mrk0lt@)j_w25U% z44&3C{$*B?x>BY#Jz-_{(MyzUE$Kjc^f7GwYRM;)?W;3k2~Ua}pL8g+Q@~0N)GIY^ zmR}#~t9pQY%c@X0c%O2Jy;aGA%J`EKQPOi=AAjrqCc}(WS%aUDj-gt%3a#~GHuTdc^VZDlFv-4~38@)#JEwaqM)M+G z-p5GVUd(D6e>)D>yjEWVlIO zFeo4{>f_@4Jk#C-nOZD|F*ct+T zP7XKMK7PD>z5~>qr>-R3=@UDcR-6KSPrL#E|Lwl{osNdHqwMn`F(vlwv$K=mJ^{YN z5&`~C{kMPr{CR9SRp)!Q`TKD1?DyXM!Td*t-@AvqduOjt7l$4_%4$$z+fXVY4m{nq z_xAJqy|8kM`IwY7E2giMG`}@e5J}ZO(N5I>C_MH5rIi(Dxo&y)yf2%hUg=>K5ODG) z0N}`82P&ToKSj4ru$KpP`7Up)U?L0J7u)s4N|ofF1`e5ZIr#1@v}G=iQVG%o@9mxa z+GqgIQ&SH8uYGDz2=Mj!z35jn-oItH@Ox{%eT8E>+Y&gGslie18qS#Sss(>#ZN??$GUnq7}?XbA8<^g211=V%vO3;K9D^>GLXdqZXM8ekb1n2-o; zFRz>`jR5Cms6MgtlfkwViCyzgES>usIrl_gp`t7UO|0YFPMRF%XZ9Z{9Io!YKmLa4 zYoA@4_B$NbA9d9jF?2p32^F&dvdvGO*Sg$&jz6-W?R+S0YXT*kdn?(BYcj-pvWwfR zep!D0U9q1~FVEsi=C2bSl{UyLocRp%2k(z40u8Bx4}N#uW{Kta(F!Epna-+|EssrF z++XHs$U56zpwg0r92c9^&6yjo*3HRW>8+a+z0&)6F3|X%Pb=3IQQa*d-v9<#^B^Vj z-CNUQc@{C(Noi@lRxvkzWy-EK_Re?vR$AmVjh6CR)(yNJ{6w84%InwcLewk*{U6uI zMIoNXmrpu1?)F~S$NZXn;Pcp`**~y=mMPw$pr9b<%pWD@4t1p7){nZjZjqsz)3zfTmcyFDp zH?`vfy8ODBnVT)ww*977z;{%dGPBk2j+W;#)Urg)pEy=EckD zH#qR7bwGks(FFRyh@^#%hG0@?FT=mOc>fX+DIR%t5{*^6nm;KnzqPlIHaE&k)*8hw zOfD@%U=v0XvK}ANK#DxLq)CcTo?T&$##<5-N9bN9e>o$}3Y4+uXtpZL(^#X8wd9cA zDW@R@%{Z74PFUTC`J4tfO7DC@CadQaMLq`=z&uvE3Q9|y?5IztE|iSUtc5s7+T=!t z63R`#ozmV@j_`afgdz>N$-gSSBX16?wS?V-S{*)%#iv&WqJkgXBocrt#UH4x&^$0A zZxN>K=yqmJ5xEcE((z7*MoC z(0ZGBWx{?-8}y6EtmqjV#)X%mdnD2ezHt3&WF(mWE|?xZQA+&Ao0EKV=86oZ5zZ+e z(OW?#^voRhB#SiIA0nH468t@rE1?NMgH7JoRI9O33p7pG(rkI1ts zODZT$Zvu|q*AHo@Jvk74!Bo8|%|y%}bk=Q)-OvFB$M{WW-;~!ISn02UO zm)J-Is^#KkuN&uuaC*fkD>GKbXu2=v{^~$qD(#D+CD1J+RFVF9Ls`Y&7$U%4Od)W~ zfEuGAfToJc?m1Y=mXL`Exn`0drmjNYZv~IKb|;LIP?tL`WoN}VVm_oF4oPPQQ~=~p zZb*OBnri5AX3RqQOtXX_FWK85BDF+Nf2*JOO882Ql^taYPP7rE#e;@ysnrWyD@Je8 z7lKwMM|}_@Tnc`&w}Pc4kX5f*k5FvXS0^UamKp+ulg}7HtxA)IBq4ceU(%onf>0_= zpfLYcP{?GfZuN5xFXl*YU`I!uP~0L6@2K3onri(bu20~rWPw6FW*vx;;VrPbd`L8F zv9`c11bjZD>;Z4J|ry-uC8ViM9cYv1kF)>wK^KYi`s8hd$*km1CDhm$b zaDt0PfWR)*UN@m_`kDp)g*ZknF*@WBRJ)j-Am1xt9IN6)>lE+agh=5^LG|W(?Q$Se z9XDrBxW9M&ZCDW4u&&-*Z+VPBPSEV$?5$ih=+*$C>#KpDIgy*{pae$vAa4YaP27;L z-tR=huDAjb2CBH2mHF2f%a)6N@eGelG$jKT$pN-NLi(u%HNK_*S}cZY@4x}d2Z7Zo zTHXA&H1Hyrljxo$UZKS0HjN~NyLJvw^q3&9n*vro zf!+TuRvaOua#6>6U+$$7Yjk%}ThFD%@7GGiig@4|1lI@|dm#6G0{bC?X?V;ih>oFw zTgd(^K#&)1!isep^t0S;J>Z+X7ori{tg}KvYXqqWw0ExepkFa9g6n*Ww4`_b`gCY( z&KG%lC1|y;{PjhK%UPdeXvuxtj-P%yp=*fFr(J?sgXbVKLb-n5vrN%}-X~=FDw3E7 z(_~t)skquFeiLq04J6-SHIlf7qUu=(?$OJr$>IJ?C~7n`>QlJ~ot^16l}cEI^0C6? zMPmq5rOh~v3@J$<2x_6U+cR2kiMcdULCOF__Vzj$OxdbhDZJ-S!~^>nU-iO#f?zx{ zRl*7~d7VAZmKYjp$AMnVhgzj}0o++kKs2JqSv(Y>ONvJb2_v(o_sLpTK>}<%oc*se zuV40!Gr(&OkGZNUUC~OeD$Vy##`-xG%N~{{il_Q{jEwuJ<3hNue;-u*PZ@C$rMg*hi*m78(QEm5AZ1WP zl7w-c%8rg?sG9+NG2(m~6bx%B#_QWsASw6uRlirbVs^cy(q{5@4Oj=|!jrJqX(IO2 zX_3E4w7Jc1QNOS@4sI`E5A%`4!xNd%sBS!9gz|C1Pr z%~``&Ym)l$p1Q3s5IkUh(l%L3-J2TDt~k*}ZDeS{AaEn*UNND7_(ot>P@1SJ+P_?d z^KR!Q6fGV!C5PIT-V0vIDBqdsbQ8~nSCJ7uHjBvR=5&prUgCGACdppH<|lyZv@N}3 zqdMgyNDH$d75LI+Aw|X~L@-xD65`rG6w*I+hL=Zx8v%TqW4y+G1ky>zFb?kypTg7k z7eo|hu`?wrZ{4puYDLYVZUM5!&02=# zUvjEg(AX-d#zqH2uQa2N-!*ZLw}B-PK`l<7yrjAP7h3?DQ!KU|GtbooGk?rG6dcBWQ-S7NzK}aAOkRI*7PpSlsJ`0bfUz3C&p=XAPo% zu8IU-$~tx6vV{#uYM2?DZTlmzImx(W+sjbnJS(@>z&R}O-G^JJG$ipE?SUd&owBAz zsptA0A$4+X&4@gk#=trHn#x1^bns*$^0|ni23SvhmelRQDFSQqlE=U+_1h}D1uATCX^t-J(|LZ~}o zPB+O+@=upAN)Q*j0k5tHkQ4@{4SRaltv{qHl}7z@N@tFts*r%HZj8<*BhL0MQk&N-K#g z|Jy&j_i_>RAf|D7ApNPW8>t&VWy3%IZ$>~J52u5ivKKABnWW# zn3d6kQ79h(f$4zNhlr4+h2K)fHD$wGun;>p%;|Hkmx_ak{r?#;@4Nc?+R{UC6`|Ow znivSXRR#a_JAcQ0rvbIrb^+g$P zb5wxJs#S>T>$_}Ec-V#YDZso2-_?(oa>MYCYR(L}6Y4&YS73G(G>4KgxGM-skfm>j z#bxK30TN;<2iXDT5@JEVW?U-vR1LhG7vF4%a$e99kO`2`cMAkW(tjMUyc6>Hj9Wd9IIs2-13<$bi)xr284t>g1?W66pquL<1=bNvL1Ff^8Pa*ee zGsEBBmgst8QYkNWwBpycbtjjZ+QW;Sr0rO8d~9(|N8*@Q8Ag{OZvWyzkWQSYNotfe3Fd9_D72Vq=zBCtY3PU52)@#&p@lfRSLh+9|t@>r-IWiB#V z`b+=I_33Z%hDPLs>|&ujIfy2HGWubGm)!Cyj&zX`IX9zJUoxo;uw~>Td!Jlwg{uX- zOL$F`AqYK~l#+A}dQ^vy+-HDGO?f}eNYE5{)mFI1$&ewZL&m}CWqBjq%ve%VIW?zy z5;81&FQ@Xoy?u}bAGx?Axu&cunJxQN;OOIMcOp#tH;r7fB?%0|fC8W1H>$@O(%D@> zN*9qPMU>XB?3~MPA2cVOUf+(2Chc1G7a-z07`dRtn5;bwkVi=+|yL!wn~{(#cZ zjXdAI9+X--t>&z%%ac?}9up+!0>ezy_Ko>vI&Muj3`Vhsu1`EPed}^7j|r_q3aHgF zu`o?m#CGwn(~ntMy^JMCRkXq-@jcS5t(Yk>f`fjnck{!z7Gj&+@_X}@yx`CBl@o-G1jetr4L~5~Sk%{DmF4Trijq~5+GFv5_n;WHAiG;Rqv0*b4 z#WiiViPqVzNi@N0bzr>=tKH-oU>%Xc(RKEbDT3C>U|ZPB@|bJ_mJ4qVSG?{27*p1; zs8j0#+uSG)?Hv>82#z>)X?}MwIXCA_+Ghl2k%5x~Mn7)LSL%?ek+X&dx0TH99fZh8 zzoj@`{lx27Y?pM@b3Q+N6$=uw_`pm-Rsm|t{`kI|xf*#3X5NVB;V5!G26W%$EW z;UWxkXinQZ3`wfW1RFJWMZYco36sNvk$%Q_*pJ;qZsbJFwGpxw{8bHrj{8GT_o{9O z@m79v=THpj`PYSKv^ey^_mMA6nK1l$a^kjMbLeoFhe__$@)QsJ7VMlxt}1L~sR1k9JEZWIE^*eSt$&q5IpJ%M zlH9G>pO<gdw?}LaZyUk_3@!syy8+Ge}G;DJ5e;S2#mbBc~o*$H+q1BJmFS0M>s1 zIk8;RAOFEyp8OOtC2J$a&vaRZ-nzpzEacQzx(C+9QasO@BJeXU@L#%F0WZN?&6O+5 z-aXo0YLwr#DVM@S6?5f!-ek4;1*NR?`=?M3zJccb#tt})svT@a8gfL?9a&%te>ti> zu_j!V6kB(hoS0od719IAV7#<23rDCJ(_<}dd5}l$_&IbuA5W2?r3* zZdMnC13+b2<`Zn?0Un?qm0ZvK`0Xd{HSrWp*2fcHY6o$yvx@4uRm07Zm1zW1AHp!| zKbPFd-ZMn~t-pWe@0LQ9P9Jr0IDNB_ODE>f#b5?W#NP`ziQ~FuUxq|Pjw!a`uUYZD z^s#!mwdsCDlfC*Tse#=o*AED=65I~2#n@csr}o)r2|~WJRqkJxZXqRUW1>bK#EalA zui4aYbSsil>$DJ)2*IgucdKrm$l}o0wg;hSA0p|fQIeccjypR1xw+p2xN>v-kmwLP zgH~aJz94*>EiV*_U;Vy4KR47t9cEE{_pY-g8kB{kA3{|KFXu)BrX=k6#N0L;P@2j> z?eTF3Qvc&_tp@=Zxt38=-gp`j2^KzeBcpg4BRB51Y2hk@%%1%#5oOrKG5pVR~EYA{^aC zZc~yhVt|-?ZU;)U3v~HDerr9E9WXqz)!LcA|6#`Xq_3XZF82j8p9VBa#wnrSL1+50 zolD($;^l{%<7Wju&*$&+>R}CZW#~w;^w_qj^U)Nb)pbAzhO^4*tDHO`GU9>l{teX> zK2RF@`n%KjwLqgJ_PGbl+JyYxZ95Xqk|slN*ZErZ1Julxt&Q#uk}o}$ zmOCv9w93JQt^6BUxoaHFFVWKT?+6x}r?;GK3Fd1L1HXH7>Dk}bhGpHu6x}#)=jN00F@`UQf5_n)-Ea~yFcQ@#z)VJ= z_MA5SP&Oj>SWYAH-dmS_!yLEvii~%5L86kEbTE;GLfc3D#;@;l^~RPj#p#)b@lVi) zxO;_Ly)1e3o;*VsM&S?~y>AzwbTZ!94^IZ6;A9J{NjHS%W zc_kL&)sS~@DEMEK}c|WX@hKn6)5k9 z85v=e2~DT($Et$VGLa_AGlPeVPiDk{umr&^QNOeM=3lzs4;(sgFH!BPIi?J@uH7!q z+u&A!d%ELcT7Mn!8#*_^3`jA8Uyk@=)Y2c^2Z|>)VbIBwUtdT#H1=a$rg_XIpg!{E z)AyOsT~ZP{Mwmub-;A7Z0@#{l!I~UcV1veLF>CW!T!I0+aLnyN3Qy?@_e5Vgo7{x4 zgkur&h&)2l)2T0~Rc7~%)y!5ATRdGMwwdHQ7;Eq(oNmF6AKBtiV0q%leHIHq=r3ON zMrBR^(i5!rLe(G+U0NB3-+;k-!TF%%kxd4{&%|ISIJr^6o^CM~ofpiDNA=sWFhLz) zu!|Ty|Az#V7D<(DopEOLgos`LPa*&uAh4Zn0jH)d%F3}U$MVTQIn)njb8r%oitq?b zvKtHgAIVr*m>gGADh&s0CU9=^;KvuNWC&yUv2~$CiXYk72|-ut6$v8N4u-C4VmYlD z5i_)>n?Dv}&FvK044z%}9dn33bA__)DA1--moe6+-1^1My{5hc(r=emu)#n#3@bAL zg%ZlxQA*i`80~rgl`e{b(SZm59nYV|A;%xuOaxI-ANBlV2I0YvHTMr4{L%;y4c^-0 zayc67lws+Vf>9Ox6*(b8ZKe9ZeF#o)w0b$v2)CSWkzoV=D5Cd^ue^c_7wbi-$+KdD zr(Cs;SwyNl5z;O*Tc?rI3Ih}AHaoYPx~`_PU|fet@ke1X+(ocpF&N`G7oq zp=96X8EUb1O=7<~B6#ctoEBFy#wazIh!{-(y<0!Q& z@OV}-bZ|Tu91j?~YC@@5*p_xvDisE8u2E^xfdK9UcNLkVhNPH9vI?sDw9 zuwiEFEXJ?C`IhPR@+?BE)&$lIW{cJZoq?YjnN7DWcbloDU27Q){*#Z8) zG~mL$7iWF&^M{S2Emsd4@K;lw8HcxD+p0cD+#dY=V%5g9S+P^WuHP@QX%~+RTw6}x z7ex1&nn}=I_-w4#DEBX#SHh^BnIc2FHxs)Bub4<7R zrROUd(XnX^A4hNbi=B3?2EN2q!N5z>0y+vEWo{x13+wMAnj(=x_BoFO4a<3kY_9RY z`#zMVqu7f?I~0$|nkN1?+)WGbO&dA)R8~)>jw5f_61Z^jfS*r1o4}%2)93=lz`tnk z+|zAk*Ns`r`PzPCyHFGi_(XW$>4nAxG3RUv=wJSm)^zB7eM$DW@r+;7Q!?@BtM}Dm zqKjPThrBMRzb@H%{!9YcYRoej8n|wqyxY^u^WrrxE_Ic1){kkR!#CWWu8-k-$6!^Nsjb=oG%GtRA;=Tf|K=Uf-`Y zrNM=0{2bt$Yn9#WWoBK*SRm>qr=AKs*Pz^v2&FPvj9iuaEzT#D%t>F6A1$J3aziLz zP1_GrmkVu<*l|zh?Hezdj}G1t+szdRCtRg6XadsT*7j9xO)#%$-qc1Lr9R6IzmSob zJ+1Z6JU!Vc+SPDL6+(wxGAoH$Vt$)BXp-xCvex4_w&$-X_!XM0ZUI*h5*PH-ti)cD z3c=}a<0L&673^Lfi`7c!t&p2z(W!}I)oFX3v;jAE*nhEjhi-UCt8`@ICj#3spnPj~St#sxqeXA$0eEoO=lC6q-3HQ5U?u{FA z1gvw5(75#-NPFEX;NiEnMZv1p@7^CTRpk%aWg?qg(=m#ta(*80s+=5=Uw6NyN1S!? zry%xRTKXg1q>`=*hDg2ewYnVOgANHSwDw$J3g6e+@w)w$M66#(XFFI&b!3SNaKWeHbl(kSC#y&X;i zgIEH3)+q3p*$(Zgc}~m3=Nj{R^4Yx=qbH6Jd5?i#7 zfr@mzLZcr3l`|bw2P`X;^yGIycd4yy0R=ygnuF>i*%$NrY1PJXy31VNtasns=Z=dL z|D~tjPI^LUo=&c!pckQ>eWi@p$##d|-P#Plb+0)GPFlOxe~XX4+yfO|cedYB$h#v~ z4BGXj0)TN3oVv-nQ1Krcu))GfMJ2?q_T+w zQuLsFfg4TKgso1^rOFtAPvhmmN#^S59ba%54Qy;Q&_gicjqzI&FBcC{E4-^R;H+RI z0p7Nxd9XO@EIg58yR3$YPvUC4B%o3*)c+vD=B*zZPWqW59q;CCqY;I4lIP`jk_@zZ zjS2ba=^KZW9O&sknW;5P+~xxq#BwS+lW|g)Wh&RVTB?1XTmtMl^6Z=`Z(FJe1zkb9 zl}q$LT=-7|Iwuh2eP3Nyr(Vqyo{g2K3uMUeW6;qhD=!JJg*$^`Z$= z5hE_yV?n>F+~s2kN;>VvZU&+_@_%^OmS;m0EA$YRZNO?0>|(e5V33k?8tSTa|5?Xf zl`y;HW#Arm-1St}>*f3F6-?LlgW`+mDBs}*Eeapt@W{AiAHKHFJ_VHb8yfyf2+>YdXwht}M zyZ2h^fQB@U(WW4HT@=>+L}F}j)a)4Y?nDnU-G^hCJE%Q)TWvp1;GNcHMm^vi z6TY4s9YtWTv0*z(frdVFJ%MPY@s0~HwUuc~5cqscs4YuLfA`GywuUsFksCjFmRcOOB`MM<$U74*!HS@&ES68!|_;ql9^ynpvJYbZ8ZtUz<`2)epNHiT|hGOGY9v| zzV3ZwwM*uB&}PB==~$mwH9|Jxz!`gKbe~60T4Bp9zVC zm#tv|1uKScF7!d)u5nW3@q!ddIM&O7t zg{T)P7x*R=7HWo&#es-G_~u<@ENxHlpenra%-lTwq5i`agF!l!lJD*82bwRGKDm`K zKAlB}NE#5r(l6878*lleqIQCvINk!2W2&9<4}H+vy#!VRgF3m=_Srvb3=9-*AXHqX z@`k-?)9H+_CL*8P!oSYFtGIoVYf<~aF95%tI!HkqUI`9orA+k0aB!)mm?I_lD9hc+ zBgbpwY}pmRFZ;$nnt|d~+DAn)1ZzrO>{W$Dt zIfIWQQS^X*Ns7+EKo@*SPh>y{5qcyA-a0&6--rm*zlK;i+C(}3~()E(xaZIzgzGfR_CKDKAj zwtadAe4GbrfuptAiJc;`c6}E)#lT6?`hv)5#g%jL3##??;|seD3iWmJPlwNs0_x6v z0-l{e@IKLxj~6@Qc;q+Lz;5~U{A~I7^k9C-lH+V+Yfa0)fjyf&ZrWnqlAXQbv%>GQ z!`*F<^UcSDluI2`rKaOR{qL>A-GdK(mggLZ3R0LD1F6nC|2iZt4$gLxiY6P-bQ1$( zZQBUhKsp=ss+~?%^YXx3H|awyz}r^*Vwd!Jr^d6kv@Y9maZ@Ee_k#PLedSM7tO5s=jviMziLcnya&DSHeB>R&pCh+L`hEmEhz^i(%%&A5?vskKIl0qv zbct6RyM+H7CtY}$zdvVZZPMg)cSOPr^?pESEvs+w_k3X*c}(BNV-Yjd4p8cS`}lKU z$GQW|pPeD;7qda@?+Np*U7Xt|lILIA4Joo6Fn5N@!tF!x-iY!#v#k|=VTg-n#T9w3 zqRrWZWSw=?Yo{$)@JLO6ahn@=&m@ZAYbYNrB0lBD7Y-8<;Y4M>D)ntOsgFF&ca_b@ z#xqqsJT{jg1Vm)g!Oz;3s2AIeaJl3YEn56t|C8qt{Dlh69os}lz({d? zwi@RC@R171q0r1s;l$SuWCY7=a-hirad3m@L(6wJ}sMkh$eBHyg| z7{*v#e^Q`pJD{>feI9k9^#heZWyM;%Wwol8sRA*NB|ej2|84pGXHRGRdDfkPO4PU3 zEbT0TH+J?BQNmiab1|cHdN-cDFfe|C*d$r3ND(Rfc9^{O%rpZYyEjSLWbb5lHS>&P zlSWac$uDHyTz{tL)US3u>a&>(px7GN6ysTWZ?|1cCZjceZTa{&+4ih5=_)Jxy6?`9 zla0l5oCM~IJ*~S0xOqtkJ!Ra}q(nVQJg%EbZFhWt`|_;;lkbB-QAty?rx>He{|pPx1YPue%Fs2 zSy@TeL?Yfg&&uloo)wqQE7yI*@fXOhLI|!B6(fmJD+R zWaZqd9p!T5OHAXJiWxVU%dx&bte*pl2|ak&baWXx+@#bX6LciElwwE&tm%2(yoHc- zbO<;rKP19mZpimJ_7nX0ROb!TA@JPd8sisnR(Lg4BN#UQzjFRYIPY^dMR)YEf%z_#-<5h?o_@_ z_KMoFNQ?DU!)MF-(~eaZz^A?F;lAU3@Fhq6#2SNVUi{fV#h7Nf;N-92M>+ z2@F8}y|(eR>qWO@U);C;jtaDtp6pFVC(i-mWK2r+lM!FG1AM|>;FRRRA<#iUKwvr5b{!TuIOzllc$tFRY5e@?TVXTwh6)#^$nWO4X@=hC%8QZU0IkB)G;p&NskF6khsN@Ip0MFcOx3e8Fd&68o?kOP(nEz560t)<#l9o zgT5xTJ}rI*x$uLzhmKJqN-aHP;s*;ss&N>xe}7p#9h)&IJ0J46c9}gT%DRivu#ZkF zx?P=0+laore{Vh`@IFhl|2&p7v3gQ?e}9s9KehV)5^bNAc1}bD=+Y=#j~)4S=P>)+ zu-ajemF~s=rqjVF6vcH}#)am-VPlZQcb&DGMMZSEI{&+b_U7q3E4P4vkh@;xrbqm? z$126p!K3?YbL%Sq+heQ8s&d@otFtR>1GT5o zjb(>v8}_fKMCO_TXvOsJb^6{uZUCb5#4fC|r1@RDTNABg06_x$OXu>7GH#J1FUQDc zl6_fTSGeo!M%qTUYyE2bl;%|1x7*)eX|eC35~JI04a(-0>^!>cT?(~L+jDKq^AFDt zHp`ky5!BTS9ZWsXHl<8`v|~_JAa~yqMs5J}^YMVRT&mlK2f*rSYt@5%lho(3!~HC# zwr|(JyH1PN0aa<4GW|N8kLl$LLVy&wljtaDbJK;PiEtUCxA!AwJwfh{yv6;lqe7*t z@QoQ`=UE=TEV-A>EN&M-;c;r8!2J-;4= zB`A&6W8E7tG6;~yM2XtE493^FjC(V!`3`pu<}rx~0j>--c3;$++#3R`c(FLoOJUPA zzdWSdSr-MR5mtqzX)+2jFHVxn#Z7e6~ zX$^F?3qU;-Y*#^~Wi~4Gu#kapB(i$#hCt7-Pn4LredT^F{7n>GodYVd@BO^#{NQ?6 zKC>afQcbT zK_x2Lbb*gSJiWhtP6mo~#QTRSHN!5{n6wTh0w9siGKEuXvcPl@6Wnus4bIY?cx;+K zykTEOrxUnen~FNR`nwNJQ674}!z7OVR)uFqg$YM&*}=zDv$ock;oz!rbyiakhco}U zth3$vcX4Id((Yzv=SkT!W%Nn815oOAA%7&V)p})5`IY12JEEt>@8ain;;C<1_g3(- z07O~PQCE#oc7MoOzrwPK7^xrN6}qL+k9pfy6iqnlV^o^XrqxW?->22ou344Z*ErnO zC{R2ZQ+2*|F>zP^(1$~}M7v9lU2RZtFWkdyFMUM3$qVH_nCpmC;kYb1zkVPYTgJ&TE6I&tKRvTIn9Nf?Ts<5)(<^cRG z#?jD-)Q%eb@>&jhSpS=hl!cp}zMoof&^Si_kBAfDX&^W3^IJHypZhb-S77Lo#-0=mF(VE&dMp2&wrBx1SU+YcM? zosGq+7UqwTsV?8bx!Nt+w zH_>uf$Nt}BWi>N<17qDYGnwNjJcA3uUkjK2VO|^*_A&I~e}+Df&9aP@uA+p@rnGE+ z2C$?oL|o{v-a+{QbKrjiGla#QJvf8~n%Cuvf}JC?>P6-pE+ewYJOv5#L{KN8NstwG zv+-2+2Az00eA&~Sn6bWQ*dE#^unA&D2zg$#^!1su>v)dVjO(2#-Ph&z!b-E)0aAIVA)>|3mS8DWC!OT*fODwI>2KUha; z{It=lE@2u;8WEcR|9AZXifz2cqAp{8trULCAs)%aUx-$YeB`+UyTuhmP|R7II`h>V zcJw9Zi#ZaN5oW{#Zy!V|_&}ginw?L0+`eIG*&NVEdPxGBNvQ^oWR+xb{ zSP0Ar-zFns)>(6(7>~lMPuiv>@7a23AjnFy$kIwosdLa9qt&P)TdEPVe!i2#qnXCd z&`43xdcd8iXkim7rLL+W20_ZQ$bOQgk;ReakqwL?Cn_ZB?1f%tAS&JT|Bc3ESE_sy zz}cFGq-X@tKVk97zXPC{Tj7aOLrSUB4c5{}k>pl?wH^(mz&_zgF2N=Lg2ZT5ld@Va zNHzy=uN69z@E@+RiVkTON~|Z6nKVTd4^dJJE$m?{Lws;I3q{dL=OgdgH*98wBSsxa zK(0nMq}z;B9U1{f7O%q!hL_mtBM0dDF=kc3BS#1c7ymULHC`p2HU4`%EQt*BQA8OV zwuw12)JZ4gKGh;VcBzyo-Z~Og(XSqE)h_`by@LKw(PBndzmeHU%S714l*CM$dW$a; z^p(u${r;G$g*chg}Wjy?Z5e{6QmWQ;Oc- z#O^inIHCI%v)-FSIFkL+UxLS_mK20900LbQLplE%J23|aU6f7TOVWD)55J8JKn%Q$ zr%U=)JmP4kAc!CDyqDk7fk=c{xhlib`Y$-RkJ_uQhkJs9y;^e)mJNw}Pb^`1XrJ}g zpV}mWshOnKR(?OGm{+%ujjl2Bp?Cu%I2=YBHdp{`bNrD*oU#uW-qFe-| zAl9x@1mnj1@PjFX7Th}m<$Z{m<`=ouxsgXu{*YD_y2v6=EQpSGE>PYC(ihq^#;usj zbdaV!b_cYerDAyK$Le7|w%)(UM(DJ#jDzIPZe>@|>f9sDyBAOJT@Cqr<=Rg_y0y?*5E+HDZ=VY1{eO1rP=31@Hy<1)|b%jE;oAF;gOt*1_ z%<~B}D8cZ|f)*Bw^g880{V{_^VXEwsL$x+7?TJhB@gkB%_!t1Cp2~?-o$TDZNATE+ z+2F9M-oGb)@sU#Fsg1_lgMWZ5!kynGvJ#49y|rqe=WyVtSu144Nk<#yY@p7qIe4U%SO6}`Gb|r3@qu*$La%XJdv!;y*iPs!w@L;J&Xi$!`qrwuhd+q zwosD!!c@)qgEn}a#%r>p6;_$wEqmbY2B`yca*wHJ3cp>RPT8j66aSZ2Gds$k)m1Ob z6Tjxj@K9mR3kDcTA`pLQbr#cpkg@W|Z^WcB3rD0M+wL7Ws%%QbDTvGiR1I%mk5n3H zYEyKQchJ!x3&ra#*(eb_h;xg5VY!TLto%x&S_uRfkHsKWY?xMC{^d1_kM`==)J*Q7 zNIBXe_U+N@D+5b|C)!7HFqKHKc)O8^ega^9)NcPr$=g!mW1rJxL@8N$;APcxf9F*? z4brSYQ7CRB$*xgL4gSIFFSvx9j+Rr1YCT_ygSn}@irqqpUP+EVbi5TjWezD+`t(8h z?O@gVUu3zFX)MPvZVD}SpO9?^sU`4)o#zmQb&K*$0Y*$e|LPP%_yDfZK>Jh8I=Hle z(FZbhxD&?nmeax++X1>3Lc$7#a_Zh6lNMy8*x#N$Pl3oa0Z{WfN-|d;S7o15aa7oME+X zDaLbd9zcu(qEUX8bleo$Z;ewiCZ zYZotO0r+pT8Ar=|e3NG~=b%yi(#wAI! z0#cf12L;&WCBTLAjQ!gKg67sK%nmCC&&|gLZ9Y7mHtJ%PjD%nc*xE-%j@rAV>80Z~ ziYn4Ab(?Y!^@X8GGmMd@l|T|J&Va>)a9$4POH`H9(0)=`k>Jn@JmdF8AR30XnQNu{nETb+ z=;-QvEj9FIn)hfJ3&ToQejoN`X)oJtt2~IbDHM--?x4{scm%BAub2U!_xMa6aarK| zTpv*ce{gcU+h-SNg7gGD*g7hhA?O@r<^mdCc%6amr?W zklt#_A+@V*(ru*z30CcOH?{b2z_Dzk`JZqdsVKYn4SrS&Gsrd#*4l}>Nf^4(HeEEk zZ-1?ty$OSd_HU>GaoN+B=H^Pn7k;^1mgbpacb@v`jC!j74)g5<*koc6GHg-(PbnAV^V2fsBtpDJypUhor)h z-=)P5$*F@6F9(7^G&dS6iJ%j!Fb{@s_)#3RjaJ3Vqa;>9!Epk3Om=`3K}fnT*$(0s z$85CwJ5HUO4z)D58op4@%PiO$cdS>=dv_oE@Nn5dtZ=FZ??07IR2!7~cvgy0jOupd z%2Gn*5$BXFMG!8UmiCa{x5^2n9lykinfR$hsQib8G6)2QE`>p7gdA2S06Dmn#&wL( zN@D8NL$B*WnHnaqM?i zNosq&>jb>C=+HL_E!q=FF_oFu=?DmL_MN%BUMIbJHn~@+)s;Sb*R9&>p95ZX7_u}D z43vZfIMc=tC(O*>`{tAn7&O|1HlsI^F3W6d-tJEd%`Z01+Vne8DAQclZ#ER3o5pS{ z`Cao&?$t4`vzW@V#)i5s8^@+T4oC9NZ=a3}o2WAc)i)jaAJ=T&i|zW(-@*Sr;v(oB zZ<&Pv0r5roIItlCXst%=a3gygSiX~tJ|m}3W9f8TfHb%iXj`(cj5+dRhwz3j_X|&L z+9%km)Tovp6rj=WtM2nU@2D{e0_N16Vr?}`&2Yj;*rQBTi}jZA6R!*aojx8>d5VV< zj8$r6NmoeA16i6~Z?(;(cO87PC1k=Dt)^acPd9PodJgdb=M9B98O~oORV%!Uzv=|Y z*Gm!}C+SPe$TJj)fV@m;OQh}fLO*iuo@-;isHa;mTfqGsrCp2xxYB=KM>sdWS9NRS z?CRCGe}q?ATcHxjOpg3rHkPZNv2rStbJAbPxv|fm;`v-2j)JUO&TGFpRrDFe%YULH zLA?Z!e7=DSh)exexp=zgaY8AvTZ@e@%}=3XKbfI%%em;@u7eHL*)U>NLzfdK?L9a8 z%KApC-&kh}j}$SsS2LSGG7w0&b z1JS{X>ncYjeG;&=d%{f9jq*j+LEr#+t^JhIdA#q;i)Df6%Mh4Yg_4Y6-{8*U<{13S zzQj$wxq|X@uxy=Rnh@tZ1oR)6$@-m@V^*|EPPfFExQ;4o?wCSJFibx{Rvh5iw1A(Q zQWPQq!uP;1=+mcGp7JRHy7iwBR{co)zIn?p5ul+}j3xhC$T330Z3O>;1%ey&$#(%y zHTf4WyA3oH5>n~vZh?1fH!t;+u@a%~j~OVzx{U#`p`Z?B;UlERvsYBHaa?ckxntGK z-5$Z(>S!p=^CT^;8w8^)Pa>o{OAtAPYZJpdfKOC61f{;MA>hf z9VHT5{2PRw5KE#VIU==*?nwljrR^iUURXknZuh}0f1CldyPzw?*ibYkBR^VPEU@tq z`L$J9>`UYni>p{=L3q}?EmMgbJ`+05svJm^ZL+)=?7eYfXoBj&`{&}x{=n#QIb}mC zz>Zw0`4EMG#`c+hhC2>yk=V{U37af>e_a+klY~(NH8lye?K}+V(Jg6+1(64}l!rS^ znUu&lpM_+sfAU?9J0vV!59lpoDjJFMx!5%=x<-(Hv+HyOvTE+i4@Gwp|7CU<7L%Mv z&+Mf5=8x(Wg&LvYLHP9oZ~Q&^{S8Qf2|1Pq6@2EsY#fHdkM{{Ws4lwV4i(heaAwTO z?35Rf_HSEkBWnCgWEOq9yUU@!u|BeQi>3ShUWKQFyw4clxX{%%})?&RktOLs5tKvIfeL?30Jvk)P zy`JAQ%HP0a2v{&!t6CTU zsU1G8$}Lb9Ah!dhj4NvaaN(ycT}C zFnY<|#MZ;sXDqn_2iGZlm%-D!P9A^Pr$)B3=3hUT86xiq>SpoKa<{Y9Xp*>O`=U5h zaDv18>~JajqOJjXBX2s3gcq*5)dVIl2!AfpGh2qj-A{(AE$0i<_BC7kJiZNF9KkFI*T6d*QuabVi*KM_mSj zX3$#WYhScZ*3!vLDELcG_hYW#f@b<*%6Jp{mulW!eG?$xy$&!uJ{ez}UDT`nc#9tkh?7eud_9>Dhb|$1 zNUvF0c1YwS=X1vT=DZbB&167G(Dksl_u2KcAmDwDP#|)hy~HC1M<-?{LF5rdFe6lgdY+ZA1K1h) z!Q*TILdrn_GHG=xf#LxqZqlh{FOPNTt|Dm+=9FnGJEhN~c9T+#OlSgjpP_6O1D6d; zZ>lYz7($K!vZj~QYWd4SAl>yzA_aYF2~@0RPXG`6WL43&XiB6JsvQDU4{3#L(f&6x z>yJfW<#7bOTaMch7vjBv5D5!fNFRk2TB zlbO|T$Y_s!&e>xX^agLzu&Tg|=oq8Uvc*Nz#<)0aFIc;Rrx|%S?_~nYdh$5Z+PXfD z8?1kk+rlgc1NGJaM%kV-4Z${V#)AE}G_mUici3J7Zz2-5Sa}k+^!iRy#H&NYdafQ| zCb3wn2%7nlK3;y6-Vw)4_DJ`MEv_q$`H=lp80eP}fHPtslN|e!5YUq8FmW9RmFibP zJ}&(x+Z(Z0MLy1>aBhV4Gi&7|`>!(4=~M>_Bgx;IsAl8<3ZtNP0O$C^=xOQ(wY5iw zzFjYWbJ(P1MewAp50Lb>tzMQm4P$LEEH#?#)Q zmj$z_le3k)Nf1Oi!NB(l8NzwuAUax3OR6u#Xh`>@&IUVGwNxpW@2XilnW{u!+O#F9Cfy%XO4}#4$a&0fAYD zq|1>-=qPiT8RgG6t@@Rx4Wm%k?mE|Ad=T6o8#}8umSQ2)KLe3b^5IExwSpqO!l^4F zLr60sLx>9^L%u5GdEP;+gn;pT#EQdH98<)aZA^-zh8BdfTiPmMGkxa?0_FSV1dj0Y zx8-1gQ$EbDz%syW`!_d7`%ln>VrxXGMVXNYeIaTo4wWdxr{W1%Sz^mF;tbtAq)8tMvgx@yr#swZ&v>os8@g?_Crt?xV0ErzWl5kdz@xYC|K@?j~?TjFiEC}AK- zXubC%mR`yS@f8|R>#GWSMYKa>{Y>`N%;eX?rOq6*i0ILS%)9_$W>=T6pwF*^N5%Y2 zLr*xFrkZnjvQ{F`+W+WZDS1*QZ^}&+tVbeb5}~K!3Rg*LgCMOAF(1A&K#f7dmaoAQ ztc|ItLtOtyH8@+lMUBIH6G+mU-Q-1jDKvS5GLG zg<*_P9vx=cR?np+;;yHr&6Smc<%qWR;$5EfNeM!ghQ#1PU}r2&Ebff`uB*hL{Oa2o zm1`9$8w7=mHJ79%$Nlk*d#AUxP{|nInr0jowg5m8)vS~gUP@5{92laYNjMZ9+gTtC zkW*oRJCQ3lb+ASn6`$VKS2Os^5dOvUTmMH=oj6b-z`gU4NRL^4R0wlxXl{VE)?Qor zL8kwaG|=0f_n<&Wh8ql(Wjly8^rJA@ocDlY$s(O|(QPw$Hu^>1T{yq0dESqTd@Kh- zk&ah3?IfEjdqanc%5UJpf%ArPws7oJfIsV;u=q4MY96|ZH?Hl zIi4!ptW@_(&8A>D!58=$DOg5ytEPU}aHk2GSRECzU%m!3BKH#4B$10Up(wL#$W`o< zy2&rglX58)`!nP2MPVVBR5furh`$G}TH-+OaHjSe2GIY_=yer#*!J`%d@0-x* zL7JA8s<3{ZBb~!!UepXQ*ByrO-H_!LGf;?K7NHbp^gm2MvlzvCz6IS7ZVcdNsPKuM zIebcwiw##X(~g@WcP8Jk4y=bjD48RnF+s(`q>{i_8B=2B&)=KjGl=^w-2t#ru7f|^ z%VEWh>isS;g77 zIzB$5h=FdNCU)e@WA#GS_%hV^h%00I0F2+|Ue~F{cNO5jaR4vdQX`qNP7>MAvem!< zK{Q$)QuZZRmEmjWFDEyT*Sl1gxqQofXx1Q~Wnnnu4qz@e-EVi^ZmkXg5P*l%KW99q4*Uc?M= zNA}a>F1i9~QanO}@>LbZh#uLbuCv;xkn|^gUYC-@x_c~_z^lbH6tcWMyl(bK`tlZu z+CA|LsXSBCGX;~$=^X)gRb3fto>N%TcNjdNH^2JkIOH8(ZmMSQH`89 z2vM>_6>KbBIZ5M!Cdk0J-Ni}y*)7-jNt@@$P_KFj$+29vuf_n-vu&Wf-4JKaN1O2y zaMBmvn9?XHpcC<|ad}&s}L79c-RA62f#lU{44X zJJ@@N7M6Upt{wLXh$J^tZ|?Rk&yEK8=LizyD)I_MT`-kcb&?XWp~rQ3TOKUNYWWu2 zEw6Q&Q&~{tq?iC&6?*xuhqDJFSCHM=BBalPPrn|Lvc50<>=ZQtIw5P08mKPBYjKil zWN*r%eiBHD3?Z@ziK||gHY595N;?qWpKhqzdmn6gq*>4%b|c#z)R^ILSjz+pW6bxH zE?uEmSH=PB7-JGDN(nR22Pf2#LjMygQnQF5@ql^0CN~}crB0p3jI5(~IRpnGlYxPS z>Z4U;h^}6kZm6dJxDEyj+$InC4B7uF)pq0b4N&;g45j54JN&0K=_&}DZUpYR=}j^t zvMbpBfO)*%^KvjYt>|^J`r9_*<0mTPk{*F|D6wU7v3P&Pc=-_-N2PS9yaj_TyKuWQYkm6_RAXs>qGYRs;#YF1)Td@opg`_v!pRkJbxt{}9Y zl$4NGK>6&?;RY2^Xn>EjMK_5*rS3>^ z^UU3J_*Y`bgo4V<9>s956s-RcdYX!rp@CjTZB9a(Xxf(~<@iX$%NV;n zAeciXx8Rb%z$QoWoF10~jXW0B0PxRbsy?hSy?cb>^)Y@so|$H3Q!CB>ovZEjwR4qK zlg9Jt7B_X1iXo*TRhzzsAxCr7!ab3JjgI2FY4Odgo}i|QNGA<0a)q7SKWcJjl;2W4 z8_EsvK%OU-1viOB!n^m9CwyPxe%GVFTO6jK$FDEa06j-8rOJwXm{zI>7jKuj5Ghvw z#w}7*mRyLuE^6N7M}Dn5qO-yAt|yT|Rxe~bWs|#8333x)Y2!Xd?!Q3&YkL%x!Srl; z<^WO6W!GuMr)#G8BQjKL$%FkhG-@ayL$K1Bqbxb4(HCW}f*@YC zr9cm1%Qz47n&pRu(2ggUO~cWRdRXWuwMwglYehZcl! z6MFhN4Fm*8rhXkH0tpPn1lh)CgE7<}0`Z2lm|BX7>C-)04`qh!<*4%t+TQ`_Qm?HJ zBlyI$zC!Qm<Cmd7Dl{^DWfBHtsQ~ddK1~2DO*?cb>r$*;sR-&9)N5N38$(p=Cdg@U(jKe7a~ z6qQ{zV5>nT9x{F&w8W|#VImF4?5H!pdrrzcESnD>n)~ACmj(rIjt7D;%~7rR^$_>_ zfM&vmJ|BP8H>FoS7mqe?Pxcm+r#vKmh*wvqFpH+=emy7($1HNjjdDLLT~hMi*|SE! zX%>+ymhUE6opqc(T!){xd-^X;+U7s8%b!LsQEUTN$X+c3D`I#3#Ou!iIR(&>EBK{d z#8-E3iH}^jZULnfr#)ZF+NFBaqFwg5eGY4|%%=xIY1j2JC$dxT;5;`BZVEQp&)HlugvaJAM`tGl1O+<}H`1;iJL#u23)z!M`|TEcLPEt0 zb!|jn957rZu`R_UWZ`JELWoiZ4}tfWgM1}~7X@Cz#KcY^j>e_F$QgU(`K@$xlw0J$ z(tIeD29j2QN<<;A`FK3!75-sFd_3G5HAHD-&^T*mb&7l=1zI7Ba(On?=ps)Qdu9Zi zezo&1%uH!(A;nw=6Ekfw=XE?@Vo)=5$y$x3p>OPp#!MpCx08E(B;ZK+2p(jpbK8MU zk%2>6E&*1_+WOVp9?4yh4^cku8TfA6n(&v74P;?}*kw|q3P=zc-DgGe(@tL}g4p8l z&W4WfMj)K}qI%xctXscw7*!W((`x}j0`E_cy8*Tg1j`KsDzn?M0hl9^qMTaVi>?Gy zO&&J(mGvcLE3||=_A`d)JOZ1iH^y8SH+q}L;xpP^Y{>&1J<}O_?7e=@5-b0$I z_aUuiq81rKu@=MUb1CkvI-kB{HBo%Vnz32Q6w+fX%F?|4JVZ4tgePlwP#rcj0^E%j zcm%KW73qTnTag4xNC`nah=PCs31u*WnNql5_+r3Tskr~SzojhA3;EA|qZnxnPy}G1 zv;&y9I1opM1I$_+s3dca{~zZL0`ljM(w_$ug!m(+;{$5TQsV#j&gOqASTF+9WO=|c zsDKNy9AN!aKm<7o{QpbFkK-StKXpHzfBIV#1}e(Af+b4;?Zh#G>vFVUqkpm#Kt_4w ie_!#DmgmR&&jAt$2=+gn{7*0Oz$|$>s95Pgh5sKgM|i*h delta 13721 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 Date: Fri, 10 May 2024 13:55:20 +0800 Subject: [PATCH 4/5] update DB_GameItem.xlsx --- data/DB_GameItem.dat | Bin 7668 -> 7668 bytes data/DB_GameItem.json | 2 +- data/DB_GiftCard.dat | Bin 57 -> 57 bytes data/DB_PropExchange.dat | 6 +++--- data/DB_Task.dat | Bin 2032 -> 2032 bytes xlsx/DB_GameItem.xlsx | Bin 42959 -> 42925 bytes 6 files changed, 4 insertions(+), 4 deletions(-) diff --git a/data/DB_GameItem.dat b/data/DB_GameItem.dat index 0d0b040c16fbd8b082d585c30551da6b9d0cc063..4cdcaff4868ab01726c981e89a5c31f13d1cb112 100644 GIT binary patch delta 14 Vcmexj{l$7iFcTx=<`AX@(f}@Y1u6gl delta 16 Xcmexj{l$7iFwO}lhYW#32}mzG~7DE zX$4VWG&zr{#Tvqvvw}z;=-tlfz{sV}F~v_nSb|l7TchE^?ZaP~3>aaWU<#*gWSXqY tykYWER`JPSn47U!+QG7Rav+PuWM9^Z$)A`+H}7KgVFU^YPnKlA4gj*3I%xm^ delta 164 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 delta 11795 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 From 9474b0dc300e927c1e09eef1bdda6e41486b04ab Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Fri, 10 May 2024 14:47:38 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B8=B8=E6=88=8F?= =?UTF-8?q?=E6=8E=89=E8=90=BD=E7=89=A9=E5=93=81=E9=85=8D=E7=BD=AE=E8=A7=84?= =?UTF-8?q?=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamesrv/base/scene.go | 2 +- srvdata/gamedropmgr.go | 96 +++++++++++++++++++++++------------------- 2 files changed, 53 insertions(+), 45 deletions(-) diff --git a/gamesrv/base/scene.go b/gamesrv/base/scene.go index e72a4a3..1622d65 100644 --- a/gamesrv/base/scene.go +++ b/gamesrv/base/scene.go @@ -2119,7 +2119,7 @@ func (this *Scene) TryBillExGameDrop(p *Player) { if baseScore == 0 { return } - dropInfo := srvdata.GameDropMgrSington.GetDropInfoByBaseScore(int32(this.GameId), baseScore) + dropInfo := srvdata.GameDropMgrSingleton.GetDropInfoByBaseScore(int32(this.GameId), baseScore) if dropInfo != nil && len(dropInfo) != 0 && p.Items != nil { realDrop := make(map[int32]int32) for _, drop := range dropInfo { diff --git a/srvdata/gamedropmgr.go b/srvdata/gamedropmgr.go index a036ebf..557d4a3 100644 --- a/srvdata/gamedropmgr.go +++ b/srvdata/gamedropmgr.go @@ -1,32 +1,34 @@ package srvdata import ( - "strconv" + "sort" ) func init() { - DataMgr.RegisterLoader("DB_Game_Drop.dat", GameDropMgrSington) + DataMgr.RegisterLoader("DB_Game_Drop.dat", GameDropMgrSingleton) } -var GameDropMgrSington = &GameDropMgr{ - GameDropData: make(map[string][]*GameDropData), +var GameDropMgrSingleton = &GameDropMgr{ + GameDropData: make(map[int32][]*GameDropData), } type GameDropMgr struct { - GameDropData map[string][]*GameDropData + GameDropData map[int32][]*GameDropData // gameId:[]*GameDropData } func (this *GameDropMgr) Load(fileFullPath string) error { - GameDropMgrSington.Init() + GameDropMgrSingleton.Init() return nil } func (this *GameDropMgr) Reload(fileFullPath string) error { - GameDropMgrSington.Init() + GameDropMgrSingleton.Init() return nil } type GameDropData struct { + Id int32 + BaseCoin int64 ItemId int32 Rate int32 MinAmount int32 @@ -37,46 +39,52 @@ func (this *GameDropMgr) ModuleName() string { return "GameDropMgr" } -func (this *GameDropMgr) GetKey(gameid, basescore int32) string { - return strconv.FormatInt(int64(gameid), 10) + "_" + strconv.FormatInt(int64(basescore), 10) +func (this *GameDropMgr) Init() { + this.GameDropData = make(map[int32][]*GameDropData) + if PBDB_Game_DropMgr.Datas == nil { + return + } + for _, v := range PBDB_Game_DropMgr.Datas.Arr { + //道具 + if v.Amount1 == nil || len(v.Amount1) != 2 { + continue + } + if v.Rate1 <= 0 { + continue + } + + gdd1 := &GameDropData{ + Id: v.Id, + BaseCoin: int64(v.Bet), + ItemId: v.ItemId1, + Rate: v.Rate1, + MinAmount: v.Amount1[0], + MaxAmount: v.Amount1[1], + } + this.GameDropData[v.GameId] = append(this.GameDropData[v.GameId], gdd1) + } + for _, v := range this.GameDropData { + sort.Slice(v, func(i, j int) bool { + return v[i].BaseCoin < v[j].BaseCoin + }) + } } -func (this *GameDropMgr) Init() { - this.GameDropData = make(map[string][]*GameDropData) - gdArr := PBDB_Game_DropMgr.Datas.Arr - if gdArr != nil { - for _, drop := range gdArr { - key := this.GetKey(drop.GameId, drop.Bet) - //道具1 - if drop.Amount1 == nil || len(drop.Amount1) != 2 { - continue +func (this *GameDropMgr) GetDropInfoByBaseScore(gameId, baseCoin int32) []*GameDropData { + var ret []*GameDropData + arr := this.GameDropData[gameId] + i := sort.Search(len(arr), func(i int) bool { + return arr[i].BaseCoin > int64(baseCoin) + }) + if i < len(arr) && i > 0 { + n := arr[i-1].BaseCoin + for i := i - 1; i >= 0; i-- { + if arr[i].BaseCoin == n { + ret = append(ret, arr[i]) + } else { + break } - gdd1 := &GameDropData{ - ItemId: drop.ItemId1, - Rate: drop.Rate1, - MinAmount: drop.Amount1[0], - MaxAmount: drop.Amount1[1], - } - this.GameDropData[key] = append(this.GameDropData[key], gdd1) - //道具2 - //if drop.Amount2 == nil || len(drop.Amount2) != 2 { - // continue - //} - //gdd2 := &GameDropData{ - // ItemId: drop.ItemId2, - // Rate: drop.Rate2, - // MinAmount: drop.Amount2[0], - // MaxAmount: drop.Amount2[1], - //} - //this.GameDropData[key] = append(this.GameDropData[key], gdd2) } } -} - -func (this *GameDropMgr) GetDropInfoByBaseScore(gameid, basescore int32) []*GameDropData { - key := this.GetKey(gameid, basescore) - if gdds, exist := this.GameDropData[key]; exist { - return gdds - } - return nil + return ret }