From 76b653ed8afb8bda19b4afe7ebffa7b8f9c14d55 Mon Sep 17 00:00:00 2001
From: Denver Gingerich The GPL violation at issue involves VMware's ESXi product.
- Conservancy independently reviewed ESXi 5.5 and its incomplete
+ Conservancy independently reviewed ESXi and its incomplete
CCS
release as part of our GPL enforcement efforts described above. and
to ">" so the page is valid HTML
* convert "&" in
to "&" so the page is valid HTML
* add missing 's' to "truct pci_driver"
* fix the "tg.c" filename - this should be "tg3.c"
---
.../linux-compliance/vmware-lawsuit-faq.html | 92 ++++++++++---------
1 file changed, 47 insertions(+), 45 deletions(-)
diff --git a/www/conservancy/static/linux-compliance/vmware-lawsuit-faq.html b/www/conservancy/static/linux-compliance/vmware-lawsuit-faq.html
index 99761922..0da1f8a1 100644
--- a/www/conservancy/static/linux-compliance/vmware-lawsuit-faq.html
+++ b/www/conservancy/static/linux-compliance/vmware-lawsuit-faq.html
@@ -138,7 +138,7 @@
component in ESXi that the lawsuit alleges violates the GPL?
However, Conservancy examined VMware's ESXi 5.5 product in detail +
However, Conservancy examined VMware's ESXi product in detail even before Hellwig's enforcement action began. Below is one example among many where VMware's CCS was incomplete per GPLv2§2(c) and GPLv2§3(a). (One can verify these results by downloading and installing the binary and source - packages for VMware's ESXi 5.5 Update 2.) Note that this + packages for VMware's ESXi 6.0.) Note that this example below is not necessarily regarding Hellwig's copyrights; VMware incorporated Linux code copyrighted by many others as well into their kernel.
@@ -216,7 +216,7 @@ Code, and for which (at least some) source code is provided.Our example begins with examination of the file
called vmkdrivers/src_92/vmklinux_92/vmware/linux_pci.c
,
which can be found in the “Open Source” release for
- ESXi 5.5.0 Update 2 (5.5U2). A small excerpt from that file, found in the
+ ESXi 6.0. A small excerpt from that file, found in the
function LinuxPCIDeviceRemoved()
, reads as follows:
@@ -238,8 +238,8 @@ LinuxPCIDeviceRemoved(vmk_PCIDevice vmkDev) vmkDevName[0] = 0; } [...] -VMKAPI_MODULE_CALL_VOID(pciDevExt->moduleID, - linuxDev->driver->remove, +VMKAPI_MODULE_CALL_VOID(pciDevExt->moduleID, + linuxDev->driver->remove, linuxDev);@@ -247,8 +247,8 @@ VMKAPI_MODULE_CALL_VOID(pciDevExt->moduleID,
The function, vmk_PCIGetDeviceName()
must be defined, with an
implementation, for this code above to work, or even compile.
- Inside BLD/build/HEADERS/vmkapi-current-all-public/vmkernel64/release/device/vmkapi_pci_incompat.h
,
- found in the vmkdrivers
package of ESXi 5.5U2, shows a
+ Inside BLD/build/HEADERS/vmkapi-current-all-public/generic/release/hardware/vmkapi_pci_incompat.h
,
+ found in the vmkdrivers
package of ESXi 6.0, shows a
function header definition for vmk_PCIGetDeviceName()
.
However, the source of its implementation is not provided there or
anywhere in the source release.
-00000000000327ff R_X86_64_PC32 vmk_PCIGetDeviceName+0xfffffffffffffffc -0000000000035318 R_X86_64_PC32 vmk_PCIGetDeviceName+0xfffffffffffffffc -00000000000387e1 R_X86_64_PC32 vmk_PCIGetDeviceName+0xfffffffffffffffc -000000000003cf40 R_X86_64_PC32 vmk_PCIGetDeviceName+0xfffffffffffffffc +0000000000032db3 R_X86_64_PC32 vmk_PCIGetDeviceName+0xfffffffffffffffc +00000000000333ea R_X86_64_PC32 vmk_PCIGetDeviceName+0xfffffffffffffffc +0000000000036644 R_X86_64_PC32 vmk_PCIGetDeviceName+0xfffffffffffffffc +000000000003986a R_X86_64_PC32 vmk_PCIGetDeviceName+0xfffffffffffffffc
The above two properties both suggest that the vmklinux_9
@@ -280,9 +280,9 @@ VMKAPI_MODULE_CALL_VOID(pciDevExt->moduleID,
inside vmklinux_9
itself.
The definition can however be found in binary-only software provided in
- ESXi 5.5U2 — specifically, inside a file named k.b00
,
+ ESXi 6.0 — specifically, inside a file named k.b00
,
which is located in partition 5 on a disk where ESXi has been installed (or
- in the ESXi 5.5U2 installer ISO image). Running file
+ in the ESXi 6.0 installer ISO image). Running file
after gunzip
on this file yields “ELF 64-bit LSB shared
object”. Meanwhile, file k.b00
reports “gzip
compressed data, was ‘vmvisor64-vmkernel.stripped’”.
@@ -291,7 +291,7 @@ VMKAPI_MODULE_CALL_VOID(pciDevExt->moduleID,
“SYMBOL TABLE” section:
-000041800036a408 g F .text 0000000000000137 vmk_PCIGetDeviceName +000041800033193c g F .text 000000000000012e vmk_PCIGetDeviceName
… which indicated these binary file contains the function body
@@ -317,25 +317,27 @@ for vmk_PCIGetDeviceName
.
struct pci_dev { -[...] - struct pci_driver *driver; /* which driver has allocated this device */ -[...] -truct pci_driver { - char *name; -[...] - void (*remove) (struct pci_dev *dev); /* Device removed (NULL if not a hot-plug capable driver) */ [...] #if defined(__VMKLNX__) /* 2008: Update from Linux source */ u8 revision; /* PCI revision, low byte of class word */ #endif /* defined(__VMKLNX__) */ +[...] + struct pci_driver *driver; /* which driver has allocated this device */ +[...] +struct pci_driver { + struct list_head node; + char *name; +[...] + void (*remove) (struct pci_dev *dev); /* Device removed (NULL if not a hot-plug capable driver) */ +[...] };
These structures, and based on those from Linux itself (a similar version of this file can be seen in Linux 2.6.24), and as can - be seen above, have been modified to work with “vmkernel”
+ be seen above, have been modified to work with “vmkernel”.In LinuxPCIDeviceRemoved()
, we saw a macro called with a
variable, linuxDev
which was of type struct pci
.
@@ -346,7 +348,7 @@ truct pci_driver {
VMKAPI_MODULE_CALL_VOID
macro calls driver's codeThe
- file BLD/build/HEADERS/vmkapi-current-all-public/vmkernel64/release/base/vmkapi_module.h
+ file BLD/build/HEADERS/vmkapi-current-all-public/generic/release/base/vmkapi_module.h
contains the macro definition of VMKAPI_MODULE_CALL_VOID
,
which is quoted below (with debug lines removed):
@@ -361,8 +363,8 @@ do { \
When the macro is expanded, it means that (function)(args)
is
- actually expanded to linuxDev->driver->remove(linuxDev)
.
- Therefore, we see LinuxPCIDeviceRemoved()
, makes directs calls
+ actually expanded to linuxDev->driver->remove(linuxDev)
.
+ Therefore, we see LinuxPCIDeviceRemoved()
makes directs calls
to a driver's remove() function, by combining with Linux's struct
pci
, and by VMware's introduction of this new calling code.
Conservancy has confirmed many drivers from Linux are incorporated via
@@ -382,8 +384,8 @@ static struct pci_driver tg3_driver = {
Therefore, when the code in LinuxPCIDeviceRemoved()
- calls linuxDev->driver->remove(linuxDev)
, the code ultimately
- called (in the case where a tg3 card is driven by the kernel)
+ calls linuxDev->driver->remove(linuxDev)
, the code
+ ultimately called (in the case where a tg3 card is driven by the kernel)
is tg3_remove_one()
, which is found in tg3.c
and
comes directly from Linux.
tg3.c
VMware furthermore distributes a modified version of tg.c
in
+
VMware furthermore distributes a modified version of tg3.c
in
binary form. This can be found in usr/lib/vmware/vmkmod/tg3
,
which is extracted by un-vmtar'ing the file net_tg3.v00
(found
- on the ESXi 5.5U2 installer ISO image). Conservancy has confirmed that
- file is a compiled version of tg3.c
tg3.c
.
linux_pci.c
,
To obtain the source components, follow these steps (no login is required):
VMware-ESX-550U2-ODP.iso
.VMware-ESXI-600-ODP.iso
.
vmkdrivers/src_92/vmklinux_92/vmware/linux_pci.c
- and BLD/build/HEADERS/vmkapi-current-all-public/vmkernel64/release/device/vmkapi_pci_incompat.h
+ and BLD/build/HEADERS/vmkapi-current-all-public/generic/release/hardware/vmkapi_pci_incompat.h
from vmkdrivers-gpl/vmkdrivers-gpl.tgz
with tar and gzip.vmklinux_9
by following the steps
@@ -465,11 +467,11 @@ previously-mentioned linux_pci.c
,
(Note: vmklinux_9
is also available pre-built on a running
ESXi system; see below for instructions on how to access it).VMware-TOOLCHAIN-550u2-ODP.iso
and has a SHA-1 hash of
- f679e81ffb2f92729917bbc64c2d541cf75b5b94.VMware-TOOLCHAIN-600-ODP.iso
and has a SHA-1 hash of
+ 9a68df4cbeb645c25002a02f11b1923f98d3d5b5.
linux_pci.c
,
linux_pci.c
,
VMware-VMvisor-Installer-5.5.0.update02-2068190.x86_64.iso
.VMware-VMvisor-Installer-6.0.0-2494585.x86_64.iso
.
k.b00
file in the root directory. Extract it
using zcat k.b00 > vmvisor64-vmkernel
(or a similar command).
From 01b0b090a399083d05364b2266a9f46dd3663353 Mon Sep 17 00:00:00 2001
From: Denver Gingerich The above is but one piece of evidence among many, but hopefully it helps to explain some of the “combined work” violations found in - VMware's ESXi product.
+ VMware's ESXi product. Conservancy did a similar analysis for ESXi 5.0 + as well as ESXi 5.5 Update 2 and found nearly identical results.mQKpVGQ1+ECnJIXTdF;n=2PI2-3O(i0o-eQngoHd3Y?qQoDHrF86B*@x>507%<|ANib1uAdAznzacQ5fs`<^RU zS_tvmdk0;x@L6E1&rscS|IIu@wng(G+(OXnP(Z;408p~y1QR6X`37$qOFif0f%Zh4 z>r&E3Y^zXU#0SY`R$L{x39~G-hygu@P{Nz5*!w)B5lum4r|Y9Ix|dj{0Jsm?&{Kz1 zBTgKS$7m~5FXC=F#~z#c08y>jw{%oeEJ-+d2q_7bvW~`qQk7|zRqIRMBpWsA@1X{M z`Lu!|*8QJ_sf6#6X(+qfASygt^lT!DA5et(oXTUjkRAY13$ljeI?9}_116=0@U36v JxR{orU^y> z$(#GU!X&wL5ab2&awTLYI=hyrqOP>_NO(P z=HVO$vn`2CVp;(3Uf>Q(PPb|dmeV%^mGxhyBjGIkFz zDl(@ZXe)vp=w!#4{y{b-;;SrMpXGq8erIvF56+MSuDh!cqId9RGzOu&$FB LlEAxD!*qO+D+oqBA-D7T(?~t2T1aTC zguqvmbt38*XDp}~E!d*3h-(S9Ok+rdu>;@1#lh<+1p_eFB41{?iP>@Wxr;#^JbSQ| znqyOLX?I+k!&3bFGAO#|Kvo26j8ImF&YWw(;?8gMf`vCB8)ne1sgzy-`9wDkgJ6zl z_J$+iSmhycgB5T*kfGY0U3#npIPQB@8qj2hjj 2Xd$7mDsGP22nWom>WjUFD0pM|KD>r9GH|Nti@fFWU1NvJF|gz|r);1A z2>b1j0x%djRrH153ieAv&*{es=Y?ysHeNy909I<4suhLWVl` g)p5b7*sx{MR0I<>dLL+-*O>)`PQs_SdknfNMe1oHqi&Wn*fB`n> zFGAx)MJS46RHUub7y!?S>5FhxoB&KnVu1`X&-i8WieKj5ByFJfn?N1uA4N_ZPIMm< zl_?)+upWXoT%i9#m>Q PwBl?v{qR-tY*$j^Wj-+QR zxt@HM6>twA%L=52zzt^T>flGWfYttwmjPT1D> LVy6YvMaOWov>r@X{`N0XQml#hx)6fhllz z1`qKmCcJAf*qMfDc6We!<+}wyy-eN9ATgA+s+2&KhZM>0lKFOpDn|t>M>*Gi;$|y~ zzD*M;O{z )Kh0AK6-MN+*t!wfrh#Gj&lmMsv!_JzS(0UZgWc7sAbl*0IZ)vd@=|rbUND zF~uTR!TdDYKcRs?5I+R{c; Ywj~MMQmRl|u(!g2bF#@TRd6lD<`_d7z^TH~rco0xNlOY< zx5ZE>>-&9a7k;56S$SLL{ 7Xd0q3z0gz59>VI<2g(CLmwD#!yE8nxSZdl7#*Oz#BBElVoAqewan4gG}Io z$@{FQ_WjPbK2%ZnkQ8k76JQUhqqkJ8SFKkDtASO(s$k{OoRZ>_{E|ZH{FCv~HU@ow zB05TFW{;#v;V0!3Ymfp!^3i<_b*Kp_C5#>X4&lWEPE55(C;aX6EsU6Nxtc- 3s4Aw=h+$45bltf@}`e48Pa#G zT8u4s)%#J@nbW7OC~2^s?M2ViCS#-Xzu9Gy^TIa((C>g{fB^sx%BJDQDM29do-&>? zm@<=68ZYN$s`XUGlR+Ht3Q6v>vhe~Xo 1NdIt9FfqMbh?dwX;UAv*w-Ixuj<21TweB=2c|Z zBE4X>iP&|^BA2TR$py*F?{{Ht%e!_)bIeBJFRZvQ-94~6`EL4w<>Wtz_4%9KPr^Qn z;R0K%oUYdbMcm)G3T5+Zs~UD$pDc(-;#?Df-_KCbbI@zeRNHGWcUayZI5@a{wkdju zn7R2mlQOImxu|(vZ3Mn(4goe%|KPFrizmlUbK$^fhbdQ?1X;RpN4;W|h9z=P#9v z*}4p^#@i6aR8pt@6UM?XcN`>Rdykt$FMpaz#v+>waS)qXFkZ924Vf5}&miwF4u)4m zkYK{eUg)s9FI|@Fjc7}@Gg|7PZ~x>2Tw3h_F3kz}`xsrfpJW`hEbh8qhxxQB1>V&4 z8Z0j_wzcy0{#+(qTx_!nwQ~O!ax&}W;xTfyb5!Ic2Fp{}Q6n-xmHw*1AVG^UqKM*6 z)0dXv+Yj;a*L<2hDH>5tq}kl_8dpj`Mv*ux8V!v*2ELT72j`L#BySUsXpUe 2?pL|+<3w2FQei<^kr zc_X{HMBmAOa7>;3?mnaB=8XOzi=)YkZb0k$s83!&OI_(|7wI>RUL#P-&1HJxJHA TX1QKG$;sC+|vun?YbgKaKqanrxt(7^CLj_&gakjoFR zP}sI3c<$}TNz3vx0%*1AVnd`xTzLwMI^-<8DJwWSxU?`fnEPz@q`WsRcDKGTc3rHO zr$zg40zFR)^!$VN4+RX4(9gmuetw2DYTCFbMWrt(DsoDi vh=_H z$<*l3H&}6<;IRXB8gg{rS5?(cR@?vPQJ${XA+fKCmrQ9X!4PMx($M5%ptitjv6Him z2ObH)=5yL2iaj{7qMV6UYhIwbPw7g$QorjvOmvo{R%oGGwm#WjD26c3$i{xLtX-gC z&`o55y|J~WS-wggpZcKLmR+z-&VUk`B8lVj4SGS3g*2{L;COK4_3BpgccWg_0P{-j zMAs>{^R^a!hb0ZWX(9-i>@{Wn{@k>ZYb|^t%j3+spu4m}6wmdh-LP2RS{!zgOg%FZ zyTE)Pxl>kFrmklFfzt>BYQWaTy2_go&K!H|yA$knOTx r%8>1GihrlnfJvK!&_UFVpl*| z50ZBcyb;x`C*%3ZVX*Eg#|^06IhS<`Xj({2vm>d_%R|R$;oWjxkIXajC9-u_as^Ru zDF{~!QFC9MLOtk6`e3$S|96Ro1KSYZ_rtH~Tk*?EEf7@vEQ6Mo=c~$jOM)rXr>Y7* zfvGp>L$1(dSCQL_-rTZvT!2F}Kq~B {qQF=NS)&3f!m1_NM&0X-AQ z!9}QfOBaFB^Kq`62Dyr)YYPew@hxXbA^QD+j&CveaCX^8Gn7Xk|MgM1T(pq+n01Ex z@MU4c_W@$7?-^m_0y<0jKY9q~D$@*7t1v9zj?@P2|J-$x;I+j7*S6~vuL~hFa(p~3 zVOE8lDO`PgW&5D3=8nblI}LJ2QH<-At6(J3Kv acK z%9x;L3KaknF8{%6-%fQpc070e^%>k9FCwz#; xB~x)d*;}YhRc+30>uC zjt9HANM8Xr5@Qlk`40B1;n{(Ly?{rjo6N+ S}8zAEWb^mdZ;x z5-QnL%1}PzQ(aXB!RVUJBi5rYr3zPt(J;bYZkSPa?tKJ+e&Fj5b`$oCbv zJ^o#QE*8hIjX1uYx&JEFDnGzq =+k=MH_?73wt8ybl$yBAV`z9rp}}A4YvR050tPW9tA}X9ZrzBp@qhm z7E)Q^e`QOS)nJcB#iYy%XN@l#ZqOw*iZ-I1D;6zgEtZYb2~ym<+df5b#>Yg4i)Zrd zSb9ZWX+E-N;*Ph+_?}E|PcDzd)L|`B7R8yDdf#U0HHa~xSt2jCcN_l(P(bp_97q4q zmEd%IZ?O#+rcGag-t^wYqB&j3wh7gMA%RV$6L;b}oPB8yo8f)7ocm}L?EwRi11$s% zDIqw@`;?$mmgRZX96juhQn*tMP4^WrcgbK3vyRd)dNkw6wMcLKZLvNTVZ?fH8;Fs< z$vmivSW0Nkf$&!Og?I3QP4aRTXZ$8RK>gUlK?14oL1yf0%(;PVVD=AH+>N!P`ua)f zZNpcAJmE|xuh{8dvNHdi#u&(@vvm+;=QDX#@D13Dt3iGt(7PtXS^GP-iMoNORP6QZ z*`7Ca@}h{Owla=Fg3Rl}G^&N_I n9Zzev|> C;V}Ok!{si)Yn1 zQ @{fXEp=nT;UjdIN)M@wXkM?sM1 zSrJ0fD0X%Z;i_Rf>ZvqbJb}Pz`3n}L{D9J)g5f|mMpV51^`YE#eymKg7$FkYU!5{E z>0QS4_&<}ekj544nz-Gra Cxk4Zma+GOVc4M}`-9_o|TA(h<2sJE&%2NaKrv1kscnbKK3H8Q7;v z{CEtbh_D$@nsh^YgCc3IT$LDM5pysZyExDawc4)FIE&><2~cI+1gaNZB5lUT4zk XDKXC9gM0( zDS{&gW2#G*^J3DkH|*FhPWI^9AcjRWguIk13RUvNXQc(%w0jLbrdr-@
0wG+2$W($v%)RDj+}5u}^8@z%tWjI dY^GYd&Nm%WJsULKAipNi?sMY z6Xrm0?$}u4#hu h>f8KdGI7IqyIV?{L zIjN)%F4tNI#I)=Wo@V;i9r3pRilUmh =ec zw9!tAXz!tKbc}8V!=QqIC#BenVe&3izNeMDUXDrAGkhRvl)FBitDZ3~p4r4%xPk_> z`b+T}O~elYZ_NRPjH9{+!e6da(7v18A%($~^|6M-*4m9;p36$2^0BG|mfE`HjMI3? zi&F`+pSxw!;-+Q#PM>=gvgEzmLH4>$%1x3Jmd>QPnlqm$-Y)2?SUAoK8n^U)*q zX!+F4Q8&&~P)q65w-*@wuL%z1Q%mZ^P(m5Jt)1^QWF IPHdC$`M-+puZlC*EVge-;K>8&ook)wYlFhX?7|N`Kqt z;EM}Gju_FoooP%ZQ9|>%xqT7!@WXYP$VTU3z1GIp@9KMUl567p)Rqm=g`_Uh)mGz{ z-exQ4zKw@*sOBtBZMH#CsH0r9SeDfuGa9-5hiNCB26fc$@gzCF*@!a9)o_V)a!B4_ zJk_J?&W@C?S0{gH o*afi5TOEOJDYUZ#QjKNSLq&V2(;heIK|7 zO#Tk5cLkLZ(MGCkr($C)0@i=amu+?sB!l%@t%wNd9;6)2-hVIGW$`vw`I?sHT%Hl! zU-G)k-oi{#E?1z~ZM` 8p3w^SVy0n%%21%C)@bsD|hPDGIlv z3%R~3!0jiB@r-o|$HYAasKVAGwP9nrfLJxuqR^~;@Jnwj0u{=K*vC5QP1~_k9-mqn zjPoj-5Q`f@_Cw0}p&LOWgQAgn+u@#!wvkv9l~+V$9MqXTaqCW&x?AR{XkJ}57rsX( zDO6#~Twm`6w=And8{dSyh!7>%8+ZL^Up|_yY_Bm4_aQl(d#n%i=3QsXo(C=FFwUIO z<9P%pzso+RNg-zZVE0Ffsn>+FcP|RGTiECxr&@gpXB7F4PtWITI6*xPSu J_f z4aOtoslQS_S=5vpu)vJb2 7Oad{X#mJoZ8yJi=@&w g!B#VnB!J^#f;laSdcRZI_O=oa375) z^(X>;`VLi@dKPS_I9XUISOwhCjqkefev5j#X+l19tu|&EIZSYI^>}Q3rRiv+(lUT( zRP15xS1LM;&hx(i!#jv@P+ND;`@NE0PI FHL|LUgH>3yU%a15+NyQzLZi17i<`UKH=M!aq5ka7g244Y0m57FN)Ddy3|?0 z9bjN+5KL09=3dE-#=)NG4ov(!TaO3zA-BeG_9Vj;Or=iC4zpSB?JLWaIa07tA}-rN z2@FJkjBqLd@8}N)+DN@~Ey*~2ui@}GkWXxW%CJO{b4jR{^KwAQU@abttp@X<^8j+E zB{JSR1~T!A${6-RZWBDK4^#{X{I{6bcdrZT *@m-vgf~h{^aT5EWER> %dYQFI(RSFv!o4Oh@L}kTAIs-4%m3C-+f`s z?HKZnNADh+I|w*X*6(5Xg}NEy_66_IZ8I;QK0_itpe;VTlVMI(+7g))`4R`2^HoPW zUCk_wmyo-#D~6F`03;=g @F7^1I# f~4?6O)mms2DZkwQ)|)5UY9j$eDOw^;H`BEnN|sd@Avk zi8SI8?A>!+C@b3}rk1gncM9bf9GED~;%k&sB{x%zkC{|u9S>GpUsI5Bl5rkS8%kRe zxmvax{UPh1TGAm7J&yvzTjR2d7S5&11w~@B>_)|Gi#cX-#D9c{Pp3-ERg5&oEV-&E zlYX1$-soZ)cP$X-k^MA}>MJ-B+ed246C9~Uf?p2N)@Vccq%?~y^@!o}UJnezzIGUn z0{t##dxze%FEXsb-HD&iev1qmln 6Y`roQa!LT8>o@H`8x3(^ac7 z6^J13jkDGR$n3wXY!VMp3-6U%N-^3!)RqEBrbxO`y@s@8(};H4BuUhB(cQW+a$uw% z6Ff||p&b!$$T4KuvfD8jLhHKnRmN|6dhu_?iaEbgn^rExQrT8Edm8( s{3a)91w! zm}TU!&S@Mgtm3$61}(LzHq@gE_Fsh|$au1vz((fO9Dj`z7E|z )t1Z8` za821 Me2zN(DjJ4Cc*1@x*%mgS(kx0cmtbW ze%HQjWE{tj!;9?89YyCnpK!b}%U{8MwKFUq7%5&Cpat)J%M{c)YwhvaqrXzJIfAXd z6twu}*&IF2rASp?6O#uqMBaRxX|ACtC_LWxM;FH*^<`LUP AwP{n6)K&CooE7n8Df{?LLHNPL9n3%foz)tzIDIfVR-&UrCz z+0F05U7S*WIAt*HuZ+B%h@Hji@t5wjdC&5AkWOrFlumXG3s=jL3T!jH)1?QBGC zI`UUKZ@t7B&50x+S9uyWp~Ri~c9~s8ZtzzTvCr9lGmZO20zW3YR2z_H5M6{sc6z3o zeqGva8RJ_D+XxQY0v;lG4%#y^`8qSQ8SHI2m%(4|^|d$-I5C)amty*6ij3FR iJN}0QQn}`_rR2su7s=6hyjtlRqr$5A0gCw*Q5=FeLC^z6 z4bQ^++Ds(i6;n5m^=+1W3+RLqIrOHT?V1Xlvv;@VMK6;aOy;9fSwWuvQI=vvgXr4^ z6cAgO=SNN~SuiI?{E%s72uYb4x-#Pyc7FbNR293UVITQ3cUw!p*myB#%Obbt{&(Z! zqRc_B+5x( R)%Z#@|0Kzj{S=4($d^-Jxe^9S^>l&83Bn@5 z6+FlaFk5tq&Y|aXV^=lD`~2 fpS zZK$~lT+dSo#kNr=)vt1S{OW z^3v{OsGHmBD(WY!XU^)_&RAOa?sU(4 z`)VJbO51c_uUo5r9Ag>l^|#U%a623V&Ai5DGOZd(2U2CgW3dj#?^D^jSNac%8$C(+ z+g`RhehnyC>>1n%eGM+_;9wIzLau&a@0z?8N 1@h zX@Kez$8<>aH*rt9@O6Bz(c{EI@)v45yy>NC2+WW(v61y}*K|FD! `ZH16WG*I^OELGsH+Ye>T6i&ifmbT$5^gfo366ZY8si! ztxS|!l8#UH{eb6ZO`ZDNHNakTmpfl_nh5LveU)&r>MPHVRnAB__T4+)96PnYn*B%- z3w+99t@j;I+BlSTLby#;DAp&tK$?%3-%1pX_+u1rP*yw2 qw?$@)1z%g6X7mHH zI3g|eV`=0_n4IPmr`;V8GTYW|w2@lcAZIfr>sA6*Ho|>Kv7>g{`b&*-DH}yuqw}?U z?_DOfDoB>?!>6s3mz06l;Zr}q_VR3by(ic~_p~B;j_J hsfseXR2DUn_5_?=mOv{HlMl!zmKX*iv!2BlO9I8bpAOd! z E0R1tskj!Kc()$t8;;h%I>H9i5&hxCi7zC1HrC7v@It3Thy zVI~TH#TwoQeQ-;rciPkIJdLZI(F2K9nh@RR+*+ZCr7e9RBX~ zHzs#rAKCAsYx(5ObtV^L$<&W|J9$1d?phJDmZ=GW-PQqIygyV%W7|-@2(9Iep3qYT z^fa~faG`N~rh|RD&hs}mDVpnqqkF||O8#`a$$F4eom3?Ut-wD>!trmJfg}Po-t{A3 zG&Q=fEb?=$dN~ew201TN%V3UknE3)LxJkrAbLjFcY1vgLi@`mn_WL2GYOK=mM+hV@ zj+$YF)mMkNpL;+(omN*c10(UpkB|#}qJBayH;Vs(RF!=(>i}Mb2`|sXkG5cyF4<*5 zJ*j0!Elq50ICfa@Bb~4FFw!_@di;)JUY;wnpIpJEcj_1~yWpqA`tQybIkN@py1Ds+ z7y*=ua%KcC*J8Z|Ta#ROAC(+N&apNQ91|cERud{qlpiNoo!maT8>J^`{{5f3)MY|W zA>2SKq$a;y2gdHep|6L~vL2vPGHRz2my >E~Y)3 z%z1JKNf(cbcs-ffp325RI2FI#wicXPWastXnW!ByP0X-xS^oHTuJo~kPp}?Zi{sRv zuC3P=t{=(3_9_FPQxucQ0`W0;($CeHiqn#34+6e2eJ#Ujv#4ZyVVP4=uW&7xDoZZr zDDWI}vGNXg4zN|<`(vobqD{@3kodJXP$&1R*hs_ouYFTL?b|0j5?igE3GCH4c#=eJ z=p^ZB5Ov7}IWjhf7bz *{Uf5u0Cl9co(k Zed8m*nmR40f)!I$w=YE!VkKE8N+YtnRMT=!KL0Sm;Uee<8%K9|#z3*|Wv*+Uq8b<9gLhB&r@nP5xYQ-E7}j;)x03T|@}bPkm-4 zUfa!ZIQX6X-W8x^7LJpHLw|8LgO-l7s(5&Jrr0qZUiD=4)`UDrjW*+Zmpqk-Gm}G_ zZNsA#=GPoi!?PKDHwww z5Yfq|C9KR0N@?Em@-i&NfawtMF9@zVdt_g5^10Jo HXIPuriKwAk6vVklXzKDWO&yyNK!Due z&fM}2*Gm^9#n3_xjDKQpPbl}36We2C#q%8;UraXZOTWv} S{{?df(Rh8itRqw~aH3W<3f;(^)ryY@qZjT2$t!L~$EHwttJ?iM^Csg4=O%rcb& z%F9OU*YPW97PlZuUw5}k8iL1)kCAB4(j1MeRulIhdwov*V~`l9f7$i;z!H9T^h0Vj zQ0o^a+zhkSIDfHt`s6{~5Aqq*3)MT$@qOafBIU^WmeWi%Oi7#dll8cGgX=Xq z{<08Kow3qnt2Ta&x!K+hw(+*V?gZvkt{VwBR4~x?QtxnZBN<~3NQ`C)(jG8l=^F)o zlBIMt5R*^j*ln}&Y;s{XUDqkI&_vtF3W;n-|I^NLAT6n+7sG@f->&yd(I5udAu5N^ zJ9ZT5%;boW%U3Yr^X&8_Ibb -sK($6jdk-U}HSgIb znX>ZbVDl4^Kf{xK)YkMDX-)~lhHy_a^U83=F9Srr8)j6bi)?EA^>mv$? T 4FSKr#@<>x?()PGLD!97iw2=d;FIx$3H~Z zEIEp=*e$)baq#~U`X%*c^fh;>khAM~UoE&)if6J>@-wdiqBpu{)l!nD^>zPd_qgY| zzO%B3L(k0^v*2OX=7+8L6+$NwL!YqTvD=5(f~~uOZE>gI_1`?6b94Wak&*AF={%*{ z{r`UQ=k+V 7#VGC_iPsw+lej z**{)$_L6Y6B;3Wn7xv0|&Uq$Vq<>|0#w0uVk)F1oem`=6`$YDD<@1t#6&@j29hOAY zg+q%d%@1JB;xy_PtM@yM8yzx^XqKbN2vhrYUgPtZDUxSIg!X_6?2Rs(LtLnqytA&L z1WgFDB1JI=w$rlaJEDrdD0_zBeeSZ5iwG{e9pkPbmeZmAcp*%?Z-t<&^3HP_BmO>g z+4i?hoDnCeLoa07 !8 VqkhsvS9Bb49eG3Tb?qFzh!ey(?&g#~mH z@)sn4Hjfl(q*NJcXAUPWUt3!^X*MQN7PK`kzQL}~Sx+5Gt|CHSyJ$Y!J{gZ^>eM8k z)8H0COp4hYIqb!V&5LBJUb8?F--;VrIH}5EtOw!-tI?_X&xkx~lNl=iqJjo45~AoB zyfUW*LMO4JmgBNfs?Kw^dTd_$*IvYxpMoJLYF)P@K~u4>69%S6iywJ=_G1x$#&M=b zI%A$bU-V_8m_D!ldZBem!kcPfcEZ+WIh7jRd4(S@5bXZ%_{o28>Ho%0{$GN_|1;(O zZ|E@BUrX-4Ecri%e Ur>eQn zztY41GWlnm_#YSk;Z*R~IGKsl-PPO@!u%h2F)!6$*89KW#s8T9>r!f$C-cgBBGQ z{%2Oy(#p)-!pzF*;7(zdS($xOMQz!0YF-f@we~f|`iXk@S|&?B>x<1C`ZlGT7;sB$ zW=o81`tv9Bz-EFclP|CRS|Op4sSBIDj(PI7;I699&LsCBDTunYpL}dsX=P=lv_>U@ zmi!m`4k2Fg_fi-WOv f@pK9Q5#(z}7|ICl`{9XNjUhx0Q zk8^YVpWM>_;a%`QFY&(_rV9x1{_~m|XMAxc 0zr;NQ;xpP$;6gcm&_@%
u(SgM8Du8Cf$ zVTZ+@QFr<`DqHQ2)R=7_Cs2~pXa9SxRip!4r?z3pl!<$`E?rAzj?qzKrfblW=QFK< zu7m6Hy&FjfeLIq%fuIkUT~D 2MysHXlX-z`D*5c`6EGddrkS=`D`Zc*6zl7Z!pBVUiqVNXyagA%=C!k*!%EaD{DK zkusbgnNvCYOJ2C{aTtI6CwtZw>)% =cHB~MM%0lFhDelP5R2R%Vbqq2(SAFHbd;9Jk;ICBSwgt zMfjI?F=uT=NEy;$!=xyCGi^PXpVh+a-elIe*Qf$`Z#2Zxi@7f~G^YXxe;0PxO~kH& zMzdM>rapYoVAR1e3T=f1H&(wi2#4(?VVHh|Ky`6^;sAW;6Qr_l{?NDe==BZwE#b&k z!sU4fuv-MlA_d!>c8E$|JVZmcNNe5*M;Tp84dsbPWu}Q3H 6 E}82kT;fbi}(ffXeU! )JO*BTU+=Tq@FEF% zRlW?kTKSsK?$Bn8qOT2pLPlX8NCrR3XFTvy7DjhU`QMeYLZv)t{Sclh8fE{$Z-qI( z`%9BAp!ng4$D7E#a=uh>X1IVvUWhcP(52I>8Q)i)Bavj2@>n=Wq{tEEB<12UNQ$xk z8oo|Um-aI K>AQaN %lJc0&mMUTU_RVyqx&G<9=i8~U;+AR b8Y*l`0t|7LKp`u-d}b^ zD6yOLLL4^E)p;%x4Sm16!#5|Jv6CFca=VE_B4-KX5 Pkx6c^t(ZR2jFB4l6QO?Crj&8>X zHUX>#;e>mp;YPu4G`a~aTSzq}SCjc#UqLz^R+qRz#21^f-wsa}CG(yP-6rv~U3NM> zr;k)g1uNzxU7mY79CVrux-EQPTPu|x{rm|yV88MtU7U{#l5RU!*4SrN6WgpANPpTa ze_hei)z-;iL_@!Hr~O_4?%c8CN0sl_Dc51fcO#xR&)6ZeCq_w-MUuBl1v@yvqedf9 zTX4}@n9;$hv)fb=qXJ_l5p1edq^J08DpeLUCTlbFP?k%3!k$3xOk8fQ%y>lO$~}JY zl#XaOi1KQ&U791UF+@-qDxwIoQ0wEKszDSA6u#tkqZa2b-xAa*(y#U;GKuy4h!3_} z<%l(id}*ZXVsY*#A5pqCkMh(pYp)MFXal-@UB6B|HEka;yyseF94nRo*zi_vKSqO% zwWVm8*cg{+R#GD1tSdwZbHuY=x*jR}Cg~zP#V*H%g5tB=2p(l@WS+bQ;qwBjs)=|S zrM*2xY;;LW(yv;=-M7AaD2P$7ktLU UK^d zI?rxvu~;2xGb>YFP7GwI(mat8!(JfmCY-NZf%wOp6vjWR>9wbTQmP+yNAN%H!aV0v z16cux4^)A_1%U$>Vq8P-kaRE`X#-quTx)7$r<}~s6 |5>(tgnJ<@m3!ITUKx`j>IpZK;E6t-pfbdbm%KT7G! zbeH5TM6qaPb>g42H$)!=rK@H0qWyIniGO4H=!6C}p nzO7qi0~(jnWP^nH#=K-42TZp$9}*fBgc0?@ 6$5@8VxF!b zMC&3!`cMP0a&gZ1ebR)qANK(`^_L?g`JOAmC}zKeh&%4OjF&6y2-#1jUM7$lT6*wg zvM4~~@G)4FAVQ=k>pHHV-EMM-SNhr)A0x4ZO3WI*>8(c#{V($^mMEL}@3m$p`pFxs z``ESLE-vcSN1|g{{N+EQ93+0bPMnFqi
qrSR_c7g z4Hfex`XU=P5`Arh_ZFU!|FVLmR_&*dI5G{rx+V4%SB18vhhFr}DlZzuD}G_$XQxKw zhpz%#t)WskmPXoN mKr zk@L)WhcQXl{7pxcy*%DqgDNp;lMEQCK(vzVKETo#_j4K-|1t(Utdg4oWoY`bCM83p z<^haCfr0U+CW$TNqY5K>V)R%8Qa)#V1A*dxDh16Vn?%D`2l?elFx3-I13R6-I|`lK zn}w 9sQH0@Lu8_>+2MdIvqyl;Y``zyFSr z*c3o%Bb{xI%mL$1H_*s~Su;O`jjSQm!oCv!ElSplL&JEpsjVjF>m6MQl%bcr+%LBqy;+ z5k?$=j*IXvI{G^DZlh=wSk zyhI!o5^wk-R}G+ Ym-OCXt`8M(Qz?fUSMpV31 1X1+ZOk+NWgP zkmb7~`!()j9ySzouui!0Ff2xdWl2mm+c5H@vwT5SrleTYOc8iYi5IA|XQl-bfxVB- zbPQMT1mZ`!?k4P00HWpu`zawfFr|nY{Pc8%*o&IH;_eXtD1S6 &6ApF ze~kP3!C=PUx*-F=C;Ht1#21a+ceQ#Gcy<#67+G3&7#Qp~r!uEc 4Kpw8aK{TW+Ug-QF4^kFSOGKyyk{_|&%peVtACca~AOcbkG0ehD z0&qo?GYw({xD&z5N(w^-kPL`(W 8?6H#kr9_u=+|VqXUT4r7DmK(V30VW8N^pb%i3$R{PV97txq%LT9m zCh%|#4FZ6h^Mmh+?@ 1m(fIBW%L4Y^6Dw*?3XkzdT_!JU)&U+z_ z SB6mDMz$|+K zT50*2#O#kP3}@;#>A_==qpDOq Z(17f!rE4gq4}J!ZD;3 zKZCvc;nB{P7^2K Ca%Va(oLB&tR``gokWpc&ZB&xB6zxRyL%!3TJqNS0s+? z04wtPCpp#RtBz9!V`AikdE;X4A^hqq3TteSjtsNe6%C ^vh-W$oSd+Kw$uW=c){R`>A~FtuHs8eDoR zKDAwWI?p#*Yzs@~yDsLtrp)M CQwz)9Su4Y#4Z zHp=&hBF{w-LYTOw1K*osy(71#HpNlmhz!|a-jI*qR%&x8b-c=PLRn=nSe4In13;Lk z=BiJ{rdE~$PM8dp9Xg||O;y)e^4wxtGczzW1VC$OQ&~&$cT0Kf<&Mlw*Ej|ql!5A; zka#;!!Ue(`s0M*XXGp8_RL@w0qS@7W!vV(CSc7c;agzQW;DoG=04`r9-Q#a%TO$s@ zeOdssLfY)CrgJg zSVM=AUNXlo4P7$DFATXc$7>LjvWZ#KXiSx|$xhEyL6Gds;SJ)7c_?R(E7{_CuprJ; zMwZf&T*o;rWI2{9dhj!9xrscikiX^67anVkZCjDb1AzEVdGJ+cRV_mm_#rG)85zvB zO2Vql<*8y2GDr?jMgd>bHLenA^b_uw_6sL`FuVr|%su80a8Cm9@eRxr^cry=4EIc4 z6bSsD9P)y6O$}v^d1ZwnUz`S_yduKHOT0s09Q96K)6ENClR>Yj*OZ`h(B{VAE8H~! zG#@(%aDN_Zg6xL@^M1T~ZvGkn+zc12Uwk=Gk$fMFeoeDWc>Uq^3N!%khgnn{(Perf zcpr>-pB+++_>}M>_PX?V^HP0%@-zT#z9|mrlZ?I$Lb|2{yIl$eNWfnUK`ndOU*35d zJ}1LEA1GIx?j+yvVR``fDBp;n%_j}E4Py%;@uBe{T!-9Bzdo 6#BB&Kt}S)*6aJl_`=+m%Nw`(Kx)_1)va!j!j^yY)|hK4iYO z76poDQ>=e;SDYUe_s25cEbk|B`1_T%`Qi7kcr4?mKk@0-k=F0$<-~ijjF;Wb=jV!y zqrGm$W{g8uT(cQZ{5XW#%inbl_gMbHd?^;aC?)T*L*`fy6>gVVeY^VQr1Q@4Y|YEo z0c%|(_~dgVts$g?)^KNgs %`h6f4 zE Av^Zp0tv zm&JBQK6+0YxYr-`mbE*FCW=$i2iw=iGr@=OI_dYPonM7tzj3!F?^@?o# ^+F|tvF9YpIYPb)yem}s!n!v4_YO3+h}FAHwlw9kCr3hEPHd+6e80cY !xqKEfJYTTC!ASQJbOW`#PI5R_P#FqFub=!1Ae(?A%Y8xU{E&k*}i`;fZOx)7F7 zmXN8?sSu@5rI5JLxDXsrBnT1o0QyiORzd{k0OK(s;2}-HqrpP}h@l9eAS%ifLMHSH zzyXpQyl^NP$cu_J1%Cp;3W*0E6(mmuNTE yI`;*b}V>tfI={52+Y0~8GBhYnLM5ex~!x)y;tfCd15_%QsE>`)VgM|NmD zh!aj6>zcIWI7AKMnFOW_8hGPJ03$A`4lP1>M1-Q26a$`tFvXI6(0e#>%xfZOIVc%U z9C(cl6@qe?AcrO)ki&}r`Tq4a1qXcwNg_U?La9ssg#1E$ &`gjnoN}It2lO@qB(U@e^@8tiz(1#U!6%Hr>7mhJ#2H^VtG)xEv?o$rm zk8|B}Cj -Qcc(;Y{Z!dK}($})h5T6R! zuQj-{ayt~=V%vY17Q?GH)G;LdmRFW5SilmP1~a8_2>|@AiA2Tnge6M%UQ+4tDSTvK zO;Wa}WIiUWut=92ABVl}krBh{nXj>$LcfnhUHWMQo(gJ3)F0=R&+)>?T|7^cE2$iO zVS051x@0Q9tB}$pYt{Jagb%;q;q5ub^cKfUX2(bpMqBL3jRvmb@x@y4yDC*`zn$VZ zm?}?=TU<=@YwBaenG$fdFw&QUh?^Sh?fbCC*B&bnU2z6=M-&T|?%qa`5M)jTI+trV zr?~5@xl0-A>9z0~>B6)xl@K{~ncZ1!Al?;uZKk?;eFDAT8Z>hIz4E_R6x{c3x;~z} z4HG7|E)xp=j$4Od2tRrAv8Yvn6aEx5^{tz2(3H!i*s+IAHfiLk_H0%`aCKK(6^Qi( zNZB3Aa7T#q#Mn1jKb1M+Nx5KmOGdac?1+}(UKBvP-q7r)Q<5(rKzZOCx|7qK!-fzZ zmg9>>e)HzW4 g#oh? zbR2o+6}f7uE-^uR5B8$dP>;0}6waWQVA?1hl3qQ>GF)y|#SNB7{-!6bzuoe-{vt=^ zJnj*}*E!r#@CER)2J9WD+Rqf>Z&H=4U#W+ 9>ktyL*@Pzvnk9wRGeVmnt-1AlQ-{Tyok37(QkWei6 z8%hF`i1NgO@VMeKq$SCtG6p3@95cF14vNWEVxRhl4TglNYX^+|ji&9k7J>-~S=~pT z%bHq0G>~g^$YNBJjJ(xM#C<-Gq2cspR)Z&o|7{;P3Afl4U;e5h^%jA7UqK0`k)|=G z0R{pKkho>|iFtLx+3;qPGV-Tbl)|YTNQuQHD6;Y0N>gGJ$fo%+%!9x7m9jhi_(T3N z2k@?Qhfm8Qd47h~bfqA_$W@o!j#6}C)%bfJX;EO%H}`4>e^OeXjf9S^8()E7Eie7$ z;(?2@xuM9m`kB1TUx{RDGtBc!chUC8s(t!PhR5%9A=+N)qIu!zl#?EAl&ho*D`a!h z9Um0q{%Y`5sRHFmhGw*jZuEYC7lkwhml2FD=lYTZ2|ayV5Iv>-mV->26Jh^qky%7w4ReA@Y^-Unp@4ti$;UZrJ*+_RpU$rjfJO5PT`ZN1ZyY^_Lf9+aKZ>?@ohG z({fW~Wz8?CTX1Bvn*qiGw33fWHIv&>RGrw*?SG{wr9r?OGr9MMSf7IWF?Lg{%vtfT zIJeSFdgx<&DB-hBFmS#m68DJh3-Pd2_e{{;<1F )QG0>cuXozeatXg6s)t~ zB(AHP0XLiwY~3tu{lJpzKzqIKKldbO-|*PM$4dCs?c%`ieUd!TRiDoS-4osJg*-0+ z&P?-u-if2;A+R6cfu^q(o-4M>f7Mhls@H1&hZa7}WoXs2!z;s)98-+fRRo#7p-kRA zrWL|b@0vhr`pk;vsKw2H`}oN*(wb2gok77e#rC}{8z>(kvF$3w@Em8f CyrY@2RldTB)rN0$Pzx|#(4Uu!AQghn$ciP55OO_S~9{$~KGMyj%t!viF z`f`yKJpK*V$%>g0@7b;NXPl*SIdpQxtgN1`F8Kzq5Afyw$oVp}r}eS@v#6TO{Wvdu zGofX}1o6t;N$yxS-rW-iRI>-MxK%%awR#GR<;)8CsyLL2v9;!CIe8xk7Oe%Sd227w zOP{CsJQ8r$nf5BCNL)qR8d*{l;)(o+(hw7!w9zQ?M=dqpKPlGgP90uQ_ZFiJqo0|G zJd`?Si-nLt^F0ErAjE}M0Ya1at~h_rmSHGiog%T$umxOovKWSPfVzZzMupWs)R3&+ zDj~0^B=083uO2mRMr500WuwdZlkyA6McLne1fBjtv`z@$#~52&Jt|!MJgaHbpXZX? zkeS%)Rz+g0Dh29GzmRCnOZ!=&ByvS ^#hFhmA6Iq6R1lko`Jl^-eRsEAFZ7= zJNMjNPn3w_x!Wj{Fy&)Ws3JV)UXP?kS&%I%?tT4-lxos5z>KlF??f1;Q_JbatN&A3 zs>(-TWTkbpJynB=XtOXxJ)9z1 i zI)Sksu@%cpGM{(cg_;fDT~()G%J=_bqkKmO!*HyK7b&dW_V8 gqbU@cM(=N$%M (4mqkBD_l*Or>-E8;S!vO?iEvh$d8NJ>rMpOI1jphArsY?-Qb08NQpWV0W;? zTp>EaJyT%i!-MGiWbm|6d;Vh=EEp`#sWl%V+8+h}^!U~&jEzehKWVBmmm* 5m~*>Cy1ER^BVlyz7T`@h2!HRbPlq#l3|5`|)2WZI zlyK(t!duC|fjjkybxGLfgz=?P+V#!WuMoLf!D_ 3=&5!E80PE{Du;C0T2T7E3q^o`s$1ZBLdYwd9-U?5< zsu8-44Pu(N@`cNhU>0&~$Jg^2De=kURnRoGJ{l*L$c !xbUZW|aEOzJle-H` zsa}eoAjk=;@ozJa>)LL;#5ja6ST3k;M0c2ORxC6568ns_Bz%Ujy!`4TD-`{9b!hS8 zY+9sT-|6GD*wCu$EX@nu+KZ#M=QE)H7{AH%p?^Y>#^RHb#iuxnJ3BOV<(O6F0{KgL zROL71QYjS?bZ=9d>kKt*6Q+ztlBq=)reb0qST)o#(jYnC8-Qxe$mz`Z^uU3XEoaea zP+(s )+ci55L;TxuX%>t~&CosX zHGuV3M~5u^%9||N?oaicO-}vY&(pyw7!!Zo+W3=lg7 8->Y5j~?VTy@m=L`6)nG+LAT1!d<_&TjMEh4o<%IQDhSa4pYv){x^suZ_Kj}>@mJ~xsh9-ghcaG5!e>oOpJf=%7Ue#IuL9ZBrJM~12alKANQc~* zfy%APpG23f>)GsPJNtnjjrmRfKg_NcV2kID+fRk~A1BgWT(;a!E{%R2od*i{Sp429 z-VB=ld%7K4&k5z7bHHg{H+plR)!EAaHxG`!U+Nz!5j+3b5uNBWMFmm$L50z3YyTlT zAJ&TRjVXC`R7wY2zOiuqvLPl?)#L7cR^x-p97!~qIbFVJk(hba;*KYakggT2QJ!yP zXlakOXlWY?kF?C(!)x1~Fvo0ztdFOA#cIEvel(GO%_@ms?G_X4JoIeZ;bQb^_xce0 zg7sO{+esNScz@T4^kgwo6M(HH|HD?#>-(PXaV9Z?#C)MRo&A)`LuLuHx>h_zHAN?b z?Hs++>_0S>rkp{a&7{oHE?6rS+ECUIs2`vcOE-k07(t)bnW3<*K@-~&5r8~HwhTj$ zp%Eg8fMm)-u4N%6B8sxw;*Elu+aCN1Cn#2KDMpH(XqWU5zre~G89(*ti0n
(JYytWI#n?HLdM<&QGc%S}}< zJ!0^ds`4ijI*u @rIW1i;F~M zWn%GlVVc)d6iB*!AG^my(j?dnydBY?9a!^+1l0jDQsC?cu;G8*E9u1QaisW$@y6bC z#mB`XcNV)5GvxC<@qdu9n>ai>8)1)XSFc*B5TXQErTvukrtaDTl&dUDs&c*cu9%Cv z{(&_k%{aPPW?({3sVifXQI0lQvy{#wN ^nI`Ec~P$9MR@9Z09K!o&Z~%3~(}d+#~(Evu_7Gl=;v* z+; 1!a58Y7V})fZ*3ifXd$%7f9J+gSvm&A?2?rS9vKmpF@aFn8Oc`+I7l9DhXm(} zD-?}sizM$caNVy0azy?a>*sgLqL1^6bnVn(C5A&}=$ikx0Jc!vQXjiHERm)QfWelG zAQ2U(A5%1Fe^j_j9st#LAV0TItmYi7p~ZY;oYUo0yc>ey@?Gn5Ts+hSL)|(_A#nCd zeWmmj#YVh!!BTxeQ>EoI(EqwW%^tx&d 4tW{ADrOeU(gEGb-ZgDHf`EAL7KJzeF9N?c}+M6FUvm{tk_0@L0q_(kio1t+HRhr zBTA)Ws)(R$T3(KufVVIH+vbB)vZgg45LVtw5nt7WKXMa)?zn&i3CCJQ6N)FBm`wlG zOXS!7&)}H^HzXEQ-aRZ=lZO^ECD`I`F;OQS0% 3B)*=XI)cB?(1ayJ@&d*1e_1zB<{aOylVJ*DLN~hXUDUAx`_FM1cX;&VV(_v zY;37M0XM}=gR?j>aHbyx52V3km3^oSo0c#d1kk}9qHERBO#p3!Wd|-q0}P-!v4CKY z?Sm9E$>6Y$HZ2l|iXj7K5PrR`t)rGZmkLQ71~rU#Ai2JyXSE*9Y-sLd`deF!SDk$M zM8TX;b_}}d`x)`c{U&pfG#K}?$Vo^eLvb?1P-;rdksK0eG7KhyN&&-TUZ(gL1;VN} zi^AwCz2_R^Oa tl1+v;YW2a8i!8;q45b6$i@;`=H`jqN&cIUvVP~S zNEZ1*O%s9xMd3|>8`L1_U<9hpiC+Xk(NX*f?a=7pnvhr*3dfqs31%Qw%!W;ASDwXl zbG85b6_0k$h&E@7`>?J?ois>=d6CI-K9f;^3U%bBTdmm=mCw#+T81&J6T52vSu$f| zpvLlKW ;S~tk>64WE! zSwR7vles_gJY9Kguu>3_69P(+_P=Nz33p4odYA~X(KGV1A=b3J1Ao`jakF@H!v)1e zFr)i?J1QT#`D-)yV?`jWB$sdpM#sPcck>wo_4}`E14f-d!$2pLDGE|Iz6y@BO6YlK zMH9&_xeb*QTl2;>1Z}hWjiI6Qi6ViOmyr#1^?Ztk5zzDsS#>~ZmEOwnD^sf}Ew`!t z%?~T1h M{D3h>l7A9>Q3E_(_!a>!ngVDPIh8PUe zof47QOy)8fwA#L>YM!#WmUoBYe=dXb(>}72oDxmlO{_jxl)_6{hBxfq;-9I%j2C?B z&jj|Ki!CJTUVd@b SHw?DVV@;Dj%yr3j3D_IiOA!i0%Jm!PiW!|MSK z8lU}q^}ehtM%B#YQl3;yPUoNfudcgHS5c!o|6>?mMVka0UU MVJV0G5rM7v?m3NAY{cVr`^!{DbKDnl+wVOyS_ i1F^tfSs`2 _AqwJ-ieVa$%J?(yqQZkkM64FF4Xx;gP_y(3@2ZS@WB+TlGWXF_$t6! z{bz{+YN(MQf{ic8Kh_-?`~cnE$WDBTFK>#7^G4TZ;rpir ac%06UWtu<;{W8WlFbLHH*qr>+ze8Gt24i)Ge@CFI9g29dD2>)2hljQ+Aq+ zt92G~c~e#j7@EdiL!}GtnaS@F!?f$)vqe)<8{HcgZI{LUY!#GYLw{wmkE>&E0DoR7 z2tNLG@Ja@m5^%-~J<~~C#z{7b$ZNvBmD|f{yL#Tg6{cmX1v8aU7 8a7eVHOm5sI7i^aOMZx#y$F7ut;E8vgo#86;j3OQ&nnVl zqD&%bAtt>&0yD(tvu?d@=8Yb*l7FV{v6qvySybcP#mKvVjQU*qWGKa%5~8ftT2#zv z(`80~YEZ&UUIXa!KbfSl@_hn K1fwfsNx#cf(= z{~}*_%l=JEF7LTixgxK0 $Z+EP`wv zZoD;*U`rL?WO%P21z^wuU_a{5T&vj_19TVI?t}w49S;tr>5Q4(6g(-2or1%8VQM?$ z(qrt75-&mk3qz77CuYDm`@^6{rf|{;t56XoET&J#xMUWxiJpesS2oGta4@~ekTfr^ zjrc7Ge;Q_cR)drK;>_*rFbh@5;)D4)W`n7v07IGA`>};qiELhGB*B+ihVR+V* |RD`r$_tG=ABu^rK=hx1ndFKH-LG z+|IGhVpk^C`dRqdG&=T6m%M%o)B~OJRf>UFeStH*RE%*-+MUhJGp*(?{jK5!ENM@N z5UHE$v+KjS@8zq7cg -t&(AkoMN`-SK({wi;sWWoAl=wu}J^I@8fpy9ZC z`DB>M7mDgSJ}zLvxf|NDzM;3LvW+GdM{QPW)FjMMLqJ%z%6dYi)AqzR3{nIdxM^is z^7oU!#sbsC!CVxobHCW%0s^mHOQr!xC1aK5g(NG5i>R}ZyI rq7Q^-6`CEx{stNvt<3HuD-$*uHygDYTQ+R>vCAb_d%_@JM6z-b}P *E68yotxt3Yg;Y@%JEAGdj_jBr)7vi0?so-WqL^!5%Mu**m%FWN5LsX=P z|BZ~AR?dv{w6hoSW3j)h314S59)=EdWQM`RnDyP~dyV!$;gI)H`!V4w1Kkf`r2+f8 zLnz4djAe}td8s*N>cRMI@?^oj`5Do;;#Bn~943u7?GnQ}-{fnYqR5A29izbc ZBiYqkRM65!$z@M}=25K&$Wi9S zdii^Lc%XlE^cq_Pt?7fz3~=6ggRy_j@GV%c+<{w@a#MpzHpf4PmR9l^K!rgp<_!Lt zlw7;Im8iy*u@J_(?5zeJ2cSetoYzMG-eZ+JK<(izj?cA!X5q*ul2Uvg*_0(wPN;YJ z#Wn`uCXcZuiP8=0io!VU9dA0%BWe3T?_tj3vpd(Hv?S{cf#CdDcn?%-u&$7WqSySK zl;i&@@Pi$uSd9rdzTvT>OKk I?{9+0tuMW3?S(;EEcG_6_dXyTj zN;Fuun(Ff1H)NUtYC3lme6~BApQQL?2HYOhXDlFgd8|B7!=u$aVk|+nVLW9vj3_H6 zlr@*vyw`M{*6t@lAFai9279392|1JtEJr9*?V>ZR7Gb1y> m@B69oOOECo~Dl4q!<#|(BDm(+$P6YGpDQllLibM$`v;& z&BK_r7FBmt&W3&3cIUntf-dW2+q2cI)^vEG-RiHr^|ZYvnNNCwIMQjgluW{yP)cmH zW;I&OVb_!Z&bCR!UeKB@@w9uGrGw2h3k)#5^4X#ju#-3y#gYFVXprAX?1<~_DC_Nr z&k->-+h#ZmZ_*+{gn4dWDH)0gof2u!w7Dp*2187o&>*oWZeH;x{r0xUTm}M0?^H3_ z2Xs-6i9TP^;pvf%Jxb^nHdYY`ami3ywFE6iZq7JwI7v(sg`eZq;_rVGsJPK9V9?j5 z!^t% WWcE_UMIF^IdE5uTV#uu>4X zgso@KZRN3TV$iJom^ZM9q>O$|OLMfnB8P_p(-$4ZOBf}xnwoi1xR8()`nCqh7b%hk zG7KD$lU4$!n}he#n3lA?=te3M?oxHkUeXrLo5s~yOYHRzE1qqAgcKG>D;P1F`he)q z(m98?!062e0G}`sv7xaa*lEsOa|N>P@b?kV2m(t@8OE5)k18V&_Cdfuh392#ghF5N zL)XPq2u4A{>msv5?nw8aM4;{Poy4jfIg$MCF&tq}S+({ulG0%%AEbbar%1B3y BEMVu0LcHx4Gwsgs4X)y$R8YFp=*_rA@e_0*QeA;)wLD+DTrcvpeoLo? zmr=qRnw *YGPn%VRttE20 zW?%%dcjQyYr9`gTCv0&+#>-inO8X_VYA$2-fNXln^cuh@1ri#yeP6nM<+tDWHG5{Q zk(@?4_Z=c6I;U(QP>hEspMcgsoTDH>!%BZgZQy;7m-DGaVBiQ8%la)^fXLgRh<2&r zrG){CJwS%$UtqoaE95EHd?yw(rB;R~I=ZuqDRwBXn{m1EZw?0M%M{^N5uVNFh_k6D z4ejTPl1oWh?-6CZ8l7yHu{-cgOh13OLQ~+wQ93qOio3sHOdbBBgD1(oQ?U9|qi&R^ zoevGwlv(H6sPN1EF*{j8O``e}H(`B@s~)4!3;qtvZ!{UfajK2|;p6uJ{} zImxUNPc8lvn}DI=#>^C<*VNyieC+pM@xZ^~=R>j%0SFVJ^Di+nL CJYMUR{pL_ z0MbKUb~a=PiC!|P1Z fYy&yOaZ$F}`P70#NHE&=O*gIpqVaFF(QLh7z_is+A> z>@dax^cdr1l*{N2xkG$0m0nmqm=2sN+~f-#4qn}wDSXM^(j=rVUfA2QLevryue7XD z#HV(zlH%WB^i9GgpZD7KQ3A#ErmsWn4e23AJYcxz;4RW4UusnfcbVc6??qV4Az-;W z>309FQr2`eO?=_XM~f{hAyg1>Xa?i(qJeD(V+gsi?)FVlrjz#2Vl2$ z?i%)_`PMB7ILiQ@PyuEAbrbW!QDI-Ah}Kyfq$EWKxA7(snZZ;3(&L*ow?GtG?KP)g zJlOp*v}G*2b?aKHr*_h2m;@>fqSGBmCIpYaNHH*^{U^<4Bz5xhez&;CtP+deOfnbj zqK;M=vcG2+zUIHZrK0NS2d4<$Q{J<|C@Kl-0C7FjJF572g19Ao7<#(#Jn0}QXpM*@ zp|{9Q&qbiidh?RV_>5m*w{iPqON{Ug+ri$tyZp}n@soYEX@WwEh$uI!4fPD$$vBuZ zM6&g$4Rww0sjxN?pE|pX$xv1epLrj{lrJG}6nku$DwQ|Qo{4igwyQ&DRfo6*dcqEj z@n?zyVZa5%tpQ-f^18@FlYx?_j*el}Sq2RjFQMp@Mh1b6z4ah+5M3CV$T?S%5E92+ zn#XcF{Z$FF4MMR1GTak=SF50=32%zCpt3418^Z5;N=$9P69k39<~aPIOdFeNebP7D z!8n<*yBN|>>wcOqtrz_2j+LVP*s7qfqUM;uWY%MHF6L3vlVIG1R%5D9n3-TC=^4Rf zb~t}Lc>|4*o~CRP?_~ed((TkV`L}EEiW4A2dw`5# 6>5PL&rS~dJ=ufNg@y8|>o zq4%Q2i5F(CpTNm_+$U{UFcd}@3;~3yWWZvlYreUvBs6&5|IM5-JYRekJ0*ZU5Bf`Q zL@qfFOhvYT%}5hnZ^q02d#{L)gmUkcExNXdO%~CbW7 |7UuDiV{AmKA;EYE(QYeaxENP#$ iC@}{X z(XR4lKo$*ZDgk0zmbGaT5$Y0)7+Wm4Rd~Fphgiu5+o2vMXV r$>f(+O~qGQFj*4sBO+J%2v;@Lx;NGYIS41X4F zN%?h)YS}=G7#q`>X2O^lX &3uJoh%BmF|puYn~CndS}z;*No5PL22 zCQ6pw2)3n9T=yD`(pVo$Mg$GNKEzrw1E~q|aur4qP41HZ!zK M4f`tBQO>TzFCLcU5i8F#7(J5$z?sm zby9k^sny9B)HD%ed42U0P19H{lp}dv(>ltkyYA9ua$&+y8qaQk{`~mBxjX6$KD}UX zHu#XMwG{8r&=-W8zu)WY4KKxm7}T*SGCPEFfbRu~8%~fUHgSRk;X}z*u}`*UA<2{K zT|T%(o>)lc#Wc*@fL$c_kTZ(5?MwOy 5yFbRyYwi?X* zp5kYd&$NV^#gEHdm5U6_LipK^U8YvC8*fbWHh6cH2>r%r2z%NrO&{e4-NiirJ5n)~ ziiA(BI{QcSrANNuVL>k~{5 zk zi^|F`sAwA2@{-2XY3_g}A%e(v?~;&F*mDq{1lt2L!E82@?}V!Yy5K>V9x;DH48(En zQb-^&XULuMO>&2mB{l&X`1Mej?kT)Ub;!CK5P}Am@(4Dx0dGL=65tC*rQ`AbVjFs2 zKfm|N=V(A|ZmElmo=rAe=zacG8F!-d2L5fC3(*dozUZ3F9yN+AEj38Nb7Cafk7YG( zyz6i$F7~vUbD&m>a_n26R*Yi)3s$M|x pa0j0Wz-o|9mEk^4|BXml~F%u*@Xe$jUgnFI{gN`BXEm&TJnp>*lDY?p%Kt33&J zq~F0;$7c9NlHra2C2uM*4D|$wDqV$7dsYnJ%*bqa5de#21wl=hIy*9c?c?zeQ;z0| zdH;+HmC>^&6GR404E&kQP#z)3P2v0FY}NuoKRN~Xo6GHwX+k+)Ku zXbTr5Ljn(3B&kPyqV^QGqjdqFH%Y$c>TtYSNwikkyr9djW@fiCep?{HRDp*C){ldG z^8iW6DX~e+6C+K`q`lT4EIOv8w_lf-kTQ=Gp0$P1PDq?W9Kq2TH%g`z@IRYCCuvw4 z{L!Q<(g6qY%)7k&6Zdj-=5fn&xZ+zynfIdWx^MVk*b#xM^^37z(T>LG4I?W`$r=$| zUBi0^g_t&G;wZlMM!nx3&Bu=UY0mc 81t>>r*mhQe^ zbKIe 4%+EzGn&Ax>1tIjmi3LGjK$CfX7WTeM-z-%gr#3dYE@gu zB={sND^vT_k5}H@D`bjJ5mh3AmrokI)$4W-YU_-Q5H5U*+lt(oDnBpZbwX)byIL}M zt3R4ZnPA1A(3_wyYi;6ST}fu~dFjV!6Ym@AtN9@AK3P(^<(er6fnHR`=Sa&2d-5Xi z%6u4gA>cviDR5eRik$mmoC7}hG>fb@krz(;Fe`^dU+;b9_gDB3-yeNOgH8}NVX z&X?4yG?gk+E9KS+VQ0h0=zd@9Sy^}(zN1t7xjf0b+z&yv`-LNto ow&TT$GrK4^%etUxm!w?ZV$nOf`5 zO)sBbu5$+P4^QaIl{_akCJkB;l4y7{NV%xI><3kIT6k44(V~-<<^@L#9=A-|9#U19 ztCn`=>0~2K zr@oxY`(dB$Sr*NiF?T?ThYX`Qvi1q}e TJ zo4Y5Jmo2oO*N_`bEanL6k65D2uQX1S^w>>soWI?lap_>FsLSJ*LvI=6>G<_4-`!?W zN4h#oDvk;OX5JI8G#@F41a*GfR9|#8lH#bf_V9Ro?-#u-`zn+mebRL7ls5xMc!5NL z_Xry-`-jbeY%b>;$~bBNyjw* 1fEnt=J)VDIu(=!%0AJrET*L4#|IB-p6Js7ZIbg2)M zN4cvgnP1&+W)kE?E3j$N M7kr)m*(%`fH0ojCjAkK U*u6$0`|yD^;&`lFn_;AGC@$64LD)ZR5@>{l{EEv{5Z)>9zk3 zIb5T)lxd=peC>4>VueaoJxkUL{l;^p<>siUl->QZ<=&*yrD8!*Rw%DwJ|(Y4Ay$MS zPoxJ9HwI{k58zKlK I@gMgg{2|LH*ebF8XdqT&A>HcY TOd8UG^)1^|g-PO7I<>Dj3m&T8I@pI>76Ai_~qmiJq z)pbyEa_zAvBQt~PJ+Y#WV@~m)sx;@Wq2| l+vybk3ErxAl zW;13n=FkGmcXT%m*vzf`Yl`%5{1)O*#L!XBN)C<8#i*;fekDReVge($lf2|myICYd z07;+xSQ{r55p;wY={TO!(B