a little DrakX history: june 1999: i start rewriting redhat's install in perl, partly for the fun of it. I'm still working for the army 5 july 1999: i start full time job at mandrakesoft. But we don't have many computers and i must share the accounting computer with Merieme who is working half-time. No test machine (i test on others box, and destroyed Jacques partitions once), guess how it slows things down? august 1999: at last computers, even test one first DrakX version which can install things, very very rough september 1999: a friend of mine help me 2 weeks on DrakX relayed by Francois november 1999: first released version of DrakX (goldpack). Not really stable yet. january 2000: 7.0 is out, with a DrakX quite stable july 2000: dams starts working on draknet mid-october -> mid-january 2000: gc rewrites the stage1 to win every kb we can -> size divided by 7 (!) for cdrom The DrakX team is also doing a lot of other things: - drakxtools - urpmi, early MandrakeUpdate, early rpmdrake... - Mandrake Control Center (new DrakConf) - packages maintenance/enhancing (esp. ghostscript, 3D-wrappers, lilo) - fixing core packages to make them installable - scoring packages, sorting them, flagging them... (compssList, rpmsrate) - reading/answering cooker and other MLs - helping non-perl gurus :) That doesn't give much. Me being the one more working on plain DrakX. It gives 2 people working for 1.5 years. IMO it isn't ``spending an enormous amount of resources''. And what do you mean by ``compared to the code base size''??? DrakX is currently around 28K lines, which is big IMO. You can compare it with linuxconf which is 170K lines. I think the achievement of DrakX is comparable (a 6 times code size win from dumb C++ to expressive perl is normal imo). Also it seems like we don't have the same understanding of the word "maintenance". DrakX functionalities have evolved *a lot* since the beginning: - hardware detection, configuration, debugging, work-arounding (multi-kernel installs...) - making things prettier - more bitmaps - "advanced" button - syslinux graphical boot - making it work with latest versions of software (eg: switching to rpm4) - finding out the best way to use rpmlib - multi-cd - draknet: configuring every piece of stupid protocols - diskdrake: raid, loopback, LVM, resizing, checking stupid users entry - XFdrake: multi-mice, multi-heads, 3D-accel - porting to axp/sparc/ppc (with Stew's help) - always more i18n - keeping things small - .cz format - moving to .png - getFile on demand from mdkinst for ramdisk installs [...] > You don't believe the books ? Count yourself; see the man/months spent > in 'pure' developoment in drakX, and the resources put in mantainance > of the code base; as far as i know, your count should confirm what the > books says; more probabily, you will discover that our numbers are > even worse. if you count enhancements, adding features... in maintenance, i confirm the numbers, and find them quite normal. if you only count bug fixing, the time would be much shorter (around 30%). ! 3{shj# ٫[4 ηZ+E†f׊6Yr}D8֦=T[*Ҥ_ 1L`kpd>0ơDD8 O-Eȱ1A f~=i7mUZ}bgzůlDozіԻ M+#]TH랿F:"42' =6ma$po*\K:0;@˾xytWp5 s@CQ`G_72%5p,AxvA<+6W;)$v'fhfH1ѳ<=bD~'A4ͷVfzGP~fd >F-IdǪ/,)9eA+8W rCCS;҅5+" } Q^Jg4L7tsᯐdh>.:CinbE쪎ɢYZ%ю ?i/d(A _pτP(+f,vfa1gI"ۉ#RhΝiW-rH4oźNyjkݧrFnF{иuZ|DshsvSg,2@98$q{[YY&En,Gk±.1v#D"CR&ULGBu7&:7W`! ̗40GT&N16E⹊:E[=)A(Qکdҿ+v+f/0J̙yDp @X'{eFz`D+H[+'o=F VրHudۨ2\+ZNX]ϛx\^ 9⡅5{y')]~oߵykC?!v,E"fsuU Ч?>zb˙):ptCSb+h|T hBdY-۵@Z$oOO9zyZpnrnOxK׽Nx}΃ N GC_S eX-oCkID}* %W@mĜK 7ÇGm>z^ҲAODq9,K+7y7&C++KF4&s/:[3$dvF؇Ϙm ΜRTYj:/7-b}-$fq˔e+?"LZ48,~`͞!+)bYLg8وNml#ҙ; SL E@C/wfS3Ff6bm`nrǒ*' Gұ ݺ` UZ”Th` ;yb:0HSg4tZ5\FB^hz6>(T7p^0㘘'XcTG}[Y 45Qn)C4qK̨uF>1D:U3R}O (B4GRbΜ&m wF#5m2}reb1~@ *BovȲt$nrM f  GF.*ȼ ;'yJr9YvN_}#`K}z[lt4!:nlH6[zb}г xU*OIM#`A0+׷ l*IB襫?-Rt&Z`їT5m7nV$ۂUn_6^֎Oa&&UzbX+AV3ef?' dLE nذY eP}Yf͍я*(&-AZquf4uF4.;n"F/7Y4b,OОn*~zed(6WdP9O:%0⁅I {:sX^̃2x&`;BwGd)uK1:qW5-amor>ЃPWx:9qUg9No4Sq߭ Y`@f14dܛ[,kgNҾؕC-H +) fϹdoG\:!yMf!a~2GLzvM &Ҍd#yoo~wHk." I'N$*,ͺ:!דC[07 @K+kӏZV?-C2\)%bz[>Sh׍q`@Alz=pJ )w`1Dʹkydp kQ1{~GNzؾf+STTwS86_ }C_R{'$>,uțzd ry-GZprH3D(uDӃdD ZT[`|Q&DӱN߆R`ZLڮa֍o&@_twWM$РQD=hp #à#_ֳѯyua!A[SUӃU~9p(H,OyG^8uD`NJ%x}$qUn5L9QAOoᮦ4Ȕ2d! c^'0ã.%M^|˺}\d-37VG4UcZgYdUIdgM21*0DY*BłKCJƻo@GȌ\ȺiYFI!x`'ai$eC/e<JQ}H1%=\&4,8@6Wz vAKԼ2~m _đHOnoaȫ~eيmVGmLH]$YC1"VR! `᩹eZ \W&#x9g,zL1g&Hnl`Um60_dl"5R#'5̘ 8Hv2M\֡\؊*-U8ڞENH.y]4:A\0kF鿾knȷEeh0<"'aa 36PL[YYO H1POíV<>wq̞\4!"JO6t`ūvb?}< &p,nGgё{0I-^IxZ$]ǵHNRe!pPY7q#Zi,Vrn v`Zɟ(vD~ (LIl3 N/[5@an(F! sK*M\.~=|MȆJ. ߷Pg)_C<[-ǧmP@q a,,=Z9)ԍ}/Ň-HCog*3n nOHC jHPpLJXQ|b;EÑB*u" fN~ *4}Q  ?n@&^Js*=Lr#\R,U(R@0ʢZf`g _qm`@P_(߀nIYW Q>V iv©Sbў>k,I[+e}Pb>͂8Av%l+%:Nbjo2$d ~^(E<"e!JHP0R.Oqe`ά (Bgڑ3M>厮(:T*_Cشmv4qHX*\UߞI&m| _ ߝKk `[\w;>+=5掠 (Ic~ m."e"' i){ɁY9'ȜuTZ*d[qPSD5v>JOojV%b57LH\i9FB -LM`@,Zc"^% 2AH"ш {5Q$Cpx۩-=euaΡE`fo/LXqYYZ8omILynv7+yF-^ݾ=^\G",nrno(AɰA͌zIX y.AB ȺgUGVM,M5o"zEEu)cyl-#l+``p,ftERv܏%w8,ǏQdžqYRmc:y3xG@Cp>EqH8УE f?s Q+蔈?z%{kfUc/Fpq%Ļ_%XS!ӔxP!Y`ѹ* :f9G~A PVh:f (j 6;8:בfhҪ*]+t+aܣBMjYlߕl!U=b1<<I>6Ƨ3ʒU=E_/;C&6юs=$V|`w*a@{PGҬ4m[^8<,[<{`.g AzU .7I Ҿ>CEe^@>[7עgYCj$#Ԗg5;SPoj'|^|^ ]ŵ{qd K;9"GX 5]9¿__5*W%OH}hfK߰7I>B*= qq}uk;|#Տɦ4B45x;BnzTEŭ A R(N,,xbMh åWym?gwjGA^![VB)y'IuiwT 'QYdPBBY/3#Õ8cưkYq!ε O׸^AtQy/=܌F8E1<³*By|f8bU= kF;u\,&T/ Cc'lJӯiY||3z]^Gʣ; =r)FS33Τ<]&P <W?i"ǵ̥>:}銖L5D GTT UN8NXjQXsW 4sWYclSَ-ZͪA|"?쭆cMoc0d8 fwoޏkD &90AZ qF]&=2bp(4hՐo}xV;+W닚n0(|\bu^!;xFX\}#ki@[q $a)3=4a\ 431xeqCӾ;*%JlK#2m?j蕸oy ath16o G{^KE E;POmiZbT{'8ꇴ+;[j`OWV _ ;tL^(H dI(0)Mj6of<ŕIeh2K:v5LbB!I!]JS~&4a[òX1s/Uu#EmkN{jЂ0ieiuCӣy\TV>IQu;xU"%YGHC:`J;vFm6btRk jبp̀@sb͝_Vgx_귊 ^(WӹY'4bZ᠛˚<0ϯ4Ssh&Kz8"eukAF`.BH)$g΃@[hGnuU;T~ia$⁏ 䚣W6ɯ̬{❵$gQrC`. qX6+E}iL3s(w@aců`;L%mՠnrLk6 W4ū2N`+{1J tڢ%#nn6_!z&Y#|H7[ݜT՝`(YھacƄQtC]T/2pũ܁!Z:ad\uza -6q_/JVBpAW*Zrn9U(4%gDsIfZ@?R邭m"`G)^De3w!4SdWmw7;uҠ|A+40j6EC@ORHrJf 8 \:VکC!z,)P>u89@ؐpr~r`ztL2QIu(+- sB2+C<&amLG3!2ΐ==AUh>N` (1`}Q5\\]ଵ%`fRދ@ѭXy+BmpW=7JC#wT=8.t!*:Xrc8kW9rGjHAđM6Ŵ}@_M7j  ^y!o8]w@EطuHV, :98 _E{h|1>x99*Oihu8y_6)4[ A!}H3uXa'?Pq{pB qο"+a& 14]U1>c5YmH~[<{ei& ?*:#eQ7y=6 &w0 q_ן.zsCVj6rYM? YƁn ۀjX EM%d-HoB;}X02f2*cB cm!YEQ< x\"+՜ : m;XJ~emOJnӼtrxSƟbyg؄i𼷆g wF(.4q:fp~4<mʝnitigDžN.QկI  GK@NpQkүʳ/6km5~JhwGYSghe\6*X9 ğyh S؇G z (kʩ"91mWZoUOn`a;9({Սo67/NK ʫS%Ỏ?!8H4W9vֺ旳r ~)|D?tfF_zӯ|K \T~5 bHսtf$=h\inY,`&sEtWDf}3h) k#]ꦭ,*"[;D7U ȱKWO/=)IqzYbY1\pgy*Y(%fnyh,(Jhr EsqqCb=aQ9j z;#S>a{8D+t#e5S6O cɈ ;vb=>ŗuxCN QD>s^QV`\-pJϐ ll)d̏~Eފ7 IbǩU_URWtbmٹ7qi"~ 5 >}Xcr@1eը `{JeI6L9SE29vpū &@1= &IQ˦YxU\G0+Xt{n Mpo|,=RFrٷ B'3 Ƒh|H"Ay{^!6c '"`tpn]Ҍ^ d`{[ `L7z`"Kkǝ!@>q(?ƂzhyoMWa bۇmD=X{\92OKln6p7t/+'ipm Cʡʅ'DĎJmE`mmgdt*Lݻ4qA.L\C2 X8|s^ieÔ.&m()> &nRƖ:^Ÿ|]D?<]C9c$qsݘ##:$F}F_ yNU%?~WԜ"dN ص|e3 TI|*u7 N"gR>ki}QO?ۉxQ %|yЫn.IYDܭ%xg8.t/>x#Bh]<_$6+AGcl~M߾ɇYư7iǗ\[:4?!O38y*gh1Ydt (t_6鐖U$ՒHAGfԘ"8'l&-VZ?]~Ɣ1мb'#^ͭRT39TXTnO Nԡ2 b ލ(ͺu9P̾_Y1=`ACqv4+ [7.g;:wc?$m8=th81ŵ3 r?Y2j|`tYݾY~Ľ<%<+$k21 f0X|зViYoz^+3ޢ{ޭ[ɹZ--/`IQ\[i\BpiC_t`h4m UA ֖|kWS8OVgT,rm{6u)"x7RUCnHNza/X  Mo]/ݓ-ֳ1Gh4 rnZ<~6"ES AOA9\[,#ɮ*z,* i5Wcc`Ӻc |UBvt4T$Ydͻ};˷ e:A5a#:~J5DJ0cl»na/:^p̞0+USR 뻍{YjLuw#PYWTLtyR_,na=zt4l"9ѯpf%Ɂ3Vzq?",^X$Qk!OAyɌ0bϦuf9Ud7*ބª=(Ce ޡDV7W HQYb;UOd#ϥ9@,ԃB%9وUq*N~Z.@ VT (^iݏJG:7]^M"i̚&x$tN Wv$ǼD}fd G/$ z{9V2c^oY{$K6i?&_`&651k]. @<FH} m^tBe+jaT [4o$mGr+Ep ZcYt'"-&놁ᬢTku0xĜW,܍ G8%,7ףEklcRF)"s="Hm"N⚵M:'bX`(zŸXU%t(`^:!ߢHއɴ7*fd+A1Y‡夡[Ǫ8Q6-ɧJ G|H`8)gݤf8}<3{ ^`1)}D3w:eL:PE3#oa%S_{o?2D\mJJ=*`g/ͦa B̪A,T\]JBRs@yi2x1?Gk \ͳC*[HK]sith$RDqA%yզ[Һexx;-7d-yÛsٜs&wg'J aVZx8& +K 씙bq`DFYFHTٻ Q[dC*oT%Ǖ`]Pqk<ʌ4{hhFkX`YwB;$N'JDMk7:$.ՇY̼Ŗϛ Fx6ԛOP>vDl4r!iBmm'!T$$b* O)KGlƛ w4 D_sQ-}oH[ovM&\T5AYQ2 #hÕrN'n [pMZ{ʿ ;IcZ-|(f J0Zx{?D\47d̶pQM:YO|PCE!jͰN$|_OF$s2Bq~']8Z4 &#MY)hN̈lW c׋?YdbG y`LxWG`Ao|' /ֺY|U8z]biZ=X}? -p3Lw=KBff.Ϲ+K*3l"|aN30.rg=Ө.N2U(=6!@_75jߺiҽ2nA)=y _5,jdN5*TKtvUpj/9/mY&)IV*8eG}k>G-i26i^MAD(Ҳo37j %ւ~+T-S N >ZB%̡2zAp+5 ^U. s,GAaDpMqok¶x.7];q; dpgQ֋ې[B~ArOwvSiD; R_68SI0!uÍ21]ЌRݤ2*(êYudħ:F*㇮>45T?UAQ,!;1$zvv)8$YOX([+H`5K,5٭lO> Gm >@4wUaof hJ^\I8@XohIB( 0oD79{SК1X CTXwQryWk=ɏ>M^P1:Rد*޲3 (:I0 '͡}g~^޸6s׺"d̪WGyqpM:::j>'Aa͸DmG0/6xp:v"cyjWYu젵@5rAjo:N:qUKmOt)fAA9Ew(*!k$\yACPvskU 'rO~4 CeԄnY";!H: GMQ?dm= ov"Ko,”Sjؗ?9{[h}V5NL|J1?ŠMl0i:%tC(jޢ#neWBt6LSvCTz 2"wh& ug)ͫ8%[_we7J)眀vbtIR'z('%|& :]kQdz(&Ov`%O48PEu&~?ig{'i9X:&^H}7)]-d9l4O+G(Tw lL)A>1ڨ-t3D l`1:$#0D io)o tFs>˺1 6*K:luh8X92^y[`=-/#PwŪ踅)Q@D+_P"8 c.7pvgfћYȝT$#}kkAkO=D7Y8/cb<bHrߢ$ ꚯۂ1T@rD"fqT bLZtŨg|T)נV)X$R ]>)+4O{Cns!{"ЈbX}ccsvn#+*DMy2EH ل(a~0.g,B?%%s?檘znF7>Sf*: Ws_o6[%1 #v'.5m5. -v<̶LFh 5`z^#pÙR^ߺ#Oˠ]_YfFטp4@mog>`5c'ڃY=lPTD jl{rI~B>[чXV#=~;J+ʗh!$JÊMŰ~B̆錛.,m6Fs:]8fb['8R5# DCgZsݲR (/jRuZA4N\T{, czJ.2X*Q)=smg.(<#ubMςhdi-C:d sWN$#cQᤕ މI.S*7gGt{|  _MꉨVt󊙴6:2[ Pc˜ِ`yB}`jqS's:=c ]\* cB 0*%*{\e0ܥ TY҆Of̹!ޟPD_%t>R=zD;mS-ؠ1B {)bD7YIyn-" M Xe./7L1o Av獕M V5ƈ񧬲~VD#a?lb?KAu 7Df67tW^iYVDJpAFPBX6߱HU*K@oYqmp!H`%@Fڢf 5/rs*۰Y -q"cnN*qd4z8((K3hO5ervyD/Dξx ^ݺ_̢BnH7/GiO]J8A3sIB1 K+ˋU!12ES@pmya ]f@f$e*#ں=k),Q1lW*V@ZhW%3 hҕs9(ul \ 5Қ6yVͯ.i3dӋKbq@$ADŽf8h9cHzd#Ey =f:䬝a(KO~'1נrzţ2xQ=dqpSr^խB؇aq}rQٗMdT_Vfǔ}n#0R2"xXObs|%ך,o]#8a%@~sd[Bn.!*9ӦJ`SþuwָJIoL.܃U>@y iitqDa6-z(\m>1$6* j=K<͒d=8 f\L#+j&K_uyki~ 0~FogΖڐrL9) 1.cQ./KajFg \B{\kRLٹxXw2f6Y-Opu g%/aZXg/[n Fٓ&h{z]i-zW@oi2+5ujx=J3(r`(J MA;rXgJ(bm?ߣ[g0i@޵֞kȕCR  q'&U^ǁ_Xd ˳1"UZnc;vkq=]yMgQ|?5'ic?a)Ai͂ \XTO@ @*GuO11qծNo^uZ&,u4( 5i4 p4VnHrG>I~RIeU!}Qo{*`HE M bzK |DO!?_L%ٽ܆Up&YHu<2G8!i3CKoTD[eP79>T(6$%21Us;jgaDV^Ћ0+KZg > ‰y=w3Q̯R,e;L-PLPsÙ3ޙ (HO =>Ó̜}_H,wY-tyyx4%G1sB ptɻbռ]2Qdy"ǀCjY0|swg(M -D SPT(=(=mT>3+P"@ FLwD땼X5Z6VS Iwz <&wD bUFش@Q#vzzxhNR=B ;|8<lmSo_ _s-sX12c 6Zmy% `=$ypP][|O }.H!L[-әu%KED&Ͳ_`HU D"\3?4Y A"/4:`)bD\]q!#WB^c뛾@k3tƙ\%SBPncHsx4XbX^$]O{Fu:Uœ_7*:Ǫ1 J,/5bZKĻq\ѫ}_U?^ר#/ h3Ը`kc ZK'סYɯe:M{;/mzEFYN{zTؔ(He},?av$'Etj)nsR@H>C4e;Ncakj9|;s !Ⱥ&oPaoa­.;GD /!-dtDSY'ݧs3#;j&HI}+VrfRvVv8\HEf=𬻁g&5i}X:tb@8 h@\lvݫ$L AQ/kˬ!KZuT+K]cCMjL{$-B_Fք5=Z7yM]m2D;3t4]Dt q0NB{cѠ񺟥\B"Đb)E'[\&2YK5Ѷ8 ̈|PBlIS?ubn,NAU-HiXGCGʌ"4?,lIsNey;RS OG`ZSJ!\CV(5~Jw$ +w1cߺ?Q=#&L4ΜJr&;DZ,WJeIШp ]rf2\OH3}Oǀ{{$Pp-<iJ^=p_wչl _:Uq.͐ 0zބuԬf'< ѻ!&ngU-9'-Vk'Y4AQSy1X>?n;US egr";i<ˍݽO"9a?c854{ho4ka`uFe}ʶVaӿ:`[T-Pf gM3eb_^SGٴ˿Uw g#e0.{v|{v>*.唣J. )b # UGmp 0u˶_9}'h$ib~<h抧9nR=V(] 1S} yKI%,PYCh'T4/2\##Yn5; } ٻCa3i0;;QU٥Ig5\< `[Qa SgKTt4d qCk @0__9ʮTE a08 ;&_uns7w$^y;O SLn: ʛf`˛Ծ\Cz& x'QgQ/ /EGF ;l( jQ[lᔴ^5>dLϰ{!4}'^ oy .kڝ*g)K̵M[Zn%V0~HxmJyx au ]J+pc#ѰIt 9&1zL[wSB EE1S}cJud:!R 6GP-KtݦaYmPr3Q="A%cЧ@o_\d\<怹> BV8;=j_qD CT pb#:QS4'% `DN ݈8GhLIeFOW㠡 aT*;]3-ryvdm_ʤj{bcjCǃg>=JAZ@AWvk@PFO*`;ʂ?q\k©:]R-N>᭄3q(ei`NZ*rg㓌6`}K̭<_viWznμ_ɍ8P~<*pΨ,e'o]wC~gZEύ4"I\s}l,n`rT)F$IJP%߻+v%(p u?F嵒X)9iDOЫrb/>yryu_yHnI"HGӣpCP)͡r; wW3萡G,xsmX 37LJ`!a#Xu܉YF=˕2N\.,,]LZVwk7\=}d|̢N\r.u7{p%)p3%PIIQσ,[ oY}>n+>MBhKGc0.jfJA#QoM]P_-;+8E\\(~ H]+Q0 gvK,vA-llj X+*w챃A^:uLeZݾ?}uه;0܂p}TSPN񋆫azLN _D\03iݕYM!B|)i&@KJVS DHҁԂt!K=D4:ڝ4,]3rEGuBPR& w=#zm I$4Cw([#t9 6NW[{]TR(տ&} .Dɠ N|yRPzD 'l1VQ=NhujX2[ a5F61ϑ9F |GaBd644ʑQ):8spxy|Y]yZ Ӫ% ||1gP._f܎R?_ b"l:o 㘶B\%8@| ^Їo>ȏL=@)o}*#\9V%0ˡ6cL1kY OD`C my\ 4"#R󌜓Z3}At6!0a*U.E4) jԒǸ+p4cUmgdd2IH>JW{Oj6D .10R8 h,8wIClo&l,9%m0zb__5f=! gDmvt4 ;;Bm/GUxFۤ:t-Dt.qݯrJ՝t$J&8h~ s7G.*3Fկ^WȶLrEg5b&-7 +ƚ=7k{ꌎe$y4csT5 m VgYfQzJG/J{)d:3BAZFm)ayԄr`d5d9~Qʼg*aQJO @9\i >82n7p[sK pt\P;@.'pٌ\q+CoAaS3 =F :,x}q Ḋd-zF Ҥ¶tG|{$sfV@9y/7эԬf7>Dhb23<7K,)U%=H r1xa΀*2x!p+XXJW6n9oBy-j^.GעKOL)hk2?qXS.)KP?MV} D1 "IC9TA0~!}3uPAd&x`@3uNeUS5+_X}s?EKfE! mfa>zOT@,h' 08juVU/eŒ_=MpCX>17f 1-w:IDgŮe͝/Š0֓ God@feu75śˊ)rR,c1~dEY,{5o Ɇva^ %wi7|JKRm;5J.1sl9V9IʐH_w9AE0ts%5Sݔ8utx\f-? 7)=PڎMK!_eHv U8(').|;}vd{۫2쬱r4fqXҪH/hmu-N3 ws0y2%xVY4^-Ȍ:Xgg3eI~3D<ӀT% ,xv ۜ /W~Q6Lj2j_n,@, Ñ$1LܫD=iul eS7e/ΊO|A# 6]v&ȞLxWi3Z;*bձl]Z[Du* gӰ՝AC֮f|VǖuWa@>i܏ >_ib! |5'L|q=<NJpahstԸR~Le%y5_7n@ҫabqLaَ]mfw2QG[ 0IztE,ʹ({…L jXn>=턴,ժ oT)#8cdž0szf`mBk\+usbd^pԶ8a_깃Vb+6dtor ֐Ӹn",'*me\ae1NܴKbH޳0#ڋCpCM/xrXy!*SZ]_dz}8ޟ,ty\ yp]ļmd7Ӟu`x=J@rIsG{!Zxe-5YN~?$F_s6w?WN#.{y .ٟ PUd]WVXbV ţ3Ї5& kzK 93Ff7nK@oѵ_`2~cE.zp"<%ҁlA23ڠCEz̀9wлaֿk\%Xc;_s0Î&*EX1RZրrϡՋ-`AS.LᴧȽTQy.hG(K*=>I0.~Jve51` R8ؓ|csʤܛd(hhwfIc%A/x?ҝ`Yt{FPɒŸ4k/amg|s8PS]l5RP]qڠì&w?"RhWGj5`j F};Ίg)?7pPl;R#gR+!dtfi}2LЕl7>}J)S73MdtSd>6Q̊x~|֫UzD.-q:қw_X&^-=p g㕳szJY4i޵ɅX1 SIbsi)nd -4b|@ƩI,<[~α!HSA}If(z;e cFjvA :zfy+TJaN?N!@ɩ|9nIkE``XDRpүF|l*2 RVLiw&Oqv^jXG1wWc wlezG63 $OԵzaU UEWr"yP[Q )9kes]"*ߠSH.p~&3V *f3GwM$وK֟s/P/f0d$,ܦ\LR3lV%+G0D0l7 쨉zݜU.h|lTY Ãm׺0)BN5D?ɔb7.N٦~ 3,r-T-=C~gbeGJ&P2GnyB/D{(G1nd 6oj~[3ycL1GpyH$IzWGj>ut e:$Qv7R9D6ޔKv0Bzg?ӁSR)xo˹{dsʼn+3Қ-L5ن`rH{`y<2IC2, /C婧2eiڥ7Bc$*hz6g縛~.@ulJύԬN]ɺ7 5BHcb09=*J J\B&ϼv[8%1:+uB${ 驘ۓDb>2L"JrNِVcb7!n"|VS"pĔI-ع U4I&e5>a-4i)EյW]6%${5\A(wpz 平&f&zFsav\L;3?BkJJ5|yU%iZ uA$MG7xVz|M|3 5Tnh_Nb3i\B"7~ aW|LR΢$?^esޕkj~[ܟH}C$4H\xOKgʆS[\|;DC%7wͭQcV ޅ +'. $T/`AB]\LYP$M]5/e0 P=&5~t9-$HҌáxfW0rj񍱼j`?\JaFn?C] mZk]~7wr{בDtN화(W Ct gXx֨-&}8N'V{@*!)VS+oW)jѲb|?aWdVfZAX@CeQrd%* mIkf'i(li?AtdVLbD;{$i|X޳9OfAv4y os~uY9I#F/1&̀A̮[V#E˜6Jyaf9ltK9&Qy<6 쬀| Iv;[Ql# Fv>@5KrPCLTAy\D Xyb扈޾]!w=͏Ŧsa lAqi0\|l kB-7+ k snHZB'.8mb ZRnhZOr5L< j{nӴݶMz,7ruw큝 !˻A @:Q=c)Qb.80pVl,lA|>իk++͂2,ErDjq?1:v-ԓ2_C ToZKI~ A> 7=@*w!|@"84vF,.m~ ; }{([l%\' ,xyc0l֍(Q & bYl3TܝЊה0Y2^zBmNv׷֔6e֞V,)bЋLKvʴ~m{mj>\YqȀsHTײ͖<~XZck(S9xb̎1: >xlP N38Q=v׏\(KZ2?kƚЋGY뮑49vXPlu=.8yie2}dH-Y S`^9?i֓D{b5uI*}W|lJ@d;-K0cˁunK,^~ƅBRyt #;Ɓ}(7* FKd::T\Kysa+SxjxPzN>f$zvӛ~=݌&m3tkv=BpM9$hKZMM8sȁJdzE-B s*zI@~3rtxd2nCF[&a Иl .M6fyNRVѮg}"8KTbEՉuj ~D_jIpM'XvVCȁ=g_ N[H$ jn:n܄ڞќni0kESxI 9Uב3_cyI(8iA&"}J1`vxK [^V)6+Xlj-U +E7)Q }GŘ$MQ[s68\?јHNQduagJ*~ofHEp.o/C1")]XXI\HIgrsabJ4]attȯqǛki+m< Q@>՝%\陝H:-l9 )=KМs~v5wk鑖N^Бe4kaXp?jvȹYZxYM!'l.+ړUw{0.UHS\|EělYڊt9H"p}]/Ztp"umq VpX+f@:f[@r Yh-Q̃9v/Nqa6NNPK*[ G]"[t3xC|uZPt2E4EO?j@PHC<jf'gPbvxn!tɥ|\k0'&:rY~BMDTW1!k3ay&K9؂j(Q.J ZCeWYu0{G{$h'/~z!bjc=3 +Us:qX|NZ NFE'Y}'nj -7}m|xSL?b>8JOdZ߉[Dmr5tݡE dž٢dX@z@}0g)=ʃLꄥRq6KP|ĚPБݺ>Gj:O3+fR a.4xG;}z*z~Փ{Úi0o@L_ {AXgդ`ؙf5[GϾ<XFY<(Ώ& B!0kyEgZGn2Ul#$e_xNnz*ۼ+vS?ÁhEه$cY^%'2"|<--&~3&YL_7 h2/vn$*֊BYi@&-Vg6Ei IZ8? aCEfS Y~'U/?#J9&ߓ2,VXh AngI^&!Z5UA\(FlT׿z Im>dv^WjeyY PTWvη#s~m8 gm;3ɇ3X[ RgGg[me5%:} 'b{F^,mwrrst+zl|phJP]ȆTVp+Wכ`Vݫ(r pT|0[h}jە/o4M k<(K;TGt5Ig&[W-옄\{AZC_KyGj70+/$XMBk"f^v!ћ[k |}"htMOq~cPI_=ɰ%؛*˨-P [zhT{>,>w2l ҽ)#;@Tњ!Z qXHGUp`oXG c(oWn%Vqx?k3ٲ;Cc~w4,FHj{r!AFr[yI-!Iv։vt"U V{\}ezۑmIϫ҆8ӉLmX^L֕a_Ȭ(\h =0@8Ghptmb)bHZ~ieĿlP:! 6gL&ѮnC1gS*xLr9Wu ,Q YC)8 _q IswCLe[F̚~wo=3CbM&h)e~'s?SN J>AZ "朮">ąV=s}H4h 0S;0p;9m-` eua> Ѡ E3<'`l1Fo"PV(kl*"T>gLÊ%I+ uD,uP^ᵷq̇!HYu%S>qT<$'>WIr AZA)p~~9ю0.3&=ثʩ%l3A \č[YXgmNz^tc4}ON Ų-3X*xBT:q|S3y@9dt*w+ThZQ[&F8qr](3g'貅c/FD,_nkD>Ey0P/?QpԕSː.@67z|lZ&LVD+ xs텚%z؊ GgqXgzƠ*K?nO)% rVFլWGϫ(>G~=df izT?MitTP& PW #\|b>Z 0CȆFK5{YzmҵV$1NMxMj.՛魠;-[wtV#AzŴ/n|Buƽ}| J!/o2_(c>m/:1߽6Jg4}v9s+98(wQ R ׇ9G.B*R.fmxnR>+dRXlٳX&*&RKOlΑcǒō\~FO9(M ė\ۿCX+FNCi&?Y}ٗ rv),;N¶_왈Pt;W}$uщTG5S=Akg뇔`S 7Њl2iP7a'׋0q51l l3y6g܀ q͸8\ kB%IX3Z\*RY{͝M5\v)D=W dUOM" Nz._YQX~71G q~עtnټ>2IWb 1i2l||"lbjפ;~SrRdR%@s6:?|@^)+:-MogT!WE>OяQ&oՑPz$rK@2kS<=DK-`9*P(zU.U ;oWfGBZ8<ˮTEIgN@7W%3_w҂͙2dKZ\vURmŸV㸩o( r+v[t4^/?oŠdOf}T8\0B-.]oz#(Iǧ^6~ãq۷YŃI^6@c . ls5'ډLdlrݏ_u6/wl+%&Lb(e^G+ \^SoȞ-,_#_ٟg)ؾNh߄K8¹#pMMRX>+-ʙYdSǧ#T<`ZᐜRyjAOz nŘSt_šChZjw ~&q*,G@wմZWB̺UKEj2vk/˶6brO!An}_2v x0.9< wߐp35R!*"4ƩCgsmBK },vd|⎚k01* 7P%~x)/ݞ}ϝ/_ o([mcKq[:ld gQ+ڛ|:Ն_dZJX~{?w6%x7ӊso8 CNWn+8Hdi^!KC|iC W0&GA^rT95oG% L&KBA51w$Xaso:\d\6T XaѢ5K$^Z4P SXvtR BBHh|י40g! ઻㤅}ߩF*ZY_N8r`)s ՟V e 4cQE_dkgQ!=>Uf`ÊgsCbd^}Iѫ4 ?{ 70Ghj}3/nn-OQ_",EP} iP5L8]cpL0A O#2U*31(0[*tsʗF{G>Z:%ڥ-ӎӿFL.KUtʺNkµT֩73@%V,8Q]'ܟ g݄oK;'|U{ckOf3J mnH\ԅW{ >!g^Iݔ0[RV&:k4dJ#L Z4Ӹ0=#ViwLT ҠSU+((گ=Ps dXr\>}7 w,,:ˣӋ G:Le4Qk4=gjzUa93rzys Y>d;W&u̴%f(}#F¼pJo"-oݯSz*7h$\NYOx*QE]~+mɍ7J4V͵x.#s{X*si7:n3G$Zb dIarA[)ۥ n*t,ׇ*+Q M{rP <մ$#*l̒n/㣏χPT(N'v #mZҠ;>ԄfJEfWRj "u9TuEqC Q18%l}*>@pc`!fQߦVǔW $".{:!PL4D77+r>+R&"lus{,K޽ɧh xǸÜ$JFT6[)z2LᒔrNR}p J HsRKakHgJ/X?2Vb{ KڠI</U:+HCߑL2#kECMU=s_\#"[ ?SZ^~.VeBo]RX Y:D~u;XDMsUVCaHg+E{H'β,J7PCs1hv9V=~˼m~B klIH c&C0)6 =N[9?BN["Mi|ߐ݅r>F;_WSNm}h?a[epWIv9kt / %qoLx&Wqah0UYSߙzlk4Y:Tw47}{kjWr$'>@@L3 li"^1O@bJEJS|_kCkd?Gb/&EAEڙ4t3A99Z^-K/$$T(|aboZCpMZ&"řa_2&庥A:PN85wpNT@8z78o;UAQeED3UQI9oI=x܆z7Vf @O@c0ɶ:2ӏw4d+>^QR[q >7FA ]kEثUoA.w.[º\@V[+\sE<”,zyM %wPV\("'Ңf;%6M[έ =W6Ygo]#땒!'U[as7fM_011;ELM᥄tdp)sdB4p۫!'Ox;YM qX0IRhr쾻D_Ě󲂾iUl^*ݩxCM5P%lZq **ѮA '!߲Ήjo2:PGDT֭֝T򌅱OJ/\ \3omB{CEq1 h5'Rak GEv[XpcQ'*Q!ŤTbO6IE499#n [!%g3I%'# '/3GDPݹ6%9<'`bU*NH(ȔW`q܌)CT_QA5O%Os=z7.v<4ԘXY@zmO0 >kѠ?qߠP=am_9(8Ux[LK85U&>OA4f:V\1Y$EDՒ]p^⫠ cDS$e;2Vอ&ؒ|X h-y_EkEsbb7y !OwWaQI/ \#N# C@fL: YNms>HG)f;: N8-{.aLF $BRJFţ']l=tOv730x"(4c8 [Ǜ"rJ2IjGcN_ڳ?{Z Yd? &[qBcDD.t%nPSOiM:7`2SbY4nKٺ1L«%Xb{ ~ t1Z/UZSM>Ǩ s뙔C2č iK pYDaiYZG枡B@u({3Bu4z휂el)'MY)򤎖| (Ҭ=]Oâ.ޢS+)S1@2E#nH  ]傌vFmj"֏4#y:y) pæ2&[+'A+@ ZْnALKnKmhm冞ڪd Fy/0+813dOH$*7rP-UQP6ey(KpEEEXp ;JۇȎ ,)}ЋT{`ݣi`ԧDz^2Xy٭_u"aPaJSYcM7 3-[jlBfۿڛȍVH 3~PB^J;%ԘH9nC.7t96~a*U M$a vnlݱܺ^C!DɿKere4o 3H T XL B޾|ғ_#n 3&@elP "5J WG3X_Y2Y+.0H]MhbA*B3Va:?~셞{:pM-A @JV.7 ި><ھmR 3H\h\.AyKTG{% `owH#-dIdp4!*^JCr) 1 !{ UծnC&S-7k%^~8xĭdI/iq{Cq }.2BJf?Raw|ꏙÇ RqwW(.і]o_=iNe$ݵ]B:`] L3% )-mRrur{2DjznMnጂUATիv^G5TfU(Gp`I? XмGm/ ""{׀v׽uX9)8J]=Qǻ6Qid<]XjOrѷca?db;- :8YHfޮu"¬n$C .{z g1|loy63 2p?[k}x osy8Gw yqLOK @'XX>5ƞ!Zss?:`fɑp GTQ:7 fވ>eżuR ؚ.lwr (C7U15N4@w#j!iNanH"{!!壑0au(uߢFu–?f[Dw~]oMo.i1:w[%]ErpaÏoL'pc@26O>^z<<Ģnj}n1BN'\h' /k۹l]yAnC٫_:ܿD͵zm!_55jJ% 6#_./dE-gcDbO $E׶yƩ|Xߜ w|JHI;ڪ`_FXڌ2 W P #ᚓmk-Uzt p<+WXx"t4 gb{5~we;2~uGoF>1 zu朡s𴶾-tmA5IYyB1 V[˛NiLfw#D$̫ q˹|rY>vVjT/śuN"!MvV9pX6Lk|):ƫyN\ ?Ciζ)G^TC*m ւluޣ,5w 36:2 70w+d.ݡ8hǨ L~nHB@@d@*gjkn: (5.37hej=?Cz)/e} Wcj+ Kkzcm5/3X.W[Ip' uGK!|%[qل#zQ]=%ADʎiف Ag/QxJ70/|7ҝ *LQV1Ĥ#˜~Z|dg/2GZ 3ZsZ5:4?x>hMKY%cidrew-'26U;D1:7-װ·-ҬaͲ7"~| YM'HACita岏Ի/=x| ?B&kd6H<71M_p'.b,"jʜieFehvUC}`{|ܵI4YU݁H$@>[ݎo:72fN9EB>Ǝn֑Uh{x'Rt@PvY8M~BVǝ,ګsxaFrCAm s 1zWW[v\M@> >c3Q2 9. zޮaX40 ]bpvw=6]e 0!%siRpuk/2=˗_YxaHQc14zgD  W8]w ghtH  0&S VB Cu~]^S`]![% 7g=H4m":{`Y9"w>vԔNWS4q~}ݫhchl;&{C# WE;65WDU jW{Kˇ `y čzh89xzF΁5tGC"\肤܎%MGhnvs\-<5Rq<\/}Bo+$ix dX?$06ҷ_ʕM P.AHT zZz\7wa~+s; ECqS_=pxMIqfxŖ "XN/:Z֦hI;٣X*>oQt(jͺ"CGV=860jZ"MN] s$/fd+zތy=)8`ESҮQ͊X8WU ]LEGZΣhKv ŸXZd1i et'6^&D:GC})yj4e%ߤ(Iqۡ/WήXE"4:"Basv ldSC<'RR|@\/:_ :Rj3Q%98(]xUviJj:O K:ֳc?ѡqZv(?q`$=h8 -MT+z~v=_T=ؐGGAoKySrfu iSJу̊2N9@59WįX*P,&w^Xc͞:՗.zFh;T-FvɱkuHO=NJK$YHmZ}l?2Å{M9ML_2JO#ITכ_{VkRd\Pa$9Kܱdj<)SD;Rq/Lt=7&bb#<xD'XIl݅C{/)b*d$i*H~&OG}󟇽 ݋ *c/UL6ֺ2ڈ}{3iO^q!+rwE_b&A;_Y]E"^^iW3kn6[擎45Ps@8{^⒡غ@!x$9iu;-duYpT;뜙SO:='Tfiɏ+:lQ0RX!= /a:a(:?GL~A-򼜩D'TD"ZO|DH޽jcH )O0Yyu̫5T(E"8Eɹ(eѿ"W6GƐүFMD "*B@:̲% 4lڠoCGomXWDdbI ~*׹ hnU82qP2 }Y߶d^,օL_>Oa^gK&&*喐b!,>ђM!,лtA|B r #2%Yhj|qe г <-Vh2W:|GAC- ׆Wc*#o޴̘jfY' Vѯ/ip |sY#j.G\\<-.tnǾՠru$*,sðl᷵9^zۓ8mPGR>^^Y:O7 3ƌj@{.2o `A`ڒbwcH?ҺggB#r@3wdpq,nM}{.&xFW!v](ս\FWЌs`[UTr/8RdBH[Pڹ/Ԩюn֧K ƞqw[9I~"PGdQ&Bh&u(k.T9-" )L⡧]fPv qs'LܗxQAae3l"IWO 5I{[s9k?3h> K'-wM_*gmmHs itQe{S3%N0aTkJm5%BF}b{p, Y8#BUZف +檶9ODcݵǏy\LY& _m=Uϥd%^TN*dj]6{q {RR?R҄իZ6@Ϋ2wJ)'s[1=Œ*l.ޞ~ZJF7^{?|a-@r1:"UwK D8:0?Jυ>'Nj(n0kӑvfܖW;u86Fqcbb{U`!YUvΑuS#Gh -EQp#U'9O1sj+c3-~F6ڐikHx{\ HN*7nsӤ?猔 :|:17*>/rLT ݏ9Wu}] hߦ5t=HB4P'ۦ ¿v@_Vp4 `NyoR>#p93Z.4t}< $tP_0Aem(ʋ0R5ǫ˾s_ V'j{"X'Ew }LPĄ^K%\!)j!B)!d7vHh=5}uל̦&/ 74-#lHJf/CuzBδ-F/8_64OO`^L!%Q.zXL&oؾ}-c|L7G#%)RnErG}\b=]G =bc.7McKG=?LK)Ŧ3TdGBd0F}(h,2B/Wڈ2Pˠ '&\qt:ӼkT!9b9 Rkkc쪤6>~+z5OOFx>uP{hH`|.S[K%S)mIu=%^pk7w4a zV~2r0 p`%-bx˓>"0Ns[06(k6>?jq.խ#yTˏاί̲U`ޛl< }{G[lp _Xj;刿defI[AMo3=[SfN SnmdFIj=:QE'`7f9SRdFCK_ q;o/;-&# u' brzi$i6ԩ(u3&(r"HNx=ݒF(H@PBGVPO8nWw7r.^`55ʎprlS`?75cㄼ8_J_%΃لi޷N\-5r"oEAO6\~wM\{C~Z0j+JJ.Oz=P4&nkG-8~ :7QG]q$-X!ddoZmT2Vz7VqA(bL4Ml[P %0v>Xo4ҁvM6Ratjazf[>JR#7^ⶈ(;qNE lعS3 rY'[f ;VX b*,Br}.Un 4O<8ِA" `!?PNd 徤6 ֊{i06$2xk𗌔;Sm82֧`Ny]eA?ƥw|,UuNI 8=-rg#DVx* Y?DZmۄ2ӏes^X;݀d!1WAYsubdxsڔ|tU} (8.Xi'6]dKQgXpfGp@+n=pN10kx,2$9߆ $i|o|8/jQGC(.v%!¶ mr kSSqwӫiBWzMqMG7fbs݀h5_Ȉ&0i@$,XbDb=`,`_W;,ۃ7Iw(*Fn[ dK.?Nm7)Znʠ~p|r ̠oq8آAձhad#8wQ*Ԗ}vCT]I\,VĀ'b{vP>sׄ;"0;^-|Mh.: ;dGϐ$DHYf|7eGKsgw@ǀ;>#$j1j񛪯[o7! wE"3H҂Z;Bݬy#%zhd9șr H8'.?'yQ&Sd5Ys@iOoD.Np'N/KJFS>HܹŢxi T́I. WJzXۊVCk7[IBʦLkcXujC?y;A5ڿ|[7@o?hofe=L)NAU(~E ?+x.qH `|7}JB#pSM qj3Vԧ+mz~P,у:4 ! *Ưi˲; In I.7)p>0u bl`Z=tjv ;Td}jv@8=K0?mo? tAK9opi) pmqa}kW鮅OV$1ނRdFUvG>9"Hjtu#*ʼn+/:>ᓣ%|O0/MhџW)%hcåL QUU*@l4:*Yx8tR' u]h;[TZYCŮy s dQ >#n{NZV55xV*3  vFV6Qr2ҿ"Vmմd-c~j,P@~=.^z̝A36]U0+WJMLf+9P_fL <8[ i $ոD4n%L!i!dM@q4G?oRңIrCFQdi0u@<5No' daݹ)1^=a!|ıDq\ޕ{|b1qx饫Jd2ܶ96Kٖ׹5[6Ue`*pZcŧrUM-z1blDN]m$8o:VBd_U V3)BZ&8%"*}TL0M;R&|%4C%i Ic ԝ¶?Blk@ߖd8&VRD5*v.9t Unĝ"<%%$̛g9{*o9JsQ*?}1 G<)Z$^3|d$XSmF7+͈LXRQؖu".OlÈI ?$hrA7ML_dg&k•o!R Q†Y@=VJ1hqdb-*2`IOJ?qXnGG߼P")9/Z8}BW1UtaD<"lX``jBƩ\bO3z0 D!|Qq?L1A#1 %Cu>ub_C抐ۺ{3r0KQs 4n}ԭ RE넝bK@J)PƋ dˌ@,-.B0ıyM <X@7:p/:Dp$I'A[%%k;y>ڱK$ ^; 碸Sҽ;Ӈ# bX$-K&q1UeoT;Ϳ.+WK,eǴkC z4N$ژ4>TL`3T#fN|T݅v1"yPٔZYV5dҎ1ɖSO(BqDg|7*aѽ_BZ$g?4pήkZk"4{ C2ZΒcKI%<K¢K;?}*"E;nۥ[ʬןB֦Ez-c2#o  )!@OX7u8=,e}@~9 >'䳎"lo~*:̖1Pݷq(o@`0iݸvYP]H+*|!Dܛzm}