summaryrefslogtreecommitdiff
path: root/scripts/diffconfig
diff options
context:
space:
mode:
authorJack Brennen <jbrennen@google.com>2023-09-26 08:40:44 -0400
committerMasahiro Yamada <masahiroy@kernel.org>2023-10-03 20:25:59 +0900
commit4074532758c5c367d3fcb8d124150824a254659d (patch)
tree6855ea558308e1f2c4a92e990344ef11297cca48 /scripts/diffconfig
parent8a749fd1a8720d4619c91c8b6e7528c0a355c0aa (diff)
downloadlinux-4074532758c5c367d3fcb8d124150824a254659d.tar.gz
linux-4074532758c5c367d3fcb8d124150824a254659d.tar.bz2
linux-4074532758c5c367d3fcb8d124150824a254659d.zip
modpost: Optimize symbol search from linear to binary search
Modify modpost to use binary search for converting addresses back into symbol references. Previously it used linear search. This change saves a few seconds of wall time for defconfig builds, but can save several minutes on allyesconfigs. Before: $ make LLVM=1 -j128 allyesconfig vmlinux -s KCFLAGS="-Wno-error" $ time scripts/mod/modpost -M -m -a -N -o vmlinux.symvers vmlinux.o 198.38user 1.27system 3:19.71elapsed After: $ make LLVM=1 -j128 allyesconfig vmlinux -s KCFLAGS="-Wno-error" $ time scripts/mod/modpost -M -m -a -N -o vmlinux.symvers vmlinux.o 11.91user 0.85system 0:12.78elapsed Signed-off-by: Jack Brennen <jbrennen@google.com> Tested-by: Nick Desaulniers <ndesaulniers@google.com> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Diffstat (limited to 'scripts/diffconfig')
0 files changed, 0 insertions, 0 deletions
v2I70k=U i|{ٶ"do΃eٺ^L $͘leT>ꕗo׷wtڃ\zE=F%P [9S2q]3}j5X0y!DB)=[Q(N-y,CuRxWқ_?+xJ6IH djTQI9GUzQ‘BsG{Bbk%88k]_9a:L=8J^M ,fv07v,YxPՆ %Zkk5JG,glkxk۝;-fc"XD?Mҿge/[LxmKa툨W ЋJ,%&~w|AD'af BĺX;GCxtHO8~?oy= m*I!QD,1U]*NP<0:H>PX `Ɓ\F;2K68ރrumra4V d*PT5)wDl<Ho7 Ny8=qX!O: 7IF~ PH+~A'? wisA.!211?t63$$GKb3׿F;Wn9Xa,G8 waeI٪o@'42RdCu[ƺڏ.AwhHĔ.U7t[Z ӳaM9̿`@JT>Gps73h/OP]8+3DL+aRXj!g[D}_^$:DObѴmᝊ#,ӑUF톃]nVVs3=;J-H~4x\ӳmoi̴=e∟YB@h!)~KXO uW:sx ;7E$g=gso_ޕ 9E/P Xx8cK;}Y(n{Og(-]_;&`6x^y԰*̺jGwʹSZG~r~N;**0IDN/B*3$ !+W[[ }aWbv0Y:5)-Xu亨Mx,9FthDG 4Ҁ+Z&MXEt cgi#Mſu4j#0.h͚8iSG~3a$UDmCFj٠pI’xԅ.l2s.vb67 H5FoGaI!~*qC%UXTOc1+2`ȃmۏCchM3yU5 9Xi|ah MԬA4>&b½.Hlm̄'K ָAh 0YLh="w ij=AKͳ݄kTv;o|]:\;S,nAV}cwGݩN>K7)_ӄCMG옅VE78/rӝ:#ht%.kp^c41u蒽2ѾŭⰆ[}\rc+l{X¶_D?vݣ[?tp;?FT 3lFh o=^y B^/WJ{_gX2e8,#腵J[m|chG_oXctrtw셼htv8[_M81UN4l F6%u5MUhZBO`-[1-glK! !ۗk#ea\D.#e:}\)xgt=9Pk5<c6s)fuv7 vTmM]? @_nZL`uUuԮ|kZ9Qe4V6sxޓϖ&|Cw0k㥗gKS:Wn*X^Wtի ~r'UW+x6fXj_g3 g9w/f}W[{j|zHF=6oiuڢkc閏f,^;̡ܚC+UCg?L3]/YKsuY2KYy*U%{W5r SQcou e1\-%]PoD*pPg(S y.e}B*ƓߝۏbQ.\Mx@k_Աp? ռ-aW|-+!KoW{^'y:vC 0#|k:=O~.V8WuFWeaM4\Q˹z;s ⡔1=o*υTdi5ѾA^Y+d*e`PM` ? 4Ť9sQ2{ v$CTT!`(J UnC,O9ApNN!C /cd}y$Wcع'5ebąʻ K*.MmŒZg}/)𢖺 U1VX#`UۺX#`T`U1VX#`U nU߷cGwrVڪj]tW ?#MhgMw!n,yðeuɎ61Bk۬6K_%SUU}~,37j .^kz@3EC_UG_ Hzܼ8nWdܴk+{ -KH|JLaGԬ~,Vb60r:# OX0GsHEG?=nsƸJ_ӜB+Gs+mjF[+T';ccpjk$8@-[Tc^=##D4ޜ`J*}bKylS e/4H^_tqtK-Ԯ2@FM z%sw5δt4+X£+Nl!sQuX %WYG$aEG]?$:B1ٛvk1e"OUDECkŇUv0pEɽj.SKTԀʥ֪f-!;/Lh"Xl\w?n@M{<|E5XtfſgoD?$+'ϲA(HJ+p/fBFZ^-ȁ(ث?Ly+`y ?}b?8:믺2!W<PyO͎ 1 ࣽ\f!;'d3  㶣A?0Őt:}4ǧ+9k[(D! y"} k{ѶťE|bjAjP>e`}zi`3>5D=8HNɎ S YQ ?@N;0g j2k@d9}9/ -i~fTDD@nnO?&H/:nU C^DAv .eC N) #jC_nBQY y0{nbga)!GcQ(Cx߿xG0y9JA=~MN?龽?ZN}ӠEK6UDAgWOHP86ʥ&P"lxуjz w3F *=Ӂ3`"?g| n7Nn{ջg3,x2_S_`NC+ŎF5xs4CQ?ޡ.ՃO6;g Kg'#<-Jp.A,ʱ{E΅4ޭ0~i^PUa>_nu`%/lN"Mν _Z4~P%*?۾R euXm?g?$/g:+~>˄[0[Vs{GsRG><Pr@f/%c4fn!h-kѬ OR2#N uW-Y.m:p+ƴ<軕m^Y']m3|늠:Z$,$H,] 6^ 66MEbpQ$L=u˴}/eU;Z]Mlc'd5O뜄 D T#(-}RY(SSsW*2};j:jHuGg6*.MQu~ڦ0CFX{R(2.P?Vgqg-IBRA5Xp;~33{Ӫ *Bg:P:(r&G`Oi9(mxV;۶/ut;0?]I1T,@ݠ)u vsc~I'rg>qӠ}j?we+c_tzxYs/iԨ[/r_WGyDyHs?Z<`Fu4'^Cd`íH5?`C /?|ק!m߿5w];z=tfIC=)v7}y`]?5Lso`}O•e*-ݱ գ-_~X-{8(,K,>~PD-pL*!kau3(;+D,u螫xq;?w~Nuk{CW/=yXc's`qZ{L;Q& Ί*?!jg@ZM q}L9^`Ylr`/Ӧ$Wr,%0!k,')"[Y0??#l\`-t\IQ#3Kҽk\6lvmw2j_0>69]p'OGiI<&t3eTU.e=w4Xx_:%$<-{Z" )GCK9;c[2}W~K% +-?ކ7_kYǒ'H;OUFw-XovC6ɗ٬; YE=^Tb>4G}#<Kρe[ K-9zsҋJ08҈= 6dZUB0 6l/dyFb_˓lR.c{]g)pob}p.ܵaN6r@ 9kg~ʸVhGǛoUΨL#z}FC”5`3꾻6t"a Z Bv"{pZ,㦚o՗N:e0g }j,I 5{>.4dvB{a歇W/?}7;&9mݗ61 ]ItW@PGI4[u(LRPc q^6.r]&r\"N4AxȻ#o7WCُwf(#! @D4J,x7e)>< VRLBI7h,h$ܓM!?4ow8v9R;(MA#lHܭdc[xjhxh|ҞF0:mX@h@LP|Hk5.#btmInHMEYA֙)٭&,E489>HMm#z m nstA9I. s̆N#J# aU)0hC i(n3$[l}O&_W̴}^x]MM \ %PH쏧(,oI1 tuPX=]/-/:V>kCeP $w*OP :uphy|JX6zV02UeywtuWYqxs>OӯlQ6b GH-s -GPV[5=ULBgmpieԗ_6COxdqW 4ϫ( T1+k 3GRtbvF{uh% A"-tƋK,;g-Wӵ0ve 5`GαIK nν5էu"ߢ65jcϪlfO% ~Y}vwMaWn^2'vAWT޴];5Z:ԜKw {Wm}Zӿuu#^ѶZ<'hzqw%g7XxU:cL8w6Pǻ]Ow53uT׭]\ӋA^/Ksüh9)ϳrZ =eT=m;, i 5O މ%񪺰xLfto}ZßZݶT-M 2=] YhA:s%sӍ2]3$#Z&NDYޗGn`-A2}j,UJ{-Ֆvڵl&&vmXE8S#n0~k}< "A!A\5֠zv(/<aY::2UJXy߇DjQt7pc&6kB^]Nkʎs۶.Vr9X9:;8[vm s԰pӱnTZ$-zr !5i;i)tYj]5s'b('ZYknܮ|x4cl'λ)8a~Gaܾk& ݖ!*9u X6[Z  *g=F*AUe  l㡰.ߠj!)}|_ |lDڼ=߇sof<{CKH!ƒSwWP;uubb `p?8uqvT$LE?خc@T%BDt 'A@SJ/v%WQ h~Јh4&1Pf$L_3pW+kH#WD;?L@JY}f&@fg{,ء5lc 1FWK| Au ,|Pӗ ?mַ!u(xR2^,5jJv٬d@cBwg?K۾4 `[SʴAwGZHRkl3`_?>‚}*']]VVq;D݊nI_oImMg&\zD^5MmJU;" < 7Vo|5}}7y]}N Gb4rPw;J+yA /&*ݺO\:F>^M ? 5JEq-7U95N8k~*yla+͚Q֩Ӫٕ]vWpY(< *?/#XW[ .0<]W&o|6<\=,?M#3U`O!SHuVN#a7j YFb7DI=ox^ޞ2o"&z=k $bۘ꫾?‰wj>|} #Q, l׼RظqD0yexnyB ac9ؔP{1p0/ P;qg@X°K"t>F۰rd@ƪ ~u{Йr*D 0KrY;:3ǪU7wE4o`?x[OTNw~y>xxW {>yhl4W2I|x;m.9\gVf!RTm^pp;b!ܾdr_u_ƾnA. GgG{<ey9]C]K@#?ϢD]ϟO*T<ьŴbrLL1A?+:pe8uרY2)a?z}WƄ5sաz;uuVdxo*YX峚pƲHv5kd8 U.\i"-O8z0r-"V\5>ۯڲU|?I|^ggFDXC ZA/qP((($ѕTDz vhN>>uy9=$U HqQk\L.~fbi!,7J\^DvamHc D">(0M}F 7aF w}( 8Gg]fܰgю7Wi4a`y0̺UhwmѤ :6e遰Z;`* ȗMpaD&qC^D dĿin=}4p\UUDOl߯*t,:#Sh h9Siq`:ƵRH(@|XMѴ MmGX][fߞ=PATGPP0b+lj!:4!4J*"*34gU@QQD$HjQ܈0T;DۢlI-Vx[Д,ɱ[΁7Ntr;R%?LIK b(8vT#^=ud-ʒaaJg^u_9X(\$B{VPX[JJ ͥAUh!j{aAFZ+E0V_[Gj ùv3$zǣS&' QrDspU&eP؁2T9\<զ5QXFI"w4F2SgXg7`2aUX7=pmb1.IEKt39G͈n~ѫ" ^l=gLC9 pߡGpBw9HРRy]A?XܻM׍WkW^:8sqvZ lbppeu>ȵ9, +ot\:q|__9cHF-3#Y-bZdu=~R)HaVj0V-F/>3i!~ΞV}9 媥_zOζ]`@JYJA'Ult5k5u2Y^2pQU0t ?J0n60EP):+ߨr5tKrDCdȩj@^*j`ƈs^:N;K{xWئs3Ctcc'BA8DjF"֚~ 8O(ەK= q BBv]&h-u?ҵOe%oNy _d'&φׄ(,"1Owv/ܲ(p:25z90_䤈}<yxb1 Bq xh`])LP˚U)J}>5{} .fsb4p H=zu@+ 2O@YA!f+o!L- @~S oiJ>(fq蒁"u,wg,㏈|6LsI3@:<$:ߥgO^568f_m*M`ٌ߼mM?2OfA?Z :҃~ Ӑzo`d}7\FVWsSŽMDok8:*,Y@d;E7m$NGW mU#TC`AB sVC hs[Z>&sWK=*>aCUo|roJo[dh/>V", &Hq?8j_zwy2" ZghV՟Xm=8SծP$쇹'a|-B |e={:~˽^/C(IAnp 租/`7icw0Z/פ(b' 6 C}2] cyW5#ƊDAMDx̟ЌAT/~_yȗiY=W@4a7pL^6m4n+ Ken|/EpmkF޿>hw;Ǒ׳ZuX@9\UP $*5OM<'"v @=CG%OFwadݎs8<~"[~G}pK#LJתÖ6U#G7iLpU 9OKsZξ9r x"isAQT L9.%>8u5n冑H"UIp=,rW#?_z3 8)[:b"ʤt0 \a^eAf9닗c1hou b2ļh^M;IJԓۨdlmDZ6AD1 J۬XwZxvb?G73Ģ#s=Ē^aL)O0E4S7b5={E԰Zy*>8ȴAUZ'- =QpX\$QB'laT ظoAY[z[W R =Z:ŋ w朿UC d $կwt|џpFgK[죖\OG_SOk8^9Y4 j)x[np`^jO6]G9\qpf6EPUiy<)l R~}=FD)Wj LJpp/PJʡbyt=` _Kj¼ 1+ָN^Rw6"7zt7ۊRc̀>/R'XJ2#YLc!K^cf3t33AgZ(Hb*8əvKrq=yq۷gQ5J! cq2"D lT\GG׾5ZDq@vZ8jlYãB`yvjsDE88FȦ|vrC KƹEe0)Kμc^-QNn+G=Ȇx@g9 @p{x\Apxq49ukL3{6yݳ0駗v DK6V`%k706FI Vc( IUU@l5ܩt"& I3 0Ȱ;a"t5cTho-k~dO5{!0bD-޳t}].}'͇?ﲫ춃9`T%ԌH:DC膣w*Y_ͫex-yl;a{~U}f!ZjӺU_aU!`sڇ]1cѕˢ>0r i(yFCV P-c^x >g[^}Iwͺ]ِͪ E?Cx= rP1q𔏟eC)OŴ=};/tﶠhQl䡌vsUuTl~lLF/a[{*?yuK9T{\FNr5EA[y ':aߎJUF'ۧ9KžSh-؆P|aY<*Z= `hk= Xj^s>0A-0ikR+[ƸJ(xC>; ),4z~^4fx{nEF sp|l~XG !8;o;N<|s,G eܣELx"&hvL )cWp]Y!AwSDw\0P;L oD*53<~u6{ON8;/aNtYJNhז QHxX+a3߱6DUX7K$=ef"|ZVSAmR~q'8hDd,6^5# RiFFu%~5Mou3T:]F^2c VI =0a !Ky !u1牆1b1dCYfc~vh߳el4i|Ξhtd)`SC q? &&[dj%ܰ.)H~8T"ocaf 6ez^~j{By 7CX[]G/[95*xwզ9ÉkQLFtsn4am l5&Z%/*dyфpB:B?F˼s[@V7^?Q 9^ ѷ1~8#fB>X|3#U 뉟%x~4-"A|B3QkɵB۝'.i3`ӒcUcEq&b;`LxKx#8ua'}G&Ĭ.|0vzq:Xx2B1jSJA)zN ?'g~wv2t7Vtn2 MKwUi/Ɛz^eEFebE{F(~vLVFl8AX˻P,DU_SURk_Q~[>" tK=k`l”anAʓ)W(cQW2r@`NR"5/B& u?.R杘-yWF5QOeZnzsg`]/aղwGnBY]#3F\X=BPe5M\P<# &8j-ka}cuf:K(f>\5=:ՎFKthkM `̲O4Iؚ+Ѓ.$e5kSY$aYcf̮f,R+ $wX42Uܱһ'͙6u]kf#Zj<)MpˆKKp-05k[Lĥj@ޮ#+;̖%Xy2D1`a3CH::cQɫ4WyfLl'SF>eGg;s8I*A,H5YňӍ a,#bǝN ?ݺw|y2!/Fo}a2!37sED(wEH8/ z5TpP7*VﰳՌshl|/|f`p_0UJ2|]]B-35eG.mZ5n{N[yY.~9cY 6/˨b 0t18!1x@3n[ziƪKR8=+B,# ۰;5ĨΒ'4Yؙc/M0>>*ՠ+Q}/j}poFK~7le0 nYpH%tKPURօ]wHpMk^S@Cz+@QG֭(3v$EE"c*MNqzVle~sdiw[[-<+)Vf`y~]m mmdGr4f;H%1`6quoۑ={g.ϻ*;yX*l/ܤ_,I֠eW<&;bC`C Σg:Ul1 ЧTk7G4apB rܩ"yK%<;eƋ7&,.=Hܟ ܎N3!FI`3I0|s 76 R HwHlX+巗ͪ7cS f zHcC?[(LXIi'Mm &V*B|gzsiy@4\&+:F<ʙǿ`֕m۸ nrݐ;̴Fb H)k|J/&c^}p*YGW6ʎ'Q(DĀ9k\Q2!tjL5@-DbtŸGǹ܇a9˃ɇUE{'W٘a1D'%Y #³P1 <@OT-]0².3qKnCraq~ztxo|p5DMfy" V2&($PeSL'Q5HH9t֯{{\hxYhA{-۸a4גDRAgJ~uzRXV0~ _: \!OIb>g{$vR}qSaN߾#c><2̓=?[S_+vT=: \񇾮. O@tx|')t(^a= ! QM5p:PbC=b0mR=kYI؋b\juN`{lL Mn֘e\T{Ą1}+spmq @Vڜ4Yժ,p؃,F{D*A!B^O .>8੓"elZ3߶6~O o,m#. mDc"$248@ HW@6,(G4횄k\PsT^~Ghfƫ=N dutuI uցMB{5ڡAqr䲜_谾>+ey76ˢk( wO@ϬDB}]uK?G bQFf`#dU|OKKm9ϖҕE}vUYmY'wJ^U[N&sdsY;H W) hp!6'}x%rv4_eGO/6VBWꝶ/dacO8k~_aN +^,`J/<%-ؾ3TYeSi3X7s=9(KcWc6//>k:nĕdd}HR;VCۍ6Gڏ}SC(ۃbfͬ.FgچE0 d]UK}_#Ih~pijO7 I`ۡR3Tn.@ rp~ޛSr"!Doh~7byvh$$%`7&~a6/yz9Ё5$Bn:q:IXmE`|&]R /9,rEo KCd=;oгG c=uYڏ">8)Cg[bH5rt abwHZrʦ5D ,ӳNV|`aD?[wiBt #c؇eǾxc`PKj0@6Ċ}/q" t+a ]~VOMtN]v'0<,{pƭ9z^,p\֌- tALT&_EZL@_S7/YTarw?L<ECOWI\ m C,qoET_&!A}o;QS~J$kDRJYꍕet͍ Vx}Ҕ` A`P []y]b^ TM{UO(tǺ @߉Tּsw.HC "ETٜY.[$ذ {ș\\,&^AL: At>{y}ޙycTǤo>cz*1ysKDu3W M\C/@Rɰ ЩJi29ыɃg߻`;36#a "Yr8vЦĀ'W, b^b4Z )ّǞ\Y)䖏z*ė$5 f̤ 8>Λ&urmW#/LPL$NUS[^R aHFL qrۢN6ZC~a% ,<6W(ɧ_X7G6󩴠R5NH?hvxᏇ5.1aH52: gu1Kc턴E]Jbk:"$gh@-y@B`Wl`x(d\G:(ɉ Zqﻚw_}/WwtۀZs8V;psv!n]˘eQ#bs8UeQy<yAWg`E:Ϝ0hu,h`PտӥWYub&_@:mUTFA,l^~F'Z#nksZr~5."wf)H= ]-x|!<_SiA1q #ս-cܖTUy1Y@|;Vci4}NO Mz2._`0u]:!S(Bd,\&RQijAh{YC*#@HXOs5`>ԭdC $ȭ82#ZEe/ew~_@BlAXVԵ}OpRzDH ]}k^qYr9{랎=dmOa:j>C:% 1}7xW}wYll~xP۩cm:fb3zԒc̅>MS-UV(wߦ8fHUs{ qFL4Yʥq{G瘐6!FgD(H*6 cBvrǔH=&ȣe,2:v =TPKVG:I``5!VO^0?N7o}1T0%:HvհjLC$QEG bMǙ_hr[i#,yqG@h${O\UF4:pQaKox|JqDP )KcX祬$D\tU=T mQSjx:477[G J퐞N 렺rcsJ#ԳYD* "Z~& (rY6ar''ok =uEZL *mn>Ea O ^5DÅ4k7wC—|GEQં w0sJˣM7_ULU2{>7*YQcyTj+PZZEv+s˺l)@e*p[k]C 0g{mەKdXuy JhU]Y (,VNyB&<5+73o RQo6E ЩgrE^,ZӕMg!S Bg*jN5sn/7AjJ^蓏qgE~VS7Ou{p7Cfha;UUhuLQsSo}\ ?2!8 =@8 `@iS )k!@޸ 3B 2kU,f%YƕmhqۯIi`_h,QtIh1dQS'p eٳ#٢75B%?G"GWG(+QVQ^4 t\öo酴QQ5@8z ̒CF9c*S~.J Oer{NEú6q jM^AąA'*xH;‰1(>ͣtN! Pj(S4: 1`s ,p.zPrmNZN)']? ܹ !4w3@\y/lyqD: #~mGLuYN02٠DiLB:Z"SΑ#2!P1A]KLb- MOs ,Xȗ^ W^ :,XH8jL @]eehu#o@.F;-iÓׄ`2/qc+H@$v "$HFQ|䕕DGg·][ys,ea!nit92ƀnqN4Mر~C .0`|c?}YyT9 u ;epUTA3kdЬz_y $BIv@Õ~͚n9륁<<|Δc D!?q'5 OO#~r!-RG_$[ޫDg~7?цj6+>*" zE&n.rD^S/f46ґ#**q֍q"W^/6]j+ct~龷uS)jզOV/6k%%`,fʥݔz}mEǹ2jύֻZwsvW{,HsZ32Md!cOH}D VjvX|!y8#`" #Ҩd.x5o{ $h/<Ǯ_<\N+pڼ>Zώu5~hDf\(L"^E=Gίߌ}n]v\[Yi V"۴D`9O }b }?z#6 "9la9#p!+q?.'W~:7bDnKrzs "€d!p;y~cZMNgǫ$J7v2p }9?Đ|r: [AC׭b1Xb"2p8j`"_3q&<GIx= L^8`E&lGwIoZ"?4P+p$(C8(0tyAU, vύܯD(,r}5A"A%#\'TwtGܚC/g,/Ï0 :u`Aś/98 zq_]㬏E?9imQS\O oLeV<a`Xtm<*uDE+JFEnpG'!eG4!XahpudP.on)cp8Ԙ( t-`qbTb [_٦S`o7vwk+@Qq1%빷^QHy[ռlǧG\30@I0@} Ur@Vnub6/,4}NS%p)woW~_r39BJ81>q?oq:C܊R޲pX,q!y/H9q7"UrptGV61 +WӨ:b*d QE\)5?_dr-_\_ĉ@rT`O6rFa*O/%ws Td&onwrӱf ;z+,%TZpuA:b/] ~_οB;@~"slLKxg:(dn2cLC,v17(gFxɜt'ꂢ4&g?6.cD bZ.S䛱Q$yf/(ًeuMh֢ T+a#.qRX;sU?\8)Y߮6ݏ)=$y  H@AC7ՖfDn?H`u#pcƷRڴ~J5\p`S _uQa:YdQf.sgV31#[NS|yunz_oLv{"BOBXSsR|V [Q0*9AǹHqU̅) k§:D"Wv sZ= T@ B5vޮʀ?>~ې<&{o|/v6J7wEk#s xjxSTHb'uE=2mp[W>u{ec hǷX|Z jF%fW2;zcI/hLg@cC4KUpUUWb*f}P^m2vE5Ez{%#N8!_>sZ3د6p99ʷx0ęԀ+mֆ>39}P?G{|3^9vaTCw!a~G S]5_)A`8?[ē*_ڦ0H:,Swܞ\49*܏6Bj>auy3lp~9:,j4>ukVaޚ` EȃE^#Qj_X4yE"@$m냨sb-!ۖbMorC]vYLHXNn5tz6)tŴu.ߖ.Iigǽk\wR)&M*쏏!Mk Oa :WP5Ÿ4j睗3Ir%\Z琝(]h 90^wm8?z[Av^hЬP\u;Ȯ{+sݡ=<@vcIbw_V.c< N#MpO>1Rnf#c@sE?10"ƉppBp!-G+ AG_/ lƦ7ܜ2E:eY'hLUnv8A "lzyOɏw.caf#D `BVA8U@ǁ_y'*_8g~p, T C-J:Jj>h%/ \ Z*';J8e)q݁u{t+KBɔ5Ӊ+\ uȂ6Mbl^GK7Nw5>=]M/*dž%w!UծN>VrlW~-q;^ɠjtÍ+_i|ȄfC[8!6* `'}ld| 9T f$ƺXRΑF7kf"5# $#>Թ(f8E{Nƪ&&@ ޕW ,N/p_ܐC-.4)ݕ}s&|J%_%|58994֩"ZX(mU(B[,;-3 *%cZ,\LB $=qO^cدA^rIzNkOCRÈLVE+22c !/dw3s:D.[i6lFW9WHbO9>3*kٽ<{ N#G}eA[V&@gJCX7+?.cχv;[fw9&!uwedUZʄdUT +RpKWΠ7@^5M< \mbRELs5dL g>iTѡWb(8)Ge)䣟v븝muG+滑5$&0O睬,,3X#οAc߁D:UYB7$(q5QXHt%y9H,7X:6Gʄ2z95Fm9K/tJ *:TN@ʧ/-p?%^7[kAų8c EYd *c2vdOƙgٯ֌n/p`#PGMd -*BEcxGu|^P5n|/]䣐'n7/.("6ncXl_wZ5/Yֿ,A +<]ahFAH:bT7x9qz"*%Kkή_14eUjzu(9zd2̻Y 8 #xڶb#y{ y=^8+ۼoj8%"OCT` i%y}[ Fڃmr0S{4kN>Ydv4j|j\#5~5]2XLuM-dKsDe<tDor}UlM*6 R቗|@7;&vt.vWո|/nnzB2HNjeH]jx1x=섑p2Pm [͉-.&NblPLaي ֘EaꬭS܁`SG ,1f?) v5lO/V6Għ&'mo&&][U6z*"PA-أWn倢<>h]NMh;[9^(~o^ mm`@#qGuHRj_hGtH_eQXUËժ3 #]AśuaЖRCa$Dl*EާgXXq/EBBnh{oWXmvfÃ&6,8wmAױ#e=nycsEV0|pDr_\9B1ͧF0 Ɋ : ":itd7Lzyn`F 1uoo 'H0CꓳS`\ (T$@(s/eP.Z2MPN ;Q̌!cyOJ&VT*Eá{LA4 d=j1U@˖Ib 3?idATJqÛq#=XR]e2x |ac5n>ZBB4타:ȇQưQO 8DzdОK?#XİE82Dۇ'pD1ALLw<pfܓLordpT׼D{I{@&HTƥI@FwG ̌)*^{ Ġs=E#vA"bffӾĻmW)y.AwDgܪ'd&hÀ*#y2iR^0 ػtѹ1`g.vR盂D ~~6BGlchU,+*Ƿ<:IK~n!"¹h88-ZۓXG--"HYڢ+<`>,}N)$.9hƵTvkQƾsyٽp2!.T]i|3nj ǚwþFpLEMIL=H=Ioi /0:"}ݺ@ڊC"c^" u@h{SB3A.Fjc %͈".~` 95v?!KMzK®_+1YB>C4kss,<ŌXY,Nq ԨfQ>wNfO'>^Os-Y$ǁȖ#3[7'߾Z7k;vavVfc\]s?`!" ־ FgםE+ P{vEsF᪱13yhz; Nk$2 Gcק$9dNR1(u?9G:yP(X4v ̋],'A"gJs!~ 8a',@Os9E9RZv{CUEeUHm"ER/=,<^Λ5|:G^[w4q$1OXT^ˢV#ol$M!H<߁#@;*'3R;Lx `猾7ln7/\=̊| & f^_.ޔКff lYᾷya{8a3Ԋw? 1 T=E ׼mh5;@~; ]`\m,"a0l_vDWȠXKsB`Q 9G/*Dy(6/0Qk)U Csy44iyMDd ȖƲރSo@qh^iGB4IV)Z`\]?Z\-:Z>@nP sQT }@CS뵃[Ct<%EZ,fL!H]ד9$|PK 5w4=SJ (hr]3w=8xZd$\%>ĖM[Vn~ݞA\T=hFN_Au !>P,Ur!3=IgV8' n}a^7{b 3 yS v! O+#ՆG[8pO˚)}!ؐ7-X-9M]}?hw 5R[ɠy$ɣ5]1?\췛vq|Y"-ʯ-I 5zX7m7=Vˤ`e \QBո!=\ gDoOnN\"d.VHy淪UNd"Ȩ,,Fm,D6U`D lagJHO &EZ.ou]TD4@D"ߺ~ 3xѫl>#b-uR Ϳ v-Ʌbmkbq3ߙ(KJ㗍PW7-$I`|@߬~1D#2#bA3xD 7*vEI ҁ >DV7-8)'Cq0C(&r4TIh}:慭 +F1f_8&6(-7%8ko6Bч2q'EDY( .#FXR5Ѱ[eYQ%XHp L|.y+AyO"xL}=;y%泚.TcvűsxgǷY PI^Sآv 4<v}nXTS-2_&aFܒn'3DA zb]|e$MQEDe{.Z;)czU vTZ"#C!6ĺa][xGaC7c-Ť+FCcjr^S&Sp4!>]聽u(R`Nع4H $PkBxʋ 7QjȈ1E!vw0 72u*Xm_&t8BOd\*g61FH#,{^t|3)$6K}'6$BT| GEuV~LXC3yC!DvpH_ = < jM,s>>p+@/^) w-z@@Tg-K]OCRQM#c|rU`X~}W,􍯌Gh;^)-]d<MPl`k97Ӌr>eTH[˔uiphChmG"=iR?7; 6]{/ob_^7@,|E.w?j; @ .d,ϝ߭f۶K9Ǧꇫ{ջϱC֍s֯:'O(I"Cq{gۈs@Mx!ܙhZ-)FU06@0䇋6lp1YLz4˭M(ܚfU.VF31PsCIz0853Ƿ~FdD`+} 5:.84ɑ,8߉IiJptdk! 6pޱϺ|WKҫv^ItYMf. W7Eқ''ٯX +s gɀ,gr7۰B S=u2Ǒ˧7ߦ~'b0!%;=3qְQtbDOɑ,t~*& yb!k+@}Ԫ'K跁O8AKRD~꧑l$}U8sԭ[<͑ok_`|Yrw/hz}d'G `p&"Bػ2YNGy'VW7v:t3iSQaU;CS}s?(y.&eC STqd 15=;G tA S+zP& #orG6[nP/O{A%ى߬L:&ue |*#<^g*0o⸡Yo+Y/[ܞM?ޟ_*4{1!41Dzdu+8"+A_/籃Bn G$A"10A 8ӛiY2{893|a{pY ;QijX z؟~yQߞ'sU{B3k~<ϒh, ϴ^ v<}E:nY a"E@5 3X]]Gh . ,C:+ab"cyj/=8g%!y t5[&,e쾥8g|,|`].sDDĜ[6uezHz4pE@d$@x{)pF&>+/3)˱Z.;O523pD G!j(fC DތCL\xU7PV 6k~9bh9$Y3p8 MRPUG:H٦ƟaoBlPJUzfۍVUDq~!Jq>8.r|^`Ɣ4\j iR.ՉR+>e]DB8 U ;naNߍ]y_Vs_kzN1יݬ<}Ѯė]m@Pl7bQn6 EDz݋menE 8[S{7{(F]0SlC=M p7tCX0h{EdTq*ye~4辧aZ^,Œv9~~Ո8ƫd(>cOvDL'yg_&ys QpW*fW osYa#]9chsCKq+(֪+zؙ]z \`=dk#ԑa80҄*{2djQF 3'萿}oF@8BrP/d5zPXpڈS(T'[6xnxHSxѡ@Bo`dUT˝ү[M3JJ.t eIuJ:ȡ2܈j/֗(QP9YX6V#6ZLEA<Lr-Y5a]7 Hw%챆G@oG InR6{֕.@]`HFPO39.&P2'D{@ap'wpQph0Z -zw\i] w~"AHؒF (,$KӹMM"1˷v}HF߹'WP/"𧥠џgqc>{czayB^VU\ojr4F g^ ET X"t17.l]ggt2`^p dTE'@L(ؙJ wqDO HvzGmMIkcY#]^؍ew081Fin;VEf=u:3u1sw[X5~ {u<4[o%Q 'w֊~D N˅4`,C؉.{뀬+!ImW>o08GW䔄8;qPGn+kŹcq;7ufJ;ȣ&0u_ g Ezܐy!|et)c]FU]#bf `, '6c`r"=^{` ,Yp:t`7O iFoNF fCyD6 d%;XEO7R]pF8ʙCŻF1!:NhfU/0Y ˈzx;ŧVK0O RάHnzxT=`ׇ:RxwWNk.r|czo_[鼤u'4|EcqMSc( Vy"mZ{զ6|ίdK`Iƞ$Oo1Tik@a̋ #Xȣ6䇽,NGOơ/Ӽj!+~vB)͜Pfi͈ޅPZp%$ CH%pq!8OpnS(bck,]wY7/7{MrFʰq%ڒ4Ps+Ourybm zf$cu:X{ƨHpag xys|zv;3sƟbMx@̓nwc\FjiMAz/+Uuo3^ 9ww'Cu<,Ф j'"f?LaTXl4{0gLC;TtHzN@zDIIӡK<]gF|}M3܇}̎~t[ ]I/ေxftv^7)qz0`sI0#gGB*np Nȭp\ӗ~Ķ*=y iuywB$c3qqE;5ZBL8`^lpF,)yr9δC'0 )^bxZWccsx;*M#X}Gz睸ڱ>pF-DCa\q;+紴 r a^M}9NQ k֏V_Μa@/׷= ӮV23Hm{ϗ<44P׮/GI7dzĊ,Jq=uPωoٱsd WͭTP1\I;a.piƹ)3FU+]ިˌla7Yr SM8n)߮Vh2#`@S܆7tY]̽[E{C^L~; 13U((G[ţ?-j[S`9x4~cDQ ?I2zJ.E?xgNcBgZ%j/)yksa8L;W<]3p[d8u=W\30 q2~`oy$HrqDe8Q<~%}5Z"+|QPta*9N #.uq2O1ˊ|ʊ!4$Ø`$F$Jg6 @ͥ1_͉NBͼӓvi`Ar fOoefэGT 2CQ]@JS")>)lKKubc_&aTN! Y PF:`kfuOp*JC`"q-!4ݞ97R<ɀ1׋m&XԽ5X̙̹l2u&skK BR@"'wʯzBClv"UIĎ;Jc vA4c]ٞ?N3Ӝ|c*GA_ό!b'~~oW5҈f|xmBܢ8`6;FPyݜ4lo $"8u.Fj>Gq#jZ}+BXB1 tf T28Ugnh2gs /6FPEt>^Gƾf)g?cvH!K;H&kտq^0;xiC˃2~Qs;pzl`(CI) GRyZ=B/4}_x|m-F_i,>574,=?G!8^6CE!so$p=Q}ZPk4%\ˏn!E@J_aw]htq(A A@{rE7?9 \0xL`&]!%1}j XS;m5z8C2"B|N܀((}zE_!ySQB2V5rɢԲoSĈ*H!EV%RQ,DC .jntM/[,%&|47;I"x<IHh5WxB<^m8C E&_7\(} Xo0~lH1"_gʽ2*-Ya}Re QȢ`t@w GʟK<^mTH T1NY??KZB Ze4Tu뾨F*]x lN zhqt(?A "Y»]P!9)}l8}? ZFVpCQb0li3u~-ZMl2+8E5{W^hUǺ@@L`A]@:)Փm}eQlfZ eue&ZP{Nw7dx~A'.L A3Az}\~>v.*2e/3}s̈́X8:fQ;l%;f?!DxVk$zlW.  IКݥFL08#d2Ez+|9"m8Ĥ+5U!fpb:s/q5 ^l}ĎJۉr?Mu H5.?Ŏ@nj |Bݣ kn6 )1) lzg-~RxOP?@9{~ uӳmVsQ[r8ؐ^C !L͓ݦ} Eq%+P^g`>hCͼa\p@Bϰ_l~_~aWa_4H_HC ,qvmfL5o|MLVF ?d)8bfSc5suF5!np!u,g/?,vpj!>7bK^0t*v2RW۷1«:n0hLe.~N:8o` C ߴ$ A LRy*K׻#:ݓ 0JIl"I$ iەP~$1-CT:fk c - ڡ-G| Ս3/Z]zkvk4'hްNUNeA ẃ@.'TcZ }UVWz]2/j`8-P}#C%q7VE"nkde'@F7_b+*{jM kh3;Ramܠzݯlņ"u Xszv`ь/ԌnT@>*]?l\};O'񯫀42Ad4N&D>0 1 oqI HljWx)Ǣcfa+nq?WA^pe.nI }x>mQ/'Wr]ʯ]myƪh鿜+ mM-nV]/6s}Ǟtq;D(׌,d}Cή~^ JQH18egۛ`z߻q\}D,wy*,{cײ_Du( `[ Ånj;'b8XpVx%H=i"+r !Tdj 0`k94 ⑸ V 86h [#iIRvd,i},c\+H;vέ #- 79G/g>?*Whٹ]mRMQ淋)KشBTnQB!tF h2۫(۴l]\&GvTzC}E>ytF!b?R|!1#X ǥ@ކȒ@Gsg۝g׶{V1 DI~o+z1D MD9OP(Cbwo   D;uD"l=@ X#KgoL",g¼+c*@@ɏߨ cG+^+W]}~]3zAw>}}ҁTyYHy)+2jmQ}?52 /7}?V:haWC᥃lQ؈u\Us~aVmKHGx訕ZCsooez9őψhB:u%s9ڰjngy:AA[\*g=UQ2fͦgy$2i*vG@wp^ƧZ5fCLOg<h؏R &&OWaX÷B&(??Kl5>B @:.QJZ@ u%Wdye!YdL"3 VAM @PSQ/yuP'+ED5Kl4Tvz'ꘇ5|]!rO2n?O=jK $M;r8ŚDMJ T~O;^С4;?ٟRd?yO$QTUhP~Q@ƞ{[@_;|'-?SRāѧ0:*3 @ퟦZ WWmoƂ2}-y+HAmHGб1j}o[y6;sz nn+*msE_~lj͞ `H$&\2&T !U8?ķ d)Uݚúл$`P2%Ǡ{6ۘ}ySz.-LY]*,C>ˏоtiA0[,̷~;rؿC盇oHsA/9u`b@lx[ٕ9'+sE4¨eOc?OHó֠KOqWI9CM翀3UO?4GsNfR7[:C< dv7 Y2ȋ<Z7.bcҀX|~wܙ}$ Pt!x,2/PD@X8sC}?[x2eG]d)Ns~k ^dO>i{#;0 Tx)><3}2Hٹ>H88%+-&`qs1Jxb4 )Bkd=WM`麲?D?) zFLu XL%ɷS i\6='ݙz8JԵ\5g> '_/?9 &B4pAlU~V]/} z?sUI4P~~aɞ2ѴzpwHm`۹߄pai1iʧX(O[6H\[@6qc|o v y~X?wߧtX\[1??;t2tQ?X,pCTKG(ot +_yW˕#̡}[G mApE_8§&ח3iBW'YgtĶǶpzhMfZ\@ =o es?qUQ[vLnQnC chnGW'8!jrЭb@㖺[~/fчS ]?$2ľ \UX#k?;gT 4e.H><)+ڜ<]0w˪V \vs忡UUR"z{[hjc}zzP>:OϽ˷p?k<_^]ՔWg0*ģKGW8⤄\=!^5xϥEN7Y,BVӫM? 6K}f Dub_۹MUCgmﲹ{% žY zٟ}n}g-9 <ź7V6ej=' ŗHfܵ.=-r|׃bpLFBoP^>iřːlmxZQ 3=ο4|\wM"6XIrUqiNsl˼=@e}7:i>G?yameUܤ58Q*|ݜQzY,n[{5R1DUM xP^=ks$=W_B|Q"!+dn oᓮF*vt59nrm/Y$w;YQi`? jc0N7(:1.u]Nܗ."?[=Û12|Pz6Ֆȇ\ oy@W?;@!|p{Q0#7ۅ;" MW0eS:}{t@\_|C%B!eb.UqXe9M_bd W]?C! {v9mjul! -/џ `4V\v`ͬ,'r}oۑ ހD C0x.k PduwLᦕSqI@NUL [`o@!MSDM*$Fbhٰ+'5e#aK|/VvB0_eΞ7]/#>y8Wd*lV/`,۠KYR{AkB/G?.,ܢNoRQt^#W,eag1{3}P b9Ѿ|K1Z99Vu= 6MFel,Ձ.ȳc(://9-=#5F?v<j3Liu1"_,CxIq_(~(b޹ b"xyru 2:bVRIQ4%IQ B%Fks@yi2*Y~XQ;;Wϡ]Hu#A-N`釒a-UwvYDtuO:>}'?6^8DI#ÿԪ^AM9Plp|^]kTGA(3LF| NȽEzc-/<-u. NOXTh\|%~g7PR4[;oM:/Zq| m^z/8bj>b?S OНI{mLZ_46J|"`Z o*Xy' jX([ta}#(8/j1i'[oRS+eQ)BۄI4m-`75͔) 7-pU4\AGfO8*:x8ȵeBUoa4p[M~p{u6Ջdzht)`TUFq,1T}%Ga5c/ 3wȶYNp}uFCuR*RzM^.w$4Km0jj !|HXG͛dD \ q^w&3mzr`+7*iV _ wR'5*V[;v9&uriОFpZbMY7+?e xYjmIl65K}6ުH'w+ ܃fAKjrH/ iZZ5xE)Gpc]`"\?iwvwp+vqP> uKwBP%?S3'y|7Y9D{dTPQt˺:"d2֤rC6+P nXB`vȔ_Nd|8 H ,̒$)N|<ǟ6OwS]JA 4BRHǦ FDF>7@oyo=WGԺ#H{驫J n~o{uA[a}coo#fo.:mUa#Zr&6UU7蘴to'OPY }j. [ǩ O$IQ? sa<$2st'?7}ޏl=V:)P?h۶F 0OͿYKtǀ:8Of4ނ?: \+7sƒTNT ~\֠~5C8i9 z:'Op~ao4<퇥ּ厡AEώ;za-4 Ǫ}r<MՁ m_-D„Юj톆[a7mAT`.7|ކB@lk:ޢu,c 1J! -@ p-hlBMa ul6E kY) 1 U e˻a;\*h58 ŽYyAn(ϭ s#$tׄUÐkK1 u֏½3]$tbJQ`$5iGWC?R-[EZ@$ DwMPjR4ah>IIJV2&Bη/|_(E}r<,ev\y7c 9;m6|QkȮkqbE]bȈޭF"/؊!CS阜zٙj/cGt:"KHwŠL}57.m6-02 0n0Y{5mvtGllW9;i :ՄYxd٠z; !Gc7VcV6vQX10D 2+V4dr(p!kT$+h1SBU=u Fқ;<.С"67K/')_iKp%d [/6qeꌀ wJǯ9"S m\rH C4[VCS^r AHyPi)꠩zƭPY2D^e Q*G1$^GۃZ%q6?_ |wB'?x(֮lHUr~Ч;w}-|[\uW|YZREF)3넴R\DWN8T]JuTdɃhƾELI56ECBH`e~t@ݶp&+M#^f-t52 08_tm7qnv \ipSOKܠ}=eXAF3w-芭}rRy|oJH6ؾV, (>pXI_'uPUWR.F/Wp@9y'_*dёբqMu?zڳ@tZL` ?hqʏZ~|og(}90jb>kJUb7aYYz:.G&=9bCpt5h8`w/Xqf #) '\wcNİsb{JD1Quc]۵TQ6q/_EFmfVl .Cvw|aYa02L4\ٗ4 윗T 9c۷\G}BiETNo$&NT\,WzNRƃY{M9C6J }lᢛ`5MEwRI'9qw& cT ;6186p*i<3K`Q{yY0O_~X.ކ~^ VyXvQ۪RשDouUO/ >EB `b6v͎MzC 8L҈!QO{c.tdkka mMT3:;̱'T|S#I^3_ÿ+" ̓NWEEwW۶! A? pUxXx&X}n]^w"0s˻ qte|-2S{JG<.*4?麕NJ=>\Uw$;„Oas}:/hQسz?\_Mo?рAaLYsY"ZCMH>GeA~TÝg^]oH^j&<*ο?lTGuZi>7ӫ]ӺGz, w=Cm*ZY\(I=aU;)o!eR"hg}δm"4~~kvVjCβO~5f1*>ÎyUK,new=f(g ^?5 WT(lf%Ս. :~uv'䛾L-zAhA>.W }qak{yY9YJ }R皈Go9ճZ7 s8_1n1WU*6>׉DL_}35v誝Es@^x(1ܩ=/B%|$oo.E{öW>!$"\=KfH 5TAR'{>e; hp @(oTò ѱVVT6z B.Z-z>3rV3уA)*5 ofk,# ⾺ ֯89Pf)BݓýeXZP+e@;5/(~#6U%2:t4hBwtd,ٛȪjvs4iM뗕Y/A vN]wXJ EkJ~m.?@o*"r5GoM? '`ģ'BW]fB xkXj̢~Z:FMz&Z̖ mծѴ(j6ZQ;^0jͰ$Dez2 `rq;