summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPascal Rigaux <pixel@mandriva.com>1999-07-29 15:18:54 +0000
committerPascal Rigaux <pixel@mandriva.com>1999-07-29 15:18:54 +0000
commit88a07c82cece62903ae68e1e2c482d810bbf8560 (patch)
tree5eee08b842d20f111fc82bba2e42425e253e8a50
parent5dc2835bfbf1f53ad51ba540f4423c22cc94b26c (diff)
downloaddrakx-88a07c82cece62903ae68e1e2c482d810bbf8560.tar
drakx-88a07c82cece62903ae68e1e2c482d810bbf8560.tar.gz
drakx-88a07c82cece62903ae68e1e2c482d810bbf8560.tar.bz2
drakx-88a07c82cece62903ae68e1e2c482d810bbf8560.tar.xz
drakx-88a07c82cece62903ae68e1e2c482d810bbf8560.zip
no_comment
-rw-r--r--docs/diskdrake.TODO14
-rw-r--r--docs/object_class.fig32
-rw-r--r--perl-install/Makefile5
-rw-r--r--perl-install/Xconfigurator.pm450
-rw-r--r--perl-install/Xconfigurator_consts.pm553
-rw-r--r--perl-install/common.pm31
-rw-r--r--perl-install/detect_devices.pm4
-rw-r--r--perl-install/install2.pm19
-rw-r--r--perl-install/install_any.pm3
-rw-r--r--perl-install/install_steps.pm4
-rw-r--r--perl-install/install_steps_stdio.pm148
-rw-r--r--perl-install/interactive.pm53
-rw-r--r--perl-install/interactive_gtk.pm37
-rw-r--r--perl-install/interactive_stdio.pm80
-rw-r--r--perl-install/keyboard.pm2
-rw-r--r--perl-install/log.pm4
-rw-r--r--perl-install/my_gtk.pm38
-rw-r--r--perl-install/partition_table.pm1
-rw-r--r--perl-install/partition_table_raw.pm4
-rw-r--r--perl-install/pkgs.pm24
-rw-r--r--perl-install/resize_fat/fat.pm2
-rw-r--r--perl-install/resize_fat/io.pm2
-rw-r--r--perl-install/share/diskdrake.rc2
23 files changed, 1316 insertions, 196 deletions
diff --git a/docs/diskdrake.TODO b/docs/diskdrake.TODO
new file mode 100644
index 000000000..097789747
--- /dev/null
+++ b/docs/diskdrake.TODO
@@ -0,0 +1,14 @@
+text version
+
+save/restore partitions in a file
+
+display the information about the correspondance color2type
+
+have ``undo''
+
+handle the `luke' case (main extended partition must be extended)
+
+ajouter une verif apres fdiskReadPartitionTable pour s'assurer qu'on se
+trompe pas sur la facon de calculer le start_cyl, end_cyl...
+Pas possible de le faire dans fdiskReadPartitionTable car start est relatif dans les etendues
+
diff --git a/docs/object_class.fig b/docs/object_class.fig
new file mode 100644
index 000000000..0c9ffaff5
--- /dev/null
+++ b/docs/object_class.fig
@@ -0,0 +1,32 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter
+100.00
+Single
+-2
+1200 2
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+ 2625 1200 2625 1725
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+ 7575 1125 7575 1650
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+ 7575 2100 4350 3225
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+ 5025 2025 4350 3225
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+ 2625 2100 4350 3225
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+ 5025 2025 6075 4125
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+ 2625 1200 4950 1725
+2 1 0 1 0 7 100 0 -1 0.000 0 0 -1 0 0 2
+ 7575 1125 4950 1725
+4 0 0 100 0 0 12 0.0000 4 180 1755 1800 1050 install_steps_graphical\001
+4 0 0 100 0 0 12 0.0000 4 180 1440 6900 975 install_steps_stdio\001
+4 0 0 100 0 0 12 0.0000 4 180 1140 2100 1950 interactive_gtk\001
+4 0 0 100 0 0 12 0.0000 4 180 1275 6900 1950 interactive_stdio\001
+4 0 0 100 0 0 12 0.0000 4 180 1875 4125 1950 install_steps_interactive\001
+4 0 0 100 0 0 12 0.0000 4 135 810 3975 3450 interactive\001
+4 0 0 100 0 0 12 0.0000 4 180 975 5625 4350 install_steps\001
diff --git a/perl-install/Makefile b/perl-install/Makefile
index 3eaafc310..30ea0be7f 100644
--- a/perl-install/Makefile
+++ b/perl-install/Makefile
@@ -52,7 +52,7 @@ verify_c:
./verify_c $(PMS)
gendepslist: %: %.cc
- $(CXX) -I/usr/include/rpm $(CFLAGS) $< -lrpm -ldb -lz -o $@
+ $(CXX) -I/usr/include/rpm $(CFLAGS) $< -lrpm -ldb1 -lz -o $@
depslist: gendepslist
./gendepslist $(ROOTDEST)/Mandrake/base/depslist /tmp/rhimage/Mandrake/RPMS/*.rpm
@@ -88,6 +88,7 @@ get_needed_files: $(SO_FILES)
install -d $(DEST)/usr/bin
install -d $(DEST)/usr/lib
install -d $(DEST)/usr/share
+ install -d $(ROOTDEST)/Mandrake/base
install -s $(LOCALFILES) $(DEST)/usr/bin
for i in `cat /tmp/list`; do \
@@ -138,7 +139,7 @@ full_stage2:
stage2:
$(MAKE) install_pms
cd $(ROOTDEST) ; tar cfz /tmp/instimage-full.tgz Mandrake
- cd $(ROOTDEST) ; tar cfz /tmp/instimage-light.tgz Mandrake/base/depslist Mandrake/instimage/usr/[bl]*
+ cd $(ROOTDEST) ; tar cfz /tmp/instimage-light.tgz Mandrake/base/compss Mandrake/instimage/usr/[bl]*
@#rm -rf /mnt/initrd/*
@#cp -a $(DEST)/* /mnt/initrd
diff --git a/perl-install/Xconfigurator.pm b/perl-install/Xconfigurator.pm
new file mode 100644
index 000000000..9749884d2
--- /dev/null
+++ b/perl-install/Xconfigurator.pm
@@ -0,0 +1,450 @@
+package Xconfigurator;
+
+use diagnostics;
+use strict;
+use vars qw($in $resolution_wanted @depths @resolutions @accelservers @allservers %videomemory @ramdac_name @ramdac_id @clockchip_name @clockchip_id %keymap_translate @vsync_range %standard_monitors $intro_text $finalcomment_text $s3_comment $cirrus_comment $probeonlywarning_text $monitorintro_text $hsyncintro_text $vsyncintro_text $XF86firstchunk_text $keyboardsection_start $keyboardsection_part2 $keyboardsection_end $pointersection_text1 $pointersection_text2 $monitorsection_text1 $monitorsection_text2 $monitorsection_text3 $monitorsection_text4 $modelines_text_Trident_TG_96xx $modelines_text $devicesection_text $screensection_text1);
+
+use pci_probing::main;
+use common qw(:common :file);
+use log;
+
+use Xconfigurator_consts;
+
+1;
+
+sub setVirtual($) {
+ my $vt = '';
+ local *C;
+ sysopen C, "/dev/console", 2 or die "failed to open /dev/console: $!";
+ ioctl(C, c::VT_GETSTATE(), $vt) or die "ioctl VT_GETSTATE failed";
+ ioctl(C, c::VT_ACTIVATE(), $_[0]) or die "ioctl VT_ACTIVATE failed";
+ ioctl(C, c::VT_WAITACTIVE(), $_[0]) or die "ioctl VT_WAITACTIVE failed";
+ unpack "S", $vt;
+}
+
+sub readCardsDB {
+ my ($file) = @_;
+ my ($card, %cards);
+
+ local *F;
+ open F, $file or die "file $file not found";
+
+ my $lineno = 0; foreach (<F>) { $lineno++;
+ s/\s+$//;
+ /^#/ and next;
+ /^$/ and next;
+ /^END/ and last;
+
+ my ($cmd, $val) = /(\S+)\s*(.*)/ or log::l("bad line $lineno ($_)"), next;
+
+ my $f = $ {{
+ LINE => sub { push @{$card->{lines}}, $val unless $val eq "VideoRam" },
+ NAME => sub {
+ $cards{$card->{type}} = $card if $card;
+ $card = { type => $val };
+ },
+ SEE => sub {
+ my $c = $cards{$val} or die "Error in database, invalid reference $val at line $lineno";
+
+ push @{$card->{lines}}, @{$c->{lines} || []};
+ add2hash($card->{flags}, $c->{flags});
+ add2hash($card, $c);
+ },
+ CHIPSET => sub { $card->{chipset} = $val;
+ $card->{flags}->{needVideoRam} if member($val, qw(RIVA128));
+ },
+ SERVER => sub { $card->{server} = $val; },
+ RAMDAC => sub { $card->{ramdac} = $val; },
+ DACSPEED => sub { $card->{dacspeed} = $val; },
+ CLOCKCHIP => sub { $card->{clockchip} = $val; $card->{flags}->{noclockprobe} = 1; },
+ NOCLOCKPROBE => sub { $card->{flags}->{noclockprobe} = 1 },
+ UNSUPPORTED => sub { $card->{flags}->{unsupported} = 1 },
+ }}{$cmd};
+
+ $f ? &$f() : log::l("unknown line $lineno ($_)");
+ }
+ push @{$cards{S3}->{lines}}, $s3_comment;
+ push @{$cards{'CL-GD'}->{lines}}, $cirrus_comment;
+
+ # this entry is broken in X11R6 cards db
+ $cards{I128}->{flags}->{noclockprobe} = 1;
+
+ %cards;
+}
+
+sub readMonitorsDB {
+ my ($file) = @_;
+ my %monitors;
+
+ local *F;
+ open F, $file or die "can't open monitors database ($file): ?!";
+ my $lineno = 0; foreach (<F>) {
+ $lineno++;
+ s/\s+$//;
+ /^#/ and next;
+ /^$/ and next;
+
+ my @fields = qw(type bandwidth hsyncrange vsyncrange);
+ my @l = split /\s*;\s*/;
+ @l == @fields or log::l("bad line $lineno ($_)"), next;
+
+ my %l; @l{@fields} = @l;
+ $monitors{$l{type}} = \%l;
+ }
+ while (my ($k, $v) = each %standard_monitors) {
+ $monitors{$k} =
+ $monitors{$v->[0]} =
+ { hsyncrange => $v->[1], vsyncrange => $v->[2] };
+ }
+ %monitors;
+}
+
+sub rewriteInittab {
+ my ($runlevel) = @_;
+ {
+ local (*F, *G);
+ open F, "/etc/inittab" or die "cannot open /etc/inittab: $!";
+ open G, "> /etc/inittab-" or die "cannot write in /etc/inittab-: $!";
+
+ foreach (<F>) {
+ print G /^id:/ ? "id:$runlevel:initdefault:\n" : $_;
+ }
+ }
+ unlink("/etc/inittab");
+ rename("/etc/inittab-", "/etc/inittab");
+}
+
+sub findLegalModes {
+ my ($card) = @_;
+ my $mem = $card->{memory} || 1000000;
+
+ foreach (@resolutions) {
+ my ($h, $v) = split 'x';
+
+ foreach $_ (@depths) {
+ push @{$card->{depth}->{$_}}, [ $h, $v ] if 1024 * $mem >= $h * $v * $_ / 8;
+ }
+ }
+}
+
+sub cardConfigurationAuto() {
+ my $card;
+ if (my ($c) = pci_probing::main::probe('video')) {
+ local $_;
+ ($card->{identifier}, $_) = @$c;
+ $card->{type} = $1 if /Card:(.*)/;
+ $card->{server} = $1 if /Server:(.*)/;
+ }
+ $card;
+}
+
+sub cardConfiguration(;$) {
+ my $card = shift || {};
+
+ my %cards = readCardsDB("/usr/X11R6/lib/X11/Cards");
+
+ add2hash($card, cardConfigurationAuto()) unless $card->{type} || $card->{server} || $::expert;
+ add2hash($card, { type => $in->ask_from_list('', _("Choose a graphic card"), [keys %cards]) }) unless $card->{type} || $card->{server};
+ add2hash($card, $cards{$card->{type}}) if $card->{type};
+ add2hash($card, { vendor => "Unknown", board => "Unknown" });
+ $card;
+}
+
+sub monitorConfiguration(;$) {
+ my $monitor = shift || {};
+
+ my %monitors = readMonitorsDB("MonitorsDB");
+
+ add2hash($monitor, { type => $in->ask_from_list('', _("Choose a monitor"), [keys %monitors]) }) unless $monitor->{type};
+ add2hash($monitor, $monitors{$monitor->{type}});
+ add2hash($monitor, { vendor => "Unknown", model => "Unknown" });
+ $monitor;
+}
+
+sub testConfig($) {
+ my ($o) = @_;
+ my ($resolutions, $clocklines);
+
+ write_XF86Config($o, "/tmp/Xconfig");
+
+ local *F;
+ open F, "/etc/X11/X :9 -probeonly -pn -xf86config /tmp/Xconfig 2>&1 |";
+ foreach (<F>) {
+ #$videomemory = $2 if /(videoram|Video RAM):\s*(\d*)/;
+ # look for clocks
+ push @$clocklines, $1 if /clocks: (.*)/ && !/(pixel |num)clocks:/;
+
+ push @$resolutions, [ $1, $2 ] if /: Mode "(\d+)x(\d+)": mode clock/;
+ }
+ close F or die "X probeonly failed";
+
+ ($resolutions, $clocklines);
+}
+
+sub autoResolutions($) {
+ my ($o) = @_;
+ my $card = $o->{card};
+
+ my $hres_wanted = first(split 'x', $o->{resolution_wanted});
+
+ # For the mono and vga16 server, no further configuration is required.
+ return if member($card->{server}, "Mono", "VGA16");
+
+ # Configure the modes order.
+ my ($ok, $best);
+ foreach (@depths) {
+ local $card->{default_depth} = $_;
+
+ my ($resolutions, $clocklines) = eval { testConfig($o) };
+ if ($@) {
+ delete $card->{depth}->{$_};
+ } else {
+ $card->{clocklines} ||= $clocklines unless $card->{flags}->{noclockprobe};
+ $card->{depth}->{$_} = $resolutions;
+
+ $ok ||= $resolutions;
+ my ($b) = sort { $b->[0] <=> $a->[0] } @$resolutions;
+
+ # require $resolution_wanted, no matter what bpp this requires
+ $best = $_ if $b->[0] >= $hres_wanted;
+ }
+ }
+ $ok or die "no valid modes";
+
+ $card->{default_depth} = $best;
+}
+
+
+sub moreCardConfiguration {
+ my ($o) = @_;
+ my $card = $o->{card};
+
+ $card->{vendor} ||= "Unknown";
+ $card->{model} ||= "Unknown";
+
+ unless ($card->{type}) {
+ $card->{flags}->{noclockprobe} = member($card->{server}, qw(I128 S3 S3V Mach64));
+ }
+
+ my $manual;
+ # some of these guys hate to be poked
+ # if we dont know then its at the user's discretion
+ #my $manual =
+ # $card->{server} =~ /^(TGA|Mach32)/ ||
+ # $card->{name} =~ /^Riva 128/ ||
+ # $card->{chipset} =~ /^(RIVA128|mgag)/ ||
+ # $::expert;
+ #
+ #my $unknown =
+ # member($card->{server}, qw(S3 S3V I128 Mach64)) ||
+ # member($card->{type},
+ # "Matrox Millennium (MGA)",
+ # "Matrox Millennium II",
+ # "Matrox Millennium II AGP",
+ # "Matrox Mystique",
+ # "Matrox Mystique",
+ # "S3",
+ # "S3V",
+ # "I128",
+ # ) ||
+ # $card->{type} =~ /S3 ViRGE/;
+ #
+ #$unknown and $manual ||= !$in->ask_okcancel('', [ _("I can try to autodetect information about graphic card, but it may freeze :("),
+ # _("Do you want to try?") ]);
+
+ $card->{flags}->{needVideoRam} and
+ $card->{memory} ||=
+ $videomemory{$in->ask_from_list_('',
+ _("Give your graphic card memory size"),
+ [ sort { $videomemory{$a} <=> $videomemory{$b} }
+ keys %videomemory])};
+
+ findLegalModes($o->{card});
+
+ unless ($manual || $::expert) {
+ # swith to virtual console 1 (hopefully not X :)
+ my $vt = setVirtual(1);
+
+ autoMemoryAndClocksline($o);
+ autoResolutions($o);
+
+ # restore the virtual console
+ setVirtual($vt);
+ }
+}
+
+
+# * Create the XF86Config file.
+sub write_XF86Config {
+ my ($o, $file) = @_;
+ my $O;
+
+ local *F;
+ open F, ">$file" or die "can't write XF86Config in $file: $!";
+
+ print F $XF86firstchunk_text;
+
+ # Write keyboard section.
+ $O = $o->{keyboard};
+ print F $keyboardsection_start;
+
+ print F " RightAlt ", ($O->{altmeta} ? "ModeShift" : "Meta"), "\n";
+ print F $keyboardsection_part2;
+ print F qq( XkbLayout "$O->{xkb_keymap}"\n);
+ print F $keyboardsection_end;
+
+ # Write pointer section.
+ $O = $o->{mouse};
+ print F $pointersection_text1;
+ print F qq( Protocol "$O->{type}"\n);
+ print F qq( Device "$O->{device}"\n);
+ # this will enable the "wheel" or "knob" functionality if the mouse supports it
+ print F " ZAxisMapping 4 5\n" if
+ member($O->{type}, qw(IntelliMouse IMPS/2 ThinkingMousePS/2 NetScrollPS/2 NetMousePS/2 MouseManPlusPS/2));
+
+ print F $pointersection_text2;
+ print F "#" unless $O->{emulate3buttons};
+ print F " Emulate3Buttons\n";
+ print F "#" unless $O->{emulate3buttons};
+ print F " Emulate3Timeout 50\n\n";
+ print F "# ChordMiddle is an option for some 3-button Logitech mice\n\n";
+ print F "#" unless $O->{chordmiddle};
+ print F " ChordMiddle\n\n";
+ print F " ClearDTR\n" if $O->{cleardtrrts};
+ print F " ClearRTS\n\n" if $O->{cleardtrrts};
+ print F "EndSection\n\n\n";
+
+ # Write monitor section.
+ $O = $o->{monitor};
+ print F $monitorsection_text1;
+ print F qq( Identifier "$O->{type}"\n);
+ print F qq( VendorName "$O->{vendor}"\n);
+ print F qq( ModelName "$O->{model}"\n);
+ print F "\n";
+ print F $monitorsection_text2;
+ print F qq( HorizSync $O->{hsyncrange}\n);
+ print F "\n";
+ print F $monitorsection_text3;
+ print F qq( VertRefresh $O->{vsyncrange}\n);
+ print F "\n";
+ print F $monitorsection_text4;
+ print F ($o->{card}->{type} eq "TG 96" ?
+ $modelines_text_Trident_TG_96xx :
+ $modelines_text);
+ print F "EndSection\n\n\n";
+
+ # Write Device section.
+ $O = $o->{card};
+ print F $devicesection_text;
+ print F qq(Section "Device"\n);
+ print F qq( Identifier "$O->{type}"\n);
+ print F qq( VendorName "$O->{vendor}"\n);
+ print F qq( BoardName "$O->{board}"\n);
+
+ print F "#" if $O->{memory} && !$O->{flags}->{needVideoRam};
+ print F " VideoRam $O->{memory}\n" if $O->{memory};
+
+ print F map { " $_\n" } @{$O->{lines}};
+
+ print F qq( Ramdac "$O->{ramdac}"\n) if $O->{ramdac};
+ print F qq( Dacspeed "$O->{dacspeed}"\n) if $O->{dacspeed};
+
+ if ($O->{clockchip}) {
+ print F qq( Clockchip "$O->{clockchip}"\n);
+ } else {
+ print F " # Clock lines\n";
+ print F " Clocks $_\n" foreach (@{$O->{clocklines}});
+ }
+ print F "EndSection\n\n\n";
+
+ # Write Screen sections.
+ print F $screensection_text1;
+
+ my $screen = sub {
+ my ($server, $defdepth, $device, $depths) = @_;
+ print F qq(
+
+Section "Screen"
+ Driver "$server"
+ Device "$device"
+ Monitor "$o->{monitor}->{type}"
+);
+ print F " DefaultColorDepth $defdepth\n" if $defdepth;
+
+ foreach (sort { $a <=> $b } keys %$depths) {
+ my $m = join(" ",
+ map { '"' . join("x", @$_) . '"' }
+ sort { $b->[0] <=> $a->[0] } @{$depths->{$_}});
+ print F qq( Subsection "Display"\n);
+ print F qq( Depth $_\n) if $_;
+ print F qq( Modes $m\n);
+ print F qq( ViewPort 0 0\n);
+ print F qq( EndSubsection\n);
+ }
+ print F "EndSection\n";
+ };
+
+ # SVGA screen section.
+ print F qq(
+# The Colour SVGA server
+);
+
+ if ($O->{server} eq 'SVGA') {
+ &$screen("svga", $O->{default_depth}, $O->{type}, $O->{depth});
+ } else {
+ &$screen("svga", '', "Generic VGA", { 8 => [[ 320, 200 ]] });
+ }
+
+ &$screen("vga16", '',
+ (member($O->{server}, "Mono", "VGA16") ? $O->{type} : "Generic VGA"),
+ { '' => [[ 640, 480 ], [ 800, 600 ]]});
+
+ &$screen("vga2", '',
+ (member($O->{server}, "Mono", "VGA16") ? $O->{type} : "Generic VGA"),
+ { '' => [[ 640, 480 ], [ 800, 600 ]]});
+
+ &$screen("accel", $O->{default_depth}, $O->{type}, $O->{depth});
+}
+
+sub XF86check_link {
+ my ($void) = @_;
+
+ my $f = "/etc/X11/XF86Config";
+ touch($f);
+
+ my $l = "/usr/X11R6/lib/X11/XF86Config";
+
+ if (-e $l && (stat($f))[1] != (stat($l))[1]) { # compare the inode, must be the sames
+ -e $l and unlink($l) || die "can't remove bad $l";
+ symlink "../../../../etc/X11/XF86Config", $l;
+ }
+}
+
+# * Program entry point.
+sub main {
+ my ($default, $interact) = @_;
+ my $o = $default;
+ $in = $interact;
+
+ $o->{resolution_wanted} ||= $resolution_wanted;
+
+ XF86check_link();
+
+ $o->{card} = cardConfiguration($o->{card});
+
+ unless ($::testing) {
+ my $prog = "/usr/X11R6/bin/XF86_$o->{card}->{server}";
+ -x $prog or die "server $o->{card}->{server} is not available (should be in $prog)";
+ unlink("/etc/X11/X");
+ symlink("../../$prog", "/etc/X11/X");
+ }
+
+ $o->{monitor} = monitorConfiguration($o->{monitor});
+
+ moreCardConfiguration($o);
+
+ write_XF86Config($o, "/tmp/Xconfig");
+
+ # Success
+ rewriteInittab(rc & STARTX ? 5 : 3);
+}
diff --git a/perl-install/Xconfigurator_consts.pm b/perl-install/Xconfigurator_consts.pm
new file mode 100644
index 000000000..976f65d9e
--- /dev/null
+++ b/perl-install/Xconfigurator_consts.pm
@@ -0,0 +1,553 @@
+use common qw(:common);
+
+%keymap_translate = (
+ uk => "gb",
+);
+
+@depths = qw(8 15 16 24 32);
+
+$resolution_wanted = "1024x768";
+@resolutions = qw(640x480 800x600 1024x768 1152x864 1280x1024 1600x1200);
+
+
+@accelservers = qw(S3 Mach32 Mach8 8514 P9000 AGX W32 Mach64 I128 S3V 3DLabs);
+@allservers = (qw(Mono VGA16 SVGA), @accelservers);
+
+%videomemory = (
+ __("256 kb") => 256,
+ __("512 kb") => 512,
+ __("1 mb") => 1024,
+ __("2 mb") => 2048,
+ __("4 mb") => 4096,
+ __("8 mb") => 8192,
+ __("16 mb or more") => 16384,
+);
+
+%standard_monitors = (
+ __("Standard VGA, 640x480 in 60 Hz") => [ '640x480@60', "31.5" , "60" ],
+ __("Super VGA, 800x600 in 56 Hz") => [ '800x600@56', "31.5-35.1" , "55-60" ],
+ __("8514 Compatible, 1024x768 in 87 Hz interlaced (no 800x600)") => [ '8514 compatible', "31.5,35.5" , "60,70,87" ],
+ __("Super VGA, 1024x768 in 87 Hz interlaced, 800x600 in 56 Hz") => [ '1024x768@87i', "31.5,35.15,35.5" , "55-90" ],
+ __("Extended Super VGA, 800x600 in 60 Hz, 640x480 in 72 Hz") => [ '800x600@60', "31.5-37.9" , "55-90" ],
+ __("Non-Interlaced SVGA, 1024x768 in 60 Hz, 800x600 in 72 Hz") => [ '1024x768@60', "31.5-48.5" , "55-90" ],
+ __("High Frequency SVGA, 1024x768 in 70 Hz") => [ '1024x768@70', "31.5-57.0" , "50-90" ],
+ __("Multi-frequency that can do 1280x1024 in 60 Hz") => [ '1280x1024@60', "31.5-64.3" , "50-90" ],
+ __("Multi-frequency that can do 1280x1024 in 74 Hz") => [ '1280x1024@74', "31.5-79.0" , "50-100" ],
+ __("Multi-frequency that can do 1280x1024 in 76 Hz") => [ '1280x1024@76', "31.5-82.0" , "40-100" ],
+ __("Monitor that can do 1600x1200 in 70 Hz") => [ '1600x1200@70', "31.5-88.0" , "50-120" ],
+ __("Monitor that can do 1600x1200 in 76 Hz") => [ '1600x1200@76', "31.5-94.0" , "50-160" ],
+);
+
+# * Screen/video card configuration.
+%ramdacs = (
+ __("No RAMDAC Setting (recommended)") => '',
+ __("AT&T 20C490 (S3 and AGX servers, ARK driver)"), => 'att20c490',
+ __("AT&T 20C498/21C498/22C498 (S3, autodetected)"), => 'att20c498',
+ __("AT&T 20C409/20C499 (S3, autodetected)"), => 'att20c409',
+ __("AT&T 20C505 (S3)"), => 'att20c505',
+ __("BrookTree BT481 (AGX)"), => 'bt481',
+ __("BrookTree BT482 (AGX)"), => 'bt482',
+ __("BrookTree BT485/9485 (S3)"), => 'bt485',
+ __("Sierra SC15025 (S3, AGX)"), => 'sc15025',
+ __("S3 GenDAC (86C708) (autodetected)"), => 's3gendac',
+ __("S3 SDAC (86C716) (autodetected)"), => 's3_sdac',
+ __("STG-1700 (S3, autodetected)"), => 'stg1700',
+ __("STG-1703 (S3, autodetected)"), => 'stg1703',
+ __("TI 3020 (S3)"), => 'ti3020',
+ __("TI 3025 (S3, autodetected)"), => 'ti3025',
+ __("TI 3026 (S3, autodetected)"), => 'ti3026',
+ __("IBM RGB 514 (S3, autodetected)"), => 'ibm_rgb514',
+ __("IBM RGB 524 (S3, autodetected)"), => 'ibm_rgb524',
+ __("IBM RGB 525 (S3, autodetected)"), => 'ibm_rgb525',
+ __("IBM RGB 526 (S3)"), => 'ibm_rgb526',
+ __("IBM RGB 528 (S3, autodetected)"), => 'ibm_rgb528',
+ __("ICS5342 (S3, ARK)"), => 'ics5342',
+ __("ICS5341 (W32)"), => 'ics5341',
+ __("IC Works w30C516 ZoomDac (ARK)"), => 'zoomdac',
+ __("Normal DAC"), => 'normal',
+);
+
+@clockchip_name = (
+ __("No Clockchip Setting (recommended)") => '',
+ __("Chrontel 8391") => 'ch8391',
+ __("ICD2061A and compatibles (ICS9161A => DCS2824)") => 'icd2061a',
+ __("ICS2595") => 'ics2595',
+ __("ICS5342 (similar to SDAC, but not completely compatible)") => 'ics5342',
+ __("ICS5341") => 'ics5341',
+ __("S3 GenDAC (86C708) and ICS5300 (autodetected)") => 's3gendac',
+ __("S3 SDAC (86C716)") => 's3_sdac',
+ __("STG 1703 (autodetected)") => 'stg1703',
+ __("Sierra SC11412") => 'sc11412',
+ __("TI 3025 (autodetected)") => 'ti3025',
+ __("TI 3026 (autodetected)") => 'ti3026',
+ __("IBM RGB 51x/52x (autodetected)") => 'ibm_rgb5xx',
+);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+$intro_text = "
+This program will create a basic XF86Config file, based on menu selections you make.
+
+The XF86Config file usually resides in /usr/X11R6/lib/X11 or /etc/X11. A
+sample XF86Config file is supplied with XFree86; it is configured for a
+standard VGA card and monitor with 640x480 resolution.
+
+You can either take the sample XF86Config as a base and edit it for your
+configuration, or let this program produce a base XF86Config file for your
+configuration and fine-tune it. Refer to /usr/X11R6/lib/X11/doc/README.Config
+for a detailed overview of the configuration process.
+
+For accelerated servers (including accelerated drivers in the SVGA server),
+there are many chipset and card-specific options and settings. This program
+does not know about these. On some configurations some of these settings must
+be specified. Refer to the server man pages and chipset-specific READMEs.
+
+Before continuing with this program, make sure you know the chipset and
+amount of video memory on your video card. SuperProbe can help with this.
+It is also helpful if you know what server you want to run.";
+
+$finalcomment_text = "
+configuration file has been written. Take a look at it before running 'startx'.
+Note that the XF86Config file must be in one of the directories searched by the
+server (e.g. /etc/X11/XF86Config) in order to be used. Within the server press
+ctrl, alt and '+' simultaneously to cycle video resolutions. Pressing ctrl, alt
+and backspace simultaneously immediately exits the server (use if the monitor
+doesn't sync for a particular mode).
+
+For further configuration, refer to /usr/X11R6/lib/X11/doc/README.Config.
+";
+
+$s3_comment = '
+# Use Option "nolinear" if the server doesn\'t start up correctly
+# (this avoids the linear framebuffer probe). If that fails try
+# option \"nomemaccess\".
+#
+# Refer to /usr/X11R6/lib/doc/README.S3, and the XF86_S3 man page.
+';
+
+$cirrus_comment = '
+# Use Option \"no_bitblt\" if you have graphics problems. If that fails
+# try Option \"noaccel\".
+# Refer to /usr/X11R6/lib/doc/README.cirrus.
+# To allow linear addressing, uncomment the Option line and the
+# address that the card maps the framebuffer to.
+';
+
+$probeonlywarning_text = '
+It is possible that the hardware detection routines in the server some how
+cause the system to crash and the screen to remain blank. If this is the
+case, skip this step the next time. The server may need a
+Ramdac, ClockChip or special option (e.g. "nolinear" for S3) to probe
+and start-up correctly.
+';
+
+$monitorintro_text = __('
+Now we want to set the specifications of the monitor. The two critical
+parameters are the vertical refresh rate, which is the rate at which the
+the whole screen is refreshed, and most importantly the horizontal sync rate,
+which is the rate at which scanlines are displayed.
+
+The valid range for horizontal sync and vertical sync should be documented
+in the manual of your monitor. If in doubt, check the monitor database
+/usr/X11R6/lib/X11/doc/Monitors to see if your monitor is there.
+');
+
+$hsyncintro_text = __('
+You must indicate the horizontal sync range of your monitor. You can either
+select one of the predefined ranges below that correspond to industry-
+standard monitor types, or give a specific range.
+
+It is VERY IMPORTANT that you do not specify a monitor type with a horizontal
+sync range that is beyond the capabilities of your monitor. If in doubt,
+choose a conservative setting.
+');
+
+$vsyncintro_text = __('
+You must indicate the vertical sync range of your monitor. You can either
+select one of the predefined ranges below that correspond to industry-
+standard monitor types, or give a specific range. For interlaced modes,
+the number that counts is the high one (e.g. 87 Hz rather than 43 Hz).
+');
+
+$XF86firstchunk_text = '
+# File generated by XConfigurator.
+
+# **********************************************************************
+# Refer to the XF86Config(4/5) man page for details about the format of
+# this file.
+# **********************************************************************
+
+# **********************************************************************
+# Files section. This allows default font and rgb paths to be set
+# **********************************************************************
+
+Section "Files"
+
+# The location of the RGB database. Note, this is the name of the
+# file minus the extension (like ".txt" or ".db"). There is normally
+# no need to change the default.
+
+ RgbPath "/usr/X11R6/lib/X11/rgb"
+
+# Multiple FontPath entries are allowed (they are concatenated together)
+# By default, Red Hat 6.0 and later now use a font server independent of
+# the X server to render fonts.
+
+ FontPath "unix/:-1"
+
+EndSection
+
+# **********************************************************************
+# Server flags section.
+# **********************************************************************
+
+Section "ServerFlags"
+
+ # Uncomment this to cause a core dump at the spot where a signal is
+ # received. This may leave the console in an unusable state, but may
+ # provide a better stack trace in the core dump to aid in debugging
+ #NoTrapSignals
+
+ # Uncomment this to disable the <Crtl><Alt><BS> server abort sequence
+ # This allows clients to receive this key event.
+ #DontZap
+
+ # Uncomment this to disable the <Crtl><Alt><KP_+>/<KP_-> mode switching
+ # sequences. This allows clients to receive these key events.
+ #DontZoom
+
+EndSection
+
+# **********************************************************************
+# Input devices
+# **********************************************************************
+';
+
+$keyboardsection_start = '
+# **********************************************************************
+# Keyboard section
+# **********************************************************************
+
+Section "Keyboard"
+
+ Protocol "Standard"
+
+ # when using XQUEUE, comment out the above line, and uncomment the
+ # following line
+ #Protocol "Xqueue"
+
+ AutoRepeat 500 5
+
+ # Let the server do the NumLock processing. This should only be
+ # required when using pre-R6 clients
+ #ServerNumLock
+
+ # Specify which keyboard LEDs can be user-controlled (eg, with xset(1))
+ #Xleds 1 2 3
+
+ #To set the LeftAlt to Meta, RightAlt key to ModeShift,
+ #RightCtl key to Compose, and ScrollLock key to ModeLock:
+
+ LeftAlt Meta
+';
+
+$keyboardsection_part2 = '
+ ScrollLock Compose
+ RightCtl Control
+
+# To disable the XKEYBOARD extension, uncomment XkbDisable.
+
+# XkbDisable
+
+# To customise the XKB settings to suit your keyboard, modify the
+# lines below (which are the defaults). For example, for a non-U.S.
+# keyboard, you will probably want to use:
+# XkbModel "pc102"
+# If you have a US Microsoft Natural keyboard, you can use:
+# XkbModel "microsoft"
+#
+# Then to change the language, change the Layout setting.
+# For example, a german layout can be obtained with:
+# XkbLayout "de"
+# or:
+# XkbLayout "de"
+# XkbVariant "nodeadkeys"
+#
+# If you\'d like to switch the positions of your capslock and
+# control keys, use:
+# XkbOptions "ctrl:swapcaps"
+
+# These are the default XKB settings for XFree86
+# XkbRules "xfree86"
+# XkbModel "pc101"
+# XkbLayout "us"
+# XkbVariant ""
+# XkbOptions ""
+
+ XkbKeycodes "xfree86"
+ XkbTypes "default"
+ XkbCompat "default"
+ XkbSymbols "us(pc101)"
+ XkbGeometry "pc"
+ XkbRules "xfree86"
+ XkbModel "pc101"
+';
+
+$keyboardsection_end = '
+EndSection
+';
+
+$pointersection_text1 = '
+# **********************************************************************
+# Pointer section
+# **********************************************************************
+
+Section "Pointer"
+';
+
+$pointersection_text2 = '
+
+# When using XQUEUE, comment out the above two lines, and uncomment
+# the following line.
+
+# Protocol "Xqueue"
+
+# Baudrate and SampleRate are only for some Logitech mice
+
+# BaudRate 9600
+# SampleRate 150
+
+# Emulate3Buttons is an option for 2-button Microsoft mice
+# Emulate3Timeout is the timeout in milliseconds (default is 50ms)
+';
+
+$monitorsection_text1 = '
+# **********************************************************************
+# Monitor section
+# **********************************************************************
+
+# Any number of monitor sections may be present
+
+Section "Monitor"
+';
+
+$monitorsection_text2 = '
+# HorizSync is in kHz unless units are specified.
+# HorizSync may be a comma separated list of discrete values, or a
+# comma separated list of ranges of values.
+# NOTE: THE VALUES HERE ARE EXAMPLES ONLY. REFER TO YOUR MONITOR\'S
+# USER MANUAL FOR THE CORRECT NUMBERS.
+';
+
+$monitorsection_text3 = '
+# VertRefresh is in Hz unless units are specified.
+# VertRefresh may be a comma separated list of discrete values, or a
+# comma separated list of ranges of values.
+# NOTE: THE VALUES HERE ARE EXAMPLES ONLY. REFER TO YOUR MONITOR\'S
+# USER MANUAL FOR THE CORRECT NUMBERS.
+';
+
+$monitorsection_text4 = '
+# Modes can be specified in two formats. A compact one-line format, or
+# a multi-line format.
+
+# These two are equivalent
+
+# ModeLine "1024x768i" 45 1024 1048 1208 1264 768 776 784 817 Interlace
+
+# Mode "1024x768i"
+# DotClock 45
+# HTimings 1024 1048 1208 1264
+# VTimings 768 776 784 817
+# Flags "Interlace"
+# EndMode
+';
+
+$modelines_text_Trident_TG_96xx = '
+# This is a set of standard mode timings. Modes that are out of monitor spec
+# are automatically deleted by the server (provided the HorizSync and
+# VertRefresh lines are correct), so there\'s no immediate need to
+# delete mode timings (unless particular mode timings don\'t work on your
+# monitor). With these modes, the best standard mode that your monitor
+# and video card can support for a given resolution is automatically
+# used.
+
+# These are special modelines for Trident Providia 9685. It is for VA Linux
+# systems only.
+# 640x480 @ 72 Hz, 36.5 kHz hsync
+Modeline "640x480" 31.5 640 680 720 864 480 488 491 521
+# 800x600 @ 72 Hz, 48.0 kHz hsync
+Modeline "800x600" 50 800 856 976 1040 600 637 643 666 +hsync +vsync
+# 1024x768 @ 60 Hz, 48.4 kHz hsync
+#Modeline "1024x768" 65 1024 1032 1176 1344 768 771 777 806 -hsync -vsync
+# 1024x768 @ 70 Hz, 56.5 kHz hsync
+Modeline "1024x768" 75 1024 1048 1184 1328 768 771 777 806 -hsync -vsync
+';
+$modelines_text = '
+# This is a set of standard mode timings. Modes that are out of monitor spec
+# are automatically deleted by the server (provided the HorizSync and
+# VertRefresh lines are correct), so there\'s no immediate need to
+# delete mode timings (unless particular mode timings don\'t work on your
+# monitor). With these modes, the best standard mode that your monitor
+# and video card can support for a given resolution is automatically
+# used.
+
+# 640x400 @ 70 Hz, 31.5 kHz hsync
+Modeline "640x400" 25.175 640 664 760 800 400 409 411 450
+# 640x480 @ 60 Hz, 31.5 kHz hsync
+Modeline "640x480" 25.175 640 664 760 800 480 491 493 525
+# 800x600 @ 56 Hz, 35.15 kHz hsync
+ModeLine "800x600" 36 800 824 896 1024 600 601 603 625
+# 1024x768 @ 87 Hz interlaced, 35.5 kHz hsync
+Modeline "1024x768" 44.9 1024 1048 1208 1264 768 776 784 817 Interlace
+
+# 640x400 @ 85 Hz, 37.86 kHz hsync
+Modeline "640x400" 31.5 640 672 736 832 400 401 404 445 -HSync +VSync
+# 640x480 @ 72 Hz, 36.5 kHz hsync
+Modeline "640x480" 31.5 640 680 720 864 480 488 491 521
+# 640x480 @ 75 Hz, 37.50 kHz hsync
+ModeLine "640x480" 31.5 640 656 720 840 480 481 484 500 -HSync -VSync
+# 800x600 @ 60 Hz, 37.8 kHz hsync
+Modeline "800x600" 40 800 840 968 1056 600 601 605 628 +hsync +vsync
+
+# 640x480 @ 85 Hz, 43.27 kHz hsync
+Modeline "640x480" 36 640 696 752 832 480 481 484 509 -HSync -VSync
+# 1152x864 @ 89 Hz interlaced, 44 kHz hsync
+ModeLine "1152x864" 65 1152 1168 1384 1480 864 865 875 985 Interlace
+
+# 800x600 @ 72 Hz, 48.0 kHz hsync
+Modeline "800x600" 50 800 856 976 1040 600 637 643 666 +hsync +vsync
+# 1024x768 @ 60 Hz, 48.4 kHz hsync
+Modeline "1024x768" 65 1024 1032 1176 1344 768 771 777 806 -hsync -vsync
+
+# 640x480 @ 100 Hz, 53.01 kHz hsync
+Modeline "640x480" 45.8 640 672 768 864 480 488 494 530 -HSync -VSync
+# 1152x864 @ 60 Hz, 53.5 kHz hsync
+Modeline "1152x864" 89.9 1152 1216 1472 1680 864 868 876 892 -HSync -VSync
+# 800x600 @ 85 Hz, 55.84 kHz hsync
+Modeline "800x600" 60.75 800 864 928 1088 600 616 621 657 -HSync -VSync
+
+# 1024x768 @ 70 Hz, 56.5 kHz hsync
+Modeline "1024x768" 75 1024 1048 1184 1328 768 771 777 806 -hsync -vsync
+# 1280x1024 @ 87 Hz interlaced, 51 kHz hsync
+Modeline "1280x1024" 80 1280 1296 1512 1568 1024 1025 1037 1165 Interlace
+
+# 800x600 @ 100 Hz, 64.02 kHz hsync
+Modeline "800x600" 69.65 800 864 928 1088 600 604 610 640 -HSync -VSync
+# 1024x768 @ 76 Hz, 62.5 kHz hsync
+Modeline "1024x768" 85 1024 1032 1152 1360 768 784 787 823
+# 1152x864 @ 70 Hz, 62.4 kHz hsync
+Modeline "1152x864" 92 1152 1208 1368 1474 864 865 875 895
+# 1280x1024 @ 61 Hz, 64.2 kHz hsync
+Modeline "1280x1024" 110 1280 1328 1512 1712 1024 1025 1028 1054
+
+# 1024x768 @ 85 Hz, 70.24 kHz hsync
+Modeline "1024x768" 98.9 1024 1056 1216 1408 768 782 788 822 -HSync -VSync
+# 1152x864 @ 78 Hz, 70.8 kHz hsync
+Modeline "1152x864" 110 1152 1240 1324 1552 864 864 876 908
+
+# 1280x1024 @ 70 Hz, 74.59 kHz hsync
+Modeline "1280x1024" 126.5 1280 1312 1472 1696 1024 1032 1040 1068 -HSync -VSync
+# 1600x1200 @ 60Hz, 75.00 kHz hsync
+Modeline "1600x1200" 162 1600 1664 1856 2160 1200 1201 1204 1250 +HSync +VSync
+# 1152x864 @ 84 Hz, 76.0 kHz hsync
+Modeline "1152x864" 135 1152 1464 1592 1776 864 864 876 908
+
+# 1280x1024 @ 74 Hz, 78.85 kHz hsync
+Modeline "1280x1024" 135 1280 1312 1456 1712 1024 1027 1030 1064
+
+# 1024x768 @ 100Hz, 80.21 kHz hsync
+Modeline "1024x768" 115.5 1024 1056 1248 1440 768 771 781 802 -HSync -VSync
+# 1280x1024 @ 76 Hz, 81.13 kHz hsync
+Modeline "1280x1024" 135 1280 1312 1416 1664 1024 1027 1030 1064
+
+# 1600x1200 @ 70 Hz, 87.50 kHz hsync
+Modeline "1600x1200" 189 1600 1664 1856 2160 1200 1201 1204 1250 -HSync -VSync
+# 1152x864 @ 100 Hz, 89.62 kHz hsync
+Modeline "1152x864" 137.65 1152 1184 1312 1536 864 866 885 902 -HSync -VSync
+# 1280x1024 @ 85 Hz, 91.15 kHz hsync
+Modeline "1280x1024" 157.5 1280 1344 1504 1728 1024 1025 1028 1072 +HSync +VSync
+# 1600x1200 @ 75 Hz, 93.75 kHz hsync
+Modeline "1600x1200" 202.5 1600 1664 1856 2160 1200 1201 1204 1250 +HSync +VSync
+# 1600x1200 @ 85 Hz, 105.77 kHz hsync
+Modeline "1600x1200" 220 1600 1616 1808 2080 1200 1204 1207 1244 +HSync +VSync
+# 1280x1024 @ 100 Hz, 107.16 kHz hsync
+Modeline "1280x1024" 181.75 1280 1312 1440 1696 1024 1031 1046 1072 -HSync -VSync
+
+# 1800x1440 @ 64Hz, 96.15 kHz hsync
+ModeLine "1800X1440" 230 1800 1896 2088 2392 1440 1441 1444 1490 +HSync +VSync
+# 1800x1440 @ 70Hz, 104.52 kHz hsync
+ModeLine "1800X1440" 250 1800 1896 2088 2392 1440 1441 1444 1490 +HSync +VSync
+
+# 512x384 @ 78 Hz, 31.50 kHz hsync
+Modeline "512x384" 20.160 512 528 592 640 384 385 388 404 -HSync -VSync
+# 512x384 @ 85 Hz, 34.38 kHz hsync
+Modeline "512x384" 22 512 528 592 640 384 385 388 404 -HSync -VSync
+
+# Low-res Doublescan modes
+# If your chipset does not support doublescan, you get a \'squashed\'
+# resolution like 320x400.
+
+# 320x200 @ 70 Hz, 31.5 kHz hsync, 8:5 aspect ratio
+Modeline "320x200" 12.588 320 336 384 400 200 204 205 225 Doublescan
+# 320x240 @ 60 Hz, 31.5 kHz hsync, 4:3 aspect ratio
+Modeline "320x240" 12.588 320 336 384 400 240 245 246 262 Doublescan
+# 320x240 @ 72 Hz, 36.5 kHz hsync
+Modeline "320x240" 15.750 320 336 384 400 240 244 246 262 Doublescan
+# 400x300 @ 56 Hz, 35.2 kHz hsync, 4:3 aspect ratio
+ModeLine "400x300" 18 400 416 448 512 300 301 302 312 Doublescan
+# 400x300 @ 60 Hz, 37.8 kHz hsync
+Modeline "400x300" 20 400 416 480 528 300 301 303 314 Doublescan
+# 400x300 @ 72 Hz, 48.0 kHz hsync
+Modeline "400x300" 25 400 424 488 520 300 319 322 333 Doublescan
+# 480x300 @ 56 Hz, 35.2 kHz hsync, 8:5 aspect ratio
+ModeLine "480x300" 21.656 480 496 536 616 300 301 302 312 Doublescan
+# 480x300 @ 60 Hz, 37.8 kHz hsync
+Modeline "480x300" 23.890 480 496 576 632 300 301 303 314 Doublescan
+# 480x300 @ 63 Hz, 39.6 kHz hsync
+Modeline "480x300" 25 480 496 576 632 300 301 303 314 Doublescan
+# 480x300 @ 72 Hz, 48.0 kHz hsync
+Modeline "480x300" 29.952 480 504 584 624 300 319 322 333 Doublescan
+
+';
+
+$devicesection_text = '
+# **********************************************************************
+# Graphics device section
+# **********************************************************************
+
+# Any number of graphics device sections may be present
+
+Section "Device"
+ Identifier "Generic VGA"
+ VendorName "Unknown"
+ BoardName "Unknown"
+ Chipset "generic"
+
+# VideoRam 256
+
+# Clocks 25.2 28.3
+
+EndSection
+
+# Device configured by Xconfigurator:
+';
+
+$screensection_text1 = '
+# **********************************************************************
+# Screen sections
+# **********************************************************************
+';
+
diff --git a/perl-install/common.pm b/perl-install/common.pm
index ce4d599e9..ec8f92366 100644
--- a/perl-install/common.pm
+++ b/perl-install/common.pm
@@ -6,8 +6,9 @@ use vars qw(@ISA %EXPORT_TAGS @EXPORT_OK $printable_chars $sizeof_int $bitof_int
@ISA = qw(Exporter);
%EXPORT_TAGS = (
- common => [ qw(_ __ min max bool member divide is_empty_array_ref set_new set_add round_up round_down first second top uniq translate untranslate) ],
- file => [ qw(dirname basename all glob_ cat_ chop_ mode) ],
+ common => [ qw(_ __ min max sum bool member divide is_empty_array_ref add2hash set_new set_add round_up round_down first second top uniq translate untranslate) ],
+ functional => [ qw(fold_left) ],
+ file => [ qw(dirname basename touch all glob_ cat_ chop_ mode) ],
system => [ qw(sync makedev unmakedev psizeof strcpy gettimeofday syscall_ crypt_) ],
constant => [ qw($printable_chars $sizeof_int $bitof_int $SECTORSIZE) ],
);
@@ -22,12 +23,14 @@ $SECTORSIZE = 512;
sub _ { my $s = shift @_; sprintf translate($s), @_ }
sub __ { $_[0] }
-sub min { my $min = shift; grep { $_ < $min and $min = $_; } @_; $min }
-sub max { my $max = shift; grep { $_ > $max and $max = $_; } @_; $max }
+sub min { fold_left(sub { $a < $b ? $a : $b }, @_) }
+sub max { fold_left(sub { $a > $b ? $a : $b }, @_) }
+sub sum { fold_left(sub { $a + $b }, @_) }
sub first { $_[0] }
sub second { $_[1] }
sub top { $_[$#_] }
sub uniq { my %l; @l{@_} = (); keys %l }
+sub add2hash { my ($a, $b) = @_; while (my ($k, $v) = each %{$b || {}}) { $a->{$k} ||= $v } }
sub member { my $e = shift; foreach (@_) { $e eq $_ and return 1 } 0 }
sub dirname { @_ == 1 or die "usage: dirname <name>\n"; local $_ = shift; s|[^/]*/*\s*$||; s|(.)/*$|$1|; $_ || '.' }
sub basename { @_ == 1 or die "usage: basename <name>\n"; local $_ = shift; s|/*\s*$||; s|.*/||; $_ }
@@ -50,6 +53,24 @@ sub remove_spaces { local $_ = shift; s/^ +//; s/ +$//; $_ }
sub mode { my @l = stat $_[0] or die "unable to get mode of file $_[0]: $!\n"; $l[2] }
sub psizeof { length pack $_[0] }
+sub touch {
+ my $f = shift;
+ unless (-e $f) {
+ local *F;
+ open F, ">$f";
+ }
+ my $now = time;
+ utime $now, $now, $f;
+}
+
+sub fold_left(&$@) {
+ my $f = shift;
+ local $a = shift;
+ foreach $b (@_) { $a = &$f() }
+ $a
+}
+
+
sub all {
my $d = shift;
@@ -89,7 +110,7 @@ sub unmakedev { $_[0] >> 8, $_[0] & 0xff }
sub translate {
my ($s) = @_;
unless (defined %po::I18N::I18N) {
- if (my ($lang) = ($ENV{LC_ALL} || $ENV{LANGUAGE} || $ENV{LC_MESSAGES} || $ENV{LANG}) =~ /(..)/) {
+ if (my ($lang) = substr($ENV{LC_ALL} || $ENV{LANGUAGE} || $ENV{LC_MESSAGES} || $ENV{LANG} || '', 0, 2)) {
local $SIG{__DIE__} = 'none';
eval { require "po/$lang.pm" };
}
diff --git a/perl-install/detect_devices.pm b/perl-install/detect_devices.pm
index 6cc170368..d226d033b 100644
--- a/perl-install/detect_devices.pm
+++ b/perl-install/detect_devices.pm
@@ -40,7 +40,7 @@ sub hasSCSI() {
log::l("scsi devices are available");
$scsiDeviceAvailable = 1;
}
-sub hasIDE() { 1 }
+sub hasIDE() { -e "/proc/ide" }
sub hasDAC960() { 1 }
sub hasCompaqSmartArray() {
@@ -82,8 +82,6 @@ sub getSCSI() {
sub getIDE() {
my @idi;
- -r "/proc/ide" or die "sorry, /proc/ide not available, seems like you have a pre-2.2 kernel\n => not handled yet :(";
-
# Great. 2.2 kernel, things are much easier and less error prone.
foreach my $d (glob_('/proc/ide/hd*')) {
my ($t) = chop_(cat_("$d/media"));
diff --git a/perl-install/install2.pm b/perl-install/install2.pm
index bb97fdbcf..13b587060 100644
--- a/perl-install/install2.pm
+++ b/perl-install/install2.pm
@@ -224,18 +224,9 @@ sub setupBootloader {
$o->{isUpgrade} or modules::read_conf("$o->{prefix}/etc/conf.modules");
$o->setupBootloader;
}
+sub configureX { $o->setupXfree }
+sub exitInstall { $o->exitInstall }
-sub configureX { $o->setupXfree; }
-
-sub exitInstall {
- $o->warn(
-_"Congratulations, installation is complete.
-Remove the boot media and press return to reboot.
-For information on fixes which are available for this release of Linux Mandrake,
-consult the Errata available from http://www.linux-mandrake.com/.
-Information on configuring your system is available in the post
-install chapter of the Official Linux Mandrake User's Guide.");
-}
sub main {
$SIG{__DIE__} = sub { chomp $_[0]; log::l("ERROR: $_[0]") };
@@ -271,8 +262,10 @@ sub main {
for (my $step = $o->{steps}->{first}; $step ne 'done'; $step = getNextStep($step)) {
$o->enteringStep($step);
- eval { &{$install2::{$step}}() };
- $@ and $o->warn($@);
+ #eval {
+ &{$install2::{$step}}();
+ #};
+ $o->errorInStep($@) if $@;
$o->leavingStep($step);
}
killCardServices();
diff --git a/perl-install/install_any.pm b/perl-install/install_any.pm
index 8d38cddc6..938323350 100644
--- a/perl-install/install_any.pm
+++ b/perl-install/install_any.pm
@@ -26,7 +26,8 @@ sub imageGetFile {
}
sub versionString {
- my $kernel = $::o->{packages}->{kernel} or die "I couldn't find the kernel package!";
+ my $kernel = $::o->{packages}->{kernel};
+ $kernel && $kernel->{header} or die "I couldn't find the kernel package!";
c::headerGetEntry($kernel->{header}, 'version') . "-" .
c::headerGetEntry($kernel->{header}, 'release');
diff --git a/perl-install/install_steps.pm b/perl-install/install_steps.pm
index b25997932..a80807c1b 100644
--- a/perl-install/install_steps.pm
+++ b/perl-install/install_steps.pm
@@ -22,8 +22,6 @@ my $o;
1;
-sub warn {}
-
sub new($$) {
my ($type, $o_) = @_;
@@ -39,6 +37,8 @@ sub leavingStep($$) {
log::l("step `$step' finished");
}
+sub errorInStep($$) {}
+
sub chooseLanguage($) {
$o->{default}->{lang};
}
diff --git a/perl-install/install_steps_stdio.pm b/perl-install/install_steps_stdio.pm
index 22e171c22..908d14080 100644
--- a/perl-install/install_steps_stdio.pm
+++ b/perl-install/install_steps_stdio.pm
@@ -4,78 +4,27 @@ use diagnostics;
use strict;
use vars qw(@ISA);
-@ISA = qw(install_steps);
+@ISA = qw(install_steps_interactive interactive_stdio);
use common qw(:common);
-use partition_table qw(:types);
use devices;
use run_program;
-use install_steps;
+use interactive_stdio;
+use install_steps_interactive;
use install_any;
-use diskdrake;
-use lang;
use log;
1;
sub enteringStep($$$) {
my ($o, $step) = @_;
- print "Starting step `$o->{steps}->{$step}->{text}'\n";
+ print _("Starting step `%s'\n", $o->{steps}->{$step}->{text});
}
sub leavingStep {
my ($o) = @_;
print "--------\n";
}
-sub chooseLanguage($) {
- my $lang = lang::text2lang(ask_from_list("Language", # no use translating this
- "Which language do you want?",
- [ lang::list() ]));
- run_program::run('xmodmap', "/usr/bin/$lang.map");
- $lang;
-}
-
-sub selectInstallOrUpgrade($) {
- ask_yesorno('Install/Upgrade', 'Do you want to upgrade an already installed Mandrake?');
-}
-
-sub selectInstallClass($@) {
- my ($o, @classes) = @_;
- my $c = ask_from_list(_("Install Class"),
- _("What type of user will you have?"),
- [ map { translate($_) } @classes ]);
- untranslate($c, @classes);
-}
-
-sub rebootNeeded($) {
- my ($o) = @_;
- ask_warn('', "You need to reboot for the partition table modifications to take place");
- $o->SUPER::rebootNeeded;
-}
-
-sub choosePartitionsToFormat($$) {
- my ($o, $fstab) = @_;
- my @l = grep { $_->{mntpoint} && (isExt2($_) || isSwap($_)) } @$fstab;
- my @r = ask_many_from_list('', "Choose the partitions you want to format",
- [ map { $_->{mntpoint} } @l ],
- [ map { $_->{notFormatted} } @l ]);
- for (my $i = 0; $i < @l; $i++) {
- $l[$i]->{toFormat} = $r[$i];
- }
-}
-
-sub choosePackages($$$) {
- my ($o, $packages, $compss) = @_;
- my @r = ask_many_from_list('',
- "Choose the packages you want to install",
- [ map { $_->{name} } @$compss ],
- [ map { $_->{selected} } @$compss ]);
-
- for (my $i = 0; $i < @$compss; $i++) {
- $compss->[$i]->{selected} = $r[$i];
- }
-}
-
sub installPackages {
my $o = shift;
@@ -97,9 +46,9 @@ sub setRootPassword($) {
my (%w);
do {
$w{password} and print "You must enter the same password, please try again\n";
- print "Password: "; $w{password} = readln();
+ print "Password: "; $w{password} = $o->readln();
print "Password (again for confirmation): ";
- } until ($w{password} eq readln());
+ } until ($w{password} eq $o->readln());
$o->{default}->{rootPassword} = $w{password};
$o->SUPER::setRootPassword;
@@ -109,91 +58,16 @@ sub addUser($) {
my ($o) = @_;
my %w;
print "\nCreating a normal user account:\n";
- print "Name: "; $w{name} = readln() or return;
+ print "Name: "; $w{name} = $o->readln() or return;
do {
$w{password} and print "You must enter the same password, please try again\n";
- print "Password: "; $w{password} = readln();
+ print "Password: "; $w{password} = $o->readln();
print "Password (again for confirmation): ";
- } until ($w{password} eq readln());
- print "Real name: "; $w{realname} = readln();
+ } until ($w{password} eq $o->readln());
+ print "Real name: "; $w{realname} = $o->readln();
- $w{shell} = ask_from_list('', 'Shell', $o->{default}->{shells});
+ $w{shell} = $o->ask_from_list('', 'Shell', $o->{default}->{shells}, "/bin/bash");
$o->{default}->{user} = { map { $_ => $w{$_}->get_text } qw(name password realname shell) };
$o->SUPER::addUser;
}
-
-sub createBootdisk($) {
- my ($o) = @_;
-
- $o->SUPER::createBootdisk if
- $o->{default}->{mkbootdisk} = ask_yesorno('',
-"A custom bootdisk provides a way of booting into your Linux system without
-depending on the normal bootloader. This is useful if you don't want to install
-lilo on your system, or another operating system removes lilo, or lilo doesn't
-work with your hardware configuration. A custom bootdisk can also be used with
-the Mandrake rescue image, making it much easier to recover from severe system
-failures. Would you like to create a bootdisk for your system?");
-}
-
-sub readln {
- my $l = <STDIN>;
- chomp $l;
- $l;
-}
-
-sub ask_warn {
- my ($title, @msgs) = @_;
- warn(@msgs);
-}
-
-sub ask_yesorno {
- my ($title, @msgs) = @_;
- print join("\n", @_);
- print " (yes/No) "; readln() =~ /y/i;
-
-}
-
-sub check_it {
- my ($i, $n) = @_;
- $i =~ /^\s*\d+\s*$/ && 1 <= $i && $i <= $n
-}
-
-sub ask_from_list {
- my ($title, @msgs) = @_;
- my $list = pop @msgs;
- print map { "$_\n" } @msgs;
- my $n = 0; foreach (@$list) { $n++; print "$n: $_\n"; }
- my $i;
- do {
- defined $i and print "Bad choice, try again\n";
- print "Your choice? (1/$n) ";
- $i = readln();
- } until (check_it($i, $n));
- $list->[$i - 1];
-}
-
-sub ask_many_from_list {
- my ($title, @msgs) = @_;
- my $default = pop @msgs;
- my $list = pop @msgs;
- my @defaults;
- print map { "$_\n" } @msgs;
- my $n = 0; foreach (@$list) {
- $n++;
- print "$n: $_\n";
- push @defaults, $n if $default->[$n - 1];
- }
- my $i;
- TRY_AGAIN:
- defined $i and print "Bad choice, try again\n";
- print "Your choice? (default ", join(',', @defaults), " enter `none' for none) ";
- $i = readln();
- my @t = split ',', $i;
- foreach (@t) { check_it($_, $n) or goto TRY_AGAIN }
-
- my @rr = (0) x @$list;
- $rr[$_ - 1] = 1 foreach @t;
- @rr;
-}
-
diff --git a/perl-install/interactive.pm b/perl-install/interactive.pm
new file mode 100644
index 000000000..977adea5a
--- /dev/null
+++ b/perl-install/interactive.pm
@@ -0,0 +1,53 @@
+package interactive;
+
+use diagnostics;
+use strict;
+
+use common qw(:common);
+
+1;
+
+sub new($$) {
+ my ($type) = @_;
+
+ bless {}, ref $type || $type;
+}
+
+
+sub ask_warn($$$) {
+ my ($o, $title, $message) = @_;
+ ask_from_list($o, $title, $message, [ _("Ok") ]);
+}
+sub ask_yesorno($$$) {
+ my ($o, $title, $message) = @_;
+ ask_from_list_($o, $title, $message, [ __("Yes"), __("No") ]) eq "Yes";
+}
+sub ask_okcancel($$$) {
+ my ($o, $title, $message) = @_;
+ ask_from_list_($o, $title, $message, [ __("Ok"), __("Cancel") ]) eq "Ok";
+}
+sub ask_from_list_($$$$;$) {
+ my ($o, $title, $message, $l, $def) = @_;
+ untranslate(
+ ask_from_list($o, $title, $message, [ map { translate($_) } @$l ], translate($def)),
+ @$l);
+}
+sub ask_from_list($$$$;$) {
+ my ($o, $title, $message, $l, $def) = @_;
+
+ $message = ref $message ? $message : [ $message ];
+
+ @$l > 10 and $l = [ sort @$l ];
+
+ $o->ask_from_listW($title, $message, $l, $def || $l->[0]);
+}
+sub ask_many_from_list($$$$;$) {
+ my ($o, $title, $message, $l, $def) = @_;
+
+ $message = ref $message ? $message : [ $message ];
+
+ $o->ask_many_from_listW($title, $message, $l, $def);
+}
+
+
+
diff --git a/perl-install/interactive_gtk.pm b/perl-install/interactive_gtk.pm
new file mode 100644
index 000000000..935766470
--- /dev/null
+++ b/perl-install/interactive_gtk.pm
@@ -0,0 +1,37 @@
+package interactive_gtk;
+
+use diagnostics;
+use strict;
+use vars qw(@ISA);
+
+@ISA = qw(interactive);
+
+use interactive;
+use common qw(:common);
+use my_gtk qw(:helpers :wrappers);
+
+1;
+
+sub ask_from_listW {
+ my ($o, $title, $messages, $l, $def) = @_;
+
+ if (@$l < 5 && sum(map { length $_ } @$l) < 70) {
+ my $w = my_gtk->new($title);
+ my $f = sub { $w->{retval} = $_[1]; Gtk->main_quit };
+ gtkadd($w->{window},
+ gtkpack(create_box_with_title($o, @$messages),
+ gtkadd(create_hbox(),
+ map {
+ my $b = new Gtk::Button($_);
+ $b->signal_connect(clicked => [ $f, $_ ]);
+ $_ eq $def and $def = $b;
+ $b;
+ } @$l),
+ ),
+ );
+ $def->grab_focus if $def;
+ $w->main;
+ } else {
+ my_gtk::ask_from_list($title, $messages, $l, $def);
+ }
+}
diff --git a/perl-install/interactive_stdio.pm b/perl-install/interactive_stdio.pm
new file mode 100644
index 000000000..40dcdbb7c
--- /dev/null
+++ b/perl-install/interactive_stdio.pm
@@ -0,0 +1,80 @@
+package interactive_stdio;
+
+use diagnostics;
+use strict;
+use vars qw(@ISA);
+
+@ISA = qw(interactive);
+
+use interactive;
+use common qw(:common);
+
+1;
+
+sub readln {
+ my $l = <STDIN>;
+ chomp $l;
+ $l;
+}
+
+sub check_it {
+ my ($i, $n) = @_;
+ $i =~ /^\s*\d+\s*$/ && 1 <= $i && $i <= $n
+}
+
+sub ask_from_listW {
+ my ($o, $title, $messages, $list, $def) = @_;
+ my $i;
+ print map { "$_\n" } @$messages;
+
+ if (@$list < 10 && sum(map { length $_ } @$list) < 50) {
+ my @l;
+ do {
+ if (defined $i) {
+ @l ? print _("Ambiguity (%s) be more precise\n", join(", ", @l)) :
+ print _("Bad choice, try again\n");
+ }
+ @$list == 1 ? print @$list :
+ print join("/", @$list), _(" ? (default %s) ", $def);
+ $i = readln() || $def;
+ @l = grep { /^$i/ } @$list;
+ } until (@l == 1);
+ $l[0];
+ } else {
+ my $n = 0; foreach (@$list) {
+ $n++;
+ $def eq $_ and $def = $n;
+ print "$n: $_\n";
+ }
+ do {
+ defined $i and print _("Bad choice, try again\n");
+ print _("Your choice? (default %s) ", $def);
+ $i = readln() || $def;
+ } until (check_it($i, $n));
+ $list->[$i - 1];
+ }
+}
+
+sub ask_many_from_listW {
+ my ($o, $title, $messages, $list, $default) = @_;
+ my @defaults;
+ print map { "$_\n" } @$messages;
+ my $n = 0; foreach (@$list) {
+ $n++;
+ print "$n: $_\n";
+ push @defaults, $n if $default->[$n - 1];
+ }
+ my $i;
+ TRY_AGAIN:
+ defined $i and print _("Bad choice, try again\n");
+ print _("Your choice? (default %s enter `none' for none) ", join(',', @defaults));
+ $i = readln();
+ my @t = split ',', $i;
+ foreach (@t) { check_it($_, $n) or goto TRY_AGAIN }
+
+ my @rr = (0) x @$list;
+ $rr[$_ - 1] = 1 foreach @t;
+ @rr;
+}
+
+
diff --git a/perl-install/keyboard.pm b/perl-install/keyboard.pm
index 2c6b84858..5b59bd2c3 100644
--- a/perl-install/keyboard.pm
+++ b/perl-install/keyboard.pm
@@ -86,7 +86,7 @@ sub read($) {
foreach (<F>) {
($_) = /^KEYTABLE=(.*)/ or log::l("unrecognized entry in keyboard configuration file ($_)"), next;
- s/\"//g;
+ s/^\s*"(.*)"\s*$/$1/;
s/\.[^.]*//; # remove extension
return basename($_);
}
diff --git a/perl-install/log.pm b/perl-install/log.pm
index 0fe696f07..640349b70 100644
--- a/perl-install/log.pm
+++ b/perl-install/log.pm
@@ -22,9 +22,9 @@ sub openLog(;$) {
if ($_[0]) { # useLocal
open LOG, "> $_[0]" or die "no log possible :(";
} else {
- open LOG, "> /dev/tty3" or open LOG, ">> /tmp/install.log" or die "no log possible :(";
+ open LOG, "> /dev/tty3" or open LOG, ">> /tmp/install.log";# or die "no log possible :(";
}
- open LOG2, ">> /tmp/ddebug.log" or die "no log possible :(";
+ open LOG2, ">> /tmp/ddebug.log";# or die "no log possible :(";
select((select(LOG), $| = 1)[0]);
select((select(LOG2), $| = 1)[0]);
exists $ENV{DEBUG} and $logDebugMessages = 1;
diff --git a/perl-install/my_gtk.pm b/perl-install/my_gtk.pm
index 78a308856..ff34324b0 100644
--- a/perl-install/my_gtk.pm
+++ b/perl-install/my_gtk.pm
@@ -6,8 +6,11 @@ use vars qw(@ISA %EXPORT_TAGS @EXPORT_OK);
@ISA = qw(Exporter);
%EXPORT_TAGS = (
- all => [ qw(ask_warn ask_okcancel ask_yesorno ask_from_entry ask_from_list create_okcancel createScrolledWindow create_menu create_notebook create_packtable create_hbox create_adjustment gtksignal_connect gtkpack gtkpack_ gtkappend gtkadd gtkset_usize gtkset_justify gtkset_active gtkshow gtkdestroy) ],
+ helpers => [ qw(create_okcancel createScrolledWindow create_menu create_notebook create_packtable create_hbox create_adjustment create_box_with_title) ],
+ wrappers => [ qw(gtksignal_connect gtkpack gtkpack_ gtkappend gtkadd gtkset_usize gtkset_justify gtkset_active gtkshow gtkdestroy) ],
+ ask => [ qw(ask_warn ask_okcancel ask_yesorno ask_from_entry ask_from_list ) ],
);
+$EXPORT_TAGS{all} = [ map { @$_ } values %EXPORT_TAGS ];
@EXPORT_OK = map { @$_ } values %EXPORT_TAGS;
use Gtk;
@@ -25,7 +28,6 @@ sub new {
my ($type, $title, @opts) = @_;
Gtk->init;
- parse Gtk::Rc "$ENV{HOME}/etc/any/Gtkrc";
my $o = bless { @opts }, $type;
$o->{window} = $o->_create_window($title);
$o;
@@ -136,9 +138,9 @@ sub create_okcancel($;$$) {
sub create_box_with_title($@) {
my $o = shift;
- $o->{box} = gtkpack(new Gtk::VBox(0,0),
- map({ new Gtk::Label(" $_ ") } @_),
- new Gtk::HSeparator,
+ $o->{box} = gtkpack_(new Gtk::VBox(0,0),
+ 0, map({ new Gtk::Label(" $_ ") } @_),
+ 0, new Gtk::HSeparator,
)
}
@@ -227,7 +229,7 @@ sub ask_warn { my $w = my_gtk->new(shift @_); $w->_ask_warn(@_); main($w);
sub ask_yesorno { my $w = my_gtk->new(shift @_); $w->_ask_okcancel(@_, _("Yes"), _("No")); main($w); }
sub ask_okcancel { my $w = my_gtk->new(shift @_); $w->_ask_okcancel(@_, _("Is it ok?"), _("Ok"), _("Cancel")); main($w); }
sub ask_from_entry { my $w = my_gtk->new(shift @_); $w->_ask_from_entry(@_); main($w); }
-sub ask_from_list { my $w = my_gtk->new(shift @_); $w->_ask_from_list(pop @_, @_); main($w); }
+sub ask_from_list { my $w = my_gtk->new(shift @_); $w->_ask_from_list(@_); main($w); }
sub _ask_from_entry($$@) {
my ($o, @msgs) = @_;
@@ -243,19 +245,19 @@ sub _ask_from_entry($$@) {
);
$entry->grab_focus();
}
-sub _ask_from_list($$$@) {
- my ($o, $l, @msgs) = @_;
+sub _ask_from_list($$$$) {
+ my ($o, $messages, $l, $def) = @_;
my $list = new Gtk::List;
my ($first_time, $starting_word) = (1, '');
my (@widgets, $timeout);
- my @sorted = sort @$l;
$list->signal_connect(select_child => sub {
- $o->{retval} = $sorted[$list->child_position($_[1])];
+ $o->{retval} = $l->[$list->child_position($_[1])];
Gtk->main_quit;
});
- for (my $i = 0; $i < @sorted; $i++) {
+ for (my $i = 0; $i < @$l; $i++) {
my $focused = $i;
- my $w = new Gtk::ListItem($sorted[$i]);
+ $def = $i if $l->[$i] eq $def;
+ my $w = new Gtk::ListItem($l->[$i]);
my $id = $w->signal_connect(key_press_event => sub {
my ($w, $e)= @_;
my $c = chr $e->{keyval};
@@ -271,12 +273,12 @@ sub _ask_from_list($$$@) {
my $curr = $focused + bool($starting_word eq '' || $starting_word eq $c);
$starting_word .= $c unless $starting_word eq $c;
- my $j; for ($j = 0; $j < @sorted; $j++) {
- $sorted[($j + $curr) % @sorted] =~ /^$starting_word/i and last;
+ my $j; for ($j = 0; $j < @$l; $j++) {
+ $l->[($j + $curr) % @$l] =~ /^$starting_word/i and last;
}
- $j == @sorted ?
+ $j == @$l ?
$starting_word = '' :
- $widgets[($j + $curr) % @sorted]->grab_focus;
+ $widgets[($j + $curr) % @$l]->grab_focus;
$w->{timeout} = $timeout = Gtk->timeout_add($forgetTime, sub { $timeout = $starting_word = ''; 0 } );
}
@@ -287,11 +289,11 @@ sub _ask_from_list($$$@) {
}
gtkadd($list, @widgets);
gtkadd($o->{window},
- gtkpack($o->create_box_with_title(@msgs),
+ gtkpack($o->create_box_with_title(@$messages),
@widgets > 15 ?
gtkset_usize(createScrolledWindow($list), 0, 300) :
$list));
- $widgets[0]->grab_focus;
+ $widgets[$def]->grab_focus;
}
sub _ask_warn($@) {
diff --git a/perl-install/partition_table.pm b/perl-install/partition_table.pm
index 1986e4dd9..a9f20cd10 100644
--- a/perl-install/partition_table.pm
+++ b/perl-install/partition_table.pm
@@ -78,6 +78,7 @@ my %fs2type = reverse %type2fs;
1;
+sub important_types { $_[0] and return sort values %types; @important_types }
sub type2name($) { $types{$_[0]} || 'unknown' }
sub type2fs($) { $type2fs{$_[0]} }
sub name2type($) { $types_rev{$_[0]} }
diff --git a/perl-install/partition_table_raw.pm b/perl-install/partition_table_raw.pm
index d85789a50..973961f5a 100644
--- a/perl-install/partition_table_raw.pm
+++ b/perl-install/partition_table_raw.pm
@@ -93,9 +93,9 @@ sub write($$$) {
compute_CHS($hd, $_);
local $_->{start} = $_->{local_start} || 0;
$_->{active} ||= 0; $_->{type} ||= 0; $_->{size} ||= 0; # for no warning
- syswrite F, pack($format, @$_{@fields}) or return 0;
+ syswrite F, pack($format, @$_{@fields}), psizeof($format) or return 0;
}
- syswrite F, $magic or return 0;
+ syswrite F, $magic, length $magic or return 0;
1;
}
sub zero_MBR($) { &write($_[0], 0, [ {} x $nb_primary ]); }
diff --git a/perl-install/pkgs.pm b/perl-install/pkgs.pm
index 7795a7f8a..f56e43cee 100644
--- a/perl-install/pkgs.pm
+++ b/perl-install/pkgs.pm
@@ -9,6 +9,7 @@ use install_any;
use log;
use smp;
use fs;
+use lang;
my @skipThesesPackages = qw(XFree86-8514 XFree86-AGX XFree86-FBDev XFree86-Mach32 XFree86-Mach64
XFree86-Mach8 XFree86-Mono XFree86-P9000 XFree86-S3 XFree86-S3V
@@ -31,9 +32,11 @@ sub select($$;$) {
my @l = @{$p->{deps}};
while (@l) {
my $n = shift @l;
+ $n =~ /|/ and $n = first(split '\|', $n); #TODO better handling of choice
my $i = Package($packages, $n);
$i->{base} = $base;
- push @l, @{$i->{deps}} unless $i->{selected};
+ $i->{deps} or log::l("missing deps for $n");
+ push @l, @{$i->{deps} || []} unless $i->{selected};
$i->{selected}++ unless $i->{selected} == -1;
}
}
@@ -56,7 +59,7 @@ sub unselect($$) {
$i->{selected} <= 0 and next;
if (--$i->{selected} == 0) {
- push @$l, @{$i->{deps}};
+ push @$l, @{$i->{deps} || []};
}
}
@@ -221,6 +224,17 @@ sub init_db {
$isUpgrade ? c::rpmdbRebuild($prefix) : c::rpmdbInit($prefix, 0644) or die "creation/rebuilding of rpm database failed: ", c::rpmErrorString();
}
+sub getHeader($) {
+ my ($p) = @_;
+
+ unless ($p->{header}) {
+ local *F;
+ open F, $p->{file} or die "error opening package $p->{name} (file $p->{file})";
+ $p->{header} = c::rpmReadPackageHeader(fileno F);
+ }
+ $p->{header};
+}
+
sub install {
my ($prefix, $toInstall, $isUpgrade, $force) = @_;
@@ -232,11 +246,7 @@ sub install {
my ($total, $nb);
foreach my $p (@$toInstall) {
- local *F;
- open F, $p->{file} or die "error opening package $p->{name} (file $p->{file})";
- $p->{header} = c::rpmReadPackageHeader(fileno F);
-
- c::rpmtransAddPackage($trans, $p->{header}, $p->{file}, $isUpgrade);
+ c::rpmtransAddPackage($trans, getHeader($p), $p->{file}, $isUpgrade);
$nb++;
$total += $p->{size};
}
diff --git a/perl-install/resize_fat/fat.pm b/perl-install/resize_fat/fat.pm
index 2b64bd6f7..371e90feb 100644
--- a/perl-install/resize_fat/fat.pm
+++ b/perl-install/resize_fat/fat.pm
@@ -36,7 +36,7 @@ sub write($) {
sysseek $fs->{fd}, $fs->{fat_offset}, 0 or die "write_fat: seek failed";
foreach (1..$fs->{nb_fats}) {
- syswrite $fs->{fd}, $fs->{fat}, $fs->{fat_size} or die "write_fat: write failed";
+ syswrite $fs->{fd}, $fs->{fat} or die "write_fat: write failed";
}
}
diff --git a/perl-install/resize_fat/io.pm b/perl-install/resize_fat/io.pm
index 8ffaa8355..4d1a37158 100644
--- a/perl-install/resize_fat/io.pm
+++ b/perl-install/resize_fat/io.pm
@@ -18,7 +18,7 @@ sub read($$$) {
sub write($$$$) {
my ($fs, $pos, $size, $buf) = @_;
sysseek $fs->{fd}, $pos, 0 or die "seeking to byte #$pos failed on device $fs->{fs_name}";
- syswrite $fs->{fd}, $buf, $size or die "writing at byte #$pos failed on device $fs->{fs_name}";
+ syswrite $fs->{fd}, $buf or die "writing at byte #$pos failed on device $fs->{fs_name}";
}
sub read_cluster($$) {
diff --git a/perl-install/share/diskdrake.rc b/perl-install/share/diskdrake.rc
index 13804f8ca..637b8f3b1 100644
--- a/perl-install/share/diskdrake.rc
+++ b/perl-install/share/diskdrake.rc
@@ -7,7 +7,7 @@ binding "bind"
style "font"
{
- font = "-adobe-helvetica-medium-r-normal--*-80-*-*-*-*-*-*"
+ font = "-adobe-helvetica-medium-r-normal-*-*-80-*-*-p-*-iso8859-1"
}
pC\ܘ)zBG{1':wVښu6`u l5ljQBz]RAOmI)pLdlx V !E5=ht->#^p~7fКOAn%2§f+GP_to8^]p=2(.󔐋{t? GရI s/چn]DmSkw|>#wC\jY?%'\t“!z8 vrytP?};`ء\UҀBxT+ڛc/$:iدVdZ?U9{z*;\ǚR 2{дyT&f86>־R/`FϿ:I:䎼/Ck:RLIv3swƿO:gLNqřB̀Ƣ_U jaI!C;9jTGhxԩ/U%VwP}^H/Q/5AqU[is $hAހjϪe zzݣB˳r:I*ceк*,*mFb2 o<xÿ!ғH ^? i4 >U,‚$F\sIDԈR V޷?NOA>'5r $St{>qfɓO"-b!؁!b?E~7scm)Y~#C>9KRitFnZ^v>3rϵD_&ԈǑҚޱ"?Z[|tXLE a0[|}_viC(VݷW&'FuFrB"oZ*B7B3090c~Mc'q}@$B~qy]hnNJCag`ހe#Rؐ`ӗN 8nxP6G33nBy@H w ͩVGb[ɪe& ũ9#ex^>?nD-sJᰲu$JR6ue5hs  6LHX[mNqdUeEξw]Fg`4uJ!N*+9ĻvtT"@iX$~}Ǩz|x(Wwf^ kzu$iq$%c6jط?xйuZ3xLd~ixǗEl\!Ek(B"Rh}yG ֐Ck)%G >) 8ѮF#u1LMOY8‰E\&(4hS.q#"\-dcDPOY^mߺHAڀJv>53z-~I.w~4'f ~R*Ϗae8;"Cp9,D [?CT,ס\ ߀pek;ðL!49(bG/O#wJo:6Bgle˅c[b0yb Ƌq0?[ϤOU1@tLRjna$wˉݕg'1=kj.yҤKj+K@yJfqUjqe`W?e\N4gR`8w]:UahS}{1p˞˃z&h^+WQ2t:5$O;߸cW<V*uyCH]}nڸٌ'R[S,CFD{|C+qN# 8luqӵSL@]NHfُ u1h?H=(FKh_Xx<͉[ň6;X7?@^)QSj>-3 rsw9pGQZۚř:A!i0X!?T<f7b1f{Y({Fu uhc_j])$%4c_uF*Ü9XsDžL +:1*˙=[V΂xyPy$m@ p7զ1c 8gPrl|M)imZxy &I羚OJG?GȬx YUWSLl9O: fex\ըDګ^yw!?$t7Bu$[l#HF2oHu~U4q xNh1zvH/lr{ΨLjd5#nM]?cc EpaيCפN&F>.,sR/hǫTH g w^mr~,x7qW> q1\PY7Ҕ]ҝ J QO5f&A%Ks4؛*Mbp&O…tviGL%8 c)l&I,2z`X\:Q3²aGc2#Ӷ?irO|^߯rd04rr1E{S,O'arV\s Hԧ <A6Z0Di%Yǫҥ.JGoɯ?}`qEXRk'+TՀYz-oYbڮNvwmSJI,CU‚Rr"UOz1m 6 o W3 x׼)mrGrxP3MߓTÓ8I\ɞ< 4R%hܼkWILG,Cm'ܖ1ƣNBhA9KӁ~ZKl0kMy8>mΔ2rscbyۂk#-(H=n߼>8Tz;&qIFmj+_ 󓽹>q1}DўvYׯZa(vu{eBe>k&D-P*  [zXc',=H1R?}wϰ5k NhQiԢnBw7$v'rL8pkE(jeتRQFI%Q4N#im®7o6- 2tXNC{zG66e+-BGQJn۲\Dl>d'hGZ'T֭+  }@\!{K:'Mۦ1TC?B0X]U$o!u JɌ$tn K-ū!&܇2أz& բ'Pk˱<{&"g߫++6!.tLSR,ǂeX=?$#:ث_J ĥpPYӕ3:h::  ^|ԀQk#Aj'Q9sX#3V"aeu!%MQl&qpڭ]9kG2˰q3Y@i1S+*u g:gJ&4ovCZzǜ~q㥪ڢ3Ā)m> Vӻ#mˡ)y`mu4a&)%3!nޅ﬜5K_ Q=Sl&Xj[UY T:˸dB>{A5#mW^l>L#4ڦ2x$ԀjW*+*BꦛN?X cfD"#}VG\nR{Ý\ӌeG}+R[m ,0*iNFX{n<Ұh2܀ДȸKv~"&V`h |x,YjKaM!];.BldI.sCh)>gDf[,E߅77-< 46x~ ehʹQFRiYt6 IxM/MI9.qɕ ߤbBt}" lٳ䱆:6]/r5.ןOS >o0SG*@ZA Wcdm,'pg*SL"I7΁a6TH e1Ce^o&~G>𹣥#Rzf($@# N;W7Uo D( IK@&.~>@Fy@T6ݐd͵,CWF>57^>m^Vo{v6Y$^wܗfzSRzf{R4zeFpU0v`"=."g&t(y. o[;ݦTUb;] C$/#*6߳vʸF54K8΋XғӸnu5= #ד2B,8һHJS3G;x=4ߗDuSA{ 4M+67CE+!;gNV{lX_J+4H{t|*?3#<63><ۖ}OtGcr6)+[60鍬}-*mqgq9p&'vA[7)EHiH^ ;$ [GƫU\\B˳E.?sV2PP!V>i"]m>]։+Sr>{'ԪEff*]IeF8|H@ߛSH: ӏk]=WBobc,̎m|<>"7V݅-JJ:R\bTKO:ᨺw_JP I^c ^8XN֯̀ ](JAzp>Pnd&ZH-?&d*5Ep{7& /\J$ǹ<*.V_wd+Ɵ~4㹠43[iˋecLo hUlc$H}Ea~Hlfg =P5o}굓OVyfo7q4B2E~'qSN\Pp;b"J0 D x3,|bw*Xb؎Uf8ӎA/89M-UY&a!B[FMU^a!߾DRJwKk6BT}.y$GByojz㱙<ᨧ `PK: J:jqOS) SF4ۚEWv C4GYK@NLocs AɔVLߺ{Qg}Bw7խR+P{b^ROVw2 !}{ kjvP!/A:oΝ|-qwQY !N_kS9VNXRy5dwP06z=L5 6˫k_X#`I#j:Q WmơR3sEK;GS+ x AD d1){_noQl@qԸDe>LKbېwu[cqv֒y `-a䣽77ر ЋqV#θvIm<~yl2sS1y("^&_[Sk1 *eE pNKR1];p٘8+X oZ!-ѹ!lHñccʝ=v!kgM^ ɐr{ĜŽo+QbVtG\~ w[y?ř ]<Jy~{ xFˮ N)[/xI1Jd0e4'PE dV(+%;6\£A27'vӫe/WK65H2J<=(H\Nckv[\2dK9wiLv#4*\tMµ3e^bIJ( s+X#6ni arԝhRo5/̙J'+ k h$>Sk;. ~ ~,<J|.Vs8ۄ]bLz)P ;5ajPg鶢ɲ*~DM}3Ю^C{]K gR=YYzLp !j0GőI0*1CZJK#T=7v)s1 ܄Gڬ&]-tY>bW{or Zh8s⨘nxy#ޱ 7 ٩3YC*+Xh&qfAO>`q calXb ?:͘>R/h1xnb=pՐW@A&Z #yUoAO+S^8S. mi)<uDú[h qy<7jYXlKOޖo=Ph"ϙs zX~d8 Z1[u_x&劆THU$HZ Z|{VzwyxpR'tdy" $XIsVjSb$EgM??),I :JK) qҎ&dh7%`_' k7Gd)+@oc']yL_Er#lL42 $ C&xW*CIB;kNڻ[pvl.J/IWrW\-{>Mfv!F薾6C"_ʔqaq`~­B ׅ:!r>8XBübk @\ZO+~AQnV!q:^`C-)i{~|#B,cN]̞M5|)*fNW/%3>Wu99]/DvJ^H?;`%)X3nVHHx8p}V W*9m(KtN] bMOU?17nNQ( .lJD5iUI37 aj\DXdt5 \D2tL*>,?kIZlFTvvq>F;9Mr]'o)VxmY2Zܗ[LBN18c^TMdAqv8 ))6P5ހ@0D9[*jof|l]0T#[uu )*BSjD]_' %?=3:-DAs+=Q:Tox!` gUXUqۥ2o|> #߽zp^;Y)+F!Ͳ[!'VȔ:V3x[ D(0 mdf6TvJ4ღ̹ݦCB [ݥCe.j¹ߜl1*wjX7qϢSj!Nhpu(JSRjy.)+k$+a$W yðQ|okC `&\Ok|*l=u-0xKg_@e67\I-׸t&Q ƙl<,MWyKܷx_qAXs믋ʛª^S'A bi/$ A)T_b~)Ǔa[_RjIC,dk#{x +ViFW%QvXo!n'%sqUr,`^:^0{LXƕ>FJI-cu͕42Oy]e]lxh[jœ{"`2:P͔,1B p+%:=mo)O,Rp5).nlY"#0D pDzŜɮnT9 ~ŃDbuC>y~xCFXL!aYm=hpn)𵜭*LgUJ1>[:@Ɛa$iEf"6[ hJiVdH^1&|3s?턉 40Ԓ8~Mǘk2Ӵ/ر2t(b'e6,|bRѐ(nNVBן0o>RSW PQ6eORdD8P IOvojOtdI_Nxl`^9CiLri^C"R1#[uZZ>u1(E8,cҨ7^EGtvhű00/7mMi o8u㧆 W۫|t$o'ՍZYGB'ܕM3ڟMp,t:APbpeF: IHO{~H\EJOz_/1ȕ.MIHc,uEbH64Y&~FzWm, VKt1$OXͭg~H/=XT_' !}u€TFu'm*X)ܼM2\Jzܠl.`I9;*L8:@^0޻]߲&wCejS˴veޙzUGiE4/%|X}f& )ʼ۠PW9b֌MKxD8EW}"{~-fAbDL2Y k=0qKjDR ^,F}􆠊cBwUEpOZ\-?;~Kz3zaqˬ!ud? Ʌf$mN]"P_ KT<VW+;P ) pU~HGiB>I,ڗQt_"(ivKWL5I.bjx5 ||4gPѐlP!E͆. fACykۜEs+x?Q> |skk*K&K⛁M^GUR@0seEmK 6dR**U@$Ul FG?Z8j_a^afH}1Th4A,AnI_UxMPӫg\Cs9LNݳyv](JAq ˧tgŎ_&?4ߦH. f3(҉4 kެh/HݠL{0LИH䝟M? EP|:KKSui ]ے3 ~wxp}g:ZIFH \"X(Ւ!v"4YtC{u~z(J?V1 C J7:@wDk m1R0b]J*/sH3•/ʪz#}kț U˳c 4\ QizW/ޒ)J Na`oFʱAYMd50IqPmEx7l)1VE  ~z Bw4LZGG0Z kWvb.#Y]WkE̜{{zdqQ 9l@EOUm[S X$2[֒%6`±o%Igy:.L;.k" :};8!2p\RWwy$]FL/] S]FQaBl}Kw{Ii0|F-:8/HsjfG UR`$Bh$ {A^>0U h``5:zD 9F ӊ@,[xٴ7|:[b=P#B-yf"VL)OP{ =X4P j{E<`0f Y{UgRFr&Pq$fӇwI)Amt Ik>0 jݺrUZ&K틫$ٛ"MvD5s[p!5 ڿ|r7 U]/o2Yѵ0D,,:\㇩ 6Q\7C]C|v˪1eSa9{7Ș&t>/T$Lsu OJ(u6"W̛Dew'`w.a1V^~C$Y)@ޜ_LFC{7cM`dﴢ+(|"~cVmOF{^1,31(vg"[DAW@`7=ƈm;%iڐ.h#tzZVŹiEߴ_n潸K9ֳ%AWxd|A+S]ߗrU,TeL}4]1˶oK dǞE;lt7wY%.4U&o6$fbGVlmӐOymd55fjbKtPBBw'4~=:ITF2ݜ݇a8 "Vck]=jD#}MKNF`ee,QВ|ņK!,2iӚDJ;&G4Uyև.? jO& j6m4ka٧k"*]N;~{[]%p\XN^*RʉV=WbQUPp6ۭ'*s~S4uM䛖aK-F7]4}]'h%Ԗiǽ#]$xE:?d0P0c9SLkhPV̇Æx@k.OX@t7CD92Ӏ;GZ e.3kWd <'!p G>i"9dH.HNb(^ΔB;0w##X#*l\=%͗ 6z&QPI>߀xIK9?/@_ur^`SҮ(A[!- \pDy@؅ׅ1!tǍŘfINTF /kȻ;3}fR/gO~Rgx wwaE$+:)e_)V AHAsjIbF_/az…08T^n?(4x>x}%1{鰰?Qx8 l!`f~ 8B~u |r<(/LnRG,e! s&=̆>@@/>fZc4r;6ʅ^Ec9Hr"l䍴M%.f*~g)O *z+T, DCIb{rb+GeH>.jl C2VC!a^C}Uh>ރ1*&ʷAon/͗5 {ouE12f4ɭ'šA/GYJ&G8Z_m<}ķc 6sjC+5H=z~r/-0壤:sw]Z7uxwŢ&( Kas(tLiR'y v=z'L>lZסB(X|Uc죵4ژHw e4$'@˶M Z M ILj!  c[M)?pOE`MѰ4$rMؖ.YcIumHSaqu^:@ ˠȫ޲s9DyJ>{k g ;4.E$/gFeFL[p}ue( džSÃ=kXLă&<z@Ȯԃ~V֒}M @-_- Y{nw[r_F*eaAۘdCC8?hIE/F}A1GpsqKQ DϮFXH17/ Iz)>HҔ2b$Bç噯o;TE0RNˊ]%񲊶_ lG<\㮇yY&sVӿ䥾\ʓZoOUA(ِS?FhE[HngZOHwWPlKԽs_RgZQntEk>0g&^ EaxB9*DuP*J ͼqfV\Dud>4ɬhZɎVgaSz`5]i{|AI9Sk̿pI:(T .fS5wY>7Ű TD4v :4 CH!PXHH~LtOr SKzd!j TEce*i;œ{1[cCNÁ@D}/A-䅺F>nѠ߉ 'J_:XN=?7ItSQa*6?>!BON2kAQrj^&Ԝt7Г 4(k=|B44N% HGۢM`nf6q-3](5y2[7ڱr;5U[qa P rXS~;>r? +aov(ΊsYBuaJCqKƔU~!"zl^ZҢce>(r^(K@>3xBҎ@-I+{U^HUH$#c0h14 ϴtۦ[(9YN-ΕEz򸞁nHg̫L H@GX(?^&j8B<^}Tc|' -Gt[}w(ra_V#$! lopp+PzkobG9Jٔ'񸩜- t܋M09SuAn |蒏.h+-?]aj% zOޔ$7ʯ TΣI+oZ"KzOV&9cޭC)׶P%G!().V.} xJw3<gWY'۲Mvqm)N2ƃeũDÙ^{ GZ;Ѥn_I h2 9*laG@7簙W?I-O47$rۡYB?Q#2ew7@ /z0 EGr 𐶅2=hUqk{ vL `* Cb sF -Xx^z'6x +U$+~{4M:L \b:L/CjvW< lkc,gPa7E}9$} d 4C2P+WnHuōx3 Ǥp56 of;^z[No)_m6k8 bRsF([ ?C@;N0}| .4q!S;C_S P /j;d #?+@HU\jCw9Շ=ؿO n?sP.z{HڶFOy䲙_ |O{ Fđ5+ o=7"unV{T>U C4 }>pc,`Q<~?B³9Kڻ^ ?Ha-.MNC5--fQdRի9C w֒4;9A"|ލu,% t6Z[zݟ?3@rIAڝ!#2΀/U?_|KTC") 5)!g ,w }SjQݏRW$3qJgM(N<*Won1&"5h/ Ÿ?Q[/R1s'p0)|l2c`WI]qwP0ˠuJ,wUA)o,He0)vmiUq2q!;^=] WpcĬ̈q kr7d {Za ],dr-Vh,+OIo؍}i# {E7x*zO>$ev@7S!ڴZ3of$RkȠ4%J̭}QH[ ɍzbGZ~^ef);s5R8 zrKآC${m_/Q=:}p 4Bxo,t=ud 3|KvN% p#'jt9NPP v٪ow_4nSB{ fƹfTPsSo@aza5XD7T${W-.-ǽ,@R{ְlK+-8~tu^F*: \)Ϧ 3ӏM)(d N.}vA9E% "͖~gC[5G}ikscɊiS9pMig3qKQNiHJɝ'ྂGΌ )$ho"l%8?wtҊ2)(Sz1MV~1wHvs/'5B( L2МTK)>&"B-P|DGJX$7x:xLodڟ2-Nƒgmrw 6Y8,wcl872<-2BҜ?K2pETiuMᏺ##%E4!rd$t-d$ұ/B;2Dn]_ZPh$œ|nchY>߱9xԗMW /cF4}X;z2aa] Guԍȅ0dh_ݹijʥY"L&3Ofߧ#|Q8_/ڋ?sLל&[ʮA Ur ӯtֈL@zK(bz}lAcC}އjgRkSd*|Zw{֑$CϢTSBM OAB΅ޗG AW[ Нy_<5j_-`CWFYqJah} c?>~`E^kՆAvK #qRKqw%0j捫=-fm]J\iF%:Va~bʏ&O8Ӑ4+0BkB/(K%* [@K GHI4Ce ?v~2P6;+#ŻGw Xwbp||.F^yU <7:oSMγP.МuU)hp&Vppiqο r}90(HuƘ;A@4p4u7؛"]U`Cm[)0{[@JIW-1%0;s <UI} @(-h$Twv*"+"̰63]HJ!Sd].~nQ{Ն,0W?;5  WiXەdzSu3z>;yz;P5%?;_)I?b6\8m"׋F_bz蚱)e%ݳJ,@EO[o֓B!ƫ cy ՟!GY E4 f z"B#/F'rc v BU6͞zG^jZ6lu[;d).V>%TbdK'8'"{cGpH[&8Z/v2l9\Pųeh_x 'K࠴."'P*Mk%-B?oZ8;7tp[+9 ܟj5dIgjC(C" FA:S(yNL-Nh(P-QFo[H_B O2)Y d"#͕o!|Y3OtpDaSC\D &1sH6sFV{I\n$͘fԛ8 \ )~JU үkkpS=[K;ДvKB5&qVs^T5 %Ik\hHK$͋ ~M&^\ǵs۶CI[ &MCWlfZ.AQ`8z2Z/P[=u!F0_0 ۋεR\q\AhKp{[g|U̔ULT<n/X16@Y#d`w/JͯX# Ւ]d١kf-Tk}ͩHt :jGS2#w6!?4W>g˿mO<7UW"P ~HjXDTXs+''Me֙mcvo+`pk7L3tmw$z6û6x7S| RC~B !?JG'ӭX1_oFL xL{d>WPk 2*q]y'qd`jK /xv~(kD{~W_Qn[w Hch˰R8׸8hV''KaGm y8cꘈ(*,0.;,KlP1Odqj4J"uDyZjNG#=5?v&qeF/hn~cFtX;gkv8 SVRӎyztb8}n$!<1AekE -4+|$!hbDhJj4$,%D5@L {HH*[;>A3>dk-<+\jjU59\DYQcq\$=/ |NK˕C# dU;>#D  V cGçwUF2HPԲel1!]U>v(c rscڙ# t`; kc/USpFD+@tM_cBCRB[߳ dJSG |4!+]l\5`{3\QX?a2';H/2״YRc'F-CYc}Z$Q^!"Z!3hL+]xjJTU3u{ThUZf=hSj>R ~"pVEpDtu\ؗQo)`#6}CX=x Hj~1 ԘӆgqqS8ۤL[AsY`e/j`=K ,@ 00 G1Oѭ:IP_I&6$(!\>H4:<b *6/Ђl=ͯ9_i($-bRt |:hirg0D"AOҽу8hޝkzcl4AwipDw+rt{_׆{%ED7Ū`(/=`\>b#rm8.WDV_1?@%wga{NQtO_wnȫ/|Ds˵F|uD=* Mw"VmzX?)YG~gFc<ƨS rõILDUE8V¦'4]h5w?aWq[~Ag 14w7"oe$N%6`@sձΰ~.ıkU"$P­ )F<ٺ`aB#w`i%lOߤa"s+gpQǯr^[Sðb+yF 1GE6`zAJagoͪ`nNJrV"^"Ihm*.dAN+zj18R2a-%%5[m5AU11^P-.mmOEaUfoճ5Z% ?E 6']fODz[R 3J"pfzk ߖ޾-D&Cmʤ9˼(&Se;>=ڪL3E,T+whf N @hu>v+TEw4iwCpjɀ]i~d'}0)qvT2.ʺKPIr-jttѤ7F~8fi%TSPMv:v$CohwlGM*  2An C۩}|<#!R׮MTIR+l=?3 FZlD&Zt6{w#c{PC], "mB/̈+"߹xKD{5O'c.|~p*>mFrps^buT>ڎxF {gi=XFR+̀UF E\k|A_\v /wsF9xu%F:^Ggc+z_5(/MvvfuƶFgQ'𬉩 749-&JW!=ED6FN j]Nc ] ހ,#]TB)ii]t ` u(}07Q (\N8ZzZ)Qq"#Wбudz\Eb4N;2c2ʤdD@@QY3 at+g 905PQZDsɶ%"ny{T T]풡Io>2RD#z`esXbbaRܠ~%cKMZPSx=<5TS ]aHJQ `&EBL-vsHCvL@X³;KbpƥugMX9Ƕ&`jr9nZm:/Mu%F\̄;vD(/7?Mjq[<%ǔ!Rw'.\΂'ҾU7GVTR JaX}}'K ]YK`=LlCʒ~67yb,{T+\A4+I5*#Iѿڴ+-+@`voC ☏IrHsN:UAX̷-Y2!S^ȸBEǃ< Ǣ56f#Ww0+(Ѱ7O,.BdKzO6],Ҡ2G{ W2 ZKigi|+Mٵ^s{ljoժ ԭ>4ӓ6Y jYtF%ULT, ibypoCv'JphᬰCLQzpA,= csM{nuFE| 3.Ry@r&oף%($|3׵*GgW$ ;@1R)i~iAt&ZNflc-N$mSֆ&20x\f_:٠/ɛtcwV[YhMT*  _tN(`K8]<#EB7N=n%~B, a"pS049~*⺁҇e0ee>y hAъ Fs$/܆CPGVEpdy}.;*`?39UXZt% w}:Nfްخqk9V#ĹV\ 'c"t@;GUƷr{:xhǦ" Ƒ\re0^K!X* 4,E5k9gܷa嶄.W7+!(M*ZJ أYGY%gR|: >GfudW#Y2R3SnpDz. (֩/riⷝD.Zkމ'+tLڦ=6Ӊv34S09خޝis3vk_%vi&N sAmt6Taƪi}0@BZx, nًJ'Uɉ}'1{C?JTZ3ϑsK 8Z$UqF+LMv.3P|dd8S#WPDe][Ǒrh hm 8 +rJ1*]Yrs00tEIљ?{aa3,5v#$7٠Jwkű!b*տL^x$1l؍oKTؔuiK ͝.fCA Ooa&\o`aLmZ#]1TҫDh۟;(y0OE 0+%0-B(\~W)Vͥ S7v7&;N.';kL"ܷQg,B$L2(.,;CzW.V+)rHy;h4Ô{\66n0fx|,`3 ִ'Κ) ClzVgꒀ3/wiW/+mOPc@v ]zY벆=+^ Y 3Jpw󼥏? Oyn@M\6}Z\r`5,JHe(z5ŊAS9&=;aV*; }L[ v{"mhURzǹC>L'BE ̼ٓwj%}(Ԝ532f ȋ^FğRT?!G%f WJ4kz$_^|x=T[~_0hJOW´9"ٟYXXQIN^/{Cj!0M"F3t37"Ʋ7! ڴ*ϳ:3L;P;F/Zaw=ϒ7 A@|D)K2csjoͫ0K J_i@۹oGά Y0Wa֊@g'A ,J?Z:1ū~#xݸ3,%/!p/&DlZ0y3Fh5dpŸXdz~Yᦡx6z\ryfZem}A@Hޞ`0zq1nQ%SlIl17`9 'Bn \FTq-^-m9jhۋ|ZW؜֟FpϽ[%y fe߾s8]~ZEA]&Bs#Q>,YbتX۟`K}؉0z֌ӷ 0oxF v|G^> Įe39gOh'"+ܲư ciga^1Kr,=ӠA A&rO)X{1'@eB&C4yOⒼZNEVF ۋ5JǮ NP ""kH1 K&QY.;Q+0Wa|𓝕as{{24@ӥ` ܥ޹F:!S^6uc#cn7BCdhQ d*rJ+̊0nNzo0&8d`$=܈}# 9bs'IJu=QrV kDaoZ ]>?£g~Xt\c.1(}YbuE#!x?ǯ#PO.g0ȇal<{lq}I\0/) R lِ{@Ղ}CSL4YTϻ̦F|ip"mJEScaDW;zzֲɸXX;?%̒V[01İ 6{'siC'1_iJ7^9ghwl{9{m?0^Uh$e #ܥr0m3R*j|~(1ݼTO7BCB[ ŕنefyD|B'D(+h9-feܞwLj,k Lԙ^١{8ЕȻ#+3iQlѿްq@ՏkHDaI8utakϻw o#XF_iML>vmt-텋Kr]TBM/!E4cFZaR0O٥p2+65%۹U{$Q,d֬äH?)*;_'GAtfqcH#}>nd8pe?p_} kCև `>>Wd-6"4@PB}/5F=uUЕ*GRPC7'^IZ5)=S <-|<R[w1()5l+?>rNG#ك Us >*6S>+I@,y&0-3x:lչ-쑔s]m~[:>rlX=HGy{C,\ߤUҖ/”ģEae%wMa/['+tĪJ-3ώz d+fVp<9ί2)$_.ocJjxjbpʦ 9Xeh9 KilٯFSȅ\IFL JZq<ُۓ^`wlnXkA=kl9f\|IEY-ifC=f4 lp\3B k3MÃx^L$9f ƳA~"OQU:.6%sܢR;ido2)Vw cxx-=c0J#8 cwͼ mZ`t&fS36nJcDF u $ }'GҼIGvbkPm;H6<8nZIq 0-|exz.YhFbקx{<0'd~GY]IQ҃: _!RGNc {~A RY3c pgn(Sv<2^J6\I‡1&80+{]CG,ng\ Fo]PXžEeE(`@vn:s "P)\asBIDń}9C|j‰2Q%SYL̝#և}=^FH:g|,noyx@v `;= 0/7\~۲6{ّ گƺʌIC\>.a劆(M `JvȖ즉HX39pCLHl0<<:pθ+'YV$iì6+$MW;憯6𰇨0j&=,nT9ir&Wrr pT% /ȱylf1>n|)h%ϦIv:-Bzв |Q_&+p#\ڿ#. Qe$b87BxpwدR/dEwڈ c:"f(H WAvg[e`!c(>$WKKf4EI}^Z9bApzKINEl+;b<=$_(3ꛒ:57,g2XU? Q675j#Fnyh MJ؄_%gycdBGj.jB_?/o}m"@Mt.Ef2}Al^(U-&1!RZnm|;VZd9.ӿ !p7Qx O/KX֮/I;YWϕ1$3=X{F_8 8yx'c.M)=\Ԍ 3f5@aYstNU}.sZB6 FjyTnŐӅ:.(28y}qKZ?G *۸h2= ]cڪxY8Koy s` JW䍍ҎC SY(P~PiLw+rP< ex!2'CN5M^` .eSp TL! 8$bAfƸQAݬJJy;yԾr!hY&ikޔڡ)]Al ,//?`uL-C bW:R{3#`c:^W(xlq{^ԑ VAj\2cxgOOVMŕJf Jb&9fz,&Q^n,2nl!04dBqsY*k:DlK^CK*4"jaU!R* - meIb QlvaqM/Mfo 7~;7 @o&1l2ZuR !sXcevBټH[a cW&3uȣ0ТU_v 6*.$ic;~hn:nLPcGx+(l_tnNlbhS ~NQݸ˘Xp"*~v[Ô`)rXlRQ`Έ8=UH9,7Q`[ʟ{aG;I2Wb^,1]$Q-Qѓ/ 3)%Ē4ɪ 5IZY7Dw¡[aز&-W&|#W^ls yB(A t8.8F+lK~X1I |ё_ z~Zbl:dUhs_ 7IG$!2&\%l6}r;^ s0Xl6}}At 1˕e8.K$1gR^=7$h_kl~4k=t@y<=0 ү0+K[}B|S[Š e|ԓ/%4ʋ9{L6b0A%?-a`f_d7GHm,@ᆆ:*!yʅ:#(;.$e7&D}Yc:=>cM;<=3'6\8TUQؚXW\ޖA; `cPpHNY8N]?K ޗ %t#G|?̋C>R~vZkK"?S r+P'iCɘϠW_ڍ [ٽo z8R\m|z:æ؇x^䣙gX A6h<י(Mh6jn(6~y==eTwTj']wv_N2&`4V @N~&cbwXWOx(k1e\*F8Ǟ۽H^3}V76-2N=p+7GHIgGW[1GW s?c/&/CW|ʖM + 2_r̸V{s`jB U469rK+Y Q'a ̍q:^Vza@7<$r比fAZ#yLsrZh v{NvLj (FJ^G"zPMevڛ˪XUjnj&˲?]À7Lܫ2"tzCaVȃxUyXj둠љ8ӹg |)zĸvD"9I6z ,W =l 4QpM^i9`8}R^MÄpœ#[8Hs4pATh?G5|౬:t_}z]D\`|w*5߯*cK١wv$Q&"IٶFӂ [wGajq/ .vFi,jE_Wi\XЙ_-OPTYmRu X;-? d!2J"~.~Ӟ#< DˎAZ/}\a5Nm*5[U*W{]HT>WW)nOw*M P)u2AJx0}AҮս4I*]Ok/)\o!kIVc\3擝 V Oӹ`nt@Ҹt>%wVW" Z5!G 1[iD!* mrp}T@5fp1Q_PE@Q;. ](=h{saG:>܁T&rFhv֒F_ZV!<Q*"f,$IL>BzI/[H@v6'F_w0đą ~e5 Qmqf-7:&&B>6pm8m:aΔ$3ݽԄ+DM- !5^4-萳jYp-KJ>[qA@ P w0=BM oShʵ^ pV"9c+^Lmlz's:o"LOy~} *.Y~Yq`G1mfRp0=FՋ#vQƨ1@x~L(GM{ZOrs "B].׷ ̂ՍB\X54rL`TW(8ֺ=BsrQ%{v(ms~d6oOIsl5=8I\+3GHgr".,P$P+'9 /s?ZR`M/:g|MK{  s ms -Fg!m ^$te;tE6(hKttmP~'tiaqYW@(\}]&}E9aյme~i~| ϭۀ@v$ng;.c9rds>BH8Q]cd7B1IK_[idnC`[vZS >zXc= 4귃e!؞'^-_mHu ~M"?Z[VfyتP6eU0$x9U1z{76-8P4+f?CӖ26</'.2t̒?Uf|~kE8/\-c<{/N>ޛ2/]kVTr4LaEw84yxŋh4qzN_o6 IBu#V.ɾ/]59{vRc<·&ǸTYnP3(~%zJ u6m>]VÛLgWazHr'BGS!= r+\U[r8zǵ|Ūw:|jm(l ;yIN*e!n Z,#bt7ܝSM'@2*Niem_BaUD5c5!}LH0bI!Wp[|gEq68YD14*iY(BDūC_+mLIYtDRm"Vm!whemFe+Ah,=*X?+SRf+{b|T+whHr8J>-ZDE15:O={`BÁkb"k}Ob9ae ĜĺzN☣W@/̀l喥Lz$.zf=fYWε:~ ΤI/f-تYʀ%E:Ԏc" \$ֆm[q(3ӉUm!3:nl)D#8ѝm^̪ER{>N՛JS#i#JEi[Ȉ ӡWhH+ <w*X)j<SWp*I$dmת"QeoӔ!{ ʾ >*D'3MTP j(^0[ >BFm#ӻ.8TB(B39(n7 m5=ߔ[£(YUS㘞 Tw.Zr<&^6geF~|4t l.@1K] PxL?맦6'KW t6k?j#lg,cP kV\j fhk2(Ʀ,9o\rr. P˗1'$PJwN;1DJjS!i@ċ]CWP;j:ZKkڿcCESH)17oTSqLtrɬ  {fNKJO8_#SP.B(DdS`?Ȃ5Ԭ퓌U +e`| 5o3pz}x3@cxsZVa}{ rlajzpZE?AI,Gy!F8KGÑztJ ]R*;:7$- 1srlYE>d/ %罃|MRНvVd, f\-f{EfUC& [滋Hh癏͌F9dA ocj()N{ݎdqīqW9 & fU-6,*Ьs6fBS5D|Кtl a3Na @:f\jUg/EӟS;es` i}i;#*dܕZC7Q1MR@pClѩ k 1 ޻+X%'MɦZKD!! iz0Z@~+hd+C@2{,h}3֣;HxUZ-xWs˲1+gn'u&bFI?*J9uhc&ѳ0BoCQ_7brҠre5s( RSG;;^ͅm:!_Ww ?E>p_`}aa$Wg O r_GeOF^{t>%}̥"˗onH,ްV $O=D D  G|sG>@U, &hUeKtpT!.6G50MY`@Sثe`c 2H/a$̒q /Je=j-@ څO̝m $(N^syK)Ã] 30c~In!c8vk,vH/xlq+cȿHC HYr\کb[OIt'@7xڛrC,N R^y5ojF2.ܼ쓮?@9HJ" sm2fQ_lV֏Wܪ7d6J jN8(-{>)m{K .<8I% %M :sݿB Ϡ|YT@gn;vǭ=6]M^. 4.zXJ ^]6i ΅@U)F5w>+ڟ7urd4oke$K j500Tvr(k jS Կ 0%khm@Q?> 0zMf3ʜem^>3kDc۰E{&`>H`?=i;So/>0w%Ӑ]~&TK`Yh]VOvh9fK%8);/wd%.Е# =pH,s:JyoW'$ [\26k2,GRf bvʛ} / !Z}J5A{uiVˣ!F=5-V5t9 c (؀Fw~*u HILO 0@e`Aȣi =F"ɶ#݂bL8M+JweUq{/qH0#c0.i:5Q5Aw}M4 7w,e4C4MY,ȑ"x4,FsT~W(fmI~d{}y jܓ:Q5Z#LF=ȆxGJr`3#S]〓hǑ#~5]PLc9/tUxґMDk޶3]: -+Q@kT.`J,]J'b3y_{ck%^b/ۇw$Bp,IL[dwc,s[ed>l$Q(0>+}* ع^ .C$}MA, t+ !]^t7c$ppL[V:y $1I}'g,.{r :pe*.,yoPfQ+.XKIZ2\!Pl~1'l z* 8ȚtoP%ndUs]27h&PlmBIqhknjX4B+V[T=ϗ-z>yXjgp?.rP3*j]2}1)Q`7h4]*!ъ;o\Gjﳢ{@>d k(#L{ӛ3K95VzWP7;\Jc<+)qD^JͣYB}.dB\Op/FHF͊f3AoEyyjrKS>OyrIrhR9- 3q!.:_ i1YYGK]W}wB=MBrl"ܣT+VGi# Oݐ)ɾM1 rMt MjZjieA]zD ~.xc`@1:\A#&z1Gp^EzЅb<jC6Ơ%-t*6;o]j;~8EԬ}~Hl柷ɘ&zW֌Y1G܆~A**v{;R*Hdž*a=q Qfƭ"/߸`B1W6I~-Zpɼ'< zsp!{9q.zMdlF2j* <{7kah$F :@rSť _ſ@9/[APXꅿ ,r*VSM" puXlXLVW}tV|WYH|j+f02.EY9S=}_  έvh$ܱoX5vnK#?лłRUaȱk~:n"yn./:~?8@E# @by!Xd,~:byg jP/dmLSx`*9 +o>*(*Q eN/oEef4|Ya`'3ϡ5ܙ""P3tO@KfHjUTʼn:U!m |c6|Pk7 M11yYe& kˋ-F+w8w I:V]>5ns{eY@9`шq7RO%ℽϟ6TڑG\óCL]i_6vd"vo@ekݝt28E$6LdMn"SyĬ?)^\]ΒD^Z_iIDK_dbC&\GqɤhUC#hu#ؤO+_9a#+I$Qtaүf#Ba">i_';X Bd}_ӗ@v:E$,eu!@Ԃw,9UMph@4)zv<S(;'MG2AhŁi-.E-%jEvN|)Wu*6h#>@= jPњFuWǜ{OԈ8TitH /lFPԉmQ>렠Q>vHLAt0;q@&[<{TAiYnホ"C o~ PHف lL%T]MY΍{)p}!۱w@$")AnY%ͶgG{l87@z96ϠHy4OE:ǼwPߠďh=D,:)l [9{Hh]GuC/é.XtjNf _[)v Oj.=* E W enAyZ׺1>Ydo0ihv3%$H,JNBՃyqzLm4lE<.[X4 %Àn,n@B9 @SߘEU)6Re;D-U3x1ϧR`d4V`vaN@)2k~65J_mxflQ3ht67Y Z2G_ & ѽNsE_4x^ߠO@RІB+gڥbfqRrQ*??%% OWfl%N ™h{ cz ({X7v`{˗W. $!fvѢxIҪmCFcj}Hg[R҉бS݂b:k)Q]Zu;C.ɕj|*,bC<:Nn0 ;ϫˍ(t= )E憥HhCl8 eaiVӸRjhzXA&2g&TI[$kY܂5]O.ꀫWbd3DQӋڈ+XM)%J~eu 3,TMlIѹ|Iӕvkd7O 쥬)*.:BKB:Ï*#F'3~CUh_ $1MrNuLe](v;w@2^]#\P$UO`2ـRPh`&fݖ@d:OTMfm11g.m"+kRv/{=@PcҬX5Rx bml~t0R|Ƚ5m?Z!OGG>R}(Bne-/Sn`\~Œ88a~j4>ӚIZ⭺OEiy!;ZclMHHsñJw+mN0RÌו}gvD>˝]cJ!cnBFWrN|I+> "ONWTZqP-X 5>zyـ! A1]rw ,['~@O87qz@ߖ1y  Op-ewt@@.ѕ̰B48u-+с]|[$,oP\L44 #[mk`TkM,sq5P}'FRބH6hWLn )0W:@MSMԎgS/蜋Bt$pѕO J5ʕJZسیD]i2ܽmk8zoZ~S=U;Zw ,b* 3vg(Olf#ksl~+V2Nwl pbUǬօV{= C euH} Bz0 |Adݽjoe#= 2|XGnleϓI`>7%h0fC u1iZ2fZ=o >/lK^c HpgUI_AI@?oLTpIJ~g dyOqkP,~bUp5GY)?Pf>|Uh ~܁ώ5gYM< {9@5[5GG5kWz"Z~PsEn I-#3zTZIϞٛ]L;PD=V[|0_&AZmL!V0_TDމ[yYl|ftx?],SG=urq$k5Xj˂J[ׁ> @:W?cWNbyJAeWmđN*a0RQ5@7}fHE_o @"|_X*ͱm\jD](c@@׹O TK'6}>"0'{PMn|C۰4Cd|Oq +y,OgLk\JIL:]9'|׬d=,p޼\FhN*MFkpuO"AUݪͮ0U. I_L9[qKC]m\}^ȍ^U3uY;P*疋)7:K M s+q7"'Mj+f~=3պGYq*܅Ha~L75E߃SwD}tUj묃>>$K)} ޟj#g3mƠQqa*'%<+V=rfe!t"[[rZbUC8tgzifvi\gUw+^ UQfiў>q_SNM=i w?wgiӃa#Iѐ '! Ko.)᱁;Wa=V\GlWJ-w~k3N9#LQ&D >D4H/j2$sñ A_3i050<|yx4/QI O˽w Ovg%G*P4=&qńSWDryi6ʅujF"[@ sB S$;?#'iJ)-I~ _/%"<+KQA?`e~{xh:^V$/qj T@eV4Yqo:Km" Fby#_+9+5%dY#*y?}+@KP>~Up `+5m߰"mTHmd4vVopi$5:Ht^| v6?y(wAլ٨aT$Xlh0\o-xIBG&g"\fph>4MTHtd;3޳Iё?KK3< aNr<-LJ4YQ#e<{s٬cL:o,k)RiWU?\hŜ| Q\(+o<}M`i7w $(x&{԰0~ ~*`4WA2-P6djcw_/KYQO[UTG/#V+z,d wWK'Wv$U^ jցc?HcW [_[:~lߤ_ْGMe+4?X2ډʭUi0tbJR_8cMՂz`D݂y#`nYWJʡ\%[ռ<40_|d|P͐\^dvEًbfj^G]@WrvKB MDV("\@fL1R}Y#Pn@`:U`Fb1?pd/ 8Q )+x|"r fԛۜ<Pk_V"͘3ξEԕHrzKXcM"zYL2K #nwoi׹,W2wirFp(O.6l^h4%YaH^gCt`<+XաF+&x60iO%xM/]#hrH =zǶzx;c/UջwFeunwQA_h7|4Y A)Z_n(Fumzܦ͇8|n'}c"YE +UΆOcW W3J?6}ϴG[D %,.0G E:<aMl%^%M8F^6RՋ=cSHaf0ҙ Uxo֍> *| F@_^ ؐawY9w9j88Q:1wF 6ĺT65A):YGgj2_wk*^T?h†R,1r(cQY;ͥRu dKӦW) g\L86?V@32%Rv+ fȐ*`WX߰4Mi|{sq/[lhy`Ś?fҞ~@˽mcE*  -pd^̗bd9wwx>VGRE~غ'5icHj"0sytPHyw{ytL$FlPG2c7ЍkfHھ.1--]MМNF%:8b7ZI};1jUB!4Ewc k(sk\84}.rY.yV]s-$_@Cwo6&9Oy}GkiKWޑ 1Ewڻ}&0;&^:@~""z)PKqvo1Иۃ)sE LK֞-ʇ%Tj T/ hx؀&:zIZ9Eb].q1=@ٶQ&<Ÿ0ZKM=ta841@< 1ȅ֝f!&Oy]|J@kgK7Q u7M][K@yi; wkym :yrA39w)IIxYHƾ(gU.ַRWVnDv o]rgޟ/)ms1oP5$j|FSLk:[=]'"e eB!P#]Cn%kJ'\|t l;Bo @ !yh23;.iֹDZû߬hOjU!<uM\_s;m]y =MO1ޔ/^`5.T Dz9CzQ .Cb^ٻ̮Vy3Py4{~+xv1$,=nLUbl۵ax7βVY\+TtP-=(a wp6zƙ+8l(~K~ooq?R!'4ԟ߼s59+6=V$=}%DzWT|syZB2\BnZ,e Idg {l}M*vc,B=6b*-Ȑ2]İ.8H!세!yD~7[BX9RH$,2-rVowxrϙ* /RBQZ=y4'D9wU1haFx4)Q7>fؒ+PY*05(pK~!*3`_S`b[`cV%6xHeȺ&rXш/D]Ð? rJyȜ[?v/co\'O2+ 3pYuHn1F 9R515x_2# %cP#|~6MWQ{7ye{5zpq3]/řD@nui)//(/-]L4N_Eٍzܘc />&;^ 4rPR١̱7QQw'58 )ʌS/ҷSֳ=q/_f[UX،MYSc%-O]Z(bDd;TT &"c;s6#HrP*W`l" ؆#y,bat5rӕEĪZ6-p,aJbN?BHx% pi'4~Z)%a`7J~\I k[)^Ss˛5A?XSL;.f;ͱxbQXim&ѢuJr<`O TY[9UgtT^ɨo<;=3~ti1*'UУ|zA_L.;iaMGCSr m ^4@#ޑ}Ic TŬkr탲;)12i?-FG, I"mU߰8̹ģShmM:<&|1v^0^;*QōӞ P*_+,CHx](U*)*/rhbNۡeP͵,Dlq۲y"6zzZ@ pDܙm;a~=Jr3'L %˹Eϴ&1ٜ֩UTZݙƖ!6f!rj֊ ,l`㹹"Z? jO -Lw\! ϓU{9 @AaoqBژh.Z!m0I[/jݬT!f8͸0CSFM] BTlŇ2}Gڹ $+b7Ąߍ,sm rXH9wY"Lz;Y a4h]:c_~,9{AI2VQyKoja lW5ш]\j;ٲAehV&4\vS)J'ҶTX3eA\v= "?pZs&I@VFҷ3DRt?hu7i4)WW՘QmWۋ7IsVFFm4 MSSg4~Gu/Wz8Wdڿ[3V鐫$jWͲرyt*?׉Vv2gq8W5RaBG2Fٶ[s NW;NoہwaQu4Im'c޹Iީ:_h[4IB️7zM_5U}9BHGZ!)rŝHDAe;slbhV?DՀ*{X T}_L KD!qtEl/ ̴&΀ZY#XVazkCŀqKNȹR[kjʩ/,-wpO*PpuWpTx2zVF"]Ԅ8s0k9s( Ӹ){w[I%x|L0BIHvcu?VO.dޢ(S;1l' 3 ,W$6axعgIBIi8t0Ibk{Hi9&aJk)V`X:&R^N?1d~^FOM npp5CIRP)T4Qd GzNW}yP[&Dn@AQF̈)!_W=0mH u+PiuXj_|6\@@l5u5 MP[U3:2(TfFryX)p3ki=(_BwGyuCNӴ+F9ϭ>>e#z2 JV3ӯzUDkY E̗¡bwjŝKk$jXdth +bQܽH&auʪ{>"F :GԼ(͑-+{H!)*|>_4q0)=uG$* dz~V~cČqYc}錵ȰLɗ dOu&Re֘S&q<0W @X.5TڋbF{~yꐋ^y>ߡPjM%i{+y{a Fr~-7רg2B7@«mI,܊3n?0t~*o$C]1ZA\NP6*= $ py"ʱf^&?}̵D13W `}9^E'ѨQȖv5IF\@gcRH'ے^Vh-WY9M`j2s |la0(@+ʵBx3_qPOLDԘTbF>7K$!m dj{ 8U!l*TuNൾi@81 Sٌ))d)" 0ט"as9zΣwls=@Z^ Se&@I< \/D~.8&U?*f,'wWEnv-*r?2v4=i -rbZ;%Yd̙xMo7Հ`AeM#gz*'dJC]'7NҟO_&%/\V<اggRKLt6ylM8N|1:JJ 5ސ jHT3찂Vn>~q;ɗ8F#(aB R i%uݨ92 nmUOļ=]84xMTg@숫K FOFruHXŢ?K=0xwi(zBQMgZrk7Iټ>/}/΀<MD;D+S ).mX,6)9c.y,XRءm[@$1Sx-H[= EsT1l r|܌(hϮ'Js]Zr"6 e>yxGVp3|dX$?$"Ȩ" բ4k5$Na/G }X{T3MHE|RF;1U$艹~+Hj/p. CCwRMa6Jp#O#@Q~8k!!DO cwK0+H&+9 aD4-`)T^ .ɎheeX-_̪Q'Нj{46>jor*/侒+aرLi ~sCb&5D(Z=ՓNC?] g5Q K覑IJذ%);dY~~p&x- J&LyG i麫*A*v榃,K \;W蒎*_@J,\1[l]Qϖ7;qOXɨ_Y~f켬x?c96EQC6ұu}EK%q!!z٬TNR]MJCs_Mn@ޡ̹J%P2 r:$M+n|0R4scЉM*>hDHN,WKH.!~Jq\AC6 9SN⨮(~>3*I.KZ1BL4~nrr484 =iWa},vd3ѿ1Yw~QeFKF_Fwӥ4؀MڥHoÐ$2z}ڷ[AD52/*& d0V#u6Z^7\QsAyU$@ґ s[g}.޲U'ھ*P#"L!/5_c;S*nq'ďC bȪm]ՏGȭD;԰d-JTWpb]=[hDŔ"c>mZv)_<@A'"DcY t07p!X\E.emb CBS.Y*u6 {lRlH7fĚ/۱Wmm "Ju  q":1S x BG/>+ Ę9݆/`Mi8-4 0PO5GCitLl&zEܩKB ADHxZW69`?9rWߠ:0%@4%>Kn/,%uw] p'aϙ``e$%A&Rmt/L=١ޔNjZ65^ 7ydA!T #p#<XXD_Gb uI^¨U#5."2Kx2yݚe ~Q+k?s./V,lbzC^{E)}{.NXS?MEVaG s8ٷ (A^vk2f~ѵ:OPﶊFnox²5¨'%jOUS$1 ~<"\cThb'B ,s$Bk˙Ϸ+̨$zZ7QkiM_3f"SyTb&dEl*7ԄJJYF›=4ae*땩s&gZIs UbNKyI`Z$ˀzC6gS?IL))bPd/RƄV2][*-Z>!Ո|$Z7Z&DNOOF`ȁzcvBMZ;GE9aRƒ/'e6x G2Bu2 ,ōUO/@s8q$R`G[,gdnU:ϨM%C_t )fxC~+I]`S@>@ UI tƔE~SPu)4?BE7ē:]嬪tLxfJ) "*x q"-,#O<ІV O@cO! Tyi&MNYt`(ƲI +1*"y*ڝ'! eϒצ7c ?X fʣ#"3kX1R멟Wxd”ʲC[8[+_#n,rGl jmPi KG}Plg7H 3-VcA8c;;D ݽRU>ϣQNH𭸭Tخ!=N#uys ]?ڈWGORf!9,ɜwB45<;Qv=k/SH n%E0s oQ;ȉ4-OLn64ΉLQqMH^bWeI$GԭwXp"j?YA̫0*Nl(khL1p׽5Lz5p4@"u\V CδĶ۪lʁVBHN|->y0p7wRTT!+ K5CJk_m[Rю**x4 >/l r ;hO懞,Wgg7a*%eUYr2Wa]O1`%tF"#E(sL_Hm΄/}-;_}ϟ}g5f㑎0C}~݀g|myZ'tqVS_pUo, HTb=|cwi45p"Kb:'j7;BT=2ۻl l@j87hZ9ڻАe"4s1?5^QX[ 9shbH5/InkPc/j1FP8Fv!!:o!GMޤGD~怉\#ԯJA٧m`6`g j~ ZWxۉ2U& TKIJ:nʡOϷ|I]-.M˰:kR5m4h?I[*~%Pre/ g w ݐgM;D< T&gO !31DyDLZ&:э >% B%%cy'-t=)r$eK0By iHgO*zt#f a!a6͒'z O[s> X՜qsc'Y^:ģWs<{bW"ss`j蛁̜9j3v_Ojَ>.BaQrJ(mS^.Q"YZRJV@ìTofEeEῬWlMLx=fFor<3(\Z8C sz74Y*{XBZkHf_R ( 6i2@.6m\98 v{ aot~n=STtvckgǵjV-j-ӡ"'u{F'Gʎ Wr-it6 \آh!5 c1v.*uR}!ֽf_ DsY4(!ŇU~O =Ϸ5Q,Wy>t7olUrk+!aDh/Bıy亮J14ǥ沗0[-OFrD+eKyULA7mNmҋ $aG%!~.3/_]&[Tm޴__*8T*V\պ9إ?W$@϶KL &5f$afG2}آd~:=Ͱ)勅M(pп;9 D1a:7aESl䣲N&bK.>sElqo&PpClB<.E l :`I?x"Ŧ,)lwP FW;x {/C#cZܿevR4݂/M, _-k@ &# =p [ȣ~3kK[LTGA ]"V{uYS'0ߗ~ddp0$ *SkR^B G:Z.Szc t8HQ+h.ϬF#MyF Mw4:kܷ{fD5zb"$3ID([nmYZ%q?BB{%gO U< ^|?,L^wF эdk4S~M0[`"JDOK>[B`:>yoXx`i}3."4}DQ=4moW&|" k!'Ƚ||E+{ɁM:Fyv$[mFb-?@@,^ )#u[y0ďR3ɸ`Yam8[9 68ak 1yEwdۑg VrZF*JoP])O߈eҟ;pOU7 \{]z}G)DNf0G(D"z6];7?^(`?T'J'/iT-HȉPǏ܈i8GHsr]5@MӾYm$ FP%Ϙ୵am0fT|TqvbJ[IY=/3N_ߗM`.V::/T-7U1Z-Zc(ֱXFp g2g.0.Ye>ڙf77՝^!2x{҆Z6`؜uCk>edÒz(w{pAW]%dznO>Z~>KKeB/Y= H:3,%WS]ϬyIrkb4a;`9x-i YzaC9\_Xے ؃R!O~Qkϛ/=g诩?FJWVj+/-#68ggw}awL$-xEg =pMKgUjmcz (?/anbdWZ̖LI?Yb4E&_sQyzeTG8˚y,+Jw`8`SY pf੧L3<)A EUDľѣdT7Nx'bޠ&DzٵsbZ'A**Go)-!.B|E{tԯmN].k5 h37fu֎x̗]z̧/EIuE.AKv JZGm-#O,ed4 hLs14%U܅!^禄6_jD`T:h"LXl#Ңo݉b%! [4t5!s>;a w-|D;19/э[RQz'k vĻ"GC%-ȢZW=7v)X=,_p%Pӓw w|a'ܥ'm p=zwò*5D vRK ՗c>\V#+Lm- E\\8j뎼،G3_iEBIƭҼ9mg=TCUe1S$LvW>DǦɀFr>9cTn?Sᝢvo+y>x)#-C箱ݗ"Bx u_EnJ b YHheI`;I(L>?4~AC{.I(3Z:sNj5e|@ۼn? 0mBT<#?< gPHޖhGKp OSxW/yH !>u&,ߧ6)oS(@eSz&TM[EL}hq3J*=x/tZ,'r"V8,v/߼rC~faM=*'_qGPZ5e]"R: i0uL5,z򣉃JTT<9YmGMH#u/ɸ#J$vZ~h=3O~c[5N9>  BkN3Cp#K!\C$:Ѿϗ܋c`(F돍6&=$v*Z-"ê#(vrt|P 3WHE?:^gqKI0l=[-j [e1sfxH6tfG+sJ:QmxzUz{2`S$.V`w9Rq[Vx4fmaH[MtC!z5tO׋8~/,;zsNQY!}9M{V` ےɨ0lJQR=Jg8MҸ(h 8{GuˆKiLձ.j d27 דن2Vou [sB_ (Lf71!V>34\mŅɟwUh|9s ҠZCigwUyX:RMSCi#dCe2NR֓#Y,'ړm;\@B`^1lw>uġYmi%QkC4GMj&UG}#ӭ ׯ$9 SӐU:Ͻ5&=>0U1k2IϕkW@BTk`ǿ)9~ShG0'`JlBPqlZ M%G8xlD-?0poˑrW, ҇;`XF5oic%5'Re J9OL6Za.W 4,?s#*m醵]%yks8W6sKq7`4Xi7wK@/`4!5v4}vl_2*[.p@GCߝq['GsqG9`-&eBQ-),G.l%,0]ɓ3s;Vuy34A9Z-@ffY;,@:mzbËc!% Ecބǯ~]&W$2A` FH΅nYPMj[5_* eN#yك/zKQkX4Ǣ}n ޔ Q {]Q^y:rqOpe97RoD}5ّ*"n;|b L?-44D@+p PUM1Nsa" #5&ی2 UĀ;qڳWHIpQ_(ĠBvEߐ%[o$t~by?vxǛ|^ q4ħa91ua]*)]^kg*ph8EuDTmoUj8ۥMjvBnи3L߭qywU-Vj5bz;J ܖl&9vf9udL nf;}9/y0ǟۡaL}i}łr1aUٔT;TeJ8FCБ4Asne&1"PqG#8x!8tPrN|`͎>3d"|Iy;=^:ֱ֡p]#OŁF CKqCjN<"b(ӯYţe=J .&2@Ƹ6I؜b?X1IQٸ^n܈fM 21b,z\uel !h̪.;ԖI%>Sjkwz/IhOP'j86aÐ(N7;}Ņ&0]Vxt9G^adLZm \jN_MvJ~SqGm@5}"0V̠EQ\o߈ڋ3 }qa~VaR+B<}I#NPv.bBuICK+5u2=ɦMv.u#;/U j3Ʋ[ib҈\sDX XiG;+tsq#;킞X'a$1zE*c&aQH`a.1I9)Fr_89N\ăSl#1Z'x|W@rnC5X&{ mҮ)h 9B񦔹&ɭncND4dZ GXkY̱Bw{P ؃"82y!Dhw%C(cUԏ|OJc^Q<|`2Q epf\XZT>~lZ2+5Nt&據cXOm&=v@.I%ߔ4&kL(,ӾGL?_,PNx(EÍ`#0:F"|DK5'Z;Rފ p;28b(jQpeKDR^]^Ba>(%2r悡XYųֱ|'NFT}R`#>ٲuO+"$' ~tر;a$\2Aͨ 77v5Wlb]+iCς=s˂(( = ٥;CO\y,Ҥq=WxRGHŦ^.i44zonMuR7[_Qdރ1jMb5-chXx5-٥6ξ@5=KUkS/<[{Rӹlf]7QO_!\pUMpHTT#ʙm0WI_7k&+P5r<6;F$Qh ά&'+i1E|LW4/R*UQc'H~хꅌ @)ts'O%@ Nբ:XNJ%Ŝٱ^h졃tqPϳI+Z p7o1UBcQm?QBXU Sġoyg94rk'?=-P󏤒DSmam8DOQMBO;pybGPM] bֶS4 ' m!H ͪfXb3ӹ%KF Q!+0&xGTIh $jqR|#+j )q+>ib0TonMikAU'@qLx]5̱͇dj܋fQ|(P~'nMMRyP+ZPF 9gww7~T] [c+Ȋ܂:S$)Cu287U$.P$cPj*yUWtWɵdټ;Ȧb]AGF$Ybgרġgn>6O,K'O6~i6úLBOaU+@Y"-ӥPf? AxGн/f׷ &i$D rO9g`U<DByT΅BEnt{>#1ͱqU'(k%+n i/SP-@ۏM*:'}|{cIFS?YtwgnHG&E_z`h6G4- ܈}FEo×3l`Æt~.JI3$@@oZ,#ܹ {306s\' ZA*(be;ba PۂXzH]:W$U{8Gdס"DiZ.{V~66-T=J,z<Ĥ;8/랁?! ]dR;j.&#=DČr7 .Q2Rl-ALпe߾b\a74$nĊTOp8g4(o[IwO^R1F"/`-j Z\u$1@=>!ǂ (}U ,H[ S_2h~me<?.m-]>eݱJ DRvP4R4p3$ѷ3 rYD !!_t UIz'PT>D<v^bEDhԳKŀU\L4@9g[ ΢_)lO[S~I3[æD nÄdqM B'C鈵EzLs*9,hE3IYl,&L1^u5S,/ MiZYUqYo4ZQ̼nbOn9%{6Ul)^9[Rp0\?%W<ֵ*`Td4YށZ kBwb}Dm m2 w  iXAT%=Z@|кg| (ϓءC% Y:>3"XCt,Rr8#|.u3=<+ zkz#2!qUMT}Gr:/DDy (rOhǩvOc ]7^(R}Ƴ9#ڬT+V%RԺ}-Ljwkm0&nSJ)I,zX @1EPvz@5rfbZ:jZCZ*6OzމY:pe&}0>u䌋]:ƺ'*%*kLF9 䏇Bl6qJX.7ʷ E J T@;`dˮ-m+~'}PZ]_Cix0}cdusISs(o&g>:Ƕo"Kɜ`?":}8."lh|<,> 'GXc83RZQvD:]!˷eoo=$."y [D )ֹ\qhO4(SPP)Yy_?JI~dѕ߁"bw Y@5Ėcl 6M:gpPeqR=g )|]KTHlPi©.ø9&e~f=8%h[_ea2CMaJXw#=c?ʦ'bb÷53B/t5v'Ofo| F7AkK QDMEE4A9PgRsХ2Nv-(ê@;wK#UvM4KRϛ?3+4!_ )L|]"Fe]䥕3zp~>FXC F==ZcDƿO0GI1pBOjARMҡ[ٔ+;MNLfp'w; D'?Vu(2 mW!fVbEp*)?Uo(RU~ Ч$X])m|z",Js ml/r 6cR+{&AaM r: Ĵ,ޖؖdU]d_sh`[FkE=X$('Uך-&lCS짗 M(X|f{o wfN<`mBtHG  M-R/gid=̘رJnovKȷHn9Gۄcj&zBPt^m3+3D+O*&B>'7\Mk|ϰ RΪ=P1m ;tX4|{d|V-C.϶ ź߻oN/Ѐ pi;˜Hy7Xc!>$Jt0dG0ưNZM' {bf,, 0tߑ>6n& z$?1B#޼"/XPfhDamP67tˑMϮIfv9)gTtS ^q"ZI G&p4`sz5La{; ؗlUkX* >=b8zd1]ďSR,JMMH Z?r5dSR,kLQm>hE7sUɗA[Or.ALʟ(?m-+_g מU:;(&Ntա&Ϡg;0f ]`@m)"%% mq*d3{ 0"D@>IGQRbYp at %:? 0tC{=;dfPu!xZ@fxSOe.pzi -*dޛh.юpj ]nϧ6ɞ/y.K$k>.z7u>`%! ]`eh+%*'fcIB:c )Qe *j3Шؑ2krl@K!?HFz'#@bҼؿ7> q^PCOi/yh=``)T19)r:I VMZ1FFX2؟ +AD\۸n`Bhz eWI48b 3s+")eB7̮i1)w- ê6^@v"}՝Gf׆47ڐdA~!0dZ| [i={ N$@Y̼fkAt .LI|= G [cyq3Mh7W'xns%ki,94M'#mf(p'49ѭKjNKԀ5m=L7xBqOk>#3x_'j#D_dDs&9鈅 =xFvUWyHo7t^,:8K}*SA-#Ol>=x C)Ld/,kWf]a:ׄ%Gԟr-ŸДL:Nrf=:O&z#fʙt'.WxK9Q1uٿ]7ȠB}5cդuOVJ޼U/!:u=䔲;תQ2Zp V%_ ޺<μY ʚ6J[.UYcc!WF o2CX i R^G{xLe)NeqOxǩ>lbÃV3}#[[2n4לL[PN`z{&ݺjqs*Y}<-GR]Grk / Knd~=:%sOr>mX}|Rpe\ 'B6!yR#O眢lʘaUQ>UL?t9뿵 A셪y/0dH"sџyҹvQ ݇_~F/@VLA;BmewV1y`hk aӃpЍk$ܲ+b>}n#k2񡑞u甜V-zi{'rT+O C&3wa +$ &# h2@1ӣ SbL:Zt~̶ @VjYt2}(RY ʢ#SG16l˾͒i?i4n|_01*Ca5&Dzrk5nA&p'c^r<+/8VJLcJBޑПoN6՞y.̙>lnVUXW#zѼKXWAkϋHaZ Bs[i+Z]'N~Ys.ʣ< W)10~F{5b `Z̿PRj!<Ё 剪K6=T@6.8S|r'Ւ!iH}Rb1ͻh8SAV@&mif%D~f[2XYִ5_ VP$NK+"҄|mVΖqwD+F|oc6pv\ )"3PWw#.>INcϗ+xg&tLc!Swb}} <^FvCݘ #v'(hh9[!)HW7Qi=̢'v< ߵf-zjZ`Ң+^AS߆MҴf/ qaJ=?;5 "6/L4583C'Of8#?TwoDo-XiX(ijEΕa6-C^9k Լ y6-i&jJU]|% o}($Oӑj%Њҝx!x.|RuqFъ5yw'NNa'KxIr6qr+bLnlXWMR%Ik-epB"}rV,f% 0~ި ՄE~ݴ"7M<3Hf 3gcekұ r+&26i1vzl.U-aݏ =!38ArsbD}ՔR$K\atJu(yw0xS@ ` <v2>EY[b @hR6fU41."].+ S{?A!z '#Df*"cA&PheNޅe)r'i#ODaST.+ALvƇ8AjAdE₃ʼNa%Y`hn~\DIn/Bq*yZiLjo}=Қdx8fhR#ڨ8'Sv# ),buPJ?.”̗.j)`=彧Uwˎ0SmkhKcŔܴX WC`@z.>ǐq=R"҇c#r-ҡ16tFN.z̬9JfoT&? CNg7$JYXLX wv:ݏ',c8@_rVT5HFbϚY%m}q=IYwJal8\ˣQctSw= -hN,v b9twmRV^'/[HERYʛ6`Mb>/*Ѿ^58LbVS(\ ;׌KʇA™u q'MGW 4)L]m{lϢxBIy"W{L: I~ 4U1b|Wl@/!d]SFO &0x@lj\~evuԅY| _X$txVΣv?rլ29~,`,ȞN ba$[t?`[][)tH(zӖLP -jԇjm@Wlyf:]zEdJ)x~Xfy' T$eϱ dGeǤBʩ?l LMVq(n?n)uD̖#>N94FNTe1ezT1֠ir1/iTs.WCT(H#'SG M%RG%ȉ (,EBWKLJ[3D]2{qr\T]}s5]k^滸qB9!p.C@ 0y g}1  kh`ya_>yL ,B[B޶+{\v1L oG6T΁ YPlBܤ* ̤K s:%n hؿٷ{Dt8Ц ˕cALl̅u#@(v zWXЁlOMdrJҫL:Q d&o柒 92kH$=F%nH9 +c}rK`^',"O>gUo .ȟb2 *nbTaA:Gn mT;^yBd9Q"Zv)<ڻ::x{͊S-6$=6 H3ڧYHzE~@Yӵ.aӇ>PpvIFiDC5I t B_>ˈ(J8\v{M5|Spebc18`#i&PE+I)䈅Rd^ #lƣϞcDc&i`j@9K4٢_*mN5%{fAPGGaȶT&*pG>@#-?Nk8vPSIM2|[NG [ƗƼ֓Dׯ4Cdhz+F{]o"م5xhg 4ZuYs._b͉٘ uPF]t%'cL<\9ƦfvnJR:-QDf31L>ȬI8dg$Ifp8*+^54X:ђN]W|6Xe"JN]I}):tkC7&lJ9|P,?_[5[ k6`%ⱻϼW䒤. 1@o~|F~ai* ZQvoްg$%?hbKbZ<8"6Y7 _wZCMW v&#$q>7MQeTe!:Q#6*(ZV,5"qǤe<*2D7+P{ad G!Ix)=mnt \@3;ST *{Vù~rqƏeHv}{2>t <] Tn7gNGF_1V7uؔ|0dC;M]"CRKmmhü&0VoM˷fc1-k.pR%g۠ Օ@q "Us`8:׸9rh쌤8|nunçB@Ņلrj54?BՂs^ ]E|to5@2T~qto؝#8,"?v2.|q#clߴaրQЁB섧>+umf 9k&Jl_ԛleaPLL4Ց2ǩvCS~  m D`l)s+8f_~jD~= T'Rmszw*c^32Y 4 Qل\_dRc,?_j{~Nĩ 5.?Vδ;@+ ٦FZ"Ōcf;*0Hl:2azB?*}ӒFrm<.|O?n2&-KH-E^I=W]=;RP\)C 1G2-Zg!?߯SAʫm|)AΏ;2 QT@=]"^.zlc*d?ʩq "LjQ փ@!\*7/[JC!G 0C i៽&w'Oe8rم7/6emBl:[.-ypݺ._'nr5GHhl$?XQ.8TL9+U-Ro&[m6\.ٌ}_lӢ*d[%y1+`3,북\AкwdWv̦3.}~E;72*mzPxbWY~']} ޸cnSgI+DoIRjͯ l<9Q6Ἁ)Xf9Y<ţ<"SRIwUe q6^ŁTWRIvv&,}}兺+̲ iKXS?:bZrTNk aQʛ"r 4>\2Mqt!iWOY[ Y#0)ũcZ_p )0?o9AN!6A3a;v݇VBM/Wnym>pg}I7ΧɵS&at?*lW Zc^ݭ] ra̽C7_:az͘aqFk[r*e}%AEiTʨXHKw1"J ֢tb)sq-ƌ&a}3V'+YIaQ2hV4ufj3AD&6;0 ap >Y/-nd >v#z*AUV_ D1IЌ՝$Rh%<%x2 2*FԎҗ|2Z9&KMޜ]UWm# G6VNFb=T;^[U΁ w(KHM9{GS&2ߠfJ]"YE}:7d7fTD{PVQNX&T-_YBBݕWZrί^_2 -'&Y&^ v&dD^: ,c0$cb~=OGtuGicgEGJf :?D|C* o`^%|ШԝdWnUtӡk4W5dO6e%U.Tw=~4ݫ tݘHס2N쩵Ҩf+XM:(W5!6HΉljCpW4"6Ax0:$cQM68ugK}eK<֪H>1b<9Dir"/ &PF#t_ !`=,jsj.?Af sFi݀<U&35}b8tpSz9kOٷrƹ: ï1C RH[v%4#NrMCedBl$?cQ\ˀ95@ 57CKL ڸ.I6}AKLLrR_K̈́G 1_ToЋW GMa|uիI˓葽츛AK.ѻڒ%c9\|zJZcBPO+jl.Iڞ8NׅހמJ&/uߕ?2>1*6r|ֺˋEcCٲS(L9 9&=?:4(:AۅS 8)*!o͍29ԙji ~yyryAow7֣iA]JX`7ΞBS^ck.Q r]O>Au*zbUbZ{~ x0bң߻mjWr~TGX;Y?Ww ~k7>ݿ&w=;'!q_pSj323WE袄+) }λA׵)fEx+2~,/: ho9#p`t ye`%b&X&HoU8ZPYV|[e6r_<d !Y|rDL #=8sbk#F;G.9G+f%M&D "h %?ٟ F?F PE@g9"[ǎ< FrZTtpbDfPEqBTgbj G--oC%Ij^N]+$q&wHͫAjjvl%ow=~zP ˘_{A:1],$hѹ#I8@_pGk f'@,)?/XDȐwu|OjAJys5~$j0-D-,d⎹5'_I1y 'V:0:[%wLEMPǢMsWO֟Mmh V&6rɚE+ZA2 |4ځ UsvssnMB\bMtμ>-(mnjx'7`a؂yYd,Xıӟ7Zfw?apHovw sDIOcWiWLysXg@m[È- Q$T{!3Bb< zw_{Twt̲wR>6#=K :guoA:H$0-6ut:@]3PƏ{P9U23jWKLiH<.N W8݉mJF j\<УP8ݼjRumX8)o8HUMƳI E~pЧD$9&uhB:Ҧ Rk:<|*YҶfCحH>q5άCk4HT_/%Ud$r敛:'Q{6t)6;*)'d7Tdmn&II2s󽠅$SLYcj  v"4!#SF}$pʪS- -KDHK1sGc6XIAz/p.(Gaح>iȑv'~eȵĤv3FZ -<bQnVŨwO@s&o{=YSm=JbJcj翷mr=`BpqY-njZ![N8> 1HQu_ֽFɔVWd^RV|;j#LL"uC&__xb6ԿiSf$BZIL j;{4|Ykt{N[+Cݗ-J-''"}ܭ}}c8TGwBɽcbJkW9Lԋ[/Wel o#m!Krv*IOqo.0Pj. i$1p[]C׷@a"n- @) fm;*Uu}KZYU j 0q=J>lqqYͣO.2 F5 Qc?%X4$9o.w߆3MQG7=4=0dL_p4@Y͂Wn|:j¢13jC7?9544aNJw 8G gl®f=:V0R,^UeF$j\xK J];rboذ64~ň^OWRcBBoӂ0 x&\~7|z9GW]}BRhS ~F`tjsҤ?Ró9-Cg=uԒϣV|^pzBۅs,;&=wGFg MqՑ ZSXF{YX%%.au358 4ۜ!xC $ mf!6;e]=:J;_lߡ {N3}4W+3g֟9Ek# ykE"ΦnP(Թϰ a&X.u#!_C១l8XYH:&;A\aaէ5kD6u3`u=y¡&V/xlK{Jx !4@7?'6'J*}+>-"YoZfV ӂA jQOׂk`1dGZ8q]KN.=;F;vؒYקENdV[&5bhr$xȔ}X+m(P54CxWϧ"Aŝo|Em힢nj̭7c)؏;cM*'̳(PL'p+?:}f38S!r| ;]@u!|7,ԅ-Lg$c#msXJ},;IcӼaD=~ |+TjA+AY6almF:c+k/'X!KnKk;VŲxH$q(JXm!r? I\ _8lU-Z{90SVϽ$ǁ*u T=Y5Feec'ho:. ) ƥ@k&"]~|E[yMk4PUm}ztH7pY@m_xF#CyOi;&9XJ,8z9l?B@ +J l9L(#0W)dnBP\bE(kG9]F@ͣsXDc+k`P+ocwCpYD਼A(!0NBbWN34iDQ{٢ٞ5qɹhNmbXڬM$4c5@zn#.Bc=dst&Ar E(bwU!9V@_'?7s8:1]?nح4ehInc* TC*`WXߵZ0JN7]z^ZO9S?Cz]2"Q+ܜ}g.)ҽbe m'1x S39 O`=CaV 1P:?|*$)Ta f },'gFZg>A׺0gǛSd Q>(hm`e\ [4q~i1#0V@QiTBx_.dT:kY"j"[͘R\xY4QLs4$0n OmV7Hw&{DMCxO1]y5-&>FEиX^υu3q1Lt~4եĊPKHJrbe6)f0U g3)_K]MH1sAb` ž{]BycnE# %leFBK?k*դ)hPƋߌ}2QeK%>i|[L%ptF].oou_aϮ!2vzJJdac唐FWJ}:8mn-$>|%Ө_vϞIq)5S52zp-ӿ:/_R 57kIn̹ ;*'mB"Ey2n+=?CISN!?TS=X2L$Q'znrB{L Q-C*lJ71hQ78)+eta):si\t\{*1\Ot>z 7N>/phJeei;af6{G8~t-f "6JLiÖX'O6%H\h]/L؄KH, 7ay{TCLdH̪")Z0+w!$ GאL' /Ȣs1Wtg/^;iYw@ 8؍VqIWn+ZסT>wFʌ½/?ӧXZa߻bkM-=8=5O'DvHkQxԫ 1g5wp_3lo 򤑚Es~? ǎ@"_a?NS'y~/t>: E4銙CTi< 8՛{s%0iY˖!ϳ5ʊ]H)d2l7˛َE_WX8/M8E2҆vt6zs2fƠL0+YkBOC "n)'V4,8U!ml;{>+AZm8O}HIq-]שsiy2^KI\[ѪfQJӠE!:'1sMPW}-Akwdo;jQK7_9&ZA2D͌ ՘4`@y L,0 mY.mu˖8e,-bMǟCIBc(Իؚ46)6Q|Qs=\K -+0w΃]Z;z|SM>v!B\? Cc;()bG2݅v|CajYOUHl$6BӒ7[0}k7LnCOHJ_%y)8\dzO 3tF?$!T֥c5RrKytP vN: w<<RGZnlEnRjsS /VD5$5,%i2[G.h+˪QZڝȕa, L 8H(QlZLkc% "Jz'Lm?:tJbo:z\O1s +ƛV6Fԑ'ZcR~@ГDSJW|ڟVhUr`+,J팋Bλ?Q*!Zd+e]Bm*_%҃ܽ*"@Ĭa G8y*@0{r;8;v]"*N:n!Y%cJgt]\WxR^d Ģ'1A'4#%W4- lZoUE![)sTj|AOd18VhC=wLbӐNl -ݪxTe>K}?)Gg 3@uN-Ȍh7Q(G!VSY#BS^D}֠TlR?9;TYہ(t7G}zP@ Xb̤!F`۽tIAjƉp3qgmcdSO\˙f;اc1F\5b> /{F끏kܖRpY2']ܝwvnaQ ~$ڀcE}'"h)닃\vAHΞ L;GkMLX 6Z,s)'|%i?U&(|]K01OV}|Dܙzxw H].Y:|ur6*}?v"{El6?=!]xF5tޏ3ihܚ{~Z" s|!WD;A0d4>?]o8㽍gπt޳_rEB2ƊTU!4 F:p';{Br<:?5s7"Bx T؂$-z%3 Š wd}׼jTiMXB!L%?ƄFkŠQމ{QpE D.s插©evu2|偝\_f W_YX Sk*]&z7NKyht$J"7D}_862_cR@n# < 6%L=>L*~8*zb4BilG;!P-Fz3Aƣ[w/ fiXAVc)iQ}\N WGa)[Ҧ wja]aGߣwы5b3kM_5)F&ʵoZzFʼbnMZ~IX6&+d)?ÌdSTP j9P6osDU]\[˾[Rӽز\lz}~  0%7%oz1>yĪN#Ra>u؛793jw;_Őq;jzHY/lB9AY]FD̂otkA[c`_QOf_YsVѴq CP\!y~۾Whͷ &Ȍ 5NW&/ -hmH`<ޝ(Hs&*c[1i?lXN)u(cE8g0 t/gzPqYRw sE={#0K9\mv ܎ ԥ+2~iV#Fɴ5 FєŜqmK |%q *$G]߯zaN+B$%N vY.1M9" CU/}{’w'Yib"tK}*叹q/ ISNK\C(2`M< Hѽi-XQVC+ Z)DO/g2ӵd1&4)HQ:?_D7fuFMo?\MMRg 0p^we$%xBW>>CKo4GRƣb׬M-aFDcQ=ڏ0a*}]*W{&?m@aQ@Jy A4 lA֤_FӒSA 7όGO Lݼ]T!|XrC (S]DMI捜_vAZ"9ݚA~Q=oXuAӣbO XVm1"a/1Ž 'َ}X,^ٙ`F_$*=׺<7dIkQDZ&:mZ\H.&46~;pfPM4B:AhkY|Ƨ'+q˗/9 A9|V(ÖXQP,0֒ul":d$3?TDOX.#tēzcD8us/VDkjpeOl'\̠k Jrg gis_*j LYOtmR3DMؼvҨ 4ߞg1˽Z)RxAcl9єJ޳:"bCޙޱf( AuN,wem%?0keCzbHΉq\z;Y v+1fZs N|ݕ\El[M|'XB|r9T| %УT݃4!3eEmͯ#4烆cnQunA\uY?Q ksƪ<d.()91&]SG\=poMY&G{¶I~tiY{gm  H||=9򳺵±mcUuΑjjSJj 6 <'K;cy[LFt͈|izZ]c(CRk@U%3ZǸDQq FP\))Ĩo 3)l-*f}K"q:&ioFl, cd.?Z{wޯQ0xhAmi\B(&hd=6+UDL  =<9/1cG&krZ 0*@Q̕iZzҏrk!kՖo3>ILxރhDsq-Ys/B][^4*l.Ƭ,ebDY_TwI0'JiI~8$) Q[,=AMȔ~Vq 21kv`]șxY`?dy 7S r>skZ?*|x(BOtH EWCm}ޜ i\ZD'2X\:Lf[ f#:*'BpׂJ)_1ܯ$qI7iu_Be]u/d~ݘ} lj3pW",o [_ M({QfqGRYl5g;$Dm]2ޭ1qlXo rS?TVW0]9 brq8 zmxt1WodI1ܨ#+ViąRf2diCvQl\D-td2c Y3\U.Jlnm;pSFC< xUy;Cum@1N hZ+~WA.QJIeցe1Vd5~lI2 k*_8g$?u4}dyf$Ы3zJCjpUwqkmP$Y0nZNLqpLQB^rSfG,2adߕP=@Ӝ<՛vUr,[O[qi{so BtI:|^5ŦD[wXwDZg.؁^PMa.jLMl7Xf:F ^T|kKm(ƀ]wzbM6;Q)S FPl /֬Q ہp6m fI2qu8 Zh>琞YrMHx&ϑ(Hxf_k^JP¬7u2 MԜԛ($z'6ec`Q/\xJsr##CF~#$+úFLnн$ej,l:-+sV=y,xuA 5# /[IGਙmֲRҽ/0Y2u>e ort>ˤ%oeq7c}tn+Q@&,!~R9 d 8J!2PB E?GW?> Ǿgq%rO_׌?T I@xׂLUė6:ᅜ3XCjPd3ClOQ?SNdvAs鄽2 $MO);=ټe-zYgn?:Gt|ȭdž 8g2!L Go˻:_k_êdST8=yi;/0>&b85N+z,{mq5!N(gk[P;170{ڰߘVƯy&Q U 5@Uw˨3:CQxiַ]ʤ$Qq;ȕhEJu,m=ӆg54V@Z"~Oذ";Q&$E?[HHWp-H!d2IcdRNqcUf+^Q[n9 &p;A.Ĵˬ\SWA*zfr"^Ӣ2.ū"7;Ӟ8ſݳum J">.s_W2+v&w:bmHrB󭴸9ZmN"pm3}O=0PwnH܀+|2ʞs Rt@oAK8/¶)e\V_ނ4p6S|c3$5+M: `+߮3$/^oL*NV& dara8SBx>yyS48dGa[,Xp=lBظDXui3;;JZZq3闱Njbﳭ7yvYu /?~嶾&[%,VֲjG[H!n quk|lb$WaqZN.|"`M73*i|Bi_xLF$ʄBݘ< 4'fbh,b*s-[PX5[Ҝz[%I?}Had@BIӁL'TWo@N13SYlv$wc&`Of &3+&nxB]PJODN6ZȠ ô_IƁw 6/E!F 0 e0a$?yj~>UME{uӄ<-zT##mjkxGa(܂oWǒ t rsr)p9DW[0 ~ z^>=n6i5D}8~De(L+nʿ~}_qH,W`(m}?RU7 N#+u]z^/l=qI u I|`i;¶Y"/7I`aq&l:A3/s$?q."FS 9"|f.O`3?|)1;E!H.T/jcN 'vnY*cf`ze7:`lZ Ԓ96WJ&;0tMP~<~j8RUtk8rU]G _DD]O>¯oW_l<Xf{4=Vzry#8Dj[SBgkC1(׉~SZ-*D+_D,Mz{%ةdj!8l\İF\p\wODXN+AlꘝL_ÚCOW:& :Oem ( ~vĖ?MYn) /L޵"7C0mhRNvS6`dU8X)*v.v:(&X~`W:Ag6=/UkuB_2p;lijzH}J=D8O6TS}D&쮍N.3|M؂up٥/SPe kch rڋ>̘Wݾ>X$Cbj`j57Òx¢?LnqOc񄥜|!X#S/XcW23tے/#7 y"Oٗtv9ΌSO{$ٛfvn4oHu]v/YǝNVޑԺX%LWW]H!H\ {Jpr )[ eyܨTG)!\hȃ꿒jDyh:(V)-Jvul -q|KYyPj$q] Ee(2*&/EUx֯8'SW8^ Mw ˠqB?Mk)mmퟹ>JLP OpG`r89x&a{*z7Eʩ3y;Z v.M`W4+T BL1u+8dSl(RԠ%ҼHUj~+ #!?^ ZnɗN2_.H4t(4kcjMNvЗss Z\^OԽ='k$j-jmO~r։bE p)n-|;"l W/Ƞր.#Jn0;DlCiV% * ϗdB?6c}^ l'eMD]N oy#Yj!(3 :wۛ #?~:`?T VC;ίK4+{c+Nk̍۩CB 0%Q5@^fvf #T5[:vO19, j{ᙓ/l&2e _LSKM11yjDYdeF&v gSTSrx5k;'E_=PɮGǬ,u NsqbIP V*rgt6nI֢JI,_$: ~@Hh KP2| w 7bk+@FSQSכnݝ'eVhAtU$l'*Y?[e4ʥ*եjgA,y K6it XT {ӃxǛ9L~MSV(WV AkE@R-U4 u&1'$+jo=a3f-v庥vdRk"er㕚{W\ҲT!aIN.L7KxRlp]#U,1Zgc>6,jR>-ŒAA 7|nJP>88P3A nAAw[X8eG?aζDT6Dr񔧑 \(&a̬m}SqR8 yvM#&EOpC2^_֪4Gjfy1pF\W7n7F'oG*\`^׮k~ +L>Eu7SJciMW:/s#! _&RF<^Ȩ4Ϟj!ܙR$D>Sj?OWc;~޸۲5'Im0ȞOϞgkɹ/;~1bc-kXA)$qJ2R9c:vǀv0A,zɢu |n/wH%MX3a[ʧlˤת[9RcX1ه ĩU0 5D3xcs*~1nL7q|ws+S;+n,c(u<:FR qWhs:kQ#Eo~:j# CA q6p#Z.p?} W=|mǨL|SA=cEFwXE뗍v!xǬ7*`d{ZRj+ڇ<%8U&!W ט9b4d Zq/; ģ=ݠzPøq{Rr } 1)3*wd]I4q>u?6q-I+耔K3[C-Kv^V_4CWpW1 \1"Wj4X*H"tNoe{BPv^\ aT)J)5@BG Rž}M]^6ʣh-^3Fx2 !vtJfH`sʬQ#,7'/]T-;O@~)/qD8Wl炷$viZ7`>~cC*<*A/T[H38j[WE17 >Us<t:ٞyԭ j{Gܓn3с\7ptDH8 @ܔ9ndl_`5ڳ:OytfET4R!+ME r[ůY y(z-{W|Gk]}nD;qtjV+E޷* Sou!G.55JVBgg PZ^.dSd&Aٹz W/3)HI=;JEEM< m0 N<2 ~TJ ŵ[D];[LEKS`>dqζ+6ߝ\^jԨ7j|`dX]06Gn_wv0&?Uv凳9'0M%me?Lrʝg/`߰雊2,XC& ھs ^rBDTғfP_q fFvd[;1(%}f֯NݏU e^DJŤ|iͭmݎ_ʧo^Z(1tagPþ3 "g:Ůj>aofso^R%CIBOG5bt^]P]T J JpAF[?YkCLrQ|.r3HXw.d41֞A,}<~]oKW[g%"<:d.w<<Ipoaz 拯/ijU; Ⱥe#zwSJN$llUvk]ɳXX|j]e |&N`ʴo٦~%,i1溪.l ,-6 (1q╦MՋ=MuOWi݊ȃ 81Ń`%n $:EՎCpԶOV,+{3U/4 ȯ ٪U,|W tJvD(ki|*V$hNL3Z:(R%{ j\\!ۨ8F=V0tX:B9* PASH)mD82vWt:ׇEw^qSL/n^ԱMPm6"\\tHlR]+۴pg~ ΋g}"2(3#R â0 ސwgV?=Z\vYjH=kBҮ3VGvX/gZSX/UlnSE]0'xCQWU/t_,H_Y{!ͅu o}[p'e=rզ[ o ELVK.]9ypSܢ[UFO߉_3d܂J.5N24`)%GmTU?޻K$*'ƞǡ#褆ΤQO/YQ K;K#Mᣗ[wlmAf5@Z_3Qxm\oU60bX~ҏV̮$3daPg&vA[$y  h|ޫ]x0sNCk Xm(*V¥ewCr+8S^}د{u7S"N^x0O C2cvڻ8xqA% IޗR\r#KsM0 JbT{Wܑ9YE8l!=6g=O0 +4RY(EP6pwԩ6lw^4Im~襫B_@r`(^7 %,!nyFu#r|Tfixc~m)j;Gx Vq'` 5X9LPV+1}*~W((Îw~ʬ5Y)(JߑZwY1u!dLjuSM$r! 8j~WkKCGRj.BF |VKˢ 2WRBP3^f6Z#'md Qr^&YAܲt3V/ٽGϹ&`O 7 :@Fw3_n-~Οɓygش,WE` !}y{hq27|0cqImbnjFgk.Umx`r@DV' S[m)r yx^}o3WԂMRw#[:k,klxYfwd'jp 1}rdq' y#J: ~vh7;RA [PUBMx2bf{WMwzePv_XZV$_ˬ,FML2Hh.8h oP -&w<܎'ɶ|S/IL([ue)l( dbrh2 !g;d$r*d`ʵ3񁚇MDn􂾽g xs8x dХ%h1Y= 2xvKrN1Y RӾC$e a|؆ycؠ[ȥ)^/m0?~!߲wh]DCޕL\߇@_S+J獙R.V彬!B\E~ up&oIYTQH k-FyS HYrQ_ R჻gӅB8IT!fjPx.d;)=.gXNNLA0l$|Qvq Mɨ414PJC,4(* fDf8rrѻzU|| i[K;BUP]˦2)hW? !QT 8XDh^mipSuz{U(OT3:@wiP+ɺNl猫"O?2#h?N ̄')`_G/m-a6ť9xV_7$ cT_0z>e1v J2k.B7L.W<aB#0+^ qUJg~r)Hh֍Ċ<ڪUQi+]']mJ"]}w";ٳP#=L]88 tZ:fUb?akJfgҤ 9R2 *++׀iU;A_ȍ L7#*ÁK!Mdciw:K>~7m8}j%u(>rIo91v[1+gӏ(HrrAfݖ>VI &k>ÄwmYR T7e^d qԄ+h?A*+,'}LRz BH9DU;y$nT/gH鮵UMF&ʢ&-$嬸}\/.p`you{K#6M*OXKrV󆈢s8!l`粶VF=Bٶ4ǫZ4R)wԥ9 M[JqҐ*So͢}4Ҡs\]Fb91m$/ծ^Wk4^]%hs.bML&;xVAu^f$ tƷ?#0ȹoBb3PȺش粥\P s7Ix) N;']=T pIs ɇO#E_oG1̼_̾V9>&(w+TCL8a #ك9Hfp5!ېi&iWKY ~t x/]Pwa)\cQ4džgބo(d+,݆Ɔ lŚ7I}X={'뚳& ͇xN[)0\|mOH}G엀ar$A`-)~ՠb(P^gI~r+0reN{sW]{ R uĥϡPzi]:g[DFϫ11C/{c]Ξ՟KWG'[k|4E q ^&eHsA.Evҭ ل}>i=rަ(/& Ϧ^6N?JF^cPP#M%ٹuVkiA=䛔{#Y_ @<|EIoG4C 4oכQt.C0>GkѦdktK RΣyyzn0JC&po6%F jàs,3x| 8UB] &/y+UVt`z/ʼSU|y6nf+- %Ps*bl B/p[fn(LGM]^=<\ 0X .]5 \ֽ('rdzI 1/Zz[OΎ4[L%ל8.eDޖi3(9-HpCvQD_yJ);>hXalUr4o+X-awvJ6?ޭ}yb  Q / dSۣhl"z5Us>?/ХפnkT{NP§TtZH8@{ЮQ;i)qDCU F#'fr/L]N-`^(:۱җ Kx,%~#뎓O>Om_2Rg%9z(Ab>ǏtFA~-Rχʦ T.YƥQ K:'%5|zr_/eԟ+IvX`<.V-cxE>+(WŖaPX |@XmR8 %ǻ@oVy}Ɇ[҈po-Aه1}5ʹ'm0-Jbuo<|^t*~SDR쓤5@@ $Sg߫旃ΟHᙊ5t-V':JO?d7̉C !%lXe3ɰo-XAIvKu"+ (&#T`xq&#\ǷDc?V gL}ƿ`: |*9V2msTlMTTCf V <%ꎰI\ %oΒ+*{AKWFvf%gdxQ:N 89QJ;ֶuAKssVoYt%A?TAꯟ(+7"&b=;#cp#sSbH8:eӎwr.`^߾r/z'(\.AvQD7kܩ6Vyfۅ<]joZ,Ls p3ID{:#D #(?>F&-xnw1kHVH?u^mt0LwrT"!fd9*p5c^ǵJ;0AG6KsN7&t3^^sp˹"ŪQtG"Yp8V N5K]OdZaD*wxd0+* vq"D,ȃh>ܨ$d«_ &T!s^ʶ00O|Lx}WEt$[ȩ$"agϓ6k KY }txu^Vk\nh@_u':>tcKc-kp=qFnRP@3n>?췘c=ĴaK;8ϼQۼfGdߥ5 Z;4mFQ~qr"AuXy!aY_t:҄(NНTM ےA-CuKk`nj݁FhʼBR+*VF0J`DrR8JV\L۶ <lY=2aZv" h Bg8F@lZB0 q+qƠTS5e9(w1$t?ћ5ٳU\znSI`lѽjJ#c,YƠ4FVa08Au3Y熌 kt|-uvs(JjZhي f9!}4Z"!P~fAoiؽhƝ!Q#.)ղ})^X}j[d\%.E}kKL4Q >][9WQ]?Ia}- xƒ3W -en4釓4CY_ ! Nt)Rk8=s(8707pJW}A3+:=K5}cES;׀73. "i ]dGro٘k]fRgTRP! 5o*DD IU06~EP8b*=@E'ik؎I>\ <zɵu_6Ḩ$0 (C^w' =(c/+moÌ-gиdOI^FM{Q$;(nGN}O̭ 1qi"oX\|P^plǖTBp{֔i.c,%ȝf{!.Mr;G[zY$QEoi& @IQ+*ۭ2q}%Ao鰡M5V~s%g>zn˵#7 SB6F[ߕWEZ[9y#阖 e(1@A9Oٗdz\os~ŨTqFmZK N7Iw28|gXTT嫖#?Fh)F%)3o[dz`-Vu9Y`UfWu7%tF*[Xa(">: slzzQݢVkhH;x".Ȫ8}tу&8,:MLXq6aABO~~iM;Εxv)s205E<IFy#zL|6b3B\` .T7n<ͯg#XXF4=R%Z Z?Ć5W ⤻2@j붋`seH &pЬJZ-NnekTr-eU+)lp.zxvklj֧=iү#ŭ,yVfh⮜ctAw_ ܾ9]Jqt bPGj}9̏{f":- .9:@E&(UXhm#8N"YsCv,pƀ:V+d XgQG;rL:NJ:DSi} _Y]%6s8ۨt{(hwU?oK!lAi[h!a[Fz֬ryWsB j~A|}Ur%ph:f“DJI' *tQ,7W)P!K$s/; C= {>1QE<ÞF'<]tצ^֩n qǸG$'> %< r#\,*rRaIPF_VH!%It]ujz =F=14Zhs,+NвT1GndAUgFO=U|V2<砞sl>کTDkG$TJ:GZdVI2O|?%m5 p=R opg,oha.*1 CWf;lexϺI@@̀o0(Pc=Mî}ш08>AuIa̘8 FN=mg=vˇ- VҙX`#[ami?t$d p B=KTr;—c9^y;/@pC&/X{=ઠlbrp7g䉈 -nC~ j]bD#6aveN^u$sWR$ sHgh@-ɿhPOڈbID!(2E(Ipn|cJGOhYCBF Jf 7k:;v+TM[w0׸WvVi| qk U1Idx 渚.\Y16c򼒴!1uR+ՅȎW)s4{lN?S"އD,aI>5;alC;90G~ ^VfO5-'ߌ2fsp|}CJka[T1l]\yG\2;56ˍ;[«O,9bBL5JS`]O?r6Z|(10g$a%98$6Ki.nG6J) =oR07G)#DU-DzT=SMXGߩs" %aO;KXU6[z{,fvcBAZ*d<'B3Y^|C՚֖e9>$a.yM | V5,@yb߱'J-ۖ:8w 6CIjw^`k"w i{?ޢ|%BYB_2"w-)Ň"JHH;ΥtzCpMd]6s:ƂBEdZk6D$)UJQlTl^uf(tp$idWS{vX9`)w5HF_yVBTwvRc(7+z8U1;<무{_n#wD{T_Br{g\wY?a/1ZxJ֭lGDdHyn iYh S2H;Tk.FA!PJ ij1eG*ዤ_DIc^(WyRFrP'Cul\d:7C %3 ׃;oAXobߑ<#\a!9\ԛjg2:a^Rt F !1KE|'(RظWAO؟JMhH[.}^[b2ZjVK"iecC&bmW54V^6>hrOxRl]B$/Ɓd[ߢbb00܏𿟿SC _B(SZv+b@c?(^;r,dF`ue2,1{E$Z|ĽVB׼:ٺybr'8 %>aH Cȩ,,< 6C`:c#pI Hɖo. E'I$'FǣC|1P]o{iv@xXuBOhճCx_M/^Ov7ӯX)X{N]ll$[TTlGFZq}NGIsX<ޮzY"W_gz,O/SՖeqm'),do` p'Ysb8tY'5ph6|kayy3RSt%n ;U&5Va M])"#sRabKhc9g9!$ fӬӇUDgAA /`TwARZd Jwf DfT рg떭R ͈OE28%|~=b}A(⏱Ȥ4!E"[nR9&X~_TK"%9#b風JZcYs}T&dcHp\ZBw [^_*=_wižk^usf,J nПNjam6?>_@7I3B@iˤx7(*}q?0c{h g2(i\@gq;_? 7h\KB3~*֔OHV]PZ'^|&>oK}dߞ=UiQp2VW.lA1Jgj\۾Al? V[K`=M>9Oc9U1 *j!,D2*5Fsgu.n}F #'wZbr(e[AyZm^m۽€7,ڙ|4.$*j#KA;hԧ B["`E±A%@%gJ P 6#ڱqcMbx]"4;BGdmutTœZ˼ZR(m![kUWl68uak,/^!mGk~)zhnc[#Kr'q"~VP"ܼ@!NOJ2-ZLů-yFݞ@'d` I`%𑙷9MUhJ,PPYquS0,D3#"ov}>B&xߦ eu-[fMe6,qXh:-y3CA2v|ۜFV"ؿ d[ё@A6u#N46^\a$SJt9]l[6a~iq]*SO1Cq%®U!]ϟS|x3|Sw&340ا^K5}>BUOOILrJio[9y t)`vN"kJ'hڦ~s#?䁲e]Ÿ7nw)KKnQZL֛@~@׀ c㒌ƬoZ˂VQJ(Zn\åaw-.bi@qRoˮ0:v[F101oq- EqR42)ǩR%zImg+w]AqOt (ޱ&,M|f7mN"jĿc/'cRŗ?+`.4wr,|7gWh\w,,)& 5z^3`.L[ lgL Za]hԘ^0lE2 C<hO¼<=l6EEg_Qi`h_'fRyK樍j>qDImɘRg$0.P$ҧ%W!_$3S,8FX D_k„U*F_<%;#!FBcKq7#vGRnߒ0S&JQyxC~fJo=|ֽG(6ss&8t #ؔ mU$"!hΙ{L2ǑMQ&uߗNH+Yi ?V_ εލsEH:JR]4.o !4hW%MG ?퓩Cr Yy.hƨ-㎌ %rsZү+ڃ[ԫL jQnJ{?ҶR&71gpv I)K3¥w2%QZ/^<,{2O8IRVɏ+'f̣+ rLv1(S Sq`-a}+~r1bg9ض7B^#  GdeѐNS(Lr*]ymظP tG L/hgތ҈,M%CAy RwpYN^\O̙u& qeet0X/'=iv%ٵ|6͛YK y1JvACZe݉tc2S6;&R J?kY}~9 E0S~$?0:6;998}&Z_$h=եd8+tR*2 F#5Kݳl8rTA7(M/bufmt 'W6`l-T{~XJꅤjm[{ƿWE'h@,ѭw9 sD]sxlܖAtJ£p(ДصTE?9 Q#|K=;¦=z(\+N*ʮ/xy`%8]2|g86 OSE)b$i,ez$W{_4WykpJۺ1P" ;p~QvaVT!oB<{._`pixԢwmMQN! #ٴa+{ۨ'3Ք8:tNdHV7tЀD=ߐ nb8 ZXQ|R߽oCW"^]ȱ)Na)wB52ipFYGcr4{+{!ͣ63Vpvy^.t`LƖFyJzƲ d?'rQe9 :l'[9r(1¬AgjElOuvf!d┎!1  #QSFppH hp3b(] } 8IΏnV=CYΤ&;sؑWK` %6W)BAb5 lm7mQngE ~LƜ5;O=(λc4tvqy?g$ 7kJc;eR^Y )ZA%ɀ5}cwK:0B83RD۵NPxSoaN2Y :RW&n_^6ٲz <+=)P77ks<:#mݺ.]%yfź`+g.M e*ư`y]P 9%ۘ&oE ݺ{xk#cu4-[ɒB/+ŸʵK.{qW/*^Aw͖d)Y+h鶞l{8hrqF%7Woh6fJgLo6h6/d -1y~vʐc^Zu&MaR(,YphfY3d{irO!?[]U`dv4йũHd3 Ul3G{kcVA':1@/NǰRߛ- yLn@WƐ`7nle\p` ۥN̸o!VykYЇ*RaFc՞>[̄0O21O7x.ASz5V}eq媦hSa2:kޜHV*hPЎo 'Y; !׆p3rteD*8NRTnoT0o;镢Ĕ}&t_=-Մa >Jih.ZM2>cwU|qV9o,X 0O}dc{s!uaG.2NmK[t6rhfgGDT4 𻲝_Iإ_;u/@R[ \k@N$C1^zEҌOa8DB ûu ٜؗ d1BA̋(ڦ31IVg]ghkuCZ2 yͅsUҹf=m,3($m Y4;ys9d8oI  Tʥ[l6`48BZDyiJx-SHJufdreXdjuϵ'cF3)/R<QX7w&th%} DN1HuXU%~~ !x~tUɷڷbrv2U*BX\~VIY6C:]<2~^LD0?R /DZ7fÍ;$=4qiz_ b)J#<,)Iv[W咖hptAj _j+5sXhu&.k9,\RP56 rҞNQڛrM8?Z+ 뫰Z{M,"L7a-iԸ mz WNΓ"=prLC Z:YۤL_rC Xhg7٨[j׌Oklգ<8_)}Xqb@fe-Bcd& m3e ţTJ*'UekJGZe~_r!tưo3àu'%akMbe.82bq*IUk 2 D б`?0u3_dkDq O~؏_jhc| dމ?{H"50 8I[*%q3+0~HrUyQ} % ;P ugRs.p]#}7Ԃ'[^jx R ?|[gyW?<1xS漨ݪT jHs}m<㒉 hiRUصoL!]UPOFve:"VniiRR  K~ ^_>I]4^9T(_!NO rMZCD)06bOC"5Mbd}SW߫+ ^Pо $~ Zl1\. hT/!.pdt {`p_Ajξs8ɸQ)WǪŲ ًlTD{|g.jƺlx5Ӛ8ΝȜ3eH+qoĆt (F@P3&&DK}*h:k? rbZ)`'*>Uyt?[0/<(w+Q0k2.RAE+5E0UXzQQr:me oڨ[ "LPI_-VBUP*]^ kO3@?\X>hj#Hnu]~e$,U(Jl+IJ^;jb;A~qd ٦4 Gą~v%ΰ(OKz% 3@B:YpNʼn2, x fDA&d~:kKf>@Wi7*TkV33%^VDa$n˼^hA?їNcU-JCehѱVt5,G+' -&~VFT7^4q܌"&Ba3jir(umX@w%X߹f*Z3%$?\NSV6}quMz:t(e$O~~0‘>3N nw.7۩mbGG wɉ޶BmL~ Af`N@>^Y^3x Dq/staF&dIdCفWz#g9tc 5[zM'Y"sƋΟr- LGWeS9@1',PV:;`2w %+lj[V=a1B>AT& "*6 $A<@*}[: BK7Lta⊰n ŠL%3~OJX'Ayѡ(go֢kꗅxD0;jb_ ê˩ Sr`nG6τf{z0!Ncm<ʙTsfe˅0M BcߴOC-]ciKFo^\w!<=y;CL'"MHF*0\ϋvC&)AH4g9n٬X":@Я07x}H^uV/ e}ʜA % -7:|-\\F ow^tGuFb_#SwOD1BEF_wV0s\?z6 <LS0S5ȊкhOF2?s0󼠞Q=ʸd$@B8431M#ֹJ*~vE WbŖmOi`4|KQrưCE&pU#3^ OJF|FXʌ I-2X&7G U'9D{ĸI+'35+*}kBF̢Y_rEϗ岎Z< I8"h81m 4Hd< $;^&lܚPMQLH.$WDϥj3|1q6 -1H,dCb7~56 gr *H2(5]?Q\'3d`(|3w+b?PUT[ݱȁO"2L%k= x;CmB]~}Hn2U~R&! $MQ0w}5/<727VWx.K/(՗#b!ǫYՖ)TpmzїwF"'Kаals0J| p* B{:V9:ķ)[ A% H~ytn:֚XnDb 19 cpq$?=]@wHzúnNաI朳NLҿu!Ꮕ* @|,ݍ[0`iX39hj6V,zi3$.KȮV0RLٽz% 黨fOcgoCyAYGy9f*\ 궯Qij9`%L|IE 7ϰ Sih@k6p3Z%>`͘bz<|uΡB&14/hLɒ OQٵvU:ìε"Z~rt?3p8z4oˁ1} ,Ǟn ZީhѴPHE}ߌ% &$-Nu^ #F3΍E01b7Z]Dԓ='2*溟TƂ`P:[" h”pIBi*@%&:2% %CNb}/KbߠoȋT,PJ57^=5uߢQ#qBsfMIVl-B.Rf![GD5dmau^AŸ/2ǫkﬦy!c-Ĺ^&y踾fkByV';ItSeR62gɯڞɗVclapO~yedq;>740g&O6N+LLpׇ$l ;#[Eǡ.. -M~2i-~r%8XCWZ`aHdɞ/0wsXb"VL_e ,KwP]'BY>RGskH/̩Oľx\&kă\2,DgEj$.4kȅ/ `թ g A'ZN [XfI E1E20m=H(2C4I0]"y>n^*όv#E)BNJUS@bL\F5 :uu|e C8gcY4ntHsӑ2o`&=ŗvRNhgU.om.ռVz@mVQg)6[M6YU8«L,KON3د>Tw$2Y￘d|i@-,;\a(- }UWih]o6"7w영&p1n/^J (OS'ZRKtw0?#ᢍgP+ٛF65f-e4 /D:\]a %4j{9AED~vZ' / }ȿ\ⷵj}ʂVH h9fӟrty\1NL' == y"tX{a_D,~J]61JXÐZ#:O-;g'67w u C$u/3}oڊjVJcԣbUzz",mLlt{/unu'v_`0,kSnV!էC6R{B/ l'X,r*XrqdĘ!06R/' O~z |Yv(%ʙ lW}/j_U~ow5Ll:ku!UHj:jg{a T"V=FA9+=_NsɧپQeDЃ7_jZ$H7rº)'tB'vov_-:}L oe|6۸k U5;xM')~dk=Ja!ܬT7( uAd8/58E- XhFQ@ӉOHHgI%LN4m,E _GZP̮o )f/ת$&JtRe7lE&]؏> $/#cIN+|!CʴT]LrS$ֳ!Ҿ(+TZӧFL3^J,ʕ`>\pxnܷ6ei7~P}[7*U _E'̽UPQDKPhp[/'oV)jyE>b(pV*?CҤw>3ț ع๛HVn1X~AbTt!>hL=+)v~DݦjQ {d@*'Pt7 xÙtQ 'x8clgydB_;C ǡRBPx5*J mARYZL<gy/F.7 Cc.g{Q͇ ʙ _ j\3E[bQc2*@vFp ۇZ"=ߑ.^vHhjKJ[n' E{,[pbCtXY}2r"t&6` 4j:Y9R3":vUOo ΐ2g~5p;pغZOLm c!XbI(o^GsiY(Ŭ㒔X[XW5K!AXb6Wo4 @XڕPxۚ d3)Zg^qP4xمPdi B̊S,F0?3\Fn>՗]UC+S|9RVՑwuaCB2d\ݷS{RLyz7o.rz(h|-^τ(^.P9TըG^)@P ).3nZ[]<khӃgH#Qfq k9UNBc,K,~i2CI)^)S@Ɇ8K$JQ`S|HhSn:` VGDl~#.aBtϤ6{!wn~[Q)&Rg9/j~bjW/h$t[C#qyH(9%yas68t,,rfo #tI@-6{8Q$D_+*hxpD*Md"c |^6{Rh p9n?:얺F33V*Ewr`U6QZ(dݼыqMYX84gڡ6f)<&v6%*>t9vfrD5n,3K$N 夿R63 ޚ\ ] @/M4INڐS4_ci+U墓M ](~R/ΌG+tE,FMeWf?s% s(0%|8W u%Ɉ`&Eɕ%)꧂,aaz1ߓG!r'A3>KPFef/ח'TGxc{k Zj_@ ŠtvY>\մk##%f:c\Q0;8QCUߜ3x&I~P?_]]c}ۆ*H<+N .8I).c1ۤ d$Ţu{`j0IoGE7wr0 z[_W2Lb/ӯ=ә'XQ&GbeQyG1%MV>u@v}bpqH^lh k/h;*v/JK26ii|xu#(ѡNw>;p..|g-\^C= E?.UTkMV.H.P}D䉢*@G !,mV`ȉ}q4Dj DNűaIB})3gEP7YF0ǧ̷"֟m \ҭP^kw$ȽgKyl |I4J7"~װIލ2b[@ЀQ^e=6^J44%b5Vz5M m 䵠܁51?]|Up4d| 7}rf\2?gc,sFg+ȯ ]ܛ/Stx2%0q_%Oa6o/fEY"={ Ũ:BB,<6nޅ_Lo!QH8G(1̒?7,DE^G vk-\*s!5_fU9bnϑTNVA&O![vAzÆ Oш-S'ȋ>V2{&sz{к}56G@݄,v[ ,X0Esb[ +fG80!uu&_d92p-jz);Vtnz渷S|z%@՟} iVQx8E^Ëqߧp;ҩYY78"rV kyaԯ_E0}-/*({)U0 p(5L8OohF-# D{rrD#5L%6ݥeBz$Ƭ:X=foӤ`j_LA֝fg_pL{.M+ hl3  88P僐r.oJDWV<$CW; ߔGMXK ǡV~u(GBJO l\>uLjmlm&KSM^O!Uqn'ؕl@> ݸ ~TYRh!ժ>4[Ù6T("јͨ[?\ԢmCrCGxfe[s|o RT=7Y28LJaK+r-іjyc EE0)fT\ ,C<`ƪ(hkA ! z0R-ψ~=.m~_ :hYV '⹝5$D:qEV/=qx8uPAU[hH5ic7VMÔq^oMfzu#vn{fsL|ėV4NAyZ;Cq/ˎov~~Luу'afmz>qĺp 6![@ܶHg݇y>E-0BM!̐đ9CbEN 1v TR:Eҿ}(Fi4 _NuGgҔ?X7L0MpiUr瘗U`ciW-!O5+f0R۴&`=Ji v4qWEG{CAAW^H]] K@!*˭.`,1Vk&رo푘z7S aBj*PSȰVH@5" <|TqmxŎh'i;r(:*ż۪LOp A-)V1/%Ix4 30EAݔ0M0$^yp٣g\RO\ږI[s{B音̸3,sa)O`SHø 灓86\GrDl/t02z]e%o.|!9Ra?U;D5=4yǥzEMI}„w: 'Z"H7Áء bjhd30gZ:|ˏ 2GQ\8PZйj}?b&BNyMWm3좫;" w!O{WAϮEUڀݎ.G!eB5t9,9UqK}}4=YaԁDN#@)=lqR^QX{v񯸕ޛ,"3nv$ nI+:W%G4l ̠iѬ$bl Kw9E&O8 2M2ԣi4Hm I4.QоP²h=RROpf1Yd`)*)MoJW~Lq^0.Y=Sn=5;19!٤c $ 6`jMfT9U#ZR].ښ483)TdkS'Dt)( ju"ZݞpTlvK ɽ9'e%qӓj'lz ->|G.n2a |c? b֚I=jf&Du81Tl{\à5MSwo]*o B"ށ4j> Нk s_OPl "cLDcט6TsCpCh5Ѭ@$"U7;{$a˷yXr,A,HK9ӽ[N~{F"Y;nq*"aY?X3d:7G:TFT)AwIL%EZKkO h/%39Ȉ?)I9/>՗IƗPꈦ 31mߘ?B2 U'ƹ+I x(|'U6+)r#K<y}2i IkԔxv.uƻDcLNXɫͩծANyjB'8]@YDߏ^bەî=F7?`}JNplnǃ$m&;E^ !#݂DIE <.ûXh^DݹQ7"{s"916F:D*'Mf/1;$ 6qzJ: CU)\H"^-"Jҧ99 chHz֜Q{5|( aN ҽiQNkD[”^ZCx2lyn8 >n`5728# F (C0gG9SfwPݡj?l/O:%;O̒i71Zde$?>U @ijPe|cWۻۂ &VR@{'Mk5S LD';F]E@V +[-yv}dTek "4ۋLD cJV" `>砓{橎XW ]ȉöjU :m gj YO'᭮K!Q%JF$ FiMfe ̻%D'#zC뿦Щ߷Yƈ`@B\~k5yXg+OCdSǸԅ$M$/L;/Q*)@롗߭8|1|B& kQ%\Z&1tvu~Y^|SM- k`j%ܥqD˭&c|{Lfd,\4Ժ_OMp[ٳ/q~"]& i`ГyS;innlУpA}-M$>"f1:$7rb6# Ka +;XvQ.鍞221S ?Յ*S\Ut@GOL ]B ٕb_7 zQ?@&(ި^ږ]"z+BB#ds rqJLl"0Gpyk]iYOR(,"ʲ.K,*J.SDT]syeRhvG/R/LyՖXm+k% 2(j^G$RaMyVQU%d7{Җ*SX m4Ov4!Vo㘝ɯx-1RiG\LY(8$86PX\5n2 1*0)djBV$# ?iY:rT="0 !yef܇c'' DZAM7ZXFNs ['*I/Qj$NX5੬EJCsC] \9BJ0, (Ġp3¨2z  ͚7K}ƈ͏Ky]Q%JW.aNŦ (8~ It+kYd)kܪax5Gv \{#ڞ"Ԟ;FـZ'xw+q[iڑǙ{T~7E|l#5zؘDVxx&z zW;"*@N\\?uF:*!Zߑ?6#D,)wi;T:>< W~ ?ތa2C!,[[\g\^YQ8tjV? NFq7i%͚B'2(V%,ϐ7)Q2n>;Ha؊4rS#^b7-2rg/Uj%F1hPu8h`OS4g=f `ثь`6J˻ 摟ogGԒ{[5ʦ\W*n+RQC1~m=wAsgHYkTtDCu.1qg. lcモPr ]Je7͇O^pj Nr^Ni`3v-%@f'с(dNcHur*B%_ i[5nٛ>n5$5J[;-f?QHOx7H Q B[-ӅB?KP F&l*Ju@_A"Mws0aԹy7S~HhHŲmq1ӄ[DIvzХ%pMwǨ[ 2Ơ%1 e9\.Rkb_q ÙWL@~[[xĦ&=}vtIbǓC QonOx^2|y$?{oa^hq vEH|mkbHo&+6翩{};%J6~1DmT2׎"=,xR\p9+8;ZvQ'oZIF;B{N&kW0[uIӵ%u9Z`UnAts矡w0Mc궄Qd {kᲔYamY#LUhĂd̳r:4Uy\8ҵ ZCHWPN醪NǦFI5 'LӁ8X"v5)GG1[yz+O@ ZN^E-rI%Bѕ}$Djα ҵц&o Hqb/f]Jãۃ `S3V6k^ZE|\&d-$J`_E1bB QK99yz+9E 22pr oQ fwt:!!TXcdۮ< Fyzgse\Ըt|hםK^U 9y-JC+4 ѫFs޳ CRۤ%ΊJ?gR6*JE΃Ӫ./1Ļ+̤<wJ4sa=\Ə BԾ5ͭ眢0q-#4MA'R*#Ț)yV^[9@awYm(QbKsS,)ˊu6{E5AmJVeV{[QA xn9(W(e41^QmzWj2CqΘРL؂`r;'ӦDKrTy7_p{W.DYJx״0exy7z*쑮/-Zc[bm 󒘡v3u1GUr4%#_/P Eް3CeQzWBWཥ0o+rAȜ#3~$˳ {3W kZDYoCm>ý-Cؼ$pbE3Ak؄հh#8uk0I!I02>FY"ΰ ln>x-z=#DrҎ|c$oEف0^ܪd9.[,0H`#tO]kHG5m2HX0)ڀWiNt94רP0A?H<PC{ SdI\W8[𹜲ḙ9&Wv{gOM_%`l hAb{?ej+ua2.r $?H%J{ @0fa_O=t*}yʑd-&x%o3X; H'SN_k$XrU:!l!- , O:i+׬>)kC;TNgmxEN0=RM#o{K$ޞ΍>ҡ7mF [,Wxa'Oڳ& 9+0ލKhZƧo5D'Ɍ 쭔.5ad Cz}KOS}Hշ*/? GIVyh:W/8U,:9=XUC 9s4yWʧW,x-Q^ 3?3Blu#[;mJ,\rmF0Q^Έ-t䜲DQc}ԂN<|jE_"~ZV= !4ґ ٘ިJ'rzK.,QX(9 I; t:d"{0cv[X=KtPѳ zƖS·){H0{Zuq|3gpR"+{:vIET fI~'n~);R3@e:#>:*a.[#{t0е%+b#͇ 1yMf7itNPuFr2X7g/JW0JǽSW /2BtJ_Shtz++3?} 2sSirjL#7ފni .pϵN!?ѽs<`"[Ob[XO T{fN\Jp||e눊A*ש0t$**^-ƅ@#G>]p~`+kfj2wٽZN!"Rs0 C17yH#:(>U@mD9{S":|pJYfsʴ@_-6Y;2`CkhȢ—Vש}\)/TE'NͱM!$եdvIX%.!oox/ SRKUrWurkLp{$ eC[SIbB4::qwD ʃhm%688wXm"+{TSd߈#dp ZmIMorRg>!)f`1\ ~hH1R g(qELL֌֭xa=J`M:S| bo3 _7CK1i U ƿJ%Ƅe|ܲ2Qd75F"R/09(oा@ZorD1C$5y3x.j~zO+f~TEFv"0ѢNNE nc,9@EHwg]&^&mM `ygƼ6?]D{èkO}`פq;52E(]Pa5!{,58ʚAZ1EML͙nThLZ,f##tL\|F`Uj@b\?IDw'K?N),k&hS!2Su4!%{Tx7 r8L|φ= (ct OZq*Q+7a.N(8t?*C8y/fǃ &Ⱦ=6և*,\7F-aEt1j^Ї[d?HomrD4&(g =G۽iS"}#ջBXD0f*"46(A6rRKH'4x#\~mr:W!?&x;pDSe_9Z#0D&'}?.FOVzBghsDvNԅM%緍WkʞV>$ʧBM$1d.qvq=|gUM>&(&ͨYR4noL],oִƶ?LٽUpZ0bjj45lߗդ8XK\wi/nIݶ湊}+,5[i@n̶F-ޏ!u=ߜ,>JKݝ(h>KˍojʦÉъsQ؎#+yq z`V$~`p/nu͛@+ quVG`ŧOm*=Ml'{>^ZO[ȅlKW}ZҤCڤY2?QRlmC ]ף$=^"EXo6Bx8% -.D(ŹK(=>s!vZ#gOԸhAⱚP#:)o9H00S5D=$0c-lv9TY[aa cfVnnEtGws5t=hٌ}wf j)Pz6n3ee?/?MAboY'oc\4\*)Yx*`G6 ᘌt\@ 93[܃8[Yo寯5PMf 7|t^S"9Կ9GeV]Jit앖e;9 d+5SA+:V;E8=cC?1GڀW;_4sx~`dW 2zu75bL&GvǤT`Ǎt^S 3b5+ѐye?S݃` ) Ѫ,^(r9aO\gcV_܅iWZJ{x W]xx$wp+=ʴPPi`~<ʒ-xtN*QYKkV/q[ A Oe@oc}y6c[. ΝJGI(] ՚jY–~ BCHEBH!dsFl`uM#JHA]t)m6lURS޾aq^Q7IPbc98%eM88ZSE{AD":_ZK" b CtUVi&~+5؞&\@&ܣ˔E,lE oG0dYf7SK{H& Djvͪ,bx$dRU/T}{~O|N/M XJ7գ+Zj>}nP͠1k Mhh0 h\Wdj<~KAԯLF!ljxb6ϴ4OEsH M~c>k15p5I0WH #+̶;F)Y"JLQH)Y~-`b0WM=}pBJ6UBL=k9 O, MWgs>Il}3X*VMToM]>ss:ZMccK:"M7k= ޣ3ڟv3ǕHn=ӆ6W8u5QIDEVJ},[Γ^i#qE/a~vHyXAd؏lkٺc!墈'&W8]|쏘s5G(@#@8[ڌRrc]zY j& 1"fMƹ_-&>$ ѵ+ާj`E pg3|{>:Bʺ`8ggXU4f70/ݤשst^a630@RFUtN V0sZl0iq7eg1U|S> jj& -eݕb!+_씅+Oi1Σu,Ճb!좓[?-hUVpoe ?VAb: u|*y͜܉x<1X6l~CU> U@0wFM4?j0N^%ךvTv=:5,X-iB LTq!G]6hp5Нܴr H&:9:6߱~'&qJ O QN$r!g)?r9&~XpX\br ֭!nLJΤ Q> lx!l!ߔ^>k~-ǘ ofbԯds Eޔ"ssI;(9;o4Y1Æ8IN9qYبmlbS}9Vm[5 !l O6/YB)KTy+߇NB3/;$Ei˛[1tKS!(R}oy -&U T :r=NIpWdZyygrhm!~2 lX+Tm|U®UY@+3" a9*|?YdPJRm_zxBBP/M-Uo <ҷ];L& 0^cܲ|K);z {`^ݻ3Cv 7u[AE'% 9yql[N-WCc!A1З]bE88ݍ":m09z6/~{`}2z<@Ote β9q}g]2-}HRwW-} 9ѰP _@{.fGq ,"-HxL~!"F0r W&R ѯp>iyYRRD\E o YUn{Ƙ8epe93gJy2 G^di`J[Y ҚH]Y&ܿHvںeu;cn~\?nO䐧oi_taf/uaȣuqNFQau6ΩNLqjq.+ / /=V/>.2^D!SseUh̎zf#.\f S͡:WP<6m2PB$Z$]SgD|W-H@ǀ|5fn_x&Iዺ ?,Gӷ<VH=`\9$k\W,vvi b  b :p ?'py֦&K$( ;`M[J ͇uoJ~T81@KS3-z*6vrSht\ ?9{W>8~ҔlBcjP]/ RޫÞ<T4ry9ы1bm2=0e@>\'.g|@NTT[^}K)=ZԜ`ksxtv$~mƇ%Q E;ӒYnՌ%3r}.j[ec+|B ÊJc* q+*@8#o(0$"BV^mAB879+dL9U ?EQo2b&G苜͠]jvGR" X+&oH瘎`c8q]:eR%N+a6!^&ٳl# VRlXTimqsHG-m39.Q [KCF0  5B#VSjcا@x!=!`Nuh}{UhnشPZubдn%S7gATn}YC/֓FoMjM FKýjsG;eKWϕʡvƑSSOĄ;9 aNŇMffK BL+1",)&oB0 - :lmr!BZr". nU1)vgݎ#~s?u*U5fVڲY%N% #T-ؠHԙds*R@OG#L{sHfh#d@3{e9H. ہ\GݩF3ϔ~,#g&TAd2קqgDUM]G2hܟ3;׼=t*[ibM,kF͇`FO/0a"dۅLRai|(kț} /s28G%=sT5l 3 J2A&MɶQ%aJ4'`oɀ=,@& *RBjzgʖJ!<j@z/dܞzȭ><.స~Gckwrs:,6E&Պ.ORdg].=FڗJ"$AD (LRB?oa{j:Is DH ZǃrDPSf?W;Zc]Rh 41jUAኽWXf*VaTɾ.[h4&SD`cT@ߤ7dhEB tV}}A hCP*F32_M-4d( ts T BOuu8{摐>Jz`6+Tvp*kjEw$)"2Q.Y;0j ?8GLq<O1jIF}lAZGXM\T7&dzPΝ@i~t-U8 3a!IY4_ Gy:h!8ũ6^l{R%;p4n-BK C:7} %]&0"Z (doP*"jȣߞ˿D0u.UM@u~DWA>H.j,Z5M&Q(`AVLjeۧ8.&R[_:t#7hOe LUF`_B<M0W%W0Tj]2I ԠDW 1 b^kB^RQlkP~yԞw&z5D3r]-`P HG.nFOON`;I~JB(IׯPĨ84!ɨT@-&@Y >]|%RGYq8_SێHPwV2\qq.ILcD+8 W5@R'< }HO2 ~A.VVi`Y#sRY%У\H=ktOcPi,'txʗ5ƲgcJ֥̊p\/aua6iQZv"]s֐Q)юGmIة"e_fj-9 b&q6_Dk={Fwq__ |(.2"t(Y؅Eg #wr @29ilg  _8V+=YU.%7dJ&?yLcSS4s4![.u'H(g"VuwF)-VQ|Watm+!` QJ㟽c,{'lVҶ^`;q@g|W9 aE2zǠ_=]OD:Qו [(:#! ֍dwG\c51xL#Dӳo/\ێ{V&/Йϩ:ӭˏT{>\tt{g;KiĞ.8`L;0M=< F34{u\~9P>3LM:Km;bP A!~?3s}Xu0N Iy_ #AiKdQ$!=p$aJHN >#*c:+ ӒMO3{oaDQCϵ ~ `u|5S mDzeŌ(HSzi!Ь]iT6Ҳ6j1oZc3n/Hl+?B}%"oss/o!tTECO!:G|(\~x7"M;)9/3|Lu%h\?,"ͧ+F+ E돢R?j"ЪBTcw Lu- ?\=bZз=ڌkMʨ535yCdí 2N6QJr7E`en9j[fſS>3lD2j@Dzp דʠNliQ>Y3_M =j ( ~37%=G/>!@@~ 5bS2dY S$G.JJ]42q-SwpYjM Q;#Q0uB[r7VPae9>xc.,FAm[Oj" :ϧ C y> .˘cd.'q\jذxnWId݉Q'ҮO2AISSch PNFUtDTqђ Tfcmw.%Ilg\fj&.X|*Vr)H'X2"ŐډQJi!.gIܚsL}R K]g1t阪}BJ/[bq6 /E(+WRĶ3Y)@WsR^RuZ-?{hoԜ2*AꜟG#y.3']ɞ[͑+݋ 4D$pOۃ,ӮRVx8>!IuwF`Qpd$0P*wRk/¹/v5CNcrd(>pY#!M^w1C|QZW~DxAue,XWw׉}-K<@[]Ӧg/C'mNbP,"cz 4|I rYNKn`'p,MJI^>k.}\% UlN5E0X r,%?}~X=+68 TWm(2V)y7.\Ev?}GE57$`g4W] cV~UXg2s;Js9ȷ9Zޫ*m>; "&O2{yDx/fOFic 0%)Ap^6hmWӗuPu 9d-];- laɻQUA|<<:?K  DjMM~%:/f',dNj~w2 MdBZMxo )#S6~AAdR{>$cll$z2  zvnsד QFK(Ha\ef%#u^e \0MJEv^g.-K6ݥk8a؇g%,j{ՑP0c.3$~S.cqhKMM$;àA+i$HB0]&Y&(r ݋ֆ]?Kf/[ݴɩ)pzVv /yc> 0{K=*^r /H fF|)VDZQfl)䅔l04$6ڰ:A2qaIeVn'Mه$VQLRˈētL[%$YQI9nHNt@b0-5_Wf0 xRb[@b>Ձ9dW] Yخآ>Fj"PY #Vf92M17,+44fSQUCx f7+((EI6Ul;zrýgՓϥ-YxϘU6MD\:Τbkj^V%7wXIǂ@d]}fǵO:הXW{<Zd]UF-|a4, Ͽ̩x`W m $$y9ff2nE2"b̄gc&(~d(eKRfY,KAF8?qz}gjFpa3[m=EƧb]d偮 :*-+"v3;z1pQʧZ fno^@s&a5V[o|N1fUq"fwm_l^ |%>oz/ ӂ~|<~bؖ-5qShWO_S-k} kuHjZ߻nGTcAǬHLZ%\ll|u54 Wl(f悧EL;+sfNvT٤(cgBH" D-`[m±3b B&W=]tR1iun5u9WRVF(և7-Qq?F)ؙ<865\mخnQ!L3c? mt{Jer2~~eȫ4Bc2n^|r8&50ŹdITl6-"G'\3fJlEwuAe3.>$[%ctm(|O0lSP{S~͖g[]u%W“ T5~ąXTftw0ìY2 dhEc-K1TdcU= 1퍏/'B# Z0~pZloy;u@oQn1bs䚳1e`$jh ͍%*&Zk0Abd1~3ui7,뵸DfM:u+.5P1wu#,E4VX>2>Zg5dR^ؤ'`ψ#pLgН{!Î/Uyɕ\B}0U ؊3,9?s%MlM@$6Mi^6wT636ZL#O[Sҁ;$-ָE2g&P|{'Vťk{iƬݣ.PzO0.6<BjMUY>&>_â3e!icRE=\IJ^Lζ\ r& G%^U eӟ6_% =ٷ㣞rJ5@fOP1įpmpsNϾ5v̎iN%^L>$Sm%uփ'x *cS8} -_Y;AT==lpfb#yCJMaW++JynWPɾcMSk{E\&Tw@MڈƔУC- _Z#ӉےA9bx2kȫB<&7Q7dQI27^8w  "Z82WÅ/#?){wӲi\iD ^OFKaM 74$C7 X/'!CoPPiZ.T?KDw@V3F[葢S^̝+tn t rvM hO[gٮZ rg}_a=bAZ*)V"#3-?-%WMDСѝ 7Orͣ]BA̱&u@$40r`d4U3 *?DI2T@ë,Zvwd/qwULkf _k(ݪh@Z{#fwP"fsOD[ā7Bda g=|7t%]VrNE22 G1yrG3Mu7JOz?5)繖ڽ@ORΒ F\$J@6cf|ʙLPa5:OKGƫmW n&s-Ĺ5>IιD +'D'Ƣv:6=I94@m$@n_MHl~D3۝V!+uku!ڪ]n'}IO:ո>nn#*`~y RGضA.2M*KhXC%.`^`<)9R?z}\4=DQ8ҷCu-Tֿ%w^zj\ Vl-PΒW5O=-~V*}&߀|u yeWѶۼsJ4 /91>Rޱ䬂A{hBMTW"ZLjte$M:\Z6 _5՟\wt]x VYDcwP($-!*~]++}ܸ, sb)=Í0#j*eIyE5 W%[-n"MԀ( {:l7A9zD#ٵ9C2SvJ lH, tr-l͊ ?aPk6ceP9[c xAY fs&'%J^Fx,` ^DP% ӞPgQդvMo;7|>pIoDQ3<&4.exLK]Yz+Ax)'>$@&lpO#Za3ab=̌ͤc8zo&9hPJt)㦔t*os8ex;Ii̼{Ȍ6SWzE␫OFMEƈ53O1(s% o ny5ۧpSb4嶙1G2rZBѩ̄@™cy!s.^GZrmZ/:T*e40k-({6θEǟg"Թ2`T熛K&1[AFǞ>媿P:>|ً)ElNVcv sX$lgq~؜Ac_vw:rm2*04VpE'Jb՜u*Tnkp gB_& iU#Ə^Q\HlJXfTHj;a ju %CR$)!wo(qXNoTLd/¸/;{}w_R H!k&dU~}dY3>o|g \_&:̀݋oq μ0yjsE,gP[SٸPy<,SP[ B-}GMV֧K3+ 4$ fKhX۾*ec A _ǧNTL%t6ٶ#ƤF+ղ 8jh19\b97|c-U_csݏh.olu=D5| AUS6IAj?48Lti\T!Q :A<~sw&|f mspi;ƾ(U7Zpt3K5xWְoJ'ߥTvQMAj.I?^clfW/;b 1k#ަ)QqyZ'O2kYA K EV?d0#jٖsƎC8c6)=d'"2]Ib-xK>Dag 2;ٻE&MWi*(&Wh8t ˥*"7*C,b2#NSb9d-GZ6% &aD{ ۽4Qd˙N¨`4`/Y=pqH8Fdζ@VxE?c.4?AGW{~Bd [:!|ijC~;L:ŽrE4ӧXx[.yFp~5m]ӂw;R*de} *AWLDc<м Gt0_ %[0j=#,0i;˿mJ,1diQcj{NR{ŜKaa@%Ë,[CV7:8[˛˚L1i᪱ZwSo+z&:/DNCѼk;-)"{Mfÿ'UOi|lv,:ztqwS:ZP]hUFB'p^p(^7a?4'UU|&_Xͻf'h1ϾBUʲ+ UQx VN4&&8aKB*\OО֛S$=.Qm,[rVgsOh첂fĔϫhj"4,X4m@ViSvJҦpyԊn̏v3M٦$ٻ䂌i%=+fksjx㺂K/{jJ~G#L's^sT~n21l֫y~٘ d3@)XfM+tن"\teQaZ{QwZ;GI g05 f9(Ηy쿇NJݔm/5~v@Tq؜U5 ğ%%uiOZjuŪ})-l4;~A  Ȳά({ )nOc_ c$|P(/`!0T*~Ts nX#:9g숚MeϬ|XM?@IQ.sT_Zsg{;Hw2+!ifQz R,,g8΃P5o|N6ƍ-YHd($e1z`V};J%Nm䭈& ӾfiWvd;cIxPo|ĠFQoo~׏9U^np0%јl:~~W=ƬOF9 AM>.nl%$B=yG&~PHS8QS*Xrh"DF~M0!q)WCZc2|IglXR) /9g.pl?*(`d%F$ lyR3/s{)|UH Ǽ13M{6 'vGRڞV_B'A3LO #V9PD^[A]jxUMwFx^B/R`qF 4!O'SyD#M.0ǯ R-C]yYMӱsW$Bb, ̷5fQWBrarnW94͔~PxuΛӰ qJ2hi gi>f0SE,M7e Im͟;7w*ˤ?\>XIANe;>?'g_9aUҁW$O9\R5:SN4:G ¹Ih&!M+͡B) }6pVr}0o=L>נCTN*RJGN$B[)ULo)\Л 3ԕNDŽY_~ σb<*~頤N9rdkXѕ<6)5#:kl̓?|ύ~[VAg /g#_]RvwjP O! d4ì<ձsYꇼ-OyMzQґG=g3xZ"}GK6,Ͳssή8J6Wn׽je("^namOψq)%G3^t>/k]kU$k> oTthmx)EܱiT &?vjM$.Z9,ݛt`Xt;PXk_/Mћf9pi޷Unj GrV6O@v[k֠eJX[볺_g^\/}K^gVqDyر9%6*NÞj yfu{ %߭Ay'1GH+=Yd& FXTC1&Ǡ ReohU͞ĠT@C>I, ~wP)/~1~Y~`8paqRV +NWBe.R6K^zL,Z%F93ۨg516n k?pI JM5^}fPǦ̊=>??GYa^0PR>Ҏ7Hٯ|Oh68?y)`W.f(<oNa7_AAlAjzR5P't:ܜ/먙2di[ ~" Ɔ:sLʦ)%rrC~5.3 ÷MCe&TtWon7X 0.z#Ĕi?g.AP,VG#m9[ UκМb>~1b*"k%Gٟ {A8uqِ$8B'߅NOU20 ?jK(XTyZKnEهE70ţ(}&8Y_A 23g}=4%ZJ N:|.VН ac?&{߼Ӽ`Nn VPO:Q_ޔEEBe&":kXJ8an`"r9Q;z8@F2FwqxjOنd{kB%s@:P=ߴ4s_bsej|Beaw%#_Y Qq>\GO#w8JM)N<0r߽lr }|%WṀ,VJ<3%]'?ƨ@؞AkvWB M(]Y'mӈ+އ̣ v7e>O27ЩEE8`TGKo ؀<⊄it`<^RY EHtIS%FW3GF Wk|-8M`{DE17G:4uTƳ%Xk_tx/9l2v4%rDIrߑNo .oQxO a@P="ݪj]CU~a;?T%@ɕ㝭)BhV=gh5a4[>)Hz]TqoM>C"Vvٽ*t^(3eff,NmIC=^:[}uRjZNW jv]n7wq'dPa̽@#ʾcC(l.2(Q\+`QƊׁ̘~`Sd&9#396YZ ׭e,F<͂$*ζ`+.{2 0峢u,uTϢ-0+O\mj|qߤCt'E/-(=fD dwY:#@bL"pީ"]͟h$l>z23]qGC-hZ8;D]ɬI <H=Z4VSG= 1̵$=,/SR;`@NN8?2DuʧկdU_v(a5 Tx!6*;:?44G= R2x6VQGYiA@H4GMqjz!]@Sܚw!7uNo\L^GM*{]pz }b=T] -k)hxwčfn'C,srVGğH'[.X3N7?<@!gCHąV F *OB<yYxP{#G]YZC%ai!?`2=P2E;?c[!Ќ beqpnĊty [<3܍Z"Jufm(/XU `6TٱL}.~3#( P;B1$ڐִaHxh{G~K5Y#D&^j?0>h^H8|<<4ZJBdրd4Ul%NkUh]΅EO bAGX$A;b @ zoR%sR4ЙZzQh= ֗ƷnNxcՔ}X}w,Љvm3|Nއ#VD^-J ҙ*Ŏm\S2Ce&#Jbk= B^GZ0R,Q.d86e$J&rɳ Ck2LUKȷRKzb̝4hq;8\U9xGNb3ͅBÔs۷X=E2`^o4ehA ٙnAy d(͒bN>p c&.N]## pzٹf/(GeDX!*ڭU9-!F;Dk:",6x:Ck&H>qu sD+֐׃éA6T)zЎ#rKW*%k$޷fpu'dps<c㭏Cۃn}CMjVdڧ/۟BUH>FٸƪU§ O\QGlB0&_ff朑beHecU:ކqSA;-%2I'ػ-$oSJ~a5"1r@DӒ[:9t[j6(dE;r+5cfz|7քOͿ%MצG~l (Q_xd^4Uɾc#P)];9۾#h^aΓqB;E;po0>ZI0ͣ)i;W9ZjScvddP&&|cg.cdI=\5/MY`ѡGs(\"eWk:s~,Q/a#bR:e3R<: *sDqTvȟ3aEV|Wu7d#|#ȑ_+[C1a&RPjUۚJϪzA[>|D y8S\=i&3co9&J҄pVLH'=/^ z<3Bh3#@vU18S|pm  DbjN,ӌWPDŽabi|MV?N';?QzaU? w?QpmB .ñJ43-zغqw[t3`c\clOŒ7&h(7?W9}  \(N1p͗C++cljj))>3P|iVV}=dfoU99tTdҗo>Na,ݽ~:1⧂-XLG&O^S砼SLEl3N|_ͪ.jS4ZP~Dس}lmJ1BXK(~_?4*n;EcpllU$H!m ?MI3龶zB pi3EuTnŬ^/)-@'kFLKKNA롵 #TgG<-T5- q础 -7YJm.dlϽy{)5@_L.Bؾ9<ȕ$YG.'>J 0mxrdF\@Md)Ƀko#զ Sq1-S:l; =mwsUXwܷeҀ;O:CE쮦?-e|& ,|r[sJC%UjaВ#ԈVx~U8Pf[굊1+1bj}"'ʯ8f\%^,7PRtWZ9[q|PW$a6Iwe C W/cEcQLʃ4|&%XOYM\\ y9 Fr⮘Ɨ8,7<`/m܍CG$R~@)>z+46J,Wߔuqu5J%k{H'➉VyZL (lY4|Cn}'Ł..hwM(XpU}IXlm͑a2YfƘcreqk N26N` U@ffµz;ia(^_6` Ji֡ #= ﻌp:Zo].qش۬s1M@1/lUŠj"t_Fu=zVu" =;Hb㵟`'lŷHs} eTZJ,p,q.W#P k#Ц~9x?yD]K\T6>3q˜ OHLv|H9Zrh*Gt@WĀ$q$HmB /- `hLQTP܇>$:q=HctAQ\(&ZP<^j~+O}7elUd.PJ"EuJ+Sո vQ MƱĽ9wI,}L8ϕ'[FaM-(DEVqs@cZJR)f<a(*DO-%|^ w7fʅ*֫ZbEC[KT>?N7z Hu;;2$8.}֋>:~̲,;' j*"hyP-f?E@;TV࢒M7>>sG1uJje?APTi  a5u$Fܷ2lit(&)S[ؔiGTHرzxI<=dj~Hm4FwV㰥#Κ̕w54%NӼB|JQ_Q240D脣9vXcb֗yp__IENbx[=0j 8b!G6N?gHs_+Qq_a>ez7ڦ*dzb IOd |jM2-YPV9pRjJ= j,X/=9n.9[ :o-i$$GFSV+9SŐ"z ֯<6լ9"[[dBLЧ9_ Pq oCCL\ĺ)PbJfΥ&iTnRiOx #oRT0j][sxIQ.C@#Y1 Lk[N6cI}{|yלsk`Maw\)B-dxzO[ kiRFg#vO\,kdžsʅ3]fpqRQ|+@Zk#=gw]7-lMAC[y~n#”*6fhَbdC4o7 vܩ9~u&ctHr5pp;";H2u=|m=꘾r"5!2tS"S`(oy{Ni+E4/2a #}7XC#6_ s g<q;k/&Ih ^qU뺷sZxPRIqDՙ@}Q2ZҲ1;S w6fS^ ;}R oPe"@DdnZ$OM#4*9pb6Q>H)=AAhXkeM 9wH.1#TcqjC:e  Kv6+/X&[Ltrأq҃1csu#EO`91(GhKQZf7 Ƃ\P>)Y)tj FNPkLDuY .cX2spM &%bA<"`FXg%ߺZY8HFJB5yQ;?B)`1тü\; LKKV,Oџ}͘{}۬ kjr1/P~{?Q Hgᓤ.ggErSm^FQj#MGw NljjCMIe*caLxv&(+֩{n,>󗶁`>iŢvAQ3~I61=D5ajCyw76=}@] 2/Mj9='M!"TÀozl55j+ElZWʪ >ivb;hϚԮ!*$B'%իOGo1B0 ߟglH1K!A} : [*^fXnf5͛ F๱I^ |`wjt% eGd2lxdDP_8m1>84ԫ|b)Eʬkp#8Qn OVoVE){Doդ3 &׭xNǻ84xZIVM(-2D |/Z>qTo‑ LsRy߼n-n[oks^AiR.-C6d *C釀8E-hoL h[[lzg 'b]֦mfFrB],e1?n"v, Y |Vr?tZ:k,rY}D:?fImbm^l+bL=۳P>3uH66yS )1/nYϲXn.8'XȿqmW7+L"UYYҘ@p\'c@7i zept9d+:5b N#ORЗO8+ VA6x91y+rnykd?23cE8fP#Ȯf_mQ-߈r%\%(j?>): DZY0♡Td-PHZs/1TŷKv> (;sv= X=GyG:p1X҃!e]!W *20ɥ`.+hV޶kJp[ YS@y 0/@)zVpKc h]dJo%U m,"5WPrm t>%Ŧjb㍐®YYBR/u;IL e4x9[5I6vLԇoRsC5k *\(W(!=Ky,"gTc?=otlض:d<3@\6`?O Yv^}xO߯7܍k5 jv=˒fLa4c7߯r2K!><Ůaw(c# 1~`dn/R(Oj tIS*K &2}G1jaTf01.`,r8E#pn~Qan}gk>mdmo7YZaOt %Zzh`wS}R\V_} h"r/amwZLv I`C'F6Gj;.SL*?F=Ă}PjFi`N_/BF?t1yQcGnk_iku:ӈhuxlߚfۭY0^DS9TnVش8P7V4;mE)^H!D]fqб<,l2>fl2I3u\qŲ3d_ǬMu(W2IU;ϩgʘl#imSk2pPP,&M]qM{/kfZX[$`c C 2 QȚwbM@:CE k`\8 MEpkP-,4/;׎6 kKW fkݤxEuE+<:c/ u$B3c?¬3V 3`u{cWmz+X-2M. ZDoFͫEu8b(5,pQ mmob122o^bCfPkY]ЗxdKk^[1NI*0v`7ԳJuiٶ&nm?3AOֶB} :Unhi͍gXlO(+k$L mjO C #/DXwШRgLw8ރ\vY 'ᣯ? I qNڮ|Ă5UOG6nl˧Xo߿mh1v|l->v2 BgMp M+6O" 7] }7:\vN=*؊` Ԕ qzOOXj0àE9^2zjtS!-?ga)da]-&OX&vq~P[):41uEI=-4UY`h VO{i1<I/햇pTDJ4.J!8/9z*V>YXE[.8ĽtV&U*YU"D}x-0_QqNZP'1˘1P V!+v):nl4z:I25%uŚMD0bx!j#Bo`&cu~N2XELuc/`v=_A\p=%1(.e^uPvr'욅ZP'"j_ܜ4H7z& V98‰ a+/@ +7 u&j=$_u/z6Z >i_Բ.|+bϐ.y8MzQ|V ]Ci~[,z^p0'o1'3Vlv{gŅ0nLq,2؀*K ]9(B?|2v -qF:4[P6 JrL B0Мwp0 xwAx[}g~MT𘻰I<1b0-܉45em$r;cR6r?U!^,_-tv1>`j\bKf+Ի{<7\//Y)rᎴhOP8i) jo3 p4"ٞw.iܿaP 󖤼WdVdM@+jc;\aSc!s?h;zαW$~ڜF,gdyP9:=PyRFg W+HR @U(ҷ ޓᚉ@+*n d%WxZfL!w _~ wQkEZhוֹnȎAݲ{Z~}= [Rp=VT"[p?@F)п%$Ș@~= -[١jKV][r& 6&Ɩ՚-#wv ĭ(b#SSN7 8uA(JG3X8(n/l=p=I8[ңw4h'"]lb=٭kfo%MQ0$";"XؑYb?LU}>_{S2[Ywӟ~/̿JG[M/vg\>*T07XS3+;0}=?}CܯTYB?^)PݤcoJL1"da-.IBuس|qH4FI)}QPQ]ʗsՎ'~$lFPJGVv" Do[ϰZ0 VA0PjGQFM蝵gNH+f>mu͢kv-}t&4 XF|lX* 'nVOlz7mmQE '2>'Q4DMt:Z^m5RN6g53jA9tFâQ|#{-O(iǤCx"M TÊ N~:w2c9)禥Hum}9R# ־=LNw<ưﴉ,OÇhYiF(#j5#wɪ˪ 6QyuC_ހ4tAk;²8Zq8Ⅽo|P ΖF){q߳bR滋.CJ11KM/` QgPq܂ P$tŨ8 k EA;8Uݶvye.i(sG@M86Dyз[r.T'W2iMu `]O(Z9lzKֲ[Ap !01ِR CM*x"GDڪҩ4 FX^Q+ڰKt WG4pK [=ERህMel?/В)֪2YC=`p櫂&q-Y8Ngp[ףX៽QqӚIm_@_ gYxufL`~x71{i& vy=Ϊ(@hUUQ٢%9ZcKjl*f7.Ti9\A] ۔ts9E)&L %Ѽ9T!UYb1D6,3.d,'yL Ҵ?J-U"|(SfEa59L `{~XAX@97a|*2L[Ev+b٠}^z@ųCT^ZFq`HQ zO_M>m4`6ZxKo)x)]vf"^~Z >`l1/PdU{OtVjvs\n2LqrM;Iv0#~c`@>_T$MjXv ]~ELķ3NoQQGɖBK>ٝZ| ZɰߓJ 9#VVl?mr|r[{Ubpqp 2)sw1[ŀ) xEqijGs԰_K Z]oʛa$`!cNEKE`{+ jd3yv]BTwXlK`gqCEFxȬ;,P^r(h8גB8D6Vw)_-`o8Ֆ: =Q7vWE# wB-=gAbSÌo K4 j!xHx@((Fqa}<=~W"4GT3Dt4+y3JTB%~D%+t0e.j+4raz.dk ńۨT{8`wwLk[4 o)bt͊ & RXԖiT[qe:_2;= &sGW:*Q|,Xls F"D[w+SxSI&2M"CԢl0n-.jܦI xa8{֦_Pgyzm)XAL|!z,C$ 0C =ݦYVy{`ppޣyl>lďA148ߕ@I] qzJܞ@s4yFAC* ul:@9J4qJ]˟sOE3_HRpl 1=7 ~BVI G4c)&Iޗ[yZ3/_n#LOpclhQcVl??D+Z%-G$l:eF6e,L82CF9{\ViᩒIԿw>S}sc+iЁg vn32F}K2-4۳DIQlÇ?(Fノ M+}䣒'ZHGRqRP;|l՘ h˫FyI|&sܙ߅{T:=17<.Fa=ɜKN`=?Mɥ_䴙 .=}\`:y?) p\~j·Q?}$z]KVvt5TB NLbWEJhl` ˆ]a-5drI\[ K9 wՑk3e[,Tr${%&u߶nqj_P,3AqURVW"j8qMN3P3!:_%H x+i'[̲|HˋuJWώVKыj'-g.ɡQFK꺚 AuxGr])6As\Hab Zzx# 6h0bI!gMbnW;iԘx T9r$qubBՁ&#l੐;xQVL9!L A ϡXӬ0"ZҞfHD羜'.A$%mitH*J[%N u9}˾=+J1+8dbIj%),?X= Q@hV=Zh-,tTn"7J.!+;TKo!"x؏$2UHxe e(>෫Lt ǛܮQ8e}Ҡ:wwPN#[+A>6OU;x(*2%'ژ $h9ڸYWa ]4j^ <5P6~qO 2_kAPsS}>\AbפdrD0t~_Cr`b>/~ZO&a+ek=oOŸ'b՛ ለKBY6vecFlިd$)L+^ܣ($&PA,hPF:/GC:vP\I1];RI/duLtW\ DbjǽtWԋm^NA:nFr7zX7/zA])3`FmJb"OhW)GX|ݏPOXFM6Ƒ\H␔{k0/o++M~q (r[( ų 00[B8!98X $2PCYC5P8e{vDK6a:Y٨XG^-'ҹ2ޚ!O 7<ժ}m 7Ǐڝ:xOڱ$[,=OZyT'=-&lV u4#ROD@Rg/ ׫ݕ)~8ۜL*lSI YBm+~"lΰvNv79]VAͰl7{ y1W:T*6e>)YXW-_5zٓW*>N{;`+4[7ko"=ce};.8waPQµ85oD${sQW4|KG]~ao y v35ݜ8/2B!a\ #뒳3e/u͢P7@)\][ P\u}As%޿%`3;b.'7~^8϶ј*Ԁ,V|،܉s3{F+R1;c Egjy^\-B#GeuRȘD! o)W/@zQՅ:E{,`S1 ft`>`bvkQ.rےlߪ>о(ЍDhXhSڎ%2hj+*DiVvM E;e ,7nTnY-g;T4d%U% LF[׵-@~o@&V]Y)sWzη+}J-nJ{\v9XȦ4`N\Z`K+j 0V!1[+1YҨC#rQR7ѻ5B9WP2C亄[F(%"}cċ;oȃZ:qX L+)\4zo{j6w*#PBIt2n։fR@KM) l'%?01&%rvbd*tP9Mu퍗ĘԷeDX3McR5m˔l8=5jˍzn>O 7|P.+TM3'z Lϭ֚tW*FxI^{<@Ƭ<+F3X2BV \ o4N#{wI&bbG%M6⣨=@hJ? cT]wUhf/ܟj"S+ K0I3A nֹ N>-kM̎^%dr5O|0hmsOyZ YLZWixf](1WKP3f$r|4x+(=VY^Wlv`=i')wZ\PIB6r:;@G,&2`_ĖH u\y<8 ?DCfV=Jdh&1 "0rQF (ҷ&Fo'7Y:Bwm5^s C)!$YRn䶘ͮ;8d/Rx]7V1Gt bK3Ir*ܽksK K :f,E3cPnд`sVW$ g]G{4x݁kv^U N鯼qIg@a~ h 5 lc?]Rp]$ ❹!7L-%:Y֝Z&M9@' ie`i-_o\iu_d?6$Oxs?]Y? ^G6(ނaeפe~@5R+&U{y ~Xe,^diSWrgTT t!s4mUbE/~ĩRNT5Cj7y_Ҫ'u?-OD~OŌޮ,7]0]ٽ>\czQNis%[<<%Rul-27BVn}֪4}\I0q=Jlk99TKktPDw\zDNʾ߾Ȧۋk9ypVNq&/ˑ0ɇ$M"tth+["Dt֖h1YՐV4XP@ەSN tihڑ@4=a#bmo[W~Z(C)Lugr/j$xRU0S EJi U粒eYe1`z |pÑ-ݮ=j8|@ 슐tlWg,~u\= NIY2+bHHg|xm8sPës5^='pr3`1flјDyJ8oZϤB8\4Jv FQ?y}Aax0b-}nZbZq @JTsVдqVg@H|HB@hXHFBB=1C&i o;~=CdxFW.V ?|K,:>C{BL$_`3VȺHۃƌY #\7ĞL0zDQ"ciMA E1GSVn1ˏ.=\CrךAw^Q’8=v=.8TTXs6(șF}3uE vwC\/FaspwEVVx$YK)}X2f-CNz@jXpDnj¦3,Co+\Qn%l0.P7`9)}pFFtn."j/dH럅?rQ`of.թ^%bt?NRݦ@qP@m4``Muc|º]GY-JTT*Ȏz' ㌋'3t5>{-O::f9u0T!_x/GOk `Mydc&E̎\ƼnQ<8[. O_( x1ƥ,iz7ImXy6#ty+8{DvEM{aNP3:d.e J2r +3.&?ι!rI[u`-ToLcdLj}[ְ4د V]*Z2uwh^Mz[U=FO3랦ݞJwN}o]aq&<94|1هݸc"U;VόmÄJ N1uk(QR#?:B^ʙ5¥GӈrNe1Ęqs3xnz:lzXkWKDIŌp(;'oLj~g[sNBŔGb]nyITBbV*N!Xa Ylb~wo|fp<ҎF]9{+ #ӧyS[|DU{|6 sdHu g/k;i))|I^ GqztW"fl2vBP.ЂbMढ़_kC)4y_ kGSmo+v M$5婫w$mRѽuDU\]j׫j5PV#]f?>)7锉V|f?bOl6FD3l04\h`-5Ưn"^R3^Ng LvU)7=J[t^xg+kjhvD[Έ2_)02a)˂X4;[;#,~5k :%(8~L: bܱ_Nj}τ=Jts o9-(:F`59p hqXQ~6pGBWi`p[s{ ~i2659|յveO]Ͻv*4tN~od#!1KGmG bo/#[pSy|qRcpp0Ilol*?9,m5A%.IZ]"`5hz oXO>_/AN4e)!3w?Ej.&AQMs4:X˅rQa]c R}M2QUO%ngW|M]GK: Zq aMY$b7#Po:c9" eX܃b8DT(/#a AbLtYUV d%>xGPrfMeE}5Cr(Dȱk;_#W!~N ^?D;?>ɉJ.. ,ns+6Hd} oGDp /D|l,Sɑ%2s;G/XSsE](Yr"?&2Tcp&#1r՘t󒗣._$n1Wq5;%,="8i2[=T]srdJ\w14YsX\ᜦG)g@WF ςT>$8Dvn^).@5Ϝ{V׸ȾVD[W| Kק[& !ш.qs~1eS@~)({![)PT-JÜvjGM`WҢ^b+ &]/w۹p?a;~~mQ󙗃oVZH/͝o/OSpc H~5yCw^Bsgs E_VeŬ >cjbi=5yjjTQfA p``!RM %]>-"fg\1Equ øFC5 DQawAמ~lwl ̡uh!,,ⶆ 37v<ۼ/s"D+Wxa #0 IJNl!ooh6G2ψ-tfyF[mx[tj{۔\/]R<*rq(X?a.tY/esONma?~+~rH= *qK!VJ pT6IYjs\? hWN&|B<'z&}MGQ_ DflRрUU 1/kK+V=n3Ȁ8w#0rZD ~}PZZ˽V̋7bLM0=^ؤ H,-] Kcu#CCAO^ߧh$BB RZIhE45f*U|Tqͯ`K:rUcѡŵk'vw ٍhc?VCb,s\$q|3s,d8Dk/o/g@e@xi]O )ܷX>>uš\%oX޹ h: e@߹zev /Q#j[a#v GIV>gDFnPzv+KsrT?}=ؼ΢J_D x8pIY 4v ??J# N561 P|=צ8%e$"/d6x{NKnѿ+<I?"K+P0iw~M6Y}9OB@d89m(W5+zć}nٕg#/ˡkY3&Oc IEtEϖs%<?k#s`$O(脐 B^k=oCx L9{zTG =ew)&׵=|a⩭Dp H}@Xw3xh)`$p)%y;\1Q)}`Wq\85%.3"ƟպNue?}1Xe( T@!}ы)U[fE(̸C p O3IΓL]઺$Mc3J[*>k:(c$ tĤY':p)njmޙU25bbCvXŘč 6%1IDB[#u#޺5P QA,u͖J ! -_;aaxD&z8Mg5fnWԖ[qߘT+H jZMBi%pTX3 ,+p:⧹JOzyU|"H" mc﨎qYJi(ck.O٪ZoJRR\=Whrt@i7N6UGn}TkT,.gcֆTI E;ʿ9z3v}.&5#!r磆GO5ߺmm,;y@)oM$V?Kr;Fg P&B)gC8@~>N +|h8 !П@(K拚 04> (UZr4?fqtNE%Fm ]@{_ b[?R tq0 : AXzV?j<~r*rɮ̐'/e^&MA1ےSԌXL'I^T3yT:1w4>/Pyՠ~ʏU{(k +ǝ(OA8h* Ha#?b="JzlZU,Q 3^ 8i/tᨓ1@Yni!}iZ?Z7FNq$6Y9b/"m uR)ZܡsIȄbA! e5Z/Zft! K+jˋDgsJn,&Fl>*c.kt%noޯ̷Vߩ/S*DO)Rl&&/A " u]JF\`w,Ngnaݳ`ҁ 2WoXG`-9bRU8jO$'q@' ˓TRdaQJ7ˁ#,x[exK3o*Td%柌mDeH C0:+e_`LeſcZ/ȩ%NJro[T(`$W6Bŵ8* vyjZ~ C$(FК?8Iq$i1aѫKyW&}\oB9R]?B9R}"N47F?C:XBm(]+=pZL, o2*]Jf$Osѱ[XEF6=ڰʶznw,`+{~M xx%E*i E{ ! a0h^8ka:JwʣvxJN]^9>!۾|xRgFB4N:+ѿv@HWQiQh# }rQȮ `To8NH%d!WB, be`/'3 5*?#')Hj4׆an7>zVv"=5{  3-Y!* }ϺUN$`җ_̏&7PQ6څChkq?;@E'gOZS|Ie} 9z|y 縠9 nATb+r)$MYY{|tKf e`5txɾ Z^^$7H3 ɹfdn1ʏNLyWd,C2gC>R?@NjKge ,>X]xǢ鷴uǚҁ5g5[p9+{Ud%_10<e9S?6x8E(KQtFuA d:XNFrk NKDu]|\7Uc N|ѣwX84!,Z Aق4JJM&>7sE!襧b@sKj3TZ :Ғ&l痵KM(I`r GUܠ>Ltdžܐտ4 J33N^y}Rsg[ Om%oevaѥByqOYeavL?9-!nB~ g aE"1;6iQ!0Td$;e9V,#96dN Ѕfj4HX<8nWL,@iՍPN vusEnj&+mj0!{zטeAv($ʹErc)a} Sy;+z"iς(=5 F[g0Yx.gT˚][3r] )ϛuBgV| œLs996:o-[*!Y#uhnH:1Ղs)*ڽ/I=DIMČ@XktF8آ#`jP ̤ؗf= SdB1$ ϲ(dwLchлA=&!}487Rgk1)fT.9Z@:#(K,|w +%FdbJ_tRSog|G&+BGݨ#&dFOiZ;D3D5uѵXz'a|z%|5=?0h ,j-__vK 'QP|bc\!CYˠIG*&_@ P%Txw6Fy_Oչc} #t40RwG&Z&i71=̢<`g}E2 bdD/-E_p3&Ⱦj;hݩ48$(p[AND : ]q#Cc>FxXZy{C۝j{ݬRM>D&c2!wPsG1`/6Eژ[dE!x--+`sKSǍckaOj+$q>/Re3廉2b u̇}%ܙ[K4m`a1ɚY/nD}њ?'BkPmMupǏ3Y MijЖ6}D KE{>?䌛M%C{WEo!pB=(ܪϙN)#r+ ,3r:t\o2~WΥygy2MT O9c0#ʵ,{%=q͒?i1C:Es|8Г" _r *=;Cle#XH_W/k@vy>)3~^8(K+y΢T==`l|[b+^Ti"\'\"_W)c?VT1sX\ʟY7Խ\_Q͊NLһQEO2i9,vV\zaae~y vy'}A]<M5'BmȦ[o#0e])E,7(m,*L,I6Y5?l-'8W-pj&n#lľfcFS%9Bl5*1hU[WTtQ,*;;љ+66uh*Ζ2ݴqWapM3w4u>5_QxPk,O"9ހRCcǛw~v<{Lh1<@t5Ir7 5_w0UMXTpY 5> b6L|Krk:5!;jT$M&$.}vM@D#B/vϸnD]/~7 eyMwY,c6)_GHR#,}'r!]RM"G6Q}ݞڍg0ݐSQ^H|^wr J^?wbt j*kYT) ?\UNF ɍ' )2]쭎[%kIjp/fuo)YO }YG,JWr9+S% \={[D5Ov߽I]pE;Q доqJ_TunovaMhj0s@zB RR ച?j{}j; c[UFr]N>͢mizF&r8k~ 381婋/s 0ĦTp̑E[(r ͪkdEBЪ%{XW秜QbXqm)oaO?@ŀ+)'yH '69Sx*vP1yc|_OH2,D&%1ϾUR>['Ihh=:_]⤰Zx`Z8KyJ;A yxP>O~bIm_5wT, xԆ̇aҼg6>5U7_ڲ@I׼$AfX*e/9xG:ԝ+ͮA;+𽏏@!yrv!> E?uPQZLQݣ36`nN =uRxv޺j9990{*߹\ -$`i|Zsn  4S"k^|>LټMBBI ~»:قr<9 I[`nRW(idusez(vA?CLlq\;jªyrEVpN(JO*B% 1Fn/m!L-W\W&M&zL[Nϻ` j&V{C{\d􆇨7 %r"b퓨it UtHfS4ڠ ^YbGUycg"sNAD]YLEfT{ZunU -nI0 wA׋*.|<Nި4'275ƚ!|f릈w.B$k6oN|5ZO{4_2OnlfU!wp?=zE(.:we?g1Q_/M9^Doä@x`= xApEY9rP^WKnOGb.y"o-\꽺/u쩆[V)&KYC+{u@b:'w:L14Ra*@o|UrT7VύԗisZ]r]3l@CɋLipV:‰P[R+~tm = ][v0LS\:Ih:t~Q)i ?&<lOyq*5} 0[kYttAJL'8xu# 69 wKO= 81p|߆uB".WIVÏ#bUA-xOt7xH-4EXY/;Ȃ ƍ) YRR:|'G>x3dY~oX҈%V{umYKѰle222VڸIij Adڵ爸Faǽ{=7K/8ց?F%ʀSXL~s iڗ*d>ɧ\6X{krʡ^iզkq{LAiAϼGy5بT>K :[U|* tVw €[ _3AX>S kNkm,\B*4d" i}u7ѫKI$Q͡b,!WZ"J:?M;:B)wA0@t&Q0Zg E@8uƆ-Ł^/SZS4Xa? ÐrTcp=% H=Ad[csk0l$*ﰀ+W,Lnya&h* ԒQFpY3l4P9 U2CJ͟3,VcAh>|=PAE)3k|Ie}[(A# rzL e}(#Q(Ph?D!M)ޔU>4EV T`Ͷi䪧2!2xijWޖYqC^ &7f"$J 8$ zXMiلͲ JeeR>ؘg8$7<.\MQd%י7HHk8Q0\M2]Keo;znY].e}['L|obψW}k?hb0\E3Z.& tX˛GyB T ۉtRV MyQk S[q"-}W6}o { yĢkT7>1qnD,#ثBhVwqX+̢$~z(Nh9~r8XjGmBӑba- 0ZkgieYNڽK탕Pّk6&wjV0B%e#('wX[-rγ2I9Ϥo&+BVȷX;d5J+9*yvk3mT*Y!?-Uϯ 3Pj|t*QǐmJ2vlªskd-c^weeE"\IcX01f[mTq}Vzdžڭ^24TsC@VŕGSC:ltc_׿ '(v8=MdtԴAe2d.zΉkcv¿# ct +WD3yM(pKjB'd-ۧaJp*"ِ=ǹTykag[M"gz>{P?17|:N1%_ @VJ'>B*@\_ ܕ>t#(4@^uȔ ZòF-}zTpֻ3b=#ĖO S!jHN|2G-OJ>3):"D.? W<+©gX~>n⭆K }n=ΣyN~+`Q٭,+Ʋ }?d `uLʊh,2#^/MA):׶@ce0 X'T`(+sxCDp (#hŌŮBh0M<й%;3ky"28Ygp؃Ռ6,f^ m14z |9p9U/N9Tl_lU,x#[=ct8?4%|))Ks p#Z OϺŠJ9%nTrA/T3'*0_Xы+<0HQ:5?rv𢫃dг}x!&&؍_}ygqM-Tzo0Qn638;M([ȋf78V}7 [5*M.aV9ўOz5E14qcjD|L v&de <ӀG;W siѿֶoZxh}Y'Kl~qZ/Q20E&s>jE.,'ثw뇆jW}N8P LaՁt[\vm5H)Ij́|^I.]$Bg*ՋȋmT<7wnLV6(Ul>]fXk*.~:VlwYEwN~I(V$ rD(}*'Q(f9lY^\nS!Nn]pgQbƪ\˘E$uCP^ 0XKYk%HS}au>pP[GN3500Dxp*(tC5]3V* '$;(@!Jz8 zgj52ZJz-ov~XPMurd+Zqnp":SfS" nQZ휹)GcBJ& 52(4@>su~+#_78cTS6q%.zQޓ Xz9Ӵr ^0WZӳ&HudKyCL' BuSǹ0s` !y}Ȍ`fgoɺ\2 &ʉR56ΟAdTaq|G#ǐhÚ{njvز3̢6ĪJ/l31:>4VvH W8Qm?;#m]^T$kiyjbO(_|(Irݫ*F`m(X|T|ɱ3GAwC9"w0U~JZW lztr2JY?P 1H:9c~T(We;wF ,_,eM %k,yM`sv[bUee~ ͡kwaAipa &z~|#\P 2v6{o+Zfјi>ܫYN0HY_w( Sfꡋc̺k{%&f <۸RNt(!GLO&Sb^@|iNLRS6LЙ~ZZ5'SOb=ߥŶJ&Ѷ6+:hAyt~׻Kəf2nG1TOO*>k2&m+Oi; %|$ opC=y,])ʙ[&mYԢQvS'1zq!SDF{'#HFD36,.E<7%dj3,]Đבt{Qȃ D)ZolZѫTաHNi>w PNI*! ~,HA;Q_9ÏɁg 6)ս{yiIC [F<| ƴBh1bXU+BR# I S\1N-km3im윪Gc9 BVaRQd|ptSBAufH{v3<G+-!NdxꑫsE]8EV0Ů6Qm_ꈇ\ŕ2{<&ZT&tI`&t ۦZa/?p o&ЊMk3ԙ^G>cQ#;ܤy`qЩ=P׳τ}>rQ h,5[{Lv~RfH^o9dNw+W_lbC:XˆcGA37;1h>k 6H 3Ќ໦ߝb /?5jbIci9uAˈD*y)X""$!yu?$7=XcD.s d+Y [|R-%Q,5z/Ȟ!NK_6^6Ջ6lxtߝh[)i`U'k\#U1\+|i֤I@'Ai^,%IpXB@fVu9%=I}#4N,D`E2is%TW^0 dw#/2hٗV#qOF]aHiMvpNi@>.UgCVJl0BC*.l7nAgv,ʴQvzVprb7m6vc2uKQ\-cfp&s3<I2-V6n[{52 w ڪq'T>X"_P#RYX#-{\46l%кD⿂6! xӵvo~_ljrHDiMD`:Sin5:E焊K*K$\gř{UFzcۊw-yzHDj5F^r:N)+>u:j[[.s *XҸvDRX[[ 0B'qսTcganYe1,`ROW3>(UPvl %ŷso+㳐 ',y1UnE {F'ugd,U=LL<  L^?Lִ+'|։`=sodζ~4'O|W msrl[P" Њ>!:L93롮{zj|1(iBl%sE}'z$BZFLTt%p`^:b$lqGPGDޢR@eQzʷ\)1[T!k˼Ӑ;Ƨ(FGu9[X=Ѧed4P"O*Yo{P?WehO3ԻF`:[cm~V0EKafN&#;ׁBgG#.̫}ZQ5JY? Pi/ y4k|bA9gEn{%'N*O1Fڈ_ܦ 2fTujǭ NwšGjd@06Pۋ"Y :_Ş՛B \wS#*0 #W>:^O\ʼb^*7^6Uf8]ᐼjשv(3@9#;Õ]kƀRǑ-=Qu7x̵MZuܑ_>Fj+-)辪;s 'r擕S56yGs\*l쮷&g鏔qj c6bIiPa\.s[Hό|[VƼ&g'IiM4_О::9"aKU@ Ѹ~=Άq,= HJ&W;oH Hr䵌GN߯tyH5io}v v5;<#;#ȸп )oHdlFawBr =łA_b_!I<3j E`?NE'k ͍l XՄOˢ49 خm\a\"PO$ԚZ˿xczZ_b}OJXׇ ƢT@MVa[PA2RHjsੱ+K(P)Ћj1/! 2eT^Vg>$Z=tF,1aSC0>^}fһD62Ӫ,&#\8"ͷDܔC$҉yHkG?'`%oK7BҤQ/(? ~zJ.1GnEc8s7|Q3P^4cI:Aӂ0+xs[zEx0}<CTnáXU #ۙw22VHgЀdיOpfkfjYEv|#i`ՋhBLcW,n$di,żqE^6/g=WkkKQs[5Cvߌpt$7hWVd6HXY;}=iL)A+9x8II|3fsׅ̬M_Jˎ/=, I$zuDecʩƂGB \0 7ldTX/}J{O"Wu%YR)Q "'mvO:zlhGΛӵԔ]mrbp.K᚜$-岙%^̭ݐhE =t;^rA1cer.Cyy;yލ"^cb^ˊ ; /)hHۤb4C)o)QQHe -ǘ[)aG(| . YՙQ+ E" /XFq,Я+˜5Q_CYw:l颚Tڍ?`1i"Ay_P?wQD1ܐ.$ihe ҅µc}C~D'{bVoMv܃Xf.0 ɶwS`+%uتd:~Ehu~2vOQuH3|=/c$_m#{9^mw'_WoZ$E7I<ҵ@yc㷇; M,cQ3{UXuC|ܿ(I+ܷQ?*0xJ~ү NZ}?aA1ڐޭ:f2_}K.vh87k~ @#mQND3[3Z#ߑ P}skʌ+5r]֯߳(Z6'1бS·VrCa]ոT;pM#K*k.wS4jVg)7qb%m. Z"Wi[5)(l~|lRdҤJE u*ꩅbj*7-}dI t%![j)޺B8^-&v)ci 0:dB4#[}bk0 Z{WFn>l•AqᵢCGtyMɎ-f`S,૬_g& 6Р v {)[nՋ,y4?#`n+-~Q>2$ԖXp` }ȰlÚ3'-4:`zNY`2 AlZᜠHM% ?-/ا$F1ijM"2I2FFwQs^ Qrd\<`U>#Dj.r&;I^Nfz ǜN-wLn )B{vbOt֞.XwYs6k n5x!jЎs̙6&hF,K3IA{ BO\hG:+auY1e#T]T#kdڣj|4S`Zk:J_%_D'_?p9=[go=}U^9VZ2R(fľ53H>*;YnחeoC'ZK;^`%:˔)wQSGvϪo񾦩n3Nec{(dy!t1OvX5Z@ hu򃦹F2\JA,58n.*:wSkH0J-:UG/ж\Q>X`Kx*/A T9|1(+ǏZŒ /żh{bg+a‘HsIJLlZbdKU[FLTOkFB%i1 F 7JdFe.dTIvq⓰%>ᙻPuvQVn{qL,O(.BN⊟픵:A].E9aTvzŰ3,zA]Sy.Q|Aw4èLqfa.Mޤ2 ųPnF@ p'QcED}]Dq!c9{(B*5YW"hr3+*%KW!UdG"w/ ˡ$WmqY"j-&`i-1Er$\Xbz$.VVe>swk\S,QGq7@]&%کx+ɒEFH݄} [/|8;Xu'ilgŸzG8,}0ОQOgʁȒ7vFM KY!7R!7Ҋb9}ߊ)Ʉ cI 1?}0gIz`kmq $5NOPWOfpQ3>@_VJj6Ip]sF({37a!'*5+EkIq-njj6>^~ m+A9VVX{ɿ|zr`&voPZ&n5>},.SܾfD|ݚkI `ϷtGћԸ,*Vۻֱ0SH" 76{ȱ`x}#qm&E_ɼ'6y9/2 ` "ySɺPWI|W<՚o Q)whEeױ>5'\) d>B*bXĎg=c : ;@#J{ bD4!xٵ)2ɂfm nA(}~>$c_l{}SʐR#m@ ,y̔@uGU Xu7$6GWmԓ(LolS-e4%յKhknW+c5WĀ:[Q# L(20 ӷD|a:lh;i;ie $2Y% 5WĞbA&o:|h\LG4F":d3o#bbp$5,W%TViFt&4^?7F8C1 ={Tt\ZϾ{du  &8i,O[YQ46.WLSjk˝ 5:AjE`Zwoj_k<fqJg+)Ǵ1%2Ҏ =/p)D(1fn d^͛k< D`F0{a>bm_oInђdLS 6s*Uɭ4CE]lWAY򛉨QfF gArFt" >ɢ5وk_%g *? F:`NF+!9aS,Xvӛ}H\/=( D}KބgF k${7Rj#z #]d`~DCSHF,P]@QϪH|?()/c0dH)Je9$ hRB8HIrYl7i \i[!zRJ^:ӟQZgF'8 S`թ~KsV#Tjy5O^LC5wr,klWǺ#fRh$~.ja$S숹[@ tw/?D36+~Ff9_:ĕND~iBۧ@W=Y|Mw~ @;ibKoǜ6n4~Y5Ô#lhJR$u>;#5_zY-M,}#~T+?E7`Z~pڀ]%uV ш~og$CίTB"^\`o6sҕD[a=rM,R6%= {iDzLCrF _4,q c&upP׏]6B뭛s@! Q@nӒͫ!2 O=IMa΋#G1T嬯{re Ac^sֺO:F)Z*}JK.[pID_E Qio}CU:[Tsz9X.`*nێ8=;3n.|supˡ^,y;O-f.i[JKAWe:("-i-鎆hQw{+d6͆a3`nN(x?t}D]S BN!\N?yKMӊ2Y;=<|9'6hQzOUX\k>wNa% d$w8B[-$,h?Iw4\6D,~'y[sEZ+^\kN>B*IaWJ3ik|b7.Mab32ttK2Ǯ9sP%X!-{{J; ݙ!be٩fs K~ hOm6޼ei'I!oDJ-Rb\Ҕ܁z+M#72VP1L]Ŗ/h{Y;x}M&d+塹BI)9܍;x<2}r 1nZOwYxy 8:6C]ဥѩQy_w&a|k:N6iJvT.,^\$x9G)F $=TùKYr٤3zA 2zkd&{ɟbiEF3+%u~AYzP{ӗ`ǭ)1U#񵾘dC+jJDAeNoyG &%8TO@~+4tՖQh?=<"7 l]y]Ȯ}VuO%Bh#KTq +c'd ?J m ߺX, Y $DϏ`Hs.[%d?ڏĕpl3i-jbz!ofox-G5rOr>j';WRsYNSw*[nKo Bj8F W$6M>5ACJ?FEйrNEF+#cw6>w" ƽ\-tt%% CPx2fP e1=\0/k -@H,Pr-Nq!E4l*Sb([XW`x̟^4qAo_6%w"ނW0nwvnw^MBQ_UJZ%sI@7I$@`HXҐ,X@jOc^1X>pĔ.wAPm(:xo$ݮcISHhXoE"44  ܙP} pl]֐I&4,v^o5= u H6iiVv$,];J1t<¡}x'HkW9HD2}KV xn8 OW2֮/ȟ8jr'/[8/FPCΈrܲl]Cz^ M]0Q~~_7tH}ey{>$B-X5Xlf "qccEr=HENxHэYz[S7V w,4nN<QBv OlCEa*J/X~.C='O|iS`k⵴R纺xBx:6Hic1eDֹ|Dܻ{ 4I**֌bHU$Clr;8_ o?įA~U36q#kJ.T lrR}Ezh\ Dmu.V ZXI.sHnri 0s5j eUvNoFX5L4>r-L|)z)QԂcU{ 1 w%SőV i= ,dDE< n5%:fEh1CDtQr b=Gb(dp %  :V SI0hF:'Mg;;B *V_/iolо(PM#X V7T-ԦPFP&SrqBnrQ#cJ[# I*.\Ö;R&i^Zw6'GCP?s`J)!'|P7쵡.SӐ>4 ܥg *۹IB|ll+ cP&\'b}>jZ0SPn0X*z=G{8WyVW療 b&bȥB,c1zQrг.~MW9b>dxzl^;ſ*n"?Ihu X͈ _!7K8ptt_C euEoWW%&+=y?x;8KRdh)]H  v9b\&_N5>bńUco'fᵐاpJ!;uYAYrWvgE#C9Hp>mg jǺt_lS'%T'tMNDV(A`z3pxG8aduux:!1橚I4UQ{w+鑖5ݜc8?TWF0InG5&rN_(v )%4,5C.+% `mRqJIp:7:zs7FG7OPĜKzʣN/=b3QIp?c02($-> zÂܟhyΟyiDk!dr0a.m}(i{%}Oz{L\MO&-zL̖ԍ e'(X' L٫DtTN(^}E {YMsgkRx&RbV,DQ Zc%BKn+>GaZLId "~[m7 ;JjŠY c:[:f>['RQJokbOz %j?BM%4,XipK-W']Nz)`^ǃ|=յʂa~}ng4XMw%uS06,=tWόᛰ:%ߐLYQQ2 d !~;,b=hG7WO2 jWʩIװ҈|IYtvV*χATjt8t=(b9vi#,mlF{%R>>r\fE<~m8{3:ӝwtz^LA.R-#~)ы`Osvo=>v_쌟tR^fB (cyKhd\0KL)o&A ɜ,GNA+sG:]7szɋSٔ*mCqKQ '+,qڇM=3:7ME_XΨ ;xLG\s7#4PnwmxDq !$^ك--%l&$:gW:Kl5qo'*<'Yb']H_J$G:Pk}-~`ܑ*jڡ(֊W6%:-tԅ?"y*_8z0OS=CEQf=Z[:pKUYS8 um/LP,>-. /Y\wo!ijA7E FRL n@3 [7)B* סa +;^ WEu϶ĝkBdm* ;Y\KL[CN&}* fu_ъ$~/&r o'kT[ZvWQ)y#sW2"fV@_WSjQLխle%D}-<* -W$~Jm-]hB@jNrfLF2r)La3ZJQz:m ds3:v {m/Wa ;׬@l܏h0Wo}Y Nǐ[ ɗd}Op"9I)EW;Dn0r}:n1+CpG\&\al/G!ܞ>_XU'F켲 Յ9g'-[ܠ" GndI:}=lo <)Lid:J"tbc^{' |fsLͻrR!fQJ6$ mImN]7I[=e-%yVLeH0her ;P]Dҁ; 3S"=:e3iΈG& "{ Sܡ*D'Xt E'N^ΟΛ-FA?Hd 攨-i°l ^Z-F^V.;@7骔e #͠~Z7P] [͛7DBKF.}N3'VaI <0CN)5\[JjWW`(NZOEjiA3lgP':4tHB9К$lc৫`O>5KPbӇB,C6&LR2lr>onWĄ%KD؞I@͔K])P)?D{$I0|>ӪlvdHl*vS<^Ʌ.M5& h.$6+t$TIL2T`ᯊJ1iYY;n$l-®' ..R@8*+!8З]Yfwo\) DwہlbN4dFJmse -6B8qBo e"<iuM