#!/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=d296e28852af97a1ddccc513b39a87c1 # 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 Zdumw:vCDۧ&kU}ñ3M@=RwToVnj"@@: XAT5u-N֮sgTP@cþ!c "d@GeL *ЊhՅs]LBl74#&C4鼌FH8CJ(eO&&qI] DbBK2dMH@fϧsIdDz0ͧ8AٟA:@'L̓12lF̮1ʂA>_>C2q( $Y0\p>υ1/`|%j%` 01PQgy#n0p+$12&:"<[ ժakf;Z >4y^7ժ4xA9cdj JLRVű0T|q6$ r> VƘ CZnz2SrիU.Q;V'd"H"'n)H]׎+ >nSr-?/?uןu>wiU!l1T4x/!"*$Ҡu>u!Ԩ&!W9FxL ~As!Y9c|q$yEDQO4K21ܸ<-]JXQv^`ݏ#`< h ipb0R$]|S i0䊨Yc.؈3$H3fyNDY0*,Xy (_`dF ,`>NbazGCT6 UUmŠD)K#J X(LrY29:^L j1)b29P[Haf M/j4BXpPhgmbN4y TICgAC@o[;ND~l_oWȌKBr̰4;Bקǯ@ $|9B9B$9ڦ^!M4/ϓ$ʀU2e:2 zq\Odv^.ɗQ]0˂ `^.%.VD2t}{m.k!ܪVKTDsSQᤑ}E:QFGFEXSa8obG1Q^] hb] ?80W+ g{n7쒰AA(̩QEs)(mH;HU]W֐lG+Ey n)J6d0mA¬"!ێvt)j+Ds jk#]+ mӾ!VjrMz"sϸ}SV[{Twi/%pmrRX,Ya6'U*v7$+yRBpr J7p:d+#G'EpˁDOEr뛞#s8a3cN)+ W4)(*[J'/+N0Td/!gL5:tzNyv-L'vXʼ[\ c f/ 6$.)t/ uL -7&~:`ni(]~xI¢ /17l5< $'ɱa!cu JS17u4h" K3w[ G8Վ*bEp'YIn'6%*DQT?JVS<(Ǐ1\tR(C  @v$ n* LJ,@*o0 d*.6$K4?~%%BMmh_!&)=Q$wn}TI7mBe|mh?oq>w^pw?/}>.v7.0M&`w nM8^2!KSŗ" vKuW2\mҰ~A`(a7)JzP֙^$TM­KeQU.|J{x*4:8/ JYV+YX U2ۈBpUN o+T+d>gQPv ѨCIsK*ãh+gi{0 6f)ӞeLmojך*Q͛B6-m6z:΍#5mmׁ=^|-_(.%X< 6n(|_gw6v˽lh{XÎX}5ۇx!HSsv.(JݽORc!ibY̥&0 Gh lm7N:~/k,^9>mzR빸_* O^JyVn*1ͱ=?Ý8kxJv8nq*JM2|LzG3YZ(4:sV{G>䆾e)RvD~N?jy˰ãxn?> 5vch\ \A?%EY7[.YxL\_T~&Z}.Z E1=+>/BPV+s%*'`dI2֮TMY*DmI,97=Zz=9RŠl81l>oF /=b;?z|vοH^Ao!;cNllrg1$tٜ 1L^r54uehJ.\)1tqY+@mE@j X`[ri[Dv Sj ϦtsІKAӋ7'b!A`9/NEK}Wݎ&'")PED)as+6ͭ,\Dq 3#7EۋՎdW7"R|װ2@Z@M<Vuc;Ii\An&Å6nqO\7uڇwXR{_fca8'  @Ni;Q $4KaSʼ7 7L'vN,~޷ȿ$@!1-X`cL׼5M~f߭aAEK}m] ub w;0$we4(0!jŸ߱y Vt6U+ފk䭦E}-Fn\&g0~#T[9˧O9Ȳ S'u-BkŊƽ`!iZ.=s؄;_ןC/G|v߻]{Ww߻o rasְgyî͟ZpXya}laY%GJŲ(WLYQ 0Y~r5u ѡe&'mV'7Mr\ ,b ?)l`ɠ"C 805GTdvISD TעJᒭadBD=(=Pb4 0,{H4xŚ^ {g~`_`@(I%%BĴ&O9gOt$U2t)C\RaxSʱD !#pj4S\ fd!8)XU#w @" wPQl}yi%D㦤!.?Ί1?iV+l sRvYF(r5 0*K+=jdMav> }g}m`٭||-ڣدfT .hLOȦE{o%@V1MX2aŅLZfӄ|T"vAO{_Ƒ->E'D,b1vx.g0\vrBj@h1jꖰ'k9u.Na^?>Fx@ps}'C;J jW彄y ![^<ևHyOϛÃ&"MkNNۻ@5rYkwYn'Z<>~K- '6>QȆXP%&YFNmI9t%PةmIF4C`t풱699u\&fR_YT*l=3hh?Y5zaQM4{,E1I ,>' t[>7ǮB{5?xE#:'p\R!l'B/6ٰnnu?M>]'r1H@㦋~=oEڵ^U%5&{݉" 38-6=42E棔R19{EwT $D%F tc!R4A%`-헗zec1b~(-vnb( r6*AZџUUS/2z Wi}>i~2 ( X9ڲWoTw{'qXPKsn~ZPb2#L]جQ3 s+1K ɭKu"Da݁x9@Oxyx7Os:j~Cߊc&pBߊە\pοmҙAyOE/r"z?լG\W|t(ØuU<ųEQ&/6eTlKHhue:Ԩ~p73tdџ[Q עl斝Ĥ8|,E' H8"n(/V6ϵ08˔bIǪeB娕oKSxfq(~%1 (S9̉ua2) Htzs XԄCRsWpf/ K&\tp!WL-ǙjZ׌EOC;(GOE7]h#˃Ǘ\W iUH&;DZ9^Jc1>JiNP*m@kIa$DחASz@T/JjOsISH* ^kc;lo0v}1zb}׉^g ՔӼR#T>zdK q(t1A>9َ_Ш $ꨘe9;ى?ba&?#ӳ^-6|?8Ⱥ->2PP~\4$($5(9"KJ9:| YTZ ɠ uvi>dxp^"#}h>7Њ]z|EϙPZZO;pry0x=\G+DN=K-ؖEQ3lw"\[ⴆD.Dxu!uA?TnVnVђ ; jś́wN[)mTk-j̙AL_l,{ %yn¬',3":l:@!;0A+:_Wu|-sG-v_CdkwzΘ-Y5KY\VmaY81|4mQTʄ -'rcN-e,L4%B yKMR@:\ `vŌMźGOQT`Q+B]6`FQ -,q set-ݐ1eN[Ι; 2S86 ;&lB5r3am9|Co?*9eN]F*U-)AAXQn?HE# dC0̼ҋ˩ׂLk"|@b͜vKlgv R3A?ЏL*H&eLHc.co"rSFۧ%n޼恑:hP렫~sجQiaҎ~;tAh(rI#Rw32r`oY: rC9T|d8sNlzvmJE. W B S^iF~QN\r{w9vtH5I³ cKD( sT1Yab^P.7ޠ B$M`W~/o&$mEH9]׶, AZn9.-䗓 7 081>=VUS +Ml!mNI4i+YF0!La)*93`wu 8PrF ^4f[7}mDZ69B\-G;me28Uޱ*עK6OmI$߮ {7 (B.װyr9|7łPJJODEh.ڂm}Iky.\a9"s:磊V&63t cuDW[PesCЬA"JJ/B}QsO5>BX#T Rd{@*`‰ E~xN0'/Owty3t>aPm@!K L $e>D.>y"&ŸdmΣNûgOql$7id9y˭nr@8TVwI|2?0>"kAxH_qoJAFI(R<ħ/a#Y<}_`yhDlqDC$VtIbw6M۽[W8}NB=は2GgϠ_8Sό^A &: #BlM xZJlP íǶDvw[Q8"dG=sАNO j1XJ--=]pc +^5=*UxȎIڽ^˩h2@k&~Kw#2v/r\|:eke׷U۸DLI*a9e, eJP s%>t&li.AD4yluqƝYsH؄mvžWGgsE34SPSCcÈ]\l]AAcbNIRH 9s"dE0Zdϻ_V&8(\q;68lGyY< ^}3ԫi/QܸY Ϯe<>XSƫH lor/s&,+ԓhZ*Ho'!316FTW[)9K$DmpΩB iuM~9ai|@0 OYϒz `bD b%[Ӊސu|Q+*k-ϻs+6o^Z!^pga#9ĈvŻՓ=:P _ޥ3NS6fV+3t2'J}Ro'@&b:Xuw^WwuG7wWuu0.S{\1}(l bM(̸& p.ԪQ{8!+ѣhl|xa)RxQS;KmZ3ngJeVymp z tkF?ډ_ly}=cvϩ~5;}p[ CYo7cWDsG^5vYCVP8;C gY8LX9צy⣗o?]l)@F[AV" {%<6k k%Wtw Oh4Q|ePYj޻jfpyE;\&̬\ELy,"7u:(":IIܥSJrk$^y2ʛ!'D N0J_6b'(x(Ovpo% ڳ&RT1ѿ_i3R"Q6QsFs{I0-bc5`lR낤I?=m73/$>mPYj=,VsJ&7wa{- XBOQq7{;ޛcMx9R23yD ڱI\ ˬʟRPl1U0%6([J{gftJtj3ޚƽUrڥx{r Mijñ'%Go_yWkǫIʓٓZ>3&ݬϒgggk˫u]׾_^o|wbh?W_3 vd8W|JT|hvãcl?{x̞4B;" {5;IYȗwRi`^*crD!&h&-QDf\ QzoG mpsvow>ҿ;G,Nf6KkF4Epz($pt.~D͌K/ta=Oo[*,,#Vp"OG|:<%[d8MSppI:hvPOu=0́DD$Qׂ=al隿.zߩ/&/f0N՗ Վe N#Lud690uYyf2cy:7–/ "vʗYF~づZtrE+!{g.Wo3Zx7/ߒ4 ~"!lr6MtdQl)'YNV>##pXrY< :I a$x0pq@\/'I薜^=2w<.e3b??fU+qX.a^gV w 'HV#Mx<~GIJ|%Q$,P1u6=(@Ү !(4AQPoIcHDs=lt<0[8kFu[U۽Xa~A:{eQs3W$YNaEA8MÊ 0r伝=8@_ɁGN1vHntr?U (|6\lH҇FFOZY~gł h9*9骬},࣒<(' +!Kb* BJ&KE(z\0vkc zKj93.vNPUIA@),EPH­*N影{ R0;˿?Vl=S4aTPIхlT#Zy T&'L9L"D3 ÏhKс&w{FNIpj@1H oFyYOmxIwi?\Jˁ)LvM |AQK%fs9`>B6P%'~brX{k31 vfY^)B;[*2OG'\k5FL%cTFAW- Me\VAi+i9MqhKa`;!V/< %^|BἜvaܮ FGtѵ[U&mv1Uiq*+\A]i7}qS~ѮPpA-&+]~#VaFPn[+:`|9f{+َo@~Ò*+&U ?_G,PLec :uɤv܄~7GuVTll{9Jc6ZS93x3+ٻ`JMԇcqOZ"7r[r%/|UFa) a1ݝ>`zRݵ-6IH SggݜJ#1 W_/ cj̈́_AR7]G䄁Z\ĺȬBQL#1kN\q U|GK`3NNlht3zIuK kE=c; ٥z\=8|W,ծk.@>WvF]hNG B^ ΒsPÝޏ8 z:AGf=T%JG 9emZT/dœGƥO&Dj*U4[8#Rb@_R}(Ϳ4L `%5S[pn>PE A!wbrֻ o`iy/ÃEbIz_'^q琒ZZfNEk:R"~E)/TY0F[EIvY('yv>TdU9ȣKm2VV ύ!% |еT ?keHT@|nTKL'! oEf vlc$Mwb4cg2"#ڵ"9X-ݾVg ̙SV}!CJq3ěnl$uPȽ fv$+zNj,b+=~ ~4uƬ$ݳϚnozXoy0kJtFm)B2o4iղJ7+UnbGWO vk _+mU{Ջcn&??Oo:xO~m @spUW̡Yo|mv3#ޛH>YEShy6f߸) _d,_JA }k%%pfy#Zðh;P~/_3heD_ :Ex޼2MLog`Iv/Z9S=R~ th`) 2geylfHr/GvS ~;[~ko%nN)kh@) EwG[fd&$ja YZM6N%K!9qFo Dv\h|a1Rrp\ ʧ8LTjAj$kȬYd#R Y) Ql.&U$3h'=oDnZ gV|'H)QLg}3?8i[B׼T=pO`~c@aWOx^Lސe*:g7yen l]ZS@db6m= sƼ?3|z vQ5~\Vƽ>_?/ Q L:,]ik1?6XU"֜7&49͜scJM(g՚?&fʷ>^^{V>3L?S3L?Sm7lI^(*΄*w vId72^V,ezs'3-N]SVWv'﷏b@8[XnI;24nh'G{oP6UۍSM ^K@"~t{6p!Hc!8.{ZڃwV;m7+[(  JzcjKFj7+h>[;^2MZsi!/yb>97|T<$R_<Գ3A.(k8,WtzԬMZ{ %4&P,j_u[ ӊڰ_F2yB_Rt/nQ^C5_c.ʫMb ~Stpg(PAԱbO_7fk`O%Q]& MF28$:֤{ƣm; WBKa1Ad-'juYԓ+/pXN-`{#rq%Gӧ䦾ISV6%䤱 7&c2U!^u dՄZcs:?Hɡa馜oj؉~(Z'Ĩ%2У2itQ ti0[~a \t$W髽]\"[ġ\JG*P']^X |#z(3K*ڂ"PVy7ғ40P%\ʳJ^)ᙼvhS$3onW+}U?9ں-@iWZ_AE?T-dmf I) ѤG@q; !O_׃Ӭk`dJED-#@}?us,wQ؏_+>V[ܙ;1(Q‹EsoZj8^3~AEWt ]+[d :=H50F!ܜCDjp;ڣ.?"P5ԣkWV WCCyT`p@y=Ue}$l(3"%yQ\p<l0ABޅXGe_=Vqt8!UNQHv+4UOi^sR#gfNo'#'@ +K tpIYA'[wNxFrk2), B!5'74& H>hIʾ <7: ֳN'mT?$70Uu-磧bl#A I۪GRv_ nƁ^GeV/çnG0%Qon_1o5'oA/+WF=zHMO\XX1iǃN(Ke @J fsylvFAØ<Ӣ C7J j45W u3ۊv1򽥙oQI)N[i'T_!n 78Nrmvk^?37LyT9o p_N (KAL<zy2wD'}Γ g鍃YP& \J-pʗs4G8w1NV9'cƀ(7|"USi8vc,+-\᳒٥91nRǯaX:ְ0۞>Atju MRf}#&R8TpsE{S=>4tUw:c)~3"K>> ]2m () +M".0n0\U8.!hq@D@1Z0r b7 =rqѯE59*Sh'"& RR 5Rȓ̓Ql`tbK}C >OL4$DNMU)qCus@s]_e' s Mǥ9L%OgFqFٺw)H!$J<@P"7P#9tÓY5@_C䡆UZne"%hGYI*_ [No=,/we5_n$ęG2ϥ,#k#7HԪ_wҔt<26O³Ŧ0!l8dΟOe|,.b2UoDV 5-?7]D{@:1}K}Ab#L2$䜷8sJWWN2~o<+M?c+O*3O㿧i4{=Fgow.Is젳F=uwFNH^do߼Ø= PAPZjJ]2)d8&q7GHGRx4TNáҗs97^gQƿ)iuh"呢CJ>57-\7Pqxud.i/,5$q؈ T_6%jZ zYwzY`'5f~B:{j!cxE9xQ|0҄l~4jD}\2Z![Iw1 ALu G"QNynKt4R;R 7²Zf"2&!Mhw6~=2칛Ϳc`/+U2.o6O/+]Y)//F2/ڳxu|4Tr)<Dfž z&|"w\sUN֫"{D]LQhɹ7@ ZߤȮ]yUveE0a=Er#0\&`G11;^K/.` rXl)Y ~T UԡݖWPύRC z^)ؔ1- du.;2N$) 0͛x$pjSt`ȴԠN8UM V:>u{w8V]/Os*񦊰50@f0D3=U@m}aeR6H'M[2nv΀oFrglW/ޞDQҨ9OHu*wpԓPMLI$ MRG\qpwtiEIquɮA(_@LsǛ`eCyQ ?4,X@&]zhrXm4׿YL|lEhx8u, %7"6xD :}ՙ3~yxm>#0C41?9t,+gQǧ0IIaUP{n{_UM>JzY N3,`S}\Fp*ޮm┤)77]%?&Ke֍/,..mdFB~x`ڴN:dׄ-!.B.]0>$W!)L0$1\v/Ny!~wm`[ 2 JD(]M]HQ &Pm)#}8ox@+)2) 8X1Wb@UsP ktO@7+I645X->Ȗb!]1SH F_:(-/8|YdF4E"S?HG3 N Gp֊uE-OrmxTI 1nmF^,"T "j[.p ʿK"_l .<+w8h=Q~+fe{>fFLAIx!em <(ҜX=?oSahDυ<HѪ-pYk'A2,jrXGX :g6,5JPrv/G+ZZ^ jAh|byq+n9'tSZH\.DTE [B7)fDg寍 [ edNkW,?͢cSé-*c1`l >CMJGxaپVX+3ڻ;*&&Kˤry8!JiRoEuDȓr^ljO&f$7wTR9,B}j;ei=wJ?*6ա觔.U*-n-9Pu&4:>2|Jh ؈ ys$J;%#XZmA OiV ~|1^9˨*ctud%rwZ)Q($a!8P)A F2u\4HB^I$[ԬfRBI^G;Ԇ"Uǭ T*%7 C,:VxJdr0tc:)ۺO[ȡA9׈e呁EHn ė٭5kI٧ ,-<) \!N~b[|\BaFʵRvSuQ I$Jr۝xwAۛGDpd} Ɯ]k }ã_Z.:ttͤ( ZB&_kiس_<h)Zɦy-j^N+%xf -Ih^ҹFwhŦڂ5 b?Bf*nM7!DEI7B|l'#cm 6mLrDE{vZم m xEOuҠf jd|]/u]j(=#=|{Ԍ/L&>*h>ܭW>/xXP^^uSʐtdAm/aRX %وjxF菇ODKcfb4͸BP 6H}؍YBv>eOyȢMVx%!WoD3I퍸 }Q0eFiM pVφ/hم=Inf+_FNyxghIGD2姩TN7rYNa!>z:I8xiSτyeNSS&nA;㡏H1?JiN_;HI6]~ؚ t_?yRI52څ>Tբ~0%l6` [KTXC+ILvP ņ;2n^o scA#܋ftON(BiclۏFrjw-6\b=ڴuXl%M oH\W9,Krum}*8Hz8S8(6R֑R|C/?Y}د6?S?zO^Swmr51<rWdhs\u}nj@ y%bo1YJ@VB%gB5&h>$V%WDGL"%͞pInuKn8sAxw]klhGTZ!*RL>[A6";+T:iTO4)-/UP-,Nn;,cQ+T >G[M# j*\? ٥tL踺_>Q`\LXeDϣPUVg,<ǭIZ[~i)zx3ɀ=QdxAу7a8ײ_"_T&:wE`0}$iyb2B|(BW't)iI N17IDOL$j+ ,=gw϶5FN"BЧūTvѹj%媷I,wbdD:JXvbnA5%`$ǹ/pX&N`Մ:ԭNMU\@[Zg9!<ϓ?">?E%5L.u B̾uJZ<}(G7k /?IV]N9ERdTƼ/\S{18A^Պ3RV[2|] !Rw `4Drl~0&{cOVr0A|G4b C itswOh^&Bb07'H:y]BI\Sw\ ig sUHiL52U k,a(%6s+˓g##bdF4?'fU-~=Q9:S+,8T #bZ @}MmԄK/" F^v2ob~$cQ5ꜱۃRByNNLDO]/}4 iWF:Xբ{:DAf%u b8$" @~`A}85χb X b<fuu҉J(O(&SxHSCL0[lQzC@*)(oѥc\ _0S/~ܜlZ~xycx\Y_|kiǩ dq 2zL=A b{Sy퓃ǧ1I(>dg~I1' +qG Vb9&JqjY(lE2^NHI$C×OuAhSl(Oeezqp[]_{wwD^د)~RI//`}X]}J&+du%&k$lZ<$¦7WWv;ȴpx4b?gW{(~zso;'秿ZI %QP}XMyyy]=_^$x67UgfHOİ>Y#'>}u𢥹 KЕll@O|l>F9 }rĝ~ ̃.Dۋ’48X(ʏ.>֞~t<~\Y@[E$XW XlzFdPhlYFLAY?F!yq\b_(1&,EX0U7(<G^TŸ9Sp1{jo9ĤfLuWEͻSj9%ջm~x@_ qq^iN=:KwsYj) ٳikO7?hI~ߘ`B{@#s$^_c$51&F6絊}=ku)pu=zJDAF͏^qn$pOMV>鑙YqSLr5W*wڍW|\ӫ+{zz.[3Dq*>lZ%@\:PGi@^xΫ Z 縋%3κݡ* ծuFX^έH<@"F#&FϞU_T~Sa*?L;pц7&٣20 )+Sc0J.Dcx`2EػȔ{ y $ Փqh[E-=q#Ε0` 0dž;VW[=*W2y0csD̎NG"D`HK:MD@3kM7ُSKB*2>|h,R:N:݌WO42UXd㵗w>#-{\Nz1XX ,N V+D)f Ed >}+fwdb5(MwCn]P؟+Y3S|{⏄{G!9JX|&LOӟgC?e0