#!/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=0651c420cb9d03321d8219fe04f356d2 # 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? W8bp5k͟jͣfy\jz\oD?Zy7E8ך)zV{YkD}:^w鸺o9i焁zĥu<("5-w ndQbsVAYIJuLwU˿%;+,ӚZBt%uS,]gmp>f>wXmZ8$8lAW,BSyę4 `V8k db;e @X>DKsZP`!0 `\q?4cPiz\}Z܋%>hDn e!>, z@P4$`!6M ǧ b,SM"2-FC-4>y^ Qu{$%gS"HTוF iWGXV`j?p$) |5ɀ}U ޸+/*P@=JVPTفdpNQgrOV?eFM*wƽ ǣ@2וN-_If%{%y44BDVətzNX#"O]$*GJnA&p}X۾j_'%GPg*cU"AI\F厤@aB+mm69 ܟIOh4_e_t6 210i0QLr})A%$FQ( * H*|!;ϵHeP ̦SYnjqTP:Oq}/#8"fD׹ ϖBh|3\k{ 1s>8Ԛ`t> Oq솘SCϥhF%+&9čb߫b!#/M͓@ə[Iz$ |L<u>w^!^mJ-#G?nzYK֪w_q!mS1U2XB!":1W)Ëao]ӠGia鸈2\hCX:g:\1L#A 2'SJ+SZPԎsʔq\}M]JdH4i0+Fq1gxrVP.:>`EL.M]p5HFt,ѻN؈s$H 3sfyNʭ$*X1x<]+ ͵^bzS5~<bX-LumD#$i%Bi(|Lw믹wijbed [www dk8-{uYA>-{$grTGǭjeEiw"oJ$o8I`Y~9>C XF,QI{2a:y)__(?5X)hT0$k([-h\|3̀+f@<%3 z{'}l+"FFB'ݭV "DnDrQ,"dYS/,b!TCv4ΑG?OEj DlЦs}L+VWrXT-W0Zˣz?Ό˛sCb@4GlϚ٬8F*D_!t /(*FԦ N]GX~ ^}J0% :X(xgBl4+$~M_cz,$S hu 8)X6TwI}Ki2TLgƀ4X"ݯ7 dPASȈ)c 2 qa^HQNuB" jYzF/L +܁@7MThDq2N^hyz n([i6f +{ ƸC0XLUWVUP є3t6(I:&ABFcRƐE5xm3_ ݉jZCDw(HãD/s0;mwEީOtYyi,\E8RZI4bX6zBwf Skhh>^|/o&*O"#J>-nKsCF۷|5ywY׀a!LL9/'-Lígbާb4,R#v T|n>Gahݸ;\&X^F V3 Qg= 3HaJ5ߴ1Q= c YRDlbέS4k:0C2 䟊&/^7{dB^_W_‡n_ -ߕS%vCh\\8](VNdNf0[NV)"Z˞:[Em~]{K-Z[bm.dLaEÅc,$ePR!L3K"XR=^萵Ejh\ hI(ͧb:MÆΨyo+9ZQK/\t*i:,7 f+ odcQ0D0c~ b5å zXa_RQ #+(+1ys LҎjY9:a[b?IPVo-LW_FtUxfiX]3,yJh61a2'jmLm}moZTyBX:I嘬\pI2EN~ח4=Ys7ʆt:_y\y5pY,|Qds԰ &8"G>}3*l=3Jy )LIu'; ŭkl0Df)Ό ?&X1Ѝ[>6~\dvk*tP& ><&F8B4QbAEK}Wߌ&!"V)%ҌI@)n{6廲/κ2-O fJ evR,m{ڑl2B}h7hXa`ڏyܼR18l`غp}@iwK8lJ=5[zܝ+bH?Uk+W~cg%x)J[M) z ]>e& qz_wd"JЮ;@^Jx!Scb$f:i74i 'f=%C8Cܨc@Ԏ~zяn6py#D.sTTTzM(8Y,}j7V^kAbّ[b 7\44C Gsz Cgpp})REfU(HE q~BL=3gBVB '(oyizlCVl%P7G|$E"!28ԅ@ }|7Tl NIiZKR^.PcEƔe^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/&$h7ɦ3d-q#TW!E\ZOf#J컓M/~xb<i\nww߿WK-ba;2,&y U! l2|gP7R}ěp,wq#. 2 B봇\{EY\X蒆={9{/uFR[{e|p_{ Rlā=AߴW[ >wW|݋6_3:1ՠ;I#'<ع>9/~Zs{(_mſ#< 2 w cv}?@3XY;sqsZ j"(`Z 0@WށGc`jݯO{=W3/kt>}Z,I}bd.][٢-.&ҘWdWʅ [rMn 3؝ w(%?#D‡?H¯W[Q 5 [R31{_jf)FNDF͔7&$u ;W%,~Uϴ LLICHΨ+~pjSWqVL0R)d<~07-Tț3ll=z3̜'lORB3 ٹKeӦyLtp:o]qRn?[W㋯ \H$ã:x\,U+$=Fr6l?(x|<|׬kv?ng}_GU+8!& `>f{N6RE3lvuK+kSg/s52[pQ})kZBKTLС 'Cϯw¨QB&᫟cؐ-s[nE/'}h1ZEUxZ. ,xj%IU (f6d! ypj`_mX^ߕYm`(3Vq^zy΂~ LL];RQ]bnÿc0FI w\zu>6'\wZGpw 'X3-dZFGoEbH`N Jh=θz[xK} Bth_Rm >(Jo`(j2ll,*vVڬU'Ą`(p{`w쉙k)wxM˙e4e KQ uT( >TWn*JSd-=e,$].GxL26Mٲ s-Fm7,}7X Ah}#T4@%"4i\YW<"Q 5N$ddL@ o,&_]^f0^_20ՄjVF@|Eh)a1&];hzAE(;4PQwJ%Tq 'ReTiP|Kӆ10 $ {']s>nnngЊR2b{bq̗>DzS5U}z <ɠ@iZO!9{gO])zԌ9fW<8n񜻣iӄ$H ŀC`1geֻ2O>fj;oQ}Os݁a[դ<6yCc9TGviY2[︬㪴<V7zĝXY#^ FAŞ<߫ͫ~aKL2b4_BsWq`sƞwMUAbVrpJ?LN:|y6XY ϗ`ZB/@ [ānOɱXk5 &m' [QnxoHFd90`kA@o&Ů-gv}۪5%D%]k&|C_w 'DpJ,.s=6Y#ag삛/EWc"3X'9y*ٟfpyxfU;ϘԼu5YX3*AoTu{qDP nA`-(HP1NJ&| [ G)wzWlDF(wNd%̌`}U%2(l>#+ǍfP߼~;u6V)'t!snýsm2,{"=cчof&)ԃW|Ȅ Щ,&=ɋMY:5#ZL`FrF?8@uyt>[n-Q6:C5dJjfB"-B1~F{_tSlѱjxkrN+̷e)K8~֪V64O9YޗbN~0'J|Bk6ܚ,*C RqWpz/SLp\1TӺf/Bxv&Q@rbKdy25QaZ|6L;&)K*I$ ɜ^JMrB},Iy2.fNMt}4{K[LբE^%O`GU I{|c) ~&y`F54|k,?<%}ĄjAg Պ& B"KM3 !>z$V.9XXAmɟh OO{BBBC 'Vdg{#(? ҹVK`pDOZ`]ч.5c"۷V&,/ 䈬Z SupY!$֞Ss܅YB9JK 2QN9: 7@ z9z{,m,ʪ:LX^31#NktE /sN 0<!SL N~.#-YyȻ!Z2ܗrA, i(zv{RqJ9 y+vM`N'0o2RUed>C#q~e k4>&9Lg1(=߂+0Ek*_NgThR+w>o'}5Nv؅N7q"AVeYseemv5ϨѝO8W3hwL>BVi*m G-'YH/I7żzXACr0%mi~ӌ2PnabNnR W" -j"ec7f$^Т)!pļhUnH2|j-wLV[̊tVK)<2 wLaX(΄OQoG%Lҩ@ljY$Q:zͪ at>SU5 eս*sUwi !$O_5IR ӒRu? ih$l`WzwZ.(h~@>A8*|-d۰=ô6(1EeVȏ<.U7) P:8բ" #4(D Qo@Kܪ~#uz0x֨:0yM Gi'Jt$q9|9AOirNߌ3f9<M/-F3Wz<ͦgѶ8m1PpU Uk4WLatosu)KN|#aG'یmQOTD(֓:Q /4L|/Pd)xy'J;p5.װyr9|7PŪJJODExlBτm}Iky.\ia9"s: U(y ̂]x&:"[-hesCмx~ W$\Uɽ$‰ u88yE޻y~>Ȗv%x;grUuMōΥƊFϑ[&CyXcm%Ё#9>9;tS#M%I6;ϰi]jfg6AffѺ3HYy:&NOR8gkZ:qZ-[2oh[EXtK// 6M욮 %^=aMVojc˱e4UBd[F6Sφqmy C$\[FC["# ~&9Y6D%ʶm+SU2Vn7l:ZߚrJaަy.:ȱT4fjDV}[v&7+˲"zCnV[Wor&+0Hogk ۻ*E/h|;܀P/"\Om(Mo_8^Y*ӨhSs a!L"g$xrZ#52uV'HOv$4STu Nѷ϶OTy=/>SPvU$ϟO6cO :]4䎼#:CG)F;oG/Hڢ"!s7)ʵ*]h8VeP#Շl2U8&GWdx!7+_)()q6\g{5ɒH47yC   ' A > b:ٺ! -vhnI_xy ; |9:{5©W~fgvj2rI`u\%+t`0C0+" (O0\ ylKD'4+V!> ^GU(g\" nxA-8R˞Z.\^/q w-xRvr6: 38&V#r7޾(tvr딭]]ZVn>1%匱\f;ܖ)AY3ύ|p&l4.Ahu1L ykD M옋u=^ q5%9)p0"yev6[WPl@!N)$@D#`$bKVnQQ">l+XLhr0%G܎ ;[=Q^VY'+>N׾vQ4(0nVO97' &s^Z OkxiumV1K L<+"AE"4w> |1"DzmdiFtɫ3 R78aAQ Q 4:l?&-0&yF{=~pb?"ϝTxDdWQzHԇx@V[B'\? @, خcyAOKOq36jv/^wo0?=ذD n[qcs;Oy=ZS0M}@pwƈDU$܌wiSZ@reARzEyO Yky>4>`p觅/CqRhcnnq'vө̷ipS U R]y#Ro2] h`f@l1m`PAvbAmyONh"M: -Gwf˄TCé3)FTY#tkA 2Juf:PyL~ƍH3Le4A^I{IXIϭv>F,j܋T|ӽ^ϕQsb Gm:jlꅯMoӤ%5]yZXr0̌_=:0fN8}a6Hŏ2R<0,!`9]ְ1IE.+*- .'\cDQ6o#M̯x8R4x, }oi1 o~`vplS MzK0X4%g0$ 'O >.x3YGZ5wTusr`2E_bvbf#_.95z+^:iH$+GU5 bӖ_?)lq4Yj_:%qgQ7h">`ɮ e{+pvzXF,.iDr2>O &s)(Z8N9dyEyd[仠2ȅ2.(uP!e$(XqNDa*mzhi Yς]P8*LZ~^ 4>Ƕ?vkt ݳh=>=ÍɅJl4\G\ 13_E \wYך+jd `!t 7.7}aW)_|X"Q\An+E82~?bFLA'+?f@EaxP>6z(:^3!ahFO O~)RvdϔMϨ8ENWp,Ol/Z>_\./ӁTz=c1|.\0y6!vk-^'"K[9 _dN6cwgycNԷJX$sPRǑh!x4hmVR,dcnV/.x0ndXK-{]QGy:+Ý]8|ɭ*-.xj+eY=w^2\b+y'Qs(EP ~"}ͻmAŅ[֩OaJ Y6*]şa?^c?k+ֽ+k+3f?Y,g3?t*:m5WIdHkCzMatp^hְG'﵆6Dɰ@%!CO_欄+/DiZhuUؙq C)S*@FhO8ؐ"TؔVT28e)؜<R:5BK9~KyI$Bz>s{R_݄clD"BI`% W@ObgTjub4x^"Q0w9u^#Kߥ-ws ($e!eɘGFIwgJ7({ƥ5SJ& wĈQ0qhᄍ)UztH5DX7 .Ctk~ .UMG%q ZYU[zy|\!N>% [BaF-[,!N+kT",m""jy||Sc!]kn*GM YEǃhpe]cie\?kt[C}] fnlbX/3h PWZNxzė!} $6N4e?yWp\6 z&)c阘k˭w8O >=TF[iR-5i(I{2H; ""Mf~k$EoSSBZo%”Qh#U./R$땤w6eNMMRVF&zuښXS| Rf Y&3!NP5oa?Jw-Gk4o L@ԻDgi<M:רZ@ÀV7ti鯢L%ɰ&䑨( Ftd"4vPAўjGϒyՍ(*]M*vƾAv7'r/:UVA ߎWfD|a9y :`^7j 6UoQ߸goWyQ!ĸ9NlxGÉ^Rg;56f?mSLrRA$jT lFޱ<|Uq]{]*zvY ͶN5`0)١x'mfyĢuM>)Γ.ms dն*Vaye݌lI|̣Z.'1OA(;Oިd;}ji HV 9^u^=+\3۞ yZ%hd ',Xpg`z~p"!>8V3FPHP|{ǾX[dBXz@MnX-Uo3I|ȃpO +J;0 T`3p5[!ՂTjȣ@|[3EM:"u@]t ']EBis<~qCU)C5இ ssM+!ZV>!}e*}VoGdGnd@=^mcZ#]xC'^- ??ŵF L]ak Jiҋ+S:աb*&Vaኌd5[œjעu=%٩PXY@ڕh XAg;V$"_n I;ו4" eEN"O[{Vm -RLuoaQ-KaKxl/ϗQ'?^{X_{<?3?g3'w`̔ [$i[wDxyQpێs|C{kzo'#bO7eu[?9٣Ew朢ͭVWk+s.EIp-~^>ww7 1ģ}*U_6X}WW=ztqh~gwuS~LIe'jԡCww?L8i.iià 8mJ/!:{GRd%| 5MN -OʥpΕ}Nyv"lYDB?,[ Z||zYFh!WQڀB)s\GUbop#g zba~N}.yh"ڭ{.o6x8ipW6 i"|Ed2"<y*g{Pq߹Z>:VQfY |4+16p Q ͽV ^7_d9kǠ:-90 2 Gu$bՖa@Æ:E`̷ S0Xam:[|x =BnkQK%ef>叆>pr-uZ XBM Ļn{G'& r-R23@םiwb,mZe? A |Ƚ }gFyGWk}'ac6 ZldK2լLB6RГIU=jWb0b MijFWqбg/}"ܫյWοO/z3M{޸8O8O~8xhavUaG?7b߲XE?x9@ PPxdO)|GǧcmuЎ餛Xpذ9id<2I 8֒adw衒gTcGeEnΕ~%mxK\[w_;lleu pR=m`|w^83#4|D:xXֽq9- gGH?6+d5f.6eX6=&3vk颳l [D l!7B~u(C.@*AVhXsp:2qFaTgku>W[&cV`C8J{T22h%Ȥ Q&^,'F$C㜨\+H}YA\z`t[!.}kt7KޥZa[ Sr!m %O\fX RQҼ#$%B8ó= ̸f=+ my7RC8T v7M@*8H ݫ\4iO]ͥduNRTN^(VUK4fi&^%yb=]j܅buۤKyDDQ]0:YvV>##FgW9)_'&78 r(Þ@j9)@nf%*y/s<ۭ=OKYX47?~c WvC_䷏ Ouk]*.=A9ܤG>}ZO"@%R-BL]ߡӔtp0d"8qRg9۞h9xNixsleAT6+;Gw'gYU-2Zsm[=C,`NảEAL<ߍqWE_8W"tAǸL6q-.u]v_cw^>f_g=g3{=j \?Ο?=D7d.bGrocp^Z]*]MRI&fF[,Vjo*x-u-@)Ѡc qØSICㆨFQԇe5J]q1u^͢y/זeT{ ߌG÷ qRl@_yM5#^DuĨMx/y?Jab^@;k*'?A~}T;#\V/HMQ@d+ U[O ?KpѴgs9l /Q0(ժ"eãTJuMSD]x4AC_/ m$0:͗B&7J G  QMi-=}ߘ/Z l ,~62.6}Uظ | I7>׸vyRFÛJ)t;V^`=M X GpEq!maά&AQ[u2es}*1*>{'K [L5+LaSnxH.HTM\LKN 2+,9Xn q^ XG "r,(5NsO8N^X ނ-:T1?be&-#[p(UzO6uavf|Kܞqduf@Uʼkd ִ'uL9;I݃ @-o?;ѴGP9޼~@C[^ެ||-ϔ?3uuƉPߢci To~wvsLG AmyJNq4J\z΄4 ; ^gur?{czOs/Zf]}D`_2PVfnImӽLʁ_%*dw"PSPF}r1ː9]Ly6]4yĽ(KMߝ'N3i%JBEn=}*,O{%j'Xem(S+lfNwʇ<k0N$۪ :W3`Jj@<xg;gaA( CzO ߦPai~k@TYAEK+( ڍѧ>fYGd|%SZ MP۲yՕPҊh<7T^b~ w9᎜ 6p9]!W6~h'e_ 9ȿf}uDGހjGE@Buih}\m38ز~2Z(qB0F<(RqVlN`î#A#UKQ|TUQ͓ yjآONl-Y-NÕϖ* \t [ѿ.*f0h9}#&R8TpsE{U?9L7H/:_,XX, čI lF=ö.=Du*"fd`Nr$-wf'OeFzYx9.AFIޣ1=Qn0pG\(Qe]_U'ަ_']3L7`:nrvuBHpQ0ePR U@0/ f8ASDqȨ-/\!`&`dqI %fRп$ wIFߓqWVeìi,r) x2h[[FV3Xǯ jյ,26 0،>xzyȟg,5},TܿVƻGoOYDWAb2UoD=ϖnِXʘi]:e>Q mk5Lk]nsߘ.vum=Zg_?:{= k~ϢgQ߳Y,{'D}/TLx$5 C2!ʘc~ de6ި7ۏ٤ѯ<~Sџ!jJFarWsTs*] VE*ׂU,:NSN /ZJSkJazazzoS=m*TU@j QSY%1ܥpXV;-J+no0n|"jTZ l6>/= ~yP>:\*=rcg/Rְ ;/{RRpz56޶bąWݙzCW{;S;?yFNUw5(>^R?>)]{|a a_C_B`?%'6ᩁ|l-v_=`z5^wzukcl:8QgnhA8=S fAÉ<\ Gwh)q)=CG~͹N>"=pؠP2GZlW@Ҍm bxum?FqDJ%QQ6VW 90h}a͸EB?/@`AN#S3ֈr٢0qI Id]y 'Lg첗C}WKܣY-?g2DmVuMNZJ0%C&ƕ3ET=T VDkL J}G':%S);P^C[EfȒU="`:8Q}ȯS_{㕬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ߓ_Ǿg_?{=sk~ϼg^3{=.NN* 8|76t( z`}jDC^㙼ED|Z'؄Lׁ܏҆G˩gtP )Eg!蠚PL8d C͞~F |}W+%RUL~`(\F7,һBZh6 JvV1&A1.\p"PW!pr;i-ɗEbDni05S+~A7.ܔ3&3ŽU E:XGÓ vmebZ8iV IaN,+Ċ@9ĞCka0?~?{Yd//'{fAL0+gk||a?ĶiDAɮ-Wɀ g!IMLI.F 8Lͫ%Q+f=Ib=N5`˭(UKuZ ^b+/c{Fc0 IG烨%$%Yl/5`o J Y㮣4/a'yRKʹPPM1J5,kt}d7aMS\zB,] ᦡ}Kuj9j&NQ 7'󓝞y;ۺ߯O[n/6E[04fB|V.Bxgu/FC榸c7d#'6z({dǮ;ڴsц9sUDƓ'xU Β;n*U]G6oO~;5Z}CWՖlKmj((9\Ӷg}'\Fvs8L^Pv4ٶ̍(GɊh}i/Ziɯ[*O2G^s^P:t-V)ȖM`W\-KvS^{[G|Gc*`zHҨEE H7c zc\ _fftlc_G$oSԱ~6?VVWWf_uM*TXA :"P y}tuVR Ե2J_1S!^k/u._`gۭN R`dI]Tǭv|f7}Y-)r:;PkF[Tj$u|g>;<=G>z^f2CХX/iEKp_EK !E騡}.i?Zz~M ^i<}ꔞ+E!.]-\D 0 `R`j3_Qm2j F3l ZpKDǏ?xGOKvJ/jՆ_(_>|?~vyvE||xErq[]Z[Y[ Eۘ| qoq|n݁3tNoyZ>+p=xƕ~ynqݿ#Wwv;rsG^nݿ78 rMKiT.MfeZͿLu/Z]{zo)K\ezqI/bqQ}wzdΟbˢh4HJB([2Z{L-wfD"VC)wQel~ؠiєdPQya&o75E?:-W{g8{g ^D0rrìm< Ͼ%fOV^qa"=չMG?4$AڈΔW#eUQ[I7NҦ\\JDr2@GE\WM*֪~,wiYN#J VWB: g[M- s[R:fWQpMF _>؆ 0V}DxV$q</{Y-sP@ԨTxߖf 4&1LU|ƿ--!Ҹ+WY$PE?`)*>z`d'ϣ3ѼuHp~ z0g w E"IZs =y?S&1{ߡ}+| 'OG3a&?䇙0fí*IMl mn o.thS[ HŐi^%.>#DRh6Ӄqh[CE;M\x7 [pꪞ{[eH{s_You{v|&#{H'ih |  2ӛuop,"XP |x/ͲH~!ЕLEukw,f?%nU˜yL=+I_b̈xq?VVy?_GąlͭVg'ϐm p j=j0cMr?b Jؙzf'p3~?89ƞ0