summaryrefslogtreecommitdiff
path: root/net/dccp/output.c
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2015-09-25 07:39:22 -0700
committerDavid S. Miller <davem@davemloft.net>2015-09-25 13:00:39 -0700
commit802885fc0400d0166a6b65d1844b61696aecbb10 (patch)
tree7f6e6d083adf632704d496642eab95ad3c969e93 /net/dccp/output.c
parent0f935dbedc49a5044ebff08b47eef35a2f2bbe92 (diff)
downloadlinux-802885fc0400d0166a6b65d1844b61696aecbb10.tar.gz
linux-802885fc0400d0166a6b65d1844b61696aecbb10.tar.bz2
linux-802885fc0400d0166a6b65d1844b61696aecbb10.zip
dccp: constify dccp_make_response() socket argument
Like tcp_make_synack() the only time we might change the socket is when calling sock_wmalloc(), which is using atomic operation to update sk->sk_wmem_alloc Also use MAX_DCCP_HEADER as both IPv4/IPv6 use this value for max_header. Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/dccp/output.c')
-rw-r--r--net/dccp/output.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/net/dccp/output.c b/net/dccp/output.c
index 0248e8a3460c..4ce912e691d0 100644
--- a/net/dccp/output.c
+++ b/net/dccp/output.c
@@ -390,7 +390,7 @@ int dccp_retransmit_skb(struct sock *sk)
return dccp_transmit_skb(sk, skb_clone(sk->sk_send_head, GFP_ATOMIC));
}
-struct sk_buff *dccp_make_response(struct sock *sk, struct dst_entry *dst,
+struct sk_buff *dccp_make_response(const struct sock *sk, struct dst_entry *dst,
struct request_sock *req)
{
struct dccp_hdr *dh;
@@ -398,13 +398,18 @@ struct sk_buff *dccp_make_response(struct sock *sk, struct dst_entry *dst,
const u32 dccp_header_size = sizeof(struct dccp_hdr) +
sizeof(struct dccp_hdr_ext) +
sizeof(struct dccp_hdr_response);
- struct sk_buff *skb = sock_wmalloc(sk, sk->sk_prot->max_header, 1,
- GFP_ATOMIC);
- if (skb == NULL)
+ struct sk_buff *skb;
+
+ /* sk is marked const to clearly express we dont hold socket lock.
+ * sock_wmalloc() will atomically change sk->sk_wmem_alloc,
+ * it is safe to promote sk to non const.
+ */
+ skb = sock_wmalloc((struct sock *)sk, MAX_DCCP_HEADER, 1,
+ GFP_ATOMIC);
+ if (!skb)
return NULL;
- /* Reserve space for headers. */
- skb_reserve(skb, sk->sk_prot->max_header);
+ skb_reserve(skb, MAX_DCCP_HEADER);
skb_dst_set(skb, dst_clone(dst));
` z(Sƕ>QNçHrr90֧~speH#F`>شK07\9' э`ܲW]CAG-xu֒zloN*Ps|&-.!ZRëùB{nt.k7Hp~FϺc=Կ=an4Jr}B,p+lÃMsEIriQ ~ mxv~w➎B;^UvDnX`6<ކjTuBouwl% &}?ǵ({\DN;xv+әmӅئc{6 2\`H\ajAvqCr1]2Q<@?C^JUtƵJ[WN5:<#7bm%T--mܺQt(Df.]j^Eܣ蹨YoSr8vіZZ PJ+]Ks9>"#X|Iul%ٴ--R{.`HX){?06DŢRĜ!KģP@f"Hdz6:^^!/g\NBN)`IH,$%2s<#* (J[Xbҏ2O:zϬżxY9 }$K QbH+bHry@7% Ÿnr<ĥ/D zq]JspXurJn|:?WK;, _p.b?E.kuT3Q4aW1E~G FaY\V?>kMx ш_*^Qn5.ظ= TFi{[fwT/Q/fgՀӖ*3>Uϝ9^̳]m;3^Ąt,HJ giϯn?Y QЬ0yVdox;# i͐42'ԙ.׏ -Zb *9n)F(Q[WU&Jd6MCAeJcRw&I/Ui + sȟ@4&%zw,r;P+HUMTMyU vg8ċL4yv+9 sO+a8IafvܤOj0 +tuX9?Fct.o =ooO+ęƊycz8Β$njLxI繈07賟_'߹̳uŕ]HSm9ؘrNeJݽd?T|p&vO8۠}dA΢9奙P)pd&])ap-V&c!{<-;Nr1-;?"xFu|cx y)BRTqdXEvkGFZ9S\c< Hg2E}|)oIX2ҁV"ysN_gn{f>ZtRݺM2X:wZb*X;{قO_ODXH;fW=BNaʁ);W AYੈrKA!f-7ߥfu:`<?ZlQk!~SAWÞoJuT/4\q{_arDlņ% Mtz+2@*LMσyf.b9O62'd2[,y2ګ,e'VPrc~tB2Rϊq&J?r$ڄ5"/zn,wvvK.E pU9aOX3 1NYfMG[>KB!\^ّH ޯ y=%Dȵcc% /`a~ BTMH(ۻ ;sN`Ʉ{XiŴ([f.aqa`֝er+ibwJ+7[0\4 fܽf]$Ĕg5ҦD;*$, c$ܕcu1K̠yxcƉX=L4\Tzn?LBo"5f.{h(ԱRa<};0@ک\׽.['\Z҅^ Mo[7}0wT Zn6`Ϫ:eѓ 0A~~s?8Az` /JpuyV|MܦeUs Gqh 9aB#\r+]&˻D)ɦ@1Rw:ebHY 2T/ԜEK Q.d> L Ų4R[3&&͒&v̵%E]^ X;c],6Y1k1|܅K @wVMs{殚d`o+rpKcNeC t2'l)i|q.A/2΅e*V:֫0[Q91*@ 0csF5 g ] 3o# f$)^*7<|Q]ՃAUdqg^^E]OE]^%y ͙VR|dH7Ef̎VKS^VȶCEϯDJ7+I-_ 9h~݋jn3k;,{UK{5`[!O4K(4 z.qDB7)nLiS ùYq,GKH`wc+_9ڷ&/2hbo. ~ċ?K{*84 ]c8a\=GeM3f=n"Kz'OybUxKӊjCde:!+f|bj5K!,^Ŭ1=lYˍKC㯣/{;n?wݳ"@(bJlΪTҐnMBD_`<ڔxQ$p:(cm@>I-97f&_#nS @rnXNRɣR{2I{_4 53NWR9"X(6$Z .ky媄$TX$AVΗc\aiIu;m& J왧!_JWe8ߪ'v/JJ Ț"XLزrSL$4u*TTGFn E42y{QSyeZ!\<j*oI `JlVӄb>9 0iś<S~\i5Ry!cZ lDz6 _ Mn^OXA&WFW\Le/W9}K~w b_>kokSqRU+1e8CA-y^lznQ+O$\֙$͒/f ]z)c!0.Ma;.8r5ˏUP-6XgKx):::>SVRҿ4$`qgshP/J a.Gfˤg3S)T7%vX/yIlBpL׃1v y؋xg*h ;<|]sxYϕB|GvUf PE:퇈-7qNw 'ޣQդ єESb1(zb7ʿh Zxzuxb(K܇Ό UPpقsN̒<|yYV)hy hwаUH⤢L=#`s~,Kt7 7a1 sLԛVlF$nGx%=]Jc%Zd Sx I5\IبNgƓ>ë1BjݨlԏR9) Ӥ>[*G>`j;B<(h0^]h"r\14fꎱi5@!Vǘ&eᲘ6K9l[UY#*]i!L9 Ȗqz5 d 20'fLS^XIA(Sg+X2Hu6f~r2q;i׏Ggm@5OH8R:L`Eϣ/?͙)f'Yu#>6#Υ^rɉ$- C>SSĶI?20?bw`<ٝ[ \ܜV,Y\3Q1j"iw'a uZGG<9:NEf5MNǚk\8Aݢހm óxDa*9ae#[k&%ثei6oHt ć.|ZE,YrJ3ˣ[>#a)7tX5sSFgPqlŘ(}Nÿf &ki|o~uqهCCVF6FB0 weCѵu:%j׶p%w9#iձl pڙby󤦲B,cA1 h:sX6CYL1p7IcR &#f/x4:g4`.|wⴼxbqfm(xo zdYÞHzt~3j?8nQ鮫lf+꺂Jf(FbZuΐ _4].\bd0-EM*fs_!􍾣Q瀚duno>z[tfe,3*ZGEaս/TLi  <1]&, ICJF 8*q'߃[J0vY :Gu 3.}q:n8>j6WSƻ d:Ve&",/Zl4v[#\JOvmD-zRHe~>hNilvJch l@EZ*ڝA1난Km !N9Ywp^B&R+gBRV.Pv+\aU6yE(ܲ/,ht[Kz㏵.սmÃ,muXHoh=Uχ;*i+^jq48Գz;Jx/rv9x`űt9޺SȉjcR7&<,Ǥi<_Wz٫i8ϟL \M6Kv!dv }AF9+ Z=yOk5P!SٴY+ lgm`ii& ?I\N{B صQo-4x^] ;ZZIi$FC IޜT=GqrѐN{!^[TjZarTk+/N/|]i}ɯ:LĬx`y1fdW’Qƺݮ޿9O|PdmmD Ǔw/Df{Kg% >,Yyf`ܜ/<_9$l_g4lV[kSx[Vڹ[jkTUݖl&N V麓9Yo"E @OmJLXhGlHBck/r1'=.i1 .s?IX!3RV$;"[RoKZAЪX ~u$j4hezf.n쓴]vlIhA|XC${VC:fOC{c3}75վVkiL"f3B$3-޺''Bs[Ejj`ءwo/$lf-MggZ9J{2ucXu(#B! j:y<:0}#ʆd%aeyeq{>ĒL)Ǥfǂ*״.+x#UTo/NSM?=e] 77/ˎnRr_]껸'_=GǕ*njRJf" %NL.*0Ӌ3_KV½&ci&=ɹjPc<ޮbr:t%9S&Afe?9RHݑo1 kdВ\%q<.7 pzuW/:N}!:Rn1<{y:0Yhf@[Zwx }ԴDHs?6kf#8+iVX &,|>aq^ FYTJI4<5[dI%cq~Z?Ȅя B区`&V^6uc$ HI0NޓxEˈR+6Wִ7;4?&o}#q{`h'n`\F.i=вq9R=ިZʾ< vG*6e_g ~`hNA vsk[PRd*W}U2<ߦnt"x$ʫ˽B9x `^t7˵9ٸyK5TgB&3M 9Z"I$25'zQh_=h,EREeq}5ìˋauo>WYH 0g괺ORwLaHǁ':B(ӷ\KD|s 6="XA8>L3٤j&Dx=5vH8<1wi}$ ćulmXkH*M2-+BCB.-kGY آ(11HPE{8N Y^op6IP6`"C 0MmWT?_@ĔCЪ Nc$n%5Z×YcPi셩4:Jc6nvRQmxТUiP$EiiVI5+.y7Um,`sN=k)NC>EHOwgW{|GHN>g13-r>FZS؞#wIMKm'k|R8P6WG0mg!p"۪߄wQñBהf5DȊ"4) MiGKi`8Tx^{Ws`0c#sxm4ʿ̞I>~l;?z H(Jkv?\_+LEy '۸O{0궠ڥ*3Yk_<B,6{j 8p ٭ZKvJ-Gf/ (cZ*- pn?>$7L9t#evEAT߫uWt26 1"FƱZ&z9ZXkFd9PDKx2L;K}iJŽ2|)J=Ix?@~{x@k t!B}Y 0C-f$,ނ)uĺ*'cB6r:v4/بD z6H(7Ә |@B V+^phq9년s&"{#ܻ^trqBD ARDXAz;ǭ;M@.]V-VHCgh|Ai][)gV|6^,iqG~Z,@·/İvw+&[ j]lP۰soPτ#ބ<{&4~YKuuNG8FPOĹpu({`ҞD8#X,;|R_$A2Ia$ٟkA=l)46NCAkcRTEkv=T(\p  r$e#אDah4χ}0t2X?Y)d}gOE'Z6{q%Z]*$Sh%@^XhH`a x_VS%PPպU:mDjnxHk8ݸB e ".EKpd!F+yGk֣g[?Йg!W+Nfuj3ڒ$+iI-J*}+R)' VL`gωFHwEg]Y1=TGfӉ;}RW,%: '|2q/^AJ7ᙅb-$ pjު%F65iRv Jnnw4*J!)kiq:OF6iiě܆~QBAO[geI>Qi~AM_Eda4K!G[jfr"˥Lt}d{k-"c)h/zQ+5^&6W6NHvd$NNs9]PfG"UM4!Qk!ۈI=HWWWuElщcT),rW^3~yk2(<}uQѽh E՝'?Pf.iH##-(}@W ~ބAg?Uɞ:OԿ c/wo}gԽrK7YB֤V=@#%]2xW2fV{cD,JK&G ʽƈ(;eh"3绂]ZlH{'yы7:N[M{׶F3eW+tm{ #5j[Rݭ"Y.}Fm0U.({<Qx@ՙ{vwN{5(iy:n`h<-s+ڳnC~з_t+i>/-ބiA=Al6玙})wK (@+ t[~z IV1Ba=[o)L4svpma_'8[,z|Y98"Ό#ՓWW/`h}Eܨ&Wډ2emמTn,/)d<7h_ }}^;ᅀF69pt_^. йk2m8Cy[ Bx?E|BdeuH#=>Ē&Ԧk?N\ g.XPт+|,&D}xLPى_K]xsiN>O-d v( D /PRz1>z-h* ^YUzfOp< 6E:^Yf@,[%Uŗ1mKT+(yGZYwgW|,6miǓ0 86Wo|u:(fDGq;+z+dS+A>5Y)C,n}Q7gبF!U i!oG2,p9INB ]Sj8uֺ2 뮵Ps"w{z~TBzxt< !birjiUpZ9sUPuOC\`9o@ы7mMr󆚂%$(oIs"rU޾$Jc"ɾFvfdP*= [aR氮&Djݑ*ծYWIv55i )P$<#:Ƴ^7V'IL;W i$ 8Ae\t吤f1toOxzx!A5>}7>8Cp'$B։CAЮӃ7E^P>geE䚓!TG" !#Rtdzg$Q;~DЋQoHrmãn痍fv=X9+yiƛj\o'0c gͳ0Pw8D,yFDH9p` Bdscqxrr.@/4(0NbPCji$"Ek?JR2H)jP5ev^}H&T3@*,' NVЏ 궗rQܚ:ok{Ft[%r:KpTMIzUFsPQ5Ջг7GX~7`Vmѯ"a%/a =Xe_ e4iaHNߵHuzo +RVU};4Dnsg !=؇3zAwfO¦"ҫWѠ^$m5!q:"KtFC뇱 JuL#ʼmɱe^$?G-)6pml{$N.p;}aikJsXe|F gU7Ԥ]١Q)T6MKH_" zo,NlyAQwZ^ԘT=v ՄFzqsRkkM,B\-f? oF/xBv2U̠M]&t2RocgΙfƒ<3)# V$gm$$Z6C5)U&ƦVgO6 >eϖאxB6{6/O~i=Aͳj )5[Ǯޟe%lb=t[.a4& >~֟I^|6^b -2To`C6a[IV*tzF ki v,z;oQsA<9TX}%dM5*ʻ35K+u2zʿh4^_v[At@,aXnh-X#:Uta)9љ4 z6阪excK]Ol4'V^Q_wΜ^:Jh뼓G=@a#ϜC[}0~I}Nѐ0( /@*ɰ]v/=7  w 4BgSݤ1~Ƚ|r3P.5L sRÐIɤ' fR(Ik#bKA\τB܅D, $L܆JtMBaҰi^ѳէ7V`%l"\Z4>&Bu(P,lʼni]](PaQ~ _@T٣ 0s,NVCT&z-N/i§%BdS,]Ny"qCsۮ}o>(:oFm-,1iUC7^ |_f'euVjB>zɹtzu WJmTRb6z 3Ӎp`oƺ 8Hae=ũD6|cl!֖L&nV3ωvԎv=gcp3;>`KIʼnj S~EOB ҎCb抆i@4j {G ͉H9"i9Kp~kD! rluRA⊴Ik(E F#-/t퐖92a%ھ腛=Pݳ0,89I؝(;΍`gO紐{V{>!4Ȅ~ֵf`י#"?vl`3uBU&"NM mͣ"_zuV_Uk{uoyo$vB{o>ø4'5&:䏖8Ъ4UZW;˸=)PA v;yS}オAPz"rrޝu9o;5uC:ͧXUQ(&Cxc+$uM9 6\ 7YSD6uL?J,z.?Ty5T9TglQ$-xSגdoˋ%۳4;'p3,)Bæy.TLBzZʱ*dܲoX;w&΀?PHӻԿ&,뙓F_ lQKZ% + Fqķ~=T?֗%a/]˔ŔYi$,er;ᙲ)m#_Q`8˒Byc-,H [P%.js[ɟWj}x4}cYlrm.IB1w|wܐ¨M3鞅]pDҌHZъLdH7MX߀AYM WJ4yiw*mEQ$0 hh&ߦV=)ܖ@/n|z(a58֦x9tt }KqF]Nƫƭf{0h>&SuI:.3ckօāF+Umq$2.MTZ⶙]QIA<1KD1k DVꉃD<[٢qHzwP]ғl<$ٜTJu'IJ6NzrhmP7t{xN"-`PXԊۙotz|~ҏ2l^=ցl@zf\/VD|r[U%5$F0\&NAd켻)}̒4ɉK^^exXWh2l6 Q&N2$Yۭ#g' Dߧ5 Hl.tifm-ZT4,J\ ԴR]_ `k=Wr͞.OF?d߁DiZaJ#hp5B:;rLjID mmvY-{QC&u/@`}(QH3Ҷ7AȨjtPU۰7:@ Zqd[V6KlAcxOF("yj@\Zq|@*SNHYK"!l%')zfu;;O:VU8iUAqjU$QtƤ*y\ :" |o}|6+g1oξ^-Ȇog6{֖:D:ZH3(G(yAq_h2˨+fٳPZ>|BBj,`$?VtL2EYY[?1A GLVl&rKF4z,3NA}3pMRB\մ$%uw 1:8bϚFXWk$%?`GՌZCKw['P%g'HcZ#UPi_I+nzjfd(f'|wvF!+ƝZNXmPuj܅Gvk WTՕ.GS@]%{f+ގ$S&gњwU ч8h(;pF&>JdscuZ!3 ;,8\D/nX,2{W|&G*)d{%g3ޝ[@씖qQ{Mtwr[ 8_0iF}iS;CYVok %i]{&BRwNjpp%9o}GV!9^s>kBk[jǘf̈́dBA t.qYk)zV/T/E`bW|`CAŏ&uaIK$Q'qt\m꫑^i_;ּEihS*GS.ؓ2yBO3j4jPmNq܅]) XNi(bS,Qn9\ID1Pf$#юRVq,u>XLmE5vڿ{>j ;z zw!_LT2S&H%h`\%;pDvzQo+{W/Iq*EN nӫ[/'qԑnso>5Ur*O..Kʄ0[_MV#AݑY/i+BC HzMq+xoRgBRY+rU}a X_":eI bMpYHKO bx%pjL  2//:3' lu Ϟ+EړJI^fuìU#H5*j 3Qc2\6UuXxXWjTo:E vGp%4N37=,!y<>jȌupMmBn(N@q0Bq䗦p`f '#~=_?%(Ed+d@Z3'VjZaf%wI@d6*||yvdNeՐh)Y7':62~,3Dؕǔe㿉l("Vu<1K`{)ƢE욭#ߙ eJհL ;XWkeS2Qfɬ-R5*>dSW/GFȫ6ȳ9+P_7>%?tZH3Pv½6|sA 81,.AmQ`B$75-1$a&*Q.Bԅ-;z8stPARtnt.QJ 6*.Jr<v56!x2 `_fK9`10iՆ8a&Ѱ+d}/sgN^?TM♑̌MV0E"gD?BҟWAYդ /97ˍͯ7"[p- ԂK ǜ˯5NbnS "eB`lRY8or$:f3`13 rkG 3E1ԋ~UV g \f?fwK-ǧʘԱ~Y7ruf~`d|M_ry&VծXz*q#rϚ(\:,bY~DF{$,0΂L&1`0rӛi\%@a`5/R\f~ZR+QZl:==UkZSR=O3CmNsZP/EENIN)IC` QL _ao& LM4y}2#NIϬ'3EB͵5rӹ{9mu4LtqZVh;&K$fոp$k\FZW|W'/GWHtҟYyQs"?fG =/mYlmK =Eiƹ>1rUjjVPZ̉Ҡ7/$%A@C͹VzsuJݷrJ? 6HƠ̒ޢFVsr2\^E, ʾH|>tD0=}e:tBO7w?uUMieku5nqX6Y H+s"=qQ8dVvE8 NB@"rllz!Պ 8ܣ` y-PS[ѥ5ǁiJ n?4)|FMOsnQWW}^Wg:n:$s Ơ 3IW-UxLӒfse\'&K`3aֆ,;gqD!)l<6-^=ijaS5Dzg}զ*@" h#e:ƩIe\ӳ˂γv:|ZV9 ̺$pᐶNxMT"fv[+dE٦kzJiYVɮoJ+bV6[-5>;95~g4RwЦuGꘌjMUU:0;զwgzpW_,ەsAgKQPViKή%f*࿾rOz!w1aA' ǪjfQltyv%۷=IlNLh$ZIWW@Ĺ 4Vd' 2dU/j,h%MDbh9[,T2| ;+|@k?\z@9.{n*ISQ}PUxzC5 5:1\-Oh K`NӲ>Vj#\38~.g('53)r=vdV/\&M  5@߻^_[~!>F3,sȤfhL~FZbZ_X/q=Brb@R[iljAKχ:)Rlo L.c?=/sTP64y6(=*7ڕѠKگ@Ǫ;퓄VNKr3T6\pAG =Y gkWfN ,:r.@n4Mh>8NbTҍ14x-![φ7L(Ac  L {s@ vc Љs],M. ڑorBжun5 |+|٫}kᬜL֒GI-R\kC-~tG5]15 V7k%u6='tKb^p<Yr \cﶛLxid5FC$PM*lQѮFXC W(\ŠUhϑZ||i=`)z*頯Wdo^rZ.vPȏF}/k v7fO6-#h XBh +}{|!YÜ` Ґti(ҡHgNh6 3/ z`έe*l@S^f:幗&e,sSdnxZ5%$ZTSt#n&b7T~zsf"Pë $9p5<J3.x {K=1:L^NUF H `$%;.H_wkuZZw>I);{e ~ I~(7e H z,ldiQ1b-,ט?<‡nYjԫ$r5ĊyO6d`O{ua%JH)Y*y09tjlP<Șq 7&dAV*^)N 4,4kQ gOx(AbN9kXQtHMQIтAsJ.Z X*qˋ7Ydt}oApmA-IyEz-ןQJ4}|k3Yo) X3C;O&qip6(ς{*;K`j™uOLj\P6 FUH%3 i͊$ZGLK!9&>[XEq 2iGg\.p"+ʲG)lZg -7e x|[852!L2`L؀s{ԟ"{ f,U4A 쟟RGR)^p:?wt #T)d0:"#UdVQUy1i(c8cR#Є)qDn+S#WWB֪jMFW?]xJh{Jnɕ," g؍N}=״+TElGZKwjZhJ(6`{3L䩠fQtGC-XaYCH85}/vzzi"Z&76"daݼIn*Ֆރ眻{<.ee>ZVJmOd>$~˂ ',_n!P0݊v^o!x/|wy`砟pI^r!v OߴM V feejLI2),;uWkV*>i 9c`xeɸ֪:k|? UZ!ZÈs6~㿍bn vIR Ɍ i0IG H5B\Uv)!f+1QAI֊C҄j^ڬ8$jGѶJTm$KՄ4qmb_PT F2烣TkWۨ΄ v9#k3uת3I7>Laً}t{Rb.37'ZP߼(~է^`7/BIjjVS7V I E0"r}#%$uFY棇Oo6luHѸ` S~aQq􃩋$ |k]du2aV ٬c՜dS>S#X Bs'?"M8ONoư{"P8ф<GzD9U_n^ye P8QT :\^+J Gn#1VEsBeEGuYwp 3Ӹs 5Gp Zp-PV:wh"-MiY,o{[gYڭJUڹ TUM?0 oZV`0:HJbA fb2+(x~׌j`7$<e1:bSWÁ>WokפF~nƅЩP(#q1a$'j^i5ې$  fz mSfn<\.gX۲xLl,KmRգ+A|ޒ6-AO{KxFa j8pzKiBQs(z{dgё1NBPR[Ғ4m6MeEzKdįK֙BhpВmF3&*Pݷ3W~P?@h/[6, giDOD䮤.#$E8+6kՖzu' 1A{f `-\0fʕnӅ/ֶSo1Gޔ֛'M!R5ߞ xk,æ8OdY<sz 7w\ٙ-LjX ?l9̡ՐMDjYɫN4g+nP]+'ĐgVԬ^?`+IFOcF 8m1&R5lw4{JB"dY)d6JZ(w Jyٚz]DiX=jhaʭR$#P::VjQ8@cpfZ$%4xeK S$1JNJ/zѶyqBΧjUZj@ج"4Vv^P iU^7SߒY-ql]840ʘwnoq0WYЁʧww-wW Cǎ7{i!iWg!  G 2N^7FR+ANgtLqI 4tnNLWyPV.oP-+-9Dž. mV3fafG%S/bt9E*-bAbxe%IǐFA:ҦC$> #D{+ HkVtvV֘)<$tO'IؚĿ.@%?vqtcJ 43"ZۏIIJF7^0^%cI衧4xH ]02la4]Eou^"}.0V]~!`hitTݣ֟BU+"M,A# f6zDCQlM`ժp6L4;o&a*Y/!XTPjVvd^[:p m׿S [򠤁ԛwXn3KV 8pCЮxy+@Se h "H1Mʵf X΂LUօlB* b$ ?rvJ8D H }usxzy̹Uw:Y `3Gwy|t3h7G 2<3GUI(K҅%\8qӸ3_4Hn! RRLVjrѧ1q#Dև)kݚŦQQ@:VmV(hGBd eԱu H%KU57/K{{Ň|$hE-z]T85a;LrL*M 4&23 sm ҂ :42HQMQfJdIb'E/N/ؠnє#2+d䢾.cHeGjG!@2(a>YvځrD2I&q'$Y2 ᥊CHuVlY,a|Lj`ݔJ u~^ďÜ㢞T{:Jw8'|BJ [^Ц:s\zES 0]gβliꇑH;s~y6NH'@QЮΔ,}. JAL>hX_\p~BY(D7# Zy8NsK~6#|(]~rgÃKKV䗶LiiA @g&k2a~s863I@ ";B6Lj[_OObəAvP0= :[:h(>OͩYV`.{-=AH"rG\[#Ovл*1 j'U[}5,bq?WiIUɞ3uJ&3iqw^Z:jJ\_-m`ےMfkUkZdYw*iU{*-T۹k$^2nժ7FjxܢEV!#e2P.j~SԎQ Kx 3\ b9in!>bjZ3|Oߑ8*T=-:GROPIf#ZIAH&&)L9$'4hJ ke0+A1]th5j6[]01|"|Z~d=!K1E5c&Ѷl!bjvCUԻTT@U&]NPmUB{uGqeZw8r͑qnT{hpoѻE61_xJHt*sy9ֶ9+ w~g6^ьl>CIӫ 5{`RI[VkfsL~PuT{D{2AfAm@3+jP dAt[ KVuHgKgtd 1xM}4ϝ Fcs|kX̲FwߒE3;yUr=)菥u0ߊ]ȅ<{zщQŤv-'l:"MׄH' 6`*]15L{2PsH^lo@N~`ns3RiWPΤ#QD,W܃oY8n='f=;ƾz:Y42bTg_lVH 6=]lkvfhƠ{b٬U ˧"mĎR{TVN]ԁxą;%ouX| nsI%tJ~i3:ɜQ?Tj$~\NðCښt#:j_ Zj:p |fY9?;52zRlx- $yt-oIsd%\'4`H"y+Kw굃ָ3A a:К1bUR\$Hi+ZCڣ @Srrӿ%2Is.ס~HJuxba(PAjZScIHζT>gCZFۻYWg}^gR_Wf>uF.`h L6xhNCx &:BJ>3z<\&^/"R)~@l[,h#˳bXΦ5վ.񏢴F~o뒴婪8jxz蝢V$B_ h%ߜ}Ɉ8;]0z+ &5Bkϰee+qĦ6`5 Frk20Yቓ^m)21ܱXSڗ3Z;?ʡt"@|wAfr KYu̙!O5Jm3 o-$ϒVl`퍒ʨ&}t-ɇ"\ӕvLQi„,.jH2DF*1jz$EX>]MK7dnOqeBGЉ?H WD]&u$1e4h%hM3a!D4$d1@U B~e@Sv%/3;?mmIgouX{<$1U8_AEaLY+zi ,rYh*53fO+YIOެ9v{\hfo'ͬɲ}!1kUbױ`Qq{Y33ɣ+},Mf@`H'ʹwx^[(m^)qw@ IOBd%*-";^Ǟ .hh*#Y}_Azj-"1HsC[nPJn%% \23܆;6ɪKYAKavD%њ?%햞(S25~<{zQKi6N&$cjML/tk% e&WDvMx_bw0&LBi-t JߡW2e>19'/K @42d1䰔\3TL/@VUtӧgBh[gVyjyх%`n &>WЬ+|qtyuV/N٪}<#)#k#IJVYKwplVx#Weòi?{ ȽEB};cybg{1G{Z7ј-9p'4-@pC/OqzREikv;~c5b25ݴ keJX+ CMsQCD?ltKlBCؽG<+ ȻHU^)Sz`` 欨Cx-s-"han`nAfG,;8C8.f#w2KY"Vͪ0Ln{U9qz!uXd.EԊnC!)gUr:V֖}dNCQӛՙXg !'ڭmRC#YBVl/Fㆪ_3G >Kx&f92'#<tT;h)wd`&:-\pIn%vV'QrL / hrI9?<{wɁwrnHUGEFUM&`[U>u&M5rY^M&M~y>T `}-NPW GT/q}N`~-t 厩Xl܅ZЂ1(\^#o` A c{^E DKEuNՇU/ n' |I*'u!-ð.>sv;[o%dW8?UU7ɂaĽ_`MPGn^~}mD*>8:@CO NH=XLz8LV0Hm:eF.##VDhYLꉫtC[0hC'"q g"W6aa{M]c#L4>Fi`VNA֪͗Z3IM~2oC h&8@?8== L*Y;O&,{3~33/0$n>SAHDmKOޙ,k )YOh׬ G]>v!Ss _9'Qh\&Q . @ImDGmgwD\| kN3!$^i!s83k'h-bwt&w")dV6jw#+(#4֙cuR !1jF4+MS 3MLu?%.8R&=ʭML$~]*˙;D60 9:j=nIF>_G}u0yWgmX|{k *籸Lt',&|<=G-9+{(,m]  bqNJj8Swآ!qpT$l L:y/^';J{NRˍbc ={}e+H93 T#  _`KrC?YK1b%ŋ.QqYƱ5kRrҢ "Z. 0H$$nG2zݭ-mS<9}sSd!U_]LT%5rޒB('zhUh: 7@Kp[#ܦXsX;_*HpmTꁪ? ]*םhUu]7(ÚĉF % hM4N, czWcEWpM-;X&b6mz߅`-|́ULl0k1 8}B )0ϧhG0 jh+3Ҙ6dQ(D;;Bu4%s$5 jUMqQJS;UvVSz;fa4¿+ pTj!M%K*m9ҁl- }Cu.%}#zz:LܬW_+P~v>Da}> jڃzKUƕ4H'46Opt}\p Cǟ `"YfLBwA2,dۗ@:o2 '8$p.7kd0($A>YӰeq5qJlgXXܢsrqCWcW;͝fn+CVuRV92go7pMMZHۙI0$rEGz_P )vZȎpFetf=9+`V+FJwvby˝:p3j'{[kSX7[Z$2 ͦvr U2|ra#%z>|;ziכ4hΡHuF6Q3#xFhy 01`N~XSWLhɺzL(uT1x?KL%ÏFfŽxa9IWj]&iEMNfPbFRimUpwz/^UNF[xb^\Y)8,kAM}`H[89bi[sH!Auqڬ-Y??U}vhZD5͜pz@іc1s~I|{fK\l1e[\ܝnV)֛pSSX1)7:üFWX/H_3')Ȉgv~ 2;{:dHrbχ)ALOӵgzq] Vs)竛V~2`&jĠnU 5ޜҗ i-K C}L푽9=\^kC"ӄoV}',^nʵ%йn]=FM)capFv|RQW}¶kƞ=op31 j<2;<"]Hk1%IG!%i~%^<3nV$ej)]LU-xK$(,0_-/,&@BkЊ{A pUr>5IYWኇ-N~QSlt>}x?!UZ⬌-oے9֠fY;tGD64ڧ6JnжJCz6Y";VN&RLV~rBHG$&W-L5QY]JV tpeGaSi"LU:Zc@nLI>^Q+bY) ;՟UM:wILkGF^y~bݢ5?"bGYR{Q FGRi(5qvvo j%֊|֚sY~^BY 󃢂Y׶6]w( ?bQ^F c(:iNw''[R5-:n}DjNŴjyFN1=\˾N9qI-ᲡGGuB>ӁOduƬGh-8.+dTY=LY 0Y3${grR\܅.I3YpA)o|ԤȤWB費WNQ'MN |#ӓ)#쥀 sΑW[^_x6|ޭ%y¬*V V2-"Լqr  K5RRoa%:#Z -ߋ7{;~$3\YKzJib#S>ws^ gW۳3vB@.UA~z)ADr XK'A$\ ;YjB %[xVɥqO/IT[M1P3YȖQǓO;s=9WP/P0md^C%6]Iչ崈(J^DD ]rDꪄ/ܢD>2va/6>- k3ÅڴЬPp[˂:yŏc#=,G6;ߏjo>o6$;RyiQo 1zAeHsy^5HRlwEdFlXA9Āʙa"D "-hQD i>?'ҩ*ҜwgmM#:۠aBVi#==. c #dδ;wB+G7s( Q얤/өBq~>RcsT")ҚZs=~' h]R'dvTJ{YKT%{F('[^5>I1w+f/{ ڄH$?YB`B;X. sNh`+TJ[ŇWT4F{NU)ۈvʦ昵6Nm^~P4rSږb! FTp|_">MRlsaGxdH9[>ȍj T p%Qt4p<8׮)LAʑ3婳vN J{2FFL !T.ńs8_41ڨ7kvPa*/2"z[ | Εh+`^R*]TI@mWˆ0Rp?^[}jWL/렦T^{ èз-&_ȥӋ;Oz}ޭgw߶:ρEr0>gMQ3vҭJ$Jl˫Hn%a]DSv}fBMC^ml!RPGjR#+]U7$2zI*YeB"p=`}@K_:d9D[z~f@[v6dy&䈞K3a  v-%WJGO/ϥLwI.deUms)UC;MZW. wX [lg+k1+kfDgjhҠn*i)On'C$8OyYn!Zx}=YZվiQ[/܀|T_۫)b<]kh)KiԵN BI *Qb0]Z7S LrLiZP%ޒ2dƠk9MW']_ PRʦ]\PcL 2R¼R0#%UH#Ac&%vyZņUW;b){ebGr-Af6$?J)DXy 2տ}sx9ВWA+CyZ%K>aꝋ5[nDI.Ȭ~ FwpZzK*3c9ɉٗL=M:;g*1}rp%%~[|+3zs` T4vyrsǔIĄ {s (9}8XP4, (iO+2zREnq 4E,B ģV!31C:U!z]Vo J 1#yڇ%ϧެ.LG֧Ӫ4`l9F疻6gHD:=R^tr@au!=Ň,oګJ]˥\["aGp"*eL߲#9ʴ'b3,3O,W)PmÕo& L!vMx`B\$ԁ=׾'nVxۣ1EV_ٙfI ;T ,@Nx ҪLkk{{ʶ2OĔnzXAN{6JdBūn6Σ/i؂vD7ieE#0|,ϞCrXp޿w_idح0%H ZP&iQNCMƪ&IG긨ڪ6Iڑ^ɋ鴯2븋aErtbpodYǼ&sCdGfGwYqǜ?h>$SǶ /_y)Nd^. Rն0z;zi^cpRS3DP"dN)s ~xyIlqi=bUE%2X%ȿC0 ˤwrfP{n) dsUiըj4 k`FSBmMDτuD 2qgتŧC6FCN~]0!s ^޷Ed/,*]+|$Q1S'x-wfI?[5 <׋Lo ,^PbդWfܖdJ$ &[spd+sBIuB?Fz-H( ~4NkYxvlf&;r1F#y&}탵[s`KOU׈$қRooH4up?tڴb5w۪1 Y~EVKbs4QB0)N lP@@Q\Kl$R-Ìl#)jr~|}av<<9frHv.!iurpʖ24GGzB=GJMgm{Xl!lyRt%R{/a5쎗ip=W3ԛhڐ4{ ֯<;+,L%MRaeNPb>*6;r+Y~ø8;@澧p$<}u~"6#iO/MTY(1i6TP.TRx5>U#yW\uOTuӮ1্bIֱ4<⎭RRpF6Jv1KU#iIJKMޱ^x̻\$ftd@;N ёmqߨ#5A75Vo(㑚 U{9 S$}M͗F}0n7 5!s cb1I6L B Lj{94h OꙂ11udujȞxvVj]UNn|հŷk^B#;Z Kuqm;,=wR &Vee$ g yb ~)G5ak׫l,z$) 4^ldcɮO/ =kY<.GXLëV 4mj礎Xl:" j`h'୬i5/g#8fhp%vKi(1 ֎9tvILSVYi(a=w#2*ՁBjWi  ȉtF"P~ͩ؜XΆ`LZKP/ GjZ~c,x'}RV?ƨޘzR8o ?B"dee.8X?S Ktz49w  !-™LttQ7YG> i綃ʥA\1٭4kx1a}N+`-SX~Ne>?.juSi a}lǓ#M(kTUAR9٥@| P}r묤հ<<\[ELPax.܏+?LZȾ; 6XD.,T=8q\F.+fZH5B k|-iKYܢD$߱n;l_B~eG^b\@;x7l&2/zR(D,GL6iɥ93MѵP&_"j̬ -&7lBNphkI*w,21ed!xL_MWSWֈg@HS:lEjqQ5$;[ qq#wb;C-9)@ ¡qֿ_'+D)ށ`Ot׋ä)ըd2 oa+%._PR{yFVoMYXk#A{ײgM,&3} Kx03;nnDeV'')<-Џt}^?ՙM*ME<9n:2 ,%|o4+](Μ2PET"6qf:(=:#;#[w,zI#~o%'ڔ& z0ZLw1[Y%'#5S6dbtHJUMpK>)`*2W_ׅMjA1Ԕ".i>=VuHvq+t(p1Jx {k&T ^p;v)1VjW<ݎzG } {GߺѼv5xh# ݖ2)Uة{{61ͨZ3L8lT4Q*5͆z 12`܇0=9uϛ=1?hnAK9I 9}?LGJ1][G5=Jm zX3=RݗYp(%`n ^RKIi >B$zl7 YUI`%{@IF&(aN gK_ d2r1rR Ca]DkIRI\a6_l4{ٍϱ罎'@wOȞd+jF1fxu.cOzNxzp*RvCM݆SIPjc ʖ ۗǕur$H Mb\3Era ]]RnEӤlm7  j/4gɆLC|uK _zajҼ̝%w"hsT̓gZNR{,yqLЉұ {cz$+`kg.rդ ;XZs14_J҉p*'nѤZE{`qR߿i5z< k7R|BKH5Ţ ۦZKܳQ^4:Dd7՚tȜuiwN[QQ-2gq%bvE]F$#{i)(wqBK9嫂/ jDttssde2+҇#дχm8i4gU{[)[w…W؄椢c9$>)*,2~lUih_rlSo& rV֜VS˭5/Yƒs 3CjM^t |,Kg>fd)lSۙd{&ɵ8={[| ~;RPP/6I\ѡlq"&Tc;̠+;vPNd[UNiDIɝpmGֶ@A5ZB␭U,\_.q!@blvK %&e/,()#t+2dHp*1Q0 |\W1N>\HȊw3T&tTf%gz) z)2:ANݤm_t nJ`-; k_j]߆ ;tVD> kUF(5j_J PUδƨT#îPꂔ$T)֪ؑZ"S}ZI3p*ny;yV4D4d2 >'яս#-*"yPDb';wQ͐b *7Xui\wpVZJmN Vӝ fe2S tЀo8_RZFMp {x`]6V4iLŕwgHv L{=16 g?azRӉIaW=ןD;ϏVX˾vrv0u)q<e<_#a֤=j<%bz:o$Sgtҽɋ)[0lml퐄b7%={?Z*& ^|Զ "|؍32H4:edtymX.TB@xxRAWumu$v١N3QLSnĿ2IB#x@b̑jROHy-{uuЅ:6w[vl^Fu(HD._.v LFFߜMl+ C. 'KqQ{[$ FKm˽qڝ)8b8/NSɥ!.\q0td KQo.Z`f(1U3Rt^hHw/C"fN޾>eFvxe|lvෆP8֑xEwn4qU}խjCTUUe0(թ:@Oդm(\p /Q匱.ǥXTjWB$<Bzc[!bR|87t8_;)nx+ 4_/kE3Cf歿h E{z1@i :.lA%~:`5#U7!]L ǙqdIaޕm0WgWYiV r4m]o!Z䊓)Nvֿ^$ljS2YX&9{}U|gBq]JY$pߥ]Yv!GjRQuw&j2SH{djS#ɰ5QUe'f?FA'Sf)zm)I@V-YNZ.UNs#kou?pTG=~ndI5ͿjY&(Pӱà8}biBvH;{Ѽfm%R.aإ1t(5ӫwӗ%킡G/Y˞#9y~/yWql # 9O厕%x_q lFmR(1>+q5g6~g2dg)[",kY#H,˗˗.iyN\|,WbޮϜ9vtKWWgZR՗~ÿvOY>G7'|v:zQ] n/OVDfNh/LevPW#9-$_2nĚ:E|$HAY"y_H9Og1qw^8")[;s! 2 ~.`e5۫USZ=\fdΡ*]zTĹ&ɧ!3ϺNL#+Ҵc/) KofF+iF@X8v{򯞹U`/q_3 BM"ٸ3L$5W {x +{ё}t*2I}y<g9^7 _/lS>b[3`<ט0̇} A+K~OaG "1i2,I'Qnb zآ(گ@72"gz=n׎"M b.sZys~z/DҶ` '^$~Pv t)acqo/2gNQK[0r$yڒP +A2t R[/f6srE+V|df/G/8OzEj{sVG;Uy|\3.FDY[_p>A[~,o|| q>Uz۵>4EYo!Q'w{%ƻ?vI1rl3)&,F7qy/djM LiX ;٢n~h-v4zveR `p"3!}-zis YkYo^wOgӈ'%`GUȎ;Ljߨ'5I['% i!@m?~t͕P?l_L(Za/;AG 6h)q.iX0mAҍK_ΚgkfG:!%'^`(ˋQY|vHTvҗ,H{Mõsi/08dĥxs-(P"Eƈ1^4یg=t%b9ސLaE/ΕT{c;#NyXno{缤ՕwtP^FHBZ d=4EaP.a9EfZ4꿼i TD姥%@k{܎P0ADc9[iAEԚפG(YnK;v)ytl;Aʉr'^&s

;koVs)/`sUJ_+JVeX+2ޚXnV":9:YEV d|(%5믶V)$aK3I!݀3VHyԢOtja{xu⋯)* VGQŌ]BzNˉ᧍RRy1 8L -"? NgsZpjWc?swf_ fFJhn@iG?z1?Xʚ343B9 ЈX3L&>W4A~2lpH3`!\ >ڐ`3kG[I:u '$jšжp3 S/h]~Qb龎 x;$~Y0@oۯ5oL~]2?ҟP-J~7'<.\k?I96 0+XT39@׶qW/Ƙ D9)rل տ{;3 ( ~6za+[g| 3O1?T-S'\?F5懱x7bjDzQV..@|swXPI$ciPVшVQ?&-fK,!ܱf ̡Ǵ ytN s݂vϑ7`=h{>wc1!-abo|&Vkt*}7E,Qش*=+0jɏc2Wkj#+@ی9;&_[p^ԹrmjZ3fZ%ߠ-3RbPEo^ z^F63QS&_h'*l$^qM}m߉I\ca &Tl ]wXdq C 'j !tUEM%_ 8S Tr}򽯠|eő^޵-/|J=k:ɛ. k.V2啞/D׌١k;BΆ?U7HWdg|m4YGos/($$,V .`3^@9Mteb*ӕiҲ:q2UIӲP=]2N6Hi~K/ONwmZ0Ɩc8]wȷnPj6,C+`7U+Nqi`i ysKͦ~VYS@΢vԡ/g,2EjD!y0 3/h0Xm):%~#LDcNvsæ7{NYU|[ab $%5hӋ^֬d^E8 3~`'wHՐ?9J|I/ImUNt 6tjTm_kx<ɝK%?DY b!eB&ּ;۹ m?QJnHZޑEUKE)D$BB4d*ӲbEOsV!IlH~L<^ɨ`:1z3W*_I$ ~ƑKdá£-c Â[];i}$Q71^kq{n*>'vt BOxmRqb+pA\gQi()E z-_Mi(-a:_Ѣ<> 5 ~ovҾg+?2$]_%/!n'qYJA,AwpH(W(fa  pQUl%5>|C}0֤Pepj_܋K#): O!0F2nn~GzKf"%ɷ})Owm>{v" #PbBV2:fuRH8<_IJ4ڃ:Wkvo; 7}#Q,,+T>y9_ Wwp-SIBPc, ڢ5R bkˋ-d@&rD #McRԞ+d(ni^Š/]tdF530Z“3D i>5`2m3$n|T󌇓xE970 &%!Ők2lY}4OHDzf{;(~Ab ,aCZlL&U%o>v%pC q>f:XU%Xۘ:}X+.jeƖ JKgBCf4!MJĠA'ZCG X:tв-+ooH Cq bZ<_Y32MtKyK'2&F*ijY#i$~gxjфȩI)3$!jn)3|^gFlNo@KywZ˜JREbk#T/BaWqX^