#!/usr/bin/env bash # # Copyright (C) 2011-2019 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 # Check if dkms is installed. dkms --version &> /dev/null || { echo "Package dkms is required. Try to install dkms first." exit 4 } # Check if the kernel module is in use. /sbin/modinfo intel_sgx &> /dev/null && { /sbin/modprobe -r intel_sgx || { echo "$PKG_NAME can't be reinstalled because the kernel module is in use." exit 4 } } DRIVER_INSTALL_PATH=/opt/intel/sgxdriver [[ -x $DRIVER_INSTALL_PATH/uninstall.sh ]] && $DRIVER_INSTALL_PATH/uninstall.sh &> /dev/null 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 '/^intel_sgx$/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=118 # Run /usr/bin/md5sum on the binary payload to get the MD5 check sum. CHKSUM=c10aff5c6203b18829a0ef3777ff4d92 # 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 if [ ! -f package/dkms.conf ]; then echo "File dkms.conf does not exist." exit 1 fi source scripts/installConfig make install popd ${SGX_PACKAGES_PATH}/${DRIVER_PKG_NAME}/scripts/install.sh rm -fr ${DRIVER_TEMP_FOLDER} trap - EXIT exit 0 btc\{s8O8{ ea;3S%KLYr^E3Z}n|~e6{{wDFk/<?9x^ڕ?/^ŋW{^zOlG2>$c~J.ͧlnbb2mb{{ߙ܇xvEa}Qӄ<wM1宗7_cCf.['y!Kup*{߰EI]{E1}G-.M { #0`A"~ /0-Y0*?3Qy@fr>֧8Tّ|F:FSS}09O 8jT2aF綤j:fPɆvd`ygSqgG̘ta2M}[6$3SGVY" 3hGgA33}:=;q |<Ig3FY:S,I0ArYYsec:Oιa-X6 q3\e%nӲ2=?ȼl`RmHtc)x ͦ:,e*Mz^>Q.Msr6{+۹/xLәef#?;>6(HR +ʕ.şlzk5._kFSM!Xe8%B&5cCg:1r۾O(rAի~%W?)4=ו;/A1O:#@a; p0騳%wh;/:0b۽Sod֧,'~{!/A3<{ko*.m8+:A]Ezv_pˎew iZi6S-Enxöʚ$O,t`r"ϥz]4Ch4bƟFcAxj&9FhrFPbZy Ll6aEOaGc%CsQ@f(=!Vo 7 Z^~ч#cd,r,"fc&EXo+ ߾HHF؎CXKn-N /;vʇ:A=bcPtM&ԇ2 0݋.Fgw=67 |`Aܮ/Ab*nI 4>.!zQ(Jx(ftcHLX–(-ZaHȹ|.H܇ v sac|sn9a++.e..UlW%uzM5",,|-s_$*`RۥL>,^ g\7'sN}qMB%r͕HU%QZ/R:3RqbĦ$T׫~n|cz̿B[_|y[BkQ2C"<kNuZͿm,g[=ga;y`hPдRaRIz,~B"î YRMQQKДW%4(L/)bЂ$rR E$iV{O`ǗTgIduuLz6G|&Lu(^u~w^TO1f~k9tip߫2ݰ:kH2]$rp l` 2qÉ:_[rP!0n$"P "w2M H%sʂsj{?Q7j%gSݢcHڲfFT0pчJ9ɚKrՒն/ X$7R:, p(sDzerN.l&Y!?01tֱjm{qeǩ&W?MR!w>ݹLh׵ S s&x#?V[9L1Scmh J!dӛB 8y"lp+&e#p%f>_b:&EXG gʒ9Ҽ28\-eWWFA@\b4Au06Q;vLءplmE؁aMA "T{B!V,^t[-&4id}JjADp򆣪qIepU$ hM ë%n4H"NHY NVJNmxk]q^C̟@'(Cݞ Lg%~KݬJ_J$Ve*lXXOV>xJM+2@pcy݊ӆ#rTλʁjC&ZᏚ3 j%Ńv\1I;kTTH;CD$>K]Y uNcDbiH\? ԓ0J-.;bSl?2g^hw}:GX{ Yj(L8zxlsESvJdM9܎h^i3="U~6A+īxC\ʍr´QT6p\\>~kn|WrN1T. L'}2I, ݥ*0C/WoضcnD2N{9HsE =9GhõVWHhC,1X4Pf0ҋhTeS$m t+ow evj cBӣ|)N!A&A6I mKh ϞV_3XkIs3ipjMfqW)MWCȄb:Ƣ6hBy1fĩɊ_ﶀmyyÏc#\m|L$⅋.𫌚EYWݷY `DdE;acq<Ns4Ejʉ=K 2Ҥeltyت0UZl:HD"/-SV%=썫R8ur*JY\u}>ODžF˂{^˟ę]2ܢuڥI0fؾHHK^G]f,GrvldIजwPdLf*_F TPmQ<JxT O-CVcnNqݠG`%h |fdh٦2nD0 S*/}+XqB3 /aVg=Na,؋L!slgu&Vig<gqtjt>),0]ڗ+XpyE&d& Ş@+<@NVFk\tPp 1w>.3/UZ/f 4x,˅(_Km .;@m^v1M"Wu'MܤN5DO61<,,[]v"3&iZgw@ǕQ"p/b  Ezrک\1' *Э"׬eLʓ"-x+_%H1[y+Ng]P-&],<.F"rH &&l f4 }}phBN<54XvJ5?| 8^μ`$R/bҒެ ߚv=ޖê TUG-8 8P.ν!?Válg'饛U ܮt5At+!} Ae4˿oɃm*>ZQƒ]qdAjRx718vض S\䃭0^6nBAE$ϒeݚXOr9]&Fa`/]'y F=`DՒ/N'u^܃ څ^mK=lxjՁ{BF{]8PCT2j R2h-o6o7A[ ۫J}.%߾W#)0ɮeeU/s(w4TnߨD P1o߱g^;2s ;YzcggSu7X (7,;gΔ% zC4DKb: %|qî.`6;qR7N5{r/(RYѨ9\kLM*ܻ2OB"ΆyAPW0E}~~ݽ(tMט ! /ūM Ah#1ũvQTK|+ydXUA4jt8wͥ|3ɡj?­6]Uۦ4j#̈`ZaQw ɲQ1cC~[엍[yÚWFl!а[?mrH Cw:ƨ˲G #՜65NnVLoL 2@!0Hӧ!0f:0/\$ZH(mg1 fw)yӗ*dϝ&MU_oL/O&싗`U9`P 6A{YiExnEu1OR@3;:$v6袴_>Xnx2Z^!m.W a 825fAx~qIlBY/56z&Mt *w%~Rq/iSu1͔"{5ܟ5@.*gp.i˰]Aq+IY(׏EEޡx+[KC]tȑrxK*sN_$V1{Vt/If%,ZlW:$\P3 bܝ Kmrōlm1 e1[6'O;bMlc77&{(7ii1K *=[Ӿ gDl=_0'.vsPX~ ,54 -1wL1G;KD[K3#[-WHZgYs@ExPoDA=UVB@$?w>&YOu4"+"UGamI}D|"A:*YhԨ; 4_cGAb' ̟eVjچ \ NIuP?/_һ+263Fnٝ z. j[ZzJk0U! X,e0htv£pr=CFIy+u Ez) dȚ"",>kqzc3NWf4$W'J^~m,R5+hR^k$2=JVߩ+b"Cex]3"a8:%B$#2Jn jYյU'BAJaQJyS:q츪gCv`8vA*UEp:v`' %xܪDW(ЀrKj#w! 5%.AGW Xp`Cg#_BSB^wON{%h2?a$ Q(+K86T+ׂL=/z*+8z];h yLo%\qnvRI?ȣI;y\~bAc2T `p]h\0nj/d횫$>WTaV[Bh̤8 9TbIu*f֔7)J#vؽ45dxij'GIG1:ڝGpgdND}z۝Xkmr5hBjÓvzw[<_ڙحs!?$$fN3  yh)KLʳKi_`ѓVKtȖaHU\Y|"h%HpѐCaf,=A͊'iZ NK7cJo[(/ɯW^ugΑ+|(~*σve09-cFQl}Wx&׶=j-G}%S#yX%{_{f\{zKY+/^3_WG{%_ev=5F,ӧ'Yym%-c\˨CɇQ ArDbH]bd0P7ΊĿ<9PWk vS.Zŋ8 >/=g}N)wj)t'X??3ZrN70/7wdS4SS}9-bZ)/YRKqSH2sL S0fQ}v~RXv)X[K.^Nrf.1%YCFts9MH8üQ}^ŠYgvj= P/ǓD$@4 R4گpx'&6 sp2# YF_um7v+dQfr" T ";B A-E oߩ\0mz#ڏdZcb4U9OܢS0%#T`\nFܝ X[YkW|i8 FiճApSc `V;穹y ny1TKic\Nn[~%'^)N^:vgovrKK߻Jm҉Rxo$pF3J,R};dNG&1m+DGX$MlUvkvJ9;| 7Ɍ]~AR`H&:KJh:;?':Z~6>.c||%փ^'zXO1BřIED;(Dƒ텷Oؚ~NMKS!4pdLf3? Gn@-9p1WPb;hx mP B'$뚵Z'`<hz6#b ل,CqRt%pV#%Dh\^v1>[X W֍c-@˵]#6{Mv t=elghvYձ7cAX}1`ًB*т.SR+%cÏrаvzx}l~QwZ۵3H>X[2tp0ֆګ&0ىb:m6Fڶ,W7Ke8CR Ba77^4ß[-IтcR? $! w1nbxk1R)2N- ;QXޅ/n'!@:C-'mFj~'b;}MJ#IN Fz{o=VxV uhdUj#lo2FOSV [KUߋ.IISȏ ]B%w*ńVZQ'x'=hyYwo-o۳2R*50TS sN Og[QO [c,KA(n3 K#J^ء Wxd.)#p>/0BJ\ ) n2ٜ՝1(F[ov@hu#$6P,lP|8$rf9̈V$DQm#(ڗhx J3zbS%.0 [0CI+ 2 *lRv5P0炷%B@5;M۷;pJa iMѮ?Dm} ֑.X  >7j!We':Ge@&R VĊenc:t #tC~Z 5xQ7$*o1@HtN85JQ7װE`{ر[Hݮ]X9 0Cr6ipiZO`W2Qzͳ~CU:7(1{od )ڲ%~ Ta Ǿ/YzѢb#J5gltBoo_b ٓtP=)bCߤjfN()/7=B/&;5BZ ݦ5#4 Ww`'cHkeO} k< 8h!we +L@`?bB&eAӎr݂BfUO_R<Ӵ{{y`ݩ G1p0 ѾdIqX>3S 8Oxu+`E/φ,iYX)RܖJc0;:U *sp CAw;X2#E-b]?ӑ(-dSmM~&!()8CGpfHzyKýJ ]zۓ$;V7`e[ y9D4P&xzw>F|2}3%YʓZ䓐n[*ngT/r[tT.Y<}3+ǤIqۗkǓN?V'}%y[uYb\j=/lyt  Y(X۠ǶPQj?Jp^AhpbQްpIv94'aPa]d€)"d+~%%4 LyPn`J$$$ 8۫ !!bvgR4Z4To`#f8a(iyt+]14)ef(\5O@!'۟5pa>%~;qO>쐝EƀiKm.bV>Kt2S,f)=uhXǹ3.{!,0e08/6=>3$C`qNEuQGW17ۥ:Φ^h2Fc0⪽Оh2U2<.IeBU.s޺P?-b(o/VLP 628#-GLb%X !|l^?r1 K2LqBL=xѶiY %* t֟I#jf1Kl6Q>bF2M; Hh٤^lKQ#Ń0hcq1]|{uoRIzxYx ~yT+Z(bUfi)cFTs?T#e(Gvc`xSe;$!Ԩ#bf+n!GbI*|w~S@<%"HmaAPfH^LDu^>0;y'S;ml[Lޝ]t +G_ӛ t3<;$m:(J 䚸)RZH./MČ_[f>c|n.޿Jl!/c%<&I`Hi< QR"(Gt<J@vZuB0@\be"@VHW@Pc $]SŜEt!mq٢2QL%6 rg,q4q7w-%X AOB ]8zƽJ܌RU:r(X1j{GavC"Hb_iƁFeOz;c'l zr;(BHT\>$C9GPp?r@uoJJX'+3=9q14F?Gj밁͎1* )uߕAS MmƤŤ~:zݙGT\~Ƒ.w]|Ic!B 6)}yɯS?~r;+@}_fٌp Q9hFŹhb96݉^?/:8AWsoKp?f wrlqDe"1%&ɥȅ1!>@K9gFdDsG m֬?-E [:LDF(a~o+UJ8q-I2PBfQĶ]l-5Dݶ@g-& 4,toͤ۩9/a|>>p+3E6i3ISXۢv cRp*@|:Z.{!jh=0{yP;=}i\?b!Ea1ы^JU2{EߧNv0NJYaAxt4釃}"#5DjƆBc\ɪ4^Q8?$^UҹɌD3>' t"/Y~#cA b߁Kߑ8 j2 zrE(i5F0iC}l3>1I ac  FWl;4n01 ?A$>+XV\w: AZ^UXZwW"8~ގ~ޮ$h;殎 *)?˂:^JV{lxow 'Ι2픦G8jۨglPH1DF;ILɴk$exi$ c홍59H Io`>ks#|Ggw p2[;A(H̝$S(tfO{6؋9.A,/Uxهk봎O5U~3(YŃ=Ow?伙~C_z/ 5\ܑ̫X"vai:TZ\SXĂTeŢ(8o1?(W>?}$ '6?+#À@c1$kO<_ヱMRtiuK9<@Uq+}(c#94<9ԔAU[It.󗥆_er㡊0͇|#Tf%؝ Z:dwkn|FE?@dE;:*^3 gG֒6[q0%@%N77m:Bٓ&_4C♊OѝJYk~JLvkĨI C hFc`[a2y}QZJ#[ԭ%5@aAn 6P0 SMIcοi @ /8kPkEMkcˋeuM=qUGd{[KK9ɚyRz: "C,2֯Ka+u%zX|aaYt*3/$qh(4Gf1It9ֱRSlaa U3@dsj'#q - Bcc7w;Tُ;8k+IE6UšA9KYBuC7zMTXpν~:o=[WHRa̓ȡk[NҬL K֐Jc abQxIKzAůk<쨼 T\<$w`6/>D<_mqs<~Sd]$!y&{cHGWr#қ04_vvMJ|N` 88snw>u8.13DHι=CPgLJ"`JfӘ{Im!r۽EڣIħ/`07'45 Q 6g^XQEq92ؕ+i3?$W|jNo"-;"-1#{-  c 58*|edqb1yɢ"10G0/zo3)8;5s AuTu9MsWէ}A5>zw ]FUc:)k^k6xrKp^sWO=VkE*̖V-=V+EjDZZf?k~Vu?ksY^y6b5`G(˙ 'mM~lio ?,U^Cd ,iLҽeZbgwj+ݩšPSu[aV.+_c `U>9مff~9Gڷnzߐeu瑀5&۴][9tܛR2sRlX i24Jw0"0mZ^>­e`MِpnIeudjNC4dqN/@K$hיM+ .Y,5Tx-2"`8kM`Ԉ\c@;t3sh8W^%Y2wCSÃJ&-ӆ#Ghֲ >ʾ ᯅ 2a3qRy--꽷]A)jueumpY'cZ" +r<* =WL[D'4|k aRnh{ *TdrGa0~{ՍggϪkמ?+Lz\nCoV^l ZfO:QjC)>0xC6E)dz_\&zbJ&g'[Z;2"CNs= }~: YHiXݱ=m@OkE,3}U?P*kȺ3 GFPD,82m4~|Et1#SkTV ] ^,iEE) 1 A7S+Fb8jdi8+5E^M(FqXG?Ry U8nY8pkcCd1/휅b -eQg]m/ ؗi4c8+C4$9Vq-$J!JƦ*!ǬSA8'{|R#O|L<ϏM C:Ʈ5Ld}V5ddusB>;%}uR+RWjS1GGtÚ΅t@'h gy?4a\S3LS颹ԳCpVL4kJ(JD.! r/ܯv`>G}bч4A(H9mMe1Dҋfpl>͗feeC[j/>Aq7hԺQY}Q=j>K4qsc=0rZ0D}oCS*z7ek+8SPC L0L_G(;r$CBȠ05ҍzXOUKuƕB74W7x BRX%H"C ߺ7*ByЇ)6CO(e{<D?d\j&~՗={i 3U,Y\Y gޠk2?p@B*1vV4+?`2 oa%Jprhۼ>TpAs~Yz: R >=V&s%Oa0,:LC픃CZD$b'&NKR=-l;4Ps M%A†&;XzC +?dG":'S3BvX7*1ץW<1v _f]Nؘ}XG-ً~ei+8d#r@9̄%r Mn ,SjRR0i6ʓ+QW(+Zu;0a@:L5|H|vHɜ DS.eMɂ1)޴5,a^{*8Fs`,B.oAu@ ѶUR#u3+[$c[M!s`w''7eه1hXU~i4J~lb<2 x >>ƅ_]\x ɬ .Eti b^w<E@,M1R:ݵCg-b7eV2Iy5>eg[ѻxXz2M hݦC}(ZbE+YXg*D B ^;f$(}">W5TtfDR?4MCQ!Zާ3y?'pg\W@Oڨ1oT7;'ZYV Uk*zWoe~ּW7 @N!c8N=U,cN_? NkSzzf'ӆ^khwߞ~Y~JO_PDRhJWnX]MxϋFԚ0x]o<<:8^cE0 ӞQ}<+ԷpZ8~|3˼/Ui[~ͦB!k~ ɡRb >!389hEo6`ê,ze;6og ?ĵٷhn+Qp3HaMeuq J'IGK> L4/AxCVr~F$Az6U6NZᖪ^BzT,*1u(h4>nS*QG#vs8hGDX:k|YK=il$Ys;oJkQܵg+€Ȩ8zh]P\/wT@)(-K7rhhT~?Î.I821S*CLd$鷟Ic7Yy|N@hK^vX=ɍ8?ؕw2-%ڔ%^Ր"GX0QG>0Fj5 %{FD9a "Pk=혽V qx \bpf>NQQ`}L7U9EV-9s2:X0D4у*h<%K-8NGdd\Yu-BYqv㈎)g])jʮrT579; ?h?憳EVVy-xct>>0WȹHH cYҿxJ:FZϨ (]&ThG &JlEJ[GH i(vOjC#G(K&nI o)]OIs6VֻV~n\%ΐ?˗;|qc*:[Sfӓ-c_7n+pߦ:]E `",0\DZ՛KD֔ ɵ' Gas<"yDPo=-Gx4:l?)O͜ ~s> e{wݚ IvHbTV,vjYhX |kR 2mܖn%1 r:ԙi6(œ*ٞ.G0z ehz[HZB'>kr=Θ .K̸"9Ԟw,ȼ6WoMu`܉{ &G*Q3gTJ.odnj% 6#R -œ)ZHi ]`単Q3kKfEV[hG5]GN급Y ch9Zͥ*jOK䬯K1 Z[Pr$l6V_{fucXY(v٫8o[pK#n'g[WҥLI"˪=8qD EabMQtw7Qv O gH9u55GnQdzPǨLյD1m$дR;#6r FAo,m>Ç 'YWkOT%V++-uؿ`lFEN2hoSJWX} ӧ+O΂peuZ/xvyvΟz&%I>MLr&׏,K5 h3 l@CTl d |3";f1yl7beu4h82nA:> ,2 iX?n>|nv77Oϟn<}Ϟ|[?[>>]}]==A/=xكCizvמl=y| XG7C Sg]d⦊F`✄ ~ CpS>$&[u‹Zچ_~5<%0Zjt01F*& eL%)`q#@])tCK/Gγ >OVVo<{}{]=_??VՍ"-Hc[xW% pQ_ ";>nkYnnqa;{l)\>j3X}vgOɗ_RX\Z]8ߞciřD (!H.쎃;Xt3zw-#qu Be(>(J5N8 79X\"Qt 8VXQ17!gP_Kn>]U>m#"KScTKňIC '}k`kJĈv9|8I \'{ LV"NwٹaaVnW힜6Lx 륥52(xJ--Qy7TzIفXNRg8.Sb1Zװ6j*0˓&o*g9ZL*ɜ]>rh^}b'UY P"IW^Ku$ (Tx+0O4uQzo!o0:>tTIH`My"Hj#/30ҵX?ZfBB(Do"#z.{ P<>1 p|~S8dl;xy`$xm[ez $__s9h.ŘAb3V4*snQQ5ER|e!m#14TP($颋$>>Nhș82(b=kta||cd[AqDn-IbQ}`ppBk]T2"eRCQJNvLz!i;=osezHzClWHL:)&:v!)fYQp ke655;A'NI-$ݩ˴H;DK`A0*^2i65:OUzQ) x JGM[{gzja5"ęLGaq|&M%޾o?N0~mD샢Kd3DI?"U吘,%D4f"HZ. ,$G,^œaҊkiaQSk6xϾzRo6Z(JktSk1oje‚?/U-?Kt%Ky!6Yj+zB "L_A<^Xk#It¼Ay}&,4s/b)C{Xis;6}r@maV$@KBZu(P܉"hݭ.bՒ%pβ#-#E>^bRiӛ {N3H46HwAwNwv}d4Ma`2lM&}."cW~6b(x08J,rd()GA5Ĥ^4/Z{’ԃ,~rѴ'I[r(r[[]K p-/BڂJ'ˮ'E00N p U8ꍑPV0aI;\?[yI{,AxCL 5R/v֨"DN@xbOZL뽑j$G42([Ќ!!{%JٸwC@w\=B>9A86u'l"!wbxP 7RT0/U|>=M+$PMLr({gZnV`,r4Y0Kyyo|4RP `qoRbP!@m^m2)gFi3$)n~+${B:`r"qXeuB[8R|A;6W(cޕ+$cHWk of"HGMi9cgY!8}PZo7I} OBcj?V^yӣWR| _:%:c!A[Y_]ۀ礶3rG:9szWoǻ542ڏBQĝNǍVvp |3:{Nu?Id Bc(p??/r%z£>_1/\yaV?O045g|(߾aK>MPtN &ӈt1 gb6 +%xP3 l?g~xZJヽ/R~C~i']?hN* 3~Oj7/ Av{W^۵_;(P{ J$F'B"akjO6PP\Qq8"?m&‹GiGIl#ƃ ^SdaT?7.KMGa8 I`%שd]Ywb=q6j S'@)cXBOy2R0dp 8=uGD3+nQ\3Ӏ$2>&$W$=B5#rJ}DZ?Hx8r6coKAոia*<-WU y$%Z_UYؽIRqm]fgŏ5ǩ Ceg(`  B> g5W$aLtlϹ-d7p!OiQ#_IyQ4G+7QД$J/no7D% TT/Ro4QQ0m69>ڭ:THf +_K@ݔ@#XFO)aqIROff]c&ֶŅ.HaF$k{[2bΡ99 Jp:hFjRl< s{8;|/L Ѷӝ; [63N%~,s\{8"/Ot/08J Ð7;Jo=#s֎tR6QȢrz-zka K.1GDCΗciuq }0 ,STYw5L «Rj'PI{*l h1K\ ?VΖ`EKbJ~AC_p⮚WxꖪP{Y^Jm+ڻr޿OJ_R okN`I Ӛ/}}5VRJ}8Qkg3k"SDV{0XX=+3[*J >yIn7/"v*wGVyG뢳80(},hqMZ{۬-k3`I7Mx :wтj{{v:fdLwAN @ϕX=),SBu:ǩb<)2#Vܥis:[qݺJ$,Ao~CVBSE}:9{Vc8:):Io-mO9 '5ѷ^xe|"k#SJcz\tAU>gPyOxVp-i0JMv Tcoc"DZ\l2RZ8Rma!$^k ҮpKL_=żu11ZIX7_0Z_Agxr#hC{fELmi1u*LJW 5OmDQKK %tB-dACۘh7nQrE *@Ps}Q0!>K{%l`Ii ëaA , 4Kz9 C;3ܶ.N!9~BG]:hѢ?z o_G/aֻa}cb(/N[ ^m&U,|`l::=8 ȖhQZm~Jt`K*mq[%Nw4{x/ai!;^OOJ+%<=0[C^-_ ϋxӕۓm}ax ڵ|}4ZXLգGplE %,~Riaϟ&0Lڑ6^6$FGBObh=AG~Bs^m(&TRohsNsΉDe@YewtΠ!4Gr ;l`H|$0AKŸtoZLM $$UR4`z1m1*x%YZ!tq5efeZq,\1~Ǩ?b6Y2S'\Z_TuZj/B<OlR0'Sf9K<.W=SS )8 yCkP$%N(@o7hGӚdMy^x%C3Y×  N tWf궰xFP G? aSE Mcv|E>ypg#3B-7I;Kw--%;m?wKC-wP^s3.  %xВ(eLH*lILb.Ǡ5IDb+)(d]GN-hB% J-MF[31X>^QEÙҦoXpteͳcKØ *`D[g9 H9EOn,wNV/oY"ꋋ5g c9R+vki Uq]3r0;h… Ey%Mo8(0.l Ә$#ܲl#ط1ƛB61ñv2AIm9RR]Xfw sP1DzȌ':&$4j)K)S GqGcD{ilJ(r4aL*ЉeXCמ7:[oqLM5cݖtXbXŋ2h]3VY8)0:v]/\|hyYbw`|Yj*n&,&tY&j 4bSlªv'zVS͂Nٟ&DaCTESۂ B?Hl\Xp+_zÊȉܝd[`9|wCKje%ۤx gB"< %rz"|@X ϝ37eђ?S}&7A3]~p1Qz) ϲx)H}ʥgO*WmN>,+UoĶz\T@Ex56']F_1dfbD䱣Q*LSX'qIg\@f;Q{Aˤs%5 qv.Psl~A; oe# 3ĤDnA:Wc1JY8+?^IxKNU㉐Qyew;~V*&9N+juAҙ)&@cqwC>@hE FzRn_= Q|i $؄ רj vw1ahǮ?̰X &TKK+岼[gm6q'1Nv2fɵ%[S7{`%Hprz  J'dL(2L7>ZJynQ4dflL1O Iv%t)^N$EXFy.9U-y|,#",u/8hڝwI`)D5h>RW M6NVqlgs@Ó/B`ef-IC-|%](䫆H,t\)Hy8q C7gf9BTj ,-r+@P["q6Ikp/N4)4Id18NdA%:4[uZL4`f!Yx5$8 T| sKpOU1. `tIIW8#|̪rMOz2W}%rËkKW|}t|X?tdzB\]瑅ۏVqu } nf0㓅IjC yX.J`3E:|嶵׍4ّv }R0M*0,soW1I-?;cn?CJO ::T"%v8ﲶdf?;\O`7| ] @D'ōMZ.AESQpm$"& .B2v,Ggp]ɏyp!}hb^ 0KwB9(MӷgI]ww W8acWI}'c>' Sb6,9NY_KA=V_ OrzϱV`.Tō ,5WY?H),~/ظ`ܽyUEC)xF  dD3!bsƽtvqǵ8LnCC0Xw,!(rPҧ(DS7(+=++ LټZgy9ym=?,P "+-iR>6cY,gRh5!` {0aKpqq8P<1¡(5}DoN>IA(*Ss=cDH^:6GmF~L) X[cMͥ6~T}rc$a&Eo[Kw]d$LP<-ؓB>F1UaFA;ȝ§'\R# SLGh2="9IW&}|Ix[kO~gXz(Eb2h|>:7< O;2,3cœNLK9ލN(N{viI7{Rst#iV;_3 ^} 5G҅D^M4w,=#aB<;O?@s F`Uٓwk;lѨ?߯KbOg٪۩yR 4kd &h$n_}ǰωGyu!i@gu<Ng`8s֥!ʚ{D:H5vJ 8܃l?/zEAR00̔|?Gd-7B5!mp>M+EDkߡC˻`VZw.hstw徃nn,mϒld;5Ͽȁ{>౿&b'ObC ~*܏ r$@aw IhXŤ>;pK yd xQk8i# |$jWBNX‘Ƀ\*hd6tß򶍃nU/0w@D:Y_cKyضxe{ҵ)4s855ؕܳ)}^:Οs$v Nxi7xN4^nږJG7 m<߉Gg/Rc[lvl?iXn1PXJpjXc:<%%8fi&9mU#ObPSÿORŻȈ ]Š%o %}tX;ᰢ{Gۓўwz(o1XVE4΋ eK{{ 3.X e"QKK諰,w㏓fu]O`U~-g%|Ƌntv/d8<jn:qw6H.$ w='$`lpܪ4umXޑ9298BGɥ~hu,I\%A6RA),* U\KkόRВ &gb3v=+&n]@W}@IQPc𵣱4r )޻acs8:ndF &A<=(ݹzqlf:>;ByyiPcrX2 0~{̏+XxtC %7fUooV+PO(V$˸5tG)08@n7Vu]gpv3v'Cq"k.)v:ّ*:p@gI /{ְ4-"AbNt1X@q>2˸SuI#[QaQ{ ۧm+izحwڵZ5fE)?-5"@xոڃk|>S[ᗵ"--y<8lo=ҌʯV6VAc>Fk:џmc}#~?}_:}zjwv%7O2W677edG+-xkqc*REnkn5n+[;OfQ8x?|brPo~#`;/>nq^d&vrݮ5_:GLxWW\3Cꤶse_گvɬJzꜴ|X;pOW\ W76>Mk|:ճȪ+I}ֲwKjF㞉ˊjJ6q"~يx?C#XmζhX5ݡQHSM(4i~pzME}a,fl&`tj⦧:tVD&ڛwÿh,Щ%z|f޴*gp]yp'x%tH#K#5Y$5:F:S,1x&LE %n,9<&Gojͺ'׍z^ɻf嫶zu|(Uvl8m7[JւyzU;zoOV ,gpOAQQoThtq ut܆66ldEuWqh#m InԚyrܪ+^%>MGmzt?WhQp^a(h{f}svaa%huRmWX:̨|WV[Rj0`FQ(vT| ~!!||3iO).y)G.,;Oe[F aUM|~T[nu'Vzx1ttuDTc)":XK֓weLJؚA-__Pw^COa`?rڠ%ņ.DuJ:nlSMQ2ntZyF[T:hr;~+ʓċD'r9^&ƹ05FwOؽq27۹MS9U*V38~SR;a! rf)WssHur2 (_FdA2m>\ܣ"(Q޿2'׈V qLv۽xT<:t F.v^j#xhO{S!s~4-Q4/BŝH{ @P(Fu9XdL(=46E+P2͇X#k휭crP`HfѴūm:@x&xN:&C%G*s!b^Q=4P_X`43.O)(:Y~^n3>bU-w>*BL xd^I."ˡdtn!_<~ÉMc}$2OHAh^q( +yc<{[1*TWm^L =Ep`U\7 YfB_,fQ}gQڿݏݕix1M3j@#^-U.!-YPBTPs< pvdԭ~IGќ\o/K~+Atj`^cIV<Q|<|>y<|>y<|>y<|>y<|>y|L#,X