From 099c9a7d55c0efb092deb781aa19306f32f4b9fc Mon Sep 17 00:00:00 2001 From: lunarcleint <88809950+lunarcleint@users.noreply.github.com> Date: Thu, 23 Mar 2023 10:13:43 -0700 Subject: [PATCH] I cant get hidden process working >:(((( --- assets/data/powershell/ramtype.ps1 | 41 +++++++++ buildnumber.txt | 2 +- .../i love testing.png | Bin 0 -> 70688 bytes source/funkin/system/Paths.hx | 5 ++ source/funkin/system/framerate/FlixelInfo.hx | 2 - source/funkin/system/framerate/SystemInfo.hx | 36 +++++--- source/funkin/utils/MemoryUtil.hx | 83 ++++++++++++++++++ source/native/HiddenProcess.hx | 3 + 8 files changed, 157 insertions(+), 15 deletions(-) create mode 100644 assets/data/powershell/ramtype.ps1 create mode 100644 codenamefanscomplainingaboutnoupdates/i love testing.png create mode 100644 source/native/HiddenProcess.hx diff --git a/assets/data/powershell/ramtype.ps1 b/assets/data/powershell/ramtype.ps1 new file mode 100644 index 00000000..dbc29c2c --- /dev/null +++ b/assets/data/powershell/ramtype.ps1 @@ -0,0 +1,41 @@ + [string[]]$MEMORY_TYPES = @( + 'Invalid', 'Other', 'Unknown', 'DRAM', # 00-03h + 'EDRAM', 'VRAM', 'SRAM', 'RAM', # 04-07h + 'ROM', 'FLASH', 'EEPROM', 'FEPROM', # 08-0Bh + 'EPROM', 'CDRAM', '3DRAM', 'SDRAM', # 0C-0Fh + 'SGRAM', 'RDRAM', 'DDR', 'DDR2', # 10-13h + 'DDR2 FB-DIMM', 'Reserved', 'Reserved', 'Reserved', # 14-17h + 'DDR3', 'FBD2', 'DDR4', 'LPDDR', # 18-1Bh + 'LPDDR2', 'LPDDR3', 'LPDDR4', 'Logical non-volatile device' # 1C-1Fh + 'HBM (High Bandwidth Memory)', 'HBM2 (High Bandwidth Memory Generation 2)', + 'DDR5', 'LPDDR5' # 20-23h + ) + + function lookUp([string[]]$table, [int]$value){$table[$value]} + + function parseTable([array]$table, [int]$begin, [int]$end) + { + [int]$index = $begin + $type = $table[$index + 0x12] + $(lookUp $MEMORY_TYPES $type) + } + $index = 0 + + $END_OF_TABLES = 127 + $MEMORY_DEVICE = 17 + $BiosTables = (Get-WmiObject -ComputerName . -Namespace root\wmi -Query ` + 'SELECT SMBiosData FROM MSSmBios_RawSMBiosTables' ` + ).SMBiosData + + do + { + $startIndex = $index + $tableType = $BiosTables[$index] + if ($tableType -eq $END_OF_TABLES) { break } + $tableLength = $BiosTables[$index + 1] + $index += $tableLength + while ([BitConverter]::ToUInt16($BiosTables, $index) -ne 0) { $index++ } + $index += 2 + if ($BiosTables[$index] -eq 0) { $index++ } + if ($tableType -eq $MEMORY_DEVICE) { parseTable $BiosTables $startIndex $index } + } until ($tableType -eq $END_OF_TABLES -or $index -ge $BiosTables.length) \ No newline at end of file diff --git a/buildnumber.txt b/buildnumber.txt index ad12d720..389f0444 100644 --- a/buildnumber.txt +++ b/buildnumber.txt @@ -1 +1 @@ -2655 \ No newline at end of file +2675 \ No newline at end of file diff --git a/codenamefanscomplainingaboutnoupdates/i love testing.png b/codenamefanscomplainingaboutnoupdates/i love testing.png new file mode 100644 index 0000000000000000000000000000000000000000..93f46e4011f2f5ab1e8f08f2d33ba3b9ed79c15c GIT binary patch literal 70688 zcmce-g;QO>^FEGi@rzq2?oiy_-QDftF2&t0aFIfBx8m;ZTHM{CxI6s%eto`w!|%+T z$t0O%HoMQ+-8{*OQdX2gK_WncfPg@ekrr2lfPmVDfPg$hfcw{ybcc8OuYhz_l@f)h z`a^W`uL5Hwq96hRQ42+EA0vf&|RZDAl+1Ju()M~7)La#NiYQ8@%XxfA97rL<5 zRQ-CP?_tp@g5gWQVum@vLIqL$dsfWrkBDAB1?sV+Mf>n^YP!LwD?dCuEIm9t9{HvO zZ)4QmW(HMQhVaZ{Sci7|Og}9CmH#S(knm3buQ3vu`+uEyX3hhUng4axa_>U?`EP_a zku!wVf1M0*+<|QWjlhv2>cRhS1c)4U`~OXc@&D&^iP21L+%}tn)Y=7@nQbT@laTc0 z%ap{Cf2ZB>F=M4pi~@%!C-DHRBfHf|8oVXhNdLD!DIRL57NW+Us%2WYwe9(15A~2q zC<2N*529eMzakPnl4NVJAdDVZq{Co@WAVjv>8584XGvu-uoidBe@m}*oz_9wPW&54 zxf>q#fuy2~^@~WPO+Y-reK|Lu$xbTCMhvu{my1fCIh+c){zflh516DZMJti~bJ!LYB^={R~2@z}0ouA%m)lzR1Ka>FD|z~M9FyMx?Ef-RN2vZB`9=ymx~ef2oW zI|*mUIq}hHSiUXqry}btOfk+p-)}G(q&;-4C-v5XJ-^YBRj9;kQ4k^Vu=JdWDWy}t z2|((i{U2oiq_n^|$+-6t97D=96Yi|ptFVl$#MoJ(>yZnn5GaA8_d5US|U0{_%1D?amS;#O%p3Eyvz z8!G{LZKj7Y12>e$RrQD5{vXKK@X@w+Ddc$Kp$r<>!GE2Edxd@2pk%*ss<2cgU}Cuc zmR3w+@mEGiE{3}bIblp?=MH37LQq^H)2?7dkg6`N z)x-0FSFjZGwBO(246kJH5f)$L!|B-Bfg@v@HJ0_E;BkF+D`X1qm>E=km>ca~E^o~Q zie#u(sO5D$V?Oa9{UH)Y=(5hBG2NJZPL_kfjufA*bH<-Q1Wn zXjdxC56@6c;IOQ5WSac05KG1WJhrF~E4Ee!?X+acEPPdZ?%51hm4L1S-z&Db5|oT* zdb?ONnE+OJfz+1*J4-Gk2|2rsxTgkKGrJbDLE0I0;gK$-7f{Q?T!9jlZwL(a^{i6{ zbyk&Q2sWWLNPQ!1>Py*ler?2+!>vu$lKT$pJl=sE2P=>_Nv%J`daYkKE7YKQ9U zEbS0cC2!vU^NsS{W*po3D>AlE7t(do#|vV8?ghau?wN5s5}1-!6kjK)`W;Zz;yp~Q zDzQ#aUvt;l2zD}05Q^hOJ2QiL1E5|WYK&K%u>HJ&$09t_#ZecC?sv(A+cUmS*59;M zpEz;gfH+8pD)8z8k?E1}4j`LQ1UZ&4mvgN=p6F3Vn*`aZia(-+lz+uiRKqhG z7aa&;QIh62S}0YczN~UHx+tlSkKP@_?bGo&mk@+5WZp#Ln3uw{YW)sL`assnw0xG~ zuE8g*-T?v2yY*GVe&HvYm+#d4<#{;Oc0(wPTX(4|8v zo)|oMuH!+8Pc&wlN{h&QuFa^d3*S$hnv4DEwg>k=udLXchPa)M;*xuN#TdCMmw4{+ zMSf;xoRaML=T4GEY2p_UAZTGX;^L3+PRk6Q-(a%zX;#=mIp zEMJWrpFE${gd?73Uk%@0it~M26+}SGwrh@3C|WkW`OWjQkKQ}<%X|YZz2v!8Te}C+ zF=Ak~soekcIEEVieg}Nk+KeJB-WRScvo$Ig@B)NW*wO@CUV2%H*^v-#eei8=mG^Q0 zVUQ+_B;$(v^foP5GB$fNn0+H%BqTR`Fb>%rS_ZFyYUF=^^EU_Bw#I`Y{m!R>et)ee zlH)PxE&u6sS%!}sQXiFSrrUrDvMoZiMjn6S@4&~4x^K&9@CL_j;tikzgHL5nMueZ9 znmFnNXT$>^o({V7_IW#2lbi^pw^$;^l8PkactkmP5>tW~_7UR`Z;TvoD8DBh-g%BTNo4%_Kev?6*8^U(Bk9UqNqt*qfYcRP$q_hdPZ!7L)KKC7DJ9vv%%hr z+@|RfFF7|s(bh$S2YG7LBQo07Z2fJmvd|FEaI-wXK^4Rt4S{OO`{ZDq^@X3q})Xvlwg7xCgbr2gG4qc`74 z^q^@_@hSJR@i07J{f=B40yMQDC=n?uSaRU_RWC|+JE|$SiYF3+Qlk7!Shfs$l+!qH zTyoE01Sfi<;eoRq1xF`b%q>E+cUE!7H}L!`lgvFCvj~Sxdu$NZ;vh5-okybqr8$y< zX;G#=09N#AhS@?(WCj0zkGBX4Ewp*Jcly_pPASY@Y*a@4stk(P$Sx3fx!nj8sj3TS zuZ~8#$_Ku>^A0uIHi^}I)g5nX?#mEu5{s=RMqP#b^3#y5*ZFx?&q&^RKf8WRPLVWXeD4) zb^ywy?@H*;KH3&jn4`gxZDJ@z9m3)62RFZfTCTtigK z8Br-zj}aJ_-4GUvun|`4;vF5zD}q}8#Z$iIg`QJr{ZRo^&;J?dtkB&NVu|L9=SsUY z!%AcL&fTVU%NyYy>s_5mWZ_e7wMdBQjvlCNx&Sk=lCH_O4f3+P1J2ga2g8qzfaS3c z;Uc{%-xCdKYtbC(7BkG5fPwBT5o*#@N?I|{)R`PBRyy&U9tT#^xR?9enA>orbTvYV^yCs_*kd`BU9! zEEz61oI7*8&6p)@S<=qyz`|EYCF&*G-RmgXl#RQoY+%SDpcmvA5P6f%`(zV+y?Mwx zR<1LmP|%L{GymIHa?ik(22r}cTz>pb1L7mBf^)+l%76gDCdDpUbvteFccFum%@AM- z;@9H>3p{ux-7`*<-akw&>A(_bF|JvxjN0q_H? zwtfp;%P>(61s*~~`P3^8df3LoLVUqKaw@TKPXnw{rkI^1|I2jvur~;L7BGM!?JQvn?)wwJfk`ZXL;L8G0_6{Yhp_# z0obu6#RQY&n6v}=wNMB4)QG8#L-soL$}A>0mXqzow})F{&sb*m-+@}>7Rz-7_%4b8 z`*Z%rq}gBwUB#1M1`(SB71ya==L)Hww^{#OBEF$jVOChhZ3V2H_eCC6%j2ts6w~HyVtxfl3=#hM-_^ZoEblbbaa`!np3P*fj z?8tcC*HMg61r)JGng)vBl7B`t_K-`YkJ{k2mI z6TPXYmL|IpXn%!#(5gFIzA!rgNvk^7#&;SIjHkE1#N_U1Hx4}n+p?YtMaN?^^uN*@ z4$(7LNd8`N-ID=%0Oc_^!l5IMtJhpJNz~(T7y^*1-=>VN`fkUs#=6I1lh`{mHv1$U z&p!URAHyCPIqnPwyur$CZhGxgOf^ufqCs7y3&GF-inLD-0}UMwrJoQ*Cj00e(~P8r z{`7c7|1Y^we}uhCYN?4uNMv$EPtFjOjI%;>z$fnE8dgF0;-gaQNcy)-1I7;(Y1)Lm z8HRvEJ*6qPix(n_gkFb69mMgAqEM%wM&3>&s2<;eHn*&cmLILD4_V=2-bc*QA2^VRZe^Eqho8g_yxn*U$uUM+e8N~O(E3@owgzjEd` z5R9}rQN5H%C^t2p>h5&}8`k(V?_@PE<>ec)vmz2LP`y5xFZ&qAj5850e0-H62wKm+ zYyRE%em@%hb@^Y|0o`uftcE`d@p;T87kG=%7Mx=NKVL;;>$uUr`4$qldLlpku-IFQ zXqt5UOE{jl2VcH_SynwMTJk zAktCtJ3K5eVQ|?7_qA$*SqZsp{!WyHh&t|Q>?{N9gLX9E_sAo%>?wTe6*Fqive)Z+ zCwvDU-->u5TX3b;Zrc^fdL>B@S|1-PDA7o6xaUV*A&gzpNvi}sE4^wIAMN}W@k(54 z8LT_?N?E=hv35jkGQf-a&)`7sv$Q;O53H6U2wC+T&HEc$L7L3{FTU-@L*w-YTyhom z1<(DR;7`1b4~hxnNT~0ylH}5}AMt`DY{PEyQIK{kx`>P`u>-=e9;ACO0tqbkZY6}Y zra$tf0QHk@dR;gPS8OambHQ2H;euSxiZ=w5i!$zJ&sA@#2=opq{h`dyZR zSQrPG|1m>Zi5H05V^Kz#gQWvS0d@d?15Rubor1ORb~yMaX|#C$Gs^oYVL`YmEs@LFi|7B0(ugDS72bI}vz9y|tlr(T!GHdxIE=ESB%xx7)zsYy zAZ>h5+}TWo3kXmudfjKy3Y z+7emdIXq-$*jeYh0l&PtO!y0Qu;DKdUOu?>ku;cy=M~s#u8UvE;Qh;Q1oJXFYws z(Ewnsq6=F}10hqz^tB+8PwSNr3^RXXk&?y;bjSTOfz}^&ebxz-t)_*DBWG{(!bpz? z#!28(BIUZ*-DuIK<0Y|3B4)A{y&1w5zsU^QwxOV+A^N0@_bNw+ zZudoO))Y}g-;UbO`72(XiO+JFK#;k*wL^MAsD63NYC(9X4U~ETYpa+1YuQ05B@|;G z-(SEAk97~jx^F9V&Zqqfs}G9Ff8iQSv0YIkT2-5~&(k*6C4I#S84rXq=vA=qVPLf zk%fXif)TiAA33dt5yVUIkHL#tb%6c7h!f+yWbEaFLX?8;wgR<5AQ`#{vIGL#hbjkd zF{VI%$t?*hdhA$fp=nsIx#v6{zx@6upqbT}HM|p$*tQEipfjV$=b^`u?^#i-6Kv!u ztVKKxpnlgtFMY`S-G<+06fuh_q85wW*lw$0pc)dw*P-00sf~?hp5ApGA2W-@CAeWW ztd~)#T{{`|cS8WD`fW z$7fO?PcL(%zA0BQ6`|T8NOl-Lzg4zen*uy@?tlEp()B+z#?)Rozd-WGW1b3SI9RE) zoFAy?TGQFpVP_+RS%I+K0UhtUnCc6%k0;V45Q413AmnIF<@h|4S58vY^XdpS3~Ch{ z^dp%UO8AblPy!>N^a#{ePqZ&xrKI5~r?Ht6Bu=aLHEjmU>hLz@dNtK9q#pjQXqyUy zc*fP@ynXR8a+7KhXx>*{%=9=t_6-aHP#r2OU$&(hkhd4n-8>6;{#p8;oZ64v=MWb* ze}m%f#I}Is-YbF7fQGq7-g$8>lLWUG3t|$2L1HfYng!Ej9gp8v&vHOQ7OTW?h^=9 zb?-b{I#o<_b1Uk+DpP8vCeGXl4us_3H-{X;)8G{+X}TA_bQJ=5VTv*``BVED@yWND zd>q{+80R9u{|VeS^$(p9)zse0AtRn#BK0Lbq$w;jhNwVJc8LPuA`$!YOg_YBDHdZ} zD20y5r#NzWjC`&!agZkAP>CL)a^<7gd{*qok2D&hInrk_AF`P&X-FNBT*}ZPUZEz3 z>VXnct$c4K{EAYE^hs1bpr&Hr+Be%-)l25rwnqBclH)7tgHZqygGXHJ3V^`Z<1sJ~S9oX1P&pIB>}3 z*aK-FV8@tG>7~xm2AI#+WT%l?CY0?Hq4-vgyOHy?e`ie0`%)h8F100_FSih8V zvap6)K<0&1$J+IR!Tu=8@f3pyTZwr2yzHY;*qp+@RIpr3{Ysg=dETyg*;qVuF^c`q zzfnA3cK)J?d=gu(FUK&lqn9$i6cpDbh))4XO3EU*chNjx+qOv4MK~anSByQ){{j)` z0Vwo*N8F#|cV=19V@nqkYujj%BgDb zq&W99od3Y!!H)w9rI%b~{YOlQy(~}jiAmP+rL?C*sSuUU)%bM>qwoPb+G(K-germF zhW~&r2+`@(f1skDx)JOoKDd@6JL0g6W~&~ek+}o>W6(_06_p-Im;>*cU>fxmf*P~# zT$-^1T}z2Mc*AlS{&O`ni_%@XdBIrR5}Tn(ojrno*#K8q$DYkQ%s2Jxf^hxvG}H7!Ubht^BUV199t;Hl5e!|n36FluQ%DW_Lcf~E zSDF7AHH*=R@SrEZJ(1O!4aW7o&lbWP;06%ufGc;`Oi8slT8<`UxrzQ-t+@|6a9atDuZPc@VaZF zFfYvXo&bQcZ_#gG=y=Z|NM_thHHE${BB;x@Xhy`85(NS5g=~>6Ow*uh@Xl0-73E+? zWkl}We_R(aLtE^8fdL@DjBp$u*%eNs>{GtPTRMv8Z& z%p06=W^@?wX6LQ_fR9r#2i-)J{Iqx`n>zP;$+ahNio~s~6kBD2>|XxwC~a70n^IVg zXhPV1N%ky)o8(hYBr;JOskY@VRd9R7r6)dm2i;YP4r5wAR{tlS3lTn8cVnGvs)-Ti}`BwI1uW z=|EkM0$OQ1Yzaq7mHNuamJUBZ?LOOB++3!=!gWO?T1D!4U;%k}sNE6K0&BCpj)9zT za7O*KolGzXf#~usyJ*{S(SfNaHk~L5(L84CGofoqfVviW{vw;Js*&i;;9;eijM(9^ z9IJ^j=gWgrnuYL{GEb8u(@=Qg#;ONwaXA|^ zi{bRHf*Z4da6|rqIH3Tc6(T;iuG?2C-!=i$xU4P3cDVHtNmGtL01t`E+VNts8HO65 zN9oT{_myx2#^Nw4V7~cU?r13}68W~p1WXryB3O&LOP3tNFGwK^SeLje=C+$RRhxDo z78kSshc*m-(X5ofToUBjTy&De#N(#a@M4yXL~YCPAn^7=s1rks+7uJj*wBLXxrR`d~j z{+3bh{+I#JgLd-xnNaNMr}~=6)n}3qlx$Z$IV6MYP_8$qZ;h36&G1fXdHT|Gi6t zMZQ2OH)0 zBB#G5`>lP)JJU2Qpw?)qxq!;v4<`t&i+qt7(8U*lX&}ir<)A;!pk`@DAN(WEb8pSvsb? zEAKwHdo7?t*H=%{;o85A?fRSetZ=u7Dm4rv?87=zuv}Xa&sfL(c};jzo2>B70iT8p z9pG@E%O1vCT$3Nx5KV8_Pdks6UmdP5xN~%B-T#D68pR!Sw-Gk`F6ke=UJRXcF%9H% zG%EA|NPXXXWi3idu6nOq7tij{@;bM40w<~L=b#(g%JU?i9NHbENf$0+N827|Dx-i9x=71hCWsM~#3@BpN0 zmE~_pqL7G2;Xd2<#w6K}_`w`0T|g3UK*5JAzr)K)z^+esEABg0Y@h#N7!C+w;wPmA zw%8fG2?ocZ>Zv0`7Df~=PW9l{SPdayB{sfN4hKezj9i@1WFwVM6WO7$+^Nl4mIooK zuMy#zlLNxDkc8(!Y`Q_Rur*|wVYgNVxEO!^^h6Mo=D8l|YzqHy(Z8njiPQZuSMTNd zjx*oX#DRD*)OF9iQwj4Z00lt85)UKQGkHR{xW6&l2zLTvhq@n)Od`&YFs zAuEEmHs8T{qbRE+W>(uD5CMP(z#(ZG|8iD=b5Hn&Adp1c?vi~&BMSZdc^d@k05 zdZNb000L|tpVqbY5NUYCRIVE7otHYfw!2C70&_M$-Sq`*DZCHwdNLdx`uM7oduHv5 zvc_#Hgwfi=`6Iv%AS_a|omMtX%A-Y*qWJTLjp^7L#u;+Tg5RK0pCw8Hpx?mP;uH$! zbSh#ByvnJ9D`f;yY))joL$8OadYpMXd=D@$4?Y*5Q(;(EJ6Djyo z_3G?qmSoWDAuL(@Wq;4hJ3_||r?KjG(-X%m3Sr!U#=w`^q4kxlf_sQvs$9aNzSKZb z;-OG`^n_q>$y@!rxwQA=b=+wC`tunte=rzfagS+?nE#Q>IcH7 zbN2@yIwoMK5-l(MjB{7vnzjBBa=tL4gg~x<+E-Q%Y*?sK-5bJFD<_$)dR<)K1LJDl=~ zuEx>RWEf1Ut`b|Da(2F%Nlr*^c@MCE+R0K=PQ`!49yV%6F3;ATmpLEA$mRj>GA|vN zT#kG09gXuUa^VYkTS5-OEbYK=83FiqK#R5y#74u(1$7DEa0+OzNN9T3K)9qlzlY`z zWK^h~TxLSUrgpMb3^JWJFT^wXbD_+Mtt??4+1A`ltb9k5_uU|f?4|1iI6A@t`EWy`@#vfJs1Olott z<*m5)lB0}sh-4l1=RF=bOnCNu8N(Hip*a}}xU zla;08AY8}I)t=N+U)0ilRcorwPekxCGuYeUXlDo4GIwh;`DrMCk(C6KjpXs|ghYNs zUHPWjakrOi!nD^n>-|zNv^|?gGX(LPU^A+94}5kyWc&0ue0>)F@T#tLnNy$yXS)HX zw0F`rUTgffXSt(sdDKivK=!gZ_{Y;sFfCpZ;o20ykw^1w=lbCicaLX3_h}{|*W*PY zm6L(8$?vUk`R=bN|BW{*QdKLO=O3DAd$ZaNkIJEZDV%1b9MsphsLL(ltZl^3tj^)M z>#ozc&ec&L(8E$c^>o_pY2iKO@4o2MONljsB7yWruA`mPU(raFcjrbyrs>8HRY;SoRHX_W_NIafGM}rRi zS4U;Q!=Dp$;7V6-o|MfNbOWxJ!_of*6Fum z?X!aYPge&)J4GJq#r@*&umNzK=BKJL;IXe?y)2JTz$8i`Fmrq1fLm21MYE7XTtK$ts196Ax@^Et<9y3^*KpmB;@H z2L=qK@A}o^qY{9B`<+Z~m-oz7llFy?*T<*MVhQvQF1K7tZ_$P@Wk+{Vq}y$EUs<;+ zC2rEBzuT|B(vOQ|8ONad_QVT{b6Be zKov(PUKS8ga*BzlmEIh8nC2_w|G0-Z(#*L#4({$bB*reSwajxGV38-9gQomkja=6A zBe;0pgPI`t8&qe-CaB$vPw2@h{O2qJnF&7@nW)Ii^EQDw3c1)2Oh$sn)DpaCy9LJ( z@L^#0K$$xgAB4xzhE`_uiT*li&8ON#m3Q@5^oxx1j)HENX$qm_dCaoPvXQGE-u8bME9rdTcn@o#U`hmfJ@B0R)kxUXC4OvYpHkK z!x!}@<4d-{MXPT&Xnw(shc8}LJ`ml{Q&7vODaPlodMb5G$UN;v87B-*l;J93w`fI= zBE{-qD4(mrn6(`n?X~x}rf2q?mJ4wUn}i=W=~S7akZIq`1fKypKL-|FUl&b({sb-k zhQO+7h0wXkPUR*;ercMzeo?*Upd$))E{MqWmUy*S7dA5OZnehCbYHXf1J(K;iFnz& zp|d_<>Msg~E}Y7)b!(odju$*WA0)l>bz5_!yuZ7irKqu*KcUAEZ9<=(GzxY+Hg#34 zAdPYP#s&D*5o<(zlRgiC98&0l_`_IU)7k~Mf@>5;mWDAuciOt-OXK3$)3LGw=ri}4 zM>j0Fw@LOpxKCX%61lzw)qdpacmcdo0_3W9BxGv+-s=Tu%D<5N2@5i{+|@l)=Xrgu z%UzOYczxRSz~8kRf&gELH9~2V!gKvmDwlR*G1uVy*uqVB(UBiMZ7H+;>jApekS)1R zc#^2Z!H7$-5|)EU5nIeFu+MlL&NL0pTZ0da&v>skINpFb$-F&?kNfT^GYQ1=TQMXS zw>#-CCjqow{y(VbmO7&XI=YCv28g~8Xhuef8E7|p-zF@T_6r7>zIs|sEOBbb{W|72 zQ?eJUN$_JvhgPyGO)bBa+h&BVO;KRC#hOzc=0WU z{&@5p$nL+$TGsEtUO4PnC5&wSycAjI7euaG?iMP3_rW^fiqdH@zQdD0BkYR?>pd2X zwj9;2u@wCxwaD?01B1qu50rW#yeFC4YtF4Ksi(;7IWK(PBx7Wc@w$}E1HcLdYeE5$ zrx7K>^vpx)U?AW0N2=hBs=h%g#EP}pEvw-0z>AUl9=iGBdC#R*rO=R16V~DB!6*?p z>IXrSUklO{;j1<&04KKR*kdh9--Yz!E{PT|5%4{GY51;V;KnD^qK4Jv9J59ad6g<28}Li%~ntnI)qCDWh!yfusxazd%r4|JHE$>GQ~u{1KLdSFN9 zU4Df6a2$v5ZKuJ29x?*;k_v*%KKnTF*e;)On6QPYXHMsY$+Q|v$k-S?X01G49IyA= zhaE`f?DdnbDt)Yi1%0dy)UO+&u&Ww28<>#ev#z1CeUD%QnC~Wf(YiGv0snRzA0J}p z{?Wd#i`3Vk6D*d`p~sr5Faz~Eq)#tO!en^Ort(;w52boZ?=yDu&-y|?T=UNFL0lxm z1_AVOu>o~R<;m1n>kDpyZX7jD_LJs(3#3+w~2sVLHP_HbH8HjgWf~>UbV-j-^5sR@7+IYB*Z622r9H0 zaHL5O#fA#vMK?=8xQ*4VmjlIIID^^Du!q)RZdaWNi}gta#A4rSO3vG&mr8Zspj0C1 zs|%Kn542hNZ=L4m?Zl&hZC4pp+dbM!1=Uth3}h8(?$(;^GxsKCtopCn8OG_Bl>Q(H zPrK6@lGPBjUz6y<(1T%zxGr%(A@GOgG&0HyulX{d(y$!M0OpRHh2 z(zvXb9p&$bq!O8YI2x3e`aSSLX7w;5?ixkcX}D6-e%)}@6SwK2J-AgVmj8`FamaU7 zkrvYXbA99Ey*@PfnY3Fia%C$!W+5Q5GrZC+Te9Nmpfe&slKI)3{^!<~Qnd!zw;YC{ zK5EUurpukBZ)j%K*q0n;E=edPmjrKrhm|ro;!bN!ZUvq;uo`k=qK*5p9`|aMOxL{n zscpAE1C&fXL@+GPWPUYzQr89K80@j;1qwcmEp5X;3i)}FvTvR~8hz=`GF+QY)^5}O zsk##S&74bXcV&=zcJh#^;%Q4G^6mp+e9PK3_xk&}jOm(z6RYK{zxg~47!TRm;b@cV zVtDFv@sKUT@D`rx*#tK^+kWe7rTCM-8>*x?Z>Xb7{%d<`r4_2*(Ef^YyCnwBN9!ar zcznq0gZXlxfl1Mr{~I=mb5}Obi5rJfD7??rohSJ0HsY~10n3`S;4)I1^}Jv1TGj)* zY}4j*yeARmafcZh#PU!k%J3t66FmGrkv@IE3+h@dahu(2uieMyznQ|~+gW0JMwQ19 z$W@>5l&d&yXhhlSLtzWY&-<~^hQ#oy1xq(>M(WY3BQtWIW!G@ul`E!q#oV-@>{Q+R zN8mmpBXfWMAipNSrG(>{_}34?zbTyCl^>7E9P!vC7(HTu%}u{%BFD};R6o><9;Y8d zE<_mGl+mkz7y(seeNEWsCIar0YG8(a5rkdA_9pg>xrDxq8mMi$f&!0PKDsxT550CZ zJ{wzDC61W;26v zFam=Sk*kq6Q)ZNDSTEB{)P9~0diLRtc|l!nWu}kYTltJH%%nZlq@Rrbw_8Gk@5~qB;6BGK87|XIp7Y;h+4C}wA?*Ba za<6dK60X%Oea)*igyRA4YU_`#tZ!V|hI(=lwoG?f{KQ(B+pT!nr^5sW^6rbMHE!1~ zZ)VqOUegF$tec*^ue5F`sL{IG;Me0~%&si$8O|Q`&uqyTh@z`_6C5{_1wG2EXet7& zrgJYx&Y{D#?X4~nx!C)xpx?NW%=`CVb@t2HZ}hd|F!2*2sjCY1FLBIR^~0*ARkXc{ zai`>~YO`I@4R(OWcfa*r^v;$>k-7J!POmltwPd!)CWCfp*xhP}JWnBsj?m?n?ba>? z*e2Zyqgg>;eJOM$mO~^ z))dKd!QbC)GGAkP>&~p9Pu5zRkj9&4AN~}cpgL}i9!qUGj&;qN5e-b_F2x@%CG8N-_fwVyIF?Cn(`Mpt>w-=*{Z$I-LP zA*%_Rml(wJzOtqry{qc}dU_9%`wxDshbr5Eo*!O(E64R43{kYhWxx1Vs0cgJFTIsy zanBVMMJ;pe?#6|@@qYTbm87N>&(0u^V6c-jCNGrt{IR zd)rjWeNQ`w@k6AwNdpXngqWWvfTpvu>o@{Ak+0%}5sN4EsO&rE3zS2MX~gbL6SoS@ zf+6-ruh-y%OL966letxbj<+|x{0M<#* z_V%V?w_DjU@(MDSceL(Q3!WHh;9bcQ-dkJ~XqodIZm$m&ainD=6|X#cJkJZxbTcQr zw|}c0TTK#>rOy@O%-+oQ$E&|eV=P48D4Y}Tj<9phRzn8Y!q z;lQZ=%t_B3?OcllM!C7Z{!t0BNnQ1;%tWEzA_Fh>N2D{0Tie@<%qK7aRX3us$Z+rd z{_2xI=+z-3gf*ny=F-oG-z}HTaR=*ZZ_0TGo~^%j?m-Z1DEf7+-F?lS5ske1gN!6M z_m$tzaUfeu>!``C=+xctW{;<3=cTDXoqTeJ_i7sQS;eID*CaRC_@tVY=WsNOdfYP8 zYbm?5F`LH|Cm0!(?2Yu(>dWJnE3N;(tF%*D*)9~3k!$&9OG2%g;q<6Vq;2kCR`5T1 zHjn23Ba89YckVm_J>X@y-0QrEx#kXy*|@?Gl0Iy!F;BhY;4}nC5nM~l=tNDCFDe(V zkg}b^L5`4vpu$6v7ef>p7dhXR`YNs2c9F(2YWi!s9X zPwcAeOSfeGj^6>pU=W6NZa?N&T35ek>~aa9*yfW6jE9>R(xR(S(*Kn&^noIjrRoyW1L=~5>`R(w?(S;uE9r&KHX zOMXen#|xTiyR)i|9*VXRKA*nKIDaj~W_84qsS5fDLnp~#2e5z2(hSMZMblwDQ0t=& z0Zp(0p}f6(EH{heX-nZwBKhAjO#0UpAuaY5AWiR>XAEK>C^5EY)eER$*HNJKH%2$b z0XclwBD^_KW60yg*9%E*!pQxNnR&o7pc}QwpAU&jz5tr=Mbzj;>CIuMe3iwtr(9&bnD+xjla$3+|R!0rO|i=So;T?m7H*Z4GQlh}?MP`=_Qux(o6 zI7fOh9KsBkD^HC|P_x>TLfZfzr3gkyIc9jQ!dJt(k_?gt2%)i^Odf6N#5Dh6;CyH- z$}kgpC#{78`HLRpOv4*hi^{h@Yx2LnQeS@~227A{$=HXoVXge3t1uLsJBk|y`_Jzz z#U!n6ndPvSSkc=I;um$+&3G?+4|!Q`XA23$ybeUI?c!#0lwUVo`*LQQE4V&Z)N>=& z`)QY$TyQy$Ka%pE8!7Xu&KIy{0xc7TfVn&#p}_EOip6$oO#16M7Fk)Pw1+b~OJV;* zr>o@OtDNVp=A8y>pxw;1ge#IS2Jw$YF{iblL`&*1QNFJM5>ux!o;ri2sHSQ|#l zWSX0-8!Jt3_4p8MVCdqg+5L_R(alVz1Xrl3{DjgvZP@~CjTOZhLNi~lS_4e;_T*J< zm9y+h!&n7rxkP8G~xRGFJEylsSW;tKP^@f05(zst=|i^z&(?0xSncrvlduIKi0 zfXOJ}4RouWuz2`4qf+e9Ish*l#@n%pB*INIM}sh~2(J8gK-1=u?0V1?)TqOsjd9DO zr{9q0i{kHpy5V(&2C8}6aHm=6K>c7-Z`Hg%WZDBYIX!s2e9ei?hw_eF6XaE8dp02+ zkg~J^GYKX#kFr!v995nc8++*|0}D5%lQIK48w>`Tc)W9&vpM1UH{C&3x0jouMli^= zS5XJro#WsM6}GFn*TXcmOu`ty!K9e^x>ZqOtYL zb18;agRG29n?5=JFz23>LDk$d_Q23Fj^({KhX+sBqH<4K!|?~7m+ z7}#72=DiIBxku>!?07-&cUt3e?w>^4Ihv~IErxcB=SUX4+PLF!9y{DAw!PWLIO=C; zfkr0vBa++Hwm7qG%zB5}F^V`)S_iE;W{T~cJM+JLBbM0#P`f|X*5|J2;$#^$1>Bgk zKW@priqu8MmaF%=M(u4TlxzaPenXkrn0Cu@uJs2d`T4%1JS3sKgi-Pe2P4KJ z7l2T^frJ)2=4W?nGl0f#1hG8|J8LF0vFJ=H!Z;$&UXbg>wvv3#M(p@FQM)=7tj*3j z$B_E9;VK&pWOi`g+5gC5PzSBIw{4sSvxI=UOswu~g`7NYM zyRF2-G$-z~Om@@?`M{-f;9u~)$1Z^%e3z#1TAm5l=4HNRS=N+MAN(uLMh5QD$&1d? zZiu2ysa}Man+}a?vonz>uilir6azy1i;iY#$0zlAM6Z(led zg%3;Y=$;jK*0I*lg`~@Swec_04sR-@?3}#j3`lX@y;vR*Z+JX0@IG{juB^{x8ATrk z$#03qu*OshgS)$1@Zjze+#$FGg1f_@fdIi7+#$HT1s&WqSn%L}C;9#Fxw~iIclU8#zNe?E ztE#)J>Qil^!ph?-E-Av%Xp;JN{IQn=tHb!SORjAF=fr%Q<%N@;b&+4#0+8i5{0QS$ zA9>})>pgA=9M@d{w7V1;BAVqQ{H?;T7a|)^T0}JuIp|x6Y$xFO1E7V+s*89%IzCx? zgU-tl4*f+N$DcvL<@PQWs{p6xn30|_ogRjzt7+{WKUMaVIOS@50*z3wrtv;ubdeyh z;yV;4H8O#N>y!SnxP1-JW9S-Ow&hdsh=c(oK3Rv4CbnpP>REofJe3>sbjq1-_vc{r zn7ne7Q{vH5=1T)tY1n3r8tcWg`h3P;{n@!hO09^|)b5f4%^1pHC5cuZ*&Q>g#(CqR zaC0!STmDVkPT3LgnC1MDArO&-dnpmavHrTKi#G#@l}}1fjY@f@i$t!Q_uAfg+Ktav zY6e4w79m}9W4^Nihmx-C58Kcr{dx2rS=ZeK^)H@Tam92m$cd&qnZNrQ40RbW#rVC^ zByA<(`DygYpiuvS7XsP!AglBo#RVU>mxf?ls}-SvOu9psZpQ6a?!k5c47NmEYoscn zG~vmwLxQ*w)?gDusBx&>Z1;eh+hR@ ziz7R0cvB=sh(qsFEyNjE2B&$2!I682XTFEyXlBabt-~O4~yS!fd-SM!Bhez*R!O% zo!+<^OL8$^F8FUZ&uAISHwvRusED#JsnKf71F1O>oQ=Bp?I64O7n|$Zv}!xT4%Q~z z@0OJ%$EhltY$`7p5k$E63ubI2^%i>pj|T}3;g`X7h-%${+#k)*PRvi*({{3m_BLT@ zuC5W5AX0|Yw4fH0)0mEMvMMPKrDZ4ePb@M%z=($!2c)yCkwMV;FHYp>+^zlpxBIl?=cqJjknzzo=l|v z;o>$C>82{;6?&3394~GYUGL(n3nn9z#m74Gue~zIUL5^t1rW`aJqA5I9qBIkwQG?S z=BGKaQ8-@tZcX)us(B%F_iU#3fpW7Wy6hx(kiaAbH3QkJuCM%+g zFOCtf!jEjTVnw!dy3ZVmJk3@%->tOX{_1r;l1tsL#_xysSk6xNqEvSOz7OWY?GCfz z50*fST|ZV1Wmb+H9TTL+VYnLqJtZNV*jEo*MvxL;5$(eBa{{4NCDaD9d%)9Y+n->o z1}87DK_b2Qjzunkg%e&DPgAQ;KheTob0W;J2|owKRW4agO2rnB1OIWeI^Y@q(U;Kx z2wPV-ldFlhbN?xOpl#q<)$nk5q7cU0ns5E(s7}Y!{nbzW<{8e(0UK2fE74t3qIbyfcyfbOv+}%IJqoW+@C;> z2!$ec*1^tkd%GS)O1(w`c=SemssdScn|XT+Zdna>!1G?54)qUyS&_is9nNb^{$ zOuNmBxELzlH!WBJp|Y_#dT_3l#e4Lqyz$y|A{}gJ8q7bBhW8BYT&+_4L&kH)>Sq+j zxQx4$blN9e-@eqe9wCFbZo9f0;Dv0ogc(?DP5N@z|EzPa)cTqsT3{&@1fRcp?g(wv zi(#vSf&cPgM#vN2X+Sm@tZ&nLXgF$5tDM^&{fuF?5fEQ{g14#? ze+WM8Gu@Lb>8tj^zZ^gL)9s;L3tt$3oULbsChB)TaPw_Z#3VC;$s6PRq-WV9?kdf- zmG{{cetw>DIQvE7X_rC(-+pZZbjGFpQ2FG`6UWUQ{Ve3bgdZ6kN72TUi8r14xdfo! z_B*aNcKQ>pxfDPAQTe##jE~ui#{s#7n^+oFchNw6Mvw(+w%_-4(bI{hsN%f0qp!=I zD7}}x95-i;i@W@;^)R;M>28j9^wgW* z{K=L#`I@A)Pgp@@&HZz%eLuXrfZoNa^5uLK|B_`kXu=u>59}@qCS^MoAUQbXWL87} zW7Fg+Pq?bK9H_?Rc8Q_t#^pJd4I{8qWS7VIL3>PQxte1wq5Dl0^KlW} z7hu=R49X&weRnt>X^)?kM#5vjybnzYUyHtY!E|}v z73;85%xfsj4LNPCv1ZGBl3dUgy{mkW$^M3lE`F%~aEF6pBTf$xDD!|%3+#S*T)47a zIuP6XHIgRyi8C6D>EdTKSX6>~nbT@hYZhn4+X|bS- zj~50rh-T@FtkU0(O9ObcI@&Qr*_8=#9_8)H(m1K##0t)D)uKHQ=X8G4xk@TN_)>V1 zZfsHUx_T%z3@NMG${~5!r==PAR(s;DIn28fhh_OXfql#m##iuv@~j|IsI~W2QOr<8 zBQ(j7n8M?J~=wQg$ra zS^(1??i;(DC!Cksww?WGPeXrFAE#^Z!hoj}PF_wSZn^&}lhFL>m+FD(F3|n*lvA*$ zQ>;v4657O=PkbW+=+roT4yT?JyWhv2kQPlf=KAiw3XRR|a7M=yn!8xW$-@v9x%uvj z+|hJX-3JaMsj69F5O97>2rm6ZUbMQnJpLQ{PFVT)2`5=(ul|bAtE~Ug`8g^e4&tjV z2d|UtiWA99P!>0sAPhYLYs|PdR+x4N^E$$oB*U|W$F5|T@=?jB_Bc70XS9HJi zmp@d*z>ah`x7A5zZ*-C65rO@}-g(*EXMYOEfS8;3iC(`)DOh5lWskPS!l_;uwbC?$~qypKGIT_Pd0!Nc+FB zSGU3LL|9R(RWKv-5`VZ@8Ler*`%sY^yJHyrvdT+@{^Wr6;Na8|Dqw!x?iMpT!F8i` zbseSrw7|FG5nUt9jsNQBoX3ywlz+w|?Q`}mpt>h^A#KzUVcdZd)7L?2f`!+8`uD`Z(|m9$4hdU(6JCJdvx50@U1c4N zqe0N0#|?0xJcGuy>Fx4ut?zY2$qBx@AsoB!)q4Y87bL9Pu4rSnsE^fn`w^G?fkRb4 ztYt3pJ&11^K{2(isryzgIIEiW-hXg~KEo;n;Xg8ZZta)iGqe8s^qVm-;HEuzRQSZ_ zkJn@uT7H+Qpd$<(&k3IhvvRWN>ws_|N+~e2YtOzHrd<4jUp{Zi8s2ezg~tVx6k>O` zg4$8bl7?o8rSx$OhIP*za$qd@vV(=^_&U-cE34Su8rych3OX~_KfLhoi_4jSYi7q! zUFSrZi6|mF4OT%dSA9Y~kK$b+C8~&{67;AsgL`Q`pvhFkK0oDt8hkvD%^PyWSZ{ZL z_kZraXq7z{+1H0*YxjOLcvBA-<&{S6AIz*9*XG}FoV-H8IXIEM_{a|rpAOjQ8#a@hAT6g zR*F;kw-8o$qC-Y+l^wKpzD}E2}y4!+q~HtDS@&F ztdJw35G%Bc8~wQf@+KUup%4?tQt$%u$}-^UR57%LBAE@plwY*n%Z$jZt&j>w=wUvN zcOfVl89JE-SBag-cgefT-2wym!w@OC6SVQVmy?xK(}yp(k2Chd+Ua6LR=^0YIs1bp z)UgX}n>9HW()5y*kc1yp$G}4?6|R{ND8T+{r(whg>n>eHr2o`bGol{Dax-o%CmLE_ zg&(-OUVHvxJHxzF&CX#;!dW4GYw!6-OH|w6`-M-~=8Lv%w;&b?*>yp|8W*9|^j5zg zH)KrGO{bYBA()T_Q#}LpJ5u4N0`QkshH?;3WR3f2QCes}B(SiqGh)#O!c%`I!X@*! zUlG?yw0R=L%h=UJ56+)bp!|*TpK2KY+dm(V_6uAo1Dh;4yqRmo<|}Fr+*S_w2gFVF zgK3o)lflw$r!|td8V5yDm<{TSDSeUd%|g#DKMzTf%30>)d5%QN)Z%9U18*fCYB>NwlqNjJ_HAW%g;|9U6sB2T>24AZE!b+UraHBerOcGmNN$BodxOPvvJotg~yf zMv=Xdx2-;_e-?=1Y-H?z!( zNj`*44pE0SG}r7e^4f?NpI}k9dnt$7Uh>gcfCYK*YCP`-KB5=is~$UPuuv)?V%k*j zI_8}HAF|<)An;!kGqjlc|0A~H|Nc+^|0FN|pVi4p;TaP1IOSk-7D&DW6@gX1fU6n% zDoblh31?;B#_A#AKyZhD#8_(vFEHfEYuBz|b&JUW%f^PVp(=$!cUIk%-<})r!)Z9+ znFjNa>58dtI(`UNM>j;xr6K%~L@G|Qwoc|K$zDcT5T0oAMf}Il1R4TDFp?CHFTu50 z8%uDJq#&g>+Rp!c%~c!jPUpzPz>X{=>PD?bCle{Wd}>N3TGIy@RfeY;f@C8$d-UcQ zWuUidRC-JAV-1_^&JTptfpCivv~p^({4tW?xDZpa#zmgv8_6w?k-h1E-NX2Tj}!7R zWVE*f4ikrI2kjWGKq+!y;7oSpUeSs5MJg4R}OtToK>dsl#L5v38F|`k~{A8XA zX}S^tu&-o`-&#aD@H=qDHUe9FSPgTqvSdzt(Zp_$_TyWMA%5Kc!cLvN-{|OTn#pX= z#nX}Li^3-cb|j#CcfO~@>$H4?v1zVh^~i4%?_3L*zIf89221Vz&&pg}oQhqV{0Lw6 zI#IA4!hqtIvbc2A2MJ(PNvhbI--NLgSE~hXH74lp3)S~cYoJZxQPpRyhU(TQw=!fm8)F>ILBMW{li$*R@XNd zPQO5aLUtJu8I?N}N0r}BlLcr1v%q?|7e-0Uz;W9!DXd-2fzK%IiR|B&676sCxAcB# zURZNPRlrr1#Jnp zb@46Zvapk}#*iuw%{G^v{x(k5YT%^8h=?imu)*cCcYh5pshZAJV<`NDS(vW|Smdq0 zyOjX1{GidsshIHttX+k}4a+MQszQ4gS*BQUB^mrcGIn6b%p$yoZJTJEJ}hs7owf`+ z%tm=6h>-hZ$MEe{&j%Sa*3Vac#w=VMMw6T=F3MAI=O8+Bl0dK8;{SN4oxKyDFgb*B z1L%D%=ZtgK$aCZvj?!;Mey+XwpiUoXhlH46I^*V9!MaGp1b<8){54#{RP?ikcXyt? zNq$0^4K8;XBfRTK2~CrFi(zWa9=$T)Aj<8P{Uhx|>vRpjYCPLF@@WRoTaP`;k*_et ztbI~58^!PXG1;og4|tmFzF zPX+}TAQ-lAIFTh0=Xf$W+Dk++f12%tku^3#K1qDRKOqKTy1m!Len8ro*K!4$=Y)P| zyY3gh@gHt#w)WS|ZOWxo4<5QA|7n(#**>4dE`<#&oM0B}R9=u;inY|ET8~%ytPZeR z4U6L6ll|md=y`JQq3RTu&5qgq2`_gyM09)n#7Z}_#oI6j{9T(Jo8 zE$tZ`9h>{6w?1a|pEWDqqrmC_tHQ;byq6G7{437Wq;jJxtt<6Qg1gN{GtnOM%;?CTR{g0DX6x-F9T|ljd-6;h8mp zPxC&}B!1~A-q#$<+y4<;brdJFTa*@1_p2K1XZ zT^TP(EYyjx_iLQ68ksf;bJ$Qyq=GsE1;g)xToy(PDd=J7W}jjl-MAhe6NI!w=y-ko zK}Bz)u9CKuC?_h~NddP=ZyaN$@ZDI`Z2??5u02{nApaKDD#1PR0>Xkhmjh9T1BSm_ zYjs5>2Gd$nJZUCL#z@)`CA=E0UWC((b0vOo&cOVD07l)exy<;)9izy=4VEjtlVsY@ z;5mn%@}se;FW+crC?Lqh%hy|p`}Sx!N_*TVzf2e5J4{4%Vp3DP!q^7tiH!Q}j);OJ z0eyqj$OQO2Eih3^D>Y_^^7gB7R-_7rjofG;IYrag z=$#BAr%}40Y#XBp%N7#(aFZF8ugQ(pncMD#$%4G;bEEI0X&GB}utN_&bQ3vBgXAez z!IUNt`fVAG5gEDt3XKapOY|qVQFEfeoPlh!Vrf;`$-u4vV*I=! z>_89&Kf`fE+iI-nIzt>Ydg#e+BICWq?CaObk2=18^f696dhul%$v}Dcl9ee^$@XXK zv3vT0o5hzKLK?JzW;@5BagY8zk2)PIBlY7>iUk5o>6!F?*fFe8eP^aY%fVAeI<8o8 z2bgtaEFwpan zVbV)`v8-k3n;;xwYenqgJ|ty^FKWn2fEQn&m21YhL94~0B)DnbcvE)yd1m_GT{eF? zN0XjIxfZnnDr=Ywt0^qQccZ&-Ka<%E=p4>6)VWt-!LoFf` z6vc$gN@W{cFfkkEfXi?|vNG{27Pj<~sm-R}(k;?kGHw#|j!rWjcU`T9=V3t^4=Q48 z4BxWTWMzQoHvV8;Q1hlrKB=VCFsMwH>xmKGml0i+{`OJdx#S1s&D)8h1CjRpl6sbD zj^*VqTwg~mE^mGK5mlDL-SN#t|M(QlynAo>MFM|0;^Vkn==_&b$WeS}f@(b`&NfWX zc2A&=+^tJ|uhxP=Om^aD->1LG$?@^`$(n(sz+Nu>5SJIlvGlL;{VANjSIe9gi&HUU zD0&%UY16cuKNO}nSN>3F3#rWbs=jGC8)&vw7pZ);vR@$y5)L>>B$vzcwT4#K3+t=0 z#Nn^hQUyG{{WXfC^SWo}c~R)0I-ML&F;isTjMUw>(F3ZFiQUE@F%G{yxB*ReMaO3G zG@K>MN2r-n$F*NOr}3eY>-7mC*H59bt?NfX9)s6?WT;JtrC*E+I-0s)l+&xhyF6R$R&du#`V*D=QF;$Vez@ zZzI=wpy!=uqTll{>r}AsiYqcr6>_VsMh>)9-RMf90+j-|43&>BPi0h{@>DB6Xu&xz zAJ`fAM$Ocx)22sFrPd9+iFJHSU(Z)c_?uEphebQ|8+*Eh$XlB#Oz)VI6(;04bE$E6 zZb|O3VJL#MkhG=;0O4INQ7;w+uUsS)k;{s$Tc&Q+EYrl5iNwLr=71eIls3gH+@{vK=%EFE5EL8K9td@9&+u}9(IEB zt)yBf!b96Wgs%n0JOX5^!xxUX*G)>_*H+ybHk~dod+Lc&U3oa=R%ps&bbqvQF%dpq zay?Ll=}=+V@krRvGuJjo&fnes_4g+1uch?b;sQ?Ib>+8~<=F#YcWb}=nM*a>DYitC zCm8;%;K4M04&e-@q&iA>S=rAQu1Ru8-EN%rA;%G}6uej;9X($r8YqdhQcdeZGapMf zcs(=|dK@!8_xG}ICsD%|eI&wP5R94TDOY1nF>RWDD`JKzi9GmeJFIURD)@g9Yz;Es;Yu zW0oZ?TQLvdzrp&-qW0j~OaIUkPc9m-X-oX&oGWlVz*|YG57#jGKvHqYtT~`hV#L!* z6JwaUuak;ehV(^UVoe}Z5}kIfXWpi}F`bSO0rDC4&6x!??Q|wlnHno$MAM&BF&@jV zWNyeH6>5|lGg#|mLv<;dWX#PkhY=ep_S2tEn}ZorGl_y6apE)wfs>J|h`iug1u@P5 z{8-fzwgaisc3{Rz!xLgd6%L6{6;`? zc3}XG-H1WDNEmMu5y3ZnsYaje+D=pS7bm45->atJfVp1C^o@7f~GN zs_DCUQ_1ywjQh3-U>7qZ?)lt|ZtXVe41<>u^^VdYo+S~1TUFgDT7HoL*)#)du&M-* zQH=Odd@}^k;3bQh+EBcEhzs}we3eSabLi5)f-z7=zV@cli~{pk$_Pk>34J2;l}ADa z{*+SkQb@w<+*6)(29(Y%J_z75JeBQlM&M57#Lrk9ka%g#IVORjX z0{Wz#4xQ@A@o{8`5GTzow()rT#WT19I{nu?f3*?ST%3Ho_=#eLo!IxgrmlkEv(X!X zx^y17g2es&xco0&rCx$75eLdR({gndefs1LV&482z9wJHv8c9s$lkQwhfTSb~7^f6$ z*M-J=G*{a=*O+$~X77aO%U1VpkSr5#8!yGt$0q*pyjACMM<%7QV}yEh;l{UMx>C9j zmTeHw7KPx%C1nEm+TtK#ARl1iMZd`tY0PPRXcFCPTb+5ML}LBWX!qSHAwseNi!5VY z)3+00S#(TLsdK!LyUD28`2hw>2^?z^e7n;ZZl;?3&glZsURMgd21m)|mfOS+#PvUw zHrroqrR;Mszz@q8TwjpREw3kVdgIbgOUQ3{;-1-`SP*WwA7gi<{A#+gnlZ8_!-t^Ce8=j1we5Q-YwjZ^&_ ztulV6B&X!c<71@6!Z7u^CyU3G0Q2d6Ju$w&7cVpgY*NA?&RK;vVCX?>r)G}Mt!5mb zprA|@NMM#a%5Q4G#CETcHh~y_G-K#_*mB_WkKhCgvA`5;^?Z!AP$oB@i0Md=jGN6| zVouh*{3A@+dSbjv#kAgg3cxxdRQg39B1|;0 z;(2bUiUiLu5|1w2R3ko7As%|^B_83&cL}idYBY*7yBI~2@z-r8+B;8ai?Tq^C)Q{x zBX7smR`&Mk`gJ!FXLtb~?=aQbnV z;uTELY&xiEpz6sH9+MfTTX%3DW_LbNq@z)K(~)Zd=8io70QrL(kTx>;kRQaLxrqO+XM?Z;xPY%n`=IqgWQ z@nJP%zW?hIH9l*fWg4e9sptl6M8iUJ&bJM!!@S= zVEB|*skOcB#mzp7UV30Nz%Q(*o5u5kbsT!p>h6$8$RNDU(uxx1(b{3DhabRmLG)on zERnDZu+!GEDZ;=j?z_1TPpTgz@ljN{8Wfh>(nl9Qsy5oA7vU{2H%H<}rnO>m(dC~V z`(EjJJOz1|N-uwzFDAH2-Z*qu%{$&F!!0%#%Tx!O;`?tozavdU_IY-!&}{)|Rc4gB z;N9>R=bfEHn(w}HG&?&p!UBKJ9dldnwNuU^V*ciMn@=0pCza1C*{B!HhGt30*8?Ka z*UN~PgdB_w4R;bYLUn`Y=H=^-!4u1HVE7)eW8+1INS%9A=NEZ1`k{WjwP}`7c7iN0 zNCLrJwGk(x(NW5w%{-aD-KWtcpoH!L?RUh>vo}?f2WNpq+r<`<6L^el<-BnW6Mt1h z+!XUj#6oWSgsXO3L*{d3=irwyXT0E=7O>bjEv zAVEtX!+`?g`M}nRv}D~6*}(P5y=LT zCKjM@Ybg1vIqAnyLxX#Pnyg#_#&NRLL0oNpqjR1KtK*28nkZ|2IQS-29?7(P1!!Ah#uRSs~?&BFF~VKqwvM)kWw z76g$WPlgWHbXS7xzRlyd9<$4k{!rJ_d5jsdq?&QwG!E$Tu`Hf0%J}z`9y#L(mra`Y zJ+j8GJ|A~(c8?@jlFAI@O=@pl4XSQ~V!4J646kg&y%E+RZ>qvF2H$Mn2re{yRJJ4KNtq{JG}Ny(cMcw2#W z6X7TA<1%N~Ghvbs>1sy0x$5GNRM-N&v9{rV^b7VtN3_R%tc{r2K&sjvgUM^xZGH>dqm!@L(;rJAW&K?xg-%-;&-c^DS+@e8 zwHO>vg)`7&JA247oae);au9|adanMA=DYM6<4vt%dbV~yu^Fe26@?((!v8QVD||BD zp~RAL=re~kWL6^729h+K$i5=b59^lZcsfV_qAtr9{G-I7=*sTxrya>*9UrH#-qw-^ zT!%iXlcqbnt6cG01fIF(n)v1o{FuXm=h`k)4mLgIXvYCreFR#%D=`%xO1HKcZ{ZmE zLio0j*hQj0jmR6~_QK{DhBEZjt@3}9a!|?mWVyqr=z9!+|BM%5#Lm%J{1y5kIWouVTu5ep;QVaztyu}kC1vW_f)PQa27he2vnV2c&^qfd+ z4k?Fbw6G#AO&ms4!Zlps(#VL&Dr71BbDg>*DkbH969X5GP;VMoLHHNRVid5bRm7a_ zm2ia)&9Qd-;$d|J7&IdmKkMUBP_`;e_)ii?{!mJ17DVS`h?z9ySoF{H#SevQqg!I3 zhrgXsxXa@D)mjs5-uk4jjNXj*d$g8En)>}Wah}V{!@FD;p;G-ULR0_ZhZ#hXvmYi%sm*WTm zp9S>@+SQL%$VxU0T`Xw#r#2Har46)5eC4vFSxH4M^mnAPsnKl341oI(GvBY7)=?(7 zzCW$1x5?z{p!c8Hb@-rSXN9f8Y#tYI#%yQV?iB>bME5t#ZYdGM+m|b%C*;Yn0K=s; zut-cXTdATUza+8oCh}|~l|0ec;!LYZ@qZ}~6~X~rPQrFLI&Lw3{d9~(xw@)(&p}NA z=Lk3)r0fs24x)@as$VtH6br$U43QFx#bx)_KxQxnJc6wRZD)%>Kd-5l5gpC_|Lw|{ zFLh9I7A9uB6c_e`N)e3xH;eRAcwUs}!p|-UMb?DVxnZ%SN|H}FTY`#W?@JhvG}0P% z4llMp|FMchn{j&s*t>7Ec-kLG;wbV6P&`hIkRy2BN~su5FihJhN223~aA zeQOpg4szB}cG%j8{gQk>07AEBS?H&**u~|;_@-dxQZR8y5;7WMMO^=(-&+wsb} zyPh6Z^B<;&FY-Bl-)6~1yRpEnc;ucj2D@nbqUx%n_4j20(v<$aX;0%nxt!G&5uIk#v4uu%`1`mRwk zXH8Fh_qmX=$1E&oj|lASP(=z`%4l&7trOi?b6Q(#BbQz>jF2(M2dgOf8X;}yr~&nIBpd}4ccTW zqR=dwA))jH-7IbYl0j6Wg6%MDlt2xw3AiP-uU?ISTSu^17Q+8E!JYoYlj=>RHmln^ z7?5?e_-MUurSmdLt;nDa(%X<4)#kIL%s60qAJVgXISKEQZAG=qTN5-hO?wQE=1j+j z)W1#+N{#-q{N^c8Y1V}-uI4JfnZ}Cg;V~tqT#45f3JPnLszY=6lh48P%$5#{JbiHk z{8R&Mx&zkDptZ&pO9*R><|h+u7t5c>w&tc|J^R{Ltb3ZgX4x64)9GTAM1-YE(aOB#OtQbNmS=X<3V&eB$ve_eShQnuWe8y>rqG z8ZwK>+FQf8AyQI}Ast{y26YY$=%}kxLb1mnwR|>l+iKu!n4Q{^W|VgT+;qhVe&#HC z6fR$HG_2u**|ZX#Xz4J#UCC9$zqRYmHo>ND6`sltVs4H(XL-SSwE-tf{7b_l<6>6T zin8v=4V?ma2jtx>OAt|(h?M;gh1H~;vco!GA#Q`mybxPvo{-pf}ao}Qq zCGcH_$jaY?BXnmN3q!qr7|RViWjZ_nHQh{12foa2Ts8?CGL(YWG#AF*2I_SLvUtD6 zGz^bFM)g3!gEw63i8pA*(S1)fb=B>ek5`?Bl*3x zfD>765?yW({n8~>!iLX@?-);nNfTVON1N}^GMXM4Y;>QnOaC){bW1BEfl*L3Z5mI* zmF+_|7pglXGHiapww98EX57>0LL;&T&k8O&6%C(0WV#tOhE)qr6wi9h`gwAx7IgngZ34yMpz! z(~+J9uJBwuVrN-S!raa4hb&J%oglqX7>HIbB$i^_C}mUbPp*eMTPy0Fgcvu^eGDzj zcRAs$uf*qJut;T?zo;$2^seL&)Hjk1O{6S6ucQ1-t#Ti?(3fmo{wnWt=Q+Lm!$0k%zb2Nj@=3` zYbD|sEVlTGCGvSW2+^;}^^hiGV_EGb>$vS=)ynD52A{FiiAnVmLPLUJ#@P_z)Waz& zM(FwL(c6Mi2ct4rQDx)wAas><6*qUhq70dafrkDCgmr~PEJonsg0W3R9 zt>|(+xcUp$AaNB>geEj=3!(k@T2v~%Z`Z13w4pb4Iv5kM4s02q*|j+t*oY()v-KwY z^RP?s927xmN?hg?IJzY*FV0BvHga9Z+8c29{S@d4cfB~%jIKmc?P69EGQUc*#4(Wt zI?m?b-6-}w$z($tuA{I8 zQny;dxWoF!(W$AVYV zcT#&~32wGEh!&x1LN_4g6VD^p^JOV1DJke?A$az(<8{$eK=CfNfJu)=c%|TG7}o?- zi86$QXAd{hQHXNkJv!tqVn?USVY4&G{<*zTsr^Y$-!si72|FnPx&AIaf?QWRCc0JdZhVNz1X(2p@`e z%_Ij+-pLUJ<{dt7*0yjACkC;|VP1akpR89vgos7r>2E*>PO9Pul)f!Y&UiF@kGEvC z6eTCtm7L}I(B`p|D9YAb7vPT+&m1@4{cl&gJ08r#bWRd>i#k|(=G~wu9{V9X{=6rA z7+sS6Kxv=`L5YSJghQ+u(0?PB!m*egZd&z@TH11U81pGB`1VMtt(Iy!(wheyrLlrZyGOEXjm!_eTEKknT!mQ#Up`Z!=zz$N0cU8?F~|AjZK5Iy z*1YqgRaK->Vx+mhLEq>(Kzb~%fsL4)YHnJ2x}Pb5lD>ON{|R6D_YDkdyB$k}l>3J| zSknXRL||y;SB~TJkNILwVs#bUA$xv{z|uZxLNv3wG10+coG_BL?Q* zM?+F*0QO4niAs5}U58LZ-`fvod%tca(W0X_L4P4~x&C?=!(H^>KxJe2Pt<{D(`egx zi3@5Z0)b{5yvJx~#pfhq`Fk>j%Wu2FU|S@6hzZjfbU>u?dKoGBQ94&jC3dO|ff2J9 zsHT!vNNyNjLkE97@N|+8O1l>T%fIv z=SBr@(eI5VzB{4Ye{ELm2>oFq4C{@rrpCl#`$H-h*X~0|_>BtOAj$@ud!-tA z);}qOo5dwQe8d1J7-wNfb_m;7IJGwzdHbI|qML5{-MR}rZQf^{gA`_rCk&A}|LWOK zE3+1c)px68V7Wlxm*+z-5we-#E^q#QgyNee+XnTL6wE>%j64C{sy8%c`QM9B#U-p9 zo!*g%y!&B~bG^NXA!Q{^`!(q+Wc4_Ivjb-!qqDy!U2msf0kbo9*^NVj(h)RBJ7^5p zFy#qG8t+Rj055sr+IFH=re?FrTqrbH>C%Z9fGSae^AQGPssHKqG5UQzG#V+g4zY!d zo@<}z9Y-Dq510nYQ|Mo9IB;X;nb<$k>66p6K>G5U|j9O{TM4A#@6tGP_ z8mY^x?&rJdOTpUhG~twrp5Iw}g@?uIQr42>vH{bNrt5RA?3MJ||6|tZpM(NY$ifwB z#ya1i{+P60P=c&jC$ZQT(tzG(^ac6fKdW&+Q0mxg?{NOv{xyOdfO2!XW_P7$#$MLV zAR9qdBI<@@`oLt{5zC4YEBHn?C6>ud&wIIqu{X+1&*Pc zi$Qtt+BnuGj$ei()MX^5WXH9?xla&At9bNjyq+U@|GiYZh&-~Oz2}dKay~1SmmcgX6DJm@NSy7Mg&?+3f`tNR=#o|&8K%*1y@C=Sfh(%~?cHkLg`7waB(`v1t9D=k_E8yC_@=Ge~mYnx& zF>+i`RK^vwK>wfbIJO7*U?)$!KT*CTghS#+#6Y!8o;*Q1B4Iqd$q%E1YSeMuN6g-mAxRGGYRp3vUy z=oDPZ2KsNHO(k<+H;rzv)D;dIDsS<-@+<_v23Y%lX2iQL@#Fo^9Qa4Z9Y*v2zPA1U z_B8pmqdmIwZH39LPC4kbguhy~i-5aZ;ym;hx}D|}YH|+OooeywG7QJV+lWWryXz`k zh4;J)v-EsPgdgSw{imvr#NA6RY;$n&s5La+3AVWZE~;78?*r>xH}-~H7D!NBpy+d% zDBZs>Xb$&IXc_bbI_mCuI^VysG83PO|3?xas?q~6D1XlZS7n=etPLe7R>65RpJ}`| zKPrj+Q&Fl3q!QhfbF#neXHtI9AvYP3-$6WBNiD>V>8jl0NLa$z3|S-lJMp87e-!T zFBH;ycHYvh(D^2&|NAh73Ok0Kvz~ZIW^u71LG8_3u-n>ap&QY1Xz~|Cs$Yemz4`=r z@)#c&1CRAh7TWIE3SIYOB@Y(aQ=wx!wjuH<@#Y|2ETov9pr~vuec7#rm9Wop?KB9@ zaq7bFYW9EkL&NOWlZkipTLjrqS@_~V&AfCtqu$*QbHRyvZn&|ImFVid>8P2bR5FJzpGrsvKBu(l$N(@kK}9 zT&8DM|Dsq1H@7?U6bT&=;6=BGrmp%F$N%iVjFvjq&E~)2@<2J}^UHMA)hlEFLYt$k zVkzzB*?6;4IXj~GY~dn99|e;^H>{XUFTAim%f7|jc}As01`oRXk2i1-&+EpxY)OrL zZFE!n#)MpZdH=6;!Vnp+`_LP*2i zedTTAcYg}f$9@$3b&FN*{o$+sfQaxJ**2F#xT3*18yD}jwVF9TpF$@4k}{%&xu1JQ znFoK5kJdh+-)=9(zDd7j9~&^w8)Pdn!`JX2Rp*{AG&EWARsgftYn(2VER_cUQ%^u}~7=EFOo4=ZL|!ceLeupy`A zqMhuJ{dqYg_R0xX{b6A6uSMUSg~8qF;x2UnP|n(#Mos;)_)VEq0CvV`F>Ke>u}F72{1K@e7x2=#(WUk z;v2B5>=v_}C9rfYjB4%!+GC3?v0b@&s@YxCmk5~VV&~O%CLR?~6h&A%{728KN-}0N zYS)8K&iXJYHQ4_zWEpP5_;cXxMp zcbb!&zwdqOhaUH>dyMt8*BWcrs+#ppsc+7CkteQ=@X>R2|G)q9V--@qu&8;=9NsAs z<42Jiti$qU6nrYW`me$)%l{UXaTin%i7y4Q^nz#hla8<#n~tX~J1Z+~p52$FnkT-e zDLenMy6exAoWO=G+6@NyjB z>~{P83!}se^b1xc+xY<;Lq}lpM{xVP@^C^t;vn1BvtP{{?${&zg$c9Zi=E*^nMd@I zb=Ah)AkL1WLbJD9Nc{o(>qzt}qKUyso3g?Igfv&ZoNmPK@o?V474xYF8!v&3k-<=x z- zYUdoc6tpg1V9G}YO5T$^`_|{@*(@#3qPC;aPjANJjd~--jgGcLh2MzOy>&T2vivPh zgXfW%ws+yy8&1X(6AcTRxyR z=`oEY5QNihF@mXKg~}ZdrD=St&#+VRLth)U*^>V$orj}LY?u|b+pMr^g8$E2o~%R9 z`{u;F&|NOHMO57+NVqcM1f)3>>F@nlg7|{s>JI2XIo0Va3YhivKdl&lFRfO8T^)MM zQqy1IMbda9U)POP;d{A2U`r7q#h1R6elfqyF7V*v3Azz#z5e>jd!oX|qW{D` zlEp@Z?k=wIH1?66-2Sn)aG;it_yQ@k$l*nDeIpj8PlEZ+67GybXWU+}$?NZQ^zOw3 zZ*?LvO~HFUqc{jx4~kE71}__vNm+L{e-4M{uyn(-U!PeS#n%Uoum4&eBo&~4O+xzU z|H@+fFKfga{BPdMM>ZMaA03QiXx9V!uLZ~bU)fxCApfVgAZ`5F50Sm7(6;}RW?tME z$H`vB>ks(_-fuUxz;Cih@~H-4&aX#M?BOT`rrnQqk0>rmRrg9`=rTCBx1hyzRKdNe zP3mWNxivm7D>Jh$6VfSwEwng8X1`wBC-zDIK@7FbLG?BVZ?iR%%b9zn5xfl8LCuI) z6&+W6uPg)=YPWmzL|kO*uGaN8lzC)%zpu6M_#gGC?}kiV-S4}7;lpj!*HONDdIG+B zP_DIw)hvMa)xAL=k>IFAH# z(Qt(9ot6Hno0eX?rbPAuYp8l_7Hy_0c!YF&^pA_of+bJTIgbAG-4^rk3R4+Y5n5P#e^nXJ~z3Ltn= zR&jnYVfypEWzQebNbClu$ZWt5CppshB1y!tmrrEU}Ngt)V{*=j`hh_DB5soc&wl zn(>dUVd<{G4=viScz5#MfvyFYfR4*c$o&?-;X*cysM$25{XKmz7&x0X>%ab|D;K&7 z{`^+byBnUxa#rf!DC1U`MdvtcuVzG>u}T(FR;CE<3k+veF!`Z8k>W{}0fzI>OWsGTbnLhhTCtTf-%?~`|@~K&=w#wqUVyF6N)iu%8bA?50 z`bk|2h`vBrV$^6?;ecx8>M@4;${DRj8)XoqeuLn+aSiJJt8w_Cvt~gUe;}!mS*smX zqI~DD8$>N!7QImoL8LwEa%TU*StmsVcf{P~7Kz(A+MzTfF{vfe+#N&j0gt3WQkjQR zq2As1`WHpA;K$@Z=1*eD!hF*~(nRVD`^{U~EK#}3;l2Pvge-${{2RdN96zV#J7N5g z!@pvs=bnHduvE$wH~g&~OWk%HZ(5X3k|yF=PmuelR+Up^Rt*WF&Qi=Tc>sN>R~S5J z0YX&eHX`z8SKp~%-zP9Lvv`AEf?eI)sK_T z-YVYrTknUGEf+V`u!8w@?Ht#4TlWRd+vbVe_YZjX=_^$fu#*)JRDbMsS8o_@NDnLl zu8IQJB9W(G?Y=0aNqq(Rf*h=m^UvkhkorMJD+8JNLIaSz-{GUqNIfJLi4uxxlYmUG zrEpyFD>w>$0E|@HUsfNpxn7JRm8E?RY|2B!cy#3U<5p^i@Fc|zFBFL*9PbvuOtGZp zq1xS9Z)&$y?t`TZ)INk8xpva8$@I@I^hg6`BJO5J_~(*gPtoe^CHYK&8AMJtstqle znwp19YAjI|(9`%iyc1E4nm)P8zyuGuOl}jNi^6ua3?p0=_W`^ub{3+hBD~!dCktGE zz#eLXVJ5j)5u=_o;&<8rSwS!qW_7drRrz46j}_pNrj7Vm+tw_TKK$0Edl-X(L-f6b)inP%Yp%vRy|m3 z-qmhHWWb^Ce6)-Vhy~jOYbq==?+zTmB&Z(NJA8Gd-<-AS;+ZEIaX=cYvu$a@hCdNG zxtra*^n@7u(t?@8o?tq?Zy@kwn=%{4+MgQ|ovU2l$J-m@r!}W6mH2#x(C79-2{gYKQ; z3xidjIbnd$CG<(Q&-v_Unr9nh60i}&UDR_J2jEJcJaLUP6HdYA}4-t`i3mr~>LSGB)A(l1YpH9;c`^Q26s|A(y}cLgSk~Kq8zY zZIGjr5M>(lWo}Y%`nX#<#86p6kjkEP!nbAg9? zLl|G9hIZEVOI(2ZRy}qVBdh8lv3Rpe>PcHQMAYTppw}TJuPA>FWb&R@JlW5yeeoe! zC*u5g`qJkX&fOhe+!;*y+N}qHr83U(e0qP&#%ubrL4(3OcXkuMZWU+~W{$WK@OWdlpj&~`=pEX#QkdD)hvVB z242U_fUrL6i$cRm0QIGPR)FI9`|-lt%lPHY7-_C6FJ8EVI+#IKEuXKTIk{Nz7}4Ya zjKSU)v@5lk`BXTlE9^g*b{*Xa0IMhzA6IYputezb=P^){51cJLKByF04G;hJb@lVzUNGKY?8YejBSE;6&8j-VOkS`hISA6MnwOS zl%>raRh38vitREit3VxBG7Q*p46PWH*Oux^`+4q>0TH%ns}`>JDSD?1n2A8?CTXvx z1aWMHNe*r!Hhza%**$|(OEs@ldZ8>Ha?p5pcU`$1{v~XYYc0S-=vsZ{z4M#hxqyp- z+v>r%_zxYwjQ0!S^Ox70X5^py*{@AB6vI_d6`n+jW7-xhEo%Ik{!jP^4{cm|v?&~t zr?QRDe)5JYr#J$AN~lL)*TQ0aXjSK4bDr4e$}+*vZ76qt+CdX)^2ra_QheP#ce%E- zyFw^b68kZVb}ZzQDr2-s)p|V7h#@cvm7enq>V0?4l zYVRw;dYhS(tWg^5-i@e}3p%Y;Z;Jf&-tbF>8uT5;9J>WI_jP2amED<7p3bDZ4#&Cu zn$?wFMkR7c-`~L1IJCu=ZGOnbl=b&%2ZWBb5D{y9np(Z4&34~WY_E(Ph3!U zXnVG#n21d-eN-k#nl{eGY>yZ^ZFjjSmfZd-X05M^ynGY=5f}5`brf4ACEx?3e^sFd zkk+GLt~il1^LoS*kxrfCsJG73m{W&lX(WaV86e&kIQYOfuY$>>CBchMev=b!V)xx! zZJDGK34seAUtj(U{?vV{omTOi4r7e*Y%Th@j6XiQt_f9xIaFl9lc)Dod*f3MHk@kM zYQYAT1_@N!bbpSq=_iI%}Tm{AN?5pe=n>juk)h8L*vb1mA4bmF#4c$SlJX zYLAfniIsnmD2!_TaYwze;nW>m!iRVdCg-Sb+s6pm&@YRux}t}(jVObLBW4nmU;j&G zXTC=6N0{wWTAA(XDZTo*iK^OyIdpLtOO$=Tv?5g;jnCJr!=0dIX=!r49unW@7rIvy z+Etz5bAeEw;kcEAg(~uvHs58Jb^NRzCS};#2KuP!XPQ)YFJZ=(nb0&RID?Qeda4kw z2O9pD%9x!a3>(Si`f^iXy!=ONcP3f5L+;gXi^hc}E9t{c&`9#IgBfOod;n|UX~!4` zLi)33su<$z2T@9adU%pk8@?eW=KqX#g7{t zmYthl-pd_I3I&{KG<;dKs(PbnXeX9jOLE}|y)X}lgRF)3i>o)@O86z-f?iOollwhA!DZ{3gOwW!x0fXYG~mj5Y=Tj2{PljTax`P(!n!BJ9N z_^_=k=2zYbOHUX`52V~88*=N?v%c5icr}jMPj&--y1#%k;(D+f%GzRJ>JU;3;?NCe zg}@$TwTf_rmsntpq;%uKjk8e{ggAe*XcTCi)Nh)>MfgZ7@5)U|+k#1GO!0-&jIfSb z>5DpozU##3{n}PKj9`>bl%?p%$dI$&mq<%Yv{&w`}6UJ zzg&FqT-M*!S2}3tEk5gV&?-;Al%<>>7VuDW;m!u|VVV8noT{ zH|yV)mzau7Rln>X%wA6Vg*v3gO%xS!K)L0I+_k!`rcEhsTYGqftP+pj( zM`*>Gro&TI1$87|J#D)`MEKFZBWmlaNBsxJY=#?Q8;u@GG;M@LgR$RFd6^Nwy#&l| zZXBoIdlRTHZhRK4tx>RycP5?5-%bZ~Cs8CGLSbPc z7zED+?}mXpiMe*22d70`e*IkK zZS*s6$Xj*a|5Ai_4BD$Gzr85xI%c-4H-35EVD<*(Y0VY%nAig&#tNTdzWTL1)a+L( z&rbw+>c#SBN%=}Hu(r*wWv?HHD$)%b-;0U*E4?qt(y!ULbePX@Ng2-sGY`Jc>m3lV zl~7ab-odWey#jDNbbFY*->B!=yJ8;!C_r&^s`iMZFWN;lw}<7 zzu3GqEAUrI(?^5xQ3D--AJjXFe>|uv40l*VtYt``fTT`)kV_28xgt{fzDTyA7I$rf z5}Lq$V1}@ug1>Fm#8Fo!8y*6-+}n1&WHRDN^>X#r3Ccm3p&pDGMy}_S6e?5qPC7{z z{wHF~o?t1#h+$^4oe<|eXf;7-ryx!ZUF{H6q&inp(o42o-gd&#tWUE^7R==fpN7{~ zAJM-l&nv(R)Fb2PEc@3Bq8h~Kr)yEe-Gm!A-hoF*aM>3^rUDG=pr88@e1u=|R&0$y zn{|C4j&)Zh&&ShlHmXvOH4&l-C^{fhd47eCG-8hKr*2McN2;4HJwfS3zIcnnOPwIP z@4d9QV3(hAlEsm5Xrxc_XEx}1Itz=rkzxEhu@SzXqv0N{+@pg)hK;7{x4Uv*RN8U& zFo^r7uDt0pc>|kNux3OsH9BL`%}7VI33^w8I27tYn)!fAOYW#bapIg5fTg@EBW}2) zQtnV{nu8lacDtJiQal)<+2?yGopfnNvae`5ZCO_(S`d^ zoErU?NtW<}Zl&c4sS*9oOLiW2FoNH*I@qU z(u({@sQu|}6G|d#4|>C#+77&{B3UF`Wxxm(Pp#>)l#jB1}M5Y-iTk ze^M|;Bq2*O45-9nO33W+K*)RKlHd9z2YE}}2WvUH#tVv=3`Fv zL>AR3+T*-lilyBu~Ehg*&+osMPOej3rIaHj>5V}6c<#uR} zfywaw6Ne!6+5KURe)}(Uk1?2IW@oG471sE>pRK!=@b~i#B7M&mqMckVMcEAAfQ<&b zWc0dCAhXVVIvy|U7aD>)hBx%oGu$u{Sc;%WZ7&7WDr{G)qthiy@8@-EWp4l1f1bRRLe}1A(P#r;~k( zbO^)nl-To;XBy7N;LffiogjO!oj1Q4?*jx|A8RGYao|j1}W6imKy^MneS%Z#AXfqYEdhMli=&RGFwSoRIGmc@F*^98HrcXo#1|_`O*crrlDL z)v)rpmV9ks;dX%Gqh5x$J4f76q+yieTu3if4;u1?lUj4lsl#D&0HjeM zyQ8xd^VB%%$Nb*}u&>vOaGX9w)Iz8RB<^i>;o_wUT9@@t1WZeskrzU|%#)|}A^HsO zVvsYe0<61E%FTEI&|xrUP1>)c2K&l5%l5EQC`@mOU|`Q4@T%z%OCX(F$1R0r*)^ah zRSZxA9Hmk{9(@5!x)C71CF8`gCfO__Os?+S3ku1%qr7NWeCq#2*km;+u7B)Y_(|%jqd6pjM zlOD%5LW%*AtK@VlQ2CGxrB+(14ZKx4T!|5tD=_bLMX(B!4G8Efk3TcWjKC(SRp$#0 z^*K(FUB(Vt;Rh&{RNdzjBF84wf%t&jEfTRG3e_kxJ@%JStFscuoguhUzfw7P0grJ$`?7trKZ^>S?FlhP<?J!D3hmqpo6nfZlVV_5Lk)rE-;!XaqT0^+SZ&fEi-3#3T4j|M(yOA4V%E-1=gEOlz)2MJ(R z+UV)nKUjnPmA8L~XWGyR|D(S@t|nVXjZSza%v4kC7U+28Q#^rSY3u5Z zrvonuZ8kk+M;*OOm})MZFgT!~$a_Gu0^<4C9FIb;nIw~#8cn3obd`N)vzwMo&bOAM zcmZ|&Xdtt&9EQzxE`0s7#qMgt8-s2&RfSLzpx1RYY!Ez!oHkTL4?CKM=Ex_QXv#7I zcWdYj2&22zfjH=+LKK=Z=p{0TQHu{uJ(ZmLs!-aizW|C8T|%ld9)V392GPG?uJRX` zx|z58#Nl1PYxo{ld}V2&l{K*17=R_ojB*oL4_C9B(!|pt&A|kx2ewl{)2NEa5C#)- z5=;w|t%Y@iQ_>E@#{zj4E^aawUb=*(yh2!t5145qdU)f62~HfVo?YQcJy52NnnMc7 z%xD)-3l254Q=u2~aq2x#k$(xOW;+g0Vl zLw%daR=<6$kGnKmnkOFnh;ESY^kORxd5Sg^K0{IQB2rhgmzH~fv0w?Lz)mLk6oc7$ zW;BDZ#lyxOm}?nt`dq@Y;f^L~GR zb7lSVD3?3}t^=~;;1hQEX;(&ymXxaxr>_VFVy~t^!j#k_rPkn>4a0F{#ch@fLRJ{;h|0^6C!j~D*~U4}`{{BjsKxdrenM#3GBzDdCN&;PEpyZ__35Yl5%^Y&5x=pA%UzRPYxP%?JW=fpStMvB3(*<02Gx$>KyqWuf+F%b#@^ zNe8xwJ|*vTFrgRnnGH;VO5PapJrY@+hn$HUC+UTn8%?&uaGz?%$MYY7qN>>5!4Qdj9 z09q~JkwjE`IzM+7x&n{$H&97U6O!?oNg_; z5+WIC(Jmr){45YT>Oa{)DGG77%M5H~P!1DFLo-4k&a~wM@*sB^{awet9J@nMc^t;@ z0M@5SvYC#rbqxh;`^SD@sgr==eJQmE5gtvP+HiG0qbNtJ(nVixxmyD;)|QrDixbFH*~x$ z6PO=HF#V_!G+CM($DLhW5R}jH7jeaOth>OVTs~Y!I^NuCF#dmG>ASv`dne@WF6oQU zeYtpd>tSdh`#>{XsyATE?qqE;xHx+$oD2CEdDf-y_)!%`*bY|!$&?ztm83cexH`}+ zo`I*h7@Q#JVAT1LfAD$E2vSFG#yyXEji#Ce1^6)KPm1GhZ(3uUwxgx^Ma>)rN_(0= zwg=1y*`yh0S}HbGG1W%UV+=`!rs$YT>l})6_n9AD`e4jvyT4(6^I$utTb1~9jF@nb z*Yi*kSr6zA-+ocNE*ip(q2aeI=z%@Qo=m>;8rCUxB8HyraX`vH>9}|M@0ab4h$D9q z6n*Cl0}NW&DWZfQg)k&%i~}x~RqwV{kF!IZcR=8z`m{C0ES3j`K;`Qr9HCKZz!9-z z)I&&PR-YLzOqlcb{5OXV>fjHaw7A2e!PUC)m49_)>3~OjA{Dpsa7x3?KDg< z0s~-C$G$3eRSn;f1{?zJAjAC%4Rq}vu>i!Y;Q_#0{YfjB-Iy$cNhNj+aLILzl$3ML zi|^;2L@uM#lb6d3YWD|FmJ6OJgQnzXPeUnoE&(o>f5rQnNPh)F>*Bm)38MGLgDu`D zlRev~9drE69G)_V-}iCIZsrN01noyXJt=?!g=DdOzImfqwYo0)NNVE5K^5ps!DQL% z435Lvy|dDkro>M`jG!V4RDp~7#fv33XS)l4yr$D0p_evPB2CiGo$_L@B-fS^Em08t zluQtNM_zhUAX=s(M9S}1&H#9FaNjqNDdFZ#O0!&3AuD>9( zKdqi`hV>J7$-k|0T?UN{L=vXqtvu+S^J#AVYdZ`l+hJaKjrLz&Q|b8AAsY1m)OLM| z`^Li2PW;Oq3|3N7ga)Jx!$j)zL16>M@U$00Yo3QmL+6kA|rUnH{zn8_9$5$Lq1 zMU#($7=VlIT}@V8rVyW(aANVLL}IxYl|`IPphnF$q~fki8vvhfvCY602wE8#rr%vF z8=6OOZJn7SMAnG-`IrN6Z_~@mgz$=0)=ma@z47w_SevrRK3IHt^c$nD6pwzC*x>Ib zX7uS(>4bd0xu&XqOR>>kb@B20E{FdmeqEJK+?7)hw?bdfjNMO<+n=)qC7q14B$R_@ zU46XvfPiZtZrWB)>QPies8u! zWJ;TSfkf}QD>prZHs8~UNq-?-X~$p_rHr=rB5NQ{4-SXnpxavw?)QE?P(Qqm@c&eJ zaPuFDHy&?9>>>av+!|(|NnYlrZZUyq4&~xtP1%!17k1mK5Fh>0nK8GMK?IQc?yK@~;?tSvpIev+`7V>}pXC{MrusXHe8Zs=EEH9!deW2R~JX>VBns>ne6QJBkG;h``= zsySAcC}3G+KwRB%<$DdVmUIv(*5xZ36+p1X3)?X!wvPFT<;d>o(7-a3Udj;?d-23Q znX0j)r2~aCY?j$Kn(?^28T2 zcIiu1SY|^)kFhoZWVLFutQ|a1-FdVjtl|e%AGQvSLorDc9$=Al5XwZZnk8)|T{`H< zn8eEEbwDZGZ-<0P=&;+Hjzq5YIMw54)x}&>N&Zotv+5QfERW!=04rM!IvC!I-rqszjb zB#rAd_SMX;wKw%G1*D=9cSu|9=Soxki!a;WFTu;68M1!b^dP#d`LJQ=4Oen7_{?-^JCM-LbO0KAPe#I1TXm z@UWbdBkP$3A&DJT*&8EH+&~CEr^FaI-f;b^*}QkOF)#G}6KMzP=(MmQizA;c#Ztp? zoSV2X#Zw6VcCvMNb?9lB1}W)B{jj9SEixY2QiwmdKahJK9#Q|olIcNe3qAKbCS|Yo z`ghnmw(2ksQav&>HRZz9Dg#JXeBmxK_Tn(%ICY2acB|@PV+oGRCXKX%_3=R-eOEVs zrx3xR$!-yr`(JaiH7D&tIQ8E<*Ut#>|G6PULcj6v&uo5GzW)g^Ky-oqIsE*%g%0!o zAO63cjnEm_SyrwNFLebc6E8$v8wO~I`z5q@xP;teLW;6qDSi;C@G^E*XFM-CxPDfiMdy*{x`-cpiw}5}%?^h{+ChDY7yg7J< zD42EMqy@!WRqkY?Iv>&_GZ9*ophB|kBP|1;~!t7=UTrVbTMgH=bUIu3%At*R5 zam2r3dVR*W3HHYG3bnHRjABFq63gBK82a&r=_Q@GdW|b?^p5<19F$7ec?Dt6nV=t9 zUS#@9yg9bnu-MRGr!RPf5&z*5PSq3+b3FBY_lFe-!w2^g4@J#NAl{{jcG-W*$ezOe zsG$WVrF>zkhbK~JmTt2t>;R(O#8%L#q8~^{47<@Hpwxlpn3|`^S8h>_Vit7&S5q}6fp3YSq%Pka9VPBxU_!hVOknJU4 zlDp7yy&G7>v2nfi`(JPRUI3kJgRY#qJzFF2(4IxBKi_CtaS~sa_OuzWfQL4?9c!u? z=RkQh!IQvgxQJ0oCJxvI9DUK2Ox}$5iuh@Tsv`2p!K-6gnu=d>bBB!VME+BHKmj)- zfn_Fy(lEFZOZBm6OLvDuZS#xUeWNFgf#264@yE7duv*xLLe4C5yYs)OH*!8ifqgM6 zf%-u{zU|-t^${pjKXbxd!*$1api{sM@Pd^hQ`K@7VULN+7G{qfFeyd_$?ZNE z_h!Ubp{uha-sKCjBMyh}e{y+&Q6hBwVB0lHDe|=a*p59RE!0N$A-3$t*Uf5YL^m9AhTv$Z)nCZD%(LhkxvMON_QK7J_GlL*NfJ5}VkwgHg^+ zb5l5#45IgBkl53suPnk1CuRxUl_q7^-?VYJR!t>i9XG<2ZBD2L)$4K9B@*Rg886oL zk@#}t?WG!)QlSYUYPx3OdPy$xIRm@rMf1EnKK$hjhId@u1#+^<;^MdQuh8&0`qvhq z%dd^3_m$B4&C2M1=z3*+Q#6nYJ^M!Z2W#)N**;FhQ%wW~gB`kYFK09d>x%msOorXj zSWnoQ1xCAGYJ5yEMj96*KPBE{X(2`73bqIPn}o;*pXb}=FGH|kc!wiI*`F=^e&lc%~hf)IPJ~(b^_S427?-G zKU`>J(g}wvJ#YC8w?6DV#RvK2Xxh%_Y{N|*F#db}aXx;Zis52j zKic$LOs=`Jw$4^Ss1D_%?myb<+S(2X@v3KuM2g%rd)?t1qJBWCK#f1qny$J?t1KjxTw_J?BDP z_I)&jDeuND82jw_OyGu5bH+P#N~zcC{wkywdF|>gYMF zqE@~qzL%M}>D}g^&E&Vbm}2*>9u^tTW^3-|>q${xSkY)t3gcbE?B3?#hSN8y_cVRh z$7U(BI-~lH7@AdDrKcz@?HSxgS)LB_Xz|ulrxTl@;yF;GL$zjyp6b1?@T(l`~@Z5D|EDZIV)lPIj&g$Fq)66y^ldqNJ+80wcBB?EifEyv_o#0 zY%YhE-d1=m`GD$02 z1&ZYJOq?ZS?y)02J)9Ob{S$&qz319y+=vJ<5|hCXDqTMwb*63td~~{WMBwI}k<*Yx zJ2Q!+z{RQ*i6;f5iLL%(z%Uoa$!|z66cFE9i32Lg8dE36mu?d_0GoT+0}VWK(7SzZ z2t+dJPqWSD3zTT{q0!yt{N;C>kdkEYacrkdhkGXU5lGGAHl{BzfNrd5pKLrd&p_8W z=wG7TAb?A7X498RTKI-CSh0oj`SN4z$Xj#OHdL3}-L~3#L|yOB zk*E%7R3(f}`!rLOo6#%3FTcB@eqFyMIrI6*QFv!V-r6SCjsg}CX$lu^QkJ!aj79L@ zuY~RX`o;<6m^h*tA=D_86EgG|fR9Z|yXIpCDk#-|-d<0d!XZEVE2pT&T4Yu&N6`o= z+2>}u@t&>e>J0O~jBX$+!>h$*1in0sU9Y@x9sFM3&F$=ldME;DsT_K{ci*o!71C2H z6l!tYqeE9;`42Dm=D0uv80i}S21zsFRX6=g=6$PXo>E(^J0!&Bx z-6c!@U72yZYi$C^Ql6VCH-Y6ZTe%A=6x|z5ehQEZmsR@;=UuH6je<%AcU?W+m>Dyb*@W z#}St{@@wneKb+kW>l-X~Jr1DjV-?PPJ9^L3^MskX)O;Y zmMss??H`iV znmOt*{oYNevH`uRUfr^(Oec3268sYP3ye!rgIKMfmSY620QE7L=DHeUqb2lY@aKFK z*E-+^YI|W{{53N3?L6SjQFwn3H}iaoEkCip!Hxg`Uq(WdRZ?{YZ!pre{aO_kQ21y{B>W=w6w&RNt>E7aFa&nzx(y$@+K|1bX4i5BL*P z1`iETm{@*-IxV3@vq#-(vrN=%Qn@~aX=QDBjV`>o!%r#UmKIHzIl$O8OKNb}7ZDBgms*v ztLbEkUl(Cdy3Yw|DKV~whz{>4=U^l;*p9M$M({u!68MY8w-hCQv4{M)iT`bHhjm5nr zWEyfrkCn*O5UxI**fdpQiypLm88#aZeIpLTF4qndC2ln)BB zM8g$*Zspc&<#iC+?!6o_JGIo!$EUbw%@soE`4ageV!uAOypn3Z^I=x*1}Hp|$;JyX zVdpJP_5^eBd2wfdSh|>Edc&-&i$>rft#hYuKJ{LyZYJVQdR}P$CO;l;k2I9B62>QJ z$6Kzh1oaP{Q)eM%80E%;l>RXAVeOaRdK^aLl37XR&tji%P)kT*Zf;6aVGlUwFX8ur z|JeQBy0~1Ry0MpTL2dy=4k0A4_(eOt{(MM}%oOv!6@bZX^Po)taD)Mk4883u!Ko5K zWuay@sS||F5=*ObPc<}b-485xsfp(wk=uZ^tQs-0icgB&C0DAsoND6xGCi3Hunpj0 zX9>sB*xFH8KxhBJl}{E=fEuN_2&M+$Q}0ONs~nbkX`_Pkq}su$K-$ljmH~-p6r@lc zPbc1r+qW^H^pum89gl>>c$V%jl=e`Go6TQ_3}?i{^F=&q4jcqC`B>$4x{1dkj=Wl| z%=NNTu8uFE8!A6}RS_@ec%XGWi3^JDUH!Z1|Y`%}0Y&$51$$txO zvAy1+HOkQKVv7-q?&qwF6lh!L`~CbDP2z;GYNvE^ambuFiIKb6=V9ky2t%doMIiKi zUp$E>R1mpAR`%8-+ekJOGw=Oq$ba`D*Rw9XZ8}3w&1BW{6!LNIG1nG)wrLRoFIB1> zy1O5AVqq>Gi5II{o(dtb7Vhg6NM*q8lhDdcgnL6J4lioRjW>jhc1+z6>& zz8foTDg(Kzg(YhN8zR2bb0{^=P_R4!UUJCUxcrgt>`RxtPj(8@xsqgdb4ID9{&idV z;JB^Ex7&>dWaNWVlU}UJ@K4B;R{x8=w+xE2`?@{@1b6pfjk~);aCg_>9)i0z4h=y= z(BQ${t#Ow?aCdiSNbdjr%+yppGw(a|ew(S{BL%0B!DPcq`f z>IzeX|2QJ}v%33;NB1zvsER*t z3zG1WUza)`Z>S~g^5!BJMJoH6T1qZ@OW;<3>6-KJxrMv>+RV0Tdvf)XO+eE@mM_Q7 zN2mU~UkEu7hakM_xAvGWt#Yie%+X0+pj7QpW5HOb%-B`p{7R#9E8J_y>>tsULc0H4 zLO!rFC2OW=W)GXre^P8|+k!Sl3<*dCAl`><|BSR=sGo!K72pRNxu1gb+Ptfjh`VLD zW8O#9?DgZQGFtGVJ8zk~wdb3g0rLeEwk_nL#P_jG)38AGGTY74X*#Xe-+DW0+hVn* z`kf(Zza>opt#Q0$7W_Y7kVcAyrlQk@Gsw-e&P3Wf4_N|?qdo=~d3_IjF){GCoj)e( zv@M+5%m za*>C2`7m5IvBYx*8jI>M`B1X$mOa96z`hs}U z_=&ST^=+&fcO|6GcK^QGz{6IG>BZ-5VD?k0&{qHtJJ8jY)gsFFW4=si5+xgddVf9_mnk<5xj6?bW))kh2Bh!P?ji@5t z*fEkAOqj;xn&B)z9rQMTh?ZPb-b|7q-5r-MQ{lWenhuf*8BR)y<>X%CA(uR7{R!91 zACUQr6lDuFtFMbbHYzSspw@DM*kcJ@?s|)79ke!Y%`sqtrADVN2Jqqn{Ze`An~&=t zoXl<{&3Ez9_kF}y4=dArqVkWM{F37}K!Ek2zZmU%XIXtuZ>W$o!=e z+OSOK;XQ!}`F%SE-8v#I#%2soP0W=8#{PUKB-k6I@VA@6*__!r7U83z2R!xIJuE13 zj{unKwL)H&{mA(3!^c~~{xwC$VE){b2nWp2>uFZA8-|fGmB|)&=4Pon75(1Wqpov# z=z@`Nk=AOZti{b}s;4G)FQe>MGCM0CKYbu9G^FvYJTZS(>CP~hOGOBW3=Jl|Mq?cn zKFWQrEXu*-<3t-15Vm%KdtSWFY^&bWK7H1qN#)1_81V%*D7IOK;7yz48^_oo($!rp zQ93DcbU8$ zBBa3J4w7x;5gq!P+lOH8!F^-hsKYPz&hf8|n(F>%PEdiMv0h0uP(o%FofMwrL>}jY zKU%v=70&aQ#(A>YT577x#BjzTG4AVct_W_K8g0SEZwu3=i6Qz=le*H46OLr-VfG+Q z+6@e)70I}|GfQ-TCa)!fNkpZ=mO?mbYJ5}~Ce0$~)OFNu4dPZb;n>1Ql$=GqDzzlQ zfmd_;m+6AMqCKC_@vTzvmTNN4_Fk9AP>r)bw>=I_{61fb=&G|74Fhd)aW;GXU+|b~ zpO{#e{|F#GEQL*bcxTqhBz3xYl)7+!lEeIViWZ?L-VuO#00d4Bm3V#&u?1wkw!_Nd zEY*5F5i`?Lu6rRZOW9@3w_mo!a4W`Y?}@cl=Eau-e)XN{L)LbS$n!5o!CeX z9!lmS&bhFVgT8YzW|PGh-iw{Ly{14xG|)tNRBZ#Q2`RnwlYYet2CtyrWe+~wPlNrD zSF%D1OlBAAw3oGk^BLpS|MbGxne<&z?=q`M36O{};5nbAD4UxMEvtB!pqP4fs}mAF z5e*eMrveCMA&NZ}pX{XG#{yUES=Us7^{E{hv55Bt7cPQpxt8BTmPoB}pahB;oC%$m z4!5XiaoOw>TWwv-7p^z+x~x-;lw+h|ZcQ4dW0a{PwgWL7hkB?VP;-Z|Y;9238FDs` zom7q7DI zQ#A>DEls38@-&(l8AnCR6ELGU)-I0w_15|x2ksn4%HoMjL^a8s6<~9xOjKd3!XB+(LSAG+!)I zzS?o}x%E)Oup(OjLURdA)sbLA=8obefSdT6l1AJ9xV%QU342)Zpb+zjW`VE8OQOx! zzH)mz%DVD`sRc=7X}{EoXI~&C_Bd&*;lxA(H^hGsNYs4@%en#kVrzsl$Y%`UlxjB{ zqBW-;uy9j1;>L<$hvh4_q1hMxZ}XY6e`gkrUlsqoJ9Q zBeGS~htAs6kMZWZnqVY4z^-S+O>#0dYsDPGdH8U759q*JTSGV8cBp`irkF+zvazEY z9WjaAiffP~q9yh7Qldq3$~KQx!=?wPGZ7&yO5Ui9G4MnS zrIpQ@F?CB@z(k@YYXFM%t4QOxJ+lux>lsR52U|_V3Lngim!eVf_tU$!NY%*>B+3Ix z{jwgXoM#l!K~UsY$eWPI|8L4{Nw%p?VjJc zOhWpJVfro=VkP@UFshWLp6ZE3GWc|I87I0%RieBtU|8Wb!U>&qIZHhE2o!J#SRtpa zhLoIKD?%_7Y(zX<^?+95a_o0B4R1qBMlhP!i>J;sLRZVft@_q1c8ddPq^}x1G$c!t zB!#-C%!&QH&jYf+3AK4QO|eabh%@1P(Zz<*HdSYeo}=H<7-CEVpc{&YEqz5=efedy zegb{}48L*mdP(!ad(T!oZS{{C?#%*0^fsm}T#$YiX3*T!m6A)cfCWV>V-YT09%s23 z&j>47FPnQLhP}K77|V5E&^roq(~zV*|J8N~?o^QMO*o`mk#<}EJqG1LKO5Y$gJxPD z5nm==Sp8Td!~7ncq4F(Xe}s|g1_6OwyV;c%hp`<&@~g^~dCR2Gd~Cb9aOAAm2wiF< zkVxVe$2yN26H*x3E!FXDw{@=)57Bw75nK5^f#1Wh)cLe<2c`d-ulyI}f?splRO$a& z{k`B$F0_ww{p3fPGJ0!KO88&KiP6;dYtmk581~~6!^)un)T_&puXhw`30Ht^A%j?Dy7~8mBJ^VmU18HfXK< zNqIZXuxHy!%gO&)tI3MepK^Dzr-N6IlnAmP8qgK7^nnA*zE7;fct86t^7`Fic~pp5 zrxU|naG-u!18!7iDG-kATujtTk6RzBMM%B|va!JfqFuWdEsN%Ru&NQB(hW&3&K22y zD%u-XMuQ3bv?_K$XfZCvf)!#yfJa1dWjYLH^B(!@wK5hiqxestPB4wCPbzL^&}?G4 zNM;9KGn{Eob5V7qbnU!%xqCQe)$M`=Vv(_v;T!__ex$dBiYadHkE zM69cx-ik+*jeA$Z<^+gd^}rR5F!fe)GIcbuFA9|QP=oRW!NJbV`9E5-At46CJ*Yx! zKV{cv6UA(^v+$}0j%kx%>~py4+<>xFMOpi0|5F1}!kp31{J_0JjL_kciPE_}Ht`Z% zaLCQL=~LF!lc3|CFJCXu`_;-tb7=GValIJ}wsFX)=?riw1G9qOX~Ni?O$K@S@F+(` z8slYz$F8NhBDQ(kxjh3zgXFBh5d>uB&^@pAu*A8wcc4Mf}^2k9jw(_+*{nKBW>MeV!gM!nrZX_dR z%e0tVtkKaa((=kwLvGQTbq|!9(KaxEQqGta)whO}8XN4-d(MVp+8MR#W~bN4{^Yt{ z2k1v`Cr^6pme!#{lCAi}f4=C^!o5~)#FhZ+HI~EGnLaaZSJ3MX)GI14?yLSJ$Le`u zK7Oz|UytnAeor+u2%rm=gc~4Ocu+F6sl`bClx ztb<|r>+?7v+A#5;xTo;7=h9~bFRuZy)-V?!y)eQ><5Wp0Oda8U3ZpW zoX}uZBeapFKY^V^%DFm1*!M#mKDZ~eHAIF4RtP`wyRkJf9 zDyadztS3g5*fo~PpCFh_PtB>aR9?h#Vi9=2`p!__C)Y-OEk1bSt~+i2xc98HCO z!Y+@O2qsoFp@2HM;Xurm^FzjbK1B%5_ZU2Wji`Y#8Z>x(A;`?cBE#!kvanU&yN0ei z%z{y2uxG~|ZOBoP>{h^ILi+A?T${}J zl<2rQUQREzGvUzMy8Z6Pok~Sr7m&GUQ62x;VoLo6XNh>jdjFMVl+$syD#!D#8xrpE z_Vcu4kqXSj)ex86vM*$&3x0XqC(aU%7y`HD`G><%p6}zrR4d-9kqa6zso&-!r2KE_ zpXyui)GTM$Be%7({Z+#W7xy+A(qC2(T=2 z=y9y;&uwu!4KJOzAA0S=bj!`RFYEDzHl?r^K+Hc zm|a<`FYVCcN-t)dK-}^L}Vur_Y!{g)< zeNL+hSF&G#P@?@+8q)S9#)|jts#dNcacBA5p0`srvVje@;G%w+F582z#h*iJ@r1_> zfqO*{lgy88)ewHB?vGi3Guqv6qiJlB9o9RKs-@YB6e9gVd~_ll`OaJ)v%IT>9D~50 zRz?#;4@7-7GlAZ^jg-ACPcAuSFPkLY7U~mq;>CKV3fIVeHdQ5f{+;h9O0!b9Jui>v z1;Fjt3$c9DE9zu#h7_%8TU0Wfs+a}=C%e}Os45s42GUI}2rX89|5Jm&6qMkdDmR)2 zDKryZkf~R^jwZR8POpr;7*p|dEIirH?LEH$#%N>_Vk3)!?JPjQf+GFUKyckA=OCWWNj{ zxE|Ygznru>dEG{f?Jq=kJUum>jkG`S35mJ9KA{!(SkdmxVi~`(SAggc%X@-fpDpBL z?7NKoPAbmj+ff!9>^d)fYn*$+Q%uua@tIGsKN*D!-)C{>tyqJ5jPA%^JlSVW+)sWR z5$Oh?8X2H;oTEUu=DbfU2tTLxzpt>eaqO8~X5L8K`r7E}Ok9BVWi3MZ{`77zgW|9a z4jJ2z$lHdUZ?ElY+$buPodT})g~2U0eu?nJ|J`uZV&%SG$H!?Jb`lxIPTSyRj~zn) z$WzDM$J$fy&90tuOA583r+lo!alk7)EhUv zfsK9tJKHkvPxNl5i!xd8f>MjFK6mLb>a?(DBN_K$ihGJr;}sLTDK>o1g4w5|zjpm& z3=&Y+7QpPR28+SFw^zFtfA8Y#4$*Q*cP#xgST72;UChm^-6aR5&PvDOtO~`VcmS&M zRA|Y*t{M2Fh&oYKtdXfGR&M1mU}<*L*0YiK?b=*$xN|3-NY>Yz-o<1}ZBYEllj?O+ z5vfui`){NtKj8xTv><7~27H6HHo(N&Sf?Hrh9Uwzt-djKB#TKyrjx=3?rV-q(u15a zz@8@pX={kQRyN`(u{FGL2Z!P3d(*|N?jFltBmnm_9IEgY%}c*K*LEC|S+4an_xT1M zakUI+f|_gR(=*nx6^Sgw3+Wia_XE@%s*e2xAA;3~3$1=QcWIMxHDLjYG80Ti1RZ3n z!r?XxN`hepBA<0{%TN&j_i=9*kFr_^z&+q%jIm(h`NqWNY#Rj`bMa20)n&)*TMAa} z)6M>54h!L8+ecBCIeKmGk|%|E=jfF2 z%g0U=TsgAN@wwKGsh7jC{14qfhVKKiPRZ3cFA1SP z;BoqhiCkU^^BsCmJWXKU-HQu%a{D>c`2W2brJkGXL+e)xqV+83ko1y#)eom@!4hf+ zIO2UD0b;cFpq~!phD9Mulj+WBc`bNF^IK>`^j|&ayZOy})rb%Lv;#H|DW~^pG|=7} zOOCf)6z$`Pmn~eAM)83lIVey7Zw;!oeq{%564?sICK?C=77?&?sL=}#<@r+>hB2MP zhpOZgx0b`58qttBr_VlmNHlDFM_5b3!Fw)w7Q7{Eop01M@oZ0~vW#I`W0DuQJdSq+ z`}^#zo((ihozF9qfOm1X&8n2Dpewl42EWRkX}vxX``oL!n+}$J23K}`7MmU}Mnb+k z8C`aFZ6-vdNGdFHlUTu8xaIbI#Ec+o&!_m^jy($4=lonDyiD5UOKTA(Pqh3X@zTiy z;$XR1wK=Ffqwo*wxC_tPNC8tQf(^x>GzC^o-HqD|$r#c^H0VNXNqgPE*#XGWUN)!j<|fqNMc zwc;XomAa@Ylm@uu9mQ?i@b1CHy7h(E-jBd?EtJ+Ds?a&wX>& z(SN+WRHNClyh5G3q@l~9}*PHxI`a9 zyvjtY2AG5-nE^_S&((co7>8Ig*G^Uumc4*ACp&Gx8a}-^En*Mr8gO5=R~|VsWGYgY zLE8yhEJr`fmI0^dM6jg|>~2Rle%-C))0pZ^$#_Dm16+hb;R9 z<$0YC$3)uu=rXw!<1M5cu3QE$?6byxcj@>l_~B&~hU0i8=!A7O*MURup3!Gr%|C?y zwtN2trHn>+FFtyc`GfH6EHXC-q>wr##1Y50aEXAIGu2>>a7s*-4v0oeh6 zE2_hTH9i#;m50bLR?DVIgul_&RJ8+|E_b?jZz*iG_xAQA)TV{5TyIsIx;H~(B6*w# z>8Epo$&)03jj1rK+o=QbTkc`gd($B`L!d@hr?bB~Lc*Wu| zAIa|*Yc_+f8!(^DG1IeN$=a{MyAw$eL)7ErS&bqqJDy@W)AS)!sP5jLww7_xEq=Jx zdf~(~Tr`f_pdKMl$$ZEn$^2?LRZ7t@46)cKnuX~*tf$eAwkZJ)}p zwT7Laf4Y0KZv2&+qJ>lBJE0x#o6l`TQEkN4(AcNur`pF6UzMffH8d!THP=*;L)3S- z2v`hY#gn*^3AYnVSS?@lX(H(!z?XxPo;th;hzP74Sk&h$QJMU1>*iVw+-Ir-4RaYx z2!P&t;Mkd=OnXf-F!KvKb0y1GN3?f4_H!m!&C!oQuO(nFm$R{j%%34H)#4;jxETWV z<+pFX`e{Jw8{s`H_w(mRPYGUk&hO|@A9Mp-ULK_GZrWn*p*+RNlzxq_a@Lz%md^iX z{JzVz77B<8WW<-0rrN$CxPSDA6RrJj(ig8yY%>*{M_l8TNY> zURwf4Z19^jdqW}s>|ta?Q&|!#k~FM(YXY9Twcb5Z*)3dw-2G@00=B`fP+jp^TLNNw zV%__EtT8!uJ<0}nk?-Y_*KyQ{#WtR{2e@h@d10wJH<(|xgqGYMchBz~6W;AA#&#(_ zojqnaC1Kf)&iRLQJS2{9zB~%W!S<34jgN?P{0hl>8WqnEI}KRYn`GF!J@7uWr`xSx zJk4`ySK5{rZ@_cn1(_qHf9Rfx^T8K>#(`fXQ89Sk8@?+&)sKT=49z4QYq6W~oDVsD zGfN!k#S&hOQye(IX8FJhKZoJT&&T{6cjWnc3wxN3hB&)^a_UFof4=%5yA^dUu)>!_ z_{EXE4F)Wc=u-^A#dObb<+G9n&6qXc6U5h<`VUM*T|n>vDsC=%?sM0(HgqkkwNTY0_SNtD^_rM zZ9e|V?^vaE9;W#gq4^eBn{&ChboEuv=XxS7^r*Mz^||zJrB4$;Pw3nuRa{PD->cq4 zNcghOeD0oc`P&bd>s9dO$x%@_uBab5SL*)#^5vls5vPWc%k-Ot_q7IkRNQ2w<%Dm@ zn^;qUtLk#~<-@Cs(*`t=2c90-H!=KdNT<})P!|;U_GfMr!&%VM0}sKw&cpH{v38xW zFAwxQynP$xg)1%Qc!(8mo2~ilaPQ@K`fm8uZzn0?pJIW#S&#M1Pss!D6ihVL#4zfN z+W=wAC{%=FT$l`JEKaQa-Ud6!8IJP^pyLvDSG9d`;-wzn_*PJ|QV)=6T5%mJEn?dl z`Mx=d&SW8l9?TIH6@@N$wQdDV5B<5g3EBU=hM)Dz>)F)HKQee;+FALUdSH}#6H?D^ zc5N3*-^L4XFd{mhEoA~+Gv&tgsQhU zGd6w~qs3+V^5jXwfRgvaOn8`^os472o!BDGbp8=?_#d-}8T%g>9Xu_>NIDxLG&I=b z@+UEm%NCrEsVFhxK)f=4q)$oz;vxKaOldxD+BYBV-pkqXEX@jlImsru|!vObICCUgCUk0*WpO+HYW!jhU;bRq$V5 zopA<`_^rMA_)FZ98TKDRGjX>X?JNNZk>c>@r&kfTo1H(0HIGOSoeKGFQ^n7i}~Yl;3h}Pkh>kuEWO*Z-s~YwGueAp2#k!oqY(UP!TvRHdn4T=f zAd1LaT!)A$6IzfWO>C?fBYclzc2qgHPT#+F|9E$ePRe1}-*93DT7hz$@H8;8S4eGq z6UI5zrDhXT@$q7SgR?CGDZ|do3Q%c6x*W|prOFR#r=XD5D8Q0t&5GxLntDw{9`5g# zev#p$cOrCboxju#B43YdNvt#8{{*F|h zSM4361_Br*-e)m?j*F^TTzl9~~HE zY$|h|D-X5nWqp^nHLOX(a^r!UyxGWZr(i46;)=075w7&ocYj-PNIk7l@~HuG^)Q?= z8}?!Q1x&8oQL?;Y+b?EtB`E1^V4egOR_P1776dU+to1s1nGSw`;VWqjf3js&tEQ-d z_QxEfAL*$5L2-ffWVVR|85mydLh`r$Dx#mrbs&@l{|caQ_tIrkvG@AbkjiR5;)#|M zPqXbz3;f|YUpQ_Eu&u_DC!AqpODHxHSvrQm{pI6pUHtr&7P{y=VY13w)9ddyr0+4# zLd|JF2$F6BsJH6+)x}%ik`n!QAG#IrsmsvZe$caw&xH=UAb5dJKEbs5{8L|%*eCT} zAaH{jzN%xz0y*4??~F~ughG<=yHGGTnP?%ojdLosyCc)A1uFSMnU|6}IcrpDP(H1p zUWsX94m8s}Y?!#Bgpdv6i!>Os60I4z0(F2 z4Kvee2l$G*_eJLT7zUf*Kt!@}{0{D#NPrGtiz*wM)!>klOv|a4Dfq|jbXAB}2mG#n zFv~bE&vf_kjv+%OV%4Hnc>g6jkJ_=O&y;+wLRQrEUXOt$_YhI=2fiT1I)XziVHg)3 zCDz&f9>!nqw&iwEq`_8d! zacGbHH^^FlWv=@6!$BB@IZb;B+}L=(%)eI?fQ{No$=%!@-5Vhxh$^uaj>)jxzi*rF z9ap;*S+?=nOZQ5G#dchctus69E3C|Ff8@oI*e&mZO_?Q6k1MM-Gnj9>7p^>f?+e?P zy`DU7I*WJw)zt{GUZ??`@qE47w(1GfmX#k850-0VJth6J|8r7VE2`}-^gcv-)k{Lm z)#zVG{7&ZoQhWpc|7(1MNe;$*V;^6%62UP|9yfK4dbS#Ee(59Ypa2l|C&!G>*fc=d zBD2@P0`=)CG2!`s6Sp&B+2eTj_`Vi36QA$bD&NMuBGHGDPrel@Y?k=tsRoLt5BG4n zwZN?m!0i?L?o>v25jqbJc4^g47);V)<~-$vgRSU@lB&<)Ppbi?7fgdE_$P?pwQpf% z{tcXYdZoR&oDHTg`|v?yRMUy{>{<2PU%KeZ`|BDiL=Dbe!1g)XYNVsf(LU}gT_2;Y*w<36iD^BWYRuI1 zaSAVaBZ~c%!g28GL&2t_%&-4Rft(w>vt+w1EXkE5p1rnfd%FFRpILh_I@C#BX@YAO^D zUoJ|Ep)XNf+XTv@R#X`Ny+Avu&s8SS9d$x@mu_ZmHx99ckcHMNuSWdIo)Q>z*&y_H zk9mXT$k$|>1N^cMWcd-RjAK)i06!j_TPxr)+y{7;D3g<@tEj5ba_Iap&Px_BBxKEL znu9QpX|H-WflZkM&G=UJ>!E2OKBna2@aadnA-%qV9k9cQUMjfq6bwJ4JHg8?m{_ua z12%YG;#}JcHC&L>&cWjfm8dBfQ8GDRJjGj}J9V(kN&-LJZv z-8VL~hQ5AzEfk93q~Gm)%#gXaSrYAUWkFIm)p+sa9><{`7on3(T41Pp`5Zndf#cWR z;&)Z5;ZJDV>y?jH76zP=p8`~Mil zL9ML`@IORx===R&6bGySGsVHH^uM7vyj_xhW1DnNp+^o#=+ex|cu2;Mrx^v%} zNP>?Hy8U-V_f-C^*orQ!RZSVn(I^{$?(Z))StfMKnkE$ z)j!6sRQG{9ghmB6pRwPPE+1JKdMIbXcWcy|#$$D#O(YU|emV94?&}Q@W9f60>neAz z?LGF-73OPSSmkLC`wiv@?v502O5|kPXT?CC5$4}OcA_cr^VPA@7-6)qDzOk)(qYt# z6z5y~SptZ+^#+ced#61_>uQ;9PjN>k43%ntUti}7=FHfC?6C3$P)8qNYpWx=w!Z)j zt!+LU8L_(w-U8f^VOYI?n*w+AXR&LfO<^mKwc^aQ^!OhZ>Ww!m+`hBkRS++dJXhg@ zCKqOdJ?0c!D>KYFwL@jZFqAm*7=IW~UHLec|4%X;s&MpU{u_kDiP`^-a2QLn6)OcF z5uWy^Hwn2qE(4FNp3c>d`lvv!*B!qVx5J#k3$Kxs+xKc_Wb{CZA;m%vwDuQYD9Dp{ ze6hO(`ry8B6Qful8w-q$Ma?Xg)s3pHdSZ*^5Sk;%Y+!z9OH3_nJfEVh1ums ze;tg{0sx9!lY2bAPo4WDyF)WCnZVggee4sz zUGsoF#>Mswej@+B_UN5a9)>@*`hg2~Os$3NeXIy%|}z z{xbEvCv|)7S2~-~Gr0du!P*KVVzhXueu7i0`)2E!ju+;J$?>vzT8ZEfo9-_c6%P!o zA5}8Z5=fyW#c2^k5I248{ZQLiTz>tz_?!*is{}b*Y2w@tLC2=&;fW~tkNJcJxBI`N zIza6M5I8YERz!Z^4CZOCNKwVjKYDjiVvcn;HBrWZm62}%SGU(l73lH_{!?>cD0FaY z&Nb2j)9XPb<-8ZdPq6V*4>Y-2DuzuFW z$5F1acg`lgc1F6<*m2A>UM<#_-;oUo|_c9Wq>LI0vuDx+bgGx>F!4g3y*q*0x zIe)bJ)ClvZ_fL>G_2}gIz#o(Co18OYv1^G@YIk|tfWY5)3$euFN`;}WOHz=T*R7PC z#(8bLf$d{hfM!jQOo`+uB|O*$=aL+r<1QR638_)6Q>Hc4oF8z+dvU?o>K)<{=Q1IH zdqK1bsbM-Z;}6X91IWfPq z=GMPLF&ausKgl=6I!dwsHv6B%JE)6R1V5XN=NNRraO>*?oXnAQJ!su}=6uLY3*nVJ zVD&#Anw)<3kx*IkBS~D$tlIb8XdPvV#<9JLG+hbFQqr#y?czjLJ8m|O@6mJoEv3@K zU=!UU<4|a5c8cNteBegBA;P{`ydpw`NFFS(?++EdFZE#^p%se#vHh&g^9Am6 zDML{xU2Omf=d@UA3r}PdqHVSngsVF!zxJBkkDUJH;P^T_3SXWmR91sXA_>dY3qxsD zfE^Y-Dy;U0Hx#o1B{z}EfAJl-k zJ>kvz6M-)btzk#m&v|rT-H6PqO|SAfh6yhLX30mZeJPaNXwh=^EA~=gei0)? z>FKj#pJ@n}n=|RO@%=Q8IkC0gkpiXBEr}uHMRk-8ZPjeI{9sUd2~3@zdY~ zi;q`9rLL_IqxWFfp)wvw7s_9cRGZgPFSS?#KWEJvFao!)a)t;*BQnj z#4a7b_u6J690)sMp4`pba3rIezJ5MD8#+4zRE=uC&M00<5;%tgkJ~LdscwlS7SEP| zL3cQKihmQH3DCQX>71huwggs-dD#cni*996SeW3sHprhsI}_B&_>M@w z(wKngG`(w`XApWWf(F5yc`eBXzXOPOz;&w)@BdubBJ1Tz?8IslnXLQHJXRc z`WBcs;55U4RDz4W$6DRj1KdR)2e)Ry<+kdEMCb=|mfDz*@ZPS;{UiLy4N4;N9I<=1 zD;<^rr^oE|zI*L@rBeckNr;AF7q6yEBh)R4f-}XPKqw<2fnDWz&8Y5qHN}Y3sJ+Hu z^&$&6gl&>Njfo|k-a{!@ffhZm+T)W)aUlWmZ;a+($lpKsc}y=Q-j1rvBpHqA z_V7B`-E}TNsb0nv8?Qieh`xvF9{aN!BJWMN?4En^_bym!WK$C}w8T98qt%7rEoI0b zV9{!0%#VFye3V_}Dsy(2P?~tYnpn#d@mHn5nHf@9TK%$a4i2QNeAXEkEbL$@R)eU7 zkPN5o^)IB9N5diK-OA8JzvK8g1KVBSvr2_Y9z&s*v&kzCe&+GQh<&}Pwfk4b`=H+% zP?+0vUt`@8xm7>q*j>+P6&V>Xdcjb-M|Q5b0A0!Ob&QvW48ll*um?NFgd^$qdX~Wr=HhBb}*yORT^+fmSj--DR zRg%Jh&4}$Blm_ZS^O$O_rCJ)erj z(U`83-a_pUo(Gi&Dpj+La)<1=;)U5#$XzGfPqO=S zmA{SNM}1ZOD<1qMX1uwT!1T%`g(@UOAwQ)OMr5^rG(gseiOzxJkMr^=Odwh3;zB5L zL|9oF$<1!MSt9BnTKJ>pZg29Y(-63|gRQ@8r#6@q9PFx-V?@W3W=K=A;qA$op1!!X zzUcDv#np;Paz}C!>n`->m_x%bVq?fO7`eBJrm6tqoxhmxw+qrp6!Qa%+wpYE$ggA| z=F8znqtx-myNb_^CC5@f$NoK;Z#Ym;6wX zoVYlTQ#N$lF|oAe6w89X{x*L=w=$9wlvQlX#&s6~$Q#3nGPKemSCm*x7s1rA8LpfW zXLC|z4WRs!5-sO)x&A;wVNchzay!*`trB6ZCY|&@GWrt=jmB)9(YWKQA{M`>e1%ih z*3dh;Tqa$91&NyH{8}d3T0Acq8JczpJy2Nok=JElLmDL<0shseNEX|D`K7CbA4M5z z@c!>sg7{%?+%~|YZ!=d14&MZ7Nx-t)78?EN@Trv#)u}mG;sw_ZQtBer zh&`tg%WTND;X*W@%k;$6YFC95KqdpoEFKeTv6F0^@!Z~pQP@b&UT%P;$h*!xZ8iSw zi#5K{01S(9)|yK-M#^OqwF!A#AmJ>{496SDHNRaYhiMI1g5Sx#IR!+AG$zf$*Ta$f zUE_i78)pF#Ll=}_isopr{KQ8>-^B(#^m3$~kQGa( zBi#JR1McAvP_T}m_A2LC9N>VHz~Z|%?t>vbCZ z+k&%LdUMuQ#9*!M&`+%x%T>XRB`D&r&yWr_q=uYv7*e}_2=3+1oQmg~=CQMluXeuk z(mTsqY(D!{&g9x&1^XNOb%=TVhQMCL=;!aB*b9S(W%h(qxG=k`=`&Kxg#87Eyp5$wqQe5)t4Y=hnTI zZ*L&C+p&w8Zz9yRsEh~PGh5@H%L7oA>D^LAa}+( zgaYn4J0gfHfYt}Nfd8`u!rhUCLA@O4OmNoZRT-nh{nB-_uyw|D8QUrRE zb9j@_9FdC2ahBpLl|r*541kSvVKGxO6@~ivyyE|cmqw%FGQLe?t*Xh7(GAo2_@VDJ zTHufcV&@S`k>7-dBp%VZ?rsi3wk9x%$6@ARV$kK2%{zPl1%NB^g?(ViPiYD)GWn?srS_8;kF`|mMcdSV z3N~IqX+fK}0mfg`RFh}tP5Aksqj2V%3*pT!5z%tm`a$k656=2NI1P)>tsR*4v}fY= z>#2(M&Y-;Q@l_y_^9!-ZftgWn&wnNIo{mZ0{=<=wucr5kfl7y(P9|IAV_-9pnlzrU z$4D}XAE{r}oG=51dIn7xU?OBLQEesM`bKpn)VRT6N}x@jBYV0nrkLe#rqDOS%A=E(TXU`4s7??>K?wu`JwSW9zq6rKo`ErH)-jPiOp%{)V1Hw^mF$y8k?zzxWMq zB3P-1&xps3EAOPR3o;Td`&B1Ru#5|JqEgt9J;(&1m@}p;>3J~2XW(FDY7GWqI}#-g zNTXD<6uKE?v9+ehE9bK?oKCSQt5DxS+VkpRXg2*Sd+nwWS>Gmh0s3~*aB@_TC8@gr zxqC^0M#RJu+X0BH7Kr@f1THUGi_lwM?2b@t(OGu<-h$b-Pk)gjIWCn8k^$B8Q z@DNRAc-wF)j(?L%{}vo{1K{t=_a$1rWxVJ&89He+tf8tZQX)re=}Na+{6OP)P%gdg zu7_17lJ7|d*D={~ZW{RCI}x9B_;O2T7%`!7kbAP#GS+?@JD7|Z0b?rnN?Mxrn zPZ4HnOtt+_!~EPr|NT>gJ&YY_f#RIh&>nVVf!FHpEavVA_w;R?rUmv)xZ?))ZeSs_ zsE85FK7Q2McdZZ~u5MLuppmWKpt2h^U5|H{nz&mPKkzL)Q4&P_Imk)ick-U>AmSHv z-_ux$hyw~$hXi6)`9uPE!>gvKH&BCX9U@7j+eX+17sq=TG>x#e>HRXiwPFJcNWW28 zj%298=Zv$&owq}8_3~S7{x_-wt`8dbR-D01-9NQ&q>-Hoa^dfQHYsOJUzeB{U6Z`lOk ziyyI)OdOKV$X5hn#n?m4VsZ@HfMt6)GigwKz6)lutc>{7P0l!jgo@^X=ldT?-U$`R zb2ztVZZs#O;{RI!Bm&$0UM?#Lo4_=;pX57BWnNx0pv-HmMF=SzeD#U^k#n&LuOCSP zp&HD;I(Ot^u4Nd8VHk#C#-DK!aKVd56wFz*93NS`1kn-+swU#OH6#*4cw@_9{PJh7 z7HRUZDs4XL1d4|yeC zPE3u8!0Z8ZY|8DQk5^9)(C;A1>T~-Sb1lO#48t%CGyaU5fVXrfktBgGE($_X{jkMy z^O*#G`^tX&YTfhDjvPQiJPy|uvwPdf$^p`57e%^*h?Idw>TSw84Efvw?#*E00){K2 z(=HIfCHXUi>%y`uOlc^=tgBSaSrnk;$J`}8EL*1Gx@8V#1d^DnC!wi|ccn-|>J<|C z0)+%#v0%0B<%yZ}rcMyOv=XhG7_n8Gpu2zy<&Qt4&Z$zc(XE z#!2J(=UegYueM + +long long totalMem() { + unsigned long long allocatedRAM = 0; + GetPhysicallyInstalledSystemMemory(&allocatedRAM); + return (allocatedRAM / 1024); +} +#endif +#if define(HX_MAC) +#include + +long long totalMem() { + int mib [] = { CTL_HW, HW_MEMSIZE }; + int64_t value = 0; + size_t length = sizeof(value); + + if(-1 == sysctl(mib, 2, &value, &length, NULL, 0)) + return -1; // An error occurred + + return value / 1024 / 1024; +} +#endif +#if defined(HX_LINUX) +#include + +long long totalMem() { + FILE *meminfo = fopen('/proc/meminfo', 'r'); + + if(meminfo == NULL) return -1; + + char line[256]; + while(fgets(line, sizeof(line), meminfo)) + { + int ram; + if(sscanf(line, 'MemTotal: %d kB', &ram) == 1) + { + fclose(meminfo); + return (ram / 1024); + } + } + + fclose(meminfo); + return -1; +} +#endif +") +#end class MemoryUtil { public static var disableCount:Int = 0; @@ -60,6 +111,14 @@ class MemoryUtil { #end } + #if cpp + @:functionCode("return totalMem();") + public static function getTotalMem():Float + { + return 0; + } + #end + public static inline function currentMemUsage() { #if cpp return Gc.memInfo64(Gc.MEM_INFO_USAGE); @@ -70,6 +129,30 @@ class MemoryUtil { #end } + + public static function getMemType():String { + #if windows + if (Assets.exists(Paths.ps1("powershell/ramtype"))) { + var process = new HiddenProcess("powershell", ["-ExecutionPolicy", "ByPass", "-File", (Sys.getCwd() + Paths.ps1("powershell/ramtype")).replace("/", "\\")]); + if (process.exitCode() == 0) return process.stdout.readAll().toString().trim().split("\n")[0].trim(); + } + #elseif mac + var process = new HiddenProcess("system_profiler", ["SPMemoryDataType"]); + if (process.exitCode() == 0) return process.stdout.readAll().toString().match(/Type: (.+)/)[1]; + #elseif linux + var process = HiddenProcess("sudo", ["dmidecode", "--type", "17"]); + if (process.exitCode() != 0) return "Unknown"; + var lines = process.stdout.readAll().toString().split("\n"); + for (line in lines) { + if (line.indexOf("Type:") == 0) { + return line.substring("Type:".length).trim(); + } + } + #end + + return "Unknown"; + } + private static var _nb:Int = 0; private static var _nbD:Int = 0; private static var _zombie:Dynamic; diff --git a/source/native/HiddenProcess.hx b/source/native/HiddenProcess.hx new file mode 100644 index 00000000..df888e51 --- /dev/null +++ b/source/native/HiddenProcess.hx @@ -0,0 +1,3 @@ +package native; + +typedef HiddenProcess = sys.io.Process; \ No newline at end of file