#!/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=9ca340b41fddb24561d2c672ae1e0a16 # 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 +d Y85 6W.%K.,ߧ&Y2¿}C||1۴pHp؂YH3 i2`_Z>qȄ!!v|ˠ<2|&$ &5溵B`BA"!!~ -0i!LX-AdԵK) :"3!}jш)˘0C0}X 68R2hHCmB+EO X Ă1X9S D`e[R Zh|. 8+E H"p= ]K>BD:Ǒ|qA+w䳱:)e=$҇HR2jؓ,)";qW_T 8z:\I%ܶ䞬~d3jg;O #U{GÁ"d++^[@JR_%eK h}i 3 l$ڕGRGEHU2:2\L$=X * :I}վKOJ+$ġUVǪD.."I9%„6V$$Vlr@2>+2Wh@8` EWW=QR2X҂2vS+f dlR%$CE?LY1x9+d Bt{.crAmꂴ Ez5{g-HvF#AJ;0ˣ t$Vn%%Płj^!he*i5娬rnanNg !M+4JC0e XͽHP>+#&Wߺ{wEl XÁ4cn٫G-qns,%9;8:nU[/pM=(L˾9*""yK HJd 52`dN3 HBJ9@r!Y+l~Gj9@}r૞`4_1)ѳ̀yf@UsJ:^6穛| hrFu=G̗E{BGMLYԻ%e:yۃɁ6$7Ûo`-/ pp5$r)Ѵ6, Ӕڥ_@ C{Dk8݋_3\:=}iҬ.wCţπ+\tJP2 HMM,p!mB \C0" d!]6'kdc!$WP@KřNƲ1H[HSb8p6~`߼ɗl ; BFLaG4n BԎ"XwAEnQB@vpֳn7.xaYTiB#qpBKpF NӴ3 ^XK0}l Ԁx-\b%ꤾ€HImuE!WMQ4 J5Ԕ2/Ih LNT nZM'KeԀw9 CQՌ5~5O\O=:YXG2SՌ)߭iKplŰ^hΒ'&_ftn-,9]yRL(Y T,0y0 H c%RbL><uK%mh.cBbBѴr%s2+@9ܚt%MZ/n[EmR+@np!c+>.Dc!)+兒 f"YuѐB-UC%GKbDه? l>I|o6tFtγ}Su%Eò- "nk2!L6Ct 3p,V3|>\ڠPK\E +5Ȱ?""Bß <˔ !ȨƝq3,e>teaXH|MZI kֱ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@6o0F?bJ7a>Xeb]Kx hns !$HL#%&Xn_wh"bRby.-͘b\mC\++K Oap@^f' ~Ҷ+y)k-qP)/gЇvU'+Hz-(  vR?jGV+uުva1sXR* N嵕+VBX]Ƈr] G I=}ICZ2  U_32% shWm'RO<nGTu3YjЕZ3Y}M%uתb7;-IQe>@^Jx!Scb$f:i74i 'f9%C8Cpߨc@Ԏ~zj78h"kzs9gzvzb {<&pB,F^|̛Z+lk HmE.Y !9d=|Z!ݳ8~>R ?I[*jcd8`? !óG +L7ͼN=!+6Ml`(js>d{"Sa\c >y*L`'_$Z4T^Q/Czgy(kcJβF^8vtPv~^KXL!i10DDZ9ֹ~8SîZk$]${Y||  '"N I*T ?q'lX-eGNO)p> nFd57D7E"GF,.1X Sʉ 9Zу4bxXәdJS1<FMz"*Y%)S/<^j7'ͬ?8CHZ~0ZYY~],>OaQϋ = fƈ4 YSS6HRZH2w6ҁ ]r0KsGnɍ~mu7R[ )Qqxuƽ(k7jҾGmr#K*x`miN}Nh3ªf 7{c18sHhSB]{Jy8ݦ2 l UME6~pbb^CQ}K[Q/&$h'ɦ3d-q#TW!E\ZOf#J쳓M/xb<_nwwnoU"./3_gI5T2~dbnR}ēp,wq#.< 2 B봇\{EY\X蒆=s9{/uFR[{e|op_{ RlāAW[x ޜwW݋6^_3:1ՠ;I-'<ع{?9/~Zs{(om_A V;?1OB},99-{W` 0{{czqO^x1r0Wʧ=+ș痵feX Xľ-> 12K-g lр[j iLA+F+sB܄-}B&p5aW\ʄ+]Pȁʑp"A͟s$ÄW# 7JI (-Nm\WbKPo%UyA`|S6K1p"4r*P[L6mlv3Fo>o棢f.y qsy/o".xQ2t&8LSţNЍlĜ̾1!鷃[ع*aN`2fMgErF]q¥O\_=X0HAlMl~X^w\f޴P3PѲ!HGD 3s>PX==K} ͤOd.AkN2uY>Kyo];˷/ַ.s馾$ã:x\,U+$=Fr6l?(x|<μרngv?n{|o{_Ƒ~6NA,I3d`;Ԁbmb=;[]6v2{'Y^hְG'﵆8`KY_Bfچ^ ?z~F׸2U_Æhzt+zY?9ǕG*«r)H`T+YNŬd@1a&aN΃LW<<C-llh3F. tK`fElJ p}Ht6J>tl!I>y}-j<[K8Yl!, Ԣ0B0?z U-Ep@wW\DDTv5 »^Kp}XXw(DRn&AQz OGQEUC d3`cQwf0:!&|C N=Kp`O ^K(H#hZδ-,h_%lHHBeO vCPٔV| [n)#G`4 1'v9ƳeiȖ]w0m1ju.`)ÿnnF&;z,=]. I* Z9pJq& #cyHcA56iL:|* %2G&TV2G+B(HD1A *oE馁ʎV ,ʍm8*2O\6fx%T3(E88銞s>FxqCps3>#wV @+M޻VϏc!csxtP?]逎HMz ;=oJ 5_{͠f̡]U7h&q O-&$AO1,|=+ ~j4Tˈߩ|;xR  0&qnEU>2K˒Z~eEW/#J4?=`0 * 4g^h^.|oDX[f+ՠ@''65kbuSFM`r˳bx8|jؔ"tMlΰZ]71d̼7o;I?fx݊ju|}nG 7 E ΁im_ z3E.vm9skV)!*1ZS7jc8!#HU, dqsw1xE ;cxetw(a$=чSU6s0/=eyŭïQ hQy r0;''<^^v{$ kAAAvU(09k?j0?J7Km_;b&6Fs"3e./ffL* Da_'^I<<1Ay75IsgI* Ӹ?,q640pm+#]b%5/.H*j;JHڍޫܰH)}33)ySG8]ct-yVV_#&T :PV/0Iq ^Roꨘa#`rq(͡łO22nK,EK(u?}*O~{~RUQ84";Aiu~֖ε _#zU֢>|tvy/Cپ4`y'|f Gdh 1T'4'npF6h.Ⱥ}EϙPZZOpryl \`upސiߣg leQV9gi^.qZ+fxyW#tbJPtzsi,Cm7ђ7 2gg\dHKFѳݓŚwNO[)ckZs:y:RGWU.'aJ([(\1I@e:,Ai\)*_TgTpR?G*_};髯!w.tYcg Zt,˚e,C.+ms涰yF|jy@cfrҴLSi+w9T݈h9)̔̒Dz|N)uֳ)i#|Of,t܅r sv{ qt*!dnhXeT!.1#\EL'{&EӭzlvCڔV;՞oc:gVpZLiY$̾cr̗Ȭ âFp&=Lj nCo?*9eN]O*TdxPۏ" mV_$ N(u%B H)\Th]]UVYuNm >'yOZ@ (Tɭ?HE# dC0̼҃ԿײuDyרE OQo ۆ]~st23&ggQQ/=äQ3,P%XL;!ت]BC:dX(a9#/&p/KuF)Sp)$j{#ܖ\.;+x{5 BדBi]n*0>Qхُ@hu͓#ͱ滙=,Tr/VUPJpU}%/2ƣf z&l[KXsnheM Q}ӹHpW@1smg$0I\2nA+sc"r28H%yTGNTm(eK-A+pG,19Ք (_l*nt.5V̇6z<%%2K:{hπu_(ٝ/zn*)ݝOyMR36;˴iZ7CH7՘qDBͲ8[19wz\^9[I?jbD~F*\zyAпpobt V(l~\?mrzS{[%.ӥ)0Ȑz&2@6n[7'92R"@AQ0ߟ3Z)_&*aԤϝUm[uLiBv˾a[}ItޖS 6s(IE71Te&T·3hXXw\KGr˴?ݲӐWfP0XFx;[kTU,zAFz|mFizbmRFD/U@w #a9s k_]-ϽЮᖩ:qNO7LEz#j?cep=?}}Z]=| =8"y<\| {~JԱ@ڧ'wԑ:=ME4)x;xiFQӾIQuVyZEÁ-Kg>ga]}?09"kAxH]q4JAFI(2 nw)%2FaRxl[#Mhf\{zDPq-OAMM{dž1+wۄ!غb–0w H!"rc$["vkڈyw`[\f2GDŽ,9vlp*iEw:Y)yvxϴSB9D'qzɸ9Y6{-4r ~ugvZ3ƫH lor_MYGh`f^Y% -I C!k+%MCHt6J{/NN^/TzyNΎ^Zt/ZJ7 Ԟas 5n4?ᚽY\fgoו0Z/#G+Xs[!;^u6KHZet^?w^YaDTw.[xP]442c!X ?<\yY300000000E?La{JVI$'w~y vNH4 q `'!;?:|Ihu%/T7~A޻`]I=}6Rq(ot)0j n *L0ΔopU|īӋe҅ _PbӠ-[ǔlČ~ ~ ȹZvSwZG!9Pr9J5-&YoLjG/Th*(p*efF5 oH2ZeGX^W-k[*^sAUbLT ލSN(,wۭi}垎P_RoE6Kky;7ۍD %(gh'>;:#\T  W3v)q)DW鎮R}vl~֝ط2f4.?FS1:tptp7afћxX #x<ރ {JADW :6׳54 G8}jHLQExWz=E$>\$Q_$Du!:g)NC(v ~Z"9Y'6?wb7|;~O7P%  !UhIمK7!%&@|& ZM@id>pƘ_pAda7!ԡܖgt=;v_ bۤΠrtwlLnp: C`*Tႇ0suU`q'JeQW;'FJz.Y%k'iN0B cQͮ'xÜDr$PUYX-+Á"="Kb1Qhq]3{DvxKɧ0XV|w,nLePU񹊓J:Beٝ{ȼ U]rDJ/Yi2pw1oOI;MeO85d~fcoD.6+s.qɂ`{YfN>:U8^%yWuF: BrrXpqBŇE/2=aXE?R#{.f$8?^{!akTte/3k5f42p8)q-5mGvL#]DtU7ʒdv!ŵY2HU'J3wn#qQQa֬I{"R?+]ʰA^O@t+[nO)A0fp6z=vX1pjI}@?:5 *E~9GV0m.B:斊iA2\^ 㦹JVr7Euęgɼ2UNG;*ق邇 RƼ}Z%#U +79~"<[>!B޷ܼT\*eJho4?ȐEkiisˬR]15Fh݋y6?Y,g3f?/IxVyDOg6~tF :MQڹf {T{ҭ^k8o@ ;˝T9:xdN Ba?ZVWň lj>T+[2Ŭd ʌ&^QD0 )JMiEu()_sI 5S-wὔ㷔D"S>WwO+UM8F/N-ΑV|u $zF_I Kש>?.^sX5bt]oq{G;j1ۡp8<H2]B{YyTin$Yzy6ʾȡtˍRG`\ _Oh:U`rGNRGL4k^\#Lu2NkRՄ~Zl[qU7%^R(f)/Q N̒TO(+&"˗ϧ;5bl%춯rxTߔ[t|<-^O:F^V/F>dݥ`6& H;*; 5xd.WM|җ@b!DS]W`ygn%Zj0<7i/99ܚY,~1s۱3Iey1-B:a_b**+!h7KRDvj85%EY\"Lk6R"E^Ix7kS&Ԅ@$eadG-_55pZ0ϧ epe2d}uX#\SztrO,_j^NN$^{f͓mѼܤsʞ ߡ; luC'͞*T]r oBoNKG&R-AlN3n vmN,Z݈!Ouڤb')jd|s]/]ma`xŞx>ojF3 yV8bP+pve%BĆyd?u !eqsZccq36h;$,'TJ0)Ff\CW*=P7еݥ2imՀO.lT }wfvG,jQg#7@&Zm{!!OjwQvȦ0gc{̐UI֍ޠ~‚ w'rퟞ᳊#m5c$ŷw\z싵E&Wۄ_^F;1ɺmtWˏ<D] @5 6Wr/Y-HVȊ< G}5S4AФ#Pe)L7rYNa!>z;I0/Tբ BS\{lKnPa &2#X*fBjb5HV9x eA-N9p-X_흝q eYo(]p|skE"x*Jސs]Kc*2 ^VD!%WkM Hz+TR֑R|5_㵇~g_g?g3?R?,r#r$~b\50/ nqx|oCd\l잼w;'{t9(0.ST\jmeŻ:<8=gپ.}d"x=U *W..گxnBۯ=D͙:5c.u=prI{U~p-zUM73 >0=(SY}d];Km/ڽsQS&j[%g2IǦ`Z?މm<~pұy}1G6uJw` n돌bfNr?\{ȼ@[CxL 8˱4oeF?^mt#6t|(uL *G 'ͥ6;u >~~x}}wagM%Wv(@zy!ɉyiz[йri7Uwq@$P-(ByrkYO^op:?Z"A5JP(pVJLMZQYzCaQ=Z,̏pۉ`%MCC#}V5z/Ǒ< *$ @h?RR6Ol9*N;WY+W8B*, ϲÖf v%<A3Wuڪt6+,gtRY?4D(Dl> hذu7@gր8x K2,Mgޔo7g_m 7jI?얶}P7֧NΒEN K$x탽`Da^ε#epVJBw|{Ӹ"N,|"Bҗ׷M'$[Ow:AL(8Hjy-$lLFc7Al)Tc\FQ z2鐿 {?>[J F>)X6j>:_?~eOZY{5A{n4_ /f*0>fqqppX*~\]o>e棋+\s Vdq*? ȞS :>>Oa9xw갡y I74'asOӼxd?p%fyt24y< nF{YoV҄`@v~o02&45M3  PRo̹BWԵ =yU*KDo-En9aVlu1N3Vy.|sRvFI7L`-(9T :I+!{g .sZxWώ^4 @CJֹ@yGVIDKƅz pg}{qzV/b9ZpG n0%p!&Lno(T2qۻWh@Ӟ»K&b+nIXPحP9ifM np@> Q=0$r SЁt4tKNw/|U^pxZ[;{ Mhn_[qo75  ֺUf!4]0{isDI}"B7ly; _IET( K&T[ZC-5 >)$#`< Ep(͝7$(1 ns=.r҂ıY3կ˂mVvN٫ZTeB.3ڶ{;G$Y1˜x,㮞pdYE邎q?ZySmzo$[\*s)Nß6n>^}ՙg3{=8sO.{wo )%dˡ56)-4V׵d''-DnjRIQ=U2Ǜ ^K@"~v PJ4(C$E0T9Ǹ!Qou2aaYRW\ xWh +-%)t^o:7pk7{g1WuiS:ic(p1jS1˸q^RןN>(OP_>7.K-RS-=يBV~ zO0\Fj4Y_\~N*}(Kf#A(/i*HY(RvӔ*m'# if%i<`-?׳B01l%й 6;BTdA@9O_7Vk`n_MF*6nk }d5~A"!0rѪR ݎitOS:V<aQt}H[f3;1F(qIPkrVLY"gmJ6A0 Ah~R@#Sc jCpxԃ#6nA!&2;lry+|« 4K7Bof,Bto{$7B\'KqXZUVP| rfvcm8h)-繏%b٫%_ɔ|C=|nu%@tv cy*Yl$ef> 1x5nќI6ZMhxe3)TTՑ"9:Pd27++%>uK'$,ΎH-.ϭDo^WاzybZāI;.1+7Rjo6WX`]_h; ܴ-En9\Po^5 j4W usۊvoQMqyeql);I93Hd-|߸qwT tk\l(aa+v4ꢗ-SDIkYzA}+RK;% +nՖFVq̞ ;1vV9f;ƨڣ"bRJeW;O &TP[ P&ݣuNoZkutзs?B,̶Op &9dN߈)9|ўG'O#> RGu-0$ V)~30"K>qc}v1&oϰK;n4H-X)=g55wK'UOSiQhf%E^yfQqLO[/LA =K/0x[nu/UPuNd@( tl}uisAJ鈟F^g{Ч;q3<~s;O)BՃ N@P"7Q#9'2j z<$㴉5qo|>dR&~IهT'4 @B]:󆽼laܕU|0+F}$\l }֖ 1+8Zu-a-u  -6#$倩g'4ApM8/ћCS/U7L[D.%Q쳥@[6$փ2fZ׵@%8vOT7Hp|v w;z`}ƫ\g?9?v7]}߫kVY~B߳Y,{=E} Q&Sjx/>= I uC? лL2ª)YE&x7#y6i{kTgڿd*UJW*dj%ʵ`h1˯TS}C'˯Ԛ8R^~E=xϩq 95=}5HԆTwI{ w)U8@NKҊ{9+V%4@?yzK_ԷOJX3ËTz;~5B >>o0T;;s ?Mz3X46(3+з4cs;8?*A]Q'#RcT8F-jyC Z_xf8b3n쾨ϋ=%P}ӷwȔ 0F5" l=ajܥdD&tYf +Ps_sV oY*pj]r)ŮLFIqLjQ?1UO3jB`kFRQƉ|bc#0Gk这6rl4Xa?j-+L5~3י/d,3K0,3ש_ @^"5kS^ y׉5|C2UAvCUq>TjXoT*_Jd\OקcT) ʱp{5DX!b^.?&Ja`'r`F}8@_i7;(- ǧKO/b5ux?+ol-=$WVw%:3o; QݸL'7#[<*3%Ԟ)`O>$EyfT]ruG!k 9ko!8;i.`}mbe%Wְh5~WNrnsKF`i\0iق W'')-ZAݓ?g#GdBo;^NAד=)`UX퓙D7}H?=5-=fS w{-SZzYo1r&C䢠mA 8P`<lpZ!%Ttg*OaXU6{1$ 3t n!Ú/ ѷC$n3'h; Ȗ@ (  2֢M8h8YWT !]2@\'6``ڹ88|L3lOIGeڋfہDS')>}4[7K{&-R&.YDFCGFfi%lHkGcKH&)Jx;rh.ڽkothq I j9@r=mnGdGw> Śn e=J9 Q:+gn }ȡθb=ѩmTJ<ɚ=hMAjuc3#cG0] ]˥ƅew5|e!D+ |GXB %dKE (O40FxF(w#tvрh=r64hf'@'Q m>tp+i N_GE28JSaz"9E(/*`)H%ÜJ쥲ODn*Jފ}Gee4Rp5V:gc?¶5LEZ^xA]i Lj![EGG&!#4̜xQj*W%4| L-dCE%>M08|L6SXGVNAײ9+~Ю@ܗ!dZW^Q-1Y(7,~ 6Tc$gFsK1>a!`(j@d*߉"W ܃f@8OfyJ#[̏k3a.RS'MV'5V= kp:̿`wm%L| tJ^+Ni8#MЉcߓ_h}U~g3ᅥ{=y}ϼg^3bdYtw3mC/ =/p x .ɠgy;9֗ F==5[NtM8hq(mH>pz֎NAMY$p ei8XCFQk ~> 'QyIg+wUR*)/Z*'uh{"].D9Zxh.~:/f#PKzHojucd~K:Ki8<'" 0|1 q+֒|Q$F}fQ3EtcM:l/?#_a*쨎[\u4<0iצP&5vl@dmIJB( 3H >D Qӽ孍Hr"7h{ClvGd?*|ߢq rT]4bK0XʴI(ؼ_:\r@LlC,TS &܊PTխА`zeK*v2gn4 D?~T>**\2NR6107+>PnڷTǭ&ɞh̐;Ays?? MZ)6bS\CSl6n.g"'~P2m1O=an;vC6rb"Gz}*c_࿩M;mɝ3WEd<[^ >,rXե }dÝCZ㭕o7tUmɶVsI.q^--'M5}vc9m|6~2%ld7 ihJm(_r(fhO`fF6A6Ehceu%pk.Q +DT]*т!/6.NzOtCF7S &{/$pKs^Rx@ݽruaV7U l,KnFXX_7r3%2Q.}S9~Y!p`` |Vr=v{#g{g[oSq;\&cTKR3óhih!$h958 GKoI:m\Os(Х twhf{L LZm}Z#:X\QmWhBz;~A?.64>E׀|pDdr_QmÇk~[r}'ë}Uvmuimem5mcm,jkTݿ Ϸ uno?Ϭӑ;}~_k 7x!~Wn\繻ƹ gwv\ߍ;rt~nyݿ'wvn\(e4,Q|sw|Fb7fk@G|jYH72e>*Nc׽h]˻'{0wY|}:;/qo%Ŏ_1Gѫ::>.~D Gs( ] lhr3}ۛ]HbZwo9bfDaFES]CE֚\݌қ(z8X_E@읁@z#ZVH 7>?Η=Yy T6)v HҜ{ i#:S>\ݞUEm%8IrqI *f8r?^5ͪXIަedI8Ub(^SGv(X:d_ 7Io5 ='ϕ;oa?GK}]zF 6}VX|`/gXX=:?r %.dkn2W>>y5m[0pcxWP]\h궖{kPʞ3;g6T0