#!/usr/bin/env bash # # Copyright (C) 2011-2020 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=82e03b2a3e3116495093acd33559731a # 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 `Rnqѩ5/~UlQUW|QkqZ7/HG^+]B^xG?z,$gZ[:eRjzȶO.W-> 0PԣE15Y! m. bqgcZS`sUR}j-n[݇?˞ñM y-E~48Ӑ&1,ug]LBlǷ Z#shy{I`Rc[ l &$+ XtՂھ*@KO]K{ 3@ 2اm}A1Ӈ{R`#u\hx  9&Ripa5@,ce \<3IVF%5`y<XKY!\n$ܕ#tJ3~*H!~ZH>X c]G"}$E!=QʒR!rwE '_* 8; ɕ4\cLG6㹬qɰ=Rθx4(A溲+{Dz/U\{$fpݗFȀ*9YO]y$uT)^(C#-Dڣ"tW `d@=HBALQeuJb02+ܑS(LhcEBRm&$ 3"3}UCUˠkن]&Af6# F1ʂB/%hd( $QE0\żtѓ/~G⹖ j` 01PQI#0e$>CPl:R(-ۘSzk-}в!fǞZbQGI;gR7-*MԨ}bѤS}5Q {],wIy 9s 0iZD!ɝ[+ 㣣M^uzA~$Q< 9jU?u_MT @b ʆ\srt/u2N= 2"WpVȃb@J`r @0 ƎyĢ+ N)LiAR;)Sxp3s26u)SF"y@< ƜY!@aH=16uAZ"==ijF$;y`#Α %PQb:MT+ΒbA t5D4ײzOX4JrTb90]W G3KX榕` PR2erMAiI Tkl9D,~op [q89FRmWMxeWH^kU-' ?4o4g(3Ȁ%*9iP&3,['o g+wdr{ˁz| HdDR3)wW)|{ nf3y3_# 70eR(i&kG 3Jڐvt|H݂x]_X.B]Ԑ?,_ZSȁDڰl4nOS.>hV| =@~~' ^ Av/n|X>sL{fuܞ/]ux_y_][,VA*o:ݴ_m"f 5nR`]l"侬jPkռ$ * U }TKj&uTuOI/eQ%ıP%Igx@wxՀF<3i&Aѥ-\& YzyT KX`1nns$ibګ!1\y8*ʠ)V-U6L#l$i=,ysLJ3fܐ*Q+۳f6+N| їrǿ z6tS&_BW>B%`yP,<3TS!B6Rەks޼! /ڱLF=OrU) Xa,s$H~4Ҕe8<itE_+طo%(S@dؑ'4ü4֝Dr@Բ\loۍ7'^@VUnЈd>ܤQB34m25ÿVq90Ba45 y tIy:0@)+gR[]l|QU"uMR&5!j!fմVSPSwVG O3n9^߃awBB S۟dwtXpt3f9=iİm$L`,0\|[7 _.MU(7EF|/Zݖ-nouk1n3Dﲮ>CAr._hNZZ[#(rݽO1Rc)idY,F45 A|`lqwԹj5cMfkfywqOzghLァÔj2i5cʣw{3C1퉧;(ƥ([ ˧fiNt^aT!$ e? L^$ oCXɄ&7??/?=t R g)5h~WNXڱ_qW`r p{thZ9ɒ9R nM:Yܦh-{lAEEw-"hn Ej1mAC[ "BId3,`KhzC媡qtӣ%1Nb6$zcp>7 :R: sshY:dh=l>nF /pѩlDۚE4MEdsGmÌ5\, 6WbQ y8|JE 2hȣP!12%CH;2qgt m5n8$AY}Oƾ52]!)4_ӡVeÚu,[$WbuͰ))zTC Ԇɜ*3 4nҶeCdiQ7 y`$cBsY'`9]_j>d8/OP f-S(.|jr剃eaGy{St+kDcΨ:clND̼C*IK"2t2' X\,,CK"&;3g/ c^C7n)wĒ}p!Lo~MV@X/6 BaC HD [-]}3XXKK3&E17W28ҷ<-S)3IjGz^@Z AwT ݄aUaj?Ir ^wK= pmkbC/_)s<~vlRfmwﯸvvvvvvvvvv#eÒzTYp*\b2>ӗ8(mb8R4ET(N+wM ޖ^Lĭ}ߑ(PxCj+0wG]촜:x'Ej8_z)1чpLԛAQ x4lSDx^ |sɣQ;*ߣsjAG?PdDRD_ӛ9SճSSH7hdq48 eZa{햷^ceGrVom-||(rR )H7* ] Å/w JHnIښUaGVx#m<%'sI1l MX ]&`i業v YihbCU3? ۓ9G P&n-S-8g;'bi>g/Jz^;sCi]Sbt5{ѹC)oy?,a1SCBkD[O jttq6id<$$S䒊8-$ۯS'lPHƝ=`9=),|\iA/c0'X3و7{cgx+umcŇAwȧGNys}rd]NMPÿڊGxd%Z!Ǽf? ? `Og(v6^D*PaV'ǁ?{Ժ_-+O{!gZ^՚=`)b}X$.]'4EZDo]M*1)][}̕ q ݄ٛpg;PJvA!~+G‰3Rϑx:H?`F_ xh`+%P [+ho0@ioj=|"_/?jL2 064nT,}&)t#)1'/nLH vJXio5l(BwřFQWd;"8R>/` S6&6p?@y,o;`.3oZMg(hِ{f"G9O(,ٞfҧAs 5M~lu޺,_Z̷f[_[tSIGuYZ!-VHzԍlP*qyhW\ngv?i8}߯_ 06Nx1l'w׷P-Z og[N^q]]˩S=/s56[pQ})kZBKTLС 'Cϯw¨QB&bX-s[mE'}h1ZEUxZ. ,xj%IU (h<8dx5J$" YfwehF9X6Jug,^^_F2GW,NgTtfW$x0ϳF:Q&%߿=dM7۲/A:l#8Ż @-z #P"]taI Jh=θz[xK} & 'J%Ѽ??@ rP`mQTQՐe XXT<%Y5+NH_Pḁs`w쉡Tx)wxM!2[Jɲ%PRf+yd*QO`7MiȒ[zѽ-0 H],p}!26Mٲ pZ>L [fkmGRdt%rX,8MW1uV"A\$.F LAFƂjlҘuzU(N8e(&TV2G+£(HD1A *oEYr@eEU +?P6DJQ'b)*c`GI J!Ni>nNngЌR2b{lu1z8CXo"==GM&tD2(5^k;ʟwzXޕj8A͘C뻪ov6S q O- ^$fb `1 #*״^ ~j4Tӈߩ|;xR  0&qnEU- xSۥel-FᴢY݌Zwbe%z0{ ~[4A\' d>ʷR",- 3Ɉjд ~ \a{5VQ[)E#̦P09i`e2<_Yj ]@5dlJnM&v6{eX`2(]' [QnxoHBPPiE@/&∖Ů-gV}ע۪EE :\4T% ,.s566FregF nJ 2+U0`vSU+s(0/=cyŭïQHdcΨ9QBU//D= kAiT}ٱ_`}(P.|U4-H̉ \_PLg*é_'ΞIbBN Պ& Dԭ*f|,Hf?X\Ji3=tAm?+Ch oϞɓ^.* (VsZu4:?kKZ/Ax=*kтuG0R_8*}+aiBO@Ȭ0U7 gbNiiO\ >5 h.Ⱥ}ϙQZZO3ua,d !Өm@X lˢZs΄5\.=FW@ ?IP{syLC^m7ђ7m 2gewR2%I);'䭔>N5}s:y;RGWU*'6%Y-2u&Ġ~ M|3*8QI?ʯQא;a:ݬƱ3_ Zt,+e,C(mKeE9:1C|<&d*mR#KՉLIy,I·褛bY[g=Qaj!96rD4c .mخۓT U!tC_UF5ac7fn *|"SK5~ygt-[ܐ6eN[Ξ; ̖2S:4 A~7wL72kUr&M?cD=eN]VdxPۏ" \7۬ H:=̗g{U`@zH/ZZ[UJލUeU۹;h`[Qyz' yIPb ºrK,<^46t]0+=Hy-KYw^ZDпp8*|-۰=#4(1EeVȏ<.U7) eS:8բ7rFTixQAL ހvU{1EÄZV 8N|O,kja8J;Q:#y;\)g;99!pt&ء1cC[8THJO-I8q "_3$t4ju 2ߛH6#e[Ԅ*zR'*^1#f,1/oM7uCo­v:߫I[ג.]׶r\]Z/'G.f3`*qS|vR" Z'Op"\vnNvɫ̘D㟵bXE$_¤QD b]Wy%ت]mB:-발 3m8i%:Ic#NJ)8s=iK.uvXid {I4߮ {7 (G ?_ÖɑX V,KC9*UR8%K>`zQ[/%Ub`j?4eM, V}ݹHpWkhLH5 0I\2nA+sc8"p28H%yTGȮPۼQ˘ٛٺ wĺx+grUuōΥƊFS\)!˼TkӱW XىA"9>9;tS#MuKw I6;ϰijfg6Aff:3HYy:&NH:gkZ:qZ-[2oh[EXtK//p#m<+65]J > ={r Ο6N=-WҜV} =;!_>П 㶇I 9o _AQ03Z)_&*aԤϝUm[uLiBv˾e[}ItޖS 6s(Ie71TeY *nۙT?^ PSZ.n棊k~eZmYRQi+GjhDw #5B.lLpBpIp h>}4q|16xLnto vNe*;@EH"F~Ws/je*fNTɄ Qq)ivݓ?'rj㴊 &t)APk#ܑStrRGr6eh3㥙r؜Mrs*UovFCq6qV+2!7+_)((l5` 0k*;u#Ҝ,mU<_`W\`$P j8_[>HBzG@Ѕׁ2GgϠ_8Sό^A _&8:" #BlE x\Q(j>pTǶDtNb;pDXŎ2ʥ) b~c)hmS߰Kn,}aŋGal]E(ޭYr6 } Qq g+ vo]:;딭]]ߚVn>kJFlU]3r0˛MD?`q[e?7J Ù#Gpc0)v6J&4mc.ֽx="(ո h觠½cÈ]mZl]k–0w H!"rc$["vkڈyw`[ \fD+DŽ,vlp*iEg:Y)y<^gީGӜ_¸YMr2nNd̽{9?k3O֌*ۦ[\1K L<+bAE"D;`>"R2J4DmtΙBU0PJEzBHy6PF~vz#^?@8`Ng*<"P(i}Cs< -˟k e_|zFKexxk9z+;$~UܣF{ ]pVrY8ݯ׏㝣ׇgV?;TSm+ _1̳-VXCwcc*uXv'<9HyհX/y;D8;;}4@B+6?~RN[Puw3Mv[#v |:\z6Q{m "`b%qE+<:޻tho &&y4IOgtiaYN03~6?)u(ua̜v%bi` v [zt-p^Qhapu&=g$me65-x# !a[ tlр??0;{Jp d & U>a 'O >.x3EGX5 6wTusr`2E_bvfi\.%Env=4$#j1r_6:{ g%MZNmI=vls](B[4M`Ȯ e{#pvzXF,.iD*d=e} *L2SPFp.;UGЏws&9?mς vpC)&P\cʼnK:;eѦ6|b * x0i{g$i^9G}m8Gg2{|Bk> [Jl4\纒ĨSx~ޑ2 e'Y Ȍe >clH$Hp^p?XO͑PHǥc1ϘxiqU?yb{ځ5"+IQv 53hr f B( *ZL~Vk]k W)J^d\ n>yrn|[Pq,–)eulR C).JuWwg|?vOzʣu/Yf?Y,g3|O:Nǃtxͫ$z:?k!=〦0ei XnXf{wڲھQ}S,آNn.o}K6u|5-L!>w.e3y61-\pGr,V4f_@-;Vvlhܽzdmː76h~^ ^5MLK-&9c阘s˭w8O >M L*4΋x@Q <$@\W U^ ͦ3е_#ڈpé9!M7OaΨ_D)J_2&F&)+#=Fl:mMŬӂy>+3"0'7}а抟BTk|g^& Pr]u" 3C4h-l&cTT -a@d:iWll}HT|#vZ>2fh b qM(UhOnCt'ɼF޸&;IQc ;ۓz*l  ͽߎWfD|a9y :`^j 6UoQ߸gOWyQ!ĸ9Nlx#{!!-!;i`۠_R)äC;Qrg,_ժD@}:B^vh^9]\<YRo >O;i3K_nNqti9L`=Wާ]5 ]z%ٴD|6u-w IP4’?bV-Dq(l]٣N> ;>c{:iϐUI捬ޠa„ ˃OYőZ0Bۻ.=Z"rիmBvs_^F;1ɺm!<D] @5 6Wr/Y-HVȊ< G}P4I[RndœM(-|񔷓a= ^dj3eFR2 `3yz!pzeQ7D]~Y^2Dg-H`l=]u9˭q HnruSkd /}$EGS\{l+l-ՠU)MzqeJG6:TWWpXl"sX+- jawb5(qkт:^oԏs(9&*Gor&ve}0beVPW+[xBu]SY";6-qZh_Oই-VLuoaR-Kaxl/ϗQ'?^{X6?3?g3'w`” [$i[wDxyQpڎs|C{kwzo'#ww7`1mģ}*U_6X}WW=ztqh~gwuS~ BIe;jԡ- ";Z Z82 >@e>}om/۽sQS&j[%g2{|u}c7cWn8,6ĝ&~fyss{3L ˱4oeF?^mt#6t|(uL *G 'ͥ6;u >~qx}fK߻Q >&'rMy`lR8H@ɾkݼWEK;FClYDB?,[ P->>{}V,SOhW(m@9#* 7 k}Feq鑳E= je~N}.yh5D>>ڭ.o6x8YpW7 k&bed2"<x*g{/Pq߹Z>:VQc> [z]rؕgWNp Q ͽV ^7_d9kŠ-0pe"kKĖ-[]wtvO @`d-t|x 5BnkPK%e[ oGTX{89K:-XBMpw>>ۉNMl˹|R$lga9;+"')&$}Y}۴-@pd{`6B^+m4vȖGe.;ƣY~́ m'7w<ծ`^@n3c_qǕE8WӕǫkOVΟ$  Yo\ߟ'ߟ?<y*ְƣVכ?pvǷ!V|t}c+?\p=*,Tp9.T%!٤=Eo~ulн W t Ns 6=4?͛GF? qZ/IV*yF1qTHɛa.{Ϲw_sI1n)R ֝{NG;|'< m6O^[95!X:qbIWo\h)7JO_mzZ>*%}g͋x OGA@:ܣpto'w5FA*tE/7W*; bqCւkQ 3փܬ@ZE3,ЫV 􇱀zWDKn℺s+ܹk%[P!3$Lxn/6T&%D`$f$Ԧ YYYᩂ[4 +hd*f&a2iII/A} K_W֯51;0>f30e;184{^z<8΍38 3ɁF?;L ] H.uSTO?zMaI_ a n3CV3n/`_)fic2cV8l.˦"J 'R`+t{G!uYvNW |!Jw/#*NZ:ۯ4QWJ]\P`͊? Ig(MQ7rt\wףݮB Dc z7=5;4Ή*5<ۗQεQݓn+;^4dҥoNquɫTwоW}\k! SRc n?p=|›dq1x"(o`jޓUђq$ó= ¸=+ODtƲ )gt vȀ Bwu/ zn -ݫ\4iO]duNRTN^(VUK4fi&)HyjM~U.brGbuteL)ޮFn, m+Qva3iw+9'M`np@> {;`I@ԧ%:i蔜\2nw<.e2b迆5޷R_ }">>nk3uѫBhr`]&<"zް4|%Q$,P-j=(HIF y (͝7$(1 .s=*r҄KlemQvNޫZ\eB3Z{;G,E1OảAL<ߍqWӢ/O,E.Gz( ox=n'YRW۵L cp/~xG33g3{=5wq)o]G" [2MSJxCk~ӷ1,S[h/k.NNZ&)դT [R3z-en57:EhP1Ha̩s!qCTy(id²:f +%%)t^:75pj{g1u)}F܋1)we8G)z/D* r#;׷O<ͅ `Re DOPӿ$! MWܗSڸjʦ`YHs3K MR:*Ul>Ѥ@(k\;T\"0hʬ/yw+3$6^H^Nw}gd6)?FxG}!eNL<%?qZUfP| rB641ْޒۭVlEmǴ5TSX wtdQuxO_Cڪrt\G06Z}Bu)/#}[{ ^2ꤥ2;BPmrUcj1;ޣD@?HIaxXQPۥV@+҇UG*9Fث2,6,Z  yjآϔOl-(YMNÕSKk]ADH{a$Hy!rV?044OId10roN$:l֨Z@   S$' X$P~T0y2}|В_èmba=-,|U`5:~rDo:h_N$YbYY 듖Xم6yym]ĺu*"fd`4'S5Ԛ ԻsU铤|i}2)-3 -VP1Zb\(+8ng %yD $Q":Gecx E{\1@KpLHFq- I_E>\`cv#Sj0=%(^ =59~C{4׵;xR?.w09 bp$fyz r{:kt $Blc8m/L BWUJG5<>݉}˜y➪8~m m#_!=T)0WΜuO!_95cBa5z4a6 ƟhYFl>@7?}3[M̒1}1xb5ϧK:拆V}]{b!5i<9uB󈂙P8 л"Qzy1)mB_&^aKaNnq=q7w>_2+A\w"No=a//[we_6ŠQo"2ۀg) f9eD`<ÁeLp=Te:,V o\&C|:#ASq[9~q=T>e]yTER!xHuˆzPL.iCXԪaF XsGxusv'ǎtqo8{uѪ,kGBgY,{=E}Ϣe)~}oM uC? лL2ª)YE&x'#y6i{KVgڿd*UJW*dj%ʵ`h1˯TS}C'A˯Ԛ8R^~E=xϩq 95=}5HԆTI{ g)lUؽNKҊ{9+V%4@?uzK_ԷOJX3ÃTz;~5B >x7CJBP*}TsR&q>9-V*O\h}եԛt >ޣ]J};.9(>^\?>1]{|7ѫa a@_A8` Oɉ ;}4^񄭅7м^_V#xY>:nu_F3Ef7X5bvsUhը8#GK1 K!zbflcnG%k1d$8Tei3QZ0`u|ސ6،[nh}v_b7 _(F[D6]OFtdTN̛M0=˞;^]/q>g%79iR*Tl ##*+ET= )A`kFRQƉ|bc#Gk这6rl5Da?j-+L5~3י/d,3K0,3ש_ @^"5kS^ y߉5|C2UAvCUTjXoT*Jd\OקcT) ʱp{5DX!b(^.?&Ja`'r`F}@_i7;(- ǧK.b5ux?+ol-=$WVw% DYvU y~X[_5Zâՠ]:qi9=f (f9Ld9Zp g ~.x^!@D4k^uO k R:5]OHٗWan_O(-Z6"oqo~^{-=fS w{-${-}^a7=8EpP/(hi> =( .f.tA ߙJS0|T^L0Ex3t n!Ú/ ѷC$i3'h; Ȗ@ (  wLS9E! FǏqа+ۓ:DfC]ۻ@]5eN%] k6#sqp(l2mA @me">HxD᥽; [&^]9މ,=1<'K48ت#g5I9TM( RyIM¿#Z]{thr K j9@r=mnG DN8.QF+)8G|`%!;;f@'iGl|F*Qu+u$kZ6=GՅ{d̏]Ό@Nt$ft`/1ʆ%,}],cIl" -.|߳{F??lߍE"Y:JTyH^cr4F-iC­ V7sQ͝ڏdyLlCg0uf U^'uS-] <7NtGNj+~?^h=y}ϼg^3;v;$LС "C ނC2YN΃%ë{OtGygiE.`Z2~6$8ZN=kGJH&,p ei8XHBFQk ~> 'QyIg+.hUJ *l2hTjh88? nw9k㡹h!|4ykH=0À@-WHhhR"Mh4D9r ۓ|dQ>o%{KZdr~1-]\&6fC椸c7dsOlQDB]w 7h E9sTDƓ'xY KΒ+n*U]G6oM~;9Z}CGՖ,KE5]KrQ썫//Oi)njSki[>q.a#9T!P/nN{dGWl[DajGɊh}i/Ziɯ[Ur1Jed1)w+eˏ<|E7=|Sa萪%Z0"pAIZZOI.Sz(ot*2dO zzpeouF~,.èЫa4!y?Ơ d(_S9W/̨6B Ǐfoy<,i}t [T!ե[ɷ rQwv.<7l?ZNGn}A73\޸㍇o\q- .߁;ru7nݿ#7wvNߑqqP.F]4[s߬UR)QI;E\=Żgُ[PYg;~27wGOv.j, I?Û ʖ֞-7qс,f}r;皵Qelaؠ)]CE֚\݌қ(z8X_E`C읕incKxpsBxǻ&9v^`*t.s=wŝ+wGK}]vˍ>_` G)H^Iwkwnʴk.Sӧ噔=gRLʞI3)VR6"zf~at\)Ȝs'xrC2h }Y6P\-_'HS e~z<?osk0Ha#?C?˹_uGQ=Z췿tm$<#8GNJdYU -8:(BoǽF5#$A|+Wn%D^.[\ i%peKw,Υ?%[nU'\".m|rjėLZW+3SZ;nc#ѓk\l9iۂM?w\j@?匦nkniL=32~f?PE0