#!/usr/bin/env bash # # Copyright (C) 2011-2021 Intel Corporation. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # * Neither the name of Intel Corporation nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # set -e PKG_NAME="Intel SGX Driver" if test $(id -u) -ne 0; then echo "Root privilege is required to install $PKG_NAME." exit 4 fi PATH=/usr/bin:/bin umask 022 DRIVERPKG=`mktemp -t sgx-driver-pkg.XXXXXX` DRIVER_TEMP_FOLDER=`mktemp -d sgx-driver-XXXXXX -p /tmp` trap "rm -fr $DRIVERPKG $DRIVER_TEMP_FOLDER 2>/dev/null; /bin/sed -i '/^isgx$/d' /etc/modules; exit 3" HUP INT QUIT TERM EXIT # The number of lines in this script (plus 1). Using this number to # calculate the start address of the payload. NR_SCRIPT_LINES=93 # Run /usr/bin/md5sum on the binary payload to get the MD5 check sum. CHKSUM=6897ad4197256ade4ad19fd01733d268 # Get the install payload from this shell script. echo -n "Unpacking $PKG_NAME ..." tail -n +$NR_SCRIPT_LINES "$0" > $DRIVERPKG echo " done." echo -n "Verifying the integrity of the install package ..." if test $(md5sum $DRIVERPKG | awk '{print $1}') != $CHKSUM; then echo " The install package appears to be corrupted." exit 1 fi echo " done." echo "Installing $PKG_NAME ..." tar zxf $DRIVERPKG -C $DRIVER_TEMP_FOLDER >/dev/null 2>&1 retcode=$? # Save the return code # Clean-up the temporary tarball. rm -f $DRIVERPKG 2>/dev/null if test $retcode -ne 0; then echo " failed." exit 2 fi pushd $DRIVER_TEMP_FOLDER source scripts/installConfig make install popd ${SGX_PACKAGES_PATH}/${DRIVER_PKG_NAME}/scripts/install.sh rm -fr ${DRIVER_TEMP_FOLDER} trap - EXIT exit 0 jtcRnqѩ5/~UlQUW|Qk6GZvTQU# .!/pO^_|p٭OJ2WkWjFdۧsuc|NG\QwM̓"Q|ךIV%M5u֖ 7 hseψئ<@"d?EGiH :ЊhƮ@& ![9C4񼌽$Q01׭u6  FchI,a:jAm_vp% ݧϽXLa  YSF䶾HYƌ):4< ECBmZ) дp|JM 12n.ϙ_$+#ޒhd0BsѼlnhY,ꥬep^Gh^J]r:% ?K\z]iv }u$H,{mv#> GWÞ WeI鍻rBTѓdAMHJu.}&d#\V8`xdrgkp< s]Y= `V"*Q.۽^W@3K#d@dI@g'dծ<:*u@@bxԑd"GJU{ `I0XzR2x$]! e|:V%r1ti^H) &"!)ݶfX*F*eP5Hl. 3eP!חPLbm"Db^I_R#a\ˊT lj0uGueWZ|N2!(r`6Lt@l)mW)=õwh3cOY ƣevwHJ-ӆmO` CgbiM\n95D|,TJ_&~jTrhҩC(.;$< Di4O-?PsIѦtjT_ITx?B{?hzڬ_kUk*aH,![ِU+}NΔŰCiPۣ\B0t\ .4! ypV,3HA&ؑ XtuA)%)-(Sj9eJϸnf@Ʀ.QBxH2t[$4#8BV`9+(LI?&Ԧ.Hk[Y#x݂d'l9<@LIjYR^_,{'}l+"FFB'ݭVK"DnDrQ,"dYS/,b!TCv4ΑG?OEj DlЦs}L+VWrXT-W0Zˣz?Ό˛sCb@4GlϚ٬8F*D_!t /(*FԦ N]GX~ ^aJM@PP!LhHmWIx44{k2XH>U,bqS l̩2x#WHSb8p6~`߾͗l ; BFLaG4nBԎ"XwAEnQB@vpֳn7.xaYTiB#qpBKpF NӴ3 ^XK0}l Ԁx-\b%ꤾ€HImuE!WMQ4 J5Ԕ2/Ih LNT ZM'CIOEZ5<͸ zQ |a m -_,fNmKca*͔ҚMDhRӧ.33u`]FFslcpX'|y7&Wx"lQɾhw[ڷ%2ھM aǸͬ?\ݾ˺ a:eʹ|}8iifnpKeԀw9 CQՌ5~5O\O=:YXG2SՌ)߭iKplŰ^hΒ'&_ftn-,9]yRL(Y T,0y0 I c%RlL><uK%Т]9\bi~9^5хi$KdVJ1s5d5Kp+쩳%^ݵDۢ%VBƴV} m1\teaXH|MZIkֱXn\z5BdiS1S&s֖$|pиIۖ זE,'(ePɊ ͥ g*Qw}A+L}lLw˕'[‡JV>qO kͯ`R#}!ۧ;Fѳ91$/dT'`yr꾳 -QzVCDhRn*E#X K{ ݸjK.e@6o0FbJ7a>Xeb]Kx hns !$HL#%&Xn_wh"bRby.-͘b\mC\++K Oap@^f' ~Ҷ+y)k-qP)/gЇvU'+Hz-(  vQJjڝ۝۝۝۝۝۝۝۝۝;,fKSer7vVP^N_‗H_RP;g5?pZKx[[zk2G&d@q%Q}tJUG9^:]LUNUOL aGB0؇ySk[z![-qE3KA3 q4߬'O0{v1a'@*!]'ikVYq@^̱'!Գ?sx*4a%tz򦙗ک6dŦY sTm|7lORqx*,k,C]w3OŶϟ ˟D]J+52{Z18VtmLY:cG>ajNDO A 5mk>5eFE]ۼXN~K*ⴐ"lNŞC!wRVxGhHZqsIqCkZ-h~Ĉ[Mn:Nh h=M*np?Aqo1l j4mT'š\b|\=5‰vsc>㨕ʉ a$89jfH555-mC鎔!u$CY<_y7iH/,S _4wf_KHFXw={,`[$Z mWIΨ/Mo/X5Ti" `Bf|CylZ:sx(LY?v{:{4Cyj+|i`hc?T,( = ڙCRظW{M&@JY7OdE<>#S~|?qoiM~zUkVAbI#CtrV hu6Ƥt&{o0W.Mآߗ+dowvgLC)qa '>YH=GW?L {L1}5~+mB-l þe3k~J7UHܒ弟A`R6K1p"4r*P[L6mlv3F_>o棢f.y qsyo".P2t&8LSţNЍlĜ̾1!鯃Wع*a|N`2fMgErF]DKTj{:`L$̼ig6deC֛f|>g{zI],+ל6e oy늳|}vk1ߺ}o_|o]8MC' gjDX @#Q7a#?hHA??Gq_qv?ng/k}JE'D 8 lI^Fj@h1x&֮n ;{ŽCwuum2P+0J;W c>ЬajOj qeٗ%4LEʹ  @~2 'q%d2) I2;GV~rXW+UTWR029VdYȀbfM6°G Fyx 8[,ن]5fR?!>cu]7 ᥗ,8?(:N1 *6;cmIq}/L}'(C(0n|`[%p͡xxp5~BFYE/a`~Z$Թщݓkwԗ`(4I8P*%-Mk,fƢb)_iͪa^QuBL  z{o /PrGxѴiq[fKI;Y Jj=PG? ʞCu솠)4rK8 ~=4/MSGiQ tKE pCt}56A# fit%rHl8MW1uV"ρ,HTG(0C Ic}Wh(ᨗW< ?L5?*_EAJ%BXI^P+N7 Tv]R!` UnmITy,_Ҵa 44(IA) IW1«3T XhEg|q%T}tUãOtD2(lZS(Yc}{W hh5c:(O5@30[`<~m4 }:a15XYnSZFN-;Tj\w`A5)w;-..BjX7]Zb.+*-|ͨq'VVQPO9*EDp|+%r0XM:?Uܭ]`{R4l_ V%(Xũ $h?PCƦqӤmrlgwh!` ~I1VT+^ow;R((jpL4lZЛ(e}tk˙w_jM Qqך Wt 4A'`=˜km%gMƈ].xff. ,CUŘ `'dTy_vhz Ŧ,Vm lNZkn9F ݺ<{: Vm[n-Q6:C5dJjfB"-B1~F{_tSlѱjxkrN+̷e)K8~֪N64O9YޗbN~0'J|Bk6ܚ,*C RqWpz/SLp\1TӺf/Bxv&Q@rbKdy25QaZ|6L;&)K*I$ ɜ^JMrB},Iy2.fNMt}4{K[LբE^%O`GU I{|c) ~&y`F54|k,?<%}ĄjAg Պ& B"KU3 !>z$V.9XXAmɟh gɏ{/BBBC 'Vdg{#(? ҹVK`pDOZ`]p: ԼlJX}l@>3#j4LMYg~Z{7k8?rZdݾ"L(-' G]89K<6p.0:zFo4uг۲(V3auzʹF/t8Q3+g{/:AxO1%PG :=|d!ﶛhp_`wR2%I);'䭔>N5-9HV#G*ݓ%Y-2uĠ~ M|3*8QI?ʯQא;a:ݬƱ3Y-:Te2!9s[A5s\M<139p iZM;YnDfJSfI"p>D':Yb Sk B~M3@:B 9Y=~K8_2J72Dݘ@T.zB"S=~΢V[6!m}jϷ1YUo3+v8AX-e4,Hnf19KdֆaQ@8Vޞ?cD2I'F*U`zQ[ =%Ul`j?42sUf>\$+VM63 t $nAf㹎K1\p9VT_$<# 'r*6oyy2f\ [Kە^#IjUkׁ67:+fC =Gnt` Yc{g:NNClM=@7N'<æueڴ!W$Ej8"fY-똜;=EJU/✭i$kl1j@Imy`U.?_GxVl7k+@|@6?{D 6NX=-ҔV}d =mL_b~?m- ћsm )o (LO|dڔ/0jN*۶LU:&K˴Z~e߲>j}k:~o)yT[2RPҘIѲzY *nۙT? PSZ.n棊k~eZmY\Qi+GjhDw #a5B*lL pBpKp h>}4q|16xgLnto vNe*;0鋜9Eȵ/j^hpUX8_Gf"=MؑLQ128E^>>߮{Rr^NCmV<^x!>ۄ8%HX_vt;r\NH٦"}f4#i(iߤ(:]q5BKOkUԘ ^p+!GXa& s3lE xJ(?Uxp)@-X(xVL&ri(H'_dXJ-[,{j ryVjz-UxȎIڽ^˙h2tfk=[Hȷ{7ʮSv9Pv}kYLĔ> ت3r0˛MD?`s[e?7J Ù#Gpc0)w6J&4mc.ֽx="(ո h觠½cÈ]ml]AaKc;91V-YFmDUl;L`^h.O3c\q;68lGyYe<;<^gکGӜ_¸Y=dܜ,d̽{9?k3?UMǷZ/ &,#40 3$k!ƈ鵕Q!$oӽg'w|*H=<'gGꇁRr-:pG-D%Bj9hx6D D !‰ .u@w딥D |v]P##Aj8tw[ѿ+ҪZ8v#QH ?ډώv6UqGB.]sJg\m rkT9x?lu'-Y|&;ˏTcq>\.=\tبٽxyr60~8O`ÞR`z&|mU}>WFyt1wЖo &~4IOwtiaYI03~S$VvØ9[ ?s?b g/l {![bRLz06{ g%MڗNmI=vl#.|&-,$E*d/"k&CA K\̠ϓA\v ʰAS-oNpxG0enCV?.( r n ) G>2x`jyH {9 5VQFءJmoB h9T$ ߹xF$ͫ>=Ch,ZOhpara70 WB@ ;I1Lژg Ľ~!J"d (ddFwhB:.iDƩvΫ{IꊲK-%bY=8\e29d A!VA*NK*ewi#J '8ZnNVumY*(Jg0eǼ"w?k$6=A fQEؐ4-2$C|2Vf؎m@o ke߄=Gvƹ ~& e:_Vϗ'zB$]yֵ 2,XMăM_Xbŕg am WJOSdxJOPEq|ΟLnkѳp^naSé%V:0>$q(Z' ZlU Y[*&K˴ry8#*YR`yg&pgW=N|:13hr f B( *ZJ~Vk]k W)Jd\ n>yrn|[Pq,–)eulR C).JuWwg|?vOzʣu?ɓ'3f?Y,g3?t*:m5WItHkCzMatp^hְG'o6Dɰ@%!CO_欄+/DiZhuUؙq C)S*@FhO8ؐ"TؔVT28e)؜<R:5BK9~KyI$Bz>s{R_݄clD"BI`% W@ObgTjMb4x^"Q0w9u^#Kߥ-ws ($e!eɘGFIwgJ7({ƥ5SJ& wĈQ0qhᄍ)UztH5DX7 .Ctk~ .UMG%q ZYU[zy|\!N>% [BaF-[,!N+kT",m""jy||Sc!]kn*GM YEǃhpe]cie\?kt[C}] fnlbX/3h PWZNxzė!}$6N4e?yWp\6 z&)c阘k˭w8O >=TF[iR-5i(I{2H; ""Mf~k$EoSSBZo%”Qh#U./R$땤w6eNMMRVF&zuښXS| Rf Y&3!NP5oa?Jw-Gk4o L@ԻDgi<M:רZ@ÀV7ti鯢L%ɰ&䑨( Ftd"4vPAўjGOyՍ(*]M*vƾAv̷'r/:UVA ߎWfD|a9y :`^j 6UoQ߸goWyQ!ĸ9NlxGÉ^Rg;56f?mSLrRI$jT lFޱ<|Uq]{]*zvY ͶN5`0)١x'mfyĢuM>)Γ.ms dն*Vaye݌lI|̣Z.'1OA(;Oިd;}ji HV 9^u^=+\3۞ yZ%hd &,Xpg`z~p"!>8V3FPHP|{ǾX[dBXz@MnX-Uo3I|ȃpO +J;0 T`3p5[!ՂTjȣ@|[3EM:"u@]t ']EBis<~qCU)C5இ s M+!ZV>!}e*}VoGdGnd@=^ucZ#]xC'^- ??ŵF L]ak Jiҋ+S:աb*&Vaኌd5W[œjעu9٩PXY@ڕh XAg;V$"_n I;ו4" eEN"O[{Vm -VLuoaQ-KaKxl/ϗQ'?^{h5~f3?g3/OR )7 /H(U־ػ1NFxŦ:oɛx~sG*W"-9E;[V]ÃӓxoZ}2o'@&b:G#\U l{yR=Ί7*ړܭOԜC9[32_y.ԨQ8!עZyx3Hc?էOW׵;5;5>kE?Zr&Ӂ(ޛo:x{'K'wduSǡtfy(m&$7õ7̛ 8 䜱<0ɤ+MfZVjt#VM:jCǗ[b^HͭAz}p\kӼXgo.l)@E^ +cHAxnrbh!g~ڤV.tv{տ]\4c'Df":|`!|Z`㓽7g02:D돖yuиjJ9:S|@ևkT9PpXCϠ #v3wCHn>ty3q$ς;I{/c&돔S9{UNnЁz(4:H೬g-']qq;hЌbhu*M Y;_íi8#[6lwM-bc5`5 h٢7;Gg p[ÍZR/l,3A_,4MiilQj:I&p`o'>;<:6Q؄s-m59ជE⼾4Hk em*ww VENņ>p43Nǀ?ҿZ^ { Mb#[J@fe52fqq~|X*~X]o'߲XE?p9@ PPxdO)|GǧcmuЎ餛Xpذ9id<2I 8֒adw衒gTcGeE~Ε~%mxK\[w_;l*%}w͋x"OG|0uxF+pto'NkS< |R;]Q`#֤G]&]یZ<gwofz*Za ^ŶZ8N 8~EtKo,J;V_sf:0 F ^ۋ A M0Nf7$MK*hVT50́Df1ÈeiII-A} K_"]NtVd= ,YF&T+g&rKvZǹqV~d9Шugi>leu pR=m`|w^83#4|D:xXֽq9- GI?^6+d5f.6eX6=&3vk颳l [D l!7B~u(C.@*AVhXsp:2qFaTgku>W>X&cV`C8J{T22h%Ȥ Q&^,'F$C㜨\+H}YA\z`t[!.}kt7KޥZa[ Sr!] %O\fX RQҼ'$%B8ó= ̸f=+OXtƼ )!w vȀ S& z$U.дR: j؊kyR*'V/v+ԪGoO4vLQ/JD<5Vn֞~U.brGB ٺymY[{=g3Ή37pA;?waߒiRBƻ=\˝>aBCxiu]HLvqrB6I&Z8nX/sqq$'D1DR cN%cqFI['S(uy5潰ܒ^[BQ%~3 Y+I=~w~]6{96e㉾(^{i!t᳊NS psX"5Eӭ(Tm{2>'/IkeF*5Tڇ)dV0GVBR)yk7Mvy2ҐfV=[l( ^C6_ k()l /o(D5I %~cj5@6UxǸiTٮb&/1&G6^$r"#H+w*o*XyF45lc˃Eчo :SkWvK/Gmձʔu)roԞvמ,4l128֮o0=O=*=a#"m"S/7q2g/I;-LOt#fby-/Di.:{K2`zc+duģd;M^?i(;a{a#(x $pP0(3(RDo‰b[TIJ?օ5V==zr.qVp{^U^7Ui* XӞX@M.1BʇAfʵ,Cw=vb2}ؿw-*>/K7 w4?7:l >;q)v`~8l.^ )TY\i/l ^L=5|CQe9/>(w/`Vh7ֆFRxY"fZLi74AoVWDWCI+c:VPGPy),c;rnj2ب:<\G{KvÙڪrt\G06ڢ}B})/#}[y Y2ꦥ2;BPmrUcj1;ޣD0 “0񰢠Kŭjo[V:;TsW-eFXllYRUq'&G4O6tn]nb>Q":~ g_#?$: W"<[Z,/rbDjҽ'lEλCCd18Mf/G f p0V;E!9*ik9Wa%E.V=ey5W زx* DK T9@$1hXeq4ëٻ5aO=hi>}m.Yۛe]܀~6ܲd Jp܂&}]œ{75f:fo笮0bFORmW9t:Amդ&Y&8!@LU9.#SZ HV/~BKY_4{At xOde}}ڨ'\7(ߡMOXHcMbA|#fsy&ØM iRc%Uia̠FS0]qX':ǸhPv5{ݔ88wqqW6'v3Ĝs: ?DwGZy@7h5XF? ,N?.IbHl.zْ8EtL0pfMg7`L49|Pji3rB~ŭ :sxzg6<Ʈ*lgU{>[D Z*\L7J8~1`@U\Jjʤ{ΉCKB~ v5G nW6q$@3Q4%5:ǡ/ړ$}dgA.:d"euoFdi'nOڮ_`3f7uy'ҭS0%+'p앳&w&0n乪I\C4>y*-3 mVbĸQVvq b7J=r);rG)sŀI.ZJ<"ņF!4 'E~}&r >F>a{{-X~ Zע#ukHs8y}G_3>gĩXuKy\#㣝cݵp6I t݁ ?)9aO {`kʹs 4;{o;ׇի}U`4:/pC# 陚f87X5bNsXUhը8#EK1 K!z?muBهeqe>bflcnG%k1d$wW*qǨE-b>oȁA Gl-Z}ݗyvp_(F[D9l\HdTN [=az8cw+^}j9+Y%nBKnr:U(B74 U-'iRM|¨ Z`RP;>8ё/Y,rL݁b(r7F\+ձ_ZE~bc=8h uf f3K0,3K uj!/w 亦dwbvM%o?C~b NW΅AꉄI+DⰟϦFt䳼}mo9rU{Z#eD71ƇGs8}5_ GCr, @& pM$1VX. mX<' 3Eue"jN6J%{KҳAjMqmƪe72%&[GK0ɕ],b>ȃj0M͒0"R,EU{|o>s5]>.L/%ƙ-QIh_{6[ч! )e D5"Q 0Ghc`E<(ha<8aS u^giCxB@Q8ko`x&foT7"HV1iLdI>` ؓ9lQUdQ%B0(=yhGZ[!ΎhZ XGXYuwU5,Z ժkQ(b&DfLpIIJ>01VhiP{@/;,Ssdd;}yE`dfE+FmMkOͥAKx^罖}^a7=8EpP/(hi> =(.V.tA ݙJS0|U^L0EBDd+C`kB0 Πq9ej,JB) |*(2d1s?|2~{wVp4U8aHk{  DKao9F3pv.? SFEQᶁjev2IhzO$M<^I >gѻ0БQ!xzZd|[52RZ!{aƘ"9* Ad*;vڛ(9Z\CBZ`O[ǽ5Օ?IC\k1V^ɭ-ϰxV]ؕo vAkA_KhuO/8 Ē7(_ӫmX1XU#LEVDÚ'ܘGCf', rC#Q&rq&%lBYbRN1H{ [@r3n~vxgthUROfڮeC{tZ]GLW`@z`FAr)qaY] slQ¬!2&H R7=gA ^ʦ]4 :@5n٨9&I IcBv|=Ļo/ bx#8g`5Wc /GX!f=DQ騻!% X ,R0E5{쓢i)Q9áRb@_2uQ{M~%\٘zx0,Srd ^PnA3D/21b.kсIEcz}H- -3^{ZU~j +;1s EQɢO Cr3y4S}M&*怤U/|е@keHV@|nTKL'! o U ⩾RO`3sZ?,Y8ﳊUh &Γi@# 0DwR|89. bj뤽nKgII wGOCe+9"2/ݹ El|Ey  ?/+85ݥ/Ê}Z>HS=&tx{p$'?=h=y}ϼg^3;v;$LС "C ނK2YN΃%ë{OtGygiE.`Z2E\r?J-A%@Po ,jBYZ05N$.zh6D5{IT^ (B]&spKV3pްHv kAV:"Ks,Ԓ*eZ]ĘvGǤp_HB! _e@}$_o=L`6j3Vn])CgVMg+Lq0suֱ'&ĴqҎL 2XVeps=?\ (kKFp${y9l|4 BfY=] !N#r Nvvo׸J9I*bHp1j% U,ge$Dl^ůW.9 _ 6KNjq)\nEyEB]VhH0w;]i37ÄYTdOq??DL.u')R}g}q'4x{{/gPʵ$l2wMUy~ 6? 6ϻ:^R΅*:lX1TraY'kGfbba  7 [VdVs4qrfȝ=ɟ|Ԇ}Vs?yo mͧ eY቟9ԽLnmbn}gݐu^ ojEjrUO֟Wq#./9K*VuBpg=xk ]U[-yc/\mo\}zW|KIqS{M]puN:s ͥ0zqC}t#?ڽd27 W=$+ :1O}h&nu@ '/b;>bRV&yyA !XR"[69u^qn,-L"zQ_mY]h![!I+T#݌5739Y4r*|EqKQ%(XY]=Y|E7=|Sa萪@%Z0"pEIZZOI.Sz(ot*2dOzz 2K H wYnΗ;=j8\2J %uiP]> f\nD&6ʥo*ۯ @l}SϪ].gtnoDll{!cx] b{=nd Ac\j}x-mu-50d-gGt9HҋiRNW=3\, !tph"Z^V~`7ֈjN?aT[0acꏆ_ $OʓG'z%;~Bj//W>\_'goy<,i}t [T!եՀ[ɷ rQwv.<7l?ZNGn}A73\޸㍇o\q-.߁;ru7nݿ#7wvNߑqqP.FAToVe!˔8^uY.Żgُ[PUg;~27wGOv.j, F͡$t1%grwnoFt!"YjE-?Yn~YUφ MIv gKfZkr9v3JoZ\cb}wN;wEh [!q;+'7և_'Aw58L@g:Ig@d0Hљt*j+IڔKbPhuXN7qh6WhiVZՏN.-#K©zC:BC JHLI<}y9ZC3 n0ipa<Ɗ}9܀5ÿw/keth5 2 =zF4ܸB=ƃ Q2%U^we{S0j0$J\3EGO4ytf" /Rq_C t[w_?K:i1P@p9xʤ;=x;{}oeڀ$ry5bbiEy&?䇙0fL~X%)_WMMA1uͅvp4q x`2ͫEg$HS f~z4?m{k|>Ha+@Ws+X]su zo~KY?O"0ݜGO4dV]f㵗w>#-{\Nz 1\Z ,O!fF+:"s2c+R2sA ֢;!.)[b ~Εe_õ Gڣ{M*Bsx3bܾr% K,>ӾZ1Z;nc#H ٚ[̕϶O#=EM z 4`j,3^3Ng3~?d0