summaryrefslogtreecommitdiff
path: root/scripts/Makefile.debug
diff options
context:
space:
mode:
authorNick Desaulniers <ndesaulniers@google.com>2022-11-10 11:59:05 -0800
committerMasahiro Yamada <masahiroy@kernel.org>2022-11-21 10:18:39 +0900
commit9f8fe647797a4bc049bc7cceaf3a63584678ba04 (patch)
treefae3be0ef12409884cbb1230befd66579b8a0a73 /scripts/Makefile.debug
parent0d2573a2b7838a4f6934c2835e6730b38df4bcc9 (diff)
downloadlinux-9f8fe647797a4bc049bc7cceaf3a63584678ba04.tar.gz
linux-9f8fe647797a4bc049bc7cceaf3a63584678ba04.tar.bz2
linux-9f8fe647797a4bc049bc7cceaf3a63584678ba04.zip
Makefile.debug: support for -gz=zstd
Make DEBUG_INFO_COMPRESSED a choice; DEBUG_INFO_COMPRESSED_NONE is the default, DEBUG_INFO_COMPRESSED_ZLIB uses zlib, DEBUG_INFO_COMPRESSED_ZSTD uses zstd. This renames the existing KConfig option DEBUG_INFO_COMPRESSED to DEBUG_INFO_COMPRESSED_ZLIB so users upgrading may need to reset the new Kconfigs. Some quick N=1 measurements with du, /usr/bin/time -v, and bloaty: clang-16, x86_64 defconfig plus CONFIG_DEBUG_INFO=y CONFIG_DEBUG_INFO_COMPRESSED_NONE=y: Elapsed (wall clock) time (h:mm:ss or m:ss): 0:55.43 488M vmlinux 27.6% 136Mi 0.0% 0 .debug_info 6.1% 30.2Mi 0.0% 0 .debug_str_offsets 3.5% 17.2Mi 0.0% 0 .debug_line 3.3% 16.3Mi 0.0% 0 .debug_loclists 0.9% 4.62Mi 0.0% 0 .debug_str clang-16, x86_64 defconfig plus CONFIG_DEBUG_INFO=y CONFIG_DEBUG_INFO_COMPRESSED_ZLIB=y: Elapsed (wall clock) time (h:mm:ss or m:ss): 1:00.35 385M vmlinux 21.8% 85.4Mi 0.0% 0 .debug_info 2.1% 8.26Mi 0.0% 0 .debug_str_offsets 2.1% 8.24Mi 0.0% 0 .debug_loclists 1.9% 7.48Mi 0.0% 0 .debug_line 0.5% 1.94Mi 0.0% 0 .debug_str clang-16, x86_64 defconfig plus CONFIG_DEBUG_INFO=y CONFIG_DEBUG_INFO_COMPRESSED_ZSTD=y: Elapsed (wall clock) time (h:mm:ss or m:ss): 0:59.69 373M vmlinux 21.4% 81.4Mi 0.0% 0 .debug_info 2.3% 8.85Mi 0.0% 0 .debug_loclists 1.5% 5.71Mi 0.0% 0 .debug_line 0.5% 1.95Mi 0.0% 0 .debug_str_offsets 0.4% 1.62Mi 0.0% 0 .debug_str That's only a 3.11% overall binary size savings over zlib, but at no performance regression. Link: https://maskray.me/blog/2022-09-09-zstd-compressed-debug-sections Link: https://maskray.me/blog/2022-01-23-compressed-debug-sections Suggested-by: Sedat Dilek (DHL Supply Chain) <sedat.dilek@dhl.com> Reviewed-by: Nathan Chancellor <nathan@kernel.org> Signed-off-by: Nick Desaulniers <ndesaulniers@google.com> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Diffstat (limited to 'scripts/Makefile.debug')
-rw-r--r--scripts/Makefile.debug6
1 files changed, 5 insertions, 1 deletions
diff --git a/scripts/Makefile.debug b/scripts/Makefile.debug
index 332c486f705f..059ff38fe0cb 100644
--- a/scripts/Makefile.debug
+++ b/scripts/Makefile.debug
@@ -27,10 +27,14 @@ else
DEBUG_RUSTFLAGS += -Cdebuginfo=2
endif
-ifdef CONFIG_DEBUG_INFO_COMPRESSED
+ifdef CONFIG_DEBUG_INFO_COMPRESSED_ZLIB
DEBUG_CFLAGS += -gz=zlib
KBUILD_AFLAGS += -gz=zlib
KBUILD_LDFLAGS += --compress-debug-sections=zlib
+else ifdef CONFIG_DEBUG_INFO_COMPRESSED_ZSTD
+DEBUG_CFLAGS += -gz=zstd
+KBUILD_AFLAGS += -gz=zstd
+KBUILD_LDFLAGS += --compress-debug-sections=zstd
endif
KBUILD_CFLAGS += $(DEBUG_CFLAGS)
QKG4共:e\ͮ\isI_'h|ϓTɆN`EɢjUs{^~~7q>6yV;^H}fU/uxo81[7鎻ԗ\k"oT)Q7U҆Sl Ѷ`_mpc汱U\A2siLj#ViT5V&YBg{sc!@/\+ vsc|͍lt$/%P]+܀,/ }!a}bؐ!xf B#V`8铦a9bm @WPy R^t ?T)]9qCцBc_!:ᙯ z`X;7*C2G2f $}B}$ N%3BThA^ǏcBmAJEU@K`;G 6x; DD@$qajФDhƂ"GͱmC h{)أ~>~HESzI; l' xix[g!g~ h>5]n2.%pﳮ6eUD-+xo6espcrh0k׾[m$9}$eCljv;] kꖟO|t e_5#Ib!SeeBGks?</:O/PB°s!FNQ_SOYl;whh G wcۓaZUuk1i~aOJ>οOxT`Cpnq{J%[7Yf0%/~d{l}-\koWNUԲĺfx;!Hr{dz'cXcn5?o+]Y_X^.:G->Cwv6.o]%CɥD Q-Sq\w֣q\W:$B tRm@umT `?OwXy7V > @/oRɃ&3(">sQ0 $<'<@Rx8yWb |ag:q0_OlL?n4c⬑vmyݶ?AEX#`UqׄF*2EX#`F*d Y@U(+v+yc;ȣOګm[jmU[mlqxB!(5-43Đn0m62]levcu j&w Z?RIw&+q弮l93&XII+c)YͶW7X )= HU~}]]^4Ov_O2BBaNJ_}TɶHp3wOnhz{h \~XF h#j:$&QpʌĂ[Rȋk1@\CC^23X>[FPk8ೢΦ].CҌe& /% m:V<d0AR Nj4E Anqi?nHy%a$3^CϮ38;_1-0*H0R ' 3>azΏy^d1$ԐADLA2KA"  c$N~q׫;(6n'Yg. @TD8\J`PVp=ԙuB NdY~8b'CO&8 Ɗ8]42l(%i?:͆rm`A ?\ʌf=iٍe*@<444 N=di|XȀ~٩ : ղ]oѐ$VF̚Ew8r~B8WԨwbC,bz֖õFAH b"dB߷}SJzA|GJ+J G#f=m~M*~^w&M7טA"aʣ`w, ywZ  r-7WޔS N96b D=rY%X_OEcaDyzCLJ\g׿Əի^|/{$μ(9[3a=}\־h>6h\ՆڻޫlGfao6ݢtм&=;y< ]AvNݡuDrgod!X9$|.w>BU/zTkjO^ǰx6=6vqbcM>dOr@ùZ;z`Ar}sW .be}by=WĿՉelzth/3snW(!n w`&IKG4;>쎯Zi(@I(zzsW2,`A;og6 M_,þO2l_9M#у|n |Vt <Q胇Wu@}_ϣ˗݋-3|oka_6H$RCN]y0׹\xiOnsPTPiG`G)#|1S7tN;ǫq~u`*2zFjT>x$/O<3~#p5Wzl& G?ˣ[+34t7&P[bγ\ 0ӜRM.FUs7Vӫcub{~Wbm,7&! .h:0D2PaD5Ma]rPO! ґI$nV۲1t5C ߎ ZEcP$ q⋁F݌٠;ջ FI4TuJA4833JTR)6qƒ<ˆ^@7P]')%2'7ʔSh0( J,2@MГlyNTȒ4wKH@ѳQ3|B:':Ѝ \p@IH$DP%`B8pFmtct.Wwc+56:Q'K >H,t_4tuDH7[\/s^uyy%1t14hgtG>B:TsX +m`89 KF#Csws໰CzKmtTz:pG}]f_?իkm/!0KmED-}şᢆyjaH'>-7Q1!up =^wE0s0Ǒ:&9%,< t0l:tzLqlSo=.kLd~N{lܯ˵1EXOf%X9J+! /EϪGBN~PߍJeݱ}9&i7ׂi$Lxk8Ux^n" >u;$0kC4{ trtdK&$: F"k} Wz\2^u9iGS` Fo(OhftSX< R 6gD#}v3 ?d/3}o]E_ܷ\S$swL~-QWn"7k}o&m7ua+f 4aԜ8#%o^ˆJ?VezT@$`gZhtSH81\}b3Q"=ӋGc  W/sۭ|Bb5P297R^hmfE R4@ J]~ټ Be)]3=+PexGDM' C͎'$Ǧ@W=B;,)6aOȀ,Dr _ō` Fbdi#\:ӯc|>jǢ(>n~2Y[C_Kd! wt }6FX:9e٧NPݺC9*L;]tcR\uZ8ᔾќ:x_cהQ(N:ֶXtv}V%1l,@/L#H珋[5  lR}p3̔e}=K~@%DGy8;x|'6?NY`Z&{gqLµ]afeE*4i r3plhB*̷:tQlHÿXE^{N!}Tĉr .@9JYS@סZf2T{Rܖ.Mܕ\ x {oLc;  ҌIX MYf@P6m\tSA :XQ8%G(.O ?tc8XGP'b*F)7G өɐ 4y&fەުb"vu'>~7Ke5\:TZD]T}ޖȰmVp=GUƍydwOgr.c/s.M5S~3g6Er.XzU!DXټqO{~`]|0֩=sb;FGP|u/ҽeKTl!(64~? c߉ Z=T-#RyߨtXT9Ũ%{y8}R0H ʉp [e):/a?q|Pȁ[0aEf D}ApJJ-VbH4!Rكetp}n+qf@% 5h{^yuXG+#Ϲr]~ a7wEi' 珹x[/Vg;?k<=Qd%蹣4Wth<@spy拕b0 ^rܽYuf97d1x[~s-϶npޱ1pk|u[Gwh o.q̉xޭ\O:]+!K~ N4VM#b`Y-BXDzYGp|ݺ·N]O$#gۍN3^8AZ85c[H{cnlzqI,<I\0rdM3H0]/{Q?() G'yhQri| /׳Dw*8L>Nȯf%ؿ#s:QQV**I/uO#鹟|o5g%E'x[iNQyӺ։rpdCy0aJT܇K V=^g.>DG_up]R3F-GF _ϲ(RjoGs>T.z_rG@RA:zu|?˷HDt]+2ĮӰ [X$ 2w_`+޺^YD7_nsrsW^M4Vv 6m\9dke|/"*_wyx Le(ψAwa˨i96jZY7ޝe@r<ο>T3YiEyx zgN ܁^H LaFEr 8K9?7PE[ϟu.~MpZk׬>&\\n,"++IwkPhHj0K-z+\@?-Djթ`,"?o !w auiY/.W(UFAպ6>can=!BU}3gQW Bo1cT4ETv(zosg1mW>:yR$PE:xXz+'sk3q7oE@`UOd/y6LhFN}J.n:=-|nQ G,DT2ۼoT?VXnll ^dTpw~: r ]0' kJ ԋ~s|PnIڇ 5y\ϰ) \ڦg-}!Mj6M3" Dx%3IqA(xQ_P.ǘv4cGf6(xa79_(Bp:3Ņ{kxD 8!A)mY]nQڸa ߣ:%y âΗxi7d42etG1t['4)!!?S~d_e [ Y֟G/hi n酦Ns[PoB*kaE$GzT:̞oH r g߾yBVC`h!e+T@ɔt*mV[GVx9۵: fC }(ѽEXAMds\&E~7s>߯2 'F=Ok쮴G߻rEյܺo PR"{lVaMj"~aT9{6cĞG'ף --zj8vls CڤAE0ה>*?h>Eh&osUWPPu~AvG}v|A0ңM`ɝ"&)xXp\nGc=BEI0 6_>/Q9\Yp a.~WYN*WPQz_MNA#1pȌ\tn눆dzzAhEzA@i LR5{!D. ѣˮJj6I1:4ĐVml1)(VZJ+:68^RZf@l{s "CRJhZ/!tJF3XaU7A`,J(JՁ流zn(=U(CkP70㶙+v`J/˄WR*7Q*"')uv L+ŋZRB9=Iwg!%@,[#>~+ekSW'8iqIo7#K%ܖt2|v;b(F%} ^8Jw_ul.9Xw@O|+ԐA ᷛv =._͂WQ J3kn91F G/ bb ^ubnX PkKu!'oԾv lD2˹m*+(m#Eu){5{WGN5x9Go9v3RIzj-&c%T)TxXP|`|j= {2˟IC! A532Up>[AE,M' 8pMdŋ:fd<\$BXs1rN:kH(ܬzd[hP\礵nsďOm~)شHqS :gF} ~oN6 (A]M:^7G?dX"|D\vMە>6`Ŀjl#N qQdU= qy9fq2Ƅe\pGL ްB*pFx|G+# V`yiBZWHc.B9jX 6b/sR1))JK Wo@3>7o28AXMИrZ{13k&w  XCw6W0{y7vE>KTiZy14@{ g L?[DW} >Rx/6^ FV`b-axIjt\- ^~4G8X`ڕ`4>ta%JO|\ :A!M 3Fˊ^4>]LhXd}2w;$9U( E&MFPȍqSӾUNq#"^ Kr[τa3j\o7 ] ΚL'v#Cn.| KNvGp3ϟ~=c SrRУt)'#G]cټXԗtEh @B:lFh.[]KjZB@*/ }my1hkҿg?xLǫ6=|{ ,;rfS0c,]0qP3^U>wc0[ESU_' v52B*7[l)*?]\#=x?|fa"վݟ;9޻\^Lyuw `c<bA!a0,~t$"rOTT:#V,pw `;ޟ_nˁᕉkiWnGGzfzs\cQ*>wh.}?Vow~vwO>o |8=Ng;Ts'k8/W{m.x*=2WUY8 =N%{ߦhѼeR.R:/ '862ٗV3Et I)"|߃_gާfx( :* z&L >i"eup"db3mZu׷ksRks*d'a|>m]/b 4l$r,/թnv,h#eL^ 6B,"} M$5{x>XWuKÈ&~ 5#ʹ(ES ݌"o&3_$AB1UQ'ӽSS 3k~&/g}g~5};9fCK0i eGʝa&6{o/A%>3R!g%AP(k"P'G'olV[do'Xtl"hmZ*SW~,L7^x!z'L:w4t繆k195C )t!`>'(% py]2?_\.{oI:D g 9Q,Ru1Sυo@菬JF{-#Dvȩ}ȏ@3պwt˼֞Cf\X+. jC e!-QC[r2A1gt3 _駏%ZҚP83G25o{b4ΐ= }N;e >:dQi.x ma6AxP5.2 Sms,oxh̀tT^-Ci~0 q􅁩,#pO$c{?/#S( & `ӬR}p1JsHB+_܂xO|Mv ?rx׉P=wD5Y&v XZl]‹\Mcl{D N8Xo-.Z9\h),JL8$̫7}}7˲{X}(5IH 4{YϿ,*zee@̏fzr"P˘\6Z}/s5|WY|VWCq팽/P6%>c Wn`3i)>v%5 O~+qZܝD $Nw[ŝxY P;~D+7#6a'0,DsqYP_!m`(R;mo"Gs3([_t ;:=@Wg+"cMEuo$Hcqw=X,X~3Az*;Gc|KD6Rx q5M HYw# Wrlck%kk+Qn=rdzӷ V  ?2v*zm]hԲA΍QS'lrx ({Z✙ "!;JoعȹO, H.' Y߮OkS#= / oߺKA1oѥP mj #;ٞU 2ӷJNK9Mg ]" J q.G'6z -(o Y.ЂNeH&~L Y!"BY!uO"/3Oudr.s#z7PmK2$bm;_]MoN7K}uhUC7Hh yX@]ܙ.7,FͨKR`a7eJ 13>VIp0r X gwv=AD%Ip- tU[yocݯHt:@#v­`2ꥶ4N."f l%| /rIu0dIգQ_b(#?pqH/m&D)qC ('a}Sp 퉶y[p=y!R5$& @ c<`^- lok,S=Tʺ brMIR}p$(PvAJg+U]2kdZjdKP anHGǴC89b ~l[ ;|][fI'z=ӯ]t5q| P[l[s Pᓠqɯ_lZd;;h1aK4T-eL5^Ϲ,H#򗇒KwY cǬD(7LB&7 ,h 8K IC!E~? MP #u Spr2>UmL6)= ^>* Ol,MwyQV==|;3~-vXVXY;)[iX?qxb|otV͟D>NHu4lv%}BBd 4,Џ9:~jʚ&|:`G~2kIXs}ŀr(@|g(ՓSvrVPvwQ(5:NJ~W2B`e7ng^{n-J9#V`1 37&⌡SAGHũ"<8tu[.WuWdjmޝN9& 0гر"tW R\ѓ|(s> qYs QV@,Mh ܇ MTVۮT 7>j_/Yo<`Xc 8Mz{\ w!;^NPldß2f EE0yL-Ÿ́9ܬ=Ok +MrB,:M 8'w6U9M'hqPD#aFkX/ W s9]tϏ+H>KpiW7|+wCEr"xG\[CvaeÈnG@$e)/ԏ/i7X:zN$diݠCО ;wA;tQJPVd6z&0~npP:[z DlTmϞ%}>1ǭc( [.ZENJ0.C02 -OcRx5.5wn t;0$lw΂"aϛBÜ8&zv 9ܤ6y( c [hLZ.mJ\3C 9VF*+l}wZq.)!¸<˓;z;ﵔVH0U;ܻ35ik*d@t1+?,}^&Hk8#Md߲ +q`r B4]7|.d}38жA9`HBE\pCp~Ԣ(DHII]U'{> fI:JmջaY'}kU ^gvaS9rQ4xx-b֖P 2R_+R=ÿT IE4`РPo\G̮G ]i̻Qu_kmx;mz+su≬% $CN )os3iV QrV;gazzYK+|+IfF"7p>S0u⬔LD"OXM%_R5Tr-YL^HkO(}>QB-D ೸'k\Xor=DWr3,&K ׆9ߥYоճk >eG^%MC\mG2'G;h/D2P[F`),qK-a@ŧ0מZ=b3UiRlӱzY< wpȐ$=~Вx; g{r :!'kK%աebm|uP>6iph'0\ï0{plg8T9,҇`P@sT%@@u<8O_kcQf2FKfju+e[˔o;v{zJ:6MS~xuSc1f*#g{h&45bǍ <#VZPź4Wᡲ>XЀ DD*x̍o*F|kwB࠵y"Ⱦ;@QÉeiY^u|imWwVX!<sPb?tѹ|[%ޫ Vm;CL9}d ^+;qu,9ff!v+{|šŐKcF|8fZ#G欏`/Ӆ0:K=8~8SULQxbDTy:;#ì]?bgY2d8YQ Gp J5}ꪣ%ő  uZ4%QM4Anƴ ;Qpc[.:LIe:sw,ch9M2A^1D mY%l˰qM!ګwWwb.kx0p %jʍr`Z|0ɗcͥ7tSN}Vxy*Q :68>&~r4IE t}pWex Q0WumY%XvB9J.tr'ۦe`CcZl>;:Qoʩ-\꾘K,Ϟ~Bˆ9t_]ɿU;1`:?Ogjȁ޻b؆yq`g1i^ }=5>,2.#z exq"b6(y Ջ++i6uX s/khEDwk >\cr9:(Pp=D16ʏa~3qkOJ8_m2ա \hbYcKf#*ν D|cC@(W%{i|W^j+g$n1:bs̎EVH]o KDݪ H2f$0,dxbŅY% URI0HItd$18XTj4nxH3m@:Hi?F{6kX2 }s/Da,3BBaoq^x;I 4B,BDÌ9%K5 #?Fl`qC\|J斯?8+0xoٶ]nV8Xw˽ 3&j#(Od0-{\b{jjXWU҂1Y*V P)R-, q2 +kZg>]?,\m (_+_g$YД|wpy0ś}:+1:Ep>"vQ,N;7կtEZ o~_mSG0M^cIZ=]'.X!4QEEA+TMzEV vw"m!]ys܇wM>WBx@֔s<+ɯQ((9ҳDPwQࢡTgQ@.S1 !Q_̠Nrn^Ra!rzى:w{ޙ7.4) F'WQr=c}ߎv tM[nXNM35*_cHYVe>tϑDk{ Q5#~8Di"dH/ } BA'Ĉ—t?q$@XDκ:7zx!!"G$ׯ7ͤRM@<XC8X-[b"C-Yb_| [ D^2.*FN^0rN[b1=qҪjh7d,2"^},dyw5pIA;dW)*K7"!֘C7(A5췼)Z_[8NWF4$}>8x5QV[ncw c*:9e >Mfծ.oiuH.H^81^ {ӱ#X4LڐP63}`)-,BCDIPcQt`ۦؾm U-.g=M*LQL*D7p I53wњKR(T(UJM)1\Tl"bui,_B$%uf$ƑJA8z\`7m~n 4hs:D!y˩㉑*C}/辙N6eoF+ST((lFB,]jiNm~-D{F`⊾h*s'b3yzE(Lk{D|sR"|%]d{MOpfP@;wVo^ !5]_+ jHPQq+Q65Z{h logI{"#gjyĒT.4# cTp QvPBxgK#KÇ/#܎:SVgv-&=3dR$909;cbȁ IdɨLCG!26{ԃU_oo*a70Aa|՗r``pOt$(qɈ@T|b✧_9@9!1(ubCF&]$̵'DɈM$ҩ|LUڎERrMwou_M} zeޅy唑>ra7ibA@Ǻ~W8Ĭt"Ný$5霶Sd"8SynW>?Ѥu/h=ܟ0XkW xiQA2!2 RYs:`f@`T, ~\?[h_3غP>t >8ӎaO<M#Ę:Bv=r dUO 9haugG瓷tT8ԖQ{7T2wENo|uFGЎƍKr6g^&߾$%j^{VwN?;~Pl\M^f+1Pwꈐ*"P@fh=i6HY ;06丧ZFr,BX2Xބ Dd1 ~~ NH+wPk/q,`[eޮ [YACFdt@0"'뭌 R:Ҁ/q+,~t| ƋPN `КC#0a-55n$9}n2Y9Q pl:n_$<0cl:m'L }1ټ깝%k|1]4@!n+E-Qwl(Q>!1{cf}xid-j0 IH}(E*`5:7s#]MaXd(t~|1g1c6PPAL}riiAWXWmɬ\?-\̀|/ioiۧL"0l!ڎfyٙ0>CVP_c\Rֲ\b1chM@8frf_`W5X|X:dU$ڬ _Mcd i(#dQ\SS۶띊6UaxtUզ@$\;0 +]GRc@X_heP6OGh2̩c*ɘr5Ƌ$E[UZNO8s<ɶ鋐|A4/ 5 }V' Vp2dwD2^iEls@RYE UÓ^u_#炏0;ڛPp~?+FG"IcT0 nq neH>1 ~VHs4Ӑb1a?]&lHٹLo:cӯl`!5$J !!کJ-"O.h"j@'聧PIF {cFI#?.韹3qP'ELA%LKB0vr0o>|[ TdWJ2Gdg&jcIt5dEh|rN$veo n8j&Uߚy9ȚO58 u9 Ebe XTFS?E.Ri.6'žH]iNxLE"3Zd nlfd"2ӚB5tI1u4/3p*ޯO4" g̹ #N]3P!qb׵ZnDHtWzpje*PSPS^V" bm6j"ۉx;os @Fh$,;Z`1 0|<]|wuq/sHEXqg^UR\%Gr$Q!avJ`S@MD_0A%,&7s!>'j~/؈>=&mb( P£O0gwZu/j6΢$;^,'"DW&D=CXIqG}S&v8{у>TX'ay1II+C {3t&fmMvO@Bˆ}@X)6[U*m"t_cfFp샽TB4 6T8OnXJIt<>: ozGj0?!Ĺ߷P&61KXzY2Q`JyNd݃`ci 2]fPkSp*@lH-FF`Ee/_?JM p9`X >Mo˯E}os(r$Ba97F h=E^RZŽo/V{z(J`C.La 9ho1C|"*; (c4PJtrYKm }\{l_ .4~ xy#ڰڶYk>h 6@)IRhg (:C> &@ 0e|M]8f/uIw1{0j$ )X] þNmzum(wPuM h.+W:}j5v{f W#NA Gh׭q/S.)͒R0Y^нET,whwQx/RDYDF`QojO̹`xtG#`u:q=j'׭; )PBB΍t‚z\ekG_q=8EzH wAWC0982"QIZTW:%R=Le P˟Mo~]'I_vlD2+QT &}baUdk$]:MbD8ؓHݼ/tѢ`F@M`0A(TUwBџqY3K>4ud9la9]7 gm}7_hEgw:@1p[wч@{@-t+kTpFAtX3 `)E G\^^**Scc8=GC粁+Q2h~C!X͡NTCϝrrG/g<n7w3bu3z|faA:( E^(u#a[PDcJJQNZEDq&Np{^|U6Q"KDu1r#!| Y nM_l,/ۿ dB o84z.) Z k)?Clu7;(⶗kgyz=|#`}/vn#LлˋШ!Ɇ]:C,TKĝV|5A`7I&txzM] F`!,Oˠv4orEE | \7G/gW{1oچ!դHn\aek޹Yŏ)bIo**Ap=|Df)Zf3 6d fO;| ~O.~'@慁 oA+ -Z2+| s\Rud缹 LoԌNo}HM7#DŰC&F!I٪X) F9tw3yyiodh~rʼ$]\^䒏-*Hq׃ilSI'xIc_`e̳o ^|벃cz  cbǰԥ,<,qhj8" )\S$?٫ѬiV9~_gx{C\`nxkl\>g>|N=0_e !E?_&*|h Dq7IǓ??&P@[_ DgS"@?ˑ\(@^n(E3H޿4?'٫?he2r`{ŝs`{%;*t["!b ,5$Ha}!a,) TJ! 2k 8%ò3niDADD=~,{ #2R ("k!R'7g^ti;CT!P"{2WXz E SJ ̳߱>D($a G8G\ 9/|BKȅw AʁImɾ֜%|(m LVwPNrkKu0G+cLS tZKrQt 9LNF7 {]=뤦t>moN~}*ܤh@.Ea*]va?Ǔ')㥅4VrvE{} +DŽ168a8 לD?*qppAdH5rW]{:BeE53X$Щ" nlW5p PſGX@%NZ!}k83}/>\|y#H)A 0C:ZTSKZ: ɺL} I7 ۍ ) v 8A56]Owf U/P|$@\e9+0ue@h`{I9EZvX*B\)S $i8je'7ƆS&o5=Wݪ"[ߙ^!k^~vWcu#tHX #v5Mu; te#l9,.Fk*#ġixr Hs ãR.\Ď!B?9!e)=<,vW_f/H2:hsD5©&ryi%Cs/eu ~tm_7(aY#Zu#aT`XBv:o JfaP J ]8ϴ!y'ygڛj"I#)15cbQz,;H0(@ *. UB#!d68ڠzEXX̂ x=H1x"<Ϭ"^)ϕOS0XڸZs 8_ZJgB$@P(xdF4\H\vgz= ٩R_$$4C221t]&O46{k#gU/A%ASC5s z@0"{ Є׊GX\]: "]ҁ2@?o&Eqy#Rzt ևM$c/3׮xQBM pm?f#NG5ӧo>eGc ϢȠ]Csk1\K]`T5nH|Cqb۝@Ynk0§p8$Z|$i-1E)x,<ab3!ڄ8sCxr !p&,Ο3+'<3|!Q0hG>1Cr9&5GP'#H\I} ;ƱO8뀝t.kYU8N4qF'3GDsCy8Zp0x9Cހ}RE* /b<}C&r0yy`>]goϺ*e[Oo8D&Jl][ưԏ ~9fA+uC!HDU'QM,A^F-_9T8p^aOiDxFãw~ ّ+͵S&^D> .!^jLLNavQq@YbyA A΁"Z^DtH4r堇i{sa{dxZNz˚YxWxX~s6%'! g>ю=i y!Bj/<ʎzKZfG0lfz8uT3hxЍcLG;-}!ZK0@V"CfeayM@@8pΠFS! "WDPĈƌj6YWBkxWӍeP )= -{aIe05#nӸƺ]:ZsFl"EƮEƓXZmJlkRamnaMO%82݄i ?>x43̓s?6HbEDxW]Ԙ!ݹ t!"e>S u-(B/XpS)4\[F._M} C-w9C 'Q%$r@(26P mzQ] &bSr@::x3ϊ!AayJyb]ENZB1D y scc.AþK@݉5 NÙ6Ϩe_8m6U=1,48>n ^k#'z:p=Za 8fZjь:CUW_tb: D:8< !-dӏ X-1k ,<#`q:jdh`Aq\Ƃnp1[1,'p8έC3Sزڭ]VUf !!}(t1{ERY5:5%9[ aqga-g.7p/}`, U:xSX ִfk,nzzaˋm1bӶ->m,l?X daA c0SՍ`>Dw7Y˛6Cyx.{kfl'jP04\@[z; 1X%Z4J- ,iG7849G.yj3V^*$Hu4AނT!Z2Ց(M\ 5U-NX<r@Z"%uS$/:41qL`ZsaF<B #;Jm >@axdáPīoUvA98w=@--jrBw#mczS5qm~ {:  ?#Z|DC w7O!$^ Nj.pһ4kFx΍?芢'HXF;wcR/{~%X=pW59ۈ?4MKʽe"phe-l悳 8Cɸhu>1md) RWc~#v?,F@^ Z?N_uK^/:;N'DW!tA!d&nT7QeAQQ",g8QVvb~@?` h_t/a¡<`@8 ޝ3;z[[z[ h"6Mb!_WY&p Xd@a"zB0{!̠Ir4#P`,=1V\㏪O.rCr}%2nۮt}Ov-GUYP:qh̅6/5pM7Ĭel4=ZP`}ZRD 4ɬ$/%XpMD1]:oǧU"HmHpD88B`-~Ȉ挣iTkƯ !.kn]0N-z-r"dףʴ#|kުx Ͻۻ~cΡ9#ˌ8wVi*6>"" 6BZA(ae6-Cr.ގ5Wo!稕V +kd#S"LAH΀w G.E "TBJ&Wqt0ף i;T@R_0x:Zv ԪLI%Ы sMcB]fbQ3 p xnaPx$iԐM>,&5)}pwF xBNphwmhjA~h (yEcZPv vp9(9DPϴvBL? yHJ^l}JR8 rk. D{U?3hnng/4$l FOfz!# zd6$Y9ENx'ؓx6 b$3H(1Hʂ0  msY!8$= OJ\f"+en:u<~t󒄆wlAjpC:Z$*@" s7Uraa0tǏ!PBAP#.3Xi@?73Zc7FNzN"Ki)u{c!,W\ұ.e 7m752f$b\vF6'}|.1kzj1Gw0318; Ĥ|ˎ(ϥx;'ܭ>0?mDL@Db+t>j x5'/ h/zBIȯncLlQ { m&M\l!I|mAU~]ON*ݪ3BGo ]0jA+;H!oԀu"$ka!?6Q\d=xQ!H 1xX()Ck dF"Na)}hQJ{=tVӞ(/CGdX EkX.^|UnOǣЀN'9pM#8Tz:R:G=u =W0섪lڗ W QAa^8k&ȡ0.*JPړ b;ZZ' "`Bfo@ǧ S iU^x5AYDz!uR^}9ӂ7*>=*}j;'ZI ڴ]qDz3":@ xѺ\lMq)0shXj/*X|Scȳg_+78: 0#PG>v)`??wuw(kczgAC1\;H#h.10!wI.%$#3"K˵Lf1Q:LCl $ nl{ C|&iȓr!79mw^89kmq@D" bkfdۦl&OGY(ɷe-d:5XwHZjQ*PY E.(Q[6Y›wKYM?Rww;]G$s{K*+GpMx}ך}gKqg)aïѪVx|Вt8ˁyė[Z$ G]d .Pg} cp YfB(;yhQ8-hE&ږ@%/:Hs߇x ϮE,}_=oS.UV¶< h]7bf[f?뿎IyQ|u^A)tkAsVq!č.?Arq֗Ѐ9 &!~aXI>1A@I,zQ5׉v@%/樅fؓ㕜K9bC+ɛ`TyreY8}i`"a1x՛#ZLmɹCxa' /tu4|LZ5IҕC??i⇓dpH9&ƨEYktmiµS_\Z]9yU+rf$s Țб%F\c~RJ r<;"?>d>t;7T=T|_j^IŲ[cVt9.G6|{na!NՕHs*0<̡-"#`% A\s[o9;!R/zSsiZb HO`tnE$jbR iI (qAŠ11*1Qh*$0IȤ. T8 `8?_]\>/|ГH |G0X2t]?WKA<38ztN^ ݳp҄Du7gˆ24(~UFI|JvK^ff|D<;_GwtuqxхwMG{ao^:f:}׳Hx?9 Kd8I J?TA?('߁AIΌlWL4e?=_}UV(bGC:B wwC ^> $1-ΎE72}k?ɻdgg7kLO(O3 0  )­o}稁Mm$ZDz> ,Wڹ1uok7V H_M?ki͜M!IP>XpP_(yY L2GHC|R!BF@.,J ^ ehPuOQ?n%% KB}:Z<@]/ar.8 R$ auoo?__'z `Pt3(X^Cݲ=:d;g?~n_rS'`el|pt^p:g+\!1t{?oѮz| >HyKKhnr::c +-X ~;tzuoZ?a,67hޣ㣓{O`v =\ex_pF~a˳p|/-Ěkw;8ݮp/>!3\,Ԧޛ ,]fAxs"5V};bTπ[jc^G8؏>[t͚3mw.N?] }3+N{kz퓫 ~{wp6 q KP8{/SF94C.{E,}Zix9{<[u};Hmǜ}Tnn$}&%(t]F3}:PO:Z , ߋ[t(RXѺ Jǥ`q? /NE|+sN*Gl\Q~V0C\g(} !B* ?(Reka ^u+ ӟD}pՀwE4Fgk,ϥnyĪAGੁ tKrK{/4T5F$,Z+(G&H`.Z<_CGƖ tn4N&v~_Ryaɮ]  :Yb*He"O#wIWg'/.ϿcCG 9K-w7#k?M㣻}#+, D/"2ыׅ|>xvy?}Wͦ`Lpvmg4n{> #諼"s쌚\AzsV9.Z}cES\?ɼLgMT;F88|6.~Gƒ>v=} :GώсH.d6aC@x'Gs<2cZ{u=b!Nw 0:[F.usٕӏphQ=G8MDxSBaK;^CwxdVH'v\5ώ,ZBм2mZG">Wlgy kulq%_h ^酁BB1-@[rQˏHGIP~|>Y iE >G! @-#o^B}sPӔ:<=^qOwv~ax96 PyϪ _o?`yt7 XL36?q0]:m+H?ވpœYa^A a=U[02XawC_9fzT4@YP A1c}GzO1Ԓ_n`?X 8u;:@Lw'mJsk<>#7,A' ?9R*IsnͺZ*1Cnn)P%n(ם.׻t-xCփ' niI4Ƶ޾m AmX}ˀ!Q(|>O](>>b3.b,ɖBD.ȇ.H7O$ mM]T 8#O>Oi=Ӭ6>x@\Q2ET=H"rC^< A@#pz%/y\r1 Gͪ\DF 5 ; ڠ?=@ժ {@^ȕ2x*Dj򵰭zFMc-;ۙX/w,T $дZUAù[2A1]z 3[+PP)%\지`D;w y]@{+0^B;"K`ԕ @Xg\P^>Ή? e.k >kHlÌ;ĉ(0h6.xyLM^?ۇkD8xEOb>RImhi Τi5hA gmomՔzgY&Р?ѩp1{WӼv_KպV>L!yYo6XPcUǞjٍWI3ƶfA3k:~b̕Yh?GXRuhZ}|4zaj= adpw~?5UI=,+`1:,|ܺ pal-R^7؛B+Q^j9&0c}yQsy^GSĶJ$ }2~+6?d5ţ(\BSqaUȤi;kMQ%b,f{jFQz+FKq&ȭV?&X"PǂHq2X$g9wۊXB<5uދO;<4 =:td4إɝ!-(.(dJ,U 5h.͖9صGu$^ǥ6,ʜAQg<#g< 8<՗q*9x q8E>^|u~?9"}{ycho6ȓOӬYˢ)R` ?xqqgo9J3?!3Sj[ͮtLԏcHwgYbʏmGE֜XI{@%v[Aĝ<+4ܝuR%s.8;J "YMVCBPM#Iӵ~V-0] FiʥI6jKR:ki1?_*nqg8ҋTƳpmmק6ٟYꍍ#NPiϸe訾s)= a~S$֜tK% ق^WF3VV§NWKRNwGzzY1}ʂOhU5=ӏyDLřL+SFYJEN4F;+6l6Ys]sڭJ9OJyqaA2& /Щ=>SJ6yE 7 2g9Ders!شӵD@V%r/t9P׷c}ܫ/j5Pa(K2aNne)Y?_ѥ筌*ϮpNngXanNHKαgpA#!WtU8^Vesۊ9Ĺx];|mf@+O9K75$g =+\Vm Ed,g*]`, 'P+˫0Q/>v"WGUE8кYkg7 XpX_O_eSm E0fL \|s71|Wu0^ g7׹F۷[J!oabNп{8nP;=h:nerMG= qK/Ce' 8Ъ]2gvg`~vvYi b'<`xeet4";@ =j+28xA@~aj-Xh8vڈ`sH%=D̢zxm/:}Myz%q>ԁ(pPUF2lo~/T#.¦uKlzh.kTPumeSB"HwǷ<#`r,,4Ѐ:d*B! H7 |yM*X-g@rH(t,ib5 a}uJkٰ]:Ȑ` p ~G~0ѥd-pr_'KTVk@c=缽=.G`K(Bh-њA;~:~zׯHg;>amKHk]s.UOp@GۇG-U8 $*wbQېV5DYyzFKtOgqjJh?;ǁc2Pg4.̀ ){E k)H\$e.Vb@SB(D/Zwjhϵr?_|nxʈHqxq\݋U]B:j1E:i83n\uNpdf@#Z`9i{9>{;A8r 7Qxj7Fh".TyjɣMxXe>~v@h6G@] EX9G@5:HXWcoN;1Iqq^`o+x(pc[k+β> ?S .{3 |9ѯ)bZ7H'KE?p>//؞f.\ӭ83?|oY6^OodQ~U-hY3]qA[? l;$^뻼G#>ix3:j,6_ p8$-Tѿ:F ֬ã-]U-I xjl)Q(Ŋ^?^[I//lhËj/ZblZT"t؃S65<ȗ8j:tOBMiFi/NC'@}cmx"DU~YeJBϜ}pB& :Ιv|ؾMnƀ$~sSMæ:2M0Y U $^3v\?@s&#9cM  =|+RH0--jqK[Mnߨ6O|\dZhע-_WBh:V3!}=fM ,ÀqPu9&\N@rskp#GڣL2p~`ӅDaFŌx]J/hPB~>%KٕQ AMAQ(uI <jݰԨ['W8olnv7>Sz˿3pq8j^2ՐX:[{m߷gW_8a]4?M&&!Uͯkl֫{69pΫΩ h^X7hfar?x [7xȃDJU&w^6]gx!{Aـ'\WR81`^I9L)9 ! a՘ Ped$t1}<8 xnD`}$e&:,a}wdS~Ls sCb(-+ {s{ @xLI$H&!\#} % Lຆ}"8rRۋrO}jp՜AFbm[pIB~5~`Yv6" ؟οUeap;Gtp9`hzqLTn`y~a{+u:^#~5 rJnϥJ~Oy@nP- N/~}yyg90ϳ}x_ÿ!xL'.꟎ZhDyD14i[l~S!9O^3oP0uGHt1"8 KpƗׯmF3oǗ-n!{d@ 㕍YEbd>ι וv]!?E@n.HLsDs$Du(f e0snc`[+Z=ՏF3{ϸ"I77.͘~oDzG K)rrG0wgHDaDPh" d'/J K6X(TOA BTF ,6'ؙpN;44ɴ/[y lf8.dM7өEp]51@EvgOz ~OW ep_(l)M ߦ}664|CGg h$<  LHog:WM>X GBgMzQ*4[١.RTG|j<;$'FnE8f N =TG#JϪ蓇o b: B$>a! DÏx멪xFHI~A' gi%ecF`svL)u To%-rLyD^+V(a͏8!'n[r VW:Iz(3^)\;e HPQ&t" ȑR|RBa P]PUKB~\$B5UUUQ^"i⨫UUTQTUǠaPYD|y h-MP-R!!#1RS%0L5UUUBUUTURw(hQŘ`iB`. ~})@D@&JJF1`*T0|<$OsMWMpǺHI6:hq??Z_XI/ՙ g/x`'P !Q,#H/s$/_֟_.ŅMqX˟6DžO91@dG-u7UeWّ9@ l0(6om n[{p֖"9L(}wN[n!2-@.%0l\45C<])U|F1/w9A$Щ@q{s}s7%EH`oBT<<[%TjMƒbrI!`߯ cw}E["7[c< r=VO-m" AƆ VHJ) J`(?7n<@9$!䲪E S#tfbcO"*K{¼'Έ"L2.)ZB 3clmTJ&EZ(]J52 }ȣE3~p.y P+3 ]G6%ݿSV̇,6Go^8ZA޻Ze90Ȥ:_禎v^fD3G>ʷ?W8gۓ Ř;l>d 52FR[8qa׿v{!E$Ņj/X(rp =nl_ѾXžIwn:W[!9!䪐QFyZD#_C;?}l8q^4~TA B RֈFAgt8'[bgD@3;]P[gkbc[V1KxA`Xeoz\P-gs|BXV[Xy&4NDz` O[Q@@d@MtmPqr=hgvKyU6f}oS5><}0}”I5:4'sNڕ?ۦZ_0o7JS[0FoxF:ny,(N,;t.]YG;, +g˖5;6xD~dZprg^*h~?3(/>p|%W\_x`P!U2tq̘1i6ߊtpBF؃qY0I疈iD{xgL n6Wn]t Urc?x=1]fyKMA "Ljw%00$d fNٺXDNku*d("(@mѦԂS-BB!M\﮹U0~~zsB#cc,CcʂXMcA5Ak.a37chrdӬ'@aPi^쎒<O",Z LRp0N0v@1i#( f(LpίǂxQ0'#z;Xݘ:vx83ˇV ѧJzАnC\f Bʻ Ф$\9N3Jۼ;M}}crݦN׍GsLgDr\7Cj2K0h I\/assz2K `MeGaa@yZ4,7_;^\Pdk)˰`ȌP;8Lp