From f1320b91bd9626a95efa8e8ea70dd22b3ee46766 Mon Sep 17 00:00:00 2001 From: "hinto.janai" Date: Sun, 16 Apr 2023 12:49:48 -0400 Subject: [PATCH] gui: change `Style` Everything to `Monospace`, set all colors to `ACCENT_COLOR`, round all corners, set all widget text to `255, 255, 255` (rgb). --- Cargo.lock | 1 + Cargo.toml | 2 + images/banner.png | Bin 46620 -> 38809 bytes src/constants.rs | 146 +++++++++++++++++++++++++++++++++++++--------- src/gupax.rs | 9 ++- src/main.rs | 34 +++++------ src/p2pool.rs | 15 ++--- src/status.rs | 7 +-- src/xmrig.rs | 10 +--- 9 files changed, 147 insertions(+), 77 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 61ea56a..e626fad 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1968,6 +1968,7 @@ dependencies = [ "hyper-tls", "image", "is_elevated", + "lazy_static", "log", "num-format", "num_cpus", diff --git a/Cargo.toml b/Cargo.toml index 255c565..f3be14c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,6 +7,7 @@ documentation = "https://github.com/hinto-janai/gupax" edition = "2021" [profile.release] +panic = "abort" debug = false strip = "symbols" codegen-units = 1 @@ -45,6 +46,7 @@ figment = { version = "0.10.8", features = ["toml"] } hyper = "0.14.20" hyper-tls = "0.5.0" image = { version = "0.24.4", features = ["png"] } +lazy_static = "1.4.0" log = "0.4.17" num_cpus = "1.13.1" num-format = { version = "0.4.3", default-features = false } diff --git a/images/banner.png b/images/banner.png index 7fb2d6fe8c392107aadd18a4f34665c9e1407a49..aa8870efb7c48c781adfa9481feb189c51f990d1 100644 GIT binary patch literal 38809 zcmdRVWmjBV({1DK5D4xN2yVe$8VT+W!9BRU2M8V-cbDK!2bbXP7Tn$8cAj(2`ycKH zdJKAu-FvNCRkK#jniZ+^SsD$Q5E%dfpaEqhQ~&^2YXATW84(`xjjVUw6Xc&zD{*lp zptv}><5vfBD_b)FfIi+gUQnh-gt*U8HClxM{T-Impik5S?6gghaWn z9H4l@))sy9JK|@p3clt~M~52>h(ToJv7bLjF{^C7C5T09VZ=UNoUU!3l911g$k(;f z0u-7?)hLy!M)cS~AUrW%}FTOYO} z$_|oPz6faWIylV@tIxI5`5V(0SATTQ+-1eq>cysxP*RdaGFyn4DoZq>kbJs8f2Ejb ziI=0$MEXXIQX&$3{P^o_!@WtvkA0UWbW3ET&q+us;8Z_H**W9PbigVD@M^Ik>+rzn zYP6epts@sr4CT8F?sJt>y$u*4F*+amuCSQ=%o*xK>LHx(Fbw_DB;q)FRM`?YjXz@DeC?F2Zl;Hv3%rS(v;+VjfD54T={q6=0LTGA z2~jnVrQ=n14>k2i@Wok6qP)3^41KOF0u~gW)6a?y{9_w&cm1|18_hx3`Aqddd81!d z3yv?5aITtIcqm#}5?D%JXqkWmyFCT&J-SqMS=&#+ zM*r^wMn(7V48n5Fp#-T3FM!xwKV6Xt>aK%B1!-{qJElC~o;Rt;!BEJEYs4p-NRXE5 zHN_V{8Y-Lr4pAa{>@Fj)NQ4sWjanH8UyUy5BBNLIzoir$U~Ti|rcv_(Y`#lHk)<99 zjL%}j|Mz|@Gk8O|uQZr*U^&ZbYX&-BJ?3le|k8d zVO5{M%-ts~lhp59$Q6%G!drN?d|lW6P|5VarAVMwk4t;RcFz>cQdfv$b6phD^$5~! zY}z1&_M!XPyYmTo=b#K9M-`zA??apGDt!hc@sX(U38~~Tx1)r~v*PaKDv6XK z3DGU>AVC+>%T6TasekxELtrgfLOEf>riS&Q;V60eByMOAVsM7ak#QJigvXrypg3-V zfNJy;h7wpV{J!u7RXT>dj>0M3e@tX4MeCnRt`$vfy%m#Ng#euC<#^fnaSD55lthY3 z9FvD3v;;UNMlI|H;&a}-Ej;-2+>SR|E}i<=;rRg%*Xar<{>&`xXa}ow1sFt>`iZ{p zs;M1ezq#GXE$O4EK9{HWhu*Kd8WQxEYXE!}bw=(4Q!VXy;;0H&33#Fu&>{WL*jPK> zsZaflffLEtNH*~j3eUW%Vwlnh+z{XD+NPH0B9OetVqZQ^afp18;DWmrIU)szZiakD z^s20y@eDQ0y+%!93s$~+!!EUQ=ij7-;Gjkt5uL;Bzqb_B$7|N$ zW)=#4$dQ&Z@-9k9@v4*$$NrxqQd-|F#KE}J`jX498hT#7(>8N9gKR?ii+3A|P2VIG-!ae?hmH+*m6&zrr zyxUOEyk4ZA1*A94BfJ5Rd&g+L4x(FT#hr5#hmAi_vZ{F%`~!1XsZ10#q>vM*nocSu zS1wrHc0PY{5UGCPpI{=5`rR9-w_#uJ+2rQAn>!=na_-8-*Y(9>L!}?8GXH!{(@OJK zoVCl^C#!$sg|bXS%t$byBvSfUk_nR7p9ABp&VqAypI4he)W|_0G>M}?Bck#v6d?dD zb{=wsNrMNM>|UIYcnslB?QWKTf~3GcNQ=lY*{Uz_JH&oS7iUkh8-9@z1+fZL{ce4n z(t(}GOyQ;QHTkoJ;6egrGPk5KD{nxvW;gRc&-da25i171WA#{Za%l6|JcSQx5HhPpzsNT@H(-|ymp2CN;R{e}o_kn@fnp%KRB z$i30?Mi~FbrE`z-8Z;2-hmFR_{)YHF_0vDFgGC{$AaPV+(A@JfONSE(LhStGD&eG) z28qDIrOVnAjPb0W`Bwxtak$-7VqXJdy`OrWl{eP3gVs4CfrdwY@{QI;WO@iZZ4A*f2Z%*{mCwd;sKZjR1~xnN;77j zwP1*kiWc$F3~Ed4$YB2a@VVLT{^l9L0fKCz*j!E<)9P}X885fJ3RoVcQ~|{gC%B~{ z`Qe`E-CVoQoTgB1*LfkENtpi{1J3GpdE$49NUt!&5x)!LBEPy{u*i*p1e{D^4I4Sm zKOqU!O0^-s$sk{eWHWTo|DvCwM*IiUmcJ6k9$tKSYN+H2MQl-!YvXUqT*T@O_52u zlWShW{iF)4zFT4uX4b3iXl`Wlw+WLU_IaJy9j=||jw#HY4NUL=esh6Ehk2*fpx=!U zbLlRcN!!86JBAOw0DlNMVrrntC|JyWr-l9-x(F&6oBf~dfE=MthsptKrT!sjJrhyJ zp=kxM(`;yT--D*$xzoLT<}`U6DocerbI+U&s{L99TutJGcCHF3gTd<5^MDHB}qkX+w8^^_?uv7vkkfvZX>|=vH!WcX) zK$Ef|`d=q(%nwvU5_bXS(OxvvF2xp{z2EEI%Lv*cuo7|t*n*kBGC83k;{S8Hh>`;; ziU=X#40X7h#-h@R+cFTPU9MRw5);koBWsr9h4DYukoeP(j46>#ZJi*_$Y@*8X$N|{@O;?vBV3YU+i zlRlPaF%(ii!%&mZphgXVls%q&o~PV8*dOYasvYF!u5P?CRdU|0wK$ zKTD?Pyc1?=N>#1wMd&Q$uq+BK*=$y>(XRZ_a(3#l)FuUv=#ntqC;d93Rsl_x9@Tbr zsrhn3^u4sp{!E^Y+epQ28k0`FS^9si6R`s(%xMdugk-?P`_AZP zrjasl=uxtYcS@=@`g*GRKPw8F|6Hld$w~RWDcF5%G&KN5@}8wDmIsuPjAu@_SPb`t zqYv`6s?KwF=r&kw%QqC$c)p#*QCt7}f`YifE+9c3B(+AK=;qLq^2qPuzv5LoG^(&R z&CjX%b~&9C6?eV4Ee{-N!fiVd2^(}V++RGZn~7+n^D@4sQ>EmUU zGf=}H=G_(EN}x;jf21@X{^Vd870jRirSD8U_KkW8EGYYqA*DP ztlG~Z;w6B<@&&XTw532K?fbIW>aNLxrq#h=d--s^L)PBO6`o-?j>=m+y4Zn!x-^xR zl?MAHT11TeuNj)F1Kxv6v7-hPB@|4&P=8>@5fxpbgyr!v8o*dsSEkystUWJOu*`Kf zTXwQc@=5XTcY0U?d4nosdpM-X$-apIQzksGf#CSJ>9Xt44BBr4d)_^=C$1}rGxwyF? z96tk5kIZ3N{orQq-R}&cyJq0{JEqDC`C*umR3e_RF|UW6LL!D?xg7$!e+*}tgSmN0 zG!J7q|JG#*U8-z~=9h!3CGOF3LTN-%GlWc3?U407N|_DHMK8vFK}BEv^$ufQI|;Eb zDBapMM`Hc?*Pp(`*XzANCL9}e`uECI63`QW6NG}9Vf|@P5!LW8(S z%3qcwuPpqeX*Vx+^Wh|j&_cLE^|yhSfww_rQspK|Yf&bQAV~d)H)F1L_?7E&Ee6|@ zB194o>J64XApekTH4uGJWetro614vws=}dreg5Qo=yTt6z0ax&<@|)wr||pXJXH4T>vMS zYA_>#JM<~WWrnObAJsqkB-a1H?54CvtVX_>Wgai(@FMnM+?qgSO%-*N+pJgwA#+kD{9N z!kkDwZ)#_nY!!0Kb31TjBl(_&M2tlIV3RNi4=J(`ev6fA(+eiX_w1HszNe-LiFgwK zxtg+-%1TTCoQc@KEPjJ?x${`ecu425{Z2jl`m%jxm0o1%t~)8<+2ee;+KoF7 z_}qbht&~Hy@4+m((DCX-6DHOsU=w(!EN|>RHh=h_o8X6R=R*?L-_T7)pq0H(5V9-d zuJKvDL}ZMkTE+*@&m&t#)-F!ws)50* zAi7`+5TO~0F^IxeiiuAvddjR~zeB&n*K<(k!Y2=I4WvQPs6jt1DzkjFy`VP_OG`o0 z%__F9#PmUmDOc%()hqUn+sL37MI>Q-5?yOEp+emk?~C2QYJnCN9rL%&#YUm}THB|_ zPP-*n%hNmbFfnC8<3sO$UZ?vv=x3zixE^YfhNkqMPi+bFhYigu17~E@DQdoq`&Z{q z)cvu}QA@o1BH9J=-!3oyEH?;ufjgCOrmGxbtRK0;(s{vUH%!$vqWqFxw2-IU6GM z=cJ!k0qxuCqprjnQum{%a5^}oDsb02rq-zzBp^wGN7JA~Ur30EKkGfk*+_!PVrfv} zZxDQ3nUtmOoh|V?nJrJR(sJDzO(PrydQ|o2^JXb0rdiXl6@TK2VRKP>Js->moW93M zuPw8EnwvKC^=jc94ty}4Zaw)aGXwiuX@>b@!-z8z1M9oWB^eYRwv<$b#>w)1W!5ta zJx*0l&M?n>#n5gGR`u+H`*!;#nCvTapB0Q&=OEv9+YN@KPULLobT_=t5Cy?%QeUH( z>udV!LP*VLdk9-E^uF&yi1aAIrjNPGe4L_md9X0Yb_%m*4qfdoiQ{xv z%@`BC4|T)Uq^yJWAM&+}%Vyw$v9g77R!?!;V}FA6WiTQ{1O^(qn;w~zisd*7-}gLs zw@rB2vS$Q0EZYqnwPTS{1;hd;+FNq25D$!(cGBPvwWq9w6E<%Y_QfsxBDzH_!*X~L z2w<0JZ5~hNMJ-<=(O<>e1kQ}Dn=b#nP#Tw>srCqH7qGq?9Ys2K!gYkF@SF3@3jaXB zUB-L#&Z=n{eB={=`6gB>alf@oEx&7-x@R_Zc&Y|rAdcB6HK>)T^78Kv%O}b-D|mXy zkm02LUJfX=S4)jMSDM-C3(LydRilqJMjtwp{Tw8UQBhC4JqSCm6_p;xw>C7fs9)DCfbRd$kQdtpkZQrp_Ye8RtOxzCW~t9GQ0 zUDEt=a0b))AUCilK+^ZH-%atOKDC6imCPV0mwAqP{0m~s?EZ5haJA`_Z2Da~FWM*= z_Q}!>H*SmJIA4x-WrEnXt{!5*Gas}*Go*KNa4P}xi;8VhXv+Cla(|R4Og=11#W ziP4Nvn{vt<9o6d2TDi90A9-7(OtPgI+XFQN?ICB-&pPhRwXci)L_3&Ss-Ja1zwJE{ zTrlhJJh@I(xdvAMWY~rrE+cZg&;O7GEw;EqOl}p3dWn`If!v>S> zkG(IRuwmp(E3|i|?2FQMWt=1=j1;@<%PLN`&!6?(%O`JfXoe2Ulj5rSr-4cC@L74= zPKP_T)%(+!n>f2Rfkx<^0E}~(HT_pR7~&9=j-{iwqmnmw?#;rIWhguM2X{s{tLA~- z(OV&x%SA3GlCf{Q_W@?E4YOIi>k?m>&z&s{7A~8aSKCI$2q-*5J?Y01MK~|ve{mgR z8i|Sd_iw`CZ>cImApoP_s(M8HbFKu}^Tc^*Ues{s7sM|@*ATpb^OjXP)9^FYCzpCL z@n3CJaEWjE?P10g@-#YS_weP_^DhnJJnr6a^1>%RQ%CIp*bhme!iIi{bJ9W5?jULV zsy&S1arkXl+m~O%yk_YYI;rL;HJDmZA7M10xzK#ja1a4#?{gE7T@W6j!vVgjskSF> zF2z-&2_@R~t|N^y9dm`g7)Q*`D3oq6SuwI@D7AyC{rQ&c*tPyE9Al9j=UPFyJGQ6k zJKMjwA;&^STiM9^{%AhL;a)5oT6>DZWJ~Y&hCn9I<5%?!P<-=z(YDSeia>_X0KrW? zDcdRI->Y0azpYg$?`~v)u8D$EHUu@Rr7+SzgriOBeK|~w_}F#DY4RL%_?Lj1_r0!4 zM)nU4@C4U^8^G#d86)Ku%Y*#KYB78A2klp;9pET)3M@FB7YWV zOy?K*dx?FT?{c6jB-CQgf}dN zT$Mn$*`EpwkrjVoIg!IvW>0v+u~;?n=SnTxG%brbnPNAcxIWen#q%RrCI60maCUti zbo<(jIqKFzLxG9K?}ouL2=D9kvB_BUqA13xb6Ayx6|Nbn8SNgiB<3uP>nd`qB#UM_ zipTJB&89EjqtbM_iN~wnHkr}eG~|BjO~!*S!;;fge~aXJw&#YCkGIg5%D3)Y^xV!g z&WpJSq&)(kL9IaQ5YFf-D70sT)$uc~A;6gx*zuTgC{dkPM_IeR#xaHj)URfSQ>luF z3AJQSD8a%Kz$dU6xa?k?S@Q9^ZMx9G9LH!!(u4X&r{~^JI7-Ou@}Nn+b%XQH7J@0w z_=X0grSolhXUf`PDk@pDCNb4<@#LI4<}NNgIpWZMoWM27d8GX$vKz$l4OpSZ73NXm zrm7qW39^Zm9O+2D3u~ovwI9*`jl&Uj(<^Mq$C&yB$VmhV9K>5%U$2kreh0Uex&{V( z<75`fNLZwz97*S8Eb1DzI$U1&{5j0jVpKMqtQOl#4bt*HCT6@lSmlA!4Q7qvZoM)F z8)aG8Aw|cZ8pUZ4^WxFF|Ja;dQm;gO6#VUs$qu3&i_?E3Y>&mq&hKGkJy=$qW@4|- zr%BOqPlgGxY}BqX@td>0LB z9&dpRqQsZ6;KO>Y&X;+~@}^!O^&AX_X)Ylrn*CuD3kDR+{s?WC{J1(@&Nq}m4iWdY zogkSf@!Tbb?C}*PZG(%0!@|Cv&PVFQ=}vBSbuTlEZ{&%tGJVvRsGq!kLi0_2>%0x&j$B54EpYLgDMew85PDc*&)@(^>7) z@B&EJmQ{8-%8jFRPbSnvyqzi0O>6JDU73ndFR`(lX@o4I+}f&Z-D;&q5D{!L5%~g7 zcsEp{{Q@ed!m#*K8M$S$ij4DzLM@RWsuVe25>P4wR84MP85bnS6bCOd%K7VHSnjWcJIfsQ8LYf%|%iv=cavP6O~xW zKIf-BN~hCmB2CQ`15JKqo_xrf{NEL1*`%YBe zl-=niS<%JhNkRYzTfp($ud&gv>s42nob0uDTiJ(wi>M#>&C7^_d6UWY5tL{~U=6wqi^* zfWy)^xmGYb2s9&_>HVUW;JmgQV}ZRW7MTsb4(Vt-!td%a#pRJ3YDmp+-l&u|UkcuzD+g!f7sJ$l*sT5$N-gP^%Jg46#0q>#T zps~G5PmvAv70DAAc|XD{<%f^XJY>;WJ`U%KNZiiI1-jueE9ZwRG|a7jwuG03chRjI zPwQz|eyK>drvA{hTz-YTCRW--Yntd=%MQxn|4L5k+ANFHC10VR8?SJY6C6`kl zW3_UUCEw9*9;oE8U0nU~MH66-$5j3v%3W+ZUo!V@nQ<+lsIKU%;fWT=iEAL@x-tH) zT9S=6ZRrCfgD+@vq(G=i!Yi6zp zuZq*ZbbYZZJ}B3$V0d;i*T*rSgli5wKg?`P9#%T#XZ+P%_PWHp$+TwB?m5W+W@U|a z?Tn--YC|E7<&*=dltAXaU2T~8&~~~<)(ocSjd0+1R`*hAs~HX&pIhwj{^Z-^=F?m& z6tCPR;V2aYYPUp9w|F4*#?)~!U|oh&0#^@mC71hHCya|;Emj&oWjp60RUNzxT@0uO z^aLK?3x~HT93E@JkkNQOJ=a*Rw$`ord72i0hzL6N8afGIz;{0$QFA`Vo3<3TmOZz+ zujygsrt;%@L=Dan<08pNAw?HW{t}OvOi-lZnspt0PI16tMx`aRc;{%r(Y43UWqt2* z!k~q5xK4dghJn>KLGmOL1FnyjB8OSfryl7BvM$h!%}jt@ftnU}2S zYU=LXc`14?v6PlysC)T}I?x-U7M6<_df4Xo*Vdpb^Mu%K{iY8s6XLTK_s%*!s6p7-^n$xXO zYCyZ`%bmyz00`y@mP}>FZk92?89L^doUFeNymUrjVI?oO|e^Vr9lRQNIug%hc4R> zeS)w}k#2YbNDRi-fCuqkU|p0wmX{G}2WiHG)y(ty+Py#WEVqyjOiibQpb<^VK1;5MORXH zBJc47_{gp|MQkF+&en23;G@S~B!}s;Eojzp$Q>IzZ{Bf~GA=uSp6daFWsJBKCsB8;#2)e;DF*fawM*r(t zl`ED7Fc_Jl^A0=rNAl9SAFXyumvh^xpi+?w;CtK9Yaw4a-LHy->Jd z4Q8`Sn^X(Mjt(mez_lb9BMYI)YWX!iw`nHx?NRqAFG;CA+Oe|X1h91S`PUvX%t|IA zT{d!8liOy>XkREtu|tMRJ>`C8Eqf>SUSFAEZ{7n`0FYAlw0etC$CExgX~_6c z`a#-Fpu~Bq_w+#*8r*h+aUJ25iTL0ZTnPhjH(?GhTbQrTu<77~=D_-+^UHDyMcQqB z{aWQRb+3SXWrOCgBgtelj?WqQz3-2X4qKrMe=cQplUdBo;%}~8Pp}o6>rJ_fgm<=_ zEG^q{%jt2D%vJSNN;mHRxKZ7q#i;2<9>5fA-ylG}q209NRL0^QooHMFmBpyRQL7CyZ9A&Z}UQ-A@?li_lhuBwZRMstek9NKjF@Ev9 z?Q&XwliFjU(PN!2B>Q*_lp%{NBAX!VBhRTc8~Xsh(D!yRJa5v~UAdTSlgs;VI|$1R zFqo@SZn?L0fT7bq$=HTe+dFHmOS0MXZIwl>RVD59=C_Y|hsAzb+jhIVtx@MPoD_d~ zI`9mW(x`B>ME(t9w7-4qPSy)}dTIizF3WN2=$^i7oI_;vESn~|zlYCg)z9xl)aZnx z*zgBcBnYPY^8AlF!1;*Gn>_#sHV8Lg|GKbIzn4I-e3iZs)9y~SX_fNiOyyXz7s62& zM&b`D#NqmTZ5$Xq;`ZsZet5wce`N=(KrL)r5s_sH=I?GUa%hk)cfK4N4`ilzAB(Q? zH;zP{DRZaYat`d*jq_bp4B@mvIY8kA8nu)0a6al?B8TUB;DUrITOmx*vWmKTOHoC^ zZr-ww3^W(rv3_tcA|B@ocC#t%#y{}a!ImwRycr%;Cx)G7q3@ zDKzQ)i^*IH({A5erWz`)u*>h#_wyLUD;+kUN4PIqJLp_a7H>jU#&jXg2S0jNz`aHL zI_k_kdRoEiY10L7H9Rwg-qoMGF}y$#`erL}b;-xwva&-nnm+Yu4VG$9yREUZx46w7s;+w&`x4uw#GIGuB<@T} z9mh~xOH30mFuvomhBmLGwuTPT^umsBh&^ZDdn3POWNw%HA}w;0vi(JZgn_~`;Z}sP z+}>x9bF?LWzWQw-RdwFC)n4B+ZrtqsO}_0rA@9cr-qbtcT1`d^FY|W0d=8q~*TDk| zcL81>Rd&D+kx$xn)UOV)tA5@20kqal{5Xb>n>qXd5>bAo833N8sUTl{)|AH4$@n@u z{3iizbl7p`=U?;O99Mf-bXjbyTvDo+Dt3)Yg2>2cBalXc3!c%?mzZT(J-+I5izGiJ zluA-74%F>#@kg@Dkr?-;`;oU-hn@C>1gQak5h-2MDLip+bj$hN#Mz|@d{lVavGk7p z#&Kc#xSmmdR7i^V{Z52A$;rn}Wev?YLmUaR>aF=K7W9OCKD++u6Xg`nCfCLeqC+vR zd$LD=qP@oIxgFPRa%f$r7W-d`5OyJ({nK;srF7?m%PCQ+!ScgBvtVoAa_#Vd+v%K{ z%$-nrah3Kv*sp;DffwL`cdfuGc=Ok>>YW4$NG^TldWr@)dy&;%><72H#>{dPyDFt# z!^q5tc+7}=cRV4KQ-SMQoAAs}eUf+f0x|WeNcKPNx$WN{aQTn;SU%QE{?AquU0tu= z18*lSGUvyw`(~kJt!>I)A9jkPx0*@S#b!V_lg1DV0mmUuw|C1f_*Y3>30ojfVPL*B z_a+`}6zHChF|Z5kff{WvN(p=XeyZD=sG?!6ZVnHRPX7( z=0Nc;$#PL|=cX%rcy6k=cC&n@W<=m<5v2b{b0X8Rw>!3CX-!h6%&>?qE#7%97=F$v zJ)#0v)pF;{xf4^#HH)XQe9L{1#?+tfJgGdM?W#Ny_PlzpI&OC{^Ia~k)+E7v@pg-8 zuj}Ty{Sylz^YpJiAz+>q=S2lxI&T?;*kmW`L)c@Xj-(nBf<3vOZB1@|>Ku$BR1-ih zzutFtN&UeBK59wBlHv5Cm=}7Yobrr?pTo&| zai`#0gBi-p(45Fl($TLsPp_Lj&6N$|%7I@_Y*X7arycw?cX-*KE4!ThV52`~w`05? z@=;na&?Kp|BKfRqZF)+z1h|97(B}Npbt-4kd2`vnH`ZQr+e!sbX5Cb%WvwPL|Blzr zpzV4*nDps%L=s~Zba7-kpZCEBo_7Te)v)VHG3ZUI>h$RY6?8A){dbSR*?>Plt%&O6-yb~EUU{M7N` zb(6sotMe*|>!OBf)mf*hrCssOcU2+_w)y8RzB^E`u(qO#+58D4*f+QE6oC^!#YA|y zTEw&Vc<^M_Bm87!pVm~>Z%sx$lC}F=_~IMYoBPo02_Wl}tIRFVo`Jw%6cF^6bI#^E zNPBoEHzm>x8-VFe1MwWcBWI+*68wZ$Ol2EHeE)Ybrr4jU2WSjg2|Vu0tx#y61qSF8 z;06@E>`$JVhm&9Bh? zqk$s3>ip3K=$hG*+bH31`A~n1*L4W5hxj~ivfKeU?>UXOl3&-uCA|NA6)oIqZaHtt z?|x$5(7&INIlW}P{Fi~Cd%j-n_BQuXvzqkHA^gD{4*in_!bh37U(vvtV2mKqoxRfM zMnsGU9wAn{kQ3Td)S&M}`V==kMXpCxZ}(k=Qvz+eB=nOIv5f0b;+_HbV0;30okN*! zu|;EZ{QyPjS(QO+msJ4|j7^~SJCrNMc&}XIuQPB6?g}UKRr*V!i%io?=H|RQ{8Q7l zB(e1sGo0b8SqTYws69ofx>3di+~V(}U|1Rnr-}|RLW5q7ST{I=MXQBzui;;QwHmQ1 zo!r669$NdRmoxg<49oehSAMwkt+VsZQ|#$P_8_xS;JJh02&lVz7KPk(o9DAWfH?m| z9gaMaO!D-x+D4Qt=;*3%KK|*Egp?%~J64Tk*jZaFy#^3`jaY?z9LEeO9qJ>AOQ=C_ z2l~s<6WS4kH-M=;kryBY$<)I6DN4NRf}^x{b?LJ%*aff6Gr^jok1#p`Y zjN$g2uCR4bzqqqQ=NjeopWUfH_;w~NEiH|zCpSPgdAM6)sQGkw2^Xn^P=>bY#bu~t z+h$17{&mUVEWax2aqbqcaM{20Y#|Z;3q=3;757_3sBV)j@#AiRde@9C7t=G_GuV3y zWa1CG5cZy$WR*<*l`lA$zI$EbOzJ^j60w4DF_}q14ij5Arl{wM5G;q6wMkwk`F2%l zu-@i+io1bP8!gd`+D(=8Ia!HwIOsD|tpz~3ucyELbwrU-6G3*%Tz0@&bGp@3j@Um7 zToeUx`l&zf^U3oGxayTcIzw5kUeTEA--cd!|6(Qf*$CGWWwW46-RGAdHdnB&8)p>} zCu9i2ZrQ@sK0a}lnTnBdI&1ga9fny`VZl=7hf=1@gEakG-A2-dTpU0XMi{=hCM=_m zYs1oTQ<-t9QHO*A+on~}{P7X~%DO_eww{W>9Yl(FI8V{9N`@mTlfEkr3EQrX)i+yU zK-|@*P3k(#Cu#_exG@;NIp0%##<+6n?bi;`TqA&W3FBJ4KXg|lk#DDGg!yfBfAw$( zfDE#HkXA*t<{i!mXJ6BVROh&g>Atc}2J6Gj*vi|1pGC-!BzyE{ir?M>jDN1hs+%o0 zz4|^P?2Nv2CRP=%0(}pjr&2#Y?S=DenzvnOO;r)dud4+oU1)B#y}m7UZd+)g_rC7a zT(4?Kj{XcCHJo`II_olEd%V6vAUXsW4@;=bzhlxR-KcIvIHhd2ZBl>6zsLFBu^pM) z0bgL?v;dw9Z*W+D%&ADJ#I_@pEgMalqFwbWzdG&%!{O3=XTlGgCWHYqL~y^(@c z!1yN&KIlX?0jYsDfv;@_Uue^aaeb8@eUvbAZ}d(sD`p?Eo~}o6RJM&_l2ue-*=x%J z+v4#s2x)rkF?xI4+CRB#C_8sqguBcDefJZ#$*&xW**B^Z?_Iz2W)@F!;Hj`~wnJU> zwMcuYrzN(T68R#%ELlv}8Y1xN3;(F!T|4~?qD(A{tu$f2{cOi2!le83395lOl`dom z&xUJcv5Ie(W$AnlEmyw+tM%P(obay?++~`M=UP-4sZTS%{IcT?lny+*^ETGjF2(SF zxWH3QWzjLWW}3%}srk!3reLgr(jkpsI55ss*_O!PeCVdLPVA6(g)$~y4$P^e`SUaj zH>#zhxl*DZ+63vlbtZhLCT97Lv4W&WzFCukmb_C4C+wq3R5?#JgS9=IzOTDYv*DGh zKCKys61(Pu{hk+{9Wih^%=exbbwOk3+0^U%WCxdBX*O~~eAITf_D6s%SoEt_>l1B%<9?CAC8ohns4VYqTS`~3xV~I(&*pi zn#ZJwHpsj4dvAG7b}J=OxSy{IIQV8M}0htM3odp*aM~$3*?agF3A)dH({I)ZudnwID zZ4Au4Etz*xvuOQID1{)+a7%(j%t^c)1J1eC<9M-u{s7OS)D<)mGhn>(LYmEETt_0} z-mS{}2qg_|=l(qLvU&|lj}>UGFx7Ay(W=)T_Mdvf25 zE{U>8#Z<{Nfn2jS>_qqj)(7GF{U=Yuc@KAgwgwa6&|C|ZB5#}j(e<~FR<|#D1V4&+ z%@*^_QrquzoS=O&WOD#Vl_hj0^4MHr$GEGHoSs>lA}^BNEA*w7H)UgYE=u`faq*7S z1v{o=t^0;Q0@JB+FUE;b@6VpTNNIDf=W7y8xl@1nIyFe(M=NdM^{G$L**zAt_^Wf< ztAFL?78v+-p{86vffIlp9Ng8JJ_$zp;j+9_jc#Ra89;LrS9&w|z9tOP|9x zoS@^51g(7g_6`1Z$O@uV>6eUQK5-+uC)vxHT}L{oi%{+$!@>&=w0gJp$_4HT(G1~> zcKr2R<^4JplD&8Dx7KRER*wJLqFAkAw*;(v(}-C=^Ys~KnY;h?Ue;b8 zP-jF~D5<{bB0KP|;0)veR9|>(ET#gjVzVPJ94&o*@*k7BUp^D`cWBz0#fWbGjEU|@~3LD+4U-;mk@`=wNf~y+l=9vh!A=4Z2tOPtff3& z0!dO(9TX7=4g7?4-z>TP?)UXK!Mh-eV~d6#mP0kgyq^b8Z2!_ZVKXw87#aAvkmmnv{^2pudb?aqozrt($PrhyYb@xZd$PI; zyGd2>^1Xp@QOSps@(BGR`8W?^$B7k>)Dl{1$R-dv0`A&IMujth{nx$liQCA9Tm*rq z%|&|z(@ zy_i%?7BaM}<@TB26n9|B>hhRiRII91N}z=m5N{4krM8k#8ywBAp*EB98T8OsHBKNL>DG|C+F#G8w(`P1YWMRY^ zi!`j-KUQ7gA=ue@8mZcP7PB%S8nIdjTYc%Iaoe?32^D6_EKZIvO{*!#QT#_pv1BED z7}RYLS!bnwv+uIvc!o1@eQc4pGO={B{JFE$sjgFJ|JA-V*}7Q`VBcN7g@na*8B2Opi0lAOQ2iK zuzLPg6OcZ{QfS$xj7U)8Et@XUa~?=+u-()4GbqYTx3p%Nb)rO2^D8o$%=RDN(f3@; zVqhQ`Xc=2Fv_19>nwFaZv*Cbos3IEp#H)H7qrl!kE>LE!!r3VIzwwi7%Hbh$toa1H zp~D?8Q;25tVb{>!wEz8hV)=T#m?l(Jye@pj-^^RpgAC&J!I@diuCd+UzaEs{)=NCrh)$z+ zbnNdHiWhep7qTphfmOlYwb4<#)T-GM)AS^e*^?-|PBYd~s)AsNH11X)W{9PME0ll9 zPyeSI22C_%=l`?-Wqz5vxQ43fgjXxav|+WB?@m(9<*bHNT}}c6vG_yc&WVF_cVQq$ z2pFS&S%EV8c<%8s8QNYgT-s_k%03g9A0tlWkdG5m6-i8rQieHsVHPH9sV!R z>ycb&!jadn)Oe2(JDiM;eezn|_Rm^=L4uy^?cu#)Lu%_fwNOQB0UOo#lE|S4j!|=) z!-uQ(2;$BwWR|`^j0vUFe^aQO)S{rLY8J}<$Ql@Jlsjd%6i^VdSOz2Hj;;1UERI>q}$@Qv>F2YaSyNQ&&*o{&JWsjExX<&bs zE23Ax|Ik!1A${y_HcKxrAFg~19PV)C+UvTU+WH$2O!bRo(C#qH|Bt3~43Dg9+IDQ) z*2J0Ewr$)=Cbl~6XePF8+s1?w+fF97oxDBI@qIs%pWS=!UaRU_XI)jhSUw`n&{6gu z>PxCLYwD*PalcA=oNRe$z9A&!8l>lv6)#u&-^Gmk?^MFH$B^%D1Y6^>vVDk(1)?2_ z>NdSLJ6#82-)=6mJw5>)g{RAD-kD~w75y)WH6T$qPS>OV#UtE}(uW>*Y z_l0LLyw0}+Y}dXHb?}Dve$)5Yw#FW*1xi18IxxZVL`!$(S_RfJ(=40xsL){rrt(Hh zQQ3gfA=2^N4;G9)fLE|rtiTyEE60F?qvZqYJR3vjfxI{~=|ZpO`cDuiQY9|U)P)d` z@El7-W1|I?(>TT$MMo@FWZtUIc}OWLBjOYk-SEA8phUwC7st}Q`k;kzvDMf3L2lA+ zv+Z@m_nutalE3omxo^*Xj=ybQCH!ytA@>oXDcC-C(E8O|D^UKXf(+t2u03$Ce5=7B zJOO?*z={8?T;+ac*M#4uf4{IsSq`^E5@=KGEY|i%13>=-f^URG!Xl!Rw(?>?%t|nr zJq))`DM|9vezcS+>i8;vqGEdIWP@@g2QYeK*>1t3&W0ldE zOv@5{?NVxHBtt>95VCFi$2D4c z!#7(fpPV81IE~uo6e3Ut`(EHQK*-vESFkU;;Rwzd>@Bi#$6w)rBrg3=uB%gNjUn)J z-Toug?Fw^zmDs;e+*9{H?_LPq5#)`vGDWR0l>dVtC22gSI6W5e1y-IaVoX6yefyc) zeTPz8F!A|p=`gJrdM^Uk9n66!In?~Lg*&dNwd@Y;fP*sN<|12JUpwpgLvc(Wkz5cU zQnaihMt9P^wZV6F728f`h~eO}{^phAHIvEjYB`nVH4d2anW80JmVo@?9nK{TB*;Ts z0a=M#LW!? z(5^FEvSraw7>qRo6=JbII(77 z9vs$_y-2$o=5`)JeovRFtPxW))8s-H)CO!9B2r39l8ln+FA`!*AmHmiX~p9l!H7?7 zx6-Q_s_%S~v$IH2y~TBMb7c>6r_w7hev zX5z)72Wj_(fFDj@MGFC>Q1t4hN#sfEJl>*uvWPDhM@z)YRXQtf7@>c_av-M?my%@k zR%^gpQAj)%66%u`Ihvbw_LSP=e=%6Fs~b$aR_?4rSh-!lwcC1cDjy^_dbQjVZEZpQ zd}xvt%GBeZa!ejDw?PU3xQK(!+lrkd9t0?phW3(PUvD6sq^5B`R zpE>R|Y1XjAee&xrr#l4Vg57BdTz zChDhv5B|$lma=bBASJ`y3x#l0K4v`7C;m8Q)Zn`vlK8K8g_AY4nkyuh*g(Af*(av& zF-7ynCG))W8MYlyrNFPxt_Bi|TvWe3Uw}VJ;Oiq!i#>pBCS*4lDk>~vK$at|74XA$(}t z!Pof$p)(dmKO!a8q7tDm0^7Z`<$^bk$w`mZPLeL^PW z6`NegrJl*zTi}v6bLn97JJ6#z7S)eM1$81-D@8_6D&)77_uhoO+H~fJ!|d-|pl-<9 zKGWaL`P|=p2dvoJuwpWrYeR0QWzcs;MMX}d)T!5(omby|NVA$TFOU6_9OU{UNN}BP zlS&c+XG_ukAFuU4#&Nc`kfw7`BIX)gRby_llYgB1`yxhffyy@P+97+YrGh2PFOEi9 z^Bd=9J>U1~mi(D?Mp73iTZRoe7Z=}7D>J!LQ#t)oT9;Z{D&z!jD0x;iRS)tD+FUslW2I)rqAr_Of#$8eK#XT2Mzv2PDu3$gr`2Jn<_2 z#AFj>968=T)R{Z5n^z!~src0iMuQS$K0cb8D?h~k1N$fJ2Q_9GET13XBA29BWVtg` z_)6PLy|DIe466@`2W+q?OCK!@UqQ&g*3n^2O;zjj;878qw_V=uQy|qeRJ^O(t9ih7 znvy2P&(t)D;T0(cFD}V+GAz86Mz^qvxH^7m@J|`uDgm?*#oG%CkIfMo9z(UWuYz~* z&ELj<_witc?M!vpB_aRHC6+HdM4MLgtp0rfO5)v6yd0uAYg^zjJf>i86^}y2?kS*{k=rWtg%!!z(z|Fg@q}Pw@GEUM{QR> zdl3w*SXeD`vU41WvsWK9fZMfx51c(XHduL>aV(c!^I>XlZmiGtiR0GWI!0=I!jAGo ziS3b@K?h#rm9@BD8EI}JDzD-;C7&bfSA>-Mg|8xAbR{q=?-S*dS zsV_G`xJ&R5RhZ&MMQyxM|LavZUukAKw!D8C;p;ZrnyF-BrxTJATOy*TgmEsDFSSSb zo>mI8(@)~Z2T4o0@XS;oIqF|Wl6JA_AG;jjZ||pcfcj}xCM;Hdc0SqCXwlQWtlYY1 zTBJf5--MT4K=+i*SFsFRxm4@7KT$C?z&}^aNfGS=vCR&LmxweD(70aGcO<@fQe{J{ z2H5~fvMKut0t}r(WD3E;X|9Xwu!;v z?UCNL6yrW7ksTioA?+eQ@Zk&mP9Nxi>M@5b>i!}~;i9dm=}t(zCKnr23D-wWECyHK zQe?I5?kY6a?KTxktyUD@lzH{Tl2Afxih&Nw-sM7Mz?3zE1kd^K+g)up(*+&y6Yq~$ z1V;jz7y>6oZeG`I9;D9swCnT!j(TU#;N|Z)%0sLZYx@ZBZy~Z&)&27t3JGTZT{X#j z^72Aw#K?D3A&C4$3$WnR55Wv`u|2f~{ka{#lP-HN*!d7FP=8kS$qz+3W&LKoHHUSUZu%OR-Sv86zBiutsojrH-T9 z9c7tBD|B=Ld%wa**?-AhC5BM^%hpKLZ@V@ofx^?|{U#ifJWmOi)hml~J4fZS@+`Kl zrm=z$cPsDiYHT!-Y(=oGtE+qs7F~#YLMK7LLxsNI(e+1=ar%dNIk53((JO&v5{{t$ z#A2i$)Vz|wR2B%xG(-HpHF*%&ta<(FkyeL8q6tj@>n`-=MXxNwBApWu0 zN2>C3sNuTY+UZKR>E0`>1V6-HN8BllrO6r<;hJ0np&-RDz z=<$=W&dbGA^|~f`(8cOW6q@`HDB~C5%84QWODB_dz+92-kiQF#wVjmJ*qt;mZT1XB zKFz!%Mg)0ynV{#OO5^$mfpf28)td;N6dWM)gs60154xIKAu+plD$43*PD=wjU4u~^ z@cya+gZ+Y+)$FRQ&e&{{oAn?{auWcg#_I2jU9{aF+LXS3nVP)SaXn4J1h~MIlmmYL zxc+NF*GT$B^t8IOzZr)Qzw8mzh_Ty*!peoNbOuLgW1>Hh|HdPrVi&xaTvr6;hTy5; zhB=wUH z4(DpRk=bzMy~&<;Tlrhg+w3l-sc*xRngFCUG>Slyq}G7E)5@P{dn4}`{IA^~?=8)m znx~Sv{wnV-m(#YHhEpbyHQ^$=W^CV%bV0%VMNJ*!`@gKSuVwu3c1s&@*ZFk$^4gx- z>{hO#7NFm%z^9X`4w&dIbLa(y0Rm+5Zwp~QTO4zRCOBly6&z{-J|4%QbYeIWS?|fn}fFQj8VQR1x~TEo6XO zF!>FdB~&Cy0kWRj?whw2(8r(9PH1?(vzWxCa_1M4%r&zYpQn1jf5c6HvW)5fb46xk z{`Ke!9Z_AWW@vlM3OEW*dR{WGHYnVEV!+x7Lh0?$7({68cUhDKzL}Bb%i4 zteSJ2JB#~mvmjU)Xtn$P`gR2D=%^~sXNK!6=$$XzA!M`G>$+Exr6c=E5bn7C=R}vY z58yA1Dye!&)_PH9J(@6ylH_Mdz3C4 z%rvp0_)%eEl$_nKsTnpQgNIfaPIqZ$XN}|8L^{C|h}^8_HuV{hb%9*hj54J>D+C}t z;>oTy(J+zaHFd;{mgJJds9Hc)1na(CfAZi^@qep5FT)JeAnpK%x5kGbHCs^kK@JDI zUby(2WL%2J!+3kWXaS9r^>bgG<2vJirJ)*mU4N*^w2y9`esK)+g`>V$3l)4-&?cJf z&2v(%%l4`6ZnvHbs$C{xn7a&SBFwS`Uf*^+6c7Cr^|YN5pZ%bx5eAK3DyLcj9qWsb zVb1p!MR<@Cw@k8p552^5_}})@FgK`q`p^c!grxW?v=KrXw&cH%bi2w!Ip%m(ERax z9*ZhEYL%%^d3MD|JpCv-mGMe?1R|gF@K840iDwdATA{rZ@y0rF5B)DxkN)>=R$E*~ z`rvxmP-b1ettEDZxq`9?R&_TIf)Y{ZK@!I6s@me~5^TH8Qwcw-l|Ny%4sG^flBMji z1imp!rF3~6Hw%Z}Z~Z8E^CNrH0g1$#*ax{+8*3KD<%tx96dxBJSGCidTUy}>!GS&D zvQn$hO|GOVoMuQB8Ho3&Ew0;!+L~Si8&6AJb+4(1`+h97Jw{o#pYr^|>kZD8(we~+ zFQ+josgbhN2Gre}6rff3*CgBGwCGC24j!pq%F*+>i7j}${kj5E_Hs$EPf;K8okFl` zQU{etJxaBq@giV*$=-O&(n%)dHX?kU-H9h9kVn76fG3QT#DH2jP$is|09iY#ovpyk zKzMv`cfbdX(Z2s~M(_5VWT`{LseA`#qrATcPSE;Im_J?-{Br@hesVabR!*n4IFQ(q zW~Qk$Ji;D1$-yztEjD^gjyBo@d%9jCH=bA)FH_9lZ_wHseX@VQH&%0j!T%M>O=zRYwo6eWx`gzWmgc?Yh_;5zv3 zU%u?m7;j3A$dB=Ne0%UO zeks|YFPUbC{&6Iy64pY;OW2{oM)C(6)#GnF4%f$WZF=F_PkPR)noy*#t+tAtlVo{2 zWjoU~;a68er|>5_=|~Kfz;31FwFHYff=wQR4W2WDwo}748;}FSz_Vp>|G5R_2@TQR z5l3xC%RiU=rJ1 zQ$o@sPhKt+a{EccTGXrK*pUH}}_WQ?CkqYFs(cXir@PmKS9%=m;9)vj=O)voo>V%fxrf+!CgBlQ2SCLAp zNsa729^1FeuzW%vcd=fz)yB?E1mvS40(yVt@)|InvEv+Pe8)XZhOPiF9mH_ExcM~f zJ>p`Ie}pA0z8dnr;UP29O!APDAA-%!ZT5p@lc*oD@nAzYKiY2m$jy)ZMC1c?%EhxG zT>!Y4TPbhKU6~bqkMCUxJeD-JQq#}?@}sY%Bk-PBJbFenKP(}sfx7aNIgxAI{6CvL zV(@Evhr%({vmfkcT zdn+_EZB;T;g2*w=UaeH#pD>n-I|O-!SvEFPdS_|B4P8pzH>W6w-ZWp3lT z>CfrzluDmKZ-}=Z`DEbdN9c67U}avmcjG%}d2jHXHyg*z(GU%p1~|C0tm!tKWIA&L zcm=!VE#lI5U687V(DU*tL@ z2Mwffe>0@u-7i$rSy?4wW+_VLsNzLKL{=o(jUaD?A3`UShn)}seJP^w(81qxLmfK(vV6xrN zE9l)MF#s9dSI24epJ=ksA*KD-H?EP`u^Ak%Cja7fl&~~mOneDJInlhyK ziOqju1p^D#RIkqrXpf6+^jxIR>PLf0p}=)81Do(DpYF4;Ucm$*Pr2lZq7_u-XF@Zw z!%GLGHw!#JQW?i|lf(*fuYBCmeIItlF_HV-7i)pEurrU;yS2v8m4_y!bi)D#i*Z#J zL>YORx5;H<?NwOeUVJfEvY4#oa_j^Rg zj?TLV{?Dr>d7pQ-x-ZUn zHDj6Iz1^$3c~>ZW_tD0*K`cz-WHZ4;gxN2lY4h3lH0e7V?~x=F_$nC)wV9C$?N{Y% z-=7$NuGNksbm3o5Lv5iz+#N!w2aJHdcvL@hg{3?lK}p-2h6<;$gKY?ySmhS1bv(p= z-kO<_5o(!F;z8%=iqM`|>~7&7vzFwdM35*C2_QLds!piVjQ~>$CeYai=HIr5bD~Li zZiwO|Bu>n!UveB?|E_ymtk6q@u2GcMJ7i8Sw&j=f_cRvC631`{QG0z9gU76f^nv*-*tC ze+Dr>Sh$La$O^Q*&TM^v0Z5AOwY+EJSEg{*GSlnb9bzv(T$1F*VM)-;<+B=^A0YkS z@GS)urV_W9;Wa?W$69|wAUcOXAi#dGbA*;k&}Zu){0T*{+sqbonEuk%$tE(^>OsRS5m*C72QeAJgsN!@AIX6^6-#`o2qjmjZs^TE?v*WnZ zV|24A&%CvCgmBtU*K>Xo*%ENFrKp-@Qc>du856c;I@YL7uN=EgDQJul_9sSUuEp#Q zACpi-fZ!T6sDQ2;GeMmuRtVrZ@J!o-t;?$&d1e7SK-CD=hWos0j^g5Fp*(=A9V@@; z16=CkUEboNU&25iBVQU15S~?wKMWAQtL$Yl>D9rM8P97n;NWe|S8sttrH~{TMMsSb z`gY+K(h0xId$T~HItzc#bHIhP^xG3^WFw(t(_5qnJS-}TviVNMjc*=2{?G~OFvsoG z57!UIc-AIfs*U)Vg1@lw^~u@Jh3^6t_%t;2_}Xpw(98_%OcE`f7xp;x`f$7u?86et zF#_v?eMfI2WRiQ5Cd(a=Ahx}>muP2{0?EKvW1HDDY$^gkbIXskA$Ov8+#P;_ss zc7A`l(`rqXab-R7y?yNA)?zYt1aumTTC}L6KWp6Z$oboXkLS+FLv0oYi@!qqup@UqxdVu*)sZt8c55k0_h(= z!%n|_UBvw|pYt&gRdacwe2k2d&D)N%Evprd{I!NbG})X-m&Q~tF+_ujnHZ)7xXmaa zf5GbIb|S4BpM0}0_V1KzXI#_W6V)Hv*H&#QDh5PGSl&SwC-dywvT7WGX*dV2d@`RY?5VI-`D{KrhcJyBb2FOVLObgK0-A5dJp~zGY+$H zpb1FeIm6C&aFWw2{r$~4`;t&-tf#u7%XhWMP}BHoW#Rc_t6RuxfTp3*ePvQy1i&1@ zgB$9~L6@T9Mv!Ra$a+GFGzB6QHH7)z$o(D#%h}NWR_j;<{tX zioQ**NMPElredt`H!zV7?f-lNk*zc;4kgtr0V+a>tIhLIcf2koAsg&!FG^lB^{1%G1@%Z(Shhvuh92>#Qj%q&;l07ag zX>|8KE(bkE1YsoRDoJt*g!D7PaUw&b{U#MyrDgj@eRbK(@TK=K?f^Wr$#7Z2JIf7? zzMTEWRU;19W>*E65I{@PpNZcmeiF`C$b1%FJ(F3p@1j&Bv*r%*W;vb~iPV6%xbJhi zdSpFD*X8|@X9wL7m@%~KzQ6iF2PN7FG@aT`?Id|N~(Kn zhMSG|p&hYC;blJ${b%Z=x2<;l0C}p6?7JK>$iQeKvZfR*sSOv|(Vuh6%%F(6I_M zyAEG3OyQ$u`)h43jWvuV|MamnHfnF1g`KW~O@n+Vw8B_jrO8_IhhxJdhbg2Bc4Ebn zcz3)gq9A^__Q#SOjXH~q6MTG+S$-tc@IC1L>Tay|)iD>|1`qY27u$%zFu=}IT1WvU zM75mWo!cVYH{=b!=`P*3HP>?8jMb`%j>nd%LO#Ga(hc1OdEXJ}34tqpM31@dGaMu` z{tHfSe2LbHm4kmlK6`(--|_O_!_0T=pz`4Cc`Q}Yb?48}y z=~3KPM4c%#D37cDp=$`}tKR+y6$+91pfGU0;Eb|pv91y<7ljoExXpFC(}&+q74cGu z)N@u1ZV};UU?*?FQ?u_HrK2%9A1G8!(@?OyiE%>iXdth_uM+puuKTH8-J0}|%Owyl zb>U4KWLYs_9w{R2Sv#&QYuAG3;Bf@4!(yKf0DkX94Sx*uv%%ZYQ_YDTr z`Hwupnoz`@pb-q6W-vpzQnbv)R|(?(GjXwbE$F;z*?3-s%}h;Ad2Okj%3y;DJriC_ z`_?qez_*zeb-9_c`Jyr>jO*WcvWVPnPh#jQB^PlitQ~W<&e>yTir0QY%33Zzm~=Fy zo%8u7^nxW15{&TKN?xaf&>)H4NGE_HrA-_xhBR{*P*C7W+qc)+eog+>2;A`5F+Qk6 zrSkvr`V4J8xdQE$I1H!UG3>7J{#qhT_{sAmoQack{wNbEvxb>^`Y6z9w>#X*UF-3D zf|U`dIHn%k214`Lbb+}t8)eIcbD-){(a2zqLeohd<*VhWY$7`0_RZbd6@kD@Xf4x~ zz2RA+S%fTaYru0HtN!gKc|XC!1hh8N1qN>KNqlZ^rDNqbK3;lJrq8Bfuv%fke*d(Y zB&o&|3x(~e*I3i2*DZWX6LtesUeQN+OeVybjWwKXT|pik)Rl~U2zU7`+YO7MizdJt zUe;$%OLN-C)|FeZ#W!C#ajkZz^>6!E3P94Ofl69xMCoH-i2KEyK+t-Pm#$0t`QQMu z&y+QdMBrm0Fi|S1rDf64*ZZ!zyI;MCSA=$E8Xf4j%9v{;t55!uK=w`9WxHb;`Z7~= zLEcs-2q*SdXea3xoZ~+P+3mWk`JFVW$k544;Bwg|)&BYJ$#~)UMdR?pL+y1nKz@sO zbTom8m|f3&vhCSChP<%Cx1{DyHOi_OvVvGbqb1RyAtscW}!v z=jS!??{t`Yf4VNN2k7nmZlsXGB}O1Nhx4y;&>Mca5FQzz&s)`0EP=tHqo54lJcqU$ zy=e7anB%mH3iROh{{tocSe8$Vi^AUb6+E!gy94xG&%wk$aN^;PAZV~LQ^9*Tc!J;8 zJr~mJY~w9e%F(!LnO;MR@8xe3GHaEPA{am-`4q(&^ue-XFrP2OT39XTjCPp3TB&+OH)cD& zHC`h0(Ootpi+!#TK%9AZGB^g~;6X*~Kbj9ern z{BI2^B4(cWIdbvoFKxkraId&P}Xpj;JoTXLHeda+> zmXntWngSSm%>>SDMjQ0wK1PilGjEs4`UXjtoi6jY*qyyi-FeB=KSImB08p=Q*w*_k zX_6pN$2w_mkYCyL>gVySTPbCuBVulcoTpCd-`e)0V5DUU|KHcl4=QFq<3+d-x@31! zt@r|7DTRa5n3>SGsPqaMcb&2sA|B8G#kNF1m%Wt}UqjWhf(grSEJj-2;`Kbz9C>-+DSOu z@2fy9Sedz<;CgV<>=kXpCx{=nF>*?`;a01I%MK~|2pP!ZHDB;{$!nci=Krho1f_Rl}@1oD(s*EqCr zj&%ZE7FIGdjr3mTGr+I9>OLxi>@UFthLi&^BMQ_?l)gc3Vv96(H6| zecl-1+0U6%`8R4n-G7l8Q~qxcoW1AkhC8a7_=fXh0u>dXU9`aEKY(20hnfDD2XOBU z&Au$0=AZK!c(`~I1#jN0d39nM> zYO%1CW@>(KEsDffQtZri_wQoSgq|p#va_o6)m~Ab+Ya1dIM(ptEdQ>nj<(xz^K32w z>FifoE>a3T|MzV zhJWcY=F|I>l5i#6iy$mq3{DrDegzg;sq%;EyhpR9Ge&8WmZZ_90Lx>CJ z_l84>m1ugY0z3=YGw3$W#k$7;5YEqbA>zPBdYePU6wEJ-_PF>{dt+WMG$d&;BNPekfP68l%4``T=Ba6NQodG{W& zBu)NRAmSP}t(41(>t+c~eG8faE{FJ=-C#7mNvI6gTJy(`Q0l8hHp7KS+lvQ@zthi{Uje7evLG89k(VL1U)1iL^c z{Z$5Y2D$p&*|JII=gNLdIYhen0joj9`rRoD!>L}|y4X%F5h(BeGd6`x5PKyJyF8{W zCU1R3L+60kfb)UTSd+`zvdLh|1R=c`r6I)YbVkWA`D!-rd*7Yv1Fi&4CUf ztEQ|W3Z0whE_^N8np(as?q;J`&*FKF7@n<)YyG9PH5j_;p@9xGbVuVQDlR+@nh#wm zop#$-zV^UDQ^y_OCaV7NBwP}IWreZypnluAgf*V?i^XvS(0Y(G%HM^INx2)b1LFD& ziqqXE;lKorm<9L*WcP(;NuaRG9#et@7wg@|?cChw(dU!lLsU|d z>9-Xq7?jra=9;Fu=jg@p2o#?Iv?aRLRgWDHwv%)gm4)Si1*ax)#YX#Ob$J{{FaL+R z_3k}MC*`S4=A%O4sqLi*!@>ah0K{22(q73l4Ms2Dp@NbTZN{-HOw2~x+hat&sL}I` zIbOb=LZec|ih~u1vIfp2$J&ajSFfj-)2d?OUt-@+vitV!Pa;9GRFi`Lje;oUCQl%y zDv5$OEcfZ0-qYvqG=({S9^5QIRnXYybetGfK^K0^de>oGbI9juQm4799lNCqjc0^` z>K*r*h$F>0LYAEb>L&VLYehxRfWvw8soMI@2TU2lHh?yO&suSG7bH?JCKe#oXQ2om zHokiF>7WU}R4pA_nASUew$;abnDmYG=;h5xY!kkJ#7|2;B1Ss#<%(X@iol1SY5hc# zfBbvZahs@&Xj_gP{sR?)e9O4eWn6lFIX8-|9M%C$Eua*>P$Jsv;lXs{{okvh)c5Dz z0I@uR9y)rZD4ToyZeh(55-@wb+}1phUN#0c@gh0J_pzeo*0Z#sLl?d=dt~IF z&F;wS72||GEGx6DKI;0uP=V)Q|<_8;)WAh@?tKwN{jy258jNa}K z4GEP#$WfjD^?myY{>boH*3vc-e9LC)G|;3qG&i}OBYj(1Cl*!^yqaUjJ|=PaRGm{X zcD*|ywbN5m{TunNBN(_GI4ZIgXbE^N3LW}O#2-}Ue|-dA~miQjstH!}wO% zkHe5Y@iJZiRun>4uogn?@+WFaYDz`we}WMP#0-mJtaDr#eXHJyL`ctGeHMuKBE>s1%O6OO1+<0sXG!8TFh_qi?yL5k5f2wGwo-=ekRqA#wYiYjB4ToEe zD_x1Eh@^V{Q$$pUilBZ@!hnZsVbFBFxkF2!pi9Eq4SPJ*327p`iF6>U5|oGYyShBuvzy0b3GLl%d^4D-xztik z!smu0(%dZyRhN&Q$~9ZOl~wJ7JL(HWtBbW{Y)SIanG!4-x7UB4!=42KYuXNKZc7Hr9K|UDz(a2rH0CX33kda)!D6cN}1zCsQLASO>Gk%d{+-f&*cb4)a zJbeD^r_vKe*njz_wA9ECoQ~DH^^M4s+Gbs57sAdeLt;N(Ls}&s?_8bQNMJvS#$3k* zn>mwftKPqTwR4WI+jv>gIKk>o@r6r(M1S0Wq-%t~iTXU7Sg`ns_G%o3Yhfx_rq8Y0 zY*+q-e1?w_^9>CSXWqjUa_q*hfFgfQ#_2ygMsNJ$?pz(aO(KJ`msqXOAiUb~pt!Sk zVrhitr$S0WxhDEW6QYItL0KGtD#)^k6ic z!?jXGaHp}$n*G1^(7T$WJ*$*__&vaOMh%5XWYoWn;JNbotufZj#Ta_by>CS&%~A{0 zhsKqRojSeR)l-liGDjGY%WIXMPUZV=6(;FKrbON4zAFVSu>h`|fbBlg-&8U{y(Xx! z0<_-ddKRIV#F%@S)$wc*1$4VMgD{ez#Y6-g^DtMo+@6K_n*dG!@xH+STDEr=T>&Uw;mT;+HZyTz-X^XA@APbp4{G zJ$p*3bX@nSZWW-V$;r5uX#92f%RrhxM~gylDEj3#KCTJFCCgX!^7~wwQY*Nvyo4 zphN7)zMGH0;v!tJkM_h-JMn$7|2L3BB4@Ha? zhQbYBgrjVBtyd0951Ii-%-x{$k=K*f>5RW>-ulTa~W9!p$+){WDb#ZW9XcF6KD^W?BY>BxRL zNND47FK}K~RNLt3smweZZLK{j;nhOch*!cPWu*--kynh|?I&UAsYfyw*An)E#uC$3bK~p3Q)dz3OSJcn zS=04@hnHinlbgxf5J?8xJ^{`fegDDxVI=I$7n+_=g`}gfnLv5TbA8y?LN6-=v5sd*5$lKi_JatCee~PazwFnCNA;wM3;Yd zY!>LB^-%-!Nk0jIgYWxhH6#!d-fGo9y>;Q~8-`O(`4T-VLPa*R|6k0%GRmJ+tMF+D z$HghVCPiqya4Nb-RQsb|{G4;5$+4wI4!GY_*JXf>Ja_9+b(LwON(fcke;>$Sb_{Sps}~+j^b# z@44cI^Z&8f+LdjqYwPFg>!=(tI7_)Gz(Aac#B=-{4E2TVg5n9GScj z&AvLQW`c;gBzCKKxy||DyH`?(QjU#@Y{i2Bz&DQXJ8OeBXe8k&0jTwB$v?iezNfiA zsz~!5mT&$Ru3^6DB*uE0Q;0_iL9K|FfTpQz&1(*8_a8aR9}5j2dEOr-v2s?8w{%vW z{R|@no13sW02$Vz@eg7Dng`^uS}02ml{w5)`vMwf&n zn4(f>_tKVKB?xKD5uDm}+Em#0p093V*|dv`q2XRLUL%db!~1(5U=U{f(L$P;Tv2Ve zw(1QN9nGdlq@ZM~x2XI!Y{w;?F+o!~YySNht6ORIB}05&)2L~3~%iDMYDV< zVc5xb&cvo5at0Tz#zfT0<)9{&2-Mhvy#I&)gw9ykQTE@cr{-E*exiQDaMS&|>l>cE zq;Vg2wnxzHb3jB4C#_!L1TjVRAztDT=$`IjBx{$??)icXj*XOV7irRwcYr- zl}hK&n*P>T(1%nUOkN*OtNf%_5fsB_Uc6}GHDt~lKd^IKGkj1gt(h?)f- z_1ewiUAal5L(d9o>Htjc1fmBgs23zu&8D=4!MR3_n#ORXPk@RatL8I=N^ZK1^dU~3 z8_c2W7Y&{NyNrhR>>BUR0o5f9$8CLmOJnVp)|Y?&+__D$62WLN^YrIJ%&WrvB3boc zeqSuSC?E+P!nX}x+=ppZ485MEXEP+dZkugqd4XqXek6EDq?1!)DY9|puOp6sBPZM_xf`|W!pu&z45E5n{%YvPG7JDSP&* z&#V@q6F(Vkq z^paA{o6G75_L0$2GKK-{J#HZQ^w-u$>N_PpSB-$Qis!orQ7tiQC#D$=IY|&HpW%Bl zsf1VlCeg(Tx%(;Nt2d+O15rA9T#gs#7nAl`>quW@BuRrujBjL7&G-`O?y#Y>hqr8( ztD||W>}ePGPK!~4tb}Mn7a`m?I|nCNh;~@_yUzl5aKK3c@)(vMEYltHugo+mj&9!6 zBK_%MMvD;|ERF*K<-M5H{uV(qVqD_k#;`)@@R zCi#-4!X_A8bK2a9Mu_IWv3aUwTc_pTR+sL0ZSCiktYDR*#)45UF@bI{L0o?|786zr7TYVaOwn<(Jh_!?In?9-D?(|flFH+;8;|1}Yh4C+Vr1xXr z`?y3Nl%cmO_qpCO`BSHwu<>C8CEsadAf*Eq|0L69=)Nvyz+B$DMCjqQhlUNPZTk5O ztWe4duOXY7YoK^cZG+4jIRw(($a<0a5%+thqzw@TxPkoV&ngL^#@TNr|6J2syWOnf z0cD>EacH+*DygkPaXy;oJILh=P@mZqq)M4QvZjpVDx#9plLm>^m3|K#OWU^ufK6atHrZ` z)qoPTYT=`F(7PntGuO{RnM-r;X~;pbytIOMfCYGx|8YH`G|dr-$G{ zRCC<#z#>Aj52}0F_?MPjru3wFoTfH;QVw|p5QL0LYO#&^jI1IO0rzIe3s+l$XAkxD zzs4+TOSoXqO}d)Cq12bG8BdtG2hX#g;YLFMlA%7#Y$|5(L*C?yf1H2!X$O!;L{a)w z-a_^{#y3|-awlLh)?(DNK>$Q{x(g9Z)6CSSIu;(T3AgBqm0uv*;dP--DLajpXQdU=Zn(wd0LZq;Zt3P#bLKeMz zNq`tD9RZ!Qxm8{s!HQ-hhk24?;*PZ5dM9VI-uZciSYcJdmT)vkTCAlR0$w1H|G(bz zE#Hg8R~8T36%0p4{@h-~D7_BUpmHe{PYzq-E2J{>^Gp$`%!&$eS_lfpknoJ6c=^gi zhu{z(1f4e&@=9jwSIklX_aGp#5{A&*8D>668QOmF*DA((x~+7_%9FQuRzscc#20t# z8$)QkU+=$t=S{Jh7IqI}OQ_9Vnx?|bHFit9%`%Gdnu&uI&j;zb=TC+XxPrVz; zeUrOeN~vRBFN>&P2zX{yy1TIMGbO>ZV9TPLlpneQkub%sBwaKc$=Fs4Vna~M+;6iY zAR3>T2jv)!*>uhBL8hDlmgNB;ez&b`dKA}(+e+sYjb6J{7(yM!KlyZ=uM_|hhKhLw z=f+l^Y+J6X`KHGU0K0z&`ugkxA>cO)^?R5ApQTX-&&uN5n;mD+m+xK3G+)A5(j3vlji zGWa%Uv>4SQ<$0EcFu-yz zeJX?{hK>W8@luGh5bujH>53q#iWfx;%qW<#@9XonGYJA$W|psH_#e*7-$~+u5^zJh z;A8imv=H4)O6&ZuqnX8$#@Vj>Yv8;2lw@JJ&jafd=DBnl&klX->h|f^`^}xwT*!8+ z%02B_*=~sfm0Jd?Z>w&w91aV&AhXuRI<&bJUmk=nhFlSUryl4Rrx)_Ns3hR6r2ZMG zsR$FjT@9<~h2LqrUA*$Jpr;jifyiWsFMb>dNYc%rpr5yFvjo%{`4k({EwFg_QD{@d z&ojuZ9f3(flNp;$F<@LuzPC4V=S(EM4k4zSqUq}mh3ouyxUJLEgW(rLUB|N0hmJ;AA4v868kf<-1^nqsni7!43 zTskoPxmL!rWpohTIR3$|c7JR^tS?L`TT;KyK+v3RuQ?wr_4iW!5hC$ebiU8_acqD* zH40(k2t)3*mzGsts$OSWBB>p6`$Pk)=d!MnhqTN5x_nc}OffDcU-#sKJ-3RrbdJ{v zvA*Opg&dY(2$#WG!Q8K;8PkvZCpt>Y0RR=(M_)S=v^R)C-lHOLJN*d@!{tVs+)fL> z5UyZDS+#IxUnf!^D7#hbv15xC%WSISsBG;{OJcjGUcrs1t1AQEOZLsoX}IoeX#sz( zs^d;r4zKpV?)OopIC8aGbNliK>8ximCIHq^Mvb>4(kU(k#}s{SZO{rDeQ1uk;iy zU5}njn+B%R8x(}|+=v_!c_)34p-xvODd68-SXx#lN!}Kn24)mleAxOb#r*&;9G$8e zg`y8WyVd{{e<8}2Ikpe~nf~|kUFF|jhP=6}@!WYqXh~H8cD4P>`SrGCGLWT8j~`Ft z`ru_e!FagaR2AwRrd!PX$5E$nnz6@?fEicZJ-<|r>#>7>DeL3Ius+GTO2IdGxwnEb1QdNPg7sct#avt9{5cIg^wI+tMnT0$tb-iz_MTK-7X^5 zPjbm^BEy7+-nMAYN#iG*^SKlg?wBtA**(d1u_cCBm-AJU(Na!JspMeoS~Z;W z8o7$=;G0wuP$CH!^?sF7Ww*9FR!RKHIE`sc06Upj-@8~u{*!V$6%5mfMma_00!Pc= zI@S!|ZaWIQoP$q@Bf3$-b-f_vTl2Z`(&kGhgB82yU>Gnx2J9=BceSs-c6aaO?>_J; z>$?}NP(s)n-L;6}vhnZRnUBD}z^D;<*$z`UPFBc}E3fxjiUh2m&%1S97=r4|AmG4H zjI2!GuS^;evP7vrDyUnnpiE;7-q6XHF>BBWe*Bthk*n40s?H3PTa<|zdE%@3n-9HK z)zsU4rO2%JMMt%8G8mQzBSD;@?^JSq6a?;sRCVE&!`)HtmzIL4tOQ732>=Y^ltZc? zYF-`ACGdTynKfr&ry*_5GQ!}m>PUVuHTF@cx6K93ua;6SZ*=c_F7|Qn%Zm|A-PNdU zRB&Tq`zIV&w&4h8@ofXf^A!Ms->N=P&`5O(b%S|NAbmtJ;Psk6>yxU*?S^RKc+i~? z&)+1q=i*MUe&7TwMd^RBiZaopg_vm9-Wdn5Pr<9!h4*jpj@{G`evA))y}%R5diiUX zIvWfVZmDwkrwvwkn}_q$7u)kM7Fq+gxQ`D8^Ah)}L1+{pg08v<4_+OmZ$L7L`T?(B zF1oqeF(3i6J2RbibY`(ijq{xmoa^rP&JJ>auXn;kK8&bF;K{^Ofi^V&Nlc~dBnMixlNOE0bR7zS#q?@DnpR+}_E|0!~e_n}_s1|XuL z;g53}L(GRHsb`cMpM%OJJ;6z#oQ4?udvK`tQL2qTo8wJktqmh#!`K(|uRD&+c8~Yh z@{=F>kAHW5Vm;V|Z)whenaC zx>M_MsR{kKkJ~c_(d3Mb*DC)UK=C7%NX!p>=toJ{+szxk>ejSi!7v50c6krH_6#4< z$`LhQG<-T@{|EP(rB)^h_+B!pG^C@gxw<;q+4{yzetrEorx;l~zah?V>u975Rdzxo zZU`S2RMB5Udz}}9)ow%4T`r0Wx4MQ+78g!kxd?8)txx|%6!A4v5@wYgqzS%eKFco1 zoylZc`6^Kw$^J?jyA_6MnPZ%@?{Cu;YQLK%zMR`=1A>LM*CgAfiX)Kh^bJP$LS=Kix@g@moW?_rEX5o&S7LR>SYCRSSM7zeeK#kYx&x?8jS20^Z8#Jd zMvB}NG~A(OT~3q`&D50`H6`tSH>-PIlGbajKnMY%wYck0zbhmJ~b^_ z42H4q(8&59m{l5>WHq)zR#87babJ}nStYSTW(74K8a2GjtC*0usy$bLgGeHnpLk3_ zHJM*~a1`%GZ+4m{_?_9?o4p1UKJqOvfO7Cg+Jf!pX9q9JsdMZ}1y$J6w%l}>CE+Y^ zCp|!fnnrW>mrOvtgn+23Cj1IJRSK5_es7`s}3I5)NabV>dE4Z2RDek+T# ze(YIO8Vk6{ETbAJ{yNceRkXgQwCGIU5?hqGRfFw9iwo1DhQEVfqi#4e8S6n}XknPA znIsb#V@3pPH|#~rX=z?6D*ky8lbJLPruDfXslZ}s81ycO(p$mWde%LxG7aUU8FU6Z z99ILO!T6(2L6ys_ z)dnz(s^D|9IDlIO8m1~@*z3$O$N3L%Q6v@2KaK8lNq=0Thvqy@EBz$27VW^#iBRr{ z5>!nbX>(n=02d=jyX!S(w;zwHxWf*l9@S!e@Y{~LIrmN428T0tYA4*P#CxZIy9dwzv3W%FaeurRN3Qw)CK z_tUeU-srRD7`*OjWZ5m>< z64&s~JzDkg*O*%!JfFxK8pgUNwLtj<*B6caP7KFO`k1ugq+!0ST9bTP#L=;|`uhE$ zjQ+B$^cPKyR6~lYR}Y=oay`k4bZ!%ugJ{tx63JNtb&qQ`3z-~TEjKx? zZ`}60ChkZ}2Zg`9Lnr#;aN9}t3q|AeAHjM(jH>=Y60JXZ#7Ig=#0rezuO*NufnU*d zb(b=~w=NTVJfey;_;7?>p`lcWKW&=ziMy>itbQ{DD48r)y-HfK(4*nA%7k4ay*^b2 z*?4Sywl|>gI!4b)wpRTd1v|3qlxQpQ_ksUBl{;Iwu!I?UZ&lw3qk&P6P})w+VldYi2n|C{As^9bx*It2|IC@nee#36h=1MvqeX_I z!ia3-F1@GtP#5foRcdwumD$KR>0)yIz4Gn!hsjp7;jtfA4PsC{8;=qzOU>ZJfXZvJ z09@4&E!>cux(YL#j>V&%9F~bkS6(%bRRJ@+*EUXyn7@oXSmj!aV)RYPP%Un^Wkz%YBC4` zb=(?D(%oFZh{cyi+;iW~;wLz%7_R!*c))n%qBzN>LNzdF$oh3A&CeNsB1arOCPNvX&~G7d z=}N}avuMkA{p*NN{M-*y2MJm!N9|j#As1P1%C!GELr7Bw=8A}Nw7}DAu@wTn2`yBSbrWpfK7QOnD})rT@GZ`rgmot{el}l>7XD&` zbH<)+j3g-c*}Hq3efU-C*u7zRe>_= zI8}90#Cw_g)}(~Awj*@fnypssp|4LYs(J^3GZ??Xar)ca0)>p~y$KRe^W)5G1Pldt z-oKkz|22>t+I{oSye2%^Z7x!Zgq=+EPs2yz(vC-uMaCQ_DkEY+s0LsQ;so3vZc_2} zaFqZF4!;gV)yLpGzM}Polf6BWLg(2J49|8LOhhCN$0+}LSaNQ%W}lgy3<9a{qF)`C=g6sX&??^GP`UNnI0#0 zl_~VUo+UU^_;-JjG&E=@d);F-DEkYk^_>O9n7&;`c}YABY|gL4S!9i;g!}RsnDyN- zi^Yon=d%NP=yHcK1WEbgvPBGBq?B2U5fOx*fm6pD#_?(|VK|}5VO#EP3xrt^^MA*n z#EQ?h78GYnN)nenJB@IY9JknO6AS3o+>AU8>wb<@;88WzofqL^#7;3(eH&RAh@%k# zWue-twbj&z^EVTW{ud*tLKxP>-D;o&=lkm@qU;~&gf@|!Y9)XpDj&60^93ae`uvmJ zLwYPEte-qy8>!+4Gw2x36DB7F*SmL73pR&k1Uc&+>C4edQr?gYx%8#sjII<8e2K$95!*xo~~xqQKI2x;LwpU==4*0F5@%B!#n-joo~{Og4_?E$R$ zpEbv7f(>TgC+Bg0dXAM9DHtyzRU-Pejfem%ig*H2b|aw|N?yc@&oh35^@uWgpa!fD zb!eacKUcwq<5fm0`lBKqi6xbT6Nb*^H-g~w;w|sSH-pej(2UK`g^ME5XwK|h%JIa> zX*h4t7lS$j^B+vaFap4Yvrz+aqY+|6;K}TAMoS3b6b%|bO|idK2KGzNiI(pj1em|;!(3`qgYFG^_+m-mA{ru|yFrd7)G)CtKf>vd!NLZKI4O`&lln_62 zx{N(OYw-JS+=T7N#oDT9t(>ixJiaaW)Ki|qFepn;Gxwk?&L{Za-2O^n0}7-g@U?FG zPIer_zq5+A4vAL}^EBNoowa;n&tAT}kY6v#Qu|8q+iq<3s?ytT)4+&TUr|T)>C#4f zgQUH5&sxgQnhppy88GaiEJz*F<@MZL1H!=8RonqgeSeN1;Q%w7Bbb*zp^oqu$f1sf znd*}3e_@UqKpj}GB_Ha1$-8I#X5_3*9L#sds1;s@!%UtW&WCg&Yu_RnD>Lf0yE}Dc zRJ|)d=I!y1=UO~W+VA16qrMG&6puw9u3++mN!-K@o#k7R2K$9rcDtLjZu6IRBaGDc zaH25%yD&MVkc-92VEbcA+8~Ni+`@?-`;qA-m-=vA{QknIU4QwXj`!Bx-wxGCQPm8! zN1jzl9}Xpsz6y5_9LUdWYx3GJV@_l8zuHG|;LfEr18`lm@YZ-nK+3-yb)LkrqOd1N zL<=q#)&QX$?N`F~XdO%Cn_cD} z&71cw4#UdMGyWj@Wj$w{GC3Lc9>fPL>OxW$x5)n=6vEBpeM%XXrRXpGCD1(T*;9)W z>kJNPgOX4|ui(DIv$>McFaIyslad%lSjs}jtSKSD5fa%dkyTg!<rWXj<>{M8JDfh2zCcBV0Z{7a=ZEs-M>b99seFhBm2K;JOm#@ zB)KCE`CEkp*I<`2$Enn`L`^MIFPT#wWjWl&D2*{1P@2tDr9lOZUEZ2a@$8 z!vkeFj&JJD9{hh>SR|d?OfdWuhS5>A+zBzQU45)wvIhn|K3GFKdot_Q{kzzGGV(b?*` zacp$GGa`O2o?M{0tPwILIzz`5x8h04|Jlte((^>#G~*<9rJ9~~hKs198fObpa6A5W zwl#m;f8oZ}0Z~2#EQZpnyOjWpWiDzY{h_O?qQ$+h#g8yv? zm8(v=N4INksdv~LW!^mcwV!3<`!n5oCKZ;t4Uk@vc;Ro&^k=A_z6tAvZu%Or8}~3< zqTHFRGF?Y)d0{sBE?ADI$B!=7CjC9ql^;>Zp+cXSQIt1|R$yzVf2-j9l(^S=_3vI1 zIpdz8a}fOG&87YNlYVS}8ATCMo1-2Ha&aTEnJM>l2t&=UAyEbE%atu3jad>7 z(z15|yqynR(6)c~f8|(L+fuOs7wCJza3SdahIFh%@&Aia$K8nCi(;6s-tJRQ15R!z zZo!MOo zK_@(U#hg}7MiZI%1sf|dDzt`_`z}OdLX{(g&!fc#P(>3-Y$79iesUvf+kedwZi6#Y z%M`-cEoIWQ$?qyDgCIQ^XaaLabCzwXYufA6nZ_rqD5@0tvGcD@YDBX~OVTVM#eJzV zmmd}-AXU2Kx19KA+t^XXYUZiM68|?pg6LyB65F8Yh#}Uwj;17uC*i{Kf}CM*!0dDq zGd7{Re6Z9?gZxDCy9K3n0#N9SLW{)YW<^-T(BS}a{9hR*EZs@jZr(e+6U>&KQCs6YEc=WhQD)uzxo=~jYP!@W)9vA`5 zna@hV;xl43?mHMpUhBGua{s9uEpDh(`l+YkKg$vlAxn&q3=(2gf!W}YgA+eb$1!ut!RLYY=~^wRMmF zNz3@1%oiqAJ>PB<_oUFj5H{ng?Pp-DP;VDMZTqF3o4XnYUD!IniD01`fnuyF(U&iL zqMDMro=a6v&-ua&pc$m5C&za#Bhv=%!DXO3@5=ZF1U=YAF`3GbA7Q*ZB9rB7@xq3K zyS8y%vnBW*k6_vvO~eZkYJS$Ed}(B1KHtN)djh!%ZWT3l=94Q1M#PNZWhW%RrmJSz zo|>?BIUL&67me`Pda*^K+$u2i*3&;YP=@1yTR4tWGYrWW<10k`(dwYltDieha!x;|sN3TM4k*X(7rhs2433zLp?i9;prOu8l-V*e=n(fP%>F?? zz2@>#XriO6h)hW}av~&{GkQNGmMHcf2?wj{aC@~vT-sm5f^HIVe>>pT=~w564%go8 zfzvuhBcuwPKd`CJyo3)K@bU_!MEPb%e=46)^%kOh5jM<0dKhpBAn;G}b?m(K^HTA) zgEQwp+BFVjO0w;p_;<$3pUIJ|qJXmVsvB8VVRE!*jtk6ef17$j zp-c_~ia>G^4-q{>&}U9>$%budW)m74XMTt$WoF0VID0<&y?XsK2F8jJQ*l&s9B?uzB3U#0%3oXt%gJ?r6|YA zfE!O7gvqhu{;>u*^6*vrb1qJ3_GSz1WsCW2mW&_bT#J}g93iM$ zzfc2`q$*pQ4xc`DD>}nS)ce=uM`s|Uo1QBV@G6*m(WX>Y@O)Rz+F~7#Ay3ay5Fyym zMV`;ySCo78d}`H?%s!&B?yTIKDV)T~&t!2_h`NFEFIN*T$p=~}BuE93f5lipZ+<-+ z!Ei;fJ>XpDG1a!=ms15+FTr@fb*7xXDvI<-t%@q^2D`s4z5_BQTus4Aux~bq@%(-n zw-Ayae%;l7lB)tM1o??f_TCJrk(G(=Z0-wf68Tt5^PmPGn*-IOn@(*+)f2&C?ICsHRKwN|L0K>1;K52%B?Y{Sat84rNR$;0f#54PL*~$4VwMN*^kL_*ixb*{AAhC85xQN{mUhb*@Urz`Ooxlk8KaKCZHn_R*I(UkHN$Tmo{K!XYJo)LynwA~3cW`v5K8*9 z#2BLyj2$B$E6zATrooMj8#Gqqc}x?oZUM-tRj{;F z5VgjCSqbV;oyUqTHevqONXj+s1?7TRX)GmzfUs5&OPBt@NLG| z%Dbk-iq@R{f5}ts zo38gO^Be}EbM@c=lwq&9JmW_J`4@7+hMJ#DDpTe+g48ML4P_yIF!J#*ksuKta@+bq zh7)R~b;~{ct{Al&g!C~69#W>YMR?j?qyy{ssGNDU@=M?#+RT9Oc|sTR>gqX1Kcs2H zB`1Q3Ow3+5KgDUWFW&WQe_lNV@6_F7qSIg*8?Z6674?pji@YYV7aZJ7KUx_8!aBs9 zCQU$}xAw9-(EPzzoiNYrlW>UzNYJrW8wqR5Vh?{cVVa#XqAQ{PErQlUoF%^%kZ=d%ka`QQx#V9 z@?BACqTooX!LG41bc4wGO8|uzj>V-1bI@^Wj@pymCVh!$9Dyv(T+U0h2}K^+yu)0` z*#e}kB%M?hQP^wv@nWpuGHNdioeHbqBdR>(GjUAujLE~nLGwyr68Lk;p#lLyXm?1B zfn9KGu`_KBo;RX}@s{0K>fDZj*WESW-FlXhFNhGl&$@KDO2CO7x+=ce`s&kbT1yYPy!?Dz*bNp_aJghB$TIV z@s2i#n(Jv(3`(B{k)$R1%YoI4xWMZ@5v-Wie|(O418)$jqU#xWUirF{OO;nPTa*{@ z{Rx@Fciw|8i%a?sXWnR#HW^ne%%A{17Z0Wylnqhh~gn5BygVSSA znh~MBGSv65JnC@kg=e%`M!F^!?`? z{fN`&wdOw$+AyTlt)}NZp5jvtHYacLs26|bO{mCfc7)6`Y9rMm;*v(G2*aNA1Kdos zXW=Q8&W#&TuNz%ki4y(d=dlsgXa`91nJ@OPD6P9q`;loh(kyqu%-t`fLS4Vfn3f(H z=d>v<@r+!IsTz>Q5gTL=y^ekqt01%FH40=4)n3Ztirwm}Rlast)jm`Cei>Cj!jPkG zD)>=OQ4LidSNHSC`R<>A2%r+%T$Fyb$fv#?f3}G30K*GD3~A_YjjREvzomt6M?O1R zghAIw?}$P&Z-t&~gnQVIb^W#?KgWQ8cUpRSicvjXZB_z5TrBVfZyy%%n+{frEOXh= z3f>Z-8<0yX7t0z&Rjhl*+o{X;MqTPp-8;1>eJpZa`h3S#ZRhm;Qhoq_*t*?8P_?}l zaMo7`d+nv`5vIC@r=^lRJDz1*~>P7F$#%|~8_=lfG@sKYO)r&QXJ z#?Xr$GC%bzFmylcS`@{=MlkxH1ri?Id+SPa{*G+f5k@4X_elsDAfBrGzFCW>gTw+F zW*w<`gE?GV#bNwWM(@L!@1U!mHlqE5^OvvwW+o2_z2;fa(@QHEcfY?SsAiZ-s)Q;_ z_$vJ;jAKk|3`R03opn<|S(Zg`+~una*nLxA3qv{?gr~;Y?^A zWa{3weX5QsFgJLFrLEBWE%U<~CeVl@f09l9=}i7eriYu8fQcxBHQI{l&BCN#WAB=R z69Ut(BUJOdE#!i*2Iw7OCE|ps0Rg}rV`b6?@LgZ;6ZiC!B`3jw??{_UH+t|a2qIt+ z#ChFx+{I0HObgw4qe6FJ6&SEJgLYllv9$j6fgXL0WvVLxiH5nH&;JIP2x>NvRm#bm zdeHBuX3?4KrL6={V{EgQvQf$8N$arJUMifF6^%WWi@+lS?SoFZF$FoUeeWGvu7s6_ zUI*c=3Ju-6pTyNgKnY15_@xbqfCaCr^0csrs+WL6RxJ5KJmg5nU3ywKQxizNgIrUz zSVEABywb`n*5ChQdbdM!04iIm0oc<5p&%Dkm}(OkQ^Hx zS5|IYzhvP|Ip)vtWtbZJNxA22A#rzcl2Q^bhRI$Hpc((&hkyDJ+KFMEOYZ43>G1b# zf*OH?PTKBGhKO%5 zr>X~ZAL95wDZE_at0%Bbu@FhGNvVgP%Fnz)zu*2-epDT|Y?LY9{$7mNh5bx@q;^0* z{mQ2YH#Atxwmfdj+W)(ru10vn2nJnO&%nV?Hh;I{4Q%RG;q$R07+S-SIz_{LP!6P$<$U>y=9CR)4;Rq%66?z{-R|~2DVY9mWYf|xtYBbSa=jk zHB+M&nbiGZcWdNEY zfc@IZD5o6yjJwYV#EKM$G^Eub_t55@nPaLZPGAyp%mUZ1;{lskXk{3p61-?sPrcO@ z9CSxLgS^v(Jq6!@5_QuX<{V0XA*YU&BeCT8pqSo=kRh^wR-7NQ40#@W0*Cy^vudC;zWL}2d$K`3i6|p5&sJz_|VW2AF66Bsb@ejOEyg45_ ze8#jTZP9`k(UWn|eH4^l&y@=7=U49ym8OH)AmC`E>5oMLJ5NU&+K^(Y z@Jc3COvj1LxAp8FdWRa8@HcrghkDD3`5cUCXc-Y`xk_dGB~SP9GuSvtf57vC*}*UM zEX;!OPFNa+?n_Q4cD*~V_lk#}f_*m-%vQdzqsK;-TcEjAKwrNb+;fsp;FKdMx}$8d z=Q)EWR&G^p)E)9gk)X+{aT#n_<8wOo8oq|N(uJ#>2d#!JkR$b+*_U#zv?4LrPLb69{ ztG;dXD}-PK8<_Erviy#`vw5-`KjdT3YU4KZa#Tv#=1)2b!G!hXK4|$Ga4KFqMkC<4 z9L=vm@s;Ys78P$$yzmmGyk&@`Ji-0ds)berE{S#7>ZS_#OXtiC?s}*ZO zxjGGNc8I3ZYq`)Kt=~sz2qSJ}t##~^h^I7;1g8WY=)cxo1Wa`2zq2|ew*nKHlhP!?qEz2@#X+Rd>sb)Ls+BGH-?Bge9k4=e@>2 zR3xuS+`!o!CbFk_6m78!&l;)sOANNt^HEC*qb3G2> zqHZ3l_Ga$mNtk~@JUB<%l_U7!5>WC$d%UyZXD_|X2mNNv^@T=XM3;u_s?boio)Rbv znIS3Mar1Fo8*ekB6SSH?`<>n6(6N;oivb-Q9{$(JoPqQ7E#B0lT}lMMz$^$>umyq% zb!R{6-2xJWnfnV75G5#|d2eQ5x`T^X8qiOrP9^>}@alps(=9cngo>k8rnwkwq1cM_ zzdD1+cW{N2j(o|_DA#5=%;&z))J8yX2(rsJK~(c?N=glc6EOBlgL1qfr0Nod$tK*9 zaKEOeC@I?Q{=PDY z;SM(dYJ$Ol;S)^Ynsv>sK{G;1RVs+Fl9%eG`$ms9YWDCPF!*5swH@la4s!zgjQR-l zEc^#uOX&5HlK}^thKFGL*P5aUUJp8Wct^yQv5x2w9p=%OAA4KBmiWGQzP{@}a4;O3 zt#isZ2RE-=33H`BBao~nz1&p{hzKN+D2R9bdf7-;*W5orkgGCVUS(PeMn$7X46EAS z*CcGCx{{PdK;J510?r{>xePR45cRJ$-EOSOxp!n|Li{)Ox=FkDo&7~h?wo$)*riW5 z9#!rpazV(R5{xs@P!R`Uy5QwW28R+XcrjmqY$F^HC9$Zk0&Jvr?}5(gbie-H0epLs zI29~VDGqOESwb$~j zF@78r2`rgYQT+R4!d{0EozoBaX9#B%?!$@AtidrmOsfL=d``Nx_J>MRjYBoJbhwT| z5mvQOf+0G9J7Lp%;$!shX4)F|fvXF25|m1@B=v@=`B5b&v8uOo%SQCcd6Q?W3*7w6 zH8($Dn?UrdW9rf$@{s#q?x^a4FGGI*%}$y$ylJm+z+DLAE+q8ZXT;zgE+hB=KN`=} z=s+HiH|kpKiG7gTVD)pdz4z-X;oKtGb>>IeJu z1)^O%b+=;YKX&1VFrTFl;=ITD#Yx-ue54T41jyWYfx1B@^f?VmA_1~#UMJIVZ-^Dr{-C@}fPY|78B7;0E;>DkbBk-(-dZ~mUU#cm$6O7xA5g^pP4Tv3Q)tf5zAZ~3M{;aJ`?Az!hx!!nuUfxIa(WMH9 zsdxabW2w_&kFo7i=$I$3>^rO_mvJ3RY=P9JKoMgBfXo~P_F+0lYF_yYtxA_l)Cqhun>zBdZ z{u`6FiGYsh^0>1YF@^9RH+CKL$}OEE2~J+Ya0A`X<=mp@5neh5syIZYDsm|;6mapU-Lay>R`ME0%^kwdc{V|4ZDbU2z-j{?$R>HLod@jBk zQEyF!4OA0~v*d052`~^B`hDv^6vI~qLvn+DMHJJk;ol2n7i?Yiyb~;N(CIZS2z))( zZ~h^8Cggj<_FG5Y^oLUYCp%8l4){}_ zK)%;X#rrmbJr}=N8I3VmdJeJcg|vi}-V>i8b6JC?jCOkAwKn3fm;7(h)`qoL%rO}5 z@B^QW8Q2gLWJNS&4NRb;z-9?`S9NYhtD!9uQ1Bq>F}hY8vZ&ul5I$KhtuVfyH*GyNdN3kC*HGO{Zu9qEtoko>fac@!eNqTDVp*6lX zmh`BSYvE*kE*toms(G~0(tinKlb1Af_k`#=wt-EUlM`j!zqc`ga*rX{P5`&&=g+<& zi)KvjMzVJ)k~Y40|Q(0>JHb0^u8BqU8;0b)+7hV0CY z)q>VQ6V;2u}M-qTI-46F$@15F++x06>h*!{8G6Ol24U;7++BNIeqd(kN56N{- z1P=#Yeqa?~;bXN`)etw*O0mV=fhYLP^ zq5?J_F25cqq4{OHrS4~)BUM#|w}^lGgzR7264i9y2pVynnG3c8I$WSy zLHGAAdEifQ6I`2y4uW;Sh~~z=hHjUT-0oz;%8)tP)>YTs#_ss;0NG`&EA~@}hl~~6 z3@t>=Mk3R4bT9|cM+(S|dYOas5mkSc3ZXdN>Y`!|%mbVh4|aMwTf6l=;+@~&!B*oE z?mQcLmHrUoq1J~>Ki&mYk)#*GK&CJuPfpV6_iR5&Q+Xj?FK!}wU9F-_+~y zl7juUv>Q!A!|U&PIf$Hb zh(~l2pImwCFH>obFC4t-hC3d2^!D4jdus0$AhmeM{+ap9 zmK@PI4KdEK&lwuinG76jeE&EcH;F?B_z^`%)*`B~#k(?H2?UTI%vAQtu-q(3i`WFO z%N=8>4?>%eBig&9jI@)zBNBn4=EEZKMBCugQ{YRDsPEoyZ#K99O~(LXz_mxtU+$Ur zx*nZH7QYR+m&n{*5}K!}lpC~bS~wvB31!T+`$jatAl&0GjY+%F?~lp8#MD%x&tE_X z8r}*zBZ&I%@hAu0n|^ryKu?_?kgC5Plmbve);|5?B@A$+PE!fhs6o5$0f6Qs-T8#R z$eO_GyMTcT9~i=yN6VPag$Pi}iN^7uj#2mY-JfR1jQDtseE{;uiGqQTma2%`_JSmHfbyxC<<#4V zQGXW3S>SX#xQp*kT(n);v>bBk#2R=7kiM@eD9tnY=f1Kd_+l`5e3q}D=8b~m;A+?b zol&x{%h%y}SXtEPtvA+hp@$+14^}`#`e>cs4n}FeWWE=E$V>nO8okETmwA|;!1k%m zE;s|g(*UK#rq6m()wH(70C|k~&S_Dp8~7DU_TuD*L#g4Sw4`$9T?D8GU6)`)VZO#nfA!YJM|Vr(3b`N-@~~O-O+gm) zG(EU44nz?44_B?;=1*ZAd9%a>woiLA`en54}~veZKCR@0Ss zs^Xi)r_CGCoub0{%yGbSLf}Cc+s6i1UA-~}7+eK<%?c?dQBr8vtSBW&EwLa7Qkx!F z|54oT8;PI=b4uGw99U$>um4EoLVV`cZZ*Li65#L0^X8-WsD3O!aItsukJK6^s8J%d zCn>yPV&I+rG$=?k9rMf-$XRFdfCn59%)e>68eS+ma*HY1oxfm&%2WIVZ#5U`o<7>~ zO8hA*3;*pz7&TiU+TX%+Z6H)y8xdf3qrGcwopCXOL{{BVLB1q@Vg8~nur6F2qprDq z)wv{)ibme!Y(8VX52aio;Lm+d@r!g^C=a!V%`bm0bLvA4b4FR#+K(Pq1P)lRS~w8S zo|kZQFGi_jRFPm$e^H-n$-W+Bu^s1#W#=^dUFlUU=*Enc3cf6A!FF{Av>{;2gzb-r zM*aG$n^J{*M&^SK?R;2hvzusR>+n_ZyRdad9JEI{&EC=sm;r2SI1-pXF#&KN`Qi^$ z>L9Lz^*38)9^Z6y)mw6AjJ-pR@$&{&izi~*(sIyS9s6wgnb8|I)xA;RS5WIcN%r22 z)FvMvxe&KA_HA+e1*YTvGUAuX)t^)DQ13A(=RSQ^Ge_<>{h0{fr4E?Po~J!6e*}G- z-u>#FX25B}FBoTB_5CoHgPqVKt1Ldq_AA3^u=_ejcweWOQ1lQx@aEhv++!4I93{-= z3gu7%sy?hKPm`~fx^s{)B$Zw}C+1*Ww6W~vZBi4jZf2wwpox~}tv!<^{vq2t$uX|l|T?26n_?Zc2QaWubqLy0tm;Du>Au4jbFv_D5< zL#w_Qck@b7#;f34m`}(2f!bU%Zm~{-np^9@x#HKVQ?jkac|U7boI4OrlP%YsI*Wc5j(;TcQt5|v>8Wdi$8&M z8(Sqw3q^zUQC4~kW<2i}2cy7^Q&iylPm`+M!>Lv@a$`5@m&+eC&zvuZBNGp4iGIpL z^lUO;cov3N+nRsJ?*TPN4wNCj6yQ|1px#DOnf?q|F}t8OobTaAAJqE{(AJ_$Rv}>} z!N~1v@2NtGWY!%And@m&j~{M05AK5GDEB$yyqwH`UnYKsya7}sUs)L5PDh<7do#zc z9`P&JRuOzTSH_C2`K4(dm~}{p7lyOORF(nmpdwTCrks51*^UQE|I3*zcKeHxR>XUfwO<&N+V<45BZ1zcxdpURl z=wkAaO3@@la)s#!hZ7g%1bf29og+6<)i%PQC`H+P99|*?rJ>7F#J22cZPndlix=^AGS8wDYaEOELmEnq|rHwCiY;U_WLE! zU4%7|We#8}!&cQS^?uoV`N3=%6O>=CWQE5%gY83+apNnpwJ7W3X4zAKQ8}RB;PV|y zLDhDJ8~PvTPsRm2? z)mUa_ovPxF&02vec;EXb4EsnQv~ z0hGK4COrj+m5Aw}6e1bFI2yWsiX=Ht3Uw8!ONagkih$Tqu1`}*?_G5^k9{`y+ihv7 z-Za8EgK4{M`!?OY=kk%A0w;KDPt&u`&NMl!S>K)yWjJ3ldY>Q=tl>wJBCh)#j5Iw2 zxD4vpq@Z>AqV;e(G5hb;zqs7HJ~2WUg&KuKLgNr{{Pj73=#5Vg;@cKx$M2)krqNB; z1l~XV=C9EEQ+H8{c2D1fql<4TL47-;|ewa&tvz<9N-!qQgz()qLAChf|$bs$Ep7 zyw+u#pNwZ*R2z`ItE7Ep*d_;EN=hts=gENl66PMf06uSu^n|tZMrTLJAN^ByMT=h0 zEBdm*3P|M%7jH0RdT{A|GF%AqACKaeJGJ3@{Q!BjaxiDuM)8jE%5#~*#$cK6x(aL9 zJ5DkZ@_DwV_S3UF45$8@(S_UbgA@gbXuQd-KH{SV40Q;(K*FW$NG;ZPpCKYZZ&C)z zTK61uFDSrn^DHZob(Z(Nh5#4edME6ZPf4GkDni^lN3%6mb){1dU;bLx@UL}E4Sh3T z5&Eo#sD~_^LE`910O32ypbxP#_gY#vW`TQ(R{HzL6;T(qjs%!vp#c{2ioe4A>?XR4 zal37D6)H;%j#rsBx>^!{=yArV|N7tc##mm0K-=XV)cs34-t8+6RQKNXgnRiim}A2X zWc24Xd7l^6V5eI$QQ*zMH>tj)J3&m}{?s+wk^uY-fOq7$p3rCBvvtTNO^Zjjx;Nri zyva42Y#N|z6FBH9vOm+f%CV6Fxg>EKKG;z-!d(s9%5`YAVNleCZR@K2G``czUypQY z%oaiFw^jZhC3@nY|La^fg(N^$cP znw&S!@9J81O1Aco3NinZeC>YhBCE~UHeQa1xrnJk375cLpU$-JOo4vUljN6Q$@e~Yv7DN(^V6ZBhxGTH8_E_;}F9L!6UTG2%$@W`1$6MecjVYq<*|8KXMMj zMm~@*;Y|G)2{*d^KP|v0&sm$B4u(I1KdfRuvE~Jgk+><5QStp^w}c7&+GQu~mra8F z7q7s35lz==H#7H|PT8)MGCmhv)!+Qe5_y=m-g$bc?MM#V43S=^{RI;QBiT8Dy%)sJ z+naUlRt`=^(|Dn3Vi+cw(AU6%)8qK^&c!$2+qWh$qmGZut2aY43Z8?mPlQBb1%n=M z?LF(DCF1)XbTE`(#9$eINh{|yFkgF?Sqq)E3w7+~`5xR|odg!;8afnGje_vRVktW0 z_B$lMgoqtjdF@?3n8U)!O`MFUPh6g7M!m_pP}ZU2I=%B>bAImlQwEYI(4})QP&%P^ zj!>Zb+0D|=iRmq=IcL|l@NV;+$gKS5A{_pb3cK!IGMmN4@2P{G@GInB+#<_uHaHC| z7woenojja$zWqE12DO%yNE^^9F>8p}RL^)kX^uv15p%3hBPe~~(1<_EcMYdF5aaO} zLEy!^4Z<6MCk26*=zrA9Zq}@K=Ui?yqVNk}lwAyB*@rEBtue56QD)lBhtX`TxoF@Q zdMlW^^YRe0vwdpX{p}jr`~7y1oX7{)LAG{{t_n=vjklwWpK~~uO`}jXH4}~A z_uQwyin#+Xd&r$;rcxQFM`myrHhn#OS5cAwO)ztyLJ{fj!f;3NSr<&7+w2v1Cftoo z&z5!9za6NGoEiiaABpXOfp1n4XS^NH+g-k3!0jr;j%BL%ifC$j)b*ds!O+zpt9@aB zh1H4^8zD%I9pNQ}KRg}il||&(wb2#85L#e=?mI9k=~mP907iC(9f6^rG!`GCG~3mT z?0RW(2wWxRNm2?S8xu(TH`FJIa_s%7OC3vtRL}CxV_f8*A|X)Cm6B?_kRG1$3fG2pCyDfZP|0 z!@h2%@bF&fv#PVip$H93lq*Uo;(G!IkGIL|{2VW|CJ;H%hAKm+yhE%PV7I9!QzN@f3 z^YUdhgsii-km#JIL|3xB4_(s(0n%zXQ*uftXz4 zRTXsYO$|r;zXc=QM{CfxXe+)v?e6M1W%%?MhUTt5HoA7C)BQ7cuJ?O@`s1C2NW+?5 zfDC*{NHurG-O-ipMCdT%u<6?ovO9#<-H#ph3}$qRc_SnH#^Ug4v95C0JH67bcF7$( zM3VhGG~LP{w=}Mx}a?2_)M(=NLGnb->?oa`&4PB(@u z@r~Urbe0bX7ngT)a_47Wa+S_y@Hy4mBmEolh5yc)_>)5EhBMz9G3y^EDK^RX%}rVD zD;z&|<8GO7d`HH!Ewwg1m-l;FsAd<4{Qia)vWZf;@^^jG1`?-15=|u~3z?Wl6Z(?f z@5+BPOM|8N5qe4wJ_3D`7|&VBA4jy$plU(_F0cixubfo8rd|ftLVPJbd0O3$yp9OP zw6cjbI_lKQxtW()uj`^{FEo_X{tf4Sked7P`w3?u3h4!8lVng+`DbDHFT{pvm$f{w z<@Yah3+j7^{glaLMo_v7i2+zWlszFV)wFM2cCg{WdG2QMww}xnC(N$FOB-@)dOq6lQB;{SDD{F&X zY&;F-(Ji-j>_2`x;cf^?Nq+vIXG|IC$isn!J3^dR5cKgj09_RfCPi@G^f36ik4y2^ zZY{LneMhu99UFy;xs{2-3qul@;z?G=pHv@ zShvJx&@%K2xO;lcP6qPj{qa;~SNo^S`w(NbR8;;swDFvij21-iL{xs+-v=u@TsjL$ z4MV3Xh^R23&!5vgXX@&0v?R`}!|!ZGFXAive40Op#HAp7 zr3q@tZk>o{-mNqUDlPGstVI8oP&lON)N<8GTVQ>;XkhPUxW%I31Jxm63VnE7929`Z z6?ojKS5^^F6F(Lz+CwX zbg7^?B<{EDIFxwlG?KVeNg>->WyGVlbqI7gQHX26Neloa2> z4Ed!LT`=LH)_KU`OTK>+%W++iXxys)O>#HqZZ#SSCy_B=hGxO4uL@%i&4!z{4e6Q8 zZzSHz72nFi+~ymn7fEn#(ilhA#*$W@TWhO&$5=#o!T!SnwjW$&yTW<%oyL2y_)|oO zwWwF!ce2OBS;Db@Ag&fRg9%eF^jCEJNq9pg7ACRKGjVpHFY!Hr=5{yimk2Gw?Qhsy6lJ3k=t5{cWav^5po&8P;!71zZc$+YKO9e{dfC9vs$xj~7YWZJXY-DN_dw5yh zBo5A4p2Vxa-piU?&rCikdPY`Zngq}535-tJNt=F&fmNrY=WK^Pdtf&Oj)>AkzCUky zP)#}*43{=L_=Y|X8%rd5nd-sWBL19--Mklv1r4O6aOvSrBFhMJP`yA}s3zIZd>L4& z7>Yy@Ln)1Q>Rt@WpqH`YKWf)%9N+xP#en#BKu^Zy@!V)c$Sp-Jj}qarDHHH$SpHqY zeH^x{k`*`_SgmG>wQ;B;hy9nVeyv0Q=kHcGL**2hgXa@srA2##SoBDDFgOL~E0iCI z1{wjXYrQ3uA}87qs6A?-_-s*kXWM;o>ju5+S^q7ht%1P)&)ifMRbBEEkW>uyf6rAb zSVV@8XEZ`CB3UjLZrxO+CP^-()Suk8))F%`b$NrV(UodIIJZ-6YFOYWT)ZQ@+C4I3 zl<_$&pV9tz)rrvAZjnpNXNj@VSF%ea$Mj~Eujsqxd$_8qUwWo`zOtiW*ny%|!|pik zPk-)*szL9;dztTHhx)ytKMvAXpche$`X~4J1uUqlu30(=DupMG?Z-dmY4}XR z_L?MtR8nZ_$F_?VyVCq(skn6aX=4uf(T9;9c%h+qcIeirHO0i{|IA5lDY-)cp*Wtw znyJ&NBwf9q)Lg0N#e$j!EY%$4IzBDJ*E3K&ly8cDigb6Oa5(?ZSPDzB_eJoBxuWWA zZq*4H=$T!h1KpWueL!D+VafXj@xAj!D~j?aW;+s@h3uVF`r1vK)7LNp=D6YVhHOv>Y6B_=8@mF&;S735o_TuoT=Jhz3z}(BHTVuFk@#r0QgTSQEPz z`8H!qj^(xxcgsF1eQeR--;=57&W<2Q3^a+ypaOLUxW;_(PhtPb8-DcXTRhcc3>b{p z1G7oCaQElMaL`BI9ihR(&P7AW#jhLsh4(nMK~|=YKdCJVhSC2W>it&)`3RW_2OTle z;5EVtx)g;vj9C%z2%iV%8`3`}P-*rR(-qFwx7bGz32Dj}SY4=O{KMj+ato}Fzd0Hl zOM7}5|E#P0zh_y`WlW36m2i2PsdHo%tM!ShxS*Bt1=2A^whx!_wd}pl1`RtsQ_0+3 z!^xkzXHwe#Ae>lPEEICU@1C)qFfdp`!i$G~bN6$teIZ?YWj4(`H#<_;#CjnMC-fc3 zrT?7Bw@-0~xLjVZtYv$oQwnllt33RX$D2PD39~CGEj^?Q-J~8#bHqRhdfbai;mxthvg(Ek=1%l$Rt5zvJ&M- zL&fSlh5P)m#;1uW6tf~DA*z2xxb;o5Fa}jsCu0G+U~uU8C8rd!B%cit_qbkWCIj3& zt=UU$*SXD@V=5w7P#)38}$U^bvDCC4=W7Apulezkqs9VZOd9%FKDs z7H?}x3|ekFcvW>-zktKo@*z3JFuIyzPVjDbp#-{{>Wlp=;jf#5o1O;9mqk@4i~tb2 zQw~p{nlt?VJh_MqSCEcXcI05M%X7E_<5}`s+7Wdt3l;43YByYT=mu@&-x%2k*1*u` zi~8r3BaFM3|1lOapu!{Snwbeh8a-j&V#{wUgEYWL6wp+#_X+w|o- z;kY4trh**0R^wINrkzyhNIl=>{eTEF8RDz4d?YaKhQ>Qqr z;B?(5Fpu5&#ZdKr-^GVMH-T~)*>dA6y6KlRdv^IMnXPrQt@6sv+wFU*B!xxaNsOtn zN|(1ykih~{4tK2-4F7SPp0T1ev+?Cbk64#r8I{xlkXUkh6`aYZk2M0NI{JHCPV5en zr6mm1U+zkEpsiun;q}y1T|&C$sH7TyjpW)>2k(uLhfPeX>UwFBNc0aTeU15Dl=>n} z?r!~LGE_YU8Qii?v-?ekU_0;fWdt7~nX1gtcAPhEvDC>t``v>5R7j*p;&#`iJ(0q$ za;r>=XmMeSW2ho1!>licGq+C};!9v(1DhhyZ7@LO^!Tbi_OLH3ct07GVJ_kze)i05 zfyETfdT{3C2mVBtAfg?I_i$~mD2y_`EOPMI6XPuS)B5cm615b6A`nfLru)9(oBDsu zdoAhdUMS3YmF>DxlQeP`s#&2^psGQ3rQo*V1={$+rv$E`zGNe9!*x@wlTbaMv<8dH zIm6H4oUBs?eCI8R=K`_7TnmXjuY<=IK_O#~i@nE&lq4AEVedq5;e}iJI=D_MI5kHZ zru$4c=!*&+$Dt=2yvrWzH13)Av)xV@rD`8|aYcJxV!_v&+3|EP6n_h^t)k@1`+5X6 zRldphvy*`g$}A}7i}kEul#(2VeXzx6A=4+DOAv3|Zr%ba=Ln-6y^`l~(Fd*lO+)gh zdHa9<%bqvk)fm5FoCi)(J!tv`LfKddd}<2QY=)5+)iio~6O7PPKR6XOBn8%C|6nND z#%mkJR6VvE6z2<%afFKBw8ylG6IIOh&=It#y(%0WRDXQuO&_NI`$;JKg9B2Ecbt;_ zY#W+Qz?c9MVx*@@ukE*HJ*LhB_J0vMHE(}}TWrusRW1W>3%C0Ja_F1LsQhDXU&aMCQMy=#+6|7p$+4Z(g z^WbCmz0~tS*&~x=u%>2rocNpN@exg!{zb64*8-`06ac;{e`z*bkd}8Mxa(QA( z$Rz1Sf7$s$@=@c3O_0{OQ=M13qE*we#Qf4s|w4n!W!t;~fVU$UHpg1HwizxLJwrZLqZ1+ER1u!#)9%&y&T>>?}P4!}jAr&R6qPO4HoTEMKgePDC9Re4bT%Q1|oNMH;We zCn6qOLF4+EkiT5(%~vSyR++j};f#CtlLT{c{uFOm59(xdP99$>te*ab*HatmmCG~6 zdBIbEZYSI$89(Ts8+-I#`w^RxtVJT%*^0)R5l3q1#5D_*Xl&HVTux@E?-K;~ORB5b z6wMc#LJwhAp@yc09@($^5c#Rmy8p|Dx8}w#-$CG(E=q%ZfPnNxQ%d;w9XNHrjb6eP zNNf3{iM+BT4|Y{tN$r#*u?0TJdpH4vIHCq@F3<=>7@dUXIrmAJ!=5RIOBf*h+GR(5 z?oHUPLXeIWnE&k6Lza+leE4hrlR`=Pd~9FAYK6~GBq*ihfmieEAqT*5CBRfUIWqVW zdBXXnK}e7A$Jk3K7+ctB<*!quP!|8nSRrj5kx$~1s zt)8|3_W3$J#Z4r2RI%=wljgyj2X%d1_PQZE@*Xvk)r&Zb^{X`TLg>GBtg?NocZJpR z+w!590NoXvia%+%^wy~sw&OIcyJy|(Zj$)VS!)anT?@A>0uw`$3k01O7VcU{PPkMD^2QVTy25)yV_^dg?eZ zr6Rw{V|0XHoj_WObcOC+ik|e~g{nG1Y~*P3xbwuRvH@MHCFQE@4SXG1kSeGft5KC^ z@PXhXn%a_D&m+OhDYMRTQwe%0WkS#IdasPH=tO8#M{Tz1s&mpFOVx_sE1jyz$uXn# znLGSA|$loNJ2weAKjT4Lpe?aStBgA0U?Dm6W)j8}y`1UX$ZA-tP#cQE{BKDk`b z7zzo;QcXCh#*=8$7$6Y`XwTe@p5i9625%DuP!Z_28Uj`xv9NY-)Lg)KB`N@4r+JGD zWFHTfabJ!uMU|TA?mZ1P{q*AorO#bQo}|zJ6>56&VU-T+ov>QJpN#!m8|rhSV`*vO zcYdFKxc=+{_L@pHfUWv#Z?k`TEzR)z)FM?q!IK_NtNkv3=y#9krl1IyHiv zzSP3U(M$1M4^@;V@P&?xGfzXqKE)WHC7BQ^iQq>}L(ei(nC%X>=` z=%5cn1pgAbjfZir;SWbliGF#MPM{VHf&4tubCpOasYS}x!lpf_up>iJ4izq6bTU4k zLw#H5-ru2v=^}vYoMNa<$A$AdL@IdZrnsw*V36kO2>H6R`~;u>B792(`@MCz{{^^T z+U0>Dmk@o2dpwm^W(QE@|TKOYV1WkqIb8W z??Ub8+}ruY;y`=IwaKiidaq5KO*JPahlAp$?7yK&0^4JUpf~>D;!(l>uhhyIcYngT zG`t_cb@Sl}GZg@h`YGmq09#P9OTfw0bf#b&v=S>CO~PN2raL6(qs!;^?DWsrM~6c zCsB^NcGyHN_nAk{jBk<`I8W={J}xIwykMqG9ko>%ynRY}@2bGTo<&YJ@I_82 zgvZV{Zo&Ael4`T$4x^`!LCK)Jdx9=@^6hXDb$LKl4ntsxQ>p9@Gnux`%ZHQbr8uKC zv(`uV*4H1FXmzb?znW)oNOaMgxcSqA3f*e=BkzDXJ*|Yd(bUmi8)3tmukte*p_ngcC1mavy{AK~)!&tbEtZxPTejao+wA4W5hl7yGfH3E z&+p#7UDrswGKoICnE-l|3YlZNMw(OGum{$*cKHtPQ9inEOZP@d%o3N0gl8$3fvx=8 zpDO72D}%`ubW3){Um2|bJoiusiA88bP^do!cP^JH&7xCZnF^gU@$hiL?&9@Cud&(S ztGM&&>JP_w+*JVxLLs7N8h^ z^$g*wg(=J(GFBf1&Yyj3(-u^a_L$05h7W$RYrs@P&n$I85!c9Oii|>j>Xr7*Gesv2 zm3>6#^JJ-@yMxVFVg+++LforWJh|-#{anQyOw$GFk+WCO$~BDa!pU=Veo z^SA-L7^<;DW$wryA?8e^2x;*tv^B@??!jN|k zIY+`Y4x&QPnSps*Lzp4HY>p|BL?Y~A$FKMbUw_vd-MOFRMfLkOK(Hh=LigY@Tv>IH zS^FkWI8-)*13t%3GC!Y=U{HJNrK@1pzM-pF$`3=9%XPxBo3z{M2bhv&bb76t)*=_c zh~-`0Ux`V-6(Q!DqJE53XM(04JJv`)UhAON;Xl_!Pr-F+X$UUwe((p>Uk#EJR>5FK z+opMAd#iHLufp^{CJM0jz=@-1kw9>flQRv3$PsgU`M5=Z($(j8kl-Z!C;lsC9RNRe z)@WO#fF1wSa+-pkFaw)`?5KE_!$~zbpQ0ozgdI+@UAu-y;3D%#lb$;2@u*7jaHa_( z5hFu8&f1nHWE8E%iMj%;RI*?gRPlLH5mp+b_rBe5ne?w~e?5`GjmM=1{`X2V|1}S( zOFeFHSD_bIl8*ZNr=M#u=lV!XQkM(an+iR~D&44ZAsH(@ps)RL&xXfxX^D38F#LMZ zx*1zStP`0q>ZaW}QD>`XpGz=sh*nPF{Czdmm(r=5ptgpzmAD8CH-EZOE>?K`_AYHm zvuk>Ci6ofJ?o=jsk1R%lz4wMtquig@@#9K?6I0k9L~vJ7MNg=Y_*O$x0S5PR?>@2g z(sN4VeE>tb#p)P8sf~!OgOeAH;s?_#2RvF0Kc*BoRt8=iSuDDdKe!(4WHH%cVMDH= zQx7SRU_4y}?W3GY-fPcP8Xj9=4+Bh78Q8OBzS6qy+C(AxOXS@|LM1vSc|&w>GmJi# zmM(PBkb*TY|9Wht=00J03=UDa)7kzB(RrbIoV2EG+GG#;~o(oDJkGC-rhJbWSadLaK3w*ln>f zI@7Np{2noYhOm)ON$o!p-+X*3%5rtTzLAme`iP(jpA^l&#CMu>kXwFiv~}fJnCi%y zgAkV@Gvh-wjAhrh)^2e$B+YyF%YeY~OI9&dnK13UET}SQTRd_xcrT1+jg=RvAr^DmplC!kOT2qx+3*aJ9GL;1t_)C zq$vD#i!OypAMxPN6K5-oNKgr;0~#1tIJR4|s^1su>*gCuHxiEh=|NjjK9{SOX$}24 z=i2a~ge~w*TjCGZ)blGg-mE%9o0f|i*B3#$Ed6D?(Co%F>x^D;4C>NHt*O-}z}nDs z@uyh5AfI?Q+mG?b-dSq1{oWCorZYnL4}$5d4{U(A}uigWe7OkmUDTps1H9sJGm_g`4f>}7zlxeV$GKCWTC^ytBtTm zhk^drui?~MlT{JY3cW_hw7N0!(xlB~{L-$dtKU|>DJNOav1w3Jh+`v%0s+&AugumfT9(5CVd$+TcD ztRr__A^NHw?q3OwFts-_6PM+Bo70;gm0;S;^M0(h*}yXqf0Eu ze?yAyg(gescQm{F>|`^z5Zd6_DvFm;ynzAvn|j`q?*>pA{$+sJUgmV-au#{m)gLst zAkt`V=PPisV&Brs7X(zg5Jp?n@UV(l@w)g45$A*FvPG^tl{}OC0E@+R)BJBG)A^dx zRexHEh7)SP72R%kx)5Cw97JGK-1zNO!QQYC?mwdAi(W{o)s5qH{Cm8 z`lfv}@5no=rPTqjL6r3g>n6RNVOAFs}ozT{N|l0L7Y#;CQ>txr;4xz3zit=TGB z3qF|S^Xs3aJAGli zHA_uB5grqX9Jy;>wlX1E{;JI+kaT0S6q*{QKf$%eQGqTFF1#Hjj9f^Ay={YsV-DD~ zgZOR^!qpSGbQ>e~0$1W106nO;<5}gcM*#6S3+S1H*(&^4r(1YZKA8#7J+TIUr>a+( z?si4=LDYto{^L6|-0ursY}PSetgduA`gpw(RdS=MPMSu4@rcL*CNF?L_m2xO_vii) zhC2ysHhoCn)9`e<=^O{K+&%B#E(-&ID8XtM4$9qm0|#mjU`D`k81#`M=on1$?%5}A zo9$FNeIh7uM-o8S!D#n25RFSvO^-2Uvtd8vMLmy*-D$Jp#Jct*nRYZb-_ymOp(`j7zol{gEZEYl3#I#2Ht z%MUJx#nTt3hq>{#9SVNxlI+(#_gqej8`na|;7Ii7;Zru6$84xrBbq=Vb=5`+Ct}xU z+QQJswcMym^j`A@(je`f$ak#Yhza02zVLHz)+Va@(gwu_q>Eb9lCI3@vrm|T(G4HG zU!t^^Ad61;-d+$N*1~(gyw#n&>XkA5FYs_&GN5`dSiefPKS!UlKrYmQ$0v=io(b54 zJbFQ0dLXc7hhES|)08_^v(;p|)LDCZhGMjoDvk(L7>et3`*6{~P-Zsa-j^=qEg^Jn zgjn?EAfq$k-`H+&09Gf7cPbhjN?zzxHL#}RHE}^qIgU^2^JDE!k?npVal7TyrwI%U zPRX*Ft#j0e9>U%RkWh#u;mZg?4ppGsGN9}7k#!TIi*Mj445VtAO-gIIHhI&eGEsbW z#~Nxiw1B?Mo^$wTsxe$u;dN;7#(m?6Oa@H$(a&dX8SQ9YAgeSE!=7sk*?LF!ycd9ZQ4 zX*T`8ubvcNJBmY}Mh!dF#ZgfN1EZ|yWNfG!N%->)Hr4IIrH(q_Li`NgeEB71oCQf% zZoe33-Cqhq5!+OWN7TN(4vnE4)Knk33r{A0z$g0*=Na1`NW(g(p$F8h=Kz}?{&BhD zD1VP0VuKHCpftVK@s?bd_CbJ*yx6!a{~AtNG!Ym;0EAl}K@y)=6NtVm% zKn*^YWMa7=!Q1x~P=jn|hp*a~Hn!OVed~m6a22u(1Z^Yd8EH9|$9{;2>%CI`N?oXd zu-ObK-2+RU25+1Ada;xoMhrNtQ&O7yS)^1awzAY6*)Ts-2m3~EjB|&0-pSHOy_d>p#e0;n-w`k?c z+;YUd))Ok0#}1tS4S5(@^54MoTdk%Ylz=2jZ)u`}nSbQv{;fJdYidvf*_BVRCuU^v zCHK;;2P$UA0egJcAi{Nu$Gd_Ocl|Wu0WF~a!`k{URZv@Tp(cr_SW5s-8mn-ukt_2T zwa0^?kCqx&gZXPA)aX{Ti`__et&JVaSVq22v$wj*+cZmQ~ zC}3)R;8LW-?C3Hf{YthtoO(<*vlCP-W!O(24Qm=PPkZlquq;lo!7qzUa&7n-hL4AJ zbb$k*8+tnqNW^4k>C~Ke_|2COA!7e^{2!E?Do#%DKH)*k=uCj+)&-W^sH?M`=ntSk zQE^4%LoS3cII%v9sLu7r2qbBs^s+O(b==H%codBSPQV8KB=~6#gyNk#zsNpSwc$@8 zh=Z{OJ9LYjq!(9Q1mZ-sT;*=P%jgp;`ZK*&?tBf;Vd+h^hBRw-S^`Nvti*G)D7_qF zHJ6Vc4q{2Y_by+|@-=T*1(E}g zAZ|;#JG)Bx{0jEe+mtlUZzY+l2RMHZ6XOJt3_5CIN+i%pMl_z+0bkPYF|--p+d;e) zV9QGJxQ5fypQAg~l2~z2sSi9RWwj0Kt$YMOg{{hsEsz0NS1{`=q|;e(9^+#&S!JVh zIZfn!){z)sBLI8aAyo1gg;lztB2y6%DZ3l_iRn3jrmPTq-7jy^R|=7ulI7=GtQ60> z>4sDO<#J_+B!=!x!F~N?#}aKtY&iu$mHu_{5j0zQT=6F!=l?!oAu2Ml?{Kx6ojmdS z3jeRu;m{Ej7BJD{J^oRIQB~FEMOh}qhZ@5Pc2%sR0+^6aAylr7AEFQV1q!2GRxR+HgIb6ppb34wb(Gw3kFN2<`3$YPI z)5sLQ2iA_4@iDnMLfD;!B6}JDOpLZVjIc9v9*8UGHS?#00!bfxmV$myQK!hwl8}$g zus+76N3K0 z4t9G#WNg2Qj%^A%J0-@b!Ph{p=&1;(`Jp;TBhO`Tt84##Yh9;#>nBw-b zp}ei5W&zC@t5EN3eHYS=g|2uN@&-PpMIexbO=qY3UoH*?)j}N{asSF0FxSA=?@uj{ zdWCvUx9Jc|Mj!CwlEOP6h3C3YQ>e<%a)p@dzaoe};)q-;fooGPHlm!iX;0A<&T5Za zI!H<1d_PG;?l1RM7s4EwnTWzu-Ou%xv-6jT*Q?9@xIG;nNr{z4=p<(3X-H$IejRVe`yj6Pak3Z8z@$Be&OQ5-)y>C12p02?(#R3CW%*9O70lR@OJ~de_3H zLorKFee1ae4okMJ%AVDt~TBDmG{eBhKzbTx-IF;(f2s7Lfa4HlZ;$=V`y6l z!=|NAlAUPrrnR#K_TgRvnM1n2yT>P4ZVKLXYFqt!CJ5}gNxY>EAFV}u!`TizgWWZ*#D7_AXgZW33klU zk6nX()oL;ve3ichy0I7IH<>1Ut$X$=Vx$`aQNcj+kvicQgEKLC(7xEE~hEChCIs0^+Z2zm3Dx6xHg;C}6K5Y%HeD zFe65?EZ4qrcj2A2>4>+pys>(jMq$KO1-$Fd`Z)}jJMtJ!#k z(uHS^AD}L>afX+i^5e6H<7&O%^~}yzfA~7st6=~2+&44Arxb3*OgblT!x1(8XbG9= zTYB+0cP{Ve9j<%z^0;h|@b((>`L-n5rUrz^sHM>w;OwLB!NPT=Na8Z6=rd?@n%zEL z5B{#y2~>b!rz-u=l4IkqxGeyo=Pi+kaQXT2GfVSd4yT0x4*bEixQV8~(ixJ;j*cGH zu?pJ%7y_NW*WMN=YkcwnIAIKvVT||4*zC};Gitmdt9MKBaZEYA|mFTGg3|AQdf1-w=$6Psp+Lfayzbxu{afAn zs25MylMR^H%1-B_Ca1J+)Z^={UCIVIpkQ5Q0@!|vF*SNK0$R-7Xb6|aR?AqEiT#f5 zjsJ$jH-}U3pCpJY7;V5F)wCt$Hz$aK)WKG#ZtXa?@GsUKK7E<38T(OhH!K!C;T}P5 zb*l=EF6y`gMT993{gR5j;hUJqVVJlDn?snUi%E{b_LNDSIq){-sQ0qs@j852G=w20 zxo|96zZ>HjbE@P!iIJHaN!Oj2llQW7?lGrvRhK z79ih@-Cs2FQ%PCI?^HQfJwF*EkN&7cHvC#6s;Y{CoT6q`Rb54I@v^hc_&7YM{vUec zYj0wAyLVM1{^KAqjl5|Gc~JdS`ZC5T>_N6$D6&*k}xf#2C1 z&Tfad3%7({b@po{{w|AvYcJ}jpUc!Nz?B{~?M%_VAO-ic(jplF0?NZvsKDJXP4sby>W4(+5 zely{ZfuG4C|9sM*aEq?HWcb|v$+_HHVF~4bY9P=LcA!}p`EbQVTx)N z*5_(hfh{Rr7t&|Dk|1G9Q1TMtS0Azo2E;l4uz@A z4N})Z5>eqPWvRqTckoiQkh-Q|IQ&3R*QM)2;=)ngta5{PzBkZ-`maGd0 z1|r=hWyGHW6N{Ww83|y~&_mdBLT%=|Rl~YgB8IYXxRU8Q%HB2i%bf3D=%)ctw!4l1 z4b;NJ!(WO6z(B^!+R3%x^Ccw)?v4J|z3IPwv40jjz$J=Pu%H`i*4j5H0hZ#T0$l>x zmxGWh>x1qck&Z)<|J#2eRKV_PO@r{*XjXK5d(8HosFY?xIfX=J*)nJcpBuK~k~^m#U?;j*rAAx-`m!6;+l5alnbC*J(1q ztcd&$>_*)<{_sEGxH$~U!#R|(#^R%U7B(8Z>Be#F&azuyJBiY9amU)(wF2bABrcj! zehT}ck-pDl(Ip-`4nt8JALM!zYlt~b>^C)io%N{D0nh)0$$`RQujgVF;jXAu(K69@$#@_hHgrg@5C4S zb4KG=po<_g`+anzKf0n&zWWx5iKoX}K;zeIZl$h8g51MCt|ekVuI#kG=YcuOI3G+U zwXF_dplBKr(b~?)3QWy%z`yjpJH^J^ceRBM0q_p60-r8-f~Hz==K+TeIK^ovpB)i^ z{OD51rRwi&a2mEQ1WJeB?Y}|(JhuL)Sd?ViCp%53lU?tHs;Y&-m|5&j^Z*m1Q)lM- z*!QI5jJ48gH3f@)vx`|kk`xO-@gb1csG~>5xFOnv?5wBE#i=1h2z|9Bu$(#2LG}aU zZtgUB<7-gg%70%Tu&t5>6SARA5{9dFe&IzC>CMLk7vLj4O!)RFFuvS6cdQ`C0OPxF zf?r$Ddq3_e4%g5o*r(g4>_GJUr zjLQ)$C*r(Rjb&6ZSNmNlmv@0R9pr7{LacOnn3Va$m2m?jD77$DqsEOE-}iHRG6JL$ zeUA#-8oKLif&I-=ER7#(1(J$Ff{OU3s)sS6=JJ;D=DgtQl&c8mA9uPWJG*Hb@C`N> z^*iGJG~Sa%_Oyv2N|l)&9`Ln$82*60mMH<3jeFQGKopn*6CK{X%K~;Y(!khPZ=h&r zeNR~G*Ib^8Dl8McFW83iAn#%gafh^rB)*iYj6odL_K-!()m89sKgM)$WtUI|(dQN) zT0`|+O6#D{+fFRv@QmF*IvKhE%bEe8YCcJ*!=~sxB~ij*rMfS(S+Tv zKg!`RjG7y7#K;Yq>4#{ktwsap!~~r6_M?KtQzU?e4F|04N^K|z+b%< zV8zI<={;sE+)O1Pu>okxE99Vs4^w;pjS3A0_^5^9+(j}nxLb!#Qs;E{pW}$|Wz3=N zLhF}i)as##)#nAO^Nm*t!(mCCqtLKj`xUh7 z`|@Gx{RU)9Sz62#5@Xk7n>+RVzF&zK#THz{pP7D&&{Y(QZq(>dmC=ntv;gA5&rG4p z!H#*T@EG$UlXPcv;PF%nfI2*#>*hAYrZxChf_`)SI+%caq|PHXu^J#EyR!T;|CSo`CJLeKW` zt!~&Xl{NfhX>P@O5N!E1OnZQQfFCe$sIICCjr+jS^u6YO;EF(ZVMP--)ZRd}SbjFw z(+dIe%!YBew11Y`Fr}uk#T#kWvnSJm-vc}jPbJcR^IXjSYK=V$8*;q3qW3U)H0j-S zU`dvnf`-!rRBDV@D)6^P0gE88t#tqbd0acSJA%A*Kbl$nozl34vI@8YgU>BT0|4)g zPt4{*@HCewvX%f*N0{Uv88^@wowYso3Y<065L7iFGkaR5$(~;7n*1_c&ptcz*FSE{ z1}?nueoK}6MFw9s0%)vLlr&Wv4(gBYA`jFsg~t;c?TO`G5B?&+(B(g7BE(d-Y~SOg}Z61gj>PdXPKXIGDsTK4E}pZK>J z4#*(pGq--#*G~x^c?y}@267k~u;W*Q&{;(IooK63GJVp%D%%crfQ?;Z!6mHfMDccM z_`eV%#}T~+?344PwhHt$*ak?Kemw+05?);@sJPa3{$)7Q^(6wBw&m<0*ImFdQTh&3 zx*#r}aJ)U9;R8%&D%$BdysnnF-+6aRYDK}88z;ON&renYO4Wz2=j(v;3i@ER=Fp0n za{&|$+OCMDr9$E+aYh((&E=<$s=ljT4S6Ev(WM^GBLpfF^ zI5`73Nje2puKZ(?Brm}ir!DLM@HUxa7{s7EU_gLaEetOSJ^2G9FYq*tCQgbAdoTRAx4|r;j8+_-32zI$}qflUHISCw&8>r@O$&h7(U)y+&KT0hhL5 z2MLMqBZggLLgF8&5KNO-6z^n38D=j@?*fgN+P0NBLGrzUMuX^2j-SuOawA?Y-2SVS zZnmLhWlitz>y-WYN_Gtd){)kJ{8&#KYN0lXJROihOZ0gRPxVVK7FY3F2KTOp z1_VUE65d>;a~|)Sf$WTgG%~%zd0~K8R6}Jr>uw;PLb;ZKKPt(;$o|sz4y5%<>yt(? zgZ%5s6ZG_D8M$_YHIOSOsyD*Qsn8X%*g>h(Dk9c^jRvkxsIJC1Uv04mFp&vWYG>m(xhO*%6BG8E4phuGHYhE3+L~tCgYo(B1>1bc#2Gu$fwVp?O-5}8 zyS{DE2VuceTu}vg$?a!TaYhz=Ti$(Vd0YGO+Z%85sRZ=VIk>Gca|*Irf_11pynR=B zpMBqPK=R=PQa-LauQ7!~wD7iz==U#xirO;%*$u7+ZPBQb8Qzt{^vQa&Ef_ANPmf{g zUt;$nHjgBrr;o!$#Yl z{N>sudd!7%sU6TA1>``oja zuvVoaIak+Bp^KPxomI;(ITB)-z8B}zka^}cm0GXpoLH>&`QL_c0a|DG0~6Zd#qiwk zQo=>Z9HQRorX}IYBUkL({$BU!MR5ktUpvOpCNF&o_GZiF>YZlD&YmBHDeq&q;%GDL z$obz^?7pFWCOh*%fQmX&jJ=KQoJMHWG{s2^O7~3h{w8X{h0elji^qJvHEuxN+yA*T zeK5z>*&*Vo`Ma@2|E}@!KFu{{J#5?7D+!^l`86*4YqR)Wj<&s*=bjSj<=G-ipUn9D z&8lm-7MDRmSQgm!(EOVTfZ_=9gryNQXvauzVJivjUXhL7)rsk8*~pF(yxWuQ~s>$y|J4m@}@(1&ij z;a}}W(%(V(Bg@iw=MT8UN% z7LK~26t8AY$rV`hrF^Z|d?UK#rK#UKzkEePTbb#|tiu^5TU6d^8*Zy*X@AQx^-o!P z&WcZ>uMp=FT#F}Q`_CQ%W<{eLU4?9<>wELFjc?5ZD$nLn`RPp=!9R>n#X=J8=yQJU z(JYx*X+OKQxmHn8^glX2Sa!Lk7&0Lkhsr0*=L`BZKF7FTOgTHI=roK|d)$n61;9BU zU#|DL+VetQAO+zXF-Xk$C9LCT$O*lzM47lOM=i~z5W*V;(3#Ze8RC#eL*Isg8t5g`PyrjC;3k81;Xa2q^P<{qmxb4xJ;w%n=TNsi^xX7ib9)NbYASGCEYz+ScjihN?8+&fG*h}9+90#=FTw$n$RNd(!ynj;)EeV zuHYmq-8JCIsCJd?F6aI4G2DGx5iKTu72yx!C`$MjyGCw&jGcal^-R1k@AyFlwk^0~ zJq!?D4|oMT_Yf$=y|u6$39~trJY(tAHDt0YlS0c+@ULt=-f6fQ;cGbh6^bC{S!bMW z2s&u9wQ_4Jxzuw!ZX~($>d4!i8Sknux>m9*2d@ zRmSOx=c>=I5)(2WS=Ww#dVGD2@RD)<8V zMJ@IBdAky|^au6V(aLYRo_W1wlivO~Wn$40F+*E7VNg|B^+ompP4%?qnevbnQlRj6~=trzR0+hoNl9srzAx6KK9`=W$+zLwr**D%5$r+!a6nGT^hQux*r$% z&TqRU@Ns`k*P_o=%4}Ji*L>oy_E$0Oe1hVJ46Dhn-gjC(7I9x=Njz1ojKcp&8 zq)QZ8iIIr1K_(32H&&s%Z>{zTTdHl;N_5k3e2LC=bDr91lvpTuDFODfEKFDty2rXC zw*(YqSG)8n=KELO^iKY1>nVXnszgZfU~*4_Zi;prJwn;)t+f|Tq`h&+ZYkZn7gfb_ zUjSuC)?m}|>l4SrK<^{3pr(HH&pt+u4QL028su} zs-w#=&dIC9?`}8y@-HjCuT&uFlJ{!IW!l_U-ufFQCJas~Dp9|b_&$siNIg?7e=#jd z)Yr=13h7Cql^h#M-AZAW zP>)Qf3h<}4(v*$Z5W3CEa$g!4$<=yl;q$MH331z^8%7_yc)->s7*i_k8IWIJV&m@g zh@yY1F_j9^7&c$`E#t9g;HTR0Bk!corD=OqX}*J>&JM2HOA|6)8=pg$qCFADB1N{) zwK59Ai{9 zzY8C++OAJ4<)6`2|H{pvcaSiR14WCVA+App9;ifb=w30pX^{ylJMy20(%b2ePXU_{ zczkt~8xqrS{I}cp&zLAp5rtCM<6ULrCVxTqSxT(j6j9rCslwf|;@RuaZzua#^CK5+ zt=>IeI8V(b0t?w9y)W`(zq5gM7X^|AgQi|}v&X$Tt(|N2Rm>_%M`69fI0@K0`dsNc zHpZCMaQU#)cI@kn)uW$Sp2Q}!@imic6GcU*@^20=J3Puf57zHw&Q>lK+bnTcaIKY{ z)}5wj^}0mOCQka|vuf@x3O;^%YvlBZgsN0?tZMBA(gw9~ay1z)oPf(|A;Z9RE$b^M z5094?mXs(dlt5b1y}ECwtRo(QA@`sKw`BhoeCu}*6fg_2(QZrNFKgd;P1qW`S;xyV zZ&y;Xbfg3Iavq&g{&XoqFm1c*X8DQLT(2{MGtl4}wH2`m)P^l>t6asNvuli+K%}_g zyGf_YD#ZGzu#)V2e`>!ouyWiZtTRsj4ah5h*CueqD_OriI_c{$~>pU6sQKG0Z z6DSpqwDc?4CZ|*DNc-3Q`KaehV5+{QqS5>u$eJ1VT=!_oq|0Q_x7dlC#rJZrvsQQdY+y%T4?HV;Dp))_?YxGe@Np1RDjmZFF78$O-&%62MrbK@R=?Mkfup ztD4YaWB)@8zTUH=_5Dw~WxAesw;g3Jdk%@0`Ue`yx%^gr=FmMQbx?!9Qq@>|;kS z;CvN+$H{7v19`X>Dy=8KOLukTC||^D3a`pHDS>_ln9!H1v=)Sq^oe`i$lSudoBDQ# zW)vgc21W}j7VF3dLvHcD$I zHfQHdN=wPryRoGdM;Cje+cV{;a~j!{wS1%jKf$2BR)1kkU5%aRayml6yX}F}CG=0Z zZ+4*O0_H-xFT;5?n*B&(AnyjZ`RGN^A8EqmlfxN@q?s4*dF|3Ab3dOX&OJ=Hxuo`tEgap7 zpE{Ou0!;fM!xAP@&p{VXHp+2W!>aMaUtFPjaJtEoG|6RyZTAUL+Ob8{^2}VmF)~!qY+$(bNlOR(aSygZBilnGxzW%#+VVeAP7eRge)9T}cCjmnM-fulrWSoPi=Y*AEnCrlD`a!Tq+?`bDkOcllodB zF|}lMev@TcV%N4HyC(0)^0rd!gwc!FZ@Mp)z#sND52a+rrKMrh$VT;$^S1yOy{B@p zbU(tyP^BVT9$n!Q`P3&dKr0vRqMG`<0(fzY_Gh4ytI{^L;2`@J1?ll+e^fI>9iyLC4I~2lkt^uIAs(h{=^c`|>RUZY zd9y=6A3yk0_44^j)e%{v-L*1`+}oVm(IBq0-%i4yJ*bC3+{maRt0ipj2>PSMdjlI% z9h)x0zQL-MFao6%Z6%1pUt{D7jIhKLxrlBd0e9y=1rYTNKvcRAYPW7;A+S&GR@$in ze-b=vT<0&?`;X~XGAbpmzdI0D^zES@Cy^wqGB8N!odPBo1-S_D!3L%jD*6eBHF{MN zfdeAc6SpUficE9o>Z)=(Z`=r_w~Kg63$tqKepu$)v&KFT6W*Jcp+Gx_W?*#j-|#rt z`?h`L-p={*Y(UP5JfDPNpy121=K}P7Xc$fygV@*1n@drlSMHipBW`9)b{$S_b?)wZ z6MBQUdAR?cKB=hBjPMITEs-{O?w5Rk8~=_#GGgJQEjMGMUF|CuPX2l@r)FE)aVo=JAKGQcY0bS#cd_Uk7T1;791>A+O@Ur#6mPC0u$N# z8Gt9mo1Eh5bEbAiJ}@}&R>5B2L8hh1-?kTs7`6BDB_3Ei0rD({FBTOpKQWxXH9s}M zE>NUhkOTJ#qu6y^;Br%u?16b087mT9RI||HX+Uiga?mZ_ApnfK0LYNEwPabrC9!sG zXGW0|FR%V;2ULmLXLoUs^9eOPMeDOWF~|jY#}&@_`OQuDuNv2yQNXV#s!b}Ipe!;o zE3k(GtL1OUd8z;cE88kz6*2mq#@mhv4gJ;ZIJj(FV2eW~T#cj)!kgDEvBsi<%L8a{ z-qKoKmf48~3~e?Idx1w?nF3R)X+~O}kBM@6FB|rd9ca@XU9x;1NA5Wd?vin9o&mLW zqu&zykoG{NDg@l46_t^q?Wen(`(O&U1+z~CWq19(Ekk5(?OjTM4_q~$iUlFyT_P}r zDmwP7B+|_-=l8yyPS?TWR2qL_eZ29>;dEW>Y@0z5QHrXNVA>Weq62^yYQWfb6 zuqTO$c=Yky0^Lqja11L%)x3~x3q!=4OV~=A?)cDA?Ei#Nqn&ybvjqDy zXf9HQdq;;;^jp9i@8CQ227m@YWJUb&becK zia*09$sBfS2@@%5fR8bH2GI${O0D8FK7vCl>JeL9IBxq}0LY^;<~A3GV|HUf2TGI-M1< zC#~U^#_DlF)|;qSl2pP~Z#qLwTP0c|dCWf5I#ylqxcazi_#}*-t^P+%pQ(?0G*J_2 z1NQWjk7AcJn9jO|%9pGBU~}+9qpYh4P*QQlZuRXk7%hb z5}+0)+$$TwHSrPFnbS?|9kRqJrCC}l4PVQ%zX;PrdcYfVcBolxE8X;^O^T^6PH~;QsH{mbQ71Y?&VI%#-v+ z`E0cPJo{p`g&{uLyCXA!_0lF?!RN}AwUw}Y8N!~lW|)T6PtD;+Ec;}?`8k)WVf^6qO;OPFTNDXt%*&CxGY zE>BxoF(MOCi67m=A#$Wmdi5gjT{eM9T~i*(2Djq=n|!vIv~9;Uby75~)w>z3F>11! zi89srG4sF(M8t1JUR?_%)M+}Nc3QGp!QB&N_*bdCFN48@;m=29W#h%We=;6oW?;#6 zKK3Xh5L$VEH(?C~s5BYmJ$^PXm^M>Xphp6d&;rl6qLL=vL_*{WVp*!eS^@P@!Q`K& zyomO%UcM_u5Kg~1u!!OyN;2nIWu_3-g5y?{H#ckL#t4nryc0L27~`_n&HQLtR{QU9 z&g7i7CGByAe2*+{jFfbg8*{iV$%r9N4WsdcSkz@Z_sfRK9&wLoTRwo?z`nQ0S|Jfh z?5fcBO}5WS6$ei_XrN(*)f25SezzOSCf~|tJdrYAe3JnRlI8%LsApdyvt#<^CDp$H z5@&t3kmLyC85QLEosHgT`T^7S|Imt;iUaE&{XD?r@10|!$2R19`*Sb>*VcL#;CO$S1rZpiIBIjn8j8=LCDc+KT z9KH!>52$0&Sk_T6DM`*RIy-2r-fY@1ht0XTr5v={sujJ_f_X!{?jX8sKM?OBUc=d_ z#09a4+n)@`Ky+37AWQEXkvG^Ts3(Mp4CUKuR@(W^1_w+?UHHxu8ac8S$~1U2`uJKY zgqYb9Bxm2aQZI2$uQSqVkjE8>QPu7NmT$Hq=eRDPY%fT60sl6e=gb;p5k-ndwclbx zf^^GI&%ZN+G7(7k9GOem99Y(X!5OTX-#N7QA92o$<;kd|qL-VdptONsXr)752*$By z@_reG>gUglV8G24^Pziw>CE-8jx~d75R;2p6lufKi++w9#1fL3>3T}Psk_UBM-S;% z;&UeXq*_Es3s>~0xwMgv#-6bWvki43Dxy0}Z|*krk*+Gapi_?<@^sxY)|EiJy$RAL zdaP3P{t~l|#V=ZM7`%#uln;3^>Tjj}+q9Xnf$W1K>9cI~9FEW)8gVGOlS~T*Ol;@!f%SN4CalFauFG0cm>jd(h3``wPMz|j z1pd3g$;^TUr-UhbjQ1wc4d(8jTCkHS*sTQQu$*SCHB_8`KBP}y5H}v$F)}5J62owr zn=TpzSv)J-a?05N{RosHcTn`!Mr?L2u_xhE1hRi`Vj3Qd|6u(JyD)LrwGG%LKEV7&zptDFz-)TZHK*4DB8{}*x;@$wO~;FjPa1v z*`bv(@%j3m9*ttrg*b~=NBUXG$X(4F|6ygl>&;+O54q1koYXI_>Z`JUHtTRjO%X zU-||{v@WRZZX*Hq`Ywl`ggKD`TUlWy5sE{1^a$j<>SVPn7UvI_x9S6erZH%vVGC@z zK!Yb?T(Wgpkpr9us_&yMFyg7Lo~5f&FfpiC4;!jaU%f8PIY~G3svebHuqo|-77tHb zVhoJ>ttT)75u+-c=v94xz=l4ZgUvmioy(?}#?NOo!I~)2!itHxI&emsUUBP>J9AWp zZb4Qvg~*CTBh|Q$kqZbZPo4@%ovWrN%)RkXnY9uYLng}#_MbG2nqJwg%HB{x_@yyv zCi7O#$20i~8yJiu401}eTn9C*w2N!q<*I%k^`aA@q{k-~3YSJ7YuT)B($Lh_#1$jO z*4==TX(eo>LwN3KM@2l1Zbkq46NR*;(*1W}Tm(81Tl$=6gz3-_uB^r?>I*D*Kv^M~ zWKlGWu877n)xUpaq|6XxTlp2V+!IMVzg@~V{3d3=Q6!sM@K2lhtf1d-bIjMwYDhnD ziGa>IE0EML_iPO+$=(o;g~^B+vdQZf!`bzkjAU~koU!Dz%ewo}M`$twWpCr)f~6BNH%}cWxVp&j7x%_@YzwU4{aw|E146f&HX@X~n{uFmcX%Vs>&zko zQ-QnWO~hWtB{BmiHOx2VL7gn9*3H&b(WV^H@9f;X_b6Ll^PANncw9LlphEgE2F`h& z&)RDi%&KMVGS3!VwpL>90w3(!yrPpejZ&V)Ts^78o=UfitFqVkWEu%tR$0A~BTW2$ zeI2Rn-KWB*l6~Ositi+X=W<@PMhx-Q*Lv0I@9I0UX$TK?k~+Y($eeteBc0*W%V3&y z{r1UfefS9#MXp&$u@nLH6S1>s#xkP~>kVemaIKgnUZLcPv)C|A>t@L-3c%TnAo?qg z)$G=lJhmiYP4i7GsTJ>>+WA4GLfHz$Q*TSTtlkfe;ln0!RRdHflZWnwpfUPG*^OO; zM5UH~aKg4%o>V;0P7C zqjee<{~1v?dKfmU)sPIS=Df2sbBGTxff7aqZ;-vC`l#*7dbY#tOcE)uVfXy+NX~+@ z{M{AX%Gf@lKkKHyg_6NR^(t4TO+2rIJ^PC2#dm(Do#2+ci~T5mzo0BSO6Bs?&8rN9 zkop2-(&zw3Z+&`SO00YybiHqR`msu-%$lHn%l!3z$>?d#IG4Fi9s+# z8F{)Hb{PZbvN0O}aP2%Oz7mO3J^LOH#0%bo>exiFnq8k}k8PN@u|?@0^Pq{AjoF38 z$Z3QqA1*3t{%tB&iw=K+=HH=&c+{Ml+vz4h7o*8BaITmjR^G23g@0W6P>aN4zlbU! z(|DWnEn^DUKBK+EiWQH#6*MrFT1$?1HTGWgVKD&=B`nV2ul;? zIkWx`v;EKWV0!1?MMK&PWHj1qV&?U#X<8V&MAwMnh4}X}Xx)`tO79rvgQw7 ze$pbnV>chNb~4|AqaEi8NhmZ6T~`Lm%5f%4p(pU8b`y1nOwp)?ufxjM4_8}L3b0?) zBzX~v@Qi&itNkAKpeL#)1A!*3nBNzO*W`(Fggtt-x?Ft6Yg!ilFqufINvnlefrIJ{ zQ`+=T1sGYSg;P3iQL6!yXP%*XQ=`SB+#*PjYd+@nLihzuep| zewbC<()z6|Bb=5!#2b%$GHpFpKj}AOW6wGARcY-F{A$v*nX$srbE^|#L(n~!!~NtP-!S2joH-|kP6!Mn3JrudaS+D4>r_S_H9#OZA6hAfQL=UvCL670?YxwjaQ5>SogvdUmrKV*-3cBq4yhq2_+ zsx`$Tet{*YEx8G-Y(?}7lQ3G09RS_G2% zJjB3a6C}~UV=MyW42)nV-(S7-67&Z*&~7S3EAF{+e94-H8DaSZe43cqLq50CF6C0> z1BmnySm7LWI^E9hNR0gGa9lb?=7g62P2f*EaFe(v?lv3K;L@SLd2kfI7>z4-q@A&j zHPnR?e!$2iRykYF@bi%|VawZ6KN9XID6vjiJpjWzEJC)If=)xqdcJ=Pjrsc6<2Wbh6h!dtlNbh}q_CMG8_j z>g<==Pm3?TX_emTTXmzS;Uvj82sQ_2 z0y8UYJ#sLwBdaRI@J86FF{E$?1^^qDE`IH*;kmn`F2`2j4BZ0N6WczefEvm{WMBq) zGpM4Dj`kGx$EVGM|F4TTO{84Tk`;?P#v?COxwu&)I@0(koyQ4vhen1OBNGlWW8egt zM@OER_ae}9}r9$a(qO)l@WJWQ=`iQt%rKt#~(f6`>78+NC` z7h7K@x4wT}xp2Nf;vf@hrPO(HMU;@ZzQ|4h^^L5fhzNyy*{b{_Xzur2{`N27dFla% zHNg7<&Mm~uFMvRKJQKIo)~zg%?n?r4HX*(j!blEesDcWsg)z_){MqSDf|ck*DlBXb z;@7wH@Lsb}NPk}O;9l=We&>5HTym?q#JBXCKyJRGFv0oINsV8(!Syb^TkGFmBX9hM z3}adpo=)aN3?L%R~5*l_Wg$-QM>`ZSv4kzaIqVc3*7JB>M-&y)OOYc+03{l*!1fBSo>R;)Zp)XI{ ztAQ-3pVv#D4>|QwXF5)9)_sFXD}v^?)yC;VrdK-5f4YB?3(+S205Z?|ykz9w3<~d0 z9{iQU`frE~|FbM{%VHmTlxa$&-R7#U>+3>={KsTActXRbDI0Fg0G}-PC5!^fl%_v( z;eYV3)|iPVNV^5%cwu5Ru@a5w&VpGYzFdQ*Ue15DE!*c8e{Ws^?Z^XRmFD2665tu* zn*hcCxQln-v;PUBBQ3z*R+1$r{{yI3nY?M3lL1Y2igENI=JfwO*m{jRz)q|qI1ihw zgk*hsFiuxe3xeSdZQZ(0QIj1B@!!v%!$=%{;P$XvGe$9F9J9uY;VZzu*oW5r?M}d` zmZ$BO{i|2NF$mK&nPhmF#6$L_pKt+PhF^gDF-(}HeAy6~roo&t+{V!jJDEr`6>kV@ zW=tR8rDxnwO0PfCLwVouPd5xhgH*m>@8S8AtCA`_*?)m)2dXoM)?-PB3D<^%8r(CQ z6D2ln3o)yStq8Z%OaOsZn0Xi=qL|mx2?l_2^d}0w`zIBzJ^YZsd2q&B?P|piVl&8s z{B7U1hz(SM2J)!5nl<_W6US;2K0wNq2dW#*C`dW+!rqk!>H!@oJU^cdFiK%ZGsPpc z-c)oIR}#XsU}i82P=XoMtr`r>fcJD9Q+mkgv06^|&)<##B9?Lg=_F11y9qt=+`tk2g-QD*BIB-=UKJx3K@ZbI?9bra0eZ*AV7vslZk$` z;pq|dxrxRA*F|*NmhP}3y%HN3^F;oDYF%C% zapJ?B7{GMs^9qLvry-@5R3IJ>YaDSKwe zQ-40Cxz4FQ+u!Epc)KS;+20cP&=C5`yv1DkKazT2c;Xuqxq8!UjSNBbuCZZHkXER~ zesgd(Fq9-<;_7Q`(r^ak1B}X7G@byvF&f_w@Rxb+zaXv?>%3Z11!aH+zMm1^_r)t0 zCQLliamHx*IQbzKbJq^Whyk7ckAE14d0mx&w$l{3WzYi3665BXyYscz@f|ryo)5Hd zgmnSl*%3!5kR=83cRz^Zsv&oblyQ6St-VZGmC!%{F$2f-9pDhfYQ8`v!fV}GhJcNS z5+vv|abAauFkxZY%-Vk`$lb(rF*gbHz}wz{V3_1StqL%s?FQ_;=L`x3OXQBYD?$%3 zEFeS6RkADQyz_r+kJnM5h;Sh}Q|VcJw;oj{AX!ZR(Kf3p7pLorQj0-714b7n{NO)4 zXcjJ1PY`1Z;IxuxgM&P2;U4i&Yv4pZbXA3j<)cIPiazSm4Ox4@Yp|vS(9frL-M&~q z@fo*)<>--h%WF%1N2#jod&8yA(?dP_uGEiE0`FSdQL@TJ8D)qM7{D`D_4444OAo93 zuA7m*R@!~_PXKo%uCb(c8d!+%WRf0WTe1S_=zA7Q7tRA2LrWin;z1VJoGb{e;AkL3 z=gA&O3oCV!aLAHW|HU=82jvjKQ6R;0B9WYcwk2oBNnF9&t&;UKyH z6T4i4U23bMlG;I5zt4i$1K{T>oG@J0m2#P!U`yhqoqsz9^<0d1WM%=2oqt+F)|vgV zq~OYW($RQD9+6U3+MynQ0Kj^fy%aJh6(JSA>@0vlX%>nt?~55d=mV{rK&#=(Lyl+M z3eoZxfIl>n>0BVS-py>KO*0~WPgMQNC>)3ngK|*su@naIRkJf;_N>19KK}9i^%hd~ zp6;Ika!9R(yFSb!Z5q5!OdA}i8;=}kH4-mi@P!2#rI@9B%A9>oVrFet; zulM->9XUc)0fYNUB0~G&v-mZ{uK1zReS1y1|E2C%Glm*kPa@loCCh9?cA)p!hWF6K zYAXHj{qMqgw1vdpxLa&F@A$BGaniA{fK=y-=l{%6z-J^!!@TP!@U4(BQOs7~PeY^I zo|%c7kQ__SAzPC$4XxkO1p`t#r|GJIfCJW^>wh~Q%F&4VsHLf?3CBjMTXMtqJ{jJ9Ga>lxS$(gz7b@>^+V=Rf+d zL1)q+^@&PL*Kn+d>Dz;sM8W&U&4Cr&Bi*TmJTM0}k>&QJvsjK^& zhyH_wRPBH0m|QXO9@tuthZPerj1;mIdZUrae}?8nToFm4%Pb$A;jwD9C&N**%>kr8 m$EaP<#ms;h0-FBt4zsUmS8e!ea|r|Z(NKA=T=vZJ%l`x1i%O^f diff --git a/src/constants.rs b/src/constants.rs index c4f0bd2..5de7112 100644 --- a/src/constants.rs +++ b/src/constants.rs @@ -113,7 +113,7 @@ pub const WHITE: egui::Color32 = egui::Color32::WHITE; pub const GRAY: egui::Color32 = egui::Color32::GRAY; pub const LIGHT_GRAY: egui::Color32 = egui::Color32::LIGHT_GRAY; pub const BLACK: egui::Color32 = egui::Color32::BLACK; -pub const DARK_GRAY: egui::Color32 = egui::Color32::from_rgb(18, 18, 18); +pub const DARK_GRAY: egui::Color32 = egui::Color32::from_gray(13); // [Duration] constants pub const SECOND: std::time::Duration = std::time::Duration::from_secs(1); @@ -248,15 +248,15 @@ pub const GUPAX_TAB_XMRIG: &str = "Set the tab Gupax starts on to: XMRig" pub const GUPAX_SIMPLE: &str = r#"Use simple Gupax settings: - - Update button - - Basic toggles"#; + - Update button + - Basic toggles"#; pub const GUPAX_ADVANCED: &str = r#"Use advanced Gupax settings: - - Update button - - Basic toggles - - P2Pool/XMRig binary path selector - - Gupax resolution sliders - - Gupax start-up tab selector"#; + - Update button + - Basic toggles + - P2Pool/XMRig binary path selector + - Gupax resolution sliders + - Gupax start-up tab selector"#; pub const GUPAX_SELECT: &str = "Open a file explorer to select a file"; pub const GUPAX_PATH_P2POOL: &str = "The location of the P2Pool binary: Both absolute and relative paths are accepted; A red [X] will appear if there is no file found at the given path"; pub const GUPAX_PATH_XMRIG: &str = "The location of the XMRig binary: Both absolute and relative paths are accepted; A red [X] will appear if there is no file found at the given path"; @@ -293,16 +293,16 @@ r#"WARNING: Use [--no-color] and make sure to set [--data-api ] & [--local Start P2Pool with these arguments and override all below settings"#; pub const P2POOL_SIMPLE: &str = r#"Use simple P2Pool settings: - - Remote remote Monero node - - Default P2Pool settings + Mini"#; + - Remote remote Monero node + - Default P2Pool settings + Mini"#; pub const P2POOL_ADVANCED: &str = r#"Use advanced P2Pool settings: - - Terminal input - - Overriding command arguments - - Manual node list - - P2Pool Main/Mini selection - - Out/In peer setting - - Log level setting"#; + - Terminal input + - Overriding command arguments + - Manual node list + - P2Pool Main/Mini selection + - Out/In peer setting + - Log level setting"#; pub const P2POOL_NAME: &str = "Add a unique name to identify this node; Only [A-Za-z0-9-_.] and spaces allowed; Max length = 30 characters"; pub const P2POOL_NODE_IP: &str = "Specify the Monero Node IP to connect to with P2Pool; It must be a valid IPv4 address or a valid domain name; Max length = 255 characters"; pub const P2POOL_RPC_PORT: &str = "Specify the RPC port of the Monero node; [1-65535]"; @@ -321,19 +321,19 @@ pub const LIST_CLEAR: &str = "Clear all current values"; // XMRig pub const XMRIG_SIMPLE: &str = r#"Use simple XMRig settings: - - Mine to local P2Pool (localhost:3333) - - CPU thread slider - - HTTP API @ localhost:18088"#; + - Mine to local P2Pool (localhost:3333) + - CPU thread slider + - HTTP API @ localhost:18088"#; pub const XMRIG_ADVANCED: &str = r#"Use advanced XMRig settings: - - Terminal input - - Overriding command arguments - - Custom payout address - - CPU thread slider - - Manual pool list - - Custom HTTP API IP/Port - - TLS setting - - Keepalive setting"#; + - Terminal input + - Overriding command arguments + - Custom payout address + - CPU thread slider + - Manual pool list + - Custom HTTP API IP/Port + - TLS setting + - Keepalive setting"#; pub const XMRIG_INPUT: &str = "Send a command to XMRig"; pub const XMRIG_ARGUMENTS: &str = r#"WARNING: Use [--no-color] and make sure to set [--http-host ] & [--http-port ] so that the [Status] tab can work! @@ -381,6 +381,98 @@ r#"Gupax is licensed under GPLv3. For more information, see link below: "#; +//---------------------------------------------------------------------------------------------------- Visuals +use egui::epaint::{ + Rounding, + Shadow, + Stroke +}; + +use egui::{ + Color32, + Visuals, + style::Spacing, +}; + +use egui::style::{ + Selection, + Widgets, + WidgetVisuals, +}; + +pub const ACCENT_COLOR: Color32 = Color32::from_rgb(200, 100, 100); +pub const BG: Color32 = Color32::from_gray(20); + +lazy_static::lazy_static! { + /// This is based off [`Visuals::dark()`]. + pub static ref VISUALS: Visuals = { + let selection = Selection { + bg_fill: ACCENT_COLOR, + stroke: Stroke::new(1.0, Color32::from_gray(255)), + }; + + let widgets = Widgets { + noninteractive: WidgetVisuals { + bg_fill: BG, + bg_stroke: Stroke::new(1.0, Color32::from_gray(60)), // separators, indentation lines + fg_stroke: Stroke::new(1.0, Color32::from_gray(140)), // normal text color + rounding: Rounding::same(10.0), + expansion: 0.0, + }, + inactive: WidgetVisuals { + bg_fill: Color32::from_gray(50), + bg_stroke: Default::default(), + fg_stroke: Stroke::new(1.0, Color32::from_gray(180)), // button text + rounding: Rounding::same(10.0), + expansion: 0.0, + }, + hovered: WidgetVisuals { + bg_fill: Color32::from_gray(80), + bg_stroke: Stroke::new(1.0, Color32::from_gray(150)), // e.g. hover over window edge or button + fg_stroke: Stroke::new(1.5, Color32::from_gray(240)), + rounding: Rounding::same(10.0), + expansion: 1.0, + }, + active: WidgetVisuals { + bg_fill: Color32::from_gray(55), + bg_stroke: Stroke::new(1.0, Color32::WHITE), + fg_stroke: Stroke::new(2.0, Color32::WHITE), + rounding: Rounding::same(10.0), + expansion: 1.0, + }, + open: WidgetVisuals { + bg_fill: Color32::from_gray(27), + bg_stroke: Stroke::new(1.0, Color32::from_gray(60)), + fg_stroke: Stroke::new(1.0, Color32::from_gray(210)), + rounding: Rounding::same(10.0), + expansion: 0.0, + }, + }; + + Visuals { + dark_mode: true, + override_text_color: None, + widgets, + selection, + hyperlink_color: Color32::from_rgb(90, 170, 255), + faint_bg_color: Color32::from_additive_luminance(5), // visible, but barely so + extreme_bg_color: Color32::from_gray(10), // e.g. TextEdit background + code_bg_color: Color32::from_gray(64), + warn_fg_color: Color32::from_rgb(255, 143, 0), // orange + error_fg_color: Color32::from_rgb(255, 0, 0), // red + window_rounding: Rounding::same(6.0), + window_shadow: Shadow::big_dark(), + popup_shadow: Shadow::small_dark(), + resize_corner_size: 12.0, + text_cursor_width: 2.0, + text_cursor_preview: false, + clip_rect_margin: 3.0, // should be at least half the size of the widest frame stroke + max WidgetVisuals::expansion + button_frame: true, + collapsing_header_frame: false, + } + }; +} + //---------------------------------------------------------------------------------------------------- TESTS #[cfg(test)] mod test { diff --git a/src/gupax.rs b/src/gupax.rs index c243e41..421d2fb 100644 --- a/src/gupax.rs +++ b/src/gupax.rs @@ -109,7 +109,7 @@ impl crate::disk::Gupax { ui.set_enabled(updating); let prog = *lock2!(update,prog); let msg = format!("{}\n{}{}", *lock2!(update,msg), prog, "%"); - ui.add_sized([width, height*1.4], Label::new(RichText::text_style(RichText::new(msg), Monospace))); + ui.add_sized([width, height*1.4], Label::new(RichText::new(msg))); let height = height/2.0; if updating { ui.add_sized([width, height], Spinner::new().size(height)); @@ -144,11 +144,10 @@ impl crate::disk::Gupax { debug!("Gupax Tab | Rendering P2Pool/XMRig path selection"); // P2Pool/XMRig binary path selection - ui.style_mut().override_text_style = Some(Monospace); let height = height/28.0; let text_edit = (ui.available_width()/10.0)-SPACE; ui.group(|ui| { - ui.add_sized([ui.available_width(), height/2.0], Label::new(RichText::new("P2Pool/XMRig PATHs").underline().color(LIGHT_GRAY).text_style(TextStyle::Monospace))).on_hover_text("Gupax is online"); + ui.add_sized([ui.available_width(), height/2.0], Label::new(RichText::new("P2Pool/XMRig PATHs").underline().color(LIGHT_GRAY))).on_hover_text("Gupax is online"); ui.separator(); ui.horizontal(|ui| { if self.p2pool_path.is_empty() { @@ -196,7 +195,7 @@ impl crate::disk::Gupax { debug!("Gupax Tab | Rendering [Tab] selector"); ui.group(|ui| { let width = (width/5.0)-(SPACE*1.93); - ui.add_sized([ui.available_width(), height/2.0], Label::new(RichText::new("Default Tab").underline().color(LIGHT_GRAY).text_style(TextStyle::Monospace))).on_hover_text(GUPAX_TAB); + ui.add_sized([ui.available_width(), height/2.0], Label::new(RichText::new("Default Tab").underline().color(LIGHT_GRAY))).on_hover_text(GUPAX_TAB); ui.separator(); ui.horizontal(|ui| { if ui.add_sized([width, height], SelectableLabel::new(self.tab == Tab::About, "About")).on_hover_text(GUPAX_TAB_ABOUT).clicked() { self.tab = Tab::About; } @@ -213,7 +212,7 @@ impl crate::disk::Gupax { // Gupax App resolution sliders debug!("Gupax Tab | Rendering resolution sliders"); ui.group(|ui| { - ui.add_sized([ui.available_width(), height/2.0], Label::new(RichText::new("Width/Height Adjust").underline().color(LIGHT_GRAY).text_style(TextStyle::Monospace))).on_hover_text(GUPAX_ADJUST); + ui.add_sized([ui.available_width(), height/2.0], Label::new(RichText::new("Width/Height Adjust").underline().color(LIGHT_GRAY))).on_hover_text(GUPAX_ADJUST); ui.separator(); ui.vertical(|ui| { let width = width/10.0; diff --git a/src/main.rs b/src/main.rs index f842cf3..da731ed 100644 --- a/src/main.rs +++ b/src/main.rs @@ -165,6 +165,7 @@ impl App { fn cc(cc: &eframe::CreationContext<'_>, app: Self) -> Self { let resolution = cc.integration_info.window_info.size; init_text_styles(&cc.egui_ctx, resolution[0]); + cc.egui_ctx.set_visuals(VISUALS.clone()); Self { resolution, ..app @@ -734,13 +735,13 @@ fn init_text_styles(ctx: &egui::Context, width: f32) { let scale = width / 30.0; let mut style = (*ctx.style()).clone(); style.text_styles = [ - (Small, FontId::new(scale/3.0, Proportional)), - (Body, FontId::new(scale/2.0, Proportional)), - (Button, FontId::new(scale/2.0, Proportional)), + (Small, FontId::new(scale/3.0, egui::FontFamily::Monospace)), + (Body, FontId::new(scale/2.0, egui::FontFamily::Monospace)), + (Button, FontId::new(scale/2.0, egui::FontFamily::Monospace)), (Monospace, FontId::new(scale/2.0, egui::FontFamily::Monospace)), - (Heading, FontId::new(scale/1.5, Proportional)), - (Name("Tab".into()), FontId::new(scale*1.2, Proportional)), - (Name("Bottom".into()), FontId::new(scale/2.0, Proportional)), + (Heading, FontId::new(scale/1.5, egui::FontFamily::Monospace)), + (Name("Tab".into()), FontId::new(scale*1.2, egui::FontFamily::Monospace)), + (Name("Bottom".into()), FontId::new(scale/2.0, egui::FontFamily::Monospace)), (Name("MonospaceSmall".into()), FontId::new(scale/2.5, egui::FontFamily::Monospace)), (Name("MonospaceLarge".into()), FontId::new(scale/1.5, egui::FontFamily::Monospace)), ].into(); @@ -1327,7 +1328,6 @@ impl eframe::App for App { ui.add_sized([width, height], Hyperlink::from_label_and_url("Click here for more info.", "https://xmrig.com/docs/miner/randomx-optimization-guide")) }, Debug => { - ui.style_mut().override_text_style = Some(Monospace); egui::Frame::none().fill(DARK_GRAY).show(ui, |ui| { let width = ui.available_width(); let height = ui.available_height(); @@ -1418,7 +1418,6 @@ impl eframe::App for App { let height = ui.available_height()/4.0; let mut sudo = lock!(self.sudo); let hide = sudo.hide; - ui.style_mut().override_text_style = Some(Monospace); if sudo.testing { ui.add_sized([width, height], Spinner::new().size(height)); ui.set_enabled(false); @@ -1480,11 +1479,7 @@ impl eframe::App for App { let height = self.height/15.0; ui.add_space(4.0); ui.horizontal(|ui| { - let style = ui.style_mut(); - style.override_text_style = Some(Name("Tab".into())); - style.visuals.widgets.inactive.fg_stroke.color = Color32::from_rgb(100, 100, 100); - style.visuals.selection.bg_fill = Color32::from_rgb(255, 120, 120); - style.visuals.selection.stroke = Stroke { width: 5.0, color: Color32::from_rgb(255, 255, 255) }; + ui.style_mut().override_text_style = Some(Name("Tab".into())); if ui.add_sized([width, height], SelectableLabel::new(self.tab == Tab::About, "About")).clicked() { self.tab = Tab::About; } ui.separator(); if ui.add_sized([width, height], SelectableLabel::new(self.tab == Tab::Status, "Status")).clicked() { self.tab = Tab::Status; } @@ -1852,24 +1847,21 @@ path_xmr: {:#?}\n ui.vertical_centered(|ui| { ui.set_max_height(max_height); // Display [Gupax] banner - let link_width = width/15.0; + let link_width = width/14.0; self.img.banner.show_max_size(ui, Vec2::new(width, height*3.0)); - ui.add_sized([width, height], Label::new("Gupax is a GUI for mining")); + ui.add_sized([width, height], Label::new("is a GUI for mining")); ui.add_sized([link_width, height], Hyperlink::from_label_and_url("[Monero]", "https://www.github.com/monero-project/monero")); ui.add_sized([width, height], Label::new("on")); ui.add_sized([link_width, height], Hyperlink::from_label_and_url("[P2Pool]", "https://www.github.com/SChernykh/p2pool")); ui.add_sized([width, height], Label::new("using")); ui.add_sized([link_width, height], Hyperlink::from_label_and_url("[XMRig]", "https://www.github.com/xmrig/xmrig")); - ui.add_space(SPACE*3.0); - ui.style_mut().override_text_style = Some(Monospace); + ui.add_space(SPACE*2.0); ui.add_sized([width, height], Label::new(KEYBOARD_SHORTCUTS)); - ui.style_mut().override_text_style = Some(Body); - ui.add_space(SPACE*3.0); + ui.add_space(SPACE*2.0); - ui.add_sized([width, height], Label::new("egui is licensed under MIT & Apache-2.0")); - ui.add_sized([width, height], Label::new("Gupax, P2Pool, and XMRig are licensed under GPLv3")); if cfg!(debug_assertions) { ui.label(format!("Gupax is running in debug mode - {}", self.now.elapsed().as_secs_f64())); } + ui.label(format!("Gupax has been running for: {}", lock!(self.pub_sys).gupax_uptime)); }); } Tab::Status => { diff --git a/src/p2pool.rs b/src/p2pool.rs index f7631c4..1af9507 100644 --- a/src/p2pool.rs +++ b/src/p2pool.rs @@ -42,7 +42,6 @@ impl crate::disk::P2pool { if self.simple { let height = height / 2.4; let width = width - SPACE; - ui.style_mut().override_text_style = Some(Monospace); egui::Frame::none().fill(DARK_GRAY).show(ui, |ui| { ui.style_mut().override_text_style = Some(Name("MonospaceSmall".into())); egui::ScrollArea::vertical().stick_to_bottom(true).max_width(width).max_height(height).auto_shrink([false; 2]).show_viewport(ui, |ui, _| { @@ -53,7 +52,6 @@ impl crate::disk::P2pool { } else { let height = height / 2.8; let width = width - SPACE; - ui.style_mut().override_text_style = Some(Monospace); egui::Frame::none().fill(DARK_GRAY).show(ui, |ui| { ui.style_mut().override_text_style = Some(Name("MonospaceSmall".into())); egui::ScrollArea::vertical().stick_to_bottom(true).max_width(width).max_height(height).auto_shrink([false; 2]).show_viewport(ui, |ui, _| { @@ -77,7 +75,6 @@ impl crate::disk::P2pool { debug!("P2Pool Tab | Rendering [Arguments]"); ui.group(|ui| { ui.horizontal(|ui| { let width = (width/10.0) - SPACE; - ui.style_mut().override_text_style = Some(Monospace); ui.add_sized([width, text_edit], Label::new("Command arguments:")); ui.add_sized([ui.available_width(), text_edit], TextEdit::hint_text(TextEdit::singleline(&mut self.arguments), r#"--wallet <...> --host <...>"#)).on_hover_text(P2POOL_ARGUMENTS); self.arguments.truncate(1024); @@ -90,7 +87,6 @@ impl crate::disk::P2pool { ui.group(|ui| { let width = width - SPACE; ui.spacing_mut().text_edit_width = (width)-(SPACE*3.0); - ui.style_mut().override_text_style = Some(Monospace); let text; let color; let len = format!("{:02}", self.address.len()); @@ -152,11 +148,11 @@ impl crate::disk::P2pool { debug!("P2Pool Tab | Rendering [ComboBox] of Remote Nodes"); let ip_location = crate::node::format_ip_location(&self.node, false); let text = RichText::new(format!(" ⏺ {}ms | {}", ms, ip_location)).color(color); - ComboBox::from_id_source("remote_nodes").selected_text(RichText::text_style(text, Monospace)).show_ui(ui, |ui| { + ComboBox::from_id_source("remote_nodes").selected_text(text).show_ui(ui, |ui| { for data in lock!(ping).nodes.iter() { let ms = crate::node::format_ms(data.ms); let ip_location = crate::node::format_ip_location(data.ip, true); - let text = RichText::text_style(RichText::new(format!(" ⏺ {} | {}", ms, ip_location)).color(data.color), Monospace); + let text = RichText::new(format!(" ⏺ {} | {}", ms, ip_location)).color(data.color); ui.selectable_value(&mut self.node, data.ip.to_string(), text); } }); @@ -206,7 +202,7 @@ impl crate::disk::P2pool { let pinging = lock!(ping).pinging; ui.set_enabled(pinging); let prog = lock!(ping).prog.round(); - let msg = RichText::text_style(RichText::new(format!("{} ... {}%", lock!(ping).msg, prog)), Monospace); + let msg = RichText::new(format!("{} ... {}%", lock!(ping).msg, prog)); let height = height / 1.25; ui.add_space(5.0); ui.add_sized([width, height], Label::new(msg)); @@ -243,7 +239,6 @@ impl crate::disk::P2pool { ui.group(|ui| { let width = width/10.0; ui.vertical(|ui| { - ui.style_mut().override_text_style = Some(Monospace); ui.spacing_mut().text_edit_width = width*3.32; ui.horizontal(|ui| { let text; @@ -336,10 +331,10 @@ impl crate::disk::P2pool { // [Ping List] debug!("P2Pool Tab | Rendering [Node List]"); let text = RichText::new(format!("{}. {}", self.selected_index+1, self.selected_name)); - ComboBox::from_id_source("manual_nodes").selected_text(RichText::text_style(text, Monospace)).show_ui(ui, |ui| { + ComboBox::from_id_source("manual_nodes").selected_text(text).show_ui(ui, |ui| { let mut n = 0; for (name, node) in node_vec.iter() { - let text = RichText::text_style(RichText::new(format!("{}. {}\n IP: {}\n RPC: {}\n ZMQ: {}", n+1, name, node.ip, node.rpc, node.zmq)), Monospace); + let text = RichText::new(format!("{}. {}\n IP: {}\n RPC: {}\n ZMQ: {}", n+1, name, node.ip, node.rpc, node.zmq)); if ui.add(SelectableLabel::new(self.selected_name == *name, text)).clicked() { self.selected_index = n; let node = node.clone(); diff --git a/src/status.rs b/src/status.rs index e424fc5..c7d7787 100644 --- a/src/status.rs +++ b/src/status.rs @@ -55,7 +55,6 @@ pub fn show(&mut self, sys: &Arc>, p2pool_api: &Arc>, p2pool_api: &Arc>, p2pool_api: &Arc>, p2pool_api: &Arc>, p2pool_api: &Arc>, p2pool_api: &Arc --user <...> --config <...>"#)).on_hover_text(XMRIG_ARGUMENTS); self.arguments.truncate(1024); @@ -89,7 +86,6 @@ impl crate::disk::Xmrig { ui.group(|ui| { let width = width - SPACE; ui.spacing_mut().text_edit_width = (width)-(SPACE*3.0); - ui.style_mut().override_text_style = Some(Monospace); let text; let color; let len = format!("{:02}", self.address.len()); @@ -142,7 +138,6 @@ impl crate::disk::Xmrig { ui.group(|ui| { let width = width/10.0; ui.vertical(|ui| { - ui.style_mut().override_text_style = Some(Monospace); ui.spacing_mut().text_edit_width = width*3.32; ui.horizontal(|ui| { let text; @@ -234,10 +229,10 @@ impl crate::disk::Xmrig { // [Node List] debug!("XMRig Tab | Rendering [Node List] ComboBox"); let text = RichText::new(format!("{}. {}", self.selected_index+1, self.selected_name)); - ComboBox::from_id_source("manual_pool").selected_text(RichText::text_style(text, Monospace)).show_ui(ui, |ui| { + ComboBox::from_id_source("manual_pool").selected_text(text).show_ui(ui, |ui| { let mut n = 0; for (name, pool) in pool_vec.iter() { - let text = RichText::text_style(RichText::new(format!("{}. {}\n IP: {}\n Port: {}\n Rig: {}", n+1, name, pool.ip, pool.port, pool.rig)), Monospace); + let text = format!("{}. {}\n IP: {}\n Port: {}\n Rig: {}", n+1, name, pool.ip, pool.port, pool.rig); if ui.add(SelectableLabel::new(self.selected_name == *name, text)).clicked() { self.selected_index = n; let pool = pool.clone(); @@ -356,7 +351,6 @@ impl crate::disk::Xmrig { ui.group(|ui| { ui.horizontal(|ui| { ui.vertical(|ui| { let width = width/10.0; - ui.style_mut().override_text_style = Some(Monospace); ui.spacing_mut().text_edit_width = width*2.39; // HTTP API ui.horizontal(|ui| {