summaryrefslogtreecommitdiffstats
path: root/perl-install/common.pm
blob: ce86aa4a60264c62f7185bbf8fac73b4f7cdc9dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
package common; # $Id$

use MDK::Common;
use MDK::Common::System;
use diagnostics;
use strict;
use run_program;
use vars qw(@ISA @EXPORT $SECTORSIZE);

@ISA = qw(Exporter);
# no need to export ``_''
@EXPORT = qw($SECTORSIZE N N_ translate untranslate formatXiB removeXiBSuffix formatTime setVirtual makedev unmakedev salt set_permissions files_exist set_alternative mandrake_release);

# perl_checker: RE-EXPORT-ALL
push @EXPORT, @MDK::Common::EXPORT;


#-#####################################################################################
#- Globals
#-#####################################################################################
$SECTORSIZE      = 512;

#-#####################################################################################
#- Functions
#-#####################################################################################


sub sprintf_fixutf8 {
    my $need_upgrade;
    $need_upgrade |= to_bool(c::is_tagged_utf8($_)) + 1 foreach @_;
    if ($need_upgrade == 3) { c::upgrade_utf8($_) foreach @_ };
    sprintf shift, @_;
}

sub N {
    my $s = shift @_; my $t = translate($s);
    sprintf_fixutf8 $t, @_;
}
sub N_ { $_[0] }

sub salt {
    my ($nb) = @_;
    require devices;
    open(my $F, devices::make("random")) or die "missing random";
    my $s; read $F, $s, $nb;
    $s = pack("b8" x $nb, unpack "b6" x $nb, $s);
    $s =~ tr|\0-\x3f|0-9a-zA-Z./|;
    $s;
}

sub makedev { ($_[0] << 8) | $_[1] }
sub unmakedev { $_[0] >> 8, $_[0] & 0xff }

sub translate {
    my ($s) = @_;
    $s or return '';
    foreach ('libDrakX', @::textdomains) {
	my $s2 = c::dgettext($_, $s);
	return $s2 if $s ne $s2;
    }
    $s;
}

sub untranslate {
    my $s = shift || return;
    foreach (@_) { translate($_) eq $s and return $_ }
    die "untranslate failed";
}

BEGIN { undef *availableRamMB }
sub availableRamMB()  { 
    my $s = MDK::Common::System::availableRamMB();
    #- HACK HACK: if i810 and memsize
    require detect_devices;
    return $s - 1 if $s == 128 && grep { $_->{driver} eq 'Card:Intel 810' } detect_devices::probeall();
    $s;
}

sub setVirtual {
    my ($vt_number) = @_;
    my $vt = '';
    sysopen(my $C, "/dev/console", 2) or die "failed to open /dev/console: $!";
    ioctl($C, c::VT_GETSTATE(), $vt) &&
      ioctl($C, c::VT_ACTIVATE(), $vt_number) &&
	ioctl($C, c::VT_WAITACTIVE(), $vt_number) or die "setVirtual failed";
    unpack "S", $vt;
}


sub removeXiBSuffix {
    local $_ = shift;

    /(\d+)\s*kB?$/i and return $1 * 1024;
    /(\d+)\s*MB?$/i and return $1 * 1024 * 1024;
    /(\d+)\s*GB?$/i and return $1 * 1024 * 1024 * 1024;
    /(\d+)\s*TB?$/i and return $1 * 1024 * 1024 * 1024 * 1024;
    $_;
}
sub formatXiB {
    my ($newnb, $newbase) = @_;
    $newbase ||= 1;
    my ($nb, $base);
    my $decr = sub { 
	($nb, $base) = ($newnb, $newbase);
	$base >= 1024 ? ($newbase = $base / 1024) : ($newnb = $nb / 1024);
    };
    foreach ('', N("KB"), N("MB"), N("GB")) {
	$decr->(); 
	if ($newnb < 1 && $newnb * $newbase < 1) {
	    my $v = $nb * $base;
	    my $s = $v < 10 && int(10 * $v - 10 * int($v));
	    return int($v) . ($s ? ".$s" : '') . $_;
	}
    }
    int($newnb * $newbase) . N("TB");
}

sub formatTime {
    my ($s, $m, $h) = gmtime($_[0]);
    if ($h) {
	sprintf "%02d:%02d", $h, $m;
    } elsif ($m > 1) {
	N("%d minutes", $m);
    } elsif ($m == 1) {
	N("1 minute");
    } else {
	N("%d seconds", $s);
    }
}

sub usingRamdisk { scalar(grep { /ram3/ } cat_("/proc/mounts")) }

sub expand_symlinks_but_simple {
    my ($f) = @_;
    my $link = readlink($f);
    my $f2 = expand_symlinks($f);
    if ($link && $link !~ m|/|) {
	# put back the last simple symlink
	$f2 =~ s|\Q$link\E$|basename($f)|e;
    }
    $f2
}

sub sync { &MDK::Common::System::sync }

# Group the list by n. Returns a reference of lists of length n
sub group_n_lm {
    my $n = shift;
    my @l;
    push @l, [ splice(@_, 0, $n) ] while @_;
    @l
}

sub screenshot_dir__and_move {
    my ($dir1, $dir2) = ("$::prefix/root", '/tmp/stage2');
    if (-e $dir1) {
	if (-e "$dir2/DrakX-screenshots") {
	    cp_af("$dir2/DrakX-screenshots", $dir1);
	    rm_rf("$dir2/DrakX-screenshots");
	}
	$dir1;
    } else {
	$dir2;
    }
}

sub take_screenshot {
    my ($in) = @_;
    my $dir = screenshot_dir__and_move() . '/DrakX-screenshots';
    my $warn;
    if (!-e $dir) {
	mkdir $dir or $in->ask_warn('', N("Can't make screenshots before partitioning")), return;
	$warn = 1;
    }
    my $nb = 1;
    $nb++ while -e "$dir/$nb.png";
    system("fb2png /dev/fb0 $dir/$nb.png 0");

    $in->ask_warn('', N("Screenshots will be available after install in %s", "/root/DrakX-screenshots")) if $warn;
}

sub join_lines {
    my @l;
    my $s;
    foreach (@_) {
	if (/^\s/) {
	    $s .= $_;
	} else {
	    push @l, $s if $s;
	    $s = $_;
	}
    }
    @l, if_($s, $s);
}


sub set_alternative {
    my ($command, $executable) = @_;

    #- check the existance of $executable as an alternative for $command
    #- (is this needed???)
    run_program::rooted_get_stdout($::prefix, 'update-alternatives', '--display', $command) =~ /^\Q$executable /m or return;

    #- this doesn't handle relative symlink, but neither does update-alternatives ;p
    symlinkf $executable, "$::prefix/etc/alternatives/$command";
}

sub files_exist { and_(map { -f "$::prefix$_" } @_) }

sub set_permissions {
    my ($file, $perms, $owner, $group) = @_;
    # We only need to set the permissions during installation to be able to
    # print test pages. After installation the devfsd daemon does the business
    # automatically.
    return 1 unless $::isInstall;
    if ($owner && $group) {
        run_program::rooted($::prefix, "/bin/chown", "$owner.$group", $file)
	    or die "Could not start chown!";
    } elsif ($owner) {
        run_program::rooted($::prefix, "/bin/chown", $owner, $file)
	    or die "Could not start chown!";
    } elsif ($group) {
        run_program::rooted($::prefix, "/bin/chgrp", $group, $file)
	    or die "Could not start chgrp!";
    }
    run_program::rooted($::prefix, "/bin/chmod", $perms, $file)
	or die "Could not start chmod!";
}

sub mandrake_release {
    chomp_(cat_("/etc/mandrake-release"))
}

1;
ay~g.uWd Xg%L;27}lZ.')xc)CK41i%cS,+s5 Ĭ$֭CUa^iYA>.oZA4G]Kh- KvAg%mFZs}!=ϼJn@Q&1-b^Q4Z87$ڵ] ER#=BԼF"JD8]5jH_&PyxfJ9I6e~mgx#uEhPW-6?Rjgs7dDB;!~ ԁdm\:ÊfLrSlDax&x\gvpj_9y 1KYH~|uJjf?0f<*#.\m urr qG@CԤ anä|-T,Ed#֡H,a[}\*_V y)ूOxTY0)^ PaObzpwZq8ywmqǻ^ןPu6uw oEȡ:DkTX%d/O.'jx6b3cנPT phzBxRjD i4VbD> ~Ɏܘh-vcG _?#nac@=0Α(6 ߾Dm; yѫ Mػ/3pufˣ' _u .6Blqzf6\jcbBpgޖPѕJ/L?uYNR^ŶMM8 ";MqzFؗV*fyA^]g&D̺PVVn/>mݪVI^QnZ,G;Ι+ʮa7ĵjkUub$i2?Nٚd'hW~כQ1nUśFVreۘ~ۥ|d4j/an~?c^ "<-̼˗p{?}=9谹- ߞ9aTZ{X].1*SX4Q9a2Y8M_V}ol!w<6ųozao S>m!(ր-m&V5[6QnȓBt;؀Ɯ(B>;7nTk?SD8eh\'`rK %ەp&h9؊9+( /.~*9nKxO p/VdeZ?7a23.˅*doKAԦYFЃ%)pc4ʣQ?~tCjY\q [1$Eyn(:Lu{38<_:ruo ׋J.Gܪ>emuE臫B[ ;2CRH=#ZELnB:ْyw*Rn1.]kQSM҉Գq"&aVIxA2a>AycL{ ,UG[y4o4 ޠ!RG;~F6v*Ҧ.2Әf%F7. 4VE2!] K:4;dh_jM (LکqGPt߈ i.J5`1.hWUpB#Yu J:hlU sՔK"iJΐ9De9_ #+4çrKkЏ\ | E(aHu+"XW}&Y=v+W;_ן<QL# wf~'TnAl˾OZ K/kEPsoc<ӕAa@7!<+&'ebړQf@^E[ɢ Œ*&9UXjJb^'UJ_(0:UëW- DmkTEa䚮E,a:Z~jQ=!,m:ƥFiD˩a7b>?ԖeDsh~i +9VS`P`r^$!21zV-U+`I],sH,HlaOnx_pb,hĨ7ob0zV(@a\ w %$+NH'_bGIR@ҿ|fm_MXv8J, -Nӷd۪=A)7\ q6Ar!unߕ>VC[# ȏFµl'W77 d]'蕵7u@BܙM? TT@}VOomCy')nP<ox55| "Xe({~ qpA}f 7AK@PImj=_nC9܇(e6̯(.Dd"ܔq#1uQK昪đf%^^-ͤF1Y/1 ~9#ȥBf_VM*kʃ* J;Η:d !!O9] EQ} $V.NɵU1Af58n{l%f=!IpMOaY5C}cn0G HJ8 &Y,f[|R+m jۖ{NӮiJRttIv̞qPGrl\h)mA#*"~H DJLaÊ4DSl__2Vy4+dO̗aô+KKG<琷}$+(`ļ/[vK`w8}jCz n]C$syDV2=Y5vEtF̓UѺ#SHO\%3h )#V4D3{⛠v86Wc6OpϳXָd$*Nk$l&J@3$rI|_np^۱;WhIjʱrx{1fyBGm42+7C/uh0/SԈ.PlH﫩OO-\nW~3^jEMvNOM/&JLO\3pCs`ru6"}/ K å5I5 ~| 9S/"9u`oyl8igKW#CI~?OK\'+犿tT׈1 ?DЀan>6M&%I:xε'3Wlmqf xۅ ER@{h5$I]i"ZHc^}ŧ/'&i=9Jh\>R\i%~[aFފSOms83h++Oq" }0v`|PʶPpQ@O9!gVڵ"Ǵћac옘uUVP4!oH‚3q@[kd{`8];) kjʁ":8')ܺ 6Qh6@9 .|2A{y0ή$/,rIeY!9ɺD== ԔzJ|1;d} zAiu;bbR!Gu8 RN2}~|ԸDIfӾC hh|+kn kfsfjk6P;fuB5(g"|P0lz D-8A&k~N" &cAO'pԼ~pbRY>xw Xp1+wO^dW=U-fM鞶~\O̦GrϊKz[bO-of !@]ojo^̀A!i=`xJGfgF1Iļ;)f5JovDt-h\a2?L1d2:Iw]%ׁvU 1dׇ[O_t.z):S|3$n59P/|ύGa*vt bi8L ?rGZG`Et ttAxdy=&:wZ fr_]npCɿ6^  Y~%g9޵J5/}FXTշ6XI}H z>[sqj3*ψB vp>]$NY/eXmsy$Yv]s62֡GTjt{Oj"!0ʡ~Cuh)XVOw 'K@Gr7Mh)3 : v+32?N٧˷Z/ Uث;\3O$}0Ĭ'Lp,Cҹ7,[±Lyvt" 6?fqe*@E9IEVTt>b;،/ Bf܋&ۿ"|b$]np6BE^v3 %HkKE_B i^=׾ieijȅ`fp%4WڤJPAF;_SXCw4ވA*@?&9\H̆ǝpΰuX'?Pz\CN,[iA1f5^꾮 weUMP}/4#9S(iYS)&jR԰6V]D) ^HD]T~mV‡:(aG*Ҳh` oe/=3zaKAKkk X'#IQe83Ü-ʲaod5#MFh*YđnԾbo%.N r Ou&SW2ѣU>+N_N!&x ^/Njܥڞ4Q g&zaZrx$h/z@O(|37!1nR}?}L{Of A :ǹ\wq {H7L@>k5Qe̕}-勫ܴ"ql1e\w.Y3ڿbgKiV!]GY{: ~¿glѲy';)Pjt5K֒KI)~VQzj[~U-? )ôu5  >ۙA @]<0{h\8qkJc'B1hdXHfB ـ6ueؔəzTzw;{,%)9ڈ H_أ  5G!𳾽>&%|gQMhE}Y+[9gAy~ `p%7*<́8$ ׌!{:J_g&q8n[ t~cKD!a9T剗7k8'Z(j ڢJ]%bwTkz s3۷Ш ?1ݠaZ%6F;rp|K2J=TGJzqDŎ9~?ackgy}1U`6?i`tDzjP7=9c0c-đq'iI9Y`u&XAw d"HX3LHpyox]@PXٟ]#^>p$\Q4җM f 5=Q1acy #ڋXhPO%f۶1ڔ6^ 1Aavm2Y {作,Xq_`ct\ė_ %,ivOI @*S%2Yxڨa)kc'uGTLWcCkrp5ј%g p [{(eo p\ _5?JF:C D~XFJ!s ]iV"(LesZ|m|q]SzqFf1^F?W0v;s7 \)VR>~UY I}_k3Hٶ2yj&ۛ.\V Z_~. lʴY60glR\WqDڃ?x}U.%9 aicnZ$;SM+{p1]P:0ν21[+g;XILua;ٷ<U]nNܯ^)]|?p܎?念;zr{vΠ/Wh.}"hgۦ#q6)D_/e^86a]'+9 fDSUL{dvZ?gxs}н#7ET.{ FJ+c$.P fIUZB7}=2y98'pw[p{l.`n[G(wv!06Tԙͩݴb̯KE8phģ3<s+#kVW>nZ_6nDUz' bI게%:"C1=Ę'2q-܌^lse7n'[a3lB,rp#|?iϚKHtkH*tiwWFA(r.QBA(D,׉2 &U@<}ӌŜU1[Xﺞ/Zhôq3A'#bZ՛Gk+P,gRˠƊK qվI,uq|roZi1:!VmkRRx<%J|)z]KyMMi =)4@@g٬f7ǓېGTD`8ڕ(`+q [V3&<3.|H6V['Zs&#S:^G$y E6%>cȈ'l/@Ors] JvƜ&S:$y\u B,-Vq@z37 xN[P#_{-9 Fa.&IwO4C:@FW 2* 27#z/ y17}COd-\R,7x8o&FA+f"OZCD^\(5'V?{Ƚ9Bq6=P:Pj|W=אp 4^ /OWwO UL]PP.9(gb'PMş(.yZiF0]jciѝ]r eT5m9L&Ya7ݷIVd4xޛ<>]uc nfؑ`)}P!sNO`6r'򽗶8rS`hRFc-%Hʲ]yhTkupy5T"x}v}GX$|d69?m$acDec-#P|O '`&=Su_Yk 'i va-_eZ%8A ݒv./>9%9fY- Eb @bU5}Sy]zn@d%13jڧ9VU+@ .Fv30fn_\oTFTMt^A^UKT>HΡŵU[pm4DmF(aJ2\;|$C3c av.Dž f%2)BlC9ſiMzIC2PD**|_evՃ 8{ x.E_g̅^O$j2`gzNAw9W$\$_ApV``s>1B9,on&CT2̆^ _W<]9:Jh=~k3I YsCd?R"}tKyŗ "/ ?oL[ȥSUy@ #۝fb/DNB|űA2M?9)wBEsM6rQDIpʀ2>ʮG}B'kKоXס{|mn:6aR!)Kᦐ{a[٧q@[~]߯"8_͋_|(p6ar|6| f#T*9pt¬Z- rX %Y!Ki詢:o1e0\Fe_gd{~ʠ tSԬ;\Fm~Pb4O_t;4)\~SG@pLA6uW=T"TA(rDGyuւf-X mb9l.{T"݌q|,K~] 3T$i0TG,.w#SWIt[6;!g(L L*bkw?K|6B [6Rzv֨ARk=T^VVz5dSRvءY:rq"h">=-g)q gT9巿b*Զ̀e2͈K E+CF"/0Q*'9P%E/IiGM5Q% F~++炽fu. 8џ6kR<3R&%xc{Y6a>F;GS0m8 t2yX +(!G1?Y3=ƨ:Ioov]V^!)+WQPVCNiofO^W@0ͶЪ]3Q ?6o o=(|체iq XpsP]:g~Lt1fn?6%(Ǐ؅vcaiZG@l,J|_ *3_8-i'w0dMKpLeV1/,zO g[D:N974# fpO6}PUM:~2Kаc2L6KL G!X-UeI=Ҿ DkT'xs|oaLltU:uz{ @ț0k%,,p{tW_{ "j]F`Ii$ޟ"yyWZ~d2gi( ](7m2S5!fk8agn\uv 'E֧߹r/V1>4/eE5@k\B%Ĝq!UaE}sa_\h;dCH+ i):C( %&C侔+]|<.DGŹH+-Ƥ4 *SfI hP7˜g1F+*ƞd _@W,J)!%%0w6]d%l"ppP"w%J^1{!;6B!1J_'(!jn+kxx.K^4q8\$r抌3P6EvRᴪU%A3tpUNX\%Al_JݷA/HH VruRh2"K@;))̠Buݻ^UHRꇑ ,*IZ?̑`|gSrҋ@.ëM;uG炦xuahnLnQ:)܌ƴWY\0} XS|P醿egd@d;O/B}x,Pd3"~lg&[RuA ԱW֝ .*q aTfdv{U`;l;+1mE':oz`)1aHIpw3Ĉ&* oeIb3Rrt|394U $bT/q4Ԯ0D;6Rxhh$fN4|5j$z nn7)*Wt[#'C0&KmuB/d. 9Q)g:{`${JN*mv8uds s5Υ$Fȼ)v&YI<͝(ry޽)#mciv&V6 Qz.< pP^+[-Znl0A/B4lAutBAT-ٓ""N  Dlن2[zߎ^w!o9Ej[ܦԝ=,0ƚs(Xx+J~ewQ_ZqJj:m&׸ֲ] auFxzK8o@60qqE7*U(\AёtK0*Ykx0ZYh]'+ceHhQJ[BZ`ck[*k s@)N]#%nH,ۨig,δIW>XclYwNBe8FXj:ZAW?xX fk͛(iOК //@@-97V "0ͬ \}l}Ŋv M93¢!ę?$ SSCY'yJkn`3hPCx[nf }W΋fO,|0y;!#-_6AV +ϲ;(}&O/8›ItOe|P:Egx<RnE>I>}=3V.)LL Ni s#Gn2bsG"F -j'u/9C)h.&?ĭͽMsDVev,LUǞ`]4D#~;0OOYS"ZE%%A|UGDRA2bQhl>M+T $m@m`.% d9(,JR, WCmy~ q×}-*\:W9  ֚mQPA3LhRl1j84׺'dO@AʠA]= u,hTkR84j՛\(#~dnapN ^-xǰS6BzvQx|hRNi~xr$l/%'grP6ʒu|X=vBm 8"eNE$n)Az%sl,OJ]m̟8no(:9`pK*})t6[A}RYv:3 ,A b2iH[Vt\>6ZN!~\G冺rX1(xzɊh`nPQ| @"<xZ/c121b*SO۷[]FaRM~gsa]W[*)ə(!φM5ogKMHMtJpEc6d湠\4~iVyМ5!qA3<* P|ᙱ\}xekAmwpL_TF(TGhjQ ҩ⨏BD l}ݎ#~2cx=SL^~ޓmN[Cuq<Ͻq4 ^3n˹# &tjQ͍b2!V"$S8Щ:qNu 0tVPѧ6@DYL)?Gm>f2_#[z TsA+#ț5=|bUݤ{hƈ^$:3.;9|TPSn_ mr Hs#HSc5ehW~!"HC~X.? xxOeFcR벘XcC9 RWԔ6 ;5I4wD`^ !~ .I 2k$, ,aJwxs4GJם0^:%K|٩_sˏ&|0 "g~ ɸӜۉxuKѡ*̀iiTzP0QK4-C (="+IsD)i*lY"Ⱦ nqD}캨tUB[32 RҲP젞*F<uU]L~7ϓ5)ǺǙ>_Ж lQQU+L$݅\p䧸"]xok rUyE)Z=Ok;zv?RW}%sY?z[Һ1SGyxsx򛴧6b镧Hyön#$^*[BQ1[UH[&D{0a^1݃=!xs\R- V b<3d1aN#6d Pn!CCrl-`~N/=6J5o@^"Sg<6QxL(R1J$ّI\F.q PY?+4Wb'ŋ{e ӭƹ4woT%2T=i&Ɏv,,HD'hGLOZOѪk0k_qMu׽BH3טG(>)fFI$._8{tqjMDj$mnwnATkm}l>my ZYmuegNgCc3,qvZ@NH.oˤe Mn[x6HnB: vЈ>s-_&PENM~ԮI\1(%:7DOΞMhq=$?x'h7Q鉒ŹO~1N*Ɂc }򍚍p Y֙P0ӊEBEǎ&м/ Ūs>*w1Zin@ehMiV ˤqO83)iMbSU/X=xO>*_Ju#1_oNW qw9hxy@d"J%T4[q{[ NwsƟQBN-w7""/,[51ᬽ MDǺ@L 0 @]cj541Cdֹ2@ï_ϝDSXeKNE_ #ήf/Hy6]w97hu|?U,g]<>s*bP. JikBWVǘg'=/{f{Er-GJߍ&P˪eZ <}FQl^c!>LO _l?Y<1F)DlNigXU~rI薡C0+ML̖,!wofW]~z{"pȑbx 5U˴1nQ/ 쟇vQ&?ss{n *ºѫ $dM6s"CNחh\k/oKMGza65JԤ V+¬tEz:9I9|jOrG1Υȋ2%.+Rt>G^ @B4GUEyA,]W栭50ظư'[Xv3gRHxWT t`] +xc+֜4+s!--8ReņV/Pmm/)xZR?52=oP?'0smnS~Kښ<ݝ'RSRߧq^4Zb+8:YI?WE膵a%u5@bB]w}~agkyVAی ű3H@'Թ $>b GW<z][>xJ= p"I+8|+y[0~$(aH*NRe-<=h6}? "ˮ*_nYw> 8N:F(?'% \@ƚE'}'OȜHH0S5pn ֗I #_T0!e+) [ނ#Vpb;̗ͧBoA`n 5_r|G*Vy}ӟ74Рhq/TD%xH(E Yڹ9p9)1,&3hWNd G_݀VG%+BL !ͨ`:|P4O,j%/jdaظ\E({l7r6('e`*5KOɒlupW",ٙۋ擴K4(TDŽꗀcBqg='K6`?\%JCDIiqüj349>3,neB>HitDmS-I#k> 2ڞ 0U\pmޖyz0=>uׇqU2lݪӂ## &Юy1oݿ|9*XA{GÁ 70lH %SwO!P܇<?~Vz|9Ek9  P^_ܝUe_cA~4 5&Ɍ"\഑0Aq)31:wkfwO@_^[ Ѧ|P9̃5F WISR_u뚊Ӭ<ʗi IIf6/My~(Xuq'e0V,Do~FoJ(ɳ2m.m6 ;֞t=h_=hQkMG 3?jg&.b![KV=CߖV_J:SVɄZ|9jW`^&݃l9L>#$Ɖ)w o?=#{mt^ڞao+.}^yrɦE?DCDTkv5MU}GkF2('LF{YŹƝc|f/G1ڊhvtǟBJua2aeʞ?bUu5ttb<;o%6\`s52~w#/̩<1B61;,W2i/6U˘eܟ>oFq7Ew$7B9P{+LXƒ&R-vw>GD b.6)?6dzx{ `U? p3HQN ?w?g@Nc ˼)W*:TKlqwNbjs4oO0OaEaڃ=tqp  D9I D4S!0s?ZV17 1_!;[Dڭĥl{ - !J.Cc#T )ѴBTf!7v=eLv4R^B,W !qtp%a8KߚS[0v@ZG@QG@֓fR̮tBviMMHG&vJ¸Ugrs]RU9D K0frI޷ʛ}WfS!CADS!D m|` V ao^w& tYheľvgUG^zq#g(H8Y|S}<[,5-i9jER}\)x5hY{sE. f}cr#!}鄂TiXh {d{fq<:R>:SW݋{lԹ/Kc0- ~RGui%b<⇣*K%Sα! obd[F{r(a;Qy_0vA3 ktx"mT0;)0Qx<,U8IcX,V7 `_NyC]pR̽Ka~"xQpqP$7qHֲ" ^@wc{<)0Aƨ4Ν&Dx8~!:Epn#j;Hcs0(絮'@^:e9eny*I5vdC ג5jED-8ו#v4 _?rʙuu[RzKcOXWN#Ж.]|XXlFqubyZDtu@ò gv$Rg)Kҁ*VF,q9mTT )? b‹?|mi`T|>sm0]YHߤ\>t8`Q2=2gaj;q.cUg )60}_֡=Cfۑ&TrjdnĨG*Te Gbh1J T0p]1[ZF^lF4t;mprk}zfS稁fu&k9];fl!J;܉[g@ZGLvo);Me}Wq.w6K̚ә)x}7h:nTXzQo3nv,A I{4κug+ώ/췳Mum],c&02#eDore >T2FM*edCM{ȿbt߭8(Lk"H 7X 8޴F\1E&Ǔ ;m-\ y:} F @<'q.A%A.Hx&zA*u8NCϐ>[ל|fMBlQ"XƵ'ɜ Ҳ Ht I y0([ƼF1›)v@Ց[&0 ?aՓk+~KۛeasDuO鍎\Jhi;)hՐ0jhESJ)>mMj_@6hcU&~!`Κ`];dZ`6F䅤3lZ7  +O2(ziq3aH0@65–b=,dYTOZއOpfUp_.-?dz?86X}6~S*LgM eu^Eb``k?PM'h"!_~16-+;Mn a^ϳ; plu#,4\H@##g:Sc6s9 SQkRr;*\?Si KJPɨtc+m= r` _[؋At:9qG-jL1?(wW]HZ'Lki۸6iRTwZM JpĚ&w<}[P` t'S5<ĸi8gBXO^MTijSU*9ZGI19vBy*D5J8]mGJA ok\-kx@0,Uiȃ>pL~OIID"(B1Țj$ڮz]h"w̹Hӿ?惈K8vE9{/=fzeְ?GϜ&\Z"; p>EM bГ,r"Pۍ:խIk*K;H* $z>*LZt8>qJO"Fݒ"P E2}ܢ1 o4=#v),H+h5=gAqӼB(zT+qz`4)h)q1Ǎj57s=I#ܶ6L0Bjjpq'yXk> vR"FNp]lcTtsdn] fZ 󫖲JﰘySW!I!27xKp֥J!7VRv^Xn`)ܫۍġ:6Z3"Lh5{_7?{Yk~*CPjG]zş:Z:I~uYK l:ܢq}mȄ̞Ɯ3ůY<1<Yp oCtr9^~F#*$jiQ#!"Vz/37Px7~EGʋڙ;(Rlu0{^iAn/~Pۍ@Qͭ[`ϨdO|,J3Tl]P̽2aYo=q3y]U"pw&:+̢%j*aw ݊Y<#Q<1t^j"ؑ>s_xF*cMOLfw7ʅ1qw5]U8_F !X1))p7!MW"Q†dJz ?Hu]4%6`E4VD͟_jMYxO-꜃/AyB) SI띆?m9\8z(=V®f\O-aA`}YrX6.0jc=UVqY#d{-giQuC\*bGIAjL!4{X,\ D"SudL0:8w S@,k"2萛?R ^-kqF3>óqɝq?纽l 2( T㚧 mv_3ƥs̮gN9u-dzs'QyG5#˜I_gӘ Qꂠxm{iU<ԅi E*rtJLC vYUb &[ Rk *Uݟkΰ {XrP3(\/~Ouԩ/x@)MwaezmQחghYL_/AE@:3SM/FnJq=&Ey`1|&SN&;cI4&gE`¬r4Yr*!$І,>$7=ZEYtj!RQ¯66ۏPXyw%IEpS;Wrio,=)$rPp*ձUmd/6ǜdW}o-`NNVM,jĀYUwi{B23YQ*FXU[?@+͆a1+d M S1L5 S\A `НnEլl5=O5? W9%a#~%0\L*GH7J(­$Cfh 8+Eg5"u(4ɳS^\KY:fnUXeul̒Mj3CYp~(JgV/2ݢ \Ś^K G r`-ޞ1|P?o/ 2lj2~RB揅w!Z]'ԺǽT}ǘjS$Wr%>oiԔMnyπ89$ct[5ٞx^ĕwڋGs?u@cty)‘Y͐(zvC^FmVOYf&BaPUoH,׶hLKR T gI~qNp(K^e;Ջp,] r zv衯9:L?Ew- Wl^4ShlWA4x r)6*EV瑭l^)ThI@_NaOօ|4i!^GI7׌~OHY@k,jb1lVbAy$ v@sjԫh LxZ; J!=ga-Wgp7yRip -JjeJ$[N DΉVaR^1-,B7Q)]!5Y}cb tٔh#>Ĺ5镸U R`!/UôM)%tXc=|LoYXux(8aZM4 tLp)Q!3K*n2iV'( tCnd[ F[ c3Bf-~Jv@klMB n` 9xm]9LgoG'_C`%7U5G=mA´Hqv蕮Tw nBCvz?mRs>a#?p]'alߜ2L @0< | וd8w+˨Dryt3ez _őH},S"{ysSkM=`4G??V]|jvըB+jګۗA^?D<24a [+2c\99[ s67\$|A/lA, Xы↲O)|S7_3h&QT*n8Vš$+ᜁ8ñxH 7IfJ*Q֢#KiqFq \`ˢԤ9E7:  hƧ*D# $ ތ.t;(-<M3abXjՆn؃j9wLLmG37 ..Qo@]Fr!m?b}]_ʟҠ7po+B[<[̳G(QzdU%$X1]WG_gW լ\k&K)5y* ^djbaORm!-iQcvw#ӋR"y*̟EOpe&N+3Nu4X?g fH;,9|D'9 ,x(-5"1<<03椽ɼtc,XYBʼM4LY{Y4ϲ|CRufIWk 燶[ üa:rƌA%Y_;!p1a.(Še:):j7'0U{ 녵lNW4ƴX|JUlG2ߍxdVѹmv( ;AE,jHpF疭β3#~^[,*aīf9sG]rT <Ínps=W/,nBfﮌhb=VV+h j@lzە 2=<}L=˛{VDdNm0Gw&INN ] +9YnE:hX\e:?*^/#24Q^X0Czס`ߜ^c6לu-mTyCD'xPI SYۧ W h* T +anaqrv" fV zYV'NDګ3 7P4D? YvCFУL}Z愓tM䏽"Y֔w4`zub0E'Hs$f^kлt1u85Wg7n@(/'OW,pPfhѱ[|BEuRަ /#Ms0*?,i;luWBwF@|F:Ʌ#SL泭U.Ifj"HR3uE Ń~]!C,(C5.9y[CXm״WeɟSkh$7}\yHNsTL7Euc_H[ЫTm[3ϕW`-+{)0w^)a3 G]sgx}oa3oYJbQn޼eMDWSI _&%j,i MB c1Ps< &?bb֫Mr.ɼjڛ&B 'X!e/|f03>вÉ߿v'ԚBACFu :tU3~cx|%u{[XK2Jx54OKעY8y~ ?%D$󳠟ڂPgo2yG*W506>(6!5qߴ$2F^DJ0vykRrnWgICv DiTPSeFwbt$AFJ˕"`p'lHMez1v)T0u9!kbiH/!VWqn[+LF;OW+/uOT2 rk8vaٚ:Z܀0xU M\Ç'آ72)6~"sOڍ):~u7뭘ZL\ВBgL):bAV{$)t J7f#a$  |Swef.' \{%#0N66|gU P;ܺ+ɦhӐdMJY >D iQ- Xrp7Cܻ![C X=Sl(t6o$SJq2]_-sY:^ɞ^Y_r;'Ȥ>OhO!zd#nv?C J3'woGV[Za3 > SH^u@Ą f;>Ԧ G^AmEjV*1jJֲ썉 'x:vVѡ%FeD& ͸Dk Jjh9\c-ݸ#6@1RO)>,܆XfG!, ʷ*W㹪*4G&+k}@6(mwsp)J|6a~y1EnH^hx5)H.PnX`~MQ:oITq׼4Mvс2Fw.7)y&yo؂uS+{]vi;4N`$\XWe: Pp3!,[b(_]*2k;]`iT Sigc7Ŋ3!.,[24#8EANYB!F([aʹMd$lʑszťo?7%Gb9|&!7q 6[ݍ 9cVzov/:IC-+r'o}&|D)j$I _軳r!cB#`gWSW5_N(6q.b;\~]qN>L-e Mvh4~pd )&Ѳ֩ $ n,w84+zjN:TN o"b8 vHP 'K%V Gr4oZ[7II-?Lʥb)5nwOP)\.OU*% -!\ie5wFnAZqYM;b*#1XRO}9,}זh`OB>aGGDt6}w@b2?bi/$E(CG(]SjgyT eo}+cՕ6}:$ᕒcI Jtmu%C 2(^w o!̢GoD+=_`0rt]tɍT٨nJK%lz yrM5Pr 't*Km! sfvn;9.3— B`)6~9Z1?_6jMso;3 tH\چ1l@adVݥՋoKX(fg 1Z)cǤTʰ?ȋvҮǐlYn^-\yE@Pz우q$ܠ%I9JGv^8iLA[]1XsG,y5g# ʢXSp:-/!T,[ā5p%c0:rx6нv|(jOӰKv( _]lm[$n߲b ?[& D.`i4vf>AkBRKEψoꭚ 2ZN_;*+fnGl4 ؀I)yRQeqUӯ)u:NAb؇󡖽;c'Zg&D$( k A3|$'G *ܪ.`nakFMXu^tC:Z1Ek.(t)ME`?ښܰO.eܱ%Nk؟ޱ5fr_!91KbPWỖ em? R|qM[,eRE)4cKlXGL -Cr.hy[22z553U۟%tVk7{>X5&DtPٛS5ޙ/tmMtZp( ▩/H޴~:T8A<TjQK׌GL-_b7$ ФVK+qMoWb;.c^4 HK]rbOp p t΢3+E+m(-̄1ΐ̹dĝL鿳l,HY`n[iՊclh( S-fQQ vQ$.nǚ݉0f*{Sq d%A:j"|qƉ-%fEm2K7Q19")^_:%{ݡs=(jj zb= eu$]eE@nZb|VAAGB;i//r؅UqiG](ݟ:su U}P-Z'S\I,>u]R> .i$(/jU]<*P f#AɋGHm"Lo>y^94DqGAUOFV27\A"cI(+k*P\ !“?ŋ?ŧcKݰ7qŘ}QGϠumR?R'Q"jPkI+iUJ2C-QږP4ag;q*e@բ *xCmhˌ]0 *?(\ vkN8KME؞z=ߌW^NB8'M ;M0ŧ?/2N)l P9>Ζ^ }Dfn)(81;/J,M{BHH uoKkMg\3xoٻP_$/QtqTpTrJ\%Czu{"R_()Ll)Ȼ൦mGf 5Ş ?|yR}6j¥Ò%7Ziڿ@xoWx^^i 艌3k Җ1Z_T|M./vD̮!JPyMoO7eD9Uc[ࡤRyA@x/oM,oE.WACyMV&ǽg^ Ӽ(]1p$IO!| aZPN38~NFSپ#lc*KIcJ3C=H!p9Ԥ}a'Κ$[3uS)+x#m I ϰ%M= P"e%toG'q'Cce\LExIb/R`Vv=!4@*CuE-UV|KNw(*ߺ ҴȈ`γ]i٬f#я{tٻZFƁJ:I+υ dgƈVs!W>="N._~ %UL&sٷWǙ0"N \^4c~GhaFŊ[שfx-&kH6z|̀3C''['laVfrHfrl谈-Q破 wɲrD~Mg0 ;=d.b߆X&lKފ1@G1Lݚv:?mմ[߱o-$MWpie ^ =˴ 3&!in]!Rebeny4I~7E̟ucv,Ԁ?dB l7 =5-FzV4=.ij.8̃uUr(}bdx8"}۽„d)k2o Wެb[6e!&@r'\V6Ѝ dK'V45ѣmZ-Cߜ)`NWc3ncxOs=訡 Mc:6æsuMq u~65\KTV5XXg[}Q8exr|f<ݾ1}UU/b=6k7{kXkMPsM#2gWRƛb[@`fMDwgTUԎ}В-ȯq1z" g}ʚ u |;uʼnRaǚF74jiUZd 1TVnfέbi?@^cWj  w#]{t*DGӢ帨?ibOE`iяҿERja#)Jޢ8c>V(lX(IPs YεpG·#m* ڍ6/tK+7X MdcBMnftMC~lVAhe +zlKciF[Ã{R,b5v ~}^D .Nyƿ_LH2), Vdyç"uVqt*۳ك,`<Ѧtu3B[OzbD.-;DH۟f0!haGgٲ$"nVQib$5 !@y̢pBrݙGfjﺟ W:ᤒh2?Q|QV,g7maiY<@N x2osk3f!(,`<3s]Wen$I!;H/$͠i,cGXqHfKc'43F`X/1d7,ӥu 㸹xtڷ_ ^ uN+TӍd> PK-r]gGn>~CEYN,^Ĥs/=#mEER'u!%7.Â̚a; *G[{ {SS/.X6n0*⚑6;h{@3]Ƚh'A,KK>Q*xB++2FPPN 6O:!_yߤݚvҸ$7k9$Ў6G[݁ӳGyq$ws0b˾"s+ 䘴H7(3#va8s2Dq}xƒL/L7&g>t9@vyurro:4Z,M`dȟ[V\A讆>HVimGṞ`m9ɴ{:-huCԒBJ0 h0^h raZ|B^ !BfG^ JhbC!OnVm*Y%?ֺK_Yfʰ2v"_|Fn_GD՘oC4+ SD}Jk?, V,i4a K2Lwe<7W*,o F >{a3HB[I.}Jǚm=p<qSCd0?5/l&w%iEztӨ L2L.ʈ@maҏV%Z~TB'y#}B0cAu0x)wmC$NB[n?m=dx4ם ڼ)[(&qͰn€_"oib E_6+A tk5(IW&$wl!w!`׃7Gψ(kNw-}\08J|jPLX4,RůS't*mBܦ{GxdĐMC._wvLh&#eǩЊ)\- mԤ/4p" lb?–2]Y[IvWjޑGvJqu:?+ Mk 12;). $/mt(kbzAeq aĄOdH Uk`*O\Ō^d;a*0<ӸA7A`4#rZw\T|5@mKΥ2_,Zˌa9_M77S'7ĢHrseaX՗wzg΢o 蟔C͑*9\bpEFy&^F0]9= pj&τG}agq1J{p9p=/w{ͭ:(cIPS 9}}pJ!l2l3(i*qעZ Ulp~"s'V>fyXLk'x(RqyҮ4HS9Pz%@iܦ E  ֽh@^T@|sLyA`^2g oAsx 3> $iw3;<4Ye_aq.BϪ_I$] _{HokN&M2X.W^̃` gFKF7OP"9Yyī[2B +@!^p~q$4m!O@~bHz !)*xԥ *\nF-D=ײBD8hռ-}STӹv lM1[Nl3t)=ޥo2kAPms Srݪwh4NJDr8Ϳ{n2v)@K XC5pyQb{ Ҏbמ#>HDR(ApF|Ds)N*/t>f|+*n:6Z óDIbLߌrB4&$ > ]g(tx0NV ߹kYMmrI[[Ĺ*EGjކI] p9.7z7:X˔ WZtDrƘ65K000db_$9P}ʁ[}T|aMc6qɌ@IN~hH[`0&(&0iG_Fّ*oA3,c w/f3eMjR_6n3`jҳ6PEk옔܈QYXm͋_kMn{":nWA2KVxT|hD^Jιo_0uʘ^Gh9W5pU=ia0a`DIg#\Å q6~d" MVܘfUB?4t"_Q/ΰ~ ,j;i.n5s:2?zSgt&ɑ_Czq!FAr ̒gf{pwXLfɄAz5~/>ݠ%V6-UNJm5cHѧύqk߯l`{i$H(j߈E(ytjD|WYոi52$l 6n5)oNVQt~nʳw:Oil#9/pjY$ 8_'3ģuXoǦHH9L_[68ؼ d;5QܜXn/u`+6 WNr]> ?ɫVDm-O>.<|,?٨~ַKy&{lqVTKSx'i`ԍ$$HoZY njwhS[wTw:V(87 . -fށh 662b0.ɝzӢ^]E15RPV^i6q6 gs܀v)|CpwrF*Z?@y uUc;5Ne WnMAȸDeC.BaD}D6l:7,%lzBV̨fQĐBpd$]f`fw7ڊ;9Ug6Czi>h9 n8Sikmz: D 8TT Amc>vxJ`o9(8Lɕ@}!k^yk$k,BQV*إ~Lq߅ok|E2Xe3gyZcH yT0tUR2<4˷_H U$RAJP4*l3~ y往hqTn0b# ߜFԹg%Dޯ [9]ӛa $=tNy\W⳵uYh/@!x$92>b=/qxDqu5E5*Ё%i%1.9%n֤й7s[c,k!Y8:gH!R7AK+;tًl,0򍗅D-ɠCbr?i B׽BjdbUB۟OjI_I2:U&>d::TiTzzJ[X{-lpoY$[WXu8|r 6| b|Rb߫P)dնmGK ȁ !7ّ'2%.?"^΋=jr/>N_=:Tmh4Cb^ͺ{H$9=.Eټn [RNCm7_ bP,N QU@Bn残>0]4&Ľ5#Wdd%AWNzf!Tð}Y}`#Ws"[%s~._R"@Yܟ[pI ]{LmИ n \<爧,)?!o*Wb̚IʻT4#kp{ (OW^&)60=.3$\d-u~pZZfסn蚂1t?7~iJ+^?켿c~}Ow=4K=ap"pjjhs]n\V+|gzIٱb_' DDrW`$ˑRgfbyyCېg -K}Ҙgk3[pK^<(=*P--K<:~1qD 4a9,&w̟r|MYiD)%_Ôhx_zQG"foƠ2'k׿d@]-e܍=xZ 8cȇ y8.[#lm8{["rE7^#_7c+1X!7;HJP *99a.5`8eM1gk4vEe&!+"'-:9 F$qٶ˓oSPE)`a"zh$jeW庞Q2Yq.ա 75L1 *\ 0O99??WcVhVmI`Wǃj_/*}z$NYjTmpm1j6/JkhDl><^sfTi78Z nN$L9gݳ}uY&yǵu\醒ס`Ay}?1{gVgCF?L#+.uJ`+[HI4;a3˿= E!Yr? dwPn/ \|DR2&b}B'ح^ #}}1IFe zN"W7k\C^8y~?Y< K,VRpcCaRkcUƵֱ&*^K~љ*tPprXCb_nhk@buiPh2AAB,-o?f~ݯa;*^4] N R@ZHRQ\9QjH;JQ\z^L,k僖Msz!+VN@wTbU&J{-׋:,˂w? eyْwinL?PP${\Ɇ-;S^0:֚ýQm# hIEAZ޶<=˗L~e9QuEcF'Ѻan])wv|ckbh~ғ-XMTl^ф6;l 7Eo ѩ ih"\h'̆OM2"h]<$rlB{y|XOAr(Nb;ّXAZs&IL-ܽR_NYfös vQE4`JVDK[òɗTJ%^M#=0oUpk0O-v͙LȔȣ sLR-[,ꪉM!LIZYHl~D >rEöG(£|"}7%Drsgfm<P5O{& 2ơfCmpgoksB!X5m,=#+Nd2ꐨ%ׄ{0Iar Q ZpINMsN^t1mo x=yO R8hYk2;uy?y״<[){2$cU^|Yh޵k!t%_˾F uDtS."WKaFvzjSAhl#9$WF򲅗zˁR7.{j ;3Y܍~L6;)=:[[l(wF#/4IW40h3{4ȖGSMzHdkqMTm<S\[doYk:[!҃s 3 #rTbӬ5aǨ$D80+U]ikJ65QF.I)>50!(!n7jrTqx^u2 bN*xGMXcm2ɿ+"#]wbg?pmAޱ e^gfk5gEiz!u} tڠ&d@Z "۠3h!܋o$I2~4d%q}c$b oݽKr(@?.Eh<~Sb2UjtpϮm6M>s)z,}S߬`:)s):/m>sRl} E[`|\Mob:>.8ywѧ0땢k|kߪcU\@m!ZA"E9LňXϰGHT4[&51$#t`κ韑gd!5R,o C i &";c9Ybϔ!i(utOy54F8%6ΛTgq7'5(i$4Ns^wv\`- JS (I .z#[ӻ?evJ5]ZXyC+ yZ  W| ncEF >ZbZo3L_4qG1\!`voXl|Š!'_Q4QV57e8!tzֱBiƤ!(0]_ ĬXʇ?TCc7K㙴:{GޙG,= Ȉ]s@ƻD!u~f%%h(J߇xטg%1*F)X\AS'c,C'u!KX㫔 :JʟySZ",\D²VQml j&u8V,,QTKJ_,: 簏=^+Qyr0Q$Hu^+џ.#g!㝺q[V6UPb?LBN)H g2/ h(:,lī ?#G^32sMyuZ(:=yz2qψC1m.Zm5TM@A`. Nc^)Fg=j)] ciXFhq3ZӬ%,,lz:J1QCC6"{ZYoգPXF9hcUEG%t.5劙1}g1A~"/"Dwe@[n4#扫#u븤;U_7=E&N^l!7*2rK+րn47 +ʝ  *R=Qj'AoϚ{wz:ye'kyfa5N[Uo~mZRpCrCfaC5a]yyQsxf F_9Yq2 J|Lp ݽt|C2 "הrx"Ę0V37 Ƕiy-i/}Zb4zO[N)!LM67w:G,], 'GM^`t|| "RpI]S`p{]י.`QChds6LCgNOM:Bl/YLɣ.RmwQ;+Yh|i u˴QS&n;+=H-Tdz d/#1i*֍F㙆JBC{#hEAëzcFоIڄ," A nZú>SvBPBI0X3I(04R&%o6*/wm9JѬR1.j&C:Ki4=~N ׮5>B%rSEeTH]+>6]M1Ԯ wzo6Jxkp)04 cÔړxz%Nc^p|CbJTi-EpX]izipZdڮS$)2r>I""!+ƿ>m@αtq uq.%1%5?Eh19oVlQ6U7ROIQ2~oXY1K,ļ (=|R9O (o eTɕD~ $H/XgM,' .9_J*χ4%KĔ=@6M шAi4Ƴ~A~8CWjpLMlI,E@XZOHH{R2W7[{Lvqڀa= GK}݊35!]J(l}B8лe/-C4Z,i6\gMg`LVQ'dL*.N>`4^ZdtWr$#E(:U0e -.$ 6p?3 LۈzlM aL! 9WzZ"ջx:!ؤt&p$ Nq9ۋa5t %"pc]4ZrkwQl{j-*Y읻 &R8`z(U-[^[.W6iqP^{ {MN{DڢF"5"R|@G, [㓡%l_T   Zlt2I?Q`C0d[YW>#yBCõ+c|(Wks9]\ou- jr3V/4]ƳXSnc}]ϓ.܉c5_ n=PPŪT!]V5ŢFzLF&ԌZKbc$ ց |*$tKJy6he # >(G s={2͝ǯ>d5VpTU]]`^fh8O3?,aX3] EYK,t8)k-Sg 5~pG QX^!y=~XX({bpi?[k"p"&lkk~,̙ W :Ż\x"k[T{'y RvP:lEs*!sX 5! lX[cy8J^A" KSZ)R+. -t[hR$UPdN.:'s:56J4-TX&lȕ#%yay=0n| ghAs.qhаgRLilI$2/-F*je]upoշOJ"_vPh |0I9PiѤ. EƘx]L8M&AfoOOaA, FMZoD1Ϊ*S$сH'Mm-~ ꟒kY/& QE!'uR(㈠B"9?)<͟<2Ay j}6cu_$c랏 Ğ/}}L&h( cV!l`_b>}tyM+zL}cpMŃ!z;Q[IR h9Q-!?-5_{x Di^"y;<[k:lŷUvF5ۊM7ECR4)o1ɹh :^:UK̪-34@,V/.`ەР'iХ 0A+ᯌ M>*ixɈ32m{S9Q ۑ^@͹=a\۱kj>)HBql><(Jib ,$▤(ӷ4{\ k 5yW;a_K0k//@hҡSh*_>ԁXnO͐ cdSwnt$D@&zoZe'f_C-xlK1 '7e  ES_xdev +|QZ7SS}aM%}MCǁO?z TV :mF9YT29J1m<I":Vaψ^äDY5&m *j5+Yl%³5LTHnÀx˼ øR>kZlr{{|IBp'Cqa&p7/+\wT~E-NU7tYyk)tJ$|=I6Y_Tڞ!_]Һ*߫g4DpnX@G CjP/(TߩiƧ  ,"*.˪pC`j;a,QLLYK.u6Rۘ k24}} Ic :m\&]d\ht51g ql_dϤF^lY'A1QdC#1Ȱqp]K(>Ot{gJGߤb%ڮw8V /fc3qf\eGqrBcyQ4h3 gd +rXXgSX:W$ xpk|s!QNSFs# gt k|rjca2uB1=$;vN|N:'P1qsN>Efw:C1gu'O<(߶ NJ Y?xxEJV^@֜ 0 ٱ#A 03:% tuh|gBW`Jqetnz Z5l0BHw7Dj䐏[[2TLw3e] }uCZWM!kpB|FO(1 3mW'~\(DF2끂4-!ˮJZ/=sLiL?8C0ÖI*qJFVmccˆ "b^K~  .oR '( p 3<F·*H#[a0y"M2XĺQC{AQ8ϣƂa!7*yݹgwMu[6XbRjn--pOOm5<#&4 B!_a`S7g:@*Caj몘+T=RlB<d6<8SNHr)Wג>f2\0$#nʤ`}WZdb13/gN@H3f~hʖ嗀ϋH|'(fОlb{1HW.Ni uBhKtB@tUb|f"]F"7j%Ce[ >19t%oc+A='_s:":/7C֪y=R\˜lJ/zhF$M'2Tv̠7 wI(#9J@ᵏ;IA*B$l$7SLdŗZ,WyRx,MɃ`~4* rvbuMtxs*.թӘE) [W:_@FDll#ZQ͈;=4JQ Qz@eIyiHn-7%a Z7c|ԏ p;"BG: 0g׭pB7(;]as,7b׼W~ rUY(ϲUugCJq]}SP}l4ɟA1lw5" Hrf$ZB5!+:hrHQOׂHmdž_[' a yDF1r8|X% X4ԤATzw| #Pb#)˙oyUk`!?4ZH+r /ƈe"t SJ=U(д@JP)J )yzBo' 1'>`l\`W%SY#Pp⚤4PVwHÛy6y5f۾vƆ(#PHɽOa6߆?9/}is ,Kv>laaC=r>7EI2,p`8k8l%F$d>.zwPv#T{ʤpKsAv$8d`l(H[A::tnBXJXE<袯GyGLK!/ÚL!gsSy˹bzSl9?Ћ@lO.yVa o4"X/6˓sLDfbvQi.V^=U[1!J%!b*ڵ#$N?X$hW^ɋ⎛ORѲy(n~x`G{u|Qu1(D`qb94v! 9F8V  ]=|޴F>>{lS$т(\k&] 4,';z|Vs(wE-yc`oG8j" ?toJHfl Tv;doovH#['ȍ#w⪁ w)Cdrqœcx0 MjϋX8RL ][ʥ9FdkD'R9^*ڹ::^:3poA"F=iskm>d,^96k/~KDk'L6)XwYgfl+YN@޿G\G9,vKGs)hzIq0>zp U}#ь$SORǗpHuQB<Pd/A e3 6BFzt[]C:)|ďYo}eߌ;6 wܜ3NB.t6biEsy4Р:Ǎ?<sԋKW*vk"QJK&G)LIoDS @mee=Crvͯt4[z`3I ?WW4 4lyeGkQwO45![EX|lLxͺD±/b?NQla7)+NUKJIRBu1 N8@>sif:+Ou4zfG5:S\bf#);():Y"K2~ cDW2%]8 :we0f![U6|YVtrUM8jIpS_uRKt F#ɰ+olCU{fS{tSm࣊شϩʗ]s5^qtTF?t {?yo*8~1'QsAxLxt.jw`jlL4s!=*V=\eZWJsb!H׸kvR׫RV}H!1g@a`r޹E6.(`q5r8g%uB?"FԀ$íǮ9S/Za?ig2+wXꁥfPWRF11f APF^IY7ţ}|=k8 ǒgZ&9HWY?G3MR$N@}4dٸv⮛B8vZW Cd_7 BGI`)UI9 iLO[~;)vC0ٵy}Y-ͧ% ܙDdO W.alYtfSj4C$-~LE֩,sՙK^t4w쒾OuNQ6%AVzA;4fpJas.Nvĭ ^Vk2&˅0tw+>Sb4/CDH8?p& `^l 7(–_pz %ʭb"{~b!7%4|^QQS6j`9*Ł*Dp-&J{}.3ޭ6WޛF4 .xa4%nݲ5cFzkjXuG(aqs3湴IE4/:.ì1[YxZcAyh"Ș 82 e|હCJ<;\|hM:}7Ű*ԗ0Tun\w`Rn .QAG.mav(:&p;E9ό}>gK0 NuD@+ڋ-Z(j(6vW~կ&K^'"I84鞵=PFbUl:'r5?jr"']>ۤnznn$aZf&H"yY0Mk6,T YSFT: "toL+9&h=@Ԋ2%zqe$tD idpPBfEh) >ۈ(G2DLƮ w>efgԔ^iuS(tTWć~+[s1Oce.?ʅ)M88xX=[qk)$6< ؾx9go0aPǘ%e߭dt)#HK.T~XrAKR$ي`N*ןg,aI&L|A;l.lYTH ,DeMY/}{A+˶HR,xUaA,Ko ϽNB{? (@ƊK`_(GJ_7LW#ͩ|V:Ŭ B@µ7,'tKc28$K6c ש's·aVC2D$FTC%Nxɓ7tQ`IvNM+2DUF=苍5)#u6YpN+tI"Kp( d!1naܠj軵b؇lDb80̽LbƽKq/IPTG:wO<; 24!az1 d~M*<$FK-,jĢ yP ;Vh.& ϾvWWؽLո 8ZX4Ў_%CwxE6R?4m<OSi,.zVy>26DNdA^}]h^.A3(%mO,9:Ey]_quUC\"[L)(tur\Z\  b\jiCmK[nͦ䩫&f$kJFh+3XɿƸSo^D&Bf륭qdIT!}V17 {( H&Q=a4r W L?!f9f=%~&P] e}V5 /@T:d\$LGݍPɶOgp1` mbaf`YކR* /Wђ*7" ] E~{ `XY!,a-!x}4q!2 6n63$")dҺbv1mhgq 'xARks'dH *xm`ARL*w=zӥjlujo~b4oRǐc"RB4:4t^'݇@)ÜC^E4CW֮t7('6_ x'oV23W$rz sx˲7}dhP_ӱ6ָ/)I9 ;=ц%6w!P'2S' 4!t>osTQ뷒xԙvFfiFz0ACB~ʁD'e(+].%ɐ9DNG@_NM(OHdkq@pȤjOᅫsEvقXák usHtdrjib4 "l"qЏ!};8W&PN7~k\{~2T[&\zieɾ-@ GC}mP]{Iy͵~ȂVB! Q%_ͪjpCEyoՉ>B |[~QjdȇRQ"r0Ďe 3O,Xϋt7=Ih񿂾ѩS\u @޸._[SG2Ro, #_+9_-B{nCqdz3O-g‹ًgurVPs42+PJߧQťepep,F{+ x츤:Jh%R oGQkyP i![´g{ܧ^Cx/AK]{b<ԖڬN:[< ;+]p5 >ǓQ%,\;$O&syYwe7RP!.IzbKw"d}c[뙆wJ;4ӎ,5L[?mCQ@d.߇ak*bDld&+o(WB,> _eI=V(QF!Ra0%M^fPC1M@ZAo,R=j~@1% uNɭ#x7{C$A|?A:5}<{^uTBXoDLMT D(#)rE903 zGP!W0'\K(o]|o Lŵ)*ach<Ҟ1ƺ ׬ ZZD\Mm |$LiH/wNiduPO+u9ոG@n+`#eɻŵdFv7þ3҄Cѣ_:>eo #_j~Pp÷nMNc#T`'q@Wy r4YH{/{ā⏻oGEL|{^0a񑯧O?+气?{~tu}!>֛fb^z]`wΚRwe/q`H=c'L'pQgo ~X+>yQEa*DIIS pAgIERVc!%s>.E3d]?S}ΟHz,27-0s;e:S 62L_A]]7EeK1{ٺB,4gIGޠ`ASPo6Bkuܺ'_Q)&۬<ig'PmBoyLLC(YRO U¶6umxŗ~/"ePkK Ɍ,L!ŮϨWb˾Z~w]h)0{=Ο_݅!cP#zOv^]t5D, IAe(,4[/ɆR [=Sl/dqFRcy@)Rt):IZ|й/jk# a)޲!ݕ->\q e?ESxuEyaw vǍ8)w4$/0xwvwvEWř~ ssIuml5}*}_)"X'Ҭ1MvC_?束9"-71J+[@*^#0h8E c]:I^cL9GEya^66[+a(-cͬ>tL2pyKﴣX製m /1-1fOB[ү3էF*K GjG,Ο9 (A@bρ"y9ՙ{UJԮjivl}qv~ _r2r%<0R(oս+)pvt6?M΢*_~i!~CN4 lh: j*N?iI> ZQkgN͗Lѽ5&s$+JQ(LoaQr,Cy'oDb_K}0#aF*14N?p建U]G\ )&g ʏ$aTvbSJ4a9V̕ au.нUͥePs.YJ*2jTs[&m}or>.IM0S:N =!jT綡bh;}Gϑ2N( + L,Fjbv(8UOw\qY@wZAdH wCkr օLF@KCF?[JLY.C$a]u;rd`ɩ?)G^~af:PYP~R{WEFVх+SaX+Q-D#^gG d𼥒]Q4"+~vS0yyh?Dzj:뽊}k |n@B0]GQ;4Gmch%Hyi1 a>ٰbr?f=ru>*H˧&!PeE\BBAwȓl]nfO X/A+f|(]ӠW+Mk5,Ŷ}C^;_z:@%y)D>jeAK9{゠mR&"N R/h"b͍%Y)' tVl|y} h\zN77y?|jȜUStbm!ٜ 9]I:$`ympC`ʨKbGğꖄnJEb Pq8tA'9vpH 2L+$C.d).!s*DZoȹ]\D/u 16:*b9h-,ْ4H]2Tz`W[^aaH7Ñ cQx4>lfr97GﮊևI2sca {' 8z*as=@qi[z&*d^@T [)_DBAgz#@$4N-/( 8-(Zuͱy a+ǠtHUM9ښ`Bj튦xcst]{{J@vdš(bo~YktUP} ۮq7g>b?뤡WV2)^`k'L8% o,ߓ2(K7K9n A4k$rBC}aՇetw,Ep `C9g9>c) Hw)bds~!rDX?E-ʟ.휆*1E*JlY4/E+4>j wٔ^ P YOH-w&L+Cf'bgv_8$*ub LU~}";BtIȊ}\O^Wn{>N_Pڟ&'~6tjbͷA0؆ X{ǵ>Йy//,%J|d D!2"j\.>S?5βjX4oI^Wb3YӞf MZ-y9tF^wÑ֮^k =/x alzQ8ڧߵ *jԯƈxu hx՝QSú!wַk^Y!-d"Ȑw#/!O?R5ɏc۹Rm8;B]L"X__}M9r?h?[,ˍ3'Api}5E1v6 vU #{j iU0lft#Bx4뱓yg9^.ls7ߓ2Ջ oUsp`!tz\oUhbKS{yVˮ$ @ l#b2Ƿ+'3<_Yt_ԩ]D5kC!u( p6^m'y3B3`^yesqcDycXU,NG[tA.8n5+͍s=YA a ='* m]xz}P]`K\’^}'2p³* UV'J ȑ59(Rx ,T4x69Nory#P S5Ǒ16v &u- ,:Q1r>1~pqI?0brGx  S,T_#s( A8$]ѱ,H+Bj + dQ t6awnIVbɤs}xuf؅9&ޘbZH5T |}S:aSn/3J3 xCd.ʴ5 +Ф) F '%0X{װzd򞩘ɠ5!qr?D$ջwngWWTDZ2*W" ,ؗlP]3ӌ2df&ɥ g DíL3/^Vz\;.?K5}\f~m+,|0ER$T{5)8{cxU/4ZeC6"9%-xV=$=bWv ߆ +͛ N&7~!4rVWBe9p@ќ CpԎʻ Q{y_LHoC5~Djv _ @v.⻢.W6-ֱFBcjYMH]`oIY֗ړ&lݥvhk 04țT@' BݿQrGkDrD.L2/۸ ͮx'mΝ2I */qc>zwޣ&.2KKGUfK )X[ӿqZg@l*'^mQ /=4NA&NGG5Y0x޳Gߗ 5P!Q̺OeC(] 5Br [Z!$u{Wz>@+ج+>'ghz2V_9f)<\DS1RH~Q*.!NBx=Y?%߹5y;-bF9C{ G :+*'zHydH|;r;nOMA93R5zEaYaz7zC^Ȃ[c3S6g7 MdOp.v~ߡqBr:Փ4 =5@C ?"n'L3D|3$`|#_+i)K ~0)Z.U 9 #i]t^ >a{*rqs. N}bتc(yԜ.1_x܇i8~Vbݖ-&vxQ6/X5;eo ÁzU4cv,L#_ ʕzvct 5ؔ"uD kuj6'WR/L˰<^ ɮ.6=4R(ąeV3b޲e*bW f=?:`s+_W )>5ϭUn} WH9I\/X Wfc v=?; mk/&eτ_%$JRgd 5}pHW@;nMRRNG!_:%YY/ޞ$-)EwPk@¦<̢+ZH{Ȩ8ݗaZ9B ui:[y%֩s+JC)~-'6@|zp[ʇĵa%ldj!w4D*0\%jJvVqKwK,j5 ~\SeD nh1P z%'޾zi9H`7T`22x80]τi$t=mS=j7hG*ĻCd㔄oP;- Y=:aX12WM.#F^ņqzSubfEe ~-evE ֱN50h :a#11"']e0x~g% :%y'nQa{? VF}GnðR-DĘB |DԂ qi+VtKú2^c)vGZ}n%X1kQ4 ZXztE*h-$)UUqrS܉foߓ\*QZnsVSЛۯicL>Y0:^V%']OdX<;v3(ꌒ'oZ4?OkwV, GyKf~so}[[GPR(i|1,A3%Y< ߽FEp=bDy]QGSq6l ѻsʢ̿8 F0I-&Z͐:mP&HtB#0%5VD[ Z%.}h@;:SOiD~H$#sB72mh`ѻn(Gr2$}B0EՐ#3t1Rd4q 5"j _4ɱLzjm< 9ytʁ@ھ.3bPB+ArY߿K ,OmN.x o'|ڔsS { t4d M[—-kpf55iٛ3hIJfV.<MBUnۼ1)t'uؽGMq+9I+d^Rfy.2yq++ 972mڶ/~#nV&S#|bF, X84g쭘&_N5dTbaȼr?A{ݙ8eX,V )DUY]n~'RU?]fSrp'E5O^a^(%a3Vwzd,Kd_ى $(of}U xtK$=N;KA/\c$xR&^)6'J&u,ҕ[@-=~W{j2ΣYJgN)Fn g @67͜a)kWuS !TqMZ|$(y̽Gdg,fxQal\oƎ۞:ĥh/uЗ0yZ?+'q.꺾`XJHwZvN9ta}W9ywC`)bӧJ;fxJR# k㻡cŌ3+M0? |g!SC2 ]W}QZd% @' +N`M6& ,\ߗaF/@-Ë{3d=A]Jp/qFbE!0WuJW3:{ ;/U8fյ#$)5`i mϵbtL w;҄Y_Z8.}4GY0:kݚ?Y2aO[C'$s ,|F 5)(P/p7a26K:'Q`^enk"wvUPh8GP5zO7vDIQ bw¡JR(Æ3La_!V oWn/fd\HUG@ e%az6yAqm@E 8m*?Yv|{6./Ψ/Hw'W0^F(ӈ5@po^0פؠSI"de|ٜ@'AU0uL\1ElVARLܹ%oو݇߁BKI:SO aEt 52Opf3-nGÌ&izC+$PU/6 9> G|?N0({  kg#zO7HB01SJ/]S] *&ixn|$5N l9/ǗL6E.tKc|0aJV#"aέ&ج U?1 ?!:?%AL$ UJQvEYxf:Ы_"港[B#-HF`.|gzL;bթ댓`Z%=P1n8g˲/P5B\)THu0=̣P)ͽ<¼8/[V1"ytíJY5{0J8cX\Ս(AV A%q t`R( },;N-g+2WBx '14-0AD$HHZqմ|is?Yn=vhU{Ҩk!GC"4- ]3y(W`a,6|wa9r٥;.6& Ah