1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
I m[c@s°ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl    Z    ddl
Z
ddl Z ddl Z ddl Z ddlZddlZddlZedƒ\ZZZZdZdZdZdZedƒ\ZZedƒ\ZZZdZd„Z dddej!d    „Z"d
„Z#gdddd „Z$dddej!d „Z%ej!d „Z&d„Z'd„Z(ddd„Z*d„Z+d„Z,dddd„Z-dddd„Z.dddej!d„Z/d„Z0iddd„Z1d„Z2d„Z3d„Z4d„Z5d„Z6d„Z7d„Z8e9d „Z:d!„Z;d"„Z<d#„Z=d$„Z>d%„Z?d&„Z@d'„ZAd(„ZBdS()iÿÿÿÿNiiiiitCompensationRequestStatecCsTtjƒ}|d|_|d|_|jddƒ|_|jddƒ|_|S(NtItemIDtCounttIsBinditUserDatat(tIPY_GameServertIpyCompensationItemRRtgetRR(t curItemDictt curItemData((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytMakeCompensationItemJs    c    
 
CsJttj|ƒƒ}    |    jdƒd}    t|||    ||||||ƒ    S(Ns.i(tstrt    GameWorldtGetDatetimeByDiffDaystsplittSendPersonalItemMail(
ttitletcontenttgetDayst playerIDListt addItemListtgoldt    goldPapertsilvert
sourceTypet    limitTime((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytSendPersonalItemMailExWsc
Csy|\}}}}}}}t|ƒ}t|ƒ}    t|ƒ}
t|ƒ} t|ƒ} t|ƒ} d}d}ttj|ƒƒ}|jdƒd}xÛt|ƒD]Í\}}|    |krÆ||ng}|
|krâ||ng}| |krþ||nd}| |kr||nd}| |kr6||nd}d|t|ƒf}t||||||||ƒq¤WdS(NRis.is!<MailTemplate>%s</MailTemplate>%s(tlenR R RRt    enumerateR(tbatchMailInfoListt mailTypeKeytbatchPlayerIDListtbatchAddItemListtbatchParamListt    batchGoldtbatchGoldPapert batchSilvert lenPlayerIDtlenItemtlenParamtlenGoldt lenGoldPapert    lenSilverRRRtiRRt    paramListRRRR((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytSendPersonalItemMailBatch^s(      #c        Csjtjd|||||||fƒd}d|tj|dtƒf}t||d|||||ƒS(NsaSendMailByKey %s, playerIDList=%s, addItemList=%s, paramList=%s, gold=%s, goldPaper=%s, silver=%sRs!<MailTemplate>%s</MailTemplate>%st ensure_asciii(R tDebugLogtjsontdumpstFalseR(    RRRR-RRRRR((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyt SendMailByKeyys
    c     Cs}|s
dStjƒ}    |     s)|    |kr>tjd|ƒdSg}
xˆ|D]€} t| tƒrs|
j| ƒqKnt| ƒdkrK| \} } }nqKi}| |d<| |d<||d<|
j|ƒqKWtjdƒ}t    dt
t j t|
ƒt |ƒƒƒƒ}xjt|ƒD]\}||}ttjƒƒ}t||
|||!||d    tj||f|||ƒqW|S(
NRsC¹¦ÄÜ·¢·ÅÎïÆ·²¹³¥/½±ÀøÓʼþ£¬Áìȡʱ¼äÒѳ¬Ê±£¬Ä¬Èϲ»Ìí¼Ó£¡LimitTime=%siRRRtMailMaxItemCntis%s<$_$>%s<$_$>%s(R tGetCurrentDataTimeStrR0t
isinstancetdicttappendRt IpyGameDataPYt
GetFuncCfgtmaxtinttmathtceiltfloattxrangeR tuuidtuuid1tAddPersonalItemtChConfigtDef_Mail_SenderSys(RRRRRRRRRt curServerTimetaddItemDictListtitemInfotitemIDtitemCnttisBindt addItemDicttperMailItemCnttmailCntR,t
startIndextGUID((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyR…s8   
 
 
.
c    CsUtjƒrdSttjƒƒ}t||tjƒ|dtj||f|ƒdS(Ns%s<$_$>%s<$_$>%s(    R t IsMergeServerR RBRCtPyAddPersonalCompensationR6RERF(tPlayerIDRRRRRQ((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytSendPersonalAsTextMail³s  cCs|d|d|S(Ni@Bi †((t
checkStatet limitLVTypetlimitLV((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytGetEntireCompensationInfo»scCs3|d}|d}||dd}|||fS(Ni †i@B((tmailInfoRXRVRW((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytParseEntireCompensationInfo½s
 
i
c     Cstjƒ}g}|rYt||j|ƒdd|||ƒ}    |    rU|j|    ƒn|S|rld|}n|rd|}n|jƒ}
xpt|
ƒD]b} |j| ƒ} t|| |||||ƒ}    |    s×q˜n|j|    ƒt|ƒ|kr˜Pq˜q˜W|S(s²¹³¥Óʼþ²éѯ
    Rs %s 00:00:00s %s 23:59:59(    R tGetCompensationMgrt__GetQueryCompensationInfoDicttFindEntireCompensationR9tGetEntireCompensationCountRAtAtEntireCompensationR( tfromDatettoDatetguidt searchTitlet searchContentt searchStatetmaxCounttcompensationMgrtretListtinfoDictt    entireCntR,t compensation((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytQueryCompensationInfoÃs* '    c Csà| s|j rdS|r.|j|kr.dS|rG|j|krGdS|jjdƒ}t|ƒdkrodS|\}}    }
|r”||    kr”dS|rª||
krªdSt|jƒ\} } } |dkrÞ|| krÞdS|j}g}|j|ƒ}xct    |ƒD]U}t
j ƒj ||ƒ}|j }|s<q    n|j||j|j|jgƒq    Wi|d6| d6| d6| d6|jd6|jd6|jd    6|jd
6|d 6|    d 6|
d 6|jd6|jd6|d6}|S(Ns<$_$>iRQt
CheckStatet LimitLVTypetLimitLVtGoldt    GoldPapertSilvert    PlayerJobtSendertTitletContentt
CreateTimet    LimitTimetItemList(RQRxtTextRRR[tPlayerLVtNonet FindItemCountRAR R\t
FindItemAtRR9RRRRqRrRsRtRy(RhRlRaRbRdReRft contentListtsenderRRRVRWRXRQtitemListtcurGUIDItemCountR,tcurItemRJtcompensationDict((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyR]âs>        &c Csfg}g}tjƒ}x8|D]0}|j|ƒ}| s|j|krPqn|dkr§|j|ƒ|j|ƒ|j|ƒtjd|ƒtj    |dƒn›|dkr|j
}t |ƒ\}}    }
t t |    |
ƒ} |j|| ƒtjd|||| fƒ|t krB|j|ƒtj    |dƒqBnq|j|ƒqWtjƒ} xt| jƒƒD]ì} | j| ƒ}|dksr|jƒ srtj|ƒrµqrng}xŠ|D]‚}t||tƒ\}}|tkròqÂn|j|j|j|jf\}}}}|j}|j||||||fƒqÂW|rrt ||ƒqrqrW|S(shÈ«·þÓʼþ²Ù×÷¹ÜÀí
    @param operGUIDList: ´ý²Ù×÷µÄÓʼþGUIDÁбí
    @param operation: 1-ͨ¹ý£»2-ɾ³ý
    isɾ³ýÈ«·þÓʼþ: GUID=%stDeleteisBÈ«·þÓʼþÉóºËͨ¹ý: GUID=%s,mailInfo=%s,checkState=%s,updMailInfo=%stCheckOKN(!R R\R^RQtDeleteEntireCompensationtDeleteCompensationItemtDeleteRecByGUIDtLogtDataRecordPacktDR_EntireCompensationR|R[RYt CheckState_OKtSetEntireCompensationPlayerLVR9tGetPlayerManagerRAtGetActivePlayerCounttGetActivePlayerAtR}t    GetInitOKt PlayerControltGetIsTJGtCheckRequestCompensationR3tUnknow_CompensationTypeR{RqRrRsRxtSyncQueryCompensationResult(t operGUIDListt    operationt
okGUIDListtsuccessGUIDListRhRQRlRZRVRWRXt updMailInfot playerManagerR,tplayert
notifyListtcompensationTypetcurEntireRequireR{RRRt
createTime((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytEntireCompensationOper sR                  (  *    #c     CsGtjƒrdSx0|D](}    t|    ƒ}
tjƒj||
ƒqWtjƒ} tjƒj|| |||||||ƒ    t|ƒ\} } }i
|d6|d6| d6| d6|d6|d6|d6|d    6|d
6|d 6}| tkríd nd }t    j
|||ƒt ||||d||ƒt jdƒ}tjƒ}xt|jƒƒD]ï}|j|ƒ}|dksP|jƒ sPtj|ƒr“qPn| tkrÉtj|jƒƒ}||krÉqPqÉnt||tƒ\}}|tkróqPn|j|j|j|jf\}}}}t |||| |||fgƒqPWdS(sW
    @param mailInfo: GetEntireCompensationInfo µÄ·µ»ØÖµ, Ä¿Ç°ÔÝ´æ×ֶΠPlayerLV ÖÐ
    NRyRpRoRnRtR{RqRrRsRztAddt
AddToCheckt    TestAccID(!R RRR R\tAddCompensationItemR6tAddEntireCompensationItemR[RŽRŒRt__WriteSendMailOKEventR}t ReadChConfigtGetEvalChConfigRRAR‘R’R“R”R•t CheckState_NotGetPlatformAccIDtGetAccIDR–R3R—R{RqRrRsR˜(RQRHRyRZRtR{RRRRMR
R£RVRWRXtaddDictt    eventNamet testAccIDListRžR,RŸt playerAccIDR¡R¢((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyt AddEntireItemHs<    - (       *&c    
Cs1tjƒj|ƒ}    tjƒj||ƒ}
itjdƒtj6tjdƒtj    6} |
| |d} | dkrg} xHt
| ƒD]:}tjƒj |||ƒ}|s·qŠn| j |ƒqŠWx7| D],}t ||ƒ|    rÏt|    |dƒqÏqÏWntjƒj|||||||||ƒ    dS(NtMailDefaultCounttMailMarketCountii(R RtFindPlayerByIDR\t"GetPersonalCompensationCountByTypeR:R;REtMail_Type_DefaulttMail_Type_MarketRAtAtGUIDInPersonalTypesByTypeR9tClearPersonalCompensationtNotifyCompensationResulttAddPersonalCompensation(RQRTRxRyR{RRRRt    curPlayertcntttmpDicttdelcnttdelGUIDsR,ttmpGuidRc((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyRSxs&   c     CsQtjƒrdStjd||fƒx0|D](}    t|    ƒ}
tjƒj||
ƒq.Wi} tjƒ} x’|D]Š} t|| | ||||||ƒ    tjƒj    | ƒ}|rst
|||| |||fgƒ|j ƒ|j ƒg| |j ƒ<qsqsWi|d6|d6|d6|d6|d6t|ƒd6}tj||||ƒdS(Ns5Compensation### AddPersonalItem GUID:%s ItemDict:
%s RyR{RqRrRst ItemListLen(R RRR0R R\R¨R6RSRR·R˜tGetNametGetLVR¯RRŒtDR_AddPersonalCompensation(RQRHt PlayerIDListRyR{RRRRRMR
tonlinePlayerInfoR£RTR¿R°((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyRDŸs&     ")&cCs†|s
dSi}|\}}}}tjd|t|ƒfƒx*|D]"}|d|dg||d<qFWt|||||ƒdS(NsÓʼþÀëÏßÍæ¼ÒDBÐÅÏ¢: GUID=%s, %st
PlayerNametLVtAccID(R R‹R Rª(t resultSetListtextendValueListtplayerInfoDictRQRHRyR{t
resultDict((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytFindDBResult_SendMailÈs  cCsdS(N((RQRHRyR{RÐtplayerLVt    playerJob((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyRªÖs5cCs#tjƒj|ƒ}t|ƒdS(N(R RtGetPlayerByIndextNotifyPlayerCompensation(tindext
clientDatattickR¿((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytOnQueryPlayerCompensationscCst|ƒ}t||ƒdS(N(tSeekPlayerCompensationR˜(R¿R ((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyRÖs  cCsatjƒj||ƒtjƒj||ƒtjƒj|ƒdkr]tjƒj|ƒndS(Ni(R R\tDeletePersonalCompensationtDeletePlayerCompensationRectGetPersonalCountByGUIDR‰(t curPlayerIDtcurGUID((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyR¼s
cCs+|d|}tjƒj|||ƒdS(Ni
(R R\t AddPlayerRec(RßRQt
prizeStatet    readStatetstate((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyt SetPrizeState'sc    CsÊ|jƒ}tjjƒ}g}tjƒj|ƒ}x]t|ƒD]O}tjƒj||ƒ}|j|j    |j
|j |j |j |jfƒqCWtjƒjƒ}|jƒ}|jƒ}    tj|jƒƒtjdƒk}
xßt|dddƒD]Ç}tjƒj|ƒ} t| jƒ\} } }| tkrI|
sIqûqIntjƒj|| j    ƒ}|d}|d}|ttfkrqûntjj| jtj ƒ}||krß|t!krßt"|| j    t|ƒqûn||    kr| t#krût"|| j    t|ƒqûqûn| j$dkrl|jƒ}| j$t%d|ƒ@dkrlt"|| j    t|ƒqûqlnt&|kr‘t"|| j    t&|ƒn|j| j    | j
| j | j | j | jfƒqûW|S(    NR§iiÿÿÿÿi
iii(iÿÿÿÿi('tGetIDtdatetimettodayR R\tGetPersonalCompensationCountRAtPersonalCompensationAtR9RQR{RxRqRrRsR_tGetJobRÇR®R¯R«R¬R`R[R|R­tFindPlayerRecStatet Disable_Statet    Yet_StatetstrptimeRyREtTYPE_Time_Formatt Unknown_StateRåtLimitLVType_NotRttpowt Enable_State(R¿RßtcurTimetallListtcurPersonalCountR,tcurIpyPersonalDatatcurEntireCounttcurJobtcurLVt isTestAccIDt
curRequireRVRWRXtstatesRãtcurStateR((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyRÛ.sR   $     
 
        cCs™tjƒ}|jƒxZ|D]R\}}}}}}tjƒj|ƒ}    tjƒ}
||
_||
_||
_    t
|ƒ|
_ ||
_ ||
_ ||
_tjƒj|jƒ|ƒd|
_xŠt|    ƒD]|} tjƒj|| ƒ} tjƒ} | j| _| j| _| j| _| j| _t
| jƒ| _|
jj| ƒqÍWt
|
jƒ|
_|jj|
ƒqWt
|jƒ|_tj||ƒdS(Ni
(tChPyNetSendPackttagGCQueryCompensationResulttClearR R\R~ttagGCCompensationPackRQRxR{RtTextLenRqRrRsRìt GetPlayerIDtIsReadRARttagGCCompensationItemRRRRt UserDataLentItemsR9tPackListt NetPackCommont SendFakePack(R¿R tsendPackRQR{RxRRRRƒtsubPackR×R„t subPackItem((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyR˜ps6 
                         %     c
Cs$tjdƒ|j}tjƒj|ƒ}|s5dS|jtƒrUtjdƒdS|jtdƒ|j}tjd||fƒt    ||ƒ\}}|t
krÇ|jtdƒtjdƒdS|j |j |j |jf\}    }
} } t||||||    |
| | ƒ    tjdƒdS(Ns*Compensation### OnMGRequestCompensation insCompensation### already requestis=Compensation### OnMGRequestCompensation myPlayerID %s GUID %sis0Compensation### OnMGRequestCompensation no founds+Compensation### OnMGRequestCompensation out(R R0RTRR·t GetDictByKeytDef_RequestStatetSetDictRQR–R—R{RqRrRstSendGMRequestCompensationResult( t
routeIndextmapIDt curPackDataRÙt
myPlayerIDR¿RQR¡R¢R{RRR((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytOnMGRequestCompensations&            *
"cCsZ|jƒ}|rFtjƒj||ƒ}|j|krFt|fSntjƒj||ƒ}|d}|d}|ttfkrŽt    dfStjƒj |ƒ}|j |krÒtjƒj ||ƒt    dfSt|jƒ\}    }
} |    tkr-tj|jƒƒtjdƒk} | s-t    dfSntjj|jtjƒ} tjjƒ}| |krŒt|krŒt||t|ƒt    dfSt|kr¢t|fS|jƒ}| |kræ|
t krÜt||t|ƒnt    dfS|j!ƒ}|j"dkr=|j"t#d|ƒ@dkr=t||t|ƒt    dfSnt||t|ƒt|fS(Ni
R§iÿÿÿÿiii(iÿÿÿÿi($RæR R\tFindPersonalCompensationRTtPersonal_CompensationTypeRìRíRîR—R}R^RQRÝR[R|R­R®R¯R«R¬RçRïRyRERðRèRñRåRôtEntire_CompensationTypeRÇRòRëRtRó(R¿RQt isPersonnalRßtcurPersonalCompensationRþRãRÿR¢RVRWRXRüRRõRûRú((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyR–¶sL  
 
 
 
 $ 
 
 
  c    Cs+tjƒ}    |jƒ|    _||    _||    _||    _t|ƒ|    _||    _    ||    _
||    _ t j ƒj|ƒ}
xŠt|
ƒD]|} t j ƒj|| ƒ} tjƒ} | j| _| j| _| j| _| j| _t| jƒ| _|    jj| ƒq‚Wt|    jƒ|    _tj|||    ƒdS(N(tChGameToMapPyPackttagGMRequestCompensationResultRæRTtCompensationTypeRQR{RRRqRrRsR R\R~RARttagGMCompensationItemRRRRRR    R9R tSendPyPackToMapServer(RRR¿RQR¡R{RRRR RƒR,R„R((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyR÷s,                              cCsj|j}tjƒj|ƒ}|s(dS|j}|j}|jtdƒ|jrft    |||ƒndS(Ni(
RTR RR·RQR RRtResulttGiveCompensationSuccess(RRRRÙRR¿RQR ((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytOnMGGiveCompensationResults                cCsz|jƒ}t||dƒtj||ƒ|tkrYtjƒj||dtƒdS|t    krvt
||ƒdSdS(Nii
( RæR½RŒtDR_GiveCompensationSuccessRR R\RáRîRR¼(R¿RQR Rß((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyR$'s    cCsëtjjƒ}g}tjƒjƒ}xst|ƒD]e}tjƒj|ƒ}tjj|jt    j
ƒtj ddƒ}||kr4|j |j ƒq4q4WxG|D]?}tjƒj|ƒtjƒj|ƒtjƒj|ƒq¤WdS(Ntdaysi(RçRèR R\R_RAR`RïRyRERðt    timedeltaR9RQRˆR‰RŠ(RõtneedClearGUIDListRkR,R¢RRQ((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytClearUpEntireCompensation;s+  cCs tƒdS(N(R*(((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytClearUpTimeOutCompensationUsc    Cs×tjƒj|ƒ}|j}|jƒ}tjƒj||ƒ}|j|kr|tjƒj|ƒ}|j|kr|dSntjƒj    ||ƒ}|dt
kr¨dSt
d|d}tjƒj |||ƒdS(Ni
( R RRÕRQRæR\RRTR^RìtRead_State_YesRá(    R×RØRÙR¿RQRßRR¢Rÿ((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytOnReadCompensationes     cCstjƒj|ƒ}|j}|jƒ}tjƒj||ƒ}|j|krrt||ƒt    ||dƒdStjƒj
|ƒ}|j|krªt    ||dƒdStjƒj
|ƒ}|j|kr t ||t tjƒj ||ƒdƒt    ||dƒdSt    ||dƒdS(Niii
(R RRÕRQRæR\RRTR¼R½R^RåRíRì(R×RØRÙR¿RQRßRR¢((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pytOnDelCompensation†s$      )cCs2tjƒ}||_||_tj||ƒdS(N(RttagGCDelCompensationResultRQR#R R (R¿RQtresultt
sendMCPack((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyR½¥s         (CR RERRR tCommFuncRRŒR«t PlayerDBOpert EventReportR:R”RçRBR>R1trangeRñRíRôRîRŽR­RòtLimitLVType_Cant Read_State_NoR,RRR—RR R¹RR.R4RRURYR[R}RmR]R¤R´RSRDRÒRªRÚRÖR¼RåRÛR˜RtTrueR–RR%R$R*R+R-R.R½(((s\.\ProjectSServer\ServerPython\CoreServerGroup\GameServer\Script\Player\PlayerCompensation.pyt<module>sp                          -            )    >0'(    ;            
        B         & A                        !