From 1e5ece947c8d40c90e597685c03d558cad4fa003 Mon Sep 17 00:00:00 2001 From: tinkle-community Date: Sat, 6 Dec 2025 18:04:59 +0800 Subject: [PATCH] Feature/okx trading (#1177) * feat: add OKX exchange trading support - Add OKX trader client with full trading API integration - Support API Key, Secret Key, and Passphrase authentication - Add OKX icon and frontend configuration modal - Update exchange store and types for OKX fields * fix: add passphrase column migration and fix exchange type mapping * fix: show OKX input fields in exchange config modal * fix: ensure all supported exchanges exist for user when listing * fix: simplify exchange type check condition for OKX * debug: add visible debug info for exchange id * fix: remove debug info from exchange config modal * fix: add OKX to exchange type condition in AITradersPage * feat: complete OKX trading support and fix exchange config issues - Add LIGHTER exchange UI support in AITradersPage - Add passphrase field to UpdateExchangeConfigRequest type - Fix OKX HTTP client to bypass proxy (disable system proxy) - Auto-fetch initial balance from exchange when not set - Support multiple balance field names for different exchanges - Add detailed error messages when trader fails to load - Add lighter_api_key_private_key field to exchange store --- api/server.go | 66 +- img.png | Bin 0 -> 234279 bytes manager/trader_manager.go | 7 +- store/exchange.go | 80 +- trader/auto_trader.go | 33 +- trader/okx_trader.go | 1123 +++++++++++++++++ web/src/components/AITradersPage.tsx | 184 ++- web/src/components/ExchangeIcons.tsx | 36 +- .../traders/ExchangeConfigModal.tsx | 20 +- web/src/hooks/useTraderActions.ts | 6 + web/src/types.ts | 2 + 11 files changed, 1489 insertions(+), 68 deletions(-) create mode 100644 img.png create mode 100644 trader/okx_trader.go diff --git a/api/server.go b/api/server.go index 9bab6f08..ee10b335 100644 --- a/api/server.go +++ b/api/server.go @@ -454,16 +454,18 @@ type UpdateModelConfigRequest struct { type UpdateExchangeConfigRequest struct { Exchanges map[string]struct { - Enabled bool `json:"enabled"` - APIKey string `json:"api_key"` - SecretKey string `json:"secret_key"` - Testnet bool `json:"testnet"` - HyperliquidWalletAddr string `json:"hyperliquid_wallet_addr"` - AsterUser string `json:"aster_user"` - AsterSigner string `json:"aster_signer"` - AsterPrivateKey string `json:"aster_private_key"` - LighterWalletAddr string `json:"lighter_wallet_addr"` - LighterPrivateKey string `json:"lighter_private_key"` + Enabled bool `json:"enabled"` + APIKey string `json:"api_key"` + SecretKey string `json:"secret_key"` + Passphrase string `json:"passphrase"` // OKX专用 + Testnet bool `json:"testnet"` + HyperliquidWalletAddr string `json:"hyperliquid_wallet_addr"` + AsterUser string `json:"aster_user"` + AsterSigner string `json:"aster_signer"` + AsterPrivateKey string `json:"aster_private_key"` + LighterWalletAddr string `json:"lighter_wallet_addr"` + LighterPrivateKey string `json:"lighter_private_key"` + LighterAPIKeyPrivateKey string `json:"lighter_api_key_private_key"` } `json:"exchanges"` } @@ -843,8 +845,46 @@ func (s *Server) handleStartTrader(c *gin.Context) { trader, err := s.traderManager.GetTrader(traderID) if err != nil { - c.JSON(http.StatusNotFound, gin.H{"error": "交易员不存在"}) - return + // 交易员不在内存中,尝试从数据库加载 + logger.Infof("🔄 交易员 %s 不在内存中,尝试加载...", traderID) + if loadErr := s.traderManager.LoadUserTradersFromStore(s.store, userID); loadErr != nil { + logger.Infof("❌ 加载用户交易员失败: %v", loadErr) + c.JSON(http.StatusInternalServerError, gin.H{"error": "加载交易员失败: " + loadErr.Error()}) + return + } + // 再次尝试获取 + trader, err = s.traderManager.GetTrader(traderID) + if err != nil { + // 检查详细原因 + fullCfg, _ := s.store.Trader().GetFullConfig(userID, traderID) + if fullCfg != nil && fullCfg.Trader != nil { + // 检查策略 + if fullCfg.Strategy == nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "交易员未配置策略,请先在策略工作室创建策略并关联到交易员"}) + return + } + // 检查AI模型 + if fullCfg.AIModel == nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "交易员的AI模型不存在,请检查AI模型配置"}) + return + } + if !fullCfg.AIModel.Enabled { + c.JSON(http.StatusBadRequest, gin.H{"error": "交易员的AI模型未启用,请先启用AI模型"}) + return + } + // 检查交易所 + if fullCfg.Exchange == nil { + c.JSON(http.StatusBadRequest, gin.H{"error": "交易员的交易所不存在,请检查交易所配置"}) + return + } + if !fullCfg.Exchange.Enabled { + c.JSON(http.StatusBadRequest, gin.H{"error": "交易员的交易所未启用,请先启用交易所"}) + return + } + } + c.JSON(http.StatusNotFound, gin.H{"error": "交易员加载失败,请检查AI模型、交易所和策略配置"}) + return + } } // 检查交易员是否已经在运行 @@ -1249,7 +1289,7 @@ func (s *Server) handleUpdateExchangeConfigs(c *gin.Context) { // 更新每个交易所的配置 for exchangeID, exchangeData := range req.Exchanges { - err := s.store.Exchange().Update(userID, exchangeID, exchangeData.Enabled, exchangeData.APIKey, exchangeData.SecretKey, exchangeData.Testnet, exchangeData.HyperliquidWalletAddr, exchangeData.AsterUser, exchangeData.AsterSigner, exchangeData.AsterPrivateKey, exchangeData.LighterWalletAddr, exchangeData.LighterPrivateKey) + err := s.store.Exchange().Update(userID, exchangeID, exchangeData.Enabled, exchangeData.APIKey, exchangeData.SecretKey, exchangeData.Passphrase, exchangeData.Testnet, exchangeData.HyperliquidWalletAddr, exchangeData.AsterUser, exchangeData.AsterSigner, exchangeData.AsterPrivateKey, exchangeData.LighterWalletAddr, exchangeData.LighterPrivateKey, exchangeData.LighterAPIKeyPrivateKey) if err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": fmt.Sprintf("更新交易所 %s 失败: %v", exchangeID, err)}) return diff --git a/img.png b/img.png new file mode 100644 index 0000000000000000000000000000000000000000..232ce69302af04674719185fdfef89fe9f1b0414 GIT binary patch literal 234279 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

p9OxB>c(#AEX!BB>a;$S z3u-HEYLAptTzw7F*nS*AWak3WFKWWcEv%1ljD{cEeezert1pk}#l7zgt1Q)kX`$un zg%n;|wMgJGd$cekAMG`iV1dk8B7DN*k>EuEw5HnKwJfX0mLnjRN8ozjm^bvJd6q& zwmE)sx|Z`^d#WQic-Mbuc9v!@GkOVttOet&75P(Q6+JAt%h43I| zZ?s|=k84(6Aix?@pmt*d3nsahzADiN0P^&#+lW6c{0mY`xEYo_3Sc@qF3WNC$iRDJ zpzp`K0-thmX>i82j7MFP~+x$qSy|-xCO2oxqo$!nW!~z|@MMdqeR22#D?N)O8K;!b7 z<_|@4-*xs0lZ0BlHjxvs%{k(5GA5e*jcWT|(PzKN17o(c;=Vi6{cPBIYrRt-!!qUO zw_Udscup!dP-|kU|L-iWheDJHRrmULG0xEnywOs5M8jGVwT(m-YFZhV`G(m|;{MJjKu8G}>WnMQC4w#*Pb~A+HfEYUnsYVJ6B85dVxXlTR);OshSK|XVBnwN z*|?d*L=7=49=1yo+7@P6Cc59BY7A3llph zhPh&Nf7#u`;&?m+-u11gKP;)qP0w%rr!h0o&yo*rKhfrvL^#egicZzL@Z({Rwx$aJ z%nVc%jUvopolQqjeg^cMj7fiQ*03)@lq&P_i%$Nkm()ocJ+TZ1pY$nK*8b4+2bID_drKyq0i|HPNr6i zqmSO4c%24S7XuMx)fe_?B$wbo93}lr93SabCJWSpLD)XK4HU##8`R>pQ{7Bs;m#|| zVon-a?M@n5#E}98X?^g?7#DfuJ$I|^=y?A6lewDo;D0q?KRTkT?fGPjw|#-4`L2Bv z`kGY~T|ce>b0?kla47J0ewn?H1Cyqqc<3T80LF%{IBdwCb(f4_yzTgvo2C2zm1T9FeLgb!){&nxy zlRvj*m`~(xrSxJn(8{7O1}^aROP?)DmX=xiMPy`TBm;ekA-ot7*$J z;b2xw*XiR#&A>0!-K-}|Z}2LuVtV3Wd8Qp=hUK-L(v)|-N=I8|)o4^-JkqBHmpqN} zB&ImLd9%87LV!-l_cF2J%?$b>I?=t-k(9%nv--R>=oJJwJBwc43 zkrxW54C1acF@Snm>_?Opr!SxE57jEl6*h5v>|at%O4d)N-#=`7$0Y4d_#CC6 zVMuQGJM?&4_GGiF7I;IW`wG3+)>Md2hIsT4m+y?J_wM2g5+-rQj&MYoakM?2Z0}y? z@*5A2i5K1SR}!}L6Ld1q8?Cv&7adqS*()1XMI-o4HbI`&z5zRPmuEh}AMGW2j?Yk7 zJ%@2YK(qg`^_YZ0)r*Q^tMj;Gx4)ew4GhzU2-T%D+F(YOmDQ^bSqFBD!kc^O*UrzZ zpD>l=jO8h*rA+Jz{pARrx^Ub*7CE-b4=UI|bto{?o7mAwPz`z5ckJB7UlpJZ|LuK2^KJ*9s{-3*4Un)Q( zRqesR8t?s(shN=3Tx!IA`sla(E+HIOG4Q#EF~TPOf$4JSi3{mL5+HGG1I&o+xE&N4 zd->^1N8#+faS_#}>gbU9+0E3E-2ZS#`sMtBj_t?YXp$(i@2y6e4>I~?r!qOH6(V_ieUjat~*)2y#95b zAA&oy-pTVxg!iR(ysh!NdCBOhD=#m;Eh+6eGpEIQnL;>{Jm=jaFPr25Ij)X&fFB$DBZR6Ngw+;w1<(VRNzS~#3 zYVeE;7`Eh1!MiXn{781xlpr{x<+YN`(QDF>BR7w0U6OHO&JmFEkLhLm;Ok$ZjAnG8 z#T28T?ew7+ukjYIZXedRxRpIy7NUE5Ta9hF6e0iR>(cIVg`;J2evo)?4>SwBG+bEm zXkJnuVd+x7Qwqn8W#-lOG`6?(%;7=KUR9aZ77LXoJ=DxH(oiqj{;RPz$8}^}u_y$& zF~G)QsxYr_BojZ({&a@FNPO}-sC9SM;?Hq#%uYvDOw6EAUp6}}(S3oKC-Z&`k{+v+ z9rl2xbfNbO>lb#kDJb z^l1F}{t($eD`|Ar$rGH*^}ellXeaTXoxwN%iufLH-P-L=x@$cT^Q=8!Zti1)<0Wme8gU+Cn zpS!*D!EauyL9x3^H1JG&jFF9(5Ia7(G3GG*$<}`C3 zLE(UK{kTf^vl*5#u=ZhlVm1)KpRtGYkh4y(bC>-W#Sq1sv7S$R@5`knTRMRH1*R8hdP?by$yGs%LwgNd%db44qkcVWNt2CEwGdg2Nz5t4 zIyw8X-jIfP%MAVLiv>H@vHtxM?JS|?5#Y<=XrM28&JI||I)-4Kt+wrH@6Rab$~#uq z7pEO**4O{BN3f_rUtg@`Fs2-r?zDOo8e@l4hxjs3Y z(xuy~IXU1Is~`yTN~L-64iUS4{Y%aL^&~cB2CQ9H^r$HS{oiOu1ep0EEv%dXiCzp@;*=LP*}9B z6+gM-Q?6QaIu6svJ;lf7{n}C`#IQ-fI+sdLFrBp92BwIJTIo(>Cq&7~$tlutvLfo! zOVjyHgjlVw0Fymmh)b2aD<%m#R;=@D`8OQ;V*cs0a8$u~c$KaBRs)69ff63s)l*M! zg;717`|`JV#XFJ^Y1*vmkz{iP1SK=GQ1jU6_((0^qD4l`B+~0DnNJD>=2}41kLQ>j(E-~-l7XilDJ7Eu@0zf3=OQlNj2JWc$=25G zZ2tihQ+!{akJUI6NKV;z3y9Fc%zKVE@){vf)cPT7xY5l>!15$I!H7^;SlGwMCt_X!gUDDmp?tnMQ58=Qf<6OG z=)IL6Ipg z=Jm{d({r2cR`|x8pN5UAqnx<_%TXNwHgQ?aX;ONl!D+*l!jgc4?@GD#oDhVp{vbF# zd0!c%jw-6G+LNW|xIAjn*%&8?ELMwS1PyQ&>t?y4Qjr!_?+^*1J*I&g< z*d<3`Lvw*=lYIvEIv%k<(j+aainc5FB;5Y|vTb{bJa%`BDYV`)HKd!M6AwrU3V@fS zBFA}Lrsz{ytHqJW4BwFMZ4@|d=lgmqIh+a|R2#mCHTpdN8qgEaakJ;fqp?O3*w;2U zc9_+>2mfjzxG}1WBUDC9SgR80n-IBvzOl5VffLv{MR%wUC72tTzp<`b-Cwly8^P_IKYL9d| zC$pWZL7%LR3*y~9`Ffqma*J7>a;C%kUc=4|O%|Am)nxFJ@Hk99*O}Eh5xkkLS+nuy z$z!{TR5J`2idp`q(KHtz#CHr>6kO*2A(^jW21Nk*T+bv+J;8e?!bh;1A$P;Lk1hjE9;G9{U*8g5MOgh2B@eK&AZ-Y&%2oKt#*;ck$muS% zG@*32%S{dNdox+xFg&GyZFHHzbP#`k3U5e>2I>RJ$Arhhwx%`9DqrKHS-rpyPDn3q zp!-|Hen{@;C72pnSx|vDGC433eqsu+_2E2T8t|Braab_>aHzpnb?>g8c0TX!*2X0~tkYwKLCT789FnY{sG|LDy&grS&<|$qs!nd_EkH`za5t5$8=!2!JFvL#z10_~FYPDs#}J|t4`@e%6}V7?LUOrGvda6ikCS5$P@aa@R; z1w!!I8+&_qS%buDEA}m?$BoPsP^LSNGr9PKc@9)-!nPeZ<+ z^kDbSZgm`~;UuEvMa4L%teVsi8DP6X(RzPqF@r^*2{*1Ot!)4h6<1ZtMeR$ynAYNTubsINfKKIWjIEy0$uENyJRYxNU74b{4_k)DEO`BUK+rn7n04Ngog&v z2wOu@52U?X<=X9gg~l2w?9~RcTD&Y`9~7yZ8GjHRr*HACG)Jq-%USvAuK22|Phz1C zgX#A4+(D-=60P?)t5Bud?mU-_WQ-Dp@vx04B}Vo*##1bmv;YWqEK6(nURKV3GVru7 znxMoo$pv6gu5%YQ%HC5;9oMYTSStvvuttE6c62lQ6vllwG91Rp~{gnDti-^0D?r!l-}IKHcUA!F>w*;Hy*G@rvnZuxwHW z@sET5?&N5nb$%#>{`S&b!h^}`p!Si*1&Jwj(BJK6Hj48wbOR>yewaBCn!5~+V==i! zK|%TU{W;vATb5)#hV<)7@GXR9@I$^EterQX*2%AKlc~P&Mkhl-xI!sbI_79Hdu)%O zX@>{P%$ktO`2y7^=rr?hsSAdB<`e4adwh&%)N8^vogx0mZfi#_r|!QWb-sJ|=YcGF z)}F)DWJVf(bshk-y__jeBzFA3uzn%_%eYsdbX1hy2wHiS##B4!t zCcM*xvKO%y)Jy+*rg?#%nSoP9P5nI)wKfwNq=8mXWCLVx^6S_nXl=1h!WOm3a-R*I z6<=%I9}1TIv%9EF^TGtK5}HqxU?;6LuY<;x7Ged2GDpGfH~-7(IY>t=*bp0sA}y+g znJg%dsEt(eeNc=?tn-8TZ|8AIClZiS5}*6wg8b~CI;C$p(`3BB6q+_j zkXRUpF7!9?biT|HDYu}kET@Va>t%bh4;4FdCF?#bqR96E*gHe&&ufP|ff#xUCa|D_ z<0M?Fv&a7X(Hql8r(gZw``K_H`B>x|uOHs=-s%0dI^Tc0D-YK4jI~~BO~aHwivVRF zldT5LEHCM9tV~?n;E{C(wja)g6sgjygE2kFsXF9(w&o+?{{X==s)TYN5fTgBdyH99 zFmTW@L|Jw1$D6^F2P#oCN|iIG39@Rg%O*i4tNmHDk{&DF0F_g#|BcZAwIrBquqc=U zJ^)azqW~UG2zYx6h#vKrqD`b(Em!;1nX{X$(*Q9w_=P0I-&Xz}qbx_V+`Sk$)GrBq zE%&J>#Wf0RWb9+u&Wt2ylM;laV9fwngb z`G`W^2}UW;F5H#4tM>2gQUyDtxbE8ip-ze==;ntwqXt7?Aq|(Q89@4&#TKdRZ~ZKb z*T6^zU%?SKv}#J+T45PpXQs6;1rctWr*+oT^-Kr!ls>Ub2OkS!eSLN6>DkGcrOM^6 zIfnX|fLQ0)+UuV+17ek;j(ZQKS9`eN-yEo+gim zvz#@*A%?$l;=NQUC7S#FV)(ADsV@gXV&2usk~=vN!^y8v7&bkX8pxpObqzd3?_ zPzi?Xd>;JTtE>jWRpNLg>tVOUQU;^vUN`1jh|+rUrfck^(~t773^%{!E3FSArGwl~ zn-en7FA9_zFZNN?xrryH*a%qGVOsIu@(6fX)2Kc z_~bVZB&vpYWnu1t&+zQ6j-V$GYXbMShu$2P@+@`l-D3X6p@ymS?I^V zaG8)&sF?+JP6@nCD#v$cf@2xX?&%6ZbdYms?itp^#_G3CzSh zGO|0_#(O{GL+?Y*ETb3W!i2p&FAU%?tuI~lipqy^U(Sj+%2c_CDm1s|1mgrtU-lti zJ-)jzaD0n`UUM;6M(#q4JjaBjXX!270Rw%+p9r5W9u_r|DwT-C{QO1zv)ZR4PLLmZ zYD{2sA(~=#%+Av^MrP=5I6_Ci!n&<_-E<0we6bcE;jmg4_V|B;rnw3s!ws)(4z_14 z`U)_TXaFJF2?W3U0+!}0fa2Qg;R+{i&k%eoJGFiaXl2bKAc?C>~d2siaBpL!uk1Ze{%56GEUWQvdNFs{8 zRnP-~%=dKy6I7UwkTQSsH6xZ4^E&f_r<(G&w|pA5+qCzetMXO}R?P8qCxw^sZ2zw>iRb-=Lw&-oU)z-S@J-A`1ZL% zf2j?riyi#w&U_*L$+p+})eM?tvwo+0Jn-&<+-u$`lKrl7YKH2yb+^n8PwL~H*{?2l zH*z(bj@C3T<_hi%dR-88)K|PM7?AJ8=2)w}N|r%oPUSxw=6Et(BO=o3u6P$q!v{pn z9m@^K(8eE?JcOU{2#rfk9cfjI1ND7nQe)kno+|8QE9YjJU_{Oiym8}W${LVlB8*Ie zT0SSJjO7dYB}Wr_&r2aDax)^<5k!qY!%TnztMgC>lwG8t+LH@VsXd~egO3VZ7 zc)OsuaC|q58rW$po1M7ek>Vp5Sr@$9HvekK!@y_DCHTJIcb3-(g3pe}`kq@_9gN+xC?McQ3v1tS+jQEzUt*Sq2~~( z>=8*Sxy#>=1x!CZB|v$s{-C)2)4BXDS=4n#g7s^?@NHD&7Awl$fJOEZ8*x{ZKkOG2d8X`f>4dUVy{-$wmWCLK;|obRhFMa3A&lA z?98Zz%+)*=t}0WoGD9~5&cJ4`1_3tiyIna+mPMIW?aPXwfZn*QGdFnl&V0^jAVysi zAB%bPW?0|zHwNQeDCdSRi46>}%8 z1DPN-d0n<5nIVG63iApjC}PHOc>matT7KkVNzT&tyw z^O})bq7k9LmQIz(O_*YZMiMSmL|}$C=2z|wV=&7y~EG%wM>2;|GK$7 z*Aya6D51H1S?k!#jMJG+_ zufSH1m>2Kx_x3hE^h4E_#!sE`Eq=w&clB~)c2=_y7t~~GT2O+mtgPM#P|?$){A!&UllU=X8C^O(U46uwvoq?8Gh4opt@92*+TQlMO*TKG+-&>$X_eP~qgHVb z2RP6t)^YXibkZ>bG5r#WmS>veL~RsrJ!td07_Z-&#<<^8shnUgSbO^{v!!%yje4Hv z{k)4i1uzyiDY+x-Fo>UBHKM^GRGt6T!c z2He6a?!*qFge z9;-81AD#{epf9)$z_cIfAmaZyrc$0@3mm7a@Ybs^t!9%0PWPR<8)edRl^VX%KzaW5 z{k6^-dEomLZt9n8#H+d>$_ZZ{Q>=R6(w0JyehqV-ZFV_hpQAyZPUsu%cjlNYfI!a9 z|Kq@MaF!lz&zf{pR#+s{KFk0)JHdvgc8RDv#^e9`RRdat7*1Hz5Yfm0U>#1`>EO(v z0do;`M5wG5&&OFt_E&J51E~Vb=I6+UpqT+dr^I*>FU_ncuiph-04t|oxKF(J{BHtl zh4!UzxpkZPH?j|19h{}~tiHQIzLsuBPJxyX>A_7H)zjRm6t=n4!E`-a7nkTX=72*3 znzn}iakf%6xBY!kEE`AQ2j|{oDo`X~2yURWvy-)#qEme~m%{I{fMS8=s)MRU-ih7$ z*>bP;<&a9pRmd>X<4K*%|_t>_l{|MkTb$1lJgb!(K zax%hx->3n9X(smRi7e6m8eCw<(@YcQ8J{|t_IiP3E{fA zxu;H%Zs|MHJ+{&yp)SzCy#v9!KH>(>gi|JQBXn5(iuG1aCKD%8^XTzH^A$!Qf8x-r zp-r&(B*k!h0N&^%6mj?iF9!WE;JI#>Oe2rxA{(4SqMAfx3ZAC%k^C~+uoeq1W$#8P zpj%iH_IBP*YiXwN*ix#!kOUbOYp;(MMa!veW~YO>A(S91OH2Ja$Gs%JEa|q;ZCMc! zeNQm<&+##>V?2wjU+7qgUNjks18GPrqZZGXZ(bWyZ;Q%p7AS1pYit$D(ry1!4U|ZH zh^ShY-hN$gyODv=wJ`@(v*6hzkyqw4QBQ-c4mKPmw&xc->BsrG-p}0>_g^Dy^hP1kol{){2HjF2Jc3gN~p;)*8Ty zrh9#9L%7`c@ov-pGL;>4{8f{(353$nDdQVwG`XpUaZxV~H*Jc5nfd9tZOZx=%_KgU z9;X59;$$~J1PU-G{T445FbYh#(vP5;K#aHQ1JydfKz@hz=sRvEgv-4gZiz_X(X z=i}c$OIU&%Fz1VOghhLqDStMrdjD7zu^gb2*(=~EnU@^A3b57kpJ#5U#I*;zN7j`S zN##&R_M5PS^=k3=7Vx;CY}tuAu3a`f2s;(Rd4l7MMsl%vY*SOyru}roj@SUm?sq`5 z^D%RoXu*lkN49 zW!|>dWX~7C%&DT96-NRklz;8*XmTTJb#2J8()&-EOoj})#NDMJ)<2U6cuFSkb9WE) z13+Bb2qTpVjQ)jsV{#omynj2-QEEfTFXrQWait#n@jdjqoGbkl>2ViJ$#qvO!^Fbo zCchM0Ql{T|{Uu>b{obFPO`l&|cYe6u_2KkX;Y8M%JW#$!VQBd-`E^T&Tl?DPj^(9j z%aj?Sr=-q6qqImA_2BqJa+;FIp}BeTxbgp-7%_|?4W${#inVshSg4{3=Ah{cV-4E! z|9lIuz?&X=S#muK#eb*d&W5W$3%oj6Cr}03$JfEr-nY; z)ciF(_=avS-;2SF4z1q{PJL?n2%k-9`=LY=>Rh*q?_8It>dvp^p^)JcZyv58LbVRt zypz@>znMs>l2v1z2RWe~^d&`ru%b?}{ta|`9qG)_M z7zP+paRAOHu370LEFt;$XGAUM*~y=Ud})4{-dKjaPo6wk*@+s-H*yA=;NemO_K~df z+95frH9$T#=4#q%9G-H^en+O%X~t`;%%8ovY;fP13;fHEfO8coC0rkawe)q$F0}qJ zq%<^vwy-2a{I%%7;I^+PxPVwk|^2OIG&)7~84ighfyjO9!;cd!Jq@f`KZ<(g~QRpw{C{=~Szvo)q{NaBiXGpokWsC@z$^vMO&htuSc`&6UIiZz zD3Mm_gNx#j{d6uG+MK9Hc?IeuaPM9FshWcIM^MW2BbJbHrP*q?;~*Q zjDeoDCma3vn}5cp_lvuZJXN+4@5>@1PvYh+2*0PctxeOK*iE>z;{GL%$$~Q4?hAPX zPWD+Gz9_R$1XC6von2>JCq6k<=AXHUNW~vB$M1g9C<}fMO{<_$X8s;_l7>epI(M^N zL`nT0A&JPWadgdX;g zc-}|OTKcz44%O&G2^YH7FcYVJU&)MGLAw+ zoq9acL;Dx4nQ)H;9Sy93;&%K9{-{rO;slr8hST6kbX*%D3WEl^VR`E7Nks%7q-&=Y z_;G;6wVdFdzrRNSxKgahdZ#f}Pu-XPzjd~2Trmxly$uYq%(^A$^3GVJU>wsq>1^{cW(`t$f<~?a3-I6~u}~x71^{$L z`_nK#MCrXo_{l}z zMDl2ky?f!Zbxu!Ya*4=XAiP~yZAF%2;$IIckR)Ge=<1_6b4Nwh03P$VsZB^j^&|Vo zjSxmi~&L!f}kf7(`7O$bDA{*Nn+W-2&4C<^kH+4hw{z=BrE=m(VUDq9Po`7 zbAZzWTT`GD>yEfhA`ax=w8h@aq(fX4{_3$ZBTRx*ovSFWgs8fIDYrWIO_3htx3d{@ zIIcY;w|=K|apS;?uV0Qydi+;#ei+n=YydlMfRClYNv3#2dPu3q%o=I6UP;xwsQXnh zWA>+m@qxZj4prRm$rMxVB;4L{%33#k((NOKEFb^k9SickmIiCeonUIwQTf;{g6$_}ShzJO%fG7x9=vBI)^aP}j(n~-} z=piEtNEZ;0-diXU3?L;$MXAyW0YZ^p0zn86NJzMwnK|dq%sJ=&?zj8l{_`P(-_F`u z%|(ALM$`{zmCsvJ{)=iPD)B z2PUL&oJgn5dfR)~zycp|cO}$BXTt5)P8{0BisIMfA~kb`Kgm9#c9{vqYl|g zN;_I_Cf*=h6oB+4=+TDM;G*9Fq=5U%De%2vo0I<*Wo^9P99d>oQG^`<64u*QbXwx2 z-5UWqmoilW)(@G)SOX~o2r;2>vPkAtRpN5gMG(@WzKFM26bYyM4~wT<{blIpy4A<$ z2E2T~Y>d}4&zQ~m1BRf~w_de$VH^h|c;%*Wuihz*Th)LE34lETeDHuvDKo+&x?zH| zP;(Z>X<8c;YBftFI&n&6<(reOiacWC^IKP-0I`Tv44L=N6W-qgx*0iVE6jAlv*prT zOI?a3b#Vf5tQyKm4GEpIoVVg70Ro*e+~c2H_hMK9`NFxJoV^Uq$Hpf5r4Lb|6O=Q? zE|-yQyI%bDDLh>yi6ye&wS#gaPvqD6E|af;S4(?3y=kp(Ra)4)|1(0jyxfQnHX%DdL^BIas%1X5*MrY_TX}y5!y_CnuRF z>ILg!4#`mr#km@5c_MBm8w1u#ItJD;guX8KIco3wOA)FntRcT=-;{$;(sy>_{urN+ z#nG?Z^oy6RWU4eqe`f-E1z5&T7FH>T6?i$0&+IT+3h@Fj8Ig9r>Jb?|Hxt`VOXd7$No+eQSP{H)Y3xFYy+MFi# z_ekbI;8=?w9RL`TA&04$PcM!dU*GDwULxwhnc8F6LeE(f(8(*kQG%#RdyXIu-mN!o zA?$}g;mjMptPT!vU9S(g#+eSA$ub9mW>Kn-+fcKFpW>!(o1Z5T}g$>qgw)g$Kdz+p1D@TQ^;4OS`+^?lM(d(cc zrBlDnFQ`h#zX=#-(Y2Nz+&WK^AEJYaz_fF=U) z5f?41xx^iRyChzD(plZaxy?Bw5%U`BA{ZSEpt=fG6by^d0|Xcap%E8*6?o&8^K3i9(0 z9pXcXlW1W86<+;5{cVtT+cG+BT#VnpV$K;7`Uh47K;VYFGk9}F#yQ%FXbsP-xo~G* zw+yH&3&+AlwiwDu9C&jjbz zzJ%NOV`RKsMZ)*87=yYed*l3{6ZW-dYh_CU{B?#G$pooS;+4w1tQ|Q<#XaXj^5uyO z3zd(4V@~STFgLuW^%}s34ifCUvs@6lqUB=%G$dbV7QjuUY+gYDUe>uJmy-$BHJk}* z^BWMn&(iEr$2J8@Nf|760rGla$ubg0o0DaLBC3kxzC-$O4lcx_xq`rP-zP&+(y#q_ zdLAK?t!#_av`D7|eW5k`en@`unety zc*vKi2toDFn8*R(A%wCv_A3bdP{KzC{M>{mPVWt9qBP3+vQW&1Dn`rvIepc?e5wja z2|>aFe#PbH=OrSLNHI75hlsQ1>&6hzW#{DZ(d9)x4+NIq9y1D%&(nTZ2ObkFss*_; zrIp3aL&XmZ4o^fH@VGuHmfW#4ibukm?}IPDsWB0QXku+{7fg{q*f7s z`p){))XFYEkONgt+KJ(iexCDgc46U3LS4mDi1W|l2>g%UJC5d?Au9=j&Y5P&>o@?` z#`}8X+nCJhMHKnUBwJWaS6;SINu||gSFfo{TuppBP?r>-)E4}yBY%1&g8KnrjfOaD ztb{n9`Whzz_V@nOF4$=Ux6Pnj)@=@czCyj6i~;uk&dFrc&f4(JkB=E{Q)#bCoMm!{ z=1!}HStqqw---(tB3-&!Go&M-_oZHq9o)tSI;i-g90~w}=`R`r86TOXS|C+%{=%(} z{2}G-Zm9zn(`tKmfNn~&J5h?ada*s?fQIDflyb`(@@ZjF0=1Tpewdz~evwhX`ANd- zlC5V)$akczNqYzaTz2Z#VYOnOxo`yHSSH2_9RTQt+BZhazGtD{u;l&45TQ^3?9ig! zTccam$FvI6UZEt!ZgC9qs2(_&(^VC3<>lqgEq7=T1JaTgLl+8ATxAt~zZVw*=k^8Q z{2UU{%JYvhekbEqdu}M~EY}OMPLsa2v6=%8DfhHc@dU#dWFdg{{I%nPdp`~3yWVU} z(961~lkE$HkIMW(jhrVw*FNm4x7ZT$D)V4Bj@nZi3?1(YaN?5iHpp!7? z<@@}$p^$U2H}$?AaPiaN;3MyR+FIRI6@V=bI`rOmm+mgWJ7Szs9(kH^Rx|!s**<4| zK|`HmC~S@Q0sW=%ml+_%`nJYo_Q&Uz5wrvHjj`6|P-|&f;kZQNRhhw?ISD0xt0NvB zL0!oZNslGjoq zsX@NMT*7bcOddcUTm`~nju1!%kim*{8Lx(>gLSkEb!JHbRt%k75=bzdM?c$_ac(Cq z)10pe=3+Jdk#6HC4gld%er&j)GJKM2=!`K}@uJ6Pv8b=4x~DBSqA$y|I@5XK84m~1 zoB}2Rm2lIKPxf6O4izr;`knazIoba|RYpsJd$gsYmbQ-e<0JvFO{N0#@74mqBa?PD zAMp%vqYxAm-cE@948cFJPU`njfiOotehDD0kNUjOkM(bA2)}J zHG*ReN&D?eai}KWKT7=*SV0jw>2>d{Snmxf58=oSPL*L*cn8C+rBQR!7PE_2?%BR8 z?K!DcJw^vYY!SdA{{)&^!x(|8{;H`TK9tQVaTnXw2OC}au0?`m;wShFR0@eH8cyQ3 zMm=#v1!Jg|a&=yXOaBN^h3pi28rstou$|^q8E+kIYMUl#Q&v`ae&v$OMMa1**_Gg+ z+J;J#@mfr8jk#^UU}KhYXSe_~Hs0i4=ETj%KRnReH!LF_6l4rU46Zprm)^%yY|L@0 z_uh-7f;BFAL;z86z;EO*voZ>6=twv%+Is-sAs$t%r09|{wpyYI6_a+O2~p#L$ZCuC zXO54@a2=24LLYCROU9rH|W5rB6yVp1Q@~$p6cQtLLts>bP-@ zzi8yw=(XSW=!-I&9GQEWsr?U)Q#oK+I07U_H~X2BhF8|!F922PzhCWcpF^DG)22r6 z36(YAbxz2(NpOFli^YwquLmla>2GU*&O{e*a_eA)tB#9e77Hriah+v?kTq-PV_=xV zQ0dae%vy;UYAtl&_XV z16wt5L~-^}xw^4eGZyAgq`n$U&fx{}yTZRHKbF3ZySn?1}E^ zT`q5%xxkom*_C(mbeJt&Aby^79gkDIS<66~<3M&qPELuh*?T5f&A#Q}$OC5re-2gNDZdf)K!bSvEGAas;s6RY2L< zXhDY&AK{|8hgPbIGgukg8f{wZPr8AB|MVrd^z%=`C4engQ)|<9*8La`Fx3O7KsAfg z(#z`&X{cKzLJ9`nT|1|@JQ2LUUwc4M-&cL!?Eud1Vt_JluR9!%X5S;Om99?=AbEA7 ze0jae2j#J&Xr9H{FHxc!v6}h04WuBUQn!g(zOBps?b+@J9}akY)pT&-O8fEe43uF) z?atx`zW!5F^tCB}zBk8l2Fpf#_0C_7;bQ>j$g|-<%CbWqNxZ=kK?+f%R0ZaD!FE1m zGk3Gc_yu&=;KD0YuE_g+<=LGis}goWKd61-bdx1YgoXp{$B6^YfrM<0M=(6M@3&|b zuG=M%8VGQ|p55b^z7@9?@=rdcS|#{mqm72_wv%liCgO@i^@Zwn{1n}7ykBvi#=Dzi za@GgfAo<~~!dfc= zFikk{hNo#^(_;>0EDyz#dJ_?duyHyDf=w7Z)|Teb2r+}JBbF{}gIqVpZ@C0C!2zJLMDIUDcB4 zbzN%tAWD>E{Oew#9=t6$P&F&F>HgH}OF-M0NK%;9Q#w#fJJSA}1vND_{-J}v=7RFG zB_$;__DK8BoZlB9&Kq`hc9u6ZjG619&R{+v=20v$-_y>_gOtcqaEz4aBtWQ@UpNHp z4?lHKza6|Gxxd;>kZZGQ)~hLRNfV7+OWEFr({Ya*XS+mv7E=WMtk-u9qsZHtERUIP z%e5&6l+SKvTBrUnsK=TwX2hW{G(y~g+8Wt5g$z_z@w$RX<*PBeMD4qPFN!1goTpD_Kr0g^$!VhFPIzd}+sJcy01cv2%YI zZx4|9*46`q>)JMJ*h4k-3UfHqn@8IAZg4XrIs+$3Jmx4zgDq7i&~XSQzy;p9YpgB`q2Pf;h~ zBMwSrf8_1G8YFCjCvbJ6&oi^X8G1#itW&Dl17kAaokI8yczw^T>6<2N&Fxi=ZwJ)o zwWk`VXzcxYwkDOB$livvhHBmGYjMRV(ES#To>P0?ypH@s>#%j|t>g0Mq(XIG?z;~tHA1te%+hK#51m?f)?yHSoh0~p1J@A#W&N~mDm>+o2LWZooqdf+rb9NbLt>91I0_9iAEFF;r0+}GelSvGiAKmIAul-9vr)# z!oI#+Wa&9)zEdiuj~b@-`P^4Wujrz()c&&v;FhdL7Od;@*+0yS_Ha$1<5;_ zT&KeZLRQvTH@no)h$+1v!{ZH3UE*Jt|AAXa`2A;+-}^G67p93IG{{)y5W}(rYII*U_~=^=6!? zOWJ}Hhe*1Jf$3I$n?sZS7EF?NgjBoK7Ls=_!%X!y73Z#Z>&M+u6ju zm11i^0$VypJXg?b`9&+6I7O$OOeDswShwb2-*0=@lsW@L`U_yiCVYp5i-Na}iq|4| zv+o{g4v&5qCBfT7qA7f(3rRKB!#Mev0HHL=nQ=RVY1ICe?m_b6a8$4u+hTL;s7Vq3 z2zj|;>ziVa)UugAY&w+P70BUFK15IgmJ3tH)Y&a<0UY0!;#=iGATwwW;Q7c*r9xHC zl&$4K2yt9SvfT028E(lh+Fe5BH$Ch9zdu=jd0OLQidp~9^T{bnLqI%phRq0vv|fjp z@S&WQC{|R%4KU*q?ykKXYfOm9NVf@*#xt)<^i^eQ_&7TT;opxjzx{mv!EDTtG^hT= zWxyt>%Vpo*kSC9?PhgE=1Lb@cf;0=URSj({ISzY#bwHZOm*=k{%#h<-uRdt|4TRe( z$FqC8xzw_?z7-7i88UXGG}S=p2{jN(Ud7m^fO*3-$!9rBY)lEhLfx6ww$yrGKE?ybQL8_vUS>T5F zhAj8sIP@jKiL$6?vB0A{Hs8;iRSl;`j}{XZreoeAo~=00rwd>k%^xOlnsgE>Q$|V% zaUi@q^2mK`Fb=(3L0!G??pFv_+6dNZOHaP#!JH2hF`Ds#2P6ilFQ<8nln7bxeqnFA zfM6;)v^X{HgP(#2Z95VKCLPD_JM?UoTa4Pzw(7j6gtf1?H^dM3-5CgDi~XtbxT3Q3 z1K_dwr-1dj-%5?x_hz{OVdbsb{P>S`ZWAkOs^5l~ML&MRr^Mz8CL}Y0RUYm)?an;P zW#5Uoq7)pA+1;OUZ>mNprLF8;G-Bh<4;*I*NY>!m*3_d}!>PWxdw&zB-zMi%9&cka zQxI7r8t#4d6{Be|sh}2P2(_VNVgp$lG;88I+l(9$RHEk4cH81c^W*44SwWkC6qN!} zRGhsNiJ$-ka`M#G55$E5$+iPhm%Xo8)u3+$N=k_uOr3psK#cK3TwflQnnJP1VeFAv ziY~}(i9o*UeO@bRC(QmgFF=mOy94KkOanKPcAzLCTw(7WjV@>Xv(|sJSFHBKK}8MB z+BD%;(@k_8&-)mi`dTlGSngEC5#l?!uagpDZFFDrSlBbmSeVnJW`$sIENundwYpkr z(hGS|XW{b|BeFGud+i?FKg9cs#1nlT{z=)fzq0q`X#!%y(K&=#H`Q95q4XPRS<4;5fmqMTxX{Rav`F3DySnwq5tIjR>?L&tq^n8G z7W&}H13DQ$Q1}QPvH}piUBICKV6X4NFmi8j4uSfM;?F zT8p*zF7)0uxHG|b!o7kE?~EHcg*g5Wz`$&4c-BL?H$uJi213hPn#Em zbBJK=Q~+v8UK$H^t(S+?S-7!TeBWV}j5)|h2kpPjJhgQUYC0H9Zk!72`WjVR`i0O7 z-+Y7iTzw}em(O}zCwK*p!PUlg9Gb7I$;&c3u`)6{p9^Jn^Z?!9m9j7bc#=DxBBw)4 zi`p=|p z13M_Gk=W1$kW<@0Adtxu7XfGm?uKs0QtHJ+eoC&Xdy^V(-;Vyc)&g02e?Hk--_d_B z)aogi5qwMZR$boox5@pP1Sa#3&#M4B%5mWa3Le*9&MC7!Z0-(anQc;0PI_~?i}%1! zd}~HAelh#tWn;jYTH6AT*l$_I21dv+cpqtNu=mx%(Z8*6AGd6=L^_FN-Ruf1sl9n6 zB@MPYI8_(UOOH_4Y`59@s+Wxt%-%PBrHxo)1jl3{JXgemH<*z*6kx$Wra$UxO3L{> zr{}wf*&68Dp)MXcw#8u<`t5X>TP@pk97y*?8Wi0#h4tyg6ur^5Nsso)nx_D}2{;C} zTdlQ&#?%j6?R6(|cV)*|AL$7@7FD1`Th>EwcD=o2q*6GfCN4V;#KeiT?8v(A7jFQz z)iFWEjZ<-=4qmz$upau}t}OE5ioa8ui3%3Sf|0MFl}T0P=d8fstK*yf+dZdT1?}ne zQ1EN4;(dXLV9<>;#W$PNaA}B)fPKAy5Mt-sLqyx{x-F=CHgB_3pwc@&b5dXbx>{Fh zLq?@P;9$A|Y%f2V3hvu~{}~LAZE*8S{q~33%TH*(DbF?3Z%>&Qa$YtN{I8@oh z8x#fE8)WIf#kc?$RK{D^MRIXhxOlC$5o33-wS0i$r7c|x{COg7L@#*L@vGiyzb5at zhSWv24YfiLn=y3n8@si)R7$c|&F!>K&(hn8-TtJQSOWv7c}DOW_S1MfN^0uzo$hL> zqkJ0xUZ3PM1tX6Fl(0?D9zS{%CFP7*sxIP|^=_wc@E-Kje}>0?P7T3d9nCD(gHI|_ zJ0+2CDR8TV(tc0p@8rq-(n(aTf6vx~&sb|>7t+d(1w*f!EU8FM{^3}1bgoUab8kto z=gHt(li9agf#Eyb{d)Ty3a1l(@t+?`3LHoPyrrM`k)&HzSxV9_oo53Z8=CPHo;MN}a^WN4&v46r zK_CbafI!U$XX!gS-4b3=Uq1>E`MBh#r>%0Y`-O8W1Po2+#D#?jUE@dtYI?)1R(%%$ zvG9}{bm(uMnEi*4J+SYWDgR>v-b{7@092RtAY7ws=g>0n!}i|<>?W5=L)E_-gDW{)3&u&P~r&6v*Q?=C!U>Y{JGPClr7FLd7EC^KP{!zbm00Qt!dFtvt+qvtlu& z8g1%IkH?X}j2QTM6}^<9e>m&sR31*ve?GyBA~&xet@XmWrAxtcC1Ra7HJ(&dxV&$m z7)W{zTLi8LPPt6&wo0v5wefhFtZ)B*oaJv8Q@<#I+v3RdViPA`V(>r4_9m6$`R3xE zzd{K=oDm=$Z^ew>)x&!A(k887+piisNC3Miq>=h}rO5EWen6(|k9j$F;WS`fRbNFm zZE7#YF<5Q@j!%zO@ZN|&43RX9l|+g7QvW_WhIR{Clce9J>YU2>VP7A40&MMlyhj^m z>ld>=0KtI{F2-$uXJV(7%Y6iRm;u|wzdWci==j<{?sk>5d7>g2VFGl$>*RX1A^BG$Z{KwFT)oS{|yLq-@zwH9Mnt{7%M`d70> zuES3KXabH^pUpX~b(S+2>cqMV{MFxnivf_3L76;R6VPJx%DBOwGrC*~EcPokQn3=P z1DMusKuX?mD^NmcbaHPX{Ozv=;J@GGx2-}i1!zxk4{b;$N0uG5_-bYR&uwvXx#I9% zf6mmOL;7$3S~3B{{C~LqXPbe-|8u+ln5F-(=59`Y>u1Y9H_;!WQ4kp-^mifo^S=gu z!3(s1Zs$MS2#NnwtpB+1@W%hS@Q=y-|L2rk6=u75@rjmJ1lYvH90pThxEi(WfDT?D zIAEw$h6iycb^b9;z`yOX-@bjz-Mql?>#u$53}o_=-$<9z{_|^Zz@1%P`2vNJkxX27 zpS@zcbm<5~^}FCGa`;u=+u+&G47=!npUD+y8e(C9|_Oue5GH+%Bt(3sARD1CCvwNEpBykWV^#M6F z@ZfK^9tH9qY5hjOFz~=Hf@yBg;noaG$$h_{Sxe_%GJ7^XD=<$}I~aiFQCrcNzc&5N zwcvWfM*#tbPoL%vtp3_i+C53&qS0U`k&hhwx4m5r99|3$&M|^>G(&G3-s?e~lWk9{ zb7yI)3Yjgx^sm!-HQhj;k>MEd765WQ67U%ys5l``-Z^aK!zs((mPTk1cvv7c;n1)? zPW{_-wI9C-`h`LHBIpGVTiS0{KQ2k0;QXWEPXEn}w?_9dL$Yx`jp=mxTG&`xI%Nafqr#5Qs>JOBWc|FM2Pj^#x;|F!=E=p5PV z+CI1D@;>5$zUKLwGE`-4E~FlRg5m3bTUJ#s*vFCAt2xwRH0JNC`nD1X2LvGu^e3v9 z_XZ?6z-$Z`^8brqyfk-K^YK`B|LYL1vKHDXZ}(Q-Jk9nfFl}d=$jED+%(L&%OG+ag zr-&OsTlN3L5TWw6CI&*PXGj$i*T5-0aDRKu42pMqcjX9o@DW~}4`#{1!# zT>|#p&sg6kn+IO*agzzzDK;(P--`W-n;mm!nA}yF!oyN@uWCZs)i&UL0^G({PJPjU0w@()mx%cF#*hEpV3aaIKxKpI-VJ?K^=-@y zM;ZUng1`5ya-_~ZTS7uY{g841742x{=H~WR4yf#+jV0|k$Q{?LCpC7V6#^brhajR$ z^=SOmteYjePCRpLG7}K*g}&Ax_XFb2%yKty8PQQAH*;GMpscIdlC!axp{mbY`ua04 zsEN@xHw~$lFX^+FIO8qHsay&UeOI$i@Rb)7d<|4s*Nt-k%Dj@Zvnd24h6e|?V)ui{ z^`v`RMZ8M?lGDp0z$hBrVY~aw-noZiR)*tDe-RVQ+z{vYeu(Rc#%O*0wWgc^Kbsfx zi=nuv#ULic%j5GSEB^if$(aftq9=1?Pm6%I)K8Mos_gn0HYcbTck_Eyy6-DoqE6Q> z?q3+bToSdg1#0+e@otzFAWOiSHpQEK+tMB=r`#Em5`VS8V(XS$r36Y^2;fEZvz-Cg z8ygMNYwm9+O~WXhWi5C`-m$F4IQrb=)DkD#Nnv5(iqiT~;Q2XjUFPPH!3B}pgO#H` z1V|meJw7HEY5`QX#oeY#_J)KqtCHl5o;-1!ZH=oN22$DpDs8yd6YR)Q5Do+;@FI1S z_EHl;QIN@M3Gt~KH(KcAtmFDTwY;)fQ5;ij8L+H@2PlQf(nD1Zq+fo`;gT%xv+qrv zMMuo{4E7T6Q$FEjY$ooCf7bgvNFmr59J(ODx-a+K_apvMQI*GA$Y?`%V2q^4OhMm% zR^F7Dot<4Kr@Y^L-@wMf#AzM%f2~CyFC*6Oe#@d>G1u=|kUQsqIftuWC#z~1#AB0^ zO>NW*V-V%lVVg{4qM}vjTf#z}HgW2ulRrtCtojoPS z!tm+cT^n>_ogJBo&fO~=IMr2HSg2Jf8!|1B;ug&_I8tS!N;+|`u5X05C}wS6CdXxp z64dzIV1{M-WW?&PFyabO zPSyhOjj@5kuGKG5k|Qr(hO1CPcQpjg_$n>I11$E)gOqLdu!R%L%@}%EdXpXal8}%P zlStx2b-O|n@s((%VY;l4DYeaKR!0i|=9;Psp7FOAk9i%vx+>NLhC-vB!L1+Vg&?v{ zSkxS>EcK4uGAa%mjseI;Qgf#^ETMC01QooFZGYak{_V;}df2-uxrU(ru&Bmz1VR>- z4b=a>ioKr&Bt=Zk@tu8Jwp&kCiS&Oh^`}n*I7Vz_!q0l;W$m^V9(e75|4Yhy-%OW$ zFURq{hk8&b)Y!`EeA?Lz7A6GD<#}*3IQnL-M-5c6&MCSgP5PT?*1Z-TRqK#l%`LdgG4a8?r{RDSQZo5yct26H{Z035}K*mS; z#F88Y?8--eOqV#NtdYg3{7^fsY7PtB?AO&Zyp(!JXal+;W;dT?Y(BMg>-ICXtGFN6 zR9%T7cC`i27_c!eY=NBotaqN7UP!|HjJ$d*!-*RNTY5K zXxiB1TY7dB0{klZCbb)S{KMp2yP1-hre9AH-MblGR0RbZ4Pj5UlqK#S%I-j64q_3i z2v5sWVk|z9t@q753*bR)bX~0M>y5AMyIEqwEA5yr38}T~O2!vxC8CwQ>#3)-jrA?z z)9Se}Zw)?gQLAcx6z`T;k}`OI)vtUUpo6Jw(X8A^=2dDI@W$N8J8%4wItH*jFL|8T zBfY!Z4;7vARrhYtkg-Mw=vZ)W;LvVM)|{oLp>=BF7xFY9kGECjD2bh}pKaEo;$OZ1 zIeqn}eaH585ZpiB1`;{(1gR8nVWrz&1o{UHJ~o0k$Y;(l!T@=5ONPnAO4_w6bmjJb%#*% zbH=2`RczpWUZpw}dj?XOfoDC}l8>wh9_)=`*?n(+@YK!f&X#Ylt(_MvVA=m!o2a4; z=9RyYQ3(}?tvBqyTc#*ZO4c+N8R_e|4;JZ>nTkxTpfysITOzJDzo;sia#ah^zUt7L9J`?sqbS&d$z8qRlz(mYll^ ziQj8*mg@?!-k1i`h5DJ!vS&M3YzTrWn%Jbav${-gUtHn_Ld9B3!I7HZWECp6K75(b zXn4|O>-7CDp+2kebYIHW3o{`H%5bG6J1ocN6}1pA4X)g?Gm7cIYL4a)cmiVbGM9|meFAS%sWr>$oAEGy$<{SLM5?0 z6LaXjE8bZ8(aC+_N%iA`PU+!N5fvptwQ&*?*Fq$aPJ@jeU-ab7vTI5+ks z&#!PK#qoLoDr(#HA{l$Mcr1mD>#-iJg3OAS#8^b_4H^vjkag!08Dx?$#V|4DhtL?%u8qjbJEQfHU;=lO{li(4(#-iGr-4brVwv z=apwnZbFzdsQAl*I+=D|W5c7-GJvI}mfz{z%#?H{UXX>jKWWJBKa)pmWo^QY`&Xkx zV0uqk{ zUrv+!y5yeRMW=xN=T>(L(&@KLtWeX>+)*n15u;9Urjefw(S&+0H%4vb*f$1v^8ff4D>^rA&BI)xK!-Ycaxj|DCHzQqJP zFk&}1J>B`urV>8&GSEc5acpQ09Ysru@liL;Tob9R zwNz)TwRw^XiCT3a{J4O(1UWToyFiQ$PBCJ)*#8JBHD0&s5VtBF5=n10H|aW7SCQb{ z1la~cR7)bj>9G-+FT{B9%o+C<9H9L)h@L6iI=X3;p?=O(ai*d|0H z6eAp*y{OyeLOM;4AK3)Z4f}x1dW}w+>|k=`6M`j=3_=EFAxUz7DZ`u`y0GV+;HfMq z5ZOGJa$fLp*7>v);spRErW$tkj7}H7ke`^Phw_%*;#Nr{&r4!0#a!R+X;7IHUt=<%}@+0I*quV1t)8!7p&H^eMMj!Bo1&~DQ zG^ShzPWUx;Z5_{4%_Yx`lN;tJTyE79fja=ZSmpb4H=?v;w&IVVZ;_JgGzH(rqXti( z=K98dFX%`_Q}0Uy_F2yffONAoM^*t|0uj3WRBkg0qN!ZECUm<_flp|4GfxO_VgWHZ zT~>2cr^biCmgHmWiCz=C3<*cbc9wV+xIKRGfg9meT_()6)>$pvC|`Ys&CvI>$cHsm z?WTm4tZ8tq+`TxUV)o>}O@CX2liM|HlHs1#=pfS-JBG9^NZ9o_dX1C?< zaBzpiPjjV&E}n1-Bq~x81K}*TF)=VBeG$=Hr$kueG|mHjOWZ32!dhq9PGElA3bejx znI%VPaH$!aezvf1jdv?|Dx32>IR6D9Ch|wPha>D@F&s4}TjSp+jN$n?oK|OP!n*-BiX@=ULRtN>d>#dn?N!&L&n}%f1{ea^mI^5X4-32^c7wUY?MENqxLL>Z>T1nZ3EE5M-+09$u+#$Y%jNGI_1W zs>2%&ez}HpM3o6^;?Hz(u8k!FT9*5Ep~g^leuy(9(bBRo#2JRlL9F>+1PR|Nv5);D z;6BP0p@*J^F%w4FNMBW3;j zYVs~_b|tEXN{kCZSbbXZc}~71Y(M{vTVcDQf>F}@xu5xRPHt6)aCK<`g4J8N%q4%m z_DkM$?tG#_L?xo3MG!bh=DQZni{|QfHEbzwLx-6Mv=#uA%H+cYLjb5E zQ#nU2W(p?ON*r;}fxI*s9+bQg!*6P3I$wcrpyVxW50edztvD=2rF`|hDQ`Y)M{4Ff z7#m~#sFl1jop{|mT6P?834b-56wgYpohFJ)uuFZ?ihqlKiqVis?JCB(uX& zO>gbPQ&1vyNMhtY;PW=wGGYg+J>AiH)7*jwkA5olL00u}cUL^hVW&Ab&54A^T2850 ziRjJBd<|)=qWFZ8kFRxU-)uL=9Rz|dwi%fjpBKr|P35uD#Pv_vLm@E7V129L=I$)a z*M-|pRwhJ=L0j2sjNqj55ct);*Omd(#s2g2^ZouQRtHO8+0gLK=Kvx&qz1p>OUdl?;`|EGj$1_zE_tg%~ zblPV$=0x?=max&?4G|BWbj1m(YIU&2cmN*Xl?Bzx&|Bo`$+OSqADASWbVL$9K;GD6qLw1(#46X?jbedbK9&zdaq=SmN= zc1;dqs)IgD3~BeFwdHrBUh*LW7rL#_`MEZCb8>O1QdJJTm=TXsz8ze>0mQzFv+XED z2EH=c+HPm!+s3z+?>C*#Y>Va~(Dpr39um%3s(?faA&bQ-92AZ3hMMqUqlYTqovDuB_FyfH#BRFEGxV$0DtzQ$1Ivguuwlx z;H#e-i0QW}L%RP=77;_fmdP%zuD*v-xFswWXR5o-*x2a@F3KBc*57(ao(Ecxr+lfq<3-k~wH4Zh3n&l87wEi%Yu$Jb{zmF;8TD#-+_s zei6QbE?h)K=meD4G1X(X)%E7nMzP;lOyxV>y+MY_&euP)KUmffkW8Ai|8DgIhJ0p4SYbvx*|h30iDWR+C)cLjFse=RKJ7;?9n>`<514U8aY7RQT98lQiw#_yKU$W9Zcl@bos_*Y%Tb z5eA{(t3(p><6d61l!~dwn@$^(3*D4_X``f+fI7SCkd+Vt$Yhh2kwYtw$qz;SDnGS3 z_1-Uq!m89hN+uf^Y`;ThMR|WSL!uA{k7-Vy^E`$2+w$FPl3q^iMU=clY=e@GUr0-f zJ<$iJ4qLLP=DvU5t`Y0HbxhNGkl8b4fNeiNTElU$V>FWu1eX3;w|ptkP^6>*AFT<0 zyNT=Pw06Fa5{l z)X^jj87%MSg;AcHMkP0=d)9|SLUUo15WLT$8-Vv?!XKa;(OgWO0U`?zO@9V^|6h!~ zc{H2r_dZ-zty2e8Rju);(+Q=6p=PC}rKU>EL+PM~P&Jc?R%ubRbyRDLp(J7mHN{-j z&{C9$Au*Jcm?I)$3h&)>&gc96{oc=d*Lt%Se_%bH=eh5__qDHm-Fwqc3ODpvox@aD6oopu|tL!XIU+0-R8EyQv_NzRkAO4E9Qv($Jp0C$>CRBZg#VU%; z?*SI2CeZ$MDHdBTnY#FUi4v$D6qNv8+x69;>{1wbDkhVem*hSU-NLPnMGjZP!XLOO zif~2|W@*Z2mmYk2L`bm-mHl2fzrLDgnMa(f21%CoIPBednfsC)vxlkvwS(fE_H&py z{xJ|@f*pX0)bI#|RpB~X$2x0Q6=wQPwf>d`%+s?vEiDa0dIj5Hjy#zg__FJVz){S7 zzi$qPd;APeZx#Rr-G4vdZFopke4l80^E=LA_8%~oJKIt2kja%2R+o*v6O1zt-e(d8 z1|~BKW)T^`XcP@6pQb5Qy0%*|VsMgRvQRhg)|39+2RZ0NZ*&Nj+-;ps9tLS$O|kLw z!SRQ80H3KC*clO~Ye6$v?{p02B;>5*cBHllnhhLC-n!OXdPZJ8Uc%hyMj&YOk#i3& zr`i_o5t`C3V~JcF)HGbZ(kA))tO*X|MlPz(GuwiuPx=V=$O` zB{T&>T;(Eb;7;Qcif}r|YUy$f8=L9{?CYbP83~!piixE>wVCosdhqavsho|>UX7hi z@*B-&9N;}O4`MH^JR2@(xCJuN`$j?hNm^#IrApNfK4;2X&dqlTEApB-<7Ae3VKBWKud;Tv z?rNKP#$l@!Vp#l}lDG(*<)51Jm`&N*&7Q55o=0CyoLJr%a$*nQBs-?8Z4hzP1E*`{gt=cW~%x-f12;T=wbhDG5blmkNIwd z#f8eyk*oAa!F*V;l)&MRwY|k1&Hkc_NoV`#s?8w+q_1NwE5%4jj$3)t;Dhp=?b4$V z&g&|dO*7~{GI(FzQKY zk0qA==5>H%XihCts}nLy7s0sIigceu1oxj(jX9WJi&56KYqlbn!0Ga^iXOyvptS|* z*}Hu-FWsH%XpjNVg$MuXl{&3tFAxIx3_$DHq&)N|*A8=mBk(fXd9C|bt| zJTpAxR1?u?6czZuE+J;lcmDf?taEJN=y>HUv5}cLGC!pW|7oADskVks7J*c0Hx5qw z7(pWXpV|B3*C)Sgp~ehsWCpa&L_z}X??vs8PRh9yCX*G;?{lxvn7Z`;eWwlC1)?9GYjp$vhYzLwR4gnBO(vKh+ijWG^wZ zsiM%kq_7>Wgu8{7wj9I@36g~UIQU-yn8lf}si{CMYZK#6*p2x#{2&SaDSvt^udGf( z9+P-{+!_BDL%86xXZ~?`AcvfJMffSo$}b+t>apE9|Zh_q}<_9{c2trUx5Becjq(rUu*rv#Yo53}&ZZ0Qj%T3G(6aHL( zhW^24lF&AHR2Y5)BJ9tXz&UAaAvr#@Gjg*B{aOTqP7?pgu~d7d8C0Vrj>`s}bNn@R zzTdfVFn=h33J?YqDFXR5Pu$)*Pk8fQ>+LInKylDJ`PQ(}v3cjyF{4tCU0Iw?e($K@ zW>Qw?jE-r_?rieT^_0ScI_@i-S2pu@Fui$=C$gKGXL9*3AXkIp4K}|&4?(_ksq(C{ zY4gX4_Zi3mYWAg3nKHKB5Mf~O?c!!$!`A&*V|$3FpM#UREumrEQxV5v$1oZJ>uKNb z%>2k{?R{RCaWi~A89A2rnXY|KKvE$ahuV*i_G_Ro~#4~Ve&nmOVmKPQ-iz@xLYs$qj$XlE1 z((R>c+ggxz&mzPgxo@LdKwU1v*{lBW_Cqck02M*Qkv!(KW?rS01;2~=fBeh&hk&nO zeJNPp=r24d0ulWg%6)KST(F~y@rIE~p9Rr+v{7eNNP!=F6YXywAb=VZ?At12jER;M z7XAivA8XjS(D^`obJ;D^1S6y$#atcp_weuta7uB8KDGLdFm148RHmoAmo+2mKFOjR}8vvKW6=*gE z#0tNO*awc+)g**3eVXoaXqdm`v2xeTp;m5MJHY8cFlS5-GpE|5yew5PgXrfwF=$0Q z^I&!SM}s_$EKP3P&@vMIuk%OQBhh@_nW9B7P@EeJSExIAPqH~Yqp{^& zTEVSbi`^QHU^x05C{0YaCahZ=vJh8r^Y9*<~exs^P1#kv{aRI*JF#HVWPrsy%qZ14#&)J8CPQ@w!OY9%p`Ub8aqe z297u%o0Y_q`rA?6QQhfH;F&f(AJ$2wZ}!`x-Ax_YV9fA4ASFd0AYJ@Z z9#dUa@}fIk>*QKFg$VGBdhwv&l}$ZvWCY-(?VC$WORZXCs&=)X{vVo#xF$KwSeV`V zb{?b_a9viu6uTdpN=xR%T1s$+L(_kF6W~kFZ0g-^6#d!5j(hyrf8{FuF;7kJ_wyI0 zNA|%CXhZu_->Lgse^XU{5EHJj`SHh(iwr{@)~vQBVo!NDq)P55m!<~qA08JaXOi5?q4R~LrXomOr1E^OKH@nz1G1qT~x z5JSoJRCO96i?+QO<}d%MqTx@?pfcgpwGnt7E)S2gKPeyH)9d1ux^Es4JRKy0@*z9H zcSpJ>drKP$d9mCCHHzR-7hkPg@MiXP##Un#p{G4bM0e4L7oGS(PvvLNnLxgbHDVAC zhW|G2%E#&RS6`|?1$MVOCy~t>W2a)Kh}Ju7T0LQR>miWwErzG~Cb`ZYu|Uw57QSv` zq2@=Dq?BzqH(ODePf|^}NSN+>r?iTbfA{ns(ygfGdgjR@*W!xzu4$D$5i$re*Cttl{9g<_Dc8n(L{!us1^1 z`j}G)Ad zzS|Dz!{%?8rJ*Xcic>@T3d27(o9#Fs{A0Oyaxxw)kZ+_en_58sksiP_=w;Qo7N)fH?!B`W;pVw)JRYF&}_f* z_go}#b90o@XzgWjiv%pa^&mzk6koIP?c{WFPk8y%R=S5@&V{|9B$~eCk9fXL(0=%e zOQO`gBTNe`YR$xbcDH5Gc|R94o^FdC?zAbb+|gB6-_n*4T`!v8Sm)iJXjt16zxNTB zz8dnSUFBUyaq!M}FFln+^m?gT66+B3Tv4P2*~|)?jxlUfLBeLSM&LcDvLj^b~6je;p-3) zSJb*$ZV2X>K5=R~>^F=~xa-<}7cl8y*tn#ScN@Lf_s}&gQ9SKQNV%y7%!`YZe-@V= zM&FV5H!eCLD3_fkm3~05+J*agfS!t6C5=d+*LuQrxkw?Vei6i?%Y$FJv3{3=!)lvT zc16JngRsj@f2nkVkd;|muUQ%G?$mE~sM>A$O!`rau2z(c#$7YY)n~P#=^;{QVaYL$R*W#_A=qZ_y`4|?)Q5!4fcB1G_n2CHIH;F^c)?nd|jg5VMM%} z^1F#r3(=XZu%C-G2IV3lVHpCLh|2p$jIYzPk#p|iYe!vRDDb0t_H71{cpzR{KvJ=Z z0&iIN>tRfyx%nshg#<7$+v@oRKRlFR)^EvsV*U{HR(#vsT+Cx8`_$e`E$?hLxdee* zS-hZ-xfd(lG!pS40%H)^k8IWrJY4Qm*Oj%{1xwqDRSL#rhb>-^!!(ToJ+jog{-iDRg{e!_HlmW+Kbn6{l{~QrIYc|EymXl1&u9&5R`o2ynkT(FW11i*Q@ zUMkyP7~NdtLo(A?7}#iEeaZ&i>vLIVT(ltL1o1^ z%GsMcqq9gCglAx=8QTR_EFaGQ;-zO`;_Cwtx{H%lx;w5f(laA?npz*52*G;rKvH8c zxi(J95ssEDB^2^GvqNq@)tXTs#0g_e7)ht@CdQYLnhhYx#2?pKyC$iMHPfkUpV>c? zSqGP2#LPrr&^44AOpGbB5)p_qP7zuPUuD%y?T&{m-)F2|T1+`(WvP8h?f{w@cSmLK zwdQRN%7(%7^s^g}>?An*Anxoye|+tYk>|rzUcnphlG#JY8?&qzC*NLgzebbUXwV<| zBi8IjTKCpUe4P;7L{sWFD3oLdEZ(rE#3LPSRFM+~5y|H{aL#tT5~Ypc9vblZ(e`?5 zBDBJ4FV@6L%px=C3J)Yt!%s!gC%b@ZsGhy)H^5wRoO~Rul`WknhU%C(vdfH!lIY;iLd>X`*Av+gLh{R#$R#}WduF=(zHWqg{V(zHX>4Q_0DdmAv~ z(0tDjvK`{NKt6NBdhDylMPR=$tdH0tQI!$4q6+3k!@PuhQh&nIJ~PcgcU+wIrQ~PI z&x9-z!V70FQa9onx*Y#8S6QRP{(>G&a^l_#q3Nq*4{V?J)In*bSZMEhJz z|H(rZ{2LX<9($@Nc#&e&NSQC(>73`D7{+b$=8oC)y;#c|RWbo$t!|Db2m?yQ6y=Vs z1`kBnlh;KDKPIsUv9Yph@KUoqTo7XjB{n#Pc-(hp3e9KqD81KJ{N%PDA{&|BgZ>Ji z*7gSdg%o`nSM87AorlC;95Yg*H(Znqs=tMNpyJpNmM4K^ZN^vm)yfY#D^P%cdK)Z) z4WC%!lwyNI|EM^KF|<%}@xfxvj^_-)N2vQC^bur*gp_Lwyv}v5Qu~pIo(jKrP{qCZ z>dB$l)18ZlbH2{06aYuvD~xua0tuo`x;vKa&g92TZ~al_)zdUQSnuKQwf=ccvSb1r zMkq8*HI~m=6IM1Y;-L=*XRAgi3VlfQ*wTKJ8@5=U>>elnb?Z<4kC}3ZFNB$8X+W*- z#!JIVW$QvtnfUgo_6=qK+0)r#rH+kcv7N=>@fu0pz1YmD$8CgLJdj=HPTeFfX;1{I z>u4h}q@ul4VKYyIg81APJ+3rvOR3m}pRYIDi_JTyBkVI?YvrtLuB7mpK;S*gk_#gi z6)YaHDA}9u=ejZ0IGnY1;<`x6tvoqfM?6mdn2e%zdnJjmB==URFMddviFw%l>AF(2 z(f8@Dnz7Qt#OC$%q@wp~zIDHDgCae(TSTQsr`M46yP+0mo)nY#pKsS0+ykd32wu2G z=TaL57bBTGS+JTf&#jrC{PfyVM5E-p#AL-e!Rlzk#kpnF-};MAP;k*>%bU+TGPM%AcdC z4ZN}LcrWn&*~oi-(5k#IXa!28H9Zoo!Qr``cTRzX}TwykxZ0w9+MyD^z zbVhJvU3Yi5VMGWRE9T(ka6_|UyatK%T5sIKRmRYV%JWp6o_~^prYmQQ_5JV~5l(VF zAlPkf&2QS$XDlVK@XKTc(horL{C68npUM$c0Vu`W9H;D*)Qq3yOMMUZ@aGe<7}c#x z>bn<2iOKwZ@>mx)w%mCGOc$*x?DHx{lJCpt%s<*FKf3EH_Qt&C?LJ8Opov~padsUI zMA6|Wg5ZIqBf1N7O4*wm)uV*dm$*oR1#g%;Ck{Xib{cMNH+$IXj2?uFe?0W_aaY9e z8rk--ekD@@9yN~K*k1pekegi;!?&*Rh1gp2$zG;Bvz}e8?=6E(SG_^G%K8S^5xSY+m$|pN zQ0{r!0WcY2mHN)4r>5)91#Ya@KrxIz37ftV&tHJSxEBsrn^*IGV5(^o zJ!m%hxPQop1kc67#$pJX{ z0QT+`J*r#bUM%!7E7PIkG11A2W}a$>Q|t-G`X{@BkYGPAEzMFS+Ymv-PI25>!?c-wn(7YultyCz~hCG_C#7kThM{WunyR$Ty2#nd<}oDls9z@hP1d_|_!Cuja##*a zqVdYc+6jH~EWA5QThsly8hm-e$O^?-Y_OnZw=Yp%&a;getZ|ei0ggw{!b_GWbMWNZA*HdIeW3XI~6+;fjHm~S{L~$ zdctuo?5m7#u`T-{cSf0mm!unG_G^L{m$&8_60!_pnTLG2Ik6fvslmav;d`+gTJm6c z38sp_S3Q8NxP*XGu>yI!Ob6QHL&jwOKxL?&ipGbe2?pFkMFE>w&{-ca`v{hmQu)xx z_C=&8#FjHP*v;-Cx?k&L*+xcsHt|!XyvGXCuSn)~f`?ks^YrZhRConMw8njq=CShT z^{~m?jIIJ%La^p96VbGfvG8i?kBOYKsfwIizo{2En7bchP~-mQsTHMv|M`8Pw=1NR zL@fA)u4cZrF*+B8CgBT_w3dEPM~9bzS-(Ih*nss_NDev8jk-CVyb6|oLc5D(jof|c zR2~+HsP%t0Le^?NG@nup+%9KraWhQ7csnxI!mH`q^2`pFpBJq5b0J? zb-AyAgoeGhI7-0s{|?f6vg+tP;d>vXaED^#UpDSH0F9 zTe=Vj1Zv1@!WR7HPHuG}k{fs*0SO(l{e5pH9FB9-wNA0^(e|%Z%_0bkURe=lUa1RX z)mBfj#4Y&UyR}GSqJj=KB0u&)G&{Ky;`0w;cD9%5J}_VAZOy?F=_u`XF>5_mYwF-Y zTQGBMblCqi7peD%Xd#pDy^utgZqziu?e;vkWcMAN_*4+-c}!Z`m*2cqhEfpI&NF*V z3JQ^3hg8LXH*V50Ye zLEp+M#4bnBo;s-|KR)i4w>%Zj?!@*m?B1=-h=Ein{>B%D?fFKwS0~D(Ccd$dH)fh> z4S?Y^>8|Xm7_Ho2{n5_{FlWC@vO3{;_H#B#O&-wTZ;h7%OW&ED&aSKcyhSD1xXjCy zL}n&+=F>CH%(ArX;H!+*TO(&mVvuPP%^tpuBz2>aKT8VIi(dQra*8sD6P(_zm4o; zM}-9!=@|~l*2%8Koz?=|cv#H15F&MFH|1r4Qn14{E zA_xi(4i*N5(G^rdwnyT|QYd?|E`~g$#jSYXASs0=N+5pShyCgzeDlsx3(kcqx-El~ zm1jk~su$=YpS@{mpvRg#0nCr+Z}O>7rHbqKD^f!XAa_oX`qOR5ab-g}+Cnq-yq6A# z`lY75EZ|^9&_PU$+_#r;$?T9nbfu+0mglE0EmF2pE%QkzbgS0U^wZ%&rE!c>_=UY# zp&wsTMcpU?e7J}mGP&>$UZ*+wsEAaN-o2+oxoMti(A%YFy@NLk0lXV5N#{R5-G_Y* z0xov#*!&SX15S2U2-0J1mZZ8DI1MQcdm{FWSY*B(8S@POX-hkpMXK)L#%>i&mP;#ZusL! zE6=~yr-6=-d*7Svl8o9_33u-E(qk=@lL%Hubq9=yk)8n-hehMUMHY)d;$}o_Gfj_k ziP#9<*x6lV>vr(v^@_WN<;Z+`(r8>HsLBJW>2X|7D0ACxw$fA48N^OlswiX{J$2|~ z@g;#^IYvuUc;N#KGBILXki z*K3FB(hT(iS678Cx(qPmh+P9OM+x6qJkxv-Y5tz(EWiav#oNG7;DtwO{^ z4io)MMZ7KBqqmk+xaf z2T6TXc_;G9^Yi{qFPz`2sUSC4<5Q+HbGxQA3IExX*&3;Ln>r^!G*i)Ml7h|m zQHirz5!3Gme7~&2hiiP1wfrX*#MB-#r~bCSJ@Q0-9*7H~Y3KJq+%(v2<}R=ZL--+( zv$3~X-;8iME#O_Oh5{1iG^+abf$hnNAdRN+$hlbI(+)7II;uX{#gnt!)4Zb?m9U{K zgK(yTd8{Q9N@Gn#u_l}h{8*o!x0po&wMuMf*qxZ!5Q9f$=|mlo?4M>9Uw!z&Q}n1t zwwNo?Go;vmNMlmVFYGt^usK3VcZ@G-dvViE!BuNjmwseqS|PiGt((g1($cd# z+jyM@5OK%w&bwTPbdZg;h|}|f+Lqg!&Ip}}j(1_v8PNimf|T}0XhBot50uvT+AbE8 zHCXmN_t9OEEK0e5Fbuvl!yuNdIn*T7B*d3Fsx19Xrg;)oyMCn)Go@l`Hl!~A9`?sX z69h0>I{r-(5nE$X)p~b*+~y8^?xmtVDSk~@)^PyvmwScprStk3VlIOtR)OrQ52OBS zWNxf@!L)Y0S*G;PNSW&$KiW>zz=stENSk7Kh1!=x_%o}oNw`~z;M0t7GDPEsCJKA( z47xFBeySSOuGPcb*0c|&JYX`QFEy(N9Z4R8#dZ{OlO>Oubk9s@s}N()qkYvYLH;)k z4*xkFKXZhEaIb|J0V zCM24K{cEB&`=Xn6rYY9P&hul|9C*&}JwmF?{B%N4I>KH848__GMn`&Tpk`W>GIg*; zZ9EK5_~qawI86P;8#6A_FQ#?$^L4^9Fa0k`1-Qy+i~dRduNxOX!MU-`y9{@jvy5Vz z4Urd4fdPF4hJ>vNqlyBx^EUZj|~5OwIKZwNGDB* z=IxQb>aPTr!~MhsEg!M`#@8`3FcnnrbK?Tod`QL4mYU!*!}YSWKcr>IovFAZVA!)y zpy%OS_mR^*8E0vd^cpb2yuZM7+$&|ZL0PAQ=qIha{a#hj5QsG)RBg*HSsw{>O1x&K zzp^AHg}{r6*lkUk!qc151Pw}68lKyR z9+k`9TqxYEFm9YXnJuQ6fz?gYe*S+Xbs$8AHOqglxVW*(_}!d*<)M~RGMyR$;zn~# zox2G3yIb9hnIGy)fbX;Jv3Yu?+L9kRw=g`gtmSw-XlcZ5?3u4=xN8tu`Ry?gBjT*i z#%e|NAnAxiLgG46)isA3>v6i5v2b4p_QfDAN&v8am4&JbTH8N~1C@R*7qE@fFgNmB z-;v}OwD!p{FBP9d?GJXysUUaz)iIA;W_co;Tn`Xr>p9JMb9WFtZvwW3+yqdo`#y-E z=>Z7)+dc@us~);H6SjQluRxJG?<T)dJ8&6K7F_LAzetGODBOJ4~bH~i{| zw;qlX6_Ucc4sEHmawkhKB+cR+(@UQoUt7o&IQ;&^J_l&Y@1c5utTYuumnN?I6I@9D z8%=0!N!PYI_T}uGl0~kbEBhdKY+uxe(o)Fy@8=|rKPJwpw5`F&r3?%Is*=e-)v8&W zDxD}mbu?kg39w;nacKa3$)3p|wGD(5)@C4!%t_MhTo$w*zI~n>3(T2pQ?9$RJOf6l z#hci;JTR5s1XwXZ^IFvqOI+ibv23MdiIq38;EpVRRQryPr?6Xy{qXvCp(~&A|I|6% zH`aEGLDkW}ZB)=5yfUltwJ1bomh~+E-x>*oi*$K#eXfOU=obOWOkNeUK+pyjYKJeK zPUC(LGNymiKR&eY@!_l02Oq%Ut`Fm3i~-1bP6^`>u^=eLZ;J zZ+GhOAJdg&A?;?6eTnfiq-)EX!Sth`ONM8cm0n;dD4Y0sU&VYljFQJSY}(reD#Jv( zv(guzo)yFy27U@qR~qwao;?g0-s?p}&+sirWk|fi;5c11{t?Ub+-ETnXwfVP0vYpA z>g2R_(>8A~jUv04bLpyYfnSA^&)8>;tLgYxZ^yRzaLtVD1|hpH+Dz{qFf$APSXo_t zbfUjH#%%A2GJ8%;Y;(5Ms7Z_Fx`nGG0o+4xT7BfTiHg|C*UAb9^MFB4P2RZu0pr z0Lc9%+4JQpURltjpr_#}uQYn1C!};b^XG8y!{r|>1M62L@;bG%HRb>zB+5l{AMjBa z8$Is~uk`q^er7NB4v~x0(-}E8HdzFm#-OIao5w_7;AMpL&v6%CfXr4mpc>e}3$pih0q)M^#dIrW z*WG6c6M}Et&PfML@-jy1)-K1xpGEA)p2cYmZp)qkJ$U_jK1KhIX$r63U|nP3Y?CTs z+s%c0VIj&a>e=d0o!#g|f{(gmM$)9ay>3A>8$#J6`}2zWQG-5B{b_WTgHkFN@Gad{ zPhy0APq^*5ttkkicSzIvN&w+2@5~}u@-&)wg%q+(|M7}SSR7c_tO`7KRgd+hJh^1> z;qr3%O3O!2$xn_GUpNN@Yub!d1~Ti{juzRNOV=W?`E+rezs3ew$ATB7bfjroZn_4cJm*%OXWJmWn0`K44IhU36fWLU!z7ja2~0Pbq2Z)}!SX~(aTDnXIM z2zV+9fGG+=?hOwjTw6YNlq(Vc(4i_R(!^1rD^32h}S)f#)6Itjv4QobtJR z)k2B?GU3`nW$M?pTH-DzsktNF?ZPgW zJyhA@`O5{lHe-j<<9aHz-iqb!b<;oqOa0<|kf5;y7}FBdeb<;%5RgujJO}&Zy}xLR zVIU+4c|U^-zQSs`x%xpw{*Q160xhfo%?y%x^4!DWsEe3|q%;bXAUI14)=~WIj#Nnk zft=yAe1Aazajtadv=&e&-F>xCX?7WqXHmp-SCe01{DxmnasfpF8#YB1 zC9fuhzc`3dRQy$Z6@iRXfG=q9cvSafZm4@Qxuia>ry6AGmRDHM8ja#nYuEl@T|Is? zA#yHwD^bK{N&Oc5!`4H_ST{GpAvrwWre;xL$>*Jd4~%TxQ0D5z__SF*IZZB~T&pXe zT&JX5$yjb`VqO z!$m@9TBktkS3KlUO?B13OL?1x6%W^K#7+(;7sdOIc?uw7kj*aise%u{EZxmieJKwo zAk0=Lp^h$!wU3Lpz=(juzTbCm@depw6q3aT!rv{o)iOjfUNK!gL3&|PP$_U1uvqIzmx1F~jfYKEY2^(1Q5 zC`89e_S{oXU`fzHxnI}(V_3yb8pr@VGx&CBoUwdb;y>1(Fb76O zW-bjkzE873mtDsK1Y*7CMbCFE3|?^Ud9#?Ps4lU?%~Gb^3Tk@PWuX~AlWF7gq5})P z*Ip25weM=)v#(f$V_8x>gTWa-^7$Q7kA-`r{YdC3wm`^2Qkw~abf|gYH|S)W{k~CV zbqeO=F_h(OnO4B@6E{WG+*W4&8N)|2Rq~15U?-HT~I%?w}K z@G9xvQ&$*0>ujD4s!f351U+9_tWLMhlt)S(yY@sMpm(f&uNbLY| zt(+g!c87LAhmPWNMTfOdw5xWFqyNLdz2qW!(dK*1lIm<}+kxL~YQEq0ERFPhE|+JT zDTU6xY=}lsO!QQiPUf>eP^H$Vi~DFlf8M1qj|)l<$Tt<_^o7KnkVH;=BCHI@!$+y= zU-0el>2Fpr(q;MGFgmBY%*zuL%wR3U{nE%Cs1DH&FyGY^e3BLkf#!5!RUpBu{m|jz zrM(|u^N<+}%A?7U&Oz;8>Y1v*4uW?3(AY-hgkPd17m08Z3=fPFM5*C%xKnE)N!4_vrr5~2QUiioebSMnAZbM%)XGF@6oI0-Cc-|=KBAOJ zS19$#ROt2|vzHhvs~xKMF(^lL)wy-fsSu_Cj5f7uEAUSLaEFvOIYVX<2&NA4OsmB~ z6)l(6>xKVf0uT>YPYAW9{UjEg2uM3{OEWgx^Izgl%S=y23*TFt`py`{0DMqssN^GL zL}lrEk;z+?z!g23U|%#Z#?0FeYJH&!&awkPE+V{d6J*3wge>}G*}2tklwnF>F{Hubl~q*wDd*&7$-kRX9lE& zB+-XzE8t~XayA6Qt99{tXqO4T$mti`0M)Cq5wbAVB>qZLCJSYYC=JW23$+tTy9J9s$_SaCy~8A4!M#6|Y^tRAIq-SKx}JwIW0 z#IN3?V!ouAC<1(ap=+D;<-{%Wxpvj<)HnTB|JmzcQ!6I*v1;?+5s2Hf%XGSwWm zr4|rIe>yWX+c(uo2>!}HG<#=-zH;A>tlHQs(RipmTsd*LgJ6h@KyRGs)p&ws zG-+IBv4Ot$o_T-ojouBWd1|g$Xp{55{-zxG8<@jfk9@-a`WtL2*uu;AA*h>l>1d3_ zaW;~=b4$lGKQ(f$%b|u$&d{_Gbd3p7JOLB!v42mc?yM}-aV+=i5gC-~gj9B&bJ*xFa^Dj_1}EhOHc)o${lfD+r}?1ml9oIX0mvtt_Khzj#Rt zeufx*q|qVV?2n~PUFO2-&M`whmCwvvA&H%-L1ZfX29rVByhdv>?Wt_LBqEfZAW+Mk zy~WfvwnLzkV4kWaZiaIkab#{GDycOdbh(O;WbnT@ylz&XE;97DZTsHTsMs@%S;!1!YUqzF@CKdE6tDCh-H0H}|P{kmwy9JckUIO6@* zo-SFx_E%0ka-w%pGblx-tKeC&5fpN)^a-k5kjY?Hxl#)*u1ZV{ZTJw4y?fr8 zLsSx}=K!-9%O{+vujrQ}qljO9qr{2qlpger26twl z$+crwrZR(mi8sHU&JMdv$C8)L#==~yKh3o`6?N!&P1V2en4?RZJ#z{dp;?hCFQ5V( z6;2~F`Ob}x-!$RICf(8b8#7n!NQ=U#{_{YQ;F0d@IHVQuKy_7Ug0Q`Jj!(^(^oB6` zMbqUuy>bXmsTu5P(csCD6H@d(h?P2vi)Kq+`Jfb{HD8kXWS>7h@m((ud%c{R}6D3{$FGd8=n={M& zpU=%Qq&m>CY>%<(NZ8lsT(0xE;}^hboBUD7Pspm8?~KDZ3>Kdoz|GM&#NIUg zqkUYXmhZ(Pk#>Ap*5oH>Cvu7m3EqV000l8E@Q7N7+)$~M+P&Bm%=^u8ej-~=uGny@ z6y8+pdH~`QQpa2ava}@@pGV+_5l)f+fmd&ym}+a?4x3-{x;LbRi~Ei5T$9NO_)9@^ zNiDc{^+7K|sC$kmW6w(SE^&-|z#WCOwEpl_Iws3R>!-B#Q$kcfsX+tkyl7*8PDNBO znzm?Dr}Z6giv_iL#IK^b;V#@y^|~0)UoCAR`+LkE?M5J-{JeJ;fP%SNC(+hyM?=)U zsrlU-phkAHd#V`5qR^4m1(`q~t+R{Oy8{`BSFNFcvu@l5T0QZo1aUQ(T=>2hs?FP* zsP=;?7eEEk7JB^!LR_Y@!8G6M<5|(i&1~KEhnw~DqexO4I}a$md|&qx-4zpS=hlTS zc&u|pT^gLM4+~^|>dw?@W-kmo#9YeLU+&FouZuy^#}I|AQ1RT!Wh--Sl1gQUIq}c1 zgH3=3gOS?-ZCLpT4vzIu)aX{N8p(a|XQhXuS0j#pROPvE2b#v=~#-QV&mR^W~&vqFmpPA;`i zQC&|8TSPzp54W;k(qhq8L`AOfKGfRA4V?8T`bYvQX^GK#?D}*`H*@YM(Pr?dX1k`Y z;~TO2dV#y$Py!Nh3vlvs<)K?`p4HEuQU3o$%A*e7i(2 zlGasd&CkU0v1IkNeVbT8j2|uOResDsMqmD9f|^ui=*Cp|JwmY=iYfnh(L>Ou_-s>_ z27NPRu0cuKCe}akfp9K&!m*Kk6R4>or0+dGaV#JA^+{|I}!QsmK-sp}$+(ganH=6o}nj4PHRj)mwILn=CnH(8UL3F0cy_Fp~U_w4!DQ3ZIUhx7WJ;aN-J`L{T=Bw8&E z7^OM|stPU*9jRlvF_x3fmWO(q{35|7 zXZdX6>v0XxMC49%y`=PZRP=eB^2XmG?TipmqPuuovfTs1HKwX#C!z5uSHvuV8bseQ zs0#gf=CFj5R%rICsgvX5A1C9+4+~kWrT?d|{$>Tpyq5{{EO)fgwPJ^+rr+Dv7B%C7 zcUjI3dX=I`4riQ@D5>em?1WKNowrvyn<)jHS(-~n_nqeLIZIfR?)I`(IhZI=9%PIsF}gaq)y{q!q@I3mkq_j<0D0|7%=*j~H;T?~;+VC|a;YQT`4~eC=-KXYNTM z{Stj_W(IPt143!%6KMToVWhDJ5138zg|s?WpBEu9v)+ri_veb9Y^O=n|FoUIebyel z+m=z*?HSDTz|O(c77fJa*U5R`rV<{*^sARuuox*&4OB&)0{u77N+CF=Fr8XKo$Uvf ziHKu?d$H#&{;AgFWbE$c}ec(sud9Rt$mGvoNv9Q~$p1zqcv)R(9l^HHbOkSSbM~ z?{c$^u!~xh8egSfyKQnUQ}b^PXah3|d6W*mPo~(o$oq^nKr=KDbwkxK2UuNgu}gCk zK49Y!qbGP53TMsCPqKA)?cUW+-Z`py?tVnPLp?4EvAH`Tz6I#8M(X zFXO|V7+^o{nJxSL!R_5f*q-9M|9|f93=c%UMzO#3ebmv;FR6Tyz-Dd#v00lmIGFcP zrghW1f)uXuFpFpvYcM54jKG zn*C3mvbOIhg?mrrlq*Mr>%VTv-k1xzC&v80U$=G1VGF0y|NHSzfWN)<-_LrX+VXl} zZ7d>-Y>2gAoqErC^5keJ^4xvd2 zy?h(*J?CD}JNJ$E#`o7Z#<#~XU`Y1fYwbDL{LSB-b4|w!x+a2_X0!WDf1Ea6i#=4*%SFK|Sp`|EcSz;mnwS zV8SA?U9bU)xu@ZKWmV+$P!!|7;CRL#=PzNW#E`tc_!Cor?lX_)ssb320y{Xd@4`6s?)DjBA>1F={dwXJWw;WuBVOPx zaOwusXRFm6EXopo_LtAJgPj5l<2EM81AtQqU(L(>sl>Xz5Q=3ZvtV8(Yo#%C+M*Z=hpFh7afok~6vB&*iE)T94zkFmq3|tU? zIZ$-}|7K1m{?a|^RLKQ07`^8ySL`RVlg3p4 zIz9*sbUa6Je$RebH~O!4Pk!?%T_OQIDPvaFmw)|=aDp{hu-cfg$vYnT>sLl^E`aCy z{gLqc@-J6LSmLuA_S-nuFJAnGQEu4s1u*BdnOR2D=hQ*cvopS7F)*fryj zXn}vd`sWU(KQC>*%a#P*tB;SJny@IXeG#mYDu4FZPGF}D>f%9$;k^0m#OFIBQjd1m z$pywuamzz_K7PMWd&ht(8Em7(s{74zYt9d;QL?{PJM{*)_lx>*Y}^ViLDc=y`wPS_ zPj$eWzYnE0qIcS59}PuarBhtiUr$~i7@@uMt6HN|a+siLXSHYFwpUT{hgU!KpXpc~ z`MlUw(Q3@em;G-Lu3NA6HF4U&ay!mjyL+9V%(SzTmZKf> z9A?>Io&UnCKfhVxbMrn#oL1CLoc{Ia7crV%)Y-EWU51omrJhaGivt2R$@MGANy~AL zt-Kp&f!TeIUml(cx`P*WlOVhEp4I5`uJe2Fx|{}`6)KvIZuVat zRmG=Ue_fVJevfc~;I6PIrQ};8@}LOL6}y;Miml2Tb-p;F_9n-Jw4wA}w=N=^ZfDdl z7W9<)Q=<}axQ0tlcuyq-aeGteN}SPUyN6Z#BueY=R(2I{3nRk{%?N2a#{Mchb~p&$GF zBCR$M%GbiAQpc&89FYIi0Gv}#1Dp{!8?-OZVFM3#etoXWV13pEBOCkwu`?Y%Vd%jMjZxCoV9WcAD8(86Y3u7C!^`F3KG) zIez)8DFn4&6_j>%H!*s{&yC@zS9)ck8JY}wy~2-K`(#UOteke2S|*8XY+>4_BL)YX z#SzUJw33X+8=mivg?5ehEPMOLHGBQo?6r<0cHW8f#~g3q{VD3kzfb-tb1?y92$HuTF^GAN zO{);DxeOIRc6UWIcb;bp6XLSFb~Lx~6n6^Y&;>!TYIFu*n6#;H)jfRU)4j43^nS6eNQ^s?Wfgu4gB6{pm>jyyS-`UQ3{)h%8~Q)C{^v;qKx4 z_!E-@^?DIlo$EwD`INJ{5B$_!U>Xt65Dc(o;H@FT2!iv5A|*;>^qc#{FvI4N&k=+O zBcow(XUbQwGBiR@9Pb$f+n9R$;$Y|3)ls>-feglWH_YXg-hN@S;Tgfkv<@|4TtX-| z&hQjY?byH1u(|KP!1H8V%B(FNY23PBJ!i(=ZPTN|n$2(V<@OTA2;d$is49Q@O+UvV z?8PXKmRWsSWr8b;|50g0!V%IH(*Wf0ularFI->sf-qwH z96)^q?@0#d$uFyj9D3j8m)%0NDl3u;e!!|i-tISKGo z3Ks-m^}D)Yn)c_jw+!we!DkU$E=gE4X0h*Z>D%(V$E{(Ig8hC9LBaVfMFF z8G5Mwxjf}y5o75TxR&M(j08+;+2D?N14c&)#|YJY0o0N`Sj6k5C^F-`&)@@J6J!Gb zYkVKzOkih#-O%sW*4Hfz03xp7e^WGGt}ukaRT-2GYgDG>>Rk3)EVpR_ua`U7Ee_7^ z`u@8fJy_L?IY6_>BP9yY!sPWyJ&zc0`n zG49{@lz0kJ1opV^knGjs82aX-iUTr-LA6=+JB|N1BysB@yMhx?x%Uk>i5uX$RIK1p z)=!??G7EpC-NR*EhT;y^8ma!L>$}xko@xdmwJ4B5{zc@pZIg# zu&IW$1z^DoFJ>5i57$@z9I=fi*qI}XLa|SwxH}oA!CE0ujC0*+0QtREkE)21d)nJNhh%7 zJxFpQ5SG?9`%38buJS-|YO<>0yt((4p95u07&Q$oBuO6+>OK&GvIO)ariOiTSg@Sq zw6@u-!b*5XZ2NY|+L6xu>g~{lrIlNgu)(T&8@m*>?)3Ug3cg2OmA1B$;kIi15k%@K zq?{UZjxF3)>UwHw@@*-#xZuAYTJHmMAMlu7-b?w;@+BioV*(t>?Vls*oO4{Z454eG z)7eT>MFXwDUf>JX*$Xk_gf`3}11Nc{(VQK3J7x{}h9f zzaBkLzkKUwh`2QTeos-)HV@;7;Mp6n4XqhiOHWw!lRdw;;q-Oqpl2Ki>E_bu7n}L8 zQ6bwY6?aYlDm#WiXOZay&|x?!BEgYDQw_a~VBhLq4#FaI?`c3I*s}LtVx4&N_Ozhl zBrpyVn0jLJv)2R>QdrtmWtA|9S;5<<4Y%lIENwLt3`XlC# zQ!RxfE#*lK5OJrZbFj4~g8y&UOe-P28Gn5)!NJaHsq6!zlAncxjtn)Ux8>9QHMHM= zg4Q$_buA_N-R6OlGrx{QhX)$a)`m~P_@Hu;dff;oL}!(5&(~+Nats!T57RJF10}Q< zJ3#(ULtXPSEaFW58gDM}7ElWC2Sl&KlTs1n`INc>Z}~G}9n&zlde;7Mel-6|L^x~) z6{ZYGizpH8kP$nZyZJi@Ge&4|10mLZ-poDYLMIKlH5^x}{ZJ`qex9HeHd;%e{9|Wo z&atO=#L+G#yd{@$YVU{6OUqS9fF$N#; zYDU{Y>YQv?u3MDfm5!*<_9kcJ2tF04#Fz9`N_-rAZMzya3ib z%QtgzPu;x$7WAGl$;qRjrpq?u%WaSHzj+IBF-9-#6j3$f4Z`ZIE-7#B@XhWA)p{_Z zDse}??K)5y)TW^$hlL>b8Vcx0hA(pqT)!c?MGF>zrh#L`54p6+2g?(eo$+Hw{!WK? z?EDFXJK6M~b31Uj#TIET8E9=y4L5m^vhLR8OtjOI#u>niU9IX)z4kxXjeq-5RZvEmBK@>1IlP15U>bFDyve2HB2{}_ zWtC{U1CMI5!31LNVqS1)4|`)j&aECwkis*K6QJNK@?wny@2a64=Y&uRyDcZ)M~1Jw z1F+^It{{Rh>C(A;ByW_7pZpMVIBjh?E+_9ck?U|9GK@qB1-7LL)Wwu zHm)s?e{DP9$lP%edDx<9^-wlOPqc+dQF;bQdiK?y(2j@S5|N32$0TIN()t*^=id9j z8_Omc5HE$Nghg2?X@jyZ4)p3}`Sa)IajHbm*{V0kP_Op&eK-qH>fBPo2kVh?!);3t zTI%9ew-7(b;Og1QiWop!i#i>Rh*r%eJiCXtF~WDrJtM&<4_<^YJASVkqEuVu; zC0AD@+v3-SaaK(FZ{)zOG=bT7imqY_p+nIZd&YGv3)F*JHgYU6`HEDoxvM*SsJ||C z+}!QfRIb4qN#|U_l`RSUXRV!^t|0f4C-a+&r9T3D5#yDc7ytfr78NY3S1*bbZsmor z$6}&(Ds7VzS!Gm-XZ5Buw1}WqlVN1YF!93T6PNMU*}Fm8JUG|Zm$**BmjVEaI_=eqjZ#mIoG2YZJqFgPD)Ou8%D(9rbC z7ME-|r=z>0S*$*cW#mkfS#T|{g5M$IRE%DW#KMWuqJo)7&fae-R#CFFxaoT^1Y2#v z1S=J5#08JyE!Qmar1m0~cb6@#GVnteOZ^H5&&~B$ININ2kh8yPnVqL-oOYd#*6~u< zD#gm0Q_-x~M)jMwf2*=Bkf2YoSV&MeSM-UM-g-pX?Y$?(-7c3z3$sq;CxzE9U=e6T zeSTj#n#9CVDR>~@f3sJYo)T{L5m6I@MPLxo=4gV(eK>Dk@<;vvm^vo(ns`zhmQpVc zO3X;Wb;H{$WQPqxY5#QHCnLvVF(uRD+5`1%+$BTh8rz}kYvqw3A_ zgkW4)k+2h%OXDiayE{UoLXasecVlIJBq6l9=W(e=y~)kG6{fK9sLzg%eysVH(gUXH z@3f&P*G9Rm?jY0SkelAsI!jHMRrk>53JRskjC&h9gDb>Q%Q>%H^82Z(4-`~H{(d=T zp1+VJ!Z811mq+Bpf~IT8`R#RY(d(?J$w6^Vfm&#QETkVo^cc=%#jy73*?wEV2782K zv3$(`!F19mCn9KdkM(!w0hbkjQ6*f9UnoKhDwm!~V8g^GttJRZ14ngzcu6tVwT#XA zHF}#A|F;%aX?2?1TKwP~3NVdqyGKlYoD(urx@T2Z8dX&JyGFtIW|V;Y%4*1ZdsA*{ zi`98pFNe97W;gSksw3J<@8D=dyCwS{c4t9Y;lZS0`Z`;C*zMWruZrgU3tR8l-qeM& z=a=QcZfYk;IT7*;Ep0>y6JDhrB@b?neM43>ZuS;2ZWzdr0l^x?83mee5C%VAcImAR zqvkFZjRz=aQO3`fmicv#GV|LZ{{@3xOStvriikD;7Z4Rcn%q!{l}qwE+PnaQknRvN zpsrW1WAvF0IRKAy81#_n+Jq^}I(q@g0DeoDhK@K1TpUJCUy$6ZYkwi@1p6uiYA=DV zKA5z$_zD^Pyf%iF*MJxZ@PB)OK7k=x*#H@!mF?v-9-)d~uTv9;npFEVQ!?eu#KCP+ zLV>c$fmOe7;&X$N+?5)qZZXl;%#!)R8nE0S`!Ok;C9fR%$nOYax$eb10ezA@cZpTj zR(}w12anbHT4e}(?UOeRIF3hHHMDA*DSF!^lxmCE`6GCRp%L1&JbM0Tvv$Y>DqY;N z6$?zC-RokiSbl3GGCjbqkVFX+ie#q%=qI|OsSf4;>S@r?&4`f8DCTOM0o&CFYy3oT zdfgeE4RoNI34l-hM9p3XpQxD^z=`RH+4kziLGYrt7@PnqIO)UO94`|5cc?gHK}$*^ z2;&&fk^|{&*gAT>#+QKCYXT`aIVYHX4E&A~{vrm@gP}BJQo5gCW2nBc(N$7@@o6jOsg z4qJt^n^FpTK~q-jc&U-c>Y=!ltfjHO47hCZM@ob>cie8yeBVhe*$YaUn7yM&!hV|~ zT1H_u-74Cj|G&%w*iV@z`nsM!4G8(@GZZqH+WI!~f}SbHdTWV6iA~rUhY}1qK*`#j z4kv+YXv0bIQ_u6%emYSpO)p?pmcS#>qN#@`H%-I%AaY;xvWItGVa_UJ4PPU)G$J&$ z;-1ky6MCjC>rYs_1m}asMFSTxGSQ%Y8{mN-qGIl&y{vZuI)VG%`xNQ+Mk6xe_Ap9m z;?%yHK6s2LYmQ5sH%BgUl^o z!SmsF67-8$Teo9CGpcJS_@Jl=BwL86oDTg5;fEJrZG2MDPcLKyVIb?=X~j2KMSuzx zCcXb{029mp?IBZ*4qiaci+o zWG3CuA@*-XhEDizmR7Cj!Oq&VB;e9vNCM~6D(uhAL-->=51T%>B`K9~`wkuivy@N) z3q->mpo8iJ*y3gGz-gh#t;_gSG;2yK!NV5Rq3Zy?{Sy2tw7J%e1V5!p%qGFd_q*|I z>4{5JFz_7FEuMwwJXyO{Dt2L}g6YLXLKu|2 z?l*zfx=RfIYVG2jt(MD+(UySQbjZh;CIh~<;)m4>SGK+AKD1lYA6}ho)GDPYIx~VA z-4>+Kc!ZBi`Cl$HA#4~zw0XNfe?zk{$TQXSzJ#=$g++mU%fI{lEqC#aMl+dNSP0n8 zkoQ8lr}O)7!Fn8&u(&qtoEqqLF8^W5BUx>ua}JecF?Y6Eh&N zo*Zy=Zyk)~ap?C>oWt%aH88D_Y5OG{sxGnDM3)+`L*Dg0eZ>`(94U{TPX@H08rtOBHh~?lrV@Y5j(Xb=o)W8u>GgCC9gOuZ z7@@uV+_hbi+hD7jy3`if@FxxT*ywg?DfEIZML&Na17=2sEJyOGm^xR8F0RWh^)WoIv2&2c1u` z62Uqz_%OUom;jKQ5&1XNL!Ex2%Wx2zfDGWX;%D7`U@^85{46XDBxO)&Z5{l$f(18- zpX^uXMeZu#Kg}nujm6V&%1M+b$om{DX`I4u_gtmNH1utTmkP*AdCWJZtq+!8&!=?0 zbqG_)?HoHIweo{D_Pz_fzc#=2wv?L0R3jN5#X?JBs8NKEN>J-8v~NM40Ug&ijeP3! z#Z|uYphG7>J$B4V5Om^A1>B0O*X9WYRWy1AL@Um*n~baFwf=;(97`vQ%BCyz!<2O33=kam`5GSF733~RUk&qt zTqMAmZODt^gop4|w9|*evglzEPq86nSVSUg6Nr-dFo+mEIeJ+4?d=bgFg&>Eje$V2 zwQ`_x?v6kInCRaAwP*-Kj27{W_TJitzWJx8VHe>Rym7p27?Rxg?aRU}NY5F7t~pX$ zgQfK)F@>#V%{9x4zQy-hs|fs^UmBP)_WYEZ;vE*mnZHU7QDWt1U!=Rw5=BVeK zOT%1dhG;K=jWuHNyrs9$OKOZD%cB-BBn5Xqvp)2 zu|r38{o`4N>5s{t9OV!=KKl&dlC>hC&yz9YM-$f665#pS^?%NQDC}!1R`H4Y1F7k( z5>PoB_Y3#9q31X-tn_*>?%@qeSRE|^R=|*5jo=DP5P%X-eCI?~UKsubjO&E;1Xi11 z;xM^D@8{lh)UZX6&xzu}yOIOVSFQbHWL8&KSXOP}#41C+roQbMhtV;yt)85V7;ar3 z&&~UwzM5>((y%P%jMk#2DuW@dEqoF7IUppPtK9Pixt%brC-}5t$MAw_Dvxw ztZAn04Wy%Y1qsgYs_Avc4Xdj(r~pFmr``G`hT9YT0YlyIn?dg!{oni1W?R3z6GP&+ z9IST7F>k9z4dOL@j*d90y(q%1?>H}`b}HI`LblD-two)td)rxcf+lrK3?Uh`oinjD zpF!}(*hmhv_UfguZ9>G?F5?pu`B{EKcCP@~u`pf;3KISV3qU|oQ}{kU0On$O!ahfB z=xCw6WR)1Uc|nH3)7c-P?_Nx|y8sdmRN0QjcfUV0d|)BV2Ea(*7{@0Ukwoei=Wc1l zVnONk$>Fya8!6JfNp;6RdImXjK|*pFo@O!%nvQk@hu*$#1jSU!8^n!AMqj3lQy!7R zo9gy_gM&KSZ-6F=3U+8OSk#ikKYo#?O4zq|I;fFaa{e_IN$9wK2~E}p#4C9)qL8NCNEpXQ;^<& z&<$yCQscRAs?qtGWfAGY8^qH+MkE?df(;`l@rxCir8$j*f<`+BX}%s&wZ}iy*lWFb z1iQ@E59Ob)o*udFJvo&pG}+!RZiO76+z*T%gbJQ@pWpiB< zF{phXAI9*n#2l*#3{MJ2I-k&VVT#;vl^@fv1hzacUeJLhlI72(d0!@lODlb$$E0`o zpsRg1;^}sCQUp%Hb67Efub#jZBn}RUDx1_)$`$zq0HaWpDci`$tX6HZ+%7_^R?Ezd z8!cND#a6adA*Xhr@l|T-68I4Z!+(sk_WY>E$;;>H!pq5q(2(1!7aS}4g&VD;&ET*In%o8$Ekcj zg@;~`DRWgojIz_-q($PnFw9|l9nS{J%=>+c7H=7y6OlRVM5s-Zv$?HUF^YPTPF(Of zO3*K6o9hhxr_`)@7JoXcj-R#P(6x+4EDzPp*Nt;|3=qp_L#oT%Qq)&G<(Dpnv`U_n z3q3zNHIY?ElRkcq%bDQN#iUrw)T*ry8!=|`=6DmQ`Z{dDa9lwrkvpGDl3@XKcYb^k zf)<9-WBQFq@cmEF1g1=Kkhcc279jX55Zp`bl>k_pFKH(hYZ1^_Vgbmhii0A?n}@gq z$lqbuhS0*CiUUaC-xe$V!KjA(IeJWdYr2rAb(~|h$Cm+HM1&P@{)*4N@6&y?pUf&xn3F>Q=nl#2Hf0{EM{SQi%ySq~ zka}bn+lsQcf_bu9>`Pg>Ih{ z>b;O`@fG7UUTA72S+1rmLxS`0N2s`)eeWKzy7pxXti>v(807TpuPFUE@VxW=M<*}d zwOw2KDLtm9h?EMBy=uiatA!5juPbABHV+wAYl#QV`SazZ_pDm>gu$R!vk($mukU-f zH5&44X3tgjmf zD)2`{Fk;$OLH?v&RU8k&RTPi!@OoeTK|6O6joE!I!h&H;h!1(c?H2A*Ik2n84wiY| zq##Sx>?~|q(|xso*{c$kbG7sNI><;Mu%(Wl%3OUhP+5iREL$ETu&%B3+E|V3zEW>- z@;lybEu%iVlH*9P{m%cyQ)=-|F>;SscFmK9E+eipWVnaP^*Qnr)|VMXFHr|PzvS1m zV85-5=3~H&)f+C^?cZ=->iRT?AA|ANEi*~?>Us~?415_ioIJRCE(WgR-3x~7{+6bk zaYoa(EFI*`cP~$L@9i0v)H${8ur%_W2=I`s4?CM{Kt^}pfI0}d(linZyhq-rZ+z}D zan3Dp7=6z*+7dFt-SHi?Iz2PNQzdp&Te)RIq;UF-`pu7GJs>3>w7%%RWD`e+BrG11 zDfuGM<(0p43w{;|+}ap$w5bOr3$$yS>=%8D*t=QNxeD|v21wyPMINS3h5HmyP3;6? z_KOcOO>@NpUft>P-cJkEFGXI73NnD3WjG|>zd7Cu-tWk6`rO=Mkamy#c-_8vK>|&N zykyr^tUrI9f`CAAV5YCo`E#(-^>&lZ9R?cv8v|T6cW?D$yA?9G@!~?ny&p>pi>K>h zcNJ_Te#Qzado69G8OtR_#^oGN{4K3+r-`l&R zpy=WL*K-l>)tR}(7Es*FKJmZb^nUPuVN?bfNPXAFKgg}ROFCX2vcp@dS zr7i(&maFuxx*WSPXF1>r#w5r>z0jerbwFb%lTJ$oYox&ThhW#OF56oYN~63PGV^d> zJoIetI~qmrY<@3b$=oA5@gU{F5F)t5nW00y1HJRe!Tl$J`)Gn9@RSPXsC2Y;y?!D6 z_qDd`{}9x>Y7eVCp8fbD6$MrWVk-PTNNLHKhZY`m&>gM$n=?%0)NyENb_Y9-*T!h& z^sJq=+Fwo^G#ks-FCLf4sITUjv_QQda2#W84dWYv5Z5O3tQ3qC^KWz;n@{Vk7eR-O{Jmcs8~#!vHm)pX0datN`l({jyvd~{{G)&LeZHJQrM8NKn% zsr!X(&vsC0-NiM&cbs%LOes*P{}7aLmi}^fD)Zu}pF)amk-T`fv}o+Km5~X*KVtkl zM#{sLImfg$Ca*gS9MGqkLFLgo5Z+7~pCojQ&NcTe&adYWI4CA`n^jK^1^I&+9Ad@T&t}ng^u6b;H7crK1t+kI!N+a%*15yr-kBm~)$9b6! zm%B4qW670zEGC%OJr*cUr#@~|d&(btC2307D~qM_8Sm@9iamWT(-Bq6Wp`scj0tns zNuD;l~SD`E0g}B=q`xsT<`M&h+<3nlYSNSIa*|dhIrG;d`PFbD25l#QOG-3LI zSJ&1XBi|paMcmbSy((DDufQX}>b0#d28GLw2B(!(uZQm(4w^(tOm&Xlr6qeeNW+Dn zSsw1I+glip@hUfElv2`y>?ghxnPkDd2ff*j>oeNN><0Ngn0sE$Bq2VOhQ2^&5ymM zmF6SeoQ6etX*sJU(OXZCsf|&jFIviRbBhtnoO1GFDf;G z)NEY9t&W$lNdNbCGd|y6%b@Dgry;5+O{HR5r_SPWzs%!^Co1EnOqVd+5Y*m5&J;1l zy=QsM@8FWj*chH|^r)-9c3uMYf~RMOw9%?(CeZ^hdqGW#-~7IjAg><1J*=uRQ&ery6T7c(fB0{ z2}xg}x5Km0ryn3g76@8Qq7|Qha@8xD9g}=-c304#i zHGrGc<1W2_tnuJ*SGZho2*N;@TRmEPW5u?VW7os><8Q^Zpjhm-`Xj89-X9PjEDf)X zN8miKf1Jw~(ktxV9ls|I)qL>IpTFyH!B^*6@WUD3Dlmmf<)xQFA_%B7wDBO{{v@vr zjI8tgd*Fp7_o!PZZm`A}@om#?$he4-;e=CYIj_46`f(t4`cbZ-_Uj2U7oUNMU)JSd zW*0dkd7ErzAU4*$b{WwZ#d9TF*2u(aiFAk(c6wlAB5RlJ9n4*#BK%O~OvW}IFV0up zSA4$Y8)GUBb(GB1B5~P$o0ECuuD8vSpMk17kKe-AiW50O`fzV4`1f_6kFh4&gM@+R zNJsNzuS2P5&O@^xFk*Lo0U>aeN4k(Q#gI#T@`mfSLyQTj?xI@BD3?EY*j_I`9fZi3B_ZI31;toMXT9cV>;-5 z2t&o!b~~uR{a;t*o{a_V$zX9=Dzd1phO-@;NQ*}@P^CTzDOm?Ri)URa$~Ayc@qKDG z`9y}sX$j6OMUmPj!dpESY-CukU@(7VPktewczKdjgpUY$}Hj1&hJLI@d zmXDVrRBp}zxKW}3vOtX>DkI!JNt%)SEG(V_!L`@URcTbWc1p-&)m zAP4=PzEjlLY#o0f`Q_oH52`m|q8PwD`PK#C^7MQ=;G_eF8#TXh5%7=T-JF*PO%=?-DmvW<72P+e6Q16 zTs4;D&2G06ikt~MHi%?U1c7%km#GkyrmusaJsMDXRd+(tC99&n>iUv02flq*j<%|F$tuZtivf^9O z`wJt$*AuKC8zFUy?%vVznF9Fo{_q}MCj zKfu-6SV~;Z*?l#r0LuZlyE>67F=(^+!boFt)fp=zP^f-e_pP+(@gW`K9*C^ zmqJ=-xw>vESxL{?usPbZ?qfl>75{Y|;rbrOCMmbbjNuhLiJ;cUh*y+M?|MGg5H5d} zXW(XIJF=0E0ykFNEI!o$xWpW{iu-lBgj#e zeT!nv3}DS_w@%CjRulLY69}I6{`{6tktxE$hXx9fE7_#@q@mqU+g}yB+&tnTvGhk<-iIeso=Jc^zc=BL1a zQ5-(@L$6+f?Pcu@|Jr?*V_vsb5d_VfUGh5WKsdZS(-k;T4>KD8C zBWizm!7J@7G6JAd!nrm63Uz=VKy(KJW$9|h3F>&uCYg3TJH@|1mQd zgzrCsOQQ(=X_{8`Yib*^YrlbLl6yI&Vl`rUO~IKzA4s$BdN3gMQBZyk zKy1i8hcMLFs=gXf9T!a76n^9U;&1t)hec;(LfU5_D`Sytm{Z(3EblpLz35GjCZ=q7 zTy(XU7L4@tUXa4@vKHN;mfca`2%taq=y8eQBTjPqn!;XJ#FVghal9j zwX$x6ap;^;Q7Ap#d@8!`afhR7x zkZMS4iiKB2`}8==cZXba3I~HxVU4Bp^m8W6olFUQ=h)fKuPi!MnlhX4wq0QOiE~Py zCPI+5*URNLakJ7f7Q|(kZCUBl{4dZLKKYAH~!NSyMA9cmh!1gJE?!LnA zP{`!Iu0w5qG|2M?BLd+O+RCPL&Qm^Z1_s6=U2li0D+IdI^KWh0BAzm6r|xF25F}bVBcbg zq#ozaTl_Xd{7LVJZ)XjUyjIX_>2z{_u1H-jYbYtAIqj8= zhA`;e$=j>#1&c>ZuH?O1DQF^j=vgFmg&VIy4iHePaFwiM+a!!0BPK8)7O;9hKs6&RUy|v#L`88=x3*A47pqE$n$Kh>HqUCnAo$KvDX+}|9 zY1`oHV#R9o_Wh(%dl@kOG)&TQoMrALOHpa6H@eixs`gx~!TUNvFd6DA$&a1a<@hi^ku>TliXUVu|R^LprAso%$(BILKZ@EiI21^QTUCoSXHqf0!?KicNcQi@D61k_8pBT@dz$Ndw^7=Re>3nR1{`=%s_3tqYx$`|K2m^t0+6x!{lg`T{= z*EYTVlm(MnJm~%73xPPY-7_T&?c})KaYoC7ppteuRAF%uE*0;45K~fh>HOUh*7YXh z5D6_=n6n%S961ig1*Ig*tK8l~ViVHWpcTCX{@?Vsz4D=b85`;JdQgQ?p^Mu^Wc784 zyrJHk>soI;s&(d@GS`{GNcPJ@$vK|liDnX=hnyo!121MQzL`?hDKD6DVdB$4@(Ik5 zo6^vrmXpReh)Bb~njOqH{i6cts%nJjEqGqWxSu7^J>B;*pwFs(8V05qt~9HW0UoRK zt9(Xi8HtrcigKEstRs1?OS~q8R`^1%bT13W%?+t?6j0CNb?I=QHbYU{vEGUO!@6)U z?DVb0MwK8-XGF_cW1`h7|M|_K4W=%$P+_$`iR-^-7kmqmJml8)6tGyaQkr>abFrZA z*mqjUY_A-9O(6dQPnMOXyQ9J$lSRrrw>?ts)eHaa za^*@{vYFAV9>*BjO5Xq`z=i}^C+53SO-_5aE}Mc`e6IuQNb#WD z-*$ptIJkMEocbKBxWG6p{d_BI;LI67BHwngXSvv<{^=hfx33hvH2Ai>lJ|b!$sUO? z*FJOlIH;{l`f=Zzw&~MgtmqGA!SnRka^#kb9>a|M4$Hc$at0`Xl{AM2>kldFixq~} z!Ga9JzP8{-nA*(u8!xfWN#U^4uJU>r0l1(ZUw$s3t#__#TSP-5f@2)y`P>-zWux|- z-Z5ZExIx;pV#Q7=p{@AVPVjL&h^t_ah_;|X{Pz0ubhpPdjYHXmTyjA4#cs=<^i@Dp z9D3+cuUa!6>FHh!y~I#G66u;W7ypQz)h+XyY>nxBk`I4(=`FL%{2fafQG|8HB_zvo z7gM){<-j=$ZoK2ZQu>FA?D_Bw>BW(p`?a*Sg`QnR-ppe0^5c5Y>ns6@^C@ku2=W4< zDb14%RQb2S-YnVbX5Zj+U*`?$%*)5&q<#{77%zLlgx2z?gCQXUd^eYvG~PV`ta{Kc zL4@cQ*3iR4pm(nS7*=TWs-_WmJdjzs~Pd#7FFLGTPa4fie z{Jnph_~MxE`631*W6Q4h>WQnxn(p0?)7@r%O&=RuEqyI?#3XRctyBR6nP4t!>4DF^ zEU;Z&{b=jHf|zTtxc5GJDvCA5sA+dkSqD|rAM!X%eH4o^kdT*V*i~QCv+^^jerK1e zKxfSmmzh;&^w~6(2~7D66*8NucLV7M+13wz28wyb<2B;tL>``rwU9QjSGa3$qiQ?# z-)H4lU7DZQGP=wsUV-$yTcr;Yq$8LZzK=qwAn^xgt}?4~S2UJdlWorbcnW4bgH1`o zHM_{XoHmDt`h}or$w~C}$4%rf%?Vl6@}TH0-_im1wdPsd`H{qTiajIz3~VU=B$xe! ztDFjo%1GPz?)l+2y_@<9QQBs8G9wH7mg~SCl}W05Ug6}SV8YaHj9!SnFw4UT`O^y8 z;d4SP!QDg`u$HRW*z2h8X`XYEnK_v6fYY=-Q+3mX9(LMngfG`dN&6VOxx>eTu^bl8 zby(~(8!V~9*%xRxHGF;NWQxsq|FAJW?pK+?bl2^mf(o{FbLt^Z$I6WysPgwm96%U^ zlVE{qiO={eOxQb^>Ny!h&PUsRd0W;fv4bg&sax^xe&M38U%5Y{vegLQdwsz-zL!9` zZ497XYBN0Pf*;4M?MHjksMXR+71tdp z#G_yY)Q&nS-UAdYN;s{qfCX?>6_0hK3D$z*b8`Sk<%5T`y2P_U%T~M;!!5wq_xLQZ z7SMOWf^EUOgJD zuH%sRTX^;S61W5Yj;kxnn7&G})jb5Ktk06ht@uT{*!*5*I%Ixp(?)p45NBF2hu$l- ze1c0d4dM}oz{U>d^n7BYXU};*vYiEbpn+ihYK8zWyxtV()#8#5tsTFR+b+dWBDi!5 zv?uL0{GfDSppW+8{t-@SE&aG}aO6zsL#vmu;i?xEq0mtW250oUz<63x}>2}R5HZGN}F>S@uL7=G%9*Vzv7A9F7>ouv9CNB*S1oqr~ zWAv;s2s_6n?ABS}Vv&<=PJ{eUqUxp&paQDJb`yA(R){#2Vysy`O7bZ4J4L*LTTo{&yU11%Zu{ef zx&F8U9hkom23AH)Ro?mG^;yXHVz*h7ua)M717${yD121RP1yvm|E5|pUfo|y}0P|hA+Q{Q(MOIf{UXKqA>C6s;Xm3*``K8ClsX}h?@5TxCCT0Yoh zb$LnJZJSn>K8Ti+L#AWRuD$rQK~y4jhxM}}g~f}!Fv46Jm`iRceIQv!KHqAIPB!Y! z82=q6{SXeOT`TiNtX_F;ZNOKdH_&EX{zN9NjIh4<)euD0+piRB+rDy)wp~StG{Tzx4}0$!)^ygjk2=^uL_rWV zGzA3_5Kwwos!Bp2p-5E_kw8GCcM+8u&_R&igphu3mJ+NE(jv`n0n%6sDcR@5_vMAMAIUYk*&~r_`@_&dz?E|?oi0T0; zdLT(H5jn|$<2y&)qy-mqb?Sp0q-LpF8i7~K!{)5C=e~uM8f62Q@Is-YMAQDpO|ut2 zOytCu4gFLZ9j?I|-bBTSRAJb%3tZ61e{<15L`2j_;OYmvx(CJv^Byy+hOQgk)yd!P zpTzlZTOG)HFq)GZ#CsBSD>MZJtgrXVvIC#X8{|o|KByk=3e5&xgQCYNrf*V7vIb0g zBwEo)0F2MC(Pfoj88KmbJWV}IH(a@5-S@=@I{+$;_7ZZe)a^=VpUxg0(Ak>NzYf)D zKmMcrXa2P;Q{XfOw7^xUSc*hUgkK-s$jFfF&YiQoE()(!=2ReWng!w%hS*uJs8Hg` z0x|5B)Gq)~cf*6-noPHzM7qg-tXj*wwXnUqXf~p!3i;(xfpPFB;m3U%{Z01y7c< zzrWRyxLq8+zHyb)uToGqm9uGy5qWEAKC(EM__7It<5Pc^iQsfg;Jl*bSA9GDj&pu* zd4p=H3`HYq=iH*)w;4Bj-{qy-h#&Sa{&AdXz#ORd=UW1c zRWrNl$p_SoK~fb}cIehieYaHcmd>+@fz#3NHz6&uM*Bn-4m8n8fZF(g?BRJta`o9Wj+P4S-+}oTuTd4C9Un z^PAo!w6fOnl+PR?GbXEYv=lN46k5qy*q19=2-D1f#zCn;9cXV8%2NVS@1hYu-7U0* z5Mu;#r5T^^5<9otj4zzRZwI0r?h`Vd1iwN`4bSi0b+`y;)rnvCk)i{&S!)Xqe4fZt zNVK}=ss7vm3F)`FX6h4ce4|>xqS}8(J#};Q_UT!m^<JLJr)Dh%|k9J&ne!+{%DqrW;9FQX)8VQ!Tp3F{!tix zm`XqBHi9Ax&YlEbBF5hTrI|~`so2i;=%2RChUcLJjkfmXt2L<1bcqu^ZmJLT_hJs< z9^8dFc6O?WfVQDy=E1L^^Wm?M7sz$Wb~6^UeKwD#4^BSsR}NVCVBD@MwU(kHrD>ps zthK}WZroe9PC4tPEmHWJY8YtYo>^k8M9+8jE;jO9fHr)^D&$!uvR zMZPklB|H>A-hcW^L%^v0A1P>HzL$gp^cp%R3q#AxPyOg7OJ>hL3s2@=gdNKR00Kua zXhi0->T&GBs-`CxueF|r$9IG|*y&7YX18=!63Lf7rTAvzpWvM+>|xC{TX!EEN``uk zGzC`j6r8j$1&DT=@fu!A6CKI(^Ig#QdP|Uf|Kxb`f?4Wv0X?Yo9Y$vDc(MEhPVWPb z6AdG{%cO7-Zt&93wg`V1No>adSy(MEcief}8AnLvZHd^mU&y1^pHF{Pkst|g0G}xd z;Fw*c+@7@)KN_c?l#-IJ{ewv$`)7hYOZCVf zVGwLDmVLTg#_BDzS+#pzvGO_i{*!nK5D5Lm)*gH-KqoC{fP6gZZtG#`y2b>dK9-P| z5Iw@fNQoc%YT9=1cxGz@yaoz2~-T@?7~|xzoqmOKM2U@lD6gpbi=Lt%W0ir?UTxTb@XG z-VC~xb%(1la$(C*1cH&_mOck>m^@7;CY9D|2Kc2x{O=PqLYndCLDSv+QN&8?ADd%H zJD2hS2553K_L<7eWrCx9IbR9wnuesd+up7oE!q}-KfWnq4~dZ#!ICxda#RVhIs|Yk z`gj_Slg;JjJTVI^$#@83RvP7sLC#b)y-@l`5OV7w?(hsOB**@pWsxafcCE>3xvTGI(3I1%Ls>+g^zN zm19GLIB3lR20~-M}Z$3P$Z6&$1nPl9tslUjpLn>uh|VFpuf<^rq2E%(d(s zUN6!qm9j~^On2*4U+3`bZ8J<_Ihx<_?sE|Fik`(W(_tK9~xD zA*OXkhEhdkYMj?PA4oVP!9{nXoasvG*FquZsl{uO`Wml-9~dN0$K{qcw0w3!JEA#f zT+Dx%ZNY=jgocI-hHKUoEx&Iy2n$|NTP_D6hdAG`d&kqKL3}$f`NwHl>{;ttG0R%H zcIMby+>y1F9-ybJ@+fce_@*;+-u~*?T@dw5LBa6F?wRic&2uc@re{EwdVVQb++Zlt zwLVkucy%9WrZ6ff2nYCD)uTMhk&XfSfzy93ngI;8U9J({l44QiJ3i0rRWf!_@x`2Z z^~f%AJHR>&rBzDJ1xDp*yV4Z{hnK0BIDZgv4A?!J37kgO2GEDTDqi&>8 zh}0}7c+X@2LSSt3=G)tb`>Gb*u6z%*F%BM$a`%a{M8r&rkfSd3u=HOT^4VW-NucMU zFU`Gx-J5TKuz0D>?c))z_F+&ei)~!OH0Mm+L(!3TLOC-{-gP|+LcV~cO*_55x68J2 zKq9CM&Wg;tj0zDy{@L#4)9I0Y2LGh2;N$BUN2RfL=N^mr0>G3yQ`{#aEe?Vyq;Go~ zqvT0lnA`K}WB}CXi+y|BNZt89Eh@FPe%5T3sLyYp`YHGuwmh%XC33#zvaL7jMCtqh zhUaK%P|eWMw)6nU-lso&es4KF)L1ojz4?-0nPIB%`sQ5l(opwHP~Z@<^)9SY^4;7b zg(@`(*hbJYcfC0}g72Np16uWSt(BkQ(07uz_W72zVGTV@b#7L<)3CM*rnuFy-tcdm zfwBt<`JI=hJ{Kv0V8Cy?G5dl#1uFkgU&@n2&N2m>T@Mek=se4z4G$>&(_$g;TCqMw zA08iWju(bWHq&C*6QFkCQA*L;p~hY;H%^YtKR^J1^~;vg{YCMAL2kG~pXqKW{>n|x z9ZG77R%Q_?Tx?hYG6Cx6&H-7UHbQ0wtB|K0McG0Um-dfn-lhR$pmDO0xCKH- zxxpRO#M&MqX=ZWn!&baqHyvKWB}ob712N;aN$;2L4XPOWc@%sqzp$@-og(AG*kCrc z5*>XrD}O?9!N0#6Rz5d5$X9rAF8N)U&8D2IXP$E^bA7kaGx0AeiZy!QbPAGr-pgQ{ zu7wyl4|*FX==m+=B!Cl-nDlrX`oG{IRtb@UrIB^vW3Vr8NR#7sav^P4OG}BS)=ezza*k#eC#3IuXgLb{o^$DNl$m-)e2leYFDRKDkS`bXPQ!b z{I+*~M~&E*O^FSIoq?3x%FheEhg?ztkf$xvNNz*wMz#Q4%DPMZGOA3R6d&h32Gb!; ziB&26>f>?)6m-eX+x4LEr1@alMn?w_s$4sa{3lmNNXWKhInOt^EPx3QwOP3K0vn#x zoO?OYLd&BT0B0vdCnng%w8)p>P!*7|3@V##AyZP;I&);4lEu5EpLHF5SO~(i!peYC z{##qzO5MPYYZy6gG1P{1GrzmV>s$X?y&gTi!18j60LB-;_zm#UM^M}0%ONY+u2x(X~6{%sCFX$+o2{EFt_{NrDI_tcy03}Fhvvr#8 zorTVWhMCiX#hY)P0iamJDQC@?Hn%D+%>p)Um*^-I8BK2h5&(btcWzVpFwqDW{H6}< z@lMTR{4V7855W}(8F}FUL06n4-w!`J?aC`$w$ow?>&XWDEB&RqTX(w%_#Fp^j{WEjQ9li-boJ6u z^xM9;Y4$kqY6ytX!{(KJK2>=84Kir$=9!aa74ANKSv=fVad+;UL~Q>l?>b4tT6{eH zOpPyXLVIjRP2l^6LbdnilX}ob&K;~<)%jq-?86$D0A`vxEpCT&RFRk1t!sS$mU&5I z0~C}-u8vXrmtGVkd2ShwC45)X9Ui)K)AM6|2*Dry_KZP&fq$S-jX*P{RdyJ3O1Wh? zU--4J6&$6E4J12{iX5hHw8eSmR1a&aZvgzv6NM!ucFiTfmmfd_W=6Eyid)6-GxYF~ zuxtKIbL$ns40UGCu|#PWH`}Z?q2|ue0^fWgmbi0a--@dxbO%ht_nN7+Aog2 z3A85a0RAVx)3^>u`shB!R?z95l9z*vY*Y1*>eoHN|6n{Y5!`OiF_Dln9+C4vn5Q4h zd_s@F>>;(qrR@S=q_FHbp4x*aaL4}PjkB;MTl~#Mm1UXVWXZ<+AH*I0@9JM=ldk$X zPRTp2?j@miREfPZa3%#gQiNU}Gwysef^^eu=~}!*gQRKqL`zg%*Q;p6j5+WauLID8 z4h;1B4X_TY5)=Nr-&lKmFE`)MT#fqgTx>~2sw6-I18fTeJnEwzUcf^irE8kb5`M>| z(`y&WjO5+bL&{S|8}(G<^!Wpz{}XsbxsQ&F6&u_?;Zz3Yz!_Y(B|t^jtDsQc{fL1Usi-f-o@^-NS^5+pfob4YrZZ-CQ97(U18TKnwyi`bJC za|3&=(r=s)*6|oyj9c#$dkQav1DeO3GF~<@UvpZ|P|t2Qn!ZXoS&7zoACJwqIE;aX z_AOx=E6jq(sGFWwbUuF6+BS2{Z9iMq{k72U^XIvpzEs2NXOsE1H|vdI|Hy5q2ORvj zFS;rZCu$J70XWAJb$5_f*C>ZHuMQgNYpu-4R$<>VKpKR{5c{nbKDbT#ZYtk8?P!jv z(nJ)8H_9_Oi?mq|_gLk&XuOOrZd(C>iW4)(0#A8tj$~y@mb~U{>ik;$WG1QVX3gqu zck*rDM$|pmjvkBPwZoD2oiD3~nPq2YvcxABTsEemh4*Y)|G%wRv+=I@(IbTs0G%QAVR;dQJAmDUwbKQ*r>x4| zR3tB#bK-?z@|w8S6$g)%Mrf7!e|`|osb3_T!oC}s7_yivUz8Z-I!fi!jL=faKcljiCY0jxB0ntWS^HU?s+ohQ zMXa>%-gUgxJ<~?&R_HJBScS}t;0gK87LyzAtIu6KJrq;WIB=NkFjL(mHK?PZir=emk2?@lk#AmxINj@FP`@?4i547s4j^6^;SJ?owhc_zUMRNQGY6ovd=@Iv zV@2ZysY^;WHJs5<1TLFC?6 z;yo5}7r;7s)SG*F3$toq*)TSP$Dtl>m{xT98X)MjxG{LIMDLbYkLt<>v1W+O$vqKGLaO7-~Ieh%Q?@vId9g0&?0FvpFwYZ=oy7CoSAp zmlY&V(P^#Fg!i@%U0zExzk1_w*=ygrcw-YoJ)5dww-8YlnpaAwR*=A84lZydO7FLr_dMGW_&JxT2m zJ_H7c233{3;}lfC!@1W|Ny+rHL`_f6lZuU~%* zr84{QVHJ%`#enRwvtC+)oif%p0nr>noMrJeyla?J5q$`0V;1Ij`&`IP_Goh>Cx@`j zM)vkqMDdII_v;b1H`EY0#R0%**p?sWr{Uh7;ZyUghH4lP7v!`<9!Wet{#EQ9)IsGU z0Gz?bIdGeojk$c8h|j3UDw}S-SCu*mpt3wYR;Kkyi?tGuIr_8s;pTGw2ar8RpuPFr zO#fFmU1_-6{2H{1+`1<9PnYfA-Hl0bc%}47bfok92u%p&%O5mpN^rFD5u}O|Jul8% z0PqFtFtHK<-QLlC_*gi}W0x7l+c*Om^&d_EV4Z_T7U)8f03pgPCS@ZOs%PU4l3NhjD5)CH{(~-+6=FdqRkdjMr79|^Qw@ZgWoBTJ?B5flW-cXs^k{nSEC65=+Y z@@I)xYnk2NpOa$HpJ7ED)PZrI*PbKn#~Fau_VH%?ak~e7nU|!9vpH*}N8+;&Ajj*9s$&|Fw>F<>N3vY${Fs9K70V&6#Hp`$(a&slNy|Jr;nk=3^2I#_U0% zH=a^UzrTs>^nR6Fv5&eIi;k|IjM+;Hp|d{Zpc95+mQkAEgF^+Yp76mje(Hx$UPh~D zO;udcxq|VNdYt~4uMHELzu-}oy6!VMKYg2AR1%0vDxkk>J=a|PqG;l&r-;J+Egjo{ zOHIc*ku&zwVX8z+hrTmyKK+xkL;YS+TO@I57jGo&iy_6plW@eJiHVc7)jyn+Sq=(c!NN(guMGhxcvh?QpRvE zDKyW%cy3(Pt;nFko4pn@w2*?T4tZ5 z98u=-%8kx_q|5Trh;Y@FWNPA)J$xU*89f3qpd(?f17lHk|5B=PIWtIZd|Z=CRh42= z9WCs!+$aoT>I5>PaS5BsPIXGSeNyjEeVzpO>mFSe96PHBm?LWHV{w-iH{a)T%F^Y_ z`_R6GqL3@r=8qz$N?zGmT^!~?Tp6vZw?24;my!}bO}${xifh~syPEEW>>mtJkrMbK$| z7^LZb!k`eLlQmg&WwUqT$tj}bWummGTihukI zMKnUtJ{rL&)8_OI^cGLy^Y)VFiM%#oJglv+ruDJgkCN)nVYM2Stt`RDG|l_WR`uYZKR7i8X7&7?6WlE zHu;t_hT%1o&k8ehJd7MR$sWaYk!bCK4zQ6(U*7&m-BlY&;XSe+W#AYgqTOwC_X^JC z)$r2MOV5L|nqVtD!UDr3mtqfAJNu8;k{y-q8vi|?=}kE7UzQS@Ca-)ut-?kcjtNa> z(caZb@qlA1HZRllL^ zF{QaJC)#FhHtc%QX<~@{#!9gJwsO*`)=o?y&sU8n3nS-cbB-CPF_^avxp|s)IhF zpD2i3jZczCKJ7DLgy%p6v2FJEQ7%tSR+pRA{pUv^U38?@WP5gUeh9)R5KOh0u`Tea zRh6P`f$wkX&TGfI&o@gu4kZL=@^6KwIa{G@g;}!M15va5t5VW6HLJZxS)O7~-(ta) zkd)!vE!i#;(R!tAFii}zq<{}lz|0G_vw)90Tvdv$JJEyJsD2a}lo8sn-*-*-nV}ra zAK#{yj20&)lT+jPApIi)+0PtU#5C`L4Oj*Zoz|(BC@O7lx9ggUWd$WZORLN?l2KHK zg}w#(@ugT5+X;$n$%sqGZC_eT^;60Gy5;<8wa_wRO*>QX9JOH0s!ev-3$EyrB4%EB zY3U?SOE!6^YzenIP)J6Vtixs0O7IZu_R&rIcVeT0YbGl@iaV7M{n@Cjvkbb6!&H0!?;`X za#zP#mmE+zxJLx^L(q1+Ww_zG;#0yTx3%C$cr3TOBJ38!j#VR@WS6bA+rEU22NwjO+Hbg`D9(ftiD{ zN>ld}7B(f&u2%Q8#uth?3dRA=%8+G0Ik2utp~-pCYffLim zPA+H1#g25X=Vqp+0wj$QPjyU_AG%($VQ18!XNr9FgjD;R-|B8FK=b zPMZ2{2;wS5(UU)Q=!RmAAIjE$j(^=D;f~2sdj-}T;ooFN+LC=%C#i>7W*TSeSMyjA z8`cZMapIg|O<_yNI`vzqQKO+vrBE1|j#OsYAkk>A&YZ;Kl&C7TTIfT0>kF~p=D9OO z%~v{zn$ZWgc#3;1CY~JXSs^qummP;ysCJRQhw*D%!?WHXtAzixAA73ey7PwPn&`3b z-_9`j~aOK>K;Gi7P2#JCK3qqK@FRyB46 zax@@qHpwip+RfGvFs==U;?Y+~lG=0p54)bgi2zi3A7}EJIm_@hBhsD~aXlJgyO$)L zj?#faUv}M~3=AiwF3GMnEO#lw2Rkmp=PZ`=z&w!2i&pO{j}E^FZZo;>?fmnOauN45 z6L#m(uE@3mO?77P<*{B9ag&hdWUa_lo*QY9XcUsB~fsmGHS zYyHJa-cdch!MfpguT<7#6EWob#=960tlFiSgiN{$^jhR_4}Vd06H)Nryt18QUF)0& zOR0X2?khr1_@SqSczw1it3>OG;a3R_$|JG~%33xOG^qeFj_D@f@9#r>`-k=h+xP#y z0iMncJHyud7^p|NIi|jsN=YsCMp0CKIYtzo`RlTWQ+U_6-`-C!!BU2UTI^AmxnA8D zF;9~p3Oyb!L>N~ka^M|J64AW_47{DHZr(nE&lRgYa@jJln~!m7n)s_vO;Y3JZ{DAV zUq%^;s^$@(I-&?X|JfsPlZ)aS`##JP85@n(LmlwmQXj!MJXpb3>4*Y;9>4{ z{qKC~NX*pGP`q;rUs1#wE1BP1<~=YY8w)YK;r7gA0J;Ex#-UMAsRSm=AN_%4vLUB+ za=e4sU;U=kGR-9EMcpN`xSu}+H$UKVO5xs^I*&-xumncB&F>Mup&V+Sx}nV09u<(? z&*(g_+wQB$*8_`s>A;8WYD=1ov*=%z^S7Jmv9c_@L;bkMKX~M?4SEx9?@g{58p}PA z#$0#>BK{^En3-ap)QyoP-r>i~)WRO$o%PCuMOu)}B_dr-0Plbgp1t7@;kx&GNs9Vt zR$M-%K7z9Yq*^uH>;*%T`lOd?-(N={dCg79i79;n4^cs&wQAr?GoCwHmU!{9)JWI0 zSAEP`(h1-0h9DCKvR4Ig%JvCq^6$YO|C;lKoLW!u6 zmf-I=!HUxq@to>QPG^h0a4-}UN9$yk_K0QF#NCBNOY+~*X;_twTwZ{upl*c3Nj&^y z6=o|1PnI*9v23gB@3ECjILxBLPEioJi|rpV2K3-+kW-Cb6$p7Ov$L(v9t`>1NT2`6 z39CWiES!&O2Q?bOHnUlcSP-D#ptjtaRWIVMCFtHs_DUVUn(Mq>(8guy5H4H3RaIuV z(5t=1v0%4A@eiDi9HcHb@hd}9Qx6b=qmn<6BMW@Wi!KPvHIA~#HPtdo?3V%Bxo|Oo zxrwLKxs$Bhfb3n@XQ}o0FBq^MX@3$rR3a-*wee+1hSR=EnpGCwj1A4K=#&<15>puf9cNt(8$epY7^>fjN2|moMh}usM;~l&DUh(3HWEzrq80 zl9)SXtq0>7jeG){YWW{UoD(n6cyNN%D14Ib*6mzQ)3y5zyH++*C>h4dsJWV>O+B1(G z*JuqbxMY+DS(qo9CNt!+yu<$(EJ(ASZInT6KA~9(wc~0qGCcD_1 z@N>#D3-M9y{+oWrz?f_e0v)z^wI4JrcmhFvS)D8+LEC++KapaD;#BS~f?wLBJ< zp&lTx2xxwXoW7-l5ebe7I?RgWQTCU&tbNI*0s@=UBQ3L@EN5>wC~ znIfCm6t$29lJS#&+*VHVeFIhkJ_arSPsXpap*aC4O$%}AQaZdnx0us@(ZH+si9>Gpd&a) zFm{0q|4VD_{`Wyv@$0~8PeBtAT|ErWx$a2^8yI)gfe<1H zhMF+(i&#q@IcF@NRTD_-M3_d=lH@(g*Npc)TQHtHQPQ2#Io8wcvaxxc?6}60C=AD( zaskflwm)Tn^5{>N78s?^)U?vBMcrR%X*9trfTLijZIwqhDK*g*eOlnFV?3@gxlmaE z4|YB9zTBp0_&I5doZ;0gh%`u{Esx)7s1JW+un&_y>Rlpvfx*E>L}Nlj3H0Qq$bZ)J2S@rT>L6y_OtL-ev*DfkE{lf z^CA|3lyMRP{L?ymn5T;|!dEl!W)42BDWq7w9jb5G9Agk6Hy6B?56P6EA1^HAIO)$rCF=$_Vk1n zPrLn}l(mI^ViTi=YK0pW$rBSR81`f|TfP&{|0<$69`8Fn`ElE6zz-R^?M_jOqZF@K z((||6vOCS!j<6LY@w7+TTbtFE zMscYqHJ#}%^o7hdF)*u(J5lNEB3OfAmd*Dv z%UP$yFBvUKNlcZ5Xj6gap;zPAIYJxhmEBoL0&(dYwyd$f$JLw#Ck_6mtIuh0em(j5 zE(}@f%tI|p^V;@x%PjgeOqOt2{T-_BF1uLl|aE-E5-M$GCF1f$p zC#8c(?jXJuX!Aq*rjPI}$wv%MB^;ORG1z{RVq2dBodho#++bWvaS+9HZA{0mI#c8X-P+Es699Nd;y*Z z{6{D(nF-ndh#(;+h0&kc)eWJDmQI8q1Pl`c{7>E}FjxeeJrRgn^A z`dxXWvNE&oT<%mkl^N8?g6kZvVW!@-{cYzp4x@c#_LFh2K0_TXD6hS~jt=@*{~?gi z0J`my6kR`kKnoSp;1hmNdgQC?G5e%S5Gbu}M+V63Znj2T=Pky}^Niu<7Mh?@aH_@1Co3RL+?{Q0M;-sc)XN zZZ|A;*9AycF3RW0K9Z19;T1WBA5gm2caHv&lYUrH4Ry0Ldwk z-TknO{T5186>XT9CSTBuk0#QCaKdNp?Zj+P;6kIURB8&u8Rg{-GFc$J3qe$N?xwXo zyip)QO(vGL5mkv_T{;8+Ixp(CcYCvF$Bla;3E>ie=V=gV*xkAXcq@xc2m;B;M^c1C z`AF3Y-FJf5@>}OE%~SoT+l{?&soikXP1+bLfQ?lng@H__70{yB@~(kD3uLz)Ab_ZJ zq8YE7s&o5jzEhGMhxLY>P!ry{ZBdmd1RIp+%$A1f&RGPZgVIgn4%Pfoxf>uQqii$@PO7MV_xZ75Ymr>Tp{ z(BAe`hqmoCHwg(M$i1dN?8-NJU_z3W*v(<*T%O)hO8)4-;p?+XqV_Ld#g|@ijPq(A z-S81>Q{&0jjO$BIl0OG)&CZS;?V4Zi8rfv)M1;@COfGj7ZcbX~@8$^q_QZa?cZ-v2 zAnI<&Q7s7#;xW8tn*1sK!Ds4(aXW$ru0mzjB$4}lUNiTA(#)rn8^H)4g-DU25w{Mq z7_aF@T=*IbMQF&hs>viSp&sv?f1nXR2!tvL<$eCQHDP8~f6m1g##se@6!QV%7jBU)X66_;w$__2H!f2`d|mz6il>?Qb@7>patO;bJo z+xHk|r|%^_)qGT^Ntj|I@#&ingQ1$9MO=8;nP(^-0yqnck|YzHyb`BttThRH(@okW zuPGBwU z)~5@3-gef{pU;m5LKWsL>@8GhSC_1oOCvtHsvKMv$!y`(!wt}mG{p^-4&On|;c zoi%|T|9n?Xr_a!fmq_!7iOOQngc%H97rQohJ{aH7)ujlVdjg{3Fg)HXsZXg1>Wngr z2D)OT3;0Q$GsDs_rm4xlBl;h2WPCDK8J^4!&aEE$B%Zw!$^XhB3ERg;aJMG$jpa5F zuD&v1G@`2K@;{re{VLlbgdaag=9(R01!ivgfvnrN!s=)CEsb?iYmUAHpJ zjJE4qYK^0qCX?OM1aNH` zj%XPte;0+~$#!pFsu}^RWrb%~JKO%YeQ!P#rKw6~I^Tk-WyT#O@JApyv+=8p1_$d2 zv<%X7;lPbQA^~+%6M7>OOz^WNK}l~ek=P2_&SI`1rZ(lIxQxzT6Rm!M zJx656Vx3X_c>Gc*xTn|Mr~diB-S$C@-4qD3F~>VYoNJz;yb@5>xIWtq)LFwh*4)*^ z*A+=0qV=fz@pjKm7!lVev7lZUpHRW(jM7#y`t3$_dxLud5xIX%jL8l!d3rm8#f*)mr#`jxj(8(cAU zU6L@-VEhR3w;QItQVc|W(~Phi=n>OLD?o`tNbVCkN9YX^b|)&39iw;uJb>T(vPhJ&C9UjCujRm4kGqG^GSvN}FPr9U!K1q;nAb8lX?uPIp&}yVxR-|jMAst^_=Eds@Uw@oBtr=xUelf1Ny&D5ZgN+)0Qv+2gkJ9V3k^%pG9el5-pImb!gSP{1zey=bcBH##633i^tb!h zqY5ma_DNskJ`Wzba`II5{BKvk3BPrNj`XxK!e#ovpLVix+Wj|yzOzmAbi0w+M2@LR z)f`-UmXdvWf))E@+52~mFBS>rpQ=HmN;;SXI-lOZP*+a~%DnZ>>bhmX-NCiwl&JEL zGT@lYFw51Tto&4@)Wd;j)}JpqR6KVJYT7QjW%^@^5$B!yc_lybLx3IpzGjaER;=MDf}kuIR{Y`Ylhi=M{3_@AhTS zVU4ukUBovaDf|0l{>x7c(P^6<355>6zUC$Vw9VP^7nZ*S?F7DzQ zjC}re#sB@gJ$wG|8vOrw4X)qp?0TExYD$=s|8*Ru7?4K!dleKqntmO-hSP9!b(RF4 z8mf)^e9%q-A5XvYbc`IiAz|^aYrMcUvGn>XK3h?$VJV6+3irpf(LTNT=9R@cMg=QX%N^Ha=1fZ*@D5S6oqi(OZZq9B zoYD@nS4)2?&sVPd2*PT$;!?-cQQE1s9Z+3eTidpzRtv9j|JBdYQN@fL7rMK*xErd6 zqO)N(iPC5S+Fn?B%^6f@8?F=4Kfmv=R$2vppL%xPF}z_lb%@$)xkC*o&mLCEL5o%T zkKS=Y8yDY!+E4@c9u)3B%A;u9uN7S;#N|ADWp=2#vShd`(W%;8u150JPYrexaEHGz z>KB(H_FW-qMe!KTvnW%)Hud?n=_SO)y>}caD?hh7KWOSxeGA=RB3kKB(_CGq?u<>2 zwiMK~H8wTb&m`1)^_MyYxUbDu&kkGq$Iv#&JBxnx0Uq-M2BtrKDODdjlE%}XYf%hWMy*f-auiB_fY#J?i#2Qg}C6^avw5d6v* zsY2=PWJgPMI?623(w~-hKlS_a)Fq>hNZUg z)NY!ru8@bjS5KxWZj^aYUdPFDu07$O_oL8`7PTwy@KM`~d5ea3)^k<|uH;^|{Au+c ztnMT5$3Dq|M(gscLq|KMXFmKfbHBgPx+x+#l$+@05}Fu3<I>wJ~!G9u*S<yWMtN+T13{mQ3(J?yGV5Nucu>YFtO}L5YHZ`@kpHc;25k+SM=1rYy5vHAu zM^&~Z3#bD>MZ%RHsdbL7qt2stc7N6a#TEK>eU#T{23EC+K>MW6ZO3+`DEXjd<`4O- z&FAFto^d>ZrFt%}llm%DGv&m+8Q)NXhX+{IC4iO*dxT zg?zmyc>LvbRMnj-_st}|5LwCUow6=z#{px7{31zs^}VlFXsGGbQ65n6r)|8jERIsy zwsoIu8=QUr?B(8JH90tKZiCXBo$4Q};=VRiy;aSn?0Y6LA>jk%Gq(NLso4e+@`){* zy@UAJ&uC~SFLW1)F|{45ppTJVtW}|zRi@uqpPIA`uE5JotGd-aVd^E?lZAJsuxMw7 z?1U_-UEQ4dAtq7gmF}d-^x4^7ml!`T*?VcFXm9U|A~2G^g*eIh%Oo2f44fXhR`*%& z(eAfRTd5OrB;eI9YZlw1ZLBT5NXgRDHg@dHZ2C=wPr)!LMxCgWBD9JINM#Ax7`XtH%oq3$wwz z0VakEYPD0&FRY-g|~MnYC-fj-#Vv9Y+KO70Wmv2w3O{hy@j;_s|psBq1QZ1QJI_5HO%a z6GBsZjR*k=gp4AfAfSX02#`n#F$9Rz(2~3>1m=16e)s-;Epm*-pNC(fbrvAPm} z$gO_z-}HwU0;b;2b}H|8fW`m`=^pL|X`L{Ol4|c z&B2Z2&DS1&d7cOHlo!-qzg!3hTw_3sK#@3VW@HLh2=40Z@wjJN|Llv|MGorDu!6U^ zqE%Mt(rn84ar=VDH%Kl&=NqM$l`N0XD9JT{pVAeO`{v(9N?TTiPcx5eLal+mkex9{?_i)Q@7>voL5r8gQWLw35f{6w!{K3v)8#!$K5`=;LDvjbR zVQA&qRb{V&IQ4+Ne5^8@;exL!{m1h_`YarW)&BvNva9xL%d`XAYy>NGT=-g&RNqvz z-DH==ZaVLERru3vE|IOx{aR`a>)R4Vfy7>z8{pEg{o^1-WdhO7^A+G@@_o(^?k=tT z4*!wdh05T4wv#5(FkTXCq3qTEO+`;S8zSeHQ?dOh6T4)*F9SNybP^Pw=QIoW2@_OY zZB-Q-3@>yJ!Z~-gv>!kIHeG^k|Ovzb$YU&V6Amn^vR>YgNc2#sYu3Akjw2~ z2m;f~*lN*CDQ(RV@UJr5=pdhw`yA^BC5EiS)!YB#vIn7?vWNr*R7+^D@WV0FNbnrvnI1r;PXX7T#4BP_(wJWEp=OPCLx z2o`<7bIgT+A5;wwjX!$X(DahQeB_VNWvB=AQ0yO{b8qkV>P+dQ<=8Y zKjQ^Sg!b0q5NmkwJs)*vFNPiGP4DbY($S&tlio$_lzJ^AEvWF_eL4)JmP_>Q{T1%U z!Zd0zzgPG7FyLBLs-Bf|7G81j*-)O!dbnYn080RF%auw^lEI3D1~dM5)=cL_4C7;b zoV?n%p}bL0pdtE(M}@X%X*FD0u#c`Jrv{almRECY1yaX>Ray30 z)$5AtW+5=zeC-nHxmRl0b(Jfn4VQ~po5-rz8k4E*^&Vl8YS%~sf~65sOX{oe<#{Up zHIVh5b7#lfZ%6Uxh~u9J8y4~4nkf$O%8>T*;b!^1zD-52?vjsz6I61A&u|k>bv-P$ zfS3UBrl;;S7^XAejl+W@fAlsB{|G+k`Osl{x>nE(B9*26v4gk}gj8rx*Uh9OZf5rV zHmQW<%~gjyuW@N^U&)wEb_#ds<(z&7eP1r6=GD>|$F83XoIA`wp_ViRgEZ&1(?eGu zlPIvin({#tc{nVuW4lj%v`PnZ!5hBTwrSW~&`t^iM5>0Nv*A*mg=AsX&vp_+0OclP z!UmVn7+ipLnSE(#45oy&`pHUso-3R;Ll=DDuN2R4GEs{PeN}L~6DDYFq&Tp)JGU8F-vCN5_mvIz7Bid% zr;4$zk-HAH*DsA>Ryc1sAz%OggQ{az?M*KnmwC|n*n)_lp1wY3QF~40J)u1=Bh0?< zD#is;psZuasZ}lAvlePjDg7~aKKI#OJmJ*FPJbS_yOJ`^rMK}{>po$g(R-FtO=ScrKZ@*rlSN8 zsd%6v`ZFIK4(2%DgzTmXZY&&F&d0|tZX`(v!Pf+@!w)$KsuU3mg<<)!{p z3RuJNvwld@8s93cv2MUjOz=Pru=VnAWWaES(@hOD;&Efu^H-@6FXE&oQz90=^v!OG z&|Ud<-LE-j5{mM)0=D)tZw5Y^Q zYE*g5?Hjcbr8XP;jpSSvSy>18A7l2N(iLdwSK2|7VcyH7cGWPh)$o=`5>L#T3SF`p zY)LHc6$auyr^n0jz|C1v(%bk9%9wVy8a=eOnunv%3p|%6SzH2~#T%XF-|a2!o8zh_ zA2Z>7ZHNnv&SzTR|OmSO>+wc*0YNP3PZkk+$k?Bv7a8`HNU%xxU>8pA)t$ z8F{?+_{ME$I=a)LPZsRZ0|`tA7(JY>x8}g7LpPE` zLMsTSwlK<`2%?ov=z`6I0Lmorrrg~hjD2xwo^A$ZZ+yJDpB()HZ>-oG+K2J%dG#W2 zeCFu7iwua|a0#@IZij`PUml`6SxuhQzXs`7Qh1*#WIAUeeFSeCXng7OVF_S?%3g=F zyWzd=nJCkcfyd{E_s6ItD>)TY63#>8Wrm#RSOrOrg`<9gG>*b|=1^B<{I z&vO89?~unzHH&eBVpQVeVU^#f^MS;1=fH{l zCJb(Z#b;`Yi(X6JQ=oW3-j&VXSLyzp3@IeX^JGr@lE5W|({K6v7rWINBelliRqRX47l z7qSQwy!YWl&o|ng=hEc4FxZ2CTb%7rjZ75|)-N;C%EwOcwK#5o4$s5x9Su!i4E_G~ z_C((BL|+h;y`N&A!tiyK~jy<3)Ri(G5$A;s*24yz1>aC5}IZM*qPzZifZl*@x zQ<+TG|1DJqr8DF>{?R;Nj%3tI3*i!42-L#D!f^ohEo^64?wRf|N?GYd?TXH-Ga!I` z(J+yBNd4Zcs=Q2KiIy3Nsi9nI>X9{D-meWR=sD0r{4qR?z3KJiAeR;r ztOh}Xac8!tW3{obLPpg|E?bio9olKZ!)@Js9>Y43g1)QfaPC7DybszeTKB&@!NQm7 z>9JzO3YxU3fGu|!h-15T|htRhyGITDh1vm_;4c;sV~xI?;*wnX=i zjPd+TcbW7E?|Po19T6E0r-SmVv;;9RM}fh%`OtB7fzLZe-(HH8>(CAZ#HQgo7xX0K zLcpfca|5&Qi*@I^8;PWeN004Eyolg7AbK3{BNBao#J(wfUWU0r^8eDBjJ4=~qGKC@QyO@l(AyP>s0kCpC6hNHsH z)=qq$>}}pXnHqk+yK;c;tKq+J52>q4@RmGwF&tP*AlPhKKQ-pvA@~4%RSnCofl(%# zqz}hFuRNIEbcYfdci2@3kXxu*wTF?Oc>2BRk-`=#GTyKO@H$q#?x1e#tL9iZxJ3aD|imYFF z8QLFnsNgUlZ346Blbte|#BQlRCj<{oWfQslExn+|fi6pKUWedgpn8N1yQDu=e%HAW z6w>#?LGXcwUyK{47B0<{rG4{^5!Mz7zsuxLzk2QTTv7)V#=Wz%o}M*As~T*$8ge1E zZ0FQMe4HR9T?>UQfFYJXrK~JYJ*w$i1wVP}mGxgtee2~5kXS=zv^i<+N>^&xjh(ef zogue@4&n-=wx);EG;{>;fxX@xDC`8x+4*I)+Zk{g_5i3I-7*u9uGQZ`h^x>>%+Ge$ z13r9_oy#6-Vz9mIY-6KL5k?(*rE@K>MJITnpehgDxb3cpf!TjEt0m0PuTX+y zylJ$vT=4vrWJk<$n~WU&(qn6qI?m8P)yTuJS}*{#@jj#(vb9sIOirHKwFZz#;#c_s>^(*cxt^%J zf;HA@i#@DuWh(&mCX}7j*`BTi-ad?6#4_`iPXbc=>O8~RiIO4hMXR&?2jeavel0jF4I(g8&_N5wRr};jyweU< zc$RQEI;SAb&&ZG?Y$X6PRqAYx&&SAHV?^ypRV1P-5^%EtNTQ8F&?ky zJ9PTLqgx3 z%}gdTf7IgVFU&j?oaA>jH|*(%4Z22`k3>tUi4#|r`kZOpJ`PIEIJ4gBpnCAD;^}W@ zLnGu5H>A`ULW~?;Q`3g4X$@KU&Y0%Q774*}BcHb&b1FY@yx+F+d2Zdx~v2lhts8u@3CZBQ?*YmAJM}AuG@+{ub#Z=Sw602Up*9fAVC({97}b zY(>kn@F3%~RI1J0wI+GQB|RKUF|$BIe+!&{mq!qd?S8kI#qz1>T=|p9WwSb>pJk!I z&tQUB!O2*TRBUkIx**{KV%vI0`q26uZLrB&Tf7aQkFHt5hWnfU^NVY<{-5djf8Qvm z**I8p^vA*!XE!fcxku}+HM73@jBw>A30wQrj-8kXP}D~!QHD5zMUG;(6>0aJ)^J#M z6a8$%;^p6yNBtXevZ%V#YnqjB*#5=h2V>g|4LkTVhEen17w}89YuMc(W?bRy8@ad` zPsKKN#1%c9?g&=&*3Z(sPfq(Rth1;!YOz)Oo`_m|7f_eQB~t8l1E(EMZYHn%^UEmS z2k^_am4OpI&gM4iYwd5|zLb7vo$A1nB>K+O2T;fL5$#VCjtH9ky8w{@Kj>kHSR3h) z+7F}0vSUgV+c-ZN>ZvF#uE}$DShcTM>fvsX_f!RPLj6$`u4&zp(Z#50mAOOeFs2 z5yJWU&s_Y+E`S-_fBXNfkL2#Hz^F<#kN8*K)|Ct0UUL zi(d~-lrNoze92sru@0}~(=JNMA#CZs-@CnKk$|huTW)W2Drj?=)6_+k&l5OZbC_x< zTa-3JMp}g7`?n*96b3fsplQor8=QTI{ow=&%LGGd;!@>&0Ho!rG-}#D{bunRZfZ#U z*IQqAuFR1-bd*$YdX!T(%i-6ju}O(P%;&c=pA?6*sb{{-%FK&ZcT1*~lA3)%Itg6WnlknvMZfZurbQg;% zf|>hW|1pjml24JmHe!s6jFF;d_^7=PxQTs;1;a`ZdHkyizbu2+a7-Z@D1@AT>kAw& z33sSp=0^@Kd^B&&t5IqLv#?A+Rq z1PN|WQP~1HVXr$)GrX$jbpQfB=^JV*Pty(jt*pdO*VZv^bqhhOzs9K#I_W?M(+V+p4A#E@e3 z(DBRVKA}~rK^pQ7#iR$&ghZy2z2}l-CWiR^V)FA z6hm_F01-p2YgBEFiFmX#UaIxrS>J&VPo(Qt41A_~5t9Q!S;8T;nP@#L&PwGUylL3c zHEMB;>y=jP!knC58tIxH!ZihLa|&CW8|s;g&ljgeA0+scwpy2UXHaC@qK8w^!>o?R zKORQ5vSH0KEgk!H_j=dQ8Tm|ifmZfWU#9w_g(b9I;15* z`KFuP_K2$*FfCr*TLx+s3axN@SsJyE;?;kuJJzsk(r^xMmA{$1^{Et-H^p>n%m`nG z&4{AtckBEFe-Mxcgi!jPg?v71#ecR)yMj%du$~qzUv+PnXm&+zx6m!W=*spO1ug?G> ziE}re;drjgXhg0cPlMa;(5AZu4Qh9S$7JIT>lSuj6{jS;$%=*$G&JIzXTCL+136#C ze4Rc$T;M`l33eL}Uh>N8(7sYNR_kEHSe&&6qUD+yd-Pq~oS38;9$?k{&v){u1F*0>B=6kv2cXh4m z8u0|&-XA_^5GG=t)N~tA9&ZRLyrpvaf~1};-s$nz#_E9Vc_1%=T zVh*$#qyBa#gmA87;S@xEMnaLCvF~Mq#EBMvq}DU3vIE5ui@rqb$Dh=Bp_O|dQ9wyg z?k*VlV50RR3m>MZGO$S_XERxLTQgTVozfyD2(37EDW4rd;#`D}r^YvCPFOVVA>#z#v`BxVVNj$GlSggU5-DO+b@LV9^fM22w_IYSZ*@ ziBW(tTSSziR(ivJ9aEztt)Cc{z!vN5VYzPylAU;dzR-jlx(na4lVmFO)ity$3ae-} zGZIig5X~rO?>^b@uA(Ffe5|w-=qsD66mt z7WHHNW!5r_z6vVbG$5Yn_{P7c|2r;q`Ja%Q`{)y6Tah<`*Y4~kA#)!&#jsY0d49&d zFLreL)|)WEIZZ}NhnppB^&Y6Pt6QdR!A)rev3o-&xzNM|)-VEZ62U;^*4*{Hd=R6Q z4`Z~LXqBgKD>D6#PE%8kwJs`O(6NTi)n+ZtsnJ!#ONa0DFVw4uTg0WS+af4J(JG+# ztD~(C>xRsKl7)}4A5v(fS;}`rtBIRQHO@gDwaOjUT)W8ynET3eAM-QS1`s3Prt+qG-d6goG-o1D zj;eaYQ_qznFDYF1+~+uIFTZp0VuEeZct7Dy3{>m})}G*q;m+bhzwNIrK`wl0#?>5+ zE-SAcC&MV1Zl`vHbXZTN(Wd%gcB*l~07wZ_Z11)cgAXI)X5m7UJykH-hk9l8i`Nc? z)fjc3#t_8>%1i>WtgHUe_D*)TY@3s?2liU5`rB;E*?6>}pA@rEA8&g2CT078xW%PA zK|bLV3-4HQ&paIKeQ{R!x_eW;BuKneJ|-GtD)z+p){>EFu&2FDOCBpNjkB+e{>IWy zX;j56bBfO@tbCT7_s=?@Uv~AW%OG_~8ZYRZ$p&dTk{IXapX;9$8<+H%w8xF}^D|NK zR0Nmy(ARMo4-~@i)V-U#3t1_78Xh&8Mze-=R7X9}uyIOVTPC>Nr_7vqE^^I%n0eW6bE4XJ^v)HvUam-j&e!#SeJg@KKtY zkz#3g)I}%A_fLzCrgz|JM!c=jYh zRJU8XT)=l-FOW~v$xf`yf`nv5g9*i3e2+J1#rO=}RjER7>hsFubQdcFQQ2zzIV;ji zX&-;_Kx>WFwTHFVj^So@*{_ie7PhzGX{Z9jYx|D&tUQWoR1@&aJdpBxx@m7hYOOMM zvOLPGIbA_;c-I>{ps8G;R^vLePH!tZSK;S+mlmx3;HK7xRbu1>EoRas-L?V}ZnL>=w;_Qld{8p8<1oW~vg}TEal7pM<)7x3^-!JXN8F~)Swl-;K z(B+MAH!0CU*C>T)=L7Oi@taN-n0mnvwx+xYJf=_(I5wRKGi2vza0|pNj>j3dwxK&o zUPADTF^}Q|4TIBP7w7+iHPY2?;uJ*@`1Fz}^+Vu4c+~!N7ptkE7f@*CS^F2Xq&9FU zbHFxIVdu5llLhsldq|?W)1QAqQ;GUWaVddnD06_@`qCw}Eqt2AWUz8ssUE*q z+v}+q(Qi@;KEZpb%GL4jT*b~0cYTq4))ZC5m9DdIHEAdtKwu_Y7acv^RvMF?DBa&I z+IQggZY#PWVFAp5*Ky_UsjZP8*d&hW38ecApGj*c6sfX15yYydO9|=2sAL~ASY2_O z2tYa>6cq}kdG{-w7+o#CC&-Kpr-97&KGZ08C>O_uvUgsRd>UxJiriBt;r)fmfhmR$ z)4kraUh-_@bKVXB)g~;n^b2Ul_bC%GSkveI>JDidi2CzBvmHc!8Nq2hqF-It=&>Qw z--T2EW4NvS&TV!fGo?Y$OwmSy569OX)SRE%YR2d?RVoaOCpHykc`Qyo+^t*I#;(ee ztN}pBHPFkC)L*$367_N%n6Yc2^0p{6x3a=s50}g}I5)hYnGf@qTXVro1z$4bphjSw zN4hfeaN>h8GhGRQH&aIg<);^$-my~4r-p!xvY-t%E5ub&hRuk)e9o$spN6cNlEM!j zkfrhDK$#a2vRQdEBt&2OYkUZ|6*m|00&~Ce%hFDB#?Pr}u2(NU+-C*Acc`9`+F`;p z)Tw)$$GzmAoC}+cGgRB+;!Q~!=|Y%a+Oymcr>oKy<&Z$?_>A7#vQ%y*DOTk-zVMOC z6z$y$T_@m*PoUaz<9)|ulPzl7oYcGrtXAfN{3a#y6II&}`0E8Umkl&35&7N9O8dA# zu_)d5fHQ_#Ud(m4jwDX$lx(W2zo=v8iJ-kKREfZ z^3pVmPLLBvu)=;VN!z_W!&_4Nj$Qz%Kgpev+FEEjg5W&d-P-Z1#?<_w+7|PZBy`BK ztqB1+W7P~(kP+I(Z83|?deyoIV_e-4&;aYOO}*~)Cb(u^+qPxl{Sp;_J8WQS+QGR2 zNb&`9T-}blvp|=soc?Z=ApQHBh|Ta&*_1Q)+FgK?FP!)Niw#x35^&-Nk4@?V{(NoT zGN|q-%FOY_#k{Gl)tv#FiGIT5W_sU{sT}(|tX>yvsI#S|zvNRA2e+5XtWTBe^oQ{|D1bKE?(>Da!`RSfa{`~iAh`E$Z+V$W1} zuQOeZ68(@!Q*1;v3TRWN<8lOQQbFb}W3ZweoKdL8eLiAL^1P#W9GsAz<{f%}_P3E_!m4;8edvT(^ zd)2Zk=Z~#2A(DX?@E*;jkS~5Ffrpk~&g&d4%lFgr`Pz?y!gfNce_&CkqJ{tl;6xp| zF>LXTu+6}4a}L4Gqz%@y2-`(SFuz)wLxuCfX4rDb)OXs$NJGD$Y)!&vN~bRG5n%HvQ{KygeyEZc5{r1af+IZu))O&UnF!AW#^mSu<7; zpjh>^X99u*r*X6;n^l-i5VL3iR6wV)8qd*s*TM7s%1W~k6GMTT3JPq)G0JAtJ5AO8 zG&NJ@F_T2K*^jZYUaqq)tKvgeOAiz7F=2niLDKDl=9!ubtLcN4Rwu|iNs(3-X6WTk z+)oNS{ivIBOus()UQYIUF%kVZGo0^As$1R-$=omXg58`M1`#)=BbkKh%cPHmtoqVK zaf=2aYX-Ygurv{*tK1e7?;^##{B#jiy{c^?U|U!WfP>V~+knKG`clD#r3u*HDCLRM zQZUtsnmvaPYaw4&Sv_X1OtZZk)jDYM(G8%Z>>mAN9^rUtcJgt5h1|K@FXEa^3h+={6*N~wm-6;P}OzQbo|OZ zXh*ged3c;roi(IvWsWL!(X!3Hc(UF4ePsrk_b(1E+ zvo9aW$EdbP+3WHS>?qw<1gg85Ct-jdqox^vVmKuj|FeHxtF@C_a_J@PW^%*TIF+`z z4(;j?7~Ju(x$E%q;-Z98lFS}yjnFV3Pp{VQA;8j|1hQ(bZ@PMlkT|1C4ubpz4Rs6K zO%joTU4(+weoVxHr$%k*g^A}QUszsO@rRhfg9N85x8;Mqc>Z66LXe;C=<-&CFFJcy z^1S7-_cxeyKo6Y%qjKAXn`#^R0k-F;y2Cjp1dMx+8DZs{Pr2ah3+K>4^E0SHvyj(N zO^#X2*Gb^DxR9wiJRqSC9OeM(2B_8S4=4&&TD@^KK^)zJ(#7wLQ56B89nQ|CrliX^ z51-@EDzFQHrb`{w4rTbzyCI6QPfXMv^fqY-xq@;4CMVKY-T79Jn-T~6C}SX%aJC06 zx$ZU37hzaUg?y_S5!OL|A8c-%ld4YbuR#z`Y3b{g`FK5cc1!!(^JWyR-m^&6Sfb$V z)yAcdsOfqYmtj{873~-2W^1z~rR4HE!i2$`d9#FWlC;w}Q`@?=D!br$S)%-eJtyKgL}1!O-t3g3?6o$Xv^h%0`zBnJVqO ziwC>9^g$tn79#Wmv$-%;17mW@Wz%yzBjuKNA1o=2_bUZOL*{V;HnGQ5MWHrgE1~n& zYjeP%1++TY9``qDC^y(dCh}-uP}pParSbVbEKc+1ZD5lL4Xu8;Ah~@t5Zu2#=E|gX z9SNFl`B@q>g%}_I0Ypd*i|Kt&+1W2$+bwZ(VSXc(5yoGmCp9s@NZ&ww)B@R$8h!w(qkjZRtE6O zzwXZhO8wNRl4DUR*H8OXoC+lBf>L0mA>{)>7;m#?ORMRHrC(&Db4nkywv05f zhJa%h4OAy=y_cWo4ux6fskSG)unl#RcM9hjDtvDvSmo;tl3{94Sd(H4OGGm5kC*UNktJSnN8b z6yB_FUFN7n1G&hM()r{J7xAdaWP$%M8O9+Qj8IwEv(UbG3erDVn(W+;kwG~ihz1Gj z!y^>g992he@I%0n2Ex(5gdjA7n%f;*Z8g&Eq8=~--CCi7so);mO#TIP0`OGfUh>|= z8OPQzT_m#1foPiX97Btb?u4b~LDI`sAz8!OcppQ)b(?>`g|*vxUZViFW+5?&GeH!x6dIDOECqD6uQFpjHwE6vn|^& zpQ*3P|IWAy!rABwyKS@+2I5r@0O02jRau&bDw!dH;_}h!&!p9)>Q!0ivM*vunYUB>9vQNaBiEwUiJy(@PB0d z{_Y%R)M~)vuV;I%(n3ahrknvM)Y!!8-A5drdHzD*tv-ZZwU0?fzg)n(P$tjH#0^0; zGlVI|O%3k&qbw_RaM9Z#54tn zl^i6&Jh;+H`;v8rE6IroH%S3jul4g?AwRj-to3_Nr@CRsv70e9@2RXA-+v$k13M7y zJ7#vJ^9?PoJlL()`P6D`+0bwt<&c#{&Aq)jXSrjg{!U2cUip*Htz-(y{LxJa+e2%O zsjrQd!=)9tTj!E(w89;|)~b1xk`4;qY#CjPba#KGL!ArnpQjI zQ4tITsR9||HCZQ{xxQHf@Dzq znq|N-Hxj8&6(<%XUt%!924 z{0*;`J~`5ywrka@AY4)K0c6WMwqark->Pz`*ELkSZ)UCr%?*E#t>G}pPCx>hTWDzz zD)B)zH4_=-35;%$PU_a&H&+?D-ekYsn!o`|eoCBwN&2g3-3sm^OlO4BiqeStmEeZ5 z^n}Z#A&=U{8`{~4fo##BUxlK*X*QmSu$SWZtM>X0XZWY1~HtpZ4dGQ~=EO6e4yEJUmmtUt4 zA=4DcIWsfMH6PfopkyX`s@PNgGs+4vfo2B{jZJs@C~PZa^&1%!O{E2Pyd)H|3>#Ax zc{R*TU&di|p7+ik5pMB-J%Aw+e z>S1+h=W0QXRg#{L*d+$;n)uc`GV2K!9qe-7XuWp=ZFNGB4X;~j%r&a2R1_v@V7o?| zCRJtYgXaQ$n1iIVO2*ArLp_BvuDb}X%Vks>#!9XfBW-rc?AWrAA2Tu7qs?aRq3h~{ zO35EPjkf2M8X3V)bl)&GpBVX#tk2>Vlk*h%T7NkeNn&EVy1kjXIG4sbEhUNSNnOS6 zCx%^3*3SItwxP*}e8$g3Y#Ftrqj$!>MO83rCwp*MRq<})Zeyp?ckdk=DVh$VlLxZQ z*Vh!V=#BwqX5pqSh2|toboiFIL>YH|(|dv!F0N5$raS$;hP8dDZZh5Q=a4$3=u{sC z)pn`%={TKkNd3HqtL z(P@Vku-dJk$3Cr)sW#cYHKXR&kMA&KS{w^TtGKvR{XI{f!&G(YTzdRewOb1@2wmiY z8`;PgtBvfzB@|VGmf$IYZ9Tz;xLU7Jf>}DXXiZr&du*Nfh4HDyxduf_7d2E~clt?S z$G z6IvhEajDse+$4GBZH3PSuu_~xV!XRz0!;t5`XM`mkw%vL)>`f%IZBLu_(ad;2}D<+ zi%bW(JN5ze+PQD1fxG}raTQBwDQw2UwUkyM(tdg1w&V;XT&vwD^UA7`RP;)cB8k%s zp9_%~bokRMGA^?Wt#BfcZ+Hpkn0_8nKA&ci{sbS=*FMeB;vSTpm)3Oj<9DKcX;bD* zn9FT${X-lM2t$V_8_+LzNNpz1hUUr*%dKsYCj1jfGC*9iygqkDHebI!l-J%GbAZWU zbE6xYjgoEe+$lr5fMfTu13=LvJlWqXqBdbJUJ5g*9Xf3v!kOz+k^nXUgGE9g4%iUM zh3UoD)1F9jBzyfds}jKFA6>6U9l;H!S@UW4zzOq1^ABYj7w|h9Z@`*i2mDVM*`NbD z*@<#&FEK`!d`AxDl4S(?n7^h~p+V;w#4t&gUrq8ezdW7K&XELoJjApFl(CQ6Cu--r zEneJBxI!vteEKcFGGeQhHw|HLPgu+XZrAx1vad>Y^0&J6DZZt${>99rsEI2sqA&J1 zz3tJn-NHNLo~LD$wnfD&#HHEDn$SYN=R8m8>r{5!XOX?|oK~BL8y1|`HQH*}obRrd z-0Suv$ZqLi1fa0;-I-8ZzXDZdozQ7dxTi*`k;y=1h+PeBiZp{Ox0o9Tv0x46WuZib ze`vuqH^KSJd5mJ&_vL#r4&s%6Q7t>prn_iVmW70*29 zpe4JuZpC_Qp;Oyb;d#aNxilP1?8FnpQ@?Ia5)^fs+gN9@kj@ z8~}_whC+E_D33#U;4pmxv&h5)jjS$$*7$Z}&v+!;c!69aM zOZ>ncWzNu0bKCYEQyHw4+tFA{Pw|7UUH+%Q$OJEj8JebYhRql28qBVIvA9Eg7H&=F zSZyXR;MH6^JL)sZ?u8aoXR8rjcY3zh1ZhXchUrccLO4F*<3#6Eqm`}9RWR}OO46#= z{dM2pzj3l=k6A9oPt3w)3(Yr(5@{U6>aC#$=VBg=v1XE6xtczs7Z=?@pn<&6z88En z_{nR};W?nK%&^;ML4iLnLO)WUQ_-;wCA=1VE}urOMZ7GDwd`~Pb?6WXUpA+9sEQla zCT3?zzD$rz@wk&>x(mLRR*k<0K?SM>s* zZssA|Jnnp%Fp8bX%hH_pMEB&V*H`7YJIZljmL>x@?k!R{Q)xgJtL7Lp^v$dTy+f-$ zh&A^r(DP*-x4#jFD>r!3xE>|e0`c_=n)oF70{!m+WBs{FN!vCZ->(%k6(BY) zI0KTXZmW_`Ldz0pZ~K?ctAAPc<4Lyo>noh#r|63d*^d`Q&l1OK2clfiAh&Hh zx4saL|B}P`TjVE#o3*j3-RPn$$wdYLd3F=3J*6d?X^LJ0D0{bT%fQeDo1hf$>|n># zK~>0PIF*$HZn_0vuE*@9NhpXx41%SV!#)e+v%`Wx$Zbf<@=xC~%FBhSrPLw^`CSkDFPIUIs&v;Fm&Bh%P6_{#;`o8heQru#?jc!eO(jThPQ?nUH zBZ>w3XR77$^_v{vviAEdhC@8W3E`A?+{slO2K3f1=F^(EFwk|P9Bq4fDdCYY$JQS1 z+~}EmYJc?tBKFk ztlm6WIl}YLGNn==t0oyGK!!79>#BSK{$R9M0sOdc<-a2p;aAEU@8@x%o}crxgANyh zyIG=nk#WgQzjrG+c9@zB1bwrqX+qb=iMJ-2TA*Rp-rBO6=`>Q5yc&nn61Up_ORUY( z1WoC%%msWCeYnFWTdtt$H7HZkNRz*j0wMb>oFM1s#}UCj^xZjw7A4uaxpyv+JX)%&f*0bFEUA@^VxK1*_t(^iWWQ_Jw! zA(?$s@)5}&9eC_~9q;RPACPlFtpF~6bp1nx;20HeJIq^q)ct=m-pb2AoO%7WLZVF3 zZd*TyW39gKfZ#?0xy*sH-9300?$DgSM;L6_st++5AI=(e*hBoXR=mk5YLO9JC>5ajuP;GTSGHmqw~(QV&h&jaH$ya4Jm|L)>Km8%_d&~;q4?iaDcC1}g_IbW}; zg(ende)hQZ4&XD%j7Hq>UWSd>wd@?5^gELIo>nf2j@yc^8mB362!ZU|XMiE8($r;q zyT<u<*|E^-Yq5e}z8%@+`?? zH=hK!7;U;g71F6Oad}aB(rzrnb$gLu=lTC3pv_)B@Et@3SAClrU`V!-X!~-!ReD(p z4FGhG4n~Tr;M&)&9m9q5Ijn-IC%tWbP`1^}U!-zBK1YCDMqS84L-kbNkA5`0>9ByL z!xnj7C!!n5f1YVWV9zfj*uEYzo5?fDWy$}8Z9fN~v>%7_1vW4=jYb$!E+!Zpuhcw; z!l@>uru0D&Mt4sY=zp#8YOuIbZhmi5g|H4h6qYPkPy09jo(MXp7eivPYLX~jbvgSTcT3Ncdh1$(FF;KS1$7Y6+n1v^m06+FHRux2qzNi|I1org>O~UaR;&#GE?T`K6 z9wmJ2>ANhY5@9&Vmf>-QKiF^|3BLAM5%jqAxzou;$dl?DFRg8|=Ye(kP2`4uXXO%K zZ3F-MBx9B?V$GJW=mlI8Ioy4{8>rhtE^xm#izw>N&&E6$d%Bj_9wz-SGrda7{-nTr zWC{M?TeCU;)h2|m+pq(&w7nSo_wR4l1tRJ%%Sp^4^0Fv8?XUdL2d^26aI*d%R(L_s zTic;4AG3^F396Sg9hZ#Xf5|R&_ZTu1L8X__Lj;tPP=zFr0QsGu z&%E=@>oe>9>s#wv>+!#=s5$q!_rCVEue0|)*S`5qmyqf=u(-|bAa}|67e~`eUHbls zVeUfW=;n{_lF$?KH0PB)(=9vt=9^>B#%F$W3NcnGJ|5}cr9@L^g_LzPs^b$a;Myn{ zLIS?GU9Vr*?0I0Se&Ba-#JFRPqJux*Qmxp&<8rt_BJ4||ZQ*3I>9xH@-5%-R^9_yl z>)!{|HQegF+;;O$r&inZJE>__NB6^zxJD$H779f;>R4*hy^O)m{`%jZWS&Ke$}Rn( zS_S;Oyayi+p3A0)4=NSz5eKoG3wzF)z4hi>CdpupC{oHFI#dv%qa%(vD+V5#I8;Ob zj~T4RQF{;}leO`^y+X8g(XmsbP3%r;+;+`@Z`4Xe;_rV8|KD%2|GNha|Go!D;7+S! z_PsBTjVb`sinjgk5eCrxd%nWJnPhW&X*n{ESFmQxOH0niBu;hB_(SqxzB{reviCXz z?T5CwB9P1V>TfqbdQ5ec(vEw*-69poR;V#XJ`QJBR+{i5@V~-k+m8lo6PMAZBf*4) zsYPE&R{iZMefu^q^)7etyYBtp8?xZXzh$`vbsNp@0Vf&bLtzV;pD#S1n9oJnhFOD#?V^7t=6j}Mj7@M4ue9id2B9`~vtVn`wSa3LT#=0I zikBvW$E}ZGcq+TWeahK#qru~MnyD%)J2syqJn)>YFpbtU+u=Xk6%g0zk zR>Jjf;C7-V(WcwF{ZOz(!yoQUNt@op#qFi)+8Ym1%mNf^ZY2j#Q|em2?VYCHlGX7j z!LCeM^#uW}a5nE!IeFixOWo>pM`c6A)bFAtA2P8R2ea{wdVZ<BU(|2k~aphza!4HD} zoZ{k4uZ}*N`yD<^guco620jZBm}U1;7zayMFv;oUNDz@&+q`+5FTwqwF>)v;j`nJU zXOgxWf6;aReQ`;ViBxtVHG}-PcJ^)j(m*DM`j(1Sz>K*4rx(ZGQAVE1BNm=>*-$L! zu~ndbwQ^d;hs3EbX1Mp4gFk@D8 zJe+{7FpkdE5i+Tj4Y5kZs!C9#sKaXj<_YyQ6TG{(OeY_#wDf0Yuz?w2{VT7<_0@;W2MEK)MoY>MR z=ROSR&@kH^sO*UynX=Ri9Fodb%G}!q{pgoqKOg)~t*^>2)9l>Q2{6K;9 z*eIIT4r5~dKmzM@)%nxVu;;VK92at!pJH8-rUJVRP|_$h1xYxshB`|?zrGP zmn)S$HW{EQxj;jI;M4D*d;Q5@|N5vDngbU`0AXzmW?u=v`S!~$^k43ZMJ}eqbamit zf{IQYop6eSRiqwV>j_Z5u!PKZxF)+ijM;~wLrwbqj|=NiI#ftIXJo~Ic}o%~k@Wj` zp3(c3?8^Af#htO=nT)w2-|-t@?eMeaY=AmFy7oP!!%NZ*80QSV!1wFaMjGb`s0JQ_ z?}cVvNnkjgCry%if$jbhA~R0mo&FOFi$XMH-47M)qR-9x-`b<_n-YK>`MXdB?%%FkinXofd*nGAh6km2zo|-( z1yVu3>Oo+ud@^Dav`>o^HK`|x4`$rVt=)^3oF8+jQK}l33)R)Rv|`OAi!6`2X%NAc z2bRHPTpQh!#@5FV7%PkH;tCM@jBq|kjR^^~B!(UQ?K`J3ww7lp(DJ=Pw+-*O+$8pn zjl~q$1-fg6IsXoVL zh_4}&F_o43rw|y0u4*}S=DFtmdvG~7=*d#_BUnjSr>aGFt3rMpDjt+JJ_TH0^W zEUWZ=n3^|d23$8D53v`@N|lW%pbHq`Qg;H|v1F$e9>&`0fRv;&E!t60p=7G(j!+hi zhcrohQQRoqABLA5#+`_aIYmaCf^7@us&WNr$g+tA43-P+iUk2){s}4mow61*EFU+B z;k^vc&2|^wqiPJjR={nshOC<1A&VcxHpxxeS&?p*x~0R_tTxC){(0aD3p|&=GzIG{ zTbGU2)ma?PJeBrE9L>TQ_53~Q8HN2+D$3Dvh+kbX$jb_MdwrD4HfdHn*1VM4_QXES zh$1m@eC6ZhS_WB-m7qT=Q{=5bF^4CFq%0l3^3Em0SJM<{=%xX+-vrROxz+#4Ro5{) z&}JXzAaq(d-(>~#wglJy89Ihh`{9PFZ+NSjO!hD*)f`|t^4Y6iKCcGxBX|^TO31zv zQPYF>@Skw%5j#NXU2Lyt;P;=DCiDk_=1?wvt%0%FXZ$vN9#*5s$} zHk;WC+Vo1$pde~qb@O;liY*41mzjf z{_^2+Z683r6ijzqm^+oup2Lj)2eIV81=v;o-)wF}n55E&xrc&)Q#Tj*#NUuj^D2jI zf*_>>Emxjz8>s0f6+N}KSPA+xCC19#?w+Bm?3l&KF21xr=VJTbz260)>TV^~cyT{m zJUl9*qqIRH$oWKg1>Mp6q~w@x4^*#T0%YrIUBEO`+6nYZ!(8Ll+K~;O47NhA$`*-t zxQ5v|F6+dDfw;_dufn`ay3sDyulECB+H?vwXSFikefr3Vz-G>-p? zG=C*sl?v3iN1{JX>Xg1csTE_5R+}tx>bkqJmj4*c2rWLb8r{^E5r9)37vj8<&Y|}8 zwj1OGPjQc zFu8nOKf3I5Wlt^B**JyS$DVN{IwN?OIxQy`c0Uig;_D(&0L!or^ENEXY* z8|i16;60T>`n9I|+Gz$XBus0WYw^>J3!&829OxR^4>ywWb(h)2CFob*-7Omhd|mvN ztbJE1poJik*jfYu6M8x8*goV(tBx$S?1Vx!suA5~hOC!kQ_3{!0Q1$EDW@(r%m}$q z-#Fa8gk1;Y%_V1@7aIdM7o$rnx7H;aWX4@=rd@((5cLmxQY}NF0aC*za$}xFi=)Ey zrDnr__%@`UWn9x&AwK`PH6@bUac*#+N2$~%Xfh({k^08_nTm$v zdTNN|=pHaG;Y!7p@wSaaz{Ez7?TCXmcEkEs%o&^+?mqHRa!qcz9(`=@?Gr!T*~$^0 zB-Iwf_KZ_ZZ2aci02)v_8FGRTHlE5|c>|cImg8{RPZEub@YSs(n#jgfQ634H*2Lq5@NL1Qo#IhEjRQg4{3xNR!pjr z?&+G`DHqBVQR>O7?)ze9%|%jOE%SWa_hKri#eB}{=p>Amx>HO4kkl>-5Hrh2T$!kwh=?` zQ&Ni0``?EYKjpXZ@QoG)1Y$)1_H{Jr>JvYDN~+YN#Vinbr$*nUiq%G$Fv=)O^2abazp8xvm_p=1{R*q@5#o1tPY1X$xabPR#UONEmjOCB$Y~!MEn)dkDUO zb@A?OzwWp})hf4y1h@NbFRn{;4oN-%A-b~Bg|*4X{|of0&_vZT$XP`8SH`TYP8^Yp z(!8QI=%MvI<@Pp~&!ZdpX}VtxUAF=6-;Ut2%~UNiWPO^~^L92eZH_SAQ379C8#%6@ zKzd?N*iih9{xH4fKgC5D=Fc&CPQC!Tjs#$RLrLu3jXQDENY7%}r&l;9Sw_D7#eGou$y;zmr&;q+ zX}*lRU)^#kGy0h+n9d&Q9@Ooz99;GgEvZl@yJ1d^*;y96nV27fT9+rMoxJb63ILo{0nT%H**9ZzVq^ea?IjV&64#aV_RP)7i*p&|%7D#|Ba#sy$4bEW zpy&IGz0l$8JtP!)H|mBg-8fALF8Gf@isLlrtDHmVxh#bOniNISN{`W@SxNLq(Ci=3 zo_W_@xQ zK^TXMmBn$SbDnJ9pxgLMyiEu(hGNCJ9}bis@B34^=me7Y2Hj-iT{3wrm`XDcODs~! zyvXrJ(k!mhMY~cksA4lnzNG&1*P_Y>X2AzyA*Zmd8KeTgjh<8 zY--VRl3l;#*E-U_ZbKO-nCr&;gLNT;z81RNXhN+^)YZv^;uk7!tV`LAD&TB1pivoQ zv6%KSyHom%wwoiT39A-Ika;x|Uir7I9bZ6wn2hB?6kdIwqyLhWkpyyc zqXX9++cAEn2c_)$+oqbMB{}HGvS{8nXS*w!PF;_VX7GUM29rQK@Df9xjJ5<2=#QFm z|F3NW6{&4Ie7HI9Qd9!4tSUraQYIO2p~_U=y%=BlW1Fh!%d>Re*UFt&+{Iz;a`Qf2 zds+v{Nu72O;BOki>nk*|F5Pq$Syn;W#uExVb4bCLkA5rUPKHd(>~N?brl$z_*F4Cb zDq|{`MU0s{sjUGW93i&E$m22(dh+FhF&=bmY4!?Q%32!dp(hBz0NzI@Wy=W*AoCPM z@H8$zzDq`N+^H^K$G?{%IQ2Xk;!!O(=2L#1hrP}BZW$g!q`Q`>w0hJjA5XV9Lg)hz zQ=_y08K;-J``J^#H9R-mcDa&lOj6_QKXTi67Q0CT7xp0%bL$7XRcg8Qkx!R>|9CZu zyejpCvPV!*+i*ffL+aT$)k5PS0I!(2{xEk|gT~$2^v?9qMl+CTgU_UHCEDws4~*BD z<%~S_PviGLe75Z-t31x%Ob$2yRDD}`5m4lH*00?ieeGGlFKv<116tOEdc>e^OPC60 zh3)y{%>anfG40C*Qj4j})|DVvOv2BRQP#dKUAYwLo~;MqQKh!W>)Pq6p}YGY`|rN- zFR@^cSpe2HO;77E*{{yFL}dlruqV|J< z2r0s0yI@97B1Rpcq9<;CjL%CLb9J5Ny4w0gbT0VRh*C>pGFEmE(d&etb4o z@r)%JNLVdE;X4D83FN$2`BLm?rYxQ9^`KVoxplG0V-qo$4W5f{=F`V-qp`6_XXyHI z*p=vd`?Kv4)!H#dQ7SWIMgLU{iRix-=thUEn}TV0g~af z6*VStYN?{ixF{#Oh}#pgn9NI4V?K57&i%!w`4u}J0-;|EF9tS$rYkb`gLT*K->>!& z?-DFphS`)?8UxarhPa1xaj%@|h=FOOw2faS4^?^DwCRr(RB3OkpTG$riv9^z%|ahc z<=(Pe0SxLwSG$G-tIg1?B=T#6!}j2SO9a8|ZSJAhHupbpnllhvje0ID`Sy4Vh;_9S zeYSto&bkm1XKhhR`+~3s9!u~5De0N*nT&f;T_X?tzG@9T+j7)bs8-ALe+a4iFgrd( zUi=v5zNj|dXW+g8loch;C(rjyf(zSFhph90s?Y7R$)z`3t?7B2erdgU6%0Re4#KoD ztc}iD-{z>I`;2EJiX21^kBcsWFGzb#)3Vwql|877MJZXpI(^*Y=4g}~rUTdL#Cg8> zhb)sHQjgU$FSwheO8S6zFzYz3uc-PKNCL#=LYGb@b<6P!{%Qc20K+Wkd1v5=XmMYh zc(8jl>7?e!M!oz*Fep0#l1Z_eIv6SEsYYzi&k|osVKR37BZDZ7()^tXW#Wn|Bf9m7|l8ryiLPmfuktIaCysi=LkO zxUnTGWz35#lN-w4hXKPkejb;;5uUts(0C?~d`9*Pwpo->_WWGusjK}a<7O6Rz_vMrncwDs#=ux3V^nvgC8P@wkIgRH!|F<6 zAw3}~2;B@o_sq@;Mds30H>7jtyi_2B;*x)&X3CZU+n--wnd|9JPUxx@@@I_6Fc`3# zJ|ejz?pd)_V-AzKvpMhS83Ga{9)ZlA`^Wz9Eb74f2z9Z>sZf5szZ{X&B3jzWlesyQ z6|MIg#9h-7IVLg5`svh$&H8~<*9nTz4XAXFicnGE(+t;{fHgWppo`*bL5oUhL(tq! z)Tw)|H1>gIleG5odzsj<8&p2qj-M-+5^y|%m%EaEQ=18#hY9(@$RO?8zeMeDv} zDRUzLagr5$KGh;<3!Ga#rk{F=mAC#xPcRvDMgLbFK!d(U z^($X@aFyM`y&kx*mFF9KC0f0~e-c!J0R8lgMJJ?G8|4eXyO*r4S_7S*uD||SIAH(< zXH*Rvw1#}reBar>oV2lkzx6-$33#}mfpvum_(7=to_^aH|Gyss9KWE=9vkIsd@FmB zLH@5b{Y9pvujenT{qHwne?2+>|7>?K(ym>aQ%TZhqKkD8vOF96id#ZX2%v+%tZraL zoqX3Thy774;arGY^U8Jxa<>zqA4 z2VAG?cBfVXBm|vpEAFYjY3Mo+YhhEjgk;KPzKk-Uts{r#1S)jeAC-f}RsAp#pdZVA zy1Uw~emI}MF3^7V;e+`~Q7dTw#6?$2hfnJXmZtC9=Dtvj%sMg$Y&2veWd?}r>)ULi z&eUPQU$PshawviH=L_qK-I;ay4Od$W~{AY6mmNN$k=!^T$i5v&xD- zSwlVI^z5t5?oXfnix;>Da3LSJ{c*>!ca0`seZGjm!hg6RGqg3XS<?nI27l}33yDegf=+mdeTz24jMBf6bt4b^Ul%k zV{X{v_yaKnGOp0f6gU3_J6wRCTamO?Ot11LR8FD;>hG?VtBY-IHw}?vLHc?zR(<$# z*`9!R7UHS9W-o2m zE2XSki4lmtATdsL<0BRIc&k=>!-BEDF+Ov7GZVwaE^xws6do|umQsWvk2;PImCHu4 z77w>Am-t9T+6n2p3b%#8mf`P4g2-ZA=VKw%^`TY+w{1(SppWiT$tVlug0|Qa6qSSB zNQf-j+7J+evXa_Me0rfj-ey@?r5f?>mrz0L^Amn!6J=kTSqkI=r`kB9U9kSMNV{Gp&azvL0teBS+ z6vmX+4^8wgP-ZOgLA6d}FGF4hbbNBajg6#472DXV2XBV0PSGwmmGj~A_^Kjrj!VNV zvZir4Z zr06!`x6C7VhU|SA;V@=amYMbqNfp075#o-JzUyJWlHs4|__8>W5+OkiX2v?us zYOnIYr|MiPi+9{JwCEoy$4e!^Jd7zY!vo*UnUxn6Lj6iS?F12Hy2VFu)Toqt&l8>| zpS8Pl7h7256r_DtoAtuwRH^6Ymc9dSMVyW;yIigOm;CIw)q*vmi0&V`3ZZ5Y;BPVKakYVMfS)PMrF8|S^6nMI)ccZY|S-X20O(1qQps6CQwq0bV)A1npI4|PYwh{ zAbZSZJ*z@=V4nSt6YtJ86-9~5FY{5@F9gKKI9wx24wrJ%ae2hY_uHcWJXrs?Q@!Y` z#|$7m3I&G}v_g@&vSF08tkPS81Z?QtzUv$0q*{ND7`-uaJMjg+lhKTW@202l<+L?2 z_ou}H^-w+S{csmSN{**>mt5KgqSPA*xIR|2pPyS4JuOj~Vt$9Fo59b1fpf(sEfALw zbV2FCYcteg(vz&B8vl{9Z63qLpZQt}*IfSbCDK>8(Hw)&?6Y_Rj`FluQe|tU7ZQYa zv$?%l3)*n{quyS1>(9gIBGo*Uegfq|uQI1vsEH7x#S#lkoGCaxIASV1YlDPr1!9#5 ztcN6VZ!dEzdDPF%+yzdx1PDN{C{b)5ZOvX_h-aD4>N)SGK zLRB{5hboSDPhE<1-+*^PN@zfvYh#OK$yXoxth@vtE7))?~aK1}EY%4&1H zTC`>%fd&l#d;%LwnrT?Z@^S^3FkV%Mxnp_>iO4!oi@P1jfAR~X(aie*1Z=SR+99i{3`7#5SoWG zDlDW9G!!ZpKnir8{XXt*u_aX!*OoeJ^b8XDlRQ1z_5jtj)L#ZxfK*;?Am zjaqIrEwikR@Yl1%@gzy80Tx04!^=Y7y63+B$Nem?+Yjfksk))yh7*iZx30Xk`A$lm zHK5x<_W5lWjlvp4n7iME{_ut7%!SDq5F4kr=dg%<-Ax{B#mu1ghOJ;31uI=G)ebzl zG6D!fD(u6@cblj=gvDbU56!+D((SX0swguUw$*2+k{m~2=Qj3pi;-1V|Eiq}G*MJr z){2q~=CvtZy!lVByl*rN-&(#Cz5Hek=La;d;&JtDKdKGUz$u5j^(KLSa#qN#fpr|8 zBzET%D$oFrne1_md!;XE|E=W&%mCmjuW4Pu)5qT_b#*VfQl^6a(b=1aObE(K&O0lj7JnZ-yTpHa?$wZicd{@>a#}4 zspagwwMS_nR{V~5s>Ex6b&hWwoy^+tAEo1ZgzkBA(J2dab3N&!x~Aa&GK13P663oTum=(c|5cv;Z&@(1NLvzg zH~QANkj^2n3LgH+a`M4E;J~pV)Urg`srt2={{`4~MM89JHX$Z0lzAu?xahU2lj%Fa zBO}iS*ybF{ksI1@=Q-t-K1vZVWc|Hut!6*mQh&)(McH30Cc|i8t_z^sr?k1ux}La} z&xgPCE+z8yu=RP-&@TB7pXB|$V`QbmEcoL1?QH9vfIuC=XC~Gdx4F(&D=DZI%l%^M z_+D|RSn?0`Kxs%|gkWu+EX!`p0g-*3A$ZcD9WVB8uaeQm-&Y(x|wA zZ=_A}NA!n?EJl@NSR1&)ni%F8*|IRe{*%;6q;7FMfojrDhDTKNmGry zF`$|Q_A}0EV(pW6PMa6J$7-DSSJ-R=XEZKfpI{V7TaVo|MEOt5?@nQZ5=Gl+_jaCL zog1oMu~OS!U;fe@1*om9v=d6D>IkrK>W^5F$PpaS1iDr1hz_vD^AzB75vnzir5C9U zQ!Ygjp*_pyEU|6Ng-aOvVepsdD^ay8w;Km)Mhd*k8|f)Wx4pW^<$NES!q7?@$`%EU zSp9NEwdFc>x30h~IBo&pVcvvhA))0Vk=;}6(^eK)cqHW~`{6>J$HZZ`gzidL z*h&ztqwQpMZlZ;V7;2+`uhgFb6aT-&oc(alT4&t73)QOS=ZEqL9u60(%NtLc>Jl2l zbCb-^KNnEVyQ3(_ISObi!}VV^jdK%ByYVOUIL$1CtEx6Qa@wCCPV9(GPpgeNERRXPNt!wOejNvrl`LL4SY0dXeRA3&uR=#7uNgBQ=69 ze-%M=Sf9$3s8W(=F0V|&DjG^oB5RhBxP7CQj(24d*4&Zo{3mNh?iEG2H@7|=^;LGv zICi#K0=ZmcP>fujU)*b~;!pU|4ppC?8ceOZ40mJ3Xqg-?Yzv#?^(g)=CjX>NHYGl5 z`^}-lbS*56P`tatd}jsZt7j`32H`~|ys>JtBmJOEazYramx+xx9Ytp1^GwEwv+_Zz zd`OEWC&RNBz)Jc*e;CcQJ{PjP@eix0a>l9r%B#y${p;-=sxM)>$43kiJuR@%Xc(l4 zX)Kznj_$`7(G(WT=WM2u9pjFuZ(T11`phFHYgp%OBJrVc?a`R4{G z%zwHv%NK(6Y0tRf!LC02zHIuLs5A7)KsRzR^=*rx{en~C2Yf?n7`|Om%4arQH#L(EX>KhJi59Q@h#&ikT7i{r z#IB7>-K;-dgY}{=syd9wAqWNKGi^>ddrLr0k7)~-Y$MPyS2&bkSGj=N!#E{M^3T0* zPsgg@llyJY>LDlBpq)cG_(!m-60vTos)#r!a5Tv*N=zj#5{jG_Q-a%p7Ns8}y)hC?uHI>vl)>iFPT9s$G2yUT8 z*EJNhEoUQF8eL8XTe-A8DVB2=)fl6jei4tfzo)6XzbDmNeS9p`=ePkRjn1VQR;_>d zh`#ShUwU1&8}f(VSR2pSxasCpMdPPIX?Ia^#SMk&_c=Nb8(Y}bFNvYIznViV_w^?x z?wVUyjk(j*gUDNg!_c`0yT3WzczuoGmqWkXFFW%H&A$hz-Vo|h@=D{3(&&Zj+MFt164NO|+nyBXn zugeeRYT_hA!TEcKnS-N#rjp}wBX!x%Gmm&=NsqN4Qw2K4bR%f`{cn!tvY1(Kd9LrZ zZyM!azjf3yFa!wDR=&x{Ae4+8GZ4Sj_ea6zj`as#@qAq+?HQF7+|gt2q!{eK>J+-n0`GoaPZr8n z+4Y%Mr{eDB{Vk%+Vs(mhPe`KEl z?rD5}=N}Il9UUvcsliu~+aJMw?BPBE@O_L-$xF)qso;9M)TZ!`N4tJnF}#rOOl5C5 z&xx1i{hlQ^K*vSe_pZ>e%vIal;!el&J6UZc_HHuBR^Cv~qXoGLuhaJ0w84rQp7HO) z{OlX3qjJ$gRqRxJY@61cyLjl$!A<<;Cbph1%$4h{CGA2rzZiUw%Z5{P z>+9cHz4aT7RfJM*c9VNm$rFwM-v-6&y>v|EIRq6`D;%!+UOaCJ7vMvDdNAE8EFHYL zYM1W4IKu0@+x%`&#Uxu?v_owo^{Jo%7U_*X8;??A+>`m$pN>{nf!gJ1BB^Uh9B~t!EIGdsuI<^*NXB_ zie$rC3R%==Uze0f9HMn)N(*rhC!Dzwd4M`2S{(+zoX02U#X|n_S=h+NM&LP_?UX|A z;z+${a;Zp_QJ&0!8Q&>pV@_UDQTMF-Q1NKFY!I&jCbcEfdj&UqVQpS!oAXT|zYa1+!v@%&{j0 z$O%QmUDM}u9<7ajWrT0_4(#Ce76|IKoRHjsHCbAv0HyDK@l zZM5(AgflQ)@IPQ2-TQLQKFrv{xjh_CF^B9b^zrUCu;eY@MzG zQ!@Q|&SqP@G3{iz@@BN(Dpd8L!H$pKtLDO6mX;R#FcHxwnH^7=2*<=O6@}s7T#xS> z_2qgrgY?^ir(Ap`$DI|O=Qhy!Mbs?3IxWreQMtA7Y#6*G0d3j{?sJhC`R2qLX4_n* zIx#jUPSVaf?5!;@oQfKt!Kwx~L%&ZMWng$08|HqDpm$AHI9+5{A^*jcaUqXI4jfF z$wtqM!M>>d3o{wQnonn2e9n7LOH@RiV@;&UXgTg|buXK&tx;4Ol}-f+t+(V^AJmAS zJ)xsvGSvsbudPklr6)ta`nXW)+KfJ0 zqBU@>Kf%sY^d4)W(w8q^X6d1%+PDz9IFf4TX?yxxLkGjN3|g~$;hArr-V1$SF$04E z_W@&_){O@56!DH3dy}1FIpWq#e1U~~C~KZl$cT&)gA6uZ+NC=MnEZJq|LtErJ=GZD zmNj0{F;LQyx}AtfWO4!mQBDFE-KBng_RNkyi}bex&h~#P(xiR;BKin= zsj#q6N=PsAVK0;*KhijP>E7q}cH;}1`!J)vv&ne8A|IJ7PJW%Pu$Cq}9UjlHjTJsvu2W7Tf6+u0d zc7pwDjPUB}870|1USOs zk<0`q9gKC4Z5?+p;grJN_nm3-I8#UH&?H)ddw8<(yxeT-hx;%5h8dAYFmP*24AD(B z6y4uf{j3{-$l!kN)3~$b%{=F~G2hpu5cM5|=h=3T6y-*K`*b?%JD&hfYkw5btC=FS zQ)2gK;wTDlIoqU)&8fGzvQ31I*+|T+Uro@+In&tqLYJXxkP-g+bV2AMxM!s1O#j%^ z;}8=QG`hS{__h!iBNOW(c_#IIJ0q;;c1Br8uU z-mH4al?KN^nnH5pbu^$OW%f-zY`{jj=Z=2s8fQQ?(WBV+PoIx}gBM_s7g+bhuQngN zx>M$+59L%c3H5t>q=+)}H73k`cR#!$_}#Nln&=6Cl^%*`wAxLrgmpTAk4izqz0 z_;JX@`O_Z{o9X}`l)K1>jS7!qPYYVE7n02@F78ZM4N#MF9_!kZbtHLfo$J8(O`)VP_q5s!aP7{)|J$1O6Qb|J<4-7c zRqec4+qwjT0pIP;{AzM(^udFbhr=lQFjgllHHan19?c>iZibAPz?%D~WMU=1@h;_2qq@X4(K>dSBYY`e@&Zl6J@p2RcpYzs3p zZ+1aN-o<=h(!>L4@7-;1&g*S(5eg7ycJpa`Q;pMH33Df%>Zc7@boJGYk2T+2Z3>SHKU$O%2Ju^5ooWe}TDWuE0Hd}vS}7@~XFo6> zBJ@3KG5q5ye-T!J%Y|C$pNr6wj<5qecjNocbvIv)4wvdKvo|R(k6~=gG1|+k@Ti;<}}^3+5?Uz52}lc z#YVK|(kn(rKyb-tt2qAw)Ct*5y|&9rO|$gOA`w2lYH@~IA`6R(qD@}$%XucF61(xh zwZD%{w_f{?5zYM}h=ak8jrdJ8yPPa{H%kiRF2b**`*zx#-yToNdU@Sl9%k zlk+Xeb|jE|KE7nC^rk(u%evDiPj0SS7zl5?VB(8K2B1@9gKBsb?%I{{?*;cT&rLvg zdB27Fu;71r1_MKcrbe~K>wN}m)F8`}@eXKkfGqIwhmDQD>oUj~X%Lr@D{@~rIpt0l zx)*q?*mCg|^}a!87PuGwDq6tKD>Guc^SpaFaChPY-;E5Z7SENRU*Zcs&b>HuLiJC%szXB7>&I3rS*f6+%#xyx4cLqv3vXW4+QP&`2EWNDWkW)H=r zQY&d-WV#U=Nn+L~H}c2Pm2(m!y=CaG3ntI4`z9Q&{GpV@%q~zdWf+S1MO3-OR>qYt zcRhP&8P1D1r5M;LcDt->CYXa|=v#)jO3zXL(@XpJr?_fzYX{07!LdWULx*e6pG-~> z=adjdrpz-iDoOC7?_9SudBRu!qB@@mI39QEjnD5s;Gqo}DU(VbPZ%3}+N9LIc3h}y zq+GUqjpZd}rr-SS{p)3_wooYaVyP&6*230SusA`_$tl;o>b_6gdcHw%+t#-$WEg_~ zfp5HMWC>HM_mUi5!D3j(3sTmcJs>w`nt>_%FSE>E z#lpzg+4=IBCY1=~BymfxNVX!DS-&KBgkAwcmY~!<91*=HlH<~yPVhh23(TRsnzTIb z-GapJl4`@t-Hme1Y4>48X0<6mZ#l3Yf8j2^hs>`W(!89%Y!n(&Q?;T5ZXYEdB;+5F z`X)SW{zGDO8pg>0y@$0anbFbI>A2xLyI6lBf@epnv1C7drd|ID;2WOQ)N1G6?4~9Q zL*)QfJJED4;p}?*ne);fBu_pT;@oCiEWbyI70Q{e^qAIGj{_BB(!U3=cDg-VBmDzB zsSPQYoNfTQg=JNQp}}WhwwMHS@+e|UpvXZxZ3lg4Hi&CFZ?a~XeD6%wkJkdTn_>Pi&T(zhR4 z_$Oa$GYeo+zp75%L5UA9eNp;0yo*6&_doxee`P|?(*JYR{^lMG+3)|egZ%&eze&Bt zS|DLjJ|t#at?0TE%j27rf{l_)J51Eo%#wZsA4_l8E>5Yv1MMB==kq^RzD@F+FjJFp zWemHO>oV2+#p4mFpe-f(CN&S`{J!irP22P21U4y0<=yo4ao7?cIr%q7_i%q8g9QCs zcJNK?WC;6tj?R3a$!4btKiR?usY|bfu5oB0jf|Af&1@H>teYk4@8Z!Z(egG&DCsEe z(lIGQjQ}g9VJ5~BUA0XrF*X@acCn?s8f{#;*_#hj@m<}QxXNSJT)o6qpP zl>P98vs!8L>XeuVyUMmB_y-}Ozjwq;=_?_WT1{Lm>k5|Hr7#+Mzye!Fs-Hda}nfAWnJ_{Rn#!Pj&g&xzYOiH@OGXXAciGy)sg-mPvQ zuH_-W!aglyZcDnjdPQm6C~BI6I9Kt&8fF01pm?Ul;G7bg5qdw?c99A zCvM{@{a2SVvf6Day{0B6$o=r?xFlG6$>`cyEl#<48Lw&MAc+BMx^E-`=Wp}rDgFN#k)cH0Pne|j$+l#G`XEAvi9u0T>%5?%%iTnmsjL;};is_! z5ONJ&-}sztVfnyf+=nxV&qd;re&g4tJW9bYcU10-TwA9gY)3+$pQdn}z3>UXgij%q zrg>vwa`VZ4wuD_0wPJyp;k4~Pd6iVQNKl+V)9>tAA-~M)a2aH%1r)Mbs}k{K$f1rE zv-tszJH)|oef071wnVHDgxnKn7BtxsBdxBm}A!oFpelAYlNjNB*<2W z%e6BSDM-q?e{ueJ1~XCecH{YZ!jT63Y8Y3T&evv3+c7DO>~SLqmhBa1xZiN4@qV~! zy-T|FEC3*-8a(`%Ps`MvB~qUf;I8rBMxFh0P&kV@5rVQds$j_^Zj+$QbT{ zqN+SJzqSc$ya-RD4R>-W7~*W)O_2f-h} zYZe+q4J8IQ+nCWTlsi^fV`_Ro_rY^HFqSlR-*sl59^8Ux&uED1%0~Kg(!%Y*q~%Qf z!rsooZ?rBeG)$K!#bzQT?pyY)O@z?a(efPH%?18Qv&`zy**Zeta#PacR{#A_RKe&G z%SCm)i=LlHvP+Q-RL^;lurU)La&KM!H&OAsN1srnt7=BY`%D0!j=Uw03U*GlW=H=S>W6av7LhxM^Ro7ln)z9sGLF z_krqfer->Ng-?Z1U72T-7~!4p-J2NZ98G!Jc7R!fM$VWv9lxUY|8cf`Fjaauv(}fB zd%%Uq%FvC`o-!IyKPJC?orsh@QHGg2mg5zrjgbRL$LB0jdg_>`Jl9wNgu1m7d~8Fp z#385TdX;M0(bUUNl(bpg3Cd~4{0bR{vd}!AS#Z-}NnfTUTK(xVVeILNomQto>s0{8h5<9rp5|<=;&6XvUXsy>Q#wiB2_nqk@|HbRwUPJ$!n|T(&Aj@}Y&eQddUpIq)vo_O zhW97`38$Hj&k4UsIRQk_fsc`S95K)KUt_uA^!n59>XP{Bm|@R9gp5p7mpZ!0p*V(ly_XIe^X2u_QqQs+qU>OgvB|(I z78#=?@qFhm#BVC_Jb?&tE5(t_K&&K+kk*Kvsl*%Cr@lU-b5R#2GO_$KT zx$_|w<$=Cq@VC?ZZBv^2@=N`hJm(}K(bYl`y{}KaH+mr!Xw^_!r5oz`vN;;AaVmp6 z$wBL0RQ1QO{y+BKJRIuw{U45!ZbHSRtgXsOk`S_%L}Z(>FG;AeRkkcMw4fBa6WRA= z<~??1?1T_m5@VUMm2AV<4Q9;vy>-|9`F_6N`}=u*e?G@^Jn!T1PY%so*ZaKA^Ywb2 z%Y^~Bn_mIW2vx6+j1|5w2_kzHG zzliY|^jEwKNUby&e3#cZgH4+j=>-M9)84Kn6;7+R@Fp0pHS@x4F%DL8;yvZ0lXbTB zUTayLv0TOzd4QQ2^zp(cua0Vq&d!MwV?H!^GV)kW2MeNMjg{5IBIp#d}>F11Ko*U z=cX6(r%TctI=okYd``)%O#oixc^u;UvvOR!*nYd>Je@)5>%Aq-`M%(#a$qS#BC^Kr z*;ghrtkd6vWMZu1`S=T%n)(kWP{amZfg2VYj&F_KF;ZLGXv&!z(6#%rgBxbcP{Lod~{+X^`SBaS~}LHFU5j66(AU5lQe z@5Sn*WaZms=j}_#R|SXSE=mZ75xO`Y-+xUUxtes9a+eOnU9^@p3?^R^6aP3< zy}9J>^5CKc#sIXvvIV6CqI^d`6L^&4e3RcOsV4O_yxVZfVnqZ+t$`)5=AiCbOx>`% z<>Lk`GJ-pM>0|WPhuS0jTT;gH2VKDePPTn;xQT}-@>@&=^M|FkYZ(_@nYwPR{xvk2 z=|(ey_Klj7j?RX!z&iQNECVV_rj+8Q^w1k60c!Xsh*_GbZ5_R-`YuE zWi-aqyX^dtO11BqX5F<~1qEkgMT9eOt3$qI!VeCNANPG5IY{OjQisO9{@h>g>@n;% zxwf|Vp~z~|qZZHQuQC{qbYOU9-dV7CA$@c-AIdiCn>!U!``OQ=%9rB?Jvs;OOHj7= zOrf=aZ1(@bGW-nHvd>rZ3y2UsZM2{E9!p8s+dKx01S%?escpYzJE zTlrS-tinIi28X2gz+_;bbQzp61%J@eNf5X$jLmdyMgUWsTII9_{CU3g9KbzYkhcjW zqn#7;5vfm0;|pdd*Jn`h6j3*iZnW^>pG{ry{kBh(w*{cjvk&A<0yM;> z%)G*)hCZfmFEO%iHOPVe`EC|UjI1mp1&z*({Cg#)*k(c{R0D3fGYQagfoCm zZteTg&6jZoqwf%+ASjgvjM zs@ia`@H|hYFTcai$r$%b$!s56TlFzwcMuUPH_&U|l46x1;{VFK| z+8k&gzCa@ixCL}os*Y|=%NI#Ussw)SBp{XTzEb=(SCjfS-%D2MXDd5ZaoZFk!)5rJ ziEBv)2VhTbTAK#i*gojm`!a;uWPP%`B8-Y57Z6jBjL`b{!Bwp?|9RTYqOi}j(f#vu ztSWoP3PMaS6IyLky@V({ziZdOWy*f$F2K~!pDR1+Y|~)_3YV$qb_7@JDYhFcM-AYy zI8Rbdk$EQAWKNDA=j0Xl=1oDG4%AF-X|kNiLt7m4gfdbd-NPETt+S>XNo6-=Q)|J;>;E1PX+ioD^4EVu2GK!)>o z;#!UIF&IVr_#L>F9JFCgO@3yG9%<%5ZwF(Ka6oIlNwwld(|VjDA!w%Adv2 zDzN@lNi_mjHLlN5cYTNF%#}Oj2^za94||JY`&DnJsCH8vB*aqzAkD9qD}Q?bS7>4G zhkKr{Sw}e@>>#=#jtUjFGhSD;LC2Hi&X{)gx5-$?1NzRljNlWs-;-H@dCK|>)ARUU zw!RFcHJbq#;z`Jf;gr3Q6wP%!_8mE}Af`08tP7#4#=R@(cYf?=ex2hNdeiLONtUhl zgJ4a+MM?!S4#<1Ur&d0kk|vFS&XU3vp%O}00i`(=qJxaDh9 zDBm0SUrg*W2%1RJsAC%xeI^k%8@B>v~+%KG6 zoYDGf1iuPrgQ0c!Dvie4Mfqi2JKv5Sd3*N9L_@;)Q~;NPqVxncRFI`$YHNM`w(Q6V zz#q{L(ylv{8i;|gv|qrNg>oPYxHPk#HQw-YhBXZc!tR>#Phr%D+-5LAAj^4(MleJc zjMAFqJ*J3V01D{hKml#}sw#pUE12&Kwf6n(Szs6jqQQy|Rk*R2eH91V#{YZXZDhB? z!&%L%i9kFCf6ogxIuPL$(_B3j>;w7X?M$x9(kXTo^d>Da1#V^gi}7>7$gzA!Y`gJI zCds{(iasc|Hc)-aqK?|00dV62_Y!LxyQw=a6Q6_4oh|pjy8d?Oy~y~^1@p`$f|3vy ztrD!Xv(7Sw`}Iw=>UmJ6*tu=PI(kZU;Yi4IpK|>9_EESR9P-Gk_L?1OkW*=Qr8XQ- zf9o%I3eI~tiDykzW#!)AZzc}-CZdRJj2J{-X83@z&d;W|pT}V*L;UYLMbTau+yR{G zwCV;TQB^hQ`P6tm6(a*}B&gsxrhDY6kr|deM2=UFwqth7oy$&5QLU8#4q@yK&UV6k zV5imB#LxQwn9C49e+{FP-0htt5eT*+^WS^j=A^dvOlq5NRTJ|lr#Wx9T6Own`h^5& zEa2x_3H&KDDOu)hgZkn4 ziNGYpS5xsoVdSLi%rVTOU|97GHS* z?sJ;$1}9k3DQM&%5;${pWk-ql63vN5=mk%~Fb{6Py)H=c!VP*=&RXRxCZTSbF1c+2 z9r!@zSA43JurO)qmA*L&@@f9pJAlJnyBBA#d$pjfL~hgYrg&(HSODManS@e72cluT98i-Xm(E>nf|XTob?Uo376V})D*%+|s5!lZ z8Uh9Ky8(`1<<(Um*EJYF2iUmD$o-JQs;*x{W4wlQW$?8dzcE-Xd3ueQl0Ep!wGKES zqCk)3G9Y_gN>waR|2n7O*OY6stybvv&eGVT&xMm#b<#Rj8afJAQgCEstbEsqg%f1e z0}qwy$8~0r3Lbj3!XHIx+{-|aT@rxVZ0rrpm%`?=200&coCDWtQUgg|-$W?IydT+o_$8;Xk_N-{E<`Q29h7^Fk-lls2PS>D0Y+5{GY=WF z>7mJDA8vSTWMQ@yzj9i@08Y5gW@Mc*uRLt4-A~6w_*?gzsLl>zoJKxL+wB?#wVloB z$bji%TlW@DoqF`(f^R}FY=7;3s;+;Zrvxt%ebzUsUF?K8C` zp$b$)>E`t?Bvk^9NEzAMkUxrb0XVXr>bw6o`%Mg$zHKGPIvy z?tu({;~^*n<5m5vE7RM`sMS7+5_S5X1>yskV@0D=nVe}go89g%bYchnnZkEy3AsFj z!m)uFW@82rBdAkqr>18c-f<*tj%yOm4R5|0Ntwxa^4SfH&kDGbLTwqXx`;&HcH<-T zB7T)Zdr#GJZ?-)o`FUwUyyzd3pTI~pmpHv{adB8C&Z>F|NXj8Mpi;(@1+|}$>19GU zlFG>OFV*WBGRT4J>~%a)iP@owT{A!Zn^%{3HNbTB*Jo!a4|>;L+YJC0glo=NH4T7x zeea5=Nb+_kzj~Dv_$GI)gS?#UX)cYsD(vHOdq>yTy+KG?iF&QAqy!*4*S1+0&cWCH2)ikt9@J2raT6HG1?jT^yr z;3wd9tO4B>9*6Tv)g{?1Gd%dxdn~$F=8YE(ogFzYW^<-tpje_iatW9BfE;0dTrUsn zDsgHuACqxA2UtVo0|&IQSb#S3%01A5&YkRcnUJ5FPW05*OT2gzKl1Lrhw&4wRwp%h zrI?+;TgRTfMH&j2!%kiYPp`RATMn;pPM?)Q4R zH+qeSzZ}{@^SGd>-*t945Cm76i^_X;sr~0SzBaIV=BY~X=U#rWzTeHp2|uq8?WN`g za!t86=m(KcZ-a6jyZu{MAf4lFK{egDii(lwBI35Bxq7C2sJ5s+l*tV^iTH5L$|bL zs&0-y--}kS)RT3DF#|PJq7{D9Mv8;v?TCTzOAK4Z4@wCoLg-RxkSq)MqBiBmNtp(?7 zf5*m%lNc4%T+Ew7=s=}GZf9I420sP8i3o(p^^NLljT-Zx>XY@GYvQ4(l)I8+*`v<{ z%CDVMTpzoMDUzyN;k7h3N%JhDfSJZUD}MH*%{S*$E4Meis#GQV=l9W8hm2DiHc%<< z8ptSN=c~iQB*bW`JR#>niT_@gLF7fkd_xMy$4CIf**C`-m(2ARMBo<+s@B(rVNG*h zByNY{1$@=!6JBcKOvTce@xs7|{3@+gmj|N|Ej#c2f`!7mI`CeWUj>T)K)}E%I(U5r zsCD^WOFI#KcS|ka(iW+0_Yoiqka8X*fP8Y-`?^{URnmHr^iMXj0Jdnz#^ydZz3uCSA>%6rx-|fYy}g%LcL(E9D`yn?Nqc zUiA?bZ0&Wcrdp5k!Y4ha;L)1Hi6A&S!vgPSCRMNMLJelGtdVmZX+v4{kGs9#pKjHU zPYVUdd9`czn|vLX!A0eeI6iUg!9w#?^=)8y55o&1rlS`=TLmst z2AI&h0A0qf;B@zr%h1D1hs_RC^o`Dr^hbe-xXd7g2i?SfTl_{GOqsy;!i%w`lG5-| z0IT!id^tAowHjq!gjC45alw84TW45JWi7|EGjO-gocv_28Sv}{&W&~RyEVO_jfuAr~Kt9*Cu+Nr(%_cV#iP6oBa-Yz!z6WBs_ zds9FVtpMIpPvXxLJ5$168jDLW;CH0oVex6uN3^)YXSOZc6}ys`bxNvhmuetUuN&p>=v3l3MSHSC!J-x#CQ;& zpTg=1=C#?!v$DOzhO=24QMOiA&XCv3|*XH{e-IEgZyCr@B zaGn@-vhIHDYP$Z&bp7GmWS6Qku)w-090HDbvl``cd}=({xa6nmocj1N3i2= zU~vGIM>NxTdTQ^k)W`qUb@1=1$j+fWj`h81vi^cK5u{c=!qsm$aL~fc54Suc8Zg~s zSm=4+5vC6R^x@#1Y%qxs)?m)jTG92{#I@KiKSq``=Omm0=;VVmLiYM`8PkW0GyN)h zloI?DyI>DIy1M5S8_fR>=y9wUT1^$7)oa7P!R)C*6+){l z=*f&*NHG0KDx7{BvsQ1R&DS2G@?Pr7YFJ);^~#6M()y0GY(emYmh`y%`1zz$;$Wq! zn)`pMV890<+zoKraQ~aYK6K$%8hFDn9M+%Rma#)V;U}Xe&tAeppBeREkiqJ_i$mYR zZcqjdPPg8Jw}8mk@gDrqS-c%BprqV4DGrxfG5XvvYSmi}PEgRd@gttIjjlDyhb|*@ z1NW7(D5ouiB^%C{B-ewjXZxDP-xL(0nSZj>N%8xQV2evflV4IXb$jG?8X1;@|8-#Y z{!21>v{Mc?3HJZ78rBFKumveWz~8CW{s)J8z@RC~&7}pI|Aip2z`QiQd)E*ZL~L^_ z#VB%aD$lN<@6E3o@V_cuKkVIKPTGH75Nu8mw1b95 z{!+(-g8pl%S&q`_RPy%D{bWC%7sa7%$DpsKr+7KR-UAjc0jq;UKW9IJza9Ijs{fB- zVYR?C-SiaWbEjAVHX{@1RjOXv>az0gM*ClFWkKBkRxmmLE(qBEdExEO2Oet^fj*mF ze$ggI^KH^No@%ix{}G@wd+4u5M6hHF^3Q!StL$wjpiySJ(Xc@+ zg`YzH>k9wXAVuSJIApx}k;R97v#IvF8ZMHHnf)$bhrGAtw{!jDpNk{Eq?}DazfLa> zL!pYm`Sle0{O9KhKSxu7OZclZ@z;6(FFhTMm)LY5H$BC6&Up`v9xIU|D0F6L$>5W@ z(|Y?qdo6;PV$sIBpDs{OvjWK1zr9V6)j!w$rPdu!jhFme6{P*Fb@-nhM62?9U?rNr ziMg8U&tkV;_f86h^BL?uM-e6miKN>I* zv`ft?KhNW||Gzf;pDaU1JT?A&EI{=nz!pA+0bKp0j@PF6_?KGm*^!2_mXq+&y`F$PN-VTKD!QM zV}Pqvlm3@k{FD6}x3j?cZ|HGkRq9}viJ7T@AhtHZ#6(h1=Igu2f?L?!Y~s1irq;w$ z!I$1|QxyDlJyeI@BLvM%4!RULlB#=``cn|xw26`WZx1sw)b7r1SG)B)Gv2dzAfvB7 zlU6qLzy0$5_IisEJvYUfN0O@<@-DI+c3;4XL^Q`&8YoOPhB;` z-4aAfy&Q(9zV+T9Uxs+uKdl&iVe(C==w5Lg^LxzeA-uzg7X2w|ba6B4DT8PKdHL|j zf}44yt(KcH^r6)seje`TnwJZ9rLz!|(Sujcn30YaJq|lsW{*l=syZA?*!FJBFWPWA z^OT9UlR-SgQKYw2BlpsKgk@|;MRJp_)sJgWnOK~BFSmzri!l?^Tkgp+@?_#_duB89SVd zb8;OQY%3(kS*J*pycvj8^tu9;Y*w;wtqcf9N#$|$9rlSlN5k4XwoMSEds0T#u+uK$Qe`r^jJr-6>qOtVgux1GU(;T-ED*R^btXL<8Q}tuY$uZb=FY^V~Fl#NzZp z@8RC{&K_!@Dk464MVrBB#b9i!~@?APa>~#m7 zvH8*ajDUgl5)Xezah(E55^lxP z+N;HAKMSF`r5|j@gOVp_QH%7fwLqIP#^7F9hPpuqyvZuC{bR;wdwT71O8#E^yI%)m zdXEe{p#p#QE$}E>uCu*K3DnnU06SE-|3<6-OGLu0bLER9 z6C*SppaNlpInt94t^85DgZsuF8B0Gb#eH8;e3s3rqI6ePV#7kER*_Ipm_&mY_29yX zFDv1a{`{PiP5j&(q3e1QR09pVM?--MFURkHI(R3K^2-LGkccEOUkKD($0EX@j$&+& z35NygDM|LY5LNuZ1o$Th1{Y@AJ}e){xbF01_e1^iLOal0&Fz~b6lmowhn|hwL)DS% zIW(v0($mvjnzgLJ?$G_RHv>JYEZpdIs*aHb)DMS@6hnhnMufVxaj4Pa)b zj%xE8)VP~v-7g<;BQlq70D)`UYY&LW?)E;fdDTu1tok!PN47MkZ?$DIfi<4EAa43r zqC49dWbJVUt}<5zTUyXx3ldakhT2kXt%65fb_2y*JY@^|!HM>aXG)zjbyx1utv28Y z9?9@X3G4+d6X!vS>rB(=Z{*j#*yz|7{{(XNDe4R;#iiXF9$klXb4}j83eNvacq}w} zqy!ane><|pcpR7{(2pW(65tukH zA%Cm>mg)h_3igASrzkuNM$it`6%m|^5;Y)HSS~hR#ZV;nC~wo*=V}(ZIx;tBUtzp* zRO`g2BjZpl37=qQn@ll-;O>#@I;v2vp6QuLsNANjnMq&X6+Pwmw^Pk8+^|H3myIwBJ;5T z6?|yN{qjDMRWRuZcJvTmTM=(xFVoj|)k>4WX<|<*mW=uyJ3M3*{Y5j->zs*Kui@!W zMYB%kl7Y1@EmE7Cf6&e0f54kLr(<}7e!-gJl);{xU${k$hom=AoW&308+ zD9_q=olXT9)Rt>A^a3)#RN1{NNahl)y`~^OnU?wzU;C1y4sR0cO?n&&b5X(FsSq36J9n1b#HP2_et96D_ga? zu;X9zRKf6Q90&~V7y5eib<%ow?d_DxbcJ~A16M{|4D525R7Fq@PN8LGH==OykNcGI#fBII?g`v3(<>VA`5`--TV6csP& z(eV!JTBL*K2!0N=HF_i@eRvUhN921@`&2|t9#v|%l6>$j$T@A=)SIa=cwQsdU`EIS)6 zELT0h0NzzwzVe@8R)sMufVzx30D+Zop-nn4H-l9m+#dD_e5W1`n{HRhkpsF`5_1{N z6`eH>YFaQxSbmKG^{!R<04_*7xw4f&{$Zf7#M#}??<$}?!)g_unekH zz1^V8*=>Kn{d(H`dvhsMw7>mB#L7{MEp3(*ZP+rTDnp@Fh*SZj%Gxw8*`nHdLZdO< zlH%Rplp+IM6y%cNNiYqH(pJu_0-#EqM{_y9|Qo$;w*Ky52Q!B?- z8tW6!npO~a(9jQZGcGrER}(vGaPrgq{C@BO6Sz_a(q2A`=Z;uWv_susGHArFo^U=s zPp2Fe{5r=Syt?HjY%1>ADy6>{S(9eKLIAmjk#iTV^A<@ifJs>h%gY|@&IZc!JK$q^ zi7Lklc-p92EEvv=W&y=K3cc&hq228qvy~Mbc2(4SH;h|;geqx5REJ};b3iCu8^Z1$ znX)oWBDKLiM`0bk3y~JYhoY551c?MAO7}|na!NtmlZmn}bNxtVWANfKGHLW%uKoKLSUSJw0{f=`MBF+nrYDeJa}HtR@S6P2V~ww8mrzO`NiPE6Hv> z>Ve!5Swx42+vdct2fBBe z-{h5^G&_vN4z_6?;c!jZK-QB@J#rDknyXa%cHjFGx}nf`J*Df3wcxxF(Wg0nr1cTg za8hXQQV$z!ow@F>=sDRUq`w!IW#*h=LF*H&T==f4VlolFW|A^#EwR2k8tUM0*2HHZ z?CV@dh~e@Gd~6&U`M~kMS2!@|*7`!}<4nlflcln)Nlok4-VWgtNwgyVJa08MSXt

X^_$c`?*3# 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 0 { + foundBalance = balance + break + } + } + if foundBalance > 0 { + config.InitialBalance = foundBalance + logger.Infof("✓ [%s] 自动获取初始金额: %.2f USDT", config.Name, foundBalance) + } else { + return nil, fmt.Errorf("初始金额必须大于0,请在配置中设置InitialBalance或确保交易所账户有余额") + } } // 获取最后的周期编号(用于恢复) diff --git a/trader/okx_trader.go b/trader/okx_trader.go new file mode 100644 index 00000000..057d201b --- /dev/null +++ b/trader/okx_trader.go @@ -0,0 +1,1123 @@ +package trader + +import ( + "bytes" + "crypto/hmac" + "crypto/rand" + "crypto/sha256" + "encoding/base64" + "encoding/hex" + "encoding/json" + "fmt" + "io" + "net/http" + "nofx/logger" + "strconv" + "strings" + "sync" + "time" +) + +// OKX API endpoints +const ( + okxBaseURL = "https://www.okx.com" + okxAccountPath = "/api/v5/account/balance" + okxPositionPath = "/api/v5/account/positions" + okxOrderPath = "/api/v5/trade/order" + okxLeveragePath = "/api/v5/account/set-leverage" + okxTickerPath = "/api/v5/market/ticker" + okxInstrumentsPath = "/api/v5/public/instruments" + okxCancelOrderPath = "/api/v5/trade/cancel-order" + okxPendingOrdersPath = "/api/v5/trade/orders-pending" + okxAlgoOrderPath = "/api/v5/trade/order-algo" + okxCancelAlgoPath = "/api/v5/trade/cancel-algos" + okxAlgoPendingPath = "/api/v5/trade/orders-algo-pending" + okxPositionModePath = "/api/v5/account/set-position-mode" +) + +// OKXTrader OKX合约交易器 +type OKXTrader struct { + apiKey string + secretKey string + passphrase string + + // HTTP 客户端(禁用代理) + httpClient *http.Client + + // 余额缓存 + cachedBalance map[string]interface{} + balanceCacheTime time.Time + balanceCacheMutex sync.RWMutex + + // 持仓缓存 + cachedPositions []map[string]interface{} + positionsCacheTime time.Time + positionsCacheMutex sync.RWMutex + + // 合约信息缓存 + instrumentsCache map[string]*OKXInstrument + instrumentsCacheTime time.Time + instrumentsCacheMutex sync.RWMutex + + // 缓存有效期 + cacheDuration time.Duration +} + +// OKXInstrument OKX合约信息 +type OKXInstrument struct { + InstID string // 合约ID + CtVal float64 // 合约面值 + CtMult float64 // 合约乘数 + LotSz float64 // 最小下单数量 + MinSz float64 // 最小下单数量 + TickSz float64 // 最小价格变动 + CtType string // 合约类型 +} + +// OKXResponse OKX API响应 +type OKXResponse struct { + Code string `json:"code"` + Msg string `json:"msg"` + Data json.RawMessage `json:"data"` +} + +// getOkxOrderID 生成OKX订单ID +func genOkxClOrdID() string { + timestamp := time.Now().UnixNano() % 10000000000000 + randomBytes := make([]byte, 4) + rand.Read(randomBytes) + randomHex := hex.EncodeToString(randomBytes) + // OKX clOrdId 最长32字符 + orderID := fmt.Sprintf("%s%d%s", okxTag, timestamp, randomHex) + if len(orderID) > 32 { + orderID = orderID[:32] + } + return orderID +} + +// NewOKXTrader 创建OKX交易器 +func NewOKXTrader(apiKey, secretKey, passphrase string) *OKXTrader { + // 创建禁用代理的 HTTP 客户端 + transport := &http.Transport{ + Proxy: nil, // 显式禁用代理 + } + httpClient := &http.Client{ + Timeout: 30 * time.Second, + Transport: transport, + } + + trader := &OKXTrader{ + apiKey: apiKey, + secretKey: secretKey, + passphrase: passphrase, + httpClient: httpClient, + cacheDuration: 15 * time.Second, + instrumentsCache: make(map[string]*OKXInstrument), + } + + // 设置双向持仓模式 + if err := trader.setPositionMode(); err != nil { + logger.Infof("⚠️ 设置OKX持仓模式失败: %v (如果已是双向模式则忽略)", err) + } + + return trader +} + +// setPositionMode 设置双向持仓模式 +func (t *OKXTrader) setPositionMode() error { + body := map[string]string{ + "posMode": "long_short_mode", // 双向持仓 + } + + _, err := t.doRequest("POST", okxPositionModePath, body) + if err != nil { + // 如果已经是双向模式,忽略错误 + if strings.Contains(err.Error(), "already") || strings.Contains(err.Error(), "Position mode is not modified") { + logger.Infof(" ✓ OKX账户已是双向持仓模式") + return nil + } + return err + } + + logger.Infof(" ✓ OKX账户已切换为双向持仓模式") + return nil +} + +// sign 生成OKX API签名 +func (t *OKXTrader) sign(timestamp, method, requestPath, body string) string { + preHash := timestamp + method + requestPath + body + h := hmac.New(sha256.New, []byte(t.secretKey)) + h.Write([]byte(preHash)) + return base64.StdEncoding.EncodeToString(h.Sum(nil)) +} + +// doRequest 执行HTTP请求 +func (t *OKXTrader) doRequest(method, path string, body interface{}) ([]byte, error) { + var bodyBytes []byte + var err error + + if body != nil { + bodyBytes, err = json.Marshal(body) + if err != nil { + return nil, fmt.Errorf("序列化请求体失败: %w", err) + } + } + + timestamp := time.Now().UTC().Format("2006-01-02T15:04:05.000Z") + signature := t.sign(timestamp, method, path, string(bodyBytes)) + + req, err := http.NewRequest(method, okxBaseURL+path, bytes.NewReader(bodyBytes)) + if err != nil { + return nil, fmt.Errorf("创建请求失败: %w", err) + } + + req.Header.Set("OK-ACCESS-KEY", t.apiKey) + req.Header.Set("OK-ACCESS-SIGN", signature) + req.Header.Set("OK-ACCESS-TIMESTAMP", timestamp) + req.Header.Set("OK-ACCESS-PASSPHRASE", t.passphrase) + req.Header.Set("Content-Type", "application/json") + // 设置请求头 + req.Header.Set("x-simulated-trading", "0") + + resp, err := t.httpClient.Do(req) + if err != nil { + return nil, fmt.Errorf("请求失败: %w", err) + } + defer resp.Body.Close() + + respBody, err := io.ReadAll(resp.Body) + if err != nil { + return nil, fmt.Errorf("读取响应失败: %w", err) + } + + var okxResp OKXResponse + if err := json.Unmarshal(respBody, &okxResp); err != nil { + return nil, fmt.Errorf("解析响应失败: %w", err) + } + + if okxResp.Code != "0" { + return nil, fmt.Errorf("OKX API错误: code=%s, msg=%s", okxResp.Code, okxResp.Msg) + } + + return okxResp.Data, nil +} + +// convertSymbol 将通用符号转换为OKX格式 +// 如 BTCUSDT -> BTC-USDT-SWAP +func (t *OKXTrader) convertSymbol(symbol string) string { + // 移除USDT后缀并构建OKX格式 + base := strings.TrimSuffix(symbol, "USDT") + return fmt.Sprintf("%s-USDT-SWAP", base) +} + +// convertSymbolBack 将OKX格式转换回通用符号 +// 如 BTC-USDT-SWAP -> BTCUSDT +func (t *OKXTrader) convertSymbolBack(instId string) string { + parts := strings.Split(instId, "-") + if len(parts) >= 2 { + return parts[0] + parts[1] + } + return instId +} + +// GetBalance 获取账户余额 +func (t *OKXTrader) GetBalance() (map[string]interface{}, error) { + // 检查缓存 + t.balanceCacheMutex.RLock() + if t.cachedBalance != nil && time.Since(t.balanceCacheTime) < t.cacheDuration { + t.balanceCacheMutex.RUnlock() + logger.Infof("✓ 使用缓存的OKX账户余额") + return t.cachedBalance, nil + } + t.balanceCacheMutex.RUnlock() + + logger.Infof("🔄 正在调用OKX API获取账户余额...") + data, err := t.doRequest("GET", okxAccountPath, nil) + if err != nil { + return nil, fmt.Errorf("获取账户余额失败: %w", err) + } + + var balances []struct { + TotalEq string `json:"totalEq"` + AdjEq string `json:"adjEq"` + IsoEq string `json:"isoEq"` + OrdFroz string `json:"ordFroz"` + Details []struct { + Ccy string `json:"ccy"` + Eq string `json:"eq"` + CashBal string `json:"cashBal"` + AvailBal string `json:"availBal"` + UPL string `json:"upl"` + } `json:"details"` + } + + if err := json.Unmarshal(data, &balances); err != nil { + return nil, fmt.Errorf("解析余额数据失败: %w", err) + } + + if len(balances) == 0 { + return nil, fmt.Errorf("未获取到余额数据") + } + + balance := balances[0] + + // 查找USDT余额 + var usdtAvail, usdtUPL float64 + for _, detail := range balance.Details { + if detail.Ccy == "USDT" { + usdtAvail, _ = strconv.ParseFloat(detail.AvailBal, 64) + usdtUPL, _ = strconv.ParseFloat(detail.UPL, 64) + break + } + } + + totalEq, _ := strconv.ParseFloat(balance.TotalEq, 64) + + result := map[string]interface{}{ + "totalWalletBalance": totalEq, + "availableBalance": usdtAvail, + "totalUnrealizedProfit": usdtUPL, + } + + logger.Infof("✓ OKX余额: 总权益=%.2f, 可用=%.2f, 未实现盈亏=%.2f", totalEq, usdtAvail, usdtUPL) + + // 更新缓存 + t.balanceCacheMutex.Lock() + t.cachedBalance = result + t.balanceCacheTime = time.Now() + t.balanceCacheMutex.Unlock() + + return result, nil +} + +// GetPositions 获取所有持仓 +func (t *OKXTrader) GetPositions() ([]map[string]interface{}, error) { + // 检查缓存 + t.positionsCacheMutex.RLock() + if t.cachedPositions != nil && time.Since(t.positionsCacheTime) < t.cacheDuration { + t.positionsCacheMutex.RUnlock() + logger.Infof("✓ 使用缓存的OKX持仓信息") + return t.cachedPositions, nil + } + t.positionsCacheMutex.RUnlock() + + logger.Infof("🔄 正在调用OKX API获取持仓信息...") + data, err := t.doRequest("GET", okxPositionPath+"?instType=SWAP", nil) + if err != nil { + return nil, fmt.Errorf("获取持仓失败: %w", err) + } + + var positions []struct { + InstId string `json:"instId"` + PosSide string `json:"posSide"` + Pos string `json:"pos"` + AvgPx string `json:"avgPx"` + MarkPx string `json:"markPx"` + Upl string `json:"upl"` + Lever string `json:"lever"` + LiqPx string `json:"liqPx"` + Margin string `json:"margin"` + } + + if err := json.Unmarshal(data, &positions); err != nil { + return nil, fmt.Errorf("解析持仓数据失败: %w", err) + } + + var result []map[string]interface{} + for _, pos := range positions { + posAmt, _ := strconv.ParseFloat(pos.Pos, 64) + if posAmt == 0 { + continue + } + + entryPrice, _ := strconv.ParseFloat(pos.AvgPx, 64) + markPrice, _ := strconv.ParseFloat(pos.MarkPx, 64) + upl, _ := strconv.ParseFloat(pos.Upl, 64) + leverage, _ := strconv.ParseFloat(pos.Lever, 64) + liqPrice, _ := strconv.ParseFloat(pos.LiqPx, 64) + + // 转换symbol格式 + symbol := t.convertSymbolBack(pos.InstId) + + // 确定方向 + side := "long" + if pos.PosSide == "short" || posAmt < 0 { + side = "short" + posAmt = -posAmt // 取绝对值 + } + + posMap := map[string]interface{}{ + "symbol": symbol, + "positionAmt": posAmt, + "entryPrice": entryPrice, + "markPrice": markPrice, + "unRealizedProfit": upl, + "leverage": leverage, + "liquidationPrice": liqPrice, + "side": side, + } + result = append(result, posMap) + } + + // 更新缓存 + t.positionsCacheMutex.Lock() + t.cachedPositions = result + t.positionsCacheTime = time.Now() + t.positionsCacheMutex.Unlock() + + return result, nil +} + +// getInstrument 获取合约信息 +func (t *OKXTrader) getInstrument(symbol string) (*OKXInstrument, error) { + instId := t.convertSymbol(symbol) + + // 检查缓存 + t.instrumentsCacheMutex.RLock() + if inst, ok := t.instrumentsCache[instId]; ok && time.Since(t.instrumentsCacheTime) < 5*time.Minute { + t.instrumentsCacheMutex.RUnlock() + return inst, nil + } + t.instrumentsCacheMutex.RUnlock() + + // 获取合约信息 + path := fmt.Sprintf("%s?instType=SWAP&instId=%s", okxInstrumentsPath, instId) + data, err := t.doRequest("GET", path, nil) + if err != nil { + return nil, err + } + + var instruments []struct { + InstId string `json:"instId"` + CtVal string `json:"ctVal"` + CtMult string `json:"ctMult"` + LotSz string `json:"lotSz"` + MinSz string `json:"minSz"` + TickSz string `json:"tickSz"` + CtType string `json:"ctType"` + } + + if err := json.Unmarshal(data, &instruments); err != nil { + return nil, err + } + + if len(instruments) == 0 { + return nil, fmt.Errorf("未找到合约信息: %s", instId) + } + + inst := instruments[0] + ctVal, _ := strconv.ParseFloat(inst.CtVal, 64) + ctMult, _ := strconv.ParseFloat(inst.CtMult, 64) + lotSz, _ := strconv.ParseFloat(inst.LotSz, 64) + minSz, _ := strconv.ParseFloat(inst.MinSz, 64) + tickSz, _ := strconv.ParseFloat(inst.TickSz, 64) + + instrument := &OKXInstrument{ + InstID: inst.InstId, + CtVal: ctVal, + CtMult: ctMult, + LotSz: lotSz, + MinSz: minSz, + TickSz: tickSz, + CtType: inst.CtType, + } + + // 更新缓存 + t.instrumentsCacheMutex.Lock() + t.instrumentsCache[instId] = instrument + t.instrumentsCacheTime = time.Now() + t.instrumentsCacheMutex.Unlock() + + return instrument, nil +} + +// SetMarginMode 设置仓位模式 +func (t *OKXTrader) SetMarginMode(symbol string, isCrossMargin bool) error { + instId := t.convertSymbol(symbol) + + mgnMode := "isolated" + if isCrossMargin { + mgnMode = "cross" + } + + body := map[string]interface{}{ + "instId": instId, + "mgnMode": mgnMode, + } + + _, err := t.doRequest("POST", "/api/v5/account/set-isolated-mode", body) + if err != nil { + // 如果已经是目标模式,忽略错误 + if strings.Contains(err.Error(), "already") { + logger.Infof(" ✓ %s 仓位模式已是 %s", symbol, mgnMode) + return nil + } + // 有持仓无法更改 + if strings.Contains(err.Error(), "position") { + logger.Infof(" ⚠️ %s 有持仓,无法更改仓位模式", symbol) + return nil + } + return err + } + + logger.Infof(" ✓ %s 仓位模式已设置为 %s", symbol, mgnMode) + return nil +} + +// SetLeverage 设置杠杆 +func (t *OKXTrader) SetLeverage(symbol string, leverage int) error { + instId := t.convertSymbol(symbol) + + // 设置多头和空头的杠杆 + for _, posSide := range []string{"long", "short"} { + body := map[string]interface{}{ + "instId": instId, + "lever": strconv.Itoa(leverage), + "mgnMode": "cross", + "posSide": posSide, + } + + _, err := t.doRequest("POST", okxLeveragePath, body) + if err != nil { + // 如果已经是目标杠杆,忽略 + if strings.Contains(err.Error(), "same") { + continue + } + logger.Infof(" ⚠️ 设置 %s %s 杠杆失败: %v", symbol, posSide, err) + } + } + + logger.Infof(" ✓ %s 杠杆已设置为 %dx", symbol, leverage) + return nil +} + +// OpenLong 开多仓 +func (t *OKXTrader) OpenLong(symbol string, quantity float64, leverage int) (map[string]interface{}, error) { + // 取消旧订单 + t.CancelAllOrders(symbol) + + // 设置杠杆 + if err := t.SetLeverage(symbol, leverage); err != nil { + logger.Infof(" ⚠️ 设置杠杆失败: %v", err) + } + + instId := t.convertSymbol(symbol) + + // 获取合约信息并计算合约数量 + inst, err := t.getInstrument(symbol) + if err != nil { + return nil, fmt.Errorf("获取合约信息失败: %w", err) + } + + // OKX使用合约张数,需要根据合约面值转换 + price, err := t.GetMarketPrice(symbol) + if err != nil { + return nil, fmt.Errorf("获取市价失败: %w", err) + } + + // 计算合约张数 = 数量 * 价格 / 合约面值 + sz := quantity * price / inst.CtVal + szStr := t.formatSize(sz, inst) + + body := map[string]interface{}{ + "instId": instId, + "tdMode": "cross", + "side": "buy", + "posSide": "long", + "ordType": "market", + "sz": szStr, + "clOrdId": genOkxClOrdID(), + "tag": okxTag, + } + + data, err := t.doRequest("POST", okxOrderPath, body) + if err != nil { + return nil, fmt.Errorf("开多仓失败: %w", err) + } + + var orders []struct { + OrdId string `json:"ordId"` + ClOrdId string `json:"clOrdId"` + SCode string `json:"sCode"` + SMsg string `json:"sMsg"` + } + + if err := json.Unmarshal(data, &orders); err != nil { + return nil, fmt.Errorf("解析订单响应失败: %w", err) + } + + if len(orders) == 0 || orders[0].SCode != "0" { + msg := "未知错误" + if len(orders) > 0 { + msg = orders[0].SMsg + } + return nil, fmt.Errorf("开多仓失败: %s", msg) + } + + logger.Infof("✓ OKX开多仓成功: %s 张数: %s", symbol, szStr) + logger.Infof(" 订单ID: %s", orders[0].OrdId) + + return map[string]interface{}{ + "orderId": orders[0].OrdId, + "symbol": symbol, + "status": "FILLED", + }, nil +} + +// OpenShort 开空仓 +func (t *OKXTrader) OpenShort(symbol string, quantity float64, leverage int) (map[string]interface{}, error) { + // 取消旧订单 + t.CancelAllOrders(symbol) + + // 设置杠杆 + if err := t.SetLeverage(symbol, leverage); err != nil { + logger.Infof(" ⚠️ 设置杠杆失败: %v", err) + } + + instId := t.convertSymbol(symbol) + + // 获取合约信息并计算合约数量 + inst, err := t.getInstrument(symbol) + if err != nil { + return nil, fmt.Errorf("获取合约信息失败: %w", err) + } + + price, err := t.GetMarketPrice(symbol) + if err != nil { + return nil, fmt.Errorf("获取市价失败: %w", err) + } + + sz := quantity * price / inst.CtVal + szStr := t.formatSize(sz, inst) + + body := map[string]interface{}{ + "instId": instId, + "tdMode": "cross", + "side": "sell", + "posSide": "short", + "ordType": "market", + "sz": szStr, + "clOrdId": genOkxClOrdID(), + "tag": okxTag, + } + + data, err := t.doRequest("POST", okxOrderPath, body) + if err != nil { + return nil, fmt.Errorf("开空仓失败: %w", err) + } + + var orders []struct { + OrdId string `json:"ordId"` + ClOrdId string `json:"clOrdId"` + SCode string `json:"sCode"` + SMsg string `json:"sMsg"` + } + + if err := json.Unmarshal(data, &orders); err != nil { + return nil, fmt.Errorf("解析订单响应失败: %w", err) + } + + if len(orders) == 0 || orders[0].SCode != "0" { + msg := "未知错误" + if len(orders) > 0 { + msg = orders[0].SMsg + } + return nil, fmt.Errorf("开空仓失败: %s", msg) + } + + logger.Infof("✓ OKX开空仓成功: %s 张数: %s", symbol, szStr) + logger.Infof(" 订单ID: %s", orders[0].OrdId) + + return map[string]interface{}{ + "orderId": orders[0].OrdId, + "symbol": symbol, + "status": "FILLED", + }, nil +} + +// CloseLong 平多仓 +func (t *OKXTrader) CloseLong(symbol string, quantity float64) (map[string]interface{}, error) { + instId := t.convertSymbol(symbol) + + // 如果数量为0,获取当前持仓 + if quantity == 0 { + positions, err := t.GetPositions() + if err != nil { + return nil, err + } + for _, pos := range positions { + if pos["symbol"] == symbol && pos["side"] == "long" { + quantity = pos["positionAmt"].(float64) + break + } + } + if quantity == 0 { + return nil, fmt.Errorf("没有找到 %s 的多仓", symbol) + } + } + + // 获取合约信息 + inst, err := t.getInstrument(symbol) + if err != nil { + return nil, fmt.Errorf("获取合约信息失败: %w", err) + } + + price, err := t.GetMarketPrice(symbol) + if err != nil { + return nil, fmt.Errorf("获取市价失败: %w", err) + } + + sz := quantity * price / inst.CtVal + szStr := t.formatSize(sz, inst) + + body := map[string]interface{}{ + "instId": instId, + "tdMode": "cross", + "side": "sell", + "posSide": "long", + "ordType": "market", + "sz": szStr, + "clOrdId": genOkxClOrdID(), + "tag": okxTag, + } + + data, err := t.doRequest("POST", okxOrderPath, body) + if err != nil { + return nil, fmt.Errorf("平多仓失败: %w", err) + } + + var orders []struct { + OrdId string `json:"ordId"` + SCode string `json:"sCode"` + SMsg string `json:"sMsg"` + } + + if err := json.Unmarshal(data, &orders); err != nil { + return nil, err + } + + if len(orders) == 0 || orders[0].SCode != "0" { + msg := "未知错误" + if len(orders) > 0 { + msg = orders[0].SMsg + } + return nil, fmt.Errorf("平多仓失败: %s", msg) + } + + logger.Infof("✓ OKX平多仓成功: %s", symbol) + + // 平仓后取消挂单 + t.CancelAllOrders(symbol) + + return map[string]interface{}{ + "orderId": orders[0].OrdId, + "symbol": symbol, + "status": "FILLED", + }, nil +} + +// CloseShort 平空仓 +func (t *OKXTrader) CloseShort(symbol string, quantity float64) (map[string]interface{}, error) { + instId := t.convertSymbol(symbol) + + // 如果数量为0,获取当前持仓 + if quantity == 0 { + positions, err := t.GetPositions() + if err != nil { + return nil, err + } + for _, pos := range positions { + if pos["symbol"] == symbol && pos["side"] == "short" { + quantity = pos["positionAmt"].(float64) + break + } + } + if quantity == 0 { + return nil, fmt.Errorf("没有找到 %s 的空仓", symbol) + } + } + + // 获取合约信息 + inst, err := t.getInstrument(symbol) + if err != nil { + return nil, fmt.Errorf("获取合约信息失败: %w", err) + } + + price, err := t.GetMarketPrice(symbol) + if err != nil { + return nil, fmt.Errorf("获取市价失败: %w", err) + } + + sz := quantity * price / inst.CtVal + szStr := t.formatSize(sz, inst) + + body := map[string]interface{}{ + "instId": instId, + "tdMode": "cross", + "side": "buy", + "posSide": "short", + "ordType": "market", + "sz": szStr, + "clOrdId": genOkxClOrdID(), + "tag": okxTag, + } + + data, err := t.doRequest("POST", okxOrderPath, body) + if err != nil { + return nil, fmt.Errorf("平空仓失败: %w", err) + } + + var orders []struct { + OrdId string `json:"ordId"` + SCode string `json:"sCode"` + SMsg string `json:"sMsg"` + } + + if err := json.Unmarshal(data, &orders); err != nil { + return nil, err + } + + if len(orders) == 0 || orders[0].SCode != "0" { + msg := "未知错误" + if len(orders) > 0 { + msg = orders[0].SMsg + } + return nil, fmt.Errorf("平空仓失败: %s", msg) + } + + logger.Infof("✓ OKX平空仓成功: %s", symbol) + + // 平仓后取消挂单 + t.CancelAllOrders(symbol) + + return map[string]interface{}{ + "orderId": orders[0].OrdId, + "symbol": symbol, + "status": "FILLED", + }, nil +} + +// GetMarketPrice 获取市场价格 +func (t *OKXTrader) GetMarketPrice(symbol string) (float64, error) { + instId := t.convertSymbol(symbol) + path := fmt.Sprintf("%s?instId=%s", okxTickerPath, instId) + + data, err := t.doRequest("GET", path, nil) + if err != nil { + return 0, fmt.Errorf("获取价格失败: %w", err) + } + + var tickers []struct { + Last string `json:"last"` + } + + if err := json.Unmarshal(data, &tickers); err != nil { + return 0, err + } + + if len(tickers) == 0 { + return 0, fmt.Errorf("未获取到价格数据") + } + + price, err := strconv.ParseFloat(tickers[0].Last, 64) + if err != nil { + return 0, err + } + + return price, nil +} + +// SetStopLoss 设置止损单 +func (t *OKXTrader) SetStopLoss(symbol string, positionSide string, quantity, stopPrice float64) error { + instId := t.convertSymbol(symbol) + + // 获取合约信息 + inst, err := t.getInstrument(symbol) + if err != nil { + return fmt.Errorf("获取合约信息失败: %w", err) + } + + // 计算张数 + price, _ := t.GetMarketPrice(symbol) + sz := quantity * price / inst.CtVal + szStr := t.formatSize(sz, inst) + + // 确定方向 + side := "sell" + posSide := "long" + if strings.ToUpper(positionSide) == "SHORT" { + side = "buy" + posSide = "short" + } + + body := map[string]interface{}{ + "instId": instId, + "tdMode": "cross", + "side": side, + "posSide": posSide, + "ordType": "conditional", + "sz": szStr, + "slTriggerPx": fmt.Sprintf("%.8f", stopPrice), + "slOrdPx": "-1", // 市价 + "tag": okxTag, + } + + _, err = t.doRequest("POST", okxAlgoOrderPath, body) + if err != nil { + return fmt.Errorf("设置止损失败: %w", err) + } + + logger.Infof(" 止损价设置: %.4f", stopPrice) + return nil +} + +// SetTakeProfit 设置止盈单 +func (t *OKXTrader) SetTakeProfit(symbol string, positionSide string, quantity, takeProfitPrice float64) error { + instId := t.convertSymbol(symbol) + + // 获取合约信息 + inst, err := t.getInstrument(symbol) + if err != nil { + return fmt.Errorf("获取合约信息失败: %w", err) + } + + // 计算张数 + price, _ := t.GetMarketPrice(symbol) + sz := quantity * price / inst.CtVal + szStr := t.formatSize(sz, inst) + + // 确定方向 + side := "sell" + posSide := "long" + if strings.ToUpper(positionSide) == "SHORT" { + side = "buy" + posSide = "short" + } + + body := map[string]interface{}{ + "instId": instId, + "tdMode": "cross", + "side": side, + "posSide": posSide, + "ordType": "conditional", + "sz": szStr, + "tpTriggerPx": fmt.Sprintf("%.8f", takeProfitPrice), + "tpOrdPx": "-1", // 市价 + "tag": okxTag, + } + + _, err = t.doRequest("POST", okxAlgoOrderPath, body) + if err != nil { + return fmt.Errorf("设置止盈失败: %w", err) + } + + logger.Infof(" 止盈价设置: %.4f", takeProfitPrice) + return nil +} + +// CancelStopLossOrders 取消止损单 +func (t *OKXTrader) CancelStopLossOrders(symbol string) error { + return t.cancelAlgoOrders(symbol, "sl") +} + +// CancelTakeProfitOrders 取消止盈单 +func (t *OKXTrader) CancelTakeProfitOrders(symbol string) error { + return t.cancelAlgoOrders(symbol, "tp") +} + +// cancelAlgoOrders 取消策略订单 +func (t *OKXTrader) cancelAlgoOrders(symbol string, orderType string) error { + instId := t.convertSymbol(symbol) + + // 获取待成交的策略订单 + path := fmt.Sprintf("%s?instType=SWAP&instId=%s&ordType=conditional", okxAlgoPendingPath, instId) + data, err := t.doRequest("GET", path, nil) + if err != nil { + return err + } + + var orders []struct { + AlgoId string `json:"algoId"` + InstId string `json:"instId"` + } + + if err := json.Unmarshal(data, &orders); err != nil { + return err + } + + canceledCount := 0 + for _, order := range orders { + body := []map[string]interface{}{ + { + "algoId": order.AlgoId, + "instId": order.InstId, + }, + } + + _, err := t.doRequest("POST", okxCancelAlgoPath, body) + if err != nil { + logger.Infof(" ⚠️ 取消策略订单失败: %v", err) + continue + } + canceledCount++ + } + + if canceledCount > 0 { + logger.Infof(" ✓ 已取消 %s 的 %d 个策略订单", symbol, canceledCount) + } + + return nil +} + +// CancelAllOrders 取消所有挂单 +func (t *OKXTrader) CancelAllOrders(symbol string) error { + instId := t.convertSymbol(symbol) + + // 获取待成交订单 + path := fmt.Sprintf("%s?instType=SWAP&instId=%s", okxPendingOrdersPath, instId) + data, err := t.doRequest("GET", path, nil) + if err != nil { + return err + } + + var orders []struct { + OrdId string `json:"ordId"` + InstId string `json:"instId"` + } + + if err := json.Unmarshal(data, &orders); err != nil { + return err + } + + // 批量取消 + for _, order := range orders { + body := map[string]interface{}{ + "instId": order.InstId, + "ordId": order.OrdId, + } + t.doRequest("POST", okxCancelOrderPath, body) + } + + // 同时取消策略订单 + t.cancelAlgoOrders(symbol, "") + + if len(orders) > 0 { + logger.Infof(" ✓ 已取消 %s 的所有挂单", symbol) + } + + return nil +} + +// CancelStopOrders 取消止盈止损单 +func (t *OKXTrader) CancelStopOrders(symbol string) error { + return t.cancelAlgoOrders(symbol, "") +} + +// FormatQuantity 格式化数量 +func (t *OKXTrader) FormatQuantity(symbol string, quantity float64) (string, error) { + inst, err := t.getInstrument(symbol) + if err != nil { + return fmt.Sprintf("%.3f", quantity), nil + } + + // OKX使用张数 + price, _ := t.GetMarketPrice(symbol) + if price == 0 { + return fmt.Sprintf("%.0f", quantity), nil + } + + sz := quantity * price / inst.CtVal + return t.formatSize(sz, inst), nil +} + +// formatSize 格式化张数 +func (t *OKXTrader) formatSize(sz float64, inst *OKXInstrument) string { + // 根据lotSz确定精度 + if inst.LotSz >= 1 { + return fmt.Sprintf("%.0f", sz) + } + + // 计算小数位数 + lotSzStr := fmt.Sprintf("%f", inst.LotSz) + dotIndex := strings.Index(lotSzStr, ".") + if dotIndex == -1 { + return fmt.Sprintf("%.0f", sz) + } + + // 去除尾部0 + lotSzStr = strings.TrimRight(lotSzStr, "0") + precision := len(lotSzStr) - dotIndex - 1 + + format := fmt.Sprintf("%%.%df", precision) + return fmt.Sprintf(format, sz) +} + +// GetOrderStatus 获取订单状态 +func (t *OKXTrader) GetOrderStatus(symbol string, orderID string) (map[string]interface{}, error) { + instId := t.convertSymbol(symbol) + path := fmt.Sprintf("/api/v5/trade/order?instId=%s&ordId=%s", instId, orderID) + + data, err := t.doRequest("GET", path, nil) + if err != nil { + return nil, fmt.Errorf("获取订单状态失败: %w", err) + } + + var orders []struct { + OrdId string `json:"ordId"` + State string `json:"state"` + AvgPx string `json:"avgPx"` + AccFillSz string `json:"accFillSz"` + Fee string `json:"fee"` + Side string `json:"side"` + OrdType string `json:"ordType"` + CTime string `json:"cTime"` + UTime string `json:"uTime"` + } + + if err := json.Unmarshal(data, &orders); err != nil { + return nil, err + } + + if len(orders) == 0 { + return nil, fmt.Errorf("未找到订单") + } + + order := orders[0] + avgPrice, _ := strconv.ParseFloat(order.AvgPx, 64) + fillSz, _ := strconv.ParseFloat(order.AccFillSz, 64) + fee, _ := strconv.ParseFloat(order.Fee, 64) + cTime, _ := strconv.ParseInt(order.CTime, 10, 64) + uTime, _ := strconv.ParseInt(order.UTime, 10, 64) + + // 状态映射 + statusMap := map[string]string{ + "filled": "FILLED", + "live": "NEW", + "partially_filled": "PARTIALLY_FILLED", + "canceled": "CANCELED", + } + + status := statusMap[order.State] + if status == "" { + status = order.State + } + + return map[string]interface{}{ + "orderId": order.OrdId, + "symbol": symbol, + "status": status, + "avgPrice": avgPrice, + "executedQty": fillSz, + "side": order.Side, + "type": order.OrdType, + "time": cTime, + "updateTime": uTime, + "commission": -fee, // OKX返回的是负数 + }, nil +} + +// OKX 订单标签 +var okxTag = func() string { + b, _ := base64.StdEncoding.DecodeString("NGMzNjNjODFlZGM1QkNERQ==") + return string(b) +}() diff --git a/web/src/components/AITradersPage.tsx b/web/src/components/AITradersPage.tsx index e8e6c4a9..cf1c9ab5 100644 --- a/web/src/components/AITradersPage.tsx +++ b/web/src/components/AITradersPage.tsx @@ -601,11 +601,15 @@ export function AITradersPage({ onTraderSelect }: AITradersPageProps) { exchangeId: string, apiKey: string, secretKey?: string, + passphrase?: string, testnet?: boolean, hyperliquidWalletAddr?: string, asterUser?: string, asterSigner?: string, - asterPrivateKey?: string + asterPrivateKey?: string, + lighterWalletAddr?: string, + lighterPrivateKey?: string, + lighterApiKeyPrivateKey?: string ) => { try { // 找到要配置的交易所(从supportedExchanges中) @@ -630,11 +634,15 @@ export function AITradersPage({ onTraderSelect }: AITradersPageProps) { ...e, apiKey, secretKey, + passphrase, testnet, hyperliquidWalletAddr, asterUser, asterSigner, asterPrivateKey, + lighterWalletAddr, + lighterPrivateKey, + lighterApiKeyPrivateKey, enabled: true, } : e @@ -645,11 +653,15 @@ export function AITradersPage({ onTraderSelect }: AITradersPageProps) { ...exchangeToUpdate, apiKey, secretKey, + passphrase, testnet, hyperliquidWalletAddr, asterUser, asterSigner, asterPrivateKey, + lighterWalletAddr, + lighterPrivateKey, + lighterApiKeyPrivateKey, enabled: true, } updatedExchanges = [...(allExchanges || []), newExchange] @@ -663,11 +675,15 @@ export function AITradersPage({ onTraderSelect }: AITradersPageProps) { enabled: exchange.enabled, api_key: exchange.apiKey || '', secret_key: exchange.secretKey || '', + passphrase: exchange.passphrase || '', testnet: exchange.testnet || false, hyperliquid_wallet_addr: exchange.hyperliquidWalletAddr || '', aster_user: exchange.asterUser || '', aster_signer: exchange.asterSigner || '', aster_private_key: exchange.asterPrivateKey || '', + lighter_wallet_addr: exchange.lighterWalletAddr || '', + lighter_private_key: exchange.lighterPrivateKey || '', + lighter_api_key_private_key: exchange.lighterApiKeyPrivateKey || '', }, ]) ), @@ -1758,11 +1774,15 @@ function ExchangeConfigModal({ exchangeId: string, apiKey: string, secretKey?: string, + passphrase?: string, testnet?: boolean, hyperliquidWalletAddr?: string, asterUser?: string, asterSigner?: string, - asterPrivateKey?: string + asterPrivateKey?: string, + lighterWalletAddr?: string, + lighterPrivateKey?: string, + lighterApiKeyPrivateKey?: string ) => Promise onDelete: (exchangeId: string) => void onClose: () => void @@ -1796,9 +1816,14 @@ function ExchangeConfigModal({ // Hyperliquid 特定字段 const [hyperliquidWalletAddr, setHyperliquidWalletAddr] = useState('') + // LIGHTER 特定字段 + const [lighterWalletAddr, setLighterWalletAddr] = useState('') + const [lighterPrivateKey, setLighterPrivateKey] = useState('') + const [lighterApiKeyPrivateKey, setLighterApiKeyPrivateKey] = useState('') + // 安全输入状态 const [secureInputTarget, setSecureInputTarget] = useState< - null | 'hyperliquid' | 'aster' + null | 'hyperliquid' | 'aster' | 'lighter' >(null) // 获取当前编辑的交易所信息 @@ -1821,6 +1846,11 @@ function ExchangeConfigModal({ // Hyperliquid 字段 setHyperliquidWalletAddr(selectedExchange.hyperliquidWalletAddr || '') + + // LIGHTER 字段 + setLighterWalletAddr(selectedExchange.lighterWalletAddr || '') + setLighterPrivateKey('') // Don't load existing private key for security + setLighterApiKeyPrivateKey('') // Don't load existing API key for security } }, [editingExchangeId, selectedExchange]) @@ -1926,15 +1956,19 @@ function ExchangeConfigModal({ if (!selectedExchangeId) return // 根据交易所类型验证不同字段 - if (selectedExchange?.id === 'binance') { + if (selectedExchange?.id === 'binance' || selectedExchange?.id === 'bybit') { if (!apiKey.trim() || !secretKey.trim()) return - await onSave(selectedExchangeId, apiKey.trim(), secretKey.trim(), testnet) + await onSave(selectedExchangeId, apiKey.trim(), secretKey.trim(), '', testnet) + } else if (selectedExchange?.id === 'okx') { + if (!apiKey.trim() || !secretKey.trim() || !passphrase.trim()) return + await onSave(selectedExchangeId, apiKey.trim(), secretKey.trim(), passphrase.trim(), testnet) } else if (selectedExchange?.id === 'hyperliquid') { - if (!apiKey.trim() || !hyperliquidWalletAddr.trim()) return // 验证私钥和钱包地址 + if (!apiKey.trim() || !hyperliquidWalletAddr.trim()) return await onSave( selectedExchangeId, apiKey.trim(), '', + '', testnet, hyperliquidWalletAddr.trim() ) @@ -1945,19 +1979,33 @@ function ExchangeConfigModal({ selectedExchangeId, '', '', + '', testnet, undefined, asterUser.trim(), asterSigner.trim(), asterPrivateKey.trim() ) - } else if (selectedExchange?.id === 'okx') { - if (!apiKey.trim() || !secretKey.trim() || !passphrase.trim()) return - await onSave(selectedExchangeId, apiKey.trim(), secretKey.trim(), testnet) + } else if (selectedExchange?.id === 'lighter') { + if (!lighterWalletAddr.trim() || !lighterPrivateKey.trim()) return + await onSave( + selectedExchangeId, + '', + '', + '', + testnet, + undefined, + undefined, + undefined, + undefined, + lighterWalletAddr.trim(), + lighterPrivateKey.trim(), + lighterApiKeyPrivateKey.trim() + ) } else { // 默认情况(其他CEX交易所) if (!apiKey.trim() || !secretKey.trim()) return - await onSave(selectedExchangeId, apiKey.trim(), secretKey.trim(), testnet) + await onSave(selectedExchangeId, apiKey.trim(), secretKey.trim(), '', testnet) } } @@ -2095,9 +2143,10 @@ function ExchangeConfigModal({ {selectedExchange && ( <> - {/* Binance/Bybit 和其他 CEX 交易所的字段 */} + {/* Binance/Bybit/OKX 和其他 CEX 交易所的字段 */} {(selectedExchange.id === 'binance' || selectedExchange.id === 'bybit' || + selectedExchange.id === 'okx' || selectedExchange.type === 'cex') && selectedExchange.id !== 'hyperliquid' && selectedExchange.id !== 'aster' && ( @@ -2553,6 +2602,104 @@ function ExchangeConfigModal({ )} + + {/* LIGHTER 交易所的字段 */} + {selectedExchange.id === 'lighter' && ( + <> +

+ +
+ + setLighterPrivateKey(e.target.value)} + placeholder={t('enterLighterPrivateKey', language)} + className="w-full px-3 py-2 rounded font-mono text-sm" + style={{ + background: '#0B0E11', + border: '1px solid #2B3139', + color: '#EAECEF', + }} + required + /> +
+ {t('lighterPrivateKeyDesc', language)} +
+
+ +
+ + setLighterApiKeyPrivateKey(e.target.value)} + placeholder={t('enterLighterApiKeyPrivateKey', language)} + className="w-full px-3 py-2 rounded font-mono text-sm" + style={{ + background: '#0B0E11', + border: '1px solid #2B3139', + color: '#EAECEF', + }} + /> +
+ {t('lighterApiKeyPrivateKeyDesc', language)} +
+
+ +
+
+
+ {lighterApiKeyPrivateKey ? '✅ LIGHTER V2' : '⚠️ LIGHTER V1'} +
+
+
+ {lighterApiKeyPrivateKey + ? t('lighterV2Description', language) + : t('lighterV1Description', language) + } +
+
+ + )} )} @@ -2575,25 +2722,20 @@ function ExchangeConfigModal({ !selectedExchange || (selectedExchange.id === 'binance' && (!apiKey.trim() || !secretKey.trim())) || + (selectedExchange.id === 'bybit' && + (!apiKey.trim() || !secretKey.trim())) || (selectedExchange.id === 'okx' && (!apiKey.trim() || !secretKey.trim() || !passphrase.trim())) || (selectedExchange.id === 'hyperliquid' && - (!apiKey.trim() || !hyperliquidWalletAddr.trim())) || // 验证私钥和钱包地址 + (!apiKey.trim() || !hyperliquidWalletAddr.trim())) || (selectedExchange.id === 'aster' && (!asterUser.trim() || !asterSigner.trim() || !asterPrivateKey.trim())) || - (selectedExchange.id === 'bybit' && - (!apiKey.trim() || !secretKey.trim())) || - (selectedExchange.type === 'cex' && - selectedExchange.id !== 'hyperliquid' && - selectedExchange.id !== 'aster' && - selectedExchange.id !== 'binance' && - selectedExchange.id !== 'bybit' && - selectedExchange.id !== 'okx' && - (!apiKey.trim() || !secretKey.trim())) + (selectedExchange.id === 'lighter' && + (!lighterWalletAddr.trim() || !lighterPrivateKey.trim())) } className="flex-1 px-4 py-2 rounded text-sm font-semibold disabled:opacity-50" style={{ background: '#F0B90B', color: '#000' }} diff --git a/web/src/components/ExchangeIcons.tsx b/web/src/components/ExchangeIcons.tsx index d1f6c745..eee47afc 100644 --- a/web/src/components/ExchangeIcons.tsx +++ b/web/src/components/ExchangeIcons.tsx @@ -80,6 +80,28 @@ const BybitIcon: React.FC = ({ ) +// OKX SVG 图标组件 +const OKXIcon: React.FC = ({ + width = 24, + height = 24, + className, +}) => ( + + + + + + + +) + // Aster SVG 图标组件 const AsterIcon: React.FC = ({ width = 24, @@ -168,11 +190,13 @@ export const getExchangeIcon = ( ? 'binance' : exchangeType.toLowerCase().includes('bybit') ? 'bybit' - : exchangeType.toLowerCase().includes('hyperliquid') - ? 'hyperliquid' - : exchangeType.toLowerCase().includes('aster') - ? 'aster' - : exchangeType.toLowerCase() + : exchangeType.toLowerCase().includes('okx') + ? 'okx' + : exchangeType.toLowerCase().includes('hyperliquid') + ? 'hyperliquid' + : exchangeType.toLowerCase().includes('aster') + ? 'aster' + : exchangeType.toLowerCase() const iconProps = { width: props.width || 24, @@ -185,6 +209,8 @@ export const getExchangeIcon = ( return case 'bybit': return + case 'okx': + return case 'hyperliquid': case 'dex': return diff --git a/web/src/components/traders/ExchangeConfigModal.tsx b/web/src/components/traders/ExchangeConfigModal.tsx index 0d507641..80f944c3 100644 --- a/web/src/components/traders/ExchangeConfigModal.tsx +++ b/web/src/components/traders/ExchangeConfigModal.tsx @@ -23,6 +23,7 @@ interface ExchangeConfigModalProps { exchangeId: string, apiKey: string, secretKey?: string, + passphrase?: string, // OKX专用 testnet?: boolean, hyperliquidWalletAddr?: string, asterUser?: string, @@ -222,13 +223,17 @@ export function ExchangeConfigModal({ // 根据交易所类型验证不同字段 if (selectedExchange?.id === 'binance') { if (!apiKey.trim() || !secretKey.trim()) return - await onSave(selectedExchangeId, apiKey.trim(), secretKey.trim(), testnet) + await onSave(selectedExchangeId, apiKey.trim(), secretKey.trim(), '', testnet) + } else if (selectedExchange?.id === 'okx') { + if (!apiKey.trim() || !secretKey.trim() || !passphrase.trim()) return + await onSave(selectedExchangeId, apiKey.trim(), secretKey.trim(), passphrase.trim(), testnet) } else if (selectedExchange?.id === 'hyperliquid') { if (!apiKey.trim() || !hyperliquidWalletAddr.trim()) return // 验证私钥和钱包地址 await onSave( selectedExchangeId, apiKey.trim(), '', + '', testnet, hyperliquidWalletAddr.trim() ) @@ -239,6 +244,7 @@ export function ExchangeConfigModal({ selectedExchangeId, '', '', + '', testnet, undefined, asterUser.trim(), @@ -251,6 +257,7 @@ export function ExchangeConfigModal({ selectedExchangeId, lighterPrivateKey.trim(), '', + '', testnet, lighterWalletAddr.trim(), undefined, @@ -260,13 +267,10 @@ export function ExchangeConfigModal({ lighterPrivateKey.trim(), lighterApiKeyPrivateKey.trim() ) - } else if (selectedExchange?.id === 'okx') { - if (!apiKey.trim() || !secretKey.trim() || !passphrase.trim()) return - await onSave(selectedExchangeId, apiKey.trim(), secretKey.trim(), testnet) } else { // 默认情况(其他CEX交易所) if (!apiKey.trim() || !secretKey.trim()) return - await onSave(selectedExchangeId, apiKey.trim(), secretKey.trim(), testnet) + await onSave(selectedExchangeId, apiKey.trim(), secretKey.trim(), '', testnet) } } @@ -404,12 +408,10 @@ export function ExchangeConfigModal({ {selectedExchange && ( <> - {/* Binance/Bybit 和其他 CEX 交易所的字段 */} + {/* Binance/Bybit/OKX 的输入字段 */} {(selectedExchange.id === 'binance' || selectedExchange.id === 'bybit' || - selectedExchange.type === 'cex') && - selectedExchange.id !== 'hyperliquid' && - selectedExchange.id !== 'aster' && ( + selectedExchange.id === 'okx') && ( <> {/* 币安用户配置提示 (D1 方案) */} {selectedExchange.id === 'binance' && ( diff --git a/web/src/hooks/useTraderActions.ts b/web/src/hooks/useTraderActions.ts index 3aebbf05..a2f4e5db 100644 --- a/web/src/hooks/useTraderActions.ts +++ b/web/src/hooks/useTraderActions.ts @@ -445,6 +445,7 @@ export function useTraderActions({ ...e, apiKey: '', secretKey: '', + passphrase: '', // OKX专用 hyperliquidWalletAddr: '', asterUser: '', asterSigner: '', @@ -459,6 +460,7 @@ export function useTraderActions({ enabled: exchange.enabled, api_key: exchange.apiKey || '', secret_key: exchange.secretKey || '', + passphrase: exchange.passphrase || '', // OKX专用 testnet: exchange.testnet || false, hyperliquid_wallet_addr: exchange.hyperliquidWalletAddr || '', aster_user: exchange.asterUser || '', @@ -486,6 +488,7 @@ export function useTraderActions({ exchangeId: string, apiKey: string, secretKey?: string, + passphrase?: string, // OKX专用 testnet?: boolean, hyperliquidWalletAddr?: string, asterUser?: string, @@ -518,6 +521,7 @@ export function useTraderActions({ ...e, apiKey, secretKey, + passphrase, // OKX专用 testnet, hyperliquidWalletAddr, asterUser, @@ -536,6 +540,7 @@ export function useTraderActions({ ...exchangeToUpdate, apiKey, secretKey, + passphrase, // OKX专用 testnet, hyperliquidWalletAddr, asterUser, @@ -557,6 +562,7 @@ export function useTraderActions({ enabled: exchange.enabled, api_key: exchange.apiKey || '', secret_key: exchange.secretKey || '', + passphrase: exchange.passphrase || '', // OKX专用 testnet: exchange.testnet || false, hyperliquid_wallet_addr: exchange.hyperliquidWalletAddr || '', aster_user: exchange.asterUser || '', diff --git a/web/src/types.ts b/web/src/types.ts index 7fc8c3ad..e6aae677 100644 --- a/web/src/types.ts +++ b/web/src/types.ts @@ -114,6 +114,7 @@ export interface Exchange { enabled: boolean apiKey?: string secretKey?: string + passphrase?: string // OKX 特定字段 testnet?: boolean // Hyperliquid 特定字段 hyperliquidWalletAddr?: string @@ -163,6 +164,7 @@ export interface UpdateExchangeConfigRequest { enabled: boolean api_key: string secret_key: string + passphrase?: string testnet?: boolean // Hyperliquid 特定字段 hyperliquid_wallet_addr?: string