summaryrefslogtreecommitdiff
path: root/fs/exportfs
diff options
context:
space:
mode:
Diffstat (limited to 'fs/exportfs')
-rw-r--r--fs/exportfs/expfs.c33
1 files changed, 19 insertions, 14 deletions
diff --git a/fs/exportfs/expfs.c b/fs/exportfs/expfs.c
index b05acb796135..b0201ca6e9c6 100644
--- a/fs/exportfs/expfs.c
+++ b/fs/exportfs/expfs.c
@@ -304,24 +304,23 @@ out:
/**
* export_encode_fh - default export_operations->encode_fh function
- * @dentry: the dentry to encode
+ * @inode: the object to encode
* @fh: where to store the file handle fragment
* @max_len: maximum length to store there
- * @connectable: whether to store parent information
+ * @parent: parent directory inode, if wanted
*
* This default encode_fh function assumes that the 32 inode number
* is suitable for locating an inode, and that the generation number
* can be used to check that it is still valid. It places them in the
* filehandle fragment where export_decode_fh expects to find them.
*/
-static int export_encode_fh(struct dentry *dentry, struct fid *fid,
- int *max_len, int connectable)
+static int export_encode_fh(struct inode *inode, struct fid *fid,
+ int *max_len, struct inode *parent)
{
- struct inode * inode = dentry->d_inode;
int len = *max_len;
int type = FILEID_INO32_GEN;
- if (connectable && (len < 4)) {
+ if (parent && (len < 4)) {
*max_len = 4;
return 255;
} else if (len < 2) {
@@ -332,14 +331,9 @@ static int export_encode_fh(struct dentry *dentry, struct fid *fid,
len = 2;
fid->i32.ino = inode->i_ino;
fid->i32.gen = inode->i_generation;
- if (connectable && !S_ISDIR(inode->i_mode)) {
- struct inode *parent;
-
- spin_lock(&dentry->d_lock);
- parent = dentry->d_parent->d_inode;
+ if (parent) {
fid->i32.parent_ino = parent->i_ino;
fid->i32.parent_gen = parent->i_generation;
- spin_unlock(&dentry->d_lock);
len = 4;
type = FILEID_INO32_GEN_PARENT;
}
@@ -352,11 +346,22 @@ int exportfs_encode_fh(struct dentry *dentry, struct fid *fid, int *max_len,
{
const struct export_operations *nop = dentry->d_sb->s_export_op;
int error;
+ struct dentry *p = NULL;
+ struct inode *inode = dentry->d_inode, *parent = NULL;
+ if (connectable && !S_ISDIR(inode->i_mode)) {
+ p = dget_parent(dentry);
+ /*
+ * note that while p might've ceased to be our parent already,
+ * it's still pinned by and still positive.
+ */
+ parent = p->d_inode;
+ }
if (nop->encode_fh)
- error = nop->encode_fh(dentry, fid->raw, max_len, connectable);
+ error = nop->encode_fh(inode, fid->raw, max_len, parent);
else
- error = export_encode_fh(dentry, fid, max_len, connectable);
+ error = export_encode_fh(inode, fid, max_len, parent);
+ dput(p);
return error;
}
u+* ["n1[DwuB|]:8mXaJ f~fV}[B=Gi|*զ.)Mgq8aA_C;[kwѬms(; |o]G҃'Xxbы~tXv?Z+wڴTX5=n\qҰ.Q#N/-𻧅/쾇a]3Q],B S])ܳrU4U+%Wgw˦phT'6IsQYg )2(Zu`j?lz8@[G4Yc)^=ڥ¤Fn03*iy )^5mdv(/j"&6|m7ZJR^M~ryX"z,JUtDh,b/xp$]v'w&W}yZ8h,4ԭ=8엏KGF2 PtUԨ̥$JKFp<( M>Gߺ뾂Z]dhyrOTLQOLUX Gnp!Pb @$ 3 eʅ4j&"0+J>bu,"#|Z^S uޡOknF_0DͪKɨ{ Bol86&eȜ(o:5A`"J dt8(JH]npPٲ߾۝o o})O\*bFClLꅖNE ?%ab (URsMA`?GJ$Lo-W< Au%2q;a~BemYe\l{UtwI :1dNt HU F0k8a1ۙ<'*X+RB)^\/3Ŀ :P0#~ +DD+{_|DD#j+jȉM|6qIK<-FtFv. UZ21lB+]4/$ ]1BA7 -Cp eC%|X8VCj=S捏{; v{xt{TI$3@hPHf&2m(YE`YUc|01 p S}r,(j J" *J`h&BgݯWΌPIE?ɘi1 5!@oBB&mA i h8m_LK5%TPD;yG;t4A(|:gOmM Q 2LRE,O}_0ZmRRP}jf"VL>TD}cKB撣7ϱ$jzL <;wmҟA^l6wuFl=m҄dd37Ec*5Jtي[-¶y8.ɷatTy(~j":&|c}G3OL2G9GSi`nT>C01Be_-XC$0+I 7n7x)+@vmHh2'gX۲ q<s:iI*݄;*au$pq& *ULG>=j!9v10_}+a0ktg5=UMUIKAlUnA L5- {;11"HWI/As.xĒF8ؑczqfzh9ߥSwҀ'&Tfz3svS]X?|InQoEv:>h JP_=: 0l;]*>k7X tYl g]}ckT>+ze矏|ʾ{GC֒C+UCoO\3]M`Ϛ9`N*V|(:}"j?3`' r a{qya]eFy)X~Kz:/, FdI\|+ﭛ쉳 ҀB2=@_KWtq[s ʢZCTߒd7iOuvk mưU!Xjqל9z~l:>q_3cn!RYtp74[qE[>/ܮ)c53Ŭ9 _LQn%Vo}>NYo6QtW{3sߎ/|֊Z.Ҏ/>ׯwˣ7z[ QOS쪳/qV慔d li>ėdwQJNx/[ˡD?Io_P!U ́6%dX5?6uw8=]+"gX;\\[[9ʪ//*meRLW'W9Z]qʑ$u /Oʮp|sC>0] Efqa/6&!SFI# nmmuͱ$b9t*b$XՂ1Vb p$A*<@/\ȿȫ0c26۲6ܒUm;sm #ͱN뵠m6u+[Q3ǫGԒUӕ&zouo+[d )%le+:[ep*a+Im$$۞ylHI%i ԇGUUZ*7&+5T껍iG<9'U;U9w>ݒ}.3w7N)J!k.17JylWw, U}p!,1VBR-?A}|-4jҭqv %2߾ a9EL0t x+ ݌ )xR "tu)$*Ҏa 8X@p~B 5)=~]g+]WnQ;U4Ko ƴl&8;aOK\/)7SsoZz=yyygh_ ʜ ^8uؼJg!2] ^],)>юd2 DTbb8l'492&` km<$P;˟2^}u{|_s[*'dy{x>ӎxEJq@2׃W5Gb" P;q_FxH5o2RGWެ1h4h )iO37@0d&,]́J Cki?L m'? b?OKFf%29ڛdјʫ6x,X}v `<BTHg'!3mDZsk̮^NRQ.eMۢ[Ɖ$q”$Ӄ9B8% /hV!Y{b4hM+zz4=Ѥqg/jy`d6Hkxi@ )d82ֱŬZ|ˍ׾7>~JJe} GDRE Zbrj.үx2K_`OSm,?wc.ݸΨޜzy&In_Fc*fE؟C,3vMCd-\ %9Ig!ã =a3w%6pxӔ=)oV[sn!~!B wܩx طka-1r~ 8s9dt[wn۝&.fAK_fv{ghQRvܵ=G@X?{Uz:~ϟz[oПK^y, WkDg}rt{{WfoM4ȢC#F oP +۶B?Px#n)ӓ`;|Ls%6!_)w~ۻg]x,_Dz~3Pڊ6 |^D`fG܌=,wYr05sfίTg,%.y?kX o8͆{H_۾aep W|]۫'H"|v{s9c헆@ uxb@>š~.Nmq Ah< {h= >V`Kprwݾ߈*jں;:VG|˘Τړ( q,4/7m"+;FGG}88!ݦ،Dp{4l QpE:o|O7^0|6Ǟ$]qQkpUwW\% 1~ZpEB"Rx TGe&z%ǁ5?g۱" 3m&e7:M"$'5nNx=dBgdr @;8 FFB]#<<68d\fvzPeTR"x8`;bŸlܗxʮ[/b#H='N}o[}AW?_}ݵ_iZΏPp?_ev[Xpu3;& WX`q0xVd/$kuc9{bY[+S!5rF)1Y D!/Xd MCn22b@CQG90 -3/C?;V B &aÂUyy|׈鼟 !?38|d!D=[C1^k=W|yue5}N53>MR>/W螺3܇_r?ok@Ns5xzl @;a=㕜qBtje,=$uKMN-x?ww᥼;n 14u<σ-oW!|_<%̡~iOp#C.{nc' ĄPL_KM.\% p@_/_6ht/d!!o˸6EAI ;8{NN3x CkeCPBk . O:*4"H̳4.aP#nQc$ C]>@&`p<MHbEY.@O5҅_h[bgbej8cXicش*`̥@p-SbkIFБ xC&]N$\' 5KlAd<Т:Mȅ1&h96ka6P_hh%GaYeX;r6L8; ҂es,kLW<-  8;M^ak]-2_WE;.F{>' DhAw\0gu΋KmSpy߫;d-!%! ʀ!'vͤ7<.QzwR(ck^u: ǟã߀26[tM㦥ӮxUm#fS'?s;(91fwkvK:u%.zhϟގ5J}sxtyp)9$]l˲v_dzfeٵ@Ɩ;y-rŠ%phu4:(K!s#Q8;нW(8Kn=1w88eۤ߃;n8tU[~ M,`W4MZT?3`2AtF_.Xڻǟ?{dv_1u;fݾȋwtxfE6$Nk\έ[]{fBI`u-H _qggC<.GCtH#pG|G@ntAݙ:{/;9Xxr:GN&:qz6vZf8XJL2uK۬f+&=5fn,X9JHك{thmemJ Nk ƍ%ij3x}iLǶy3b 0Hu5gAvB?m-ɐf uG:0 ` ..p<54t- ۳;3X3OOٜ1܀Y?ݥV}>=Wӂ|Ϡzs9Z pM`I<2Wߵ.Xy[X-_=%OC;+zn_Tulʋp1`K緛 7K}i:OH#?miwuW3q{ >y&y˵N~p2^ݑ慂:!D'27K|Bw\BLy~ ǥTE3tc/6;wg Z<#k"(\p{&/DX OH:C`t>mRW@;u aP u?\^/ydLcw(Rtmڝ.?m} 1{@& %gu:I~\yR{lv%|;mZrtdB3ހPHxJ_t͍Dq-HoWfy+\*(X!T@mk!t(wR2o Mv%S=9xZTA;WVzҗna2N+GnX1[ &DlQ:uHv%1xh ^$"=!<3OJ㛱8 O:8GE[BH( Xvv9.ׯls+$z(7GɈ<?C§)' bBgKBg>b=_M XM6!Ra"n8llՕҗy 3svЏTMOI)4XvVc>q俺XڶM>Qm?%G~%.Nln_x8"S"5BSA82Si@*tч~Z(Ezw!.J@G(^,z^' wmn]JoϺy}|QۀY&_i$"rҞ;'Df_űƎ#4*aEE5%[lw{6uacS̱Ԕwe˱0><(|=up27 "|^6ٙX🽞hҞrKwU͜ճlaWN9=wyېMrݑ݈mwt@۽u>g! x*z'DroX@FgفMAۼ'psuۻx"J;΂t9rDJ奤r- 4yvID^06{wugKYvby(z8\-3ٝI0+oH-"9C%J?~.G$46!o~>|oP=rz7# ,N:=F" CƖ>ϟc@n󹈮ਐتfR!VWu12<61/1Mzn=_?]šm `7IWi6+s tK|xUimI7Wvs9g.Y-}GOgӲP6./8 ` 8ӹSUz$ţej, xn0澗AgM2ST&%@CxB%.E TI_>H~l|28 ]׬l~n!MI\HŃ^u<>eP m۵i;WxYm*4MAæ[#^a}yg 7JFC`aB&EDž56L~= 2\ EU!jBmޏi7`C_F8HUݠTD2>_,p:Zұ7XH y}gͽ.Di^9soN ӊ~#,tCN@fw2Bz%LGVN{Ҁ ɨ* aW~>ZIf/K&ȗ]t"`@aŪ%kxwANn[@4oL>;HXٯխ?@_Vu_QCԓژ3_io$<8=s*"ZEⴄ[{X%fAD@I Քyj'RCW%f;94VSf =f1yES  0$Wǜٯ%5niծ_p~e@w n<GK5ߗ᫟N31>B6h9AÆvz>6[FW{՟m[+eDqh- GCլ%Z3X*0z\ ;g5UsY .\DX-0Oӏ/S:MN3~|:4qtPjx0 SP&HV}bB/Oɯ~hfA( ZHY!&Us+]=l& CAxoeD6{7|&Fe|FFݨλR~j>˩T;2㠸 jk|0zWj?7~i& $ l܂!(Brzo蘰~_6EQ6 Pj}} .*Ho@#?eiC6DnAxï9X(lbh8=eԀhs-oqR'F[\KjG {EY6 P"$P I.i'g0$3wJgV_uѕ/:apX&vrc $CVOa>P@)T6la#HM)]ͥ(7]‚^ eݮHO0%L#[džk-aRevR:`|B fN`2HF?W̸n:oZA\r^ O:.pg? -ѿ<0ܱ[:ފyx3:~7hӈhP2P{e  VNfQE_xO /~"E8}g2ﻏ`<.DA]y͟.|;xϾ$)()x>s-,p>ךsUɉdCo^%. -$ Sa!ptݏ"[>dqa`vuz~BlCMje$h p(X)pćj8~<@Wû~a}]E ׫u|5NBXy/~@tK hP[+b`m=[lr1fUʔkG8t11(:xisHp(O~ǝzkpd7m*[$Pv|'+E,(!I/dE tb+=qTHzYM%\M%9UH h `xQCdH.,UܟWՀ,G^W,Z8hY)KbDj)T R1sjusrb(;# mUst"o62E]fXa"p0V422;"~q`.e9&(@b~q,iО1C+ fϗVZn3 4\ֆ,7 +z&*|3}2UcxpQ~Qz|0nnJttgbߕ]=.wLbhn]_vBCB8^i{`s~;fZhxLy[3بxَWxQq^w'M~Z@^6+;򵈡_ P1rE+PF#)ew@{OC7' L*AIAo0`%u YRٲֱ4xn*:  Kh}~,}F*qC L=]ė ͭW@x)~ d55&;_QtQǦVN~mXkw_؈, =ϛ)'.LAcGق"ZRZ H*efc8[?Ot>/Jϣg6!,B Y pHJ =Ͽ_qAQ^iy wjnO߅z1p-7wOD>x~^1޺B?Chq V/{DTf~"kX7Ǥc7!suA~Drj מ 9[X-۱8~RxMvT{.Aj.վpMqIñnI* XsBlPU\##v-^ 1 kx{Fjc#A/\UnzSo)tD2ΚAN:c +YΓoQ#sZ1Ƹe8Y9+sOOeZ`əɖ`tlVV}()M>xl׼6 |DCSuVRDCgnGV\LCSಉ;ic E=> W:2s? Sa+Fp.0jGF ~iIZbHXU˳]Pw4E+_Y/ U5-INJ!Lp=1`.g]"[R6VnWmgG|E]pktpg\8vϔfg1f(k5Lʞ`rFt~RaC' @1PHp, BMJx7d,ň"6)/塌PW߈5~n xF#(|`P4wv} \QQ'?|:eWO>~fp/ hOQ,Pj8ÑPKQ1`j. ( i|j"9e%.{MŽQFw䲅Kg/S ͞)\CF51V4cT (y={1xt&4"~O†d4vyl.=?m<; DXx?Ɍ [*#xY榴=aUAȇ}PB)(( P#y_aEk?"sMҞo10e7sE P]J^5r֮Yãz,.+f-N-\VJͻ-@;gb#!V1.|s}"QNTs49Oa`H;T3j>hwk'v!| Ir~rWt4.,\.t( wK~P0$q o1*^*")V7y8'gP 7R{;FVˏ5n۟w*.>gj1ӓ;)5Y<񭿼~tvQxJf_!  iQzbǚA?N ϲMʘI"{Dc q̓ hcCVD1(ڏb1KcUOnݸZeSG ]{xzMs(ߥ1񏻭j|e_xU_ͪQ/eyvZ`0Eeg享 8i c"5(-h祲pǮ79]KL\-<%2PfF{V&: $O?־PP Hz3vg0p}W+2V^TK=+uVk:Iw]¹!飋˝44(WQck3ʅ:*cQP\Dm=r`{ۥA1=ݢW-@=9+!ȿ@a4ms[6n(~f/yx'ܕFf-BQ %@2)PP"u0Vs J3B- [Qj1ژ,@RxGk"܇bfi}~xkqug\~ږ4kkl-d1`pr40{D V#>pZe;kÛϮc?ݢ@aEY0FH<ax}އ*qr8;?l\Mj76Z:e{AM9׋_c&B3}b\UO_>`=笹շ|IӒCTIx3Y H|w%J*~|MϠ}v8#8YI(V1|n ,'?ΏƝkCz놈jU0o[4:=la^ !}_p[rg'n䱽BBfN[vE>I$EضRDKѕ"+@؊P&+$!|ɼ3Ոbi QS?dwpjxc@խl.27}G7ڿsĉ $20Qj *ɩ+fWhأ50`j^E`ZtqDٯ!G ܨe˃&Ϥ]}/~qkoDe;?wzn[FsO'e/DodEP6p(9FXwClQ|z[3q">cqº<4~!}C H#T}L0a ]:JOsOBCFAq ̍K N~v?.Y(i3)J՚MTJ0 <|TipgáO0ȨT[5R\>n)3!fc%s+4 X,$].\ɟ>~(F`n7G-kXQN㠞Krwd}Qfy[zq~Qk6C]6d({ Nz!Cж,4n8>"C!j)0Ä2Tc0#qI۪eٞ~vܺz'-]|ӫ>S쾑C1ᾖdl ǗX8aQ169i 2kj h`YmDՉ K:Y.a\ssbT#VnK0?U1VMCкsIʑw)s"~FR #x9հccoUZ G"[L&B vDv7f#Af" w)='(SaMK#eBUo_n-,9O59\TTABxX7 ȽpȌMI4/sy>ID$uٹrhS Bڂ-8_0binw=?Psצ]&W_" w܌dbO/,b\.rVu1ێc-}%H;LzӋKx Q]{xG\wS /a'݅o`^Ǩ(u~ly_Oۀ~c?A%xt{Gx=2C;mLCN!,6 )qGI Yc'|)[q{ZO&\52uj8:$$z[CuȂJ=#(%J6n0l=+'7*@'Cw{ne()[v4d7u_yë\/CLq xfv"ces!bkbXPP_/ݗ⇴շ ujx.f_T4z?w5IHaȣ ߛޔ uCyI2s8! lB=.+mSAh&Eͣhos9<,=5|6NNJ^ 6+0 Cce`2H7y=?\cC4f XwN,.,ifh/1lqq_o>7 }\'v=+ tirw]aq- \@rZm>! :\+d,߹rc0ZJE䲳oκАB-+,  ϯ/cP%D9j0mw=7iޛJDn{>'X:? OMADїyd2/9S({?ǓgqG {_|܅Jcf؄@lWPu??Dҿv 14?}g(6 ߥ:tZns*' T yEldbYZ9w.gIG (*1}W586GLޚ6Cw4m[˦Woa8(` WOӵLŋؒ[f]5a]Aa{8Sm mV)Ia#F A}8~ [c5O3oJ| bp)\X7>UH1v}qノR`E9 #| Ӑ+:舘uOkqKUuluKQ6; jbT\N/iܒvn.!XC(8 b=F.OJGKc2*ܢpXQ %B'h5Ǿzz%kjzcU'}̹WFғ0kXoiF`lްadF0W&grҷ=T 'T[ܩK>sـݛz<,g<.-h o֬Կ/Jooϊ+7]oNkֽېH)[&`IpPKy,8֎_<#HW/?:%: \rrR< T?5֫Y%M^hDNΏx(Ow24~*.{tnǍeڬy|g'4h\iJO+Jv]Ͻjμ}]JyiJYcSi]M%}BBd 4/YaO?pv:Zmn>Ӭ}F5(Wa ;#9l: ߪT˵Kڡfs) Po@m.>3]=5(l^% ܩ @eEDm ]uy*k,> fF<?[3)c"(NF 2[ZJO`޵ +US[%U<`|Jޜ:x|nLUۏX}tj{[-ݮD #7J4YŲ{w藃ppAp>Wao6MQ煹B4q PD*5)W+8NJQR/Мi Ado By4T 5 k%bSts5=+6˪N?8bw5/h0fWnqƈhcJ};KE]ګ#뭠! &mtGI@v l5&"E؞_?'ǯ=純Rr֑٠t9:)әߛ)dK[ ,Y* ɀ KlpqM9]tmT03 VwP<%Rm{ۖ[ R' a9޴ƹ Zqv2?9ږ6sGs'e-&RkcF9\1#UjQJ# HU)}# h=m(A 1[291|\SNo<3lÞV1IiPh zq|A:3 F y^OΠ̺ˉ!`w%]\@riH)φC &Nt<˟ 49OO+yYϰW3f:Ҹϡh|e D@y.^X;𛯝1{n"Ľ !^5$[3w/;* 9]ߥϟJf2]éb́Ǣ4G7IْXVUJVAXΔ6<&[*qqE nZ~n|Y`tWX}?Ulm(TYen8lvⱽe'`[R= ư{Ux`v|od|ﶞjOޜ!;=ozY-OH̢q+B9" J{CLޡ P̘@Yjf )N[6wqNcs㴧έQB_+b5~*_+ahPS?6J ?q؏*jsukn~)_KDߨBl( ȁ$;qQUo S5_ˇȜaSC5\ʎZA\U&EQ 2.VT׾*^'8bm'f8#褵ol1sxumsxQ2)O,'~=1@nU6hfHPَf<3x?hþq*r1uےc&Hw5\XUMbi1~X=ٜ`Ʌ>"tS R]k6HmKk[ -|~pV_f|&Đ=||;})I#lNhOLH5IVH +#[k"mrTWmзꠟɹֱ> HF &!1řd"_/ŤVլv ~P@6_A֒W /; Lm+w\@U!Jtf7(f7Ct/ߥ۠*鰧oԋYO3_txdx\!~z:1 ]WLps 5o|ku#oDzOG+Eb2"{Eo|՛ALPA Roў%MO.Gʲ#rӬء,/֘K~Jʨ0"*?e8ۏvKxk/,}^C8:ӵP$cB('%fM_Y-j\ -z (^U䐨h<U^^{AG:EhR&D3X!ݙ2xtf:d8!HKz::>ruFx@uz< ;P?G']\TOp9+H~Xc>LS5X4Kpp@|5ܸ/fprzx^\^&).3i .Uxj2Mk|+e@%b}4_Z:A &S;BrH|qy;T |̀x9G)+-MuzVWbYyi2hOrTA\G9,#nJ74( µ y=}ƫG2Q{]BCxZ},El.nU Kë06XRia0@FT7,".Xneŕ|[ CR>M)K,ny (Mj…m1݌!| Eಪ<ؽٯ^DLE9g:bfl4T s<<]ٵʉ#3Zdcjxvt$0zwu_؞l3|Kϔ?Gjr zeXjyEX VLZ&9_UzxA5pU z&8A2T~Ѣ=2!$a4 mSiȄ`kz\5i;g- #fTr]%^H*@>tH| !\C.&ȏ1j$ ="u^3n;Qݦdj1k>hjawhO?WF/QZRpT9Mt_Z3_ 0v ޷'ilxE0ɋ}Ox^f ۔K I[g /nkyw6?r*|rAeò`GN4,6#Xi6'ce%h( xqzWz$ kE&>Ԩ)DxڃtQD$GGK=lgoMJ/L| 1*0Qhf(E*W V썹~yvAUs3CìR(SgzE$ ԰9вKc&=G׏rIWM߶35Mw)_e]og?#1o,=e9 .NKZ]'IWEX |\@^, @ ѼZbSF3eoko G]*PY@MK-#9yUYiE(@ݓ иG*v“KB +{@F:€ Bh9Y\ʈG8)RE yl3;ŜC}0{Y(\@XҤיsd9|tc(QOyėҮx5ϓ@% g0QS?l(H5,,[ԸyD./z0j"@*S{]Ҭ51b|[٩߮j՞JhvzI2taņ©k=Xt<ӷt^Pp3Af?Y } i2ZF]̾Yni׍kp,Ojn_L3>J}dCbOҎ Bd9[6^0EY4WFl^9=+S'9lsOU9u=xCC[0e */pxډX!Addq<՘t*Ԝ:tqk gtEw߳ D\Ô, vGv"t:،qVS!Bx3^Y&@_$Tتv/cy!ߧQrAm$U MA+<.6]Mm>k&7<"GDˋnL>GC8~.VIk%:(C82|Cj)cLEtLe2@$|V419x[퀆@&V9]JnD̠Kt ~2K6?Z{D}և|{WrvX8-564*̧tϩDk{ Ǟˣ;1pxozj(TVy* _LYyԭSyGRQʥUQ . \0a`M<ϟ 8KٻA~Be9'K$Amx4 ᮘdo\fq SFpZ;7_2}!O ZԚ)Wv1||5>-,Yړ)v."!!y25I@pi a0vU#0RTt:5 S}N|~_g)2#C$|Lru_,yTLU@Qif>ՙ!/>J"Qqw`?0In"+W,#Ϛl_e~Emmi˛UqAPF5uߤ[E)(`mB!t!!@Ǻ/ڍ LE=3kcM A:?Ei)p.62I) 9g Bt~uAo t >bIŋlmrxqIN9l:w@s\U&]@V=ڞ=3ZXֲCEK${ t*>sm٨%(ZX0>M1G-FfRMzt*sEx#\{|՟'٣/rdj|u-K;?7t+s5e}8cvM\^("C&_,N{TY_MBؐ];@|@˝E3y|0g b$ @w(–, mb> dH#J: @Q -a 3'=BqĂ!?lA ;9H:n)7SqLCj ߕ77g"{XpL:#gz=ҨdT@]D8RO~p3)5J?<|R# N|OGKUK 6E˓R|YcHH1ZdKJ%h4Tb NqWxFSH|Zjgu|{ӓ2`ZbZϗyA)VϩI[U0~=ܡa΍)]fOE_ap{y (3bhrFVU s?VD7Ź٘Nq, N n' |Av M5XX{Uѭ5Xhaث3?`X3(T[j :KWUP &4EtѻAex.n*狡fQbGǓ _oV\ijSS%;,ㇽ!͌# =QďG1J(qch ,=__>t8qf;"C U;ƻIGZbysbΞG?E?2iڪX!*Ui|D am8de;e94L31"A>\d?_mz!f 0m rHbz-M' 3x%yFWu%YS7M͵sc$E8q%s9Z m"->$זt}z 8ҽw-iW3U9~uTXA=)dI:noxu'c:|5F`tOI^\C]xHqy/I qS% 7Cs}|HiϮ_9^ͅjGw#̹$\]׵.#jƷ;D}BQy ʌ'I#9LKƓ=pq1=.~yJG9c9>] qԧEqno-=R:O?k@p X<2y~iV)vT1M7@Nk!FHqPad 5A%%j {3ar"j*"9tSCD״8}GS9cg J(vݻU]lֹM;1~i kA0k(֋Gp]QFG m%ֽNE?gSdbE9U"QM +E*#ŵleϷ|_~mOݤ`a;f cNd͜|5hlNke~#zt5Kr.35Q,(HEb[幓;wd7`}/I;zg(<`E-~eiͯ+;/ZaXo6 $AE@xvΌ^ZBbn{S)\ߛ-_X~Kiu+c<yů.@>q]QDxr6(r;wgx8ɑPi@!iSsKŽ3)*ֆxL6]L:,L2=eg N'MK)WSPh,F-QPT8kocnFhTlXY@yb0_ e'WuʐRT2;>+P4,Sµ獯 y!.HlKUf-9PTPTN#wՠcIߚnpsV'JOkvLz\lY?:cxt1٤ஃQtfo|mdbsKeﹼSx|O f=ˤZmy}o.X P'9]ms%!_F{eV mX:\ܶjگy\|ې4(l~^7%_o;hD:onp I, "w7?+z}96o,(zGOPsMq7(- +zdxvL==W-xpD>@O  3B%ܯ -䪠TE!/LCnr2K^CFP8rLӕQM{,z[7{~<17v /2|3?xPعگEM E T0=1nSA4 JyG>V6$9Hv83*<^7!7JH ֍Nۀ ]ۜaT&;?C߷nΫp@H.z\+R-CԲjB)f!a3<۸wJf،ZiR_A&Li1ǘ: _[X?:}bi0MDsF0ɑeړ^m x?AFg.M(K]JVN@ ̍48BNyL@7a'\Qfީv72X`FJCO JF}1o  pok8^Q]{]ae_Bp4LCoq8?._N&ޘ@}C odv *W!Rpg'Ho{qфq؝Ha WZҬ*v ƙ'0Ͳ:YA;Jm3}o.$1.TU6ĸcڧ雉 tXy` 47u=PZH8)"r( }}@O.^}z>'t}oEK$\eYR%RX$ `e_;FY!s >jp,u0Tu\EB|sӮ&.N7*fErzbd Uq56;x빽|KpV9- h GyL|\5D E owU/ zLl(Jdf$ROY?E8}Gn`C3|O91L$\'MO!@moT_0U,N: 2~*@ M%Mt(we y(r.խE",)v3dW~Ze/8 يf@ЄҁGo3 rtt BO=f-ָ"88)0Ic5Y:9m *u!yuJ] C#5Ou%Adz)e}c&l6*~&ȁesʗQы-S1DJq O ?+H) ޯh@-rgAnܮ) Xbz1}{jUwem"alr`_PR;5#YI-RgW!ynp2V,3zgz PR cKMO XT!ŃGu 7z{zBT}tAgR7d6>M~%3P,Xpb'zy(ÿSۈ7#r H:]񆦁V^KPzu_/ysB}Ξ})ۄ2ͻ8#I)Rfnf8;yUwb6`!>3QStfY<|KWF{$8뤙̖\IKi/CxA{3uky=~T=Ku2r`O0"!v8|U<2dkK_Mhgv%"Sr;+{;&. FodG%3ֳ I+o4}=j?[?#ܰ@TR]A_tr]TYga1!Tad,r;rK㉥CHb0RGr]ՅR%U6jLLyP FQ?,0W8ww5 GX/kjBpǔV[_'{ntmbLj^|O.\;Q`RNf( m`B/Zr4fQĒF8o7] 2;VH4v}vhv`է=h_dCb?@@P;̂&wSцQql{oȱtF"q>Ui*,Xal}U;&\/,<ŵ$D>Gǃz):H* sP5wi^NULm ns2ҒZͣ؉u\<獇 ^u%]H()`qfC^^^fhJ1kX [ G-h\4;{ӭ$Ê܇Iif85},N clV#ɚ.s|4Ta#(-ݵWi$;f7W%η_2N-tKi|FqΖnS4Vy^3ESg7"Ù[s6v2,Nj̄/Lf.$LLJ& ȥyF5vZ+j;BuSw֘/A}ɪx,5wo;xjJj8pdhǎ$3AdjޠUqXֵ7$pȥ{ijw{曵|rjx %Q<^y:W9}ݥ3ڣ;c>F8.ڸ J+rkw#|Y8P1&k1Gx46;6aP{vmO$Mj9FRa3؇F6\DN$"o/5,I"D}<{ρ*6FGvS?ij`Hx!ӠGXH ɗ/pł4E>1U;ͪGŷ%|Bcqe B&NaIXO;F=7*-"rIݥڸwM5|<_5GމX:jΪzB76H)57mQ>W5s$cv(q|@t'X! }O9Ivrc$lh\; &吙cF3błkWrsF^ax#Ʒ4+5},Ws%k}=xL!]KP6ٓV!q}:Is|q)ؒMiӻE=;j/ѝJ]! !3Ggţ2U6góxyyxpcb}BYy"|PF} ⢢Y+ GSJZu{90xÿ%b9V_9`|'K~:ΓDgd\e .YܶKnhO>,Sm:{1ɛ:1s4Xw/L9m駴a;[Tt6D],ͬbbH[nh%ƟqIlRrDl8CslOan(D8[j޵oh>1,-0NjE%Bx4|8G2c{O .:^3M۹v)  ˒'szW{#}5Ҥ鸞.osD묹>aμWs7-z'8: k9J߼蜗mӜ4a(_L![^v~ސ?1Ѷ릹nRAD.ߤ+LhՌ8a[cv,#0zvD{g+*mq{ '5 8̾uȪpI A()SVe >8W%0oih8/b{Qd$s4˒._9B\4 e@goxq'%a]8٩T`.;̎^e"3q8BMe=TF$W+wM),|ߗ#SKBmM%I&OQnb1XSv:a0éYpR0*( )VPwVL',1JdOJue Kb}{3x0yaXͳp 5SXn!PHE'3q8&-1<.Ԓ(j>m2*"Pmq@ Aq jS#\U݅,+s^@WC6t\v9hiPɅԝD#Be wmԩ "p(=M_e(!ÈXgL&QfQ0CTPUH8F} <dP2 14dZ,젻 :2(8C.?,v8­; X9^v1vԿKo~.r 8tit@/:r F9fg%;,w34J0"F€ G}P,SAKfL"P[͆“k kQ]m:^4W&*GdV Tey|Yq46@Q/>T5>~^\.H'Z]pTǽzQNξ`2/F*/oȭw@G y@B.uB9Ba.lE/Z<;g"T.]A/dw("mru>#0t ov%r,[~Z g)ZUWHOLyP߷iYJǴ3\ (~QsAoM9'iYCDZs(727D0,t/cyZ\JNpxqdv~kEzh'o굟WXa4-y],c;ýDa>%W1ɋƚdЕ&v^!5Ծ!g4?_{5N e1JҎ&7L۲ ﺠؖ$pXj"ju۞,[[B=˗|׻x8xGTuZf4#cүȸۄt5mE]!6ϳ&"rLcPc e4F rE &:R1^}'X#ڞ'y3We13y0 HFTx{ JjRYQd 〈a{Fk8떹"6nvf۬uٌiMmZ)'bkd2dXԁuxsw1sl`ExyeT0_ftaW&r`@:%DTVtvH:1RAa(I"G8}=/ՐcwpE$&L!SDh &bս]Kȫ:y%7xPp 90E:OeG ѵ׏#;B;Z0w8nMۢMC*KbBqut2$ڕ!1~;GN;O)|eG4u'2US̈w.Unz3.([3KCm _֧6dh<[8HMsYx?sbz+/A@9 풬ݐۈs$4}1ܪ[@;rB@CKjuNM"8D*s aF}Y^d UFH"ҴשĀq"umv"nQ/(d"60*-[ J~~$#\[~1GH,@Chtt?ॲ D}W U267ż7Ql^3o;g 7' 0;djlroԵEwu.j襸 Vk`n=p~7$]|^=QD]=[q3-te#\J vxJ>,*G:95ޑz)@HLiOĜVc`űkXl=of 7=еʩ< QC4$_#j8T(1$䏦8!R;L/_`O{i'wNX(Dn Q濊{KPn=p]7in̼aD"n̾+$4-{Z}kb& 9xk\&prrZEpEh"ͬ$D*;?^BMhXD;g8OޞB3gxXrz5Y:"bg C TYf+u>?/ϫʡQW׫T8O 9B>d! "7߁w@P44$azc;!x^\UmFqKaxpU?/_~\@}_C~1?i:5> %:ug~R4}u,Z ONu}F_wN^꾌D; `PO#rC ug3[163҃a $&0; ~€#2д Dz qHu%vGbYOwW }^k{{mr/wv[{zǷQ-N/:vx/T!32Dvs vs:/j;Jt2bه:`c'xbqvb L:p=I:Mw`Xݮ=Ag4<7//VzrwO9FȮ>߲?G;F~yI @XoOo/<kV#uޙl`XpDGG;]$:DL} !Er 4ryTQrUz,!3<̼ܗŸ|賃_YnfgQ XC)*0v}v|$Bfۼ :u<UUXǓy \ 7Mm}W|.py lq$2_ex!J,3Qcx <e,t4#8J=ڽPVL)*"Wyg*!'誫6r1ޮxd vu;L` 7{3ΚC|3iVbY7 _o8 ^?옛}%:hTk!4iq|).'6ج#0.3$WÍ&u>nTp 1r7aKU'';ǵ0]:;+0n[muPQz9S!< Ame?k,; ;>緕Ô%XnwGqM4Tjh ""m2%jqH B 15flb 51LE ¡i] D0b`Aw}/_uz8pf}zExbb\ua<'*S{g(=`C6Idؔ:L7.QS#~<ާ.ǫz|逩yN*:! ~8]QQ(ÒmfgYPLt/n2"qەߞm׼_DZ1&ƒ 0&YfE(9e EM%ZL[{@; x^"<Y?T/̐}j}ټxuS-}ޟDǧ t]Z~p8v;B['SX!3㦼vvyC |Q_}y"`{".k?};[hn+ ,B|o8ٝ.XJ_D6̉!;wI?Z8~H]$Iҙ o_^RϞCyꭎ] y&jA.{|t+gd=nkC>C&Gq =v !CWGE<M>ο<ïʨ<$#rr)B &Wl .;۪ᶞ ZHzv`I3 ͭMūV'ҊHU)߃ME`ļn}z)kߗ3Ϫ&xv'zk﹪הˬUĀI& 'ͷ0B %"Bފb;Q-@&;zC[9fA[o 8US+"3 v@P~&[qC ?{W0}w(I_7vG^eSO} n$;ؕ:0|"^UGGZJ¤R";15AՋmAlNې8:Uv 1S ,li}Zq"Ank m0DuXh+|P"elE52۽3pyq]fx&65x}_QfB""wtSk'`G لxT =߽_](Ҏwy@YMQ\]]j`JGf-8U0QWpFՄO.許v2P?]hiajwN`_9$SFSHJRdۇ5G_5w"eg~52RڶdאHG%*Yg4@gYlZJF^B"x?uE i|F*+_^xƁq]N~~-IEbOh-}OLV^z6*<Z1N~ğo1V}unzG~g`!(Cn_WZ㨝jO᫚q˓kǧػSOť5W mwF POJaM: hn >6~DT-VaHw|8kۀŅ/E'|-:#[uZ_%H2TK_ֲmu!1 9K٭y=aEE!>cG(i 9L]ǀ;(fqSW47[ i˺k I"ro}2/_IT|Eguc]uՃ}ɚ‚GFMiIc`U9|>Laͫlܶ>] RbOӚP=[ց~ {T-ޒy+8H+-Az ~+ycK`53z͝Ӕ vV";8x`EAjX>~w൯9izN$vZ ' '0@ijg]pu|=M"P -0pXry; ,pgPgeh?_w>^OOLf+D9 9X:[Cmls@p@슸tz~< jhGG!AǰY*}ޏ\k\̾b𭇼1W|WP2+ :*)MG7+/ꍤnf3PA f m~ &W$y<>8U[vj2 ,ǛcnO9ϧ5vzciyL<)̣U-}4cuʹAѵڋwB! Hi <Ϙ>I;Rf`/E71۟{Kop(-q/(Cj[*mp N,oMmEw5>~ +Egr$` w ~D}'{fws9W_i{^M/mA袦A~zN\tnPi^s ad@||o]^nV!$!|< +BAXCBe'8p" MG%yf`ml$UٴdjNKȀ0&$}AKqy HOt$R$PGWw)DD[1ׇ=ccQ c37;L5XJȁpy*RA4v(Bq T '֞_xWwG4cw7Y(+UOެ8|{phk8~kCgLJ''=0@2ripOw{]:;"u؀u0GˢZl<1HXxbQиVjm.#X` 6k(\Zy"Kk^9,&rmcnȧ.v/݇8l+Fu)㓶\)vݶ6Is>:\]T _5wC\O]y#vcQ0oNN<0}κ',)v۪/2ֶ˾iݻ8f9#ğQٮIPp{*c>b:?sqzR7F5_wkuc빩\|![P|F1cKU`0zL靝IVzGM3Ơ""r7\--_U/֖Y4ǟg! >gF b&e0r5_h4>PKa!`s+d7f($II(=8fg+c a#\] m '0l"Bu<5S&D N>ٽs2p5_Y9Ŀpzk\iV'uڏZyهfvW#sHlaDrІ;+-3 @-sDƳ'uo!!d82̵n^}߇\M{lt_aU@h.v f 'rns6 $+Th`5( R5!RP$>1ϣ k+:ЎuQf"B Mbd9CٰDsxeO 1nQ9FS>uMn;O__I,Hmy*~mg7IwEZ3S(.S9-.[-t:Q`!W?3 ޟ t2Vf;r]wGO@7ھ,[=[zfݫU.Z/A";^{T~qܶw[=& Ns1 HaC<'aoU-X`yFIJH`8涱lXjC MaP%}CmI~p)~j>GcZ).;:yoWVh)BS6TDG~}R*%M`S#JWw;!~7#Se2)I:_};n6i>h(z?,9-))}~,J@2X.p:e`H*{'f\OؿIW: ~#? oM[`wԻ'宽 5!c9'O`z_C"rJֺiam3yٰ['Ā`/N.A$wB* I5@2bbg1N tw07o=gcamU/s \cjol6<$$ݦq! CA6QPmx  Y4Ji㞱/H !L -j%M8=垆33tLOr|(LLv;#?-md-dwƌm~a*B}?2` JY%Ē_L=uƜ,{xl6dbV#^Bs!:0w 7H5M\XZGӣ줁/{yPGD}W?X2^^eUeg g;*4ᭆmnFKEA%QE%QE E5E5E!TQCTQCTQH4PP4PPEIUUTD5:ɏZ"!4i,t< +@)?_^gOv0l^)#,C.Owa̡ 6֚BHxQđ$ÖarBQbsNWB'.)f)fg0}gL;uSyެnQd(R(B!72I M2_n创eFE$ A"GTUH03IPUUAB4EH#LCIBPRP0@c$"I&I"I Z&"b"VzHd$y&Ț%NH" _Y IDI@CDDRHRKEQ!+ EDD@DB"}6᫞qk n. n!T"(JL mReζAIЈ8ԥ.M[slTM`XTnßhz ƐOF~Gxl}ޓ8;[n-V N 5@i|o1Qȼ6-Xr3[8&3^J4w}O@}6J !Q@ N2! wY/O690Z`Ux![w>XO̜Ta;dD%8hTl/B3*wsv#&ť/C<θQ'HjlO 05)ḻwei%2.CgA ' }z1 D9V:vB{PCXsb]}殗P}dʼn=p:܄D> Ȃ@|-ߌ'<(7'b8vG2@;0ȧ Kb"FV]f#ȼ" 2f<&yqDsϧ~;}t\õX|d` i>{3ˈAD;Nתjk-@/e56'a"G%5K" 'd$Z )Q&PL DiB*T2aQ^Z(PJJ*D0=ѢfUUTQTU/H*PJΰ!A#BJ%F b $>YL3PX357va}U31 @e*z<>'ZcgYNJPx|_:#($Qf|.@[ 𐼆s P4J=T<5[pC@3Lol6B8Q$ M}i`:NG yp-2$V!$ >%sJ^5qfiUٶ8_űr(|;Rߟ:^R"ָmW{0'-~-M`d g!{oqBzZ6x[ʒi_ª,Oh~XsbVZq1QG+}O dWSOowEx|TbKng۔EZհQ?FEGkvDL ϪFۤhT]l W 0\>J(G ~]/ 8͆|XGoh(f!!F1 SI7Vv'Š, Ԥ`YtZѶTf<=v4up;TŸ{:3j3Y8aqt7 j;U%[ى2ekSoF 0˿,d׋lҗnsg{G,r-(qO1NּHm{N1×;-c'aO2zjJҭ_}d PAF@XPC.8mΩ"U8煉4dp 1,RzGp?;[/lg\s8EK:jٯML`)('{70.+p #a\lZ0e"TXϪ=H$/)=Ly BL y-@Ұ*m Nf>f=?ty,gJ^n*:ME'Q75Af vl覩|sڶnh@T| s0Niv9#vT J"".m"#y I^&eNJTZ]n)B 0_Ԕlo;OBk[ Ct[)U J).r; p Vܳn=etKVLƀA,6,M.kgN.+I4{hOg8oJ\Ms0?.3peACon;xd]ߓrrwyNtzϳDzHa,1r~t(ؔI!(#d?Bwo]Vj'QJޛoAG ƭ\z{`d\2^eF;x/j dSE!sOS/>:PIga(m:]Z|t$uZdݫڵ bR, PWs>Y)klN^03WFKخ|!鐍z3|dX k;['+4) $BAC9p~=8i(uVhQm}':dA'|h6T/}%઺2F@$u "cgž]/ès6ExʰhgU63^\g*=?7= +Sc#ħ%-ra@qu>jQUy+αw_Č$2LBW~9cm׾ RO_5 KM|KlR  'Ӻ/0$QO.ջ~M2F  1E z&ᝦ(MԚqO6uaΘZlM3y׭^.`l HBҤ9>9p3xi -R,&HvnStGm7u+&¾PPվ@Λæ7Gínu=Q\DU5sI XAoCt = mUT."<~Ye$0vp'w='!jH$(Xcs~OsM  E(%sz+Ʀ;kB6tx[e GWQu;mCj}簉X]{98}3# p(/|m*7$}Tup/(dkl$CodO(9ML%8DC'TᳵaD>7._λ,A LcY[_}fT<.'~0g{~;Pk2Ӡd!3\dF!T2 XB r;$ϓ.a͵:ϔob@ȴ ^MLMfrY@ c,B>tMa-bG(P݈@+GEl"x @$D ~:ֶuLW*u_?Kfki c@~gQ1Y` G&aYϘ{jKy8f#g(1,=Pn@>a FbWP abmCw/vjrM !74SF⑲ĥud>هUJ G]jg.\{Ј[r٘K| ';k"%ev<n ~s`v\ͅe9JP ^Ĩ?`! @7vژ٬YaX"(Cw/