summaryrefslogtreecommitdiff
path: root/crypto
diff options
context:
space:
mode:
authorArd Biesheuvel <ardb@kernel.org>2020-07-21 09:05:54 +0300
committerHerbert Xu <herbert@gondor.apana.org.au>2020-07-31 18:09:00 +1000
commit958ea4e0d64e39d039245e6450f625108833e522 (patch)
tree2154c28f985065016cd67b4cd7aef640b947068b /crypto
parent28ee8b0912ca2ff68c2c03ff97bf1c22634c7942 (diff)
downloadlinux-958ea4e0d64e39d039245e6450f625108833e522.tar.gz
linux-958ea4e0d64e39d039245e6450f625108833e522.tar.bz2
linux-958ea4e0d64e39d039245e6450f625108833e522.zip
crypto: xts - Replace memcpy() invocation with simple assignment
Colin reports that the memcpy() call in xts_cts_final() trigggers a "Overlapping buffer in memory copy" warning in Coverity, which is a false postive, given that tail is guaranteed to be smaller than or equal to the distance between source and destination. However, given that any additional bytes that we copy will be ignored anyway, we can simply copy XTS_BLOCK_SIZE unconditionally, which means we can use struct assignment of the array members instead, which is likely to be more efficient as well. Addresses-Coverity: ("Overlapping buffer in memory copy") Fixes: 8083b1bf8163 ("crypto: xts - add support for ciphertext stealing") Reported-by: Colin Ian King <colin.king@canonical.com> Signed-off-by: Ard Biesheuvel <ardb@kernel.org> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto')
-rw-r--r--crypto/xts.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/crypto/xts.c b/crypto/xts.c
index 3c3ed02c7663..ad45b009774b 100644
--- a/crypto/xts.c
+++ b/crypto/xts.c
@@ -171,7 +171,7 @@ static int xts_cts_final(struct skcipher_request *req,
offset - XTS_BLOCK_SIZE);
scatterwalk_map_and_copy(b, rctx->tail, 0, XTS_BLOCK_SIZE, 0);
- memcpy(b + 1, b, tail);
+ b[1] = b[0];
scatterwalk_map_and_copy(b, req->src, offset, tail, 0);
le128_xor(b, &rctx->t, b);
nuFڢNrk{0ѳHpqy sC'`~Ij~!|H)ve  ޽xGW 1U:^{GDnapz/ z.|ߗ0ZC_HTޛ&g$`&!9Xz䡟)}G^xZCޢh. w}oys%1yhsf͘Xv1|C}.D$%a`XRobiTόR#' qSH;΁YੈrmAg7ߥfM:b8, ϊmy̕նfLl7y74=4FqKm0VQX"ڲABol9 [ ؚ M?Է4fQކIBwhξXE3[m Zݭ%}R{bw\qbŌ;rkNzVĀP29$ 6D VfX5$R_pqR2j]A{ܤ۠uʘ2@icu&Sder}Pe+ƄdbڭlOz b* w13U2/ ʰ3 ea>Y 0|:P+=)K8.Lug'UJzNɸ4@'nYj+e.jc.aZsWu{B;*$,Uηc$ܽG^ ^&I2Yc^{ڏ)J#s^l3r ~>1vS5m,iTqI%˺ϳ*AlXU(LKl Tfa|+')2{5F?{0ԧ*9͏|[SMIlfO,A/pOQm|HZ= F+G`%& U{ TB5-ROyw*q3aQd&IZd> L Ų0RGs0&͒"vǻK/o53m2B,!z+BSQ׬Kge~8~JkjT9n-A(y>z6KW?n|{d\(~G:aLǖl \DaZgr`yXK9L=k8r] I_n%;|uLԍP/L6Ϙo*IcM~YVeu'_hK csxD; {I#3)qO}Sٺok4Y?ޅSG%%FDkd+;L/+i'B-b׷3RӼ[V }ǮYF@EYĒ 9+J>t™<8ܨ='O; ˑ lwc;:?q\<?"~.TzƏIsܰA GXVv~ lCB}f/f j!>9S:^+` ?-X)O9v%Nӛ[9 b/wӬ망KAk}чٛo{֟n]r0{` Q2z7ĺוʋߋC˷C8jRjq76 %}̃2x4VkSP㢢l;Ūcz?MfɢZvZ> tK[釈;e%gZY^I*Tz߱NRMvM'6̠Ձx" ݉xÉv(ѵqUBXqV*,pRO}!wNM9~+N`7Ut/jBJ "Lw%a"sSL (J w]*/Xt Bh*QGq(zySqO<!lL&يU<Pyجئ ts@k٫ ?U5_y3i4+b0XqIm^s 7 j?\*<,%/^]JR#)2yM~ͪq\C%QAӏ-]8pCi_g\h;@)5wA+gHT~XzY[$3ȳc>νZH*R%;cg1N naeVPszZQ$!P|79)T:jrg6*WKGY-PfG5m4z][Uk?xލl |dLob,;e z qUF<)+b}㦯DgMÑ,)~6-kң aGt7Wy_üM{4Q4eM)f(aV\vNJ&dYD6Z4Rj7Y0Kt3 &Խr?.fm,=$JB5gKb'y_91Ϯͩnh|{^D߳. p;\@xLYkn``8 %,kTdCl~|ת8K%AG`=ZM?9/:aL,U? ,.N5^X|gT}o{e;beT8-sd\L4j- I1$N;56ld)x3O*O*i:*^i5PtJyBUt%@mpm*[l`@ὊDM7 R^OSsK~35UĦV} 92m̬T/MSN Bf 2fa no) d8_3%AaHHl ndF_Ů465+qac H=y.H.ueٮ:d2Fuj_QGW ^ƗDLndB+ݦaC~QH&k~S`K #4?eJFH ]{_^e*' ,k,{ Qh9֕jŇkuU\Rc8jSouhOUoG&um&&':`j;<)h4~)De9O/~a>iLCWjXE;32CNq,it<>b7{C̏RUó"[*]9C9`"[t13ԟg\!M'^l) Q9-[̉`2n#<~EϗXP6Y_5WeCCK QM~c0|=AeA?.Og Kg ¨gXϿׁ9:8z%'_L03m>S+6H]YX&3Kti4kk¬0Ki'IE̚Q1jt{ëѰݢFk|EVCͫ5{]\0h4yL3z]knAhRtr[ pѠN 5躍n#3DncL=^z4`* 9ԁqQˍpX8(,q68'+%?A؅"V:u2.=xj\vZ8ALXUu,0Q;F ~2T EN#)U5htMW4jtvYH ՈG,PtZOf:_P&ە[Ť r65U.zK0sD 1Dp2T\Έ\2Y}MpU1PBYD^FrPD/LiՕըTP)9l̙2Kٌh]uh6bU,LFܥ("KE;faps3-3 Ųr-"1oLO * [+G/Ax>tѾׂ^ 4] j[38Ln# SvcB(_Y˧YQ^7`Y;OR';Sl.nH3;\w&ai`lFޣdRgaL.o=<|U0!bhY08܁n%tV>̂ƠLQu|lo3EqdT2N s 7pةcJeD֜{&݌Qg)95ƢS,*+4XBsain6^^^6XH,o'PimE:~k =,},vhWă1~mA lX`,f_xp [+:-#.Nfgwv.7`V){t%j3pGBXֽ"V ]4<)E3D$"TB:6AL.2"/amb'VYdW;̳]0xLMnb)sc!2GuoIcńcg;ۘUoZ9za#,c.d fsϠMfK[6rv-*$ܼ" .Z90*`f5(ح^.8'+syL=K3)ecQ3bX5TؙAK,4-xrobj՛8¬<X=Y\DQ7Z]iDlUޟ5qey~nY<#OVfF1 A.q !"ʱ2[[y)Q"3E:|=o} uz~ihWmWd,lw^d%9WjBzG%YwPn`#G @JZ8V'Z ;Rͧ%yeeZ#:_!NIԉt4$QZW*^1lV1xC`1+lI-,<\6OvijZbh$Fvqsq,3F+A{̗pEr>0C~9/]dMQ.ϪS\8-9hPX*s?)\B}n|ˎ8A&[%ol.^7ӻr\7L츱Iu SaP 8Ih6s=<#F%Pޅ*dO EsO|ރ@D>z930XML]p-~voܩCmTFXnBCe^NNg"$?Z32q^eff{c ֖WD̹;?ެUf Z R3d>4R8jMU-P43y"m`A[eLm;667fic[ak.wD*WJIb5%rB{tD(5Im}.'SwFQSvj:rCN5yHdlkN<>{\=oio?IS#WO/I+Y''߾N)YH0g."ib0#ݑxOt2PmtY?6J$HmG١s|6<tKc5~{OjrRݩա;RY1F!{hLDT\Z[ꭴO.WԷ&ĵvVFGXEH« ßu6H|Mխ;YmP+J HTUx KdEmܣԷE*lK@902cux!oɂ9߶E?"{jxznb$6?=S/kJŠWW&+SmwHh6a^:ͩnr4L8ZD^l\"-]p4wZRf)6:37‹/#i昖JsH@F-^ 0 |va;n{BPȩkUjN2s;$DƱ\&z995  k5VFq84dR)n5vޡXKqT-nNP Lk{kRC"ԗB>;+iFJܻXGr>&d\)6~J*TgcM6p34;K/*dR`9\z J^Hl#\B`c7 R+XK4A hn-*DNety>ٸ. n+b54tYŋ\f̧ԋ;9n}ȏ2>`^CHE.ގt`d!^*ޡ *V~nmpܚgYdߡo9s{zݾ 7 `XܡǓ^X[pn$\1Ȟ.hKT,qLRuffJWmIS{ސT%UkКh>Z (\}wlӗ( ykvтNK״ + VT˦~zjVHqIn01;9[v_FU&PQUÞU ZMD#jvOk8ݸB  ".yKp5d!F+~{kڡIOprl@d[NmF[rayq%-JbΊIAtES(( sR +8~¾l:qzGB\n+j)@w:j 6vРK`\O 5oYijj#˂qpE!=\4]o"PjERYjV";^Dn:S̤X%QP3˗RLO7d::80H+R3>ق#vCG < u]^]'6*WzXUBV5$9uUﷺJjjGtn)\pM KYRڜ]{}rigj8KK*MrjD3 Y"pf9jނ-Mz&[4+%Y.m?C{9ޢYn-2Bo&'Bilsc}dGFdK)>c0jwQ $P&\Hl2hъo0'Jps#6F-<`X䮼ԡG2gsfPz@o{ȋ;8 Nܙ.*ZGF([P+{( كtG3{ =(?QF: M`w_%H3fMm_'8wt٢3~dqCG !kOކd|Fhc~.krQWU tA k\pl\c^;uB2)Wa2t_^. gcm8Cy[ B[x݃D|(Ӣz:)H%=>$Ԧ+/=y @?˩hia%a>^&&}(CGk'zd|vVB0]5tZ(X-~׈ _~ϲ}:JRfKmu1$UWR#_d%kDzhRLjhjXޙTITְڪuGUTmW4UyT!uk4j+X+u5(UPU2n-uHL!06)ÏoߧϢ/b |{oH<$5o}H :vKRB|(tLNOS] kQLvIM3Tf~} !&mfH , &p29Mh2&8ߥ녧NvS}ǂ~# ;PFx7+:HX+;׼g:VQ 0iEߩLnW8bҧT 8I[2"D-yi*zzؾtX~NFF #w3>7jhohj\s}@P#rJԪXb ~q5WG*X霧 uc{s $}GO`ںwو={/, ;F- l|2DTXat;$ )*t -Gʩ*ƇiW HoG>6 `Dk6ey̘͠7E)V(`IS/_HH\3ZlIx_R1zP\:5Rw(N]oB ATin_UFk*@ jV k $h͊ՐMW(\hE@OHYikz$}Xˑ%bs BR ðx.2OR3 9wp<xQ=! HTSB[FElLrW7^z@Av D;NC1n:mmIJi5:- fzvhLq&S!*)oX$lP62f)x@^!q5YCLZXBpu;A,dw]$>&ԳeUtqrYOwp- =' VRd#GxaP7wdk'qvpt`# la~H -~'wnbl3IÄC1CjrF `v<2م"/.qH! xj@w CCf|:u*vGR<T&YW{wtߢ/ZB7$h+x.ZtHV0 f|pߋ66έSO%hPvLaGr04A/3E{`QZS AvM kjR6PШ tĿ*3䓏.9%;O;G<-T-jHzrD#C=>5BI6rOkC܊\o;ikАǜmZ,SyI)_WgvWOF=0|[,*H)05.rv9HqKdny\kd,PHS<`MH\tE[P HLբnYqӲk_|ʕZ- kykkH8a.Rq {\4| Dz8ŭw4EakBR&rcq~f]Y $\rF=n|mtcCŕ sfW@7eɢYd`HtKRϟ\̩٤lrz]/`PwV`D\^@RzԼZ!-j )[Ưڦ%.mIa=t[ҨYL] SvA?NNM?( (pCoF}f CX)㾳&d<9!3 =BΥ[:n;fmh)Y6YSRL͸TR '|<QY蓅fpe\V&V? ̄LSݧ@ѝ.npR;/^>qQĤd^z Pڨ Jk#bJN\uτBعD,P݆JtvEB5eR{h^ֳuזo#l<\Z4_>6:Nu$0$ lʼn*Ui]ʢU @ V~v _0Ps0u,NFMT&z-lr/YB %'C$,]N3=ۊ5+NM?~ThU vtnc/kIdw0ȐMI/>T`yB0{ػXI(lC[BG=`K]W̬p~V.Z)[d1S3Vj ~cR8?[ Ndc9ȶkRmma2& |7X/7Q;7 xi({'^n;3=$v bM'%53L{W+^;Zl#DH1ځ# -P4↥csD ƤXA@)Z0* p>k̑ +y'Xʞ&|WEf L4E?qj;kn:Ա+Ӂamh1"65=NͦZRi Eq:x=uKnhk\ӳ@`0s-SES2D9YXvֲg'H |"G+KPh #*n>膸,oc igm%UʪYJ~~g8H1Ǧ K[Fm ԷI,<~%r$4ҊgkGRSŸYmRlN}d̗RϫHUji"Ii9mt/DHG]'VXI!}n2]vgk"hGgyINk]TM! PnٶeNpAh W…Jڄ\FK#+<{(NmVk/;Sexc[۲ 9P쾺5qBA. w[aJzt,;OCAZ #fkZ+dr iAeKUaBЍYYpܯ ݳDKLA&/|KϷ-Y$0j,w%3w7¡}3 Oo1RxA[;I2 ~Uң Tc-n/k +] MeE*TS`$ - nԟ"}|U񈓓O.{f>h'aIXx{R/ēL=i2?;4 H3/Фi+ 孥'~ ˑdp-Ϳ03imd8ǥ%t5LAcCo P^)b @'SY(l5XE O" ̊,ΨҨeP]5$lLjfgcȱFr|/E-j).IXDaeMaN#Yc *4!28cY7${*pl[!?PgFڶV+kXgf>-77<[תg$;3/kr =N&?b.+g#]0d¹RW(8&a TժjV<BE} N|GpBفoEhҲ"4qPLPI5 uʣ^eXV5`65nLrUGȑPS1dSi1pFFKrJwhA{Umu#dl1=]6Y )\P#s˦(C)! X&ѺnE'|^;sV!UY2{u҈.`?o #MePDfλ;,I1^e6IZ`ŦIj:}{tכځXNen"MEE+VctsL>r;^,q6y~C*9\9a--M=UgIvfh*:ֲ5d"aYTy: whjBd*#z JF7J ;p3s0%g=fKa`Q(0zhn4Y13u|E$oT.SHKk~9]9uv 8?0?yC$@/W̮sh3SQ( @)J2lSؒAW vU$^_*tY]. 1$|9J;dm2 NJi۳sWL!i}.>R ^;Ji2j|:{Yt9T}Vu{0yKvy TߋxR}&:i&uμs,_G#&pdlb&ct=EsM'[6A)!jRZ񫂺PCy[m҅`]ʓƎ#:S6?܌_.a>Sa{KL'"Ksk1V6PiùrVh]Y_3@PժJIt{[f,Wo\} ?zL9^XWF*зp 34ꙅh BlqEPlMcva]>fSb`B9{ط"Zf3˿wynɛ)n-mϾs34:rFTPͽ Nī_i |w RUeR'oTU;e"ދ^f'd\*#w{QYj#kr̈́ d&&티ajI |dXD3 r?4l_X,лby,;c( /SsDW u5}:\niejJ% ՚ηI& 0{Zs[ypx_gi-vbm;GeY6$,3=ݔtqe޻uB4!ހ_aDJ|T[AY/ TPiҠEaPm7P7PaY%3vt*@t8[yѽc8S8>MP;u1q2ڞy&]Zbc:|wS4XݣuYY>yjucmB?.S<ށNf 1Ҹc1y] cѫ$'.xŦY3e}pY`f#\'( 6\W$\8n/2q$8pIw.d\&Z.Hֳ[zeRFdUd- HdI{*2*A4i q47 Ar3gĹ)bJ4@\O^bdrYRN Mk{4?;{kD_]WOrWl\OvncD+[{Y!e;BDž x\ou6V%0z^pʹWj4xwhma+7q&FHkfI m=g[RPAf;6]6MDa{"%2S% Yair1ClU܌91i f^̶ˆ?R6J4Id|$s޺H\|BTf|E-Ĺ תk1͚ 8[eY&v *й+gW˕'ZP=1r\9uݯ/⚪Z8G5o-&rC |N 4J@V!9P18Ti¼]ϟR$a V;:mt<'Mir Pgi@w-[]bj!&i8m|F%Լʈ䈑|x6#xvw$XBBm{fY 5h`KvL%Zu 0=5VhԌ)Rq@XF?EFv~]*H UU-JkS`wqW(\~N;3}:‘q;3ANz<)] 6.:@1KM!zuxįfp::zjȀTk|;JMK"HYf HFZ/oL)]@0j^9%?:v:Y}Q_'Po9t7V4ٚ DdhVǽ?q;pcѢLvޮ ӥJx/u-VJL)(@Rkqt RٔEр*M"/1,yG{W O@wF{>4|]p?aoy-N4 Ԇ$FJA<˵RcO05`GRu,/CX~Y-|RMПLZa7:>o:II4Y 癄/cxfd43;qDm9Lу}̷uH+xӨӆkS? j%K \L~=p3+n!, zzu>LgD΂Ype;Y{S.Ł`h9ժۍ1K֗OXyE08'Gs =it*".wY4&"*~w+l(Zr] kgC7Cj+lv#_r>Ykqbpы 0r${zy bAFlw?+u0%.M[aM05v t_ ,Ok!J )iG}s)ox/C®:SQ; Qa,*3ίs\=$sJuTt"ILSH% 0jĘu4L6>N3![ˤL87JC%@Gv6 uAG_é $HJZ6#뼽DoV;M} b ,[p%.E9 +dm].5L( ̏hJ Εlv`Y _}z7H GvCl O AD&IV%;T-6 5Ĉán& ׭t*yQ<ޙc4"KiES d{`S]haj,$XKK \y Q3,x; s2=^]X.=njk uijb¬玄b(oB{%.z5ʩ_Չ}k3$S:_YFәuoIBa6mYlm dܽSעX4Y\d|9s*5TQɩJ%ODUtiЛ` !|ܾ+:3uJv<3MzRZ[qN:Odr}zAg33("@̾ }>ݸ\5UUi0yD5疭1bֻqӏIfp|I,[07ԇA$ +j46Ypjsgm--d@D>8 =\?)NkA:ߞ0.HV3p@&2  5rY̙K@:I)}^W:(nZ$s  3Ig UxHӒfsez'?1NL#Gϭ5Yϑw aMXmXeXfV޽KjOJ_WjבYaO5'',ԚaFոppRW26<Bym&֬TgNj,I;.\8m  v=}Wn7KdjzJiYZI/ +bln2[j`}vsW`*]5+TnMIE!1努TjU`vu8?N=?Yx+gϸ._.r)%fJ࿾rՍz>w1aN'-ê*zYv%67u'I N:2Qh1+'utps++3hHO?dȘ1:Th)CUS>kr6X!@a;`XvV\^Zr]tnhY@!R88jj @՚u 5u+JzCZd 9MPqpNKWNNy:# : `0iRMIf]ϡlyb;c4I2LRhƤ n[:Yx %ףz")'J OzMUΩj!P%9E]Ӡ-w`}`9}NW idkщ<kҠ&yPP CHvIBz&9^ P#cuKVw+ғ|`MS#-Utm1f[z Ϛ7L(Ac  Ln {3@ r# Љ3],IΩ5ʑorжun5 |+|٫}k, L֒'GI-T\kM-~G5]5 Viu'p |Vp<Yr \cuד7TʰVid}j$N_JlQD֬FXE W(\Š8gH-i?ZU˫ٛ\5--A˚ݵޓAH$B*Êl_leZ0'/?"/4$ft$ңG# 2 g=02a灌թOSK2Ag)|27Z%$Znt!n&b7T~V:sf"PqOm);{+zb--)ltO Sbnqr5&`;`\w]a&@YͲ)4+ajjUdA6gu@"!г|H{0^Y3293Ԅ@֓_ {4p}M!+ΞKR)z7-|u;3ݦz}X-ptuʃY+- ZG`_5rwנ@R~*N\#Gƺ꽜L^?@ {CJfH̦wR3a:K\f6Z^TըBz}ZOF&j #LIJ#].ajꕤ|@Sv"A5B$Eafˤ3!0R 'WY2}N${"0Y[rY.yݰdeۉWH&}ll8JR,$U`sР`y*1yr$@7vAER I^g/;3GyH1|縐6ۃ TiDI9s=#lS2Z]6+MV; )aS~`v6j']56^_3=tΜ3>?'W}dL,XRQGG_E ^P+) Ktu%\ړO<.*-(qOVi15^\0!szܰz=.c?krMHv)rqw*fZ넳KTDjTx - $9 _YL༨?rܡ)HzS3 ob&y7!urf(rɤ:. zm }Ft+`j#1"͂QVS}9O \5A")Ѥj^+n\o+x d^ |5 jQ YˇqpCrֲqkZUF"΢;{E}% w4twZXtkߺ@A*S0!oD,G!$N;dx5wCuZțF΍gjb{X7#[R!,*a9Ϣ imٽrRht-^b]&_LG_xVkzo>$~'ӜGͦ4_n!P0fZm x=wzG򗠟K`5Gi/>-/Vkѹ(xHI2),;uMW2>hٟS\\h?9?M/4yM Hm܆1؂W5:h:'*'<[H5GS+2hS\GjV} I핍WhOW\V !ϬhY!' ~"SW(8pbL$L*c޸1G/°ӠOBoëˍF[m2;_5Z\ax4X42toK L:UkR\-j;2I3>EJLϫ>5Zqh3f#`_B[A7Xl <N/b@ZLs 78Ldxd})M╕$CWkH{3g-m{` )NYH ƝZXicN/Z>8cc_reIūK*5$F4lΈhm޺#%fF*=\Kx>Szu~'b..,wAsHʰeJ즷utgiy9 [uq{KKP^qmd ax469$3' Bj]MoR.g mgq~KW<7zI JRR%V =Wh%^`fآ% 4^:'R t YP'9U@ǁ"6vŋ[ݞ*gDLAi:P5dErd,v*dRM@C&I'eCP &"w@L@h<0ӬӳNiJA'ɜ[jf7:2^d5e˰f?%ށcޑϠ )3$Kzl휍\T^nE&aV=g:UiR!IѝI`S})huyJ(()#zb [jNd88UvRlR]ED5&UŐ?:̦uшTn@ƧŶ Pr_/{ -)1yWmq_Su\. ЎYhWnl:"\8`Ҏ).7te,*$5O S/4=i+JҳBXMҦI3޹tU'W}bb:Ԯ5{ n4 dWԾu6]௺2kSs} f;s65FϜJttPvћc0ζ5sYQI`ZW].7*QkՠF2ʰڣv[P]i+\pP]!3/L[Y': ;`EY&vD }𿵭zq$ˮRӌ)9'/1%1:r,3UL>Β0g@-:TT\T5-)4FgN`&%ejhRc ̀uE* W+iU\Ƅ ɤ|YS4is<:Aiz\:1c z3 ,Ωtκomkj3k' G"gyM&n#k|XXk5zyZFRc Yv.2DvYV+9 sPWXwτv>u"8]T,|RE@:+ 8GKߣ+}%;Z$X7RoL0'0^Iyp09.Qoj.2HW`g\.+6x;׬hm ,a=Lٙ,ĽM;FiꇑH{s~q&IGa (hW`gQ>wu)NFo 4/g8v?u,Ky-v>FY]dy:Brx?^F&UBc\gDJd9`Lay6G{w&gwCkM>Yc`HW|EdCQ$ċI=A-'e j&]Ru|%-W}s=}MD55ω~ĘrxI֤Oh,+*.єx `VptqtQ dnu tĴj86~vryiRT .StxP3mfY#zW^*^Iu{aR^cH K^I\O7QY7Wu0SFˁFw4Ѧ##f{-n[ZkSKdp;/34c2%#ep%m褔FܖJ^+-YPoZW6YF9BU*yF'jm@pdr:8:C ^EsG$,阾+_;87tLq^dհexi?r8/y #cig?:%̷b3rOmtbT1*iAS.~m5҉6JW@L ɞ(|@)W+ I׏unf:S*O֩AE0w2 hFj׶[MBm#̰S{Sط\O'FqU,wC7B7}綋mq-ЎF`@*15x<>+%hy[2ۥSu1^ǮqrIsOL$v ]No!}dz F㗺kR#F KQf]&"ONlZLaVK } R8`$Jf.};iƑ"C`q 9}aC?q̈́/Gg{x2]XZBC\\ep 9ȭdcI'S6P磸>K ZjʳJ*64~wIcе&V}á.rXb6sM]j]|KQ1^'k55lƚp}0`Ō g:+.g3Q y6\f T\l/eFYAOQ\'X=?ߟoxcٳ숂(~o.ffM+{Iz¥"D5wϩm;Rˍ IgTb<"1y͵2rUgW o/MZ3K'ߧ2 N@l+\6ډnĪQQ22gI;^٠1|=9yMs.@^h)СɸlʺP-5*G|'ut%lw&Va)xwFwi,\]V>ZgtX6;?[f֝>Ĥss CB^^,r{W*)&&d_z.fo7se`4=M7R&dtAnWF!R/2U_XW>w=)}lʜ_0w {olM'^(t Aou`BԵ;Ϗ+J)_dNXk\.ɋ Z|$VFB([CxIj7KY98]&і9~v)CR_l[D.UӫHc(BS1c_IM z:3z9sAmÛ@37fb&VB>PĠW~]ǂG}fM $0:4#sÛ!+f޹ym$z:Sr0BOu3r; &TD+zSELvd=&U) fE{8tF|Mo:]DHL lA!A\,pdrX֛$".e.DW3[zLdk } #OJNqG'4.%QkbzsU/Q%<\(3&WL[㬃c1)p:5HwޑL7YDzov%3 9YAj4IC3@J6?cNK)xK<lAK12@iI[E`i1}zf-,ufRf;+Ḓߤauu"٘.g[əj32,$at ozG8rUʞ?,``Z$7S_kW(v:̻sعuْW_J2 4k*eH^6fWg ;^&v!`--Tu@)Wk%_z2pi.<5t罯Q8kGsHWSâgmo8(RVWʳXXC9KjC˜ ]irnfV~jG,;8C8̽f#w92KY"ͪZLn{U9v:!6uXdڅ] ߿ 1-H`vT6Hp~3˫â{-"֍+&m6il:h|ohcX>Ivp9AoάBB(ibC\vMO! >e7c^b~elr|5H3G hb}gu^sFnyf}{&>`?D Xg ud&W6Hb3n4M3?KѭJOjR´͒WP\E[z@Hhy$f6}1)T=q_ూN~(+ 2hsgVǤmdW}j?vkKAeP9*JKH߬r )UofWH5m#ڭ)!F"kdLb }kۡ(FW;֍+4ndOﹷUuEn3TV;W}L5 ?͓ȧnB }TA. V; p=[-?jԯT[?d!Cfꝛ(Sk'h bɑt&w")dF2h+t(#hWcP5!1lj4+MS13MLu߉%.8R&=ʭMT$~]*˙;D.0 9Zr5nIF`lo aRo\$:ѽdd$Ct可$;M6_9FfQ}}Խj 0y[Z;}>[-݂^f1E Xi5.9iXm-xro\Gb 7#w}ݭ-l<9}Qd!U珯l&Tp8 K}mI!=smiUWZ @Kp [#ܦXsX{_*HpTꁪߛ ]*֝hUu6]3(ÚoĉMF % hM4J,k czcUz21\S)6F f!pɤX%+^wa_:sģ$>u` ,e+' 3 P֣hG-0jVh˛36dQx/D;;Bu4%u$ijVuqڪRR]U[U_V6qvT3i\ ^ uyKF폋q{lh% kkMU4,5UF<7I'~Dˤ K: LZ6cR|x8~ïb9 ۾y ]8!p5s9`xmwi\#3A!1u, Ўq?)sd`cbk|I$yzƥVZ^5E=c,vٙ9>< F#uȁI#%Q32e^o̹$^z121L3a@6ҋZ?>@ؓo7.+Փl`Ә̺GsW.굄BD;utcչNv6|i'. nv7Ł5 dAnuB6+ir]JG,K4u}4^wVլiќC9 j Te]E"#Y * 8`8cc}ђ5~H(uT1xヲ?K'L%ÏFfDŽxa9IWj]i]N&fPbJRimUswj/^_jTdN;x|V\Y 8,mA]`H[89bi[36mOϑB|^ZnzSF(Օ5Ek:u{M߁- c-sK;"HqoPL 4"w!7Tř[RK0":S-o[  W_ςoy0g%} ̜ #Ϟ O6|!Ή='uR6]'SMr2,pGo@MҶbv9Ń&.r'Ź[갴)Lm^5N@MԠ ,,% (:HNٯW;%]/GBW^`>o4˯G^< j*W N FP)}YWPOT^٫nӃ^Yt%8,: >$?Ifs\9s[ =Ƴ5yo^%HOPmPeXChdp4X!R}Y3#(MMg:a4.8~Lv~Z}E-sNٰ֮13ՂݦkJ.nRPY(qn\X!cr1X!p `0gE=ML :@QSۙ1]A{ qhZGN]3^j7 #2UWJd;!#DdJDە!ckkeA sR+OOتVOT4?,nws<"^IٸQwkݬj"ڮj%Y}P*\p OY BAk5?Rg pAGDG }q%}/P >5&=zQ~S ?o*)("#W$b6Vrdlz9k$ Pd8%!)aŞ_6o;1-~o;<{/ѵRT?S*5n4lB,}mW4wJRt#O9h WWPv#vĬ$tizNDZ肞&qtS)WL`8 /r+|A>&/rXV$ "]mB7W$e_Z+D?6$:EMVՆ+IBgexlx[$Άm h&˽qnHwpDo/^}hd mtp 3GC$Kt *$U;O=csZN鈤]r#* 3ӂE~`6&v'Al(!P5S]SҨ owf.99,vӈFdJCNwUy],W[/ @nрa,nA#)4Hze5kEX3 ykE㹬{UIoeܑe,qR!&9:iђT;S`vzg@hI@/ӈ;h$2'4lIٜ-/e;imL6yAdyv/גwZHJ52Y1g+)\w;棡*OVޮ?ҶӌlH^M.g/x;f4#`;JVW+< T3 `u-}n4վx: h}Q8μNH;f-[1&4qR+'|+ )N&x?+z?9'\Q6t3dx?ɬYeR0Iz)|45[r4:bc !e@{Ļ@2roJ-Y.X;#Mrϟ Γ-jߌc)y RŁbCuZBoO uA]c,o'Pj젨`-Mr÷X(d|y~Z@e]iyfɖ&TM@wKίz@ڠs^>uA+||)G2 ?׉%\4Gyᤲb}T8=j沾D|(R|v)=q_d^ś?/0OůeH163 U*5Է\!6p/ :Q![x 4b&z$+]咾m ۝%mqR\k꣊+j^}|@<2li`SXr ]LW4돶3d0e77*΃xNy; Q~ ͌Of A&P"^ z'^ 8)G$:ŗrXNG9Hއ"(Π{;G^l}VXyR~fnƷo,q=g#__j>-CCr]:x{"CuђBeBWU [{j_&E7^7[iW4|aZWJޗ 2,^$Z3s@˼w%{fgwd+riVO)mD`drn0W_j{vzN7(e?9S%)T \ZG$҉ӜwmMB:۠aJCVi#==. c #gdN;wu+G7u( Q얤/өBq~>PC3Tqi;G[~'Ͷ h]R'dvTJz֙ T{F('[0k}bVm̒]n5 I< h#(Lv\~$f&;SR lr;jTRR#h/6mmM0km2|(@12h25-r!lN+ŭzE0OOE0C}Pȁ_ɐr6}㥑k*(Kj9I #,0qq LAʑS剳v/J {2FFL !T.ńs8c_40\֙kvP\{a*/2":hAr+VTF}e:?_ #B8Jxm晪k1^AM0v6B n06B.M@^Ty͟Wv5[=Z?} ,nI#^m); T&fvU]/]nZo TNUjT!Zi2@}orIz0R5$\Zڵb r?UWZd9Ւj ~zf.m$C\6I=f1hIMeq U ޙp_Im9;o4])s\oC{&ڡO-\Le@%[P-5/]w݋xl"I*y'㉏4OS[K`JEw/]CwT6 z֨ꕪ|Hf69%%HCŲiкAiSQ=1R=[8nuBks:8뎄#ծH' Niĩ"-R>^O ^ɓ|*5LE.rvd5 A}a_D- X0B|!۠.'lElu|I#:&XJQ-f2D8i|]Q"A'}K! И /uZ[ICu򫓳3"rAV4iڞ0D͈ ~'kЪ+H˦cȁL?,Ћ%ou$+x:=r֔.ʶ ovݗz4z7|bg+5l]I !QZZC7 +, as5ٱD_R1TYtȗ[ɶX3Sq!Ô dgNFv v_*$ְ*H"9ȇ_!eN?҇EeE $8휇CrA^Y&9!}t¦3#SmTsÛl+!>U6"ΒLioxlc&:;Pgjr.Eq3]O{uݎ=]M6:ַrגdB  V]QRa@zeTAc'AfMMFs/jM2ZxF_NXFUp%7[*wI=_>7n#$[ %ƪ~h詁_O.:9iUHޕ[=}f[)&Oʦ$=YT;-PW'-%puJ-Yπ4kN;B2ݾF9n6>_? \,zwq/❷\ ZwoG~cze+ m P [tUFCUL#Wke$cIHEtQj:l#sXA]qK2YWѹ\niVq gԱ8d `<ϯc/drSh8Zܬ15)詩x"{]H9qf?\x?4ڤҊ 1آWbޓ;g!biEE;9ө.(f=Yy75s50 )m^ gLjB}`m#EG#Y Q?Rg87n\t6wچxl-, ]+'^J|1ZU%x,wjIh>]E9 |d~Lk5FO Ր$=ȕtruCD\٩_X+q5mw'Uݹht)] Rˈ~FI18)'AyJ"~TFM]{zW$&{ힴߘ'_"CUc:-m+G}V<ˁ1G5"ؠb>=x@*^˕^MGXDA+$KkJZ٠!,nAܭB7;\ø;:ƹ pP/uԝ;vqrO[PZn B^2@LDu(N iNP,h[&d-f(_&rp빳:x]bCՙ`7dpצ׎gכr3.sYm" tOTdEDr}b4,=Ƨ[; x! L^t2(P,#c_Ԅ\q zf.lj7 /0V}#%v)Av,?pM"*z^:ׇQ&"nʪ^#_RJp W(\Ž>zvqRe<'Wo!J: 7F7oxz=ҋs]o=` |@B܎τ F;13 %hi\-AOgJ`)b+Tzma$PZ~0[IQl(Wv[ov%po4u߹1{ wm,3 [v[E"HeT :-4r/ք\KAU=[3Dm-UeE&&}l!0٤?Z`; b+lMc95)7oިQ/h]`TWXqORTESYjIvD⋳0:M e<{›NEKIF W `[)vGJ5b͊MZ hk}-{b<=8MpS3ƺsTV>N]y[i~rRÂݐaKWyɔx}Z^˲^ѴG3{RbHjLka-|Z C^yangOÁ^3#05ƢY64o71[V<}|.(iT{k 3Eꐥ[ybZ_=qihs"NUN9uQ_4rʹ!s|!\MMx/:vSoYG+]A dg1G>C^QkH[Zs6)/'jx0.w0,F^KяМۂi+R`7έcpX+ֵ&wGk1`Eo]F.ϙ1^F^3k#s̄OkAI% O#[^gϐBO!S}n^BQsx4p)?Z[^ط3.t&$M=Eݢf379E5#m VV e< t #D'wf=Z^{4ʘIjkVaƫ]̀v6%@&Cgәaкk#! ^Ш0;TuIY)񐔛HeU/OKM@ݨ -8ɶy+)ڵVpLil(5&^J#B٬mP%q fKb҈fYSv TC'Ԡ\6p%aqE) B掾+T% ͧ}׶.ȎJ/Y\*5.H5  {a#,<Уm "}1oEi8'jt+fPFVo4RٍvZ-2gzUmhT}Э~Y\pIz:-d{آ.qg4;I(NYN 95 KCN>BRRQ$%!gѱ6_۹U[Y)r9ѱ n7g4RHO[8]FZBeM-,YZszV%p g a6L=NyMgf.Cޖ?~p0 /HHd[Vμ ;T_3-%:yf1E@!%KӋ7)?x! DiooaHkj0"+:($ل2yJ"J=eP>_=|,`S}Cq(eꕽq|oSuA-* ;{3&H1D y3e%Rdv8TXo?KyA]G4R5r k ^7x 0؝jo!j#;)7 a;2AW5 dM*HI:WFP͜9 w[&ܠ,h(ej^bEZ[TP\*ԉ7WqAe\Ea]涳r2EwBH#B~HL#"/ Jl\eBxb>5 !s.g&[aH,xD8 `qMEa/lfNI8@Ӓ!ާ‰G &X;AFϯ".xD}8$%l(L> J" '&%K Lj86v &m;Ц^@uScoݡf8/]X{V6j2LLgIFiV&etkmnULcI.2 %Ѫ~.HI2:jo PXf6Fn2kI?wOĘRM̼!n+y@H~ikEc~&L$??EE8wH|RzʺSϛJvs[9=ME9C0hu=5DYΤ+ĞFT VXΊ.rv;;޺B8YjrQU+v 2hQ/WaD<|19@pǽ5Iԙdnp[p+{~|9!azP@v֞g Iὕ(w_`vԱ smX% ;{^k6}9U.P^*U2P3G}}GqN2; u8J표!B&qh9R[9h9K{^ ^:tam96Xrw2H*Fu( HD7ʾ_ {CQ*Mί&! 0%8 ZBOԨs,MMjpW^;\ Y_T*e OȐ VY/.8P: 0mϻ.}gN!_-V+=ǔNIgyŗa#Y 5^frr:z-=;`C54+2wK KJi8vR!uH-7tˠJHVizFvM KxI?'*=v9."R?;-"Vo^؎wxnGc iukhR<_#?ZӡlEV'n1|IH7 M鲾5` 4N= 쏴eH vNIOYz6bj {f0Iɚw;D"~3&LmMZRMwŎB8#MJ@.ku 6d**Iq?N@պWKu-Uηe0lZF4 z全;6PL]%  {.lnHJE 9P3RBC'SPI5ԠJ>z5xj;^#>zFkBOaOL UdpbmvrJU^DX}[X:s3uIRiGhk2A _zu qTMUEJmU^{++vb71-.b_M t}g%{ x8[K~iYYKXN{>7399+KJ4،/2Z(VQZc|VjN[m&ցdBXyY\'_³/{0O/+^"v8/鶵u2g6r57jE C_"[gu5Ud3ANZ!%9 豘uWnϋ6@=qubQCx^~@St'i%m`KzKR#m6B]f'bOETEӷ0 g=ߨ\__dY;1kzY ~v1g|@7ajg+9kY!;`0u{@]Mjhx$es}جƪhE`t"[(~ P =$ƒy lp ̕lP/Xy;ZtWMB2Oɴ@Y,v Y[füoB[Lf֍RCd4*6{U[vLAfArRA/ЕƵCАq<|]yQ+O#/ϽM5-{SXBE-q}ϧ1'Q7S[9)Mz|Es;T%$dn/+yLIdG,X~BD8اfd%wʳr_LX0Dr-l: 8D$AD0/R"QGcOrF{t#LbE',Y]WbϢZROd~W@__,TD% +{܎PҰADc9[jY*EԚG(^nK;vy(l;AQr ^&sU[7tdH$x5i4 ]9rR@pfd/YZ%ě)AK}.noV^A}v,DY"p72BZ#s.}J^o\qGʫؔʜ\ltw㒢SDK[@zъtžyMgK+݌zv*bb[ykx^ <~}gbg|^m?~?\{3>iVj(Wks-(`3UJ_)4 F{EP2ݚhZB݂7D.:^ExV)?HL +XEA܆@sȗnٱbj6ꢈ' W̧UN}5xu⋯⫂;( AQŌ]BsNNW/%RPy`8L -V_ncq[y>|ƇR=M+19;3/1%͇@ʵnV?,r{i)K]$˿lhD+f9h6ؙ3$#>\`"Ug֎tlg&(74fC۞,9M_>MvF)fI$x)nd-~UmF$/JLs>;4>?~?H}WW~SkoRP'@sB" 2&WH0dɪ]B$9M  Q/C1#ߘ'Z;ݛHNعDmsht P]~'-G4[ot#Zzpee*Svku_#2cJ%jɃN@VG"VjpR)q˒n$ [](o⢳} yOZT_絛oۏxU짿'__·p݂XϽOG/.LoEg9ᏸs-$;7c/o?_^gvrOTHj]:hz?ޝqB_ji05vnQh*B+y /9բgg}w?ƃ?ӯM_HyU|/fH<ĠiƢ*Θڇ ~1lpX.9H0F|nmjO[?Gܹߑe{AiB6}s*{;Gh:YtT4qoc/S\hH^Ҝ/1'ٷp? 7>vNrXg^xoɇp @ u6c| "b)w+0O]S0˧W8k!MհXŶ0\,7NG |6DrNRV vYP "/} 2NDdG% Ci Iw,Q $É=<\6VUPk|dZxQ)e4 8}QƇL_nkF)q=!s,4'ʞiro" hK C gL#& cR)ۄGg$)T?o59p~֣?eї~T[\n~ұ#.N^Xr><(?V:(BnhL9Q?D/l4zQa8 GC7^9ns~Kj Pg,d de}4Pɘk œU4UԋH^EKH4w,ž)8sh:?CQdl߁Α7`=yko}bB[$L9T>o6YiU{V87jɏb2o*#E9;$&OZp=\N23oЖl)_|ÉBnF"_˷L.U,^#E u/4Pp_Ӝyd: `m~M}m߈I_cA&Tl wXeq ]8 q\X 1H|mrW,zyƶYGОPYItYXv-|9$:fo\r6Wص&Ap"P>g99aY,ZnǭZ :9(@{Has u26qRD&g2>%]ܰ`%^V+r RtňIgEC {5?`"+Y<̵ ',~j|7??GV)WKrIb HrK(P$j#_IT$D^2-asG7F/7'ݝ @.Gm2!<xfRr͵OĤЪD/**zM &<%?Ŭ Soĕcߋ[L$!SdbnLFوћWJje3"}m3]LF>RI`!眎B_߃O VGKx=KNS9AE=Tu&ms3~6cD˕a:_Ѣ2> |υ ǃ! dWDsE[ΉgzhП)>˙xh)\k& ʶdYB8D9BkTU6v1;GA P;H5)PgbH=Bb[*ܒHGm,F_q[{7FefHA:@Yr,7.#eJ NT\ʜ'pIBtfN,2y@$ F#/<4[MےUg俦=P->&fZ+gOo_|`CjQb?vlP{׿i"((-w0|:3ͣY[EgY"m0L#^[b/Oʱ< m0ti"o Df+^l&׫$/aEɾPmp3NJy)"$x0NGP7>umxE970 &!E)ΰeiLŞ,!_/a7abo}Ab ,aX3lL&e%o>vo%pC z3}w?tJ>twuV97=]P=9ʌ- @ϢhBPWAOP5pe[V?ސ Cq bZ<_YS2MtK'y 0&F*hY#ij$~gx?jфz˩I)3$!jf)3^{^gFlNn@Iyw-aL_])_c"Dɵ*ܗz(8,H/|l{?󕹕Ԝ"dݮb?-4Z֧9%)j(PMt={*A1xom՞<<7Ш? pE `~OT!ZA:7$سPa<"AP1{o-2~T2%Ѐ] &q=/~\NVNˆSj=zå/2&<SZC #x3{&z  nss񇒓%$>Zo(ԾPr[.-֜@+/[wȞSU>Bu1ϗ.f+{zoG0cMsxƇaj^xt~,VS- DcG `FIpFCڐ⋱kO_[l&4b; .%}Ao&3A^'qTuYIzy)t)z, @l5O?ҷ6hSz_׼ ]_Gb(yfW% jXXӾ\)k:2XŃ>T 6Ȏ4,j