#!/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=23821bd94334a53c37d7661edce7869a # 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 WWs'.kGkz85S_?0C|2or`|?wٍO^׈btqap s@=RȚR|ךI@bIJ\e=:+ϖCwV> Y85 6W.%K.,ߧ&Y2ƿ}C||1۴pHp؂/YH3 i2`_Z>qȄ!!v|ˠe<2|&$ &5:,ne!0 `\q߇4cPiz\}Z܋%hDn e!>, z@=P4$`!6M ǧ  12n.ϙ$+#ޒhd0BsѼlnhY,KE%j|N[#wI?0T..GCHFCl<U/0vuID~?ʪJC\ C7RdL^;(2rp/I\%F 1X-L鮫=ә%XM+iBaJ͗˔x71:*m_7|P-fFL^bu!~{k@4kn٫ #T g+qnsLsrIqtܪ7|j}+r\&zU%t$, EX GX$9' ˷7'3oHoHh5[tyV=A|{P== :>;o+EX4JlRyu|1$%\qk3FDJOi@i7ګW<6` \]'J0?VlJjԨ`|Fp)*!P{;~X:io5l5ЈaD8-`MЖp\& YxyTia/PCv4ΑD?O j DhЦs}LVmMk`Gj̆ zD^Pԑa`Eopf]B9ue{f_`BBo"hraߩh/"_0L c(ygLl4+$zE_czUCKřNƲ1H_I#MYFKk}:_*r 1e D|Ҹaw6ju:!XD,DWAo=+u:Fyb"8 (N㎖&%igK0l=FS{?q%)ϫʪ 74DLj#/rդmU!EcRD5xND5|A%z7uiux4ƚEy.`q+-`YN`Kca*͔ҚMDhlO]<p8KER ŽR^5܇ᅪi$KdVL1s5d5Kp+쩳%^gݵDۢ%VBĴV}m!tDBPVJ$`dIk]GC (V \MpT 'q5aŨޅ89(}Wr267*pqQIaٖ56!L6-Ct3bYf.n %>A4l+5Ȱ?ECß <˔ !ȨƝX5F1vY,u' Շd[s˿'ӕmaX|M ?&akֱx"kAm0BMv߽0\e&ჃMڶl}mori(eN')ͥ g*Qw}A+üL}lLw˕'[ă+N|ΥqwA7`RKG$/ }3:1z6'"fC*H䇗dT'`yp꾳 -qY)2"@ʙ8F@qCM\ÒѼmbJ7a>xu%a7pyMzaC Hwh"b'{.-͘-ss qKYf-.e-O fJ2;)p,m{ڑl}a|C=/ w ;*m݄Íaj?$wK=ڈ k<&^vW(z吏h/mUqٗPN/\֎VVmW#]wWw]߮))UAU^ de\ӗ(TUI UMU#N+wM~J?L XSx\Dɀr.JRybEdXCFøf~Gn5ϔk}l]R(Xw*vjQ׫Y 4_tSbҧpLԛAQ x4BTX/>EEܨct(jG{tN ?h=` ھ$+Ť'rg' hdq48 ˼Z -o-䉭[Q䢙R(7kS#9 )JRIښGlxX6֓)s~BL=3gBVB '(oyiz Cl%PGƧL`5 "ǰU\cubBf8ۂ?8X۟D^̷;IT^]j %=`R}||\i !'Fjr#] \!psi}@ZqnVa| θ;V1;A8DyS%5y9QyԮO(&n!iqk1svz Ibnnw͌iiiR%' ʻNEBOn@.F9Jʥ#7k ~mu7R麗TN),xSQMnd),7V9͉iࣶ6A,x5c_'1řC@tt~ޘWmN_lP>鰭j- K[yWIŽvۋ-zs{ կG9/.mE3ɦ3d-q *ɫE6(L+c_E1?GO5W4kWϾOHG?]ѨC]ǮcW?v]߮㋾&~M]l(|-aWp*8d'&,~(-[IiJ 1 9cEҀ_N@b]DrP|(w.Ά<#|ߏ7mw-|vκޣp6mvzT}${=WӹG=_m_|ADPeN;`^=v},9lqsZ k/Ier;(`Zjw@~ţ2V}>KfyX X}],I}bd.][Ӏq.&eҘd_J{qw2ٟ݄pg;PJvA!/E‰2Rϑx&tL1}5~+uBZA~ J~S#)9Xg.WmGBkS-ZL/m#'K#wTjIt܆MS2݌/y< -il/7AMJH2 06 i /k}J"a3dvr'y}mb cgg[$t;1ԩS:bqvqq) wIaZ&\ߘ4PHrœpNviPpGai2`D4`JM>ڡ|_H #Il=:}T Ӌ&X,w ,/:{}6!~+Weŝh7v;񟜐LkĪ v h5s:E8E祐/_߿cuO3L7\soms2tSR^{ц~9ZFOU܈[0 '}/YT\v2!(1$oٝjr+x[=9ץ`UarM$H`-j4bFRjhIC3,0:`Yn̴+fR5?sy]gL/8G{ ~Lh&]?BݖiG>xDg썂*>7m%~`[KN QEeA%x?<]taN 61eLxh;"wC6E8^8P* f%mv^۩#>(o`xd3D6|#7ʚyE)1KJ`0#XsG!x-;V D~%&=/!d!j9O4P9<:l!08` "A!|{(RMr&W85aSxI^l" 7b@y5Li ^`iezr)P|oʾ}݆i[Oy| !jˑM*iÒ9ˊ2R? gy3hǸSKKl b/^@A~ f8G iKrҴ `n#?6ClrO&elIdVv})bKeDKh"hN.bnqwɳ #YmE+2 BNQnZN((iE@!QD]QL`p QQݘ:ra8'.Ev[2/KJ ,#7q%g1 nr2t*4$Y6UU"s0/\f]nDDKCg:ZX=9Q\ۥH?nP!ܝ2G7?o9Kd&o 4#1K /)lD/D#љ+9g,28fP'܁3܎G ϝdX\T=E#YaꤰO(.1!Tvc_wj LbRMEŶԌl3vHj~Tof4e&G4ٝ Z>lԚ+n@+K73Ip4QY;ؗOf3AbD9{uue"yмbU˨BQ+.1ߖ653PXV+\ӀW~1}QlCL`6AG7EE8C*n_? ).C8+aL5cF:^N? t,F&@O$.`.4qq['eXZyIeh03ه|`\^BI4Ө7`P0qחhASzD8d+< qQ/Obu QwKEnm_ USSr·5YZ~1!0XsfL.8'sU41G3lơ֛ TSWļgI}},K懽קKBIAKViZmT4ljAh.Pыx3KZpedcUSM扆-5uU/OFdg`wRo@#w)EVK|τҐz;g ax<\+l΃nu%sˢ3΄6 }\̚#ⴆD.F# 6|M>XUƶUdC_O,eLh:=mS;!kQԪ+5ذHi 5eEr ĦH5pmlPۺyaMDbRi0vY3~on09lF-lx౎Jra~ ;@VOI>K(yX'u&%PsK9JT@sROb N(q$b H*5J3jѻ;!x`G댤nQX,QOy,.ġu"&C9Lc&뵺/^ cӷ*t7MJ8]m5rlY.'E/f`*qcxzR"N$D-}i4$99I۩򇣓9 RaX )GBX$J*f/>O\&ԤC$1a '2 6NԱ"d >Zqw%.qv٭Ɋ9TT Sm}QlMW3E2Gc %hЎ}@$Ej:gJZڑ6V ]Ԛ20nhEtK/Ω 4jp%6 w^=qRY- RVV2dYpOφ6CB90׼! W5r_v&)Y+7EH&WJ^i궥*4T%]}NF]=G[V)8;˥R'7)*WbZMR7dU؅S({X ,PJR.nK%[34ʿ2{SW(jDsCx[5D*lbU"vcQOmHIo:0wY*ݩhفS% !}3Sx2 CwyفcuTmohH L8ٻ O0׵W۵tmb ldka@$ye>@.x o&Ÿ顩΢V3K7m!"J!s6)HJ]V~E7I40HK򇠿JOI=skV꾜h6,~#VCloGB*b E}!(F@eU6;qMIrBY.&Fw@nC s>p&Hi.J )Gkä0lΚC&Tma.t=TQg'{NJzj/!X [1FȾS)G1V5Y-A2%Zts:eN]2nBI:fP`Epw-h^V( EKrWjm/(1e$7F9l?&|5l3/ZxxY*sQ(#1Q.x'vBh`AU Qռ[G3J+N*Hp?G,,ˡa&"Fx!ețoh'>=:q=X2Έqd\]ctI6ˌ2ՊKZgؼf]/qn8' /a#+(ޜ}w _oa7"A,G=@9g‡h+LhLg;u5[8ج*YA,/-psaA4R*w. 4Bpmv~R2f$BVcݶMq7W,I؅K6N>%&EOaOMu7^jD O@\fхc⣕?Р~,?B/Pn˱x-%02Ei oMϔe\CD2DpSH$)W'N LW;DK\C1ak3>} XCTHIPDU:,LGl<>~Mhm}fb;g7bhpYQ6)y~ZyTCU<07 r يj?uQKRoRgtiIJ;qNؕqt(lS'B[zރthA-Cfyl0׿P2t3ۍ&.84u-h#0 " }R'Tg330]4Tc}A`CO]k`Wa_`fצ=2kvd Ճ`=>!ѹhu%y#œ%$ҫL^㋨Fp5~oßBEvC{}$6(dB[. iK;SbBbh=pD`<xJY,+|;v LveUpO޼d!*zdp_o;qkǶKr{_K)\'0IDzcF'Ʊz&%l{ iB6Pņ(O`1"Lj%cewik $}K" z~$ycwZ[Tr g2imQSn8ߎ KҎ{@h|q%xռ)ElkHY]Q[+x.$Xt~Xb0oIZ9炌T/[v/)A8ega"$N.0ҁ( w ț.*Yv)≇7δlgAC3`bRLz/ϸ\uw_EuDs2e욙l|$ n3\'sZJi~RJmm$U(,JFr"2J:&ރSz?.N]o .\_3%uS>N)OҧZX؜:)Teχ5a[=ē^7d/kOsxr/r/rEXmԏAh\FUpJwZ eX4kХ֣NJz=a4h/Јs`@O_om'EqR`yY$-r`?j5͉bF2bIsL&\׫ȳRM*E1!ܟsH 9Q#v u}X/-%?RJ=wWNžDF0t $zJWI( tnծ Մkn=NS[#-NyhG5|{;QL/,TnlF/+mbR0N_MU"-1bTqf/H31fuu@§N3kyKRdZ( }\ޕEs /k¸@3pq^Sf)Q_ D%3KKxB|4+<\Tl3.=c߿VƃlkMԲ_=K6rv|*:>]R #ܧsIq p64q腜trPΜ.Aw::YhR/? .'¨w^&t&T%;@xtALCuk˽o*'@J_b;"򳘐rJKk}tD1pU>͆C3&E4#OB '(s4K)$"IDx?.1jDh( 1BlXS%~R Y&= A І1ga%7j&RbN`)A;+^N~+%Nz  I?:FN O` i诤L%7ɰg,) F IX*b=TnFtSAQGmpGy ( q] *vľNz'b78ٕmYOa K[\Vӊ|7+^X5+@te.%WǑ^ VuCJtVae6ձPwINo&:]Atg,O"_٫ *B^Kl&FӔUM>l$@ŤgZ4X;qFt>@&-s!.|;r&QzfΐGT,4! k Ɲ7kb;}4+q_ġ8UB{{]1W=l货=CF Z&n nv1 3lL%?%ge{+H?N:ҿpEƸOHcӸ\}JͦwsB5i< +axi8L $bp3[>טуhpY6=f\4i=eY2b”M(z񔶓8IUτZYuܶ<ǞAAp |e{qEFXվ@թEC$e*9ul5Ys)V$?_6G$2ʄ*J?jA S )_mn˯-AlnMަ$=1)# f+f-ߐYm-0;8(FnlG{ wv)Jc[=GSРfc}j&VWd+iXxB.SIeI(DĒ*)~TxNf2WE5D(ye6k=)?(7O/4y <"UYL?gӕegJO?O?O|-rLٞ@iŢzyO>@@ 쭘(gӘw犭}zh\ǩힼw=P 7?H3VQ̬T+K3.AA$^] _WOÝ}U/~d"xaOr @H=1>ާs:޴gSd{MmЎI^&#mw ւV:^=<:W֏~T~h.Yiͅ&\]Iܜ^ 㬭`f>IP{9jYY_k0* &gj)7%^gFj. tvIaצb?_l]l)@|; >N|AV!%' E+3b$r%NڧE<;Jq•ٰz~!gA|)jӪ?"k y_l:ٝ:.S|Sx+TQ94e`/CD;auB!"БjoEFl&b~i ބHMפt'PVֈ8B{P4C^&Qwj#xwXG3 wU0Uil/ȲƠe7 \ajOxCVם"v0S&PaI,i˱R; 9:8>:3"} ?,–?k&z4nZ:LNxwxt}e>42T*Ao|8y}}\^;|$Bb,sk2h6&yŗ_=~mk?,ù/=].<[:{1(_$Mz,~~=?[=[[^mL 6Q_~y+gVN*6X;^_zߟH s%DǹELP>l <:RwcAu@hwF"z/B:i'<  l|7 ^r_5UCt*5LF|?wf{#RhD;vٜ w>N2Y,m&7 C^T҄Rzn T4M0|0@Ž藌 Lifʡ;꠭eXŋTQbx,ݼ~mf]*sp+Q0 SyA+=R$ .\*.g(xjҫ . &] 4<"2D8Z\V FǍn0~ٍA xp1H6Q MUњ58=/>0"#0KTԺ |x`F93kd$= O+] ͇N?;ԹܦgwBb)lpk^XIuy8/g6fo"{:54,ҵWm[G|JQ; V ’/g g@4!ZPJa; Pp"._6no; Ï'0sp2}yYؕaY65'=waUxw?6%ĩt|"9sq;H;D5"5 1nyWt%/+e ܁ $eܯ@gt͵Zc@K`ƪu lq>%QV`F  v٥$RI{lFn|Ohsj2 .!vyFd13eH{iyXt1zwS`,UClˮ ܄",f\5i+  D"Xl Pntiuf\gY,Gh:w[a NE;Pv;P`n G:t˩qR*v[ȉ jȑӻ,;`){ bq^hF+wj*Zqt>~ q 1ٺt8!41CJ\QhaKEQM322/ #vkYY /8lᰝ)!i!n9*ЁtwJNv.<(y8s==GKܨ_[.y_>ojmS%luïfA]%&R_sc7lէkϜ鳵!#?r#?r#x/™߁OϑGHbbdB)]jC@-4),+^4KT*R*,lͰvw)X(X֔Yq$GD2T`t}awByYVE.Gȷ F%lMƕ\GF8\+I5w~WeHQsǼ ÁQqG_Ro|*dYeLdP_ݮ) 7/͋VDKA@b+5[zNgU{ӻ L#5^y/ҠܸjǗMIK`Aof#HUEJZ cQ}m5tvhBID>-?ױ/!0<qubD(|*=q-f>:ek`i&W2v.9TZc!bD&"\p!X`YzxP)ݖ8h4O6<#*k;!E5f7-Ǧ%b;rL_e7Xi9TT#F+tZbQ]YrQl4l>Xno)]L:*b*9aVl{ e|PtxQ>=I`{MvF-{V?VXLIuo;;0$i!Fw=FOO3tM}hఴƸU@t`MI+(;V aceЯ(-㹃B%j f!O[͎p_/EZ%^ϰR܂JMa=seNPu6g`6,ЖMOxNȔ~s3IQieĿ}*XFހ*Ce@A;ޣDB?HInhP6 ٽ*k{%^ѕΥXG"Fؐ=%ƭ`,NTlu lyUf.Q":i~7/gC+oITtZJ,$Н'L Փ,S4 ~{ pբ,qbæY / PO鉂FEHEOI^CY.x*T>s̈́o ٿʧ<#,fp5nR6#VD("E+Hx.4&Aj'.-HAB$1mÕ`) %w.K']#0%9QoLxMdl-2j>\oQ㍪'v,ECNd@J fuy:Ban Ghrqy!uիJA`1vtr[n`#ht;1q@ax>02#u4}?fc6sIg=:-hqڠ.`0?37=onkfwru/\|)y[3*bIktYxA.8G.\J p–@n,_6$cqc>(2]ð>X iie 6QG$@7̨QHJ6:ˠ/'I?Փ#I*NwZcP)}3#C>]2&m6P 8. rAQdAFA|Gcz#zpF\ 2Gc# e{d\'GKȞp O2OJq]c/hLٞRpӀA@6P$oֺEq'ƣADOy{nv.PuFOQDh" JԶp23VoatG6mBe=Ut,2(`X!ݳTUp\zik05¼9cbX^JI`RSYFlb~yT3&аG>&%gFP,R{נ|<=z|C;*nӣMwR} ew+4^i]=tvj=w(կ 3xV{b?:Q '4AJ0FYR `GᅡE./ Rb=^ɏ=ߦ'tmЯoPfH !ǸZWDn *bpV60R,n!jQ2&,M3iui j:\L@`#]^rɂl-~9PhH7M Ҏ#d]i V3v!.]V*J?LB r:8T SQЄ, 4$T8*0FdKAY(Q`۫pW߄s+Yrp 4zXa-}'M7l-VsCdzBl(V"kt·F'G+=tfD]5!<^B@p%Co>[7ޥ^?y~,>j, Ja;%QՄa, ٖ(勬%1Z^sVq-Fton ƿOiPFX.[qHVczd22 vԑYԄ&[(x๙ziL1? aSG?#%2; cW Ib5OW@&Glro!}$,uSNFqixްNXEFWy 1Fƹ7 bA%X'XbQ?ݐ$d]E]>IPrcڧ>va%U#YFHd:)1В<"ȶ2Ns+~~8;B{Ip4e"1];GY5e$*xj\lD6AFEamIUf CCMWѼ ^۽0)▉W|,s" SGFHӡuFp0E|G+yts_ED¡JP]?ƛdBT![kPjp$N@c6Mq&.Ζv&\C~hLU.QfܷlCYq Hkܫqb4!:lψsBٷ(M o2LEo[+HDHfDĉ5dscj<HdO I2 2`_h*rfŋmfb`,25W}Jּ9 T_!nG53[MeQ+tŜʦيn{_08F~3!Hς LܢnΝE eG.ud,Y,ǒxlttŬߺqk en.* :Vzum4>lN7º ox, sfpƁ$Uw"S#)a-qM3(D:lK ,0q蒢I)QчZIr:CP#db6{(̱֣^x+V"14Qv?(Rr|ш^;p*zaB(3a E%8::Щܘ^3'p(bVzj)W~l%&Fdc;Z2HnC3eM2VPx:cš w fܨ1(w,~f\ρxzf4$0plBd$RTъ*9wf~X8EGP sp,pfXXé.2b2S5n'VܥG46%(Z騒/ #5Ha!'QN!ϋ!+P-%݅«wo£Ò5|Z>HcR?`ߟ%?ޏqx{ {X]?Kǟ#Ƚ>r#Ƚ>rlh^lG#n<pc&^ϒVtm/\)XwH"o)26!^K!r?C&h9h;mTB4dI'_GQv!53nz@MhOO(W+\>оCJ"ss^ĉ|Vw%wυH V[2G-L3ԒLth'Iݒ1KVW^YKAO U#bV %c#OYf^sY1TgM:l!ׇʍpy`qHGNLS! %k{SC)f*y&uXdV$[AZjPj7;%>6Vѥ3SUILEQ|d7e8d׭ ՝m )J{HpR&%Ml=pLiUg2ܧކ r. iS:%ᅂ O*]w_9MwR}KnK>  ژ H&Sh,R d'IR4 }_ )8 } ȧB|F.rxc)a2m>=ԙO{vCz3tu{8TƾH;lH"О? @C]` knҙ688xk U[-ڒ1e$M8=d+PhMxy}Jb5-Cf!V, = 26чvSiO(jmW(_iQ0yBAfjfde㾰OPIsKe漠i^!VM:/wEC, &sv>>2h=: ܺSMBf= *BЍVBfYAkm*L@t?:b[_`,z'{?r7l奤!y'-(}Sb!KhHn-Ch;jv*]<]Q26^r( / 1ݕ1>ϕJXF&/H vwj-Q+,~S\p %Bx6j{׍r؈M()l(-oJPEZ@k%[W1[q3X$e(Tf担F܃w6B]HbL(H7e>KNc9o^'{pvo)[\ezybo߄W;zwS3lo~ fPz%bgjmt "Yh-?~n4#%&ٵxa* .u79 Vg#ivbXl :yFݺxs%掬| Mv$i1 Fp*}8:]!M*Z+ЉPCƠSY`99}z@yX *ƪ~., Ji thq?d_ 7, , g+`3C8xºb 6_όbnGhN@ _߹ 3:NI-/8G@t1 뗨xr3Q%=0AFT1".4qbo'4d8ZfM𳷔onM6߫@\m}G 4v IDN;?1046v0:#GߡN۳V$|!&/^T^C~!?427&٣201)KSp'xraws8~ۨ T e"s$@S2vv4+ 6й5`>?Dݐ#Pd3KkX3Tь1yÑ>±9 R 418;(LoǽfF(LcɜH8\BZO#OEePvҞ)БftC<{MF["_^{QV5"ނ#vcIOp ,''&f+<ŝz-";Y1[1!yg(!Ţs $bV칟