#!/usr/bin/env bash # # Copyright (C) 2011-2018 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=986d34858fef5598ea1eca3bae6cc3b8 # 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 5[=kWƶ*if٩11[a ůknN,,L9=z@vԵ4gf~Hn_3äϾUnv=FYckkQizFߓZ̽tc\=RTHhl?Dޜk<@ucfhV%K, ϣ:Y:Í7W=Ӵ?lK7p Hp؂zo[ΰ{:0 "Zuj_aW Vp MLf jj,S+`&42+`D,jA-O 'mÆ,T:jلAg )L(l4"E!| 1|7dJѐ@ PKV6<-l_Y`:0 `Aמy$+#jhd0@sм,\ǢD|ƏT ]rp GcX&^WKtu Ń<K9/笋h,HD@@JA7銃*d0GO2*#> I_w?{|(ǀ'#~,Id<JAẢb_րJSa Ҳ@IQɁ|=1QX(S|*FBG[ЉjUg`I|?wj3 }d!M$Y'@.Ӹ$OŎ PbJHe$3$2Y'#Y*0g]f6# uJΎhfxTI0DbY@8G #`񜉒Pi%i0:atg8Qi#i%!ủ"2!Hb`6Lu@l)J+K4,ٱqQ*Iɸ#(l/UR%3G6cK%q /,wIlK؄HbvB̙!r~%"|רRI3ueB(-qID'( C;uhLc ln>#ߓ񔫅ZӾF|ĵiH{+ *}@nzWM85jF2 'B{9݆,!>@8ƎyĢ~2'S+S9JA.u2J\pqV_ 3`V hytKW!6aH=G 9u@Q$"=_*g:a#!)LNmr1: ~5\~6 XleV @"3Q>Xx40WG GgJPM"(*$JCˌdױ2Z4PhL-EL'oU&zyiXXC ~5 ku]c)DMqoebM4!@Nhu! RVdJMHDpZ- c1`JcG(Vܿ<~n><@0+@ڇɁz2T|Ȃ[ Ph]F kX!Gpc|k3U7KsHkq;]l.d>TS,2}Ay]Ii@tMuOu:'")e-%CFlC'AM@f!&W R< k>a8+G,Q+8cF?!LqW͛{P1#łO@\ \!?z{ ʥCgBC3RDٍ <^}"}PwB++4Srj$P.뉃.] yON@VѨ+P"m3*|Tx|0Pz jkgp_`?+q߽$3I] )0\NVE]7ŷ೜ReS>vH|kC\P堝*qVȟ'oC>CՃ'#ę0. z׸fOWL=Aǒsf9wNb]N&S3B8q ~n ]V.5 UY#` 됲tK BЎ7m4Bx({`J|1'N0K5KfctGp#n?! VA%ŷt:39n 2Q6 eTqx TlrfPS0XuQ=k\}x?u7ƀџsBBf8JUD &&K{LX`!^lX.@%7]%EX XU{)khGlkt4Z-}W ;[Fz:?_Syz %KwӛOo< &ӛOo'%OӃffISd&3R_V C$WFcVp\c{WpC5ڥV V,+аE$u*JlӗKPP0A <*j? ց(}dKxw"F=-<<f}]z7i[CV1Hjl o VwJ=j.*sn);K8NL<]fn 7k3ՓlH5?n׷E'ōS[CX `-pG4P%ۖK 4`(S.IVRfv$Wp90GBްz=XbݤKF*BkiָOk]c(SZ7O-`~K*KseIK=٭dQup }MdqCkYRk`mGh-FnF\bH,$Lڕȧ&=V=u*v'FVZZRTݜ~Sc3,X l3>̌s?LZG1sS[ YˏQBu/sa~BzcGwza,,kF( MuEP!ed*]s~̚Ej҆;`vz+,1'77RQnuR1mum*.3 BBo_R+I)^:co4owY3erdHM֖+`&GMnQ[fy):kL7Vc^/3EzViIיߡKeMH5~so0o &+v=k>}v=չ^2 jj~lm8u# `JftK7-mn Z"O Ҳ&Y$n&eU~w lmEi{q,ꃸJ@moXy:?qtttttt|͎ ?S5N$8ﶳt}s0^t8SA Wr4d?}`͡*~mQv&wF.RUf of.J6*F'Ѹd&!+F?|j +dsL|xx0*ҟvi /x*CLB|bKTsKkLKq47S'vUϤ#s\#@.p\w"35O[.vdEJer(4ĨFB@fNv6ӇJىBS[K&JM؅Z3wb=9ؿ{Yz+ ST? Fo՟U#_ =IJD޸!o1gS/Tê#{LS9M4Ub?*?<:'tWN|lgOX49cdf4n,sjP NچSٜ S/κg=r?*d WYP oCKX܍]y~ m_o֎U͂g+mޒ XWA4( и?T4V{c7ǘKׂ.7ܞ IW [4[1=@Z1a|1Q5FTp.u[*._j0Xi㢪S= 0nEaJY ļqN% gtYh¯Yʷ#[.a rq Gci)b0HjU:KGF%فf,-d*WbP. ;qB0tQ߈sa''nɄ;}UUY2gз?Y'L!c3UT"Z!%Pm 2x8mtiu2BKpy۔R7׫Ԭo[زռPFpɣ-bJ⪽=Zz-+V}H FdI@;z 骻$cӠ`x1@3&ЋiͧM߾\PzmVe^ k Sn_5Inad)dm^uFixz=ՒK  ._wHvA@G&smEZi2q‘x閸~12yex ,9Lh4Ҩ0ù1ILzbƊ=U 2K2\(:=XF̄ذPPUV"Н2왭l"k'6QA@كqTpr^ g:X 9lO`2lZ:ųwt:UDxV죖3ca;W8׻ⷧ (PU4Pw 1pF&̨Q@Pdx,w" a#HB=JaP6|G + =E\r=mI%x %7 ҡ°V@ZA Zlēo(y/6ga$LU׮~}yܘnF4#Kctlaa W> /;t셉L25~>;o) {dW)N9P Y Wߪ-pX]ʶN`඄F="44E= tH^Ёi\^|$;=ROxÐB2 66O}rV0$O;?묇ɨ:&5d1Z4ijtuQɑu@y -6jOȚt5o8Q p1yEkn ҂@" ՝ai'1 T-("u6;v?޶%" s*7z-}R4+%*VvQHQ'8I oH (?~{Yd֪-I81oѠ՚R riL6#6nSpL5g`1I"BZTmCcKY5M2$8}X)檢3/HZH%B˹)KU3ΪIֵ5(YwHoJ*O(+R'P/iǝ^b(,>8ͧzcJ#ǧm˦o(Pv أ}qa(,rI W?i(gAtÀls*n(4 u|J굷JT6!D@ Y2* GS-YY0)k 9*P@q@zPϋ5+oA" CKC^Fȍf̸(d˜#!UBe5ON7JUHl2GA*cSүTgU)n9c9ΐ"h*h;Pj-^<鍤 N=:>l݈v"5"bمgLݛMӗ p(`%Ym_e󨶩$uUVVkX~}Lda//zr'ݢ4$?Q)}!}zvuͥu .QȃbĨa,3] 5 41$jֆ4\9l5o o.I;k>PWFCqU,.NJήٍ4ٮSw:g }@Uj ~^BtH`sZ043h.9֌ҫrmfCW :#Q-b6Z*8itѾ& 6I}/##I)(A"l{43uԾ$EvއL iR<S) F*݁ R Q`;m Z5/ $LB 5=M V|dO ,U˩wթ$Ыt!Sx5ӫtQYS3b 3FV3U4;6vxtء$d<T*T\݌mJjDm$VN߾c֓s/Jq&mJvE :GZY ňbh8A1NҷwAQX K.=Eɱ%'p򀕅 CYY"[-RUC+R/# Ȩ8mg'<LR%Qz=t(Ge$e=mTIᘬ6Sdo`m%܅:|UG qU5*̼LsNШ˒H'[͙%t 5o)}vv|բ okM˿ )!=ޓl.-٬.8=qPA(6vGlک'u|F#Y*Zmݞ=jksƿӞ NIԫaʄ wfr'-Cvc$O c>״ 9Wb-|g']SiWh&o+lȆ J2+|`:Z}tؙu[%ĻcF)}۽S^*0,"m ǎuAo h%.C=vܒUmD򈞠ӟ$]ޗb\4ipeY2>N{ۅ9Pj)o' UNfod]Կ7,XQ>g׽dq8d\|Y^2DQshV*PcɶZɏ~٠%L-1>QW*e GXm)+-ՠLكE)IzqaJF68Wp pAf5SP sSA#\f䦖D)hrL- SP&oU0m+ =wmLSzEljƒyccw_AxX Jsh}WΆxFEZ)e$ |En(ɀ 5@kZ01`ni|j*d(A }-Q"rXLCV2Ђ&N- xַ5;E<{1ٳgGFKUW!/>,w*+'JijG!gѠQ[( qahb}&mgB/L@ ]Vn.\a|{ _ U[g! }Nې…oNҸt_/&,pЮva<)ܲwޢ$fj_4T%, ]xd!6F nX<mp; POV,o ůj/ nz](]Clmp3 KĸA w'Z мĩWu' qjA alDj0l GIqΆe%Zs`ʓ鯏jF1SƆ W9n/ڵ ZC>2Ez){K]v:]-L?J0Ҧؚ%]`_B{" Q e}(Sl0;Io8`뛽Íc+3$i0Z$tJUd%dCjGT߷B%t\%=Tn[?l {sk( VH seHt wX_΅4_1}H 6{a(؂1 %4v][\<%lF;a|w1>&]*p Jjv[q6/G(-^'mPzuM>.G= RŽ&-{rJ][_ߞ>W:\R[j ӠP9;ۍ_c]FԨEojN=<8ۋ70ؔlF1sqYFAzm]*k.~]N>EF"{W.A0~5QM±unv F?;jE4%,e5UP@) Fiw~<b$wxx9.%Z;Mb|'HE˽~Vzf(,e(. bE܋hrs;H2L[`p5Ɍ!p7ǏU!Ga4 䄮"oOdzCofL՜8J|CCiBlWfxxtw0V%hfޤ~fe/جr'w1p|喪Wp1YUo=A$T b_OdVL$[3  7 PJ?FL1eb IP(6 @ɱը_{ʸoH<)%6ulR^ Wړz"[jS{ZLSW3NRӒR$Mu;jY o,ӣCfBf^N,]&Q13@F7`e:\͡>ô+$<ͷJHV2wPxp]Ue^hiSՋ0쨔l=FM kwj[x~B>&S0"7X?R,u's L1ٕ3N¿"Ù+q>-؋6 I_ӛ 4O_U;!ychjE@8Յ[Ab- Y_5L—+&4N7Z聎:߫۶I;ל.]vzŕWrd6F#p?ĶnwNvLDfX8c~A5CQXLKUڄt8Pò 4X8Ib>Vk9qAbg1u!|ĽBs>v)lTZ7Cv]b`Hs,k{X!Ds*,ͼDȶYgdBRRSef'xUGfw֢5-Ld$ >3!A *:bY۞n7dk߃L[\+j mFv:ܴf{QT1x#[{{.W7^yűN:FRgRH`\) cEsƃS 0~9R ZS6>cRc%YgWƠEbm)dc>(YQ6&4 ~1fهVy4h+c눭re3cpcr}VC,4N+ dےXLh 9i܎ưRY G$tikh*ԐQnƫ'p F d9֑z1djVb{8-ku-"~) dw?0d'YjeL~ XKgi^٫Ȋ ߦ[*8z S8@ۘJ]__lW'GR t-E@# :cyZ5\35u7:>;2#a†F]x@жg/vky-@ fhnIKQ}ӷ) {yF԰@ginȫr5!9tzlklh~S #sYvҜ8ք)>u)a|?0>cixumOM_쥬x8(YFIr,ex͜_ LK,>/ͶLyYV+J 'r'@Ak8.a?p5۝;DB 'ÀWAY EcP0/r_g2x OydZ&ٱdN27u x/.pEPR/鵆*V" ,0uϕK3XCB |1Q}-h(ą{HuYuwKv~)6HQW\z@[6= cy5J}mM*q5%s:ʂ;G/mr.~ϭ,G.DO:\h61hEgL 5leo|4޺+$z~i-c9*),Qis4|L˒-n{mEt(c-gkL;u/sOvЋR :'Lj5V]wavH߹&D"2.T"DQ21cf!$m[Wgo}JH-*Q=?5d:/a;Qi0js.f]Ej"""⡹3kf`pL*iHAF{'oᐱ Ɉ4FW{NBfg/੫׽at/`3>Xs{!;u6GKfuq9:|e(_9_'G*_Ur[d49,1Eȉdcj;OT%9Hz$X/E7p~pw28zebcohdhB9{d|[,3<]=6;SqKqxa>}!}ABvч2r)βFS-ۮF1SAfG,QN3Ba"0hlb[%(t例G3<`E,-A'r[2ESdPl2NW\c 5CirgΨ-|g-;Q+J]1ՖfX2fd͉l͆%LU3Ub *NZG^EܧnZs^YO:_? Q?x29?s9?O0}و]61%=?qy#u_f /i/lV/7i8c^4U$_ݹ[kLm ¨u=E@|3$-mak(xy2 'V0щc Ұidg~ 8!Oz &xx/=?><+Ow^Y2B@(@ 駍J:=!iVZA5S\h8/?^EJ̳qθV,5hoQ;@[%<6]uOqz^ l3,)0c bhoY%25@`w`EӐYX%^v KTƒb=ۍ[Sכc6Cэ=V,lmfgkD~S0qXxW*K-r[*}cL ڮ5M%FN$<4O6ݬ.02R:`|+ d74?]qg7U+wP 4 Ƒ;R& DqNF0 o3of{p {xк?,ic?CK (wwpG֨V6f^tZu4G~z&,) >$n@W:0,'S!͈9VhFL/&=v ٧b1+iWM"B^AkcG%/NE`˶_mo};-ZR8.c=Ka%5;:..x:%m'+^vd=[?STдb1&ьBY mQƴR1iQ_4}¥lj`_Ħp*Pcgbr"Jμ al;pdk`3>E(p0!1^#)QI?>˫ћ1#˨-# ziƨE[y3e;LQȉhD}gͶͶ 0.]oi1Kh7ɉ:da  a_iLx5vf4'}lNcC/Hdbc,6)OubD<&//Y#*4LkI*36廒^6xD(F"LC`~c@b{[urHK4aC+0&;&> @$!ɵcS[OFئ)e9%.iUk|o-֢omi9BBU(J :4aם3;23M ji 1#yAedZ(BcBh6d&cjƅ6"ЙWZ5do )\UzT! `W%Yӯjn[m9]e) ¡&Ƙ6̀khNk|{w*UU|֧B2ߒ4ėΒ98%t~D'=@e, UtsNn8˞$y 3,/0yt>w*Zәl=:ApB[Sg9?n pYWŌN} +#\:,}ikoт%[/p}aPJ$}liekr!Wi {,/܈GՌI%$*pF#OeٳNAgwp' "gw&&1! zfrfl_]_|'|Œ[!ڄa"wW|VWGSv(׊\'J  ; fa|p$aOPGI+o Y=4&mjyo4+"+z+ U.R.xǏ|Pp\U8T'+x;3|TVok%Є J\Z9Ӡu=5<+0h#7 sATTVM]5}#2wZ%󃗈p љe:\\>}eU^Ib:*k 2 Tx9u&4*na5!t(YNYۂ3.S|x̎'saedTBb>uFU´Ta?iw:גJ? vf#(/$͠rrC]\Cs9=<؋ON˅d|u5p\Ӛ S#z^,":Җeptu fcHǐ^ '9Kܸ5o ўO8IacLG׈!~M~O3  ׼Z|;.j6Mwy! )P28Bc bd[?9 Y4Yp_ |+&lĪEac. /QK )a|L& S׉gX%$'8g`EBY0iT@+自4޼Yy11Z!Vwg?7G|c*']5%T(!&ܧ*qz"5 A5ݭA:E3je8: ƵFsiaw=HV[sF^at:Cle 1l`VpAR"CmO*]X@+Sv6S pGn t6ƍu){Veɾ $q7$5c9|Yj06%\b+؀ITjBnu;`0CuHqpaY@ ” aʡ2xXm(:wV AYӷ9zqai(oifȪ{ '_yB%m> 8Z㢖7:o-e[I*І$τI O7GwO g^mN1`?GF`+gkζqUr9:Zehw5l8S\S [1H$Ue7 .'Kqe.[2ҶVox׺M U=d* mƪ,(}{VL[AB;a#=>ej/rp9y˝QY]ța-{U1miQrxm܈= 0-2=\hV/neDkS;6r#o=BڈQQguɭ].)&u<co3JK=HxW] ;EͶp;^KW34D" }nO!h? TDG; =QJKQ۬ݽO $X 9X|k=y>|m4*KyY0Nn̚ Z9"cG)} Ȇ+) PD@jT%}4$u 'KSHT\۠ULoҨ1 no|6hDlА^^:-\zî.X\)e^բ*Sul:O!@0 ZSBp,c +PAlfaVCylq;æ¾e6OǶEa0bOߘ~wn;s߹hۿ$u6Yo- zZwHG~jly{9:E;x7G?Y=bt uH[Ѥ`HcҤ6h!f0܍WiJu3y NZ \&&iЁآMg4FZ0R[8 4@m萀h5N2n]'ؚyDQ(T਀%DW8m<:U ]xD$ ³a\;MFH``D Ү#8_ /Zn[7`9$-/#o0=&[ҞaS_wtGT^ PzyQ*7#IՃ#o!&yk-0tBhBI^N @8(_ G NH0'n}PyTqmoЈ)UQidimSWUV&.[DJT$aanczaJ> @z0ԣ+p`42(U2A ³Q+xi lzWC {&ģ3{;8eSX&! -2k E RwepgK&s]v5ZE2C*&e@D]8y=$(1S֋kOLb\⓳\ӐBz&C\\ iւ+)KILİE OA]Dx|&7̲KcgErqd$ ;mv=.+χM"bLQ:pqߞfل:.YZfyPIq;7ǃ& |QR8(JE7۸,X$UFdqYr߼nӗk! fMPNuU8I&|2,TV(/h[ ro@I?xP~1%8nlI&ƛ؅Gqڎz[:b 1bi**fcNiFh{ME x eLfi4VYReŨC`lTτ ueMTK{ĩ^  eyYGDkhD=!eԼj}scg<ګDq5f#8C!ü(1[F"&Im?H(L/3JJHfVчa]h?R<:;;!u ׏2!.ƤˋbO}0;_(5h($(y#Z+jIEz|*/\*^SpG{gmc^ WIt >!6ǓCwAZRmι,!ZV#ep0}JlDgrҊF>~%b=nw=0.U -1ÕC$LKo,ꐹk@ j\BEcO~-m멷DZ8hriĚEH%+,eSa|vrp9:$ A~Z5({6cN?E띩 5CI|.] GN*;EXlzrm>/Zl|3-IOB#jf4Cv|2V7g['!K"}1F$_4=t:%gʀDJ(Kh-*KWЩ^9Ǚ/A*նϱ32Lu&Mu\`T2 ! ƧNf8qѭOf2$a#ʅذTl-a?%׀x?QiFZw Pʒ&kH}EëɒUrT+B.>D :1.tT[XM)uG/:WWHbaECD1BgY `Ф t ZVKG-/3z;gk_OײVY?[m=;,x85\N+:Ǚ2䬰+Y%&Tl%/r̒ ꤙ!ToFȑW˿٥*b<٫f=WKa8~{GSrFdH⬙2+ue1{X'b'؄s?sc1߿{ eK =!>8zNT{N6I-Zgr)*J]*Y@dƃquiaZ}.NGs{a!$DxZa;S=8^iHԷw|mbܺ 2"z3y\+F鸜\TKʲzq"zݶIUB\|W`U 8QDY.WAcMt:ORÑ ѷvY o4%('ApMxK/EȏSNcrqXI*S +w)kT٭%V7:TA0Yg`E㈤ѺATFJm,c ?1U mT[b-JDߖYf_ Xe-< b-28&AlRzZ%*f'5Ș-aLf%x ,L_,$IG.Y[M5ιĽdt@LM漗#rHރ"PLE[m 5Rx5M8Q}e[xC+h_ae=."3. :zPc.X$W5YLYsJ'(gBa/xog'@40a7_o3PB@>&7*5ˊ/yVUi#%'DYro2meK羫-Z'^ԕBSQdYm!j &H^HzVδ}OZfUeTT"iʬ/mX ?ə($OUtJ/cf+J mW!hFS(P-f4n,twnȂbf{·^;cEKm[#7/j'Tb:z[Zfmɓ7@bYQHm6l(;C&/1v8mq E/7co؅0K'la YZOߧY_Ɛo @& 3AWV= Þ-%CZ(z-ٌ[@+٭x i^ƦW5PQ{b72ڴ9 }%:(q.iYaxo*}+PjTj/amOʾr$:>XCbas|]N3G*-Hku"Zzڇ< :ۡkʄSL, ̓ ]GW&+ڂyo)QS"k<=mTP&6݊ڃ~BlDL~UqU'|(a& &2{̂';NɭE :Q{y8h: qe<:@]N2]S$eLr۫}c48|nf%7-۪kdfcl-6 iz-PS3i&+S|b::\s4:EH=hnζrj3 MRn ɂ>VD9u(X >>qzLL:Bhc{)~;#kC ,B< #yeCŗ4$3p|mњÃʣAtX]{ 3O%V.d@VIޣ)=Q60pF\ 'V+ȸ^[R#Y(MS7p OR#RjBgi eW 5iq=^F%d8xIXeǝ(΢!N7Ӎz"tUb[5G~۰)ۄl/r,}˞74mF`}{x|O4쩊cɠ0*6n~,}Lc; ,ہ X?#@zՍ:Pl͘O={j\C<l 38Tt0f־V:' V]8c2ppUiMF;, J+Ps'|7>]UOOɰU+$q͆B;FA0XJ^-U{KRTX׏aRSlL Qv8cHNDoPT{WR}Iaꗬ|_xkݗlU#q_Gc3>I:ZW Yuyh[ywh[4ըu*^uѸbu|] =]?u1nNpu<\ua[Ƚu[ȹu|[ĵu<[ƱB\Fɕ$*NNcѝo*Έ7k ղon|Rޠٹ*O`dH|\٧o.N~z6>|goNuA'S}Z|ry ww@-b,{aa]k.v~M 9P:1VE'5dXctGZw*0Zl!