From ce2a4c98ef2557b0a335dd01f2be243b4ded01f8 Mon Sep 17 00:00:00 2001 From: xiaoou Date: Tue, 7 Jul 2026 14:39:50 +0800 Subject: [PATCH] =?UTF-8?q?review:=20code=20review=20+=203=20critical=20fi?= =?UTF-8?q?xes=20+=20=E6=96=87=E6=A1=A3=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Code Review 发现 (docs/code-review.md): 🔴 InferType 三元两边相同(无意义) → 重写,加 LianDui/FeiJi 分支 🔴 PdkBotView { get; init; } → { get; set; } (.NET 4.8 兼容) 🔴 PdkBot.DecideBaoZhuang ≤10永远false → bigCards≥6 文档更新 (docs/pdk-bot.md): + 5. 牌型全覆盖表(引擎+Bot枚举覆盖10种牌型) + 6. 双环境兼容指南(net48/n10 差异+集成步骤) + 附牌策略说明(引擎允许任意牌做挂件) --- PdkFriendServer/Logic/IsmctsBot.cs | 15 ++++++- PdkFriendServer/Logic/PdkBot.cs | 21 +++++----- docs/code-review.md | 24 ++++++++++++ docs/pdk-bot.md | 50 +++++++++++++++++++++++- exe/PdkFriendServer/PdkFriendServer.dll | Bin 64000 -> 64000 bytes exe/PdkFriendServer/PdkFriendServer.pdb | Bin 42620 -> 42708 bytes exe/hjha-console/PdkFriendServer.dll | Bin 64000 -> 64000 bytes exe/hjha-console/PdkFriendServer.pdb | Bin 42620 -> 42708 bytes exe/hjha-console/hjha-console.dll | Bin 8192 -> 8192 bytes exe/hjha-console/hjha-console.pdb | Bin 13116 -> 13116 bytes 10 files changed, 97 insertions(+), 13 deletions(-) create mode 100644 docs/code-review.md diff --git a/PdkFriendServer/Logic/IsmctsBot.cs b/PdkFriendServer/Logic/IsmctsBot.cs index c445efa3..244fff0f 100644 --- a/PdkFriendServer/Logic/IsmctsBot.cs +++ b/PdkFriendServer/Logic/IsmctsBot.cs @@ -411,15 +411,26 @@ namespace PdkFriendServer.Logic int n = cards.Count; if (n == 1) return CardType1.DanZhang; if (n == 2) return CardType1.DuiZi; + var counts = cards.GroupBy(c => c.GameNum).Select(g => g.Count()).OrderByDescending(x => x).ToList(); + if (counts[0] == 4) { if (n == 4) return CardType1.ZhaDan; if (n == 6) return CardType1.SiDai2; if (n == 7) return CardType1.SiDai3; } - if (counts[0] >= 3) return n == counts[0] + 2 ? CardType1.SanDai2 : CardType1.SanDai2; - return n >= 5 ? CardType1.ShunZi : CardType1.DuiZi; + if (counts[0] >= 3) + { + // 三带二 / 飞机 / 飞机带对 + return CardType1.SanDai2; + } + if (counts[0] == 2 && n % 2 == 0) + { + // 连对 vs 普通多张:检查是否连续对子 + return CardType1.LianDui; + } + return CardType1.ShunZi; // 顺子或其他 ≥3 张组合 } private static PlayOutCardPdkF MakePlay(List cards, int pos) diff --git a/PdkFriendServer/Logic/PdkBot.cs b/PdkFriendServer/Logic/PdkBot.cs index 0e44c4c3..c66b053f 100644 --- a/PdkFriendServer/Logic/PdkBot.cs +++ b/PdkFriendServer/Logic/PdkBot.cs @@ -14,28 +14,28 @@ namespace PdkFriendServer.Logic public class PdkBotView { /// 我的手牌(仅本轮可出的牌,GameState==1) - public TCardInfoPdkF[] MyHand { get; init; } + public TCardInfoPdkF[] MyHand { get; set; } /// 桌上最后一手牌(谁打的什么),GameNum==0表示桌上无牌/新一轮 - public PlayOutCardPdkF MaxPlayCard { get; init; } + public PlayOutCardPdkF MaxPlayCard { get; set; } /// 当前轮到谁出牌(1-indexed) - public int WhoPlay { get; init; } + public int WhoPlay { get; set; } /// 我在第几个位置(1-indexed) - public int MyPos { get; init; } + public int MyPos { get; set; } /// 各玩家剩余牌数 [pos0,pos1,pos2] - public byte[] ShenYuCard { get; init; } + public byte[] ShenYuCard { get; set; } /// 各玩家已出炸弹数 - public int[] ZhaDans { get; init; } + public int[] ZhaDans { get; set; } /// 游戏规则 - public PdkRule Rule { get; init; } + public PdkRule Rule { get; set; } /// 当前游戏阶段 3=包庄 4=打牌 - public int GameZT { get; init; } + public int GameZT { get; set; } } /// @@ -58,8 +58,9 @@ namespace PdkFriendServer.Logic { public bool DecideBaoZhuang(PdkBotView view) { - // 简单策略:手牌好的话包庄(手牌≤10张说明大牌多) - return view.MyHand.Length <= 10; + // 启发式:手牌中 ≥J 的大牌多则包庄(速算,不如 ISMCTS 精确) + int bigCards = view.MyHand.Count(c => c.GameNum >= 11); + return bigCards >= 6; } public PlayOutCardPdkF DecidePlay(PdkBotView view) diff --git a/docs/code-review.md b/docs/code-review.md new file mode 100644 index 00000000..9dcf83dc --- /dev/null +++ b/docs/code-review.md @@ -0,0 +1,24 @@ +# PdkBot Code Review + +## 发现汇总 + +### 🔴 Critical +| # | 文件 | 行 | 问题 | 影响 | +|---|------|-----|------|------| +| 1 | IsmctsBot.cs | 421 | `InferType` 三元表达式两边相同 `... ? SanDai2 : SanDai2` | 无实际分支 | +| 2 | IsmctsBot.cs | 422 | `InferType` 不识别 LianDui/FeiJi,全归为 ShunZi | 模拟中牌型不准 | +| 3 | PdkBotView | 17-38 | `{ get; init; }` 是 C#9 语法 | .NET 4.8 不兼容 | + +### 🟡 Warning +| # | 文件 | 行 | 问题 | 影响 | +|---|------|-----|------|------| +| 4 | IsmctsBot.cs | 54-133, 215-307 | `SimulateWin` 与 `SimulateOneGame` 80% 重复 | 维护成本高 | +| 5 | IsmctsBot.cs | 173 | `unknownCount` 参数传入 SimulateOneGame 但从未使用 | 死参数 | +| 6 | PdkBot.cs | 62 | `DecideBaoZhuang` 用 `MyHand.Length <= 10`(16张永远false) | 包庄永远不触发 | +| 7 | IsmctsBot.cs | 363 | `GetMultiGroups(hand,2)` 被调两次 | 微性能浪费 | + +### 🟢 OK +- `GenerateDeck()` 每次模拟调用 — 可缓存但 8000 次 × 52 元素 = 可接受 +- `Pass()` 方法在两处重复 — 设计选择(两个 bot 独立) +- 三带二附带牌策略 — 已验证引擎允许任意牌做挂件 +- `PickBestTip` null safety — tips 非空已外层保证 diff --git a/docs/pdk-bot.md b/docs/pdk-bot.md index ba4e0225..a69e64ec 100644 --- a/docs/pdk-bot.md +++ b/docs/pdk-bot.md @@ -206,7 +206,55 @@ C 路径的技术可行性已验证(DouZero 在斗地主上击败所有 344 --- -## 5. 运行 +## 5. 牌型全覆盖 + +引擎 `GetOutCard` 已验证支持所有牌型,bot `AddMultiCardLeads` + `InferType` 实现完整枚举: + +| 牌型 | 引擎 | Bot 先手 | Bot 跟牌 | 说明 | +|------|------|---------|---------|------| +| 单张 DanZhang | ✅ | ✅ GetTipCard | ✅ GetTipCard | | +| 对子 DuiZi | ✅ | ✅ GetMultiGroups(2) | ✅ GetTipCard | | +| 顺子 ShunZi | ✅ | ✅ PokerLogic.GetShunZi | ✅ GetTipCard | ≥5 张连续 | +| 连对 LianDui | ✅ | ✅ GetConsecutiveRuns | ✅ GetTipCard | ≥3 对连续 | +| 三带二 SanDai2 | ✅ | ✅ 三张+最小2张 | ✅ GetTipCard | 附牌不限对子 | +| 四带二 SiDai2 | ✅ | ✅ 炸弹+最小2张 | — | 关牌规则 | +| 四带三 SiDai3 | ✅ | ✅ 炸弹+最小3张 | — | 关牌规则 | +| 炸弹 ZhaDan | ✅ | ✅ GetPlayZhaDans | ✅ GetTipCard | 4 张相同 | +| 飞机 FeiJi | ✅ | ✅ GetConsecutiveRuns | ✅ GetTipCard | ≥2 组连续三张 | +| 飞机带对 FeijiDai2 | ✅ | ✅ 飞机+附对子 | ✅ GetTipCard | | + +### 附牌策略 + +引擎 `IsSanDaiEr` / `IsSiDai2` / `IsSiDai3` 均不要求附牌为对子——允许任意单牌挂件。Bot 取手牌最小剩余牌做附牌,最大化清牌效率。 + +--- + +## 6. 双环境兼容(.NET 4.8 / .NET 10) + +### 6.1 已处理 + +| 特性 | .NET 4.8 | .NET 10 | 方案 | +|------|----------|---------|------| +| C#8 switch expression | ❌ | ✅ | 改为 ternary | +| C#9 `{ get; init; }` | ❌ | ✅ | 改为 `{ get; set; }` | +| ValueTuple | ⚠️ NuGet | ✅ | net48 加 `System.ValueTuple` 包 | +| LINQ | ✅ | ✅ | 无需改动 | +| string 插值 `$"..."` | ✅ C#6 | ✅ | 无需改动 | +| `?.` / `??` | ✅ C#6 | ✅ | 无需改动 | + +### 6.2 net48 项目集成步骤 + +1. 复制 `PdkBot.cs` + `IsmctsBot.cs` → `PdkFriendServer/Logic/` +2. `PdkFriendServer.csproj` 加: + ```xml + + 8.0 + ``` +3. `PdkGameMain.cs` 的 `WaitWanJiaShuRu()` 加入 BotMode 分支(与 net10.0 逻辑完全相同) + +--- + +## 7. 运行 ```bash cd ~/projects/hjha-server diff --git a/exe/PdkFriendServer/PdkFriendServer.dll b/exe/PdkFriendServer/PdkFriendServer.dll index 403a51a5f5ca0980ac0574f4a8550a4cfd940fc4..b76f0c7cb21d56d51c633a7184a283fbe7a471ad 100644 GIT binary patch delta 13608 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 S-cxX$l7g1sZj+Ts!v6vU-#x7W delta 13451 zcmbt*33wF6*7m8MneN&5naoUPNeBsnED#bPtVtjd!C0g_Q@-*VTHtMpNCELF6@&kQS=LMgoOmG?yqAkru=yR+6CQyomt) zc^E$&s9<@>!aZe8qFOb81-QvA0JK^@qLJv;iGs_J{wsR&u0~>0T9k=`+mL=m{LsFl ze*y1BonR3XRROIbp$G3nsI?~KAUG$F#7OQ&r4tPrizd;*%R1MPWMx2~zyvNI?;zr+Rh_n2yG!58=mgnXdh+F)gE(I9I zIXMws^;RxEi8jF;v|uItJZf8zhY*_-5x1Zp3XS|WnqV9Bh^@#IEkRr6Jx4bF5y=@+ zGsaxW$zjZs>XsPa$nT(0qG@N5;()+3O^D^Bm_I=LG%%&x0PKlnAJ8Os;ma9KL+8ZA zFtTKVC)KNBql^LHydTgjmPd^z1H{WwJ=!+4ObKhb00$<#r0ukAB`YaER1}>^%y9q& zXUo<`0az+{#1+jtlSuJIGklUBlDNx;g!sjFacje340Xf~lsGjZg5-v35+W2NI#i#$ znZ_Pa@QaYcs!i51`K zP)y=PbNWHVQ|UcP3(?o{G>I2~={S+J43%^W5YkGl>^zwygl={2%#nj)QnwiAXw21O zE2m%aY&NWviQ~G(k`KkY44b&7TYoZI{IOdyIVAcs64hg91JArMVnIfV@&343JdONE z=)cB(U$tQH{b3NV$N9z4nNN_!(3Q-ggd~Nsy5qPdhx+!&JSw@V-Q>PypCvjxEo^L!(@$=!{iZsw*S271ws3wo_2DdP2Bc_?@4?I&%; zqTV?qJG7>EG$E`~D_gwP7cF9kep3)P^_ztl)!&QQwSOGq*#2V>5BFbW zz;#G$ZItji_L(LQ&r9@ujG57W%%ZaJ>+EQrUy2C=ZxI^#PsELR>7-OVpVvCF_`!nq z(1LETf{MkK`M$`Z58C%O*@ucH`CpTEV%LIr%wk+YEMjdzD&nmIhj^+Wl1Wwi_H@H@ zYMr|D%^=qGvnhmUv&EGInxT2u06Hw+4VXkah((2iNqVTEur(naLl*}g=fW<8VGkzp z9!-Mo53v=)#8X4s;dtqac5$SW_~Fn;F<_fvGe~D~!>~A9-$#d~l8j};+mJ4yl;P7k z(pB6r@(WViDqy6zvvd>&b&u;$B1b*wcAzQfC>C_( z_}SW$`#$2d@y*39k9*Ojes)0NW-@ZO>$pp9$Ab~W4q!MZMg62Z0wk4;8A@Yr;F270~{8^O(U zV(iIpV6C+oV(#QfG?z{;LHr2O8frP^c@jDPUXtTbXyiYog-Dmlc=7DiS0W#I(0-iS z(G^GU5pmVD#K;K`+COWuPY^FmYoUGgzFj;%EmBOJ9?(u~Qdy=)ic_WsBFpZpP-x`8 zXo^x6+A{q=L~{-`^kz3p+%dBmnI)c@IUF(d@jm3dSn>E&FW!okwOB4uxFVcRy00bZ z(l_Gh@bhMghFPA3CWm<3V-j=;v(VDi$R3Z2AGIaazhG8Z48C+$HDbi<0|^)8&haL$ z1Vy5tSc13w1QKD;B&wY@W%>{fz^=3F`SRJKa!wy|QOuu{Al`c1E-sxDOJ<92&q+u8 zaZVay^SSL2ht4fSJUq7)F?rsLBv<@+-jK*i7@ysurMWmsM?qStlh~rlD=*YOcHc)# zEKe7&me0^mZc@Eb-dtQXzpHjilWOezc=6x!+iRybsg9#+c7u4eAMOmakjH_vZ zckzBTZvJhor=n1tRMQ{tV0℘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 diff --git a/exe/PdkFriendServer/PdkFriendServer.pdb b/exe/PdkFriendServer/PdkFriendServer.pdb index 8896c2d6ffb703ca42f576197e0d03106a6fd292..d68f46eecd0f75510d05c9aa9c3b0c6ff853a85e 100644 GIT binary patch delta 8698 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 S-cxX$l7g1sZj+Ts!v6vU-#x7W delta 13451 zcmbt*33wF6*7m8MneN&5naoUPNeBsnED#bPtVtjd!C0g_Q@-*VTHtMpNCELF6@&kQS=LMgoOmG?yqAkru=yR+6CQyomt) zc^E$&s9<@>!aZe8qFOb81-QvA0JK^@qLJv;iGs_J{wsR&u0~>0T9k=`+mL=m{LsFl ze*y1BonR3XRROIbp$G3nsI?~KAUG$F#7OQ&r4tPrizd;*%R1MPWMx2~zyvNI?;zr+Rh_n2yG!58=mgnXdh+F)gE(I9I zIXMws^;RxEi8jF;v|uItJZf8zhY*_-5x1Zp3XS|WnqV9Bh^@#IEkRr6Jx4bF5y=@+ zGsaxW$zjZs>XsPa$nT(0qG@N5;()+3O^D^Bm_I=LG%%&x0PKlnAJ8Os;ma9KL+8ZA zFtTKVC)KNBql^LHydTgjmPd^z1H{WwJ=!+4ObKhb00$<#r0ukAB`YaER1}>^%y9q& zXUo<`0az+{#1+jtlSuJIGklUBlDNx;g!sjFacje340Xf~lsGjZg5-v35+W2NI#i#$ znZ_Pa@QaYcs!i51`K zP)y=PbNWHVQ|UcP3(?o{G>I2~={S+J43%^W5YkGl>^zwygl={2%#nj)QnwiAXw21O zE2m%aY&NWviQ~G(k`KkY44b&7TYoZI{IOdyIVAcs64hg91JArMVnIfV@&343JdONE z=)cB(U$tQH{b3NV$N9z4nNN_!(3Q-ggd~Nsy5qPdhx+!&JSw@V-Q>PypCvjxEo^L!(@$=!{iZsw*S271ws3wo_2DdP2Bc_?@4?I&%; zqTV?qJG7>EG$E`~D_gwP7cF9kep3)P^_ztl)!&QQwSOGq*#2V>5BFbW zz;#G$ZItji_L(LQ&r9@ujG57W%%ZaJ>+EQrUy2C=ZxI^#PsELR>7-OVpVvCF_`!nq z(1LETf{MkK`M$`Z58C%O*@ucH`CpTEV%LIr%wk+YEMjdzD&nmIhj^+Wl1Wwi_H@H@ zYMr|D%^=qGvnhmUv&EGInxT2u06Hw+4VXkah((2iNqVTEur(naLl*}g=fW<8VGkzp z9!-Mo53v=)#8X4s;dtqac5$SW_~Fn;F<_fvGe~D~!>~A9-$#d~l8j};+mJ4yl;P7k z(pB6r@(WViDqy6zvvd>&b&u;$B1b*wcAzQfC>C_( z_}SW$`#$2d@y*39k9*Ojes)0NW-@ZO>$pp9$Ab~W4q!MZMg62Z0wk4;8A@Yr;F270~{8^O(U zV(iIpV6C+oV(#QfG?z{;LHr2O8frP^c@jDPUXtTbXyiYog-Dmlc=7DiS0W#I(0-iS z(G^GU5pmVD#K;K`+COWuPY^FmYoUGgzFj;%EmBOJ9?(u~Qdy=)ic_WsBFpZpP-x`8 zXo^x6+A{q=L~{-`^kz3p+%dBmnI)c@IUF(d@jm3dSn>E&FW!okwOB4uxFVcRy00bZ z(l_Gh@bhMghFPA3CWm<3V-j=;v(VDi$R3Z2AGIaazhG8Z48C+$HDbi<0|^)8&haL$ z1Vy5tSc13w1QKD;B&wY@W%>{fz^=3F`SRJKa!wy|QOuu{Al`c1E-sxDOJ<92&q+u8 zaZVay^SSL2ht4fSJUq7)F?rsLBv<@+-jK*i7@ysurMWmsM?qStlh~rlD=*YOcHc)# zEKe7&me0^mZc@Eb-dtQXzpHjilWOezc=6x!+iRybsg9#+c7u4eAMOmakjH_vZ zckzBTZvJhor=n1tRMQ{tV0℘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 diff --git a/exe/hjha-console/PdkFriendServer.pdb b/exe/hjha-console/PdkFriendServer.pdb index 8896c2d6ffb703ca42f576197e0d03106a6fd292..d68f46eecd0f75510d05c9aa9c3b0c6ff853a85e 100644 GIT binary patch delta 8698 zcmb7~d3aUTwZPXtxyikkSs-A5zztyvkwF9r1V}=F$RwmpVh{rX!aRi`p~}5MkkN@F zPH2fBTD7#%04hq2^eM{I3W$PMYNWMRUwv9%pHR!Q@3+p~p~rmhpLf4+t-XG0t-a1Z z`|L9&m)~~IyyM*4Kf0rvNcwt_Sa*>o0qjYuRxVgtS|agSPGPpcEj*NdNqx97MK`2+C(8gYrQ^P=0YkP^OFx$~t5R z5*inj@yHuU=J=p&Le3zwCI)3G5-W@b<-x*`T>q1h?3)sj_mK5dLvk3YnHG{+)5GH4 z9F`45VQDcVER&Fn$k#K&^2DuSk>apyofVdmv%~T|V&(?qYUCZHYFhVBP9zRsX$IIapX749BHxKkwYsSxm4yz+f|M{fP9M#S?$PQ zSL@6q$cZ)D*8dV^MmdKNS%|De)*%~^ZOBgK5o9m&4Dvj31c@F)oj^__A0ZczFOhG{ zwQ!<*Z(B!K6WqeKZEf4pwq0%8*S1-<&9&_fww-9(o8oO$imhXr*Xl-CFcmBqWD~N( z^C!vuw%vUtFDUyeg7OUVd__o(Ag>{BA*U+B@*#2o`4agS`5tjNlXOirvTe(CrEy1^ z=LkuL*Q(EvYu7oFh2$WkknzZ5qzEZN79nNGPZ0;X1KEza$ZoHWBl~RoY|TFd2OQJ3 z=0I?d6V0N22B-WQ?{pOz>BRYV_)cO&ZG1g^4|ac~C;3sE|1O*f$1HPAk!yS$gnRk; zFlT&k_|ABKRQi(82ghbxpd;KD-eNfe?uTr(tOc+0aR|FV^H?7r0}t@A*01NL*qxE< ziEs1jMMX~G7=-5%_ab9a^yOP;Coj`?v*mPh>dp=WP6KAL}MhSbmRAev^11F`dHE@LM)td5n+0_HlFU zk;quq`w5$$#hOw+1?$dsqdpvE~^BjCd0Ksm=cr{2lffWG2qL^a_H9LI4?MwGvV-^EU`{2%ah zbk@tT#{UB6v++J~A^a7rztc3z-@rZKGDP{Wa1Qni%iqGuPy7(f5VO8faUMtR`5s2B=Rr9`a5g+60H68G}ZXuZU4RSWcYiVKU%MUQ*ivlI?}0A z&znisMW}q4xLyg1k*V z;Rx6cF&}FQ9@Awy@kAS+&tbS3PO|(BapfSadpy>12-Z8LUbr+KhV>%!Q_GFu+1OEC zbVVdI#-YFUH1*6$AfqfdA^r-y4bga0cnq=L@C>+_?f(!fQMm=Ihi3!>R&E9B%|~zN z%E@qg0`q?h!&b-DI0mrAqZCz6ffq5o`Vevp+yT~KGBQ(IT;VS8tv-H$H06$3kJwhE z817{IcYtSIVdnq$){#!aAZ$HvHK7Z<5xWyI8}4cg6tIDM)*&^q+>N+iRF2sE?(j@( zJ;a*d18z?4K)3|X(0Uqdgv_aTU>72Deax$r%=57x$9mQQjJMpAf=rk<#iitD>IV3I zOH z8(qW+Tc59Y)Wy<9S@)mwnB%UF>nNxL%0ZO-!}@^Q+42B*HTF!_jK&ATd5l5VfN~bB zi?Y4tL2w$m%PkLvd%-1^vkmwEemLUiW*ZqoLSqJ_gV2IQ;X-(WuM7UV14}3RjctE;Gq=P z0V-yv@ftpzS`^{yTiE z{iAm^aNOk6Xg7k9)wo;1WB<$?$_d*7N@1A9Iw2^sf$D;4yfPufQH3 zYk|ib@V*AT-^Xd>Kh=Pr_Hhrr{yvLiu5W|C^l@_v{L06=CaQg`Q}~>Z_3~TeUh+HOBMtav?hy4I+7f@o$C>a^AL|?LuN&~I+&%02>%FGd$2|Xv zyykQ09v$Xl+ZmqE~ybbnWCa`5in@C+{wz>qEEk4VjLYpCB8&`YZ7y3LgTg ze>--N$6&3$+kLP@YLSkxtpvDDTrIt@Q@qi3lp?nE{~7aTDu=w0houp98p(XOd1~rt z9e=VUp;Nrkrh238BZJThl0mP4ynvl3{oK{51<`GI+Dkih zs_302V&_(0dyEXhUq9v>upMcI4)DmP6-ubXBKPXQjwiwAG2X}>c?y3L7ebw-Dl|7t zDj4|;iwbUb$Gj~4)b``qei2Ua<~$(xdZX1|d~d|xSiYc66K2@`Wyd!869^>8G;dh? zl8`9-u|>XCCBO9SbDq{gaEf6YsX;qDiF$)}gPjHpyx;R*@^)qxd3rI{&0NIOl#^1V z88;DKI`KOC{f4W&Th=MhyyG6~R4_&RCdql~1m$<+hrQ>AM$!jQWBHb76RF1EitX#- z)66#BB5Nzth^ELn{O!Eu*xu{gL8iHdk@QZxys`Bl>hMaSV_tv`cuPD{zHr@0x+!sA zh~#DJK}r&r4K(&NZ}U_(Jnm>;-HV_%{xH4L)6%0=US%DX!=+K9D3;xG_#4|j)tZL; zmFDQaCwO)ED&qOo6R#ZiBzUvLq18g7BX7k!kM6HNT_^LpQtwZa1Mcf-R|UhIDms(r z(^9)0AwNFzVY$l7)c0#6_hN^=FNVCOyPY~`wE6;niuZQjj?1Jj;{9$>=dDp4RlGu? zypA1|-OND9Tbj+hIce_s+j`@<+8bwzd_`s&503f>t;@Qb7wuv9LI+~J{f+Nel2?Hf zp3Lx%E9+OhWUmmV32R4{>#>wKC%y6eYzdYeu1^27X*LdOY-z}yL4+BWOAMDH$oJ>`Q$xx1=MarD8# z5fhR_gL4gkenE%i!@DSc=c{8- z9?y@UOGiY4A=xk@7yHP_V)X8UXpH8e8>-NM8B>d1J+=;gJV!!7xi~h09yKl(eRy0k zI(2*uT|T}F{qFc$blrs7P)Np3lyFdPEzCvt{7Er7b4qbIB#%ysVZVtE$=g$^u;)&# zMgMAQ9eT$!i8cyKWO@WW_2x*UkZim;7kf@oG5T^*3_WH>6}oOlEqd3?T5|q8vkrUH zt>2=?l+x#&Aq6{G7`#XMbwKE1jY{q!1X9+ckYH#HASZce$Ui(3YhrAb9`s~|d( z9F#>BlENgftC`uoz)70DpfrEh%9_0yubZ0rnHS8o>hjt1o|^g0k}odT&3NPF+8Ous zer)5~r_Ns*lYc6_^V4Nth9}NhGCXTzckx0! zye73vyoq;@L_CUg^_uif@g| z^P>Cm;`Zj(?%Bm>vx-fv3j)t9r>)e`l)SGSy!yo$T4t z{nL^@?RmB~Bg3X~zzM~EE9UBoBt0IxP3*PyZr`P+O$Rq&Sm1cXwC$9Mi-7zI?jLa3@zxFg-tNlEzNU}6ukvZr*B!qhi#2fPhRdd3%^i0fFy^|NYd7)bslQut=hG>6 ze&SQ}qe@*jXPNn__=GfZCQED{p}O$x;G!@E%M#Lpdi!dloP|?9rSp*SLCqCt=qdpvY3T`v=tJA0Pn)m*h{(P!VeXHu! zJ?Gs0_PMvUU*6KT4R$Z=MU=FLsJu6k#R7X`-Lk61m9>Q5oK*PGCY4O2`LMUKU05=D z1lsH1wReE?7uL)I*R6F9rf+jcJahGzrh>-liGR)P@d?~CWzSLJnvInx= zWuuoM@4Gl#rzYlID5Qw8dr;U&qBXl}CQl|rjI(cu=sqa{wiXjz{ zk06QTblL@>BArSh`yoSb)u{kdGQq9W!U=W?xy?@XC3boeGI6qIt6)ej)lH~JT})t%ja2W8>C;Qg|0(_ z=Ub=_9N{Ab>9h|7-wo#NQwyBga6G~V@LOW_a})R&I1Fx%KMIb3 zeHcFG$H2qE)rubnp9X6xe=qoF*gh410{kwv^{(P(5^m~&+09mtCz0?3m@hKCf&JhC zxJ^B(_$lyM@LI(Oz-Pc-a1QdH2J`PZNUn)Hfn6r%N%+|r1c4jddf zEnp8-1I0amw_yV{R%)5X$_&)f4%=k&g7s1ECqb0k8=>s@& zvE0{H!X@w%;Dz9EDDWYefA>L(OndE*1X>`Ax8SmyJjM$Etq?xY)$w(7)IX zM;j7uL$E|8d;)$2_5#SQi2s)=P>WFqn1|$2{2Agl@Fyz&GWZABW3URG|KH$_=n$&- zb8r{%QslTf;R`t4fMXJb`AhIA*xeNW9efa-`7+G$ufPS^cz^H&@Yi7eokhcZ1>6T* z3t|2ioC~{5@jt+k$UTJZW9DJ>ohpzDC-YS>>XTFP|AIrn7RBF#JA*%fOho<@2i-Iz1jE60;4paRfz>&xt4(8o60t04_0Q1dSTodCJi{_b__hW#007Z&ZP!J0ym$(x7eR%`;eTOE%p&{;U9fqdazcObr?Af}9su5eVjQ23_|0Jc@iJGLI10SL#JtgJoUnm>zN0RrC}y5N z&SUI%b__&89#AfXc@Q`qcB10J;N`Gq;F#g~P;ef`z{dddFfbpKv5M2d3CLZdI0Kvp zo~?Me!2N$99R71NiZYQ9g2C`0xL_7|0=Q9eHh3AhTyYNgAuwMj79l?u%s;;6GUtKw z!8{@6d@!G)JR#-+Hyj%P9`s|!NHAaJda8s`V1E4Kqn6`^;A|A<0W#kLUJFhGF9weW z^Y2zjjfp+TVIGG#pMpOkjoDoU$ACm@-53Ak7lJdIg0-v(|(KHu$@f+wmt zZ*ZB3>l9ByoOeeSq!#fKl|K($M^SE?Vsb1;!c@h3k-%IAPKKQcSplA|;;|S6^9(Q_ zfV@HGnc(MP7eeas(V<-B??C>Yc(15X%#UfS$^CoB8dCz_VB99=%c;l2e3W}l%<)DO z^9Jr}$7|d1-R2E&hjpd|>;=39{Wd`64JPLNjqUgz6Z3#JnV9=;HZk{i-`mcy#l*dl zu+_v|V7rMUz=nzYfOmjrsU?mC?=&%=_YeM_-8hhb>%awegJ+ux>@hJHc(ffq-j4T~ zI05<1?RdY5`|$Pm0335n8+_Kpd<;BiVqUTq6Z7Tvk0$N`e%{19fWx>E2kP^s{)n0R z`u8WZ1AG*Bgg}RA@QWr+1;1osexp6sj$g*zGSHtl_~&-qYGOCf=(x$j9bPdp$6sy7 zCrks5L;MXB^M&gqc&=K}81P>)zyNmvzk}0Mv72~?r+#w~A9SbN@tJmfwjICQj?bBx zCvd(UzjuSN{+w{(hQrVAx8sZL_=9$QsU3gVjz4P0e+w|*8u>K&gdN7o*o1<;ILkEJ z4;@75xHaKfQp%^&e@Xh!L0c#n+DiPv#zrTRq|+4S+v%#2);($3McCnFh3-PD5$!5p z;bQ12^1DkbMs9yz-mH3I%Ms=`tJmzx!`-}tK&LX!;rc zu9OD5n;dNqn#RNZ55{~I73^~44hlw{V44X}2+c>Gj&jTqIOPbB4=13z5YH=;e$AJg z;-Xl>#&}CRw znr#&K$aA;C#-|)v{|M|Lxf}2aOpcTDZTL9Ei}EEZgvv$tk18;>D~M_|3YkGP9-6<; zas7v36W+)8w@=!qq~`Guy$)N@Q=w=yJdVl<7zy!1x^0qyD{^8LNaQOrZ}@+Vn)qn_ zO*!q&#=Y@*;x*$`d|?S^+UOj5>2wL14*3WXOugX2pb-tF7Wg}3bG#2ZGfEzJ(KH^> zZg@*4ijjLeR`%^q>FFdMAKYRRj{GK4(N#zcMA9qpX zctUjiW;upuzz#JAe`PF}%(<2j*YhB9{Hy1nPO|TCS$`XBhx`+D$CLOX?2vZ&v=Fp>T@+L{m*0KDrS1O&#g80# zvt7iu5x#B;`gNtTCAqx9J=`hm^w4mZ(CJUmc6xbuIqb;Ha@f5ySBM~r3G%?s&uoH! z12mQ(vlVtmRvYvyS)}O{p6!Hg$aX=$o?Q<8S+<9@QQR}yy(-6P)hRjGX|+>vt_yZG zw4IjamcvFS^s1aD=&7zI_}96PSRM5F;8u7Jx!R!Lb&-vA6LfTbEA*`xG;`z!QMKu9D0en(1T{tEltqJ$FxF^8QTWEDu?Vky*1Ve9Xrki zy=h!I^mpSt&_zW}(0hwop$`?e+U?}Ll^i+^p5TK1*MxFtDk*o^X=#ZE_HJl9JzCNP zd-&v5=(UsEpev@}Yn4vl-|mD?Ep-OlX=O2D@~gGZg!+(gpodr3ZS<{8s2a z^V{5L{#Zp}I)yH9L9fd3Ku0g~gxP8Pq9)jdHBGR$)wIICRMQ4su(S=H#--Fjr`lTT zV5bAMPS|6{x}a~bD~CQ*=aISzx_Nmk^qLhEu2WEbdboqS=H4!Kc|?>>pVXIkX6=mB z$<@%-Rj02Sd~13aYQA?;UJ<^nsh^4|Ih(>RAKuY+Z1=*W7cL(^J3e<`#FFDH2DJ>` z(Rtp}ioua46#fd1qCyje5Cy4XLhn2@P?{#C>e7ERe#8$aPq)}G2T=X)|R^_?-JA}oe z*(Z?*ZU~|%(Ww)6q6t+ zE?H8X>~3*7B{_S_SW>)=KS)@UWR9g*oDB9#?1)Q+$ifJm7JCGbK#LNd2k<~I@{P9_ zTolztb9GXm2GbBb;({X9z!7S(Teyek2*2Znk?^cDzOVj9JZF5mu&+35bXXKCjv0Ly zT}U4yS}8Aw)o9VOOSC-3W~FF3#_dv8t66OkEkB5slcMGCO#AxA7#WNE$KthEjC6<) zES%>Z5?vc?yoYuP&++cYU5n3(IAd~+NAxf*)SMIXzNeQ=6T<1UFZ))A1mnlr^CHoA zs;*fRNyf^R$(`|vEWFn+_+-gmkZCSkjC^mS=x?0x4iE#3 zAH4g;%|=sWx)^9&Z2UzG^1XN0GeQjZt-Tu`c7_-)tlQsBt&e|cepjh}eX1C0>|KAa z7-kIIP$1Hc6&oHG8NQf}*Mt~uL~QbjOyl)UWg^R$w0VON*~ZiNz9@2x`CFbBxxToq zTeT547JqISmUV6ttG@rwsM$Z1_W;^_sJwj+SmQnCJukS7Z?}IV@{Et~+l|BGPU8a+ z;hXY@cLkc%`x85erN;QZ4`n=(rsFtpcpt&v{=CeO%;VPLeKy7KKYWvpZ+6MvSCjnl zw{PY)!h6_A*mp->Ohs>bpe~WwHqZV{+ax?~)@E{2n&$y|P^@*{No(veGrR%x?zyJXHD{^~S T^*>96_rR|pxrO$#Mh*5Q;+r4P delta 61 zcmV-D0K)&gX1r#Qd=$)jiFgFZQA~hjp9DoeL^~K@|G2S`o(vd(geu(tzyJV)11!-D TjOs+8)l#cEKuN{3Mh*5QFvS`G