From de4a5c9e014406ee6e29f781390e87f0f8f913dc Mon Sep 17 00:00:00 2001 From: nkraetzschmar <9020053+nkraetzschmar@users.noreply.github.com> Date: Tue, 5 Dec 2023 15:25:22 +0100 Subject: [PATCH] restructure --- build.containerfile | 30 ------------- build => container/bin/build | 0 build_archdep => container/bin/build_archdep | 0 build_indep => container/bin/build_indep | 0 build_source => container/bin/build_source | 0 container/build.containerfile | 32 ++++++++++++++ container/crossbuild.containerfile | 43 +++++++++++++++++++ mini_sudo.c => container/mini_sudo.c | 0 pkgs => container/pkgs | 0 setup_native => container/setup_native | 0 crossbuild.containerfile | 42 ------------------ debian-src.sources | 4 -- local-pkgs | 3 -- local-pkgs.list | 1 - sudo | Bin 85920 -> 0 bytes 15 files changed, 75 insertions(+), 80 deletions(-) delete mode 100755 build.containerfile rename build => container/bin/build (100%) rename build_archdep => container/bin/build_archdep (100%) rename build_indep => container/bin/build_indep (100%) rename build_source => container/bin/build_source (100%) create mode 100755 container/build.containerfile create mode 100644 container/crossbuild.containerfile rename mini_sudo.c => container/mini_sudo.c (100%) rename pkgs => container/pkgs (100%) rename setup_native => container/setup_native (100%) delete mode 100644 crossbuild.containerfile delete mode 100644 debian-src.sources delete mode 100644 local-pkgs delete mode 100644 local-pkgs.list delete mode 100755 sudo diff --git a/build.containerfile b/build.containerfile deleted file mode 100755 index a6a4b45..0000000 --- a/build.containerfile +++ /dev/null @@ -1,30 +0,0 @@ -ARG image=debian:testing -ARG arch=amd64 - -FROM $arch/$image AS mini_sudo -WORKDIR /tmp -RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y gcc libc-dev -COPY mini_sudo.c ./ -RUN gcc -Wall -Werror -static -o sudo mini_sudo.c -RUN install -m 6755 sudo /usr/local/bin/sudo - -FROM $arch/$image -WORKDIR /tmp -COPY debian-src.sources /etc/apt/sources.list.d/ -COPY local-pkgs.list /etc/apt/sources.list.d/ -COPY local-pkgs /etc/apt/preferences.d/ -RUN mkdir /pkgs && touch /pkgs/Packages -COPY pkgs ./ -RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y build-essential ca-certificates debhelper devscripts git sudo yq $(awk '{ print $1 }' pkgs) -RUN apt-mark hold $(awk '{ print $1 }' pkgs) -RUN gcc --print-search-dir && echo 'int main() { return 0; }' > main.c && gcc -o main main.c && ./main -COPY build_source /usr/local/bin/ -COPY build_indep /usr/local/bin/ -COPY build_archdep /usr/local/bin/ -COPY build /usr/local/bin/ -RUN find /tmp -mindepth 1 -delete -COPY --from=mini_sudo /usr/local/bin/sudo /usr/local/bin/sudo -RUN groupadd dev && useradd -m -g dev dev -USER dev -RUN mkdir /home/dev/work -WORKDIR /home/dev/work diff --git a/build b/container/bin/build similarity index 100% rename from build rename to container/bin/build diff --git a/build_archdep b/container/bin/build_archdep similarity index 100% rename from build_archdep rename to container/bin/build_archdep diff --git a/build_indep b/container/bin/build_indep similarity index 100% rename from build_indep rename to container/bin/build_indep diff --git a/build_source b/container/bin/build_source similarity index 100% rename from build_source rename to container/bin/build_source diff --git a/container/build.containerfile b/container/build.containerfile new file mode 100755 index 0000000..5589788 --- /dev/null +++ b/container/build.containerfile @@ -0,0 +1,32 @@ +ARG image=debian:testing +ARG arch=amd64 + +FROM $arch/$image AS mini_sudo +WORKDIR /tmp +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y gcc libc-dev +COPY mini_sudo.c ./ +RUN gcc -Wall -Werror -static -o sudo mini_sudo.c \ + && install -m 6755 sudo /usr/local/bin/sudo + +FROM $arch/$image +WORKDIR /tmp +COPY bin /usr/local/bin +RUN mkdir /pkgs \ + && touch /pkgs/Packages \ + && echo 'deb [trusted=yes] file:/pkgs /' >> /etc/apt/sources.list \ + && echo -e 'Package: *\nPin: origin ""\nPin-Priority: 900' > /etc/apt/preferences.d/local-pkgs +COPY pkgs ./ +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y build-essential ca-certificates debhelper devscripts git sudo yq $(awk '{ print $1 }' pkgs) \ + && apt-mark hold $(awk '{ print $1 }' pkgs) +RUN gcc --print-search-dir \ + && echo 'int main() { return 0; }' > main.c \ + && gcc -o main main.c \ + && ./main +RUN find /tmp -mindepth 1 -delete +COPY --from=mini_sudo /usr/local/bin/sudo /usr/local/bin/sudo +RUN groupadd dev && useradd -m -g dev dev +USER dev +RUN mkdir /home/dev/work +WORKDIR /home/dev/work diff --git a/container/crossbuild.containerfile b/container/crossbuild.containerfile new file mode 100644 index 0000000..5af43de --- /dev/null +++ b/container/crossbuild.containerfile @@ -0,0 +1,43 @@ +ARG image=debian:testing +ARG native_arch=amd64 +ARG target_arch=arm64v8 + +FROM $native_arch/$image AS mini_sudo +WORKDIR /tmp +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y gcc libc-dev +COPY mini_sudo.c ./ +RUN gcc -Wall -Werror -static -o sudo mini_sudo.c \ + && install -m 6755 sudo /usr/local/bin/sudo + +FROM $native_arch/$image AS native +ARG gnu_arch=aarch64 +WORKDIR /tmp +COPY pkg setup_native ./ +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y bbe patchelf $(sed 's/\$arch/'"$gnu_arch"'/' pkgs | awk '{ print $NF }') \ + && ./setup_native export $(sed 's/\$arch/'"$gnu_arch"'/' pkgs | awk '{ print $NF }') + +FROM $target_arch/$image +WORKDIR /tmp +COPY bin /usr/local/bin +RUN mkdir /pkgs \ + && touch /pkgs/Packages \ + && echo 'deb [trusted=yes] file:/pkgs /' >> /etc/apt/sources.list \ + && echo -e 'Package: *\nPin: origin ""\nPin-Priority: 900' > /etc/apt/preferences.d/local-pkgs +COPY pkgs setup_native ./ +RUN apt-get update \ + && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y build-essential ca-certificates debhelper devscripts git yq $(awk '{ print $1 }' pkgs) \ + && apt-mark hold $(awk '{ print $1 }' pkgs) +COPY --from=native /native /native +RUN [ "/native/bash", "-c", "PATH=/native:$PATH ./setup_native import $(awk '{ print $1 }' pkgs)" ] +RUN gcc --print-search-dir \ + && echo 'int main() { return 0; }' > main.c \ + && gcc -o main main.c \ + && ./main +RUN find /tmp -mindepth 1 -delete +COPY --from=mini_sudo /usr/local/bin/sudo /usr/local/bin/sudo +RUN groupadd dev && useradd -m -g dev dev +USER dev +RUN mkdir /home/dev/work +WORKDIR /home/dev/work diff --git a/mini_sudo.c b/container/mini_sudo.c similarity index 100% rename from mini_sudo.c rename to container/mini_sudo.c diff --git a/pkgs b/container/pkgs similarity index 100% rename from pkgs rename to container/pkgs diff --git a/setup_native b/container/setup_native similarity index 100% rename from setup_native rename to container/setup_native diff --git a/crossbuild.containerfile b/crossbuild.containerfile deleted file mode 100644 index bee134e..0000000 --- a/crossbuild.containerfile +++ /dev/null @@ -1,42 +0,0 @@ -ARG image=debian:testing -ARG native_arch=amd64 -ARG target_arch=arm64v8 - -FROM $native_arch/$image AS mini_sudo -WORKDIR /tmp -RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y gcc libc-dev -COPY mini_sudo.c ./ -RUN gcc -Wall -Werror -static -o sudo mini_sudo.c -RUN install -m 6755 sudo /usr/local/bin/sudo - -FROM $native_arch/$image AS native -ARG gnu_arch=aarch64 -WORKDIR /tmp -COPY pkgs ./ -RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y bbe patchelf $(sed 's/\$arch/'"$gnu_arch"'/' pkgs | awk '{ print $NF }') -COPY setup_native ./ -RUN ./setup_native export $(sed 's/\$arch/'"$gnu_arch"'/' pkgs | awk '{ print $NF }') - -FROM $target_arch/$image -WORKDIR /tmp -COPY debian-src.sources /etc/apt/sources.list.d/ -COPY local-pkgs.list /etc/apt/sources.list.d/ -COPY local-pkgs /etc/apt/preferences.d/ -RUN mkdir /pkgs && touch /pkgs/Packages -COPY pkgs ./ -RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y build-essential ca-certificates debhelper devscripts git yq $(awk '{ print $1 }' pkgs) -RUN apt-mark hold $(awk '{ print $1 }' pkgs) -COPY --from=native /native /native -COPY setup_native ./ -RUN [ "/native/bash", "-c", "PATH=/native:$PATH ./setup_native import $(awk '{ print $1 }' pkgs)" ] -RUN gcc --print-search-dir && echo 'int main() { return 0; }' > main.c && gcc -o main main.c && ./main -COPY build_source /usr/local/bin/ -COPY build_indep /usr/local/bin/ -COPY build_archdep /usr/local/bin/ -COPY build /usr/local/bin/ -RUN find /tmp -mindepth 1 -delete -COPY --from=mini_sudo /usr/local/bin/sudo /usr/local/bin/sudo -RUN groupadd dev && useradd -m -g dev dev -USER dev -RUN mkdir /home/dev/work -WORKDIR /home/dev/work diff --git a/debian-src.sources b/debian-src.sources deleted file mode 100644 index 0fe7d16..0000000 --- a/debian-src.sources +++ /dev/null @@ -1,4 +0,0 @@ -Types: deb-src -URIs: http://deb.debian.org/debian -Suites: bullseye bookworm trixie sid -Components: main diff --git a/local-pkgs b/local-pkgs deleted file mode 100644 index d711250..0000000 --- a/local-pkgs +++ /dev/null @@ -1,3 +0,0 @@ -Package: * -Pin: origin "" -Pin-Priority: 900 diff --git a/local-pkgs.list b/local-pkgs.list deleted file mode 100644 index 09f19db..0000000 --- a/local-pkgs.list +++ /dev/null @@ -1 +0,0 @@ -deb [trusted=yes] file:/pkgs / diff --git a/sudo b/sudo deleted file mode 100755 index 4cc412db5cbef53ca2f270fec58a404553ea2191..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85920 zcmb5X3t&{`wJ*N*?8!SoNO&gb>`71{q9_JPik$2uC?HlPq~};Y_n(;zQ7{NXz^b5` zK&;5n$^>rF(9;Ag>P*#IO@y?z44@W`^^vIUvAt!I@HC=;C>cnc|L?bFb{HP#-g9Ut z`|-Wjd#!JM-?y!~`L2vU6${wzzxyvOTCo)EthoQL z#tTI2nO76r{#Cnu{i=BTSM7N*pq78uzv@rM^EW9H`bL%9e^+F4Iet?!WOGo>$h~v0 zY`#L=?N{O#L_74e(Jtb(eYv_G_rtnW@gEd9(T!gazq+HdLUE|;dVf|(g0n(Jb$ah4 zMTXfl^;7;pu8k5*@Pb7f?YI_-^Z>@PPPDcEZC1!B(tJWy{9>_vM))qSkFndb`)WFh zQfoc-zM@TgP`?Xpi$9tbsxaDG2HJAGSo|_DrlV_Cfv(6D!YYATAvf9>V~8GN{lA67 zTQqT(I=T`HzDdzT{j2sGbTZ-pM>ssPf7P1?&4M;*?F8MrI>g)AE#BZa;++WEbv=jY z*YUhhyc(W^g?ek}biK7}n%>%dquzROlHPjg8ol+f8kc)WwdNjF)!c5?lG~*!xt-vF z4jM}!*&An(%>r0zQf0GEWEtsXlr^Pzx1(Rexe@TP&XUX2c{W<-Nz@4f7tzFP0iNbP z#_|VMi{FEK7xW)U@ve`yeK^{G|EjkPI*=zOEqJ~7xqsCQKFiha_JeB`FXil;`HBy6 zj>O4y(Q+^QHChJ<_U(d{RW+3#NDjmfmSi zqIx7%eD}o9uWKA~a?khSvKHW_VVtI9Dfni7k?-3K z%JqL5{3NZx`vQ4P`=lm%?Oc1C0q?f6;j-YEG(1vNPe9t|)DE%Bhy> zEsoL$&mj%J0P3oM-{jZDyy`j?ZlTWEz=P*dH&&ho^p$dhaZcmc@qKtp^;fe(n-9+l z)mVo0YzKcGKh=9h3P0mB`Y0n_7wanf?O*jrLs!4O$Kw0f_wAl|+Pmr?RsBh@hJ;k6$i7!+&(|4}=X2{}x zL%*sM#LGVa2|4dlM?*eFLB@vp&w>_T;9VzRqhH;Aql7w>Wb^hLb;x*DPZ0Dl1El-x|3S{HX=rvK6LC1ibJDuZyh_QJ87hE;k z0?_FjHOuc9q37$p;XKx9L0PT!Jl=cpoQnQq<(0Z$3|n0cIy{2%{#Ad7#1BzBPq`QY z-TnkRM)?TkNN61T0F7G_aH}$f`biyn z3cR9^>V|G+gWh~M8}Uddo^|l&7;Ni*u9w!oEtk+4ktrAOA%`~ZZG#6v)W2NWu~ZpG zI4K`X2F4l|9V^3stufXxzYe+ifOZ^w6VRs(_kRWMO@GJ@M{z>g0shS)pK-d&ZY*Rd1)w zJ>!cZ?)0N2;_b?D&o~a+(av^{bI*{V>OFXkd&Z$j?iq(~bk8_4%{`;jGuYRu4)S-Y ziT>_QLwtv}rumLMEukDm4|T&g(GPt&PD0<={gZRbO|vczdo%p5U z64j0FNf+vd6LzY9Rl7m|RnSdShU{ZyUg1nxmS~Z(657aMs@FB!nUDHuIqPyf4zYb! zGD>ePf_$k;@3fqoV0TVDR*$+NJKibuFNi_-TcF9%nWLn&5wX$x@N-4*_4YuH=R45d z?Bls4^fB>*KIlu0KFm5fDVNkKxTMY{{kSiw^IY=9{kR`7`!W4m$(RUkuEYy*(?stN z4v~=c3fRCQh*`uv!}Mn+oUTh@IFF0jZ$j@hJ7{J{e4c~2hjh~j z?IwPEzMb#lcD?7@y>(H$#WAqFjxtjgBmVCtALlRjF=FTw{acx+a~mzzWou#cY0oU0 zyL3(an#}JY|FmBY$YHQC;^T@}>zim_K7%eaey=V&4u7%@_V^pb0d~nskHZ|P+G3q| z8gWGp%HM@e?nVsZM4YI=x6!7veLL(3+nIIQmi5?X9q7DPfu97N0+_lQsRuf2u+oEg zx_uk^G;K%!s!t4^W52bJM_~H{`aTJ~pF{sH^m`olzkppL{;7Xj+a7jJY&(R$`&Wr! z%XdWmJnhQiJ8toj2K3vs=ig$ULVtf+jW_&#_bO>UxE4Ngi?lY8E@uWCzCV0KTKh4E zHbwHPEk#BwFdepD^g-U>9TGZyN4zhX6`1i4!eNzV4@{9V=C_njATu2d{SBFo(^AZk!5oiNLg<}V`ij&WQ=pe zWpmSfnNqIGvfy*7cgSOF+e5BNo`UDx4QJq!Ne2_2SF5)&A@)b&Ppod8+9rXDw(1v_-}+e7)?53X9k<4bckZ{3cNp-F zlN;{8MasbA*1N~a(DCqH9J2!NUa;@a>{R3YN31gMsR{ct5gV0is248@$uf3-ridj) zn<=~Yu1?A-M4KGMtDN&FGxc4Cu-$R;M8g{3a!?)VUxRvQFn?;?sw`_td$ys|B5fim zp7NyHo{_I^Y54qHcnW2U_$8JgZ=ep(9ft9OmeFmEjmk1>ivFnd6>sW-42V@ewu@!1 zq>9HDu=o5hQOfKa^#Pohgd6L%)!J6+b8eE=wR6=}Ny%>0JR0=BSO$9(s|>Yivdr-l z%)5av=^%-cV#j-V*fzg#tSqYqE|{z4!e6zHOWc=vxK7RbsY|BJP7`m~lGr0FL7ys_ zMxG^r#^^{e!HvGS2g>(!;pS~@Eo+0M7gT6`fYPzJBbYzHqUaf^378m?dRojY!wtW4BEx+3(p~ig^dR|&2W!083DK*dm0WO_Cu}v1K&9q5I zRog=7$tv33tdy=T(7)7-^cst$N>-$$pWfMsIXexZ#04zvY6Z0n4+B@F{Q>=$&S334-1+tNT=7TkXG z*{2}0KY;Dga|U~Z;CW8#+IEg%-LG>90u*F7sa4|QKH4;v?`###cv1wo!{8<4}ktJg8szECS!WEJi;}) zM_`|Am@g$kE*O(rfCKd*8+<9m`~Bbv^yTAwRB0<$l^*(;Rht?={{s4%C0U-Is#$H% zA@8=$@JU(zLW%F;oZJ4P=vV}dB8U0 z1No<*O&;te=#opCHeGqwRQdtK*53v{1zn=gqQ9Dqc^CcEm+!%LLH_OF3G3RM26;0j zYx(Ir5+m&bgS^ziyfk-1FefnM--p3hK(}do*)Q8kaFEw7gS|!_=vVa+8A{kFbKe^B zR(+}o^0w_FdHb|Kf}{J|OL1g<0ez5jLO)XF*zV5k6#0nr*6uU6UodY~N~Mf`zkikP zGvkKXxhvuU4`an{_*dfkDC|0YhUshfycI6%gstjAnKo9uKL-94DX@uYwGE^d@}I4{ z@0Vr!RVg!Q=}zZ9v=&vculSHKp9FwgIN9eKN(WN5@Tt;wu~O>)B~B|zpv@O7~<3X&X~gSzBVrWlhD zzj>o&b8(v^zk<2p5t6?L&j$V|`wBMRq#8wx$74K?gx)Q(;(*S4r!YZEVT zKbs~-V!I!9hRYDw8uk}+Q$z35qHP_)Nz;f!C-_Xe@;&tR`|pwKh?A+LlM#E~6^T8a z{o#>E)y%n!WirtZ?QVB#81_vNbBLGmNDy`M)VQ|osKZ!<{(tlL#hW@o!_9+-rIf?> zGZ!a_2R6q?;sKjjs-A+})_$gB{R8a{{shttJ92k*M8Z1E^k>8~6^Vh&;ti5jfq2o* zc@1JJ>Uay}f-zMw{5^dK3tyL201H)99J60z}v{ZC=U4@p%Uz~@HbzQQsrWz*hGnZv<9`XME4O?#)y?h)8| z3;f?X@L1EP6a-z_9{Q%*ws4tCf$Tv3=x;=Z=Qbf9M4yw4v6rGBzUT8|+#7xevDYE^ zofVK1j={F{S;=Tif4=^`aGnb>eGqX~Z2g7N`s|PO*k%s;3_#}#Qn20wADWE$RX)c3 z6u*D=Ax{K5=B&{-v7fupK0rU!4tYiXi0_<$1p(G(5Bgz$^waGBMm!g)aXr@n=lo4i zG^E1DoP|9*=DNmn4mSEIY|I$Y?ssbF;B!9^e)8Bu-mA?LReqMonqn~G-Wm6M- z+{mTcB&%l;;uQLJ+UJ`Lzn*3IbqjdzgiWYXEj{*)jh}77*xEEpQaAwqdj?o|UvWklnyu+f>rRy?4?y4LV9% zh&C9$(cL~6^e}AI-XEWxkRfGp!2N2_f%x~juJZJ`uJ&XB_e62m6Mr+_*{7Vx|Iq&h zf78C(WYh(CPdD%$HGsDQyln>F>l%pn9>BY8(Dhtq!9I#3|?+=lOTYEooQr-K1%xGjTo&IXs5==VRm$jzXr6A@2DN z`iYer$}011l)3w0BgnUHr^01NP;XYEOf%;eHc6<`<>s^d0gpMqkkv{C=NLALuiF31 zaM{u6^IogPRR>?b!27U8dJ>1OZ#WQ@)lN0jkjs}b-sR%iJ z-Jfje{xY;Z=(@q9eVJD<24yYDGW2!C^evXra}i6A#G0BhpJM*UyeHm1;I;c|Sq3{< zx~;u7(-;@_Z6(H~{QL~{TdtO&taI%v=Y32L>NB?d32>_dd>N{m(p~s$>3osa63pXj zENayR#FgYD=UC;@xp@WX!+H5`)YIWVU^9p6xVMQ~1)R!Eze0av`jQEoz>laszSy7C z1AfK?BZ1?rK>04t8IOowzaDT?e*%XmO}ifV%(F0lh>ejB!rz!N(lX?o>3isRSoaO! z)QLFcQS{F_+Vi-U0EQseqmd^t)(e)RP7&m!1N|$Y?<&BM5Fg1M5%2z0ulkTXdUZTv zP3EJ`+|hBwQp_81Zf@p|@`pZAIc3;EKtoNGp18412_$UppXC|DE8tA+1F zK1tCFTHp(0n&h2Dp4zqI*y%;u{UBK zsbL<9H7n#u(lxgr#B-O9#m}}{mL&o9B*5*w66?rXAhQ7WgmqZ95PhiQ0+~7CglUB@ z0*6#7b7H;ZFksd&j*a8M*E-O)4!*zc*=@@wDeiO?WrKn10kKvcMgQ-t9+HK*-n_SE za7v-XRo#YnS0lGj!}hp`{m&)*?1ydHZV_ab<@>WE<;YW|_ktF;WcN<9?UH4C;6Du7 z0x5|_^#z}McbofQ&`W@iA{fgdc3i8o*aw+QvKjJ+wLR!J^fCzfHS(%87v)vwagI4W_i}Tj z{#73tc~;_W;`-E(D1QCnDTIx@8F40j0iH#pFT^t*coN2Uz70<;P%|bUR^#WArf%fA zyU{)iaP9-GooB;&g^NK$j8Sft8?;eUc5v-1ALlf+4`=U^G>b>9x-XcJ?0e&jaPxvw z<@s+SMz2kkboaxV>4mA#6{*WCRI5+fR}D#bgB}HG&t}^GAU~oNwQ11f zV;DD4ABFX#)lnSC9fC85F5evZ%5Lyc-y)vc)8rDkDY&6vozF?H3L zx*Sg*I-a!0dT(86EbPu;ga@&(pALn$&=&kB?4T1mO}TcS2$xZZJ4d?f55jI~vo+5_ z#5c61o#pQO>cQe&yHMNZ=qk_G?$kV;@b6bIbnIF~zCt%Nv}K(j+MYwdg(3Mp+ zgR>lJT*`FGnp-Hy4M4Y7b<|~=a+?TR)u?LKyU-1mQRd9DIk1&EfG-=c9E85+Xfkvy z*4%0k_YA_k&(zsk=xhe+&^}_G{F-SS4{wszX{v0dZDd?aJGny<&*4qr^CCySW0d4I zS|j@COp55^n9GcHZPJBfO-7xECS&gxU<$6ac#l91x*<~>?>KT0hkL_YjzF%uF&@V{ zju?D8+K@*x!58wV8@%ZRpQ_WvI~M$LfryD$4wb0pX+MX`(g>y^O{!{KM z;Rh+Z%h0d=F|M^F8ZnP4lm9DPPMN$7b;v8)G}7|}^cRF(dKK3Z{|L7PVHbnfAP0Q6rqQrVwBN*$Yov`skVnpxvi+DtH6~y!1Gc;|1@RE-a}4HV zY0uyXL%&9>cN1jqG;Ahm$9~8!!bN{@{O>C4&9K}bfOlPgR|{&Qa0U?vRRGVdRLC#% zTmdc4bz6`Zb+`B7IUP1Ah`lDreRz*RKMy0%dmU&MOz)l61>F$%up^*B5%Nrjk^6P!M@5Wq_dvu<{eXWYz672jQ_*TqGUPJz^XZAnCW%NVz6G8Z$Ao``hz?}1b#&QC= zabO-qSP(a~V*=Nr1C~ZLvu7{jb`w@-0^kOGjOA!Q5&&B#;HIszBlhhCehOeDpMI$- z9=6|)HNF6SRsW=EoKM8IFGqaAwyb{$JU9+ol8)jY?A@)%$wBh72JW39{k!*B7z@^S zV+_V#-SY)8@Q4YoqP(UAYZZu53e+nmugY;}4o1$}Is~yI%3@`iyrO+M0R6cfEl3CQ zLJ$wp$I;iBel7@lvz)%Q3wELVB0o)(QeER@b&z=Rt4{3?b&KP zUjiRsqdbMd_rZh_@KKKHFfQY}^+p>@8)-Fx_69I@fxea~{fu|B27CJ<$EaWWIO>~p zC2p+$HGcps%@uysJF??K3>F*o|F7;EcI@q#6=M5uR?FZ^#< z-|EAjW$X=cU|$vI6K?56ZYjfG3%i6(Jh=|YsnghNm6cuy8CeW{62ycKi?li>>mhfX zG(VKChaO6h<`Li{$K&{fEwW!N!~au^L0|C;ZLdQI5-#`mA$J$W`(ES@<0%EfZ>Mc9aPH}YhFsa%(n`#`s=$LPKdc{M)l5AeN| zSLow9NtcY8dNt-SPrA!{vHl)ra&Dk6*YXALRv!3$M%fV~xOU&+*2OE%L3O__#4{xhN-T8##XBSjFd`_%8!+aJ=ho zD)wDJv&2{KR!;g*Z%yiIUv1iBzU`?u`L?CaFyLmp!8ciaX*1PJ+E2{WeS_h{RqP+a z8dV$D!LJ@u^iSht*HzVO~LijUP<))i_&yShmdvWZ)0Hz3CiI0}5+-@a5 zfX|CjK3EXzDmNwGz8!R@->QwF_ZrX}?^3Az?b;#91^JWRR@_CoEI>!-P; z@umvQ^Tq0(;g(*)3k@Ff#ZlYjK2r^VCH)8(P*l_Wg1=a@+%V~e2XFU9!kP9Tqhe0lzb4dQBiX2HG3pBXHpWGM-pJ8lzTv<;l`t@mL%oc} zf%qX_@?8Ahqz8Pa-0WL zz74yRfxX7GhmQ2k4a_5$d-`JF&*fScY-uTG>ZRj>gIUHaV*;~WM>%l0pnO0cqGL-M z<`J;}j(B}hMRpNXR6gN;ZO~)NigfJxje)_Dj@$!qfo!+`6X!kF4W~VqPsXQVZ!^}E zc>hflPZK8Yr^kM|jfVjjajt_;JEAJNR}p@^uLX@eMdsIX15Y_(skvVZA{0LOw#j2dzQpWmT{d z@WEw8fF}qalb8xP+?ifyF4khX{~hnRU!!c`T*OI)TL22~|;#)9SLauCS zt@s!0&$u0Xa%0W_u|GTNDSBeTQP2f#j6B$d@cqHpHOgII44ET+jJ@$}SCVL)g<(!K zvTt7eH~xE(Z>nJ5c(#1}S-gCFX0WtDcfm%QeF2d?dZUV*a;*rU$< z>E^!Z2t6a`!7Rh{P+}_hfO9lGfcG$XGr|8$>_JcT-*>#ImFsBlyg3Wugu9*RyPo>_ zOUqN!n%b>tdMJr9nTR+Kb9Cn2oY=E+2s&Vgjum4anmJnyKF~G_xkC7Y9PIDpdzPz; z+GdBY-3l9U-*Kh23u9lEB+bvGjvlmm$*)=+XMQB!!<_z$7*A~y-}9poQzuF&K21V9 z0QK_<`y)MxGILJEA zV)?trxZ7_=e`_!v+Ij5gi}}c+XB1zd9(QsMWNUvGK7Lru82WvqZV6^GudKTf{CXSQ2pl8Cy4GlXXNAG+WZYE9k!5?scD&)r` zycT^l{Zs4_C=lo?WgI!BUeh+QP19eVY7gYUc*=>o+G^RV!O#A`+EJcj;f%=FAAQ@f zf8Ml@v_(8Ob2nsmxD4xo{9;a`7w9;D0lYUx&Vk`P0AP1Qrr}$f*$-n;u9yBAv0D>t znFD3Y!j<`jr!hx@d^zEFkPB(y_(r}qgYja-hVYCC)`UG5zh}QX=pY*{AJaeZ*_LWq zHXi-ufX1%CD6buS%f`LqZ;pqHgJZlpf5S@qwogG|QS9h^1TLLTCL(OlqH4|rOceHa1(a? z`l9a*T<~ndLwLVMS-3<#4yx`MU8?R=-_+}s-UmBC~|2q6+I&4RZ6LSjnraNDE$ZvlYp;v_8 z-1G81_74XjCpDKn6F4sndgYMGuxQ-3?iQ7 z8Cv-3_I_2osqj0du7fwFCZ1+})_oB+gLTPs%uTnL^;w7KXYG)qqx8A@bo!xoHR^lW z*9GN{OUo%2Y^$RkVTx_b{>lHV+&|i-Y(OsKVFmNQxT*kRJ?r%ruL`++qEFTdVnBCa z`MM_L`F2lNKiwgg$!3{`++%E+1!Y0y#MH>XcdLIk{HucT=@*Ef?HT!9Eo^-Btf%pg zX9L#sDeIhwrD`!wA#%`+uQ=8*lxb1A$z|xL0#3vdr4?xB1grtXE5&kR8fk-dN@ILG z#?Ou!pZrCw<5t@jRRV(NB z8`%f_I?e(4?*c6J^Vloz7wDaFb`a-2yRO9fN#MeBbcl!BM!+U5fc-s)+z!t*dUX{$#5mu1f&cjtl~g#5HQ;}NgGHbEys z!AIS#JXh9*HTc@jo7S{x&pYvn1|!M!sJfqOc?z&CSxBJ#&H0~Ccw{gZjWO82)+Mg z#E*=@NHfNdf^qK^^c5)ZJ^^|h8Y0FSa>rN+9fZB)KE1=3uQ?uew|13?_eB-wWY?@W zcmyBU(gok$saoM5RR1r*vpv{LV&F04LOk#uXObf4xdC^&W23b4Tm<7M!p5Iv9nNY4 zHk==B)v=DqeRA45*coNiwCoKx`_Qhmuupv1V-E-O zUn%J}nNkIxSypQ)M!rSq3BpDynETX%r^68^D1ejWxzLA`{XuVB$_eC!tdZPGjDG~} za@qeO_|}7n>q!&ZL+bX$x}_Mp&2z31-MUzLny%(b)3q&dG$ z09v1kD^sR6qK-LNCXCd3=2SRmr(e$o zKOBhvIRAGezIK7f#faZ)P)<8e{NMuz>cB6TT?HGBZ!5fZ7<2i7HNj9C>V?1KEy3IV_rjFREK>jj{|%`i?hqoI_a!~=YQb&7mS@C@01%;S4?_c3~&Fc=Y6nsCqVx@D6_@z z2L^mORs%M|MLni(RWQC?h8c6}v#JGap_%>?@V5KI$XQiKwtI#}wwHE!lvX&Ejo2g0 zbHN)SGcWf7*B^l{4h!;Z77Kpr%RbZQcc`tbJNl=x!wuxA?g`PO#Fn>e5u@N|}LcEP!;!yUD^|~^SV{<3A z<^%t8pas`jSa%-kVs18+YiDb4zuS^gH5Yy50M1x=yTQjbfSL4UThcVrZj@h-w)3Ff zx9A(We8cZ?4;}64Vw5+c-&&OOT>gL1jsl)x_-)>s;U!$gGw7Cqvt=BYQMLbm zFmDvdvl}+0u+O&4hc(8We0^RpytWj!sVW$5DAnBhqsRDO*XPOiyWuCLDhW33cEG^6 zWlb{kaFIEpInM}wy)_+tOtE21?msMo|Ad_5{KpfVetGm$SSNt6QQPzs`PyI~jE7yG1c=d6yO&puoWGL5!6%1TgH zgtpMNkz-e<&Ns)YTbMO4h6D9xqFxE=6=95zN#m$JWA4JPWqY3ualX9Ew-0*4xR5k6 zze({8{5)f*;h?({H0;DTD5zt|7c~DA&j(1jNLrd@$ zVVr$Gh;#6dV7~j7hPlA{+3S-;lt%enhv8cr5bG2nBIxHejb*3h>TZU9zc2 z+tW~S@UeQtqn=LK9OT!GeR?Y9MbC+vtM*wKD^9WZIXY0@%stnnAIo!M%8fo}&MpYx zEY>0P-?VXds{{A^qkMw*rA-?XTS-675}d}l8~d{3y;7Ih z%4gCUYaAnklVCe6n1|em>w0N5VvK!?m*0UI4;u1ZH|ui0$qK|-vHHR9Nszx*&>)t- zjeWAL5^WBF56rh&-7?SpOtGO0-yjBIZV`Btu`Old&^SHBxz!HDj+|Q+f%mkb%zZA! zxM#B98&t&``7Y5&W3MV>#qWSq7Wnnq-fZv}`w_zNx*BsA?cMQ8Q65k^U zZ!uz|EInlMIf(JeXYi|sv@8N_u+K*9ZRTH{z#TSsU>_pmZX-Vo*shDxg+819(e#Zf zW7%l#dnWonh+I4I>ui*QeTb8sh!qP(HR70Hqh3&f*p}x~oUjot#G3RGsOzPCIpD*Q z13X!aGS)R=??zrGRz~*#_SpPNHe!_u#KRi&mFokq1Ahl%QWs*YdgcbYE0B__QU?zMPz((CAe9kpGrxq*kX5HK2WBI-tV^tvkjCq*9 zGeMbLoT?WTkC6=czbV(EPAzgEdfbIMnF{Hh>OvcQXQ!Y9d)wl%C+ZN|vOkH(ep87{ zfzL7KmTd2c=5)&8JKXS#)LoYq`!e7go`AjBfjvab3pK%>aGx~#D?NnoMXn4rk_I?=g{}zsjRaGd2rI7xuET^t(VIcIS_B}kc1TG2x4KC@NFnit<&0WaZn0xk_XLPyjt20;(VQI#3@|JQTdi}FTT*H{SI zD~69Q*3^${AuA;Ty}*SzOb%ir&Q&4rrA2{={|jKhPAq&Zi+wHz9SJjFS=Nd8pXC+k z2Yz;bja6E)c4FiYC`Z)!yP!k#>wD2J>ZWI-uIaalC*>qDk!S5+OMqI-2^D(|Nx-V13_&gh6jvodN zP1rl+1P}S%z*E6_7}_JuX~<85&hkhHa!f`pj`=~#8OzKZ0_`4Q<&S#LIo!gbkr-0} zoObvECCbNGTCzU#Z?KQX*@J<(1871!%6Wqh{bo!H+VOj2o2lnWqHor*=c_i=UCMa{ zzfpv}7sDL!TsxI1)CY{Y%niI87TQmo3xS@%ux-Q|s`pHB0%KT1&e-2H^ylU}I^bD@ zd`mItz2^If{y6a5gg#f|8U5uM&(WMtZwYdO#@rcaMKO2&6#Xnn=DC^?=3E2x&Y-Lq z`*`e-6~@gU;`zsY;k=KHc!curPUpO!0J0Iv(cus94G4aV3il{0gqjTxsAJ>JG@2+4i;= znR+e?cLi(}VULyROZoeI-`i3CnrBP$U`ryo4bBa%x%A~t6On<~bhJNu|c>Ep=>Hi(`NEwP3-|omYc!4-gFs26i`z>-nh@tSE%aPb$ zXyn8YKV|rzGGnP(k@@fr)H7*xar{J?L!0ya!VEe^zVFqIy?>Nd{w|gu#MeINP0VsL z7K!A+lw9Hh8gKaoy6Ln;&cicDY<`0@5;I0(iOcoh7t=S(WBX^E$oNvgGlhH$PWRf~ z)4j7Gcbo&p!Jh2H`yG<$rOrA630_N|b^lwm6S%kbmG5tqxE?*~qr2dHBKgD!9Zn!# zC9KRNHd)>27sG181N#_>AA1M#puk)4Z%2PRVk|fOxa}^vp$Rz)&R4j0Fn(~v{!*q% z`zDLKei-U~0$Rt8!@2H(tC#NtJ{sRq^{>Tu zLMsrzQTAv9O#aaWt8~Xgh1-(~?!_9#Q^+)z1mfj0pY5G3gyl1hFZHdNuKGu&F zo?EL=LjSwr|DC|U1a@SfsGd6JCk1#0tbj)b_E{+3H@3TR&fbMNXJ`23Q$hS_*SH50{-vFJN4RfyG=9u8 zWZ{|!m}=5N1MsS5gq&G=I1%nbGR}l21-)gNgRnWiV|k7y#d;;SyF9Dq~DKBr<`^9W*8 z$~j>{&dFQg!n{{9dJ>U8N4!3=D3xQ3^5ZHDeq%&gp4bqvpH~uo!y-Oq`da z9qGV%BEQ30jVs6CZ!B!Aid?T9KgKzjYgKhZKA^{W%<;naduws6L2TuK-eO;$k;^sP zAB8M)4*+8y&WpPd2OY%v)gd+hlC?^+oY8{kWRoKZf_ulO*Z{7ozfR)YDili(K6r(D+vhWro_V8g zzg|DnCe7}&z~^$k%u~@<1^a@%sM7)s6<6&=TdTjy9%#V&b@(^cLtd_DthW z^4*c7*GslE2jcFpx5=F+wJXUZ$4NKNTk7f3Oxy(V!ds)BdBYAFGCc>-^*g&q1LNm}+wqCa~Q@VR-lNaLiKKTDX;IpS#QhsCbIj^q4 zdbZJkD`?1)^tdM>wpR4|HNCghi*>F)rO)c0iT%*TlQ0slHCII7YMO8!E^TNGT*skb zs0*fg%cs&!I1>YLni}GwiF7_&E z=KQP&`cD455`WiJLCniOet|k4#NB_&iSsG7#@r6y{>GjcQ$GJ4<$*NpYZ?WgAC)ly zf1)yWLkeIGBL7|oeWVU9p8P+OHIF8VzZsCTyq`8agYg`L^m@W+fnM0KuQ>>QR}Pim z3Gl8156dApJ+M_4!ke}xvl4BnLxkzzmyJ8!IG;p4dQurWe+}df`-@)Zo}KQfE>Vvv zh6X;@Kf-s_0P|mPzOtD54n41c&0yZ@Hk>6@pxYXBn{|GM?@!tLWZvAdd+>b`Wmyom zR!MW0!WYafhHU^$ClLoXR4KHpDgJoCNsn4KyjSp+`do--EZ>Nj`N&W>8nS~UB3sgbYUEvX>4I%sTcJ%1btz@V%tpU z2KB*$=P%U+xJZ190Qch{@8P_fQ`>Ov`bpsGyh2(6kohBa*d^G4g-Rmy&XDg0>#@c+ z>d+5))MfaZ6v(61kVl?#W1rYJI?|LeH}uPtG0)#QPmjnLzOOp6BC1Dv$}>AlAm3~8 zt@em~Te!|^=mh&CeQWWJ&ozLp;#jzud0q>6M*jf2y^MarqFDU1)7CWvVE^bVFu#J0 z7yl#Zhx8y#|AKqcnfLGEp0;<-=!osrZ0BvSj9oSFT78_P!zRj0a5QVkp-fTM(;mw+VgrhnlrTJ(B zdsI)^{SvY}6>ac+iDvdepTsc;+gHKzsS0F?cI+Coq1&agR@N$Q0gyuJftQ*ZtP{eZmW{vOXSi?ncDLpETK zZo#`t^e}3l3sFXynGtE%Y{*cwEI-k>`T{7XMJxB`tzom(qgvhjciAI$r?CLP_q?;5W)~b;HIV!8d#MqwP`b zg@~1l1z&G@V=rXn>aVx#tURIDldd~X#~b`u0h&@iD08GceHr=m63(!ZX0f*B&v-|< zro0C6O@C8f*p@QU3b@R7{3ghM7w4sDhyTt&%Ot=}xqE>$0G~DZK=Rp*If@aZfbW;% zGrngx;B)A2w!!w$*N`_Kpe&+)1Nb$3jdxF5rG{qe8EEwTNuE&K7KAI7GH zk8$U{cz!Ex;~Q+NV-5WaeCr|ZlwME0-f`OMC+}|Q+_G~Ybez27_lU@&IKWC6UN{jR z7@zd}H;lapa^M7xFYFE*G%dwDbNpV6H`BWD4ay3~3}XFw_UQ}9q+DEWjnL$4oGUl+ zGj)>VQZIOAAKPH#Z^ar7pYQ$qmN#PI|2yivb9T!c_hCLA+t0Nz?Tfw$ml2-vuxsoi z{);Vdd<_^r?7y%L?ST#L-uo)te7JAR&e(C-t|dwn(t+Ro+TRy$e*WC0^=R9fw*r6K zGe8f-s0Kei!#(vj8S|nP%!{&d&B0YLKdS7n=~#ey(Y>JuJC0F@Fb}H3&-q8aWAU4M zhXZq>BN+F9B=j^HGMmtYd1%=I_<>sF<_aaXM^}o^+Ho%!Z?{;h1ozLY(qfln=4Tm$ z7<;3if?vbFndU;+hTtFc*VYWx&n`r)#(X~UG}binT>#@gy8b>MeI!DbyHKCLlXG@_ ztEp!jVx6ayBtO^E`0U0r+cA#fk7K>thdDgpDZ*S+qGhCm`Qv^t3uvK&794wQbl#W% zx=B7SQ7;o=J*W8pW!F#8RuE# zO3z?iIWE8dy90f_ihiy|f5tv;eA@x`4)H*86>~N?kCEGswsuMPy!`E3o0zA38GSM@ zlZ}{W2>PlSFDDm+_WLF6*2A!CHHmmeTNn3)aSb2*fgi%W*6ROC9pXQbBque{_rM@r z$Ko1?b0wJDD1eD_l7wGmZWo{X+?)FAnsR<_=eSCyn0wkFcLViLgWlKmJ32h8_4)~q z>GgG3Q-2QE9eDSb$5OU3KlI>ZNn1DNC2d`g_srS+0%h+%rf$6fzx2oTdf)X)TOV9= zr>EmF>(<>$TF)e`uYdY@%GL?B^E{tCu5Nw6GQ?B$Sn}2q)PKEpQ$r)>-5bi1xBBl) z-g*PtfACn`)*IF&d49Ee#MTY9b3M1#mUw=R`?r-L{I+iWEAF4;8?mW9Z>vK*rEAhW ze{%n-;e*;ao<>V@kIS9xxgKLbEkitM*h6@*wywb?gMU*6SdUG^cls?Pec^>mDb}P#IQvDnHi#j^PPqr6{;-T&w zhuts4{7b<1ZtMN^__o938qRUS&lwDnp=DYGG$xaT)yld&#UBgtRL*WohC-(fW^*ObSj z&;iQhww`d=V!%-g7@RoEbR0R9ZJ765bCZ0$bdU`7<2=l*O3K`q?H@L*ANyXz50ydw zI_<*-(4+0+e(J|i4|Rb$LHJ%qymkxvn;@zF3Gi{ZrAhO8^jADXKAw{*Lz~ba_8H9G zV1KtkLtK)|dfK}Ud(jtVzgUvnOg$YD?FTlh1%AcYF$wQoQe)7LFx_^Lc0UcSgJ-7_{ey751HWNx4|+Eu);NZFZ}7>+%(cj&af~G> z{|>gD$w|!7$|Ca(Wo{wP-P%Q&w+8deY}m^=X-_rOUbV-Nbh<00G$9Imp9;C%L8^tU(OK{qQ)C zG%}J0Qs#~YEhlj94x7Nd7U|4f-4l3UB&wfhah>@7%vIKB-k@F+S3B@DZSz~`%e1{b zQ)xp#eCC)%_&)azoM}Fm(fD~M$`XU&<_VZDZp{csBW za2Mv7-SC~;@Oufl+9UYA0zW((zx&}&k0EY6a{3nRo7U?$d^;0)<3#^H_{^W-cL;iQ zK#A*VGUn}4D$3xwtXGI!BKLLLkhA$2zT3Mb8@Wr^8D(T7rxwIJ8`=eP&(EFBd~WIu z=W|Irkhgrt?vb1DyYZfR)+2(mCx|2Y4fi9+SI$a*=8YrB=O!Tc6^!O{ zt%#Xx5iiFf&vOJh8z*u(%ze6y{7qa>DspVJUxJ)Z9qQc&8|Kp9g8hxilnZso;(0CP zX&lNb@LW7vT5=UhryNm^X-jBFn8PU=$mb?slFvncBQG|;gE242?-=yLob2a05qi}^ z?@?!&c4LHI4)_Yl?*;kq4fsBwndkj)(945-?{5rx3P592b z1K)P+H1eV)ezh;bKMr{ZXQE!um~I3#<27Dzw1Ufn^+9%|)oiRRR zuY>51ba^6mpOFVf{$^Mp{B-&gkO}zRl(#YGz&y6plpQy0Xj8i6%|;%z3v{o*_xgg! zc?YK(u_0v6($kbLWwh~^&|~U(dMq$_xyRro?QN%#_qO_jc+Wi{8}JR;ZIIP2buiX1 z6#tWo?em1M8g~-kx1mFn#8N8M+Y%vK{BwN7Ph5*H9?~ z|-rtciZh3=KLb@;ia+?_$oYwakdUy_+q9sNAVoUy&j3? zUQ_>P_=5j~elvhCY*r2MbdQuNH$x6~Bd@myF-;IO&%RDt)_^}v_|94JSe}6x1i2B= zD52qn1n3!fO8>_k75|$G-MCT)a30^7*FR3X1^XLBTxH6PK0YEd0mN32>4?l=&Q1N{ zx>pf$8J$>*If8Nc-vwZQp14TfnspYT4()~p+rs&P$@?GvGhD{pX%*)GMUWjc?@8N8 z{iL2gkG48+v;oIX^U%y; zl5YHN5P1mQY7WNaq3;2FZs3iaU<>t`@a)7p(iCfw7tr+D|ARg4=m-0~n_ciLh)oR~ ziE9Gd)X-mJou+0W-<&j%Z!SXq6*RAB9*D6rb7)D>arToO(+~R}2YO+Ru8lf}Z?%kE z5amG-@eb^^---NGL>{dE^(em}KLmdO{q8#<$vLIsfh3(;HtkK?Z4RUWm$Xse%zj01m-@6nTrPAO}2w;~)pjb|wuBdvK_Hs-a8B0W;?Z+j2^xxm`DW4SiAo zatXU?=qYUzWzY@Y{}}aY8x|!;a=X2FHhswBxW^_eeAXFq617P`#JdY*Kl*+a-n%~w z=N&yB@d@M)eL}21fIb=WM?K@%{|C>MzkFOVPO~A8(f)44y9;z9`kuM2Sb3xWLcHV8 zNn6`MAI2EPl=s_Fm%2@U>3<71{|L{F&*+buU=taq>9Bhmd^magGt~VVVn$O|{`}RJ zH`ex-bZq!)%g&!7-^=|0@0?CWu0!#2u0xrL_zlAce9rg$W*_stvAVt+?*?S}ANWT2 zMe_Rtz-7LB1$FxaM{&yShLoSxEy5S2C z^@p3^Az^3+eGA5e%yE32cQOx;x&IJn z4$QUS9qPJvw)qR%>@n`Kh5);nfxXz(l95s)%KaMrLU>kjPbYGemN&8I2XeyxzBFLA z`itex*S?8cSNc}}lj+qK%%`zu9X4gz{IMMk)$yC|F2=lvuw)}2&UXJqJHo~Lj{(!) zqcr#c_kY7Z=QfwaHwU=h2pr!6t~^gY5ipk^2PBeV;E5Qqvv@`xV1SnfPeB_Ud&iVtyYGH0VO?o9=a|^zUUHMnt3$k2hdB;y zi5>fY?3fEuU)?uJZVvJ(+>2m-FNASDWW`uJ5L{#HvHit$O?eWG4S$-u2V+|>Hpj(0 zW-fD&Y$q63qT?EUU|e%A5y!+>?Ho(RdvhEG z^^WqfHK&?D<2Zb8mwhtlWN|-P3V2c^b!NwN7(=+133;To(L54i*ap7CHZ~Lf@_g*y zLe8h?Eg5W0t?FNCLV}G@^Pa3o_as03Pg#I@xQ8?__Phr9M#6J$P32E=j zzwO1Yw52C>)T3d&Z@UJL3o@#2`I(dBT7t;4y-)@<&zdKbvYML zs#vt-2a!K~hbPv%v#4ygQGe!8Tqgco4o;---;^IluGe0F*EQGQrCop5wbws<&Gip! z*FPM2zi7$5#?74DZ!xa77vTgG{w;AD-O6>wlgPE#Xc}6Z&15`boFMX)Yz{9|Hiw_W z9q%vqzigC8{`Vi3)L@$t%DYBu-oG2I(J9GFuRLP3tioTnaRJ4P0@QY~Wu8?~Ff5k=OVeTRu?HxJiq79D;i*|435gHU7qy z$5h2_ddwpQM2tU4k=OW(|5IQxGoxY?Q{BA1pxhvyS@K_8hsC@{oFroWNs7G2-`Mh) zs<<5y^EjOM#-F6fYy8FkufJjPjd@e1PRlPSDlVCMGlcg6c|saxkdk5jDfdXRI>{22-^zUDW=ol6fn~F$(-OAKlWNQD>VL{DN~Q9@)Ua}mu; z{ChY4^Y~-&q4+ z@y4mGSn-J5S-JdyMb*{lP+L&BWKrb;x#Pjg<;Dm`J3KtFXvGS=2N2aOT?@5)7cH*T z0Ly|!%PUIa>!N^NoFy(=^WhKCjbi#t~0>0a%D$_Lm#&{(>1Icim`tbRo1ELj0! ztb7nKY1NNZuc&-Lg8^N9z82m*xOBO5`J%;-Xe*aEA95~QY#=>n$wSV?i_oaDvPw#p zFRiY=7IqoKX^R&vsX}|_f@_y9K_dghNY^sc#L}P!dIrr(mM&QW)JZeabOl(TJy=<} zJce{D7Civ)mabfJVdZ;QR)dnWmsYRP7FBBtmi}bPz{AQV%PXC(g$ATW3l^Z`YOq^F z11VmxM=YL%@j#iGRb3z=YT|>ADdE8&88$@><9z$w*Vqy(Do-wSEBQ!F4xNC zGJk~=3K-Eb*V2ceJk+o|mxKIES5|A_aV3@I0?l$cp{tAW>XwyDB7(&BiynAzaV2RP z;no8X0Vh-jiU7>X!-&$%fugQhbnhZ`yBrGg5Ngki@S2@Cwdxg+qz8zIp=jqR6|F_t zq+~{wEKz(OEc zy^v%iaYhngLTYYrclLIzz1{WBu5_XhT!ai%`N0vukrRxL*ncR5aumldtIDQ)PUS)Q zkz8VM@U!IDj+Hn`onxF*#gvub*ZqCFJAHeaq#XY@1Gm%t>tFx6`|Iv+dR`hoIpU!= zd=G6x8AH`_t(++rx&O(cTthSAo4rHhb_B^jS%wFi51V>5RMf8(O2)l#f1qFB{W`}c&;c7C* zWi_opwQ7Rf(k0zWuY_rmgMUpL3n%@2y{6q%^Qe$6Vt8ebQYTlcmVTaX>5N z%avpr2PJr8WV(yTPx6pwI;&}bJAlwY_QosP2TEKIY|K#j)vO}$2uM}${qX9TWpL-d zSJek1IWD)`A4y$oZV%&L@+p9H*e#4Du}|UeFM;WkgDp#vpGZ6x-}+Q+ z-}k@w4ZT98MOYSpv*5HYR8|0c5P#nV{s#7H%aYV5x}WPh_Wkeae3bqy{x*K~;>8tM z`l|SSj#1yC8I=A-O2@^FgoD87lHO0mo^wnp+6m~p`0M-D#fvAfRucW#u7#9;OV6IC zJD%#?{;~KoiP+9pzOnV2ug0Eys`KfNXA&QaZ_)9GnTWjDs61Q?QTcNhFXpK}v60s5 zsMUb>ApI;J!ka}H7oF5LqCyKxBc)0+9tG3q%%(ED%{B zvOr{k$O4fCA`3(oh%69UAhJMYfye@p1tJSX7KkhmSs=1NWP!*6kp&_PL>7oF5LqCy zKxBc)0+9tG3q%%(ED%{BvOr{k$O4fCA`3(oh%69UAhJMYfye@p1tJSX7KkhmSs=1N zWP!*6kp&_PL>7oF5LqCyKxBc)0+9tG3q%%(ED%{BvOr{k$O4fCA`3(oh%69UAhJMY zfye@p1tJSX7KkkH8?(T0ETy%3dEc$J>i7lTpYAqs4dSQIiVHq;af=R~>@@tOlaeI8 zACCofb}>I2Gdzh;9XIh5r%zb<)SS)e^2fU8qz>L{^yVbY15}tl%=^iZ@?&juR!TxnOy_17h@_LiJ0m(Y370eHP$I)q_>k4H{pjVK zrb>4?cXfQy8G2iHmvhh=MDe!)R4egEmi<@k9m@AM{Eb5C0sNiBpEDtpH;D3O{A|Y` zebuu`aaOCIo?Cn3`1on8L+xG$^~+Sxs%{D;sA(Mo&TUu6muy<)+}v~1s-9b}c97D! zK?&5eds%Gx=eI6LHFvAnRSzLg_fqHWOP2M-S6;L7;PRzTFVYrpF&GC6S+ECs$ZQ0A zTER6}3%uwGXZJEHaPbum?Un>-OP$NRQdd2ot8`h1ig#~fQLa(%F6WqY+`0N;WL3^m z)w}%Q^7xW#mY{YtNaiBHLk-4E8Nfc_IKN!77^BRA!4%okaaP8t3+Y3#F@!IRk<)Rs zREMJ$#AFP_mpC1Z>GF5q%7(8pW=O+QEfKwjqV zm8)V7w1CL$jrTYPyYK&~zm4?u57cCCFKg(ZKAr+WspX8AAx!?$p|AGho4quwX_KbY z6sOHClnOOfq)%4YOMYRrgpUf-gm&>o>}t);sBF1T9|_;N?_hG&Iu9$y4@^rAG>ziPA8|97rW_WQN$<_t3R=WI#D11IXqg=OG7|F18 z#?pn7v7I&`*$t$_itU)mr>n}%!NMw2t*uR`tC{?b8`dIR81U8Fkvcy6zILqc7yCDk z_y_CTOqh;2*K2!k*`Gvkqn){g%%ry;KkEiEm;?xf$Pu5*CpMLj9Vwl_AfS=nx;30+ zLiIXBiQd)DU5V9e;??m}i8Xx*xVTe%Y-=UPDhkY4Re>6-j;lB;wsPW??o%MetJtkx z1JyNso!VobQZ)6Y9$n2*`j%E$CRTTsOsH-ZAjr(96j^oam~I%(vguW<%o`qTfv7Dm(q!; zGo2}+>iviD8^eEsBfH*=eoReU{2!sB#20+K#ka>l^~n6~im3zEe35cxMzg$nbBNBA zrSo?1sh&2zhVdDTzeyJ~cbwB&j&yosDb0|d{RlW%_{sREaX_2VnL8g{q&aQo>7&3& ze>j#xsJR)Px%2(^KylPu-0(Zp3d?U8yjf2v;m;6g*Dr=Y*Dp!GWMe6j(0eI&!YcPA zq_)!+o#A*;N5-Mx_BgCq{C|Kx*-dcaOZ_h#59&*~6PAwP(;Y$nYdDc4eZlQ<-rE`E ze@pQ=VVu@>w2A(Z#h*o5JNrm~saVjj{wjpuZSh5?cOKln4kG*si{FWX-L9U}uHLQ` zYS!GAh42S0esUhZ^keTMsirtWQtptYBlz%wApf`K(HDNj;_nOLpIaEz-!Knf?D@E5 z&s)JKzahA(hxm;iv@h82MyE&3w#DZj-|2L^U4Kb^?CVHUAHlm5#@teFx2A13E}r% zALO46;m=z9zX;)1HU#y*9>PCk@&7S|KV$KK5W=6e_&)`o=8@o8Wj5)r;TwYW|HVA| zW}GZiay^}8R1EX-Qsd#Ar7z`9+!!oZ@WFQn@m}at{RRIT>PMT@XNs@y8?=d^w(ul$ z$lnT1m*i*@oeN!C4Zy$GF<3R(&Qz_-8Es zsSy6G#g}!d;0f+!v5&er*e=0)E&Roha+4PSr4asv#s6vuf6C&&3cfzhGJclZCH*`7 z(O|oN5~4qROOXGw5dNga|78gOjKvo_&&-3*TDY`p#%fn0ZpN+PMpyhpLcM137c*aQ z;a>^-QvRWLbI?AG`dj$w5S`?$K^+;Ng4^TMzVCQLh`!u^Q@rg6;mdtW;olv?m-~Fe z&xi0+sgzLlUhFn$;q?%mDU1IQ_p}!?q?uSD3)z%c0@eKWFj3G!Ng*mmYP#?K;0l{hNjV-8?#Chgqv!8MlJl<5ukmw(C34r~VTB zq%xc6Pg(pQGGB08|BS^q?Omh>t>+4U3LRQM2yV&~|FB4HwD_+xU+^T?Q}pk(_!pTk zxUD~I@w?Cvs*m8d{)EN9ocV%_9o~Y#rTo>zt`yhY?A{T=pR)MtLijVggZk2s=jOqu z?+Eh6o+qsK3jVl--@m}vO>o=JlNSG0)Sv7uIHG!cPguM51nYTk2!C>Kke>&i#<}1p zOtFpY9?5+{z7Iat^CZ{bZkOOJqaF&W&xEBf{c^^_#m-Zf-9E_m5!|lNX^a0Z5UBow zBfH*=ezzL7t|xpnr2f-ZJ*ED$ccxg`>`sR03=IYOp9$elTKq4E@TV;P*F*TT7XMoz z{OR`w>;L0<_|lJOtbY0VJbba|%a;DHLijTlAGh`OI2T;*#EAZ^#a|BorTo><{$P9G z5yGFb_)_lB!Jy8El^LI(W&5C+dK0?|&ak>6q+E4(N~n5I`ue!WxadoLdM&=-NekZ_ zQtq(DmvRNS%dJ@a%sl$W4hePcqrrAbJtr)k8g!_=f!y>z~$o;}~=t z)x=GHr5>B7o}xc(=|2&|AHFYGpO1&|r!4*-gHP=he6`iy8H@kv5dCu&-`J-^O+68; z=jTIoR6fWTooP$wOCdVFh4wnXH>v0vkzbDo#T>T>5k7x4h|?dL8&0{mKB z1eNQ1i>MmdJ_Y=8;9{SOfz=lomwwDLz6=?!g?|vg_aft8VZN+~U*YR%-vPc9PpirG zPx0ITq4DN@8S#g2u#U|41nbbmd692OT`DuF- z<8nUrGEUKGTgkXw2b22<{fx`?=bE9b8yTO7r!=yGb+(HBCWFg;)gi`ZevPxv{fx_X zhLemRA{_0VU>)hN8soCwpyyC&I}Us))}?)X+!s4M&HAz)7M%WtAaSyhcK+322Sm=pQn1Bb!46YGH3WhoVSvHkoB1K z*9+k5dhSSRrr@7t9l0JW_WT0jXqSEc=j*^%pKJV|muG{r^$my8e7WOYU2pVBB7B=TZO5 zal}hHDXxjxJ<0kNzON_t{5avTk3Akf&HDCzikE=XxRvueY1dbnZ$J0-Iy#8#Z1>~m z*#7d|MS}hFZa6^V%l#v%=eN0@az1sMTX)Ai`GTy`Xk?R08#@F%ql$8h-xi0Y_x=+zHxAz~I`^4! zWxO2$PWHF&6FtIw+pm6z`S!SdmiTDzFzavR`h1dgk{|0m#j9CjN1cIN+_aI{Np zGx$ly$NlBx zCsBXH3LR`Yq; zjOCx-#rV{&lva@S`Srl*_^zz>Zf5@EfZ@N${^WMzx3Q0T%cHDTkDC`g%1T}r!FwNm zt)9!_&5^8E^+pSR&8xb#F*k#kSUg{?&f+DPY}p+xmPgV>H;b2Jd^cT(PI;_S^lDyq zV6Z(yzv|+qtJU;T*DKYkM^&zx9`oF6eQfL~vb4nXYexa<7+#Zc{d%^Hdd+#sW}sMB zT4kNGUcaF?aYnuMXiCmM>K976GI5DS`%$k}_59I7wi&6Lh&S$K4p#`Sc-3mTN+GN$#)>otlU&Q+>-w8n*$Nxd8}`o2HTaxZ`9JYLZ$(sg@t0RP;!y1=rtxCaLJmPLvAL2$jzk-xvF4_0H8V!=wj0@x((-tXuIN?Ggm4EH z;Unla9l%ufy)n$yQq3E$DZIpo4%83_YlW;TN&}C;8L<6e@w9$fj*6(4$ZqfgB@g4M zeAuhzisd7eA|~;;U$yNp@$rhFo}eaJ&gq(B=jPEYE>D@$0s+9dk_(5($tQ50#+boeUWPn5Y<81u5i%oM$Jsb0~Az%dEz z23b-$W~2N3Je4mv<}}xuP&6HL1?HuaG%#AzRaS?ye%Ym$5Oqkm0JFW(-8>aCy8Hc1 zrlQi>Y%O>F07mf#YPt2;kD>E5;MYe?AXgZ#<@^HD5W=gP5-FC`HNODogaiuHTbw$E z?#IiS*_;vdbCrI2>$0NXhXmPmZ@+8H-W~3aecN3ZF?vn0;gG4vS^)GB-Y{f`BK{qm zoqO)wx@C`h=k2%e-*Lb_ux0C>9VA8F#!`|q=vTB0DT0Ywxn?-K&B{^P&6Xf$T)vD? z06d0@ICSaWCnfEz-Ma5l-L)CngClCpODvv72(tfiGj({WrUTV=rvf#*;j<9abt2nR ziYZM`Z1UgQ2b#epqfWELnU2=+ZYvO)5cLv`8#*+>uL3i1J%fN@5W~R(&L7F7E9}(} z<-tvk(MObPkC1U;rY5Ll(~%;LU6XQU05=A9xxxn}u&7eHO0Iig?=~I~=BS8Nu5Qx{ zv`$nizcHHevasnZ&7diU_=xYLiu5WmjSQL>roT0Z<}}b6mv5Xo0Lvi~0!Lkv-p!ON zM;pg0a^U37K$2DleG3w(b=tr#hDP8RhD5O}jc__z0b;wkCC|%J^{EVUct|2|$_|*S z2_!hQ0q7w_$5jY590rXNI-CQPYPKXcI@B#-jRj8AvmrvB#COXjsYAoFA)yV5&kn@6r5dNj2bLUq6y!M*dljTpufcifK9e;CV5~G6BM7ch_aU_w zNqCWZw1mZ8^TlzfXa`A0VLfVLF02l~EqU-s+92?Wh@%a3Ox3j{9V{AQ#KXMIaQ!@a zc_ZHX_BEH>;^&}cj8CdMr*$U@>P0CXa*f+pdO^`<`jYX@T+?Gh`)Xci@PvgM zG%Z!GN3Xtv9ynf68O_BH#ajJq!%Gp%csE!3Yh6>BhfQngnLyv#3(uS$)keiYHYNl?GHKV# znRq~AH7Em;d@V16kcZD88Vi0vGOjTRi$$dd&=mYL1lZTAW}lak9*zTg)it2s`5&m3 zwdDuAygBtz1A0vA1E|s*bCgsA#2cu3MPyL}qve|Z8K@KyFcKK6Y5*r-V>qt@=8e=x zkvCl$#aRYN>D))c>5-ADcUWS@0+w;i(&u0jLDeNl9O~;vyquxKYeT(S8Z~h~-~DxW z*Fb+6l9?r?QR~+0{A=;W>-cugr{FUDg@@>5}R{p8uDV<^JxZdHK zPjIu#??*Bf#g{u8@BN?Q{0DIg-@4g)Hz2V!zx?|E-A|ZY-6G5)a@|8TZ$p6oeG@!x zsyDfxow{h^HecehzXLRSOJDNKef3@c%l!8sFV$c2%XPmY&VLosS~n?Iuq*9|bPqR%$9{&@-(d!uI%kW}f`BoPWv^x1#F#dGb&4 zh4dv>1}m!mbe{ar;UDOsZKajLimETnlYg3CaK_fBf15wH{a;2BF>U*w=lq|y3Y4hq zzcEk#Q~aXTdzwY-kmQs74>`X@Q~$#GAGZ=DpTIw#C;tZ)80Pzg$a_0K#Vr@3nKPV! zmJLJmxCpY?Pv$i)H#f$<&d5L0n@mY}