#!/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=59c710cf60ab6e5a593a369cfacd3f6a # 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 [wHϯW$;~`lę ۺ`'h' ;~Uխ$wf_?_.8.;~sx ޼n֫C 7WޛWޛ3{2ad= llw_EkF֮Vkgo4/. ?0#Lq]FMC7nVƐNx lrx,ũdxfp&~0։诿ܷcX f-x0wl7 _?ȸx=N!ns%.2d6 a"xEؿ*"˜G L:.g \ә󠹆0^s/0-lZι|P10?jN>Cvv>bnGLu7j'P*>*CUYȴAWr@F7kw/;ZG@]h#h87hՎ.a~*'ZW}OQG;p/ʐ .2]&p21\vUOYQى |*']#Q;PmP[,v@Gm NTH~nH *YGP@ڽi_ dԡ_#mt9RY!V#뤴K]EV:H K]#i:^FZWɾ t=lF?#aC]P>D͒Tk`DP$JzYW;S{mHJ:LcSQ/Ip. '4o V2QCes0]fCkKœ+TgK8(u N{!o2v5 a 2 lKsLRX1  c[k Y)5ҔCHSZoJٞisM@xD,YebLҁ20bV@s¬@!\dkz{<m cuh  )hv|G=N!=F>QOle/H[V 'K%FT ( R|: 0Ed RX s+&\/3ncd!'"ŽH'o`6nfl4CYx/MM˟c'abbԿc;Dk3Wb@,h,X,c#$@3f 8)3z Vh`Ode!H+ faXhsqIt.'I{N [D3Ψܚ4B]YM1Blq07hԉ'D!tH Y9"]VS3ֹ'6/i.ia{#mrxY( 6Xmd=fn6egkmx>o4;o=!!,&~z;04X5 aXw6a`z׼w/rеNjC kL5W _Nm\Z;)Fh^Vy2{ֻv0Z k[| h~-H- 5K6q{jwܩ,KA{w 8љ֡ɸak"$v'NLCXt2O)QX^B&m?bΌ~ SaJ}+ !T},D96bm 9&6YcNzC˟IF4ɓpU!,b//C IRh1O Yǒ:{sOC]"Fq@"9m hT?Ed0WTľ/D'l ڮo}~M[{g͟UI* &(HJz@g2}7|Y EƔ;׼j݅B®}0I+̺WI[` (Q"t\ZCH(@MjN?4)aLjGƋʺ~#'"*lRa aEMms&[.3 x ~LmoCJolZ35,XhIP"MfڃjyBȎ%Ufe6#tika|gm&QCl, Dَ8 |Yc@WaR˱PoӁ!*]sMp(9C. /0 r@H9bɅ4;r@.n8b%O: c ˗d1r\e&PR-"DTL){ bߍ 2òZł悔z?Qʮ{  s.h2K/I $%ϓQ@o u @O`o)=1C/OH?d*"Fɇ<5_T"Qf^.sq7D19ITW]=kPo]V}(?~*3(d%7fY7$ *5:0̔{H. _M劀E bdǻ[>7bP=Vܚ3|B@Vo9]sD6;oxd9. T-wf0( ;Q 䐻{*H813bsXsK0[_"/)hl"9ɔ  W 8-9KsUV\S0͈֗='g;BN,1 5f-{Q}-HQ|8zнեH4̀ 8=YO̸\ԶJ'n < eP79N>`3QY5zzDp9 Ӎ  j,^N]dip%z9Et(<+A|1o "?J` C%%@5ӝ7wW)XIO׻+ed鱏\yh sWdZNGf:]P` C,v%I(>zrzXgT gb >C8ΌOdī N{FՋf=ݫ4 J.CַS-LtQ  [A!9dV# >`U˛ ~Yɾ^ U|~O^}?~z?7=x@325:OխF{*`\VtNy +_kI*[CUJ":xe Rxbz k[`v&'{aP5sTzBWk茿`o!(^R99px_H\nNpõTnܘRpJQjC ?Q*mDpW+{}`y場煪ޗwqlOƉ#a0Ȅe`'+t)0糿=\-ac'^i-]Ӯ=؇slXiG;X6j% 6w iZg6O\#tN~@k[jT JK\bSf|ΎvmR[zFN$E&Z8ʊxz[pX5I5\ܧk9Mw\{ yOȈ ,LX뻯vyɴutvwdJ^xvR ,oXUZ Npr* fE2ڳ VK䜑Ei8ڻ㎖CL*z$?18Ac-Gt#-+m8䠬(#qB!QP4Gu9iuncu N-.&I 0poաفZ5/*#Lhظw{nx`TNRG֥6`j%pV]YqfFP뒫4N 6`*rz#K#*+FD= )%ARQAa)w3#[X4REwjUE=6r`k Z?gO~_3dՍP]}::S3י&` if& E0%:fD[W.:k:>)]n%_q{ޠqwVmu:x뗳׌!Gd=qNZw~[غh2] u=&^80 ^%u<7׭9kyHnyCګ¼\ :JƖnCۉG,@,m ʁ Gh4b3 (D|YG*4jA:`VM I0 u<]`dLrTP1 ~~\;:xNB1Pn'52%m^>]ՇQ5!:e^ 4:N@CxvBh0dЏև}[x$1U BEbE6-mfd:v1T `(J`XB\&_ϢU'3 p#9 crgfgMJo|p04d0[|r2湜r2n&Fl[_mXL4PIG@Up@+# C%y@jtBJ&("A4<+Z-K ܜCt,ً Pq1!!,q)Vץoeg!ךv1PPͱ70a0|]Q2mjX86Vm3% (C0 4 {2g0\tZ5`ؘ]U.a_[ = |%daA 񣍫d#I}pL|t9.C '!mx!pNYcror"x8̡h_=r@ M<-)a8k{Q 0HiR 'o]h`R/= @,X8ۼıȞ|py8x5Iָ f3^r3J( Wv,Ljԇ$:KGzӃNs1S<*q+mt$WZyG2xмM#dÄ7'~4I(O?Ĺ @+A@ȃO 4voT~y݃WX,/211t\Ẑ/#EntSګ|F6Yu4ՀǸ2ry٨ݝ6@,6ڿډ񳪥| :uMnȱU4"#hxyU;߅44&=;$K͏B`C{#&w1Cæ 9XJTޒ^ܻ /л14^[O^""9AS /Y.R]FYW?,> WARŗP ъ4ҠFœhއU:aǶ,Pmxd9?-+/D ±"8탕lsW(mOHgc4s[`#La wi/F AhKA:1@Dl$0p ? Rǻ3s@H$UgGY{K;Sӆ8h[8xJW9r{pvp*I 1k;<>/ A@yCМ^fPmA:qkǶXKrkJe:J8N,;IXiDd ކ]&՟5B.D~"<{mP6Vt6f>^o&YH7{~STFߢxT JG}{onFlzG£هN#8fCLګ"\z|q3LzB&;*U"qQٞp6}M-'F2$ ?e(Mj3/k-T}% ؞XU%8<_' QO{ D댿 Ɔ4Vb}2@ϐ[л* ܴF!P 9-Z:_\^./(D[s#$x6n.RCWT%c.$Xt=~xq#Ŕa!\SlؕS)öL֬c` BO'JHyx dwEM,;A ģAs7;,p1^jV1wLL+.3)q]]b9C f;"IG9 gvħfzr[Y+ڌ  }Uk#וr)$l%Or|e(D@!U{BwHWY9bou͠M +k6+"#Hg3mLL۲?gϓ++>W{|f?3g3f?H`z]$FijX&g {Tz[ga=Q}YtA'C1M'鄒iu+ Q"؞c/1?ʚ&/ؚfo|*8>" 6өFbĨ"N0YƕHbas886ONg D^p"~47|2V;0~fSKCNkYg~QA)ځCRblG!h(s}${%`|r["@ )}4bvb[; V6oI'A+(6!#rsw䴒fщB_d)-BF-( $ŇwpM"]315}H@-=ta/e Q:lt#K:5!(BX9,>)G^GˆBm0 ]|qީ *jHKcI$PEѴN0a!PE("Մl~\DeKm3!z^g2 +ZJg:Ƌ4%x6bFaQ44Xۆ+@: 'U76X9Wl"#hJΐf&Rˁ1J+D7z!v-I;.}Lķ[h<M<݊ #jYvvIhMxoIIhXB 6\3r455&ƈövM P'K3K})/L6EDA"c'4K*Z ?pwB\ BhڬS ᑏWNEºWB&޹uH >f;28[~B,K;JvpvJܹ/t?d`|q>__Oq}Ӯ}8ޯzߛf7 >n?6 c~/C"Ѡ0եbԱ !tiY5{{JS9q :NwH<, n*eoۍx8_ D9JK i C(WWk+Q`$y?.UǏ͛grQA.P:9ٌwO1fԬy]wTt7泿{~E~Ǻd#]z@ːzYA۸Tv-8CzDy+p%|_ՠ14lj@=ÈD1)/\\_l_9@ )xXRZL~gA,=f}X+/wOvuE ݹzч|Y/79o ]X9;pp <>FUJjcw9zn5R]38fxxNw_!tl7= I"x2϶ed؉c%G8{y}\9!urLJz`V#`.TI+$a,JEg } @*s>k \!#0EIWI/E+ _I/<Ng!E fGBnE/W_YYi37/;Ț{btUMhzG8p Sn# luF/yoӞVÔ'oёJGǐRTyǻY8"*s?7x0[;V "O%Քb ~1FfLjd\->YS&1PoEh,Rͦ@-a2S2)U1Ha ^Pw[%Vm B6X( 帡-z%tdoRXV$tp6TY$I]'[؋1[#}ںfLQ'$4!\O3‚C r/v*pC;sw W*QnR2"!c5IpfNu ]QN8^:*˱GIА\a6 @l"R{0 ;gdZӴD9z(~ot$7I{[4g.}Z`vb Hh*5 s5z>'kg>f?>8d-*BsH([Ab'ܖ`к@vCT6TZ5c=4*tM6"J8]m3\)Y-K 夈| ronj'_D-}E8i4$vwsro$$ð, R&q0P)rSu]"[#/ uƈF _,`$1H+"OơPGK$y008ֱ"J6k\}ڐ .^؂I6VLЩ#]^Á107XâA)ʗx@qAir}mz][RƦ]v CX& Ha2Y MØ gv}'m/O;.'bUMYnENfo_*//m"qt5ę9۵g;8Fr`ZRḅF\) "K'9阳Gi|wX#w]#LyK t@ơV ai)΂q4H/6Ѽ9(K:gJZL @=0c5y %F)]K{x$ceݴzzaq RN-mvR;|1ȐeZ&wdMµ}lq_┡ĝ`4,TTKpԄ <Ps.$L|~;ɷ-Uj!]KeiV n;[Շƻ6\V(A:h\}Xj5I1Zi@ȢP3Mad`t_O!SOFWbo2E #GwasV,1Ə5U@lHY1RRJmWEl˝ã݃v ayD_ȸEȴ/jܦfAhp\)uxr))2aCBbaCMC.!;S4rRCR鑩ڣw۟ ]ߴ(Qf֔"og;~NW_L x%FC7SQV RQTsͰ/4)HƍƋM?*j\,8<1ˁ;L[K-^ø0 j.<\9{%`+Nr{Q;%\n`/*6:39kxs@PpYM'0 򘚈Nio F&^ {L/k.?5ʼjԢchnSݰs/}aGbl]z(έY׫W2Pq2f5DVL<R'μ4v/ky([|I)jeOY.:̡HІ*Aj3Z."U&8E. N4Xu1L ϝykD UleWF@w hd-VżԋpSMx@+xmбȾS "pɊج5 $(W(hf49T>&e%nVtH++J}pSN f 7HNɗl T)Xި!xdW:WkejꍔZ{QVBnA,lj2)-%MNvwNN϶N]H-_Q=k\bZ/`ZJ[So@=zjYyB!h` '6#LGD:0::A §QOoWk ȥ_|8{FKexxk9z';;bu&KK^vQ 7"OO; )2! j;k-L{vvLp{ S,JbD~հ$XMySD8ݯ;}@L=־}<{nAVkwLSbkݑQ({|S0Gw7L' OQNr큊yKSzɻzYv44:b+Y'vS\qi|B5#VL0yL&vVzz'aO6Ӆpְ^y]GTi.ȟv+J ڏ`%+og-쩛I؞ drzؐRhmu zKFvFahp(B6nj5F"DvjY-΃W@!'- ρ.w|N)iF!o?PS)C +qN TQ`Gz ^u>Nĸ76F#³u񩛖0lM ,lj>!c sl6=XCV ;Ig@LKL>﹇bD}Юae(YIŶt̡oʷMivéwBy?QZF*DemxN@`! ?FlXuMYSr6[[ft'dƺ]Ò`1\iw)y{J=G/'ӊ@>Bc5UZǨS34cDP9r]rsS}IȰk#wS5BlO m(3GCD=~lu#2KޤIَ7H8ԋQ A.X¿E; JFv?o<Ӳ +n3Ի0sLp}HL.Z<B~lP@Iɐo hx%=QwNǵʕh 7)[kͨ~g,w$_Y0 ~U6=L=MSNUiMm5 f^B'g읤yW-j|G|Ht9"sQE>uϦ%z)> 6fdԸ3F,f+n4RRǷDqȎ*B>ѣF:;:F O\3YhaFVoо0`)+æč\H-CKfc$؟hAyBU0cߡp9d8 3a_)>Ji'm8 qGݦmLk50*P֢Z\7q<-00,"us"Γ׹?r'ЇK?7 X% [.fz0ou Pi"C=1Mݘ M (Xj-:0exJ[If/xbI贩m&?qz~΁Fb8f8|վSPFpªTQ8+prT03ȁTʱ|$)[2l+ЂGH&gL?ڛgKۉ`eҝƞ*_柨&t".ņ3+%ItYIX$a̒ҳX_LoYS)#˒N`f4-K$QO41VV8 `L^':d[W"`T(ѥ+nSCFÔ{ټ 20vYk+B*Ȫ I4jP~NMi|1`9sݨ x6_;r{ yY&4nFsDaU~u3&Z?'#mNꅴD Gд{bZf5*mrRԴ匹 ;E#^v#4OP6𱁽>1 fxK G;D\~⅕5z|ݍ#U'@+n*n\:;N:ɂiɂeMX'B[9hE#2ϖĔ*bWulƢIvP5 & [Q8hYދ*X*:t15qӿ0NQ% _ )phnD:a}6ގ~$x [ As"Z]{Bf4G6:u,boi [+望kSl2[24M))#HAƽl˳㼗\ayI1'4Y x{ړfIfn5K^{/d2^Zy)Vyzpc=Q $oSA @9Gh3Uj%8۰fwTc; #6jAF)oFȐ4 [E9كF.4YI&,mD ~DFHYC,Kt/T4r'K!q=^dף y!..|yF?ocM(Ë4Bc(FTľɨj昼a7F-iCؑ kiDtzp\U^ĐDnw=y0PORϻj{Q={x0ȼQu: gB~7z q p̥Rtx_"q(?9 ޭ̆_U|J(4Ȓ1*/ r̊Y8Q{2Zwg7Z: J\+R:-͚ L{pװgܨ1(W,~f\ ϑOW=31=p4Uusr"yk!H( &ι3Ɵ7WY%S cg'GѰk\D$aj$nK<(XͧH==&4"{z[߰'O\ՙwGLg{f=Y}ϬgVK⮇ƥYшq%3=_j2us5A!."*2 iBE2jXa"WII ($3 :Ag( */:#84ڽa>"U0,4L;DOD-H3̔ {IddLՅ-eа{7ra.U-,ƍFCF4^3Y1TeM:S&鷧w q'7Jh0 {#CGEA`4ܴ,;Ia ʼn(K ؇Q>}R5 snjǹ?N2#2;|v͟/̇XW;麏0|8Tz 7 [{4z.D <8)gR0VI* !`eRXUL+D?)Y@K@^HlYFW^ưLn3 )!SYux6''(uK>H4- +tmCUi_´U!\Z`:K_O#{J;۩j{&{ ' [*ND2iqp'M$Q l8>>y>+Edg>f/&7#q XO>5YhLqz3A }Rܳ'6z(sdǦBCNڹhMwN$nVT[!6;ZT*wl1ΜqhQ%&#d \ZDۨT,&P/ƛN8QؾCҢa *󄼃VdeE:6B=$ͭ?jR:x^.V-s;q.7D[ LLIY.ާ cG|K*]@o[:Il"n<0B%teٰdiF Eg0G?$(cud+e{|Z䏨CBT\]]^6PEI.z*1FEAL/DY-xRx@ۻؘv|kp*6`LAq|j7Go#,|^cP|]KdxykxO{prnƇ8[H&UYǢxóhqh.$h)5d?O Gn Q4z +\>/BhRۅ:"jϗ>p 8lix67xԈJ. \QiWBoBJ>-\_+=>3יp:Y,g3K%o H"Z6iаFuOր]5 |1oA[1lm?ptPR]vR}&ޮl҂85&ÜUyDsRR*ϑmHCGǻUm4:Sy)&bZ{ *߈чtGN9*(nplf.3mS{\eHkb+:Uqs>'{$Da,WQ(Q%c$FOy*om;9Ԩ*Z &tW!"YXWM7o Ư;2$N&^蔛 X =| @dTZ%~|3([ |~"0"LQ=Mk{&J5)0iƺNSVoWG' 8<}{}"%HAVPŔMu&] 髟4偾)Z$MKd|' lD$|H55PYv`XpHuyN37=d 'jN&̣nn#Iik[Tb %M&`sw+=8<: s^#}+P%'9p 漺jU.~'|܄D[k2l5&|4 ,pd1r5f A{B ̥䟜rG42<,J^y27-jWPqH 8m`aY/a{ky ,''zm)b%7Mgfqq<;?;_>_,7VDh\YmE|;E4W.5O~.|9dq(Zpa$ |LJG'\]p26q:Lh N~Iy69_s׸K^P]A9b ZEt=g:/kǸSζv9:}6>N2GԵGԷGԹG;tP+Neؚ"8MaH Yu7I2ZO9BGU?G,&RYRyhXr]|U 8ab-WÓ_O6TC10B"d\$̩^m~:/ Cp!Q̓ͭ(;lO %VEk(*q*] Dv;HMEAFBe IywЃ);IjnDPYxp(lsV ޭ1*h;z$򷞎>h… L rAh'|@l!*g4X2/bz)ّ(Iw/bEMgj"yUj"Ps" ԖF-*IB~hXWbq28,(o`hI+8Pontim:3X,ug4Uw.<.@)0T0NnЮT;i:JXkz"'/d6+T!GNW&颚"rD<׌Vjj)Mj' kUӤKR"[[!\\(7l)|\ToUb[%.|AqӻbP5 M)t$tJNw.|=q2v6v.`Br~ ?`+[?/ֆ=>U]Rt&9Hb&<UD(eLQBH#1"ԕzc"I>ԣ GN 838YDıY2ꔯUo Yv@i]eB6g3d={[tc>N@f E_p.,aޭC@z\Nbv ܶadd c|LSuL]^yZ_gf=g3{fmr͓}e3{ ~ZMI+I|!R]MMCIb7Xxms{~`q5ӯ*]{o<+c~=p*>~?ϣM߾/;[Զ?2}On+mP7~qPքNJ)žP"2(hubAs?IÇ_Ŋ 3*k'poᤂ@25.wߏ8Su}wN<,]nssӗ׀g~X,ADN? nC!-EUHZ6sG~S\9}k}k7$qGK7%:P"Gƿ7ljUq0hAv"ucÓ\OH刋i!9#ΤrJ /'7x)eE|(ToU|5E%fsU ۬t5Qtuuۡ0ǨyFK!5mi/DfLUTFf='` 3y&BVK(5 VZKP5ą'|А훢4R P5xj kyʼ ASG}owcs}|ȧ^.QkI=q:(Lߞ~}n_Q-~].+8x>'^wKg#d:l{k:a*; 8mth[49baքZr?CMt?S-?1|L3?3L3?3L6?V)ބe6|cC>Ht5LK~06YHe$ج`0P0 аW(A с1%$ԛŴt얄l>c$Ov1iZjG"Ó eyl;[o6SNT>W\\!7W|Wg[SP/lOBUPe+èڂá$iaHxF JMcm$1Ѐ±r?QnXt(Rj-ڮv\ͣ° .w{O; S馀 1vEk+֨b2Zɒ`*y :&#* 3*дGq`^i'N,"l j'5Iy"Zv[B! ~ uJ؍0e %cPVޞV!cv;_9;U?us{[/0=jf $`}B  e<5m E><񹮃ʠpMW=^PmEArra:mr޵GJ@d-] 5v0J<#!C"F;W6ޤ'X%=YGu:1cn]N38z%wdy^&C</xDj11yMMM<@^W[ d$y,Л)$M9MUk׸֟<>jvv3 Qg(~ VCmGU0LHLG̀}NS}NjOd AZ-) 4 :i3BtFAXD2GF X~lo~Q)u_  9[ɬܸ㝓8.]T@oSY,LWХMU,9NW,fXT9mpLӕYUx|ƶ4DuEK HLyū*84[0Oyn7ŷUX8yf6v%Ò| Zܵv΀v[n̲9i5d3rBw8M%ʇ5.!4㲇F/? NЇ;4k- U&T"Kو4qQ$0pWkʰ.16[nc=nz8Qd1݉ԙhؐ3G :ahp2(mQE3Eg7w;q2nfK4{z? ]feB (ƔN4eF<4_O/͋n>Vt5.2C#Qo9L"_^̤f\:]IM ʑEh{1r o; t\r'8iǧ5}uzpδ%,N/0ŸG&NMXl7^qyN(DxSg7EK6w4gqۋ~k >p_ֵ Ntv6E 妌Aw|:Ѡpѽk@(r]_qmjn瘹>) R_'+^jef=>3of7f3CQb=e.AY^'' c*Ϫ^2EY{sUV iErb2#g*8m ֧gZDI:==vPKuH?ܮ 3% p;d;=|]Sղʚ݁2|±+Yeeyr%$ΟQ^bm:vb Gn]J$CU4@H:y@UUU(#,c/c/N݋e*WVykx}G,O] X["[`dݒO+/wa= ;>X ĝͧFm4p'Enz0,":7'Q5KbhLQ~t9tgŐK(IywCܚ=XZ)" }aԅb4fτg |zˋB&^PY1ՎacŭQٲӽ{W:ګWr5k=3oSKV]'uri2%ve<#ZNb|%z[!uל}碫hrdOSr#A4\6S-"z?ZGOϘī+<%KZꕣ@6Zs}R6Nǃ ى<Q hfQ]:8^yoKݳ?ҍ;5oe‡zʶXSZȲ3^e< OMo1fsH[w8Kc6Q"1-qJn.!+A!o<+Թүߢaę|WLe̚@ŽIN=+OIZEÀת9ދ=(9q܇=h8ޓ7ޓzk7ޓr=6ދj=i6ޏbBn(ZL|#0?-sżRS,9-Rǻ@x4>npѨ>,F ĩ)HD!tN5KsV>׽cT?;IYrLʪ>RCzZCwN`_s"K"7j@N&w>|00;k7 ^M8Д fޒ^!<:D>E4ڋn OxH~_?!l?4Lj>աvTw*+? f$N0'zLm߄\i1lJ ZaC3H0s2Jw8^n[&4kbyU~vfavt=?Zf&[2<&XvrI\'jZ Hِi d!S))pSجGx`hxa{[C9 ;HD45WXs;Sr8sfM׍Ö%"P.z1!7M ]k${͌X2;EW8(I ɲ@O]JۨY6 Ӟ l*ᵗnFdsS\)n^o AdS/yd4 >}˧$9 7b9CtIn?]}~~;b?%ؙnVq cOq Wҥ4twq?,:?;'ՙ{|Ăh71W)/q?EIt1zpi(J=IR?b Jޑrf+p}foA"0