#!/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=d50b4196bada61a716bec787ebafd58b # 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 \\wƲWlH DZ{8d[/x;{Y[5HTN޿}fv Nzi"η]غt&moo͝{bl~]l|'ߒ#+pEOOD۟_E$*:<? ݋)zX{uњN"pB'r2:c7lAb:D/3׳k1YXB/" cws:m=/ɰ }i;e=##nVceg@5:[#(HußG@ KO;Ęd_&6*G_\;k1(+^KI<de30˴n< rL<ڸ" og~w$*?{&lP9n[͝~gem# ( n&[x% k*{vЩ "Ophk_p87)*V$pm q|1"Փ)Ӕ E2C`:@F 0Mbaʑ|RoEF/M&,(B,˄ ǔzMzHGKKI\^°./]djizu!?{C~ޔrx.hx~wNzV;5ln7}_Տ55c`XXv1ckvOʏ;$ C>CVl!EVh#+4wK4h'$@t/2O DwΕe lu2OLu QƆw.c80C~Cn)Q.?q'T&Zrztq3A¬֣=~;jkZ9nbx 7[6X'?kҚPu+E̋+Rh^GfBB5ܣ[0) 6,wV$n&=iX,u@ YLq_lv)woY< pfrAp[}uL݀5ެx!$gb1c#|RevaG},r)Ԥͭ5Hآ9hy5 ) W%wx0*hY{b'@?02b{\߄iZJMR1M*9cӬVwob8v1wcl)*CӺvrɊ iOSU̍!kоXxB)@6rFEx$KV(-G,i풤.E.+J?| r!R#^RCN3&-)/e,pYoIq貏'2rZP52QIY !aZ T|uP>JD4D]̪`[ۍC=CP?O q Re}zɚ@PLV"Fj_0c6+۹uxsq4 g1)*(̊`I 'YNB|VxYgœ49)<1 HZamqcr*qWQ̄L r>$^##FY{a$؏Ƨ'ZY½uRH[j11K:}k#=Rq`_T\pN?D4h^NփB*'7#t!fxLQ]nnKwF79[MJ.݋԰|8K3˼G6|AHgYLיe;CC&}Fυ %Q\Pȼ3D8ZIֹ 3[_X01^ޭ2Mhb2iRY͌cfNeL;ŔuHHF'1k_nom\K?Sp KM7n<x pO G}D,@6 ZM:[]*,7~B|8u 1W消Ɉ!5'y ?#fI75S'٫Ri6+"*V}jq5^)'-/R*\{_( 8C̽@U㰋>)IU8kT؝$(a.z"f4) Cw@YL|k'TB?Qb3Gwq5 ^AxC<\kSJB8FhܜX3D$(J\ӟ͒rl/ĚRGVDU:E piX|Tph Y8y#[f!}>m/81I) *^IvQsǕƏ+FWS@9A*͌*{z>T~) + j$acO B9EJ"ݥGr4E h|0zBeǗH՚8< '(h]!5=v BjTmH]GZ )ޔC2<w5޾|sT#ܖ[Z%=زz;bbDX Y:MrN'Py:wR=6eqR^R-բ}2guBarwGI \Ӱ 0!L.`PYlM?HDjfB躏SK 9Ee.SDjN?ߝb~֌HJ,n¯U3ߟF.K`p\QMӱ۳1~Uh5=]LIwoox|뢒u'@u71&%Zqi D̕&y\"sEF%uՔcbtzCPo<e)T+0R8K=o*7NMݕc׈+bN]/5̭jVpw"!1Œ9]Ĵ]|:[S-D fY^UŗrֱkqC^`ٰϾ/moZ)Y5 B=* "Ek&+-nt]̮kWo`50^NE@w߂X[be}9]KvŲ_KwA! jpl]IfƉʕz+ )ƾT-L.N\_(%[EH{7q)zU}y[G)ڐx$ b  Y.%WH-X[d<=K-%cJyڗS;sx[?l {s1X~+c`Ԑ.\@bSS<Ȋ1Ӧr׆tKWFqM7pz&OA~%4v\O.e7k埋DzPu~-K@ts&GG^pFv=NZ|PP7VZO::܈nyN znWҨ>y"hU&A[>ܦC^?~ՋvBmÃݸxcOl^ɬFAZ\Jȵh^PO~:?bڭ%,9ʕZ{HAb6itP_ 'أQi-ZG5;w6[|f X%Mt(X}i&p8 x@K˃s\&b" 2l^gҹ yKkp`fXGZrΫvc#4 .zҲiݳS2I~sSqv*5W#5bSbO/lp}= L:*P LQڤ׾IA /ܑs3^$wBo8qN2 2eA;hrsj ۹#HF % z:ݭzcnрZ,⪵B&$LˤqC䶂,GU3RN5 DeN{C]am炇r%T[>_dUuRWlimg5Gj4bd=kb6!CM=@ٯH! ѦKL5Lh %h8Pwjk2Y G:➓|ȇlTuV7]yw@JԴ[~Y!Pj}e:ij2QߘƇ\'$[.Kd۰>˴+CDM1Kd|a U-v@蝺l+^TF7dGe7vu {QZ#Taq :0"7Xһttd0@{.mw47\ԝRBf2>'w%s#/̵8{f h N(q 7aCAh*5Ks5::kg= 0>:VdՊV*pp&6n~ඌiV& oOo"AzP3BB{yK*Nڎ+t麶-V^q%i!i8$tgC|~Z$TN$%:pi[윦L<8FeF=zywY3`QބtqmI 4Z_}q,gI"+*͘CfX'ےxÁFY618zrcX Gv)l4VnM=:Jݮht);h 3bA7(G}!)t=K_荆-iE^,HHmorX෥ˌ\c[+3j>D`+-LkgNHЂ`XϬlMylk߃L(1\KQYD }ͬ.. ^^"!ʙ$fba\H*ne.< lyBK8e_ٗzu:r}πe_;u8϶L?ԷtojPNv0dR#/+cPd-Wjc>hYU6&4h!anYEVyHCG$O[ ]g$J3AR/jv˛VXD!p:ck7+гgֈ '^4U L)pjSJimn(5HPfyelK$LN[?TunGcX b} ЫӲkhIH*G! 3jѲ(z74:,ɶ˶!#n@eqlHb[9և!;:)dCd0t\UBgVT<>}mVD$~߾8n8^9[k"{(]:i[ &,j oϣЪᚩ=9'3;R&lHh/kX3j퟽9ޯy/k-|Zx9E jKJM&4lԩavҧinȫ)r9!9tz(5h~S  t2i."}TN!Led[Սu<}#S4sWe%}k˵ ͜_ r:ܜg_)οJ˂Ǩ-'r'Y0t j- "O~@@Irpͫ,touKѢ1(N/ }Xs{auƺ6xRI3Z=w _JN7N\:hh{{ Фb}{^L|nrUe\Yiil*m'I?6 uNJ V͝1>^Zر4U2)hnoA whY(f.y:<1;z%8bP+ HX$dG9<NDtMrQBLPɘowԪPH; 4ic|qi|ݴt5`"&k a5Էu Y4EMbaZOWTeXvgΨ-|g-{QnȮc>k,d|d͉p# f:T.+8:QWk#yEe>uӒPͤS?o ia7'`<*sX ?g3 >pA?LOI#`4~s>*,ch}Ow~$E~{+>PX4zFeJ@5Ix,ւBXq$C)(wRGdAh;9?><% 9h'"lA< kmIǦ5T )oKҫKh[ ?AoCTΛS98^H7uվ,/J}bԿOc3RK2Ie_Wx|XTYƶTOvæ*2a)_fE#7Huch!SV,C ;c.Y⽋)YA+s+d J c /j:U T LOJUpPN+לV[ 9f(ѩbŪ4Za(P | FLwXWVp51y0"lyEY= vEPMӫ~}ilRr] )g7h[Q=~mBhewԬ*Sݒt31U}bR@ E9K_+5:z]:]lUK2>5k=wERz^FDcK驖I+&NWv}ϙjV[SkbjrzI!'Η1 MDjp:~ܝ ! a٩ 3E2djp' Ŏ2l!EoY4ʜg[iӣ_aW@Vמ>d;%xXv-1pMFD#Jjaw4ϤN1v ߌk=U|06v%\~3k-jHxKvF0e|0< [߈ SJKӗ,e'uX_|vڰC6^$!V=æ&њҬ{a9HB ѿ@e,!t"|9xVkE-̒la/ /QpMK3 )X>ԅZT,抡 R B?m!_._-\/Q J;DZ5z70:،%`H3f%ج9V pl%AR|LcnEk2R!Y^vωU`t(W lUl*;W4#mUjde~)%s72PSU81I̫_O"ԘbB\a(OBe:;Td4<%,7JOTpE-H&FklH`DXwZ AER]O$6D3ub=]r5m?ɏn 3.^EuQ~-T`|w?';Nɍ +N~m^&x"ThPl\s`ǝ$E73փVxaT/- kF\=ݢX\yydͼL=ƦH]1"{-S3i&+|b:Yg'ݐZQryf5IRjZvǴ6Q$ 31g̙cE 7:G1bǧVO)s$:9Lj<2>[!HY[ 1ąWXم6yyFqRZ]28yXhMsѓXewP ]-V^Žоd@ﳂzDxq9]h"zcIDM"aLk]<"iR+(P :!PU  ( c%ZxS^DI-4d \WclM+v`Yw"+QaF%z4ђknu/uPs毣u0_*$d}`stv 1y`S%ȉ&AŨD[=BհJD{f>!VTF8s:#XP7=5|d?5aԁNԳ7+G/84CFpÀeU=Z)W@mo~fĬgxlY7TܳԂ.}S#RVm,1%pqi&.:w!@! ڎBrABA-Bh!ȍ Sx'-9;Ny Y?Ɯi ]2)A=9\0z\ZQ~2"eV 2K˒Z0! Nm ]H,|jj:~26Uhf. {T܇B?8xkf a[YJ^[ HW= {˨Rt~lZA( ed e36:j3:xn]KT8؏WcƏk3og3ߙw;%fh!P&$qmPrtVL7Ek맡7 ϋiu^rV,&Qnn &EsMK^:k|m5Ny5VX-x#HNѷ*~MWMy2;DX̪0Eiv,6e=oV񩣶>4..o!uίEs>@e4 EI\6tOv4 _T.#r(`sگ0ytO?wƨT$3-]{u~#9S 1?ӷ_bfd.\Ny>!czW/=jG.utEN y 'VUb'@_=a&gwK#?ZȯYXYl0|L3?3L3?3L?[gEMR',r`ak~+GBx@ fSu.2h^=iضHN{ճ8l 眤 6[p}*K(y%V%y liikrΖsE[Si _9 bhQ鯰ע'Z9j fSZ}|iЉl.DA c_jJMK'`閣<`5S߷mk=CL_]w`n1q<&N6^_{a6a%X+c:>MkqsZeO`I#zZFi{|xs^dX֛køի ] o {I0-R  S) &BA^(.tg+7z[+̆^=o~mwa|ts "/{z{pǴ~L@^xvX!u?iP}3؈9 8k6^Z_ B@@n9׿cg)Z-5_Cmn,!.IaQd#2uZ_8HQk=oňS81TF^V5'"nrXc<BN9s㝽uי^Y+:k\ 77B+((Xٵ[!HpZq  $W սȸ_4o=Pt4з դH M%w.J鍊 ı|,A*% Y ӶBE5C>[c\z-4 ra;,u| 偯ŨiJ:;GBbx-s-Ȅhi"k҇bssө}wbhڲAD H#{NO(NL"Xe/Nj"n^7{'g\ /z>|;flk,90O! )P4n3~-%٨f> EsY4s_s ;[1!%b6BJlccㄔ0|r 9IH Vy? )ML$ E^R[9T8D{Usj"JS$n+֭*80LL_a%$}8yWUNV.\dT沌p!GuR[5)~":[]0U贇֯ͻv7{2aE[sF^at:C%lmǷe.HJmYYYᩂދc g fJn'Io._(kd'!F}mީ*""TĽoHzrOd}VZo"d])(6A {C(͂3+ q5 uф[Z6i+LȮ̢2ɖ@\  0Wrq,A%mΰ#~{-i(X$ΐF*F< E/o_Z1VGkoi–F/ΫgEyĨy<ٚl\\ .{ C邖w0[ț zBӓۥ2]ͺ]նz[7M\V醤 j"B`({XjFqxl najI;Sp{|s<:.`r'pTs.fpMTF0(kiKڥ3hZIJ:s cNI EE#O8c*SUtQ<6bTJ+(Xe]rkg 1%8ؤvRkNnC0QZ'\:^#~UD͖Md ^a1nL?gh@6Da.V ĀM" jr *P㣑(7%Sa Q۬ݓO $50ҏ9|+Օ]yW>/ը4fw,u+̶k] V_ѱ)s Ȇx* P!6BiH:a*&$#!KsHT\۠ULoҨY6o|6h@lP^^&-\:ddWJYWTeB.S3Z2;{$\Gtj 6oƨkƢAD1\0nS+o!zlq;խ Js{]˼&y1Z *WP-"eTV(I|oD fT5/߾R-pnnT-+%4Vx]]Vk??~]5V;70c g-6q$듓l$O7f BLXMk~_R{} ߧ I;ӧ1lw1ʪ)8 xǧZVT !A m.[.{=[SfxĶ+peF ]\4HUsȲ1#s""u7B 'j>ٍ_<9&`8#ߜ^ܰ$; X2Wm3%QyDae] t^X蔥plyHpwKVウG?Pp\uyZcsRdSp<~T'6]}&7_, ^ra4YTWhwF!~XCVgAPL騁(d5a|h"[7ܨP_V?>#۸^N7-|hK<5Vw?TZ^jfQ:iı̰ ɟKG6!##3Omek"y A0gٿo-k׹k_SΤ{Yd,Yh-./Il{nؾk2Kޠechn;]$3onL,캤az!3c-Sק_o$$dWinkOל FVVFwX\&Cyu|a1 }!> mf cPnv~;4.yĂr*3]|An؄0N`?Gq} O?quM>3L;3L;3WNδӽl%U[3=un}n4y~Tn44ʨP 'kxGwz{g[]ḕ ip2N@7Ѱ9G0u-NuFȏ][2-567TZ\j5;Y5"g4n(4zʖ^QtY萀h5Ne/k '^anpJG.@kP1rl" ׎!pڈ Y ~G:@j/}·&7jYm7L^H0vB38!4x%>1^V^lQ7΀:=3V.c5_RE9EpN_Î$W-7?Aݺ͹qQS'ІeYVִW1w19N &Ԡ֧}WzTr#S8PPiv&ZZM[So5+"+={8.qRmw]ENSދm)o)EƮ?5%5eW'Q볯k@5)v+vyl]О"X{eW#(zWɖK/q#IيW)tfU9z8z,@kٰ\e {i>nzoJ>Ͱk`'t5^jy@h4d"Rri[-K ܜ)FSo)^ܬCsl\ЫxQJ<:9nɮ6+$[&"N9 8exf~b.hR0){="$)!yA iOLbX–0*~CeElLcY\"B x,"\KFT Y:~oxn;ٷhp6 $ vE}g֑5nXup|fܷ'YKCtI*҈'vRF6"9vj-qC %>:?7:GAT9Bu?h2$H> Qf} B'{YZAvy!](0=xI5`(J~(AGuD3kd.&5C]-vQ19#b(p+Hg^=Qʊ4xBf.I]/)GaW0d&3M(OjuL) y!٦ma-Ù=7ДL&pG=D(jX̡;Clrh/m0M7fvHKCyQbD!)ZDtKEIpT;@poIfV2a!4i?bQ}vfOխ͒L ׏0!t$cd4"I3WJM! I4spv֒A~QD5h`WۯHB\~X=i.=ޥ(nΡq6W !PJxoLrؙ{vL8&:A.0:W v 틡X'rH2q|L yDu!l"A;9E! U#r ); EV!4S@u\oK 9\Y~A@ok_##8娡 y\E&3JRVdϺVdbaE.!XID0xmУ t Z%p#閗칺z;g/m%=K1eۭGY9/\{) WSO&G@&-g ojK3ȹO<:÷~]ؕ =;H]ڎgmuSȆ` 7XEuđ'2e&5zñ<=aQX)vV0gꓳF_grdR1KW' |B^W.umdaP_Vh?k6L&iP׭bFGt2VYZrLs캲1k@g2c1?f3ǟO@ S)-`BNȍ?!f^ .B|su`B/L`t(ƣقC*Tڗq[2gֽ1>ueP k+o@23|mZя}M W oX8\c@@ [6t)[!OЙC@O1tsR"bvrqUl; 1J[FL?A/h K,HJe߅%<$ !i#Q!pϣu G (Wm-]fKl?Dֺ߲L+LrOFY5vh.R6 ]܎nYBX֨RfS(7|}KMz=y nF/#w4R,NBlwvOHB蒤Юv+;U$8[6;M҈?8SEL,wgO@g4M!P0G:iē5M<Hcs0{ɃXAbf'Bg]4{fV Sk!|(5H~e lj.w220h8 6#3ێT,ic?0M6b:WhhݺQ#.ͬ,:Rm-/P#If't~9ܰ3!"9OHI`B7k?ۄμJb>m`GC`4i,/H2& bԝ4J:QeQBR)A  #J_2jVnQ)];z/BhV0r:5nEP# h*0#{/m#Cc g&-SeZ%uBߕ̲#B3%Of֚>wE#V &>$[ ҄J.:: 7\H@~1>a!mBݼƥd-3M'ٞdZ ! @)&eZJcŧ|փX0Ρ?SH xtT zGaGk}emcf->3kf5f_3W.,FijdZJy|ZYtjAF҆^ ?z~ Q1,H{W^lG b6U-hHLT*;g$H^|jЊ ;7)ݦbh0'< FxG H QARF~7F *҂f1)Ңlq (>"Ю9yW%w-@lV *.+On~QԘf6-;8MwO;DNʇgtVlkSzLl2A׵HaS.=̇{6JwJ2|'YdmzIHTL 'CAhCu Y s˵wv#?iG eb:ZIt-`% 6Q`IfãoD5)4ęNM iRo)”Qh#>*IuiMhM*%`MҴĚ*S282N($2@a%omO,|gm2YGr]y" ]T(OFa]65ǨZS3t Ŧݩtv#{_M S.ɰ&) Y7( iD*"Pj`7rA1H\]t[ 4R1I4AxO^tň ovPN=LAQ黗~S&F`$ŪUc(-F} u=]oa4&58MdzM$?=vB`Q'iR`K(OoD&܅>|u \*8n{Uz329B0Vm1Pjn s6k~0 xrVw2%u`8q]y|S땍V]jwR:!}Y)-C|5tx(r H~q_طi$22j?jQ 0p)EXm-+-ՠa[EiI´lbq(_^&ðjb1S sA#\a&qt|~s[=,1T'px.gAg.mYNOD"[IV{2AJVԎMIKy*ʘ3@ao4I"c@[2rw>}JpFWVW6<䷨]7՝jyr t=&kZJE!;ם5p!/ZW,.A^)6fݺX=j'w*pDKŨnOEX4Ţ%Uߕw^ I2ھgߕ s9R5} ?Tn|X۟A7i/7жr.!j*l'hVUђDXFQHŠD?eoKcZhA/hn"6Jµ0C/FjZ$3XPlSP|ͧXc;60r1y «n*:eYe~\em&c%h0s(CѿLz^3Gv 1 m2!Гv%d1<*@t8{7Ѵg^~Bf貴Be"* rPU@6 {C@6\Qpz]^L~zʋBsq*HF%P+ߖZa6{ wKڀyȽkXB.Tk80SmuQxg/!(jյ[uKXiZ k֠ae=t(LnK<:FWM07{o% D~^izD' @a8o>Ul夦{!ٚ^/BAcd+XPkd\y^6BɄ,E1AOjcFSrȯYTv`F V#axg~IJXZyDKK1k5y>ѯ݁5qC]s E6=y^P,)TL l,ɡ.[g e8ˠ p, !=Xd.>'Mwo9)|LF!2'"rf͝ gag>$gM]'xns| {„!0q:ihT$ࠖ14>lM[=Ba;8WӃ*lv0}-vnj)Ohpul7d$r,u"-1b 1%hi [t}1)&qIqӹXK)mV/̱cFC}\? d.nI Uݻ4&גЩ&.:uJ1Gʖ c`.v-3ATurzɣE3MS0H@3{l'۳F %AXM;=iTlzܨѢt/qz-oh^~*3kDWI!Kct`6` W> )jaj{rN^:upn 2DϡN\B2|l9)ʳnE";-K2R07{=GY:0m/@l\4.,BBs6&&`B2 כnE7 y %|'uAj64/CiDvSR.z 55*ڨ1"r еH+-0Z#p[:,DIUzMugDӔFNBȌ^3?D:lÆGzdKP7T< oZ*hZJT -"cOj)p4Ηϱ7GX31!Qw'Ū-~8㫐}C^>xXP4`!pChg$]nbz ocKKU3`nMݿ-h>;/5s+0rDž&`>@c>@_n>@d> d>0"Z-%0']ne\T$mMĽs !U~^w=ݭr9LyYA͡;ts}%^>mwnoEt"YjEYhr/Vܶ\\=8`]=8/6~.vj" (3ސ1I@CLsWN5>W|9w,l".M]Pt*QsѶv/~G{q9h$}xT}ՠnjFGR#\]Z5Ez"l嘖y-Ӏ 1 44_ _Tg@ J/+8*  @hdqp&\^a7/"ɋ,_dkBG3y#x|/ 3|Wj39*GK$Z^oNغd6j dj3 ;"sNi㔝aG 8̐ms+en_ԒЦ_΁'GhPG8=Ͻ59 -aNGgS3$trڛyWQFB܂Z*z<ҀG]wX ZG%dH^Vy=KS\\2SsCR,bln=1q#rsE(yHXK*9AtI( /ͯnfaI#}]K'-L2>3>3>3>3>1ҏ0