From 1c127fa8e2ff2b034ebf8e50faea2bbc5136afd2 Mon Sep 17 00:00:00 2001 From: Alexey Kardashevskiy Date: Mon, 10 Jan 2022 15:27:45 +1100 Subject: [PATCH 01/34] pseries: Update SLOF firmware image The only change is that SLOF is compiled with -mcpu=power5 to make it work on PPC970 too. Signed-off-by: Alexey Kardashevskiy --- pc-bios/README | 2 +- pc-bios/slof.bin | Bin 991920 -> 992384 bytes roms/SLOF | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pc-bios/README b/pc-bios/README index c51ae58824..ba6c15e769 100644 --- a/pc-bios/README +++ b/pc-bios/README @@ -14,7 +14,7 @@ - SLOF (Slimline Open Firmware) is a free IEEE 1275 Open Firmware implementation for certain IBM POWER hardware. The sources are at https://github.com/aik/SLOF, and the image currently in qemu is - built from git tag qemu-slof-20211112. + built from git tag qemu-slof-20220110. - VOF (Virtual Open Firmware) is a minimalistic firmware to work with -machine pseries,x-vof=on. When enabled, the firmware acts as a slim shim and diff --git a/pc-bios/slof.bin b/pc-bios/slof.bin index 046ca63709aacf7f05c9b95a37535ac2c0b52df3..cbbe23e9107575c64c3264badacfad8b0a7ca090 100644 GIT binary patch delta 267695 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 z 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 ax?9n%pv=>*pv=2nL7A`TKg;WTwc7yMZp5?z delta 267618 zcmZoTX|v&|%>*-Xr48wsCAx`bmIh`?21X{yX32%Axuph^6&YpO6ch!8MGPkvi16&% zd(rPd6iilR^xb%OvAqDYrsPD^#LW{NwlG=v<(DZK8Y>tX7#S)UnphbdTA3K|aw)il zD}<#M6=&w>DcCBYTM5=({a8v1h~3yQ*~Rmvz7qpO4F}V* zAB+qFKNSB@v{m~5zas18p&yP68kU+h43%E;Dz%zHBDPHb|NqFSVVE4_`t)wZWQqu9t^Sz!Qz{o zkkxPSV36$ui*H5|KjFb3TL=>OU|?YI{{MBdytf>q(_}kueMYCrdEQzIH8s)|HS?4! zY?A)}vq-LC0J+bi<+}&S6CMoOypwl$%eYkkXMSSQz`#)d_;-bMBEtj^25DW8p_U2^ z47N`H|AQQEk^Dp9r&iqy4+fb=kQ_*?{>kr(`qbMM7Rf(6CQJCph*(GcXsBQMx}x6s zas^28cP9hKWDg%XCaJZPGkk)Weyo_h$45iQ;`y%#kTMSj)~R5#7XAMZau~==i={ta zShW23V3GXehX;dn>0|-lT7D-6Sb)CpV32w_d5*7?+V>A04APn)?cV?Y@qlPBhAaIM z;lUuaa`GKtDc2u6K)OKEFB%y(c>n)*1;kE(Dz$e4Mb(c8kmEfVq!K}LFBKVPSTAHK z0DA=Fp(np5Tl>kg{pj#ukW$^8;J1g7qo!WEqEnfHb$ZNh#z;j(VwvEK{v3Og@k;%jh(@F3=1^Slo$$p+4<)MSbhz3UDMI{#@a~z-2gHXD_1^ zli=0K0znEWnx+SsFe@@TO^yo!*_7w4${koUN4cVAmv%+X-O1~M6axe5!DevVg4_f) zd+F|S6;dSEw8?PJxKgj;iz%*T8Kcgw5(`3F7HF#uAwh4)6 ztejpjpHX7^gH$F?P>gsm@PhNG_y7MBKr!OMz?!P&NC}a->{aE#iVv3 zqeAV3Mg_373=9k)Z-H}H@=pd220?K01O=T%0s{l4b|Yl%3=qKFzyUF4Av1$cqcVex zr3V9Jt+JO$p*sVkCC7BR!;I;SPLus2K!KGPAz$yr!0>zF{};ax{{LX9%phR#m_hIN z!~Z`l85kJq7x?K|Dl-VxEU?qDc+6l>e*nxEsW|}V8`V1afaE1=9@y#BHh|d*^$);)~HPY>(Q!d0Mk0P3Vu2hof$+dof%{{FJ=(n*nF5lsMaAwXR<(~c(UGx!wd!+ z9y1tCbY_s*sLY^K>B*n~ay=-X!Ptp`!P1j~1!PTaLx_&0Cj&lP@%FE2a0Jat!H=EBz`ZF>*O_qzE&*(IHUo;ZGvgbqp*X3=9ehPLtoo#ej17oc{lgNv1 z29Amj1|?Yz28mh@E0LQ2PLsRiofw@apNkLUuzB?Vzs2)A37d5i6dAceg-A1~pke2o zKH&^w%w&gPfyqY_E2W(n7;57Uw7mcSJpc*>P`0UG{JO$}fsJ?igtLs2^{6S@3P*~z zK}*qgXenC5Qkg-c{(%pOHh`vR6KIMygQjQ;q!g_HO3|PMU0>@EqVcntLE`sg28{{K z3>J(XixXP^eh|rZs8~fN6u82QC_uUotS%da!Sq*vY{1gOfp*<7Xy=z>iJ_i61K& z6n>m!(D?C^!C=8*28#uc8O(@C>XYqKK&d+}C0yOZ%`Q;gNiI;`%`P;{MK3h-m|Z0Y z`>|RM>xx><;EGyiCy`KX7Q4xJQb4uUzZ5^2;Ms0=wYJ_Bl{O4Y70=m^g=!wKt9gFA zB6y{f-1G$(7*o|X-0T9~o#X=D-RwZ-fy~8b=5(EljFO<5A&r2c8!j@IGCECum!`&H zsr>(cNDG_YWSMjcDN9cV#u=RqjFy@VOf$L|7@ZjYe*l-YPLuu8^Ff(7y&sfJGyEBy zCeOkDgQXV(WBvcvlWM)#w>UKZ|4`}0pimnZBvQj1z~Iox;4tkS zvoxc`OrNZ=!(e!`A?+k?@0vIA7{S%>GfBcsFXL`Dx#lXUWi0#$cM zh7Fbs42+?k5*C)4|Nqx=dYILBdRRI(F&J1XFzC)SWnifElvjD_$Z()8%R}p>BEyAR z;~5q&6&V+RLb~p~N5D@-#s!mQ3gsDBPPQqO-~cJDIk-qzYO#QU z%lrTTCs5J6vLcRzr3^}-CjE4Q%Z#C*Ze6*aM6Ra?gAOMHhhr0ykN5xokvhsC!d70*b2uu!zCWtruwa<(bA{0o)bg*;f{J-COrB6- z3#ub4-h)c5N=3#UlOI&-g389KdPb+oeN{$qrPDuL13N>mTA$HrvtP9!E8~aB2@T?m z3X>-^h%*X+$qkbq)QK@AO#oBL4<;XI5NBinbJ8|U{?MS$2$9KX0EtcZYm{Uxm>ke3 z&iG(*L!&rj0!Wl8d&1-mjpB?KCO>EtXDk4d3nmLRi8BU($pf1mnvOP3HehVn&dS2* zY0vcl(nRIDe`0!sGov5V9ggWMoEgm+{iok|W_-_g_>RQ_P~W8YsRsii(_}@)1>0*} z8MPQWk0jJcF)w@JbY%N_H%1Ap0||!23?xkd@4=V`O2?oE8?^YI=)sViIawi7VfqYD zMrlUF=@+&zDuNQN1~Y@aV~b4-$q zPSef280DtUVd9xyAkM5bz0Qk~tKRzmcZQm3NUz>H>N`WDeKROQFgP?ZIM^Ke|JUN! zd>v3>3Q9*7k2W8$lyCkqF}|6>(tag}W&9F`ANN;sfaHG4H*@@qU&8Ryex<~ZN1J!p zDlsgx)SND0>Bvw~qvhe?(7+(jXuncHhZB^*9B&k7f_pU6*}WMJ0&|Kp88{r87%qTJ z0%1#~O*gC_Z8E6U@~-%)$WZZm6$68%IpYI6P$d?{%wWyP(C|}{VS=T73WL?PXolB! z85pbx?qmB$n^-oYJC^A&MnDhU~&-iAJ7d8JscrYZ}ZvWuJSjWUT zV|uO53WK?71cp2Z!VJXWXFx@7IG1b_Sq2i@|Gso*y3>+_B{{La=#lZ2BlYzlf^Z$pR zjtmtb7gfAE#Prj?nPbKa2F95l3=GpB_%e!27YJdLm=??^sEuR-NGHq`WD`KTf4qR{ z3U zQX4a(m0BPxRmK+r8kUzprcOVT%_s@;|BF}uf4t;E3n~qZ0FXjrJf&eJf~0ghZ#W}2 z$Lkdg951y%&A)KQ0G?VCFOm9_%*%e-FJYLjkj*GEeL^@Rhe)laTnQ-Gf|?Gnv_5@J zIHL(ituaKy^cUfb3M{o=awXF}d>Iv{>qIba;Q&P~C`zZlh+xcOTK{u;Kop~v&}v^$ zfdI-%kowPDVETke#wMnvozo{&Gg>k;tkMN5oc^nWQEIwOEF;JCIZ=!Ps9AmwBo{-n z{KBWxPed`AF)j3+7R~6#G(UEFKs2KZ56G{u5@q^=Xht!n8L1#EWTsz=8Pku%G8!{#PA}+YRGco`&M1sper7_;&y}$9vm|kPK^LPD zQ+4a~hB!tIbk87_pEV0Xo)MXTBaYFVQFgjYJfj;^_1@_Z5*Wp&H^(!I^Hpaed4OU1 zig-qQMn{PJe~^6DTNHVf1V%fis-qAE)d`H^d{y8PLXa=Pp|T)>(Vo#0B(KL;`4vU4 zOd_KS*r}k(0F>}vto;82RO~l&{{P~^P;nF#){4_>6B*?gRY7qlGkr%QBd<6Y1Ba#N z{~tdYA;mJNQ1xJ_a0S^RKK*kdqbS%=kU^l*<^?n{HOv7STK*U0f6?idNsLmAlA!pP znO=~@D8^L26%^Vk)7K<1Dk+sm!W`Yl7Zos z*8d-lO@@1ZIWiouGW`F)-sp6NHE7}j+~Q|o=qY4ite(Taq<+q+3J<0R*XbU~j5^Z; z@);GT&q!vJkqKGKq5x`2f=mWwCy<*#Y1@OTnsNGtWJWEf^3dsjk{R8zPk;jTrN;js zKQ;b;03{u8DA+f1fE)>O;EVkb2U;Bc|KlYq1B1oW{~tg`TDty!0WuPtT|i9$RY(GQ zsrvr|D4o}6csMvV=^p`^5AGDHPG6V8sHOtb6S9=e4jexi6?akO^aFK_lG6oK8HFKP zZa<`spKg%KsHCOC;MmAuqN53Fr)ZjJXoAL_4Mae#@rvg^oDz~hFj^d7V6QgGcemK>7GB5LBU@!nB z2T-Hku|YcrG{Vry$-r2vWwEY?!^6R`kwL++K|91!i-FO}LA|DvlYybu6C@Yl;L!O0 z0;tLNV}JAX$7zga^(PtFK_Omo%JoUDmvIFw#aFsFKdE^YTv4+^yW*wh{|~k5+7%Vg z*%LI>K}|c&1sduMERIbYZ*Zmw0YE3Cv#lUFk`v1Q}lh%hyE{J1)!jEY*L$} zp#h3Hh8Z6}^6`v0FL>;HciOaK3|bpQWvL;L@K zHBUimEEp_aG5!BHy&{8ARvt96uff3P*z~^uV!O6WEj!3|2M31+ZHwt!G8hvXou-Rr zGS1@wrS;b<85pMT$z+sN1+_lpmoU8aWZ_wTHSM42!JwOt)`~{ zXs86#K9Hz?@xPhlB_l({OZWdjUaB)NfGTxM4h9ZT0a)wtudLQH0IaK0lm9`jrX#qD z&jby)Xfj*?netQp{}1%y;>AN~dv`ggo%{a>Xb{KZIk;f`0BXg9Tv5s9ru5UkS(c-c zy+x^#^N`X^E(T^$ikk6?ff3}fnOY1?(=QY=s!f;5WsHI(B2XKjk)dLGLoQ1BD0ioD=KHIU`t z+9jccQEB_JJVqIICYzt2DnerVpHfB@Zjkdq6@aA|!*uO3Mq?)HSWsnR#^h`YD&}pb zOO!M6F*$Nh4`^pJfpF|qr(bAfRAgpyEu4O!f>Dpjxe-)7C`@lCV-#aD?gZ&moo-vh z$PKBC|2K0~EM-stMLMWM1G23l^ZyqQCL3@Y0bFm1Pgkg7WSQfKs7;q+vAF# zjttY!S20R66-=D|riw9XdS5l8`1IHcM)v7C)r?AvIn(>A8Lb(!rk}26G*(JI3n~Xe zNeR-J5t##u2up_l|9@mMaDWD{rz_Mzn;-Bxz4QM+P}qPvdmfAlJ0Y%_(9OsS4oh&v zV^i|47!+P){(s@Y7zJ)}AzUi# z0BVJ5Os}bBT*c&93JOda5Jz)*ZXKgCB;~@2zd3b`N=znaL6&MrfCCGZf*lzuUSvX= zCmxK>xzp+yU2sUc8cvU?XAFQC`oEdOGVA|^=^IKJRi@vmXB1)z;hp}Wp0SK6Fm!rG z18!yhjMM)#FqSF#Ko%EdN>@5I@y>ZYznSBw4FiXz4TAuv{_gwSqVr%z~Sl$~zc#K;dxu%Mg?@&&9CU-|zVC}KPqohqlNG%;%Wg9^;}W)9FW z+lyBWY@qtW;?(~i7OVb$u;}{#0#pcEa{Ye*4ib=Ipw9WJ|NlUB>WfwXKm3^A%<-b@ z|2v4G_Kef-G%?08StU-lX=Y4gGRp+f($n`hGn$GtWHErt)SsZn$Xx~o4@Tps(;HeC zRU{g^{{O+0HL8TjF6jFI4^!5V7bL5J#Z>);AQ_qIH(D5__>AC17G@mf#}>7Yc;ik1KWfl~B}OlagV7%PIxC_5&jgT$ydss(ifba-l#*-gOdgTZhw zsIwz7U893h23#zHjJMQenC{=fsLizaASjP1OvjlY!R>Ky-ep*{6jXpIOb_T}6k=Mg z2nrt~re(4a`fDeI{tOO8Bc?A<`6X*1;)`#BN<9+}h@KI4{WAT1?%JVEv4p)APF-y_wn`LNvBPI+0AxfskUkw}+7%wJ2E$Ep|FVqecy- zNZur%wzd-FO%WZNBnB3X}XGQkr)mI@4vFBUQuOtfFA;QfCe z%k(cjj8EkuojMIrsRQlQiJ)}qe)KXb$yuzcVODT(Y`n3?v4QyksLNfW>EPhdbRz^j zP4gg)QDu5eA0r13s4Z-9fPop@9xmu(6sboRabaLk0u{b~4J-c1nONTho*m1y#N0%0oei#X%>g3zgN8f|4#trCNOqlU;z2cV)_3+7F{5pFtyaO zS_IUCdS8Vc3@o68s-wxk(#X!hQ0o$0QS;QgVj>r)_rsLa=*qxiag>3@VkrZMB?|+K zMGFJRL>G{^JpvTH7+7kwEEpQy7+5BHfXw-S1@3K41_q1e|NmKZfw~|}A|MN)_JI~e z$>?Y@)H5wavT!5BLY9TD3``bB8JH}VGO$>(fF^SpST?%+|5xh@wvY*A;X*eCri~t; zeiDX-KPIIw9MNHBVEWz2 zPyq6VbyK5)V-v%g=?|tdih>qfdH>&HSTp}a0BEkuB7uR``X4ACZIP`9Ep%aWRRw7R z&2QGENLN@SFmQYS-@<6oz`zAsM&QBZ3>h?g^1A}0zot&Q5@d!$)BiOPd6%ak{WW#$ zTS063UNHmhFdIm-fW(F>YrvFbY5*T8U|;~R zssImiO=p|VXu#wmI^AMAqjJ3lWX_L)v4I7$Oc%7!3><)v<+_bvf6P+`FJ%Dv#ryxJ zwe^QTSAhKC!Q{LVM1#~=A8Is!h6$_p|4p6s&@h1NsRZfqU~&d8daXbDxdNhA4itc! zVnGIghSe+*7(~4PZ}J88SR9%dRHg?!VU_?dcmzcaXaxqcO3;cs(3Jh_hyQYsV|wDKxv8LrBjmwh`&&&$>S#@LjkB~xKWXz z!LgA^MTZ4cFfhr0$8DOJL_mS>^m`%04*Nw6EWaBWHdycd&QNp5xWf7Y19PJ-gU1g> zh6j-OJ%#{F2L?Xt2MjEr!6-{xP;9|wsHZ=h!Dv(uvh?>sh65IhngnVVYlGIWOz>cG z0v>V}|$tf1LHT zmqb88_oEs#vCRnfC@9=5ni^+#|Nr|^N136X;YT%tfMXM*k98tL0my>-l-r<$%lPV914=RPHH>>breWVDQH~_NE{Ne8&W}fJeVB8O)bzWW~f?j@BbS- z!Ri{oQ~Dy_|2J6bDEl#hW>{;`Botx%nmTZ<0x9OLzsJ7CVgUo2^}YYUK!$>HU`@*> z5f3Jphaks+mMToon8j#1ec>!dxq9#%s`Z2a|1FXl3p|)&LP2W0|Nox@qM_mr9!xRd z)wtgO|Mwt?FYsWBQ3dh6|NqYc(V*c&5N-Y7|38bQ#v2|?F{~i|3r2oy{1CXh3{|F4_-VjcsB^`jo|8=>bb=0pPGE{(8)_~j&%1)r{11}oD#RDj^{{Nr;U^$~iJt!2Y@13<5 zF}<^P?~8d10;t|u>$wu*9XoI#gX*2Ny(D{wDZyzv+gwI@MyKg&a~btQYGx}}SRZPN zuztY609qjYgOOo_2Lpo&D1gD(iGiWgo1<;t`_Wr*{5hMo70gxha z4Y-a4#So~Ft4L;0n0~+$w4iHx+B`;$dK>WA4pNA4d;ebz9z{VlW;J+UKuz)|k%~G7 z1rG)W7D$NN^n$EJ(+{3YLemedOGiXMspqOM@X0b60BHlI<>!TM2C2P8yRLW;x3zbibLtiY~74Uv`L ziB~k6EJ2~9GCg7;qontIWpF_ZO(m?}|5v;Ox!3wo(+uR?q~`2cS*EeDSaqZ++@=JYFz7!5%sD5z})G7zKy z@NJyex`no~^Y%#c9x9l!RBUlr>3R`w^`jW+rj_I(JjJDPkq!`rd1ZjjC#OnQj z8F(zq`cTsj)TmqL2vP@$I&*NrfK;4td;edi2#z{^9F~FhBY`Rkutf_%$&rE8`~T9D z(+id|iUfH7UkWZZtq(PwK(%)1OoX*&;EaZ9?NTfmZD}gVDY~F-Bj9=p&EH^WfU0hU zGkC$yu<`!C1e~d?4>jFDb;c5K@IriV3eIGx&RDW{`hkUvE}%^H0up0OkTR7imQ1w- zoI*fxfM`oDfo7_VWsEW)qkce)S`3*O2Pb|L@ETmy#J?Dvf>DiHyc3%EAx1TGK#f9j zl?fJCEym)i#V}VbXVf+YXKd84Sp><*pbb7u#y7#yg_5ZkZ3RaMqtomiH)`yxCQ2o3BJo*kvQHGEj z4&h>H@Ba%jK`Baf`qTxCGK@}>?J}jN7p!9BskdI#TmW(U0&pV_v{eD*Uk@fj2!HA8 z3hP774d9FhE*j=T(k@DP&4+{`I7u16lMhr6tM~u;;QATjIs3?8iHI_En(o zX$C_{G^P7heiD8)3_ae5AzR-N9lmeDsF zTJEB@=9+IH+7P;62coti=719?ss(evi4oR(0=2)vtvP$_7Cb<*0NnmUvjDth5MYy-1bL$6$Q99sa7}coR;N*bn*4cYOfsQbKgC-N_bjkIMGT{9P zpw^osL&5Jv25|G_cOyf??}ZE<7D+AOWv0I$GR&Bsu%1yu1JszdPFnHe#XSaz7yB4E zUd&@)@L+NW#}3$nq!t4YCilkabJjCzf{dluU8+`yR+w8;U|^>hPgHqaO*)ZhjWCbyl_Q#LRp*Dx?nsj*>jaBN`Q0O|==urVmSzCWF76Qg4N6wCPx8lVv_4+aJekek66G?>M~ zz-V!dfw4x;!J*<9gF+<-gMwodqd_ez`<74^wtW>VFE)W<6cjeKIUZWInJQ+5nxLJM z|4-D&8GtNfsbO<)sO5C7aA;(>Q_JP>qt?qv1hi!YG&T$xlki}OLu{G_@4fa3(5m&a zF)Q=}8`J=r<*3zS-x8|Mwy)CbVpF9igMt&o{~I+Av_wD)fNC^A%Ssq*z)6nbK|oFN z%S$iq85n-ZGbq#~dx=aJxCHGwf}Cin!N6Ft>S9wRXdA~71v8ND+H8f2T21yXAlpIF z4f0-XPM{XZTOe;bHvB&U3R6(nf;#GsP5(CTG!6uc z6Tb$AdIcno0%#{ISkc4(KR~@*IRD`P58nU(`#{Ph1_lNee(Q*K7j5+brnL(naQz76bGlN2{dVTPunj^uJ zYE}kbsyM=+P;rVuq2{?(g~9Xx|7$fFr_`J@5~3SS1+e|u?dfc z>GQWRiYYlkM*N^<1~_Zhv?*6uB(-$Zs(4p;FgZ<@&r}q)bz)dnlPO(c={23hmWiRw zl4JUG?yZbkkfBB7UD(^*wleau!8Zwy?&uZ)Ri&Uk*P}bS!GrX)-O)XbNse>!o-kQv zCRxtOB<$!0-B(JJ7< zq{j(nD>7^VjjV%)gHVqPAhh3~v>n|7pdH;H3qcsPqkB5XDbUI~3bt0hvqZbXp^?eM zVgVC_HRxa$@We4YxMtC?WdiNlzVq9Wslht-@BiP7Oa;|ZyPSR}GIdxdFfjZ+$h5#( zih=R>L#7qU)gKt^?N3+K%N?!&Z-)h)wvc=qd>{~L0vfd3$l?KmgCzsQ^!^)+i5Aro zzDug3e3!gVWa@Z*kZHl|hfFK1_x@w3w>%{BnvtoXe%FhD*N#jL^_s6MDmB>?G&DiW z)EPsjYuse?1+Cb<$*2$NFx_O#2d&Y*#R%Sw3p!xP`~TlPpa@KG+MafcQI1IjpxyC%8CgM_Gz&68YdRQgEEO0SsvomGnQ6zs z>HYsq?X;zXfx!VZC}(qk5xlm?dOrh;MFN8j z$Uznj3@o7K0iXuDLlZ+v$h-q~AhiMWoa8|I0_M5dftC_f-(x=pQafGY9_XN&yNm`r z)%VzsfRuoRW$rO1Gv1xvaF0=(aqILM_ZU@FtYaB8tZNxOem!L90L}G+=4w5lo7*kw zKx+X`65BX^&I3kC z(4j`M$_zpk$?_@|$pXw3$t+JSH3gWbpLxJ2DFzMrkWLr9khWuXHOIU`v;5P4KVUq? z=rsM#YcwNgNQ2#`FTCJz_wEF*&*J`~auT?B& ze_a1xA)waFBcT32`RZBCk6(P;+iz+ih9kT zS}zzG4!mS!NGSKn~_*mNpC=HMg&7fZA|14}5hjZ5ViJ8T>&sU;P1poyi8l z64MnfF>*+N`>(ezYEAgVz_C$=foJm_20oB3kcw$Oj4T?+YYHuzT5otT34;fpK-R*n z^Zx&T5A>*o>1~f0)p$U2S&hyN3@@1(G^X!(%qXwv0`hM~r`i+HfD>p!_oXv~0B8?J zO_q;_r3M2>%>o}C@Bat)P8WCrI%jFR+Y`q5j84;^JppG&v8Rj~JT7`6oyY7z$9aTm zP49ZjXbp;=r(pSSPZ{Mw2QGkY`JMRx#&m^ej1u*~4>BwO4Wn8tV6gb@$j|^9_yF1e z`ys=M`djQ?C68CBR(k86+ah${EM<9OsUg4&vY=+AmWT)A z5AeVlXmsKA9EOHUP4>qQO$}TKzKk1?uehiXm!{;rw3pvJO2hG+@7E84l_&~)& z4FlU6u;OC}z>>kooa8|HKKPiM9cX+7v?OhM!gEGP`9_8buNN}Rczuvz0VpV5KV(<| zN(-Pi9_T2n=?9)OTGj6c&l3HpWtagvXbcuiprrhpk)go*|BsI#mx89jDk{~URBHZz z=+ML{^E#eEBE0Q@UG)qGrQkM5`4rsdW(RTz*b%!J6hMv*XFFhLv5P?^m<_6i4WR}k zUtd4xlnBT$kT<~w&V(A+z`z1Fa2JCH$UuBmC!_-g>tG>s-1ZGzKy++K+yz?9?)tA(6|oxs0M_FHVF?V z-l@}XyaY9yr+<6ND5n6bxL%|%Xw>Z1t^lQ1$0mjojV=rfpjDENO^hAWO*tNu(yzMZ;1HmVb9EPT%v2QC+m- zwIf5p>w^pvUO!}*QRxCIx^_;T{^J#+js_@QTeJu;gS-w37VrN%!5IfM+zHC4p#0*& z_$6?<&ud0acTl;W!oCF*R^I==&ICzcPUQa^O_Mf`}^!QxVR8|1E$>GF#0n(O`rCL(Vo$1`n5NV zVG_a5oa8`tYw$BSaApA|C2-8Tyaf-Ww!LN4R|J*7%Ak;8f9%-AAn_uZLBjk0d+^d5 zP`D>JO~3XQYysOlMtM*R09-6R{QmT?qvJK2tJd< zrs4npgqHvRz5oAPli)Pn>=W1lX`dLC^j<16c<9J5FjUWHPyj9Xt3RnFQvIJn!FtL6 z|JMH*7#$iJT)?3KF?ic2Mm07adj`h2w$mSdVpQgYL*>j<}ooJ zo%WYe%IODqjRUCh1zNvQtL$9?&M^-m%jLjs26+n9NPP@Cpy&s|4)+B zMZPea*jXwtF%)DmI5;-_?*YkJEMQ=hOVf1AD z3!31AF9G>=@c)M2j{h%!8hoI}9@3H!MN5bO|7-SXSJX^X1}%c(0J&$TBSS&WUE_+H zU)G>DN`?3TU*J)H&>F~E%~v8dnxG{rOg~^Q`_0I(V0yw=M$!5T1_g&EW`SRg3=O{) zGIacU$S~u#BEyQ`i3~e_H!>V}8PCA*Ql6os(v$u1q7|V1n+zghD~{QPt#r|=omqQ6x4^UOr`VH$v8MLmHL!Vd;Jvtv^%Cq` zD$+roWZ{~#|!jgf3$>IS6 zW8IO>6&42>3P5VT|Gx&$n>ETa6ukJ)!0p4t(KR_rcMTy8U~g%FXg9y`^IQe{|-El>ivH?xIVW& zEZk9j54;`;etaiLwfFz!;JNe~<`1BKx&jMr7?^4}Z-A2B6OgMx!2xmM8}OPBkXSv- zVXzOq|Gxpxm4d~TPgj6^BUr-fpk<|9VgYiFP zDlvh9;Z-9;!>ff19j_iT%y`Ynu;8^K!;0653_D&oG90i_WOx8d=dTX_-vBx#b8>;N zWH{*f(?<-;Y#A6CES_)IsCBT_0VM=Wuk8l43ZWXX#Nhq^?-p=Ic7n_?SR}Pg@L>E8 zp0Wm+3mZ~GHrp6vHqy=(i>9^{9*qCM^(Dw{*z`>oSj{NQ&I1|RpWcwgq%rwU7WZ`d zpNul1;Drt^_AoHKzQZu#Weh`ywG2bS^njm?DjDIwIc%zyGbq$r{}QQtw!5O%bMrKC z5@kMIQJ=N(T79)gKzJ#OU41$G7E4n^(zLDyb%|bpmy|U8VqgH7USEw!U7*#a^=hXp zK>O6Z|Gy}le&;7+HRIFi5x*F98J(uL{bF=QI18*8d~Vc>yVD>1V)U3EaGqHJbQC8C zco8sYB}}bnaE15({~JISffEEoJ$Nw_NDRpg&*>$<85Kd(xS$!kABz7IL0f@9kuy<| zq2P7bb}Jnl(ArBz6;LfT;na2u&|D^{iSYX%!vxS=Cb$@?mj-oHHhBMk0bVimqLHBp zR0w+i|G+!_!*51u#*fo^{xC`lLYgMf^MAenzha$k@rO~FapClsKaA3huG1_2FoGA* z*fcOOf()o=X@27U|6?mCRe;(e4owUi7Vxt8eed)Oe;7qU-9L~55VmM)zhRNo*5JYT z3!DTRLCG3))^NlB|B0Fm4YexlTR=YZ{{QabbeX@5lJMm^hzhvTqJg0SR0(_ke+MqR zK`!zB|Gaj3!e2%yrtKEf8|E`gaDZA~pg;l5(Tk=1n+Pf_Ku!Q92~Y{vaBRDU#iMo$ zO9uv~AB~I#)(05{YW8SX{8VHV_^HSUn#f`TmD@iR89w|}WK@`N5G2m<1Jr-~smRFi z;~}HOL`Fu9iH-~(ejjAy@c#dab-KhqMi~p}AQBU(QRMyq3uHmp;m;MnA2KRe+U8k@3$EYOq1AGu)LnEUGNTmmZ zyy5ga{}?qv`vyRs0b7;S?%=`rqZGvV{{J7IML`G4Stl}l05vl`7*xTN=TK{BfIJ2f zSJs^#@Sjl?Gi53}Ws(UXK2+Tb5617ZQwx|Rz{jEfO8h_LSL6Q$pyNOrZa zX0vw1i)03dnk&W?HQ%f&UfMJKsFiT8u#RVVP?5#{c=1U{RT+Nrm|gfO7d>#-)Q-ij zF`nT;_-zgwJu?P|*ZUb6YOOzsfaVlI2Q7lqPJJf0#xq_#mw^d%?6)a2(86(>QzoxfDHBi{{XyRsZpNc0kj7D z0j|O9oTp7+!^o7b3*JBB{eKR)KW~vN+yPx4i?a3?QYFplo$kQIq%I0>se^1q*z(YE zdJPkk1mfV}2RTd{(;r-55}3Z{Ju?q@sXr(-emOD}=$J4tSei00Si)Qd8$XxdK$J*R?E$`x)Zb`{3m9$`RB9{pSI) z52W5=HbW>lglk&Zw|M`55C}>N-v9s0fE2(C1IGwF(C)#T2O!5FTLgBL^W_Tf|MzB2 z-@?qK2x>($GpR7WU<8$bQcTaEPM2U|l4Amuc`QtFaWBAbf-j~9H8P>)BB+D~m9C(= z0OTZaUII5hA3`Fdfq@a!gN77K55db5EgBe@Km`X>taJJn7A9jx(djQ(m~=r$PP|^o z&;jakfy@J8i>CG$kaF@~u~1-BAjS}+JehCrA>r(tq|Dze{-3^PExK)}J+{J3JG)^;23 z|Ia+Z!2k+!utV;H^@AJ+8lZ-lc^_QlfzHGMEsk-lZ(`N~RYHzU%qliX49gmlx7&cW zn1C0@J1{VUw!eUeLhTnZEVJIb-NquB^;Jc(g@*V4+2A%ENbiqI1`bf%IW{r=`E`(? z0epBOsK^6hCkBSsHyJn@{xUGU*ufwW?#W_T|Ac)DsL2Xy)76K6W3jXT&%k8q&iV?} z0jl-dc@4B~rT$)!Nd2+T72f}EffuYb+=UnbiXKSDXMI)g!oCG$NX@ZNBHsURtp)l1 z#SI1l%Www9s^|PmURp9p=x{MK)P}Qfv6Nz9syM~|s8WhSL4OqkL)Zxyy|7cq>g{SZ ztwd_QoGTpXF>r*2vDj@o2^zcp9{?%_UP>?syo_X!0JR?~Ilz5i4od|_hK*Vb43-KE z4KR7A91m!tU8p9D!bU9yrk4>60xvBY6e_*gA1~BoU;;&(V-w>XORwz?wF==nFQY-` z)b!<3c%8_w0<00JoZ&A6I}{O$jXw3f}eqpMd)*pp@s( z^nZe-0s{{yY~fh~)Rcl}iAUfp;Qjy4g^gO<9Ux&23Yvf5?LHPs?LRyi--6Ba{{JTc z8|HPE}>i&bR;MdG7+-ZS^mm1l_z9o7p#BSHTqptJxeF)=VOFgCD5 zwk%G+!^>pC18PlM-DlYGgOTCFbQwM-2?J}(?M}ZBGHd_^B`EkDn;3ZPl^B*;TWdg ze+Ge<@eCKhjVxQ|Y119}nW7mtPM^ciq%pmvgjrzv6@GADdB)Eq4_fRAa)?DzM}-ID zb8xj;3)Zgmr2a;ygzHQ=5XxI()PuDpUaTZGdu%#i;&E2s8!*Db*ygv zoh~5AqzdYYf`hvGaRsPFtGkF@XAypxV>>|3uH}DS}Ljpoz{G zwG15KUg|&gE!EG&Q$R6LbJz$}pEE#eGX}=`#h}Lf1+X(-#xO9vn9Cp${*uKGG-eMP z5)9QiW*4gNqNicc&`{~c{s^=H5LA=ZANeFQ{e>V?8r${=@Bf#7P7e`cQkDc~9aswq zG$w7K$gsd7fq`-Q1R*AQL2#Q7<`wV%mwTrl5Mq*Jda`%=10g2UVCWJ-q~STF4&)7R zXUt+g!wOKF3RFmW|Gx%ab#5`Ap#Unz;Qjv^xE%!Id;h=K3Tk(0OgGrW$O;;L6=qUX zuy$rx0h&Ppl|i7+2dD%Cms|@OW`N6}JHku}Uf%!Dfv2Y$?lY_awQyhjXE+dkip8#C zDf{DE3*%|EnugbEH4nhYrb0cA*@e1+#-@xbLb;%0Q|ewK8$GADi7@Hvf`=@;|963h zjqvvYI{!|8Ai|^#IoBOr3^6hkfTjRJMG>fgo<6~aNo4vNeP$le$grCzlRT*F4N6y_ zirgZpTI0?T@`}Z-h9h7)w-}RA{mI~Ipm2u`E?VFF z|G)ky`xa0M?fw58#On(fSU{zaWy#Q3MzF4}w0W_s+{eOGH^dk~XA3+lj z7773Vc>n)@0AzE5)AVDKOcqQ>-%gW)^%Ozkpv-NN)XCt%cz5D-8!0AD(0Tj;O7$QY zg6ddMjN2zceNwxZ4=S-d7>__Y>YxQbj0eHv)o?Q&|E>U?KOz)7!RmU_mE*ytcPtgXaMch{r~?(9VprlgIl$j(S8`* zRex!>y#O>)1r4YSO9w{qp8cO{(122d2GlcXK&fqS00$HsB%mzq8Nf>fKv#~`zl2CK z{bbwT01hw^-;;smr`z_1$txLHK=Lo@K?m|Nuz)P^VB8PxaDxLN!C&X~o$U=T<}+}B zn%gza$`zo?pMKu~1>}BkjDjwJ0tX~G@D711V~}|sjQc^Yr+NmkL0QrjpkRT8qzB_Z zaEOED5S9pFTCxw^xka-CJcI}`&x3IvxMlt_W_ts;ZvcudE-w*KlBr+isrS-GXnVu! zg$x~*&?NG@k)dJwg??rc5%2%Mz}x7drP%^dt^nPSAv@jo022pjCsU@>^aMF3F;!56 z9R%;a!HlqjkQ&=|`}EmzOwv)r#SbXR!Rgp-dqe$$P#sX#28n@NThPq_pq3%n(Q4Zp zy#N2~neH$HJOijE&!kpgQy~r753=DmXe<95<%$1YLvwThCE9K z#uSF1s^G-L@KSYqgT+Y(mLEsAH_Uj+zyjvKWMKU9bbG@_P6kF0A9O&`PuA@X^$o5% zP(BNozW|lL(G#K{bfL;m)$P;u6_~_8#g%p^gMR&=-xUt?7&H=`riUpofwsYyDKN?V zgRW%*w;1<;3mizph@k~k{J(g9xJ!_iqLUP~UEPfg+O_at2OML`PJ={J;^cjB3XIt&Aq57gG6fYD-v7UHfsZHlmVG;rr z_RuN~v|I*O`RDQNu3%VjOQDt=V*Z164R$?Fx7)r32HLcgNy(r zT+qz>^aooQMWsL^1d!2zM#$&@LkP^y^O{V?TH7ap#u~wE06@cYAPjBngRM*Iv;eJD z^I$xCaJr5blNRIl>ET*Ta-f+GEv9&o%Rq4iRqF7Ak)gqZ@hs!?H(E^fjE&QCw3+5H zoqjl-M~6ug6rbS!+=DHUg%fT%Ov-u>m>4Y@AqUVjIx|QtWM+_gk;$L{^23CO3lf?8p`rr;N5juQVqUe}rzyw;E zd&~fAqnaVO@OFbxX@+3AX@*Sx;ANVv%(9@qM-BK4QieOA6KFtN4J|bpDr_AT|G&um zzhWaJLmBv1G)IPl=>|qj-He9Q_ZTsOSBrvT3gi`V!T^oiCxF(ZLSv52m`R5zCll0z zQ<)xN%w)r1(a11mq9Vhz>2r*kBm@#Q85rx2eg>^BKK7%YL1Fq4VZfOzFxi66f&eM9KFH7wRm223VW?7* z{TQg}nW)Lh@Y4=-Ve7ZOpbYBR^nZn=B16mKg$ynA34S^n(hQuAP5-BWik{z&pc_kb zz%8qqDsV4d17s%1d{C{tc_G8ZL`?>!de_U~VUdlF4E-__6&bp{|9?va84jAA1x>hs zT<85iS9iLDDU&ED;z7DQ6&c#67nm|BnS28m<&I7N*ML@;fX0q35*SjfcY)SDXM*Pn zEUo{4w^m?a0QHYN7#J)-y$6uaTAL36^?M(Q6x#j&@7Tn!q|=sxv3o89gLWtQI!soF zdH)Y|+A^?q#xk&V$}+Im?|fY`UB-+_(i^&>0F*Dl3&Wc_7g!{926!+Y1b60MJ2HSb zta$(b2fb4Xe9$4g#R3M7N=`X#R`YU;g2JQ!F0o!(%^B&rNrdIq|BHsyAO_y25g z?Fe250WpZt`~TlN(|4FL1&F}bh=EoHLJqFUm^fX=oXN~DAJlGTcu~)=0knkF`+qig zDbkDi3=E(#N>JbNMLoj`iv>&>-v9H!8+u>VGcZ^*fcRP9IvUh(wP;{C;Qc>0clrWz zCR0#yfUgx&{I6J32Z}}(8&F0AFY5uFq_$lfG$3;V9QdFG`8SL~jl2Ut7#Tjiv||u> zt;wM9`X_?~XoAPFiRsHrdj<|r(fiYqK>`%$77G}_=lg>!_h4KOo^b$`Nx$ziFlha> zXW;0xWniwn(&1BxwBv$;`@AtjfKfmw%(5p?6JfUN@qXAMUHgG1B*C7?x1bu%7M z`jyB~5#H4p2U@@cO30y_76zaNOb!1SG8*L=a$Z+5FuaauFsSvit_bB|s{>7A)OvbX zBx(jQSjPYVP^%ECV^zYySYI`hL7}dceM{9=wI_9pS66ud&j61PLB_3^LDTjOphIzg z9R!^_l>?5mx}~eZV-huG(iNcgkO$*3$Ve~iVX%1JL%;-Dj})y`Q08VNyMV&#(Us8k6N2Jbu(OIDmSX4vkDtEG_^4x485FKWJeQC{cmh zMivW1K7fuow6tXq0EZT|jyb#! z163Uh(5*n43<9+bwmMD>|1W^duhdjh=cwQ7B~q)oNd#0T+Bz^WCweh5PLyTfm?;1M zkEQ(oAJa>$m@K3qm+msDfU*u~@ejiK>Bp>?^muADK>^(u7wTnOFwL4tjwcPAghA!R zkILy<)=X0Mpm+ksk@x>B@BttoBkJcruCThppJ464!0@AzVFzgD&1zBS4)8v3Q0;5> z!=cvZM?kISEfLFjhJv5=pfz_4Hb3JTB&`24Box17;Qt*DN~!;EfTGWXaSyngS%ays z-oc^i{~6H4m-Qb80Zdpa5R%1X{1^$glzASMUFS zpjWDa@3j4ZoQgqhGYX*ji)(i?0tr;99S~Dbg|Np<^_fODL&i~+Jg+PI2(bQ{Tk<|IY zgK;<5la2BW0O!}az88mz) z@XPW41kmCO(83GQ0*vVi;>-rqW$c-F0zi{CHMfi_UNGO#Lsz+u(Y1O+NMKt1_J&^^ooj!Y8MFI;C9nEq!D zvj}KS1*aqEOg0XA70_m%y5_|dHIp5*JQ%lu$1*g87?>O585nAf7%n(8{<~3Y4qEx} z?*cUDnH%^Zh+Bb6KeigS7>lDGB`FeUjWrfp#CCg_WL(zyTn2U@G2kBcmQb2 z1ZZ>`G+Jk|K!5=>N(~yJ21QkKGJ^zYfXst&9(W3<-tBTleaGVp9c$1k6{Zum3Lkht zMH*H}55I}sQHRo(3BPkycdtsL@TU~mA%n?>gTFST3_f!1>v z7;6s5>R4p{|5I};NTfDFRwv~30XtAx7x3CiF5tDBU1d6h!o*C_d9@4)+A9PYEHxPf zYW{fyfDRS3O#A;Id`-$=mY0t~g;K_U)K|LYfkEC3sJ^8c3!o&W!U3E_kt7&t5%I2b@9@{RHTe=NAq zAh%GSK?c;%YgA>(X;{jTG2#FJFCoW3r6prut(SB~D2J47!NmIie`=O1SA=S^)lH25 z{{vK{g6gX2A>b z|Nj!I$;4H|834K$QpEdzwCyw(CQ-Jw#})NUUr(2IVOqlq?jTNI;KC#cS{G=m@IeF= zKi>cUg3q%6B~1{vXzKN_Nb1_)!MF)L|NFWTR3Ac)jI>DVI^n^%3EV2OwEzDBq#lGp zdTJSbbS&-v|C#RK$|Mb1`RB@{tqZPUz5oCF0a68uU=R)3f$I)IsS57V@BlzTW@;@=Sm5l2H`aLBU?6__#3%)LSGl7<8vFfcGZW zHTda3ij-)`xcCAF(809^)z#-8fr=aN|MB1nLW>0q2B4mH)pQ00(5~n0{EwF|b(1Fc`DznKLke#;h#m7UO}c?&$d6G8C+p7<#OCngCHAB;g&F(eTk@%|qUO3DnN1jY_ZVKvMXrVD#8Db`yw z^(I&(bqoA_$WY-BZl~T7w#{>pO%MT2U zb;{ipRssx69*pb3ZK;la21ZMx|NlYal|~E-9*pZVL1ux(DvcNv9h&~10P!u7R=n_F zTn}ncC^Ni#$WZZ$k)h$0B0~qL+X7y-1)bIP{{M}$rfT{%4<>oxr@KMzG#1c)NKmL) z>}F7z{$Li9sQ&^64p7@4wAjJ>e=K+%m zsAG_^jAM|PC%_)NbOU?iPYmTdxfKI@%c+S8W z(!yX>tL}WM)=MFv)-_0^=BSZKt)}B8&_HUXjyeaZJgQ|)5~7}P z8uc&!GdR?0d0qo4sCj86Qj_8(Qmf(vK5^c$i2<}0m&MZV|NmM~=4HzF7#M4ly+HSt zgD=;v;r_6$HaSRS252}n`@_1KS&$RLEgeKYfciJJu8De<9tC^gBp1l(W;am{lFugE|Nml050f&Z#Ola^c{c;eJz4}%D( z7_d3;|39b*NI3TYKd2a({=gT~p|nU~04ZTfx|gf#Jn{28K#?@f1)Os!~H7G;6~MN;0)> zmU^Jou(j@vdQJ@g?=;#otg+a~AOQ-VP_^lP{!DBfpzVI(;EC~Pa^V1l37EISpGi;7 zAKV$X*vDW3(qVJpz8)k%E7ZYizW6g~Aatk%FaE~zEr{S{kQM~2Qow51jX=m~lYIjNi@gG9 zugn#A?175G^t}uM)q6n~kxN(nRAvzH{{IkM41zj*j!g_TpoK9W3}WCA^8WuHKFk6- zoXeq!K?YQ$dN3|+1$ou`|Gx(y8kAZzZ-&g03*GhM)wk!AXhV5SgA=g66X+nOsvn4%dir(X$SDg=*u*nsMe|KLO8KpwY95McNX9%O)A znFI>RA2kdSpoWNJ6T=En^Ac1Ic>fOo4lrK{W_y7X6tt+z@c!=`I(MihKT);T}O*oSz zxC;xqFV2oZq5c5_M}pIIu?Qx4SO;{vPXtpClUwif1rd+zX-pQ~?aNv|hGWpem_Xd-aG90jXU}X5ckl_Sq`)6}AgTzZs27&rH3?|`oZq~hC$)J!u zhk-GChJ#-99M>0C+x|ZRr7cj64T^6M##Ts!J4Aq?`UHc5#kc?UA3$4OYdsc$#&TFd z38SvTR;NbG19ZYhjm2}&c$}?{rKSMrPQ^DhngI+B4Gbx@ngIb8-~PX;)nMORtN9@y zRI5R**6VQv=sdbquLg!hFP;X_7B0soh5*a3|4*#0F(}kc@e-*^2-TS!_WwkU*$D@$ zVg`k(Vnxu|d<-tNa?YTw79pU>0Hy5klMQl~p$r_gnun)9j$%?W1T`iZSk_pY|G!|d z{r`db1Yey-a|V%x;tX;N!x>~kH51fAIU3|by&Uvj{AF->aeaDK3X?Q%`2QoIb`hwA zcxgU8E}BWk2zuE9sQUvs%^TAFfhKuS7ra)%N2gE|ypmGH`@eJJ^fl2;89cBN9#BG> zt`Ngy3hFt4+zT4Mu}JEj;K4W>Tr^ET5W^%1+H?kz1YwJ&{v8%ceGDFqv%%FgNQ3wP z{}~`T5ZfZDcY_DxY}4sGVwm(9S*O2<^A~g%L8a{y`!~4H0IAPa-SI4n( zOm~T8QsxCW>p*LkfA42dm|hagWEJNKUf29$FQ`k&z+(NF;TNcS2CW7MRn4F>!l8*J zBcz4#R7eXWQ%V~X1E^F7sRsoUs2~MZMIf~v45(v<-v1pHr}M-yDKolEH;7{r_tXKE zK;HkI!5a)}szKcrmN}pj2a@yL!Hcy(tK~tadjEF@cYh!gX)Fm4b)X#W_ILV(I3{t( z`b1j?2L_u5j0_de8TgXf7?>u;Ge}rEFfoLjIA8~Al>PY6AYiM&$PjSCNiN`oo83fv z28N0D3>=o$|NnrFdIW_k7=w<2^kiU}$O*Z4Z6X%~3+P@@kVh?+LK-yS4gR40_n-~_ z4SEbL!O&g$Am2mW>;&FW0U0G{c0h8o<@A7fCUM4v(=+0kWHc%@8Tcl~F-ZKhV-SGa z0B#e6yFm|40CmM17+9vSiDxnq0tGlMkRht4e~M=^sApmU6&vtDCQSx@$0o)#zYa1K z{CdbxVbAdYpS{BG{~+HbOZ@+zZ2A9xt(|v;bpwM7C>>cnU|_O3)Xz~Z!JtrW$)I5E z@DFsG3}hS(0?#Djqyyu%Qi100(Eotb_ik;%dZl>fm^0miA|MyvP#e;KeK zuvB2+_x}G+z~;dD|DaYVC?LK6{|4V!W|7oq;K4W*ydrV>heRfc=?O_p-1Xq)GN55i zkOM7}`fhkIP6fLH)SLjh5K_xHgI9`zGB>0)u?KfWL7gYiToq`@%KN`FIDdnD14-ZZ z&_Rj6;LCC?lKK{SFir)J!g>FPbv0%B3OpF6fahYo|NrHH4x=$PaDj)>*piui811G9 zCo}2iIf5H477G{>KxH*3*MJ5JJQ!;rU2Moe0|%s^=?D%P&~8~v(546u_G6Z@3_PhE z4SW`$TT>L?>eResUY5wg!C13Eszl9_>H`iEpD2Z2fs2EI^D z2fb9y2JlU>(;ZTn%9yNDr|(E%k_FXVpd!Khzm@Iu2PsTiOjd%^c~Y6=m?mwUu9M0n zm-p!-D0&^67(UduJgxu-%mUEiIu77!1~jSw+8hjuOz-~=;L@vFnLz>MMNpU7`@aJ? zbAh~R(Eu91wgH!RuNE>?z;{kCGE4wP3TWTJ^bZ_NvePxwnYgDL9Dp2+1d3Bo(zi(J zxA0(`2w66($Z%nLK@7O26-#4MtY-x|(xK@;d}zX=ss93`K%NM0pn^<59$EtBa`3KL z=gSpgTN~uO|J#FOHT;x=o~0#&gT-A2g}SZ56=|y)z(rN9f~gLu%Cor3pkXP?pflkw zg9<3zYaL8=EFHucSU|Hrpt7qb!BwZ`@h%ZiBuqb(#-s@w$pyK0c+>~!07CJr1e(HEfeeWoX*Ga2wCYBDl59A+qKc+8M9 zeNH-4Bqq?$K&J{%RAlJz{`VN%3|qo|UnbDd%#bo&B9lp<6`Yf%-_Zll?Wbij8M1;W3&0|vwGZC^PdHBBlgT763XTcz z4Kt95^%U>_rgK3P{TkDC_Av5HpYV=}MI5x^6tv8@lVkfr&>9{~uk8yuRku&q&tej1 z+rD5%76S+D&WW@vCNF8wnJKnP49i|>?pOht=3(3c&Z=JEp(S zViITFzQDSA$8_#&CM!m#>2BFf;A23tnd~?$p6?5()D&GY{Z2NMQ9aie1_sU}3=CW` z3=C`^7#P?)7#KKQ7#KKN7#JAmFfcG(U|?XLz`(!~z`(%D!@$6(!@$6L21?&yU|_3Y zVBns^z`$d`z`%2afq~b8fr0l70|TD}0|Va{1_q`W1_tgPP=N``2$oJ$UVuCeW-Co; z_^Ii!V+F|fKecv%&JMQ$Nq{k^YV=~1w^U$YgYc(s%VEk9;{9T&@&8Y#CYzlGCxfJ8 zBcI1~lUyc8P}ieVi%}v|lYwcb7Ndms|G!5%wHO#WKsRxNZUt9k-%`V&!Qj~RcTFfe zn_bN*BN5O|YoKwO8g>na*=`IRp=@k+j!l1iLS8`R!6y-SGBAPk%~oUJ2zkb4H=_%* zukUXL%nXoziv$M4dXOO&oeaz~(ik{GIp7K%K$>c~oJ2rJ8e23lSk|yMsk}1E&}mEnYG()~d2^sbM!@aBTYX2BZ%( ztPFBs%_=RC8V-Yc29V1_p0nA_b_HDt_2)z=E1O--D=QI;r3{Q92i33|fGlR3tQUqUw-1^R3~~5C z1?~fc2Lxaq0LMEh;j)7g?yny(2hMoKzyJzmaKdy0C(L>~$EII5P+SL!0#M3UgQRRw z`fzOewFPDf$N-B31|yImu!IXrKTvf&pxgjXKgXcy2byqaEr+F_Ul|C;*TYinuMn8) zL2ImQL9Pd9yI(di$6*itUot2T138{Ug8?<${rmwl13ma>)T3m(pBK=A-voQ`|6GCa z0n7tGr$EaQ7DzervjyfM)adw`19tEe>k3dv)`JQZP*8$`4-|}`0>!cErw4K{f^!9% z1_LMyg0dt?tz*+qm5}3XcA#ts_EiG|Bv-s-UY&H2Rnk4*UKA78({07=mYl@;}67-*3QN zh8kbr55O!21t%!ZK+y$?CQw>&Z2GAF;P3&0Wa280h_`Ty%2>>l{q0<#>O2kIT0zNX;x0X$`Yb-kW%(n8KjgQ zh{$qZA?*QpmV@QEFKqbWjQ0HEdPw7P57BWoA5L4HX$@>>m8du zXW(=xJkNi2fdwJRk&t%YX9MgB?z05`(E9{$4_I=5%75fM4|SDe)2Ayq9R;t)KY?-q z3n;%M9Q6s33osg=pIX3C2CelF^-4Vh1E}9Kx_Mhs`YxL;Q#Q1u%#akpjfH_vh>3m?3R9*f<4ZW zJzD>vfCx){P%H)aaz0pe+Cc6ccWh#aDO6`ra%lP_P^iuz=+MN_qQS}F;L!9z1k?kx zRGK1Dlj*PyG*aT&^nsyhF{f9DCZR}RVI4EO+=Amjw71ke>^lGEjDm;~!>9Td5(A2Jkx7W;sv zhe4xz6CD`}Ha9YqSubR$04*(kQOBULQIVm<`~Q0IMrg}8h6<3Ft%4#KNL`{PLoG;O ztwWd&$PCbdGaDU2>eqn>@j&anLF03vK`Rf&WbnKd)QkuPTZM&;mJA#WpoRD#13(6W zP6Gw)6+kiwJZKLIYK9JwLEiu0P6X`-v`AoR@cyp?9>xL33?uqcGoUnN(%Kqo<$=^Plz%pff?2y-4110(2;c_kWe?=5^rR zXK8gzhK`W41?m|jK(nmg{~>pZg4_>U774nZ8??=;BYFEmkiR-Lw=Z~okf8x|pyq4n zL7LNV)G^6|Mz%n!WW4{st_2??=ET4NQUsbjn{My~vhT2-$PNsT_J!OG!J*Io=F}w7YniRRWD9`91Tn^ zHoq4#+yKWs=-M>Kc<_=WTZIK|pwwf%kf9(^lR*DkkX4|S^Pt)KpLQl06Jr@TEbUBc z>L0w(_!-N3_8s7h4BDpfJ%4x9uUYC!i}J%{GfFM zuOFMt0NuhhJ*S=+i%H3wWYDmB%fSZe>8QP~>=7`*?>yq&(FgDDg= zu-(CARS#Zde30S5uZ0X1phd`_F?`TQWAG;A1_ln04}LQ;OaO02c4SxpI+P4_>em7$jc*VF>X4F9TkPY-z{9_EL_40Tlb7Yyz4`(a{9^SfJC6fgx1W z`<|^Q1Cyma!}Rr?OiL7A{{F)d04k9{bNYc) zCLR{>_S-dGOp@-PB5ncXEKpE7@cu6ao;lTFSRAezIf#wow z5?pmGalqjl7d3*hnwGEpz%IFI4O$)Hmk?<7(q@2K@N3$ixv^-GWg{vpmE zNdWQxJAf<#2QO%^pTT}c2^|m*p3M~hCqgEXSvkPjZy`em=>A9WIjM~d4buhsn9LQy zb3b6q?=yh%3S^^{4f_HO83yLb^BDxDXY?_}g2v;2TANsaCqbYs0q_PWP6lQjPS6G@ zCP)ncx_I>I?+S~i$qOu!CZ6zM%m8nLXr2#Rdj(mCjc_$6PYFSmlPNPW{HQkh0GbqW zY+~L6%1V$4PciVssfeWmgIIm%;|kD}7O33#QEl>LdPF}{G~=A0_;bqoSO>KG(IMFeQ!0=RgPW8eT46%*|stEPX(fr<(LhalHA+A(On zjALN1l*3;@404H@3~Zt52kb(^f~31avqVm>imzQyTU%Dp+bUFuu6UAOSj~sg^6iz@~wN0pvK)v}UcQ<~2}j z5WECX%}c~mlYwKx%m05GknUU|^hR3tG6v!0=O+ zVSxvuAGoM&v}IWEGM1sjQkG!`z9Mo#J%e0DvXjPydIk&c{{r9*qM!-@9)84M8qXS@LpG}oX?uYtk}6i)E4fiAeHdElzkD9f8bX_GL~TmsH(9!z$j6(AVj0q-Am-hUxtp!wG2yYmV0XbI0eb~FKrnrYBe1KKv!M< zo^4WZ;Qjv(=vV|sP|f1~|I1oXedy5i7reX3B5C3W55^Sm?6UX&-zuO}BOx>QUs@sR z{(c`3)B01k04=ZabfUybQ=rhpq#+omw- zv4f6tX*jlH`s*o7p$gbaVT4=X`%X`o$`ohi4elv{N?1_625JL)FnWPY(--#`7+%IP z2sFwuXn-2|uNxT(UW0024(4UGY5@V$e@tc4Kt!CzG$tL6N)1rNh3ZU?nZ~3ET2VKB z!+mCv>2sz*R!xD7d@&Dnnj-@PsPPUmdZN~j3$){mFa*tBC{0Ig#4{{Qd7 z^qA>PG7{E@8CXEOlRzahXu%X{3pQwt&h!b>nF=ts(g@685(ORX1yTx922u{H!z}Ip z{|BxA1MLojE#}eN&%gj$Oap397iw}afR{cuF-SO01D*cQ0q$eLmOf9fn89Sr=rn!X z4A2_E$#p^M)Bnz3l4asaoGvqysYr+yym0$PJ?LT>P?62)JAJ`SCUIAA)$w9J!wRGY zlqW!CiuZpW@WPT8pq;|tmJ=sqx=oz^XC{-B8V|Vr0otDj zDfKzPD>p!)3f8j#tTu4E%`7IVdLHnSE^yNfY&HkDbq%|R1G2Kf4ZODd#r*#_Uey18 z0Cf}88~<-W?EtSncrpL~hZpt#e?ZlM*A%^||NjB12E1w)vUrG51GIX{VfxisOo2k& z;NIVh8j}MMh3s3WTg+yXv*Lz0uErz)Dh_rW$Wbr{TK@tag5e5o?SWzv)PDnQ%b7l5 zHj|SY7bM_nOgf=|5&O8R>C>`#djdOdLQPxxD|gfeUWXB%t?y zW^m+y^1nrcDTDWaPE}A`noRGR!=wq?Km~3P9Q^+Qy0X|&gOx$2W}kM2VoZZK>M&A87BNrWSC*?z~BJd>-hU2_zH#vprreIA;XGBWs?`6EoF{P%s$fv z<}!)JK~_?LN}V6Ipq;SH0hS63OrU*ipjB1B6&X4}!3~PunYIiT6Jr@{JQ$t9`&eGo zGJsaRF+hCJ0bb?TY0F^oqn5z~T5~o`Z<)(vpJ`E_c^k4U8PpyDVJ8NLMoxy3mzoUV zt>Lw7&J}@f3TB`?d>xwpzX&#=4tpEQ=#MVKLA<+x8RFH$=r8$EGXeDB;rW3ekp6L1i zPh&X4l$YWR9TQ$MaDZxjP&w%RpBX%c12XJKIYWeF6Qc?!96-$wSQtzUX9$^T&Jf_i z=m@SUUz9UMfT~YO7_ftrX?^ucd6ggK3<)peO&n^nd^I}F83I57;@HH%0os;a_y3Vd z_`L&s$;WgUK*{aJbOw)?<_r;_r3w?OL|lkXWYR3Bqd z0IC0J$-n^815@k$|HV>}I`9AOpcYy^=&}t3O9uvKOB)7_T6-@M(01{O&I}nfbtDoy@@TQ<))RqBBFzk8)5ia0<8y2MPg)CPs%B(-|UOlrtoNeDD3A z9TMvxAA>V9Gx&1B`umSWUd&_2fEO%v^^hdv{hu8?8u6lzAp;UT%;203iZet8aR4Wq z`u~qaK$g6i&*1Q)9<))G4P2_csAq71=w$+D643dTuO2c~yk=x*cnwOL2@DLd^DJLC zGAww#kYUB^>5&VV#6#rgF=|*lFerdxzJC8Bk;!)%3?|1idU*e51m|0jA3-VJq3O>K zn315CzxV(D3qVbCP~);@iFSoW(j?H5G#wAd@PpIOEMQVL1TU_`;u1#h|NkKygP|$B zp5t(Z_y0dXrYkIDN=4qGQE4-M(n2O@(0ZpzP4N_P(emF5l&V>#zgWoBAXEKc?TP&X z2Bzew|NrZM{t`*P$G}(}#Q<6^bzpkSA|?e9OPl}yt@ko8R@yKqg1X_3O$<+_Uswb> zA#o9tlh9xArfE>y43u-d|3BP2U12ek9n+J!(-Rgm$w+zs{~3#JghSJR(79F97Bks{ zTxO}j@ZbCY-#?&$00jud^goN40@OgY8K_nR)o7q_v~FPd4?0;1R-=Jxvr3!kMN62B zL6;pa0iT|7Z3z?T9wf1)Oe#{r;FZpxo4hO%Oc^RQ*;PPW#J&Ih^PC>Clu3!n+H`uw zQl@WAA7!T(EMqG52X%sBn~0Xat^nCfd`-%D!*Lqp74LsP!Q&F3nsmC23zNk3faOeD zLjNI^KpnJl`1iYYde3quIko@b!O$0V(8}T8Z*XfFmToQTOaeR@Egnw4u$)Pn@x$~t z%bCp7{(%$5i#lk1@b4EWGcv#`MNm9=Fj{0z_gKMXr1uYIEu=p9_X}M2fP)&EctC86 zq)7)n82w*PU$TM;wAuaI3Z@FCpSIHjRx(N0crcoSGvJFl6KFBa!C?J|!NB|9A8_OA zN1cfW=oUXv$xv~ML8<1XaYe|n19tG?sCw9N6s%eU1*`QwknUtSGgauL$lDAY~uy<%;(5dKRP=X}^kS(BO5a{6~7wF+;2O9RQ)pV|? z)MQ)m;-1Nhieqe&DK((m5E)q3V0E4j+<8dWfpW9=zaQWl8D#a3I+Fm$roS%JC#+(U zNCEXTe#)6dfQpidb|wv=F#j26QsKd93f`#(j!w`R5vcrvMk#0<24w0_JCg$Mf8W9N zG}Pn+j!l1Nz)E+}mUQobzZIwRtY*?cjOjVSTnTCyfCA*jK9d8Db|w{|d+$I&54zGZzUOmYeJs;AKdm7n-PWmkA{&!nK@7~2!PVG53NkWH{rNRW%Itr;}H z(F$<^(xsn_Q$mn-e}!r>$TixTTmT&i2lE-oEU?cK7#u)jHK0-fRE>ent!6L)o11zY z=Ce>GP|%W*UQSdTVCe_O`7)lIZnBO^nXz?x#5yKh(C8DWWe085 zLHCP2^zi;)y>|MBbxbbP4GuDLOc$_c=A7K?&0Y_hwE~@k20D!b)S7Fw+i?T5bF{|R z!@;qUA;RVX12bq=qmg6B9ZN-q3BMabS4uTMv2Fd^mx11hZ&m^by>mc|du#(9S8EPgoGBiw9WM~0R za(VyP0XG9W5*a4cBtH@fshQ5Vfk{dN#D2lZAOO0X>D9ykJ3wdCha|JvO>f9!R+)St zlXH6R1||;B;MVVj|6lx2{LctF-nDt}jvJsYjE+r=TR@@ttC3;B?}rROK*Q$09T_gz zJ1{W+W@I>E4I0~RWO(rVAj601sOBdi&saD7|NmN&i6a$lWB13`I0|v(FUp6qwn1I5wen0ybs|E&!NedYoCOw4tO$$6Z z*Qv-b!BUoi5wtg;l8ZqB)V81QvXRM5Mhm=>xvLSfY~B0+-#|-y1}3mNjp@@iGO2;i z!>R$bx_>(|lz_r*(m{rniQtPzv@ECJ*vJ$zT}F(VllvgUhu04oet^e`9X2tkf>+~n zFfIG_@c)i!_RNyZj0^(PCv0L8_q+)@)~|WajvLnD4DvO#(x5|Jj)r?OnAIdd2mr~| zFnc&y&)IRqp@G2%G?!B@e{g7cojcouZZ3ckSW}^%P2Pj>F!mi?Z z^Ape}T~L|?rB6_r1f@+-n*4E)p#zjIL1`3}Ekv#ssneW*NvLkmYEWfqRyA z4GhfI4*&mGO=*4t8XdBhWni&NP-9?7n!>{lQ5|qo(Jj(b(`5;3FexIr{PG{N5q$BWJk>Lg? z+QAv{;r|_z4T2Rwd9I$9fdS-<37I?Yfa%U155V-w9XCMqkCQuIfX*X=PCtPukT@uD zfC`WrWe*33Mg{>;!y2RxRC0o{DYVc_1SJfZv!U^JXF?(*-azpM8fs?*c>xqj7L5!A z;D|cN&;d>v(9+BMzv|cN3fq_jcb8&p@kyD^yAx@ z1W_`GrRM*Cl!gK5`Y(`!@CShkxWBX@kzsoHb|yuzBalO410*ECjv*l=z%>TpkWc~l zHVB2pA1Z_d3*nGZ1{bjni44=*cVG#L36PKgJBEai09#BrB$U8YD1<`d2NgnsgK$VF zK~`NPGECpT6H7?^fP@6tF(iZp*kZyV0X;DO2=z*qs_sEm5=h5PtsNggWeB*Cff69oK;;Se?m_TW^}oWJ zZ0QQnIr~2v8BhFJ$atYPCAz|5A>)Z32N`etc*ywRCnMvFpNfnhemXM#@L;q7=Nlbn z1_sc4mO~@Ml!8pqO-zgxzYj7t)LSq9|Nr+x#t!R)4EYuH;1vKWHFn&f5kAntJ`6o| z3;O>vkoXQeja34@be+V3O&$8H47Ofejj91&|S*FpvwaGi^i`;h6{F049h?*%HNKR z44^jBFGYqOR#SF-|CPva!cK`{8K{l)i;-c&4@O3Z7`r5fWxpI54p7=mN5*BprRO5 z;nmM)-vX+&LFY0}zp#f%LgBm=bI(u>=L&Ic7Sc6JlaN1rb6CGF~2x=LD6xXpd zSAaBt>OGJKP%8n_x|G{EJz+1Ctnq{Y|Lf*0uCRW+X_oxWi&lUBVPcwt1RBf|txgv^a&V1!1>3X25{JfM>s>yl?z zcreO?w~~VTGY(A*cU~|uI)txOFnf8BVZqCX3@ctSGHkG(!yxcVkzvOxM}`Bh5*bds zYGk+onoFvl13nS(#;b!24_-4ee0Z(M@B=hG2FfU}r$_E%N_GJG5$wN4h8mFn5CI|! zKClGT!mQ!k;NaNwZwkme;d>R#KnI&v?_p4=;e6pR{m(uomB|H896T@!K!#5@+0PUR z+Ajx6Cg8K5WeY7;85nEqxxt(BUotWmG-S>7(??1p~Y4PhJ!-{H&<|m*#dwwf2fY(3$PGmR%UiXy1zyLbOE?I(s$y$+N zg0%w!qje*A1tP<=gG>?}poS4>m+5qcgG_2nQYWW-9AxqZU4C+qNzw5uDCTV)7?>N) z7(f^JGJui|XoeY7hE86{&@j1?p(W9afeBRE|72w700loNIsF7L?URz6{^KB%E$9e! zkS9QmnHQZqZh8OzCju>pz!d1r_e0QwiW@+4=zsT4FVFy;nlt%dfa3K2_e^Zl-yULO z7XSqv=+Fj>28Mcz1q=++Sq?KrfWxBs-i{mI|KEZSPXfy>ni>Ea!?C{i|3l5O4*?*Z z(_0QRdFVh}P>q%h3_PH78EOs~S6C)8(RGHjTs z$WY_`|KGwFi3}S+r%p_7@MM&j{$UFv2k1_fup>-*^))F{B1$d)KY)A+YQ}*|y^2{3 z3ZP?6K|KYB21bEjpo^UsGID^T@7Fn144iGJtwiRo9xI{94EWnwhu(>Ph`( zWO(p9k>Q8c0tSYpYYa?Q4;jD(1E@z8K8HmO9bZ~hMotykc?hEPK5KPa?*1b`ac(-n>} znSwe;pjZP{AJacT_WqU~18>Vbc8tl51GLv0WWaQh<4h+0HC!7QekC&8_?^fo0m`bs z7cy#q+V8ai>|5%tvu|-|WCk~iL7`K3Eg;~xA|nUnj;I|ss%|qV)QEu+H`5$Yr3I?a zrXOdLwXjQIVE*}#VTX0p|NlP^GHj?SZhm6<;Q#+$iVP=yIWk=M)yVMR*FuIDb$@qP z)CXR!uySBvNGfJvn*QcE9wGiA|u9Ht%x>evx`v3z2sA~o8y(Ikq4=Q27l{F)3XU_Y-0C=}K*gntt|NkuI zz}KcTRI)KB)TjkGYeT}rCNe@TL=3Ef zErj_Fl+-{zvvgo!L9r0)00uvJnJmo0>K68D#ekA?J**BQeswEhn|SLOd7uumNr7(wm5iH_h9#W#2{2NI(7 z3@o4?2B>-lCm2vqA3AP{$gq6ibtj;5&mw7Rg7^P7;4yxS1N7ESH2XaL; zNg$%Kcm$co0ad)PsufmQEPh=98oBoV|3uM(S&`uZXf3XWIH<}1*X~dPv`)PtdB^nr zb4;$_!C6aix8r{xXjLL;e$_f^Cr8Z;W$?+upiv!*1&rXUvOxC%dN2xtM}$Cb2Avso zo=HulBAG#<)(&)v?lW+At^POrmgxcKnWUKb45#OuXL6W)A)7}4G|mn>ECW;oc`))` zoqpmxlPtK%$ds;}{^mTB0%Ev$`q>g@_US4Ym_+zM23t$)N`77Yxx-v1wiC&)lY-C6%;U<73{Q1v@q;WCpb zs4>?wivfH|JjgPTr1$^F;2CR6ng9PQWu}K+X3_%%{`3i#!KZ~RyUZkKQN52rp=Q2v z1?WOxQ2PROe{cQ$Pa^fZ*|&fe4TBaG!xj>Qu9pOzU<_JFJpIpQCJUbWt`7_~^}j1X zlTOnet}vN`PO!ehR4)lSz^e2UI5Bwte*hjLgm`T_-&H1cS&($)B@vK=A-;bIUbky$ z`~QEX?ew6lOjatdL1%&}Laudu?Z~hId{=BE!v@e@v9Dnl`fRug_Q|oUpw&aupIrrA z(RAIo0@SMlts1HMVO;@UH3At$-%%^$3{J;C7#S{j|NptQrXF;L6ElwoBil<*8m>`( zz~I=#bO%%mRmU+X)W@@L0j)Brul^(g3LNkM_rWnxBY%UTzM6fDV*`VT2Lls$YY(Ub zbezW|Gokt~g90eyfT|@>OnCpl51!tupMPWe@@q_LM$Rt+Dk>Qiz!rdausjBrG>`+O znAYgoF)&#D{{J7eTm^JzRNeIx)Bj&%5(9OcYsz*(!}K0_u^l8#85HM~GcYF zz{mUlJ#g6!I=)_qnZeevi9rM8IgkS@Eg2M`YQVJjL{wy;L_2WTih z1hj4eyh`FA!-f}(3>RQaAK=eI$QfI1Aka0N*oTn>ZeKx&{4Kj8iUzYfSAP{`RY z`2Rn7@BjbRdl?cHy#N250kQzx@nkt%;laoP&i;_z_g?|;|Nj|4zIpwSVF&1J@Ot*c zpw*oVKM#x0qDwJs8=*YflsPZzFK|)6hv?iZX z0u(5YO^gDdy$Lo48WoYgGB76`6JP)xWC|+0LDQ49ZpIar94$;135+5?Z5cE` zlN{dv8NlOIH7U}S4o!>|zZ0z(D(n*)80;GuIFhS57^L_xU{SyzmwoR z0V;w(q3-?fBzWl(XuL`0bt41#qCLnERv>f@L-hwJAJ|(CV9rY(>L6K6q9$D z446(VoesKnI^BtZpsE%Sk2DC^;DBsDt;qt_SqwRl@caK`y2O1Z9*vZa1_n?y-jK?`QOU&sIv0(h)+M+Cv|j<# zum|-fy#M{Jo$hm=NfWe74Ac|_IR|w56)31JlBPviKluOOgHht=^eOk5bm~Fde?ZgD zmdyYETYCNfXYqo8u~UPAvC@k{(UOCKspB~VWBtlkBK3Q%L_l-r4o&~>K&Gx4E?7o` zPSU)i1ByKBd%GR#AB5?Ernf`^AuOO)EqFb~gAfku1q}StGafMInAkV`{|{=YfURTz&)LpM zp7Z}ds6hjAg0&+02H$Db#~Zv6TP+A7o11D-R1$qZ3qa>8}EnZ~r%d_Lfv?wlIN~ziqW*VA7CfV1@=L z3#g2Iskz&sP?JHxp^2ek@k53ZOGSpFg^mnGH4prBEEO3FY8m`=z!#`I@YmV!n}G?G zU^hxLFf3GLCMArIPR z!~$CL0}5$SfdsO7`i4hL5=`0ur=NSoBq<551zs>RJOJNx&&V(VbZQ+aT}^w;qzXF1 z6g0e=sM*j~!zsbw(8Q2p^N4{3G{kE0{4ocpwO#W9G`1%o>A?WHHg$T~V zK_V};7&t)n$4{-@4xm&DG8J}$*|x__8uhz9y#MV7=O62+-3~RCpgh40I*Sv04Ds)U z3^PDwiwDCWup>bQDJTadv^Xe$sz>jChrmrTP(R9k7Xt@qr3@&Qz1Y9oqt;3y0JLfb zl=?s^?We7Sg2hsX8=!Ci$%9q^Sr|7kpahOX6GIO2(xO65&_)}E290!%bpuA&|)c(VRQ2;#j z?*0G&n&}3!!TYn1J!evr2NgP?wlcV=O<-_%v2VAB#ZpFadG=!8?&;hwK!@sq%?5Gx zUoeSFg0qjj{4bdl9gs4;1E`<`X+S96_7~)NTRR308_?Ac zM?P01EOk(Lk?EjNQzs?j{cmsY^n#a6VoZBfryp3zD5DQbv!KubWvPT?|3L$P;LrfO z7mGVDzhqJZZEAhV1fCrIo%sI-XtL!8d;=ll1egPVJ2Di2yjL?z8FW8e!|#O*pivQ) z-wzpPSS-~L067|xO&D!Lx(?U{bUDcdbh+7q%3AwJ4C|Wz{|*3ELiSAz>#X$o!y{=A3>XDEj9oDsgd$&>cB84g#R|A;=>ro^WDd04?N8^a3sB1NF}SovBsz2AxSQ2wC>y z#J~Vr7YFKxfG=1Dl{nBATq3juR|0b(=uCESyv$Rs0LKM5nk|sy!y;t<0lR?tPI3YB z-Rwa16HG5iA1J|DEQO?RNc=Ip0L7p6e};Nc9ESgAtDBzjhKavk;x*{bF;H|Xg4V|W z2d~uu$AlLHW2hHf9jHJ66$GF{02CvjR0k^LK>_mPAVY!m|J@Ft&DOT^4B%@_YU+J7 zs*f@#)c^MqdCB3RP?I4M;KA?(yqeomftkTFo`IwOK)B9Edj{?r20fNFFn7N=2u_RO zSb@166dRyu1|=PkL#H<+GmBa~F@TR3u~qp0KT-4le^6crH2^@a^Zx%o0+g2QAN>EH z{2#Ik5wt@KRNHy~|1U5ddiC_Ow@hkUpvtpmv33Qh@~pXUTmh;`kt$H6W4)(;d&{Jz z0P36m$lUD#Dr3>BR1bzv8>id6W0Gc^GWkJ>#Pou9Os@6wmBHP7&=LdCTq$U20qA;h zi>4V3uq6f{-+`7HfR-M3F#Ln`gbp%Z04=yyXl7&p6@j2)!GnCtSjs2}+719pHsBQqjQNZKH$oCwvhyK_NoD$mwTvwFwUZbXY9}%()J|wrKrYW<)=sttIVBd{Yyue%9>Rd$76G=V zX(k86%WU9Vh&&i#!K({Fhcpc>n+J=!2{Pw2#LkX~qSR zLJvkZaHrP$KWNtm$PvBZ^C&>=98f34qLzWfgW+B8^b4OLy>3th{#N{d;%h~c-v8Eud#&F8)`1sQfK~xHHva#D#gfSBDqolsGAx>Ac33z3pX2@iS1hR#|g@q#P2hhAXC=pKIu$W2If8qZZpxOzR^g0z;OFJ1^OFAC17Iz$EEdu$w zVLBN0$RVV%f)!(su$j+r(L4dBpEzFpzL@ETk;LDWmcPH*_i zBqjDcYoa5IjSeU1Xn39&9Zm)|$0lB#=^MT>8F{@1k6hX+F|2#3`8x}uhGhao4Wmn= zB8!a%Cj+ZvBg+$8rvLveIoum6wZv0uHG)=wcIbg_BlT-wQD9(TIWpbg8VN+d>9l8Z(BWjzcWh#G(34?c0QnQL>5pT_i$vy2-v2_tYr`ETuu8mI$U5WILDmJY z9>AA2Z8di2g7S{(t*_Q^&Cem6&RQ&Dzex#EM)1hIKaRL zDh$AB?EjCupb+x@|L+P^js;2XAXILL^+T2div*CX8a3cS||G#>!+n`0CE4bX|`9t^EuKcYqw(+yA# z_Wu75eDfkA+?ZcLtmcS$oygK>k-)*=!SE5>F9YcZ$^FRuUEtWncfh)lWrFoXhUvvW zn565sLNdHEXlQ|VN24Okgcl1L8gw`rR2&+4L5qb7Y#uSJd-42t0qCd|O9uvl`j@{e zK<94Nr`@gq6(}AIa^Re(2VM2&IDyduWSwIZd&WyemPr;182*F23Ytu+)YMx7+CurF z6I7f&ZA_TX`;#e1u%g~l3Us&*Se*yMQ`zYSKbe&4uhb-e2moE54O-h>QweIKzJN@! z-TVYTIjCm#hX9MDIU3&oHi3sXL3tSDOpByB4&MJZWrFx1CxEO4HL_mJXOMtY%M3a- z&B_%&8d)1W7#@SGk{6Av4HkS7$a!4C`Jb|1R)g_zXUP40M(O zENdgO^)qld+A1(`SvoMVR%$jsv2J9ENYrEi`HKaVy+P}#K;iXMk)^|f;TgEZ0!0lh zTRSxUt^lPZaH?v4T=Byn>^g{#L9T-Y>hBoqhb*8iYT%^j!SDi}>>QhZJHXO|W7BUF zQ2GZMW|7D=!-L^j?eqt~n8fNKWr#!5?-EctvULPH``g9n2)_#_$d4JJ+u3_9|l>%f^~kUi(v#P|hNNI29t zG3Zz{GBj8uGIc=fVIk8Duv~%xlSR|4 z8P*N|XN9a_v#VHsOsQg7n^MJ6Hzx1@pYDP(kN3X-a1uc+6n?aT^n0%as^0o8XgSKz!0u}S@I+CkBFhg*&A`0J zQh|YMV!R?t2h36r27d6|g@zadBghiRCgusq!RNss08W}nhAgmDU=W$8$kKyk26*Yi zOGTD0@BiO3rvLcMq+Ad6;}7r*nni*Ehegw@6V?s?r+WYYAP7llzTol&HHN=}FFCVF zFkrN3nq>fKz`TD5RS#|!p{efxN6eGm71j?K8Z44#Yj`mHe3-yc&%glAzKKi=em?{i zQk~$~MC6iA4iAQ(;2}uw|KB^T8^Kjx0;r4u`)dJ%fCs~4a8m;m%MMM93g9ZS<#7d) zJlF#udB>*TU#uIM7J#Zsuo?BBE7BPrgQsbs3a%iP0|Fil55WbV_y6B}8V<7bfCeEz zr8KC3^Zx(-AgnTQnE2fQR(CrzG3$Ur!h<0Qd|re1|L>q4EQ1F_9kjpG0QL~r5#UC5 zB2$M4!$WXW6_lhvNePsU9GbpGfC?|~|G%Cf3cT+YAP0gpTO=|q@L+fdj#W^*8 z!q$ml9Vl;1)cTzPO17Z<;5do#jnzUHX!2EB4cg?%05Zh7k;TJgW*0n1VP$BdD42?|NkBgJm4CldJcmk$S#K_<~h@C7@6hj z?}J-JFufLuEES+U>A`Rxn)d%_K(fRa9*YGGTp;s7)_X8K1CL(UB(rY;HSs4TvUE5! z`~jWNqXLqLsr6uZ3U0k1sq1lQ_~YaK{|~tKvfu}uhmy$R0NVBF!Eo>8^bd^867^v3 zG=Mr__rR@4P^AO1+9Hvqz=Po)I2649|E>Y&js*-Xkjm{IxCP?<|7!|JJ-EFE?!-Po zD(8MI0EHY_p80Tv2Lr@>@BcqKtR6DW0EyQ<*y;Pw9h1JnQnjs7xNB(iuwy#Y?i-v9sAcrf^bYf4ax_x}IW1`@~re*9`=onX}n zjpx?I$kFWJ!63v9F0Virg@Y{hVBl|@F2T&K7IYWf3j{j?l&H3WB9;?eb5?DIMJ$8N zE0Ey_KpWovb<|zmT;aiR7hFDq%0y5@3KWtcGdvi$Ij2uxW)^3&0C&8mGkP+LfDXc8 zW>z%?>(CH|m8eWFK)UOoPK6{9E^rWlTnKWh2LoU2bO9D-W!)bh40pi323Z11fgTJT zU`JY-{{IIWcmlQeL8;KOi791z0t>U45EnRgf{X!e2Jm3uW1Zf?!mMU>2b_J8%mKIX zKpq6?_x}Im0w^RwPDAw==Tfl87)`*7JRp8jG2;NY>ojCwo??XNGe|bGYGg_9VBiGr zy8>O~3rfcx3=Or@3s{+zbzgWe+y*xh5RPF7d(zSd-BXM_(+{vRi`RqOP#{x4LFB>E z0A61NN=*(;3{yH4Stfu|87$|4f)rH4IX3-U;K6VUoP$CB^#1?70W@#q{r^*h2g5D! z!V~ZR{|sPdtM~uUYd|HGMbhjA9t@wrB@#q^{U;5W1>itxU|^`b14<3IpjrE0f(OGb zaNh9#|K9=OFE;RS0mwlh2S5V)8~Dr$Xu0_VQf__%m&xA$KkIglL}W;lc0;9IM{{--1VtAmXzFJQzNKL&*F8`zzBwurYfx7EZTeXI2ma z^~kIbG8A|)+ypnf>i_)`nO?xoY%d6|eL$fL>5p@*oqm9wSzZvHE}_D;(?75?8;gSL zF^h#vH!K>N&OoHtQ>R;SFq;d4XBaFRnJz$tIp0oi;9xcv1;-$`a|bQ^K!wlrGaSqk z79I>N;N)O&fWZN@Y8aHMtn2^(2aQ{LFtCCvRfNkp!JUTcdIp8*GMvm-TGzor2MQI7 zq&Yu47~X@&)9RPK2DQVHMq(zco!-F7tf15Jkm+&9L8eC_9UTjq9(FV`J+MfcTQT_| z;{gwbci^5QD40AL1RJNH;bc~p1P5_VCcB9aC#WILw4xyq6oN9X(>b`9l~uvn+k-(C zoX$YUBsw%PP64?WR0LWiGIV$_T-!T6fQwnF{vEg!Y-nWY0EL7HgBrL61!aP7ZetbP5(+jY>TA14?Gy&Y@B|Fn^`^(TqeW1+#qRC>%$^xo`eU(8*nA+ z{r}$wkT|Gwft)NL5yNB%k^==XB#p5tPWRzqmJ@rU2oeXcV+YN(E`D9%!64l`y@7`r ze4exigA{lS()<6vJ0OLi1rioXb7y!kyatDx_y2$3=@RP)|7Tky&GqnLcztmC86IY7 z#--C=@Gyf8HdEte)(0&J1sx%1k<7pd+9_12#h~EO^#1^OMq3m#2hRZM^@8jGd7x8y z`Yc{%X>(9l4srmiPOmZpqXs8~jziP`58xX^k{K95_dk07|9=3i4LUSk%j{eMHkZ+9 z`ZHeUc+iDie9ZBn8(zUqXklQi;qY*%)SAAHk69n2h>ux?>Ac`{9)9Lb(CSToX1yFe zRR)IN2N^E>c4XK9GW^#;h6%qOGR&}cn*9N^Yw0&5!vfIlt)R6kH9NIIi${0-Ze%!M zo$~*`HFy^j!w1lSi!05qn1>6#Wq%(#c;FZ6ibEO&1+fEk{U>0LKuR2{r zfLTVTZvQ8d`h%ZDK#dDf0qVhU7TgG#^^XBm*Mr+Y5bmfrW)C^dvgSI(NgNIQ;tN1iH8RY8!ONmSm5oA^b zO@3K4FvNhega^YZ@Ni&FDQL+7LkyBQI9u23mk6j?%5I{;%D`E%gF(Tu@jnM>MG?#~ zb^8yAcrcs+7eO@(4~c;G6wW>hIyU=X2Pmk)7<4=kk_VJL7|uY-sOHBNvlcQ`dN7;@ zm)3Rrr9`~{{|f-Ey%qw;rkfCRkW2mY*A<|#dk=;%NdE&gE>tgF;n>Jfp~L+DuVWL# z3Q(69_dH6h;q*H~%<_zdph*{St_G5m`=YT#_Y`aak`8+vn6OV8E7u$SK|K}(;KpwR3?S-2>ej| zF9=FP)*1i*zer~En7%-qS&!+c?eq)c%qlUUMt}#yk&B>^1!0S%`3!wJFXqYfEI5sk^crlOB0h9tf7>?9V50GHC zW^|k`AjvE~eX#_yphBlC19Qh;1}2bAAXOcA85leEGB8*)&A;Hma3vF>^tA-D3gcc7 z+htlVlK|+@dme*VjSLe&1!|3y1cPHEgAU{p^Jn0GD9AXA0}S6S7A?rIXj&lP!Emp3 z`T|L2ADDKI=`2#rLQJPvr%OmNYx9D$63BiJhC_R&2S_nXa9A|W|6#qKfpdC+6tg@# zxa9`ABvOjm)f8NBKqhkkf#p&UI`rdEI zl*i%E6`%zV9t=moonMd#zyq`gKxbjHzVrUq0PY@G&-q<3T|kCeLEfTiK?9_gJO-{E zL6Pau#1I1N|1Z@1J>6f1*$q^q*)%b*SS(;*wrF{p08xK*YRAu1P&}4n* z*vPg3v1z3qvZ;p=v>6)INN!YN-~lZc1r>M>O_1@&Mors}i7E^{paXa<<^TT!4fTOm z>23JWz-94(ffW>Hplfz5UNA5%SOGn=Mw3Col7oR|!E*+tS}!e;nqyWXP7MDa)Os0- zbo^)Ftn_GMs`O$}sIT=15&>~^*ck+Cy_`g9y#ju0jA!6-Y+`=VT+bk&BmMusy%WPa zTPB8ejU0>>)=`WFj!n!4phVZGX*;1l%i{-V^`&DIGe={TjZ6*K4F<<1R-48s8;M%4 zTNSmQ9u}Y;oI?}Kkwz;9mKsh62gfGXEjA0zoJm-Erv9u40|R)%0u~L9^H>#RJ=qw* zH@m58h}GN*5((9O@vq?+1COjG16K{(4Tf4xi-7u02M18M8MJ)PT8aUDjB)*pAkdrw zo5dXl7K^3@6KW0{gQNJzL52w)3-hOtfNPkx6D_0F9V~91BYR^|PczEToeeSZXSy zL?+s>aZIjZ;PGJC2kGbh|LHhAK#5tr9y|dK>gs{&JBunCGwXW{d>#z@z#af4lF28X zJG}qZgS$E2|LVZ%!QCBDyBLI>7#O_&)q}e|pg}W-Mg|#(e<3s1jW%p7kOcJq&Z|a- z1+Nw|tax>hVZ*D3pzDa)7(ojh8Kwm=D@?wS%?oM}YH)(K-2CYP<;g}b+YXQ;8Z~Wu zCb}^2OjH4Fm;VFqdBYMMW=dr|Aj`qVU>OBTR2GL8bkuh_iGUK3_x~T@F&R(-vaSJ* z{BbaVVhyy$%lrSYN)wQw@X)AXknmvG3+WK=W8ec#aMUbi-vaU7FK}#HC^Direxp5u zl*IxD&Da`$ zz~cG;|CSC6A|cOy)PWj#mTU}+h3pKBpmM{pi9w{|Bts(T$oz%&3?hzA3^t)0Kk6(w z{{IK{RzRu32DH83l8b?<=6;YKSkQxksaD=euU6AY1hiJK=D8E35Ye;}v1DLiwRB|2 z1L*--03K2THPt`{EI7r$Wa-7gvXFy;38WdS@x}BDD$JVo_6$I2i0f{HZ643gb=4#t1phWA~#BcywQh*8y4##;638WSd-v57tPuK(52a4BvP{i6C zVqmd2_A~<&vEKjxUIE1$NCAk36$qfAYgnNGDmCnx7}i-!FxGhg|Lp<_U+@3_&S0d- zg#Z7%|Np%KYD9qRO$G)AH1p~=fZEKc2LAej(_$$G9*|n^|GzH4cO3A*?wkT2nze31 zrfrA!{~sDqc`yYs59A?GTcjb`wgcoCumr>OC{IRiP!n5?S%uMd`fN33Eq&-(I9M$V z@*ODqfLmn?7}zWt82(!%Kh2n^W!vMyurm`>J1c^kr%=;-z%3on0xD1>PRO*K;{E?S zKIcq9*D%5R|F;(q_d!TB_fG(801a8HGuwmu%r*)C89+M}LHwhj*%YFGn6`&0hdDtut5VFm3~ zVOpWX3L0Btkb&y!0I7FuV&JLa)NlZ;6bG$)S}>1+%Q6mJmxB-1-zdkx1;%g} zBDk`U%=7?FW>#w!4+e)OCY6PD3~Ys3@}P5Z8wxcQK>Hw8blNd+YJk_uFxF^rG6*_0 zF@}K3MNqPIY+|@EeS#*l#`Fo3nK|7+QO~L2;Mnxv0OW9orvIQ#ZYtpLXJB9e1q!H& zS;*l$WuYAd3#iFzJ%_QNh67|fg9S*glf!xXZ%t-pKF}4$jNpt7Is^l338)Phrp2tu z$T7V^i&?Fnv7m+vtn&yoSU@wE3==gN3t)pi3-&<{g|(Q+AY!rf{~J)-)PsQy+ztaR zW?L|ifyttdLByiv{~OTyMGpoJaGTZp|GyTHYeD)!>9YRF=L(Bt=LsGRTfu`=ASZb% z|NoZ&Qc&q7uVP)}q+pT7AOfpA*A6P$djaHq+I0nT<`}Li%8!f@MCaMYILn zl7}?N7_KzzXW)bEJY<^CXv4q)+UixqIlWJpS-k!r!-9lkXFyc}WZQxh1B2r{h6l2o zYz&s342-o}24eMhKsNxr_-7r*z|-&#+Gb?e0N=7u->Cp=GoGoHaRRqHtyeGzfZIGx z3nqYSW)Frf;6W+S))mn8gchK^cncWVKyq9j44c4%nvHhT_4JsVAu#YaPlk$K5(lL6wy_nh~5ZpJWZBjkN}NAgBnd13mCM# z|Gx#V_<0TTNCE?Bf9>@3`pjb12N@QCJP!&8SO8f6vC#nO1-Sv#Ve??v0B%{n*yAJx zvI}IU_y4!O(+rp;I9@k0OaO)8bOi%uqk6^y-zEkHa0r4DDx~8jXsf`%V9Vet0BXl4 zaxfIwI{asx(8$n`s(GcXl7szNr5F1#P@5jqb+=f+5b_h`$OZ;2i$sQ=pN!f*w1+^M)uNH10F*i5nf3AS3J~970Yd>ivnn#Q zdH;X=bGm>bvm%!h0|TghYe;6CZg0pO!{|7Djv=!osBSc5He@UX@npbjc|d-*P-G|o zCqGa*&%v||)Byd#2wIYDUA4XXzX29^p88rBR98rFLmB<&9|thc`B z*-*dNOQd=!19&YzXo$u7Kj^%HRp6v(s~}`j8@Ed&Q4@R@9iz1t15bU+f<~wRKxXMc8@J}M{`lR<&;T)SRVyeEJs3Q}(_k+i>OrpNv{=9( zSd%7Q0dlnm1LP=aP(#I1)3%`=)HylwxdOBkZ+d_kvpnYm(4YqTLUrT?>d+Q~bpnHk z)dL35swdFEIcV$~K9mP46m1>Arxb#{0dhXb8zAq1yy5--4=c#2HjfzAH$3+*sG0Fg z1T>@p+71kIEy$(b|388YW$*w00~H{xH3sGePDC?UM-{X%7~JMsKOxf}v>k~7oa~_v z1f>dC>lQS*Y?H*W-Xht*!h>O@=JXs5CY8w!nJhfm(oF<3-57$JmLPZ9KVn!vQd`a>>;C~Ape7+`OD<>?45&x~jedg;JW^nv_g(X?QO^J~(KLGoR1dhf2+_l|1W6Bgs)8q!`#7Cox$} zwB?Whxf!I!`Ywk8*xiReSIpE3oTE7lv}R=yc;}0C1A`nWC_NY!fh#@Gsx3%pFsgvs zO`tNy`~R<<-v83U^WWb8(!j&Y(_O5X)soV|sS`4M!6*Vz`v83MQ>QJ5Osze8sbkas zJ+BTjG=Qc@Js22J+Sj1y0Et^9E!g0}uopZ&WTD7#q5kpj3d{^BgLRk4;m;Kw3=8K@ z7qDg)1@+7zepy&M-M|_WNZ^$}$+s)K|Norn{r}$sa6o{kNfv_2aR!j%kQ{QtgJBQ2 z(dYgDzYQo0ThICbAGA=)p$T&5phW|NoJG8LDOl$Y4vRnpW?7Ke7b-I_=x_>|Oc$8TC@Ss5zyO;40yRuQ=^#d z8)k(N>&FZ{uy)fzWd`tIlVcOZ5&I^F_11HO7Jv?O0IlC$7|Xx{?z=QHtN@i^;3Gm7 zgU)^WmT76nzz8}53A9cfbRgCAFE-49pc!6UW(9%3Io|*OKLLjexHOtxX3K2A>)8M{ zyxPCRIx2AbW?NWt|CgoHSJ*N8Oz+8J z5}3|&fk`}B5fm_>KmoaNq6!0pRV(DEPK%_45g;*85mz;bLBZN-A^0d3t3?YpSRG(w z^kCQl&J4Cn4D0J#*tdWx4yy+YY`<3qFYsX40huSWVPLRcFul&6SydK1Q`7K|0TQp^ zi4F!qiw4kLIWK&tAFyW@_XM{PHyvc?ne~vN547ybB9Y;T2g4lj5-0Efw_QQ*0k!@> zgRT~d3@bbs7J!q*i#o=j1q&I9Km)Db|L@(MuHe9|Q4gBfvQ}i+=D{!@Ji+7rFA>7g^rf+v-7GYdC{fr~CG^6VD7mmz2(?85%=9#=8oMrlh3rr%@Eu5G= z?dK|2fOa!9v@kFzEdBovv|kG}U0MJ5#yV@zz3oetL_n#e{=Y^5XuE06e1!l|Sq|ES z=)o}e?DPXp%*wLhwBAt5z|gUWfze_P15-`CL;!gIBE#I?Y0k_wR@M&~SU}g2few@c z&D2|~GK>9&T}kH3BnE0U{stW`b&z2L=ui@n8$gFkB{)sr=FBX|Vd*tZ1au?P_B+nZ znv9H2)7f0X6V7U`%vu7kL7F(2mw|WdE&f$8J;9Y(6g0MJ^`C*!Vm<>?)prI3kc&aZ zQ_a2|>pU1{{hU6D(U7QlQau%XkLRJ;KbO z@m|pM3aB)zjSE;;Yv-{JWM81CgWg6P7BTPtf52r6C`jxMF{}rByl%%j&{7%?h6Uid z5o-4a$EN>NV0MFU`GD9z9X$5|wSPl>mgl1Iidjpq;1$;YLym)nlxDJr90RqNEE!A~L3*rTF)Gbe z51Fp*$?VHfbHW&M05j;6E71A^Pi7-NkdtQo|Njpf9oIaW9T{g#m+)e?skfNNBnIv$ zK-SJIm}w8{i%bHKH-Xwnpj|N*^$biQOWEvZ><86x)4-)~r#%BB>}+;RO$Mg=|6U@U zb_~v-i44c4{{^7tsHFmfv&B4SEap!H=erk;49*3Z7EA?aY-|>I|Nk!mZ5uN-Fu~f! zpsO1#=O|ZzInvFr7%fv7m_Tz3HS7Tn+FcC)K@B^{CWZ%&^B6=Nru{!r%j#SK z(&O0p|H500ImTo6j=^T-=NH-Gku32vxZ3c{{}gbJ3;Nv z`u|cDlV3)zm>w{XQDXXnb>PFBC+B&q);oey4QQOtK8ayHDBoCDM{WR}WBodwF$mOY z2jxnTH$hF|AB_wRATN3_^nzQOpk3hBbJ;mS?RpOe$Q~z<*Fk22>W1H^qBnr})(04v zerg4S**~>{K^qu5K>=dxWXG_6rdIS0?|(tyUW@m?K*%ye=gSq||4)P4@13?B0@|Gn z%o?Dbqw^RX9GV#ZSb&a&Rb)6YIl)&q8FVqEJp%)%$N*iJIMJ4krO}>20>pP{VmQ%h z&j8wG2|6C<0@R`4egddWb7*1!T~4yTQ8RiENWEhdqXo$GAV)WPMXs4>&maMs?3+F# zfLTc@c*RS%;0>Vm*iW_K4L{X`SNxP`bod$1=rK9LSEb(jUjVp80_r?CHvYS#A;-Yz z*!1sjzOSN5j1k}Un0SY!IJ?zUD@&&-0QbEz`)}D{~5dqey5{r_JKD9XVYv@9gy|6lL_|2)9QQGibh4FtCA=!iHzTSHK1M-ryCWp^lmC!Ph{!Wuiy$4UpQIS|JYJ z|4)L;TTt5u+#sxF@bF;h1DDUXNfD~ISV37c2QBa6X)Czv!!O#m{CJjpJ zjhfL1EFBmaEg2ZtL7B~>mJu|@$zsv+v|y$q!?Kx-Of3@?nF>4@dS6cG@ncrBZU&8$ ze-p&ajt{^Cr8eM^jOYU(pMkO^C`*E}BPc6QHwb1HV><98#+2m2-l zmfr_C8LaO!ys@716g+GID#1Xjm^~Q!z&$NcQg8@wVzhu+25QTAF!X?<1f&q80pxHG zhF4~BN|(ou+Onf9O?3EJBXN)Mpo?X}|n6R#cr zUwEDP{{|>~g2tFZ#R|4c;nzWq16JSv3s@Z#V<-SG8$I&50<=VM(nF2~9t>Smr)z{U zD=QuVIobRFzYdUhEDkU>Rr`~P3?ieIq7jT{TC4>FX1f*oebk4BCS-v7Tu zzG&pw0P?(J(|;eRyo1Gl1|9GJUu>rfgfmOmE7l~ln}GHLi1#ndlL@W};2>9uJ1rK#+Qf6Bq=V=S1(( zkpVRem_4lTGvw4Cb_5Mnw1OuHK#Cli7(Q4!Fo159Tiu_cn#;wyiBA9JKP1a6DmOefeWkM79Z_fCc4s@Bfg! zPawZ}|NnObq#nGU z1E#(nqT$~cWDVdzQe^9}z6+XKV)Otx1{6rv35?)-ye7u7v4F;hDc@+1yIp8`ypf5?1zlSn-du~ZBArzoc)mT?CggOXFV9&IU&Ux z_++#9hM2|MO>ne41aYvLDe0DjP-nm98lrx!O(uCjggZ1}9h8NZg847BahLwPZctGjZgJDAL^a(M{=8UD& zPsA|GGCEDJ3sRfT6U)p|Z(SXI0d%|k576Yter@nE*s#OHJs6t7w!wT=Y^i<_0L`K`K+wwxKv?ea4H^ed3rc5XX{3*HkKk`~+&Bg6>-a#lk|Rh2T-R zMyG`jKw$vNmY^^IwWL5zcU+!pk^i0 z3lD}`@OEr#Mh5U+@_K8fg*U9@7$v}c0q_uOEx4I(^^d^-G{FPPvY;NJ2SY7*=`X0| z0&4iy|5p<6V5kK*<3M{HJQx(f&9)c+7zHfmGw@mOXE1}!iXaDa{a*Gh9t?`$W~5CL zgYWtm$uT#quQPCgTvO)0tPk8B0quDKui*ntzAOdx;p@TmGdx8ueO7-S&fUkzRhi3tB{a199>Z-qFo z8shx_uSBf>Gbn+@oiA5-FjRx%>7`lBjr#qsz*AzNbYH($3OvEk@RC6ydf537}zxZ_pXazQ?2!$7tP7DkielhBR9Q9H&7Ca{ps+B+um`09Rj+b6BuO_@?U|6t^ zfu&Y8NW@a}|Cbt02L{JR<{Z%Sw-?Dz8!VRo|6(zZfd@2qUXvUIN~+)y8k^pmy#N3B2{L@4SIoPGattis4#2aR7nWWO+?E>uztnI!Fo4EZCaT4}aA;s* zSQy2qlk55aKV&x|ivj4My4Rp%13^beLr>HLc?RS;(9(5K=??NB+;a>ppcPuv%Tk!- zLF1E_3QP?3OJ9Sh3_zvZMk_`&kUsDKKRl;zNnthw-98LzCW9nB7|Ou=KR~T8P|7L(_loRJ;d6Ik<#}ZQ=qMQ&SH* zkfs5g?LgrXlFVXfsr>(cs3wcuhOC%(8l0??9UGZ>Y!)$q!w(d8ASZeM{~inWe z0Xcu69RpXW7Mq<07X!OvBf|$jnS+P1K6{06IcA9~>*70q;gDMgvfL%Ax7^8B2x#)2lO>CAmQ% z1Wg~)=VvfWFqVRfEE(_;HIRk2P7Lc6lK+1LMF=QuOvsG+0A5v!7_->JC_a6?95ZV@ zsObaRV$uAVG32K@1A_&_|NoW=|NsA}iMau)%s`$6HK9NOF=25m2Ph%`cmXb57%dr? zK9R$ERtg$Onw$~0aPe}2C+eUt^Y@#02KxxG3!H%7$&O4 z^4J_=s9!%(E#?nMaH3lD36Ntadd7e*N?X6tGv*73zkxI64TzqY8GQysPk0#v9v0Zh z8S~DAp&8sq0a;*?wD5%oLm#AD06JA70d#oz$E~1p`}fMH4c`AOz#E6X|CtMd)W5We zx$z=Xjxosl|Cc}y1_m3DASfBUv}Y7}kqHvt7&+Y~i`j_D+;n@N?>2I=_C1fle{@(y?p8=&Ui-i9-CdM;rfLgde zwVpPBZo`oQFHHr_pJp>_3WDd+5r%yFJG~*BSrjySpUteI`T?AWEs|Ee@L=cxw>DnP zXEXziZaXwFlz_tKMP|(O``OHD;1bf||8*pruVb-!FC!~x8zIQ!7DFw7?n{FtA%REh+#dVh@G_a8nYp zppfy2MFT@LL_F{1^e;Kg%97wgV#pS2CeWc7dKPt{W=P)J=?1yX;`QM1Oo%k&4oiCm zc2J@8n~|}h*7HLEsNrAh#l8i!SOQc%STiyf)N%%{^I*sach*3Q<-l!A*25K`!`!_8 zp8_WiNU6^VzL5?z)Z@V*1)eXmmc z(*^RFZwcxcp-v9rB zC&eM^7M*~q12=x5>OcJ<_6aa zho)3474Minr-0c+!unpU1jr;%`3b6_ESi?Q@L;Gho&KVLIYh-$Y4HV%1^;JGbZ21r zsRk-x|AP;}w{$QNwp3cuV6ou;gy{)|%px(CN=p(f7W|)xQ27tsBeHZb5VTZU;$gAi z|0E>26CgV+9Sj64m6jM-EcibeNe(>kV(DNYVX3s_fW?CU-P11=GK+9nDlM5|vEYBt z^f!gfN^-Fh7Ka%eEEX-10K2+@A>aoi!vxT#V-JR@52x!CF&k*W{PyBhESJS&km|)R zK&rtiH5fq0J_L9$OzoWBQp9W|6)R!UwA27D@6N!`uoAS0r^5C z(`Aa8jX*AHS_v#1Uz*IF!K z(C}c$1}|;Uv1MTBjDd`ugJvUUDl(MKbYv(8t!0@mQpyb4BW+g7Y!A9%WWhZKrUkDU zm_YZ@)p8h#SjK@S)xcW>Uw~%4LFZ#uDnnL~gN90LmAyn>H~xPBYJ7qY+y=>kh9hc{ zy+l9_)S6_8AD~7as9_4KH@*M=ubG|`%q%(mYbmpY_$+1cMhc4-=*o`;pd+}lR!&zb zV^(vD%>YkTfW~nW85&;3FbKS?VUVz{V$gVL#USufih<*&BSXQ@MDSYMj-TMQtJ&be zdrK<@4p1OY?y^Pt9JLPsoy&UKeqio&j0_Dt7Oxc3db;_C5bHRb+{eKC# zRSIftf=*veXlc6(>ik($Flc!HUk0u}KpB5x8nHd-y8krnGMX>k(#doJ4C})+_J zfjqAOE-s*jdJJfk!n!)PpvDfg6^hZv`~PC_Sd?`Qg9f@wL8BGk|CfUMa&VW{fLxjZ zcD==Z_)arU=vK3(vC|VOm`y>WD3IQJY)7rKcLitxl?OwH;`B8Y%$A^~v!HQCP;(#B z+s<^I{-c6f7BqfusbFjj9#m{(m}8O1P_$7Iv_3I??sS7nX3)yuuu5i2#Xm^QQOzzwjMdpeDdZD+WDK6ZthG1L!uf9k5^nbrik- z|I5G>2i;Ru#jFZi?FBv7z;Jp%6|+b^>{c|;u>!vp8D{);WLRLYz`$tD^8X*`Cbi!S z8Fqm3u=N54CeSTvzaKK3uy*HF<_5M{EWtlztp%U;y140Ge5}zLz{aH)G(n6?p%x61bTInuB&|gdDBm z{eKR)ko8~?1h-N^<~TO}zX93`58VR4z+n#|0^6v_Q0>8x z@OJuxdS)rc*y+FPnWaEw2dFFeB007L+zn)Onrv4tJw332IR%s?K>5vL{(l=#iSEH5 z@N~MsQbvX8FB+Kn8K;8Sx*#7mGRs^4v#yxv%)qdrnSlkA_-l?BSIksqV4ty=feoA= zlR-sbJa`Nc?5KJM(Co5+2SdE?^oB-ePj}FYdvH564xDH#<{|qi4tzcj*hf!(gNke< z55<8ifftDk1)wg?^b5-wRY9J}l$`G0#LOB23OY~_{s5gWJs(m9|5O2|VrEcqf?7!) z3~}H-8fq}cfx7}=OF`B00tRGD6{oLhVzvbBLV-s8^!H87VxT2-&CK?o+5()JK*a%M zi%p|N0;rLa`geLlGqX73SJ3?i64M=yfZI09nwb?Dr%pf7%&c4w?j>1(ENg^Rnbr$I zXT`*Ted+ywI=E{9ifd4N0W_!xiW*QW$b%sUyeP_I4syuFfE(IiPb_&2-tPc18;u17I4yrjk7^1+F0H9GLP#xgG z5GFePL@Tp3DEzpU}k{9t`2&ECD*E2{b@vy^vu7XmQ$1JBEV#C7^}MpM4?bGngpUGYEiEIOq^E zkQ`|LqX$Fe+UW}I;2Pbnomr9b==6+s<|w8}&gne=rWN2n1OKt|LIhK~OwX zg@K`Ft}^(jBhU(O>tqH-Yo(&1uO-QZXk99S-f2;$QJNnDOd+KyRW1kN5{%-*_ zJs<`KferNj{~t1W4sxIq14GSm;|h@4S~c$q(0l_#ZHn#m2OZ3!_Mj#JC`iGjOc;0& z9&|BOt(`b zln5#jK?7wT458q{#rywPaC_EzZ}J7}hYWR~Q>s8S4WO}7iv|WQkj>uzzd>3U2bh#C z5*e0REMNj%Ql;hne+9T?vs7Tgi45y!Dl)8tnGf1GXz9o>{c#twgeEK# zvw=z=i$sQ99t@%2NiJIl1`b;V2DU^m2Bt(!2Jz_z-OLgSpiVZZoU&NJ5cJcL;lNKt zh7;cZUx5dBEfm=rrZqBac!1g`ph5?>!N-Fk7ChhuDxYR#rU-a2#DW`fP`;oCLo7IG zKzSG>2Fk}XGE;=Wd6+4|X|i3WbiKoWCeYqLP;LDB31bk*6ZVG~SblmWUjU6HCTcP; zff|uNx>6)Sd{7`+-+S8eQ!Dv~_y2#q(6ek=CTczH@ct(X-h}1-PXyeg0IBu<-w#e% zjdlzS`YRb2K)bUY=P`shG%*-}OY?>vX7E+*-v2~CPG8f*>=_J7xExH&z}IQO7RZ8& z*nf_oUR_p5I3!qBep^4Gvw<2T5Z%4)n(>;2b zWt4Q}7#P5X$vyThpc}Rv8X4yNZe(2Wdm$qzp9&;6O>gUER#LIv_y3QjDg#UXKK3o3 z`Af%n3=IxV|Ib*=VPFA`F?lcqC{91q%dD;m?!AC6LUCyN-vdgOpeTCX$hhG3LdF%Z z6&X8TJ2FnNP-HwXU8av&!2x6dxPWbBEU-vsFz{dq0=HdWfcT)@qY0omQKIX$E;9qy`O>ary@fIsMqNI|08%1$>Jdc=#)Au&|PAnWDUwB z-v2*>4YYJ)EfdP(s~954~9UngWz+5kRuc=KuPnZ zCIiDuPX>mUnG6E8p3KwZ&6s&PKvC?$5F0qXryp|oB4{qjA{lbPl||Fi2jGs^nSN$X zP&)*i2s2ZZ;O&r1$?5tNnE9C^d8a!}V3ue6J3V0nvq*iy^ZyK>O{t(e@2%%E@PRg? z{&>hxG1HNucB3Lgo%jFu;ED~&y9!|Mf)}iP0LO}@LOTPfJOPEbMLmPvMte}-(H~s6 zf`h@H!O#1D7q~<~3W5L+27gI#O$-l%mdBv>hzBSvLDQl#P)|p%oo+CZSrycVNA>hF z0S|_>#_2f|nSCs*TNyY&)jRmyqxs4pg9JcDK4>Ey$UqMUKX8lGVm`PP#Re*~JQ)1W zPX92GSzHiwmO&e6sg+|BV}*qx+Xv7BR)u>;3;7xD5fS3_(EyidpOZ3;`Yte&BIbM9_4A^D-=G zppFH#JE!lS#B2}^?e2nu&qyigWH213|Rs!hg=-(5j&zQz+7nY)-1HJ>9K?l_P0`<^9K7PrbV(?Qv#o(s~ zgT_x!1`T8%gX$5G7)aeujT8+qUn9i;tOm5qDB=Hq@bRGVk-maEj3Uz$rZe+1zMWn$ zoms-bgTVuwC#)AToPg$FHb}DY1Xm@nq-z0g&U%VY-!Yxpf*mrNnKJ$RbY?wJmt_XC znaS&e3=N=42BiD-!~Z|v(c=W(eZS!KLWT;E8jv_h9jFmEeZmZ8Nj4^i^)ES6rmvp? zZt)+R!R!#0Vu2$p9Db^&IQ-OLQ26P|fO4f3*zcYU3ed0soguRRr$!3+LQzoa1LbUR zSb$EcnaQjOoge|<3D4kTv49P{@7jaGZSV9AGnvJt+`(o1i+P}VU-~$uKbOC!Nj>&hjxa$qA4=^x*3Vl%hZ1)JVg#Pu*6faO-1Yyt>Sk~1k z9#-E|0<4*qRaiSMYXF_1ZnbFH1P=yA@L^}5kn&&%1eXY}XEQK?no6LZ7ZwQ&tlob& zK$67c-xZ*VRu2Y8FdrmelTt5T0aXMJI7rp)2r9xDKwAYt1(rnu1Go3z_2Bj)NE5i- zn7|<7{dYZhaSW(hG~{`Mrlhpi)ciiKQk3V{LShNUc5l zmX}@(0?@SPGtnA+^oNU%JcDxef3+v|-+zhd?_*#94eElHCWD*xkAH)XR#kAA_wNq4 zO91X=+dl*cpEqd!$ccer`i(ivD$@hbGYf$3VdDVLdDksoUE#qH4Xy)0>;2$^UEHAM z7L)BVrRu%^F~Mj1Krv?hXxRqqMa?%rjcgAFNYfq?L-yeE0~P>~fL#ZgA!2|97$~s3 z|01pib7*3)@&3mM9CpIpgM}i)^z(C>6%4`cI#5Rj5oK$^ zx=>AC3vP9K|6|OZt}u_;j4@?;_&jFi`VUv;yRT-;E3fzZWu8fY=sE%Rc-D zZC2h7%0^M(lmSYvjhZPQprmWvv|ItC*P)Ri0Hhw|Q5`u34vTpVhBYnhTP*DuA{-hS zIBHecx4gK^zyWe1sEV=P3mW^51kVmPPX9TNS&0Ljn(B{!p58o{S-YO`49GZ8I6`Vn zTW}PBI=KiRt^qe=P<^-t+};NbUpY4YKLJi;47T8b4UpAHdck!$nqF`X7?R0mr!oEP zd}fdOWVI*O_Zc`qgQy^t;G!0sr&fbIDiD|1fX7uq@=()Rz5lKTyB1Wsfdc8JMv50G zkSsO-|F6|z-!f4n#lxYI!2uLlm0oI3YU6`MUSxp+#0R_t`6aZ|CsC=P_M}$c3A7Xm ztnv2=27!s7BQ@46VAcff{R5p32)aiB6jljN)1NJ1mIs|kZISu^1gJj`I;|FDiTD3M zir)Vrn?pf-kaCNpWfwdc!XbS*MTQB}FQhU_f(l5GPoSBc)%)+N(&-rsnKj%&-Ne^> z(^i1ymK>WH?tqqbfl9cSUTHI|+ZcF2etpT2wg8+;=O~GQmVJRr^_strL~8CCSJZl0 z1k`8*OuxR6Sq^kO7^s&9S_WqQgn{FCB0~je*186?>tXS0@RokiQZNq&yS3957BTDb zrh)HjukU;$^1CZ-dh{Y@DNu#5h*^;n+wN z=77FVErY)f=xCxP%;tf2ZP=`5TsRP4=M27B!V-5_dUJMGL;qHoK?8j1;GVr7vW8egJ%RqxhmJE!b zMekfc7BW=)0JTRzqg4kP=2$c`6l`Q<=$NU<&}H#}fe|#}FjJACf1)G991jLnNe)o# zStv3rnBL&YC}9Cg*q{^%s^CFI)Jx5@9iZT~O=4gH1uZCQK>oJOe!9Z?CHU|+hM6u5 z4Abu{Wwzj`Kgqnz(wjkIy38`>6b{gSL`!=Hrs*Baz(>R%TLwO+U2QpJu3$N{nt07M zf$lN+mB`QmI$ar50{ni+@ZvWk!vEU$?U=puI0V|{|6t33_2%yC9@LG z>xB$AUO!|2Uko|@$Vz5I(1M$l%t{8x5;ayUKzD%8(J^CSuqbEXaBO0*n0%dqqh@hO zK+R(IEf$IlAEuvK$*jT`e)51FNHqAQlU&W>=~b(ktr?vr@5_<{FRNkuV`!bo_<8!9 zRm_t7f2}KOWt=NOXQ+5Em?lo=Shj*iU(22NXr2Bw7P4h$BJ%*mjBFldxJ z;W-26goDhv76+LNAtT(3O`!Dk;~4`eje*WJ2W1G0M#kS3i45Hy45r|2oTdHrU8|X8J;D9oMn&ch&?TP^O$;*{ z6`5OVm8B~{HIG9RLkIXw2+-KT0R{%p%^OqpGJXK`GK$oPYO;Nr zsg*VX)Q^BSQ`jMkWGtpET2s3Fh5R{fMg!J(0%0d%|dkA;i^-haPl$dLg66@@w@dS**Yur5&2g(Yp!ViI`L1}%7oj*^3tFf{p2^k5Kkove_lIz4s+v$993 z7lR0BwXXF-hCSAe3@bo&&O}AfWReAV=mk_3fKJf{hg$37iXVv#HLyUNsK~GfROfgw zNM40Up3!tzE-CCK-!N6nbz@T95$Z!HwLrqjsYtw+%()@G;-D;!vclw2m%+ib-r@z_A ztjXv!U2GGx4rkf~XcSEM-o&g0nqYYC$Z+BHLxvxqrWdFb0r5e@GT^?g1zdn-GhN^vqXY}c z=IJ?`nPuzuYlA15Ky$7&Pa)NYV-tf3C}n^ed_NvC7W`mj+~EC>4_uDFSjbpVlPO*4 z(8yr(f{}3pxcLb_=!0=VMF)dI{qx@y^=*$UK(PlK$^wm#fYL5#L4^1JZ%05yOU*KE za6c);qJfdYV$t#pkYyeW!Qk;^2wMX@N(i2%1ot{Mz?13KZ43$^!@(9k{asO!0ogq3 z{r_7o$Uzp0j0>h0s4;0wzpxfElemRhot=YuSxqv-h3Q+ifEvXUphfzEms)Al-)~`d zV|1Eswv}0q19Uh6=va{HFJwl%c;oHTQf5*Z31Y_2XxIh^nUxvcA1j(iJ;sL>eYg0^!964fU+jU35)?RwbCY3 zYRW$Vm5Gi`j5QkajQ<@P8E0t7F@O&WvUs!{RQtTBd2C(r;~{9#klI{OUVi~;m9v8U z4{q&(B9G0v!u$UhUr?z6I;{lM#(Tjyy=)@0SUo7lLHaBfEk6J$jlgC(g2Y}dWGJv? zVB7&3*|lh3;H^jlk1Vlx|Ns0EWR^qIe{cuaV$t#wNP58~8Avb49*e(>J1iL(Ksz=0 zKs6omYK4k4hI-IY6)PyTy#IfOZeoO-uVL|M`2vLJRKcA>+@AZK2z8JIXjB1I+krY% zpd}BW*qUhrswMfs0n{0jHUShvpn$E&l7dE2OxlFkji5P~e?4GVConKgo53gnIdK=% zB;K=~Sra@@+q08diZ>0GR1ScW3jYpfHCW>v*4YPH4eH~)s7X8VVs6?2P(tzk`vzR| zTPiSdSR^oU{IpFw;QjX%cojCt`9EsXPJsG?8uCn_t2?HEY6(!`>A|1@9%BM!^Ou@w zCqS+4pPo#h<2)C{+ftut+5Ns|w}#H2G8N79T z^$$u7)(@D#(-w$wq1A_~wSoi+>5}f90Amf-fUhHKscrlm3!h=B#ym#xxTn2*|wG0-pu-5^EHatE`<83KJ8aaz!3N5pptk(tUCc(X2nMAs%wXmLI~rdwd;kBp z1a@$Z_y2zfKtYY# zXx#k8^RyE-4Gp04hgql3*v+gY^A2)V7_@@7NMK+Bw^zaZ>0)b{72H5sgc~xM9*>+w zpgANyZ33vr12Y}edIi~#(89n58uA3^?T7z=Ot;y?tSkua?||kI85%&AO)n5;0v{d& zsz9LCSfB+119uH4^D@w+8YnGH->`>S!s^AMl@}}-(iv)ALhd$tacCuYgZV2&?&j#?l3nf zzCek&Q!{P)`n}9zpeYR`&rF0}ItiNk1_cJ_2zBtZ_jJ(G71*L4kZ%5c%x>Y(8vW%-Hi;lLDzIzJAn3WSb!HESt~FwCOAz$wx3x^ zrUo?35YHe{!(rh7y4M8MMyYtopy1@dY%!hX0JFCwWF)uq1oW;HrZ=FTq6dTd)9D!p zn3Xxf2PZmAVo{kslhqr^C!(>e$E-qQlH!;MmAK2NX^YP5+-j^~X;C zaDZ8*{&gZ_#p_1KhSy*R|J?&hCOXUvi4INw=QvLKKLZpgFCMLYVRL}f0kl=~MIyrk z&@K~D3lntK^lwLo4oimyrj%ox44WMpCRi#kaDhg}5{@x2T0CTEtYc}en5f8b1+-3a zCL_b7jgFuLW}YZ^EM&N0$-pqZ`5?0pX#C(Hvl>TjCi60j{|pk-j~rxnbo}e32R%y4 zroJ=4LMDxYtyYu41T;KVbBujUsOHT&&;Tmviu+JaHoFav860LbGdRsuW^kUV%-}Lp zdAi#nW?e?l=_QAl&22$_r*oh>)1m1fi!DO~qpbs@E2!OWslea>YPW;>W)mG5c7R6S z>XlD}9DU*^Bf|y{2HDc-FAg!Q*RKIJ&ml(qUEuxq4S1v;bPPs#9Gji@|G(gSp+MnR zd$_p5gTVwGbKd{|^4KhBV6u6@s16$N0u4~uGB9waEM<@Zwa`H=c2KJv<4dMh5};lQNNl0gDuovZ89uyN$nfGtBf|qwp#(A! zG`0pRq(B{jjgAZ*(^ZZzE9Z8Av{*ENw(G3u@L({84h#J%0EvTqY?1u`LP#>3T@5qn zNUc9Eor(;%ERz5KugPNHQmZUyP>>0l5c;D78n3F=3NWaRc~lWT2NY_*8D4;oaWn>J z4e$TIuS_r4&m=N^$0}wS&;Ss(ZJ@mp153?p1klO=P%Je@J_9Y?5CARy z1fM4O%en$Id=8qDhBURM4X5iIWtQQn(FkCeX!)#QdcaX;5f$qP|NmDnW>5evXrJ8q ztO2y+4O9+U?|l|9`Q@_~?|))9r*|A>He$Ne zKqUEH7H7=N)5KU=lT)KH(U% zDRiL+%ZtosZQz9-Fo6k~&sx9&lF;H7Xhu2leByMQ6U@qtcc&+u0B_GLJHc#bVtp^|0%-CAR4IY%0?mjx zH2v3rnjc}Q(79?u#o zQW+F9SegG%Soy5Op^>4(`|mB)=^7`QbwL}OK@kTEA&^HwH0aoNi>B2NERt4D_-PMX zRit-tdd*2@dB%m)=YXij>3dExOQ^sC%OZi1!TTR%yCEoqLEUMPw?QF3{l`gWSx~ru z3;Oe&!?9-_%}W@VYGe%@92*%$8f_R9ek(G}cx}S~ z+8@X;{l_V0Wk$#8GN+j(EWpX$26S;L1IOe)3<{t$(6IDb2Q-8ySSmCyfxNMKA!Osm zZ>?t)HLNcjrsteymND>P5Cso=+A1*cfpjz^KZ^lnMNmqy03A)Q+57~={%QHF!TX=U z%IP~!GuwiO0zjSwVbBDdMbjDqi=@>vJQ#Fzrwg26Hg$D^bdRdp#ZxSmR-XVZAgFn1 zC1R=Y|9_<>J45qwh8U2Epm`;SCeSe<3{$-SUIDwr(w_N6jjV@5rTz4-Gt62Xl^o4a zYUBePrtdk!tddZDkN<%OgYZ?5)vySf{F{Nn`riNlKee7!c!Li5fo#8Kt<+@TgEeA7 z>OmOl)Cvyeo0--M}OPZXtk*#aedf3QMp5|65Kluz-%uY*c5kXjsmmGX20=X3=^L z1_vjG{}-BF7#NyU7+9KH7&w}jF!0zm^h?_?XPxt>z&S z(2;+j-CMPqyF_X=H;L4P&T$0o!LHe%T~S*ZT~Tw?xB}!#3((bG&#WtIwY@7exEO@B zyBO3R8W}7!xEQSKHH<18=Kh~kb6mTk=7fet&GQo$wbPR;YMwiTCe%$TUN9(l|NjrJ zFhCBfIiXci|NVDGEyoFqS`IC+!@U3h&q!cksAm8vXn4%PU~6$I8Dy}f=D}+kTnzpo zg`mR_K&}nV(69s1AYXtS4Dy9T(|?~@D=(4S>L`&{2mfz)_3;0W*Np!UfXd^VKUN|& zca20~$9KWXqo5oRH&U{xNE>GT4Ix349XUY~>1vM#d29rT-6rW^%%JUfgHh$WUNy$-r1`4~iww zLI4Jan%SVkG8h~{{X6S>pml-*kO^(*xy|1H{}x)>|Njq~a;dauPy}687rvLlsM^w> z!+I}+L-k$;1)KWnS0dqiS?p?U4+MZ}t57=@yGkwT4A8VU$l!XdQz9M=0+pcTtFVv3 zzE<&*hz=`gX5)Xu^q33G(x%{wK|_wg+_8}%#sajWy^(RlZ$-upkOPthz$G+zl{I)F z;GdHgicBcijv>i)S}b6&0ad&pt34R_!L4+7WP^KRpyLi07(gpUL16+q^c&RmV_;xl zY~X-~3uv7x%53a^aL1sgUAe+iX$`my)yTBQ0W_E<4w^s*)%Gtzizqc2I6xzL^^bo~ z&%Vg4z-TzV=OVKXC_@^6dK|wR|1YpehGfWJ3;(YGWzw1q>5AzIADARS3v77mLBRyZ zP7DkUCm3uRJs3C|H5fEnRxq%H9IvnoIh|n_a%|JSn&(j!HP4MIYBjY)Lfs1NLS0YT zg?hdCS946O0-P?rKypDM6CpWxN7E4ohNdSBEX^zo9L*|_yW#8>ICV9wUBdRK&;3b3o|3aY5(SS3=c86;Bc@k^vu!wY=h8z?6_G5jy6pOYj~ zYvv^a>Q}vL{J-GU!v8BkIkM)ukw}dMlL$O#f?7kd5C8wDt&9?>jS3Q(+`=FM%C4Yn zTJzgVq-L*{$m_)aH(=Qnltm{TVPKiS!oV>xg@I?H3xmLfCk!GJmN3YGI{wgP#lXM| zsZJ7{Cilh3O<$13#48P1`3x?@HCPzzEuGf5fT~c?0@CRcSD4l7E3B75Gw%*)=9OSz zw02}HsFuf0Y&%dEs_0kpa49o?(TACZ2OBL-H z>}wrAfmc&nGW>4<9iLdM%D!bL7ej$VBZCBJ>pv*>)zpBFP~iqor$BQyXpt<3MI+;c z-;9hCAUT^GJnn^X?4MRJTlsW_1^WU}waQ&O-RCN^>h!m{%o3onA+R*05YR-;=v>gn zssB+fM+7Y%16?K#%IKi5^Zx(u4K!95LHBQfD@y2SfJO5EAD}c3%A=sX3CfqC{0XW= zL6zt9KR*~b;49&v85OkR@B~A}OAiKtml_NKFIF&cRvgb@syHpdP;u;H6LKc4bUVOQ z>H34I((B|Q^i29wgQ3BR;r|X$hJ1B|f#KB?29DP(3<9rJ7{EK{U%N0UyiQ@zc-_Ka z@OlY@MbcLN`WcoA3;`eqS8ZiKmbUe}hV`Mf8A)5$DS)jRLa~_d1Y{TPeWN_vMW!zWJ44gHe6D%rT7BE%3 zn!r@+Rqs_%!(mZT@p1=4t(R8?Bo|K-sm%msUPPv?&D5}{xT3&RarpxSB-46TRGd1& z0Lrv=E1;P+^p{B8Rxi-yj1_g;R*8TzENmbIoM8|C-vG+2wG~l_%&H8^t)LN-om$|` z`fCXT!|xUb18_!_WfB49^2rMlMNEDiVc__g!XWTt34_E>7Y2nNPZ%_QurOGlVxUYS1pR%H5Mk;w4EgMl5g7Z+aT|5<6F z$n1c8B`Lzae=RQ3FR$WQ>PpMNGYG=MtVKN!Ia zbvk}LWSB7B;uf2a+jyz8ApxJeSilbBxXmoj2`&}E4*Rfz(Lw>VBj!gV z!wwGyMsRE9MI*xw(0V4wAUdNcd`F_h^qzN2Jktd{8Cj<9xDB2^xON-76;SOCvpr}@ z)g5MiOD6_~UKIvL&=}ENEe1x=tzyW0(C8aV)?i>@fb58#e(nylIHS|#cbWQ(PLus2 zl%`wUWtQNmS)vgDTG22);x4lO@ zW>iZp2F96O42+gu3`{dQ85o@y{(nH&&A>3znSsGlnSl}1DC>2BnfSj0G-&70^j`76gy`fQE2DQ>otn|29syxzB9PxOIBPeP(&asnciN zXV&3>FEu}NpIKVf736);kb^_h|1F?72he;2Xc`DKO9@g6N|e)i9xxklfX)^RX<@UQ zER!xF1-b}uMknN;_!(VDK60Aum!1z=bd=r?3jPd#MyJX1GUP!b8A_82(pjeSJYp8$ zDfDDutXZrjV)5kv|LGc!m|fUvH6;RSm8TayVh-Z~o!8uv%)l`H!XxGa6;LXIjWmON z4stT683%H1M=b*b=;Y?<6CN`w@W4bt2ls3{;-7L!N35iY@8;qE4AX$U}NCaZfB6J(In-#*&kP5oDHS z0t4eu76yh+PX@+XPUi~H@o-?Xp^>b^3f_eI1(Li#tMI@J&!FyPU;sI;hC_p))>ZNn zC^Ha5GE=WKT9zEj|GX#5YkNz7@w z*b8QPYc2)@kiQ(7{)d2Er^Cena-D{y1A~G0|Nr2vfEug}Di)3ZKY(lmWhIBke|tcY zGkwD|W@%{-m^O!||2r%>8JM6RWvb-p^u|!S3+?O8DX4Gm1Ub58$ zC8u`gO68WMpBm3*fEM?IF5F{#$!rJiLk59cqyGb~9}BR6*7RFDgAQ$Ad176ib_2Wy zAeMbg{Xh0CFREd;Brx&3v}WL_b-pB0qvhe?(8#3oG8(jhEV!bRlYyarrNs34FPWvp zj~vthEpn@Qu3S;c;rgVO!@8p47`wvs3on^9IBJe*S5!QAeKPG8}^$;QCY!3I9@kFnzw15?K`2Byv~ z2IfvR2IfkMgBleK%}=T=4{B6qH$SOiI9yS&)b&Yi_Gz$vHA|T*YMw_|)M{#1)V5oL zdrKOj91LcbnhY$J>h4OFs%=Ujr&g*TQ<|y9z&v9a1LI6K28J2W7?`H-dBrRtUGrQU z?x9*uXV9UXEVW)*+7{r^snNLLVDXZH1+;L!R>~oux{XmGl#9_W<%9qOXvh(y zcp@hQL#_KmJ*XyL?qduBFuCaoZbE_63btgVrs3|Nq}I-C#E8#Hz{vvgN>C z?wY;Ym6l2yGHO6qE8aJ*0QcrI5r_AHF88Qk^}51R0XjsW^}_*FHq?6ko>Z&JzQv*8 z|A$&T?}{3g51<>BCxDw0jSLfhCo**CsWULt-}zhty4n=HSK5hz0p#+RRtyaFwYMj) z&QWFY{{Qvj^qlw1kswDxE>HOHGX27P&`|Vbzg#=;kyyVDGAjILWHhik$WUPEw4vj- zBBRCchm0B19X^27?aKvK3VeA{Y!)31jJ>Lp^YY|mKmljz#=tRCgF&IDOiIL3fq~&C zXpPtZ7Xi~9J~De4)Y>py_?^h;@r#k+!!Jih1}g>z1}g^!hM$TI7k)J|3RpFO7x*^( zTF59-`?b1avO>NJkIkX~|1FNWFn|t!oE(t_dt_owVWPi z^_?D;j!ocOEOlp^GB8wn%B#F|WH?Zl<)QUbk>NtE@eGTXii`_DQBn8aBjBeZ-QGp*&;e!>z4L)?# z`~M5@TFREsPXpo6K;6@lvDcVLpQ zSd($>^b22^RY7CSH47Js{5;6;pl14y0MOakmJAFEvs@VprVD&y7H15duJH}jMw`5@ zSZ8|CH)bi3nwB2{76%vvz#}Wnhbz4Q|KOdz;2St<Q-N{r?GMtyv?(2GGe;pjL|a-+ADMCnz>87BDbbG;O#5YLvdH zV_@?BI}bd?2wJL8|CoIXs4cBAeS#b_ivV~YNb!FmNNJ-o1Iu)cpUhTFOC_hL{A6|n zhYttSGK&QajG%#f(9)e3^&s<>?45q#CwQahv!CFV>ukTklp2I``^Bs^?I$A(q$l36 ziAh-2(Cz^PW7YTOC*XBnyR<8;TNoI@UH=CR4Aa;AVwMD-o#^?0W2gt4odySkreh<+ z703z&pFfpeqAR99`Ne!t5j5_u`Tqj+h*M6-Mh1~u%~v9|w(MI#UI$Hw|7JFumdhkC zT_J#(XS&26=2*~{jz8cvI?Mhr$Aj7>-v6H;oX+!?S%#-po_$M57Mop237g$?lfU3K z=xKk!E%9Z4nN=ABr=R)DTnW+hEO5HdKXg4M|B&@O`v(pOw*SoeAY1=~TlNt1rn0ff zGdfLGV~Gd(bgn1^WBuXJp!Cye8PC928_&K4v_U8&gUxR05*9;HPXOW!F-8_+*-Qq7 z*<1_-8k`Kgj*Wjby#N0Jcch?RPGe+oMpg2c!~6fAA7E*4jWhiiBTE!d-G25hwbCos zdH?_Rak>r@3#ftN#>CTA7& zD|+o27;9d!Z_(sr0Nn_mqTR`msny9)QL~9bEo7+!nj1rlt#ZUkm{RfQ;%svhB z$Y);gwt_|m73;kW)4kbQK--_v*jbX;KofNq$bg0I~Rl(Z$)o_vvC02PF&!EaC^Sn-gS!B3=*TF)%Rj2?XP? zIOGCI38n?%I4p=*fL(oL12*w`K7ptLY!Z9|QQ*VNFfES8VL^-lc5`ATU>A=CsjtTp zbg`&G1kw!-q1X)|CZ>bp9B_!^2%!Wd^|0^lv1mxgktVj_j0$BQCQsgA{B|4i5FXXd&SUv71i->|rcEE5u;|%Mp-HKH<#i`*~T! zF^ZAG8Bl2u1;=~>J+1H;y3f z!(l-mj!e~$BZMX+sfUF>IPJ{H`m0ENT~FdNfB zD{zF+N*rlrB@PFzMspC;h{}VYTAZOCGpNC9ak1orqc|LN3@u2(G04Cta1uw{#jh%<8>4zk4I z0ZU9DgF_lL9LxZ+7i>Q`o>_5xVYA4lAy4GutzXW*+B494Noa2!64#u3NyI6?wPKTR+b>|xB>T`&`e z#o0J~oQss5pxy$9XaNrO1;}Xy5&wLG1=!oBf`vF7RD{EVA{^yGF|x%_mx5|{!D1Xi zT7tvkQXD=m#onF~EX9!~$`)X+-36<#SF(cDU{_<7Xf-%IP>Vx-E!?4q@CV0P9b5ve z6H4$2LX=@z+=wFz8gZD@ie7#|4HoRgVNfTIkN_Wli}!o&nBgm?1Y4l1S^(d+mZax{QK2dUS&G(1R2l6nuhXaK8 zpe|@Cb(mk8oLlBO5=0 zrU~@XJwY7(8^OmoEP!_>Kmh~Ce1flWMA;iu4+ufE@Cm+wSup*-B4)ot@EwkTdWR$J zy~APuJD4?4iy;)B;0ILm!RZ2=CO@G%7^0qmPw*2o1kq+w1i$0307th$@GsUhT+b)? z532;95DVA|7`ax64SPrkabWj=5GVF>N{9=T^sw|xgm^G=56C5aLVVbLEF^|K7Yd2v zFb90J05lWA!XFd`Lb5n4P{v*m3MpeRMugOHgoGAmNPz6;6Vk)s1AQFg2ABqcJzxq7 zQmD^BVFtl`LS{G|Y7qdkABzUiLVR$)0b&A_TR$W3qrQA@(yf2 zR5=3!pO7sMpV{H?nH>%b>~V-Ypg9z3KcA2Tj<|Qi;UHHWxxfuaZgRt(80&@Ham0-$ z_Ixkog+skJn$IAC$|vN5BP0UB=419tgmCnrgo1E{L@*8ug0cHp2)s-jmgaOI&IG64 zP%s;_zzKzAzv=VUF-vTr2v}MIYljhhLXkMcV{pWDERM_;j~d|66vMzLlz_wIIOa5k zQgK+2jw4_*uoffrd_vhcqBfiWMSbCPBP^PP_D56eAZ%^-qLs0$P~Sj2m9#BmRfD8n&@Co};Tm0hnNM(A+&4*@dBUFAsiuh2#1dkBNe@1Gq&gJ zvz*e9Ph>D-uw*b`Fk?t!FkmoZFkwh$Fk?t&NM=Z6Fl9*G9udLvk4;gPfq})tHOLjL zlYviw&jrNdI|L3b20r1{)63&o6a-4ZqCzJuz_jq{>C59;6zUu&#(X}@iIQ%@F zT|NCgLqH-B%qPIL2E^hMmWKwNJT$JgcR<7gH6S!h9@3HG6NbrW+(4Drh3d&hE{4+q>`GggrbO_YjFg{!#)OMI_+Mx*m=9)&R{(3)XOv9X|3iA$B z9A+`Z+YAhhAp05kgq5MeAqO^?fq?-Q-q7_su=tRI78Y{gJjVdK>K>GWg`wsq3&RWs zdk~w!P>a?;=@w`b?}A2PY6JtHn}1M0DJ6PB88 zpTr`;0S#}J>G4S{;zDve7?_;EJ_dPjy& zS`XquZIzooAH;*km)!LIARaid_=M%A-%n-{=j4V4jokGA$t)7}(14L^U|@3!a`bbC zBn1K99+12Fgyj}6up1yGK!Ttc5#aR!G5LgLelT!31-UwU2l#vXfxQA27vP2FG`SlL z%s%kU$S1%9EkopfFtEA!hj`XIdqXtvKx0Z?fPvX16c);S0z9ysqQSu8ALbeaQVm)L z0Nyjhz$Yy4z`zpV2{8pM4(=}S3Cl+?u($;ILk;2+5S;_k$tNsdz`zn5?g$gF7Z8O8 zmV5^TlO5D}kU^p_gBCC_1=)c#gD{_f2-FAiI~bUPz?BbFd=HowmcPKj8U%L{pMdZZ zsQ3#8Ru|WR5O4r9@Ck@?fW+(hgcTSV*uWBsAOSuB5pXc_2`fl2umyo7pyJR%PQieI z9U>0a0FnepiSQi|lTTQ|gMm>S!~|nL0b!^I6*3qYb-`jFf=@sg-2Q41sn z#(V-oP#-GHU|{nJ_V9FrI7mQf3rGQc^PJ)f2Bruk_563_Audv4U|@JIGFi_l_oGSf*k`g zpMg(60~)7F8yJ{E;SziT8qgw6=>!9l0kU`vNF$%H(gOxYTM!eB`2;jzmj7U2GJs3) z31~ol=&3Bgz~bWX;ty8Oz$c&%%@)cU46H8x_D~5v0reD+3O-?F2T(!a;}6NHd;;pw zRIWVzeFlpJ2ef&rJe@z2MS>#-s%N@>CW}P943xKlfyFffR>trNsD6QpUtr)2cJ=ji z_V@Ak0||jKpMWZOO%tE6@(Tub*9ceV&=6?b111lyeE5V_I2c%b{llP=d;%)qh~pDh z(O_T=^7Rjkgvjs-C_$@X6$b`3Uyuw~f=@sZnru}f7+8bcJbl1LCIg>;42(uF z4_U4SRsffWhMT$u1Cu^HQy^IYllNd?adw5KSma=V$!9Py>pR0L4ZeDK3tJ7^o=|`m zV6c{=dItluemGnMLOryJgQ0#01GBylrg~WMfU3TpPgwm01G9bv77gI!!zYZYflpXN zf`M7z4~u$ms9{m>!NBb72&-2ST?%zj%L`nKLTf>ok2NY7n8UGYfYvn%=;~K6F#BLr z4+|l5^*0!pBcSR*9bR~lYCvm0bPF^&7?}N_8bGxttW%@`^D&wQnidQ!&W?sqFC%;m zk79&+P2$KFtCDh2V5PjW2Oa7Y_K$-)c`RN((FPQ2oFMN z;}))d1;k)<_3AJOqpQCGF~1((%Yatr;8Y2!4nXAx1D~)q2gG1>b+EXHIY8ThfejP_ z!C^W&qSexB(RmEFqzYt_nOXKt%`xpD=82 z0Iq%q1B($h3!!0yroLWS=LG|cF%}J~ut0`3TM6-D4$zfgU^Rkwx)45Ag+`J*%seo^ zo=+Gi05>3mfz=4!3qu$H>+i#8xcU_gtj0vB$Iy3!f!VL#6C5s}q5@tP%EN*d8s{*J z^aL1Koqb##A)OC|!{7rN&@vRR-hqKR$RFGfLNy=kb3S2^J)lBZSRR_LK?0x_7~FsY z1{Pho2?z^e>R^ct&WD-<*S~>*)d=2iMbZy-fZhS<`ZbsX^q~D|xB(v+Sd6ea0BQit z0s7D!4l@Tv!^C0c=^HSx1oP z+W^gu&>=Nk=D-{V^QdY)0fXQ!Z(v~6g*zQ7D52RE!$N4026Hgn1JEdfMOi&e0Zt!5 zJ2My-Ktl%RBbb3W&4Gpt%tHni49rG$LE!L5O`T8|!d(oDYgn#;@u4)#Ktm1&W+V8R z2T}+@&4W7>%7>T_%KuPFVUJKzQbvz;Ayebc8t;3t)rT80rHUnCxt!eLGMHaIKlHP|G4#4>z!Zf!P4= z0)&fUm5m8B|HIX90I7$$0E>FqH~};SO&%~X8NieyLa<&KW&zBnFbhlt7?=$}PKFqO zNVMPzluy_M+FpRGcVJ)+#o_@-&mA)aO$!*9L+$EeVUF+tENak$&~yOXa!%3lvxgz%_tJRrrL#3PJM-Fm>oYzreum zI!xlIJ_WH3}W&L!?QWGhhPdd2NZIk@<7-ugMrxvUIHO}1{sk+lypka>u#hmn zz`*S21nJlyM~!?vG||9<79RJ|=D9i4#V~^`I2f3H9l<>I}fE7gO=D-|= z-YBiN2w-3dg`0@*5!^s%K}D>A77G}deIZ!{s{_#zc|8LI)Tg*yXz_u8DHKcXh(1A=7Q8wWrRV)WDx3rWii1|~yYaQuT48$2lC8qnh2as~sF5xC2VrXH#e)>VUBaDsu! z2+~PL2?Os=Y!4N!rN}}AcI;6 zb1|%Lfbn4lp?ko(f`Q2eo5i3qpMg)<8rtuWuZI?yFbiQpZT*3P$puT|f%y>9IztR$ z*cdP{X{keF1W~=hJp_vaSd_w|sNM|PPKWsjp3k9`53I<9yBO+Vm_uz67??wSVfhmg zRj?8f*7JcE?cfGBAFSH17gmM_u?@6mq?`fmT7g%}^9iGuST;8pnBevy`4m=Q!P+b??4tJ9D_SFw^^#vtNBzvGuIQb3G{15YyH8gR+d;p0fK4Cj(s~P4KTu}rsaBxK> zv>gFgHv^jg5dvVB!bb+}J}|JkL4yjpQh{YBn8VQ%AIyO;d2oA%0nw5&fwrXJ`5!i( zhaT6K&?yR7(8@!71}iUM;;=R(OddVg*l%E94TVHGN|9X;%cn4dU_lLwLx&0m7Pvm7 z><06h70iK9huK40QgHnn7#Lv#OGzhDQ)CjUO1;oG>)<2|Gi53=3K~A1V%MuOX^_7Yzosa3?n($jCC(;h=g276q`R z2r~%ga+d-IHlJ`bjSPIku%L$N!?17#1Dj6-x{vvU;c4jrq+Y=YDwhWgY!Ne3xHw^~12;>lg z%`?Grfh)Af3=1k4A3dnu3K-ZOeLUU$Tp?iqDwL3mZP+9qtX_iELojhzMOqIlXkb2d z+rhx-2{8>667b#@EIY!ge3%1aK8NXd7hquY!lxe^GEnpC5q*7VqJkNSZUH(UZeaie zTc{sm%@1ru4r&3sK7sLJ!#WUq>Jjwm_a&F7sF-|VL=IV5c+JQ2L}U- zv%fF6o&iM(tS{mbz`*PeS^9wpSy29mjT_-KFoS^!vFHd|a4_%*8$&y^IQ1=HV77s; zKtt$LgcjYPstY`>1Zz)%CsP;@Lw4{+4y;KIZec^#m4L>LU=3GTRCwHAU@`(X4M7P2 zVIjyOkb3z1D>!Vx`9BR56vD8eg&E}O!N6pMB`RPBLE;Xv78w?|a0{SwiE#6#$M>^H zWI)I3t)Nx4GT0dm3=Ci=^9j2{TR5=raRG-1k~lOWs6oeYlslk3AZW#bu36});-fW|Z|XZk|(4lHNG#1)`<4K5GMsnEO!%gHeLdRXZSlYn)Y zVErLjc=+yMU=8sI@`o&RLzF!j^P|uT7G?p=fw1+GFngf#_3-@;FbP;`3-=K;{$UP- zse?JpFMxs7(a9e&RfZJ7uu($vZ4iDh7+91;Je|M+%uvrK0E-y#GD!wLVSfn*CYUrR z;vjomAj(0dtiJ^Vvoc%(LO(=^m zG(eXngD48TLi5jVNv1#gMrBjX{954AtN;L1r#u_IH4|7 zgwE8kgIvic958`_2|hc3JpBl+82N+)HZZU`I|c>0Lgz){7Vtv#PtTtQTj0q6o#f*a z4*0;p;_8c7bIb=`8V}L|!hFJk5)4evki{k7@Wha}U|IzwEDw7@d} zT1sGO_`$#i)_^ur4vS!T%?)js1VJr^djL9A2y;LXXe}OWZ8RuP!IB!RL7@drL9omX z3mLcp6$~r^j#yS(K`Ss=VE~%~fSCg`AJ%GC1T}I&Z9Wy4MrfM?ZqW_~=FkAxYF3 zy5QRoy~+tW!NB4KYf3PHf(RNsPy<7!>(54vq^Ut0s-aNl!<-8Xm(UFi%pR`b(L8X3 z!om|a&Vp0l2L@Ju=MZR}fCx|6z)mDCjbR!L%mI$Dstln~5*nT`|HCR!SO*T~;IQfP za}eIc$Z4FQz~B=`n-FDSfR;Tl(;2{142X5ZaB=8Z1BR^&7}$K_L%nsR(^y*Q!>~*aH$LmDF!~_hyn&CWpLdC5Q<^Mi?|E0WOs>;s)w+SkR)E+L00r%o=){AXlQ~ zwQx{9!+<$o3Y(~b6*&>mkd!|GEtMmnsWlSXR)D!YGJ}CB6duNi5J3-Ocw&V*040c# z(m><|2If$B5QEGEm&$y?k?$5^WZO&hTJ zP*|c2f@UxHhHI$9VLc<5!(cv+p1{By3U^UG!pE=z1m+{UI0%&gV-y&e^q}P)a*qT( zmBSnu3eDfJD1xhl#xcyNF&h||^uWC)P@+J16s|r1IuZ{vI1HqYflru_!Lb|+OnO)f zDtLDs8YLJdE3}}3MUC!4h9EG#kRo3wX6lYCE+aoLU(e7@&PU zm=ECwLM?)eLxUEUIAI|Ni$d7yJ$L~Itt(*jsIb-@EVtA{HfJJAELbxR9uf`=>~?;k zzD|&l8*mCiPNc99z-V`ZJ;o;tZw^B16j&bznh5LRqp)#M1#p)`t4Wy8V4WQdKD0ps zH4ttd>=0>~dUScn!j5djYJON#NgkTLU_lF8Oal{#_u8Q9V2Ke{{r-bB0MUx*`04!1 zFdKXr;RcN`SRR4Vu!w_)C)C@p@P`EtEPUY!2-p!LV`} z>Rp(FVKkb<>k*5Npgw?wGmM5g1V+b0$If6$7{dY3ECI6+7U6IYLQ^7S@~Iwk#VlMS znh#(uhh>F?2@I@`K0eSD<%mK7*5ZdHAlN_=fT94_ipLBASjfThBy64$o)#3q;SXP6CY%Hv;D%-1|IkDU3-aU# z46Fe@@IfSa%>iqrz=9lJC_tk?8`_D$7!6ARSICGqGAzHssyK85VavE+2Er#TV8tUe z(ZU>@GQEBkqLhIpL0G*78!3XB1`FR5XdZ)^lFGoq;s-s@0J*e>$;)&wuseqa1-U{t z{)3VuxMGEj3iAnD%0R<0wF0z37IH=nvO%fPb}wx13}$fZbpO>X5}e@ie?DQE4U-ia zYnb_jQ>VXQjW`)16&h)21q_@%o_^kTevZD7Q9h7E5UB#)@U$5WtRSV3z7Uc+Xu}Cs z#KGbO9$HZOdf4&(FxRG?U|{_~XXe7bPC0Gd!%QUIbL=H0#zFj2!1Za>d%oQ@Kg0L8FAhfQBg;P2- z`N7VhLRSZOAT%Oi;gaFNzzGRTTW3#jV-^w~0t(Osl(B+=O~cL8&js9B1)X;URsbdV zgfmVsaA-gjfK@;w5Dtc=2zdDct1O`*1}g?2Bdzs(!stHAfVM>820()h)b|Dr1Hvjf zc(o2KfniYrFPETIfiARhf!<8Zc)`G8m6$2fcw}06y1n8gUQ2kEvz8{D-O`x16ey5Si$y!jDhF= zdOl%T5N1L9#^@HpLI4&rFdAk7tZ@$8{D2Yl#7t}dR?y(SlNU64w_eC@ed0nSg62Fg*9BE zH6W}agPEQ){r^Tp#RLmmSY*O`eo!~UDlAyF2y0uxY=z0gTmzfafi-jCK@QDtunlVU z=wXYY0h%aa7P~{^5Ee%;8WvZuR1EKW!cr}?UWUarG!7BtojDB*tO1Tem{aM{q6I$v z2+bC-dL z*aI5Wun5mxz`z#l?HLdb9w~s9si5%=n9tCCfNmhn#~5Sa(6SJg24D_=sfRfjmR4YC z1C$29bj3#@$&N!^HMHEd}myj+2H66;}2ELi@AB@$R- zf*B0Y&#=k^nxA1&RxpEs1$4{^h6kYPU}*$qK2%@5aA5=^BRJiGbt2*r9>m~=2%j*_ z=dhLn)Bxea35<;3L*vl&!xAqn?qOXZxHvcp>iL9W^W``#xWK>~90IFYFx#3%28@i+ zV9P-S!UILnlFtL$MuIuGD1d=67Nit}>*4hzVlo$&I$;LDnwxL~8W>pZ;cFW)Erj_P zo~@xBept~AKOLotfk70MjnHQzi>A-tfmrYbYyHBkFIHe+v;w&uj1ku7Lt{D}+Q^3< zJql0C#n2>I1kL?$^QO!1L{x;Zwll0PPP8ct7#Sh=7l53Fa8(hszJi(qpI(Ex26o(f zeG#-!gFEX7Ba^cd$S@GbVjwtF85kJAY7prYW|0oG_=i~p%dxP|0xYLOb7VdI1Xc8$ z2-5)1fza@Ug%r%eB_51S!C=RrIT)G_F_Hy1*YOFLfG3GTM?FAWEU?}d%;ku512Pzk zkD(C@Yf;0?EHrUg8wY*W1-PsNRfKS#{9t5?!s3%saF8R~ldw`5R=UD0fR$OWG6!aE z=>bM2JuK#eG8(ud#1%v^i(zpKn?oTsgkb7n4k?phWYPl%KPW`OX$v%!geU?S&R)Qrpn0H{#ghdeC84p0K^wQkaEsi*7KoI3umUfpwQ*K8J-EOnsHZ^bh-4#9`wLFn_?D z11o%B0gOH_02>y7wM$^ms)U9Eys-^!!=i^vRRJTDzZ*CbKuG|Rq+kw#jn=_(J=|f? zGz@bXOdQsRg^5>!>jlgc)?xC{QpXEkrB*XAvby@YfE)!%+wj~9a}dlSmCzm>)BuG3 z>HY^1g&HiOqUQ*h^{{BDzQD-p52#jShT^+fvK;NU}SZ4cf?Q+b7eg&JkWDa zHPqSY5mDp8$QtSw;t5&Oif{nTK)89}!Vr;RaF|ywTr-1_HQd9~2Qq|KNtnV`oN zqohz+S^?=pX$Zh9fW;wf`#sDeSeXFQ2ns1!MFz95&Vi8`c0e+6h#^}D)&~nA1!$oL zX%!+83(O%f8r?#eLtqYrJ75DN3$`eOr3tvlpdnQZJ9x7e+Db=H?ezwXtlDrBF%u`; zKMt;|*~4wb^gtlo z2hg4_%m8?hL*t5A3mc~EA43#tutER{jw_V5qa4GwX1 z_J%ER!Q4~PG(G+VVi*|KR)l$_30h9WT+}puKC)_P_~KICJpKL&7Ks4ppfSuWcsmo^ z=tnyB4jOy0upvBXnu7%+%ni-c-A}S8z_JFc9EEq}=Yld1mOD9M9WZF4v;ak2z)%kxnSeDF;NC(T?t&T61kJN>Z=7J@2?+A^3jxJYNGQ0z z0YxONsRdh&2eTM$X#=8<+zj;zEUz{}9RR7bF>Vv)k3=Gf+#o3XCjyknLdr|1=sU0p3-8BoXUSJ-8 zg}1Z;=yWZ}d^IA6*7FI&t~G)w>?mO1aPbFkt%HxOAT+?&wF*Oh03YRoX9%c|;Rywr zk>Cjh8kJ!CTp0L-J7zGlA*@5x-;iM}M0ceF8a1#K1vY?zPq=gX@pCNdjGfcppF@U4#yc2iWK}yl({^euuSW;X_+6acBvQt`9bHRS(k$vj8%2&L<4h08
3C4#hgjooi1i_dL1;-BJSRYuZ!W;%G4qy&}W{fOh__{1;rxT_C zMt4JV2rSflBpBGCAp}afP>cv6SOV^W*3dA0z0==cLR1Xsa}Tgfz+i;{EU~0QOC8wY z0!$t@8vr-GfPu|9$Q3&IgXx-HXfFrey6&Cce;MH%m}g{Y9ixX!-wFoS zFh?KI8NuLO0BgWOW64Sw!(i}we!>R#PrrW!5q?nPFieBY10zg>Rim(QKzD9`0t35K zsGFN>5MtsAxspP+2Q~&IzzZ$~5EjAK2Vz)o0(29Y8)RV_QbeH}42?JeNU4D^7b-67 z2N~$DhY#1HTQorfyx`Lj(sU*wLZMfc!9oUhVJwV~Vg3XLw&0NZpiuOEn6My*C9w$~ z7`R;hTy%p&U}`~G7U3XRgBGTKq67o0o2M&uKN~_F))2A*?JyMq8wd{x@Zb;wpD=7X z5>_*!`(Wa9{p*OyOIX0-YG=Zow}Fu}8Z?pM>EjBYoJERA^l*dgo4)=!W_pE{s<7rb zw6-O=vV}FR`p7{9g|r>xG3A%wiY~vlvFh!f&z#0}E)W8Yr%jb0n;uf%TJMAqj5bb%N|bm`A}4@fZfgx^vVeir&dJ{evV$8Dfw1FqwV{*1 zuv`PzcY}cyqz%1>LDyFgYe2v>P8DF}403f24GQ*z-KPdh3Gjq~o-L<(FtS6`Lx#1{ zBOF)N2n{C0IDnwWy2hE$)BN(_d z%5>9;Qd5x>@CnF4GxPKcuzYc9UJ9x_2Y5c5Pk8zaumuIBCAuZasR#>Xq0Q&%I~atg z2QqR9PtU!}!o>lt`=(E?zsn*~53NsTFfcF&If1hSIKj%cfXv|&o}mB|haGptCm;*n z=fo#G!-9c12L6T2E272wP=ZprB1d;}5lW4{a z2Ie666_R`cGSHsVj13@hgnDUcD9@N4e~(2$0eW%bj0X&C8D+Z3iN#=V2uOp|FQ4$t z>GSWgNN_+C^~~w}@3AOwK-am?ocGL13NWfxl_VoP^SQIp%j+yPiz*m-8RFavmn^vrwlb;B&Oh6p!yxG&)AF?RG zZrGhYT_41Q-ak5fdN_y&O#`#1*MoS_N^Q>cQEV`g9Nv8d-Cv?|;Oi zP!IL%Tn7f8&|oKB4`&x$#P!yE0`5>(&dor`Bj1MU293D69Z-2sRQ+zy!RNUv5c0_S zHQk_H;JGIlctH*ba&>gk^>&SfoOZ+~;08^ZbEmgIW>MgPrpI~H*FR>F;DBC9J8$}V z5D(f9oj3hGhzIRG%$v^tghhb^8ZGmtn}c}JEIMy`{1X-l4rqxmZ+iU`76lDx0W_b1 zfj22Xza+OfT{pF;C?8Tr@d-FX6VCkU$3Z4R?VLaTJ%|TQ;q#}9KSd<5`P1#6vM6Xk z2gBwcVBmH2antqjcXUB?-}wZbpjXPwpWY7A3oT9;Oke+$MV!+KdhgF1xaNN_+~ zTnnbZ2l1d&1Pi9~KVy-ArRxRL^+7zSp$n$_gLqJHFPNSW;z85Fg6aJr9`r)ih11tR zV^Q#fj_fQnVBpRxD@x4OO-W5EO$Q}Pa5-fMt??H|FmRP;7NqKe6+xvL_yp{rfxobV zK{!3NWcvB%ETX)i;@tt7oEA>Ef6k%-%UTPk=Rapr;DDAE3#U(i&Z5B!z1Ve;1cPX5 z(e(MxStPjm1gxPMbLnw@t`5Nc)I*c7WfUZi>KRzc+gUL@$~qY zEaIG2;MM&gjrAZ&Xr@~-eLjc>UKPqGykz=*5D%J)mrTD8;z5grCDZ?dc+di7$#nTw zED{`0E0#>R2l1d63@@1;58^@nyJUJjhzCtEOQ+8V@t^}$OQ-J#@u0=Y(&_g>Jg5yz zr~e1>;QHiWvq*42<7eq~``0WA+|c~B^Z_(CfOjSG2`}eh;3_G|H8Rl6P0cHX*a1pa#?abm`Sj}`lc3`u%cuVb@u20$ z^6BbtS>!p5p^>zFy8l}i16awpe0uv^7KM6f7G1%?!0O@YVgRY`_yi20#;-7dh(qdY zJ^@2$K&YUdh408tf8OZwNC;A6ja! zQ~*oBeWnjh5GyShSOUTj7U)AukCg$S+tQK5!Rt`?gjZ%Tu!K0l8X|lG`p^uxvH>I> z3b7V+3YXp+P^|I^ubjca>f-1GHHl9^587~9xd9>$@dBTK9yAZEJOK&`e}sByidp#p zA`Vv%&4(+&$B6~G8-T6m6VL^PG^ky>N&s}uSdcp;^7#aGp>eZH10oIyB0d3KXi%?m zfQo}{;1ke=M$M`Sh&bf%Q$7J*XcVj}fQrM^Lo@iQ4hA;e;D8`^W2lRCpi!_2v{M5l z4%MIoje=Fv{Xeisa6kii)%1K24;l@truTz*(6C%Reft<)SPj}DJyXr(f#(w+Hc{t@I}VpHZB7LDZ5pAkkan8TS4esh`U+_x2z`Z=@Iqf9=|$)(q&Xt=71A&i z`U>_9ADsRM3Ni*hp>L3A7y1U7>w(c;LSG>*QlX1b11>@pTm<`#Pv|1lK^LJGUxY-v z&_$?&EnNR2n)CE_dF1rGC!DXn|uT1Bkz@g9hXS)3a4td5u z)8ipjJ%pMMq4tBQPt)&%s6W&HLn!%)U=8*YIpmrCG)zyJz#+%@XL|ia4lyYq&~A7E z*kP@pK!t|W|LN-?@;4Y51cX2mPz?3(|LON9a)?WU4l5G?9}$QmEzB^Te-cPKf`LJR zA1Vc+AfYeJFx?(3-NC>hpav3$Vz_iZSb7Bmg8;YzhAurHEPaB3K@iz#&;}U8^z&fp z7Yqyn;G7QC4LzlfVfufNG$RKCgFrb{3PeGr8K>({<`9I%r> z;C2ne^r=%g1f_()$r`LkvjN%A6_XVi)uyYf@(4^!V4MDD3P+E~*Mbc>f89?VPIFt& z^LKkk@w3(z&FOQda%4$@Tb^J;Km;>vZM@LS>GIP!^ci1I_n*cgF3APXi69lwk_8&s zLeuM~afnMvBHYWsAjrVLzzkB#C(!ROeZw>kG0B_Y49&p60IInRg%}uE!SX`Kr{4#e z{tV_5kS}}?(r2ghPv;Q#ybaE`43NY1@)6QUz_Gx<;0H9&p`GZR^2Jiu&j6n$L zlhfbN;E<32r&g$C+O(;Nl{#+L~3 zC)4?7afnNvfQ1hz+J7OW&ri3X#Ubu>9h$(H4=^w=i6NvM+-WME(jVPIg&MTlR9iSJ=xV5&!m zADjLkGaCZ~qX7d0(-DO9h3WAi>9gQM1d_R!9wMZl zPwxjwpMt~z1H%#q2Bsef>6_E{&*l(kd_4X7Yz}?NmoOi*`_}Y)urxGfg3<(w5<>da^!Xs^^WdVKfq|h0bXhw>`rP#M zAn7}>?C-(Az!Hy;elh+3Tn>H46VvtQafnMk0*@Ji?!9DSU_tW#-Rbcl>1!}UPB1XA zEER;8$$zK!gQV|3BZH-dfq~^P!j2=;_k*NQLd!Qs7X}8F2MFo2)8B)nPs6fG0Rsao zBSQMtbou!l;!;nb-e=-rU|`ing#Gjx(*x#nh)EuY1}^9bde&%!_7l_V=W~clJ^;6O z85o#i7#LV<5z^15uLnt=g6d}JU|?WHDw-cmzYmf=0v@w~6rQZJ5xQ?q=U>1fAp!2u zLDB~64utI4>Glga#6538tp+t~SnnXDk3x$SP}#})3?cp;8cv{_9$4SQLs{H^`uqi; zk{Xt0B^VgkSP}Fczmw zH(1Ca=J^+vh3WSfafma%oc?_ghXHb3#h!vt^l-ZUVh(Z1XRt&a!N9=Yg^<2CJ%2HW zxaVV7Y#1;wup`w~*PzLfVFm*O`)Y)?lhCS77Q7Ub1F2|!IDJ1z`U$wR1F7OTN)U$MoBkdoeG6LdGo4{z z;Fy4rK0aN3DThAev+4dzIm9Jjz{1Idfq`Q$LeF1Ym zh;vC#mn@g%Q*xk&%r`Ug@J(! z)ain@zHdx_znnut0@QkjI+IHaVZ`(4@+&wbAm%`%xsWpFrRn}FIK-t+!oov@fq^R# zQLvONOmA4hAtw0{TAP5{0bEF_@96aPD?s%itmHVrz`)gqu>02Z`ylC)(3HWnhJk@= z6+-&{bpDkb;-2>$AnsyX!oa|Vlq!!w8y^fi7#O(DBD7tA71;p{3|x;9;wPr(uLL!- zU`6j61_rJ_2e#`D6{r}8_VqwLPVTh`>9f=KgQTCrVnc#~fg7b^^ByF98XC_G z9SjWI9}&85OqXBHq0e|>y8mjhOVU?!=u6&*7CJ033=BM00iS96FNF38crWdT? z5c9kVt5$j#7j>k{ zPXE7#L)`NrG^?^IFfj0ZK}es1ra`6?3=BN~5#kS_bs}Q}0|T!#Lj2zJ__ZA3k{4jb z5@@t{E<*an^!~LR;-1rx>O5Ygp4UyNHjxwt241A%=LR&RFxfCL@Ma*4J3swB$hI@k zasia2dAkwPx2DUlgGB8*4skC}Hc-$&Fz-c#s%y{y1=Ux)ND2QUG{rMmFfj0bMFjM; z3)45O;}Da)04;TxV;C6tL=onln|^;Chq&ZjXj#de!@$6Y)T_TYoqs)txa31b#I1Ze2-(xn3W;G20|OsY1M)J|4~zl~41BW?ZY}GXzF<9v znB*;3)=^<#;6v(f-kp9PJ_>mgX=cdPR03{BnV;PPxF!0MEH!b@?(r2Jak@*1w13yxs`gHpK z4IJW(&!=DCz@aaB4%Y2E!@$6gRCeB;F29jOT3 zg4Sm9uSa<4!Swo#9O9BsAwduBs`4Xsz;8@n4>J8cEbHM2Orb9Coa|r{3fF(lu>~wpO^jTPJ2rw`RAhl*6PS4-OAH3>F z#3iSLhG?L{Ajp6){_*s9kn|~7FYEvVgP;aN`tS;tQPlM)cP~Zq6b)~LO zzrO|Ci{;-6auZZH186K4slvQI-5w-;6dHSsH4F?wiU>=eP0t5OpM+*DP^(wS1|j`u z`h1Y|V_4bbz`!6Bj*z}H{rpxAajEmrEW|K@fkCJd;qvJ@)3$+nsnBAUA%lTIXaz#| z$?5vrIK(CIL!%bdau7O!kUla!9wdDn7DqV@3_?#3(od%MgQRc6D)9ma24Oyg^!e%g zLDENIF7IJr5Zr>0J~I9NHVz31@G3A+z%noh8zW?oPnX}$Auc%$G-e5rWe`T{|J|DI zza88eO5e_*FL@K%>|>n5z#!a)Fy!>~_1ihbJzv1wufo6}yZ|A66k4KyhAxHIA;ho2 z(w+5z#$RRep>>LOG^xShCT#Q1~4bE|hF|mtHpKy*toKXoZ z@5OEe8hvA6U;xn!3=C}G{yLukyBSm*>T0++Xq6|ZuLxCd1TN9|1lXOXE1c&LHw0ZG zge(n?G(G|LEa(6;v^ih|6VIC-aGpbd`tHE)f za7f;Q%0b;^2rfeS1lZqAe{h~dOo{_kvV$;G9ug&d0vz+E3tZq3XIwVj;R1)a;VP&p za2r7C_yjmMLB*lEVWxAkOfR^=Auegdz`zKafZzfthhaVe&X(y5E^vrR@qjGuMFb>7 z1)l&9+w=<{?V!vKnlwh!E+#VVB8RvnDCsA{E)s)i1qJ2F&gjxlrcb!YA;a_{G`pllrVCu=5SIisr$FU5y7Z3e4wpH^q`+$vK;;vf zyo|y00+4pl+!8kFH4te~0f0qXR%7}FkZ#aSHa6)cU}?q=(-W?6h%*{YHvmxu5Z(?j z1>WNi%B*Pal9!o20i-x(`id(Y`iue76Bs$gm=tQJKe)jmCZz}}4t`>$2(1Ov6|QoK zGrj>)VocgP(*v$@h)Y&5Fo4EA7|`r6`ZB!%B(1~1zzE8DXwt?N(>H*mLG519nfB?^h)aU%9Z-K1UHZ;+2avP~1LUFzG-=b2=>;I^76!;s zcIeV)rY`_VgVu3iak-hs^a~(qP?`Wu%cJQwYngVPLtGM6$bh!+qsf{pOg8{YgZdsI zDG-LFMeyRD_s^IyV39C=0!SK^>1JY){xSUkNE$Q~H62shvSIoMkTj?* z3JP{KyRG(2SGd6;E*ZkWzzDiX6iwQC%Jcw`G$=XMVH$4JGQ9yL{Rg^|08O{;gy|bV zY0C~Y@#K%G-A)6P_QWMYkvSEMbjNgon;hbjpppiZgV9X4`!U@CBwfJ3z-W%C+y27z zf}0%Tj26>3)N+b43pmV~z5t~B1_J{l=%NlZ(;P*nUjQi&n7*MCq};J%+AR)oNzgzL zsB}SB{bstsEe>%;h3N`l)lN>+6F_{o=?6em!So3rY8gau6Na+20g>Ms7wz4NrT#MpaKcaaF-R+8$i;a^1K_`%GW`Ka8dOw0!_@7jGhN^ghqxqYp1i_izvt;@QkT#HXJ7$&TRmQ-;01`*j=2bUc;T{L*jFA8kr82$Y9)}oH zpb3Z;mjrF!0Ckn2EsSQceS88zQPVfv;}DkwRe>O+#>GSV%tY8$GZt#FZTv86&j)55u zictnWfe?l16F}0SQvyM@!+ZpjwgBs9^ng$SV8x6n5MBv{Ism35L8I3o6QCA=YZj0N z&!z`F%mC8ktV#2I_Q<}zNJ?f~N50)?&^Q-r|u3r{)3r{_QAkYH2+vl;cKF94~qfbbk3=`SJ# z!rcbxMMUg^>i;l(!ZQx>>F&=sBp6x1Y(_qieley<2?$qV`hjO0;*2H`-oEJ{o^gmv z!dm%IFMyWsfI>csW4gj~4sk{qP+}KjimIC)0OB@HfAE|`j47%IBD(-8y9G*rgQ)rk zQYFsFGTq??hd86e^bH`bIuObQA{YVT<$x*4ZKwgp2x{Lk@Ciiko4()$hxqjM&p9L* zFF-UtfmjuzH0>paIHMNGCNZWMlj#N^t_M^y21;j5KL8Rgn?3rP4|v5PE(vNaBP9^f%s42FVnZOR5+D&1TLR&BK&W%mAH3oa zV~V{2=EAcoES$kTa6W<94`6A=KhqsvbBIspf6XDm7&g7&HHWxl95hg1IzWXo1D`-# z%5;I(9O8@xU>%Gt5Z(+3bq}HyR3{-j7^d~hbb~h>;*1Q_KY%C^2u}k-08+dF!uv73;2noJBiD2R5G4TNNlkYE@iZVj6G+e}dO)}_5NZpUk~{_t zKxj5(gl5CUGhk`PYt!Cyh%qHTf$%;|Kk%Ldlx7XybBIfV&ddb46Q&i^%wymaNb;LL z0i-HqI!F~`0z^*D+XM4;*4lNmszi7#~3NewqFOWFQBaLbsL) zS|BI;P2cc=L!2=Ltco#VdH{%50^xOlDamuFo`tNd;}b}}Hr?SPhZs}x4X`rCHxTLv zB-~PXrWbrfN@`H=GJ%sEpFm35^a~$3#2GWdsu*h^R0mY=957e%9h$|U<{AT^K+3o2 z37Cy=H9k=BAb4(uTY1}2!a1z4KVW%>hlx0@D*flnjJt0Om=;YA#regN8jA_yjWYrZ;>87cLLJafmTxbWPvzjYC|r z56zvR#y?2)gy|4vSHOlcKAJA@9i;0C#Hvrz9l+c_(+j?X-2tX#Ajv1w03vDw>>=WLHgp08-aB-GHA>av)4^80IS~sQU@xw7yJU30$?fyEC?@Ap%KXpO(HpE(|&V^Ggg2Ui81Ax zOg8{=Qy@bd1^=ce{N@ms1WkA$1t~MAx5L0EP{=cV!fy_7Ly(b(#`D4j;PFpBfkIGw z2_z1Q352-a^aCJEoTh*H%^}8AxMjM+9}Y35q7V=bYIZ36;Sgus0cs|TF%`d=9`J`l ze7gT1aB~O5W^@1xF~&fs3J5g?LT!LhXCTyz=>mVjg*BK`fbeV}R0M=7flw2sUjV5r zfKV0F{&9#iHb6KFAk+#7wE;ry0I8V%{4a+z6JyeJmVX@Dj5i=MFQ$L^#~~(F2C51` zTei?TKV^TWEBxmWmjrE7!6IEQ0g(m`>SB}rF}(q#8`P!-4QHSkUa?^M29PwU`vPjP zp-ERJOn>m7L!7Z@>HM^yQ(@_IR~?yJz$qqG z1UY1={p)i<%z5#3>FhB_SytA)Pn9fr(Sx5L7&a z78^iyw}NN=_ypQ_p^n(Y#5M3C`mnWfKoTMt~^;X+4m%7}JcJ=>e>qVoWpUOjiKYPe8Qzbaqxwai&=*pu$UxX;#hj z29V^eBT)Jdl>P#uK~1*?R!&fNBLGANfJ_88UD!Cqm}Zwi)ZCd~z{V-gC<38kAXL@# z1#FyRQghJSye!Z*@0c203akk61)5Gdy`@CnRE z>)f-z#0@~B9AZrKuS|E~

9CWCDq%MJ}LGeley+InxiYgT#+O#1|g`@x>V*K%|#C zfZZUqGznTGLz5mPR`>*#W=#(Oxp8R@#LY`5O>f}f6q8yy3#uNPl0nNjK&{fHb0F%L z6+oP`Y|ZosApOhUfM`&a10D-sZUM1=IaJxohUp1hoMKF?w5Atua*8wRfku49j8=hM zgA^F7prU|*Phb^j3JW9-vmGXG0SSy%F;L@Lrh!epGW`KJ$n-bU4Z!>#5dLZth_cn- zaV9aQ)oIfgfNam2J^`d`bZD-B*wJv&-4#moZyxxNO-*l#I*H3(;o!j9$3N$R!Q5z&6 z^EVqjz@FMrF;W(r8dJlcc4@N z8d(Ab3F{$mKdIscHSj0hF zc-zyae-PjlW7-Z)72Bsk(%SY7Q2Gow?QFjTNpd?FrYi_S3tLcg7#h$V(B}9Ksp%U) z(xBn)P|Ts<9WjuEzoP__katX)E+E7y##Ky?rp^9k(yF@1tCr?@1j-T}?>qe<`bnSMZ+Q%q_XTE~VBG)&IGC$KAT z`Uhc7F~(if=l|jmXWG>;T|oq-95&Sq4N5l9&^Ac2+s3+EgFXR5{`dpmiO#AOZlHLA4kYsm20i31}7(mkW0T(D80i}DU2Z(cu zGoG3*Ai*idbl@B$aUQrd-2u$M21%R;Za@O)z!$J(Ob4N*`#}>(`FgMh(r7ri1v1uq z@Bmc&!t@0a;8p^dGMausl2eT7klXYGFbyfI4?*2>C2?1vTrXwX_TIvYe z02Vv6HaK!>x_~sN7}Jq6kT5v%XS#zlC#a(juDg#yE4ZUc5LX^8gShf&1tbEFwt=h{ zXPh?OVH#)xl?`;*y}+7?kiKx*6D^!%8RRraQ=S ziZiN!gKhdZSx&*}^>Uo-QYS%!XCUh!xp3hD@Yy+h0w*6$Um(XRCUp`PkuZ5sLz;n4 z;N&Zay(iy+?PdG{X|tUQfaH}^IZ(Q6`UQ}^RS?gfngLE8OsDoh=+g#}=s&$^`T==P zF{#s_S{&qjh;0n)&?4;g3b4DG&d5Nb;*1U?`JC~9(iz~4CUvF?TBg9f59+Zp@Clr$ z17{_vGfhx=nE5dIHb~Yw(*d<-3DjI@?Q`Y_Bukz3fVlhYt?3SmoMKF8pG|)NioCNg zrWYuJ6Arl5cFqNo+|GqSg!86fP~;SoI)_&NvqJ~M&y_%IJ$C|P>$yANl*DxI1C$20 z=ERuJUxC9h4%cf6I1*xx^egVv{ zo1OsXFN4ajgUWA!xcKresJeYnbtjM#Oy8i!DJFFl)NTcZ zGBn9?K!=L1&YS)KZNDZ0@!~Z(h?lQvK>0>sa~Q8puUF%gVDy{bpvEcA7zUx@AXFNJ%7aj4 z5UL46bwQ{eNdNlUGzfPYgjxroHb5nhfJ-Q*YZsvWTM+425bDkJ4Vs){OxKkl4!rI) z{edQ@nACN&86@b*Jp$K5rVD6+)XxE%HvO6grzGR4=>qDU;*5{Leqy@*WcmUS_Z=k2 zu784>{0HLo8_*!U0S&?%a?=|$!M#&3r3c}eK`1*26$GK8AXE~B%7Rcu5ULJBHB5KV z;uL4>g779msAUjp1w?KSBs^}MfN(ECBp*SjClJAR5Z<@x2HN1(37F!UuAsvSS||d} zU^jIjTr-FoHwfhirl!Yhb4oClK!Wz>IZ%QXW4d{7dI8974 zOwU*4WM{ewEsbw6K?3p?8zhn4lAHbjWU(5A(t}WD5Xufhxj`sD2o(jPiXc?UG(Apn z#&r-^+&Ts|{M|J0Vt`vercVG#GfhtbQEcGI61okmkf7;V>c{jBJx+f{v*{o7IK`)5 z*W+BlSO#V@)ra#aJcf~=akJKGd zmm5pYy;A~-uRGB6eCHHY`#FgAJCIPm^9qvO?z{v0fa#taMA<#R=>o>!yag_+?m^3e zdwEc06_D7t*8~Zcdu@;~zc&k9o-o~81f^F&=}l027nD8(rB6ZWOHleAl!lgN_ufJI z-=Oplh_mmrODn1dUZ;9;1D zYLH-ks0DT*(?hrE4rZL|A0TA;)bwI{IKh1!OZ-MfUK>1f7 zeVxxWkSy?J4#d@8c7VrZnZ8_ria&wUKOo}YLO|+3BY&XbW2tYj$y8X-gN73r_yoQ! zn_l3=DaQ2e0mPZ#FHK+I#3?5A9dw=pa#TTw)xO`FegQ0h56!zUd8j!*RzRHd(+A?6 zpD9qf0^+S-(1!D`y6F>~ImM)Y!GaIsK9+dUhzkRsz^}IH2f*^6K}e8$ph<%hI+pco z(ew{sd9>~eC$#tV>kFiT{`(5Ve}9yw2e@#GN&Nw}F_F!K+V{r*s&2vb1{Y3oMi+=T z{(}c0#hCt^fQ^&-4~ku+@giPmj{E;0jwM}pbJtCbv!3z_E(VM z*7O5l~eZffuJ36XTuf8(cv27YLtOVEO|PpV2xaU`H}HO&9Rs6k}p;oBqHZM0ZVh0Q13qkYYwlM_iDi zT9A1IME3~@b#M9tu%<`gIdehgCm>-d7ElKRGu8!J5~g`_iZQWNK&X!C1|Tl04#cCZ zH6URrHqh}@ptcbt)D|9q47v%j2~D5i$tfnq2J#m+`7)5aIDGR9L^}f)WXw>I{oeEs zAlukMfiA|x{${!YD6}~QAfe4+0*(bK4%oUbn09EKaU@M|0IN>{`H+dD1mbp%mgyHV zImMVb&OrRY@niZ0Z%#2L&I!{6yg9|BIMHfYE=X}A$hmB~gEyxbBj@!0uAJgboOh-d zfV6S3KwQHm0in5hAjWa80n?DpGe{|l8x+tCe1beIV0k7Up=myxVoW?z(+zw$#iV#( zOI)G3gB!f5jZcs_VtN8d9dE_-3(1^fOuRkQCxH2Dz@FoM0Wpn_1I*=9n*IS~8Xwwp zEf=J_DafY*QYOU*8!Ux|9Aqw7kgsogfG?*Q6CXHXG4bu2-r&nACdGFMrC?-mUZVQyV0K(k><(`3X??Ab4Ah9Z}G(EweQ%p)2=5wgmcpwweg2GzUCxGSArW4`v z2B45(5`F^7xgsnOTC@V>tDVp0-l^#KoL=2TEZ2jo>L30Mmc8dAK_6ep24{Q}4|i2{%^CW#tI?vq#p2?>cW zkRXr@fYMXIxsge74J48!_dxkq!2IcAL7b9|4bu~XIK>%ffQ6W(HcUSN;!c~c5X>ni zB@LT8fF^xDNWCQ}Qv*rcGAE$)1xQwqc>~D`vMi9SAPdRovXiDi02wC>8$y8^#|x=e z1!ZS|{39g`T2p|OFL|L^Lw4VEhY(INCfNfZWlXZ?rWb^8ib=`BDh8No&_I;E0#Wt? zoEl|+KvJU|511<_1LjJ}!D0Xw#Gu9{1D~Lr-gJXdPBA7qNTQRoo1PHLDJCTcYZJrl zf~H+L7qDG&(Cj340}_mKA0ROz&occ$D0sLKT=^)NKq5vV0ZNxm4+!HFlTtvNmFI(+ zuFwEBU10$@Ni!+z0DD0JlFbwzKzJX(9%52-nl2E|DJG?e);i~dRym43(;LD#!3(oN z$zO5S^a8MQSPcaW2WYxiTr_Z&M7Vl+9raCUY2;sn5>}Ers)Y0oMKE$TOehYa@6z*AmfzL+6jD+C2oSs z71KX})GN14E8`SnQl0_kN-3kQVdRHaS<3gOD@1aNNh!nHNKl{hLw%~kH$4C(uY#5$ z_#rb9f+}{?8^H2tdjt5P1&YeF=^G+B#h6s)fFn!g%=8Cf<)HC&gl`%6p@E_DYPvua zNckJEa#exp4pE$9QmUZ42$7XTt2kA)=>=eUnCqZn%MX*+o4x>KoGK)}s=7cjq-p}# z6-=s4)1pD9w?QY(A%0(YU?F&nQ&6>QdO-rG7?WxrNEwsrr0E9HAnr6My$(b}_IMz* z6%Io4iki~&10dyUdeaMHImMXNjHZ78*`@|cg2?Kjg`t|?bcGm@x-cjmH!Ye|ToTj* zLskvi@Wa3-sFnw|9K4kVBn|QS!h=w0bx@lXu`r2I6>^8TpgL&95l9@O9wGi{`U8;V z>d&SN#Bz!mse?9-fXsyk3CvUKptZiBdx9Y1pl||h-4Rs(G~EH@N%e0aPm44Dg7{he zAK1@KW{ajTh~*TMG6Uro(BuTfdboD81Jf^npulOy(9~WlZK< zrW?d@iZPl`*N@{AXEOf*DNihPz`{%x4$~)qlw0^fN_2~`=?CIC#iT4i?Jkg~z?q(5 z;X%mMtf0jus642a!zTY^x^n^H0(01*Bcup}XOSBrBA6mj%YE5qd%cIrU zaCt~#v@8I1#6_6}Et^2ri%Y^%A)4zfdmu%a|7?V{9BuuQJwV~A>s4=jKFLYxrL9}0kYQF{H-h*-vH=HzFx4w}9o0W|6b)@U6C=1rfUz$q}jK7o^ial`ZrAn7}hD6{@G zy&;KHOv(nWCJ_K96h1+l84z_g7ohYVNKUqaHhXL(AmX+Lkh;S*1IjOfsI#qsicf&j zJD~DUAXT#+1EgxUlK_=F)9sQuB_%=o=fp7gn z#$Q2Y7T60643P6_`2_7PKvpo>Z-KbP{tcLxascI6ka9>wFbF_PLeLz zOeX_KT6c;8*KbZaki_9EGW|g+rx=rS0wl>hFMud>egdg-U5-F#*BKCXu8_*oO=kLr zR8X}CHq8A2*eOizucixtIvnnwrWd4fiZOX`K*T*1z?!8zP{#)t1Rz6pf*x(tFM!o| zfPLs$19pRy7h2&h1T7%F)TSGxbBalMq2&{}ywUW8bWSlQFB7nFULg>#d6huC;#~kX zp2^2&dO|Lz7?Tgw%RYA?>U=&x)cMYU$ooy19+1H)Cgq3L^c8@NmI(SSo8FMYDaPmr z=`Q*0fhtF1-?`}zGC0MU{4Ri9=f4jUX8wmDVHRKl4lAaBDbqLfaEdVn ztbn*Sa2`kZ@kPvW;grq>CHv|%tOd&HM!YiP{ z2Ox%q+<^$cfe42(K!ihOz`~(AP+Ao^mL(ryTkQqUq1{ge*>RMww|K zQU}6unQj2$%>aw7fQapZh<%u@kj)8NE%*VX0@|evmx1^y{0$^ZA`~Dlh%kXfO~eau z7&Aq>Oka@03EI#E9+ik}0ZTJRPLI#!6laS31Bt*W7D!%=a)IR4C`eB~ssQ4>s0m<) zM=gMIw?OQQg0u&tpxv%$i)p#gS`{g?2|`;l(OJ_Q@;Jqqq9I*~=qcc=&J?=^Qi{YL zfkbK?3&cfnD$@n>ImM*nZ$bN+(7Y=M8j)h)6O6w%-2oJv@!)O{Q~VD|k0e0`;NPHzh<15Jr?4hI>h=-D(={@NPMED9+_yxqUWQgWusODs+=?6gTxRYV~ zn4qPQAhga)_5df_ONtD$=?)-u8IZCtBWrp=5vQ0`23ng|5SrIA zAkmR=0}|{Re;~o037b;|*}}lUk^mjJ%M6-U%qhl{83JiBXYQJA0OlW?u22FJzcoDp z%)dAN0H}$aB{F>ih@T|~knyk;*4d} z!CLdHAX@XcOuqmUR)PdYff^(z3ba7VK&yGd78Dpk+)-dQy`Yp6vP~AL$#D?c{3^y&C^kKzj1#o}0BmPr1S9|po2DCp zgxjF1c0mj)+y^nN@Wb>8AZfMf56U?~aiajD+(6D3V=D3j`BHp(e;KC)<0goTZPURj zUO|j0dN+MR1$ge+0YrsCoKze&y#T~5n=SyNpkY(#TBdDTh(-SJe?ggi!5;=&2 zN&==EfP~woUjXUtf+$)x4J5V-iHc1R0P&gx!m*vAOp+QrWaI$)7=L!7n~8qn98?6 zl2`=`B&sSJp!ACA6FNA>m?~?g2h?(kGcJHseN{(5$4rPZRf|DPua<+-N|30nR)f+; zV9!>Yfj!Gq{bqUt$dnjJ(Ni-A!iB~{&8z7TnmNUoYTiu0P{%38RI37|U7+*^h^4hx zp!^rp1zI@8nCjT3FQ@}AK>+9CIv#Kal&S-@rjZIN5oifsCpG;5DBso@K($|({sF|V zH=CYN4_@#CHl{ub!mWb%r2Y;hKpLQhK|=w=5e*FxM>WiW@)touqG1_CU&9KBYZ_3; z0vKSfY1jsGjX2{Oh+`U|er?<{eM1AMIHTC~2OvrcVpx+JgsTPRT7g5i$qo{_O>ZDh zY!;bb(8vio;Q(9)Htz$gYJLP!)%*(Lz~(OyRgf$@{a+)e;PmySob1!Znm7fg|1aZY zXKIOM9B<@Nga!(KWO6=lj;CQA2E7co;gW z)b$K(j#L+Hm;vHdxO}$^#N2KVhK(sjH9gr|+^NvC%sMi8Ik4B8CcLS9E0HOPq zfK-Vw^<9|W08+*CV{35u{dV34@BMM8Yn#nO5Xtmj~LSwi|GNN&c>82kcQ@zThklB{5#;1SZWGr z^afP!L!;ves4ijP6P)sI`U8-a>w9Y0^b25PBOuP7 znglkFX=>W^4gDbNvZfpKfy@U@|AX|Sn|}h5k){bi>7wZqKIO7wrtkiV$ z1OavY^iR_p`oZ0~01(9m3V+bLQBd$R%}|&Q5|so^WP@S>$)rWqf=iIiz32PF1pR!n!80G_#On8Yb2 zH48RM05c9cJ~GQ_`Ua3OvmjlGS?i`h0CP7@FPO|J#x!f!bOA7ZYPtiMeg>u)XHUOB ziBp_u_AH39IRTI!-keP!?Vw0LFojc$X|5ea_gp8CE^)@TX;V1Gq~^kAA;CUkU=W4Q z-_Gp;2mRbf(?84tX?`_50c6NLC5R#Ov_OW4G0iiZzF;!A?Eto8UKLcj2_oDERn-B` z1k>kD=H#4SKABU15jt`=4?2`H?;KR$J*b9%5PH4|#4Gb#razbp+N`)|dcagpP}vFY zTrYz5$rqV{7XOPeEwY*>!zs!vxX1?V_(g3HQx{Exn6_vUl->g|bA8PBOZxH@s zJ}9jQrJW$=EDnP5)1Y({RD2SYKL=v&;$=|&F;E1EF)cm?Rd)_5ehm^)i=RxtFb%X4 z64VKvt~QNRk`ZdtlA!4eKr&en>KH`-l2g+SrgK6Tfg=*@Di&y0aVg*Qf|;CROiP8p z)=Dh}tO0@AuacC-C=`;PoY)&zzl^N3- zxkQ--S2j!+m;>VXfNQdq3#L1OxnHI?><4YZy6)0pt*%_MX#i51hD)5M@ z)GE-ekoz#}&s7!EFMzazE{6aw=!RuqXi2kLY}#B-F{ag0(+}JP(Q?xbz!+Z*pFPk1P59G!r(-YQ%=q=M5!2CN9STfaPJ+22kU{OKKSS1lMRxUoeMLS`?esMbjPTbBZyoSq2WQHLIo< zfVt}+fwg7>NGIrE1yEoyt+_P)!hB9KsWq@sDX2x_(4n6-cfiUe(I(}^q1E1+U(*dh zhX|}?0DEh#!1M$#R|S$(*XB*10OprXKLDodK%pkiI0+OupoK=@B`<5wKr+VKYtt1L za*9cs0iDBL`(%2+LQXNJwSOS$*NIGT0P)vpfC5vT(PR1sFgIX&!hKFLrgah1 zAAtE4P-WAm3oPOklUfIxr-gb|0@@^Aw*-><*1=}#p;0ak9fw-CYkI*VkhurI>X_D@ z0oRL6>uyZH02Y4&rlr<{S~Q>}0o5-7*+?h2-fh}q&_>{hX$v^TK?k%g<`k1!4?5lS zA!b%szhrs>SoH~rU)NumJ^{>s1qwkiruCnu9{}+;SU^I0gA+u2gBw`fXalIi1%zyP|90`1^H!A&6$ZJTl+xnon=^bdIDJHcEl-QBNRSFt!n=VZ^0L!B#8@T+V=?P$Y&;h!j z3k1;e+GZ|@HJkZB)-Y|>n0^3c>*fSV3~X+g{sGKC0_ER<^8bL2kPu}S+`=_IU^%Cl z6zKG6aH$0eS_Ww_%_q1;WO@Tw9=7-i5+w}M&~j;u+Vl;}L0gG6!0MQ`1b~8AY71J) zBMoiCY)P9gumYq!19X}W$o?XT`?r)$TLwPg0hAgUw@hE}!YR(QRvGg(j1&ccyPx z3le`d{liL5F{!PfwjwC5z+u3^0J*b}PjKr8P&pyB4K$_%l7jwa?FQ2wR)aQNqh(o1Xdh;~)ARzcdY9=J)`9dzO<%AMq#hPGFz-PtsO>3WbyC~W znzNE%b$o)`>!yJ!gY6AqWlY;AO*dG{Db6@+`h^vo;*y{m5y_L_bCVhP1h*fWp0EaF zIb<=;_7Bq+fZg;95>-3crXK(qVgvRH(~bm)^o|B7e+iVoYx;yWoMKWtP?xzeNJ4{h z2iSC}9cTxrfF?E>82AKtyqf+21b6yPZvZ8rosjBxX9_qyN$rGHuh4|T0bMn{`dE42$$9$}tTD!9u5QV#9%fYe{RVxamUwLH_V zEJ$|P1)ZSVwQBl@^~n3d!M{fw9#%?1>-0ijk zRfJ-UyQkZ)<`iezT`+xt2&kF0dj_P`-@OK^9=Zf~_ZNux9+Bw|8#%?8_Sisa=#9%q-~{ag0F};6dsQG@hv^SCaEeR%FfcG;37fqQ z(>H)LO_;8*nNy5u?+&nP#xoF??fo#lU?apxP@>!iO?~@Xz^RXM-*oxSoZ?LT_CQoY zHSPN|Jz*1gEf?6x{U*~5KwKAyk^6HXvIn5tClKxzXxJQ(nSKDIT4(wP5ETQqi0MEM zOnL@HdIN+yHEk=WnA8DS)d7nq=&bUA3y^p^01elJ(8qbh0M#LHT z1P_``PuR*S#&pmIqWxgj^a&tq4#H9^)EWtB$KhZJSe?|tCe*1vDd@oQ!LI2az~=RU z)iE7>Fx_DbIDEj;I+6i7@QY5{X0A$$m$QVyK}3rd3SegzFxpcR0J zzCZ%?um~jB4y!=SI&1?KhX&{20!YF-+yfO~0ad>Ps{RU89MTk%I)YZ9gU*xy6&pvm zrW@=4?LFrKmHSLbRKQI!sUv9RxeT;*awKm01h8_*V#gx|(+xn4oFh{}tqL)wBWobF z&yiiz4R(V}-8WrfCy0hjs~@>BJpjyw=K7;d(;Iejib)-XISv{vve1FWqmbUnQ4IzL zMn}vh*ii#Wd-7-kq&<1GV7kCAPBF=&pynv(Sb4OtJv#mVLQZk1qo801m4whDiwjye z99=cNU>9iPJY==((H-E{BGb_$Q2GM6fMhx*04aKo8B7Ct@tDo@4?8%;8NDDrKIRAV zu{dJ_I5>}GfIJLpHci;gDJFFcZSA8Bbjs}*cI+QYuoJwS z{sEZlFg@WrXei;h-*kb!oMKYP(RM<}K$`@|Bf$E=14u}rDg(`0$MdEa>;)NL09H0V zd>1GG^mThVIRuZxybE=|%=G$QobpU3FF>mPQ&rRUaf(Tu0xhHhnG01V1r3x_d!`%g z;}l~$b!B=2n0^DHPs>2GpEiMHkkb#K{2vhh84gh6jp>XB=(uMwrZWjpx(A}{%pNFx z2Bb{tENDy>lwQ!1(%B4fe_HA+C=fu+0(ALZ(>Ltr6q7m&l0$O6EGTI*@Clv;FYlE) z3%dLrBn^!dS+FPh1ke7PE^vTTjOiSt*LF^8y2Am`UVB(^2UfC zCUqWd2tgLwi#jhgJpn8aYfZx(3+;HHSDHQnERWW6mWB3M&udLT0G3DhEVMUqeh0)I z7dRkovkp6MSBg3>cMH(a!U$X<+q(iu=1(muI32h3%>IQ{%O z(1`$3K(Wts>A-Y{!<=GLm(W5^4m$X9>D=^!!<=GFm!P%OCGhkCI&|9i0GM$qjYCJT&QDX8<=`r9e0PF(8IGSF!Yf!jDhzy4ZAqlc19dU~viYA4>{! z`tf?!bcd6mlL`vJ<}h7{_8+frfbt(qUjWj70~8*hm9}VceIsG|1+Y9Q@qzAsN0Yw^ z4WFCPfu@^v(+y5>ib>rBwXl%f%LQ#%+-#dZ;S{GB)6Kr=31E8C^aE!>{8`gKfa!VD z4}kT93S*FdNO-K`f~KvTkg;2%o1mrWpppmTUr=Cxmo(o5%}s*DA^H&F@1`r9<`iSP z#WXztOczZ9S$C^!dIOmI4eV^DTfZRI-vT9VEY{y<0y!IWQj@|JPBEt2eA5NafaqD% z1Fmz5N!>=<7A+4QZoR!}x&v4pv|Duh(DVW@{}ISKaY>M8u-JBo1Cq$@2ux1^x%Q46 z*wJ^CK#m6OtOU18??C%VcQT-=8m0%F;}m1MGiCY&u&!kwOT?J&tb+vgolW4NHo609 zS75UhHvJ0;LU_>Mm6(3v40!bo*fDo4AlBRsfV7kDMon)x$0;Ut7nF*SjP-%0U8TmsQ{kPy7*1PQr& zJ|NG6&WQy3^deU7~_NK z|1WWhGd;+gJ^?J;1hM16EU+C$4?yFSAfG_e*eWj25FrDf-~;ru2@}5r)&B~rA5_C) z(+?WM1&PA~7^eRhME^rEuzse8M&RgvXa?qLu_I1DP>1`a8yhp=WA z#I-Cb#h}E`C-`s@I0U60!m1ybJgDW&z$f@{*7O2U2tS-R?K0>24f+PW=R2cu|V1{fvsnHcnzZc5mehVu&qoFUqF)ZBO!>gM`951M@HbN zn11a7r@-{Q3!I#cP~SZY0!uJG3IoNFIAhUta87$v2FYoUDj8bti@vgrbs zIK>%Pfs7Ytyax`V$B)24Wb_0ymI4ZJh}T#7fR4Fk;1hg;mha%=?;xeYlTV=BE++K^ zRvN(cgKjNi;1hhxG`-*|=v0Gc5cN;jfz>lTJqD$pOuulIQ%nkE4I^m01+DOWCN}LF zNE%dLft&{k+EqT#7SJ;VNX~lZ1ErTtPq@Y@#`Iigy1_N@_TUL1?ax6=-a!+}Xr{k_ zB%c@1Z_v5XZeJ0OcStrWXy6n&2fLqzrqBHh=^x!(J*t)!9H?^GXL2v#(4b z=DhNOln1Xup!^o7x;apK3#2%D%>d!Q7J>59Antmd1##DFND0sMMq@h2drWVFAo6d* z!17XWKs6C)^a;(oZ~ja-xXCFd^%itT9H44V!-X151@VvDDog_V|5U;qWjP_UEvn!Fa+ob(1#09ZFi=B zxCv?%O>Y26f7F>i0mL0%*kJ zix0$KUm`%U&Ge-M(rx_m2@=|0zCl9!tJw4l_c+CvzN$^X@DN1nK(u|enO<;@Q=Bnk zx&de=>}w394*Z$|sRO@GfYgCsmw@X)sjsjmKQuDrpxWEQelr0(=35Aa zssI@-&e$>SJ}2mOz<>vwVp88gbr(`N$wNDV-@s!FQs2<}jtbCG;%~>MZ+HMY%mT8D z{~KhuRO&lu%Rb07n7g3c9KUl-7XW$pJ7iSpy8$>&F@5)e6b;`WO)mgTKbxNLh*ON| z2gmdUApVawNND}&1BaH>4^ZPBOQQO*3#?!22WY4qNj?gin0_3aZU8p-93)ZwxCFLG z>IW$MgVaM3$?6Db6XeIO=@UTee=>mF0XoA9+=Kj?0qIHpY@7b!5vQ2cPtZvpNZO;I zt+=0SAm00V2Bck#>6hR1fXAF-Ouyo$H$3JPGx~+v24_%!TKfyOniAq1gm}^P4Ua)5 zcfckoVDivd{{>#@#Pq9e`Ug;#;n%e30#88Jfp-=&{en(N{(1r}0e<}fl@MY~zajlm z#^2N9&vJ@0{Wh4c@ECj!2e>%>4c%h?y8)6Ee|JEV;_n5Jj>#VfNRs@M1L{vp{ecZ- zL1SJ4S~vY^n?3>Ls6UX^Gk<1GU+@H6C4mRD|LlS|`OiLxlmA?RgxsGGkZkei-}HcI zoMKXcVd)CybLiN?U!Lg+PdPygo)n&e$F#we%5)HA2y)40cGG5Vvz#b2U>%Y@B(zg zh0^p1VA^QBeZ)>{{WT;_34r2Pl8)_LaY;}E4<_sV`5!1 z?FFa!borN@;!JEj5U;RDfN3cX&>%1XjJqjnRBU9P_3-yaF9*v1ob#$n6}@iVL(*7^EK>x+yUIo2EN})op_$Jg$9^1jcm;YThw$ z!j$3yjng5;rWB|x#K0%Sb!qwqu>Nb)KYZa7W8%6o4HODo52iP;aEUQ-y_s$R;&bOf z5)60U^aL=!X}Z8SPBA9#Nsv(Eo(2gu?iFC?GI4K$SkDc07WW~rGnlxc>7V-?#F^Ze zrZ0F4UVJDZ$R##i?JcL^^!#_6>`Xjr5DR#0Kn8+h3!GqiQl>w64?2-#!gK)vT8n*&XZyg}f^D8&mJ{zj6Ig{&nL;*FYa@DX$(N(>~i@)kf6D{mDj+{78{ zAi>7lH2nZr*`(LUZ(h5*I3lcO!MUa#(R0Rnlp*l!{6l$10;R`2d4HP&72rYqdcR?H_bO_`q zamHhi@D@4+32&iuP(v?44ZAY!JExeG5NOE@QmTPvYN1DvOfB>W;x%Cf&}@qsld#UT z-JGJ#Lc$T#CxC)PxCRn5!d=r3fcbsX6+mU0@EWN2E~xlEsQ3>^(1=JtQlp3t#C#D4 zsCW#NUjn69KpqK}!3=m@yOMps4y)CwCy25WxF($E1 z(EmRDALSpBpU*O{sV-mYI{lG7f`diaKfawp@6NEtG|G?%* ziK8xsU!4NgFD^7a0A!E262u&FwdoDNK?m!=2B#t3V@ZK@;)KMFpz^4zG7<7&P2H}X@CRf*Z14o)9|mQxJ$ypqyQVw*0Uf2Y2jYGSw&?{Rz69U&fPb7~OcEN9 z=#(&;egQ0Q2J#>1#NvS8p!KNJ{(=+*OgAv*5@V960QDWkm?S1Z;#OkO^aQZ{vgra$ zTw+X;Ow%WT_>yeX1^#o2F-fXG;$G4LqF!I5!v#wdt?Ws;_Ff$rS}ds?PossWccV*{9+ z047&}$xR?dS0Irk^8hUL0Zjgbm?Fyr2{l=c=?#orpl%JAa)J0(wrctTW-c)%*}CZq zSV45(^bcVEs_6w_{x(pW5@V9x1<4z-2c`!IfYcoUw;yEBK-v$o_oiO}D}Oe91E@VA zXEr^7hf9n}&T9GtFux7T?}G9tL9CIRHeCRuPj1$92QWPkVy)aRh_mGOL7XLb0TN(x zw;=Y&-GkcmVj3IBns?I$I6(BL=?&~4`WMvrf725{^72AZdIngz{4Pk)$nS#$jr@)2 zAHd2!KxhR4NRm)c0aYzb3Kmdq!1Mr+=?YO0+Z3`Owkec>90i)+2m4*2Wf~h7=rn)} ztX!ZWM~L7isGe<5JtrU;K;aT71BfvxTm$D;g%^+{tSA6V!eUH{8jxsGw1OlQMLS4B zQJgl7lS_$${vukuG|C)bulL8 zHb_!Xo&yOgIzg?*0>FQn7=iMir;&3cOrmOe$_*CmN~1x>=B5UY!a#9Y#n6)+&Sq^XfEcqgy2k z61gf#(+&7R=A=ze0Ml919Y7(kk_SnqDn;N-CZz)F>O;(DP=u_25mKpwWImNTNHSJw z0>!?R3TW^SQLiABcY*yr{TmmTz;rooE>6Ztpr8be{($RIm03{Z=1o`N;u2?E1dbOY z6|}BLD(F@e20kGb(6kk(x`p}QrUlG=45I zDHYgo4a_*m+^vwxF-Q(kIR(ifDrX?IqY7xa2INbKu?z~3(Ip|3ThkRlC6USiqLMc`hn>U!dzlZ>d-Pz{STzf(-48uI#4Opfj z$i9Uv+7{A$0#+}j37S*`$%8_bfq_90+O5|7HT?s~ek}&DIwmb1u(?uNpn+^;_0UAB zr8GT2j7yA3O9QIj1gai1e}kl62{Q03q~$ez16X|kRDBFoJ!pMDl6pnR0IZN!(R2ZE zkogr*^(|2KXu+ol8FUoVnl-%utbPGh{Th&ZaZk|hNKm;C@h+1lWJ*g&8#G=A5(kGq z140~>#gUw&1Q}@)(q1=Bf=i4^d)xE{QXqQQ^b25m-*f}8_^Ig$U>cHDnY7%JP=s{Yrhfp*>!1$lFepKWN`-WUrYlHt ziAm{zM$?e>Lq>dsbmXQ7faTE^6)8b`@j6!18^H3g*n--x3^PA$`UbE(YJ;6Y8M0hL zNT+D}1F$?Oc#-T^hOBZE(&?KnAO&(CXow719x{F|q_b+e16Ur`;D^}{?HcPGn_d8x zhb>2e$;15j4jd0sI`O;kMQo68V5b*E@!|F6>MWh=xeFE5o42VI~zy?U^g8F|T|3clP z0`;%%Jg~u1x}Yg>kUZ2saQQ9ZBA!Y25!f6i-DlGSWIzsl1=h!;`)+yzh_A;0QKzQ| zQioAAsz9Sh&kUqZe7d?67e5zVFaWGqN)I$64RQn2jY`lGLa%JPgDjUAlisT77r^wo z=>;HKUjf|q(}#{a8gf7ypoVG?Wrjx66;!#zm<&_E$_!^gh37$Z8(x`a36lK+mNgQ9 zP!`iC$Z?4=896|@iNR?wW0a76uErC=$MmMGh$b)ph znx+V%-c4@+bALb#GnRlDW(@7?8@o(@0FpOun!Z4pON`05ZMuL0h@JrPi1CK$4q*Nr zu-i;TAi^d(5Mh%NNVQ@D8TDl{Spb%oGTFkwz~GEAKPqIh59}(FLl9S)&VkfMrdy^T z0J+xm&-4TkZ6*P!UCcZn@@5f`rnOlCM4dSoBpl88z~Lxm4l0L{+7vm^dca(6x`Gmy zn3OrFYmQCc3@p!No&fQNc@3nwZGK|<1yE?1-lK6qOC^x?kh2Xz%AuJ$2WE^GI4Mh6f_B${CeUdSghYh^yscu7y^z&TP{KbhyN%oI#F4_6@X2=*&0W0W6Q!h){v) z*P31cmPcE|paRox1X?p7#^me)u6UT7Q>I_g;SytVo&lwgfW@Vp(Pr~ipiMyMThk46 zLF!*j-=NI}I$j1GIWC|nK#+6MBFDu6Y^;?mTGccE<_m$>N%K*qUrK-&E-3!v)J zntUqIzO2ip=?Z#WVoWYuppofv3=|n+QZ8tX5?E}wT!8ckT!p~l#^fpm@xQAK$RcsZ ztmzLx=DFrT5}#`cWQ4=DZhCjp^o-SrGOZ7{ihfYfVl(6r(Ps;^&Q z78Y(jka;?{Y10Kj=DE$9X22!Jqtp zl7|G}>ReEn%fKh(c4+zpka_M*Aa95>@=ZSgGR_?&4N?v(OQDhHE;e1kkV}loU1@p% zm{yzq0jynb`T`>^F(Y@7@yPn1vE*)onwFuPK7`!u!1gh@JAw5xxx0XiLU$iXQRp54 zDFWRWK#D{UAxI#2NKFF`7Ak? z^mKtlfG2eF!Sf8H9P<1Fi8wC_NQ8MAKqANss@}^FQoDHtfonG=uLe+8M2yL6)ARyU zE-@yrZPOQk>0Q%5fCi+!_DxqX0f`@&egQ20X?lPOmzb0nXg35>5amJ}x85cYcX)?@ z6Vh}&V=hBRXzA^JWqN`!mpCJ|$o2j-eFBL44dN0XmFWjS+#rZUe8RvEG4esnF{;o$ zn-5y+A10OICAg2%T7B0B{VO1>)~+&f^$Gx{)-%<_A9-uYTLjDHRCzx@G zOM?1vAS*$|CRCDvfltW4V7h|^mzb14sJ73>G~Ry(MEep321a!(()S>-?hop+fMOj| zysd`CdH{6RF915B8qff4SO?63B+`Hv(+w=S#H0d1{c|kM(m;jj0v252j5d(Qa9|Q7 z2?VA=l0YC@H(V7|$T08;1){CVfr}S_lYmrU4+8@uXch@AFal>xSFqv|V+!0geFK=@ zH$4DMpPK#vOkbPc0H$w2=}%B~{~+pum>}wc*dX#jA&@j5Q~*gfK^@aCfV?vYLfwMs z4!Q@@4Vt1@V9g~qeVrATB;z!Q(5vYQHe6y%!SAMlsbAA4fanmm=>}k$3rZ_Nl!fSl zm4z5Vm6<`MYo-fWbBQxTC#yr&Om_frp?NQq3#3_`k#Cv}7wGWI1t7U&5SN9XntlPq zJqPht=p~4^La#xz+yZO42eJ)xGa}ecVRq9U?6}03!koagR2XOpAShu#lKtvjXkR9@joC+j42X)?~*99P^8iH1&&-|Op#{bU}uW7ntlPy zw*v4Q*CoVCmNKkAbhc2{H6zMhHzzL+?2c(QCGH7}NSUD^*ppI3AR+Ett5M^;t z%aXvB7)8Re9VD(9R6)6#flnwBHr@giSA#6N6^g8z{sC-j2Pp7BbM@e)6FCiR98=`H z=>g6lN8Nx7jzxY01u5ttdr(MDzvsZ^$!G-*U8yLv))g#NqgR*871JL$gU3I?l)`ie7jUHj=0Ov4v>POmMu$y5-~=`YJaig;VEP15+KpiV z(^4^@Rt0kCLR$whV$%Pb~fe{wdQq&-(rD#o8@C3&!XptOK>IaC|(?q5VcyWm_r8Pi;E)ClKOxpqRT-qCm zd^!Wz&*>S{7l4$fmq6(TDBU&Pz?(~qDSgp2FtratU4n{UgK!^BPXNhgut9_~_`t#$ z0@Dq`xx|<<{Prf-Pg5@X78gM?RB5GeG;n6e;CQKql+;o_XW+?|V`DXRz)e_3cl z-fGagIcwH5KafGt8H20?kRZys0HyCh=||H)fZX?Px`GdvIO8|4o3mx69{_32ZUDFX znX=bFT$dvNrCp{k@Z}O`+ybF4O#k4=1v-ZT94WaX5R-EiptKq!2y?Z-X6G7#D5+e~ z(rPT3EO!w&lS$>G&9cEVY3?d;CS}T92g!W7o4}b)Di<{1hSW!f?h6&ly#aN_6Da)w zN`Hg8>L18COnHz*kf#JOHBSv!fj<{$Ru-IM3)rS_ z2;vfxDgZU75SffY16uwU*nqV&7EIUo<`QQrfTYfX9!PpDmxdG>Bx;^ba6j6UZxBSxd2Vi;7 zbUU&FbkXo2|(CDp*n|=W-4{EQ2PB=i9uL0Y~RIzA!LKJwp&4DN` zaY@ipK2VDoRFZ&A0ug*dl}wOQp^^<;NK`6JpAgF>CRK@+%{8EPOl8~j1F>9UMwPHW zHPmvrJgB9GlqS`okx)5l`iEF9F{a9C;8uiGC8#n$sAEY1P5d$N2~{qd9uNnzA5E#|xoi3ZuzFDBgUo}ehZdlfho%d}gVdjZ zw1g|KKGMBP-g=1Z`}&8I;OgF(;p;q ziAmML#$uuNX+k|vcWrt>5=b8H*hNiH^~t~|RCjOs2C#nE@&lNDXr`-sHeCR$AGGfr z6hJU}1xT{2`!wAFEDtN=py8_t%~bU=(-jiA#3ey9FCgupe8RxMpbi~JulJgMA&E|=?}nk(ewZ?T{gWTg-cAT0oHAU z_=+VJaw>sPL(O!9D;%QCLJgCk22Fz+Gz)ByR0HaKF+$^p=>n--VoZ&E5PgkS(;dM4 zr0EO5blUU+Fx@geAqS*x8dQ89RQwRc{6YhsSgx#pe0`psa&8N z0>I(abZoi+D8idgO?Lp(m!SM>5PmZg#L{Lqu%%4R9FS&0v(R*dG%nCJ9|<4|x*WOL zU|J@Z7*n&`bcbvZ?KRy1%=epK0OkixPXO~nAU z{!A@#(;sAk6sCd0o2eyhx&X*kEd|pRK;|@o9WB)YTUrOnLJXSV=-?A-=>mH~ss&a7 zfW;XQ@)N+uOy8ct#W!6ymy46BW!dx#U<+1F56A^sylxsOX|`+tD+Dc5Oy?4pgq1%K zaIYq~-f7x=c3G%hiwR^K!&wSK|IqcH~j;cuK)?!R-@?( zxm;pWt*`~^FyBDO6V2smE>lgd#36sUA>&5fnhs_L(BI zChLL3l~gZm?gi>SZ6ApDdaI^?DB=>E{;r6NQxHwAp9?I<)DN8^=x>-FP|PL9)DPVx z)&B?VcBTo?9?1k9i2MW_h~Fo4K>0JKHxzS;Gd4{ZDB%*5nh2UPL<&kBkkc9XgeF6+ zncOh_LJ5}`(`2YMlOdaK7^h6nYr*N5PiX40=>p{- zYhjTBlLym$LQ~gGcL2+S8raCzLL2l`w@oi7=MpoT3Yz9cmWPi1PepAJFz7?m_0&_- z7l6%$4RwO;V_?t+^+*`_gr;7aegP~G>NO#o3z{th$={k*0dh8|(}XMyU9mQe2NW9O zu)gxN3`pN-S`B1UV3q@fKPv!A_dw?GXRU$Ke<1WchUp5GTw+Y~1fVo@E`T>sNUem0CNwAOL$lV(Ytt8i>{(R+@yBYt z=@+WF#JpCcl`i_wQezFMod#OY3NeRiHP|9Pp*5gH4-yBb9tODhx*O9Cs=36N)@wj% zkLd|uehb)LOzWpW!g>822))4vq)wdi3WyS8+NcAjr8a^JK~O$3`VR#ld-;SmT1{7| z;SyuoSTTJ_7yRf5>HeK?9c<)1d=k?T0Q+U(moMCV2>yc#ART zxerbMU&|%VbXWx(TZbn=s1@KqWjr!nzmZG4{s<`6LBVGXB4C(L=m@BE1cfnZ%@C;i zhnC`yTXGl}7|_*&!W>CG3$*k+0?IfbW6{-viZMop=|>y61nZB0%PcI0g326ZL!q7Y zBjCaYi~0%%1_mVc0U$>)@Ch9Ow;8ag2jx0OhUuYAAV+}PTv!x=hBA>14T6q@9@zl$ z78dm&M&nLaP?^ zv~m;_-AL-AKn|$~Sq!d&U@ih%#Q<87aTFBa$QnTL22v092^RIB5J6HO4YB~F9y~;j zMg0s0hI-_L6Aeu`N5MY9q5%~5$QFS3APc}JnP5>5ihCsWG2oEl6FLe`OJMcz@Q3&q z6y(Snpo!=xc7>iC3?f$}{z^XoxzkE{V2q{l#I05%PvxJOc-2(tiG z24GVUihE@BF!RA40mVPMk3n&dq#+69BL+U9W1#W?n+2e_M^+DxTRx#<;HbkALLhmB z`g(?Buuu7fj)4jUY!-mx9-)CD8I(pq4g!@2SkxZ}i6N;^0sE9s=s2i60Lh_vxSmhw zI4JIsG^B!pn1N5|IH)|p(7-2j92De8>eHYeI1VZgu&D>dJ+gXGHU*gvDi6Tv55+}% zLdQV{B5MFe2}lE|JiulFDDIKer-MU=Pv|(i?9I1Rl$HA!xi^&J3H*|1`)gK3Ce2@lopMl~S$-FF>dEhw3VjjpRNb0k}>iC3? zgYrEV^G|@{n2{k0Ua5eFyFo?i2~ftzrU4YkNEYOS;+BC==maR=V^cqUekYf>F2@HpiGTb_y0~V@%j_s1cpU7D87&!QwmncCv*aohp`z4iZvwlWia*N^n%5F zP^=+Wx#ghX1^E_~hp|}zibf<0DnSkesR!j@Z0bSLgQUI+WFbgBC=0{YgOfan$0u|G z6pu(6szF(Tflmm0>Jdl@TKYK&ibf>$wcvQ*6FLdX!r0V8!`LhU#Wa%odQjE{c>qjfF~0y*Rs zqu?Z19~KKhagU_F1(d)+=7VxF#C&-8gR9V!ptwiU0J0D4V{q2QVgV@bk<@p>q70O^ zAr^p0DCQG735t7U^#x%2`Gih_6Cb7ppff>`8zntZADjZ^ZIH2OY2p+p?vX6$0XdL? zPv{g_9~SfLL2-|yp%)bAAPqRm?^B?-M^Zl#W&zmeSS$d=J(BuqV0C;#r=Z1mJ$l3N z6e#YIG)#wS0LL{J3qWy?q<#iWJ*Ygu7DAx7N2sr7m<38CARmMCCl(7pagWfzFbn2m zPKyVga~ZISq0El6ufg0;pU$ z{Q_h^HVZ&;kE{Wjh(HSgK+4f`%^6UTBdK2w4oNtkQxA%JB=u`Ri4bHyI4vPU2EI2Bl=7a19=>W_e< zicjb)s5}6vLHEE4(2xs~hU1__2yzfOabU3kWFV4yaP-YMihE=Ypg3gU6FLXB2#W=vxJOnGiV~1|Pt1)%Z(iv{OEagU__Do8&_J*YeYr$2NbgW?ED!*viJ zqybbOV6y-e_ekn*za`7J%X&u7QE!E+~i@_=L`b z)PgXY2hM|{6iNL(utWHS&V$MWboHS2|9Mc{BWbt~av{h9aN@)C0XUH%seb@d4=NAP zEdZGVihCsW55ea037v=Je=HV&;vQK8%mPq(fXxC>+#{)f1Wlyp!BK(5d{Ep&)I;*$ zW00XBm*S`k&V%9}q5-V(G1y=}q4S{f03?DQ1)v~DQvU=NWuWo^MLj70f-HV9eZdSa zvHJ6%{Ewml#NiVHnTOmDcnWpE1+achA6@{(HIf5Bvm&5ebpf2#u&4(`2_wUF)0td? z^%p>S9%L_?uP%V%7s=4)VBhlzT>$$Ii=m)sKvMq#6zmLqLKi?;9-H}~=tb_5zXTUD zd_ot%c@~QWpin@v;3YJjTma>HY!-l`7fJmqXx6>}reWqok_5Ooz5wzel7`n{pYjP^ z0OfgX7J%XxN&Op`da%P_7JxK@FrUx`P;?`!2ZazQOI`rwd5{{kD7XlUZzK&M{h)Zg z2+H%=)Pv$1Sv^=CpU_26mdB>v0#qa-Y4`}!0FDYwA6x|a5J~+vusS}Wi=aG@%>q!| zBdLe@lTYX(D9c0C!^0mO1s6eakE{XaAW)u%XaJE=%qMga6!%E#e}S_OpU_26(1KK< zhbSoSk<|Zp0Nc+ebP<&2v1tIsJwgK`GboKP@CjW6TZAQqKyi z8hAi1WZ)Bm)Qp%GTmpp%l6ufJnxHgs2~-AP@xUce+#{<8=?9q)Dgzim@sAcnmq2lf ztO4qSOQ7-qn+2e_M^euZ4thSJOQ7-qn|e^(Bh=S33WDMsq)%V3=ReCv*uE_edJVK&c#L0azmz3qWy?q+SN>Q$C?fpz;92 z0zRQjptwg;uK;o&$b3+K2B$x?D7XwV1X%+pQ8DldT?Um0AUSmPptwg;4?C;sGN?Sj zrXCdcQ1u}D8I_??a2ZEka2XW$Pz|67S7lHLfE)x4Da;VM3^`;;`NIj@LKy^?$ zINx6e#XXV+bFjgDLYKh~!(ss_?vd4lql!=HGN?R2wE$xNis=dqxWwu&gL4-a^FaEM z%(DdB%O`Xhl>M=p2a0MW^|mne;F!WEHIfAm&@^)e zoP9AZxB`l5B=wGM=(2SqiKdf3$e6>vyl@xTU9 zVTYt45Uh|-=n5$NW3vDh_eknPK@J2t2<&q#7J%X&Nqr=U4^j`x{t)xw;SWxfS3q%( zq#+iXCa!`MgD_f~F&`8F z$hj&H=0U7QJ)h83P*fvZ0Lqpi3&0_d#R5=NBdO1a1qdkn!#x0xRX(AsptwfTPyq7* z*dj~|Kd!z}VN(z8)gfsphQ{$VQ2xiJ0TlPh>OpCQfluff*di<* z0L4ABdJrF^9+dqd=EK7uoU5*Z;vPvu2`G_(G=PH^iv^&#M^aw_3Nes+Q1*vd03xB7 zPv{yb?vd12GJu1gPv{yrXt7xEVfuq*Tw?XtK-nE+3|f$12gNm#fz=>2417Y@!6Auh z-gS_D$m*dXcpa48L3+{62Sqh4{{(# zJ=h+Y2jH>9Cv+VY*T@>c3i*VtgYrMfGISq+;u=YPGq}9r6S@wLT9^eOjUdb?1Rlge zQr`}85Ga>i2jzc|8gvUlagD42ng*_e@;^59pr}Sx4|5PG`(so81Fi1qfTm(lS^}v@ zAK||NihCprx?t)-`5&YK%>y?;agU_F2NZ=2d_p(C9s!3CJp94AzdECA(y zY!-mx9!dQqP!xhJ0Q($l0Z11V^9kJmMJbZ{sj#`v8=(9TQikpWP~0PFm7=V6!%CPU{i-TK=~h=22k81shfaK6DxCx4TB=w7+KE4S`-PqKF;vS*Co^c5% zP8j%vZh{H~Y#KmukI=xl43r2#>cNQ#GYW2k9E_xXImk?qdQf=)VxxGVo=@l|DDIIp zK!fxqI5AQ}&g3@Q&WEZ`Hm35t6p^{b(2=q5-XIQ^rzh)?JyDDIIo><1|X z`2bWNV6y-e_ekoGg7kybgUSPJ>OpZ2RS&YC5wduWPv|C&y5JTl?x7k$9j#+f2i*ck z1!f4{0>wR&`r}}Ad_uQCHDhH_tCsr&T0L4ABdXR@e>OtiJ zlKG(UhXfHQ?vXTH1G}70=r%|(2%{y^+n_i_Ru8g}fluf*s64=?9u)UT>aRmQP%m^F zR3Ko}0E#0d4d9!yK^B0@18nL+agU__KG{C9WJD~CaB!_0f9Z=jOs|TfW z20kIk>=G994N&Jk8DXZSa8O~f z02KE~8eW6=AP0fU1CY7sQ2>g2B=v8giS72$6fZCtvjm*2CxJR=!!6S@b=|Jc-nusNXrJ(f(M|uM^+CCF_3yt{>Ns1A}H>W zG+2WS0BHc_e{32+A%d(P8f6ba`5&A5jOhhCxy0%pfO88L2ZN#-$vhjFgF)FJn|Yw9 zMpADJQx8sSSj-1SHF7q$gM}a{|6{WN6xB!;*nu6+C-ea9Q7jgK${8f}4q$bBLJvUM zA8tN4nn651p$DL-M$+I64rxB2hahPXMoR(@K@LVz?*a-j20o#OpzM!LJt(S?)q@-e z%I1)!9;Oc-f*gRP!4;H9K^B0rKQ;?MQH`YD9TdbM^`PvJO+C2Li=@E=W&w_({~;*u zk<@#FLI7j|IIgjH02KE~>b=0~_=FyUvOmN@@bCv`^M|0gN7CRA^8qOPLo|R$DCQG- z2#QlA^{^?XhoI~aQiUF6ptwg?58Gq+5bSeIAAq(sBMtvE1wwuB2$cP?SnvoG_ed55 zg5sEgPv{Xi_hK<0ZNWcN5IC;*gdTyiKQ;?MagSsH=w=I01LhGZ`(slNG7nijI3)Rm z9zlzKj6ttQptwiU5CSq3`Gf=8gZN2sr73WsR` z$2ArUKrTjTV2Xm~`$wSi0GkD%xJObS4N8O{4}hZr-TV|jp+}&&N74`r;)67R$^$GG zJO;%*lKMDM2r%#oJqG6nbPM=|9xF_D*v}iw%Kq5YgQ6Nq zeJUsufb0ile{AYOQH@;ErhyCqX#j^L76*f(8p(o8u*dj>9)q$!HVZ&ejjSH*a6X~O zV2{Aehv#%Yp~s-8M$(WC3qer!$7TU2s*%*^K$Fa4u+L!@fHZ^LJ9KDtQ1Qa63>Omf2;1hZR%Kjh?Xy!lBKxku;Qm z74iu^0cC%P1`r9wd_qq^agU_F6dGkuz%&*QfZ`rWec1xA{d_`CK=~hJEP4=u;vPvu zIY5- z*&if_=AfsbxJOnGHUB9%v4Y|sT>~iYku^Z$_$jD7z-9p`?vd1kaw(|je+u?F77u`; z6rsMJ3AR7)DX2ieW&tSf5gM4XN&Q5S8U{Y0XQ1)`#6~m!8OVcB^&tD1CP97h3`bq?3>5cJ z4WP?fCWC{XPv{w_JiulFDDIKePXX~k4g!@2sOmxX^9elz#XYhHP!NMOfa4A`3Z8)+ zfTVsZ*r$9#&p_n?ss-S3q!|BdLc? zLp}rR!(u)t?m_CI(+f<~Kms5igUSPJ7J%X&qyaJ(&NKt+Sscu z;5n!~KvEC7^8p-0&p~mItN|1P417Y*LFECG1`rdJzn_ER9!dQyusS}W=b-WcqzK(X z5z`xvbBWbI2WMZ*5P1%YY9#Yu^QO;1*&myEpr}StKL;9s&%sfP#e7K74?jJHX)Z_r zHECxk2vIbCyg2X}D zAEX8?1VPG?TmADuA;!Qb^a7Oqv8e||HIn%YK-nJD-gp6GVABAKLL?0fp+Wirl>M=( z2SqiK`bA)K`Gj78(;8+7y+B*^!?XzM;}@XpkIe#5+#^}A6cofDAA_<#Hua#mM^X>l zLHPod{UPe%;SWyqFFY3xP`QMpemPhjpU?|X_J>#iBB7X1=mjY5 zk<_pF0Jfh`=mj`vu~-0#dn64TKt2Nb7?k}%#-gQ(m!P;uRu49pPv|8m`(slNUSxx$ zVIwHc8Tf==g0eq04WPJ3Ru6R$WY-0z2VR2W9!dQsXqtElE&4Hfb}vD3kECHU$N-Ro zz^NOH1)wNGQV-it_!3keVDkVd?h)$inGS&B5M%*3|6{QL6sHIcOb4Ke?j@)^z-9p` z?vd4lq7Y<0SRcCi$$UcK4Jb$&4uVTWKB1T3434gWPgoL^h(IUkL5h9`Yfzjs@Ci$T z)FaGc;Bf)Dj!#%}y8l@&@p?&6l0njT5bSdXWBP(4++tEvpj3xsOgbdh3QNrZD`%9NKK~q-IFr;0uyQ7;4buxc zK&I>fOG`lNJQF{9O^IYOa(x7lgGBg=v2?L+7G$@>r#E*b{4ieXx9`J%o zj8S^J{{@hCwBUt>kTfWGk+e^P85=SE0W-)I31B}lNoPzK2nF#ArhVoTlavM(rAXSK zNA?IyPv^hLB`zfm$~{QZSs*^hQ4^*MT;vjClAZxIb-{E4FOaD#zx++vI})BC|(iRlwQbBQs@D1g$8qzqbmH30dXflpXw`g^cy2ar)r zG9KW#oc`@Bm%#M8Vr~v5nS|*RE^&zo$$*k3k{b>QOjkI^B_=fsl+QutfC?Za`2`QA z2b|*)o4)Td7l)7xs8B&l*E~n2Z#c&#W>pPy1SsVpX*Pi5ePJ0;xFP9-#kR}?Z~!sN zOt-(nB`zQX%6p(g5FtfD!}NLQxg@67UE$(jlI57b;U2e`mMqBoNG7pEoh=K>GDtQX zD@;$gz$IqH4k{lR_=IKA(v>l&;0K9=T!>^IN5k|37r4agjX^mZBoFc#vOIWbj!#$? zEtrf!!3t6jvJY83$h{zOP{<*>51ImHK`9AIJv*paW8jMxmPHFnV^CcVG6*dwIUyQ^ zWzo`>F)Uy}@<?6K$m(@KB{-k3JSc@D ztB08b$_Ys7h37!kgJOhP1ySRgf}$E^FhJ`FBry#4}19q^suskSBAZvi8HF;3fB54p@GVL13y-<4;KrxFX zEd=s71D~)0D8`VCGlS+J1yIZ)tA`dT3ZNK6Ru4)UAag)5i>w}GE~to50L2)x22j!f zX#m9xk_JKWIx0S41yIZ)s|TeFka|$WAgj-qegNb_Gf<3!j9Rre6TdgCY*39~AJ&@^hx$1UU~BPatVfFe6K6Og8|_gW?4w4+>Ufd7J48 zV0ln9faKBg2Or1u31E3puru%pE1_i&-aFF|faEPe!48r~%MiRPrhmA}C01_%3U-h@ zD43A!=Y=-ul|aFY6x|k}XaK243r=2`I4C_Ms|S^UAoZYhi)=pV0Bi<6ZDA!)_#tb6 zhPM(Z;E*(^yG(y@i%U$(0u&D*13>|YB(L^iy1;FaJT(0(fdUR$e$8|Tusk%qDuDtH zS-xg^0azZIUX?)shb(U~eE~=wy5K@s85D5H@*LAIfaRg-RT&f@Nb;(CrrqHZld^;+ zS7lJRB1@-CH@L$kCTR(Z2L?W2Wwh{BogROOOT69^np&07f)je3xUe!>Xj(!;QyDEZ zRdPVtj!#$_lxmSe-x3-R&1MYH()mwsso`Fvo zR4*ZoHZdrJPnF^mRsjVqvZbJ?0I5d{Qn2Gd;-IvPq#n8?MOXzbh?PKvIH*ih0Wpv@ zKm%O`EzrTW0muSSB1KjYjRY06NRaQC?r@JwtlkP53o2-3hCIkYAoD=6gKQo&7F0l? zixlZ{FmphKG_rb7EP~7d1vHX+Xg_=U)q7lmQdXcS1t|iBHj*OQl4w_X6Bn}E&B=s;i9=*>cSZ@uAIglc> zfQKp)Rs{tBlA+enfL8^TBAA8>tAYX?Sv@F%K<0x23{!o*uqs-}T7zN+qyd!fF*OLQ zf=U%+3!s4vzIqp%dQd1Js|V#9kolk_%?Qe5kZu+O%*S9ZvIc0dtD%+OaP?@xZUf3Y z41B_B7{NZh;31b-y$v+P)o_Hk8d`|kKto&&M~JJTg}4ng#MRJ}GSt1=!rOmoftR56IAoZX^fzbxhc8B`_ z6k^C4Kv4tIfEMH&Yo>2_%q2Fx?;RJ1lsYJ(B55*%2CMo8aPL1#9TfaX^3YXm!s?&| zi{xt9sDU~tn32^(ive{|G$DzbZI~|bgiCCC+zT!aEp@cGvIXTPkjv5Hiet@mhbLTO zO17ZH&A=xNzPJy?P>^kW!Wsf#$1`e7fB&3ITuK8JQ&`-pVKDu|8!j;+4N#1s7&CnV z+-=~?2azQ0V0NQL8^@aI7r<@lj*4ly! zB#^N)rZ0HOCB~$&0Bp>3v!`4FMs}dg29g9t7B<5`;fZY6h3N@TL3h@_667FITwpT;lpm1H09_6O>LY9XfH+8#0pg%zUg;C7@&vs@Xvf0%smX z-hm}s&4%d>@3_RKw>{$$n7$4aESeL*+O;%6xd+Lq_Rw6V3CcJqu9*Jd8J8HBEhq_s zY}x^J#sRQ7PMV+$gKQ2oLczCwp_l_QfKONx6og3XZ55^$Jcq@Z<_EB$TAH8?f~3eE zl=~R?gtb7WJ&K{zFMu@Pd&9-Sq$L4znK+{Y$P95uQ071~0vu2vBS4{#Vg$rpS|9~T z>TMIIC%k~Ti<2<`Y@{YAYal6cfR=Pxpe%u6}o_f%Aj-^zfHl{8A2}Oa<}-Mt+#y0MY>}`Ixj$fXB|KZ+pq5!RRpk z{!1H(!mq!6an4+BZWedOX`(ta`Bpn+R#dK*YY?jlI! z2Ph$k8G)Oe$aX?2CmoE?hS;g2F#W>^F0tuiZ@C1g+c$8tGwB$BE!D9AQPbVtatTcL z`^3e;q~ig~17g$5Kq7gUKq3j#4`_0WG3rd8|A|YSNe5C)Prvq-OF+>Hl${v(gmplE z#u9Wo)Bl6@%m5GLGwG}V*~X*;sX`5PKp}+W3#SICYe6LfR@3@FbBRws_6{^X(8tZe zqyrg=*U|wM&Bz9Uigl2)K&1eRLDLo9bBRr_18LUffJ_zXLhD4`>Hc51#HDmW*&am? z#8J8i(;s}{5@XV}m_8w!TZ~E90m}CP^QS+1&m}PZ-4`wnCfx|I2$L?Pob}QLB~B#Q zIfKf020me397V1!C>W5`TZ4iLq`m`eu9Pk)onn)p0hXV>>;sp^^m|{qIHq6wz$FMP z$aSax|H>sko$Vu+z;wQEAZJ3Vx9MgdxdfD)p$SMA6q49{{{b|QGkqFdw;lsXfJu)7 zoFKLIKvfWuo1CH9Uk~J06!WHk_{b$Tecop-PDTTe5!2N^aS4E1J4Sk-oR4IP3n(=+ z@CoaIG8~E_kSNiM0MAfOZ~Me0z-0z4OZ76qE}FjW6PJLJ3#di}nE(n>Y$kMo@|-y1 z1kh}i_;m5lT>R7jec<9?(pvx)VO#+*%e8Tz?U}L59 zK|zdc7)%~Acd4Zh3K(R0P^JLs2Zc6@Wz!FQ;S!&|{u38FlYRii#&2Ihkz>rw!K9x6 zwr;xGS1tia80i;G4>0ByW6}rLPGZx;zH$jDxk5{1@SSKVrbFUPe+H-sn7$2U%Dg{Z z98CHvz-0rY{`B{$+~Q372Ot)UeFL>Ogh3WxfK*3rAd!Ed5=sBX^a+2s#HN>lMCM)M z;+Ved8<*hp{~x&6g$zI?60&bkOuz6AR11TQGLQfp#blr`{lg_LF(w0p=^MUtiBC8G z&c(0f3M#`G_=F8WX$FhS4FW(eXEd1J|A$L_`n2y{0@J~E9|N)0fyz#Uis>Ixxy6_a z8X!US?K_v?bpIb*9E=kno>Kb(^OV5?uuGF0iM zX-r=ScK-{AF0r4WH~$ySWX&;iVy{{API`t-hET%72w6?ae`XW$by1eIqfHcU_W#U%zw6owTL zzfb!Gav~@z8FoNI#c%?|{No^*`JcJinG6>|9RK|n7r&G{v=%l5xB)4|4Ie-ZZ~qO-!C>Eg0E;mG0Q+wGw%?$H4C+%Ep`{S$-WOpb zw1AVFGhN^hmzb0X)Z0d&e1z&S2T&>m#f+2@C^I1?J2Pk|H1dEHAZ35J1e82LRSN^3 zuo1|sC?-MjhEc}!1;X57OhyIM6_~ljreFI5cQdH`LNeYX0;&U46`+_j-QX{m{`7n% zZuaSEf1%nLji&cAaf=%n;V8I_K#oN+9qxE&4RP!*mw=)NC|*F0$5BHVO_yip7H2a0 zG3`H>_;mGuT>MHN&`Q7<6oM$Ogt*>VVtN7-w-}SL0$5M`KQ4YnPf+YI@Ck#by0Ph* zexI3JeEPG0Tmnqy4%2`96Sm++x%D{&R6^qBX2NK~ciMCu{-=DOBS=aD%H)4ki zjMm6>1r~0x=@4gtk`(oR&Md>_T1d;OlBI> zC$w>kF`9wHcsd&!H?;aR1F`HtsnRR}tc1xdV)}>c++s{-koL0?c)<~px!#}=GX_3k zGaSKZ)&VI-%_cy)GT%Tp`~%wn?hA`eS7YZEu<`-*4ME0$k{3z{KoW%+S`PPsCR4K$ z;3{W&8#}ka^gbSL4koi3kZO4wNCeapfXvY%IT^0^1El_X22u%X3No5c=jY`Xmompu zM4C&0TMkU-3eyw#xW$;vHKqn|i%l=%;1-w;>YYtr#=$MX1uL-4J*GRzgH#1TthokO z#>dUUWDW_->1>?b0!qHnGS(cFn6UWVya8+}qxtlBK5p^pX`I}U%GP`aczu?XIVkNQ z`3`RV2C((hk8yHCnutQ?=wUcx`Ug&KJtp6R=?Yxj;;acjiLIIR^r#}N3(8t5g$!Gv>S20;QOuwMSEyiR4 zt(o1pxdoK`K*7(zCu{-AzSs=Qm|k#)TTIFVlxC0|0W0h*DxijUKw2BuxIx(u)XTD% z0WQ?0v+;neiGU<63mm!EVh7k7MvLk3f}nusfn}0uVAf|Y4kn8S;7-#qkN_lH&}t4p zP~zoypQ-8XvbfdMW4! ztzRrLOTh=cpiH}A`VU@iJt==^83&#(MRCS-2R?2wNPE_@1Cm3__&~wM$IWQ~DlU=2 z*B=z#AkTn2g<=XMAT6iQ7v>h9ehsAmUOG1iljQ-Bqo=d;bMq_tLx-5av!~cJKY;Y$ zEnh%fk;V^o#q@X)ZgD9qP%gou%}M~G%?jF?uu_1;@Hc*L0Vz;RbC8y!q%WF8H>BEJwWC%SqDsS;NcdVehh3Hs9*R^h+BXw0OT}~ z?gFrpnxIk-$)$myr~*lYT6`#mPY)1=wY98gfQv*X>je;-RzSHMrW=TGi%;J!%*{WY z57gJUhK%k#69yH~g4`TT))&BDWU{^i$zWn4+yc|VY1R4#*gezTMY#Eu0zs7-1D`Nx z`U-i9A6Bv3K!yN>Y(OOyvg;>IUmyZXSfH+!jRH6&Ouq)QBTkf?(-G7PL{<&Wy*4-k z5FP1rT$mmp$}J9_4M1{P5Hu;< zfFc());5TNT+9J-C&;@b!?Gr^WHICK#E&z zx}Q8Z2a}z}^Z<}{cPVcE>7dpTlU)F~fi}HNidz7xCSm#oNp5k*3{W~?vMYd;0d^H& z(dpMgI`>I)b57S+;1(CM1C?s1elP%80E$&6yA7bGgxK^nX;9s%z|A3Kht>uOeldN5 zG`HCFa|+xX(~p6afrmrw9)R;FliiEy8$hOgm*(c5uBXV&A!QGWSQPs}0(`>u&;ew7 z0dP1?50l{*0DDl#9@Ni33XedK=?ya6V&D-Adjn7;gGOBzsB()<-v-hI9&)tzfCRgJ z062b`>=VF+=5#SxXlshez5uLZx*JFYJoZ!uV%<~X=3ug)0CxWLWe5@Q5T@AlYakI& zqA;=tH9L@;6#~j041B`i1MIPR@B}y~o5?}_#bkd2lD6$ZsR+p+bBE~(a@=B&*0B8t zNN`M(;}+lw1y!O9e8LV4kR)?Vj$44q>&NsPa@=~5s?R|I;#~)W=?4nA#iobJgS@N2 z&B^F6{ec{}I3sjIq75z{0q!PD-zLwk32v!Oe+H5Q`_KWcY!3ys?LpRKlw5cy+KBT8u-|Zd;m_B%apkVxNKn7e*n)>O~0lL%JrYQIE0)) z5sYN2^^a*P++x%9n7KKaoFFqk)6G=41(d>};}uSzsuGKJPLLV0X)4?ToHn53#lR=* zG=0A&xA^p9D%={=|7mh_O#i0BEdVteI{l!g$}PYYp)fr_m0KKEhdY61!=|^Xf@(%B zkV6(goV^Vs0&e~|ZJ6F*z%9n)v;#Z@$m9fRfEhV~T#4kJ2$)MiIT4$yUraa90d*AB zpm~?kX?ngkw>XnC1Gui4z6>N$r_Ig5j}uC}&UxM)G$gD19>U2|I(r1I2VueDeuAqh&>F zXc6ZON=!)Rn4OruK?7DpIlln6zNbIa;1*Dd1SLlXK4I|2JuEi3a7_OIihOrXZhm;j z+eHH0^JQ{@^aU7QrswN%iwn7cnwBVLOkbeMEjIn09ybS*iwC5fyru~%X22p5kho#f z0=19zL296>$qXc7r_aqH1wJ|o#Yl+9T{@;0XoK1gTA==$CN~G;jOiEjxW%SV18D^n zj#@5gc`*u_hFm~ljAG>U4_e$})9pYp<#J-0Cbu}_g=zZSVoWZO5jsN`P^v=;%_vaC z0tz!wn+3%rsN<&B8*qzHZ_`E^t8nE22if#(+T0pSQJ_{F1D~)fsEER1fUChY9d1ya zIpH&C7F!1tKBn9pOs=p_JV>O@kefrw6{B#2IKedol+wf*3&7PRlWPTJ?#i_R%x83+ z{@)PPkp!6o4lGwtDTL(3XlO~}3JOFN7fv_O1&ynMqRVv$I7*pZ4}gQq721S#y)exb z6cf78RBh;r7Jkr!hlE{mgrDnld1G#ICN~C%W8J3v8*__KSJQ(Qc8qS*>p=oxdfXb* z_Zf3@OmEXejJ3KsOfv#CG(eJkM%*0JpXq@rPE&67>0A~Y5;?J%kGd#=jq1`xCNAAp!pSiDGiEs zkcfBJ0B0&DcLPw{a=Mx!w+6V8Ha*OcTZ1W9VtRuiVj#*r1FU%ZHbZX6d?J%ObUy2u zA-CYvcy4wkcW5tL%!nJ(+GBEugbop+3!pdyw+r1N)5lEiFTie-az_g%*v47+9}w%zjG@U)%LA=_5eq6b8Tf=fFow*g zPcY^d<8lHy10=68J>Vmk7?X#=^a-ZmY`Q15zxQV5bftbX)pm~H?Xlk(`84zh6ib`x&?>ELxQ9?(&=XC~YN zN^#ISzynn3U^8Y1Wc=9U0N5DD6JU2Ud0YUO@>(8fRY4pmM}u4qDuYmro4&x5Ta3#b zl)gdoKfvvdYo?%XBWQ4e%?vbo0V*dL_=G(rz|Gj{W@g-ikp5+w8K_)O=jLGagmfRL znSmS+%K9Mnps+x(4U$|v6F{~wd1g!pFa7xjG6cLB$g^U4fjPJMbaiuX{^<~r4zP!& zhnaH=D8+-~0%R_ZhL|UK>CNG=-a;!Iu<(*>-!#Wg`m2q|gBgCYlHK1R}+ ze!!AjZ2CTXZVpK=P%9rv6WmeL_uGNWODm9@UyR@?$opxPQVc;|(d zO>GsXH&}6tO|NqRO_f=JN=7SgPV{w%37`%?$cdmP2TE{F7qEspQOFxDOIk)ucK}JA zv*YHF^hWD8nnT^{J)IvEG~Nafx0YEWxz!sql7r-DTZQQhKn8-`%H$0hR-Aqfq$2@l z8fFk0*g)MU>5U@@y}>~!OrK!GEyfiC(#F6i>X~n;>gXxZpXvTipt)XG$7ou`~LBQ_FNWJ8lie#Oe8VhziW7VfqGpZn5dh>`+X~cLt?Edv49?`HtM| z)6MLmCNcS(m|oxjYBKqBDU(a!=jLN|RHNB}eg%j5@X5*qn|3PdDB zlR=ppWGJX)!Qwl=49NN$zXEVU&g9nsai*Fxs5txxawcfT8_7iQyd=oP8Q_X}dKgG0 z#F;A~&TIpTK%BV)+$Na54I}~@1e5Xug)*{fp#CSwv|N+BZI|5{tVz*21fts{GQz6O#YB=9;5$sdrxk0Pk&GtBk6)A3V%=`h-6DDs7zwu z69&)cAgPBPY~nwCz9+Z1q(3O*AW6fGn|>Z_8z|_Iq~W^J%9B)3(gxXvqiXk`uJ6Sy zF69r3OJqkvQ@Z~NND}miRQ1!3xpE6grGk<_$V^c9A-RG3$#exbZZWA;XpI~IYP}%I zbF7)(;KnV+Wekm&00r=I8`HPBfhtZfZVn;v> z2?v5IJuK=2LG4gv^`H_1q#m3$r^k45b4}lOkDEgfJVk?~FnxNxC%44({r9-p1p`6Z z07Y)SC$~5ktk4Q909OZ6fuO)aQU+@q1a^QcRi?lR(;Yr>iAe>50tHDO>{Oe;1&|qm zKuE8LF>t!PAGf$rASf3jc@4C@-HTf+C=Ha@Kwbd_0XE}6L5M64N_-&oAbrT<(8L!A z+1C&m2nr%(c~IOj@CgT@1u@L~K_GLH)Tco!>L9eBPoMtZi(4GL43{xzy1hTQxKI$N zBtZ3Af;V(#MKTCfm?N1B3(lbF^Zh|1W8R>q9%z958;Aw&`~;!JKnB!nK_Dlg+N0nD z>QRHH(}Je!2XKos1wqELnSxeK2gTC#FdtB%3|h?>1WJ=g4#@yz7Epj-Moa_DRHh)v zQhUar>F)zTroVs|&LC4kvv^EFKR}&DreKEY0yW%XQo*3mMY6;Sl(!l9goB~em(M^N z!JZ5T6_-dVGobMk4Du|hCk1?=o@5Gk05=<$f&;*`R4}NDLNde$6ha{DG9Xn`a0OW1 z^ku%#9tKk|WKYiYYao$zLEIcd!JtwP#lmTRaQk+E^)m&Z0Mpac{I~_U;Fdf9Tf!I& zIoBtI0X(J16awvYfAa$kIs|ibFoh_954T|qnZ7@mTbwDx0mgj~<|cr-S|OmK8ObkM zpzO-PCmaHbCnWcAKbbBNz%6E!1xh6#d9*?dmY_pG{z5h{V|qaVw-^`faHNnO;HsA? z1Tt`H7y?QM$m&7)8)QBxVRD5#|v2pVDnO;Lw@0EdTAD5x|>GAMP&^n^f= z#UKYU@CkrK+g(^Ut5~=~|kA@n6CoY&mEx?8S^lu=Q??406p&rvg zhbJ+GLZ*JEs|A6o7|@EP&V6ypZh#lvghBEcQ`m>;6T-N~r-z4vrba=V>%uv} zB8=djXkyd1g~G}?@Z=4$wa{c2juA}L1;Sv~hC_##-NLv9rtgd5=3okk3^6l>CqRn4 zGLQ_YJ<1ebFdZ}@$rKJ9@LC3v0hMW9;h^FN$?9Ba2!?|a5{i!@AsCJxLeMN74jF=A z3x~G*nZkE~2QZw%L4_o;1)zov1D|j>C?#UE0F-x;)aO)8PY8$m8PW}zJ`H5exk7FZ zsc=w=LQ)PJ=8Av}r%pcxQVAYriVy&o_tU?DMC>BDIStW@^ITA#Vc-*v00jXSmql1W zW@y7AK=ofFH|O;B2yTAJO1*6n+yY#=Ag6;2$e3;r$t`XON`y#G%L8QwkThE92rHc; zI;IyyaEnhDkAw~a2}OV+0m+11hv^QHpb5KFZVsaeP$EH+%mD>7$au6O0q&|DU{_5q zkL2c;%7aE*1V$`OUl7SH#+3(379hhOfG35SB3?iS^shyNY6#Hggh&R+Hj79|*CQzs zt1a^DH=3Ihx~GFFat3HVUu=3C zNCMOYWsID@9<=0p8%O}ugAw3#tuehX88nR%hZrD=n!Y}nTYUPq zIBo%{0#E_~IRLG-T+lK7K^$luLM%5Y`VQa%Xkv>7wdGI)Qy?A`86eLv@CiptOk2(^ z#uTkEeStrS)|f7k2wEAC!YwWo4XS%k^)849Wws1%4yNb;h|25n-294#P!~pnY6lb@ zkTNoQx;|*PQ*;H$vgu|CphV>lGNc1yNO}S{zfvKn>H;|lRG?xr1TxVu{a6CG04MZ5 zbKz+4KC0>8Kt|Tx;pPyE26-GQA}mf!S4ae{YXfD`=m(H>8DWXgrle3bS|={UVR{2d zIcSs8^lczz;N>zg0$`UvOXSvIDx5K0APF&v5(C*#G~F!;)QSPEBaiU_FCb@%2>=%r z)60^$1-M{qXJZnkCx8;&@+5A4@Xk!enCa)!xy6NIKrw>k@C=9P7m`4s4IX??2F-JV z)~UuU0K3F28Cq2u#h{gLMbP95o+-i-j4>x5Er*y3;6%w316`?i3}oWF&)gi0G1K2? zaEnj>1`>z^HG^V)KpGjbkiGqkvD5uCxy7YoK?NKZ8)6l}HcW3z0l5*hwKvva`hir? z)XKE4++s|z4%0tmfM`e?X8JRbI&h5?3u(n@#e$LoQdmH*W*3eH6%i;lPIpKJ&D~~m zb1=n1R^pYVg4P>=7OKZifaK=b1)wn|rq~tJL2L4-Ujr!s6i$h{4(7w1FDQEZU?Be5@$RB zZYEA&29mg!&dteq18nj&5FfmWA`ZN`U2HmACa7Knm40zQrhnk(7MpGc7P-X5!5BY% zzZ$nVQ@jMErw|X_pBN9>A$ts@4zxvrF&;9L^evNHK&b@O1!v$Bjt6-W#s83yj0by> zDZT)_izFVpLOs3%66f2pxCOwujVXS{bWop~DSpB9hD>hp>Cdx3A^wqzLogmKBb7|& z2c-hg$}^_;6Vo?6tNM zdVC?bI8y?2Kg2YUgdJ!Jb^>%a>oJfBsFlc+PyngnzU9CQmV}P!0Xf{_hG-R8DJZ=$ z@Che?8dq4tJz>N21-YO`eJ*HCFsKWe0Nv8rmJ6y@LAwGHZh$i2^lc!4f7iJ=m=az< zqUBjGbg2zf0%W>TEDz*6Q1~WtK;kJ8GRXj%_9*5SXG+unr?)bYI=y^u&gskZKr6;T zi*ph^rW*usi!miayw8*v0hw`6gv>D}W`I)0bhdoZ+NFGMPDb$g&eP36d~g|`I05X+ zG>`z;m5B==uABxE0rwgbp>y2FKq80*T-^=;f7 zOi7S=05^~TNE=g<2iWmtAOW!BlORRu^kpECdu7}lQb`zvCnV=2LA!uSkcIWr*@{4M za0Fz_1W4yF3ECM<0@ch&UaEkWZb_h=gOWC;ClrAiChI_k8~|4yLP=;9vu(ok2_QxD zsz8b$OKqkf1KF)t0dg&e?S*H%(V72KB3IxH*`TIUr}Ygn>lBrX@qR2pT1$ z<)sQx1B!u9I2qIu#bS1{1;p%aAd~p)xH*K9L8T6ok8K&IKPU!eU67-bp+PKG!Y!aw z39WX)(@@yVhJ>4`Z zz#l8+7J#p6N#OwJvFYDH#)9{Dq(D~&sFi`L4$yk@6ocsvi$Hw|kO;V4)dpgL9gzYm zU636CjiD4!nTaJ7Qy@E&7*nS6*Kmt7rBr~k{B*H$P{sf)giHZ-(~t~wRG98i4xR3m zNxAkE9GXJ(W6R`ht3HvFTz}+yYY7pmYi{6C;&Pcc|hP~mbwt)8c)`CiFQ1zJx zKKq?1?E@rzl+}XPgVu6$8iGtja)Kks3k-b1>7e*P5|05H4iblq3>c+@(gKov4X7s! zk_VL`D2@PGz$ct;Fs%)=sJf0@fU^daZ9!@wZ6mWfkT)8+Ii%8YWSR5~NFJF6QaSGg zHwRNXWP`I%Iw*>foKYJv{XiYJ7!&uC=^yI2#kgugc?o3I4)Eai^sstv0jpYQY^H$^eBWvOUne3Z92S5{J1j!vZ`i;gx~b?yiN#O$Ml>!s6cyQ2s_T z5ALo6aC?p^BLf_F+rVK5_8gyZ1}KRl>wykbfoF4&#bJKz0Gl=aSv|KPCoDW>K>ZEb zGeJ&6 zb}Gmz41B_w0bs+VGC?UBNgg&3mI+<1_^lCC+Jl-wnb6T&wI)#E1L|pJc7WTpLYbhT zLpI~X^nfN%eg;i5WUiR5(8w+B2`V9w)YO5JCdeHi_n>$f6asw0nV6%w?fvc!v+uC$zwZ7>*&7p*8cIKTQ7sQkK^Y-i`&jBE%~TrDOm6@MVS6h#KNqaX%N78S z;xlDSK+555AWh)LZnnmB1(5RRt=#-d4ba?_4a&(_oRaMUNuzFU+yYz;Aa^nF31>%u zqi1?q8>~N+T>uH;Wo@t!&TatrSEpZVYz?%YX@~E+POKwrvM^(uMyhu&IY*! z$qhUu(-Ydc#iSZRNe^T#TAj$TX8M74ZZWP#P!a^m{{U~95CWY9i(D#t{h0ot9W*BT zf{Vi`2W_yk5$dNLP!Wh^Ic!)RJST+Y*y*&%bA|v$1Tp3a{{ttA?E^kYIZtX7t}>eIndEOGmr>qB3mj4l!K9c25vim z?EL|rah#q8QVGgG)2DTTRG(fMh%FnZ!lF%xej2vr>k{y3vk6kgEbeL z^}@Pg2_rWFoG_SjA=8)B+rToQ^#I#IEKp`-%IyGk(3o;3K)Q0zKoak|xH%2cGFub0 z(#-{>5G+BJ3te=ddjN6`PVR~63qnD=IeTD5VD1fYKuP7I)x@wl<6P*JQ5i@Fc1(@O#rr+r0)>CQ*)ny>FK?N+9Fvyz$ z_WN|TK5hZ{RCwMBNF^E82O4$&RZe+3z-BY$9e~KRfn`7yK;8wgqnYx+DM) zTo9DBkb)~tVfuo8SW$ZoWH>lgB$B=sXmS9LccTQw^aRjp zI`gJ-a|q>w!U;)JTF3MWV9ABt98CF;27*>TC{U3UwL%-K`DjHHXrb6d(B83W+#Hhm zpfrSHEu<>UpYA^mw8dp2x4`sw(?GWTn7&~$XxHpS*aYCSiJxR*1%{0=})1>nX z26sRjMg`P%eZF?TAfU^|%#q01_kfecDK2^E4WcO?1t8Pg4>A!bYpUrfI+1ymkPgATni75;z>BTSnH%5|W8Si}L2 zMWG_Jx-DH``hjVn0hoo{9708)Ha(I(&IhJ{07-&|7LtlUgFHx*?a(Apgw`y8bwi6l z4SXc^9iSY{z$aV;YK>wEl%kC30?W9?go;4<2uWXD!}JZ)LA5C;JA<#AMw09RMIFdc zP>w}0bh^L{&}uVK6R2nf*yQPMGeDIo=pfW0$kKu7Wiz-1lsceALJ=sGQOtnk&7vC+ z?bkrs!CNPaUOEdH#h?}| zinY@lW`UNKF5u>nDh352lHDDk)&*gejLCFZ4=IQ(kxW$EvK@B=2J3D4fF94YV3S6yXP+u5HvJ+GqG4KhO zfT|W0GpAnwY06v3&B0hQef|Q_60JF)rsf=OPDYLC0t-MxdmsV1r`#M;C7`%LGPVO$ z4uFhxn65B~TO54CBa(C%$hRPAP;j8w3X1uO9V-oftm!TD_u%=zf0Z8#zaspfwF_uiP zUj#Dm26)w}R0&!j!useXAHW`({(LSs|MYi@xH*JMF+)yZ9w>b*l&9rHvLXdn-8-6GZ%+cDO!4jt*b0u0iMWVD%}93 zcT9HxMfv+B+~P*1IC6O@C>_m$*2j z%Fv2ZnA^%CK*27~m;j!_E(58TTfoi1SO)H>GL=CVdNP%DfT|hs>DL#6rj(X*b1;=b za`bezMce{PJ)k0rfls&$l(!0i;A1TLQ8X)JrRGfHs>zBA{3hDn}~} z;}oVBECE%Npd7pmqzs&@%Qt|B;ig|(!Y#nn3yLR@y^tvyrt%ZhAFSpUV=BJ@S*Krq z1ESb$DQIY76*q@aIml-yE}WjQ6js@lgTfQpTcF~efls&sGm{t&jluOL?$V3cd#q|5DL4!0P)vzr%70`vnV#~P&nEDu|J1j@ES}Jyc1B0;w+%276wj2~D zpy8Sd=!w0{KqBD$RRLW#S^-%$%2+Y|{~B&_p-NEtL(rwAvWD? z1!!y;P>CcqJq;w%2bxK%G=OB}X&@1B#;F7k0vlC=(iu|V^?@RSfls&+l+I8r z1i64uxH4h7!CG!HrpgS6rQbjX)~)2`WUPSLskV|^U^>Lk4v3v$AQ6zAOqGzl$XGf3 z{yLDSFmmDa4J$z{8BmE?d0=|N25zzG&p^8G?F0D}x>rSP6}JFW|BC4js}Lbv`C)nj zsGVK53RHA0;O1bef-b46;()ko8At}~t}4iI@APXR5wN?ephvo~tp-gzZ2;+p4C!iB zfwC7;@brT^H4J>hRiNaL5LBsDgom0X&~c3rG`-zT0?IFDAYm5fZAgy#y~>3 zY68SNYHQ%$fh2hY=?d#X-Dl85 zfAtCQQ2q3<_1pqX6K70sSdU0U)gM5)RDAmO_1yf^!S@Z+K<-AK{%k$y_}3R)9Mi=% zfJTtEa&t)4VAN}%pyU&-F_?Z}188H?25x?EK47c?=QOPvP@E&VYZ9o~V&D_5!N_UT zFMtw0s0GJVlQBJDBe(c;_Knc-52l)m=>{9X3)~g9bBi(6bbupty4gl(aB012#d;XRMvReml1~Q!Qi|c6!?;m}_f6p@3`}Xc&%xPq-G;1w%FM z0n9X^TC`j_DPg+6W^OTfYOjUPaJp^g7Lb|@iYSnYXf-7Flj#dKbBifWhE_GTpjr^c zMo5I#&X{hnhg*!P7P1nPsdfb<>zQqV)+f``wr~qh=LenBT?^S(H+>pd4m6Nd3#kX0 zYQe)rVobHrgUOE}R6th9P5%ZG`3I_U)waTl&^qYJiFJ?yovBU(;+8rCa2I!a8%QO% zgsDRdlF6Xt!>9kjX=+XlBCa-I2fH;~9Y1(2E! zaK@cp1`+`;VyT0MPTc~qis$NCdnnupU~} ze*=qv3a5IF=?}JZi)(_C7qau9aEpV60Ct0h$#y}DI;I8%Pz;DqPX~$o z+sVxdYJBYiEi~W7tF;} zCtd93=49*umDXa@+jfH*Q+v2M8D~uYuoE?VH2pPzx+Pfr z-vBv$a=P0dka1qz983)lAQfBL9&Q1yR8R%Zz$e`BVY&dw%ggtG25mu$%^DdXdz7w$ zG=iq^gc?D0CsM#=bxhj}@&zbGH$o;mr1`n85Cb-V z8}8G$fkfm&xj7gcp$Bw=^uhe!cma~l8*hLOWo(>2{|L7@Q{xNBsJh#JQ0f6)i_!RF zy21faHMpOfUvWC9ieumt2G8Xnh0F|4>mDRNUH>SzxKIZ0G zW>8}bo9>3`VEdi)vsOVvC zPDaR{zUg5{xCNAELW8dvMKjNfQnEgRq3D_2&4);7R}TGJ-fUm0^BurI|{e80BS3A z{cQ_m)~jU#xU(kJ0xD9GjGY0hU_iz~<|vF>K+PK@`I(^90g?yBJ{DiMoPcawXo1`* z)p7&0tdgk(vfoUq1=I{dHVx+0AK;)6Y6T@7B>5Q<(?BT(Tz#7zgUuqfDu53bU}}ZT z4l=buPu6aA0Gl#>+A(ect{I>-#K0%q8Zdpr3D8slSUYIwqBQ~1Xm14%9x=5-#yF;{ z9S2nd#oQcBtrNh5v(v+la|>{R*YttRflg+%fs}z4?X>OyMa=YVAOY~qN9zf&!H}s9 zBwx$~`5I&dS`LCmVJoCls?`cohoo;7G%nge`57gwr#pbW1lnC8)rK}e1e-o@Q<&~> z3Uv7WSHuY7 zEROBynEv5Bm)LZ-bD(DD3oZ^L@MHi|ILw0^V|YP^Fgf=kWrwP43ZV|p~Z72W(#z~1#U5} zR#2@0(g&@0o?QS{@t_7`Cnz|OP0E-qa1l0y-FW~!JkQj50=z7hu@f}$Io<6dsLupi zY}<*JhpZf?7hHrM{M!kskd}cIgRk1_VgMV$)Wrc_o-q9yNCrGy)+GV1Mc6JuS44Gb zK&aFm_Fs zzX3Ya^D-`oUb|02n! zNlbrm8I+tr+mgCDK>LZrn7SdmCxp7u+CJ$9(;cpW=C}R1IfS~=`cYXArWb%D!MR}B z6;SpEZPx1!n67Y@Tig)T4n(qdF32AYe8Sym;hhXBS3u$!(*v$@i%Wun9ZB0PP_Tfc zp)G}O$ih9QZpiTBbhfLYjCPBggQ**`{8S1&8G&TNLQrD?WWob*i*ow6tK0%y3!%35 zaDWA!dO(>DSraJK82E&HKz_y&`aPhE99jK==?|`fwpZQZ=3wf9ZZH?S4$3~D7IIGn z_`H?rZr71Iw><^mcJ=hK>!4}YYv9rve3IufkN~&^*fU}Jg=^g6pi@gho42lkB<_J! zLiaeb-2gQYK>HbcK%H772c-*4H@Lwq#syn{({ln`_A>R{09P|iJrAZATmyC1ZooP> zJs%)t<1vt#;BG=MBr8t;1`+|CQpVH^J$p*+CTK|T0~d!-FIqcs;fv`3H$goh(6n|h zS|}|7B`*d(Veo_kN~liX0MZ1iEEs#I%ijYHxPzX(Q18{O;>azgPM@=`o%`LzMTV~wn0h!-O0}Fx@HOQn0h{|cV zL9HFo0)jqBO{&!g@;j2L4!wQ4{Og}w{mnSG|d8{leAst**lNcO=FdFp!sj*IDH zcj0#Z0LRL7H;@P@*%2QOy_^fEzUFna)b%v zgz5HAxy6MhpoJc2$HW6rm2#h(lhFfYmDu#M2cWD9N-`57z~%AuWgrpoe8L3izrZoYS-H|N@MH&O2@I;W4k;0E- z&GdjrpixH9o~MZd(+wVTi-T{cMAi$feI|k&kD?c37@zP&$hN*`k3i#BkGVO)SDYj1 zUk)v2CxYr=6#dg39>en5#Ej_^9&>}veg-8np^0c|l1F5E0Z1)4048=org@e<<`&?B zt=*Xjxm$kvwa1`L_>`N2Y2pg7cc!yH;pSIb4sC2s1l8auj(~asvQma=;tg;gg>fQy zWen3qXx5(g1nM~hP+%Z?4pdGv@Ci=>WhN}T_Bzv~1=AhQa*HudS^;h)E(0k9wV#+K9hiRL8Mip&2{1LC{W&-P z^micF-JKCoWVWJo__`n2cV0*Wg@xsZWRcruQ{ zZ}Rm0Z@9%F^Cw7wv>e(@nrr}>O8fSlTR>?gDBwY6;Rw0O0pQ%iG#R{%Lu`833s~-+ zoH6~tOK$P$?Jq$6{g>d0WY9K&>Dyj_%!StLlR;S+ON>kgFCUsN_7c>uIKj;!G#M0! zNUm+TG2P)MD0zbhwk96{Z-i!=d;-+#nqCId1>OWO8G4YxGLVShS#A!d$W?3MfyYIAZ#S*Puo|SQm7n>KROz))Y`%94X*dfdUfb7f=%e)fk62 z++yGhyoIKqr87s5=>;H3@M_$t9MeC%;TG2fB@JYQLG?ESpYT*rfrM)C1(06Q&EP^) zK_Q5w$dk1PvfgB356;jJGP2B-@-1P8w-26(bK}{o& zBq+;ZbJ7iPc`|+5J5W^xIxb@>WPv@?RLIe=)1QH4KqqT3O=EyG#l_x(oDb@)PJ?X! zpY8?{0Z(^LQ%P~HGFv!+2$)VKyR?c95A zPR0oELHoig77=~`*?XRggJ~MHk75QAi3{iEV4OCc|00+8^fZuw+(&Ls^n(D_ zKm%zSMuiKBnrSP*;lMO)1Nih0rfEB-A9&9VIxzygTIw6fT)l7H98A+LKmtMSBgiq} zKzIPv0v%uq1Id8g5Q&yF*Fa-$Iw(0J1%j*z#0}Fy$pWfCVY(zVyWk;gB=4>RB|wmRP!>fpPa1q@ z8=vqDP_QAZhX&6KP%t2?huAw^^eeaE^nX9NIqGMiwMe9(KAQo`X~-sm0vhB3v;dWY z9#1_3lp2uLLrd-%pi&RX1ybP4P56YtvklA))9-%e=2TnAbBM9VqZW8@CnZXB}*jhH$dZI7ATn^s|Upw1E26LP!pJ$ft!Ir4P*cV!v>3K zKe@#?#Zo|AKH*u@-~Z+omz)KPW@POkXMwa&m;b{p9t9qSLXsANxds%y$gY6~(kxJb zBddqG29zn0)!&$|@QYhaN(34avqAMFlKe)7=>fmE#W+QmKwLX}`u#tk{WQP01uR9O z0X!QmQa8fP0%a2IbL|Cd`l(-j){b3qv$ z$!(iKVFJwKvp9_jnWYa(eImk3n2q2pV zN>U7b!t+1@jjSG85YGd}G_rb7NP*OYQUtPkP@sXtK{3tDFm)-9;B>Kn+ya@-cR(id z3C}}I5?esUCrAS*w2%yP26-1G4hj||i?@IZ5s)}2_>k3?K+T`7&&VV0IS-U|kflNH z1Ze|h31s6yDGekJ$~s8uoj~e9;?w&XdBp4Iq2(YaXu_KhvJ}}kP_Q!a3C~B%Ku*xs z&U}zFkkoGl1uIBBs3u0T-Vs`;%?G6=W`^miOgw`1^U;FH5gJ7E(Sm3zD2PFZf>H>w zp&O2ldK=>HnE|#OoJ;$^|58dziC9rXX7l z3K5W{plC%>ZwC_x?Bapmc$x!L9}p z77IbXMzUZ#G{_f%!U##d4Jb-M=1hOj!XqxZ5EMwr(jetvX?a#2@#$$yJOWZS& zq!rnUhUpWSc*N@Mpykv;NbJL%yd6|Nfy_b+6I*D#xDYK&wu8c&flqi5$nQvQvV}II z7J%QTxW&`;*?Gi07lVp9Bxy@%=2#4>D3OfY2?`{TaUfqHskgWS z39QA_``LNKwHAXsjVujK@QXo_iELcQ^aNHOF-r?*f?W&>Q)GEiz5-bXO6bVuL3n?h6U(&^_p zdBi1`f-)9TAen*!je$>i>Gc1cJmOkQL0lwh6Oip7X-F8tv)68o=??5XVp1m1Hr-OR z;M?sny?~uZOwt7E{iSHZwR`$}b{=s_6OeTv;~}AgFn;=Zb{=s~6KH9(bozTP9&yj5 zATJ|1&KTNySPDuoNI|h18WhVw2?JR@G<`3d?$6C5?g^fGK$13sRtL*KjzThS4=BhO z_=J~%{D`a`nwghPU(d}WUcU^j?O_B`4$=lnw#ddogJc;ff{~4bmL1DL#v-c+r6`a& zplS$7y&<&BSO$tBW`^mmJUoK+%Rz|)Ns%$Md|M6*3S>h;LCL@;yd15-G1dVYz$d&M zEe!TTvk7?40Lgqq=org#P_{yD4eWK8Uckj8#%Tx&6_7>K|MT#OOD+dRG_rnZOLF;i zeO{0>DCUr*p+&^<>G8Zg;+~)oL%wC+02H(ge8MZxe76@ABp`86kRlmp0FB8N)A#f8 zh}W+GC2AyTeW+(vfbu?4VC@412FN&&Cy~`d)6)u2Oe3p@R;(*PF^#Mq8W}4cfSX6mQXkqNTmkYIvVox719AXb=;=Yrf)&%(^YMsltw5`+^kDu$D_Zt#n6ALX zBj%+Cb3Z7!kgWs70?0a0zCv=p9<=;l0ZMtu>K{xG0GkJmt(9oeu@6)vG4Khm1O-2` zdC;P7C0c>LUtoFz504n9F0|9Ka{76G9&yQ)plCtTt_#inE2sbG=MmRh35o?|X=rO{ zC8%UZa_#e#AW3~CC~%SGL9qsMEhrL@&4bp(D?#}YSv@p`uLPw|B=tIP zpyp5CF932qC=!sRp@Uy5r@seFgW>>L8d_|xoGvfOBVNA}6y(U#(0sZQ6tu{W0Yw=D zpYSSB6d? zntE5GM;Iu=8Tf=(gCYiQ9|MCX zG_|b;73fIT9h8{<0BjvJ^{$@2UzkUHx|jfufTTLqud6|UkF009Jt#@4gA)gzFnHnw zMLHiOtqC0-Sq%zV6zTZ_JmQeeH6VvhuNUDFpMFh%M}SikRN#We){F3nYpn)VLdbpq z`4uD$O2o(}UYMRB$Rjo#bfg{Qn(6$aJmS-j3GxVV!d9ECnQkx2BQCTCl$en89a5OC zAjBi41Y1C{1}!lif;wkS1$gZZ)0zhGBr4;Y>E}UKv#OuNH8c4d?LD`0ZPk1dTH6Z&06e1vT zv~0=_Z6K`$r3NJRhoK?47UV-D^VvYD6l4x0q!8KqFeur8BtZESNrNV+3x{WmPQUkbLCpd>>bnE72pM-OlvoQml_y>=SYyv zgQ*9(A4wdxyL>HVH?q`PP;ev39|jc%Am{%8ty&S468A(4SZ+x4ihEAam*5ev_XL%0 zNcy=!{$=13_XLGIvN*`UAaS&C=LY!`Bn}ErWc8rb0}=<7n#kgy)B_R+#S=4wGrXAP z26+@D0f{JtILLz_aZo}*HVBeH#62UXCrI*$F?vpqm*f$b^hC?qJRt9bv`_Ds70R2+-o|& zG>^EX7bskirJ?ceHQgR84N4Zs(xB)9>&}p;g?{rc zIGk!}NMt9`Sk~ zv?ve-nGcdi^M@ETYJAXggcvjl`+!0f$r>@JzkNVy8d)4oP6e{N8Hm7lsl27p-Ivo&4(J$SOs5E zi>w~xQU*S8|LN;Nw)ul%4>WEEneJSj4~-rF?e`UU_!$}7roUI@ac4SsXS#(Fj~N%_ zv@-_AEgaJ;lz8+w!NX4s3`|F+uUF!+XR>}U{R2qZOOPWO7?@uEm>4KN-CdbSo)a!K zJztr}o~ix9^bN{9W}E@w5mpBFfa&j*dF&Yjrt7PKseBMsG=04ak3G}v7408Xc-lXx R@NWO0!q@Yk<-X+0T>xomwg&(J diff --git a/roms/SLOF b/roms/SLOF index a6906b024c..5b4c5acdcd 160000 --- a/roms/SLOF +++ b/roms/SLOF @@ -1 +1 @@ -Subproject commit a6906b024c6cca5a86496f51eb4bfee3a0c36148 +Subproject commit 5b4c5acdcd552a4e1796aeca6bb700f6cbb0282d From 23ab6d8813685c38fd1d87f573dded9fe37ee17f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Date: Wed, 12 Jan 2022 11:28:26 +0100 Subject: [PATCH 02/34] target/ppc: Add popcntb instruction to POWER5+ processors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit popcntb instruction was added in ISA v2.02. Add support for POWER5+ processors since they implement ISA v2.03. PPC970 CPUs implement v2.01 and do not support popcntb. Signed-off-by: Cédric Le Goater Reviewed-by: Fabiano Rosas Message-Id: <20220105095142.3990430-2-clg@kaod.org> Signed-off-by: Cédric Le Goater --- target/ppc/cpu_init.c | 1 + 1 file changed, 1 insertion(+) diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c index cc93bff3fa..f15a52259c 100644 --- a/target/ppc/cpu_init.c +++ b/target/ppc/cpu_init.c @@ -6957,6 +6957,7 @@ POWERPC_FAMILY(POWER5P)(ObjectClass *oc, void *data) PPC_MEM_SYNC | PPC_MEM_EIEIO | PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | PPC_64B | + PPC_POPCNTB | PPC_SEGMENT_64B | PPC_SLBI; pcc->insns_flags2 = PPC2_FP_CVT_S64; pcc->msr_mask = (1ull << MSR_SF) | From 2460e1d75ba60ee67fadabccd988705b7bb911cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Date: Wed, 12 Jan 2022 11:28:26 +0100 Subject: [PATCH 03/34] spapr: Fix support of POWER5+ processors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit POWER5+ (ISA v2.03) processors are supported by the pseries machine but they do not have Altivec instructions. Do not advertise support for it in the DT. To be noted that this test is in contradiction with the assert in cap_vsx_apply(). Signed-off-by: Cédric Le Goater Tested-by: Fabiano Rosas Message-Id: <20220105095142.3990430-3-clg@kaod.org> Signed-off-by: Cédric Le Goater --- hw/ppc/spapr.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 8373429325..72f5dce751 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -723,10 +723,12 @@ static void spapr_dt_cpu(CPUState *cs, void *fdt, int offset, * * Only CPUs for which we create core types in spapr_cpu_core.c * are possible, and all of those have VMX */ - if (spapr_get_cap(spapr, SPAPR_CAP_VSX) != 0) { - _FDT((fdt_setprop_cell(fdt, offset, "ibm,vmx", 2))); - } else { - _FDT((fdt_setprop_cell(fdt, offset, "ibm,vmx", 1))); + if (env->insns_flags & PPC_ALTIVEC) { + if (spapr_get_cap(spapr, SPAPR_CAP_VSX) != 0) { + _FDT((fdt_setprop_cell(fdt, offset, "ibm,vmx", 2))); + } else { + _FDT((fdt_setprop_cell(fdt, offset, "ibm,vmx", 1))); + } } /* Advertise DFP (Decimal Floating Point) if available From 91137619c6555a3c7cdd829f3b91b6da2bf67475 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Date: Wed, 12 Jan 2022 11:28:26 +0100 Subject: [PATCH 04/34] target/ppc: Add extra float instructions to POWER5P processors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ISA v2.03 introduced Floating Round to Integer instructions : frin, friz, frip, and frim. Add them to POWER5+. The PPC_FLOAT_EXT flag also includes the fre (Floating Reciprocal Estimate) instruction which was introduced in ISA v2.0x. The architecture document says its optional and that might be the reason why it has been kept under the PPC_FLOAT_EXT flag. This means 970 CPUs can not use it under QEMU, which doesn't seem to be a problem. Signed-off-by: Cédric Le Goater --- target/ppc/cpu_init.c | 1 + 1 file changed, 1 insertion(+) diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c index f15a52259c..e30e86fe9d 100644 --- a/target/ppc/cpu_init.c +++ b/target/ppc/cpu_init.c @@ -6953,6 +6953,7 @@ POWERPC_FAMILY(POWER5P)(ObjectClass *oc, void *data) PPC_FLOAT | PPC_FLOAT_FSEL | PPC_FLOAT_FRES | PPC_FLOAT_FSQRT | PPC_FLOAT_FRSQRTE | PPC_FLOAT_STFIWX | + PPC_FLOAT_EXT | PPC_CACHE | PPC_CACHE_ICBI | PPC_CACHE_DCBZ | PPC_MEM_SYNC | PPC_MEM_EIEIO | PPC_MEM_TLBIE | PPC_MEM_TLBSYNC | From 808ead89a678789285d45ede951afa09413feda6 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Wed, 12 Jan 2022 11:28:26 +0100 Subject: [PATCH 05/34] docs/system/ppc: Merge the PEF information into the pseries page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Protected Execution Facility is only available with the pseries machine, so let's merge the old ASCII text into the new RST file now. Signed-off-by: Thomas Huth Reviewed-by: Daniel Henrique Barboza Message-Id: <20220105103232.405204-1-thuth@redhat.com> Signed-off-by: Cédric Le Goater --- docs/papr-pef.txt | 30 ------------------------------ docs/system/ppc/pseries.rst | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 30 deletions(-) delete mode 100644 docs/papr-pef.txt diff --git a/docs/papr-pef.txt b/docs/papr-pef.txt deleted file mode 100644 index 72550e9bf8..0000000000 --- a/docs/papr-pef.txt +++ /dev/null @@ -1,30 +0,0 @@ -POWER (PAPR) Protected Execution Facility (PEF) -=============================================== - -Protected Execution Facility (PEF), also known as Secure Guest support -is a feature found on IBM POWER9 and POWER10 processors. - -If a suitable firmware including an Ultravisor is installed, it adds -an extra memory protection mode to the CPU. The ultravisor manages a -pool of secure memory which cannot be accessed by the hypervisor. - -When this feature is enabled in QEMU, a guest can use ultracalls to -enter "secure mode". This transfers most of its memory to secure -memory, where it cannot be eavesdropped by a compromised hypervisor. - -Launching ---------- - -To launch a guest which will be permitted to enter PEF secure mode: - -# ${QEMU} \ - -object pef-guest,id=pef0 \ - -machine confidential-guest-support=pef0 \ - ... - -Live Migration ----------------- - -Live migration is not yet implemented for PEF guests. For -consistency, we currently prevent migration if the PEF feature is -enabled, whether or not the guest has actually entered secure mode. diff --git a/docs/system/ppc/pseries.rst b/docs/system/ppc/pseries.rst index 72e315eff6..16394fa521 100644 --- a/docs/system/ppc/pseries.rst +++ b/docs/system/ppc/pseries.rst @@ -230,6 +230,39 @@ nested. Combinations not shown in the table are not available. .. [3] Introduced on Power10 machines. + +POWER (PAPR) Protected Execution Facility (PEF) +----------------------------------------------- + +Protected Execution Facility (PEF), also known as Secure Guest support +is a feature found on IBM POWER9 and POWER10 processors. + +If a suitable firmware including an Ultravisor is installed, it adds +an extra memory protection mode to the CPU. The ultravisor manages a +pool of secure memory which cannot be accessed by the hypervisor. + +When this feature is enabled in QEMU, a guest can use ultracalls to +enter "secure mode". This transfers most of its memory to secure +memory, where it cannot be eavesdropped by a compromised hypervisor. + +Launching +^^^^^^^^^ + +To launch a guest which will be permitted to enter PEF secure mode:: + + $ qemu-system-ppc64 \ + -object pef-guest,id=pef0 \ + -machine confidential-guest-support=pef0 \ + ... + +Live Migration +^^^^^^^^^^^^^^ + +Live migration is not yet implemented for PEF guests. For +consistency, QEMU currently prevents migration if the PEF feature is +enabled, whether or not the guest has actually entered secure mode. + + Maintainer contact information ------------------------------ From c52887687e057f21b4b748759c2107aa7e3981b6 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Wed, 12 Jan 2022 11:28:26 +0100 Subject: [PATCH 06/34] MAINTAINERS: Improve the PowerPC machines section MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add some documentation files to the corresponding machine sections and mention the machine names in the section titles where it is not so obvious (e.g. that "taihu" is a 405 machine). Signed-off-by: Thomas Huth Reviewed-by: Daniel Henrique Barboza Reviewed-by: Mark Cave-Ayland Message-Id: <20220105104800.407570-1-thuth@redhat.com> Signed-off-by: Cédric Le Goater --- MAINTAINERS | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/MAINTAINERS b/MAINTAINERS index c98a61caee..6ccdec7f02 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1245,7 +1245,7 @@ F: hw/openrisc/openrisc_sim.c PowerPC Machines ---------------- -405 +405 (ref405ep and taihu) L: qemu-ppc@nongnu.org S: Orphan F: hw/ppc/ppc405_boards.c @@ -1281,6 +1281,7 @@ New World (mac99) M: Mark Cave-Ayland L: qemu-ppc@nongnu.org S: Odd Fixes +F: docs/system/ppc/powermac.rst F: hw/ppc/mac_newworld.c F: hw/pci-host/uninorth.c F: hw/pci-bridge/dec.[hc] @@ -1299,6 +1300,7 @@ Old World (g3beige) M: Mark Cave-Ayland L: qemu-ppc@nongnu.org S: Odd Fixes +F: docs/system/ppc/powermac.rst F: hw/ppc/mac_oldworld.c F: hw/pci-host/grackle.c F: hw/misc/macio/ @@ -1312,6 +1314,7 @@ PReP M: Hervé Poussineau L: qemu-ppc@nongnu.org S: Maintained +F: docs/system/ppc/prep.rst F: hw/ppc/prep.c F: hw/ppc/prep_systemio.c F: hw/ppc/rs6000_mc.c @@ -1324,7 +1327,7 @@ F: include/hw/isa/pc87312.h F: include/hw/rtc/m48t59.h F: tests/avocado/ppc_prep_40p.py -sPAPR +sPAPR (pseries) M: Cédric Le Goater M: Daniel Henrique Barboza R: David Gibson @@ -1336,8 +1339,8 @@ F: include/hw/*/spapr* F: hw/*/xics* F: include/hw/*/xics* F: pc-bios/slof.bin -F: docs/specs/ppc-spapr-hcalls.txt -F: docs/specs/ppc-spapr-hotplug.txt +F: docs/system/ppc/pseries.rst +F: docs/specs/ppc-spapr-* F: tests/qtest/spapr* F: tests/qtest/libqos/*spapr* F: tests/qtest/rtas* @@ -1348,6 +1351,7 @@ PowerNV (Non-Virtualized) M: Cédric Le Goater L: qemu-ppc@nongnu.org S: Maintained +F: docs/system/ppc/powernv.rst F: hw/ppc/pnv* F: hw/intc/pnv* F: hw/intc/xics_pnv.c From a23a72dd1ec2695cb24dde695666d726d40823ca Mon Sep 17 00:00:00 2001 From: Leonardo Garcia Date: Wed, 12 Jan 2022 11:28:26 +0100 Subject: [PATCH 07/34] docs: Clarifications and formatting changes in ppc docs. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Leonardo Garcia Reviewed-by: Cédric Le Goater Message-Id: <3b228af4785241c7fb4a2c70f0c495d2a9adea83.1641405872.git.lagarcia@br.ibm.com> Signed-off-by: Cédric Le Goater --- docs/specs/ppc-spapr-hcalls.rst | 21 ++++++++--------- docs/system/ppc/pseries.rst | 42 ++++++++++++++++----------------- 2 files changed, 31 insertions(+), 32 deletions(-) diff --git a/docs/specs/ppc-spapr-hcalls.rst b/docs/specs/ppc-spapr-hcalls.rst index 28daf9734a..6cdcef2026 100644 --- a/docs/specs/ppc-spapr-hcalls.rst +++ b/docs/specs/ppc-spapr-hcalls.rst @@ -1,13 +1,12 @@ +====================== sPAPR hypervisor calls ----------------------- +====================== When used with the ``pseries`` machine type, ``qemu-system-ppc64`` implements -a set of hypervisor calls (a.k.a. hcalls) defined in the `Linux on Power -Architecture Reference document (LoPAR) -`_. -This document is a subset of the Power Architecture Platform Reference (PAPR+) -specification (IBM internal only), which is what PowerVM, the IBM proprietary -hypervisor, adheres to. +a set of hypervisor calls (a.k.a. hcalls) defined in the Linux on Power +Architecture Reference ([LoPAR]_) document. This document is a subset of the +Power Architecture Platform Reference (PAPR+) specification (IBM internal only), +which is what PowerVM, the IBM proprietary hypervisor, adheres to. The subset in LoPAR is selected based on the requirements of Linux as a guest. @@ -18,8 +17,8 @@ running in the guest and QEMU. All those hypercalls start at hcall number 0xf000 which correspond to an implementation specific range in PAPR. -H_RTAS (0xf000) -^^^^^^^^^^^^^^^ +``H_RTAS (0xf000)`` +=================== RTAS stands for Run-Time Abstraction Sercies and is a set of runtime services generally provided by the firmware inside the guest to the operating system. It @@ -44,8 +43,8 @@ Returns: ``H_PARAMETER``: Unknown token. -H_LOGICAL_MEMOP (0xf001) -^^^^^^^^^^^^^^^^^^^^^^^^ +``H_LOGICAL_MEMOP (0xf001)`` +============================ When the guest runs in "real mode" (in powerpc terminology this means with MMU disabled, i.e. guest effective address equals to guest physical address), it diff --git a/docs/system/ppc/pseries.rst b/docs/system/ppc/pseries.rst index 16394fa521..1689324815 100644 --- a/docs/system/ppc/pseries.rst +++ b/docs/system/ppc/pseries.rst @@ -1,19 +1,18 @@ +=================================== pSeries family boards (``pseries``) =================================== -The Power machine para-virtualized environment described by the `Linux on Power -Architecture Reference document (LoPAR) -`_ -is called pSeries. This environment is also known as sPAPR, System p guests, or -simply Power Linux guests (although it is capable of running other operating -systems, such as AIX). +The Power machine para-virtualized environment described by the Linux on Power +Architecture Reference ([LoPAR]_) document is called pSeries. This environment +is also known as sPAPR, System p guests, or simply Power Linux guests (although +it is capable of running other operating systems, such as AIX). Even though pSeries is designed to behave as a guest environment, it is also capable of acting as a hypervisor OS, providing, on that role, nested virtualization capabilities. Supported devices ------------------ +================= * Multi processor support for many Power processors generations: POWER7, POWER7+, POWER8, POWER8NVL, POWER9, and Power10. Support for POWER5+ exists, @@ -26,12 +25,12 @@ Supported devices * PCIe device pass through. Missing devices ---------------- +=============== * SPICE support. Firmware --------- +======== `SLOF `_ (Slimline Open Firmware) is an implementation of the `IEEE 1275-1994, Standard for Boot (Initialization @@ -42,14 +41,14 @@ QEMU includes a prebuilt image of SLOF which is updated when a more recent version is required. Build directions ----------------- +================ .. code-block:: bash ./configure --target-list=ppc64-softmmu && make Running instructions --------------------- +==================== Someone can select the pSeries machine type by running QEMU with the following options: @@ -59,7 +58,7 @@ options: qemu-system-ppc64 -M pseries sPAPR devices -------------- +============= The sPAPR specification defines a set of para-virtualized devices, which are also supported by the pSeries machine in QEMU and can be instantiated with the @@ -102,11 +101,9 @@ device, or specify one with an ID NVRAM device with ``-global spapr-nvram.drive=pfid``. sPAPR specification -^^^^^^^^^^^^^^^^^^^ +------------------- -The main source of documentation on the sPAPR standard is the `Linux on Power -Architecture Reference document (LoPAR) -`_. +The main source of documentation on the sPAPR standard is the [LoPAR]_ document. However, documentation specific to QEMU's implementation of the specification can also be found in QEMU documentation: @@ -124,7 +121,7 @@ Other documentation available in QEMU docs directory: (``/docs/specs/ppc-spapr-uv-hcalls.txt``). Switching between the KVM-PR and KVM-HV kernel module ------------------------------------------------------ +===================================================== Currently, there are two implementations of KVM on Power, ``kvm_hv.ko`` and ``kvm_pr.ko``. @@ -139,7 +136,7 @@ possible to switch between the two modes with the ``kvm-type`` parameter: instead. KVM-PR -^^^^^^ +------ KVM-PR uses the so-called **PR**\ oblem state of the PPC CPUs to run the guests, i.e. the virtual machine is run in user mode and all privileged instructions @@ -166,7 +163,7 @@ In order to run KVM-PR guests with POWER9 processors, someone will need to start QEMU with ``kernel_irqchip=off`` command line option. KVM-HV -^^^^^^ +------ KVM-HV uses the hypervisor mode of more recent Power processors, that allow access to the bare metal hardware directly. Although POWER7 had this capability, @@ -188,7 +185,7 @@ CPUs generations, e.g. you can run a POWER7 guest on a POWER8 host by using ``-cpu POWER8,compat=power7`` as parameter to QEMU. Modules support ---------------- +=============== As noticed in the sections above, each module can run in a different environment. The following table shows with which environment each module can @@ -264,8 +261,11 @@ enabled, whether or not the guest has actually entered secure mode. Maintainer contact information ------------------------------- +============================== Cédric Le Goater Daniel Henrique Barboza + +.. [LoPAR] `Linux on Power Architecture Reference document (LoPAR) revision + 2.9 `_. From e4e27df72fba1cde2d1e030b1bedf26ca8cefe46 Mon Sep 17 00:00:00 2001 From: Fabiano Rosas Date: Wed, 12 Jan 2022 11:28:26 +0100 Subject: [PATCH 08/34] target/ppc: powerpc_excp: Extract software TLB logging into a function MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fabiano Rosas Reviewed-by: David Gibson Reviewed-by: Richard Henderson Message-Id: <20220107222601.4101511-2-farosas@linux.ibm.com> Signed-off-by: Cédric Le Goater --- target/ppc/excp_helper.c | 63 +++++++++++++++++++++++----------------- 1 file changed, 36 insertions(+), 27 deletions(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index a779dc936a..2c5d5470de 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -135,6 +135,41 @@ static void dump_hcall(CPUPPCState *env) env->nip); } +static void ppc_excp_debug_sw_tlb(CPUPPCState *env, int excp) +{ +#if defined(DEBUG_SOFTWARE_TLB) + const char *es; + target_ulong *miss, *cmp; + int en; + + if (!qemu_log_enabled()) { + return; + } + + if (excp == POWERPC_EXCP_IFTLB) { + es = "I"; + en = 'I'; + miss = &env->spr[SPR_IMISS]; + cmp = &env->spr[SPR_ICMP]; + } else { + if (excp == POWERPC_EXCP_DLTLB) { + es = "DL"; + } else { + es = "DS"; + } + en = 'D'; + miss = &env->spr[SPR_DMISS]; + cmp = &env->spr[SPR_DCMP]; + } + qemu_log("6xx %sTLB miss: %cM " TARGET_FMT_lx " %cC " + TARGET_FMT_lx " H1 " TARGET_FMT_lx " H2 " + TARGET_FMT_lx " %08x\n", es, en, *miss, en, *cmp, + env->spr[SPR_HASH1], env->spr[SPR_HASH2], + env->error_code); +#endif +} + + static int powerpc_reset_wakeup(CPUState *cs, CPUPPCState *env, int excp, target_ulong *msr) { @@ -777,34 +812,8 @@ static void powerpc_excp(PowerPCCPU *cpu, int excp) } /* fall through */ case POWERPC_EXCP_7x5: -#if defined(DEBUG_SOFTWARE_TLB) - if (qemu_log_enabled()) { - const char *es; - target_ulong *miss, *cmp; - int en; + ppc_excp_debug_sw_tlb(env, excp); - if (excp == POWERPC_EXCP_IFTLB) { - es = "I"; - en = 'I'; - miss = &env->spr[SPR_IMISS]; - cmp = &env->spr[SPR_ICMP]; - } else { - if (excp == POWERPC_EXCP_DLTLB) { - es = "DL"; - } else { - es = "DS"; - } - en = 'D'; - miss = &env->spr[SPR_DMISS]; - cmp = &env->spr[SPR_DCMP]; - } - qemu_log("6xx %sTLB miss: %cM " TARGET_FMT_lx " %cC " - TARGET_FMT_lx " H1 " TARGET_FMT_lx " H2 " - TARGET_FMT_lx " %08x\n", es, en, *miss, en, *cmp, - env->spr[SPR_HASH1], env->spr[SPR_HASH2], - env->error_code); - } -#endif msr |= env->crf[0] << 28; msr |= env->error_code; /* key, D/I, S/L bits */ /* Set way using a LRU mechanism */ From 2e089eced81e26bb6b8535776faf1bf265a0cdb4 Mon Sep 17 00:00:00 2001 From: Fabiano Rosas Date: Wed, 12 Jan 2022 11:28:26 +0100 Subject: [PATCH 09/34] target/ppc: powerpc_excp: Keep 60x/7x5 soft MMU logs active MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove the compile time definition and make the logging be controlled by the `-d mmu` option in the cmdline. Signed-off-by: Fabiano Rosas Reviewed-by: Cédric Le Goater Reviewed-by: David Gibson Message-Id: <20220107222601.4101511-3-farosas@linux.ibm.com> Signed-off-by: Cédric Le Goater --- target/ppc/excp_helper.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 2c5d5470de..a12ed14c30 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -30,8 +30,6 @@ #include "exec/cpu_ldst.h" #endif -/* #define DEBUG_SOFTWARE_TLB */ - /*****************************************************************************/ /* Exception processing */ #if !defined(CONFIG_USER_ONLY) @@ -137,12 +135,11 @@ static void dump_hcall(CPUPPCState *env) static void ppc_excp_debug_sw_tlb(CPUPPCState *env, int excp) { -#if defined(DEBUG_SOFTWARE_TLB) const char *es; target_ulong *miss, *cmp; int en; - if (!qemu_log_enabled()) { + if (!qemu_loglevel_mask(CPU_LOG_MMU)) { return; } @@ -166,7 +163,6 @@ static void ppc_excp_debug_sw_tlb(CPUPPCState *env, int excp) TARGET_FMT_lx " %08x\n", es, en, *miss, en, *cmp, env->spr[SPR_HASH1], env->spr[SPR_HASH2], env->error_code); -#endif } From 4dff75fe95e1aa101567d7052301f125a21323e4 Mon Sep 17 00:00:00 2001 From: Fabiano Rosas Date: Wed, 12 Jan 2022 11:28:27 +0100 Subject: [PATCH 10/34] target/ppc: powerpc_excp: Group unimplemented exceptions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fabiano Rosas Reviewed-by: Cédric Le Goater Reviewed-by: David Gibson Reviewed-by: Richard Henderson Message-Id: <20220107222601.4101511-4-farosas@linux.ibm.com> Signed-off-by: Cédric Le Goater --- target/ppc/excp_helper.c | 77 +++++----------------------------------- 1 file changed, 8 insertions(+), 69 deletions(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index a12ed14c30..a52340ac0a 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -700,23 +700,6 @@ static void powerpc_excp(PowerPCCPU *cpu, int excp) case POWERPC_EXCP_SPEU: /* SPE/embedded floating-point unavailable/VPU */ env->spr[SPR_BOOKE_ESR] = ESR_SPV; break; - case POWERPC_EXCP_EFPDI: /* Embedded floating-point data interrupt */ - /* XXX: TODO */ - cpu_abort(cs, "Embedded floating point data exception " - "is not implemented yet !\n"); - env->spr[SPR_BOOKE_ESR] = ESR_SPV; - break; - case POWERPC_EXCP_EFPRI: /* Embedded floating-point round interrupt */ - /* XXX: TODO */ - cpu_abort(cs, "Embedded floating point round exception " - "is not implemented yet !\n"); - env->spr[SPR_BOOKE_ESR] = ESR_SPV; - break; - case POWERPC_EXCP_EPERFM: /* Embedded performance monitor interrupt */ - /* XXX: TODO */ - cpu_abort(cs, - "Performance counter exception is not implemented yet !\n"); - break; case POWERPC_EXCP_DOORI: /* Embedded doorbell interrupt */ break; case POWERPC_EXCP_DOORCI: /* Embedded doorbell critical interrupt */ @@ -781,19 +764,6 @@ static void powerpc_excp(PowerPCCPU *cpu, int excp) case POWERPC_EXCP_PIT: /* Programmable interval timer interrupt */ trace_ppc_excp_print("PIT"); break; - case POWERPC_EXCP_IO: /* IO error exception */ - /* XXX: TODO */ - cpu_abort(cs, "601 IO error exception is not implemented yet !\n"); - break; - case POWERPC_EXCP_RUNM: /* Run mode exception */ - /* XXX: TODO */ - cpu_abort(cs, "601 run mode exception is not implemented yet !\n"); - break; - case POWERPC_EXCP_EMUL: /* Emulation trap exception */ - /* XXX: TODO */ - cpu_abort(cs, "602 emulation trap exception " - "is not implemented yet !\n"); - break; case POWERPC_EXCP_IFTLB: /* Instruction fetch TLB error */ case POWERPC_EXCP_DLTLB: /* Data load TLB miss */ case POWERPC_EXCP_DSTLB: /* Data store TLB miss */ @@ -820,56 +790,25 @@ static void powerpc_excp(PowerPCCPU *cpu, int excp) break; } break; + case POWERPC_EXCP_EFPDI: /* Embedded floating-point data interrupt */ + case POWERPC_EXCP_EFPRI: /* Embedded floating-point round interrupt */ + case POWERPC_EXCP_EPERFM: /* Embedded performance monitor interrupt */ + case POWERPC_EXCP_IO: /* IO error exception */ + case POWERPC_EXCP_RUNM: /* Run mode exception */ + case POWERPC_EXCP_EMUL: /* Emulation trap exception */ case POWERPC_EXCP_FPA: /* Floating-point assist exception */ - /* XXX: TODO */ - cpu_abort(cs, "Floating point assist exception " - "is not implemented yet !\n"); - break; case POWERPC_EXCP_DABR: /* Data address breakpoint */ - /* XXX: TODO */ - cpu_abort(cs, "DABR exception is not implemented yet !\n"); - break; case POWERPC_EXCP_IABR: /* Instruction address breakpoint */ - /* XXX: TODO */ - cpu_abort(cs, "IABR exception is not implemented yet !\n"); - break; case POWERPC_EXCP_SMI: /* System management interrupt */ - /* XXX: TODO */ - cpu_abort(cs, "SMI exception is not implemented yet !\n"); - break; case POWERPC_EXCP_THERM: /* Thermal interrupt */ - /* XXX: TODO */ - cpu_abort(cs, "Thermal management exception " - "is not implemented yet !\n"); - break; case POWERPC_EXCP_PERFM: /* Embedded performance monitor interrupt */ - /* XXX: TODO */ - cpu_abort(cs, - "Performance counter exception is not implemented yet !\n"); - break; case POWERPC_EXCP_VPUA: /* Vector assist exception */ - /* XXX: TODO */ - cpu_abort(cs, "VPU assist exception is not implemented yet !\n"); - break; case POWERPC_EXCP_SOFTP: /* Soft patch exception */ - /* XXX: TODO */ - cpu_abort(cs, - "970 soft-patch exception is not implemented yet !\n"); - break; case POWERPC_EXCP_MAINT: /* Maintenance exception */ - /* XXX: TODO */ - cpu_abort(cs, - "970 maintenance exception is not implemented yet !\n"); - break; case POWERPC_EXCP_MEXTBR: /* Maskable external breakpoint */ - /* XXX: TODO */ - cpu_abort(cs, "Maskable external exception " - "is not implemented yet !\n"); - break; case POWERPC_EXCP_NMEXTBR: /* Non maskable external breakpoint */ - /* XXX: TODO */ - cpu_abort(cs, "Non maskable external exception " - "is not implemented yet !\n"); + cpu_abort(cs, "%s exception not implemented\n", + powerpc_excp_name(excp)); break; default: excp_invalid: From 516fc1036b06a48042de1309c4e76abda255cf7b Mon Sep 17 00:00:00 2001 From: Fabiano Rosas Date: Wed, 12 Jan 2022 11:28:27 +0100 Subject: [PATCH 11/34] target/ppc: Add HV support to ppc_interrupts_little_endian MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The ppc_interrupts_little_endian function could be used for interrupts delivered in Hypervisor mode, so add support for powernv8 and powernv9 to it. Also drop the comment because it is inaccurate, all CPUs that can run little endian can have interrupts in little endian. The point is whether they can take interrupts in an endianness different from MSR_LE. This change has no functional impact. Signed-off-by: Fabiano Rosas Reviewed-by: David Gibson Message-Id: <20220107222601.4101511-5-farosas@linux.ibm.com> Signed-off-by: Cédric Le Goater --- target/ppc/arch_dump.c | 2 +- target/ppc/cpu.h | 23 +++++++++++++++-------- target/ppc/excp_helper.c | 2 +- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/target/ppc/arch_dump.c b/target/ppc/arch_dump.c index bb392f6d88..12cde198a3 100644 --- a/target/ppc/arch_dump.c +++ b/target/ppc/arch_dump.c @@ -237,7 +237,7 @@ int cpu_get_dump_info(ArchDumpInfo *info, info->d_machine = PPC_ELF_MACHINE; info->d_class = ELFCLASS; - if (ppc_interrupts_little_endian(cpu)) { + if (ppc_interrupts_little_endian(cpu, false)) { info->d_endian = ELFDATA2LSB; } else { info->d_endian = ELFDATA2MSB; diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index f20d4ffa6d..a6fc857ad4 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -2728,20 +2728,27 @@ static inline bool ppc_has_spr(PowerPCCPU *cpu, int spr) return cpu->env.spr_cb[spr].name != NULL; } -static inline bool ppc_interrupts_little_endian(PowerPCCPU *cpu) +#if !defined(CONFIG_USER_ONLY) +static inline bool ppc_interrupts_little_endian(PowerPCCPU *cpu, bool hv) { PowerPCCPUClass *pcc = POWERPC_CPU_GET_CLASS(cpu); + CPUPPCState *env = &cpu->env; + bool ile = false; - /* - * Only models that have an LPCR and know about LPCR_ILE can do little - * endian. - */ - if (pcc->lpcr_mask & LPCR_ILE) { - return !!(cpu->env.spr[SPR_LPCR] & LPCR_ILE); + if (hv && env->has_hv_mode) { + if (is_isa300(pcc)) { + ile = !!(env->spr[SPR_HID0] & HID0_POWER9_HILE); + } else { + ile = !!(env->spr[SPR_HID0] & HID0_HILE); + } + + } else if (pcc->lpcr_mask & LPCR_ILE) { + ile = !!(env->spr[SPR_LPCR] & LPCR_ILE); } - return false; + return ile; } +#endif void dump_mmu(CPUPPCState *env); diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index a52340ac0a..3a430f23d6 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -1070,7 +1070,7 @@ void ppc_cpu_do_fwnmi_machine_check(CPUState *cs, target_ulong vector) */ msr = (1ULL << MSR_ME); msr |= env->msr & (1ULL << MSR_SF); - if (ppc_interrupts_little_endian(cpu)) { + if (ppc_interrupts_little_endian(cpu, false)) { msr |= (1ULL << MSR_LE); } From 2e89484821883457cc76a576cf398a7efde4e052 Mon Sep 17 00:00:00 2001 From: Fabiano Rosas Date: Wed, 12 Jan 2022 11:28:27 +0100 Subject: [PATCH 12/34] target/ppc: Add MSR_ILE support to ppc_interrupts_little_endian MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some CPUs set ILE via an MSR bit. We can make ppc_interrupts_little_endian handle that case as well. Now we have a centralized way of determining the endianness of interrupts. This change has no functional impact. Signed-off-by: Fabiano Rosas Reviewed-by: David Gibson Message-Id: <20220107222601.4101511-6-farosas@linux.ibm.com> Signed-off-by: Cédric Le Goater --- target/ppc/cpu.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h index a6fc857ad4..f99cd0ea92 100644 --- a/target/ppc/cpu.h +++ b/target/ppc/cpu.h @@ -2733,7 +2733,7 @@ static inline bool ppc_interrupts_little_endian(PowerPCCPU *cpu, bool hv) { PowerPCCPUClass *pcc = POWERPC_CPU_GET_CLASS(cpu); CPUPPCState *env = &cpu->env; - bool ile = false; + bool ile; if (hv && env->has_hv_mode) { if (is_isa300(pcc)) { @@ -2744,6 +2744,8 @@ static inline bool ppc_interrupts_little_endian(PowerPCCPU *cpu, bool hv) } else if (pcc->lpcr_mask & LPCR_ILE) { ile = !!(env->spr[SPR_LPCR] & LPCR_ILE); + } else { + ile = !!(msr_ile); } return ile; From 19bd7f5747dc75120f7fdaad7a153aa90d468df0 Mon Sep 17 00:00:00 2001 From: Fabiano Rosas Date: Wed, 12 Jan 2022 11:28:27 +0100 Subject: [PATCH 13/34] target/ppc: Use ppc_interrupts_little_endian in powerpc_excp MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The ppc_interrupts_little_endian function is now suitable for determining the endianness of interrupts for all CPUs. Signed-off-by: Fabiano Rosas Reviewed-by: David Gibson Message-Id: <20220107222601.4101511-7-farosas@linux.ibm.com> Signed-off-by: Cédric Le Goater --- target/ppc/excp_helper.c | 29 +---------------------------- 1 file changed, 1 insertion(+), 28 deletions(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 3a430f23d6..3b4123bc65 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -832,36 +832,9 @@ static void powerpc_excp(PowerPCCPU *cpu, int excp) * Sort out endianness of interrupt, this differs depending on the * CPU, the HV mode, etc... */ -#ifdef TARGET_PPC64 - if (excp_model == POWERPC_EXCP_POWER7) { - if (!(new_msr & MSR_HVB) && (env->spr[SPR_LPCR] & LPCR_ILE)) { - new_msr |= (target_ulong)1 << MSR_LE; - } - } else if (excp_model == POWERPC_EXCP_POWER8) { - if (new_msr & MSR_HVB) { - if (env->spr[SPR_HID0] & HID0_HILE) { - new_msr |= (target_ulong)1 << MSR_LE; - } - } else if (env->spr[SPR_LPCR] & LPCR_ILE) { - new_msr |= (target_ulong)1 << MSR_LE; - } - } else if (excp_model == POWERPC_EXCP_POWER9 || - excp_model == POWERPC_EXCP_POWER10) { - if (new_msr & MSR_HVB) { - if (env->spr[SPR_HID0] & HID0_POWER9_HILE) { - new_msr |= (target_ulong)1 << MSR_LE; - } - } else if (env->spr[SPR_LPCR] & LPCR_ILE) { - new_msr |= (target_ulong)1 << MSR_LE; - } - } else if (msr_ile) { + if (ppc_interrupts_little_endian(cpu, !!(new_msr & MSR_HVB))) { new_msr |= (target_ulong)1 << MSR_LE; } -#else - if (msr_ile) { - new_msr |= (target_ulong)1 << MSR_LE; - } -#endif #if defined(TARGET_PPC64) if (excp_model == POWERPC_EXCP_BOOKE) { From dc88dd0a864b441453934a26a2c672f33c1d6ee7 Mon Sep 17 00:00:00 2001 From: Fabiano Rosas Date: Wed, 12 Jan 2022 11:28:27 +0100 Subject: [PATCH 14/34] target/ppc: Introduce a wrapper for powerpc_excp MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Next patches will split powerpc_excp in multiple family specific handlers. This patch adds a wrapper to make the transition clearer. Signed-off-by: Fabiano Rosas Reviewed-by: David Gibson Message-Id: <20220107222601.4101511-8-farosas@linux.ibm.com> Signed-off-by: Cédric Le Goater --- target/ppc/excp_helper.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index 3b4123bc65..bc646c67a0 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -396,7 +396,7 @@ static void powerpc_set_excp_state(PowerPCCPU *cpu, * Note that this function should be greatly optimized when called * with a constant excp, from ppc_hw_interrupt */ -static void powerpc_excp(PowerPCCPU *cpu, int excp) +static inline void powerpc_excp_legacy(PowerPCCPU *cpu, int excp) { CPUState *cs = CPU(cpu); CPUPPCState *env = &cpu->env; @@ -867,6 +867,16 @@ static void powerpc_excp(PowerPCCPU *cpu, int excp) powerpc_set_excp_state(cpu, vector, new_msr); } +static void powerpc_excp(PowerPCCPU *cpu, int excp) +{ + CPUPPCState *env = &cpu->env; + + switch (env->excp_model) { + default: + powerpc_excp_legacy(cpu, excp); + } +} + void ppc_cpu_do_interrupt(CPUState *cs) { PowerPCCPU *cpu = POWERPC_CPU(cs); From 5609400a422809c89ea788e4d0e13124a617582e Mon Sep 17 00:00:00 2001 From: Fabiano Rosas Date: Wed, 12 Jan 2022 11:28:27 +0100 Subject: [PATCH 15/34] target/ppc: Set the correct endianness for powernv memory dumps MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We use the endianness of interrupts to determine which endianness to use for the guest kernel memory dump. For machines that support HILE (powernv8 and up) we have been always generating big endian dump files. This patch uses the HILE support recently added to ppc_interrupts_little_endian to fix the endianness of the dumps for powernv machines. Here are two dumps created at different moments: $ file skiboot.dump skiboot.dump: ELF 64-bit MSB core file, 64-bit PowerPC ... $ file kernel.dump kernel.dump: ELF 64-bit LSB core file, 64-bit PowerPC ... Suggested-by: David Gibson Signed-off-by: Fabiano Rosas Reviewed-by: David Gibson Message-Id: <20220107222601.4101511-9-farosas@linux.ibm.com> Signed-off-by: Cédric Le Goater --- target/ppc/arch_dump.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/ppc/arch_dump.c b/target/ppc/arch_dump.c index 12cde198a3..993740897d 100644 --- a/target/ppc/arch_dump.c +++ b/target/ppc/arch_dump.c @@ -237,7 +237,7 @@ int cpu_get_dump_info(ArchDumpInfo *info, info->d_machine = PPC_ELF_MACHINE; info->d_class = ELFCLASS; - if (ppc_interrupts_little_endian(cpu, false)) { + if (ppc_interrupts_little_endian(cpu, cpu->env.has_hv_mode)) { info->d_endian = ELFDATA2LSB; } else { info->d_endian = ELFDATA2MSB; From 392c278302b8e20a7c593708395a6649452d323b Mon Sep 17 00:00:00 2001 From: Daniel Henrique Barboza Date: Wed, 12 Jan 2022 11:28:27 +0100 Subject: [PATCH 16/34] pnv_phb3.c: add unique chassis and slot for pnv_phb3_root_port MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When creating a pnv_phb3_root_port using the command line, the first root port is created successfully, but the second fails with the following error: qemu-system-ppc64: -device pnv-phb3-root-port,bus=phb3-root.0,id=pcie.3: Can't add chassis slot, error -16 This error comes from the realize() function of its parent type, rp_realize() from TYPE_PCIE_ROOT_PORT. pcie_chassis_add_slot() fails with -EBUSY if there's an existing PCIESlot that has the same chassis/slot value, regardless of being in a different bus. One way to prevent this error is simply set chassis and slot values in the command line. However, since phb3 root buses only supports a single root port, we can just get an unique chassis/slot value by checking which root bus the pnv_phb3_root_port is going to be attached, get the equivalent phb3 device and use its chip-id and index values, which are guaranteed to be unique. Signed-off-by: Daniel Henrique Barboza Message-Id: <20220105212338.49899-2-danielhb413@gmail.com> Signed-off-by: Cédric Le Goater --- hw/pci-host/pnv_phb3.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/hw/pci-host/pnv_phb3.c b/hw/pci-host/pnv_phb3.c index c78084cce7..3467bbb5d9 100644 --- a/hw/pci-host/pnv_phb3.c +++ b/hw/pci-host/pnv_phb3.c @@ -1142,8 +1142,24 @@ static const TypeInfo pnv_phb3_root_bus_info = { static void pnv_phb3_root_port_realize(DeviceState *dev, Error **errp) { PCIERootPortClass *rpc = PCIE_ROOT_PORT_GET_CLASS(dev); + PCIDevice *pci = PCI_DEVICE(dev); + PCIBus *bus = pci_get_bus(pci); + PnvPHB3 *phb = NULL; Error *local_err = NULL; + phb = (PnvPHB3 *) object_dynamic_cast(OBJECT(bus->qbus.parent), + TYPE_PNV_PHB3); + + if (!phb) { + error_setg(errp, +"pnv_phb3_root_port devices must be connected to pnv-phb3 buses"); + return; + } + + /* Set unique chassis/slot values for the root port */ + qdev_prop_set_uint8(&pci->qdev, "chassis", phb->chip_id); + qdev_prop_set_uint16(&pci->qdev, "slot", phb->phb_id); + rpc->parent_realize(dev, &local_err); if (local_err) { error_propagate(errp, local_err); From 5ff21d94e2ce0a89ca1a490a31929171cf28e92f Mon Sep 17 00:00:00 2001 From: Daniel Henrique Barboza Date: Wed, 12 Jan 2022 11:28:27 +0100 Subject: [PATCH 17/34] pnv_phb4.c: add unique chassis and slot for pnv_phb4_root_port MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A similar situation as described previously with pnv_phb3_root_port devices also happens with pnv_phb4_root_ports. The solution is the same: assign an unique chassis/slot combo for them. Signed-off-by: Daniel Henrique Barboza Message-Id: <20220105212338.49899-3-danielhb413@gmail.com> Signed-off-by: Cédric Le Goater --- hw/pci-host/pnv_phb4.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/hw/pci-host/pnv_phb4.c b/hw/pci-host/pnv_phb4.c index 5ba26e250a..836b0c156c 100644 --- a/hw/pci-host/pnv_phb4.c +++ b/hw/pci-host/pnv_phb4.c @@ -1338,8 +1338,23 @@ static void pnv_phb4_root_port_reset(DeviceState *dev) static void pnv_phb4_root_port_realize(DeviceState *dev, Error **errp) { PCIERootPortClass *rpc = PCIE_ROOT_PORT_GET_CLASS(dev); + PCIDevice *pci = PCI_DEVICE(dev); + PCIBus *bus = pci_get_bus(pci); + PnvPHB4 *phb = NULL; Error *local_err = NULL; + phb = (PnvPHB4 *) object_dynamic_cast(OBJECT(bus->qbus.parent), + TYPE_PNV_PHB4); + + if (!phb) { + error_setg(errp, "%s must be connected to pnv-phb4 buses", dev->id); + return; + } + + /* Set unique chassis/slot values for the root port */ + qdev_prop_set_uint8(&pci->qdev, "chassis", phb->chip_id); + qdev_prop_set_uint16(&pci->qdev, "slot", phb->phb_id); + rpc->parent_realize(dev, &local_err); if (local_err) { error_propagate(errp, local_err); From a71cd51e2aae333dde272ff83661f9ef0fe62a30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Date: Wed, 12 Jan 2022 11:28:27 +0100 Subject: [PATCH 18/34] ppc/pnv: Attach PHB3 root port device when defaults are enabled MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This cleanups the PHB3 model a bit more since the root port is an independent device and it will ease our task when adding user created PHB3s. pnv_phb_attach_root_port() is made public in pnv.c so it can be reused with the pnv_phb4 root port later. Signed-off-by: Cédric Le Goater Signed-off-by: Daniel Henrique Barboza Message-Id: <20220105212338.49899-4-danielhb413@gmail.com> Signed-off-by: Cédric Le Goater --- hw/pci-host/pnv_phb3.c | 15 ++++++--------- hw/ppc/pnv.c | 8 ++++++++ include/hw/pci-host/pnv_phb3.h | 2 -- include/hw/ppc/pnv.h | 1 + 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/hw/pci-host/pnv_phb3.c b/hw/pci-host/pnv_phb3.c index 3467bbb5d9..fdc8d0b437 100644 --- a/hw/pci-host/pnv_phb3.c +++ b/hw/pci-host/pnv_phb3.c @@ -19,6 +19,7 @@ #include "hw/irq.h" #include "hw/qdev-properties.h" #include "qom/object.h" +#include "sysemu/sysemu.h" #define phb3_error(phb, fmt, ...) \ qemu_log_mask(LOG_GUEST_ERROR, "phb3[%d:%d]: " fmt "\n", \ @@ -981,10 +982,6 @@ static void pnv_phb3_instance_init(Object *obj) /* Power Bus Common Queue */ object_initialize_child(obj, "pbcq", &phb->pbcq, TYPE_PNV_PBCQ); - /* Root Port */ - object_initialize_child(obj, "root", &phb->root, TYPE_PNV_PHB3_ROOT_PORT); - qdev_prop_set_int32(DEVICE(&phb->root), "addr", PCI_DEVFN(0, 0)); - qdev_prop_set_bit(DEVICE(&phb->root), "multifunction", false); } static void pnv_phb3_realize(DeviceState *dev, Error **errp) @@ -1053,10 +1050,10 @@ static void pnv_phb3_realize(DeviceState *dev, Error **errp) pci_setup_iommu(pci->bus, pnv_phb3_dma_iommu, phb); - /* Add a single Root port */ - qdev_prop_set_uint8(DEVICE(&phb->root), "chassis", phb->chip_id); - qdev_prop_set_uint16(DEVICE(&phb->root), "slot", phb->phb_id); - qdev_realize(DEVICE(&phb->root), BUS(pci->bus), &error_fatal); + if (defaults_enabled()) { + pnv_phb_attach_root_port(PCI_HOST_BRIDGE(phb), + TYPE_PNV_PHB3_ROOT_PORT); + } } void pnv_phb3_update_regions(PnvPHB3 *phb) @@ -1177,7 +1174,7 @@ static void pnv_phb3_root_port_class_init(ObjectClass *klass, void *data) device_class_set_parent_realize(dc, pnv_phb3_root_port_realize, &rpc->parent_realize); - dc->user_creatable = false; + dc->user_creatable = true; k->vendor_id = PCI_VENDOR_ID_IBM; k->device_id = 0x03dc; diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 9de8b83530..3a263f631a 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -1156,6 +1156,14 @@ static void pnv_chip_icp_realize(Pnv8Chip *chip8, Error **errp) } } +/* Attach a root port device */ +void pnv_phb_attach_root_port(PCIHostState *pci, const char *name) +{ + PCIDevice *root = pci_new(PCI_DEVFN(0, 0), name); + + pci_realize_and_unref(root, pci->bus, &error_fatal); +} + static void pnv_chip_power8_realize(DeviceState *dev, Error **errp) { PnvChipClass *pcc = PNV_CHIP_GET_CLASS(dev); diff --git a/include/hw/pci-host/pnv_phb3.h b/include/hw/pci-host/pnv_phb3.h index e9c13e6bd8..2e423c3890 100644 --- a/include/hw/pci-host/pnv_phb3.h +++ b/include/hw/pci-host/pnv_phb3.h @@ -155,8 +155,6 @@ struct PnvPHB3 { PnvPBCQState pbcq; - PnvPHB3RootPort root; - QLIST_HEAD(, PnvPhb3DMASpace) dma_spaces; PnvChip *chip; diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h index c781525277..c726288e5e 100644 --- a/include/hw/ppc/pnv.h +++ b/include/hw/ppc/pnv.h @@ -177,6 +177,7 @@ DECLARE_INSTANCE_CHECKER(PnvChip, PNV_CHIP_POWER10, TYPE_PNV_CHIP_POWER10) PowerPCCPU *pnv_chip_find_cpu(PnvChip *chip, uint32_t pir); +void pnv_phb_attach_root_port(PCIHostState *pci, const char *name); #define TYPE_PNV_MACHINE MACHINE_TYPE_NAME("powernv") typedef struct PnvMachineClass PnvMachineClass; From 1360fd832b0d41b00d15574a0e9ecd6d513dbeaa Mon Sep 17 00:00:00 2001 From: Daniel Henrique Barboza Date: Wed, 12 Jan 2022 11:28:27 +0100 Subject: [PATCH 19/34] pnv_phb4.c: make pnv-phb4-root-port user creatable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We want to create only the absolutely minimal amount of devices when running with -nodefaults. The root port is something that the machine can boot up without. But, to do that, we need to provide a way for the user to add them by hand. This patch makes pnv-phb4-root-port user creatable and then uses the pnv_phb_attach_root_port() helper to add a pnv_phb4_root_port only when running with default settings. Signed-off-by: Daniel Henrique Barboza Message-Id: <20220105212338.49899-5-danielhb413@gmail.com> Signed-off-by: Cédric Le Goater --- hw/pci-host/pnv_phb4.c | 18 +++++++----------- include/hw/pci-host/pnv_phb4.h | 2 -- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/hw/pci-host/pnv_phb4.c b/hw/pci-host/pnv_phb4.c index 836b0c156c..14827f8464 100644 --- a/hw/pci-host/pnv_phb4.c +++ b/hw/pci-host/pnv_phb4.c @@ -22,6 +22,7 @@ #include "hw/irq.h" #include "hw/qdev-properties.h" #include "qom/object.h" +#include "sysemu/sysemu.h" #include "trace.h" #define phb_error(phb, fmt, ...) \ @@ -1159,12 +1160,6 @@ static void pnv_phb4_instance_init(Object *obj) /* XIVE interrupt source object */ object_initialize_child(obj, "source", &phb->xsrc, TYPE_XIVE_SOURCE); - - /* Root Port */ - object_initialize_child(obj, "root", &phb->root, TYPE_PNV_PHB4_ROOT_PORT); - - qdev_prop_set_int32(DEVICE(&phb->root), "addr", PCI_DEVFN(0, 0)); - qdev_prop_set_bit(DEVICE(&phb->root), "multifunction", false); } static void pnv_phb4_realize(DeviceState *dev, Error **errp) @@ -1208,10 +1203,11 @@ static void pnv_phb4_realize(DeviceState *dev, Error **errp) pci_setup_iommu(pci->bus, pnv_phb4_dma_iommu, phb); pci->bus->flags |= PCI_BUS_EXTENDED_CONFIG_SPACE; - /* Add a single Root port */ - qdev_prop_set_uint8(DEVICE(&phb->root), "chassis", phb->chip_id); - qdev_prop_set_uint16(DEVICE(&phb->root), "slot", phb->phb_id); - qdev_realize(DEVICE(&phb->root), BUS(pci->bus), &error_fatal); + /* Add a single Root port if running with defaults */ + if (defaults_enabled()) { + pnv_phb_attach_root_port(PCI_HOST_BRIDGE(phb), + TYPE_PNV_PHB4_ROOT_PORT); + } /* Setup XIVE Source */ if (phb->big_phb) { @@ -1369,7 +1365,7 @@ static void pnv_phb4_root_port_class_init(ObjectClass *klass, void *data) PCIERootPortClass *rpc = PCIE_ROOT_PORT_CLASS(klass); dc->desc = "IBM PHB4 PCIE Root Port"; - dc->user_creatable = false; + dc->user_creatable = true; device_class_set_parent_realize(dc, pnv_phb4_root_port_realize, &rpc->parent_realize); diff --git a/include/hw/pci-host/pnv_phb4.h b/include/hw/pci-host/pnv_phb4.h index 4a19338db3..ea63df9676 100644 --- a/include/hw/pci-host/pnv_phb4.h +++ b/include/hw/pci-host/pnv_phb4.h @@ -78,8 +78,6 @@ OBJECT_DECLARE_SIMPLE_TYPE(PnvPHB4, PNV_PHB4) struct PnvPHB4 { PCIExpressHost parent_obj; - PnvPHB4RootPort root; - uint32_t chip_id; uint32_t phb_id; From e022e5a73a13bf1a67bb044ebbe7376c11ff4d55 Mon Sep 17 00:00:00 2001 From: Daniel Henrique Barboza Date: Wed, 12 Jan 2022 11:28:27 +0100 Subject: [PATCH 20/34] pnv_phb4.c: check if root port exists in rc_config functions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit pnv_phb4_rc_config_read() and pnv_phb4_rc_config_write() are asserting the existence of the root port. The root port is now optional, and there will be cases where a pnv-phb4 device won't have a root port attached. Instead of asserting, check if the root port exists before read/writing into it. Signed-off-by: Daniel Henrique Barboza Message-Id: <20220105212338.49899-6-danielhb413@gmail.com> Signed-off-by: Cédric Le Goater --- hw/pci-host/pnv_phb4.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/hw/pci-host/pnv_phb4.c b/hw/pci-host/pnv_phb4.c index 14827f8464..83dedc878a 100644 --- a/hw/pci-host/pnv_phb4.c +++ b/hw/pci-host/pnv_phb4.c @@ -152,7 +152,10 @@ static void pnv_phb4_rc_config_write(PnvPHB4 *phb, unsigned off, } pdev = pci_find_device(pci->bus, 0, 0); - assert(pdev); + if (!pdev) { + phb_error(phb, "rc_config_write device not found\n"); + return; + } pci_host_config_write_common(pdev, off, PHB_RC_CONFIG_SIZE, bswap32(val), 4); @@ -171,7 +174,10 @@ static uint64_t pnv_phb4_rc_config_read(PnvPHB4 *phb, unsigned off, } pdev = pci_find_device(pci->bus, 0, 0); - assert(pdev); + if (!pdev) { + phb_error(phb, "rc_config_read device not found\n"); + return ~0ull; + } val = pci_host_config_read_common(pdev, off, PHB_RC_CONFIG_SIZE, 4); return bswap32(val); From 1f6a88fffc7533a9fd64c74c298d82590277cb3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Date: Wed, 12 Jan 2022 11:28:27 +0100 Subject: [PATCH 21/34] ppc/pnv: Introduce support for user created PHB3 devices MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PHB3 devices and PCI devices can now be added to the powernv8 machine using : -device pnv-phb3,chip-id=0,index=1 \ -device nec-usb-xhci,bus=pci.1,addr=0x0 The 'index' property identifies the PHB3 in the chip. In case of user created devices, a lookup on 'chip-id' is required to assign the owning chip. Reviewed-by: Daniel Henrique Barboza Signed-off-by: Cédric Le Goater Message-Id: <20220105212338.49899-7-danielhb413@gmail.com> Signed-off-by: Cédric Le Goater --- hw/pci-host/pnv_phb3.c | 11 ++++++++++- hw/ppc/pnv.c | 23 ++++++++++++++++++----- include/hw/ppc/pnv.h | 2 ++ 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/hw/pci-host/pnv_phb3.c b/hw/pci-host/pnv_phb3.c index fdc8d0b437..1ebe43df5d 100644 --- a/hw/pci-host/pnv_phb3.c +++ b/hw/pci-host/pnv_phb3.c @@ -991,6 +991,15 @@ static void pnv_phb3_realize(DeviceState *dev, Error **errp) PnvMachineState *pnv = PNV_MACHINE(qdev_get_machine()); int i; + /* User created devices */ + if (!phb->chip) { + phb->chip = pnv_get_chip(pnv, phb->chip_id); + if (!phb->chip) { + error_setg(errp, "invalid chip id: %d", phb->chip_id); + return; + } + } + if (phb->phb_id >= PNV_CHIP_GET_CLASS(phb->chip)->num_phbs) { error_setg(errp, "invalid PHB index: %d", phb->phb_id); return; @@ -1104,7 +1113,7 @@ static void pnv_phb3_class_init(ObjectClass *klass, void *data) dc->realize = pnv_phb3_realize; device_class_set_props(dc, pnv_phb3_properties); set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); - dc->user_creatable = false; + dc->user_creatable = true; } static const TypeInfo pnv_phb3_type_info = { diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 3a263f631a..ad02d56aa7 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -1117,14 +1117,14 @@ static void pnv_chip_power8_instance_init(Object *obj) object_initialize_child(obj, "homer", &chip8->homer, TYPE_PNV8_HOMER); - for (i = 0; i < pcc->num_phbs; i++) { + if (defaults_enabled()) { + chip->num_phbs = pcc->num_phbs; + } + + for (i = 0; i < chip->num_phbs; i++) { object_initialize_child(obj, "phb[*]", &chip8->phbs[i], TYPE_PNV_PHB3); } - /* - * Number of PHBs is the chip default - */ - chip->num_phbs = pcc->num_phbs; } static void pnv_chip_icp_realize(Pnv8Chip *chip8, Error **errp) @@ -1814,6 +1814,19 @@ static ICSState *pnv_ics_get(XICSFabric *xi, int irq) return NULL; } +PnvChip *pnv_get_chip(PnvMachineState *pnv, uint32_t chip_id) +{ + int i; + + for (i = 0; i < pnv->num_chips; i++) { + PnvChip *chip = pnv->chips[i]; + if (chip->chip_id == chip_id) { + return chip; + } + } + return NULL; +} + static int pnv_ics_resend_child(Object *child, void *opaque) { PnvPHB3 *phb3 = (PnvPHB3 *) object_dynamic_cast(child, TYPE_PNV_PHB3); diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h index c726288e5e..64bab7112b 100644 --- a/include/hw/ppc/pnv.h +++ b/include/hw/ppc/pnv.h @@ -218,6 +218,8 @@ struct PnvMachineState { hwaddr fw_load_addr; }; +PnvChip *pnv_get_chip(PnvMachineState *pnv, uint32_t chip_id); + #define PNV_FDT_ADDR 0x01000000 #define PNV_TIMEBASE_FREQ 512000000ULL From c29dd0034deafc9772eb256f7b4cea16c5bffd65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Date: Wed, 12 Jan 2022 11:28:27 +0100 Subject: [PATCH 22/34] ppc/pnv: Reparent user created PHB3 devices to the PnvChip MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The powernv machine uses the object hierarchy to populate the device tree and each device should be parented to the chip it belongs to. This is not the case for user created devices which are parented to the container "/unattached". Make sure a PHB3 device is parented to its chip by reparenting the object if necessary. Reviewed-by: Daniel Henrique Barboza Reviewed-by: Frederic Barrat Signed-off-by: Cédric Le Goater Message-Id: <20220105212338.49899-8-danielhb413@gmail.com> Signed-off-by: Cédric Le Goater --- hw/pci-host/pnv_phb3.c | 6 ++++++ hw/ppc/pnv.c | 17 +++++++++++++++++ include/hw/ppc/pnv.h | 1 + 3 files changed, 24 insertions(+) diff --git a/hw/pci-host/pnv_phb3.c b/hw/pci-host/pnv_phb3.c index 1ebe43df5d..a52aedcad3 100644 --- a/hw/pci-host/pnv_phb3.c +++ b/hw/pci-host/pnv_phb3.c @@ -998,6 +998,12 @@ static void pnv_phb3_realize(DeviceState *dev, Error **errp) error_setg(errp, "invalid chip id: %d", phb->chip_id); return; } + + /* + * Reparent user created devices to the chip to build + * correctly the device tree. + */ + pnv_chip_parent_fixup(phb->chip, OBJECT(phb), phb->phb_id); } if (phb->phb_id >= PNV_CHIP_GET_CLASS(phb->chip)->num_phbs) { diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index ad02d56aa7..fa5e7bc751 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -1814,6 +1814,23 @@ static ICSState *pnv_ics_get(XICSFabric *xi, int irq) return NULL; } +void pnv_chip_parent_fixup(PnvChip *chip, Object *obj, int index) +{ + Object *parent = OBJECT(chip); + g_autofree char *default_id = + g_strdup_printf("%s[%d]", object_get_typename(obj), index); + + if (obj->parent == parent) { + return; + } + + object_ref(obj); + object_unparent(obj); + object_property_add_child( + parent, DEVICE(obj)->id ? DEVICE(obj)->id : default_id, obj); + object_unref(obj); +} + PnvChip *pnv_get_chip(PnvMachineState *pnv, uint32_t chip_id) { int i; diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h index 64bab7112b..f4219da7c5 100644 --- a/include/hw/ppc/pnv.h +++ b/include/hw/ppc/pnv.h @@ -178,6 +178,7 @@ DECLARE_INSTANCE_CHECKER(PnvChip, PNV_CHIP_POWER10, PowerPCCPU *pnv_chip_find_cpu(PnvChip *chip, uint32_t pir); void pnv_phb_attach_root_port(PCIHostState *pci, const char *name); +void pnv_chip_parent_fixup(PnvChip *chip, Object *obj, int index); #define TYPE_PNV_MACHINE MACHINE_TYPE_NAME("powernv") typedef struct PnvMachineClass PnvMachineClass; From db041b06e67f1010620c696011f8c867275dac42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Date: Wed, 12 Jan 2022 11:28:27 +0100 Subject: [PATCH 23/34] ppc/pnv: Complete user created PHB3 devices MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PHB3s ared SysBus devices and should be allowed to be dynamically created. Reviewed-by: Daniel Henrique Barboza Signed-off-by: Cédric Le Goater Message-Id: <20220105212338.49899-9-danielhb413@gmail.com> Signed-off-by: Cédric Le Goater --- hw/pci-host/pnv_phb3.c | 9 +++++++++ hw/ppc/pnv.c | 2 ++ 2 files changed, 11 insertions(+) diff --git a/hw/pci-host/pnv_phb3.c b/hw/pci-host/pnv_phb3.c index a52aedcad3..7fb35dc031 100644 --- a/hw/pci-host/pnv_phb3.c +++ b/hw/pci-host/pnv_phb3.c @@ -993,6 +993,9 @@ static void pnv_phb3_realize(DeviceState *dev, Error **errp) /* User created devices */ if (!phb->chip) { + Error *local_err = NULL; + BusState *s; + phb->chip = pnv_get_chip(pnv, phb->chip_id); if (!phb->chip) { error_setg(errp, "invalid chip id: %d", phb->chip_id); @@ -1004,6 +1007,12 @@ static void pnv_phb3_realize(DeviceState *dev, Error **errp) * correctly the device tree. */ pnv_chip_parent_fixup(phb->chip, OBJECT(phb), phb->phb_id); + + s = qdev_get_parent_bus(DEVICE(phb->chip)); + if (!qdev_set_parent_bus(DEVICE(phb), s, &local_err)) { + error_propagate(errp, local_err); + return; + } } if (phb->phb_id >= PNV_CHIP_GET_CLASS(phb->chip)->num_phbs) { diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index fa5e7bc751..8dc6382357 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -1941,6 +1941,8 @@ static void pnv_machine_power8_class_init(ObjectClass *oc, void *data) pmc->compat = compat; pmc->compat_size = sizeof(compat); + + machine_class_allow_dynamic_sysbus_dev(mc, TYPE_PNV_PHB3); } static void pnv_machine_power9_class_init(ObjectClass *oc, void *data) From eb93c82888f4d19c00ac1aafaec23346c2e899b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= Date: Wed, 12 Jan 2022 11:28:27 +0100 Subject: [PATCH 24/34] ppc/pnv: Move num_phbs under Pnv8Chip MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It is not used elsewhere so that's where it belongs. Signed-off-by: Cédric Le Goater Message-Id: <20220105212338.49899-10-danielhb413@gmail.com> Signed-off-by: Cédric Le Goater --- hw/ppc/pnv.c | 7 +++---- include/hw/ppc/pnv.h | 4 ++-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 8dc6382357..fe7e67e73a 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -1099,7 +1099,6 @@ static void pnv_chip_power10_intc_print_info(PnvChip *chip, PowerPCCPU *cpu, static void pnv_chip_power8_instance_init(Object *obj) { - PnvChip *chip = PNV_CHIP(obj); Pnv8Chip *chip8 = PNV8_CHIP(obj); PnvChipClass *pcc = PNV_CHIP_GET_CLASS(obj); int i; @@ -1118,10 +1117,10 @@ static void pnv_chip_power8_instance_init(Object *obj) object_initialize_child(obj, "homer", &chip8->homer, TYPE_PNV8_HOMER); if (defaults_enabled()) { - chip->num_phbs = pcc->num_phbs; + chip8->num_phbs = pcc->num_phbs; } - for (i = 0; i < chip->num_phbs; i++) { + for (i = 0; i < chip8->num_phbs; i++) { object_initialize_child(obj, "phb[*]", &chip8->phbs[i], TYPE_PNV_PHB3); } @@ -1247,7 +1246,7 @@ static void pnv_chip_power8_realize(DeviceState *dev, Error **errp) &chip8->homer.regs); /* PHB3 controllers */ - for (i = 0; i < chip->num_phbs; i++) { + for (i = 0; i < chip8->num_phbs; i++) { PnvPHB3 *phb = &chip8->phbs[i]; object_property_set_int(OBJECT(phb), "index", i, &error_fatal); diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h index f4219da7c5..0e9e16544f 100644 --- a/include/hw/ppc/pnv.h +++ b/include/hw/ppc/pnv.h @@ -52,7 +52,6 @@ struct PnvChip { uint64_t cores_mask; PnvCore **cores; - uint32_t num_phbs; uint32_t num_pecs; MemoryRegion xscom_mmio; @@ -82,6 +81,7 @@ struct Pnv8Chip { #define PNV8_CHIP_PHB3_MAX 4 PnvPHB3 phbs[PNV8_CHIP_PHB3_MAX]; + uint32_t num_phbs; XICSFabric *xics; }; @@ -136,8 +136,8 @@ struct PnvChipClass { /*< public >*/ uint64_t chip_cfam_id; uint64_t cores_mask; - uint32_t num_phbs; uint32_t num_pecs; + uint32_t num_phbs; DeviceRealize parent_realize; From 41cb8d319df0488f31abd11519f21daf76ee1459 Mon Sep 17 00:00:00 2001 From: Daniel Henrique Barboza Date: Wed, 12 Jan 2022 11:28:27 +0100 Subject: [PATCH 25/34] pnv_phb3.h: change TYPE_PNV_PHB3_ROOT_BUS name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The TYPE_PNV_PHB3_ROOT_BUS name is used as the default bus name when the dev has no 'id'. However, pnv-phb3-root-bus is a bit too long to be used as a bus name. Most common QEMU buses and PCI controllers are named based on their bus type (e.g. pSeries spapr-pci-host-bridge is called 'pci'). The most common name for a PCIE bus controller in QEMU is 'pcie'. Naming it 'pcie' would break the documented use of the pnv-phb3 device, since 'pcie.0' would now refer to the root bus instead of the first root port. There's nothing particularly wrong with the 'root-bus' name used before, aside from the fact that 'root-bus' is being used for pnv-phb3 and pnv-phb4 created buses, which is not quite correct since these buses aren't implemented the same way in QEMU - you can't plug a pnv-phb4-root-port into a pnv-phb3 root bus, for example. This patch renames it as 'pnv-phb3-root', which is a compromise between the existing and the previously used name. Creating 3 phbs without ID will result in an "info qtree" output similar to this: bus: main-system-bus type System dev: pnv-phb3, id "" index = 2 (0x2) chip-id = 0 (0x0) x-config-reg-migration-enabled = true bypass-iommu = false bus: pnv-phb3-root.2 type pnv-phb3-root (...) dev: pnv-phb3, id "" index = 1 (0x1) chip-id = 0 (0x0) x-config-reg-migration-enabled = true bypass-iommu = false bus: pnv-phb3-root.1 type pnv-phb3-root (...) dev: pnv-phb3, id "" index = 0 (0x0) chip-id = 0 (0x0) x-config-reg-migration-enabled = true bypass-iommu = false bus: pnv-phb3-root.0 type pnv-phb3-root Signed-off-by: Daniel Henrique Barboza Message-Id: <20220105212338.49899-11-danielhb413@gmail.com> Signed-off-by: Cédric Le Goater --- include/hw/pci-host/pnv_phb3.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/hw/pci-host/pnv_phb3.h b/include/hw/pci-host/pnv_phb3.h index 2e423c3890..af6ec83cf6 100644 --- a/include/hw/pci-host/pnv_phb3.h +++ b/include/hw/pci-host/pnv_phb3.h @@ -105,7 +105,7 @@ struct PnvPBCQState { /* * PHB3 PCIe Root port */ -#define TYPE_PNV_PHB3_ROOT_BUS "pnv-phb3-root-bus" +#define TYPE_PNV_PHB3_ROOT_BUS "pnv-phb3-root" #define TYPE_PNV_PHB3_ROOT_PORT "pnv-phb3-root-port" From 451575816c07284f7620b88e2208086588288925 Mon Sep 17 00:00:00 2001 From: Daniel Henrique Barboza Date: Wed, 12 Jan 2022 11:28:27 +0100 Subject: [PATCH 26/34] pnv_phb4.c: change TYPE_PNV_PHB4_ROOT_BUS name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Similar to what was happening with pnv-phb3 buses, TYPE_PNV_PHB4_ROOT_BUS set to "pnv-phb4-root-bus" is a bit too long for a default root bus name. The usual default name for theses buses in QEMU are 'pcie', but we want to make a distinction between pnv-phb4 buses and other PCIE buses, at least as far as default name goes, because not all PCIE devices are attachable to a pnv-phb4 root-bus type. Changing the default to 'pnv-phb4-root' allow us to have a shorter name while making this bus distinct, and the user can always set its own bus naming via the "id" attribute anyway. This is the 'info qtree' output after this change, using a powernv9 domain with 2 sockets and default settings enabled: qemu-system-ppc64 -m 4G -machine powernv9,accel=tcg \ -smp 2,sockets=2,cores=1,threads=1 dev: pnv-phb4, id "" index = 5 (0x5) chip-id = 1 (0x1) version = 704374636546 (0xa400000002) device-id = 1217 (0x4c1) x-config-reg-migration-enabled = true bypass-iommu = false bus: pnv-phb4-root.11 type pnv-phb4-root dev: pnv-phb4-root-port, id "" (...) dev: pnv-phb4, id "" index = 0 (0x0) chip-id = 1 (0x1) version = 704374636546 (0xa400000002) device-id = 1217 (0x4c1) x-config-reg-migration-enabled = true bypass-iommu = false bus: pnv-phb4-root.6 type pnv-phb4-root dev: pnv-phb4-root-port, id "" (..) dev: pnv-phb4, id "" index = 5 (0x5) chip-id = 0 (0x0) version = 704374636546 (0xa400000002) device-id = 1217 (0x4c1) x-config-reg-migration-enabled = true bypass-iommu = false bus: pnv-phb4-root.5 type pnv-phb4-root dev: pnv-phb4-root-port, id "" (...) dev: pnv-phb4, id "" index = 0 (0x0) chip-id = 0 (0x0) version = 704374636546 (0xa400000002) device-id = 1217 (0x4c1) x-config-reg-migration-enabled = true bypass-iommu = false bus: pnv-phb4-root.0 type pnv-phb4-root dev: pnv-phb4-root-port, id "" Reviewed-by: Cédric Le Goater Signed-off-by: Daniel Henrique Barboza Message-Id: <20220110143346.455901-11-danielhb413@gmail.com> Signed-off-by: Cédric Le Goater --- include/hw/pci-host/pnv_phb4.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/hw/pci-host/pnv_phb4.h b/include/hw/pci-host/pnv_phb4.h index ea63df9676..88dc6abb1c 100644 --- a/include/hw/pci-host/pnv_phb4.h +++ b/include/hw/pci-host/pnv_phb4.h @@ -46,7 +46,7 @@ typedef struct PnvPhb4DMASpace { /* * PHB4 PCIe Root port */ -#define TYPE_PNV_PHB4_ROOT_BUS "pnv-phb4-root-bus" +#define TYPE_PNV_PHB4_ROOT_BUS "pnv-phb4-root" #define TYPE_PNV_PHB4_ROOT_PORT "pnv-phb4-root-port" typedef struct PnvPHB4RootPort { From 5032f5d70524af38259a27fb132a57cd3ca40619 Mon Sep 17 00:00:00 2001 From: Daniel Henrique Barboza Date: Wed, 12 Jan 2022 11:28:27 +0100 Subject: [PATCH 27/34] pnv_phb4_pec.c: move pnv_pec_phb_offset() to pnv_phb4.c MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The logic inside pnv_pec_phb_offset() will be useful in the next patch to determine the stack that should contain a PHB4 device. Move the function to pnv_phb4.c and make it public since there's no pnv_phb4_pec.h header. While we're at it, add 'stack_index' as a parameter and make the function return 'phb-id' directly. And rename it to pnv_phb4_pec_get_phb_id() to be even clearer about the function intent. Reviewed-by: Cédric Le Goater Signed-off-by: Daniel Henrique Barboza Message-Id: <20220110143346.455901-3-danielhb413@gmail.com> Signed-off-by: Cédric Le Goater --- hw/pci-host/pnv_phb4.c | 17 +++++++++++++++++ hw/pci-host/pnv_phb4_pec.c | 15 +-------------- include/hw/pci-host/pnv_phb4.h | 2 ++ 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/hw/pci-host/pnv_phb4.c b/hw/pci-host/pnv_phb4.c index 83dedc878a..2223b985b2 100644 --- a/hw/pci-host/pnv_phb4.c +++ b/hw/pci-host/pnv_phb4.c @@ -1069,6 +1069,23 @@ static const TypeInfo pnv_phb4_iommu_memory_region_info = { .class_init = pnv_phb4_iommu_memory_region_class_init, }; +/* + * Return the index/phb-id of a PHB4 that belongs to a + * pec->stacks[stack_index] stack. + */ +int pnv_phb4_pec_get_phb_id(PnvPhb4PecState *pec, int stack_index) +{ + PnvPhb4PecClass *pecc = PNV_PHB4_PEC_GET_CLASS(pec); + int index = pec->index; + int offset = 0; + + while (index--) { + offset += pecc->num_stacks[index]; + } + + return offset + stack_index; +} + /* * MSI/MSIX memory region implementation. * The handler handles both MSI and MSIX. diff --git a/hw/pci-host/pnv_phb4_pec.c b/hw/pci-host/pnv_phb4_pec.c index f3e4fa0c82..49360de8c8 100644 --- a/hw/pci-host/pnv_phb4_pec.c +++ b/hw/pci-host/pnv_phb4_pec.c @@ -374,19 +374,6 @@ static void pnv_pec_instance_init(Object *obj) } } -static int pnv_pec_phb_offset(PnvPhb4PecState *pec) -{ - PnvPhb4PecClass *pecc = PNV_PHB4_PEC_GET_CLASS(pec); - int index = pec->index; - int offset = 0; - - while (index--) { - offset += pecc->num_stacks[index]; - } - - return offset; -} - static void pnv_pec_realize(DeviceState *dev, Error **errp) { PnvPhb4PecState *pec = PNV_PHB4_PEC(dev); @@ -405,7 +392,7 @@ static void pnv_pec_realize(DeviceState *dev, Error **errp) for (i = 0; i < pec->num_stacks; i++) { PnvPhb4PecStack *stack = &pec->stacks[i]; Object *stk_obj = OBJECT(stack); - int phb_id = pnv_pec_phb_offset(pec) + i; + int phb_id = pnv_phb4_pec_get_phb_id(pec, i); object_property_set_int(stk_obj, "stack-no", i, &error_abort); object_property_set_int(stk_obj, "phb-id", phb_id, &error_abort); diff --git a/include/hw/pci-host/pnv_phb4.h b/include/hw/pci-host/pnv_phb4.h index 88dc6abb1c..5ee996ebc6 100644 --- a/include/hw/pci-host/pnv_phb4.h +++ b/include/hw/pci-host/pnv_phb4.h @@ -15,6 +15,7 @@ #include "hw/ppc/xive.h" #include "qom/object.h" +typedef struct PnvPhb4PecState PnvPhb4PecState; typedef struct PnvPhb4PecStack PnvPhb4PecStack; typedef struct PnvPHB4 PnvPHB4; typedef struct PnvChip PnvChip; @@ -131,6 +132,7 @@ struct PnvPHB4 { void pnv_phb4_pic_print_info(PnvPHB4 *phb, Monitor *mon); void pnv_phb4_update_regions(PnvPhb4PecStack *stack); +int pnv_phb4_pec_get_phb_id(PnvPhb4PecState *pec, int stack_index); extern const MemoryRegionOps pnv_phb4_xscom_ops; /* From d22b0c94e4c9c5bba1224b9fd6dcc23373af0261 Mon Sep 17 00:00:00 2001 From: Daniel Henrique Barboza Date: Wed, 12 Jan 2022 11:28:27 +0100 Subject: [PATCH 28/34] pnv_phb4_pec: use pnv_phb4_pec_get_phb_id() in pnv_pec_dt_xscom() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Relying on stack->phb to write the xscom DT of the PEC is something that we won't be able to do with user creatable pnv-phb4 devices. Hopefully, this can be done by using pnv_phb4_pec_get_phb_id(), which is already used by pnv_pec_realize() to set the phb-id of the stack. Use the same idea in pnv_pec_dt_xscom() to write ibm,phb-index without the need to accessing stack->phb, since stack->phb is not granted to be != NULL when user creatable phbs are introduced. Reviewed-by: Cédric Le Goater Signed-off-by: Daniel Henrique Barboza Message-Id: <20220110143346.455901-4-danielhb413@gmail.com> Signed-off-by: Cédric Le Goater --- hw/pci-host/pnv_phb4_pec.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/hw/pci-host/pnv_phb4_pec.c b/hw/pci-host/pnv_phb4_pec.c index 49360de8c8..d64310e7db 100644 --- a/hw/pci-host/pnv_phb4_pec.c +++ b/hw/pci-host/pnv_phb4_pec.c @@ -449,8 +449,7 @@ static int pnv_pec_dt_xscom(PnvXScomInterface *dev, void *fdt, pecc->compat_size))); for (i = 0; i < pec->num_stacks; i++) { - PnvPhb4PecStack *stack = &pec->stacks[i]; - PnvPHB4 *phb = &stack->phb; + int phb_id = pnv_phb4_pec_get_phb_id(pec, i); int stk_offset; name = g_strdup_printf("stack@%x", i); @@ -460,7 +459,7 @@ static int pnv_pec_dt_xscom(PnvXScomInterface *dev, void *fdt, _FDT((fdt_setprop(fdt, stk_offset, "compatible", pecc->stk_compat, pecc->stk_compat_size))); _FDT((fdt_setprop_cell(fdt, stk_offset, "reg", i))); - _FDT((fdt_setprop_cell(fdt, stk_offset, "ibm,phb-index", phb->phb_id))); + _FDT((fdt_setprop_cell(fdt, stk_offset, "ibm,phb-index", phb_id))); } return 0; From b580713a962ecb4b5aa928975799b8c9e970c880 Mon Sep 17 00:00:00 2001 From: Daniel Henrique Barboza Date: Wed, 12 Jan 2022 11:28:27 +0100 Subject: [PATCH 29/34] ppc/pnv: set phb4 properties in stk_realize() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Moving all phb4 properties setup to stk_realize() keeps this logic in a single place instead of having it scattered between stk_realize() and pec_realize(). 'phb->index' can be retrieved using stack->stack_no and pnv_phb4_pec_get_phb_id(), deprecating the use of 'phb-id' alias that was being used for this purpose in pec_realize(). Reviewed-by: Cédric Le Goater Signed-off-by: Daniel Henrique Barboza Message-Id: <20220111131027.599784-2-danielhb413@gmail.com> Signed-off-by: Cédric Le Goater --- hw/pci-host/pnv_phb4_pec.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hw/pci-host/pnv_phb4_pec.c b/hw/pci-host/pnv_phb4_pec.c index d64310e7db..f8038dff17 100644 --- a/hw/pci-host/pnv_phb4_pec.c +++ b/hw/pci-host/pnv_phb4_pec.c @@ -392,10 +392,8 @@ static void pnv_pec_realize(DeviceState *dev, Error **errp) for (i = 0; i < pec->num_stacks; i++) { PnvPhb4PecStack *stack = &pec->stacks[i]; Object *stk_obj = OBJECT(stack); - int phb_id = pnv_phb4_pec_get_phb_id(pec, i); object_property_set_int(stk_obj, "stack-no", i, &error_abort); - object_property_set_int(stk_obj, "phb-id", phb_id, &error_abort); object_property_set_link(stk_obj, "pec", OBJECT(pec), &error_abort); if (!qdev_realize(DEVICE(stk_obj), NULL, errp)) { return; @@ -534,7 +532,6 @@ static void pnv_pec_stk_instance_init(Object *obj) PnvPhb4PecStack *stack = PNV_PHB4_PEC_STACK(obj); object_initialize_child(obj, "phb", &stack->phb, TYPE_PNV_PHB4); - object_property_add_alias(obj, "phb-id", OBJECT(&stack->phb), "index"); } static void pnv_pec_stk_realize(DeviceState *dev, Error **errp) @@ -543,6 +540,7 @@ static void pnv_pec_stk_realize(DeviceState *dev, Error **errp) PnvPhb4PecState *pec = stack->pec; PnvPhb4PecClass *pecc = PNV_PHB4_PEC_GET_CLASS(pec); PnvChip *chip = pec->chip; + int phb_id = pnv_phb4_pec_get_phb_id(pec, stack->stack_no); uint32_t pec_nest_base; uint32_t pec_pci_base; char name[64]; @@ -570,6 +568,8 @@ static void pnv_pec_stk_realize(DeviceState *dev, Error **errp) object_property_set_int(OBJECT(&stack->phb), "chip-id", pec->chip_id, &error_fatal); + object_property_set_int(OBJECT(&stack->phb), "index", phb_id, + &error_fatal); object_property_set_int(OBJECT(&stack->phb), "version", pecc->version, &error_fatal); object_property_set_link(OBJECT(&stack->phb), "stack", OBJECT(stack), From 3d2adf1713b298206f831b78c00218a4e6e3ddad Mon Sep 17 00:00:00 2001 From: Daniel Henrique Barboza Date: Wed, 12 Jan 2022 11:28:27 +0100 Subject: [PATCH 30/34] ppc/pnv: move PHB4 XSCOM init to phb4_realize() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The 'stack->phb_regs_mr' PHB4 passthrough XSCOM initialization relies on 'stack->phb' being not NULL. Moving 'stack->phb_regs_mr' region_init() and add_subregion() to phb4_realize() time is a natural thing to do since it's strictly PHB related. The remaining XSCOM initialization is also related to 'stack->phb' but in a different manner. For instance, 'stack->nest_regs_mr' MemoryRegionOps, 'pnv_pec_stk_nest_xscom_ops', uses pnv_pec_stk_nest_xscom_write() as a write callback. When trying to write the PEC_NEST_STK_BAR_EN reg, pnv_pec_stk_update_map() is called. Inside this function, pnv_phb4_update_regions() is called twice. This function uses 'stack->phb' to manipulate memory regions of the phb. This is not a problem now but, when enabling user creatable phb4s, a stack that doesn't have an associated phb (i.e. stack->phb = NULL) it will cause a SIGINT during boot in pnv_phb4_update_regions(). All this can be avoided if all XSCOM realize is moved to phb4_realize(), when we have certainty about the existence of 'stack->phb'. A lot of code was moved from pnv_phb4_pec.c to pnv_phb4.c due to static constant and variables being used but the cleaner logic is worth the trouble. Reviewed-by: Cédric Le Goater Signed-off-by: Daniel Henrique Barboza Message-Id: <20220111131027.599784-3-danielhb413@gmail.com> Signed-off-by: Cédric Le Goater --- hw/pci-host/pnv_phb4.c | 304 +++++++++++++++++++++++++++++++++++++ hw/pci-host/pnv_phb4_pec.c | 292 ----------------------------------- 2 files changed, 304 insertions(+), 292 deletions(-) diff --git a/hw/pci-host/pnv_phb4.c b/hw/pci-host/pnv_phb4.c index 2223b985b2..8ef58bf2de 100644 --- a/hw/pci-host/pnv_phb4.c +++ b/hw/pci-host/pnv_phb4.c @@ -29,6 +29,10 @@ qemu_log_mask(LOG_GUEST_ERROR, "phb4[%d:%d]: " fmt "\n", \ (phb)->chip_id, (phb)->phb_id, ## __VA_ARGS__) +#define phb_pec_error(pec, fmt, ...) \ + qemu_log_mask(LOG_GUEST_ERROR, "phb4_pec[%d:%d]: " fmt "\n", \ + (pec)->chip_id, (pec)->index, ## __VA_ARGS__) + /* * QEMU version of the GETFIELD/SETFIELD macros * @@ -854,6 +858,258 @@ const MemoryRegionOps pnv_phb4_xscom_ops = { .endianness = DEVICE_BIG_ENDIAN, }; +static uint64_t pnv_pec_stk_nest_xscom_read(void *opaque, hwaddr addr, + unsigned size) +{ + PnvPhb4PecStack *stack = PNV_PHB4_PEC_STACK(opaque); + uint32_t reg = addr >> 3; + + /* TODO: add list of allowed registers and error out if not */ + return stack->nest_regs[reg]; +} + +static void pnv_pec_stk_update_map(PnvPhb4PecStack *stack) +{ + PnvPhb4PecState *pec = stack->pec; + MemoryRegion *sysmem = get_system_memory(); + uint64_t bar_en = stack->nest_regs[PEC_NEST_STK_BAR_EN]; + uint64_t bar, mask, size; + char name[64]; + + /* + * NOTE: This will really not work well if those are remapped + * after the PHB has created its sub regions. We could do better + * if we had a way to resize regions but we don't really care + * that much in practice as the stuff below really only happens + * once early during boot + */ + + /* Handle unmaps */ + if (memory_region_is_mapped(&stack->mmbar0) && + !(bar_en & PEC_NEST_STK_BAR_EN_MMIO0)) { + memory_region_del_subregion(sysmem, &stack->mmbar0); + } + if (memory_region_is_mapped(&stack->mmbar1) && + !(bar_en & PEC_NEST_STK_BAR_EN_MMIO1)) { + memory_region_del_subregion(sysmem, &stack->mmbar1); + } + if (memory_region_is_mapped(&stack->phbbar) && + !(bar_en & PEC_NEST_STK_BAR_EN_PHB)) { + memory_region_del_subregion(sysmem, &stack->phbbar); + } + if (memory_region_is_mapped(&stack->intbar) && + !(bar_en & PEC_NEST_STK_BAR_EN_INT)) { + memory_region_del_subregion(sysmem, &stack->intbar); + } + + /* Update PHB */ + pnv_phb4_update_regions(stack); + + /* Handle maps */ + if (!memory_region_is_mapped(&stack->mmbar0) && + (bar_en & PEC_NEST_STK_BAR_EN_MMIO0)) { + bar = stack->nest_regs[PEC_NEST_STK_MMIO_BAR0] >> 8; + mask = stack->nest_regs[PEC_NEST_STK_MMIO_BAR0_MASK]; + size = ((~mask) >> 8) + 1; + snprintf(name, sizeof(name), "pec-%d.%d-stack-%d-mmio0", + pec->chip_id, pec->index, stack->stack_no); + memory_region_init(&stack->mmbar0, OBJECT(stack), name, size); + memory_region_add_subregion(sysmem, bar, &stack->mmbar0); + stack->mmio0_base = bar; + stack->mmio0_size = size; + } + if (!memory_region_is_mapped(&stack->mmbar1) && + (bar_en & PEC_NEST_STK_BAR_EN_MMIO1)) { + bar = stack->nest_regs[PEC_NEST_STK_MMIO_BAR1] >> 8; + mask = stack->nest_regs[PEC_NEST_STK_MMIO_BAR1_MASK]; + size = ((~mask) >> 8) + 1; + snprintf(name, sizeof(name), "pec-%d.%d-stack-%d-mmio1", + pec->chip_id, pec->index, stack->stack_no); + memory_region_init(&stack->mmbar1, OBJECT(stack), name, size); + memory_region_add_subregion(sysmem, bar, &stack->mmbar1); + stack->mmio1_base = bar; + stack->mmio1_size = size; + } + if (!memory_region_is_mapped(&stack->phbbar) && + (bar_en & PEC_NEST_STK_BAR_EN_PHB)) { + bar = stack->nest_regs[PEC_NEST_STK_PHB_REGS_BAR] >> 8; + size = PNV_PHB4_NUM_REGS << 3; + snprintf(name, sizeof(name), "pec-%d.%d-stack-%d-phb", + pec->chip_id, pec->index, stack->stack_no); + memory_region_init(&stack->phbbar, OBJECT(stack), name, size); + memory_region_add_subregion(sysmem, bar, &stack->phbbar); + } + if (!memory_region_is_mapped(&stack->intbar) && + (bar_en & PEC_NEST_STK_BAR_EN_INT)) { + bar = stack->nest_regs[PEC_NEST_STK_INT_BAR] >> 8; + size = PNV_PHB4_MAX_INTs << 16; + snprintf(name, sizeof(name), "pec-%d.%d-stack-%d-int", + stack->pec->chip_id, stack->pec->index, stack->stack_no); + memory_region_init(&stack->intbar, OBJECT(stack), name, size); + memory_region_add_subregion(sysmem, bar, &stack->intbar); + } + + /* Update PHB */ + pnv_phb4_update_regions(stack); +} + +static void pnv_pec_stk_nest_xscom_write(void *opaque, hwaddr addr, + uint64_t val, unsigned size) +{ + PnvPhb4PecStack *stack = PNV_PHB4_PEC_STACK(opaque); + PnvPhb4PecState *pec = stack->pec; + uint32_t reg = addr >> 3; + + switch (reg) { + case PEC_NEST_STK_PCI_NEST_FIR: + stack->nest_regs[PEC_NEST_STK_PCI_NEST_FIR] = val; + break; + case PEC_NEST_STK_PCI_NEST_FIR_CLR: + stack->nest_regs[PEC_NEST_STK_PCI_NEST_FIR] &= val; + break; + case PEC_NEST_STK_PCI_NEST_FIR_SET: + stack->nest_regs[PEC_NEST_STK_PCI_NEST_FIR] |= val; + break; + case PEC_NEST_STK_PCI_NEST_FIR_MSK: + stack->nest_regs[PEC_NEST_STK_PCI_NEST_FIR_MSK] = val; + break; + case PEC_NEST_STK_PCI_NEST_FIR_MSKC: + stack->nest_regs[PEC_NEST_STK_PCI_NEST_FIR_MSK] &= val; + break; + case PEC_NEST_STK_PCI_NEST_FIR_MSKS: + stack->nest_regs[PEC_NEST_STK_PCI_NEST_FIR_MSK] |= val; + break; + case PEC_NEST_STK_PCI_NEST_FIR_ACT0: + case PEC_NEST_STK_PCI_NEST_FIR_ACT1: + stack->nest_regs[reg] = val; + break; + case PEC_NEST_STK_PCI_NEST_FIR_WOF: + stack->nest_regs[reg] = 0; + break; + case PEC_NEST_STK_ERR_REPORT_0: + case PEC_NEST_STK_ERR_REPORT_1: + case PEC_NEST_STK_PBCQ_GNRL_STATUS: + /* Flag error ? */ + break; + case PEC_NEST_STK_PBCQ_MODE: + stack->nest_regs[reg] = val & 0xff00000000000000ull; + break; + case PEC_NEST_STK_MMIO_BAR0: + case PEC_NEST_STK_MMIO_BAR0_MASK: + case PEC_NEST_STK_MMIO_BAR1: + case PEC_NEST_STK_MMIO_BAR1_MASK: + if (stack->nest_regs[PEC_NEST_STK_BAR_EN] & + (PEC_NEST_STK_BAR_EN_MMIO0 | + PEC_NEST_STK_BAR_EN_MMIO1)) { + phb_pec_error(pec, "Changing enabled BAR unsupported\n"); + } + stack->nest_regs[reg] = val & 0xffffffffff000000ull; + break; + case PEC_NEST_STK_PHB_REGS_BAR: + if (stack->nest_regs[PEC_NEST_STK_BAR_EN] & PEC_NEST_STK_BAR_EN_PHB) { + phb_pec_error(pec, "Changing enabled BAR unsupported\n"); + } + stack->nest_regs[reg] = val & 0xffffffffffc00000ull; + break; + case PEC_NEST_STK_INT_BAR: + if (stack->nest_regs[PEC_NEST_STK_BAR_EN] & PEC_NEST_STK_BAR_EN_INT) { + phb_pec_error(pec, "Changing enabled BAR unsupported\n"); + } + stack->nest_regs[reg] = val & 0xfffffff000000000ull; + break; + case PEC_NEST_STK_BAR_EN: + stack->nest_regs[reg] = val & 0xf000000000000000ull; + pnv_pec_stk_update_map(stack); + break; + case PEC_NEST_STK_DATA_FRZ_TYPE: + case PEC_NEST_STK_PBCQ_TUN_BAR: + /* Not used for now */ + stack->nest_regs[reg] = val; + break; + default: + qemu_log_mask(LOG_UNIMP, "phb4_pec: nest_xscom_write 0x%"HWADDR_PRIx + "=%"PRIx64"\n", addr, val); + } +} + +static const MemoryRegionOps pnv_pec_stk_nest_xscom_ops = { + .read = pnv_pec_stk_nest_xscom_read, + .write = pnv_pec_stk_nest_xscom_write, + .valid.min_access_size = 8, + .valid.max_access_size = 8, + .impl.min_access_size = 8, + .impl.max_access_size = 8, + .endianness = DEVICE_BIG_ENDIAN, +}; + +static uint64_t pnv_pec_stk_pci_xscom_read(void *opaque, hwaddr addr, + unsigned size) +{ + PnvPhb4PecStack *stack = PNV_PHB4_PEC_STACK(opaque); + uint32_t reg = addr >> 3; + + /* TODO: add list of allowed registers and error out if not */ + return stack->pci_regs[reg]; +} + +static void pnv_pec_stk_pci_xscom_write(void *opaque, hwaddr addr, + uint64_t val, unsigned size) +{ + PnvPhb4PecStack *stack = PNV_PHB4_PEC_STACK(opaque); + uint32_t reg = addr >> 3; + + switch (reg) { + case PEC_PCI_STK_PCI_FIR: + stack->nest_regs[reg] = val; + break; + case PEC_PCI_STK_PCI_FIR_CLR: + stack->nest_regs[PEC_PCI_STK_PCI_FIR] &= val; + break; + case PEC_PCI_STK_PCI_FIR_SET: + stack->nest_regs[PEC_PCI_STK_PCI_FIR] |= val; + break; + case PEC_PCI_STK_PCI_FIR_MSK: + stack->nest_regs[reg] = val; + break; + case PEC_PCI_STK_PCI_FIR_MSKC: + stack->nest_regs[PEC_PCI_STK_PCI_FIR_MSK] &= val; + break; + case PEC_PCI_STK_PCI_FIR_MSKS: + stack->nest_regs[PEC_PCI_STK_PCI_FIR_MSK] |= val; + break; + case PEC_PCI_STK_PCI_FIR_ACT0: + case PEC_PCI_STK_PCI_FIR_ACT1: + stack->nest_regs[reg] = val; + break; + case PEC_PCI_STK_PCI_FIR_WOF: + stack->nest_regs[reg] = 0; + break; + case PEC_PCI_STK_ETU_RESET: + stack->nest_regs[reg] = val & 0x8000000000000000ull; + /* TODO: Implement reset */ + break; + case PEC_PCI_STK_PBAIB_ERR_REPORT: + break; + case PEC_PCI_STK_PBAIB_TX_CMD_CRED: + case PEC_PCI_STK_PBAIB_TX_DAT_CRED: + stack->nest_regs[reg] = val; + break; + default: + qemu_log_mask(LOG_UNIMP, "phb4_pec_stk: pci_xscom_write 0x%"HWADDR_PRIx + "=%"PRIx64"\n", addr, val); + } +} + +static const MemoryRegionOps pnv_pec_stk_pci_xscom_ops = { + .read = pnv_pec_stk_pci_xscom_read, + .write = pnv_pec_stk_pci_xscom_write, + .valid.min_access_size = 8, + .valid.max_access_size = 8, + .impl.min_access_size = 8, + .impl.max_access_size = 8, + .endianness = DEVICE_BIG_ENDIAN, +}; + static int pnv_phb4_map_irq(PCIDevice *pci_dev, int irq_num) { /* Check that out properly ... */ @@ -1175,6 +1431,52 @@ static AddressSpace *pnv_phb4_dma_iommu(PCIBus *bus, void *opaque, int devfn) return &ds->dma_as; } +static void pnv_phb4_xscom_realize(PnvPHB4 *phb) +{ + PnvPhb4PecStack *stack = phb->stack; + PnvPhb4PecState *pec = stack->pec; + PnvPhb4PecClass *pecc = PNV_PHB4_PEC_GET_CLASS(pec); + uint32_t pec_nest_base; + uint32_t pec_pci_base; + char name[64]; + + assert(pec); + + /* Initialize the XSCOM regions for the stack registers */ + snprintf(name, sizeof(name), "xscom-pec-%d.%d-nest-stack-%d", + pec->chip_id, pec->index, stack->stack_no); + pnv_xscom_region_init(&stack->nest_regs_mr, OBJECT(stack), + &pnv_pec_stk_nest_xscom_ops, stack, name, + PHB4_PEC_NEST_STK_REGS_COUNT); + + snprintf(name, sizeof(name), "xscom-pec-%d.%d-pci-stack-%d", + pec->chip_id, pec->index, stack->stack_no); + pnv_xscom_region_init(&stack->pci_regs_mr, OBJECT(stack), + &pnv_pec_stk_pci_xscom_ops, stack, name, + PHB4_PEC_PCI_STK_REGS_COUNT); + + /* PHB pass-through */ + snprintf(name, sizeof(name), "xscom-pec-%d.%d-pci-stack-%d-phb", + pec->chip_id, pec->index, stack->stack_no); + pnv_xscom_region_init(&stack->phb_regs_mr, OBJECT(phb), + &pnv_phb4_xscom_ops, phb, name, 0x40); + + pec_nest_base = pecc->xscom_nest_base(pec); + pec_pci_base = pecc->xscom_pci_base(pec); + + /* Populate the XSCOM address space. */ + pnv_xscom_add_subregion(pec->chip, + pec_nest_base + 0x40 * (stack->stack_no + 1), + &stack->nest_regs_mr); + pnv_xscom_add_subregion(pec->chip, + pec_pci_base + 0x40 * (stack->stack_no + 1), + &stack->pci_regs_mr); + pnv_xscom_add_subregion(pec->chip, + pec_pci_base + PNV9_XSCOM_PEC_PCI_STK0 + + 0x40 * stack->stack_no, + &stack->phb_regs_mr); +} + static void pnv_phb4_instance_init(Object *obj) { PnvPHB4 *phb = PNV_PHB4(obj); @@ -1247,6 +1549,8 @@ static void pnv_phb4_realize(DeviceState *dev, Error **errp) pnv_phb4_update_xsrc(phb); phb->qirqs = qemu_allocate_irqs(xive_source_set_irq, xsrc, xsrc->nr_irqs); + + pnv_phb4_xscom_realize(phb); } static const char *pnv_phb4_root_bus_path(PCIHostState *host_bridge, diff --git a/hw/pci-host/pnv_phb4_pec.c b/hw/pci-host/pnv_phb4_pec.c index f8038dff17..bf0fdf33fd 100644 --- a/hw/pci-host/pnv_phb4_pec.c +++ b/hw/pci-host/pnv_phb4_pec.c @@ -111,258 +111,6 @@ static const MemoryRegionOps pnv_pec_pci_xscom_ops = { .endianness = DEVICE_BIG_ENDIAN, }; -static uint64_t pnv_pec_stk_nest_xscom_read(void *opaque, hwaddr addr, - unsigned size) -{ - PnvPhb4PecStack *stack = PNV_PHB4_PEC_STACK(opaque); - uint32_t reg = addr >> 3; - - /* TODO: add list of allowed registers and error out if not */ - return stack->nest_regs[reg]; -} - -static void pnv_pec_stk_update_map(PnvPhb4PecStack *stack) -{ - PnvPhb4PecState *pec = stack->pec; - MemoryRegion *sysmem = get_system_memory(); - uint64_t bar_en = stack->nest_regs[PEC_NEST_STK_BAR_EN]; - uint64_t bar, mask, size; - char name[64]; - - /* - * NOTE: This will really not work well if those are remapped - * after the PHB has created its sub regions. We could do better - * if we had a way to resize regions but we don't really care - * that much in practice as the stuff below really only happens - * once early during boot - */ - - /* Handle unmaps */ - if (memory_region_is_mapped(&stack->mmbar0) && - !(bar_en & PEC_NEST_STK_BAR_EN_MMIO0)) { - memory_region_del_subregion(sysmem, &stack->mmbar0); - } - if (memory_region_is_mapped(&stack->mmbar1) && - !(bar_en & PEC_NEST_STK_BAR_EN_MMIO1)) { - memory_region_del_subregion(sysmem, &stack->mmbar1); - } - if (memory_region_is_mapped(&stack->phbbar) && - !(bar_en & PEC_NEST_STK_BAR_EN_PHB)) { - memory_region_del_subregion(sysmem, &stack->phbbar); - } - if (memory_region_is_mapped(&stack->intbar) && - !(bar_en & PEC_NEST_STK_BAR_EN_INT)) { - memory_region_del_subregion(sysmem, &stack->intbar); - } - - /* Update PHB */ - pnv_phb4_update_regions(stack); - - /* Handle maps */ - if (!memory_region_is_mapped(&stack->mmbar0) && - (bar_en & PEC_NEST_STK_BAR_EN_MMIO0)) { - bar = stack->nest_regs[PEC_NEST_STK_MMIO_BAR0] >> 8; - mask = stack->nest_regs[PEC_NEST_STK_MMIO_BAR0_MASK]; - size = ((~mask) >> 8) + 1; - snprintf(name, sizeof(name), "pec-%d.%d-stack-%d-mmio0", - pec->chip_id, pec->index, stack->stack_no); - memory_region_init(&stack->mmbar0, OBJECT(stack), name, size); - memory_region_add_subregion(sysmem, bar, &stack->mmbar0); - stack->mmio0_base = bar; - stack->mmio0_size = size; - } - if (!memory_region_is_mapped(&stack->mmbar1) && - (bar_en & PEC_NEST_STK_BAR_EN_MMIO1)) { - bar = stack->nest_regs[PEC_NEST_STK_MMIO_BAR1] >> 8; - mask = stack->nest_regs[PEC_NEST_STK_MMIO_BAR1_MASK]; - size = ((~mask) >> 8) + 1; - snprintf(name, sizeof(name), "pec-%d.%d-stack-%d-mmio1", - pec->chip_id, pec->index, stack->stack_no); - memory_region_init(&stack->mmbar1, OBJECT(stack), name, size); - memory_region_add_subregion(sysmem, bar, &stack->mmbar1); - stack->mmio1_base = bar; - stack->mmio1_size = size; - } - if (!memory_region_is_mapped(&stack->phbbar) && - (bar_en & PEC_NEST_STK_BAR_EN_PHB)) { - bar = stack->nest_regs[PEC_NEST_STK_PHB_REGS_BAR] >> 8; - size = PNV_PHB4_NUM_REGS << 3; - snprintf(name, sizeof(name), "pec-%d.%d-stack-%d-phb", - pec->chip_id, pec->index, stack->stack_no); - memory_region_init(&stack->phbbar, OBJECT(stack), name, size); - memory_region_add_subregion(sysmem, bar, &stack->phbbar); - } - if (!memory_region_is_mapped(&stack->intbar) && - (bar_en & PEC_NEST_STK_BAR_EN_INT)) { - bar = stack->nest_regs[PEC_NEST_STK_INT_BAR] >> 8; - size = PNV_PHB4_MAX_INTs << 16; - snprintf(name, sizeof(name), "pec-%d.%d-stack-%d-int", - stack->pec->chip_id, stack->pec->index, stack->stack_no); - memory_region_init(&stack->intbar, OBJECT(stack), name, size); - memory_region_add_subregion(sysmem, bar, &stack->intbar); - } - - /* Update PHB */ - pnv_phb4_update_regions(stack); -} - -static void pnv_pec_stk_nest_xscom_write(void *opaque, hwaddr addr, - uint64_t val, unsigned size) -{ - PnvPhb4PecStack *stack = PNV_PHB4_PEC_STACK(opaque); - PnvPhb4PecState *pec = stack->pec; - uint32_t reg = addr >> 3; - - switch (reg) { - case PEC_NEST_STK_PCI_NEST_FIR: - stack->nest_regs[PEC_NEST_STK_PCI_NEST_FIR] = val; - break; - case PEC_NEST_STK_PCI_NEST_FIR_CLR: - stack->nest_regs[PEC_NEST_STK_PCI_NEST_FIR] &= val; - break; - case PEC_NEST_STK_PCI_NEST_FIR_SET: - stack->nest_regs[PEC_NEST_STK_PCI_NEST_FIR] |= val; - break; - case PEC_NEST_STK_PCI_NEST_FIR_MSK: - stack->nest_regs[PEC_NEST_STK_PCI_NEST_FIR_MSK] = val; - break; - case PEC_NEST_STK_PCI_NEST_FIR_MSKC: - stack->nest_regs[PEC_NEST_STK_PCI_NEST_FIR_MSK] &= val; - break; - case PEC_NEST_STK_PCI_NEST_FIR_MSKS: - stack->nest_regs[PEC_NEST_STK_PCI_NEST_FIR_MSK] |= val; - break; - case PEC_NEST_STK_PCI_NEST_FIR_ACT0: - case PEC_NEST_STK_PCI_NEST_FIR_ACT1: - stack->nest_regs[reg] = val; - break; - case PEC_NEST_STK_PCI_NEST_FIR_WOF: - stack->nest_regs[reg] = 0; - break; - case PEC_NEST_STK_ERR_REPORT_0: - case PEC_NEST_STK_ERR_REPORT_1: - case PEC_NEST_STK_PBCQ_GNRL_STATUS: - /* Flag error ? */ - break; - case PEC_NEST_STK_PBCQ_MODE: - stack->nest_regs[reg] = val & 0xff00000000000000ull; - break; - case PEC_NEST_STK_MMIO_BAR0: - case PEC_NEST_STK_MMIO_BAR0_MASK: - case PEC_NEST_STK_MMIO_BAR1: - case PEC_NEST_STK_MMIO_BAR1_MASK: - if (stack->nest_regs[PEC_NEST_STK_BAR_EN] & - (PEC_NEST_STK_BAR_EN_MMIO0 | - PEC_NEST_STK_BAR_EN_MMIO1)) { - phb_pec_error(pec, "Changing enabled BAR unsupported\n"); - } - stack->nest_regs[reg] = val & 0xffffffffff000000ull; - break; - case PEC_NEST_STK_PHB_REGS_BAR: - if (stack->nest_regs[PEC_NEST_STK_BAR_EN] & PEC_NEST_STK_BAR_EN_PHB) { - phb_pec_error(pec, "Changing enabled BAR unsupported\n"); - } - stack->nest_regs[reg] = val & 0xffffffffffc00000ull; - break; - case PEC_NEST_STK_INT_BAR: - if (stack->nest_regs[PEC_NEST_STK_BAR_EN] & PEC_NEST_STK_BAR_EN_INT) { - phb_pec_error(pec, "Changing enabled BAR unsupported\n"); - } - stack->nest_regs[reg] = val & 0xfffffff000000000ull; - break; - case PEC_NEST_STK_BAR_EN: - stack->nest_regs[reg] = val & 0xf000000000000000ull; - pnv_pec_stk_update_map(stack); - break; - case PEC_NEST_STK_DATA_FRZ_TYPE: - case PEC_NEST_STK_PBCQ_TUN_BAR: - /* Not used for now */ - stack->nest_regs[reg] = val; - break; - default: - qemu_log_mask(LOG_UNIMP, "phb4_pec: nest_xscom_write 0x%"HWADDR_PRIx - "=%"PRIx64"\n", addr, val); - } -} - -static const MemoryRegionOps pnv_pec_stk_nest_xscom_ops = { - .read = pnv_pec_stk_nest_xscom_read, - .write = pnv_pec_stk_nest_xscom_write, - .valid.min_access_size = 8, - .valid.max_access_size = 8, - .impl.min_access_size = 8, - .impl.max_access_size = 8, - .endianness = DEVICE_BIG_ENDIAN, -}; - -static uint64_t pnv_pec_stk_pci_xscom_read(void *opaque, hwaddr addr, - unsigned size) -{ - PnvPhb4PecStack *stack = PNV_PHB4_PEC_STACK(opaque); - uint32_t reg = addr >> 3; - - /* TODO: add list of allowed registers and error out if not */ - return stack->pci_regs[reg]; -} - -static void pnv_pec_stk_pci_xscom_write(void *opaque, hwaddr addr, - uint64_t val, unsigned size) -{ - PnvPhb4PecStack *stack = PNV_PHB4_PEC_STACK(opaque); - uint32_t reg = addr >> 3; - - switch (reg) { - case PEC_PCI_STK_PCI_FIR: - stack->nest_regs[reg] = val; - break; - case PEC_PCI_STK_PCI_FIR_CLR: - stack->nest_regs[PEC_PCI_STK_PCI_FIR] &= val; - break; - case PEC_PCI_STK_PCI_FIR_SET: - stack->nest_regs[PEC_PCI_STK_PCI_FIR] |= val; - break; - case PEC_PCI_STK_PCI_FIR_MSK: - stack->nest_regs[reg] = val; - break; - case PEC_PCI_STK_PCI_FIR_MSKC: - stack->nest_regs[PEC_PCI_STK_PCI_FIR_MSK] &= val; - break; - case PEC_PCI_STK_PCI_FIR_MSKS: - stack->nest_regs[PEC_PCI_STK_PCI_FIR_MSK] |= val; - break; - case PEC_PCI_STK_PCI_FIR_ACT0: - case PEC_PCI_STK_PCI_FIR_ACT1: - stack->nest_regs[reg] = val; - break; - case PEC_PCI_STK_PCI_FIR_WOF: - stack->nest_regs[reg] = 0; - break; - case PEC_PCI_STK_ETU_RESET: - stack->nest_regs[reg] = val & 0x8000000000000000ull; - /* TODO: Implement reset */ - break; - case PEC_PCI_STK_PBAIB_ERR_REPORT: - break; - case PEC_PCI_STK_PBAIB_TX_CMD_CRED: - case PEC_PCI_STK_PBAIB_TX_DAT_CRED: - stack->nest_regs[reg] = val; - break; - default: - qemu_log_mask(LOG_UNIMP, "phb4_pec_stk: pci_xscom_write 0x%"HWADDR_PRIx - "=%"PRIx64"\n", addr, val); - } -} - -static const MemoryRegionOps pnv_pec_stk_pci_xscom_ops = { - .read = pnv_pec_stk_pci_xscom_read, - .write = pnv_pec_stk_pci_xscom_write, - .valid.min_access_size = 8, - .valid.max_access_size = 8, - .impl.min_access_size = 8, - .impl.max_access_size = 8, - .endianness = DEVICE_BIG_ENDIAN, -}; - static void pnv_pec_instance_init(Object *obj) { PnvPhb4PecState *pec = PNV_PHB4_PEC(obj); @@ -539,32 +287,7 @@ static void pnv_pec_stk_realize(DeviceState *dev, Error **errp) PnvPhb4PecStack *stack = PNV_PHB4_PEC_STACK(dev); PnvPhb4PecState *pec = stack->pec; PnvPhb4PecClass *pecc = PNV_PHB4_PEC_GET_CLASS(pec); - PnvChip *chip = pec->chip; int phb_id = pnv_phb4_pec_get_phb_id(pec, stack->stack_no); - uint32_t pec_nest_base; - uint32_t pec_pci_base; - char name[64]; - - assert(pec); - - /* Initialize the XSCOM regions for the stack registers */ - snprintf(name, sizeof(name), "xscom-pec-%d.%d-nest-stack-%d", - pec->chip_id, pec->index, stack->stack_no); - pnv_xscom_region_init(&stack->nest_regs_mr, OBJECT(stack), - &pnv_pec_stk_nest_xscom_ops, stack, name, - PHB4_PEC_NEST_STK_REGS_COUNT); - - snprintf(name, sizeof(name), "xscom-pec-%d.%d-pci-stack-%d", - pec->chip_id, pec->index, stack->stack_no); - pnv_xscom_region_init(&stack->pci_regs_mr, OBJECT(stack), - &pnv_pec_stk_pci_xscom_ops, stack, name, - PHB4_PEC_PCI_STK_REGS_COUNT); - - /* PHB pass-through */ - snprintf(name, sizeof(name), "xscom-pec-%d.%d-pci-stack-%d-phb", - pec->chip_id, pec->index, stack->stack_no); - pnv_xscom_region_init(&stack->phb_regs_mr, OBJECT(&stack->phb), - &pnv_phb4_xscom_ops, &stack->phb, name, 0x40); object_property_set_int(OBJECT(&stack->phb), "chip-id", pec->chip_id, &error_fatal); @@ -577,21 +300,6 @@ static void pnv_pec_stk_realize(DeviceState *dev, Error **errp) if (!sysbus_realize(SYS_BUS_DEVICE(&stack->phb), errp)) { return; } - - pec_nest_base = pecc->xscom_nest_base(pec); - pec_pci_base = pecc->xscom_pci_base(pec); - - /* Populate the XSCOM address space. */ - pnv_xscom_add_subregion(chip, - pec_nest_base + 0x40 * (stack->stack_no + 1), - &stack->nest_regs_mr); - pnv_xscom_add_subregion(chip, - pec_pci_base + 0x40 * (stack->stack_no + 1), - &stack->pci_regs_mr); - pnv_xscom_add_subregion(chip, - pec_pci_base + PNV9_XSCOM_PEC_PCI_STK0 + - 0x40 * stack->stack_no, - &stack->phb_regs_mr); } static Property pnv_pec_stk_properties[] = { From dc8e2914ab27e09ce6483fa41be6822b2ff3b650 Mon Sep 17 00:00:00 2001 From: Daniel Henrique Barboza Date: Wed, 12 Jan 2022 11:28:27 +0100 Subject: [PATCH 31/34] ppc/pnv: turn 'phb' into a pointer in struct PnvPhb4PecStack MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit At this moment, stack->phb is the plain PnvPHB4 device itself instead of a pointer to the device. This will present a problem when adding user creatable devices because we can't deal with this struct and the realize() callback from the user creatable device. We can't get rid of this attribute, similar to what we did when enabling pnv-phb3 user creatable devices, because pnv_phb4_update_regions() needs to access stack->phb to do its job. This function is called twice in pnv_pec_stk_update_map(), which is one of the nested xscom write callbacks (via pnv_pec_stk_nest_xscom_write()). In fact, pnv_pec_stk_update_map() code comment is explicit about how the order of the unmap/map operations relates with the PHB subregions. All of this indicates that this code is tied together in a way that we either go on a crusade, featuring lots of refactories and redesign and considerable pain, to decouple stack and phb mapping, or we allow stack update_map operations to access the associated PHB as it is today even after introducing pnv-phb4 user devices. This patch chooses the latter. Instead of getting rid of stack->phb, turn it into a PHB pointer. This will allow us to assign an user created PHB to an existing stack later. In this process, pnv_pec_stk_instance_init() is removed because stack->phb is being initialized in stk_realize() instead. Reviewed-by: Cédric Le Goater Signed-off-by: Daniel Henrique Barboza Message-Id: <20220111131027.599784-4-danielhb413@gmail.com> Signed-off-by: Cédric Le Goater --- hw/pci-host/pnv_phb4.c | 2 +- hw/pci-host/pnv_phb4_pec.c | 20 +++++++------------- include/hw/pci-host/pnv_phb4.h | 7 +++++-- 3 files changed, 13 insertions(+), 16 deletions(-) diff --git a/hw/pci-host/pnv_phb4.c b/hw/pci-host/pnv_phb4.c index 8ef58bf2de..e25adb8860 100644 --- a/hw/pci-host/pnv_phb4.c +++ b/hw/pci-host/pnv_phb4.c @@ -1728,7 +1728,7 @@ type_init(pnv_phb4_register_types); void pnv_phb4_update_regions(PnvPhb4PecStack *stack) { - PnvPHB4 *phb = &stack->phb; + PnvPHB4 *phb = stack->phb; /* Unmap first always */ if (memory_region_is_mapped(&phb->mr_regs)) { diff --git a/hw/pci-host/pnv_phb4_pec.c b/hw/pci-host/pnv_phb4_pec.c index bf0fdf33fd..d4c52a5d28 100644 --- a/hw/pci-host/pnv_phb4_pec.c +++ b/hw/pci-host/pnv_phb4_pec.c @@ -275,13 +275,6 @@ static const TypeInfo pnv_pec_type_info = { } }; -static void pnv_pec_stk_instance_init(Object *obj) -{ - PnvPhb4PecStack *stack = PNV_PHB4_PEC_STACK(obj); - - object_initialize_child(obj, "phb", &stack->phb, TYPE_PNV_PHB4); -} - static void pnv_pec_stk_realize(DeviceState *dev, Error **errp) { PnvPhb4PecStack *stack = PNV_PHB4_PEC_STACK(dev); @@ -289,15 +282,17 @@ static void pnv_pec_stk_realize(DeviceState *dev, Error **errp) PnvPhb4PecClass *pecc = PNV_PHB4_PEC_GET_CLASS(pec); int phb_id = pnv_phb4_pec_get_phb_id(pec, stack->stack_no); - object_property_set_int(OBJECT(&stack->phb), "chip-id", pec->chip_id, + stack->phb = PNV_PHB4(qdev_new(TYPE_PNV_PHB4)); + + object_property_set_int(OBJECT(stack->phb), "chip-id", pec->chip_id, &error_fatal); - object_property_set_int(OBJECT(&stack->phb), "index", phb_id, + object_property_set_int(OBJECT(stack->phb), "index", phb_id, &error_fatal); - object_property_set_int(OBJECT(&stack->phb), "version", pecc->version, + object_property_set_int(OBJECT(stack->phb), "version", pecc->version, &error_fatal); - object_property_set_link(OBJECT(&stack->phb), "stack", OBJECT(stack), + object_property_set_link(OBJECT(stack->phb), "stack", OBJECT(stack), &error_abort); - if (!sysbus_realize(SYS_BUS_DEVICE(&stack->phb), errp)) { + if (!sysbus_realize(SYS_BUS_DEVICE(stack->phb), errp)) { return; } } @@ -324,7 +319,6 @@ static const TypeInfo pnv_pec_stk_type_info = { .name = TYPE_PNV_PHB4_PEC_STACK, .parent = TYPE_DEVICE, .instance_size = sizeof(PnvPhb4PecStack), - .instance_init = pnv_pec_stk_instance_init, .class_init = pnv_pec_stk_class_init, .interfaces = (InterfaceInfo[]) { { TYPE_PNV_XSCOM_INTERFACE }, diff --git a/include/hw/pci-host/pnv_phb4.h b/include/hw/pci-host/pnv_phb4.h index 5ee996ebc6..82f054cf21 100644 --- a/include/hw/pci-host/pnv_phb4.h +++ b/include/hw/pci-host/pnv_phb4.h @@ -177,8 +177,11 @@ struct PnvPhb4PecStack { /* The owner PEC */ PnvPhb4PecState *pec; - /* The actual PHB */ - PnvPHB4 phb; + /* + * PHB4 pointer. pnv_phb4_update_regions() needs to access + * the PHB4 via a PnvPhb4PecStack pointer. + */ + PnvPHB4 *phb; }; struct PnvPhb4PecState { From 5bc67b052b511ef042bd420857227e1e5173c88a Mon Sep 17 00:00:00 2001 From: Daniel Henrique Barboza Date: Wed, 12 Jan 2022 11:28:27 +0100 Subject: [PATCH 32/34] ppc/pnv: Introduce user creatable pnv-phb4 devices MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch introduces pnv-phb4 user creatable devices that are created in a similar manner as pnv-phb3 devices, allowing the user to interact with the PHBs directly instead of creating PCI Express Controllers that will create a certain amount of PHBs per controller index. We accomplish this by doing the following: - add a pnv_phb4_get_stack() helper to retrieve which stack an user created phb4 would occupy; - when dealing with an user created pnv-phb4 (detected by checking if phb->stack is NULL at the start of phb4_realize()), retrieve its stack and initialize its properties as done in stk_realize(); - use 'defaults_enabled()' in stk_realize() to avoid creating and initializing a 'stack->phb' qdev that might be overwritten by an user created pnv-phb4 device. This process is wrapped into a new helper called pnv_pec_stk_default_phb_realize(). Reviewed-by: Cédric Le Goater Signed-off-by: Daniel Henrique Barboza Message-Id: <20220111131027.599784-5-danielhb413@gmail.com> Signed-off-by: Cédric Le Goater --- hw/pci-host/pnv_phb4.c | 74 ++++++++++++++++++++++++++++++++++++-- hw/pci-host/pnv_phb4_pec.c | 17 +++++++-- hw/ppc/pnv.c | 2 ++ 3 files changed, 89 insertions(+), 4 deletions(-) diff --git a/hw/pci-host/pnv_phb4.c b/hw/pci-host/pnv_phb4.c index e25adb8860..ffa1453eee 100644 --- a/hw/pci-host/pnv_phb4.c +++ b/hw/pci-host/pnv_phb4.c @@ -1487,15 +1487,85 @@ static void pnv_phb4_instance_init(Object *obj) object_initialize_child(obj, "source", &phb->xsrc, TYPE_XIVE_SOURCE); } +static PnvPhb4PecStack *pnv_phb4_get_stack(PnvChip *chip, PnvPHB4 *phb, + Error **errp) +{ + Pnv9Chip *chip9 = PNV9_CHIP(chip); + int chip_id = phb->chip_id; + int index = phb->phb_id; + int i, j; + + for (i = 0; i < chip->num_pecs; i++) { + /* + * For each PEC, check the amount of stacks it supports + * and see if the given phb4 index matches a stack. + */ + PnvPhb4PecState *pec = &chip9->pecs[i]; + + for (j = 0; j < pec->num_stacks; j++) { + if (index == pnv_phb4_pec_get_phb_id(pec, j)) { + return &pec->stacks[j]; + } + } + } + + error_setg(errp, + "pnv-phb4 chip-id %d index %d didn't match any existing PEC", + chip_id, index); + + return NULL; +} + static void pnv_phb4_realize(DeviceState *dev, Error **errp) { PnvPHB4 *phb = PNV_PHB4(dev); PCIHostState *pci = PCI_HOST_BRIDGE(dev); XiveSource *xsrc = &phb->xsrc; + Error *local_err = NULL; int nr_irqs; char name[32]; - assert(phb->stack); + /* User created PHB */ + if (!phb->stack) { + PnvMachineState *pnv = PNV_MACHINE(qdev_get_machine()); + PnvChip *chip = pnv_get_chip(pnv, phb->chip_id); + PnvPhb4PecClass *pecc; + BusState *s; + + if (!chip) { + error_setg(errp, "invalid chip id: %d", phb->chip_id); + return; + } + + phb->stack = pnv_phb4_get_stack(chip, phb, &local_err); + if (local_err) { + error_propagate(errp, local_err); + return; + } + + /* All other phb properties but 'version' are already set */ + pecc = PNV_PHB4_PEC_GET_CLASS(phb->stack->pec); + object_property_set_int(OBJECT(phb), "version", pecc->version, + &error_fatal); + + /* + * Assign stack->phb since pnv_phb4_update_regions() uses it + * to access the phb. + */ + phb->stack->phb = phb; + + /* + * Reparent user created devices to the chip to build + * correctly the device tree. + */ + pnv_chip_parent_fixup(chip, OBJECT(phb), phb->phb_id); + + s = qdev_get_parent_bus(DEVICE(chip)); + if (!qdev_set_parent_bus(DEVICE(phb), s, &local_err)) { + error_propagate(errp, local_err); + return; + } + } /* Set the "big_phb" flag */ phb->big_phb = phb->phb_id == 0 || phb->phb_id == 3; @@ -1600,7 +1670,7 @@ static void pnv_phb4_class_init(ObjectClass *klass, void *data) dc->realize = pnv_phb4_realize; device_class_set_props(dc, pnv_phb4_properties); set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); - dc->user_creatable = false; + dc->user_creatable = true; xfc->notify = pnv_phb4_xive_notify; } diff --git a/hw/pci-host/pnv_phb4_pec.c b/hw/pci-host/pnv_phb4_pec.c index d4c52a5d28..7fe7f1f007 100644 --- a/hw/pci-host/pnv_phb4_pec.c +++ b/hw/pci-host/pnv_phb4_pec.c @@ -19,6 +19,7 @@ #include "hw/pci/pci_bus.h" #include "hw/ppc/pnv.h" #include "hw/qdev-properties.h" +#include "sysemu/sysemu.h" #include @@ -275,9 +276,9 @@ static const TypeInfo pnv_pec_type_info = { } }; -static void pnv_pec_stk_realize(DeviceState *dev, Error **errp) +static void pnv_pec_stk_default_phb_realize(PnvPhb4PecStack *stack, + Error **errp) { - PnvPhb4PecStack *stack = PNV_PHB4_PEC_STACK(dev); PnvPhb4PecState *pec = stack->pec; PnvPhb4PecClass *pecc = PNV_PHB4_PEC_GET_CLASS(pec); int phb_id = pnv_phb4_pec_get_phb_id(pec, stack->stack_no); @@ -292,11 +293,23 @@ static void pnv_pec_stk_realize(DeviceState *dev, Error **errp) &error_fatal); object_property_set_link(OBJECT(stack->phb), "stack", OBJECT(stack), &error_abort); + if (!sysbus_realize(SYS_BUS_DEVICE(stack->phb), errp)) { return; } } +static void pnv_pec_stk_realize(DeviceState *dev, Error **errp) +{ + PnvPhb4PecStack *stack = PNV_PHB4_PEC_STACK(dev); + + if (!defaults_enabled()) { + return; + } + + pnv_pec_stk_default_phb_realize(stack, errp); +} + static Property pnv_pec_stk_properties[] = { DEFINE_PROP_UINT32("stack-no", PnvPhb4PecStack, stack_no, 0), DEFINE_PROP_LINK("pec", PnvPhb4PecStack, pec, TYPE_PNV_PHB4_PEC, diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index fe7e67e73a..837146a2fb 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -1960,6 +1960,8 @@ static void pnv_machine_power9_class_init(ObjectClass *oc, void *data) pmc->compat = compat; pmc->compat_size = sizeof(compat); pmc->dt_power_mgt = pnv_dt_power_mgt; + + machine_class_allow_dynamic_sysbus_dev(mc, TYPE_PNV_PHB4); } static void pnv_machine_power10_class_init(ObjectClass *oc, void *data) From 7e1e0912ec67f813473a7191274d52cab1fe476d Mon Sep 17 00:00:00 2001 From: Daniel Henrique Barboza Date: Wed, 12 Jan 2022 11:28:27 +0100 Subject: [PATCH 33/34] ppc/pnv: turn pnv_phb4_update_regions() into static MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Its only callers are inside pnv_phb4.c. Reviewed-by: Cédric Le Goater Signed-off-by: Daniel Henrique Barboza Message-Id: <20220111131027.599784-6-danielhb413@gmail.com> Signed-off-by: Cédric Le Goater --- hw/pci-host/pnv_phb4.c | 52 +++++++++++++++++----------------- include/hw/pci-host/pnv_phb4.h | 1 - 2 files changed, 26 insertions(+), 27 deletions(-) diff --git a/hw/pci-host/pnv_phb4.c b/hw/pci-host/pnv_phb4.c index ffa1453eee..be29174f13 100644 --- a/hw/pci-host/pnv_phb4.c +++ b/hw/pci-host/pnv_phb4.c @@ -868,6 +868,32 @@ static uint64_t pnv_pec_stk_nest_xscom_read(void *opaque, hwaddr addr, return stack->nest_regs[reg]; } +static void pnv_phb4_update_regions(PnvPhb4PecStack *stack) +{ + PnvPHB4 *phb = stack->phb; + + /* Unmap first always */ + if (memory_region_is_mapped(&phb->mr_regs)) { + memory_region_del_subregion(&stack->phbbar, &phb->mr_regs); + } + if (memory_region_is_mapped(&phb->xsrc.esb_mmio)) { + memory_region_del_subregion(&stack->intbar, &phb->xsrc.esb_mmio); + } + + /* Map registers if enabled */ + if (memory_region_is_mapped(&stack->phbbar)) { + memory_region_add_subregion(&stack->phbbar, 0, &phb->mr_regs); + } + + /* Map ESB if enabled */ + if (memory_region_is_mapped(&stack->intbar)) { + memory_region_add_subregion(&stack->intbar, 0, &phb->xsrc.esb_mmio); + } + + /* Check/update m32 */ + pnv_phb4_check_all_mbt(phb); +} + static void pnv_pec_stk_update_map(PnvPhb4PecStack *stack) { PnvPhb4PecState *pec = stack->pec; @@ -1796,32 +1822,6 @@ static void pnv_phb4_register_types(void) type_init(pnv_phb4_register_types); -void pnv_phb4_update_regions(PnvPhb4PecStack *stack) -{ - PnvPHB4 *phb = stack->phb; - - /* Unmap first always */ - if (memory_region_is_mapped(&phb->mr_regs)) { - memory_region_del_subregion(&stack->phbbar, &phb->mr_regs); - } - if (memory_region_is_mapped(&phb->xsrc.esb_mmio)) { - memory_region_del_subregion(&stack->intbar, &phb->xsrc.esb_mmio); - } - - /* Map registers if enabled */ - if (memory_region_is_mapped(&stack->phbbar)) { - memory_region_add_subregion(&stack->phbbar, 0, &phb->mr_regs); - } - - /* Map ESB if enabled */ - if (memory_region_is_mapped(&stack->intbar)) { - memory_region_add_subregion(&stack->intbar, 0, &phb->xsrc.esb_mmio); - } - - /* Check/update m32 */ - pnv_phb4_check_all_mbt(phb); -} - void pnv_phb4_pic_print_info(PnvPHB4 *phb, Monitor *mon) { uint32_t offset = phb->regs[PHB_INT_NOTIFY_INDEX >> 3]; diff --git a/include/hw/pci-host/pnv_phb4.h b/include/hw/pci-host/pnv_phb4.h index 82f054cf21..4b7ce8a723 100644 --- a/include/hw/pci-host/pnv_phb4.h +++ b/include/hw/pci-host/pnv_phb4.h @@ -131,7 +131,6 @@ struct PnvPHB4 { }; void pnv_phb4_pic_print_info(PnvPHB4 *phb, Monitor *mon); -void pnv_phb4_update_regions(PnvPhb4PecStack *stack); int pnv_phb4_pec_get_phb_id(PnvPhb4PecState *pec, int stack_index); extern const MemoryRegionOps pnv_phb4_xscom_ops; From f83460bb203a49dd1693bf8b664d2a935a5be621 Mon Sep 17 00:00:00 2001 From: Daniel Henrique Barboza Date: Wed, 12 Jan 2022 11:28:27 +0100 Subject: [PATCH 34/34] ppc/pnv: use stack->pci_regs[] in pnv_pec_stk_pci_xscom_write() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit pnv_pec_stk_pci_xscom_write() is pnv_pec_stk_pci_xscom_ops write callback. It writes values into regs in the stack->nest_regs[] array. The pnv_pec_stk_pci_xscom_read read callback, on the other hand, returns values of the stack->pci_regs[]. In fact, at this moment, the only use of stack->pci_regs[] is in pnv_pec_stk_pci_xscom_read(). There's no code that is written anything in stack->pci_regs[], which is suspicious. Considering that stack->nest_regs[] is widely used by the nested MemoryOps pnv_pec_stk_nest_xscom_ops, in both read and write callbacks, the conclusion is that we're writing the wrong array in pnv_pec_stk_pci_xscom_write(). This function should write stack->pci_regs[] instead. Signed-off-by: Daniel Henrique Barboza Reviewed-by: Frederic Barrat Message-Id: <20220111200132.633896-2-danielhb413@gmail.com> Signed-off-by: Cédric Le Goater --- hw/pci-host/pnv_phb4.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/hw/pci-host/pnv_phb4.c b/hw/pci-host/pnv_phb4.c index be29174f13..a7b638831e 100644 --- a/hw/pci-host/pnv_phb4.c +++ b/hw/pci-host/pnv_phb4.c @@ -1086,39 +1086,39 @@ static void pnv_pec_stk_pci_xscom_write(void *opaque, hwaddr addr, switch (reg) { case PEC_PCI_STK_PCI_FIR: - stack->nest_regs[reg] = val; + stack->pci_regs[reg] = val; break; case PEC_PCI_STK_PCI_FIR_CLR: - stack->nest_regs[PEC_PCI_STK_PCI_FIR] &= val; + stack->pci_regs[PEC_PCI_STK_PCI_FIR] &= val; break; case PEC_PCI_STK_PCI_FIR_SET: - stack->nest_regs[PEC_PCI_STK_PCI_FIR] |= val; + stack->pci_regs[PEC_PCI_STK_PCI_FIR] |= val; break; case PEC_PCI_STK_PCI_FIR_MSK: - stack->nest_regs[reg] = val; + stack->pci_regs[reg] = val; break; case PEC_PCI_STK_PCI_FIR_MSKC: - stack->nest_regs[PEC_PCI_STK_PCI_FIR_MSK] &= val; + stack->pci_regs[PEC_PCI_STK_PCI_FIR_MSK] &= val; break; case PEC_PCI_STK_PCI_FIR_MSKS: - stack->nest_regs[PEC_PCI_STK_PCI_FIR_MSK] |= val; + stack->pci_regs[PEC_PCI_STK_PCI_FIR_MSK] |= val; break; case PEC_PCI_STK_PCI_FIR_ACT0: case PEC_PCI_STK_PCI_FIR_ACT1: - stack->nest_regs[reg] = val; + stack->pci_regs[reg] = val; break; case PEC_PCI_STK_PCI_FIR_WOF: - stack->nest_regs[reg] = 0; + stack->pci_regs[reg] = 0; break; case PEC_PCI_STK_ETU_RESET: - stack->nest_regs[reg] = val & 0x8000000000000000ull; + stack->pci_regs[reg] = val & 0x8000000000000000ull; /* TODO: Implement reset */ break; case PEC_PCI_STK_PBAIB_ERR_REPORT: break; case PEC_PCI_STK_PBAIB_TX_CMD_CRED: case PEC_PCI_STK_PBAIB_TX_DAT_CRED: - stack->nest_regs[reg] = val; + stack->pci_regs[reg] = val; break; default: qemu_log_mask(LOG_UNIMP, "phb4_pec_stk: pci_xscom_write 0x%"HWADDR_PRIx