summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorMystery Man <unknown@mandriva.org>2003-04-24 07:15:38 +0000
committerMystery Man <unknown@mandriva.org>2003-04-24 07:15:38 +0000
commit87ef78ed082f9dec4e83a6120b32617b7f7a86b9 (patch)
treeb96ceedd4f1c29745a0651880e71daab8cdb686c /tools
parent327bd24f8e4291bd1882de1990dd7339f781a9cb (diff)
downloaddrakx-1_1_9_56mdk.tar
drakx-1_1_9_56mdk.tar.gz
drakx-1_1_9_56mdk.tar.bz2
drakx-1_1_9_56mdk.tar.xz
drakx-1_1_9_56mdk.zip
This commit was manufactured by cvs2svn to create tag 'V1_1_9_56mdk'.V1_1_9_56mdk
Diffstat (limited to 'tools')
-rw-r--r--tools/.cvsignore4
-rw-r--r--tools/2adsldb.pm17
-rw-r--r--tools/2isdndb.pm25
-rw-r--r--tools/Makefile40
-rwxr-xr-xtools/addchangelog.pl18
-rw-r--r--tools/aewm-drakx/.cvsignore1
-rw-r--r--tools/aewm-drakx/Makefile17
-rw-r--r--tools/aewm-drakx/README53
-rw-r--r--tools/aewm-drakx/aewm-drakx.c50
-rw-r--r--tools/aewm-drakx/aewm.h34
-rw-r--r--tools/aewm-drakx/client.c122
-rw-r--r--tools/aewm-drakx/events.c106
-rw-r--r--tools/aewm-drakx/misc.c30
-rw-r--r--tools/alpha/cd/Makefile8
-rw-r--r--tools/alpha/cd/README40
-rw-r--r--tools/alpha/cd/README.milo13
-rw-r--r--tools/alpha/cd/aboot.cnf3
-rw-r--r--tools/alpha/cd/up1000/5100440A.txt25
-rw-r--r--tools/alpha/cd/up1000/README.txt16
-rwxr-xr-xtools/alpha/cd/up1000/apb.cfg2
-rwxr-xr-xtools/alpha/cd/up1000/apb.exebin120832 -> 0 bytes
-rw-r--r--tools/alpha/cd/up1000/install.txt356
-rw-r--r--tools/alpha/cd/up1000/up1000.palbin30464 -> 0 bytes
-rwxr-xr-xtools/alpha/e2fsck.sharedbin111080 -> 0 bytes
-rwxr-xr-xtools/closurepkgs108
-rwxr-xr-xtools/cvslog2changelog.pl84
-rw-r--r--tools/extractchangelog2
-rwxr-xr-xtools/gencompss14
-rwxr-xr-xtools/gencryptofiles115
-rwxr-xr-xtools/genmodparm145
-rwxr-xr-xtools/i386/busyboxbin55508 -> 0 bytes
-rwxr-xr-xtools/i386/e2fsck.sharedbin80308 -> 0 bytes
-rwxr-xr-xtools/i386/mkreiserfsbin15868 -> 0 bytes
-rw-r--r--tools/i386/netboot/.cvsignore4
-rw-r--r--tools/i386/netboot/3c503/nbgrubbin106660 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c503/pxegrubbin107684 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/3c503/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c503/stage2bin106660 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c507/nbgrubbin106208 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c507/pxegrubbin107232 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/3c507/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c507/stage2bin106272 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c509/nbgrubbin106712 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c509/pxegrubbin107736 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/3c509/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c509/stage2bin106744 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c529/nbgrubbin107592 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c529/pxegrubbin108616 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/3c529/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c529/stage2bin107624 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c595/nbgrubbin109440 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c595/pxegrubbin110464 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/3c595/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c595/stage2bin109440 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c90x/nbgrubbin111360 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c90x/pxegrubbin112384 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/3c90x/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/3c90x/stage2bin111360 -> 0 bytes
-rw-r--r--tools/i386/netboot/depca/nbgrubbin106376 -> 0 bytes
-rw-r--r--tools/i386/netboot/depca/pxegrubbin107400 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/depca/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/depca/stage2bin106440 -> 0 bytes
-rw-r--r--tools/i386/netboot/device.map1
-rw-r--r--tools/i386/netboot/eepro/nbgrubbin106472 -> 0 bytes
-rw-r--r--tools/i386/netboot/eepro/pxegrubbin107496 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/eepro/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/eepro/stage2bin106504 -> 0 bytes
-rw-r--r--tools/i386/netboot/eepro100/nbgrubbin109408 -> 0 bytes
-rw-r--r--tools/i386/netboot/eepro100/pxegrubbin110432 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/eepro100/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/eepro100/stage2bin109472 -> 0 bytes
-rw-r--r--tools/i386/netboot/epic100/nbgrubbin108160 -> 0 bytes
-rw-r--r--tools/i386/netboot/epic100/pxegrubbin109184 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/epic100/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/epic100/stage2bin108192 -> 0 bytes
-rw-r--r--tools/i386/netboot/exos205/nbgrubbin106560 -> 0 bytes
-rw-r--r--tools/i386/netboot/exos205/pxegrubbin107584 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/exos205/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/exos205/stage2bin106592 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/grubbin355291 -> 0 bytes
-rw-r--r--tools/i386/netboot/lance/nbgrubbin108512 -> 0 bytes
-rw-r--r--tools/i386/netboot/lance/pxegrubbin109536 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/lance/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/lance/stage2bin108512 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/makeImages31
-rwxr-xr-xtools/i386/netboot/make_boot_network17
-rw-r--r--tools/i386/netboot/menu.lst.example21
-rw-r--r--tools/i386/netboot/ne/nbgrubbin106280 -> 0 bytes
-rw-r--r--tools/i386/netboot/ne/pxegrubbin107304 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/ne/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/ne/stage2bin106344 -> 0 bytes
-rw-r--r--tools/i386/netboot/ne2100/nbgrubbin106620 -> 0 bytes
-rw-r--r--tools/i386/netboot/ne2100/pxegrubbin107644 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/ne2100/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/ne2100/stage2bin106652 -> 0 bytes
-rw-r--r--tools/i386/netboot/ni5010/nbgrubbin105608 -> 0 bytes
-rw-r--r--tools/i386/netboot/ni5010/pxegrubbin106632 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/ni5010/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/ni5010/stage2bin105640 -> 0 bytes
-rw-r--r--tools/i386/netboot/ni5210/nbgrubbin106336 -> 0 bytes
-rw-r--r--tools/i386/netboot/ni5210/pxegrubbin107360 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/ni5210/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/ni5210/stage2bin106368 -> 0 bytes
-rw-r--r--tools/i386/netboot/ni6510/nbgrubbin106588 -> 0 bytes
-rw-r--r--tools/i386/netboot/ni6510/pxegrubbin107612 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/ni6510/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/ni6510/stage2bin106620 -> 0 bytes
-rw-r--r--tools/i386/netboot/ns8390/nbgrubbin108664 -> 0 bytes
-rw-r--r--tools/i386/netboot/ns8390/pxegrubbin109688 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/ns8390/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/ns8390/stage2bin108696 -> 0 bytes
-rw-r--r--tools/i386/netboot/otulip/nbgrubbin108484 -> 0 bytes
-rw-r--r--tools/i386/netboot/otulip/pxegrubbin109508 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/otulip/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/otulip/stage2bin108516 -> 0 bytes
-rw-r--r--tools/i386/netboot/rtl8139/nbgrubbin108000 -> 0 bytes
-rw-r--r--tools/i386/netboot/rtl8139/pxegrubbin109024 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/rtl8139/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/rtl8139/stage2bin108000 -> 0 bytes
-rw-r--r--tools/i386/netboot/sis900/nbgrubbin112392 -> 0 bytes
-rw-r--r--tools/i386/netboot/sis900/pxegrubbin113416 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/sis900/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/sis900/stage2bin112392 -> 0 bytes
-rw-r--r--tools/i386/netboot/sk_g16/nbgrubbin106500 -> 0 bytes
-rw-r--r--tools/i386/netboot/sk_g16/pxegrubbin107524 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/sk_g16/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/sk_g16/stage2bin106532 -> 0 bytes
-rw-r--r--tools/i386/netboot/smc9000/nbgrubbin106976 -> 0 bytes
-rw-r--r--tools/i386/netboot/smc9000/pxegrubbin108000 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/smc9000/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/smc9000/stage2bin106976 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/stage1.3c59xbin512 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/stage1.3c90xbin512 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/stage1.eepro100bin512 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/stage1.rtl8139bin512 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/stage1.tulipbin512 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/stage1.via-rhinebin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/stage2.3c59xbin80564 -> 0 bytes
-rw-r--r--tools/i386/netboot/stage2.3c90xbin111100 -> 0 bytes
-rw-r--r--tools/i386/netboot/stage2.eepro100bin107584 -> 0 bytes
-rw-r--r--tools/i386/netboot/stage2.rtl8139bin108028 -> 0 bytes
-rw-r--r--tools/i386/netboot/stage2.tulipbin94396 -> 0 bytes
-rw-r--r--tools/i386/netboot/stage2.via-rhinebin88208 -> 0 bytes
-rw-r--r--tools/i386/netboot/tiara/nbgrubbin105188 -> 0 bytes
-rw-r--r--tools/i386/netboot/tiara/pxegrubbin106212 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/tiara/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/tiara/stage2bin105252 -> 0 bytes
-rw-r--r--tools/i386/netboot/tulip/nbgrubbin119404 -> 0 bytes
-rw-r--r--tools/i386/netboot/tulip/pxegrubbin120428 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/tulip/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/tulip/stage2bin119404 -> 0 bytes
-rw-r--r--tools/i386/netboot/w89c840/nbgrubbin109356 -> 0 bytes
-rw-r--r--tools/i386/netboot/w89c840/pxegrubbin110380 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/w89c840/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/w89c840/stage2bin109388 -> 0 bytes
-rw-r--r--tools/i386/netboot/wd/nbgrubbin106760 -> 0 bytes
-rw-r--r--tools/i386/netboot/wd/pxegrubbin107784 -> 0 bytes
-rwxr-xr-xtools/i386/netboot/wd/stage1bin512 -> 0 bytes
-rw-r--r--tools/i386/netboot/wd/stage2bin106792 -> 0 bytes
-rwxr-xr-xtools/i386/shbin153752 -> 0 bytes
-rwxr-xr-xtools/ia64/e2fsck.sharedbin1060504 -> 0 bytes
-rwxr-xr-xtools/ia64/elilo.efibin315800 -> 0 bytes
-rwxr-xr-xtools/mailchangelog.pl14
-rwxr-xr-xtools/make_mdkinst_stage277
-rwxr-xr-xtools/mkhdlist16
-rw-r--r--tools/ntp_servers.pl298
-rwxr-xr-xtools/oem-prepare477
-rwxr-xr-xtools/patch_pcmcia_config.pl28
-rw-r--r--tools/ppc/README39
-rwxr-xr-xtools/ppc/Xpmacbin3762427 -> 0 bytes
-rwxr-xr-xtools/ppc/convert5
-rw-r--r--tools/ppc/e2fsck.sharedbin101469 -> 0 bytes
-rwxr-xr-xtools/ppc/magic81
-rwxr-xr-xtools/ppc/mapping20
-rwxr-xr-xtools/ppc/mkINSTALLCD78
-rwxr-xr-xtools/ppc/mkhybrid-1.12b5.4bin488623 -> 0 bytes
-rwxr-xr-xtools/ppc/mkhybrid-1.12b5.4-x86bin194471 -> 0 bytes
-rw-r--r--tools/ppc/yabootbin58556 -> 0 bytes
-rwxr-xr-xtools/sparc/e2fsck.sharedbin125624 -> 0 bytes
-rwxr-xr-xtools/specific_arch9
-rwxr-xr-xtools/syncrpms261
-rwxr-xr-xtools/updatehdlist10
-rw-r--r--tools/xhost+.c11
183 files changed, 0 insertions, 2946 deletions
diff --git a/tools/.cvsignore b/tools/.cvsignore
deleted file mode 100644
index 88754bc8b..000000000
--- a/tools/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-rpm2header
-gendepslist
-xhost+
-rpcinfo-flushed
diff --git a/tools/2adsldb.pm b/tools/2adsldb.pm
deleted file mode 100644
index 23328aafc..000000000
--- a/tools/2adsldb.pm
+++ /dev/null
@@ -1,17 +0,0 @@
-open F, "isplist.txt" or die "file $file not found";
-open G, ">tutu" or die "file $file not found";
-foreach (<F>) {
- s/\#.*//;
- /.*ADSL.*/ or next;
-#| NOM | PAYS | CONNECTION | MAILTYPE | SMTP | MAILSERVER | NEWS | MY1DNS | MY2DNS | PROXY | PROXYSERVER | DHCP | EMAIL
- s/(.*)france(.*)/$1France$2/;
- s/(.*)FRANCE(.*)/$1France$2/;
- s/(.*)USA(.*)/$1United States$2/;
- s/(.*)U.S.A(.*)/$1United States$2/;
- s/(.*)US(.*)/$1United States$2/;
- s/(.*)usa(.*)/$1United States$2/;
- s/(.*)club-internet(.*)/$1club internet$2/;
- my ($name, $country, $connexion, $mailtype, $smtp, $popserver, $mailserver, $news, $dns1, $dns2, $proxy, $proxyserver, $dhcp, $email) = split /\|/;
- print G join("|", $country, join("=>", $name, $dns1, $dns2)), "\n"; #$domain,
-}
-
diff --git a/tools/2isdndb.pm b/tools/2isdndb.pm
deleted file mode 100644
index 536808706..000000000
--- a/tools/2isdndb.pm
+++ /dev/null
@@ -1,25 +0,0 @@
-open F, "isdndb.txt" or die "file $file not found";
-open G, ">tutu" or die "file $file not found";
-foreach (<F>) {
- s/\#.*//;
-# s/\[City\]\s+National//;
- /\[Country\]\s*(.*)/ and $country = $1;
- /\[City\]\s*(.*)/ and $city = $1;
- /\[Name\]\s*(.*)/ and $name = $1;
- /\[Prefix\]\s*(.*)/ and $prefix = $1;
- /\[ISDN\]\s*(.*)/ and $isdn = $1;
- /\[Encaps\]\s*.*/ and do { defined $dns1 and $dns2=""; };
- /\[Domain\]\s*(.*)/ and $domain = $1;
- /\[DNS\]\s*(.*)/ and ($dns1 ? $dns2 : $dns1) = $1;
- /\[End\]\s*(.*)/ and do { undef $name; undef $prefix; undef $isdn; undef $domain; undef $dns1; undef $dns2; };
- if ($isdn && !$prefix) { $prefix = "" }
- if (defined $name && defined $isdn && defined $domain && defined $dns1 && defined $dns2) {
- print G join("|", $country, $city, join("=>", $name, $prefix . $isdn, $domain, $dns1, $dns2)), "\n";
- undef $name;
- undef $prefix;
- undef $isdn;
- undef $domain;
- undef $dns1;
- undef $dns2;
- }
-}
diff --git a/tools/Makefile b/tools/Makefile
deleted file mode 100644
index 244b23bd9..000000000
--- a/tools/Makefile
+++ /dev/null
@@ -1,40 +0,0 @@
-ROOTDEST = /export
-DEST = $(ROOTDEST)/Mandrake/mdkinst
-RPMS = $(wildcard $(ROOTDEST)/Mandrake/RPMS/*.rpm)
-DIRS = ddcprobe serial_probe aewm-drakx
-BASE = $(ROOTDEST)/Mandrake/base
-CFLAGS = -Wall
-
-ARCH := $(shell arch | egrep "(x86_64|sparc64|s390x)")
-ifneq ("x$(ARCH)", "x")
-LIB_NAME = lib64
-else
-LIB_NAME = lib
-endif
-
-.PHONY: clean install $(DIRS)
-
-all: $(DIRS) xhost+ rpcinfo-flushed install
-
-$(DIRS):
- make -C $@
-
-install:
- @install -d $(ROOTDEST)/misc/auto
- @install make_mdkinst_stage2 $(ROOTDEST)/misc
- @cd /usr/bin ; install packdrake $(ROOTDEST)/misc || { echo "packdrake is missing"; exit 1; }
- @cd /usr/bin ; install gendistrib rpm2header $(ROOTDEST)/misc || { echo "install rpmtools first!" ; exit 1; }
- @eval `perl -V:installvendorlib`; cd $$installvendorlib ; cp -rf packdrake.pm $(ROOTDEST)/misc || { echo "install rpmtools first!" ; exit 1; }
- @eval `perl -V:installvendorarch`; cd $$installvendorarch ; cp -rf URPM* $(ROOTDEST)/misc || { echo "install perl-URPM first!" ; exit 1; }
- @eval `perl -V:installvendorarch`; cd $$installvendorarch/auto ; cp -rf URPM $(ROOTDEST)/misc/auto || { echo "install perl-URPM first!" ; exit 1; }
- @mkdir -p $(DEST)/usr/bin
-
-xhost+: %: %.c
- $(CC) $(CFLAGS) $< -L/usr/X11R6/$(LIB_NAME) -lX11 -o $@
-
-ddcprobe/ddcxinfos:
- $(MAKE) -C ddcprobe ddcxinfos
-
-clean:
- for i in $(DIRS); do $(MAKE) -C $$i clean; done
- rm -rf *~ xhost+ rpcinfo-flushed ddcprobe/ddcxinfos */*.o
diff --git a/tools/addchangelog.pl b/tools/addchangelog.pl
deleted file mode 100755
index 8e39802a6..000000000
--- a/tools/addchangelog.pl
+++ /dev/null
@@ -1,18 +0,0 @@
-#!/usr/bin/perl
-
-@ARGV == 1 or die "usage $0: <cvslog2changelog script>\n";
-
-($script) = @ARGV;
-
-$date = (split('/', `grep ChangeLog perl-install/CVS/Entries`))[3];
-
-@changelog = `(cvs log -d ">$date" docs mdk-stage1 rescue tools ; cd perl-install; cvs log -d ">$date") | $script`;
-@before = `cat perl-install/ChangeLog`;
-
-open F, ">perl-install/ChangeLog";
-print F foreach @changelog, @before;
-
-`cvs commit -m '' perl-install/ChangeLog` =~ /new revision: (.*?);/;
-
-print "$1\n";
-print foreach @changelog;
diff --git a/tools/aewm-drakx/.cvsignore b/tools/aewm-drakx/.cvsignore
deleted file mode 100644
index 2c9522444..000000000
--- a/tools/aewm-drakx/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-aewm-drakx
diff --git a/tools/aewm-drakx/Makefile b/tools/aewm-drakx/Makefile
deleted file mode 100644
index ec5bbf977..000000000
--- a/tools/aewm-drakx/Makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-ARCH := $(shell arch | egrep "(x86_64|sparc64|s390x)")
-ifneq ("x$(ARCH)", "x")
-LIB_NAME = lib64
-else
-LIB_NAME = lib
-endif
-
-CFLAGS = -Wall -Os
-LDFLAGS = -L/usr/X11R6/$(LIB_NAME) -lX11
-CFILES = $(wildcard *.c)
-OFILES = $(CFILES:%.c=%.o)
-GOAL = aewm-drakx
-
-$(GOAL): $(OFILES)
-
-clean:
- rm -f $(GOAL) $(OFILES) TAGS *~
diff --git a/tools/aewm-drakx/README b/tools/aewm-drakx/README
deleted file mode 100644
index 160ffb4d2..000000000
--- a/tools/aewm-drakx/README
+++ /dev/null
@@ -1,53 +0,0 @@
-aewm-drakx - A DrakX-aware X11 Window Manager
-======================================================================
-aewm-drakx is a stripped down version of aewm with keyboard focus added.
-The main and only purpose of aewm-drakx is to provide keyboard focus.
-
-Thanks to aewm author for his job. The already small aewm, gives a tiny WM
-(source < 4Kl, binary < 8KB) when stripped down of nearly everything.
-
-Pixel.
-
-
-aewm
-======================================================================
-http://www.red-bean.com/~decklin/aewm/.
-
-Author
-======================================================================
-
-aewm is maintained by Decklin Foster <decklin@red-bean.com>. If you
-have bug reports, comments, flames, want permission to change the
-license, or are just bored, send me email. Your messages are
-appreciated (but do read the thing above about virtual desktops ;-).
-
-License
-======================================================================
-
-Copyright (c) 1998-2001 Decklin Foster.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS", WITHOUT ANY EXPRESS
-OR IMPLIED WARRANTIES OF ANY KIND. IN NO EVENT SHALL THE AUTHOR BE
-HELD LIABLE FOR ANY DAMAGES CONNECTED WITH THE USE OF THIS PROGRAM.
-
-You are granted permission to copy, publish, distribute, and/or sell
-copies of this program and any modified versions or derived works,
-provided that this copyright and notice are not removed or altered.
-
-Portions of the code were based on 9wm, which contains this license:
-
-> 9wm is free software, and is Copyright (c) 1994 by David Hogan.
-> Permission is granted to all sentient beings to use this software,
-> to make copies of it, and to distribute those copies, provided
-> that:
->
-> (1) the copyright and licence notices are left intact
-> (2) the recipients are aware that it is free software
-> (3) any unapproved changes in functionality are either
-> (i) only distributed as patches
-> or (ii) distributed as a new program which is not called 9wm
-> and whose documentation gives credit where it is due
-> (4) the author is not held responsible for any defects
-> or shortcomings in the software, or damages caused by it.
->
-> There is no warranty for this software. Have a nice day.
diff --git a/tools/aewm-drakx/aewm-drakx.c b/tools/aewm-drakx/aewm-drakx.c
deleted file mode 100644
index 4df2544af..000000000
--- a/tools/aewm-drakx/aewm-drakx.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* aewm - a minimalistic X11 window manager. ------- vim:sw=4:et
- * Copyright (c) 1998-2001 Decklin Foster <decklin@red-bean.com>
- * Free software! Please see README for details and license. */
-
-#include "aewm.h"
-
-
-Display *dpy;
-Window root;
-
-static void scan_wins(void)
-{
- unsigned int nwins, i;
- Window dummyw1, dummyw2, *wins;
- XWindowAttributes attr;
-
- XQueryTree(dpy, root, &dummyw1, &dummyw2, &wins, &nwins);
- for (i = 0; i < nwins; i++) {
- XGetWindowAttributes(dpy, wins[i], &attr);
- if (!attr.override_redirect && attr.map_state == IsViewable)
- make_new_client(wins[i]);
- }
- XFree(wins);
-}
-
-static void setup_display(void)
-{
- XSetWindowAttributes sattr;
-
- dpy = XOpenDisplay(NULL);
-
- if (!dpy) {
- err("can't open display! check your DISPLAY variable.");
- exit(1);
- }
-
- XSetErrorHandler(handle_xerror);
- root = RootWindow(dpy, DefaultScreen(dpy));
-
- sattr.event_mask = SubstructureRedirectMask|SubstructureNotifyMask;
- XChangeWindowAttributes(dpy, root, CWEventMask, &sattr);
-}
-
-
-int main()
-{
- setup_display();
- scan_wins();
- do_event_loop();
-}
diff --git a/tools/aewm-drakx/aewm.h b/tools/aewm-drakx/aewm.h
deleted file mode 100644
index 1f2f11f1f..000000000
--- a/tools/aewm-drakx/aewm.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* aewm - a minimalistic X11 window manager. ------- vim:sw=4:et
- * Copyright (c) 1998-2001 Decklin Foster <decklin@red-bean.com>
- * Free software! Please see README for details and license. */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <X11/Xutil.h>
-
-typedef struct _Client Client;
-
-struct _Client {
- Client *next;
- Window window;
-};
-
-extern Display *dpy;
-
-/* events.c */
-extern void do_event_loop(void);
-
-/* client.c */
-extern Client *find_client(Window);
-extern void set_focus_on(Window w);
-extern void set_wm_state(Client *, int);
-extern void remove_client(Client *);
-extern void make_new_client(Window);
-
-/* misc.c */
-void err(const char *, ...);
-int handle_xerror(Display *, XErrorEvent *);
-
-
-#define wm_state XInternAtom(dpy, "WM_STATE", False)
diff --git a/tools/aewm-drakx/client.c b/tools/aewm-drakx/client.c
deleted file mode 100644
index 8db6b2151..000000000
--- a/tools/aewm-drakx/client.c
+++ /dev/null
@@ -1,122 +0,0 @@
-/* aewm - a minimalistic X11 window manager. ------- vim:sw=4:et
- * Copyright (c) 1998-2001 Decklin Foster <decklin@red-bean.com>
- * Free software! Please see README for details and license. */
-
-#include "aewm.h"
-#include <X11/Xmd.h>
-
-
-Client *head_client = NULL;
-
-Client *find_client(Window w)
-{
- Client *c;
-
- for (c = head_client; c; c = c->next)
- if (c->window == w) return c;
-
- return NULL;
-}
-
-void set_focus_on(Window w)
-{
- char *name;
- XFetchName(dpy, w, &name);
- if (name && strcmp(name, "skip")) {
- XSetInputFocus(dpy, w, RevertToPointerRoot, CurrentTime);
-#ifdef DEBUG
- printf("aewm-drakx: adding %lx %s\n", w, name);
-#endif
- }
-}
-
-/* Attempt to follow the ICCCM by explicity specifying 32 bits for
- * this property. Does this goof up on 64 bit systems? */
-void set_wm_state(Client *c, int state)
-{
- CARD32 data[2];
-
- data[0] = state;
- data[1] = None; /* Icon? We don't need no steenking icon. */
-
- XChangeProperty(dpy, c->window, wm_state, wm_state,
- 32, PropModeReplace, (unsigned char *)data, 2);
-}
-
-/* If we can't find a WM_STATE we're going to have to assume
- * Withdrawn. This is not exactly optimal, since we can't really
- * distinguish between the case where no WM has run yet and when the
- * state was explicitly removed (Clients are allowed to either set the
- * atom to Withdrawn or just remove it... yuck.) */
-long get_wm_state(Client *c)
-{
- Atom real_type; int real_format;
- unsigned long items_read, items_left;
- long *data, state = WithdrawnState;
-
- if (XGetWindowProperty(dpy, c->window, wm_state, 0L, 2L, False,
- wm_state, &real_type, &real_format, &items_read, &items_left,
- (unsigned char **) &data) == Success && items_read) {
- state = *data;
- XFree(data);
- }
- return state;
-}
-
-void remove_client(Client *c)
-{
- int ignore_xerror(Display *dpy, XErrorEvent *e) { return 0; }
-
- Client *p;
-
- XGrabServer(dpy);
- XSetErrorHandler(ignore_xerror);
-
- set_wm_state(c, WithdrawnState);
-
- if (head_client == c) head_client = c->next;
- else for (p = head_client; p && p->next; p = p->next)
- if (p->next == c) p->next = c->next;
-
- free(c);
-
- if (head_client) set_focus_on(head_client->window);
-
- XSync(dpy, False);
- XSetErrorHandler(handle_xerror);
- XUngrabServer(dpy);
-}
-
-void make_new_client(Window w)
-{
- Client *c;
- XWindowAttributes attr;
-
- c = malloc(sizeof *c);
- c->next = head_client;
- c->window = w;
- head_client = c;
-
- XGrabServer(dpy);
- XGetWindowAttributes(dpy, w, &attr);
-
-
- if (attr.map_state != IsViewable) {
- XWMHints *hints;
- set_wm_state(c, NormalState);
- if ((hints = XGetWMHints(dpy, w))) {
- if (hints->flags & StateHint) set_wm_state(c, hints->initial_state);
- XFree(hints);
- }
- }
- if (attr.map_state == IsViewable) {
- XMapWindow(dpy, c->window);
- set_wm_state(c, NormalState);
- } else if (get_wm_state(c) == NormalState) {
- XMapWindow(dpy, c->window);
- }
- set_focus_on(w);
-
- XSync(dpy, False);
- XUngrabServer(dpy);
-}
diff --git a/tools/aewm-drakx/events.c b/tools/aewm-drakx/events.c
deleted file mode 100644
index f9a387e1e..000000000
--- a/tools/aewm-drakx/events.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/* aewm - a minimalistic X11 window manager. ------- vim:sw=4:et
- * Copyright (c) 1998-2001 Decklin Foster <decklin@red-bean.com>
- * Free software! Please see README for details and license. */
-
-#include "aewm.h"
-
-
-static void handle_configure_request(XConfigureRequestEvent *e)
-{
- XWindowChanges wc;
-
- wc.x = e->x;
- wc.y = e->y;
- wc.width = e->width;
- wc.height = e->height;
- wc.sibling = e->above;
- wc.stack_mode = e->detail;
- XConfigureWindow(dpy, e->window, e->value_mask, &wc);
-}
-
-static void handle_map_request(XMapRequestEvent *e)
-{
- Client *c = find_client(e->window);
-
- if (c) {
- XMapWindow(dpy, c->window);
- set_wm_state(c, NormalState);
- set_focus_on(c->window);
- } else {
- make_new_client(e->window);
- }
-}
-
-static void handle_destroy_event(XDestroyWindowEvent *e)
-{
- Client *c = find_client(e->window);
-
- if (c) remove_client(c);
-}
-
-
-#ifdef DEBUG
-#define SHOW_EV(name, memb) \
- case name: s = #name; w = e.memb.window; break;
-#define SHOW(name) \
- case name: return #name;
-
-void show_event(XEvent e)
-{
- char *s = 0, buf[20];
- char *dd = 0;
- Window w = 0;
- Client *c;
-
- switch (e.type) {
- SHOW_EV(ButtonPress, xbutton)
- SHOW_EV(ButtonRelease, xbutton)
- SHOW_EV(ClientMessage, xclient)
- SHOW_EV(ColormapNotify, xcolormap)
- SHOW_EV(ConfigureNotify, xconfigure)
- SHOW_EV(ConfigureRequest, xconfigurerequest)
- SHOW_EV(CreateNotify, xcreatewindow)
- SHOW_EV(DestroyNotify, xdestroywindow)
- SHOW_EV(EnterNotify, xcrossing)
- SHOW_EV(Expose, xexpose)
- SHOW_EV(MapNotify, xmap)
- SHOW_EV(MapRequest, xmaprequest)
- SHOW_EV(MappingNotify, xmapping)
- SHOW_EV(MotionNotify, xmotion)
- SHOW_EV(PropertyNotify, xproperty)
- SHOW_EV(ReparentNotify, xreparent)
- SHOW_EV(ResizeRequest, xresizerequest)
- SHOW_EV(UnmapNotify, xunmap)
- default:
- break;
- }
-
- c = find_client(w);
-
- if (c) XFetchName(dpy, c->window, &dd);
-
- snprintf(buf, sizeof buf, dd ? dd : "");
- err("%#-10lx: %-20s: %s", w, buf, s);
-}
-#endif
-
-
-void do_event_loop(void)
-{
- XEvent ev;
-
- for (;;) {
- XNextEvent(dpy, &ev);
-#ifdef DEBUG
- show_event(ev);
-#endif
- switch (ev.type) {
- case ConfigureRequest:
- handle_configure_request(&ev.xconfigurerequest); break;
- case MapRequest:
- handle_map_request(&ev.xmaprequest); break;
- case DestroyNotify:
- handle_destroy_event(&ev.xdestroywindow); break;
- }
- }
-}
diff --git a/tools/aewm-drakx/misc.c b/tools/aewm-drakx/misc.c
deleted file mode 100644
index 9542c2cc3..000000000
--- a/tools/aewm-drakx/misc.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/* aewm - a minimalistic X11 window manager. ------- vim:sw=4:et
- * Copyright (c) 1998-2001 Decklin Foster <decklin@red-bean.com>
- * Free software! Please see README for details and license. */
-
-#include "aewm.h"
-#include <stdarg.h>
-
-
-void err(const char *fmt, ...)
-{
- va_list argp;
-
- fprintf(stderr, "aewm: ");
- va_start(argp, fmt);
- vfprintf(stderr, fmt, argp);
- va_end(argp);
- fprintf(stderr, "\n");
-}
-
-int handle_xerror(Display *dpy, XErrorEvent *e)
-{
- Client *c = find_client(e->resourceid);
-
- char msg[255];
- XGetErrorText(dpy, e->error_code, msg, sizeof msg);
- err("X error (%#lx): %s", e->resourceid, msg);
-
- if (c) remove_client(c);
- return 0;
-}
diff --git a/tools/alpha/cd/Makefile b/tools/alpha/cd/Makefile
deleted file mode 100644
index 67af70f2f..000000000
--- a/tools/alpha/cd/Makefile
+++ /dev/null
@@ -1,8 +0,0 @@
-install:
- cp -f README README.milo $(ROOTDEST)
- install -d $(ROOTDEST)/etc
- cp -f aboot.cnf $(ROOTDEST)/etc
-
- install -d $(ROOTDEST)/boot
- cp -a up1000 $(ROOTDEST)/boot
- mv -f $(ROOTDEST)/boot/up1000/apb.* $(ROOTDEST)
diff --git a/tools/alpha/cd/README b/tools/alpha/cd/README
deleted file mode 100644
index 78eb94bd5..000000000
--- a/tools/alpha/cd/README
+++ /dev/null
@@ -1,40 +0,0 @@
-!! beta version !!
-
-Mandrake Alpha short Howto-Install
-
-this doc is for SRM, if you have alphabios, see README.milo
-
-
-* to install from the cdrom:
-
-- either boot on the cdrom:
- - in SRM, find the device name corresponding to the cdrom (`show device' can help)
- - enter `boot dqa0 -fl 0' (replacing dqa0 by the cdrom device)
-
-- or you can boot on a floppy:
- - first create a boot floppy from images/cdrom.img
- - in SRM, find the device name corresponding to the floppy (`show device' can help)
- - enter `boot dva0 -fl 0' (replacing dva0 by the floppy device)
- - fulfill the install.
-
-* on reboot:
-
-- either enter `boot XXXX -fl 0' where XXXX is the device where you installed
-the system
-
-- if the device is not available via SRM, use the
-cdrom: `boot dqa0 -file boot/v.gz -fl root=/dev/sda1' (replace sda1 by the
-root you installed on, and dqa0 by the cdrom device)
-
-
-* to install from the network:
-
-Same as for the cdrom install, except give `boot dqa0 -fl 1' or boot on
-images/network.img floppy (with `boot dva0 -fl 0')
-
-
-
- Alpha Team.
-
-Reports problems to Chmouel Boudjnah <chmouel@mandrakesoft.com> or Pixel
-<pixel@mandrakesoft.com>.
diff --git a/tools/alpha/cd/README.milo b/tools/alpha/cd/README.milo
deleted file mode 100644
index d2a52abe9..000000000
--- a/tools/alpha/cd/README.milo
+++ /dev/null
@@ -1,13 +0,0 @@
-* to install from the cdrom:
-
-- put boot/cdrom.rdz on a floppy
-
-- put that floppy in drive fd0
-
-- configure alphabios with (example for miata):
-
-Boot File: CD: \milo\miata\linload.exe
-OS path: CD: \milo\miata\milo
-OS options: boot scd0:/boot/instboot.gz root=/dev/fd0 load_ramdisk=1 mdkinst rw ramdisk_size=32000
-
-if you want text install, just add "text" to the options above
diff --git a/tools/alpha/cd/aboot.cnf b/tools/alpha/cd/aboot.cnf
deleted file mode 100644
index 42c7a4382..000000000
--- a/tools/alpha/cd/aboot.cnf
+++ /dev/null
@@ -1,3 +0,0 @@
-0:boot/instboot.gz initrd=boot/cdrom.rdz mdkinst rw ramdisk=32000 cdrom
-1:boot/instboot.gz initrd=boot/network.rdz mdkinst rw ramdisk=32000 network
-2:boot/instboot.gz initrd=boot/hd.rdz mdkinst rw ramdisk=32000 hd
diff --git a/tools/alpha/cd/up1000/5100440A.txt b/tools/alpha/cd/up1000/5100440A.txt
deleted file mode 100644
index ba6c5a9f1..000000000
--- a/tools/alpha/cd/up1000/5100440A.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-The source code for the object code and executable programs licensed
-
-under GNU General Public License Version 2, June 1991 are available
-
-from Alpha Processor, Inc. at the API web site
-
-
-
- http://www.Alpha-Processor.COM
-
-
-
-For each distributed object or executable form of the programs, you
-
-will find an identifying API part number. You may use that part
-
-number to find the corresponding machine-readable source code.
-
-
-
-If you have any questions, contact Customer Support at API.
-
-
-
-51-0044-0A \ No newline at end of file
diff --git a/tools/alpha/cd/up1000/README.txt b/tools/alpha/cd/up1000/README.txt
deleted file mode 100644
index 88f8855d3..000000000
--- a/tools/alpha/cd/up1000/README.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-Known issues with the UP1000 system:
-
-1. Linux boot via floppy disk drive:
- When booting Linux via APB, it takes about 5 minutes for APB to load the kernel image from a floppy device. Booting from a hard disk takes a matter of seconds.
-
-2. 2x AGP card:
- a. At the present time, 2x AGP driver for Linux is not available so 2x mode has not been tested.
- b. The following cards have been used in 1x AGP mode: cards with Permedia-2 controller: Fire
- GL1000, ELSA Synergy, E&S, Matrox Millenium G200 and Stealth 2000.
- c. 3Dfx Rage Pro Turbo card does not work because the option ROM on the AGP card is
- not properly emulated by Alpha BIOS.
-
-3. Linux installation:
- a. To install Linux, please click the "Utilities" menu in the Alpha BIOS setup mode and the
- "Run Maintenance Program". And follow the Linux installation procedure that API provides.
- b. Please do not use the "Install Linux" menu in the "Operating System" menu. \ No newline at end of file
diff --git a/tools/alpha/cd/up1000/apb.cfg b/tools/alpha/cd/up1000/apb.cfg
deleted file mode 100755
index 06614adcb..000000000
--- a/tools/alpha/cd/up1000/apb.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-floppy|bootl boot\up1000\up1000.pal boot\instboot.gz root=/dev/fd0 load_ramdisk=1 mdkinst rw ramdisk_size=32000
-floppy_text|bootl boot\up1000\up1000.pal boot\instboot.gz root=/dev/fd0 load_ramdisk=1 mdkinst rw ramdisk_size=32000 text
diff --git a/tools/alpha/cd/up1000/apb.exe b/tools/alpha/cd/up1000/apb.exe
deleted file mode 100755
index 4b3aa6099..000000000
--- a/tools/alpha/cd/up1000/apb.exe
+++ /dev/null
Binary files differ
diff --git a/tools/alpha/cd/up1000/install.txt b/tools/alpha/cd/up1000/install.txt
deleted file mode 100644
index 61dff54f9..000000000
--- a/tools/alpha/cd/up1000/install.txt
+++ /dev/null
@@ -1,356 +0,0 @@
-
-- Contents of floppy
-
-apb.exe Alpha Processor bootloader v. 1.0.1.
-apb.cfg Sample apb configuration file.
-up1000.pal PAL code for Linux on UP1000.
-vmlinux.gz Linux kernel v. 2.2.12 with UP1000 patch.
-System.gz Kernel Symbol table.
-INSTALL This file.
-
-
-- Installation of RedHat Linux from CD ROM
-
-1. Copy this directory to a floppy disk.
-
-2. Insert floppy disk and RedHat Linux CD ROM.
- This installation guide assumes
- - hard disk is connected to primary channel as a master
- - CD ROM drive is connected to primary channel as a slave
-
-3. From AlphaBIOS run apb.exe as a utility program.
- [F2]->Utility->Run maintanace program
-
-4. At the apb command prompt, type
- apb> cd floppy
- apb> bootl up1000.pal vmlinux.gz root=/dev/hdb
- This assumes you have an ATAPI CD ROM drive which Linux recognizes
- as /dev/hdb (you may have to try /dev/hda, /dev/hdc, etc. depending
- on your configuration. For a SCSI CD ROM drive, /dev/scd or
- /dev/scd0.
-
-5. This should get you into the RedHat installation program. During the
- disk partitioning phase of the installation be sure to allocate a small
- FAT partition to be used as the "boot" partition. 10 MB should be ample.
- If you choose 'Workstation' or 'Server' package then you don't need to
- partition the disk by yourself.
- * Follow the common redhat installation procedure.
- * During install, Don't configure X server,
- * Select 'Startup through ARC console' on timezone setup menu.
-
-6. Due to bugs in redhat 6.0, FAT partition is not formatted during installation
- depends on package selection.
- So, After installation, run apb.exe from flopy again and at the
- apb command prompt, type
- apb> cd floppy
- apb> bootl up1000.pal vmlinux.gz root=/dev/hda5 single
- You'll get shell prompt then type following commands.
- # mkfs -t msdos /dev/hda1
- # mount /dev/hda1 /dos
- # mcopy a:*.* /dos
- # gzip -dc /dos/system.gz > /boot/System.map
- # ln -s Tsunami /etc/alpha_systype
- # init 6
-
-8. Configure the OS selection menu of AlphaBIOS to start apb.exe
- from the boot partition.
- In 'OS Selection' menu([F2]->Operating system->OS selection setup),
- Make an entry like this.
-
- Boot name: Linux
- Boot file: Disk 0 Partition 1 \apb.exe
- OS Path : Disk 0 Partition 2 \winnt
- OS Options:
-
- OS Path doesn't have any meaning, just leave it intact.
-
-9. You can run apb from hard disk by selecting what you configured on step 8.
-
-10. Set the environment variable APB_DEVICE to be the AlphaBIOS name
- of the boot partition.
- For example,
- apb> setenv APB_DEVICE scsi(0)disk(0)rdisk(0)partition(1)
- type 'cd' once to make above environment variable change to be applied.
- apb> cd
-
-11. Now, You can boot linux by selecting 'Linux' on BIOS' OS boot menu
- and then type this on apb prompt
-
- apb> bootl up1000.pal vmlinux.gz root=/dev/hda5
-
- If you don't want to type above long line everytime. You have two options
- 1. Create apb.cfg file under /dos directory, Its contents look like
-
- linux|bootl up1000.pal vmlinux.gz root=/dev/hda5
-
- then you can boot linux by typying
-
- apb> boot linux
-
- 2. Put option string in OS Selection setup menu of BIOS setup.
-
- Boot name: Linux
- Boot file: Disk 0 Partition 1 \apb.exe
- OS Path : Disk 0 Partition 2 \winnt
- OS Options: bootl up1000.pal vmlinux.gz root=/dev/hda5
-
- Then this setup will boot linux without apb prompt.
-
-
--------------------------------------------------------------------------------
-
-
- APB -- Alpha Processor Bootstrap Loader for AlphaBIOS
-
- Alpha Processor, Inc.
- 130C Baker Ave. Ext.
- Concord, MA 01742, USA
-
- David Daniel, Soohoon Lee, Stig Telfer
- customer.support@alpha-processor.com
-
-========================================================================
-
- Copyright (c) 1999, Alpha Processor, Inc.
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the copyright notice and this permission notice appear
-in all copies of software and supporting documentation, and that the
-name of Alpha Processor not be used in advertising or publicity
-pertaining to distribution of the software without specific, written
-prior permission. Alpha Processor grants this permission provided
-that you prominently mark, as not part of the original, any
-modifications made to this software or documentation.
-
-Alpha Processor disclaims all warranties and/or guarantees with regard
-to this software, including all implied warranties of fitness for a
-particular purpose and merchantability, and makes no representations
-regarding the use of, or the results of the use of, the software and
-documentation in terms of correctness, accuracy, reliability,
-currentness or otherwise; and you rely on the software, documentation
-and results solely at your own risk.
-
-========================================================================
-
-
-0. Introduction
-
-APB is a bootstrap loader for Alpha processor based systems with
-AlphaBIOS firmware. It is primarily intended to be used for booting
-Linux, though it may also be useful for free BSD derived systems.
-
-APB borrows ideas and some code from many places, notably Linux and
-other Linux loaders for Alpha systems (aboot and MILO), and the ARCDos
-example in the ARC Application Development Kit. APB can also be
-linked against zlib to support reading compressed kernel and PALcode
-images. See the file CREDITS for details.
-
-
-1. Using APB
-
-+ Overview
-
-APB presents a simple command line interface with the following
-commands
-
- boot TARGET boot a target in the configuration file
- bootl PALCODE KERNEL ARG1 ... boot Unix
- cd DEVICE set the current device
- cp | copy FILE1 FILE2 copy files
- exit | quit exit to AlphaBIOS
- halt | reset system shutdown options
- ls | dir list files on the current device
- mkdir DIR make a directory
- more FILE list a file
- mv | rename FILE1 FILE2 rename a file
- pwd print the current device
- rm | delete FILE delete a file
- printenv [NAME] print environment variable(s)
- setenv [NAME [VAL]] (un)set environment variable
- show targets | devices show information
-
-At any time an AlphaBIOS is device is selected as the default or
-current device. On initialization this is set to the value of the
-APB_DEVICE firmware environment variable, or "multi(0)disk(0)fdisk(0)"
-(usually the floppy device) if this is not set.
-
-To change the default device, use the "cd" command. For example
-
- cd scsi(0)disk(0)rdisk(0)partition(2)\os\linux
-
-sets the default device to be the second partition of the disk 0 on
-the 0th SCSI controller. To save this for future invocations, set the
-APB_DEVICE firmware environment variable using the "setenv" command:
-
- setenv APB_DEVICE scsi(0)disk(0)rdisk(0)partition(2)\os\linux
-
-After this you can return to this device using "cd".
-
-Also the special targets
-
- cd floppy
- cd cdrom
-
-will take you to the (first) floppy and CD-ROM drives respectively.
-
-If there is a file system supported by AlphaBIOS on the device -- FAT,
-ISO 9660 (CD-ROM) -- then a directory listing can be obtained using
-the "dir" or "ls" command:
-
- apb> ls
- Directory listing of scsi(0)disk(0)rdisk(0)partition(2):
- APB.CFG
- APB.EXE
- LINUX.PAL
- VMLINUX
-
-
-+ Booting from disk
-
-The recommended way to boot a system using APB is set aside a small
-(10 - 30 MB) FAT partition on one disk to be used as a boot partition.
-The following files should be placed on the boot partition:
-
- The APB image (APB.EXE)
- The PALcode image
- The kernel image
- An optional configuration file "APB.CFG" (see below)
-
-Run APB (either from floppy or from the boot partition and use it to
-set the environment variable APB_DEVICE to the name of the boot
-partition. For example if the boot partition is the first partition
-on a SCSI disk with SCSI ID 3 on the first SCSI controller, and the files are in directory \os\linux set APB_DEVICE using
-
- apb> setenv APB_DEVICE scsi(0)disk(3)rdisk(0)partition(1)\os\linux
-
-To enable autoboot
-
- apb> setenv APB_AUTOBOOT 1
-
-This performs the first boot command it finds in the APB configuration
-file, unless interrupted.
-
-Otherwise boot manually using a command such as
-
- apb> bootl palcode kernel [kernel_arg1 [kernel_arg1 ...]]
-
-or use one of the labels defined in the APB configuration file, for
-example
-
- apb> boot linux
-
-See below for the configuration file format.
-
-+ Environment variables
-
-APB uses the following firmware environment variables to set default
-noptions:
-
- APB_DEVICE Default device for all operations
- APB_AUTOBOOT Determines whether an autoboot should be attempted
-
-If these are not set on invocation, then they are set to reasonable
-values, namely
-
- APB_DEVICE=multi(0)disk(0)fdisk(0)
- APB_AUTOBOOT=0
-
-+ Configuration file
-
-APB consults a configuration file "APB.CFG" that is assumed to be
-located at the current device path (initially given by environment
-variable APB_DEVICE). The file consists of lines that are either
-comments, or boot commands prefixed with a mnemonic label. For example
-
- # This is comment
- linux-2.2|bootl linux.pal vmlinux.gz root=/dev/sda3
- linux-2.0|bootl linux.pal vml20.gz root=/dev/sda3
-
-In this case, to boot linux-2.2, type
-
- apb> boot linux-2.2
-
-which is equivalent to
-
- apb> bootl linux.pal vmlinux.gz root=/dev/sda3
-
-If the AUTO_BOOT environment variable is set TRUE, then the default
-configuration will be booted after 10 seconds, unless a key is
-pressed.
-
-+ Boot devices
-
-APB can boot from any filesystem supported by AlphaBIOS. At present
-these are limited to FAT, NTFS and ISO 9660 (CD-ROM).
-
-+ Booting from a network device
-
-Not yet implemented.
-
-
-2. Building APB
-
-APB is an AlphaBIOS/ARC application. Currently it must be built on an
-Microsoft Windows NT 4.0 Alpha processor system, with Microsoft Visual
-C++ 5.0 (or higher), the Microsoft Software Development Kit (SDK) and
-Device Driver Development Kit (DDK) for NT 4.0, and Compaq ARC
-Application Development Kit (ADK) 1.3.
-
-Optionally, APB can be linked against zlib (a free compression
-library) to support reading compressed kernel and PALcode images.
-
-To build, open a command window, set up the environment:
-
- VC++ (e.g "C:Program Files\DevStudio\VC\bin\vcvars32.bat")
- DDK (e.g. "C:\DDK\bin\setenv.bat C:\DDK")
- ADK (e.g. "set ADK=C:\adkv13\adk")
-
-and then and make using nmake. For example:
-
- C:\apb-1.0> nmake
-
-where the DDK has been installed on the C: drive.
-
-If building with compressed file support, obtain and unpack zlib
-(http://www.cdrom.com/pub/infozip/zlib/), set the variable ZLIB to
-the zlib directory, and then make. For example
-
- C:\apb-1.0> set ZLIB=C:\zlib-1.1.3
- C:\apb-1.0> nmake
-
-In either case, the executable is placed in the "obj\alpha"
-subdirectory.
-
-
-3. What APB does
-
-Booting Linux with APB involves the following steps:
-
- AlphaBIOS loads and transfers control to APB.
-
- APB is called with an argument specifying the device (as known to
- AlphaBIOS) from which to read the Linux kernel, and additional
- arguments to be passed on to the kernel.
-
- APB sets up the environment for Linux, including loading and
- switching to the correct PAL code, setting up the HWRPB, copying
- kernel arguments to the right location in memory etc.
-
- APB reads the Linux kernel image into memory from the specified
- device (raw disk initially, and eventually filesystems or network
- devices via bootp) and transfers control.
-
-
-4. Modifying APB
-
-APB has been written with the aim of maintaining platform independence
-across all AlphaBIOS (and ARC) systems. Furthermore, all dependence
-on the ARC API has been isolated in the file "arc.c", so that porting
-to another firmware environment should not be too difficult as long as
-it provides a sufficiently complete API.
-
-Additional user commands can be incorporated through the command
-dispatch table in "cmd.c".
-
diff --git a/tools/alpha/cd/up1000/up1000.pal b/tools/alpha/cd/up1000/up1000.pal
deleted file mode 100644
index a47b359f3..000000000
--- a/tools/alpha/cd/up1000/up1000.pal
+++ /dev/null
Binary files differ
diff --git a/tools/alpha/e2fsck.shared b/tools/alpha/e2fsck.shared
deleted file mode 100755
index 765e664a1..000000000
--- a/tools/alpha/e2fsck.shared
+++ /dev/null
Binary files differ
diff --git a/tools/closurepkgs b/tools/closurepkgs
deleted file mode 100755
index 2ef479486..000000000
--- a/tools/closurepkgs
+++ /dev/null
@@ -1,108 +0,0 @@
-#!/usr/bin/perl
-
-use rpmtools;
-
-sub chop_version($) {
- ($_[0] =~ /(.*)-[^-]+-[^-]+/)[0] || $_[0];
-}
-
-sub read_compsslist {
- my ($file) = @_;
- my %compsslist;
-
- local *F;
- open F, $file or die "closurepkgs: unable to open compsslist file $file\n";
- foreach (<F>) {
- my ($name, $level) = /^\s*(\S+)\s+(\d+)/;
- $compsslist{$name} = $level;
- }
- close F;
-
- \%compsslist;
-}
-
-sub main {
- my ($dir, $lang) = @_;
-
- #- compute depslist on line directly.
- my $params = new rpmtools;
- foreach (glob("$dir/*.cz*")) { $params->read_hdlists($_) }
- $params->keep_only_cleaned_provides_files();
- foreach (glob("$dir/*.cz*")) { $params->read_hdlists($_) }
- $params->compute_depslist();
-
- my $compsslist = read_compsslist("$dir/compssList");
-
- #- DO NOT FORGET TO UPDATE HERE ACCORDING TO gi/perl-install/install_any.pm
- my @pkgs = qw(XFree86 XFree86-glide-module Device3Dfx Glide_V3-DRI Glide_V5 Mesa
- dhcpcd pump dhcpxd dhcp-client isdn4net isdn4k-utils dev pptp-adsl-fr rp-pppoe ppp ypbind
- rhs-printfilters lpr cups cups-drivers samba ncpfs ghostscript-utils
- kernel-pcmcia-cs apmd cdrecord
- );
- push @pkgs, "XFree86-$_" foreach qw(3DLabs 3dfx 8514 AGX FBDev I128 Mach8 Mach32 Mach64 Mono P9000 Rage128 S3 S3V SVGA VGA16 W32);
-
- #- closure the list of package to be kept for oem.
- my %closure;
- foreach (@pkgs) {
- $closure{$_} = 1;
- map { $closure{chop_version($_->{name})} = 1 } map { $params->{depslist}[$_] } map { split /\|/ } split ' ', $params->{info}{$_}{deps};
- }
- #- only if dependancy is ok.
- $closure{$_} = 1 foreach qw(xpp kups kisdn);
-
- #- closure the list of package to always install for oem. (level >= 50)...
- my %install;
- my @force_install;
- if ($params->{info}{"locales-$lang"}) {
- foreach (keys %{$params->{info}}) {
- push @force_install, $_ if grep { $_ == $params->{info}{"locales-$lang"}{id} } split ' ', $params->{info}{$_}{deps};
- }
- } else {
- foreach (keys %{$params->{info}}) {
- push @force_install, $_ if grep { $params->{depslist}[$_]{name} =~ /locales-/ } split ' ', $params->{info}{$_}{deps};
- }
- }
- push @force_install, qw(cups cups-drivers drakprofile draksync irda-utils numlock raidtools reiserfs-utils
- Mesa Mesa-demos alsa alsa-utils);
- foreach (qw(
- Aurora xawtv kwintv xscreensaver-gl Mesa-demos xmms-mesa bzflag csmash gltron spacecup chromium tuxracer
- ), @force_install, grep { $compsslist->{$_} >= 50 } keys %{$params->{info}}) {
- $install{$_} = 1;
- map { $install{chop_version($_->{name})} = 1 } map { $params->{depslist}[$_] } map { split /\|/ } split ' ', $params->{info}{$_}{deps};
- }
-
- #- remove base packages, which have to be installed, according to basesystem.
- delete $closure{'basesystem'};
- $install{'basesystem'} = 1;
- map { delete $closure{chop_version($_->{name})};
- $install{chop_version($_->{name})} = 1 } map { $params->{depslist}[$_] } map { split /\|/ } split ' ', $params->{info}{'basesystem'}{deps};
-
- #- special packages that are to be move to closure always ...
- foreach (qw(kernel-smp kernel-linus kernel-secure hackkernel-smp hackkernel-linus hackkernel-secure
- Aurora xawtv kwintv xscreensaver-gl xmms-mesa bzflag csmash gltron spacecup chromium tuxracer
- )) {
- $params->{info}{$_} or next;
- $closure{$_} = 1;
- delete $install{$_};
- }
-
- #- dump out the list of package according to the 2 lists defined above.
- my $total_install = 0;
- my $total_closure = 0;
- foreach (@{$params->{depslist}}) {
- my $tiny_name = chop_version($_->{name});
- if (exists $install{$tiny_name}) {
- my $p = $params->{info}{$tiny_name};
- $total_install += $p->{size};
- print "I:$p->{name}-$p->{version}-$p->{release}\n";
- } elsif (exists $closure{$tiny_name}) {
- my $p = $params->{info}{$tiny_name};
- $total_closure += $p->{size};
- print "C:$p->{name}-$p->{version}-$p->{release}\n";
- }
- }
- print "\n\ntotal_install=$total_install\n";
- print "total_closure=$total_closure\n";
-}
-
-main(@ARGV);
diff --git a/tools/cvslog2changelog.pl b/tools/cvslog2changelog.pl
deleted file mode 100755
index 7109ad306..000000000
--- a/tools/cvslog2changelog.pl
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/usr/bin/perl
-
-while (<>) {
- if ($e = /^description:/ .. /^={77}/) {
- next if $e == 1 || $e =~ /E0/;
- if (/^-{28}/ .. /^date: /) {
- if (/^date: (\S+)\s.*author: (\S+);/) {
- ($date, $user) = ($1, $2);
- }
- } elsif (!/^branches: / && !/file .* was initially added on branch/ && !/empty log message/ && !/no_comment/) {
- $l{$date}{$user}{$file} .= $_;
- }
- } elsif (/Working file: (.*)/) {
- $file = $1;
- }
-}
-
-foreach $date (reverse sort keys %l) {
- foreach $user (sort keys %{$l{$date}}) {
- $fuser = $users{$user} || $user;
- print "$date $fuser\n\n";
- my %inv;
- while (($file, $log) = each %{$l{$date}{$user}}) {
- $log =~ s/^\s+( \*)?//ms;
- $log =~ s/\s+$//ms;
- $log = "\n$log" if $log =~ /^-/;
- push @{$inv{$log}}, $file;
- }
- foreach $log (keys %inv) {
- $line = join(', ', @{$inv{$log}}) . ($log !~ /^\(/ && ':') . " $log";
- print "\t* ", join("\n\t", auto_fill($line, 72)), "\n\n";
- }
- }
-}
-
-1;
-
-sub auto_fill {
- my ($line, $col) = @_;
- map {
- my @l;
- my $l = '';
- $_ = " $_" if /^-/;
- while ($_) {
- s/^(\s*)(\S*)//;
- my $m = "$l$1$2";
- if (length $m > $col) {
- push @l, $l;
- $l = $2;
- } else {
- $l = $m
- }
- }
- @l, $l;
- } split("\n", $line);
-}
-
-BEGIN {
- %users = (
- 'gc' => 'Guillaume Cottenceau <gc@mandrakesoft.com>',
- 'fpons' => 'Franois Pons <fpons@mandrakesoft.com>',
- 'pablo' => 'Pablo Saratxaga <pablo@mandrakesoft.com>',
- 'damien' => 'dam\'s <dams@idm.fr>',
- 'install' => 'DrakX <install@mandrakesoft.com>',
- 'prigaux' => 'Pixel <pixel@mandrakesoft.com>',
- 'flepied' => 'Frederic Lepied <flepied@mandrakesoft.com>',
- 'chmouel' => 'Chmouel Boudjnah <chmouel@mandrakesoft.com>',
- 'uid526' => 'dam\'s <damien@mandrakesoft.com>',
- 'uid533' => 'Franois Pons <fpons@mandrakesoft.com>',
- 'uid535' => 'Guillaume Cottenceau <gc@mandrakesoft.com>',
- 'uid553' => 'Pixel <pixel@mandrakesoft.com>',
- 'tvignaud' => 'Thierry Vignaud <tvignaud@mandrakesoft.com>',
- 'sbenedict'=>'Stew Benedict <sbenedict@mandrakesoft.com>',
- 'tkamppeter' => 'Till Kamppeter <till@mandrakesoft.com>',
- 'yduret' => 'Yves Duret <yduret@mandrakesoft.com>',
- 'daouda' => 'Daouda Lo <daouda@mandrakesoft.com>',
- 'dchaumette' => 'Damien Chaumette <dchaumette@mandrakesoft.com>',
- 'cbelisle' => 'Christian Belisle <cbelisle@mandrakesoft.com>',
- 'warly' => 'Warly <warly@mandrakesoft.com>',
- 'jgotti' => 'Jonathan Gotti <jgotti@mandrakesoft.com>',
- 'fcrozat' => 'Frederic Crozat <fcrozat@mandrakesoft.com>',
- 'baudens' => 'David Baudens <baudens@mandrakesoft.com>',
- );
-}
diff --git a/tools/extractchangelog b/tools/extractchangelog
deleted file mode 100644
index d838a0b68..000000000
--- a/tools/extractchangelog
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/usr/bin/perl
-
diff --git a/tools/gencompss b/tools/gencompss
deleted file mode 100755
index b12328e49..000000000
--- a/tools/gencompss
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/perl
-
-open F, "packdrake -c @ARGV | hdlist2groups - |";
-foreach (<F>) {
- chop;
- /(.*):(.*)/;
- $l{$2}{$1} = undef;
-}
-close F or die;
-foreach (sort keys %l) {
- print "$_\n";
- print "\t$_\n" foreach sort keys %{$l{$_}};
- print "\n";
-}
diff --git a/tools/gencryptofiles b/tools/gencryptofiles
deleted file mode 100755
index f86b1ec3a..000000000
--- a/tools/gencryptofiles
+++ /dev/null
@@ -1,115 +0,0 @@
-#!/usr/bin/perl
-
-#- Mandrake cryptographic package hdlist and depslist generation tools.
-#- Copyright (C) 1999 MandrakeSoft (fpons@mandrakesoft.com)
-#-
-#- This program is free software; you can redistribute it and/or modify
-#- it under the terms of the GNU General Public License as published by
-#- the Free Software Foundation; either version 2, or (at your option)
-#- any later version.
-#-
-#- This program is distributed in the hope that it will be useful,
-#- but WITHOUT ANY WARRANTY; without even the implied warranty of
-#- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-#- GNU General Public License for more details.
-#-
-#- You should have received a copy of the GNU General Public License
-#- along with this program; if not, write to the Free Software
-#- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-#- usage: gencryptofiles <crypto_dir>
-#- build an hdlist and depslist file for crypto, need rpmtools also.
-
-my %resolver = (
- '/bin/sh' => 'bash',
- '/bin/bash' => 'bash',
- '/usr/bin/perl' => 'perl',
- '/usr/bin/perl5' => 'perl',
-
- 'libBrokenLocale.so' => 'glibc',
- 'libICE.so' => 'XFree86-libs',
- 'libSM.so' => 'XFree86-libs',
- 'libX11.so' => 'XFree86-libs',
- 'libXext.so' => 'XFree86-libs',
- 'libXmu.so' => 'XFree86-libs',
- 'libXpm.so' => 'xpm',
- 'libXt.so' => 'XFree86-libs',
- 'libc.so.6' => 'glibc',
- 'libgdbm.so' => 'gdbm',
- 'libgpm.so' => 'gpm',
- 'libm.so' => 'glibc',
- 'libncurses.so' => 'ncurses',
- 'libnsl.so' => 'glibc',
- 'libpam.so' => 'pam',
- 'libpthread.so' => 'glibc',
- 'libreadline.so' => 'readline',
- 'libstdc++-libc6.1-2.so' => 'libstdc++',
- 'libstdc++.so' => 'libstdc++-compat',
- 'libutil.so' => 'glibc',
- 'libz.so' => 'zlib',
- 'smtpdaemon' => 'postfix',
- );
-
-sub gendepslist_crypto {
- my ($dir) = @_;
- my %depslist;
-
- #- get information about each rpm.
- local *DIR;
- opendir DIR, $dir or die "cannot open directory: $!\n";
- while ($_ = readdir DIR) {
- my ($key) = /(.*)\..*\.rpm$/ or next;
- my ($name) = /(.*)-[^-]*-[^-]*-/;
-
- my $size = `rpm -qp --queryformat="%{SIZE}" $dir/$_`;
- my @filelist = split "\n", `rpm -qpl $dir/$_`;
- my @requires = split "\n", `rpm -qpR $dir/$_`;
-
- $depslist{$key} = {
- key => $key,
- size => $size,
- filelist => \@filelist,
- requires => \@requires,
- deps => [],
- };
-
- foreach (@filelist) {
- $resolver{$_} = $name;
- m|.*/([^/]*)$| and $resolver{$1} = $name;
- }
- }
- close DIR;
-
- #- resolve the dependancies.
- foreach my $pkg (values %depslist) {
- foreach (@{$pkg->{requires}}) {
- $resolver{$_} and push(@{$pkg->{deps}}, $resolver{$_}), next;
- m|^([^\s\(]*)| and $resolver{$1} and push(@{$pkg->{deps}}, $resolver{$1}), next;
- m|^.*/([^/\s\(]*)| and $resolver{$1} and push(@{$pkg->{deps}}, $resolver{$1}), next;
- m|^([^\s\(]*\.so)| and $resolver{$1} and push(@{$pkg->{deps}}, $resolver{$1}), next;
- m|^.*/([^\s\(]*\.so)| and $resolver{$1} and push(@{$pkg->{deps}}, $resolver{$1}), next;
- m|^([\w-]*)(?:\s+.*)$| and push(@{$pkg->{deps}}, $1); #- last and default to package name.
- }
- }
-
- #- build depslist-crypto file.
- local *F;
- open F, ">$dir/depslist-crypto" or die "cannot open depslist-crypto file for writing: $!\n";
- foreach (values %depslist) {
- my %deps;
- @deps{@{$_->{deps}}} = ();
- print F "$_->{key} $_->{size} ", join(" ", keys %deps), "\n";
- }
- close F;
-}
-
-sub main {
- my ($dir) = @_;
- -d $dir or die "usage: gencryptofiles <crypto_dir>\n";
- -x "/usr/bin/genhdlist_cz2" or die "I need rpmtools to work (ie /usr/bin/genhdlist_cz2)\n";
-
- print `genhdlist_cz2 -o $dir/hdlist-crypto.cz2 $dir`;
- gendepslist_crypto($dir);
-}
-
-main(@ARGV);
diff --git a/tools/genmodparm b/tools/genmodparm
deleted file mode 100755
index e4aa5d4e9..000000000
--- a/tools/genmodparm
+++ /dev/null
@@ -1,145 +0,0 @@
-#!/usr/bin/perl
-
-# Mandrake Graphic Install
-# Copyright (C) 1999 MandrakeSoft (fpons@mandrakesoft.com)
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-$srctop = $ARGV[0];
-
-unless (-d $srctop) {
- print STDERR "usage: $0 <linux_src_top>\n";
- print STDERR " <linux_src_top> is the linux source top directory,\n";
- print STDERR " for example /usr/src/linux\n";
- exit 1;
-}
-
-open (FILE_LIST, "find $srctop/ -name \"*.c\" |");
-
-while (<FILE_LIST>) {
- chomp;
-
- my $file = $_;
- my $dir = $file;
- my $module = $file;
- my $incfile;
- my @incfiles;
- my %parms;
- my $oldline;
- my $descline;
- my $default;
- my %substvars;
-
- # get mormalized directory name.
- $dir =~ s/^(.*)\/[^\/]*$/$1/;
-
- # get mormalized module name.
- $module =~ s/^.*\/([^\/]*)\.c$/$1/;
-
- # search for recogniwed special keywords.
- open (F, $file);
- while (<F>) {
- # track for include files.
- if (/^\#\s*include\s+[\<\"]([\w-\.\/]*)[\"\>]/) {
- # search from /usr/src/linux/include directory.
- push @incfiles, "/usr/src/linux/include/$1";
-
- # search from current working directory.
- push @incfiles, "$dir/$1";
- }
-
- if (/^\s*MODULE_PARM\s*\((\w*)\s*,\s*\"/) {
- $parms{$1}{type} = '?';
- }
- if (/^\s*MODULE_PARM\s*\((\w*)\s*,\s*\"([^\"]*)\"\s*\)/) {
- $parms{$1}{type} = $2;
- }
- if (/^\s*MODULE_PARM_DESC\s*\((\w*)\s*,\s*\"([^\"]*)\"\s*\)/) {
- $parms{$1}{desc} = $2;
- }
- }
- close F;
-
- # parse associated include file if exist.
- foreach $incfile (@incfiles) {
- if (-r $incfile) {
- open (F, $incfile);
- while (<F>) {
- s/^(.*)\/\*.*$/$1/g;
- if (/^\#\s*define\s*(\w*)\s*(.*)$/) {
- $substvars{$1}=$2;
- }
- }
- close F;
- }
- }
-
- # search for comments about each module parameter.
- open (F, $file);
- while (<F>) {
- my $line = $_;
-
- # manage simple preprocessor.
- s/^(.*)\/\*.*$/$1/g;
- if (/^\#\s*define\s*(\w*)\s*(.*)$/) {
- $substvars{$1}=$2;
- }
-
- # parse for parameters definition.
- foreach $parm (keys %parms) {
- if ($line =~ /^\s*(static\s+)?((short|long|signed|unsigned)\s+)?\w+(\s*\**\s+|\s+\**\s*)$parm(\s*\[.*\]\s*)?\s*=\s*([^\;]*)\;/) {
- $default = $descline = $6;
- $default =~ s/^(.*)\/\*.*$/$1/g;
-
- # remove hypothetic couple of { }.
- $default =~ s/^(\s*\{\s*)(.*)(\s*\}\s*)$/$2/;
-
- # subsitute variable.
- foreach $substvar (keys %substvars) {
- $default =~ s/$substvar/$substvars{$substvar}/g;
- }
- $default =~ s/NULL/0/g;
- $default =~ s/^\s*(.*?)\s*$/$1/;
- $default = '' if $default =~ /\(\s*\(\s*void*\s*\*\)\s*0\s*\)\s*,?/;
-
- # store value.
- $parms{$parm}{default} = $default;
-
- # try to search a comment on the previous line.
- if (!defined($parms{$parm}{desc})) {
- if ($oldline =~ /^\s*\/\*\s*(.*)\s*\*\/\s*$/ || /\/\*\s*(.*)\s*\*\/\s*$/) {
- $parms{$parm}{desc} = $1;
- }
- }
-
- # try to search a comment on the line (multiline not supported).
- if (!defined($parms{$parm}{desc})) {
- if ($descline =~ /^.*\/\*\s*(.*)\s*\*\/\s*$/) {
- $parms{$parm}{desc} = $1;
- }
- }
- }
- }
- $oldline = $_;
- }
- close F;
-
- # dump all result to stdout associated to current module.
- foreach $parm (keys %parms) {
- print "$module:$parm:$parms{$parm}{type}:$parms{$parm}{default}:$parms{$parm}{desc}\n";
- }
-}
-
-close FILE_LIST;
diff --git a/tools/i386/busybox b/tools/i386/busybox
deleted file mode 100755
index cebd84853..000000000
--- a/tools/i386/busybox
+++ /dev/null
Binary files differ
diff --git a/tools/i386/e2fsck.shared b/tools/i386/e2fsck.shared
deleted file mode 100755
index ad4d660a0..000000000
--- a/tools/i386/e2fsck.shared
+++ /dev/null
Binary files differ
diff --git a/tools/i386/mkreiserfs b/tools/i386/mkreiserfs
deleted file mode 100755
index 65fdf49f6..000000000
--- a/tools/i386/mkreiserfs
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/.cvsignore b/tools/i386/netboot/.cvsignore
deleted file mode 100644
index 64daa531c..000000000
--- a/tools/i386/netboot/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-menu.lst
-stage1
-stage2
-automatic.para
diff --git a/tools/i386/netboot/3c503/nbgrub b/tools/i386/netboot/3c503/nbgrub
deleted file mode 100644
index 4f4a14df4..000000000
--- a/tools/i386/netboot/3c503/nbgrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/3c503/pxegrub b/tools/i386/netboot/3c503/pxegrub
deleted file mode 100644
index cce227069..000000000
--- a/tools/i386/netboot/3c503/pxegrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/3c503/stage1 b/tools/i386/netboot/3c503/stage1
deleted file mode 100755
index 8c923a183..000000000
--- a/tools/i386/netboot/3c503/stage1
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/3c503/stage2 b/tools/i386/netboot/3c503/stage2
deleted file mode 100644
index 35dbd34cb..000000000
--- a/tools/i386/netboot/3c503/stage2
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/3c507/nbgrub b/tools/i386/netboot/3c507/nbgrub
deleted file mode 100644
index 2a09e2095..000000000
--- a/tools/i386/netboot/3c507/nbgrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/3c507/pxegrub b/tools/i386/netboot/3c507/pxegrub
deleted file mode 100644
index 55527173b..000000000
--- a/tools/i386/netboot/3c507/pxegrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/3c507/stage1 b/tools/i386/netboot/3c507/stage1
deleted file mode 100755
index 8c923a183..000000000
--- a/tools/i386/netboot/3c507/stage1
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/3c507/stage2 b/tools/i386/netboot/3c507/stage2
deleted file mode 100644
index 83b8308bf..000000000
--- a/tools/i386/netboot/3c507/stage2
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/3c509/nbgrub b/tools/i386/netboot/3c509/nbgrub
deleted file mode 100644
index fca541707..000000000
--- a/tools/i386/netboot/3c509/nbgrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/3c509/pxegrub b/tools/i386/netboot/3c509/pxegrub
deleted file mode 100644
index 00f4c227d..000000000
--- a/tools/i386/netboot/3c509/pxegrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/3c509/stage1 b/tools/i386/netboot/3c509/stage1
deleted file mode 100755
index 8c923a183..000000000
--- a/tools/i386/netboot/3c509/stage1
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/3c509/stage2 b/tools/i386/netboot/3c509/stage2
deleted file mode 100644
index 8923e18aa..000000000
--- a/tools/i386/netboot/3c509/stage2
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/3c529/nbgrub b/tools/i386/netboot/3c529/nbgrub
deleted file mode 100644
index b1dd42069..000000000
--- a/tools/i386/netboot/3c529/nbgrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/3c529/pxegrub b/tools/i386/netboot/3c529/pxegrub
deleted file mode 100644
index 7a265d20a..000000000
--- a/tools/i386/netboot/3c529/pxegrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/3c529/stage1 b/tools/i386/netboot/3c529/stage1
deleted file mode 100755
index 8c923a183..000000000
--- a/tools/i386/netboot/3c529/stage1
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/3c529/stage2 b/tools/i386/netboot/3c529/stage2
deleted file mode 100644
index 98f710a27..000000000
--- a/tools/i386/netboot/3c529/stage2
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/3c595/nbgrub b/tools/i386/netboot/3c595/nbgrub
deleted file mode 100644
index f4d7ca004..000000000
--- a/tools/i386/netboot/3c595/nbgrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/3c595/pxegrub b/tools/i386/netboot/3c595/pxegrub
deleted file mode 100644
index 3e5a81018..000000000
--- a/tools/i386/netboot/3c595/pxegrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/3c595/stage1 b/tools/i386/netboot/3c595/stage1
deleted file mode 100755
index 8c923a183..000000000
--- a/tools/i386/netboot/3c595/stage1
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/3c595/stage2 b/tools/i386/netboot/3c595/stage2
deleted file mode 100644
index a1638948d..000000000
--- a/tools/i386/netboot/3c595/stage2
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/3c90x/nbgrub b/tools/i386/netboot/3c90x/nbgrub
deleted file mode 100644
index d9d9a7bfe..000000000
--- a/tools/i386/netboot/3c90x/nbgrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/3c90x/pxegrub b/tools/i386/netboot/3c90x/pxegrub
deleted file mode 100644
index 621456a88..000000000
--- a/tools/i386/netboot/3c90x/pxegrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/3c90x/stage1 b/tools/i386/netboot/3c90x/stage1
deleted file mode 100755
index 8c923a183..000000000
--- a/tools/i386/netboot/3c90x/stage1
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/3c90x/stage2 b/tools/i386/netboot/3c90x/stage2
deleted file mode 100644
index 28a350009..000000000
--- a/tools/i386/netboot/3c90x/stage2
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/depca/nbgrub b/tools/i386/netboot/depca/nbgrub
deleted file mode 100644
index 2b413376b..000000000
--- a/tools/i386/netboot/depca/nbgrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/depca/pxegrub b/tools/i386/netboot/depca/pxegrub
deleted file mode 100644
index 458733521..000000000
--- a/tools/i386/netboot/depca/pxegrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/depca/stage1 b/tools/i386/netboot/depca/stage1
deleted file mode 100755
index 8c923a183..000000000
--- a/tools/i386/netboot/depca/stage1
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/depca/stage2 b/tools/i386/netboot/depca/stage2
deleted file mode 100644
index 339375ce3..000000000
--- a/tools/i386/netboot/depca/stage2
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/device.map b/tools/i386/netboot/device.map
deleted file mode 100644
index bf3423b23..000000000
--- a/tools/i386/netboot/device.map
+++ /dev/null
@@ -1 +0,0 @@
-(fd0) /dev/fd0
diff --git a/tools/i386/netboot/eepro/nbgrub b/tools/i386/netboot/eepro/nbgrub
deleted file mode 100644
index c9a080623..000000000
--- a/tools/i386/netboot/eepro/nbgrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/eepro/pxegrub b/tools/i386/netboot/eepro/pxegrub
deleted file mode 100644
index de839080d..000000000
--- a/tools/i386/netboot/eepro/pxegrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/eepro/stage1 b/tools/i386/netboot/eepro/stage1
deleted file mode 100755
index 8c923a183..000000000
--- a/tools/i386/netboot/eepro/stage1
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/eepro/stage2 b/tools/i386/netboot/eepro/stage2
deleted file mode 100644
index 5703e33c8..000000000
--- a/tools/i386/netboot/eepro/stage2
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/eepro100/nbgrub b/tools/i386/netboot/eepro100/nbgrub
deleted file mode 100644
index 841acc541..000000000
--- a/tools/i386/netboot/eepro100/nbgrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/eepro100/pxegrub b/tools/i386/netboot/eepro100/pxegrub
deleted file mode 100644
index 7eea03239..000000000
--- a/tools/i386/netboot/eepro100/pxegrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/eepro100/stage1 b/tools/i386/netboot/eepro100/stage1
deleted file mode 100755
index 8c923a183..000000000
--- a/tools/i386/netboot/eepro100/stage1
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/eepro100/stage2 b/tools/i386/netboot/eepro100/stage2
deleted file mode 100644
index a8ac76752..000000000
--- a/tools/i386/netboot/eepro100/stage2
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/epic100/nbgrub b/tools/i386/netboot/epic100/nbgrub
deleted file mode 100644
index b896e95d3..000000000
--- a/tools/i386/netboot/epic100/nbgrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/epic100/pxegrub b/tools/i386/netboot/epic100/pxegrub
deleted file mode 100644
index b54698e3f..000000000
--- a/tools/i386/netboot/epic100/pxegrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/epic100/stage1 b/tools/i386/netboot/epic100/stage1
deleted file mode 100755
index 8c923a183..000000000
--- a/tools/i386/netboot/epic100/stage1
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/epic100/stage2 b/tools/i386/netboot/epic100/stage2
deleted file mode 100644
index 7742e2bc2..000000000
--- a/tools/i386/netboot/epic100/stage2
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/exos205/nbgrub b/tools/i386/netboot/exos205/nbgrub
deleted file mode 100644
index 5218c738d..000000000
--- a/tools/i386/netboot/exos205/nbgrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/exos205/pxegrub b/tools/i386/netboot/exos205/pxegrub
deleted file mode 100644
index 951284ffe..000000000
--- a/tools/i386/netboot/exos205/pxegrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/exos205/stage1 b/tools/i386/netboot/exos205/stage1
deleted file mode 100755
index 8c923a183..000000000
--- a/tools/i386/netboot/exos205/stage1
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/exos205/stage2 b/tools/i386/netboot/exos205/stage2
deleted file mode 100644
index 38e9e1562..000000000
--- a/tools/i386/netboot/exos205/stage2
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/grub b/tools/i386/netboot/grub
deleted file mode 100755
index b4d77fe36..000000000
--- a/tools/i386/netboot/grub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/lance/nbgrub b/tools/i386/netboot/lance/nbgrub
deleted file mode 100644
index fe9df36be..000000000
--- a/tools/i386/netboot/lance/nbgrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/lance/pxegrub b/tools/i386/netboot/lance/pxegrub
deleted file mode 100644
index 265f276c0..000000000
--- a/tools/i386/netboot/lance/pxegrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/lance/stage1 b/tools/i386/netboot/lance/stage1
deleted file mode 100755
index 8c923a183..000000000
--- a/tools/i386/netboot/lance/stage1
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/lance/stage2 b/tools/i386/netboot/lance/stage2
deleted file mode 100644
index 653f7b212..000000000
--- a/tools/i386/netboot/lance/stage2
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/makeImages b/tools/i386/netboot/makeImages
deleted file mode 100755
index 79d45c11e..000000000
--- a/tools/i386/netboot/makeImages
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-# compile multiple grub stages (1, 2, pxegrub and nbgrub) for all supported network cards
-LOCALPATH=`pwd`
-PATHGRUB="../grub-0.91" # Path were grub is stored
-DRIVERTOCOMPILE=`grep NETBOOT_DRIVERS= ${PATHGRUB}/configure.in | cut -d " " -f 4 | cut -d "." -f 1`
-
-echo "Cleaning old drivers"
-for i in `ls`
-do
- if [ -d $i ]; then
- rm -rf $i
- fi
-
-done
-
-cd ${PATHGRUB}
-
-echo "Compiling new ones"
-for i in ${DRIVERTOCOMPILE}
- do
- make clean
- ./configure --enable-$i --enable-diskless
- make
- mkdir ${LOCALPATH}/$i
- cp stage1/stage1 ${LOCALPATH}/$i/stage1
- cp stage2/stage2 ${LOCALPATH}/$i/stage2
- cp stage2/pxegrub ${LOCALPATH}/$i/pxegrub
- cp stage2/nbgrub ${LOCALPATH}/$i/nbgrub
- echo "compil done for " $i
-done
-cp ${PATHGRUB}/grub/grub ${LOCALPATH} -f
diff --git a/tools/i386/netboot/make_boot_network b/tools/i386/netboot/make_boot_network
deleted file mode 100755
index a0b0302a4..000000000
--- a/tools/i386/netboot/make_boot_network
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/sh
-
-type=$1
-[ -z "$type" ] && { echo "usage: $0 <network card type> (eg: 3c90x)" ; exit 1; }
-
-[ -e menu.lst ] || { echo "missing file menu.lst, create one based on menu.lst.example"; exit 1; }
-
-ln -sf ${type}/stage1 stage1
-ln -sf ${type}/stage2 stage2
-
-mformat a:
-mcopy {stage1,stage2} a:
-mcopy menu.lst a:menu.lst
-
-./grub --batch <<EOF
-install (fd0)/stage1 d (fd0) (fd0)/stage2 p (fd0)/menu.lst $automatic
-EOF
diff --git a/tools/i386/netboot/menu.lst.example b/tools/i386/netboot/menu.lst.example
deleted file mode 100644
index 41022579a..000000000
--- a/tools/i386/netboot/menu.lst.example
+++ /dev/null
@@ -1,21 +0,0 @@
-timeout 0
-default 0
-
-title nfs
-dhcp
-tftpserver 192.168.100.39
-kernel (nd)/vmlinuz ramdisk=32000 vga=788 kickstart=Mandrake/base/auto_inst.cfg.pl useless_thing_accepted automatic=method:nfs,network:static,ip:192.168.100.25,dns:192.168.100.11,gateway:192.168.100.1,server:192.168.100.39,directory:/export,user:a,pass:a
-initrd (nd)/network.rdz
-
-title ftp
-dhcp
-tftpserver 192.168.100.39
-kernel (nd)/vmlinuz ramdisk=32000 vga=788 kickstart=Mandrake/base/auto_inst.cfg.pl useless_thing_accepted automatic=method:ftp,network:static,ip:192.168.100.25,dns:192.168.100.11,gateway:192.168.100.1,server:192.168.100.39,directory:/export,user:a,pass:a
-initrd (nd)/network.rdz
-
-title rescue
-dhcp
-tftpserver 192.168.100.39
-kernel (nd)/vmlinuz rescue rw root=/dev/ram3 ramdisk=32000 vga=788 kickstart=Mandrake/base/auto_inst.cfg.pl useless_thing_accepted automatic=method:nfs,network:static,ip:192.168.100.25,dns:192.168.100.11,gateway:192.168.100.1,server:192.168.100.39,directory:/export,user:a,pass:a
-initrd (nd)/network.rdz
-
diff --git a/tools/i386/netboot/ne/nbgrub b/tools/i386/netboot/ne/nbgrub
deleted file mode 100644
index 622e5db90..000000000
--- a/tools/i386/netboot/ne/nbgrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/ne/pxegrub b/tools/i386/netboot/ne/pxegrub
deleted file mode 100644
index 0d59f4473..000000000
--- a/tools/i386/netboot/ne/pxegrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/ne/stage1 b/tools/i386/netboot/ne/stage1
deleted file mode 100755
index 8c923a183..000000000
--- a/tools/i386/netboot/ne/stage1
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/ne/stage2 b/tools/i386/netboot/ne/stage2
deleted file mode 100644
index 60877704a..000000000
--- a/tools/i386/netboot/ne/stage2
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/ne2100/nbgrub b/tools/i386/netboot/ne2100/nbgrub
deleted file mode 100644
index 86a640cfd..000000000
--- a/tools/i386/netboot/ne2100/nbgrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/ne2100/pxegrub b/tools/i386/netboot/ne2100/pxegrub
deleted file mode 100644
index 289459191..000000000
--- a/tools/i386/netboot/ne2100/pxegrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/ne2100/stage1 b/tools/i386/netboot/ne2100/stage1
deleted file mode 100755
index 8c923a183..000000000
--- a/tools/i386/netboot/ne2100/stage1
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/ne2100/stage2 b/tools/i386/netboot/ne2100/stage2
deleted file mode 100644
index 4db05ff1b..000000000
--- a/tools/i386/netboot/ne2100/stage2
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/ni5010/nbgrub b/tools/i386/netboot/ni5010/nbgrub
deleted file mode 100644
index befe61355..000000000
--- a/tools/i386/netboot/ni5010/nbgrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/ni5010/pxegrub b/tools/i386/netboot/ni5010/pxegrub
deleted file mode 100644
index 9ba588161..000000000
--- a/tools/i386/netboot/ni5010/pxegrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/ni5010/stage1 b/tools/i386/netboot/ni5010/stage1
deleted file mode 100755
index 8c923a183..000000000
--- a/tools/i386/netboot/ni5010/stage1
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/ni5010/stage2 b/tools/i386/netboot/ni5010/stage2
deleted file mode 100644
index ad87dd76e..000000000
--- a/tools/i386/netboot/ni5010/stage2
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/ni5210/nbgrub b/tools/i386/netboot/ni5210/nbgrub
deleted file mode 100644
index f32d888e0..000000000
--- a/tools/i386/netboot/ni5210/nbgrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/ni5210/pxegrub b/tools/i386/netboot/ni5210/pxegrub
deleted file mode 100644
index c9378a973..000000000
--- a/tools/i386/netboot/ni5210/pxegrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/ni5210/stage1 b/tools/i386/netboot/ni5210/stage1
deleted file mode 100755
index 8c923a183..000000000
--- a/tools/i386/netboot/ni5210/stage1
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/ni5210/stage2 b/tools/i386/netboot/ni5210/stage2
deleted file mode 100644
index 3f2b6897e..000000000
--- a/tools/i386/netboot/ni5210/stage2
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/ni6510/nbgrub b/tools/i386/netboot/ni6510/nbgrub
deleted file mode 100644
index 9f738a857..000000000
--- a/tools/i386/netboot/ni6510/nbgrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/ni6510/pxegrub b/tools/i386/netboot/ni6510/pxegrub
deleted file mode 100644
index 57b4cbc31..000000000
--- a/tools/i386/netboot/ni6510/pxegrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/ni6510/stage1 b/tools/i386/netboot/ni6510/stage1
deleted file mode 100755
index 8c923a183..000000000
--- a/tools/i386/netboot/ni6510/stage1
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/ni6510/stage2 b/tools/i386/netboot/ni6510/stage2
deleted file mode 100644
index e1d209afc..000000000
--- a/tools/i386/netboot/ni6510/stage2
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/ns8390/nbgrub b/tools/i386/netboot/ns8390/nbgrub
deleted file mode 100644
index e2fc9c88f..000000000
--- a/tools/i386/netboot/ns8390/nbgrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/ns8390/pxegrub b/tools/i386/netboot/ns8390/pxegrub
deleted file mode 100644
index 2d2aa4654..000000000
--- a/tools/i386/netboot/ns8390/pxegrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/ns8390/stage1 b/tools/i386/netboot/ns8390/stage1
deleted file mode 100755
index 8c923a183..000000000
--- a/tools/i386/netboot/ns8390/stage1
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/ns8390/stage2 b/tools/i386/netboot/ns8390/stage2
deleted file mode 100644
index 689d8513f..000000000
--- a/tools/i386/netboot/ns8390/stage2
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/otulip/nbgrub b/tools/i386/netboot/otulip/nbgrub
deleted file mode 100644
index 59b7c5e74..000000000
--- a/tools/i386/netboot/otulip/nbgrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/otulip/pxegrub b/tools/i386/netboot/otulip/pxegrub
deleted file mode 100644
index 48ae66374..000000000
--- a/tools/i386/netboot/otulip/pxegrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/otulip/stage1 b/tools/i386/netboot/otulip/stage1
deleted file mode 100755
index 8c923a183..000000000
--- a/tools/i386/netboot/otulip/stage1
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/otulip/stage2 b/tools/i386/netboot/otulip/stage2
deleted file mode 100644
index f8353a1bb..000000000
--- a/tools/i386/netboot/otulip/stage2
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/rtl8139/nbgrub b/tools/i386/netboot/rtl8139/nbgrub
deleted file mode 100644
index d8686c84c..000000000
--- a/tools/i386/netboot/rtl8139/nbgrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/rtl8139/pxegrub b/tools/i386/netboot/rtl8139/pxegrub
deleted file mode 100644
index 46e4665cc..000000000
--- a/tools/i386/netboot/rtl8139/pxegrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/rtl8139/stage1 b/tools/i386/netboot/rtl8139/stage1
deleted file mode 100755
index 8c923a183..000000000
--- a/tools/i386/netboot/rtl8139/stage1
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/rtl8139/stage2 b/tools/i386/netboot/rtl8139/stage2
deleted file mode 100644
index d3418e589..000000000
--- a/tools/i386/netboot/rtl8139/stage2
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/sis900/nbgrub b/tools/i386/netboot/sis900/nbgrub
deleted file mode 100644
index d3ff63241..000000000
--- a/tools/i386/netboot/sis900/nbgrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/sis900/pxegrub b/tools/i386/netboot/sis900/pxegrub
deleted file mode 100644
index 0de4866b6..000000000
--- a/tools/i386/netboot/sis900/pxegrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/sis900/stage1 b/tools/i386/netboot/sis900/stage1
deleted file mode 100755
index 8c923a183..000000000
--- a/tools/i386/netboot/sis900/stage1
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/sis900/stage2 b/tools/i386/netboot/sis900/stage2
deleted file mode 100644
index 5b466e882..000000000
--- a/tools/i386/netboot/sis900/stage2
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/sk_g16/nbgrub b/tools/i386/netboot/sk_g16/nbgrub
deleted file mode 100644
index a3684a225..000000000
--- a/tools/i386/netboot/sk_g16/nbgrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/sk_g16/pxegrub b/tools/i386/netboot/sk_g16/pxegrub
deleted file mode 100644
index 69a34390d..000000000
--- a/tools/i386/netboot/sk_g16/pxegrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/sk_g16/stage1 b/tools/i386/netboot/sk_g16/stage1
deleted file mode 100755
index 8c923a183..000000000
--- a/tools/i386/netboot/sk_g16/stage1
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/sk_g16/stage2 b/tools/i386/netboot/sk_g16/stage2
deleted file mode 100644
index 3a118dcdb..000000000
--- a/tools/i386/netboot/sk_g16/stage2
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/smc9000/nbgrub b/tools/i386/netboot/smc9000/nbgrub
deleted file mode 100644
index 94932dac3..000000000
--- a/tools/i386/netboot/smc9000/nbgrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/smc9000/pxegrub b/tools/i386/netboot/smc9000/pxegrub
deleted file mode 100644
index d4f9a4133..000000000
--- a/tools/i386/netboot/smc9000/pxegrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/smc9000/stage1 b/tools/i386/netboot/smc9000/stage1
deleted file mode 100755
index 8c923a183..000000000
--- a/tools/i386/netboot/smc9000/stage1
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/smc9000/stage2 b/tools/i386/netboot/smc9000/stage2
deleted file mode 100644
index 9017fac90..000000000
--- a/tools/i386/netboot/smc9000/stage2
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/stage1.3c59x b/tools/i386/netboot/stage1.3c59x
deleted file mode 100755
index 1cd1292ac..000000000
--- a/tools/i386/netboot/stage1.3c59x
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/stage1.3c90x b/tools/i386/netboot/stage1.3c90x
deleted file mode 100755
index 1cd1292ac..000000000
--- a/tools/i386/netboot/stage1.3c90x
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/stage1.eepro100 b/tools/i386/netboot/stage1.eepro100
deleted file mode 100755
index 90f9c2210..000000000
--- a/tools/i386/netboot/stage1.eepro100
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/stage1.rtl8139 b/tools/i386/netboot/stage1.rtl8139
deleted file mode 100755
index 1cd1292ac..000000000
--- a/tools/i386/netboot/stage1.rtl8139
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/stage1.tulip b/tools/i386/netboot/stage1.tulip
deleted file mode 100755
index 1cd1292ac..000000000
--- a/tools/i386/netboot/stage1.tulip
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/stage1.via-rhine b/tools/i386/netboot/stage1.via-rhine
deleted file mode 100755
index c15d90622..000000000
--- a/tools/i386/netboot/stage1.via-rhine
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/stage2.3c59x b/tools/i386/netboot/stage2.3c59x
deleted file mode 100644
index f1efb805d..000000000
--- a/tools/i386/netboot/stage2.3c59x
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/stage2.3c90x b/tools/i386/netboot/stage2.3c90x
deleted file mode 100644
index b53b66d56..000000000
--- a/tools/i386/netboot/stage2.3c90x
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/stage2.eepro100 b/tools/i386/netboot/stage2.eepro100
deleted file mode 100644
index 5fb781dd8..000000000
--- a/tools/i386/netboot/stage2.eepro100
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/stage2.rtl8139 b/tools/i386/netboot/stage2.rtl8139
deleted file mode 100644
index 39136b67c..000000000
--- a/tools/i386/netboot/stage2.rtl8139
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/stage2.tulip b/tools/i386/netboot/stage2.tulip
deleted file mode 100644
index ca238d182..000000000
--- a/tools/i386/netboot/stage2.tulip
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/stage2.via-rhine b/tools/i386/netboot/stage2.via-rhine
deleted file mode 100644
index 7fb5cb251..000000000
--- a/tools/i386/netboot/stage2.via-rhine
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/tiara/nbgrub b/tools/i386/netboot/tiara/nbgrub
deleted file mode 100644
index f40d1b39d..000000000
--- a/tools/i386/netboot/tiara/nbgrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/tiara/pxegrub b/tools/i386/netboot/tiara/pxegrub
deleted file mode 100644
index cf1321d0b..000000000
--- a/tools/i386/netboot/tiara/pxegrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/tiara/stage1 b/tools/i386/netboot/tiara/stage1
deleted file mode 100755
index 8c923a183..000000000
--- a/tools/i386/netboot/tiara/stage1
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/tiara/stage2 b/tools/i386/netboot/tiara/stage2
deleted file mode 100644
index 5db3cb1cd..000000000
--- a/tools/i386/netboot/tiara/stage2
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/tulip/nbgrub b/tools/i386/netboot/tulip/nbgrub
deleted file mode 100644
index 89a4ce0d4..000000000
--- a/tools/i386/netboot/tulip/nbgrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/tulip/pxegrub b/tools/i386/netboot/tulip/pxegrub
deleted file mode 100644
index 8d2344af1..000000000
--- a/tools/i386/netboot/tulip/pxegrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/tulip/stage1 b/tools/i386/netboot/tulip/stage1
deleted file mode 100755
index 8c923a183..000000000
--- a/tools/i386/netboot/tulip/stage1
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/tulip/stage2 b/tools/i386/netboot/tulip/stage2
deleted file mode 100644
index e637e814a..000000000
--- a/tools/i386/netboot/tulip/stage2
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/w89c840/nbgrub b/tools/i386/netboot/w89c840/nbgrub
deleted file mode 100644
index 068dc4d68..000000000
--- a/tools/i386/netboot/w89c840/nbgrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/w89c840/pxegrub b/tools/i386/netboot/w89c840/pxegrub
deleted file mode 100644
index 38e17d93d..000000000
--- a/tools/i386/netboot/w89c840/pxegrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/w89c840/stage1 b/tools/i386/netboot/w89c840/stage1
deleted file mode 100755
index 8c923a183..000000000
--- a/tools/i386/netboot/w89c840/stage1
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/w89c840/stage2 b/tools/i386/netboot/w89c840/stage2
deleted file mode 100644
index e49a7aea6..000000000
--- a/tools/i386/netboot/w89c840/stage2
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/wd/nbgrub b/tools/i386/netboot/wd/nbgrub
deleted file mode 100644
index e08bc08e6..000000000
--- a/tools/i386/netboot/wd/nbgrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/wd/pxegrub b/tools/i386/netboot/wd/pxegrub
deleted file mode 100644
index 6f3759ccf..000000000
--- a/tools/i386/netboot/wd/pxegrub
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/wd/stage1 b/tools/i386/netboot/wd/stage1
deleted file mode 100755
index 8c923a183..000000000
--- a/tools/i386/netboot/wd/stage1
+++ /dev/null
Binary files differ
diff --git a/tools/i386/netboot/wd/stage2 b/tools/i386/netboot/wd/stage2
deleted file mode 100644
index 64988d4eb..000000000
--- a/tools/i386/netboot/wd/stage2
+++ /dev/null
Binary files differ
diff --git a/tools/i386/sh b/tools/i386/sh
deleted file mode 100755
index 084a97837..000000000
--- a/tools/i386/sh
+++ /dev/null
Binary files differ
diff --git a/tools/ia64/e2fsck.shared b/tools/ia64/e2fsck.shared
deleted file mode 100755
index 1ca570a7b..000000000
--- a/tools/ia64/e2fsck.shared
+++ /dev/null
Binary files differ
diff --git a/tools/ia64/elilo.efi b/tools/ia64/elilo.efi
deleted file mode 100755
index 39151b8e3..000000000
--- a/tools/ia64/elilo.efi
+++ /dev/null
Binary files differ
diff --git a/tools/mailchangelog.pl b/tools/mailchangelog.pl
deleted file mode 100755
index 6e7793eb7..000000000
--- a/tools/mailchangelog.pl
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/usr/bin/perl
-
-open F, '|/usr/sbin/sendmail -oi -t';
-
-chomp($ver = <STDIN>);
-
-print F
-q(Subject: [DrakX] DrakX snapshot #), $ver, q( uploaded
-From: DrakX Builder Robot <devel@mandrakesoft.com>
-To: changelog@linux-mandrake.com
-Reply-To: install@mandrakesoft.com
-
-);
-print F foreach <STDIN>;
diff --git a/tools/make_mdkinst_stage2 b/tools/make_mdkinst_stage2
deleted file mode 100755
index 79dc08cda..000000000
--- a/tools/make_mdkinst_stage2
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/bin/sh
-
-[ $# != 2 ] && {
- echo "usage: make_mdkinst_stage2 <live dir> <output image>" ;
- echo " example: misc/make_mdkinst_stage2 Mandrake/mdkinst Mandrake/base/mdkinst_stage2"
- exit
-}
-
-TMPDIR=${TMPDIR=/tmp}
-STAGE2TMP=$TMPDIR/stage2_tmp
-MKE2FS="/sbin/mke2fs -q -m 0 -F -s 1"
-MNTPOINT=$TMPDIR/stage2_img
-REP4PMS=/usr/bin/perl-install
-DEST=$1
-STAGE2=$2
-
-testandset() { [ -x $1/packdrake ] && BUILD_ARCHIVE=$1/packdrake; }
-testandset `pwd`/misc
-testandset `pwd`/.
-testandset /$DEST/../../misc
-testandset `pwd`/$DEST/../../misc
-[ -z "$BUILD_ARCHIVE" ] && { echo "can't find packdrake"; exit 1; }
-
-if [ $EUID != "0" ]; then
- SUDO="sudo"
- PATH="/sbin:/usr/sbin:$PATH"
-fi
-
-$SUDO rm -rf $STAGE2TMP
-install -d $STAGE2TMP
-$SUDO cp -a $DEST/* $STAGE2TMP
-
-#mkdir -p $MNTPOINT 2>/dev/null
-#for i in $MNTPOINT $STAGE2; do $SUDO umount $i 2>/dev/null ; done
-#dd if=/dev/zero of=$STAGE2 bs=1k count=24000
-#$MKE2FS -N 1000 $STAGE2
-#$SUDO mount -t ext2 $STAGE2 $MNTPOINT -o loop
-# hack to reduce the STAGE2 image (do not edit without modifying in DrakX)
-# be sure to keep the biggest server
-rm -f $STAGE2TMP/usr/X11R6/bin/XF86_{VGA16,3DLabs,TGA,S3}
-rm -f `ls --sort=size $STAGE2TMP/lib/modules.cz-* | perl -ne 'print if $i++'`
-rm -f $STAGE2TMP/usr/bin/{pv*,vg*,lv*} $STAGE2TMP/lib/liblvm*
-rm -f $STAGE2TMP/usr/bin/{resize_reiserfs,fsck.jfs}
-rm -f $STAGE2TMP/usr/X11R6/lib/X11/fonts/{taipei16,gb16fs,k14,baekmuk_gulim_h_14,cu12}.pcf.gz
-rm -rf $STAGE2TMP/usr/share/locale_special
-
-( # only keeping UTF-8
- cd $STAGE2TMP/usr/share/locale;
- mv UTF-8 ..
- rm -rf *
- mv ../UTF-8 .
-)
-for i in /usr/share/keymaps /usr/share/xmodmap; do
- name=`basename $i`
- (cd $STAGE2TMP/$i ; ls * | $BUILD_ARCHIVE -b9s ../$name.cz2 400000)
- rm -rf $STAGE2TMP/$i
-done
-
-
-
-mkdir -p $MNTPOINT 2>/dev/null
-for i in $MNTPOINT $STAGE2; do $SUDO umount $i 2>/dev/null ; done
-dd if=/dev/zero of=$STAGE2 bs=1k count=$[ `du -s $STAGE2TMP | cut -f1` + 1024 + 200 ]
-$MKE2FS -N 1000 $STAGE2
-$SUDO mount -t ext2 $STAGE2 $MNTPOINT -o loop
-
-rmdir $MNTPOINT/lost+found
-$SUDO cp -a $STAGE2TMP/* $MNTPOINT
-$SUDO rm -rf $STAGE2TMP
-
-df $MNTPOINT
-$SUDO umount $STAGE2
-rmdir $MNTPOINT
-
-echo bzipping $STAGE2
-
-bzip2 -f -9 $STAGE2
diff --git a/tools/mkhdlist b/tools/mkhdlist
deleted file mode 100755
index 6ef783ca1..000000000
--- a/tools/mkhdlist
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/sh
-# Regenerate hdlist, root_directory should be the binary
-# root_directory where you find generally this structure :
-#
-# COPYING Mandrake/ RPM-GPG-KEYS VERSION dosutils/ images/ lnx4win/
-# misc/
-
-if [ -z "$1" ];then
- echo "Usage: $(basename $0) /path/to/root_directory/"
- exit 1
-fi
-
-cd $1
-rm -rf /tmp/.build_hdlist/
-./misc/genhdlist_cz2 --noclean --distrib .
-./misc/gendepslist2 -o Mandrake/base/depslist Mandrake/base/hdlist.cz2
diff --git a/tools/ntp_servers.pl b/tools/ntp_servers.pl
deleted file mode 100644
index 62640557c..000000000
--- a/tools/ntp_servers.pl
+++ /dev/null
@@ -1,298 +0,0 @@
-#!/usr/bin/perl
-
-open F, "links -dump http://www.eecis.udel.edu/~mills/ntp/clock1.htm|";
-open G, "links -dump http://www.eecis.udel.edu/~mills/ntp/clock2.htm|";
-
-# Chris Kloiber <ckloiber@redhat.com> writes:
-# > It's not considered polite to use the Stratum 1 servers for purposes that
-# > are not absolutely critical. I would use Stratum 2 servers and live with
-# > the few nanoseconds difference.
-#parse() while <F>;
-
-parse() while <G>;
-
-sub parse {
- /\0/ .. 1 or return;
- if (/^ [\d\0]\d\./) {
- push @all, { name => $name, indic => $indic, %l } if $name;
- %l = ();
- $nb = 0;
- } else {
- s/^\s*//;
- s/\s*$//;
- if ($nb == 2) {
- s/US CA:/US CA/;
- ($indic, $name) = /([A-Z ]*[A-Z])\s+([.\w-]+)/ or die "bad line $_";
- } else {
- s/^(.*):\s*/$field = $1; ''/e;
- $field = lc $field;
- if ($field =~ /policy/) {
- $field = "policy";
- $_ = lc $_;
- s/glad to receive a note//;
- s/[(), ]*$//;
- $_ = "open access" if $_ eq "public";
- }
- $l{$field} .= ($l{$field} && ' ') . $_;
- }
- }
- $nb++;
-}
-
-
-use Data::Dumper;
-#print Dumper(\@all);
-
-foreach (grep { $_->{policy} eq 'open access' } @all) {
- ($country, $state) = split ' ', $_->{indic};
- $country = ucfirst(lc $country_codes{$country});
- $country .= " $state" if $state;
- print "$country (", lc($_->{name}), ")\n";
-}
-
-BEGIN {
-%country_codes = ( # from ftp://ftp.ripe.net/iso3166-countrycodes
-"AF", "AFGHANISTAN",
-"AL", "ALBANIA",
-"DZ", "ALGERIA",
-"AS", "AMERICAN SAMOA",
-"AD", "ANDORRA",
-"AO", "ANGOLA",
-"AI", "ANGUILLA",
-"AQ", "ANTARCTICA",
-"AG", "ANTIGUA AND BARBUDA",
-"AR", "ARGENTINA",
-"AM", "ARMENIA",
-"AW", "ARUBA",
-"AU", "AUSTRALIA",
-"AT", "AUSTRIA",
-"AZ", "AZERBAIJAN",
-"BS", "BAHAMAS",
-"BH", "BAHRAIN",
-"BD", "BANGLADESH",
-"BB", "BARBADOS",
-"BY", "BELARUS",
-"BE", "BELGIUM",
-"BZ", "BELIZE",
-"BJ", "BENIN",
-"BM", "BERMUDA",
-"BT", "BHUTAN",
-"BO", "BOLIVIA",
-"BA", "BOSNIA AND HERZEGOWINA",
-"BW", "BOTSWANA",
-"BV", "BOUVET ISLAND",
-"BR", "BRAZIL",
-"IO", "BRITISH INDIAN OCEAN TERRITORY",
-"BN", "BRUNEI DARUSSALAM",
-"BG", "BULGARIA",
-"BF", "BURKINA FASO",
-"BI", "BURUNDI",
-"KH", "CAMBODIA",
-"CM", "CAMEROON",
-"CA", "CANADA",
-"CV", "CAPE VERDE",
-"KY", "CAYMAN ISLANDS",
-"CF", "CENTRAL AFRICAN REPUBLIC",
-"TD", "CHAD",
-"CL", "CHILE",
-"CN", "CHINA",
-"CX", "CHRISTMAS ISLAND",
-"CC", "COCOS (KEELING) ISLANDS",
-"CO", "COLOMBIA",
-"KM", "COMOROS",
-"CG", "CONGO",
-"CD", "CONGO, THE DEMOCRATIC REPUBLIC OF THE",
-"CK", "COOK ISLANDS",
-"CR", "COSTA RICA",
-"CI", "COTE D'IVOIRE",
-"HR", "CROATIA",
-"CU", "CUBA",
-"CY", "CYPRUS",
-"CZ", "CZECH REPUBLIC",
-"DK", "DENMARK",
-"DJ", "DJIBOUTI",
-"DM", "DOMINICA",
-"DO", "DOMINICAN REPUBLIC",
-"TP", "EAST TIMOR",
-"EC", "ECUADOR",
-"EG", "EGYPT",
-"SV", "EL SALVADOR",
-"GQ", "EQUATORIAL GUINEA",
-"ER", "ERITREA",
-"EE", "ESTONIA",
-"ET", "ETHIOPIA",
-"FK", "FALKLAND ISLANDS (MALVINAS)",
-"FO", "FAROE ISLANDS",
-"FJ", "FIJI",
-"FI", "FINLAND",
-"FR", "FRANCE",
-"FX", "FRANCE, METROPOLITAN",
-"GF", "FRENCH GUIANA",
-"PF", "FRENCH POLYNESIA",
-"TF", "FRENCH SOUTHERN TERRITORIES",
-"GA", "GABON",
-"GM", "GAMBIA",
-"GE", "GEORGIA",
-"DE", "GERMANY",
-"GH", "GHANA",
-"GI", "GIBRALTAR",
-"GR", "GREECE",
-"GL", "GREENLAND",
-"GD", "GRENADA",
-"GP", "GUADELOUPE",
-"GU", "GUAM",
-"GT", "GUATEMALA",
-"GN", "GUINEA",
-"GW", "GUINEA-BISSAU",
-"GY", "GUYANA",
-"HT", "HAITI",
-"HM", "HEARD AND MC DONALD ISLANDS",
-"VA", "HOLY SEE (VATICAN CITY STATE)",
-"HN", "HONDURAS",
-"HK", "HONG KONG",
-"HU", "HUNGARY",
-"IS", "ICELAND",
-"IN", "INDIA",
-"ID", "INDONESIA",
-"IR", "IRAN (ISLAMIC REPUBLIC OF)",
-"IQ", "IRAQ",
-"IE", "IRELAND",
-"IL", "ISRAEL",
-"IT", "ITALY",
-"JM", "JAMAICA",
-"JP", "JAPAN",
-"JO", "JORDAN",
-"KZ", "KAZAKHSTAN",
-"KE", "KENYA",
-"KI", "KIRIBATI",
-"KP", "KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF",
-"KR", "KOREA, REPUBLIC OF",
-"KW", "KUWAIT",
-"KG", "KYRGYZSTAN",
-"LA", "LAO PEOPLE'S DEMOCRATIC REPUBLIC",
-"LV", "LATVIA",
-"LB", "LEBANON",
-"LS", "LESOTHO",
-"LR", "LIBERIA",
-"LY", "LIBYAN ARAB JAMAHIRIYA",
-"LI", "LIECHTENSTEIN",
-"LT", "LITHUANIA",
-"LU", "LUXEMBOURG",
-"MO", "MACAU",
-"MK", "MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF",
-"MG", "MADAGASCAR",
-"MW", "MALAWI",
-"MY", "MALAYSIA",
-"MV", "MALDIVES",
-"ML", "MALI",
-"MT", "MALTA",
-"MH", "MARSHALL ISLANDS",
-"MQ", "MARTINIQUE",
-"MR", "MAURITANIA",
-"MU", "MAURITIUS",
-"YT", "MAYOTTE",
-"MX", "MEXICO",
-"FM", "MICRONESIA, FEDERATED STATES OF",
-"MD", "MOLDOVA, REPUBLIC OF",
-"MC", "MONACO",
-"MN", "MONGOLIA",
-"MS", "MONTSERRAT",
-"MA", "MOROCCO",
-"MZ", "MOZAMBIQUE",
-"MM", "MYANMAR",
-"NA", "NAMIBIA",
-"NR", "NAURU",
-"NP", "NEPAL",
-"NL", "NETHERLANDS",
-"AN", "NETHERLANDS ANTILLES",
-"NC", "NEW CALEDONIA",
-"NZ", "NEW ZEALAND",
-"NI", "NICARAGUA",
-"NE", "NIGER",
-"NG", "NIGERIA",
-"NU", "NIUE",
-"NF", "NORFOLK ISLAND",
-"MP", "NORTHERN MARIANA ISLANDS",
-"NO", "NORWAY",
-"OM", "OMAN",
-"PK", "PAKISTAN",
-"PW", "PALAU",
-"PA", "PANAMA",
-"PG", "PAPUA NEW GUINEA",
-"PY", "PARAGUAY",
-"PE", "PERU",
-"PH", "PHILIPPINES",
-"PN", "PITCAIRN",
-"PL", "POLAND",
-"PT", "PORTUGAL",
-"PR", "PUERTO RICO",
-"QA", "QATAR",
-"RE", "REUNION",
-"RO", "ROMANIA",
-"RU", "RUSSIA",
-"RW", "RWANDA",
-"KN", "SAINT KITTS AND NEVIS",
-"LC", "SAINT LUCIA",
-"VC", "SAINT VINCENT AND THE GRENADINES",
-"WS", "SAMOA",
-"SM", "SAN MARINO",
-"ST", "SAO TOME AND PRINCIPE",
-"SA", "SAUDI ARABIA",
-"SN", "SENEGAL",
-"SC", "SEYCHELLES",
-"SL", "SIERRA LEONE",
-"SG", "SINGAPORE",
-"SK", "SLOVAKIA (Slovak Republic)",
-"SI", "SLOVENIA",
-"SB", "SOLOMON ISLANDS",
-"SO", "SOMALIA",
-"ZA", "SOUTH AFRICA",
-"GS", "SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS",
-"ES", "SPAIN",
-"LK", "SRI LANKA",
-"SH", "ST. HELENA",
-"PM", "ST. PIERRE AND MIQUELON",
-"SD", "SUDAN",
-"SR", "SURINAME",
-"SJ", "SVALBARD AND JAN MAYEN ISLANDS",
-"SZ", "SWAZILAND",
-"SE", "SWEDEN",
-"CH", "SWITZERLAND",
-"SY", "SYRIAN ARAB REPUBLIC",
-"TW", "TAIWAN, PROVINCE OF CHINA",
-"TJ", "TAJIKISTAN",
-"TZ", "TANZANIA, UNITED REPUBLIC OF",
-"TH", "THAILAND",
-"TG", "TOGO",
-"TK", "TOKELAU",
-"TO", "TONGA",
-"TT", "TRINIDAD AND TOBAGO",
-"TN", "TUNISIA",
-"TR", "TURKEY",
-"TM", "TURKMENISTAN",
-"TC", "TURKS AND CAICOS ISLANDS",
-"TV", "TUVALU",
-"UG", "UGANDA",
-"UA", "UKRAINE",
-"AE", "UNITED ARAB EMIRATES",
-"GB", "UNITED KINGDOM",
-"US", "UNITED STATES",
-"UM", "UNITED STATES MINOR OUTLYING ISLANDS",
-"UY", "URUGUAY",
-"UZ", "UZBEKISTAN",
-"VU", "VANUATU",
-"VE", "VENEZUELA",
-"VN", "VIET NAM",
-"VG", "VIRGIN ISLANDS (BRITISH)",
-"VI", "VIRGIN ISLANDS (U.S.)",
-"WF", "WALLIS AND FUTUNA ISLANDS",
-"EH", "WESTERN SAHARA",
-"YE", "YEMEN",
-"YU", "YUGOSLAVIA",
-"ZM", "ZAMBIA",
-"ZW", "ZIMBABWE",
-
-#added
-"UK", "UNITED KINGDOM",
-);
-}
diff --git a/tools/oem-prepare b/tools/oem-prepare
deleted file mode 100755
index 3c0b09a86..000000000
--- a/tools/oem-prepare
+++ /dev/null
@@ -1,477 +0,0 @@
-#!/usr/bin/perl
-
-my ($mode, $dir, $reject_dir, $lang) = @ARGV;
-$mode =~ s/^--(rebuild|clean)$/$1/ or die "mode should be --rebuild or --clean\n";
--e "$dir/Mandrake/base/hdlists" && -d $reject_dir or die "usage: oem-prepare <--rebuild|--clean> <top_dir> <reject_dir> <lang>\n";
-
-#- detect language used and default options.
-open F, "$dir/VERSION" or die "no installation found on $dir";
-while (<F>) {
- /[\s-]fr/ and $lang = 'fr';
- /\[lang[=:]([^]]*)\]/ and $lang = $1;
- /[\[\-]server[\]\-]/ and $options{server} = '';
-}
-close F;
-
-my ($flang, $charset);
-#- default language fall to english ?
-foreach ($lang || 'en') {
- /fr/ and ($lang, $flang, $charset) = ('fr', 'fr_FR@euro', 'iso-8859-15');
- /en/ and ($lang, $flang, $charset) = ('en', 'en_US', 'iso-8859-1');
- /de/ and ($lang, $flang, $charset) = ('de', 'de_DE@euro', 'iso-8859-15');
- /it/ and ($lang, $flang, $charset) = ('it', 'it_IT@euro', 'iso-8859-15');
- /es/ and ($lang, $flang, $charset) = ('es', 'es_ES@euro', 'iso-8859-15');
-}
-print "Found lang $lang\n";
-foreach (keys %options) {
- print "Using option [$_" . ($options{$_} && "=$options{$_}") . "]\n";
-}
-
-
-my $packages = select_packages($dir, $lang);
-
-my @media;
-open F, "$dir/Mandrake/base/hdlists";
-foreach (<F>) {
- chomp;
- s/\s*#.*$//;
- /^\s*$/ and next;
- m/^\s*(hdlist\S*\.cz2?)\s+(\S+)\s*(.*)$/ or die "invalid hdlist description \"$_\" in hdlists file";
-
- push @media, { hdlist => $1, rpmsdir => $2, descr => $3 };
-}
-close F;
-
-
-#- keep in mind all the rpm files available (according to hdlists).
-my (%rpms, %files);
-
-require packdrake;
-foreach my $medium (@media) {
- my $packer = new packdrake("$dir/Mandrake/base/$medium->{hdlist}");
- foreach (@{$packer->{files}}) {
- $packer->{data}{$_}[0] eq 'f' or next;
- my ($fullname, $file) = /([^:]*):(.*)/ ? ($1, "$2.rpm") : ($_, "$_.rpm");
- $files{$fullname} = $file;
- $rpms{$file} = $medium->{rpmsdir};
- -e "$dir/$medium->{rpmsdir}/$file" and next; #- already exist in the right directory.
- if (-e "$reject_dir/$file") {
- $mode eq 'rebuild' and system "mv", "-f", "$reject_dir/$file", "$dir/$medium->{rpmsdir}/";
- next;
- }
- print STDERR "unable to find package $file listed in medium \"$medium->{descr}\"\n";
- }
-}
-
-if ($mode eq 'clean') {
- #- copy and install from each cd image.
- foreach my $medium (@media) {
- print "Examining packages from medium labeled \"$medium->{descr}\"\n";
-
- foreach my $pkg (@{$packages->{depslist}}) {
- $pkg->{closure} && !$pkg->{selected} or next;
- my $file = "$dir/$medium->{rpmsdir}/" . $files{rpm_fullname($pkg)};
- if (-e $file) {
- delete $rpms{$files{rpm_fullname($pkg)}} or next;
- print " copying $file\n";
- delete $pkg->{closure};
- }
- }
-
- if (my $pkg = pkgs::packageByName($packages, 'glibc')) { #- HACK FOR GLIBC
- if ($pkg->{selected}) {
- my $file = "$dir/$medium->{rpmsdir}/" . $files{rpm_fullname($pkg)};
- if (-e $file) {
- delete $rpms{$files{rpm_fullname($pkg)}} or next;
- print " installing $file\n";
- delete $pkg->{selected};
- }
- }
- } else {
- die "no glibc package found";
- }
- foreach my $pkg (@{$packages->{depslist}}) {
- $pkg->{selected} or next;
- my $file = "$dir/$medium->{rpmsdir}/" . $files{rpm_fullname($pkg)};
- if (-e $file) {
- delete $rpms{$files{rpm_fullname($pkg)}} or next;
- print " installing $file\n";
- delete $pkg->{selected};
- }
- }
-
- scalar(grep { $_->{selected} || $_->{closure} } @{$packages->{depslist}}) == 0 and last;
- }
-
- #- copy files.
- #- at this point, everything left in %rpms has to be moved to $reject_dir.
- foreach (keys %rpms) {
- -e "$reject_dir/$_" and next; #- already cleaned.
- -e "$dir/$rpms{$_}/$_" or print STDERR "file \"$_\" should be in [$dir/$rpms{$_}]\n", next;
- system "mv", "-f", "$dir/$rpms{$_}/$_", $reject_dir;
- }
-}
-
-#- provide package fullname that have to be installed and copied.
-sub select_packages {
- my ($dir, $lang) = @_;
- my $o = { packages => read_depslist("$dir/Mandrake/base/depslist.ordered") };
-
- #- act as DrakX will do to select packages.
- pkgs::read_rpmsrate($o->{packages}, install_any::getFile("Mandrake/base/rpmsrate") || die "unable to read rpmsrate");
- ($o->{compssUsers}, $o->{compssUsersSorted}, $o->{compssUsersIcons}, $o->{compssUsersDescr}) =
- pkgs::readCompssUsers($o->{packages}, $o->{meta_class});
- eval { install_any::getFile("XXX") }; #- close out any still opened filehandle..
-
- pkgs::selectPackage($o->{packages}, pkgs::packageByName($o->{packages}, 'basesystem') || die "no basesystem package found");
- #- by default, choose:
- $o->{compssUsersChoice}{$_} = 1 foreach 'GNOME', 'KDE', 'CONFIG', 'X';
- $o->{compssUsersChoice}{$_} = 1
- foreach map { @{$o->{compssUsers}{$_}{flags}} } 'Workstation|Office Workstation', 'Workstation|Internet station';
-
- if (exists $options{server}) {
- foreach (qw(KDE ACCESSIBILITY PUBLISHING CUPS EDITORS TEXT_TOOLS COMMUNICATIONS TERMINALS
- NETWORKING_FILE_TRANSFER NETWORKING_OTHER
- NETWORKING_FILE_TRANSFER_SERVER NETWORKING_FIREWALLING_SERVER NETWORKING_LDAP_SERVER
- NETWORKING_MAIL_SERVER NETWORKING_OTHER_SERVER
- NETWORKING_REMOTE_ACCESS NETWORKING_REMOTE_ACCESS_SERVER NETWORKING_DNS NETWORKING_DNS_SERVER
- NETWORKING_FILE NETWORKING_FILE_SERVER NETWORKING_WWW NETWORKING_WWW_SERVER
- ARCHIVING DEVELOPMENT MONITORING FILE_TOOLS CONFIG BOOKS SYSTEM X DOCS)) {
- $o->{compssUsersChoice}{$_} = 1;
- }
- #- additional packages to be selected for server, databases with MySQL (avoid rpmsrate modifications).
- foreach (qw(MySQL-client MySQL-shared MySQL perl-Mysql)) {
- my $pkg = pkgs::packageByName($o->{packages}, $_);
- $pkg and pkgs::selectPackage($o->{packages}, $pkg);
- }
- } else {
- $o->{compssUsersChoice}{$_} = 1 foreach map { @{$o->{compssUsers}{$_}} } @{$o->{compssUsersSorted}};
- $o->{compssUsersChoice}{$_} = 1 foreach qw(SYSTEM X DOCS);
- @{$o->{compssUsersChoice}}{grep { /SERVER|DATABASES/ } keys %{$o->{compssUsersChoice}}} = ();
- }
-
- my $lang_pkg = $lang && pkgs::packageByName($o->{packages}, "locales-$lang");
- if ($lang_pkg) {
- pkgs::selectPackage($o->{packages}, $lang_pkg);
- $o->{compssUsersChoice}{qq(LOCALES"$lang")} = 1;
- $o->{compssUsersChoice}{qq(LOCALES"$flang")} = 1;
- $o->{compssUsersChoice}{qq(CHARSET"$charset")} = 1;
- }
-
- pkgs::setSelectedFromCompssList($o->{packages}, $o->{compssUsersChoice}, 4, 0);
- #- save selected, but keep selected property.
- foreach my $pkg (@{$o->{packages}{depslist}}) {
- $pkg->{selected} and $pkg->{save_selected} = $pkg->{selected};
- }
-
- #- extend selection to closure now, make all selected as closure and restore selected after.
- $o->{compssUsersChoice}{$_} = 1 foreach qw(BURNER DVD PCMCIA BIGMEM SMP 3D TV SCANNER PHOTO SOUND);
- pkgs::setSelectedFromCompssList($o->{packages}, $o->{compssUsersChoice}, 4, 0);
- $o->{compssUsersChoice}{$_} = 0 foreach qw(BURNER DVD PCMCIA BIGMEM SMP 3D TV SCANNER PHOTO SOUND);
- #- INSTALL class need to be copied as closure (unless installed after).
- #- but we have to remove kernel22 and kernel22-smp now obsolete for oem.
- foreach (@{$o->{packages}{needToCopy}}) {
- /^(kernel22.*|raidtools|lvm|reiserfsprogs|xfsprogs|jfsprogs|XFree86-(Mach8|Mach32|Mono|W32|3DLabs|P9000|8514|VGA16|I128|AGX))$/ and next;
- my $pkg = pkgs::packageByName($o->{packages}, $_);
- pkgs::selectPackage($o->{packages}, $pkg);
- }
- #- first select package that have to go to closure according to their names.
- foreach my $pkg (@{$o->{packages}{depslist}}) {
- $pkg->{name} =~ /kernel-(\d|smp|enterprise)/ and pkgs::selectPackage($o->{packages}, $pkg);
- $pkg->{name} =~ /NVIDIA/ and pkgs::selectPackage($o->{packages}, $pkg);
- }
- foreach my $pkg (@{$o->{packages}{depslist}}) {
- delete $pkg->{selected} && !$pkg->{save_selected} and $pkg->{closure} = 1;
- $pkg->{save_selected} and $pkg->{selected} = $pkg->{save_selected};
- }
-
- #- package that have to selected here as a bonus for oem install.
- foreach (qw(cups cups-drivers a2ps drakprofile draksync numlock icewm-light
- Mesa Mesa-demos alsa alsa-utils curl
- glibc vim-minimal kernel gcc-cpp
- ), exists $options{server} ? qw(openldap-migration openldap-clients pam_ldap) : ()) {
- my $pkg = pkgs::packageByName($o->{packages}, $_);
- $pkg and pkgs::selectPackage($o->{packages}, $pkg);
- }
-
- #- special packages that are to be move to closure always ...
- foreach (qw(nfs-utils-client numlock usbd hotplug alsa alsa-utils
- Aurora Aurora-Monitor-NewStyle-Categorizing-WsLib bootsplash)) {
- my $pkg = pkgs::packageByName($o->{packages}, $_);
- if ($pkg) {
- pkgs::selectPackage($o->{packages}, $pkg);
- $pkg->{closure} = 1;
- delete $pkg->{selected};
- }
- }
-
- #- special packages that are to be removed always... BEWARE THIS IS A HACK !!!
-# foreach (qw(gmc gcc3.0 gcc3.0-c++ gcc3.0-cpp libstdc++3.0 libstdc++3.0-devel)) {
-# my $pkg = pkgs::packageByName($o->{packages}, $_);
-# if ($pkg) {
-# delete $pkg->{closure};
-# delete $pkg->{selected};
-# }
-# }
-
- $o->{packages};
-}
-
-sub chop_version {
- ($_[0] =~ /^([^:\s]*)-[^:\-\s]+-[^:\-\s]+\.[^:\.\-\s]*(?::\S*)?/)[0] || die "unable to parse $_[0]";
-}
-sub rpm_fullname {
- ($_[0]{name} =~ /^([^:\s]*-[^:\-\s]+-[^:\-\s]+\.[^:\.\-\s]*)(?::\S*)?/)[0] || die "unable to parse $_[0]";
-}
-
-sub read_depslist {
- my ($file) = @_;
- my $packages = { depslist => [], names => {} };
-
- #- read depslist.oredered file.
- my $id = 0;
-
- open F, "$file" or die "unable to open ordered dependencies list file";
- while (<F>) {
- my ($name, $size, @deps) = split;
- push @{$packages->{depslist}}, { id => $id++, name => $name, size => $size, deps => \@deps };
- }
- close F;
-
- foreach (@{$packages->{depslist}}) {
- $packages->{names}{chop_version($_->{name})} = $_;
- }
-
- print "read " . scalar(@{$packages->{depslist}}) . " package dependancies\n";
- $packages;
-}
-
-#- compability method for the below ones, wrap DrakX code extracted.
-package log;
-sub l {}
-
-package detect_devices;
-sub matching_desc { 0 }
-
-package install_any;
-sub getFile { open FILE, "$dir/$_[0]" or return; \*FILE }
-
-package pkgs;
-sub if_ { my $b = shift; $b or return (); wantarray ? @_ : $_[0] }
-sub formatXiB { $_[0] } #- NOP
-sub packageName { ::chop_version($_[0]{name}) }
-sub packageFlagSelected { $_[0]{selected} }
-sub packageSize { $_[0]{size} }
-sub packageDepsId { @{$_[0]{deps}} }
-sub packageRate { $_[0]{values}[0] }
-sub packageRateRFlags { @{$_[0]{values}} }
-sub packageSetRateRFlags {
- my ($pkg, @rate_rflags) = @_;
- $pkg->{values} = [ @rate_rflags ];
-}
-sub packageByName {
- my ($packages, $name) = @_;
- $packages->{names}{$name};
-}
-sub packageById {
- my ($packages, $id) = @_;
- $packages->{depslist}[$id];
-}
-sub selectedSize {
- my ($packages) = @_;
- my $size = 0;
- foreach (@{$packages->{depslist}}) {
- $_->{selected} and $size += $_->{size};
- }
- $size;
-}
-my @preferred = qw(perl-GTK postfix gcc gcc-cpp gcc-c++ proftpd ghostscript-X vim-minimal kernel db1 db2 ispell-en Bastille-Curses-module nautilus libxpm4);
-sub selectPackage {
- my ($packages, $pkg, $base, $otherOnly, $check_recursion) = @_;
-
- #- avoid infinite recursion (mainly against badly generated depslist.ordered).
- $check_recursion ||= {}; exists $check_recursion->{$pkg->{name}} and return; $check_recursion->{$pkg->{name}} = undef;
-
- #- make sure base package are set even if already selected.
- $base and $pkg->{base} = 1;
-
- #- select package and dependancies, otherOnly may be a reference
- #- to a hash to indicate package that will strictly be selected
- #- when value is true, may be selected when value is false (this
- #- is only used for unselection, not selection)
- unless ($pkg->{selected}) {
- foreach (@{$pkg->{deps}}) {
- my $preferred;
- if (/\|/) {
- #- choice deps should be reselected recursively as no
- #- closure on them is computed, this code is exactly the
- #- same as pixel's one.
- my %preferred; @preferred{@preferred} = ();
- foreach (split '\|') {
- my $dep = $packages->{depslist}[$_] or next;
- $preferred ||= $dep;
- $dep->{selected} and $preferred = $dep, last;
- exists $preferred{::chop_version($dep->{name})} and $preferred = $dep;
- }
- selectPackage($packages, $preferred, $base, $otherOnly, $check_recursion) if $preferred;
- } else {
- #- deps have been closed except for choices, so no need to
- #- recursively apply selection, expand base on it.
- my $dep = $packages->{depslist}[$_];
- $base and $dep->{base} = 1;
- $otherOnly and !$dep->{selected} and $otherOnly->{::chop_version($dep->{name})} = 1;
- $otherOnly or $dep->{selected} += 1;
- }
- }
- }
- $otherOnly and !$pkg->{selected} and $otherOnly->{::chop_version($pkg->{name})} = 1;
- $otherOnly or $pkg->{selected} += 1;
- 1;
-}
-
-#- this code is extracted from DrakX and SHOULD NOT BE MODIFIED, wrapper method exists above to provide a good choice.
-sub read_rpmsrate {
- my ($packages, $f) = @_;
- my $line_nb = 0;
- my $fatal_error;
- my (@l);
- while (<$f>) {
- $line_nb++;
- /\t/ and die "tabulations not allowed at line $line_nb\n";
- s/#.*//; # comments
-
- my ($indent, $data) = /(\s*)(.*)/;
- next if !$data; # skip empty lines
-
- @l = grep { $_->[0] < length $indent } @l;
-
- my @m = @l ? @{$l[$#l][1]} : ();
- my ($t, $flag, @l2);
- while ($data =~
- /^((
- [1-5]
- |
- (?: (?: !\s*)? [0-9A-Z_]+(?:".*?")?)
- (?: \s*\|\|\s* (?: !\s*)? [0-9A-Z_]+(?:".*?")?)*
- )
- (?:\s+|$)
- )(.*)/x) { #@")) {
- ($t, $flag, $data) = ($1,$2,$3);
- while ($flag =~ s,^\s*(("[^"]*"|[^"\s]*)*)\s+,$1,) {}
- my $ok = 0;
- $flag = join('||', grep {
- if (my ($inv, $p) = /^(!)?HW"(.*)"/) {
- ($inv xor detect_devices::matching_desc($p)) and $ok = 1;
- 0;
- } else {
- 1;
- }
- } split '\|\|', $flag);
- push @m, $ok ? 'TRUE' : $flag || 'FALSE';
- push @l2, [ length $indent, [ @m ] ];
- $indent .= $t;
- }
- if ($data) {
- # has packages on same line
- my ($rate) = grep { /^\d$/ } @m or die sprintf qq(missing rate for "%s" at line %d (flags are %s)\n), $data, $line_nb, join('&&', @m);
- foreach (split ' ', $data) {
- if ($packages) {
- my $p = packageByName($packages, $_) or next;
- my @m2 =
- map { if_($_ && packageName($_) =~ /locales-(.*)/, qq(LOCALES"$1")) }
- map { packageById($packages, $_) } packageDepsId($p);
-
- my @m3 = ((grep { !/^\d$/ } @m), @m2);
- if (@m3 >= 1 && $m3[0] eq 'INSTALL' || @m3 >=2 && $m3[1] eq 'INSTALL') {
- push @{$packages->{needToCopy} ||= []}, $_;
- next; #- don't need to put INSTALL flag for a package.
- }
- if (packageRate($p)) {
- my ($rate2, @m4) = packageRateRFlags($p);
- if (@m3 > 1 || @m4 > 1) {
- log::l("can't handle complicate flags for packages appearing twice ($_)");
- $fatal_error++;
- }
- log::l("package $_ appearing twice with different rates ($rate != $rate2)") if $rate != $rate2;
- packageSetRateRFlags($p, $rate, "$m3[0]||$m4[0]");
- } else {
- packageSetRateRFlags($p, $rate, @m3);
- }
- } else {
- print "$_ = ", join(" && ", @m), "\n";
- }
- }
- push @l, @l2;
- } else {
- push @l, [ $l2[0][0], $l2[$#l2][1] ];
- }
- }
- $fatal_error and die "$fatal_error fatal errors in rpmsrate";
-}
-
-sub readCompssUsers {
- my ($packages, $meta_class) = @_;
- my (%compssUsers, %compssUsersIcons, , %compssUsersDescr, @sorted, $l);
- my (%compss);
-
- my $file = 'Mandrake/base/compssUsers';
- my $f = $meta_class && install_any::getFile("$file.$meta_class") || install_any::getFile($file) or die "can't find $file";
- local $_;
- while (<$f>) {
- /^\s*$/ || /^#/ and next;
- s/#.*//;
-
- if (/^(\S.*)/) {
- my ($icon, $descr);
- /^(.*?)\s*\[icon=(.*?)\](.*)/ and $_ = "$1$3", $icon = $2;
- /^(.*?)\s*\[descr=(.*?)\](.*)/ and $_ = "$1$3", $descr = $2;
- $compssUsersIcons{$_} = $icon;
- $compssUsersDescr{$_} = $descr;
- push @sorted, $_;
- $compssUsers{$_} = $l = [];
- } elsif (/^\s+(.*?)\s*$/) {
- push @$l, $1;
- }
- }
- \%compssUsers, \@sorted, \%compssUsersIcons, \%compssUsersDescr;
-}
-
-sub setSelectedFromCompssList {
- my ($packages, $compssUsersChoice, $min_level, $max_size, $otherOnly) = @_;
- $compssUsersChoice->{TRUE} = 1; #- ensure TRUE is set
- my $nb = selectedSize($packages);
- foreach my $p (sort { packageRate($b) <=> packageRate($a) } values %{$packages->{names}}) {
- my ($rate, @flags) = packageRateRFlags($p);
- next if
- !$rate || $rate < $min_level ||
- grep { !grep { /^!(.*)/ ? !$compssUsersChoice->{$1} : $compssUsersChoice->{$_} } split('\|\|') } @flags;
-
- #- determine the packages that will be selected when
- #- selecting $p. the packages are not selected.
- my %newSelection;
- selectPackage($packages, $p, 0, \%newSelection);
-
- #- this enable an incremental total size.
- my $old_nb = $nb;
- foreach (grep { $newSelection{$_} } keys %newSelection) {
- $nb += packageSize($packages->{names}{$_});
- }
- if ($max_size && $nb > $max_size) {
- $nb = $old_nb;
- $min_level = packageRate($p);
- last;
- }
-
- #- at this point the package can safely be selected.
- if ($otherOnly) {
- selectPackage($packages, $p, 0, $otherOnly);
- } else {
- selectPackage($packages, $p);
- }
- }
- unless ($otherOnly) {
- log::l("setSelectedFromCompssList: reached size ", formatXiB($nb), ", up to indice $min_level (less than ", formatXiB($max_size), ")");
- log::l("setSelectedFromCompssList: ", join(" ", sort map { packageName($_) } grep { packageFlagSelected($_) } @{$packages->{depslist}}));
- }
- $min_level;
-}
diff --git a/tools/patch_pcmcia_config.pl b/tools/patch_pcmcia_config.pl
deleted file mode 100755
index 109cfcba7..000000000
--- a/tools/patch_pcmcia_config.pl
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/perl
-
-use MDK::Common;
-
-listlength(@ARGV) == 2 or die "usage: $0 /path/to/etc/pcmcia/config /path/to/modules.dep\n";
-
-my ($pcmcia_config, $modules_dep) = @ARGV;
-
-
-my @ignore_modules_in_deps = qw(pcmcia_core ds);
-
-my @conf_contents = cat_($pcmcia_config);
-die "uhm, problem, <$pcmcia_config> seems short in lines\n" if listlength(@conf_contents) < 10;
-
-foreach (cat_($modules_dep)) {
- /^(\S+): (.*)/ and $deps{$1} = [ split ' ', $2 ] or die "could not understand `$_' in <$modules_dep>\n";
-}
-
-foreach my $confline (@conf_contents) {
- $confline =~ /class.*\s+module\s+(.*)/ or next;
- my @modules = map { /"([^"]+)"(.*)/ && [ $1, $2 ] } split ',', $1;
- $_->[0] =~ s|.*/([^/]+)$|$1|g foreach @modules; #- remove directories since we don't support that during install
- my @deps = grep { !member($_, @ignore_modules_in_deps, map { $_->[0] } @modules) } map { @{$deps{$_->[0]}} } @modules;
- my $new_modz = join ', ', (map { "\"$_\"" } @deps), (map { "\"$_->[0]\"$_->[1]" } @modules);
- $confline =~ s/(class.*\s+module\s+).*/$1$new_modz/;
-}
-
-output($pcmcia_config, @conf_contents);
diff --git a/tools/ppc/README b/tools/ppc/README
deleted file mode 100644
index fd1aaae03..000000000
--- a/tools/ppc/README
+++ /dev/null
@@ -1,39 +0,0 @@
-Mini-Howto on burning Mandrake PPC Bootable CD's for Apple G3/G4 systems
--------------------------------------------------------------------------
-email: John Buswell <johnb@mandrakesoft.com>
-
-To create a disk image simply use the mkINSTALLCD script provided in this
-directory. The path you provide the script should point to the root directory
-for the CD.
-
-For example after you have built the gi install with /export, simply pass
-/export to the script as the distribution path and a name for the image.
-Once the image is built you can use hmount, humount, hdir, hcd and hattrib
-to modify and inspect the image before you commit it to CD-R.
-
-Before you run the script make sure the CD version of iBoot is in the
-iBoot directory below /export (eg. /export/iBoot), if you want to use some
-other directory then simply modify the script. Beware, HFS is not case
-sensitive, so if you already have an INSTALL file you cannot create install.
-
-Currently iBoot sports two trees, one for the install CD and another for
-regular usage. These will be merged shortly and a simply #define can be used
-in the Makefile to implement one or the other from a single binary.
-
-Enjoy!!
-
-
-Addendum: 3/15/2001 Stew Benedict <sbenedict@mandrakesoft.com>
---------------------------------------------------------------------------
-
-A couple of changes.
-
-I've opted to standardize on yaboot, which is user configurable, so the script
-is modified now to use yaboot.
-
-Secondly, since mkhybrid merged with mkisofs, the hybrid images it creates are
-read-only, so one is unable to mount the image and bless the boot directory for
-booting. Consequently, I've included the binary for mkhybrid-1.12b5.4, which
-does work.
-
-
diff --git a/tools/ppc/Xpmac b/tools/ppc/Xpmac
deleted file mode 100755
index ec50e6aa0..000000000
--- a/tools/ppc/Xpmac
+++ /dev/null
Binary files differ
diff --git a/tools/ppc/convert b/tools/ppc/convert
deleted file mode 100755
index a2622c630..000000000
--- a/tools/ppc/convert
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-mv $1.orig $1.Unix
-tr "\n" "\r" < $1.Unix > $1.MacOS
-perl -e '@line = <>; $line = join("\r\n", split(/\n/, join("", @line))); print $line; print "\r\n";' < $1.Unix > $1.DOS
diff --git a/tools/ppc/e2fsck.shared b/tools/ppc/e2fsck.shared
deleted file mode 100644
index 32e506c31..000000000
--- a/tools/ppc/e2fsck.shared
+++ /dev/null
Binary files differ
diff --git a/tools/ppc/magic b/tools/ppc/magic
deleted file mode 100755
index 387727c4e..000000000
--- a/tools/ppc/magic
+++ /dev/null
@@ -1,81 +0,0 @@
-#
-# Example magic file for mkhybrid
-#
-# The "message" for the offset MUST be 4 characters for the CREATOR
-# and 4 characters for the TYPE - white space is optional between them.
-# Any other characters on this line are ignored. Continuation lines (starting
-# with '>') are also ignored i.e. only the initial offset lines are used.
-#
-# The continuation lines are given here, but they do not need to exist.
-
-#
-# James Pearson 20/5/98
-
-# off type test message
-
-# GIF
-0 string GIF8 8BIM GIFf
->4 string 7a \b, version 8%s,
->4 string 9a \b, version 8%s,
->6 leshort >0 %hd x
->8 leshort >0 %hd,
-#>10 byte &0x80 color mapped,
-#>10 byte&0x07 =0x00 2 colors
-#>10 byte&0x07 =0x01 4 colors
-#>10 byte&0x07 =0x02 8 colors
-#>10 byte&0x07 =0x03 16 colors
-#>10 byte&0x07 =0x04 32 colors
-#>10 byte&0x07 =0x05 64 colors
-#>10 byte&0x07 =0x06 128 colors
-#>10 byte&0x07 =0x07 256 colors
-
-# JPEG images
-#
-0 ubeshort 0xffd8 8BIM JPEG image data
-
-# StuffIt
-#
-0 string SIT! SIT!SIT!
-
-# standard unix compress
-0 string \037\235 LZIV ZIVU
->2 byte&0x80 >0 block compressed
->2 byte&0x1f x %d bits
-
-# gzip (GNU zip, not to be confused with Info-ZIP or PKWARE zip archiver)
-0 string \037\213 GNUz ZIVU gzip compressed data
->2 byte <8 \b, reserved method,
->2 byte 8 \b, deflated,
->3 byte &0x01 ASCII,
->3 byte &0x02 continuation,
->3 byte &0x04 extra field,
->3 byte &0x08 original filename,
->3 byte &0x10 comment,
->3 byte &0x20 encrypted,
->4 ledate x last modified: %s,
->8 byte 2 max compression,
->8 byte 4 max speed,
->9 byte =0x00 os: MS-DOS
->9 byte =0x01 os: Amiga
->9 byte =0x02 os: VMS
->9 byte =0x03 os: Unix
->9 byte =0x05 os: Atari
->9 byte =0x06 os: OS/2
->9 byte =0x07 os: MacOS
->9 byte =0x0A os: Tops/20
->9 byte =0x0B os: Win/32
-
-# Postscript
-0 string %! ASPSTEXT
->2 string PS-Adobe- conforming
->>11 string >\0 at level %.3s
->>>15 string EPS - type %s
->>>15 string Query - type %s
->>>15 string ExitServer - type %s
-# Some PCs have the annoying habit of adding a ^D as a document separator
-0 string \004%! ASPS TEXT PostScript document text
->3 string PS-Adobe- conforming
->>12 string >\0 at level %.3s
->>>16 string EPS - type %s
->>>16 string Query - type %s
->>>16 string ExitServer - type %s
diff --git a/tools/ppc/mapping b/tools/ppc/mapping
deleted file mode 100755
index 2a32fb09c..000000000
--- a/tools/ppc/mapping
+++ /dev/null
@@ -1,20 +0,0 @@
-# Example filename mapping file
-#
-# EXTN XLate CREATOR TYPE Comment
-COPYING Ascii 'ttxt' 'ttro' "Text File"
-CREDITS Ascii 'ttxt' 'ttro' "Text File"
-README Ascii 'ttxt' 'ttro' "Text File"
-RPM-PGP-KEY Ascii 'ttxt' 'ttro' "Text File"
-.gif Raw '8BIM' 'GIFf' "Gif File"
-.jpg Raw '8BIM' 'JPEG' "Jpeg File"
-.tif Raw '8BIM' 'TIFF' "Photoshop TIFF image"
-.hqx Ascii 'BnHq' 'TEXT' "BinHex file"
-.doc Raw 'MSWD' 'WDBN' "Word file"
-.mov Raw 'TVOD' 'MooV' "QuickTime Movie"
-.html Ascii 'MOSS' 'TEXT' "HTML File"
-.htm Ascii 'MOSS' 'TEXT' "HTML File"
-.txt Ascii 'ttxt' 'TEXT' "Text File"
-.conf Ascii 'ttxt' 'TEXT' "config file"
-.tbxi Raw 'chrp' 'tbxi' "Macintosh Toolbox ROM file"
-.sea Raw 'aust' 'APPL' "Self Expanding Archive"
-* Raw '????' '????' "Unknown"
diff --git a/tools/ppc/mkINSTALLCD b/tools/ppc/mkINSTALLCD
deleted file mode 100755
index e05ec8b54..000000000
--- a/tools/ppc/mkINSTALLCD
+++ /dev/null
@@ -1,78 +0,0 @@
-#
-# quick script to make bootable HFS CD for linux
-#
-#
-#!/bin/sh
-#
-#mkCD1 <CD tree> <output image name>
-#Parameters:
-
-if ! rpm -q hfsutils ; then
- echo 'You need hfsutils installed!!'
- exit 1
-fi
-
-if [ -e $2 ] ; then
- echo 'Output image $2 exists, please delete'
- echo 'usage: mkCD1 <CD tree> <output image name>'
- exit 1
-fi
-
-if [ ! -d $1 ] ; then
- echo 'CD tree $1 is not a directory!'
- echo 'usage: mkCD1 <CD tree> <output image name>'
- exit 1
-fi
-
-# select the appropriate mkhybrid binary depending on if
-# we are on x86 or ppc
-
-ARCH=`uname -m | sed -e 's/i.86/i386/' -e 's/sparc.*/sparc/'`
-
-if [ "$ARCH" == "ppc" ]; then
- MKHYBRID=mkhybrid-1.12b5.4
-else
- if [ "$ARCH" == "i386" ]; then
- MKHYBRID=mkhybrid-1.12b5.4-x86
- else
- echo "Sorry, no mkhybrid binary for $ARCH..."
- exit
- fi
-fi
-
-#Change these when you build the CD..
-ApplicationID="Linux-Mandrake"
-PublisherID="MandrakeSoft"
-PreparerID="sbenedict@mandrakesoft.com"
-SystemID=PPC
-volid=ppc
-hfsVolid=Linux-Mandrake
-curPwd=`pwd`
-
-$curPwd/$MKHYBRID -part -hfs -r -l -J \
--A $ApplicationID \
--P $PublisherID \
--p $PreparerID \
--abstract "README" \
--sysid $SystemID \
--V $volid \
--volset "Update" \
--volset-size 2 \
--volset-seqno 1 \
--hfs-volid $hfsVolid \
--map $curPwd/mapping \
--magic $curPwd/magic \
--m "*.orig" \
--hide '*.MacOS' -hide '*.DOS' \
--hide-joliet '*.Unix' -hide-joliet '*.MacOS' \
--hide-hfs '*.Unix' -hide-hfs '*.DOS' \
--pad \
--o $2 \
-$1
-
-#Bless boot folder so yaboot can boot
-hmount $2
-hattrib -b boot
-hcd boot
-hattrib -t tbxi yaboot
-humount
diff --git a/tools/ppc/mkhybrid-1.12b5.4 b/tools/ppc/mkhybrid-1.12b5.4
deleted file mode 100755
index 0e0901314..000000000
--- a/tools/ppc/mkhybrid-1.12b5.4
+++ /dev/null
Binary files differ
diff --git a/tools/ppc/mkhybrid-1.12b5.4-x86 b/tools/ppc/mkhybrid-1.12b5.4-x86
deleted file mode 100755
index fd5b21709..000000000
--- a/tools/ppc/mkhybrid-1.12b5.4-x86
+++ /dev/null
Binary files differ
diff --git a/tools/ppc/yaboot b/tools/ppc/yaboot
deleted file mode 100644
index 72b19b911..000000000
--- a/tools/ppc/yaboot
+++ /dev/null
Binary files differ
diff --git a/tools/sparc/e2fsck.shared b/tools/sparc/e2fsck.shared
deleted file mode 100755
index b423986e5..000000000
--- a/tools/sparc/e2fsck.shared
+++ /dev/null
Binary files differ
diff --git a/tools/specific_arch b/tools/specific_arch
deleted file mode 100755
index 006b17446..000000000
--- a/tools/specific_arch
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/perl
-
-use MDK::Common;
-
-print join(' ', map {
- my $arch = arch();
- $arch = $compat_arch{$arch} while $arch && !-e "$_.$arch";
- -e "$_.$arch" ? "$_.$arch" : $_;
- } @ARGV), "\n";
diff --git a/tools/syncrpms b/tools/syncrpms
deleted file mode 100755
index df3ddfaed..000000000
--- a/tools/syncrpms
+++ /dev/null
@@ -1,261 +0,0 @@
-#!/usr/bin/perl
-
-#- Synchronize mulitple RPMS/SRPMS directories.
-#- Copyright (C) 1999 MandrakeSoft (fpons@mandrakesoft.com)
-#-
-#- This program is free software; you can redistribute it and/or modify
-#- it under the terms of the GNU General Public License as published by
-#- the Free Software Foundation; either version 2, or (at your option)
-#- any later version.
-#-
-#- This program is distributed in the hope that it will be useful,
-#- but WITHOUT ANY WARRANTY; without even the implied warranty of
-#- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-#- GNU General Public License for more details.
-#-
-#- You should have received a copy of the GNU General Public License
-#- along with this program; if not, write to the Free Software
-#- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-
-use strict qw(subs vars refs);
-
-#- compare a version string.
-use URPM;
-
-#- get basename for a file.
-sub basename { $_[0] =~ /([^\/]*)$/ ? $1 : $_[0]; }
-
-#- system functions.
-sub cp {
- my $pid;
- if ($pid = fork()) {
- waitpid($pid, 0);
- } else {
- exec '/bin/cp', @_;
- }
-}
-sub mv {
- my $pid;
- if ($pid = fork()) {
- waitpid($pid, 0);
- } else {
- exec '/bin/mv', @_;
- }
-}
-sub rm {
- my $pid;
- if ($pid = fork()) {
- waitpid($pid, 0);
- } else {
- exec '/bin/rm', '-f', @_;
- }
-}
-
-#- get a hash on name of srpms/rpms in a directory.
-sub get_rpms {
- my ($dir, $rpms, $flag, $modifiable) = @_;
-
- opendir D, $dir or die "cannot open directory $dir\n";
- map {
- if (/([^\/]*?)-([^-]*)-([^-]*)\.([^-\.]*)\.rpm$/) {
- my $key = "$1 $4"; #- get name including architecture.
- if ($rpms->{$key}) {
- if (URPM::ranges_overlap("== $2-$3", "> $rpms->{$key}{version}-$rpms->{$key}{release}")) {
- if ($modifiable) {
- if ($flag->{sorted}) {
- print "you said rpms directory is sorted, so I keep obsoleted $rpms->{$key}{file} by $_ in $rpms->{$key}{dir}\n" if $flag->{verbose};
- } else {
- if (-d $flag->{conflict}) {
- print "moving obsoleted $rpms->{$key}{file} by $_ in $rpms->{$key}{dir}\n" if $flag->{verbose};
- mv("$rpms->{$key}{dir}/$rpms->{$key}{file}", $flag->{conflict});
- } elsif ($flag->{clean}) {
- print "removing obsoleted $rpms->{$key}{file} by $_ in $rpms->{$key}{dir}\n" if $flag->{verbose};
- rm("$rpms->{$key}{dir}/$rpms->{$key}{file}");
- }
- }
- }
- $rpms->{$key} = { key => $key,
- name => $1,
- version => $2,
- release => $3,
- arch => $4,
- dir => $dir,
- file => $_,
- };
- } else {
- if ($modifiable) {
- if (-d $flag->{conflict}) {
- print "copying older or equal $_ by $rpms->{$key}{file} in $flag->{conflict}\n" if $flag->{verbose};
- cp("$dir/$_", $flag->{conflict});
- chmod 0644, "$flag->{conflict}/$_";
- } elsif ($flag->{clean}) {
- print "removing older or equal $_ by $rpms->{$key}{file} in $dir\n" if $flag->{verbose};
- rm("$dir/$_");
- }
- }
- }
- } else {
- $rpms->{$key} = { key => $key,
- name => $1,
- version => $2,
- release => $3,
- arch => $4,
- dir => $dir,
- file => $_,
- };
- }
- } else {
- print STDERR "unable to parse filename $_\n";
- }
- } grep { /\.rpm$/ } readdir D;
- closedir D;
-}
-
-#- sync packages list according to hashes of rpms.
-sub sync_medium {
- my ($rpmsdirs, $list, $rpms, $flag) = @_;
- my %pkg2dir;
-
- #- build a hash according to rpmsdirs and list for package name.
- my $i = 0;
- foreach (@$list) {
- local *F;
- open F, $_ or die "unable to open packages list file \"$_\"\n";
- foreach (<F>) {
- chomp;
- print STDERR "package \"$_\" is listed in mulitple list files!\n" if $pkg2dir{$_};
- $pkg2dir{$_} = $rpmsdirs->[$i];
- print "package \"$_\" listed in list files does not exists in rpms directory\n" if $flag->{verbose} && !$rpms->{$_};
- }
- close F;
-
- ++$i;
- }
-
- #- check for right directory, and move if necessary.
- foreach (values %$rpms) {
- unless ($pkg2dir{$_->{key}}) {
- print "file $_->{file} in $_->{dir} define package \"$_->{name}\" not listed in list files\n" if $flag->{verbose};
- } elsif ($_->{dir} ne $pkg2dir{$_->{key}}) {
- print "moving file $_->{file} in $_->{dir} to $pkg2dir{$_->{key}}\n" if $flag->{verbose};
- mv("$_->{dir}/$_->{file}", $pkg2dir{$_->{key}});
- $_->{dir} = $pkg2dir{$_->{key}};
- }
- }
-}
-
-#- sync two hashes of rpms, update rpms and printer newer version that are not taken into account.
-sub sync_rpms {
- my ($source, $target, $flag) = @_;
-
- #- search in source part.
- foreach (keys %$source) {
- unless ($target->{$_}) {
- if ($flag->{verbose}) {
- print "adding $source->{$_}{file}" . (-d $flag->{add} ? " to $flag->{add}\n" : " is neccessary!\n");
- }
- if (-d $flag->{add}) {
- cp("$source->{$_}{dir}/$source->{$_}{file}", $flag->{add});
- chmod 0644, "$flag->{add}/$source->{$_}{file}";
- }
- }
- }
-
- #- search in both part.
- foreach (keys %$source) {
- if ($target->{$_}) {
- if (URPM::ranges_overlap("== $source->{$_}{version}-$source->{$_}{release}",
- ">= $target->{$_}{version}-$target->{$_}{release}")) {
- if ("$source->{$_}{version}-$source->{$_}{release}" eq "$target->{$_}{version}-$target->{$_}{release}") {
- -s "$source->{$_}{dir}/$source->{$_}{file}" == -s "$target->{$_}{dir}/$target->{$_}{file}" and next;
- }
- if ($flag->{verbose}) {
- print "updating $target->{$_}{dir}/$target->{$_}{file} with newer version $source->{$_}{file}\n";
- }
- if ($flag->{update}) {
- cp("$source->{$_}{dir}/$source->{$_}{file}", $target->{$_}{dir});
- chmod 0644, "$target->{$_}{dir}/$source->{$_}{file}";
- unless (-e "$target->{$_}{dir}/$source->{$_}{file}") {
- die "unable to copy $source->{$_}{file} from $source->{$_}{dir} into $target->{$_}{dir}\n";
- }
- rm("$target->{$_}{dir}/$target->{$_}{file}") unless $source->{$_}{file} eq $target->{$_}{file}; #- copy on eq
- }
- } elsif ($source->{$_}{version} ne $target->{$_}{version} || $source->{$_}{release} ne $target->{$_}{release}) {
- if ($flag->{verbose}) {
- print STDERR "keeping more up-to-date version $target->{$_}{dir}/$target->{$_}{file} against $source->{$_}{dir}/$source->{$_}{file}, check your repository !\n";
- }
- } #- say nothing if source is equal to target.
- }
- }
-
- #- search in target part.
- foreach (keys %$target) {
- unless ($source->{$_}) {
- if ($flag->{verbose}) {
- print "removing $target->{$_}{file}" . ($flag->{remove} ? " from $target->{$_}{dir}\n" : " is neccessary!\n");
- my $k = $_;
- }
- if ($flag->{remove}) {
- rm("$target->{$_}{dir}/$target->{$_}{file}");
- }
- }
- }
-}
-
-#- main program.
-sub main {
- my @from_rpms;
- my @to_rpms;
- my @list;
- my $target;
- my %flag;
- my %source;
- my %target;
-
- foreach (@_) {
- if (/^--(\w*)$/) {
- if ($1 eq 'verbose' || $1 eq 'update' || $1 eq 'remove' || $1 eq 'clean' || $1 eq 'sorted') {
- $flag{$1} = 1;
- } elsif ($1 eq 'add' || $1 eq 'conflict') {
- $flag{$1} = undef;
- } elsif ($1 eq 'from') {
- $target = \@from_rpms;
- } elsif ($1 eq 'to') {
- $target = \@to_rpms;
- } elsif ($1 eq 'list') {
- $target = \@list;
- } else {
- die "unknown option: $1\n";
- }
- } else {
- if (exists $flag{add} && ! $flag{add}) {
- $flag{add} = $_;
- die "cannot add to non-directory: $_\n" unless -d $flag{add};
- } elsif (exists $flag{conflict} && ! $flag{conflict}) {
- $flag{conflict} = $_;
- die "cannot add to non-directory: $_\n" unless -d $flag{conflict};
- } else {
- die "unknown parameter: $_\n" unless $target;
- push @$target, $_;
- }
- }
- }
-
- die "usage: syncrpms [--update] [--remove] [--clean] [--sorted] [--add <dir>] [--conflict <dir>] --from <dir_sources> --to <dir_targets> [--list <files>]\n"
- unless scalar(@from_rpms) > 0 || scalar(@to_rpms) > 0;
-
- #- parse directory structures.
- get_rpms($_, \%source, \%flag, 0) foreach @from_rpms;
- print STDERR "reading " . scalar(keys %source) . " packages as source rpms from\n";
- print STDERR " $_\n" foreach @from_rpms;
-
- get_rpms($_, \%target, \%flag, 1) foreach @to_rpms;
- print STDERR "reading " . scalar(keys %target) . " packages as target rpms from\n";
- print STDERR " $_\n" foreach @to_rpms;
-
- sync_medium(\@to_rpms, \@list, \%target, \%flag) if scalar(@list) > 0 && scalar(@to_rpms) > 0;
- sync_rpms(\%source, \%target, \%flag) if scalar(@from_rpms) > 0 && scalar(@to_rpms) > 0;
-}
-
-main(@ARGV);
diff --git a/tools/updatehdlist b/tools/updatehdlist
deleted file mode 100755
index aa59d3f83..000000000
--- a/tools/updatehdlist
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-
-topdir=$1
-[ -d "$topdir" ] || topdir=/export
-[ -d "$topdir" ] || exit 1
-add=$topdir/Mandrake/RPMS2
-[ -d "$add" ] || add=$topdir/Mandrake/RPMS
-
-./syncrpms --verbose --clean --update --remove --add $add --from /RPMS --to $topdir/Mandrake/RPMS*
-gendistrib --noclean --distrib $topdir
diff --git a/tools/xhost+.c b/tools/xhost+.c
deleted file mode 100644
index 58781274e..000000000
--- a/tools/xhost+.c
+++ /dev/null
@@ -1,11 +0,0 @@
-#include <stdlib.h>
-#include <X11/Xlib.h>
-
-
-int main(int argc, char **argv) {
- Display *d = XOpenDisplay(getenv("DISPLAY") ? getenv("DISPLAY") : ":0");
- if (d == NULL) exit(1);
- XDisableAccessControl(d);
- XCloseDisplay(d);
- exit(0);
-}
hi]Q%>Hٖ++~{Oޣz}֦eЧG@" [\yhWE12Te鷽8Atѹ`Ei\s phIm+z \rҡżNFMqH.hKγW|^ 9 Tפ`,xQGxU2Vd4:ZGsogq>Fi&$dY,TmdNaKPYHT۝}8=XL в-jרldL1,ȇ=Q:?6+%3Ҿ1;b^$1RAXVa^rmdOQruSd3 3bOE=tt(I5Q TeBEt* DxHwnMəMK*% b-tyH72u C~KQctω^Ml—IRhx`P 6> F yOfvItyI(.7e) 1Bibg](JQb,m7ׇD<8G5 ڤH:'}8}w | *&sMHFJŇk.4TT-|EH7}8Q ko7-hu4GZXAQ^79d.X6b{:u? ax`@^^0:MՉڴǬ%3PH b2(``wĠ' /V/8~yZT؄e6 2bl o)ơRZ-L`׵D};0m(L`gS\+=tR)AtHE 'į!cvTxIom!IT_Coz] \ OzyWGDLEŜ@QCAM~#E tދ\$Vg:LId{U?h.uRbbLmlfWyMr@ 0=E U r2@ "6q,2U\Cʴ*UΈ鍶WqcJ`C %4GO{56U7%B.zg(Pbp5|ձ=~2:d 6]^E+:DWGvevM1嶍UgjIXh. { 1V^N>!Odfnd[CvZC=ն6^ N ĭYR#yFkɌijZ<,w g?]D_$nut1寜`*#Zt˧?FĜW(pg,DʻW0NHI#6Syn{hlD :>ޟҊ?vӃ*>Le0M,lI3΄kl_ / pa,qI36 0*9L}Rc+E1[zV EaxG͌Fbֈ2Jr)~sh"2y0/6x۞Ck֚j7H%co!zI\=۠\We?uS,4cL.=$O| <pué=+oJ+dg*$SX5h~lHiB/zC2@m2I-,:`nCcB.sXM^YlrYЫ<Ԕ=1*t-az;L}}gJwh,lMo1ן(k-eeLN:9>Mi L lGt82sJ,E{uE cʹH,zR!L!Yr2CG̸5NxJ>whPa^fq7j4oZ[ uɼTb-[3XЭb{NtBeEX&i#$MnGLA1-c *糗4"VO4f2Yl$F/{Z9\> f"RJQ#dyv.2`3P(# Dռq 0ʻa|j+5h5zVJ]>eI%X?+ZX~m?Ǿْ6f?㳯v6Qt}||fBOo+N&Ꮵ+!N&y$22eɾH=⃒SV+//ړA^E\RpN4AE nf&RC38B1(9c<[_uEp'Y)$PY-{e"$Zcn1h-wer: Q-$LV=vd|z3ݩiAVJӢ[ҍa60.c}8aeK-,0gBg,%"7gX9ty}!Si>e#~?:$ SW]dv~u<;Ĕuxк'bS2+2~؅eO'yjܘiD3߻lYT˿ЂEk|8'?wPB D46M[}&55 ċ&?HQچMQSA\!]0ԥ[b@ ȃW^:610z]:= ݧ7~~P%OBKYa  Ѝit';G1F'7fmf.ly5LޙLVgJ˞ Y&)(!1 ŭ|x[rr!mtՃ#fYO=Re9^Szo-[$FTL!d!@2} sGrUW842zW:杦_yE9KTU$;5tzaczy7f% GjRyiU7_{mV9M?LlQ?puJ~2HڀK/#E?j  soֱX%y?ŭ:盾[%6VEgULeͽ3-jUSRAe{0ɳ~^fz_޷D46n0Qh}#EXCf4R8稆L  B}iƟ %1z l'k Be7qLwr՛=cψ-VVdT2ІyoUѡ<({}"ymL?nj2.os߸"=lm wOE0;y7Ԩe?+.~QmhRL5qpL4XD*z+p24V+8rb|í:KFCMDwL )TbtQ wʀDU{+`Vf7 AZ-9 3,!9 INVemDl/ _(Hv&6L]\L~GDmkǤԶk?_lWϭA2c?eZ+!`4zABqNi$`V]+^:w S_MARxyJ+ R`Y ȽaT& rV|PX؍{`~!i/y*\S O4\m: ϗW$؁;.HՅx{Jo|+Lb<>:vRCPڞ3~gw8[Ǐ%ʮRq=ts/ lZ_Z\ \6k 5\!@_D~8vx!Y Ɍdyx4hcOcԽFnv\,} yo)b|d5gx<8Yt"b6"1awS~_ ȍcPTtFS~-d+ z,{ӄk:ʫ $ 6ywkIhAC-<T:~N(YEFĻt -Rg^䢵cj#2Hyg+e02Itˤ?H䤑P4u֐F#pΞi!vĉ]Xٞ|1%$༡92W|Sw.ShGwi 0* p*@i8>bpvٍi)>l gexjl 6Ko/VL^* $,A];[oܵZ?kU(L 7BG,ݹrH-?w@hnsIp7ش'[ Z1Y$JXyA~؅D'ɸPG41T*M-^J]]P ֓b1[ҝ0Hy{?:9X__ 1@ku'/Jl &|-<2Qq'=7 ?55̯L_%~V(T:SI$ X1+w0!W@Nw[@I : o䕤d5p.|}C 6*ɲXe\,l]-% b_Dʮd(wzNEM O }mڮ?GqDcAl#hR(`WAX[thk;m,W?eIDE☫0R/0B6y_'i"n '^Hx6lL5I$Zu.(GBTd.l"VɝjE$#h 7dEEqO q$/2zEvm۲EH/F gw gWA[{u-/\wW-򍍙9HɎv{ϮȾVt43$r^dF}D+s")>_T$ %)᪞D>V. b$7J-˔=H8!;@*}{ϔNKhx1Z!Cg?*kU05W8ÔkcMnW$w}ݮ dOø,3C&EGu`Cƍmyl_dX1F8 ?~QeWX_ Vm *&:v/._S(J2 F݃5?G>Д${jEX[q+ Dѱ?t5iq<8x;~µD c܊n.qć)!Ȯg#rfg9{T[@ uתgagz.IϊPAt\;;Qn8npZ;vKNN | *|@]a$NF~Ξ̗aI߼l~=n汘(XG>ݞu{)(OG =Q(G~N˕KhmB~է"hXg`rȆғ IUjjTfMh]{Jfl :g`˿#} GLz%csBhE9Pg w,sH0sS )8[*_d/Df87pg2R N#'d~NyB/G #Z<"މp<Jsyz^z2; 1q {.0A6hOj+ɘt q,/ER.9%VpI9#enhQszY.XDW?+3ޕ{Mp5F .*_=<s 1{aѝ+9;{+A{ȶ侷@Pc30h3X痁 ;c]#RqdkEnR@w s>~!`(~[lsO~ew09ЙWE~‰gGi/.NW\YM$*sTNkiK#B7tUw@n$ek@FlE#㌸D.2y/f)nH뿧݁BDO$,> 9۹2J _yw΀RڥN_:9fuX[ot$ГwN"YC8DrY@oZ`ݽ( m!VʀjW*NbyL'%|ñbr8X8҂vߎsIA<{֩3yLCC`s\5c{ֱqaG5fa߀ioo*B&a(t8Xk势Pątzr~;T˷K6vH G9圖 M^ϕ؝5.X VÙ"Mwh¦89$M3Cܞy[=8Q[9&ą_,bAl.a\?pW S VH @˺^t1}ơ "W>/X+hy4RFET|$ *< [o , x,w߯L~覢Sy!|QqQ<6IԵcMg7{xtc*mzj_`y``+C8$Uo,|U*c zDc\VuԈS? 7|PE.sd9UZj6(6# Aq~j}N|sfδ;t&b*=(,^4G 5:N3qg5ٓVn?ә21PYHp^PoQ[{G N= ~-+҅Ŕ%/"I\0ۭ~|+Ts@507H{h{6;TɒkgEs㱴 ?!2or'CdBI`B&H΢bNM 'kQA/2m;JoO;3JsNO5dRgX`|}Ӯ&"b+D(8c -IcpQz kf,<LI4^-j śRɈ7 he4~?BNfh+x%@f&;)\5<]$@'VDgbd%'4'韐dx{Qzb rtjZye'v" !O}d!fA/2@-s`Y̍'7GsN##.E Bܖ8'J9W{"j!$JEf$FeuGϒ*Dpn!0hSG'czn>[Y6kOao>`{o`!3DPa;6%qm_)OHK=|TssO#uu|T-MB&?eK'Lo wQt;Ck O s ni='$Cvz4ؘYR/?㙌 :qv< Rtɔ^AQ$r9v`W$Z~0Ҽn7 `jvlXfG2fݫO|pj#?rI}=Nxi+gTg2Vt~ ^ #VZ2NZ5-`7#j ܗt#/R_h d d|VFٗ\BpfK+l#.(BšLJ"*0B0>qHYRWt MRlH\H9ZS-ٻM 8KK +&>\!%4FN`TU) Ky"RÅN fV!eY?̍8Yx^5EËavuI|T_d cNβCnhKSD!EJtV'*6rjU=R voflnq^BpFteT)~=pwܿLky=-jQ^abȡKy2o[KW ɗXC'r׆ǶDN$:lNmX ߇%nԩS2M%'@_EdBV/ *4+ v{o∛y@z"B0qkqCڧL|[Q_r=/|@+x)AJuxuu8ɔ{qG SϸXi|wOz[`#r5>/5'񄗙гE }n'fTYegF~ƞIq2yO8㵡巘_+gDPJVG՜BD}n*how`䚽 K dɯ Q'֡Op.۟LƌRL﫷,Vbe,1p 2|-,H3B۲B/oܽ31k;z>XQd`l';qB~bWF]IO'ڰEw HFq80;|}A\3]x6N(+ß,A}8fBq-aq ^Ⲃ42vlzۿaI[9A]tșm{9/Tȱ靠Wk 6u2l(<2Y&kľF{Z.aO7^zaP#Xû_%Cy6m>|1~NB $gt+v C eh`JMсP4nJb=+?6@1F^9pM<6,6ٮ _حA<=x2S 8mAkxIm܋_gLu"p4~{ŀ.ߘYAU]yہe+t<όp,6=8!APԜ4QJP]>^Ojx>zgX< zՠo_60lt%C`/o,䖹N>.˒VlGxF:RBŬTYJD1D. xB,J$}AfOKo@U G S>gvb/682, 56=qgZƫn'/k<Ǐet.Ӹ6(v0j#Ckaqs97tD,u黩۳VNqBsSԟZϯgN]l0}檏O;Ym׈ƊV ܞ3:ۃ(Y|@k3Il?^0ǜ T&9%s@V6,6,x3l@~xlaV܂",hV_lbsXA7SM-uuP O E;;oSRȘ\Wo9q剫]3 ~#nĥnjӨdYᒙݿ[5.lJ~;jYA={D=1`=aiCn A/ln[< ބuZMu?:WWG_7svQ5d%6 e0 n0϶d&8wr\xYRB n޾>fQW'G!AL )r'y5k3AF߬U23x["<e".l],Œߊg63;OSڗ<MlZ !m3~hc$k-4W4H+x](*|(C׾(Û䇄 ^{14xENen`)Ġ}U,+?{ȍYg*ux,f+U뭋Vm2ڝn=;-)!# F^T c::_9|=u, ]eKYTy/-hz3;?BU%g!>?h{#ZEUNV4XOꇛr 8<Ɍzg`V{q8m.P,( U3ٟ`i =)9e IjC6$ Qf `/ PgH-<"v/zGl_,#]iPT2:-$9歋ǻ k̆n& j~.U,3)g~y2\uFĸ_ӕ&>si%O6!ꃢH&lgcUd n^촵MzN1Lo'-;iH՗-\gR NBOauhu%mi*+eA׬V sdK=7_oST O&-8dnĶQ(hCJP.8<^ӯ7L۫iڠ|nrt \&QX[44?x\&<rjٵ)֦ch8G); 2K0pSPwOQhȒ[Ν ?jfs/H7UrqƔ?m7v𯲪,GoGf alVZPCB˚-rN#vfNw=DɆI9E M!|bd[E 8Pq_:9|wݬp5'.Wj %4n=Fȿl1 ?_(S,6O QE '֘bOCvVuv .'ݹ`; &*s$/;lqzMhr]d咟(IK$O;!mm)@? ~.<| QP hI&\ezdζ޶^y[J<Rۿ8x˾ȗ7,"7pIpq> }\u@?X0ZD R44S|y`#?n xmN>ܳh4 6 /kq˴v'~I؃q}Y}ˤ:QfٸRf_ϸ,AuIe{ vYK0uA<NDY.v54 Kp"4f1|:lc6t ./fL֑Ks)af& oi4s@G :Hn&Dlئl!Zo v%Ǔ,hhuuKpvzf=SO9S %rASHl{@66%ƟVgL!.)ptnv:m17_]N]&8Ҷ1N " ,޽|8OviMDm8r5B!f5=-S-*Du3Zx&)d%'BM ۸TGńa ORFl] +L}K鑇Zl=G2̣2%W]s-~ө:X* *T1D6!C^<[1eH)TZR`= S½هAr0pNAD7hMEWm<ӓɘ6UXsmw-@\kH%N/ٳx9YBQzBCVE&l\<0?IazE9x18]K #v-sՑ+V{5+WzX)i@/DGsQKBu[t/cu[vja?OL{뾪ԇRCm-NLO]圶G,!^ nQ$bxC4Rնw)*DF5B3- #GF+ ?4V]=Dv}cRg|iǀZ$Ɨ:UKFPoT_o~F-kL3NtҸ)$KdV*uٻ*Q#/5loũqqm+dXQ]OKv?jJKv?>J4HXTLESGUa~f&\XO )x5.ˏ@vnn(l&OR |7‚&Qq3|p/;1*g8?CWuVۄK|Byb:< ?jʩLoǓǩ_l&VV|8;UVUGe(:U{WI.X26Z%xYui-M n1|9޹aJC^x%³dk(Pw[Cb1<[0;,Pf iv:t|0]uj";"e &*,=;5-52z+ N{S\J|Y5AaɚHTnQi}9%%;'A~[:D1#Whc+푋{P(Bɓ+ZY36;;8V !Bt3*a5K̤F$3 ഈlS-[M_*|?O6 Iť?߶ a_AhQEڭnݛ8[!w@/HHɴX?E '31X|.orTc⤹ȗWEB)pޙ<ցkH­*o{" aW=]Ѕzⲝ:&~8aP} gioRC%{+ }2rqu?so'+O(Hml`շ $uRuXT2t%(s 9 [֣iV;,ޙB‘H ' V7٫R@˫|uo.W)*d/Z5Wpkcк^B|QmQ~]B*å侦9)^oeT }o" 2nABPKD%L3) 1]}Ukt7_u ȏbDF@+ ֿn 6nf 5 cg-7|RF">C:Jp(N!7Y]AX]OoRjW_$\-h"ZZMb̕B*J @̓mv.v'1-zjHA\%&2"zS4LKQ˜/MR^S+UOp7,iegj|(J/3Hk愥,Xq\@E)b'R T\C`>7v}jӥWJ$^H\[Bb]2%tpCps[+yݹwM2ԎwTD,- e|'򧯫[7֣4}8q >VI0^U/wqZvJVݢMb1DhVs\aRᝐA'rwV_eu[7ڵ '`k闥ѱ;fؘ}E6ÕDh=*l#j1}OHr/~1.ʐ:YYsSGmyvU!ڛ҃5Ѓ:<g9y_u0T Up$ao2-m"v1Je68[Rl B"Or 7H3^Ur@UЄzH}}gB~(X&Mmi%ESp)>٠JRF+uDe;wlh?trRڢTX"Gঐq/pBEm_8mׂ 0?'T sbZN)=.1|>sko1ѷ_7"R x%vwZ}Dkc5'6R#?Ge(!zk _ѣZku' 3g{НzGF<^3 R+Rlkh8SGbb ٠2#מ+W[]yf c~@8\oi8,/%QB~#>>@ ڍXDx} Ш%Sn'#vDD)BKjtQskV;\t]Jѧq{חj2hqs9YεSQagE)S˹7I/Icb7\&u,+.ҷmckrWO$!ԧ{Ug%[9Z??>+a8ØhKmum* O=2Y뤒6?4N7z,7Ź7oRXbt,nP=?fLWzA+VW(>ʌU#' RAAp Y:c{S<%S?˕.?`QwN0QO-w5;AklkV%oe9PH`T?J{,d0[JDd l]y!\~()[j!pniʗ= x9 r"tG+AXݯg%GR[܋HcC_tMfS}9G̾&MkXR;frd:f!I`=~Oa1y>ӄL>zf);LE™:38!GX JT, ͽ`bG هUl)nL6~`Uk JO-gcvهOlOk+c$t.f[&,n63eI+Gq@z=#DeƲRɔ CsG5qOF2hҮyFٕ;ykG !w@ &`!Mi@Q in $SIóYf>=qW'"<2n殓Od|nQٖ)/mEZ @] pѺH _ 5N?_h-񱉍TbtD^WĨam>RCZ_2 +oaJ+^f](f6ew]Uu Đpw+!`!H,FL(iQJªmf2 ኅ"Rʽ-WӼ4?L7}w8,V+iV)rw'f.Z e]:ZckΫ2[j+sR)t  ʜ!9uc89s(@Ĺ} ȉ $?A} mhƠH]1ǎ{W^6 B kLB/E5#i2#ްŒTȂ& YJ 2vU_= , RM1pI&:}@ѓBc֖FWړ< B%S0>5:3bX0Qq<E lXg6UlZ'D"L޸2wtDYeAvRlQ(31ѩU:;'Y6'R%|V2{R6EaS1c_ /*o ݟe^խ/yiBՋ쀲iy NEeod'f;gjjF!T$<<&ô˞6&@P#ufG$^ b?jy12fBg^iƝrBYk//;l̽iu kLRaꪉcÙK(3 ?U^U_7^Y'aql}rF˰ۮ)1#r W;32\ " Αү!ͨ-@ǤoVvA>4&|vZItb1ta-Z7r Yb7g-C^'}gre)KjAMKi ƤӘVDx/i1(aBx, .uusvȋB{2}u($ZBg /LxzL VQ3hVAiku>L &z^V5 u$wy>U bޛ2D'RI+uR:P!YMh۝> ~d5qCǎ=y6#%?_fs1%%â# uyEHOtnE@'E.BC`tAnnVB;?{eIfpMN[9O6-ǒ}JԧnJ8Sܱ |$~npW#\Ocy>;p=gu 6 qWA`/ /ܬ+Kyu +-$!/\P[ !~ѹ ]*4l\5FUA,Q+m6IhZT0yj%4Z%*fQ$jllZ[k]̷P؎Xe@r6HSuQZ2/^o%:mV\b̰D*]ez5({mt&^t#_0oQyڒ$3zRmqI1!$ LPx6spQgܗ1"sg]'O|I^Q"`ݸ-IDzYمSa|ݩdudڋaW wy? =9Xy&[sQ;=c_):B$4.WN8DmFh"XTr?rȫF<7y]0G,:kА|N5Ŕ4x*D[V6rO{.j5ȕ>Js= ; .TJPbB6 J[(yɄoN1YT竇m$[V(Uڼ{$/rHZic,+# :ۭ@cB$LEqsSd , `oB= JAŚo'B/IU*COP3hw${X`~:Ch;,ƚ&d{n*:'b.Zl"6}vLM@PkNg Sf@,+XkΟx4]:[":@9٤뒫yFzO fR}Fi;C޴ F: Z;ւeS~f6@.a6qv;^$#'hf]ėH]JBvz!wPPqq~C0{@3Ij#ӳfC~ŜqgeN_{^:OѴ')n pW)&CD4;xFNlM]l`'^Bc$J㱗qƃ!-t=,B%+{߁G& .-Ef! #{h^ޓݜyi{D",9k}OPAhHLÙHg7"/):e᛽׍I#௻VZ3I9RPq"Jqc :돫xőJ! t0BD7n]u,mqMNeԆq ctY t-p?&Y%gu-F%]»ô6'}1ѥ1rdP0%$&po%2",QJ$B.P(/TIՉ*, M +G OGZƎ3KmZ#X"ܽ 0je5L ɱex@g08>3pg MQ9U*5T-p#lCNwmri)AY&u-4sy[ 572HJǍE*|Bæ۹Tg\>Xǒ<[QK++.ӐO_hC&gTALA\y|^ke C/4÷nʟف53k>E >8NK;k`8c%=unSvly<(>dEG9>5ܙ>uĭbc\V M?& 4\ꉒ >#_:I{EPNaj-T= 9[Z/+3+s`HLyD&c hD43W;"LŃn/P%4RmyUmcghN%nL)]>M.8rLwPّBv*TP"[XLͧVx1Byw?!J ~ !-S},Œ|w_ٜcy=,.T9y!|;658&bk(y`$3]bfqc]ET^Vea2*ADR?C27gnڶE<%hm Jz׽w(aZ<> >L߂OG<@:"]b'Ze/1jPKwD$y@3FpgLФF!^6{t8 9EXODsR gBX ) tľ$gCu:ʩd/H{aj)\0kCY{ :P~*0J#V'&r{F4>6 KyE94n;P&܅R%e[VS^|{dvF$;j4 K`,BV M0y6y/iYԬrX}Bs~h@R6+F]ٓZP1]rNX4"M z;Hzt`mSgփ;2(& 盧V (95}t2\MdWlʛ+(cWo~#8m1Jž[2#]şjNxA'JjT $ PZQRŕA vCM% ~ 琈ff/ٿs."QċEK_uoԸIW꟢yO@OԂ PgƎX٦OL%$CguۼSEnƪHX][#l;Sny|*)0kҾ |͈l_ /)M]mbG),M,Ƙ {k>~~fElч ᓪtftx_[V%N^7xKѺP}?S@{;,7ltɴ́]O(SQFcxIm]h3F(F3Վ/kU_^ eu1/C+)s 0'g^ٚF\`im W޸d0ɶ.h_3W˕I ևuD2NfI%ePSuhX_yb^Zm6:1R6|pSoa'MȬjEPl0wi1Gfcˇ930i%%qR[^[5eLA̚XMo4Xtmh.5IulyVw.lO(q 9 h⪭CԲ4HMd 만 .7'825h@[0Y!zD_?\%t[˹voх}Zq[Bڂۤ|Yޠ aWExZ[c8v|du턎Chm"+%w5͎7p?p.1E|}y+1<Ԫgxv^̥xXtzB`7iw8K)h 'IT!d o~ayh.4I7@#+NNr6ẴmE"APL 'qµK@K+!I>*HR\A_ByX&~Sht$*FQ9Uâpvsg ᳔n5i]&R®ӆ;IpƕM/(1>@sƘv ozv ]]L`qebv:B,KZܠ̍&NWKKQ$ ZGar9K>Ml:7q*Vz! EyݞEs׺,bxC@Š\"J _xG7v{%#93XknGq@kc#{[2Azb9n:$e͟iJBXʨQ͞+`Ixw/dnr6CEB4@ЙvF'?J[ XvA$s7v Hzbb3x/ڵ̎S@@}{)SO /BD#hKh p׌ .Ѥ|qkW`EQ]|S>i~n.\|SqB036PPvMPٚNYφx^d!`=K1+ b,8ؔ p(ݏ$,eϟ߻{Nl?QO[䴣 +CdPg,> QxKzFV^{i^ܕrޛ%{M!쾴k1:/!Ђnjt1J TUO(LzM;&i@Onۙz1޳畁~?_% շ`AAƪ/w1ݿpE&sRxS"KO+-Hw d}ף4Ҹ]b>}Ϡ\Ki]R}g~q$? E7RSpTv,uu&( ಧuM7Ɗ)Ƅ{ݗ>rGQcX}3NGs'ge'5_SVbz/;C%at0Y<*>T]Gr)776M2ܢܹ%%y `1Zv{M 1o;N0yoYti> OcLQ+Iv$+t?DqFf\w!$dAgB?^Q?צU;䈳gT'܂OdqtB6qTb ^ި|i(~s \X_q;^Ⱥ ҥƬcG6M-#tPF1gzr;tNRtG /$3CUT+.§rB#?<7~Q*-E{5 y}?Nmq.q3#aDP{M*2s*qL@%u3xo9igu-H48G"lzoMUMn1C`*=Tw3J?[r ;/wPY ag8gOd)[m ՂQhc<3qc {3&-^1 R1w19U0Vm;aU8S1qb'jdqQneY_fxMhDZ%_%56 / ysGlRXwO65»18eUTс9Y8|iO'4cmkyFcfـ$p;>Z6XW0@SfQ&okʈ-9aKFxs) ;p-]ܳ,4_&o@Z:u:蔣C&]kdd_U 4Q|ڙ8 ץpDV0[TVh`|m&C&c.ZxB:|Zu=ksЎdQ]_|"WV|dУ fdU}GA[[X cU;ތ'Fֆ%bᄂ6I9ZbwL,sP~@`3+1?`}0(2K7<+t"I?O\ayenI$ft&qXbN՞i)Fӑ$mIW 9RO}بlǮ#2A`⥋{EJgoD?=#$ )O?>{a /zB%>cz*O䂿 LȿY]8Gu3uTr&,C7 eG7Rz{z*}o.ƎvT:ݿswik*rS1C,\AӒJt+@:+'U4ron"SVAp&)7ȣM[ շBţ[QYnXb1exu\jlNW Yv8jc.\!\▇-8'6i/< ֢}V!:*D޼(k6\pxckFVkq1s=3*e8BlڻaJx][Gߴ1> J}};p x LYw $'"%&c7n39[X"6ɝ\^pkɌ{W^$±BS M $)4φ5\`O17pO[ӤI"d[M}}s'ẘ,tNjY&v[@<+2)H,j A ]t b׿@'b p1嶳s8V3sV:|+IG^;I7Λ1^ݱ(!wNdɜAJqA^?sd4JOwpm[,@ۿh& $,Y/pWL;6h|\;tta=Ƹ 1M>>:چN )'6 {X^"** LρΣuZ/[luQJؾo!PsUm`Ql4Ӟ@Ve,0m实97F|!kw wsvzqОnV呇Gqu /;'¸q/x2,Q\gAKY=&LOZt nW1d˔Y޲#UebsQ\Н+A> -T}?B0 \d镥"cR|+)x|Vr,TIq w>G:q *vm (or&hWvLvC= "c- IJbڗj橬MwxuOۄ΄|t*ח?mWfhFz/+Db}9P7jFZ/P}g?g;p/ƣGXvVbVkWD6oO8tIYDo ;i{7tpN5TS90}">7xh揘کWڡ>4@<&ԫ}ܫ^Ń0EWELU2KE&`˕Dn?ԟgPԿZU^qFLF'pƘ!x_ )AA{G+>-M"IfKw4,(y ksJERxb5<]΍*Ś/INaxϷ $7؍ܡ7vvv`?d\Lٚ2wMrd/e0]:W=S1#Qt!**ӝەwZ8,a{D0K S 7خj }Zwhَ@.2}ҷC"4h < ksjy *pz6\֎5MVif",BTkr#jʍǹ+V7)+^'T9НC#PjFCsc,gDX784< J"#lͶ\ұCf%#ڪUå61З2 :*(@GCd'~s,LUɶ_24*q=hPjڑdZ(q˯sMZo5K0Lv;Qʔj}vyC_LaSR>S^j m.PLxk.GC`8~oChTxY ڹ_ڛ?]@ZEļOpІkRf]|Y{QwGAO!)pGjeb)79b%-|?!żE*N6lVmb&]W*8oC_wc㟫gxq=f?'$;؊+m)^V)*1q%-a%4O= 5P D3X R+ٽ n& _Ȫvk7:CLZŪg ̯u'df( F[~ZJ"ʶR6.Y 쀯H~CGlXUNyDCمC7Wu~HrC!WNcsO@&nߏ:ܼES׀ iw^ZZ,(h ڲpL|@sbfT _6`G4!O?^ipˠMoPnVۡ%L\N| - E]UkeC Y?kFMl A1E=Qe+ #薻Lm&/unp)/Nd5s䶲й@Nd?tLԬ<PI|R]QZuwlQla[a=I;u(]{%0ηs&fB9Λ0? xx8f[qzĕַ>.з$ xӴeXZ qdݢ@e3b0Xm c`+>N&eMIt!Mpþl@<-6g1S;;f5s-QgC|JgG9*Q~5(kFzor Q2~=&]$a3QmNV"O2亦TOcV`u鷃gzHvøat|݄5ʘfm( P1~dFϴ՚ӔœK &kN6)vup *&l?4$zޅ+ *}.ˣ 0o#=!<`7+}4ҟnD $~ͬT8OLCN\vJŞ40^ch$!꒎_]l\V%p8r!:#^+rf#> fE`ǠF*LboIFC\ F߳!6 þۙt+>Ds#O̚ǰtDVU^+flH@ռ48}y^n0H}IT{G%T1#~k s(* DoG(8ߞ.;[p^s˲m# pԺ=<q[A*A=Jnhd1L@U|s!&*0ێ3"5ycz;s!h"c v䶜 h;g)1 XsAkc<㎙o&11c X!u1 CJ:Hm5ÒG ,6t#3ME,kD@$S=meMl jɆ2TTCݳ?ڿ)fHңTW{ZD$إl?6ݝOHo޲;9+&/JgP 'iM?Y#+_H"0]0ʏ@pS{9M&^6a+9dN]SQHB$[ }ty;xgnO3uE?tԵ}66[G_Q@]zzzOQՒs1a^ӝhW`'Ъ.E:=v `cY" sʺխ_lP!;$:W2r+S|L;AŸkD̝bݍ[T.A>nMRbڪd865KoZ&t] t¡?+ε%L*AU \=M+X Kľ!l𢙆g.?7a~l#x 9PvEˎW#uYy/xP<f G0] qPuMKpm5O[Ba-1s,+,H Y9Db1ZĴ zC)2_~7-X%YFDzx/=R8Ij `'ߤ Q֕z0 2"9Zz_}Ղ dNMnX:1[Rז+mP_#2Yc'h*R:c$UA:`LB[7&Bqo0g}KAf۪b>cTV i?&Y^ j cND= !y rčՐX:g9c"^u(i K w18k.8_|dbJ9#,?Y17!D0u' 7a~&{pH2A$?r_Jῑ\J|f xih9Eu(`[ Q|vl)ݧ 7V^vP$K*fA̧CҾDo'w ifܘLwm8S)[])څ.FLӱPr$ߓrT0Ohv{,1L;RX+R.W@r 'DQVJNWi'*Mzz-MGPu| _,ZG?bͤFI7)k~Q8#uDM0 D{W_C }0ѭc kP"q}]UG>liF-hUYa,H_G0lK&q"tX&!Ƒfh ґ5x-CEDqBѶ.`~fH e " wiL印7+hyqRυBÎE|iSP񢎫.5^1%7lktPЫc&F7EaEm$Q*X{ٗ6;U۾'Q_w׏sQFRQݪ/; {;H-X"HI UХBAw$!j~9)yu^I Q™;%)Ȼ5+Bc[[0d:g%.gj9MOD&uo 0HbIeotX^Lf2' w96-R_%WCE-%¨@BƄPcUHj,plA:-P@::cjQkzзGyWF\nqn""S UEIgdt=71MD7iIVYoZ,i}VhvTr aM`0`Uk'~j ׌_'xr* +i)~Eܦp wu&:z rҖAļ%'v5kveH&^ ]!\a12x $ۿY, #S2#*;23,ޖ"S^mۂ|Ը2fiZK&7nD6b#<د*Ú+BJUg|Ķ+VS,qV΄]k֍8q騿H gD:r?xcbGN6tgRrQhe?PAȟdi߲͆jᤶk'~LbK(;,fX!N86ݤG1O`ósp%XQF:9Ϲ=w $>W0.MEܾe+riJҾ.P>ڏNQڜ`iRR};cQZ_V.6%7X[+-NSt&ețV.< B!hU7W'kV "zivltx Ww}_hoBMޗd?ITtSf{j eΗCT61&3Mw"\T>Gl.rg?/:v]j 3@iJԱ(:)bl:T7,V"+̹ѵբb ?`~jz;3/rSv "H;]`9} 4)г;j1/LGIz2#xʃ\IRhtm<X=Xx~ǣ#)/.њ.G`UaPʺ\:h(=Gr H~dΘKjPTuAS1 uG<`j }R6'|fh _쿟eDӽܻ) --h^<0{X-8<ŷ]\P#>hLgF10OxD,5jd(kRK8S7K:;ʊD1j+/cXnʇBk}*O:(l c-ke1;Gr'B/lg8*IZ&_v 6a5}Foݪ ]}gLݣNQë &Oƪ?IL{,Uc., ؝-^ӀP.!L9F4|%EcYqGgc8GU51bE%"wҮ(ȴJv#=&i/_y*cxr`&H m:g%E5[Ԡr;Zi=evGIZ}k=$kiNTWjm2V7Hm5%Em619yOx' ˥^Dߙ_s> 1vկInh/+kZ] ZfhMiUCJMuC**1w{{]3 ##B.Pcu/dZ7jdʦ~S5? e2/)4v/?D6 YB>agnf%H<bƶ-fF#yk \ݣ_l"JѽvHD!̊a޵?[ZX1 (v|Ť) h)]573߉e':{EnZmnmf1ZE?Gr7su&M]T0:9 52t/{3fXH~*B8/O2{e1ʚ6~G(Ho_Ih]5S.f/ 3i 'hQ(xk ,rnA8oX3WccS &qFS+I~/ / U45‡)1Obq,&8LL)@rITL:Ќ10=o ęTt K319L rRwa77m(dACH?b,;KIQ OLW{G59;T4O Z!z~Wr7V d.ﺐHDjV7q3mGLkAHbp$Z9-۰^PYâEMZa" rBK .h{y2upeMlΟN $-ռSkFF2;d m9ެ*$oG(b\r򤞣rN.8' @X#;#])ƪ=p])X3KkW< 6,Cǭ6w(IX9=RVáoۏDoy)k|[KKWP^ZjBZڌE47Tއڧ}T%\+n9WIUQ0n"L}Hiد1"HYP [Pa'a娦MIYg (Q8iAl]&Z|Gs3V~$bZr]66 f_PI sĹ2M|>\#z9I>E=}"նu' dZB!{nߏ?4[afg2u5k5E|?@ċ}i7AmҎ*rCA:b1S5gNl\bW.FW*!7K~ t S5@j0ωx0.KrRdtKN̖%fȓ bڔz DZyyT^!r&9,7$҇.V!{b> %kPv~\+w N~es1jM{-b@,64Hpm=%HZcÚe-/8+Td6,=S۴ ꅧ*Bhn(%2mOP+01 ^U B.;JMy{uKH 9]GgTB[^2Vi{Ì#-D?7- BNO*C{}PU ̲It`Xje/DdJ*i7@Cb?~~ȰkȿFrWT)[d㦢Sj٪#*{ U+jzW8;@T`Cjqɂz0$($'u[o/^ 'nZ YL&)7o f~!t >X̪Yp+{yz(‹V6<5:4?ztҶ $1I^i8 URXj(sLo~צR"5-8pg@Et0f'80>?yvƲtQjyY9e\M7) ˓ v*Cjwv OYCظN>Bȵ(h(X&qBsYqʙ`@ϬQ'Cp?CG&ˊ%8]X2@I:Z 1:b6Q\٥>+?*qQ]>Zeyb;"gjIsfo!O^%lX9'k.~̫I,?=I qd1pL,=V\~<;S!D۱ Eh+LeU f\,(o/F۹SH4K87 tGq J ?).<«„=w̥ D'IFITl-CJvzʾ[̪(xU1vX-Ji?ή7vy+ɉ gv^9L㋢a.ζ2@-9;/XwKl0sމ+Dng0k:MTaBh^Lvb\ QS}(T|5SZ?bas#,[^st ,.mPz؄ǂ/Rl!L<*>2~;*I{2P`Y(㔋ncw3=<dO.ezJS(" Ţ:9uͷ>g4mlCx jFw@6[! 4rU[{W?&tZ*@5,~uaG螵W]rQ8ն(ppw4D~ m&]&>?в@4k%MW?DzrpLHIňV'޺uxa`GT񚳯՗A(rәt~@ P> Y+X^ZQJUupu::e/HC/pH|7xa ^IF+XXEH;t?ʼn r[:K{WbƋ zoU:pG' ofw̿cX+Ԛ|JaQQTxtӫ8n>a;d}ùG'B䏵6R^<CX8N4I%!ڂ3;Lx>p(g/D )ѧ[Y~V6V4 6 r=:dW/Uw'c.cE߹ׅ5 )y\tNOTfjidd,ć/CpdI`}es֓i@O)h*Ʃ?9σ[_.'T ^j~P >a3}Xs E4ao ?Mĭ$(7`H> e'Ga9%qzfyW㔽gǨYTG :d +Fv8U .u95?/iD-0z 72va#f 6O%௻*9 Jކa)җ]zu*I4N>53-p3t=("GVz)zX_~_1~HJh:a-1@`<_[x6~)mKZ5MdeRyth}nz0;[v?MOGJcU)łU8~4_̗|qN#sePUZ:ۑq@c<,PuJ(#AhxB ~; 4+lw(dP@%C5I!jfωJ,4Xjn圤XljP6$DAg~" ڡLiŁ{@80B!nq,)0cܔNXm+'e'ph8}͡", 6\wX-kX4}8YԲ㏖yǶ oNe9C8+i]%*Ŝ`a z N-5"P(=e ,X;$x`X^F'GjI)Ib[ÛT mvm^O5 jr=v>WȲ+#*pv[Shr<ĩ)Gz_{$z,64x\IIbKRbp"\f=D(Y|o^s q4$D=AEIĠҲ=Ao" 'ni{Cʲ^?Jl݁H| dBMnHbtS7aN#i\hfQ uSr*-na…2USp d~Ry4FJ߶DT`_pN |ģ@wbPK̕,BtTfP`#9` ^ް'YBy/r OHZ#Bl",tPP`ȹm|5PD5oo2OFjǝ$;Z&,umky1+6W_7D6o1Q!VexoEBD;ˁpWP,Ħ[!*+yS3uki!t#[m =:cC~g%ʢ,WF),MkJ(1G41Xm _X<+e\GavH@E9cNNKF1wF.cQ8#}V.6|3ձ\8ʰ5HǐS޸^n577~AQ}IND&a?jm&0|jRRSH!է9nwCSek;\U{`ܵU{'5`m7Ș/G*|%bJ5r3tea@cWΗh¬HH#X(gJ!:΄وnMte::ʋST ~[$_JdHu+_5#{mQ4O"'p ˍR-lDl)SKOSdO S|_BË{$!=j7zСOog?Opj1e(j/vJZR6E_ѝ!qY^'7q ) vsQ1376Pm2)3|lE5Y3|ABXnGV 3ʊshNm6A1>6n f|sU Ly: /B̙啘zC W %h2ըJzg<FyrIn¥sPN3h:.D<<㕈|ȴ"Lт{:(63:ZMeeGCDKHj@bR"9QOXH8]I@7CFr_j&--2MsqTOgtnvk*JY=:ZUIzʿ .2kh&6h x╋y;+2*hDG~O]-RuuuiLi;ZvIwtʾ&a6FU}gaR#hM! 'Vq_=^[sq$GaU#&(G<» yާ*|ov$g^e[ |RJ_SVJ8k|:aǔ񾲟3"yrQzs'/kTQ·J >{ŚVb㞆Vs(lVZgУ-@7L¦;cv MT.cbWv7<srԕ&7Qo__.3vr1\!H?[B'N-׆)̔fmM CEǝ5t;2y4:֮Y>Wߑ H6@Hj|rTU YKKѫw9e/~s;9M8uvFBDʵwnY|&-8 "8〝61tmiy)D&S87%VkdiqCUH.sg6~? g1SMy./ŧs]>PIgT'暙-cT ?2w9,MzfG?{17۩}&c?e}-fձ㦇*lVSyg&G?,'bEn( A#§kCltqBuUuGfN+Z 3`Rpo#K~g3JCeJOv/)=RɵKYi%&FJ{ ^d PE2;hdǹixjj衚LJ2H_FO2ULs$jjr ̶OV\OX\~’]o&5^=xk]mXB( VVGe- Ү1(Ze4]rh ҇UsZ3_l[[Txe3W,,jeNՉҧFZC}ed/FEz< CctM A׃E=KدeɵSC:hZF~fܠv6WpL5d R:j[ ]R/r͹B_o's+0tёTl'jLOg#T>;esS7ؚA(޲qx~"N#V3(Wq'D.oK*jqw.N9Ae{]K1fmtX fRTyzk. la溷MK(مt]9ъDvHY`]g(G}sKRhh@ʤ!]ń6SИ1+\ +(@Pgtpj7>FTLufn\q ܣ388eɍ~/LC4.&\|L8X\T8e eE f_V'23 I9P=E^_*q0+C@5+I1V 4w6\=Tܐ&=[S^4 {IVܳD ެJP0d3'Di-,\]jj88\p_ 80^F֨k&|I| msPC;h+` ]0quH!01b>V uՎ`"b+p(v,hafyFTS٭U^%C^fJ?9O_n RDAGglQM# T=OMܷA~ .g/n>=)ÌMN5f*t "(cZ#udq.UgF&њ⿨ ZMQj}ACOWmˮkJk1i YJbstHJ3иygP}7>g{#E?[`8\Oq%#~n9}2Œ}2><_&dF~N7xř:X hwdo8I&8)xU i] ;;ūIھ^d!ۺV]Ll'xͬ^fzܕXK(L\yksбC蠷C}{1*TtH'& @CD0~]PVZ6HT~s7aڞ:򡧀-zt^ Kx&쵄'/B6Q$d,ݻ_C"f5G %J`bډsF_"/_UQD  e*xPPSz>pK oGNK>[;`GZ5&ji!Syv)ڤ28lR_VR o+~ވ=n}_-pyѕn+ۣ”9u+\q57kxpP 3 G/9H91U\dHW\[fUҙ YF2,"-OBRGo@ookߗ2˴>I(d?b -z zd>i)ȈgmA %P/XC^ Rox~xuv);3go,|dXD8=}̝|{0 \;֊{j5鍌hUM$W֯b~|ub FԮo@ X -YPh0f0\(ām<;89,^f ^_}99 יrB ؾo%*f'#]h!Co2\pҧDMH5h\S! 1/O~Z*zOG16XSWu>#< ְ37l%ċUbP1d@cZРb,soۙtLYgAf,;E3lVD-NULdݷPH x뉸F&%bIR Α 4 ^ߙe|mr ֢YAʣC PM |E4#Tg ;[&IBJ̘HI^$[,wGfȜDX[rj}3_d4&wŋA+ߠǨ` HvO8MM]?#~Uˆ8: h lPI.]r^f<[L2OSÛDՁыQKӼd:.n?0y0Hq.  {yyoqwxm~~(rSFxUqJQ063QR<жy6M'|/Ց! W0g6:e2q=!0=>!W|Rl{HD{sk#u uR%-,v%cdpM=) ُW' dwm ZA5zUʂ= V( sdzl  7֝(Wa&~wOw*( .DLW{w2fhU:1͑ JJHEk{a`\ ﮹XFDTp4kCS#,NPd؍zeMke3ٜ1"0JcTbi PS=䇒6ias~,}$8B+NHqٗF39LQiD̰ey:џܬ-b3τO*\`JCт @1^ с_{?l`f|c-&PMxSX<$Ǔ82cl%8R1Vi|&(t4d{tF|IS/OG/'* nI }>s J3iz,ze?ŭ]y*v?N5uTk!!PD\*H d*l-ͫq3uG/$;~SDp[q HOo\'v_΋K"(X!_ ";UcmvGVYԱzO׭&41^^ {.1"\ $a$wj5!Ql8>b*ȓv~mgs&5wlN #xDj4;,ݔT^B#7mum%"M?`eK٣FĀѰIueWdgƮ> Ah%}/tlHI6j^ɒЧ]]z^F hƲIz0:I& ry0ʖ$ӽ*"4S޺2 QcְY<.hʮN3#4i߿R]K/nYvzF.@̫RT4TY( UX1TonfTӝgFq3PР{pиL4'8$+c%E>f*lC q@iോr5S&]^ f]* l`cN~E`+4ĘOthd*E:DdӭKh(Np+ 9s2av6Q:drPQP'dBDF"WSbᜉφQ`04D:+UEd :."C5|"?E];Vey<0,4=3O z6aPm#w{59a-&ȗM#dEkS[ņ>qnn"G,nZ\'.تkW[7WNm j?Ck[ư` Umw(znv> Ŭ%A]ӥwFٺfg _f]!bfM[F}}YgO{ xDGChaޗ K(i+qmOGg*:iq*_d/BsÑF[+:كW_Cz>x֚`i[cX]k.DmG[in)OxIS1su<,rV ZkFG*K5څ#Q\L S"ɋx2ui× Lch&7y#`ۙůӃEլ_H$fR @xT-O,FRRڐ#2^RVbyoxRqمz߱S$u/|A1SͶ 6,,)8Ql:-ҭL`xHd~-ک+1 nj,iD<-y&}Ğ ] :iӍôXLN_B2~\T)e*]׉@T%{BoE5kݳ٫_wTy\ܷg#|ƒQ DϬz&]R=g]݂}Ε[\|z9A{P :se)R>y05ў 8'gobe{'t8$Ms t 3ay!fA߶K&lڎzZ$)Ŋ-y|lL 5(( ?Q,~}5"Te.s^ű7Df2-L\-W@0*etKөby פɂ9RŰMAG4Kw9WDR Fk5,kN9`4t@oqe',jV jSQ!Y߇EZ^ZF!D7v TZcQ;ONAKIĄ@4:jTwd<&\@[yVma;A]:oƓFu)Syli +'ܩ9OHAEGqEEB\ In\m[l P򘓑f7'9ľXo^^C:[ jDT DK.ml–B#S^qJ}s#vϻvβ~L>[ٟ\$!@h8z+,B)lOii`ExF~a5O˶ ? -|g<1šλ;! 2 jeN/3!=bQ]~̖EdAFkq.PT>|7˄Ѷ.FVD Qd|5ޘ h0`*cL3‹%2Cل!9NϷdtmޚc'w hW7bL*80Jr_!y`}ަm]=F0M? $g@2ѩ/Zl4 7"/wϵ@T<2-E2ƳV ԴL4 e*j^h<3 7_M*:ھ Hk&QDM [sj!(P-;SS7 $g 1E*FKX V1`=JPBj+\3mz<{%uo&tVu)^}DVˎ)2Teg%&-ޘcإNr;^vdùIYth:Ŭ:RJY찍}~ \6C:E棆rSו+bX@pLM("rE՟Lj]gac]2 ]EJFG Mw]]E--U+)qR^4 l!U8߿D؛ƒHCE,U'?=a.VEاh8 ^ȷ@ lP/>%B74&@ El%gX xcApd8$Q[t[.Bf&Y_%/ I 8Ѩ*ex2aY8ǟbb9~KU:ʽ iv}{*2V3n,x|Ʋ\̞bYԨ!oOrb?עq\C-`գ8qĚ]5Ć>e -q䱤&IZ'L&0l5z!b(J"|,1zQ-vۏ\Zq֒Jb('iB)P!; $(]eԇb)1QDŏ|Vֱ3PB,CR%M"af($KVS$<ڧMj X㹹%M~].دm7 !C+ф3FhʝPIHh]!y[L ,6tBڅLIw !2M!oR,VXmr\99&Jt/y QwW_#N@}zMO8Q 3bk}H.ukҫuDҲ֢IiSH/RѦ<uC^4>Fp[Њiש3d*\+\gRn~-YRȰ4,']4)\ .V;"@,l7. 58) BPOshjPYJ[2Ygnk *M]ƃ_ko5.ZlR0_٢jf[ 9ix>mz}vtn76h=x;̼@dU]VİDZ|B#ANE2b0$[ xI~Wue>ǘY|%tnu) VTX w)ͫ;}%+~D^!WM.9>{5%, "ejՉzg>K@+IA='?#:P++-XEMBqͽ]fLQPp'ҲArƯc\9(+`_@h")p&US[$ѠqN?5ڊL,QWأgDj uǓ{]j\^5蜄4@WN#?oM$>[>KοB*Fj7g1N8雀8d!CVoNHk~萣'~`c35nҥ!4Q6_⦇F%26elQA:c}L,1;# JF@(?4Y>a a82A@/8[GC&|/O E+4ս/WxeKo<q3.2*MAr2PD /)Ej^,ے8pӆa 9O?kEUw_t\vٰVFApC@}\R[ɠk0eR cޑT'6D_8$D7DeiCM '(tQZ`|M|GjTC9=*&}ړ2J!)<`G6EWŠi?'ת@? +x}wD]2Y[~9axetMl6@C:ڋFf,ÌlQ mW塱dIl6HNl^&H:(YNe`R>&j,аo kJ&~ǸIx#-u 3RDQgWGg$=RsjW|duI*[x#qZk^b5Of&@e S*h oBG@g|vμ$+r{h|ķF,oZz[%k_s3"3iH$! 9tnmXxoow;3i ƺer d: mwM=xI_o}o-` lr&|S:vhXhlj\S~#1oGI78`,kwʽ )طYȅ߬eY`.1׬TۯZ+ꆦycN/Ya2 _/^'GG{ JӐ% k ].@M,Ԝ/Gjɔt Z<2WVοׄ}PR(5]'K 8fK%uBEsZjLx 7K)Yy{ fYllas&wrQ%śfyf9_=n2ހ}g5Zs`/׊z"cQ8'R@u8FujI$ e'JmZ+?㋆FcX! +UU;w]1yC&:y :ۍy,D1l 4h"y]] JSHspGe՘0h&Rxv_ƮL>2;mY,c}hZvP\q@ g fASbS~| ą; hRXNL\Y3`b\B6EБE€2ܒxOm )znNUU;xM:Y$E6HJ }^ZM$Ǜ+תŠW?*WEt[[pTjV}r= wNJʬ{G DÊ(3VYUUEAr"WO 栧T9aЮ >UʧB}\Y6K웵h?xls| P\K|`UyUR ;9c@n;hUR!E gf^Jqf)Uw?26x_(39p<⟦ag^9)us6ZEWuE@8@?ͪ6bDx@6^k\xLvh@)RDׄZ0 PZȯLviH o!h4J>'&ܩQv`+9d'mZiuAgiV{0" E! Kӱqv`%Ttm;䄷$X34ք i}.ˆv8yY(i˾2=[M?ᜪFRkSp_`I ٲ.ʥtq-q=K5a6j(>.! k . 0WUu۟6- *J3=<)S8ZϋU ]e+ebKT_]ѽH sOÃ>J\ USٷ/9#)}=3T@9櫃C> [R\CTÂ5iM67XEu54e˾d(>1,'(a?C)E#_+a@䂮A kޅ9h8. YM 휷h@4~ ܖ&e7T+tO~k5 oT4"4VmۗUg]Z{)ywʣj-oug'lridcOIPqң)DȰwZ*cI,E#GƐڿ'Iw :tTtrdHA ) ./:{{$Q- ѤPhz"ƀ !僭y\o$2 @ŌhvIi8:E^vapiq}Y.O^SXRx:i>dz؁rq`!gy:UdT5ߘ[PdxPoҿ=MGDh{=b8Ir!탥uSj '~>d9dgpSEݝQ5g#9Y80=Ѣ $œ[04|KHh\P:0L;A?\{Ig6(Q#+3Aq?$Q@DX.2SH2z 6s>}iWWp! CkcTT4 U!G^o}e8vkȜb=۹ɫ>0>Si4#3҄3qZ-,d5+pL0Ʋ7oj>ͽ$ڵ_8˔ ;E7wVNxD|ziϘe`8 \_.↶Iz;#Uח@44gStʌ#ә} uVx'gW`XEI+(ntB 蓉 ߜE|phAAmy%c S7{@Nnw.4}ըЋRmr]Iomt'l?ġ* 5RW`a\ N/x,E-uv)eYa>=HcƃXRPg K<-v:L0WtiQKyXnyEtThK`?NC+K7ב(k"c P./ Ƿhr  Ϯaax6swz!%/! >^%glOA }ªDLSȁ"DXMCt/hSYE7. y7QB%?({!QOg7?mkFx7( f7`s vt΢[8vG`( "85-Ϋ9ɛLv{uFЦאPTajN 7/-̘(ހy&=G @:Rs1Z)/ThgGfeE9(˭R%!.L3 $+H8JE *^ 6/dmqep+]9 /gm'Bl Mm^Ud aWv?Li_L^R5 SDge{ Du !?PJJ E-^',9MA !-w!lirZ*[I|duu7OE B瞣hL _Nck!̗Aq(%`ck>*f2+\yz p߂'> Hpci D}9ʪde2fʄ^CrЗ)]70pBpJL?3쿴$nPQ"d*N牴om~} E6-]e.; f NI/9,4]~x/;9lGZl9^aD+EM) OefeCIγZ lZ 7+sj0SNb}?Wicn rε ChɈUD,HYL 6}Sv;^//R]ĿT{³/Z*ݷ{MRh9,P0SCI3SUACDwehJUޙ"䃿ڕC=%'z^nJ"9y=RVk5edQߎ#)=Rև;Rr.A \Cq2"9Ci|+`:kX{켄ϼET%m"G<[h>ogdb-$BMcfg$u 'Km7zYmvnɱ 2#A7otD|3\A''F>X~c:n\/uE~o[[+{k³S~|kyҾwK{$b L&*+=wGj4Cƺ|}s,!`wnRg ߱i?S__Bצѧw9x5Y([~뻜ܴgir^`ȵK&oG) @77u<͹3e]n6\40joQ+Rok%ph;+eE:~+yrG(8{]s$ȧ( g֍9,֙r-u- !Agl`t\,Av PHYijˡD*NN@Su9UR?xv8XSn02nxQU1xϓQ"h ~Z0޹0hҿ%N mx}ROQAEN81UFb3{2aoIO#W yx 72?`"OeOn"dv9 /IoPnY:KaQAG}%cUUFkGl)> "ߣ.WjBBQ#i66*Jv9𙘩 6Q&bfF9"sPf|gYV j:) hhX/ d(WECǼ#E\ X8_>;f`(Q`#o+ػj/L#4HўWu$X* d>B2bI]qt s3>7u?;ft0bY& #k;χTyx2{ άoԽ;EUv+T$ `l@V:\yĿ8ެ76YKe~ܲ]uݹ⁅Rx(2 `Vtt@t>3JN )& WrYdI"}HO}.\|ք)%&7apf= ͋; EƄU1ع,Em jcB4ƋV$z">BR+݆^Tzk&x#.qkP{p ۗх)[>"RVgse:vykVζڡ ĝd/l |-2|9\Z{궽\sO&h1( dNY &%H)EǷlc8E$vl=ɵ>YDA ˷ZYzD6X ۀO~%sASm r\CK16 ח?V};7LSIa%UW\c.Co(9g, Bz*!;څ`̥Jl Y**:W.ȡG%()s]qED께rkQC_"W[򜣠]Qܧ#m>1ퟴp =)TJd4=o+22A&hX GJm.zd&]ZY;7ᜋt"I\oU O 1 xC< w6g.tP-.s=pUTbk6*bcY3^zT*ׂkivdmt)fHJp{qdjg^@94⒘4qu[+Ya~hrDyA̙Ρ[腎,0xڔӠ^c'ٻT:D#~@)DڜmYd-7yG6`"~g}su**~:m)+B])Ԙ/{y6Eq9i7>Ȃ[$/^DA{$=j#g _ul^ĩ\ON1R9uE.m)])>8l<3dƲLœƢ!rrdÔݡU' o]h7Iwؑ=FMH?짲"`Q>/Ӗ)#$?]'=%Tǹ4 =nHk\VETE7in`.V*Auѱ uǪ}Li RՄJd"LeÃeÈ񏁔&;yZ35y\i{sjK˓t p`]#5{%`vz 2"'L7KQ L.M%}i(P2ÔR XE~A6q1M }Z!ilOU9)]cN3Y+Mr<cΣ `}=*R!%Dd7 ;aLUϵMg7, 1 "h/'W[g[ǡȦ]rf R޼W/+S?r`zdZ+C'p0ppc]îDҘ/lHzs;*!$AKjL5aFc{pɾA{Ir{sWo^5P\$Z}[868?:N|XNoi2z؍Sbp˵Zw!{؈Etf~]PkY| epw k[cJ׵1$C[hcNui(dV}ggxa'Цlv,.Kr%ca]c\0†m?kd opN ~5Tt`sqjXask3d#ݴ;К ٝ8Pd.3Q|bdTa}e.nKSIvPF*} Yn{0m?q\LJǤ[벘QbW^)ЧZ~֌a7=fg:rchԽHڢF4= >qC~K\0bGZwPXgV Ex6tV8xϰ .Khjsx>H D#2=1US=ZSuW$v/r%+UFL'k[uQ)UtG֋2RV[/؍[IW3Y8?r|HZKh$(oIɶM3`?8CjW"!:H̵{ \Oл'9Q$V k1 FMIw !Xomr<kX^[geuDW֊iD7|)n''%w5HEu`1Z.kjZ\aHfwmRB_}@Yqefϧ7v[gK.sRDPvv-ճ*R{I5Aq=Vne!Q;,Z[[3*a2 ~C=*MAfy7r:߬ӢTǹt ϥs*6tam7;;]Fp+x<7'2 k4Tr!Ǹ&Pל/D)rx=1ϸ:>5%>qx\ɐhʿ|zLRZ|TyQ n._-j0Iv%Ioݶv7&(TC**.o'J^K;vVϤR-XIl6\"W5t'|=i f )r^qk^ܽ05ߘeςj?Y{1xUe(!o5uW7w{ +v<97e;6X xl&+#a$fEƗN~yV4BW( #r'$.Ϡ J3So%BkVO / |ӳDxϬФpaekC\{b u!(V6/g> {CD qh3ܬK kzz3ևm92˷@=ѾUj:Fgs&Z1@dܖ iF@qkaZqNiM5HI:~ts6c;>{fY@4'<Mse&[T?BE,n|PTZ"1z΢'w?y5 xWi)n% LE!a[h%ΖRqO")**k4_6VX%"SSç6.u@my䚑fNC44Of5ԔGx.\y=K"`Vgw\3P^P+:O 5T}eCd妄gБCtmHJH&>'D1m[$pv/Cu?e.nF:a]+=(Է~FOsRPyzijgkCƛI Is gHƕ3| '7]f{Anv^.,\{U/N]E9/PH([Rk@P%Ŝ"`m#W˟M0GARX [Hq ('W_,*T/lSSD~dkC!9Qvmׂ_4x8 }:-xy@򲟖NV5)n/1yP-\X1Ić]L7>&q W_5[v!0˵[ҽAֱx1طIAtkg`D$_B~Z]VPqUk B޹9 8j"K= 9pZ}5WZN>܈%6c0eNMO)Jv#suѳxc%c5Q ʱ#/1^hq^77=߂lcQ!g)C4 Er2b\x*+^GLTH'vEA} ~c0=8BiEqD% o9afk|(JR<ƒjQCH6*!v=]/?'M6hzH@fYOMm2ULgΏMGt ஬@[' 4IA}GՆzԞ|<::Auﳬ?:ZT11[dVF^ٺ́̏3u삺\#_űd 7,aNf5~+ ǟL:j8iWr1 {hBe*#le]hwZZ~5阄lcl׷4K, ݣ4]k; l.-22:bٗuDI.v8Pkł5ɠv\ \3\fdzio,T0hX.)yw,ScZ٭j"SȹꟚY_pZ#b8H8"<\YKSAA+ي 7|)s˩b,  0)&Z-wAÝceOp/P />i` '=wҝ ]>[+@g?Hv-qTt0}$ǔ~nkO c?A4nN36;]E>ǟ\DJA$ f1^̊TidGR:D*ԕϠĉ_jNN+^]TlUbjj?plԋϓdT V1Mf9}u-uO [ !2e& A"ZLq?wJE̓{'{ӐN;;|_}&"D WU j8l2y3x WqkS3I#J~ *KgH c? >#MNKp} %WG~f=bG  ܇FC2!0L@Isigy+cT2yB{Kk습\JEN}'c7n5_ǛA[ Ej=Q!&(^*K'|҉6B`y}Ƨ7L`XlEt uU0S9 Ddŝ*u}P ?hc"U7CI6$Ըx3#J /xdW]YUKv4VrvO`W,֚[hF^I-\{"wC4u\N 8$TI.b=7x=5"n rZvdpZTp"wӛTVVpwlHCGGI & -O"8pOMDC"BZ>;ײ`h'حXZ,1?yy^M@jH'lGt C$3[GҊ싺1?Жsr)S_e<9}REOOv3Gɱ5)mчvW46NQYw(X4~uhEWA.:HL܁/a٧}YX~h &22u3[5N4Ik"G'nmR[G.I3Bō3~A)'wؖen|hi'TESw1EF>r{+6q@O&EDb|UŞ F%?"ߍyX`~ ҄Vlīc%FoOD+[@^9w?Zcgp(\=-з"*s#vPVne LSLW7:0RAMK0@àSFoyO]V -(2+IkD[Ez@jD6 MiAςvNaᄙjԫ\x5ӶǡSS9"_)` :u6԰dR[ 'Tgw|J~3d[ vQf)OB˄UoȊKk4 ϏpU4T٬Q9}adѵU-zj;_MH\\ [ee-SS+gwPy~M"9L(̅x a"kV΍8_BĚ7hko!z%름RBs}Huw( -~b%ѧ+%J"ѹÌR#+!qX(-ۆ-H[{A殭JdbDi-}v _bVh5r[m+倹XĢCG=Ff9-D*5 )sdJ(qa۩ؾIؓgBe:}-5nʫ`}Z܎ڧ'$RSNTLдߓ?{4yLF1W"|q:ci^v wwZ Ѹ!($Sy|B::Akw'6s5,&B^9OS^:hTYۀG0D,m1K>*p) h Wem?äP >ѯkQ< ƞz`h[\ KvDe "ɬ˹0V `\G&rGM_9oRUdb;-`f< nA=^opZ W,7`r9Y0Vlj }[n2˗QBaDĔ[ś񆪭^16p=O*>_a?P.HݛXĢ0~)Xs]/(һ:Qہ.W1o/ytH2EA1v3pwMgi%Da^^eQљWڠ2욥[+a ^ -PaV\Һ{P m Jzw t{k\A(F:Yb8;R*ÿr"HA Ŵ,4T)}]a2d&*觻LR6x~"kpH-Sꍖ|AoJeF޺ ĞOD[ܹP =_zc[ Ɗѭ!MxZ6>zGIʽ3`N69ms@:ZM67?-ػEu Ņ m!]5^~M64SaJ:YШLx74js4O;][-Zrc5buز^1U>0IMpg9O \̟4%ZQ@ϟUw)!MW/.Q-d0eWT bnXo#-9a i63fgq,/0ッݢd j35 J<[* 1F W>(/sǞ%Ol2)8)]b #pW\yLb< CYauWҌd7.}#Pa1&cV|X??5z'( hV"^ yc<3WCDOW,Z N7WB5/-r.n6~7 [" w'yGt_OxoMQ ާqL&sZ4 p;" ; }O lx$*HR! 8F-Aĵ4R$¤dqh3$}ّvs:RLr^U}ݻt$Cv JF3v{?ԬL"6቟~%,+Q3ICˈ$O ir25~:QsE4x}GY }ŏ̙ICU$,+i j3_-ZRyV~Ȇ8vDtC>?Eakk>%$% %PTNBP]h :OycURNq\Dvv t}Er]kb^짨K/zۏh[N״$Bd˷~X"&H[;{;y0?j %յD݈}GЮ,7GLҙF$Ƥ/e@];Ȼ NHIU;QӋ+2_ w+K">ֶ'{9JQ.1Bs4B>0/Uxx_h-;b7G,o~ю: *7QHTE 4=@Qg,MKϒ_?d+,g"pZk5Ltlr~@zoҋU|gUgaOʵw1Iyگ;d߯9@99 0 L"3.&9tm@0021N`#,Vu5нĨ d(~J]>r)FC[5PD3!;L&W(. pghg xMYdٌ=y֢+Lb:y!&&r.|{6*B BOR\zWC^侢،6%O0)oDB>gvRM<8jAU\]-T/"U.MrM7F0D h@5vr<VdnXP M!xRNC)STA3^"8Q.ћ2[pYihǴ e/{cpdx3 qeacQiK4\^%j`*p*Zs&yǗYd+)`+'p1=6"6l$|+=L@hUEXʳeP@kQBϗo .ᙔs!$fb΅q*N> tdgװR^>X>̎XᏬ5k%[SfR!EK-9g]qZ4'no}'!C^]Su15y*MGlz{fk uan(Ex'ꉻ!ZZ{J⥻1@C '%N8i\xOk{#"*""bTnLxˣ7~| ͣ嘀,j`USgܕys#s_-YJgGx;"=\E, ǩvjob{D0<S[[5s~G.t坫A˯Y ؀Mދw>MS$v{Xߏ sC*Y]M[p[t ˵]\wZ(cMGm _GY05T'ɋhaxơEKzy-Zš]S#!THtdn]n tHS57&-qrLJ(lNl r9|yqњ -~0)h.uU)4Ky6A\c@V4VPy5t߁vU&wZĊ:MׇH<曮rkUpz 0j(&%cԇQMCщ<·xZ6~CX̡Bf5qEE&gu]k fH[Qk8>6SFY4A*׌(̪4Q8 Gox1iDͰu {9oOJLֹ9lV=u0TJ$J&'* @*DWcp2Y7hkf' N@6N/,?M}tyoF&4ݫ ) != ך\(8>0 `W*S)c-2)^N֦Ot[VT*wg=w& ; t0ٗ0!-P=TH8E۸ \ǦB; t}p+AIqq:!R%45q]vi="hsB߿̬2[`А`~ ‿ 5TO2U(k#J}{جXK-< :6,ہV3y2CX¢όڿBAX<G%'a4ᶹϣg(RԛDs{P 8A0 zV\rQfD+RNU3DsH@;W6+qY Jj$<@.Fr![" SvDȉ[J0@57 LPQ]"zwƒj9{g="G*L_Y2W 'xosU/09Cjo~_լbIݨFFzl{lА1%P3'tnY2,7 wfAj3]NH2&{UDK˃3.'IM]㕳{1Me"0hch=- /6,2iǵ$&,ӯ?^J= te'.~K8o41Ip,[_.ۥFjB b]ArpM$jBH/i 'KiPWaR)lmq9)i*Ɋ`@jq5=7` [Ѵ)EOMҜ`e@eш?sZX6t6˙kE(\ <Ųmb@ z#+{qj/.7=q.䴧}EHJmD,Svo9TZ.U|w/hYV,:ůu5M ^h^grN~Y哺hZێ+e9_>ı/p$qXs]%]:α20Yᨯd*<ys8ۚqYwFM;pqՙ7l~xka%a\@J$In2bnRD ^ ؍OqT^? ROiMB/>~D]{'m}6୩pް+㒪/@ 1ngEψ;_gN3e`J_ְ&5}/x 4P \&2[uсr=LzЫ!?| PB7*98{"p z`i-~< w͞}EƲK3c'#KlK)dM `"㪩u-ax ҏn$XE}Kid9T?F]Ki(#v`0OݭExd WvmYa.64:~0D^/EXl',N'ˬbGC.wB,x"cH#:X8:fVߴXeI!$K`&b]R+[@x[;5YeSw`;irm ӧ G[,8aSX-sƈh֮UThh&$w` ׇw"YlJ&Eє֮)IpzTětƕqK/.1"u(Sj{R7.?YD]_c ŕ͈6*Z/{ =wx $N*xyp0pvUBki܊JVRMvy1Ko#jkv2F6b~6+aleT@M(İƟO&B2"nFWKfc]zWHYD^h#.m4S 5'U9vI=r$4Q-au[sz1+DFcǓ+7Hb?ؒ$p B[JgSP'̡JB'R>3h#q!5pJkŠGf>]V[jt%u6THpUb["hpmgnHAwQrkC@YuBJdWm9cy d \b0vjQs5Zه)!i+rdT?*bSM,7RO,,ӏrK:v䨚j?9 0t,`Yb]˪@i 9Drp|DqlX޿Ѐ^AVqD i}iFh5Xe nE8uw]ֵ|s^6=}OۃMS *Y3{L=u7{ F6Qt4Z 3^.e;EaŬ#(MSm7 #;Ю1 FTܰ`OO}vMٺ+`<;izB-\#zcsb:S]_ct"D07&*R.fkQX$½ {8ZJͳ5kY-$sEsh Ҏk1Ͼ|)FLOn'K63h^!?ה~Oc49 XN$[!2tqxyY1tÖPڀp*^q8jKXW_p[9u03hQ#4VFߢJꎤǭ6 QFB'̝K4roUhWi<,XY_Tn(ː(trŇuuk>:%dUq@YJ͐y D?$˷?Řmd2:Nv3pcEENkn"y_SJ.A4O2"~fj2a`*lRh]&13Vՠh`X&5Ѽ;e6eEM_9~.\ur4[QcC1G,wkhLGI8q3uK]NFL4yN"(7aj_yHV^ɶ"@6 G7If*}^ іƏtr'BS%)wsDz7qz8't?rX`o?헤-sN= p^Nv#njC2ooE2B`/ʹ-tZtJ)zt]p@UpdY_+OlqeH sat 2Rz5fi؃_h0]ɧ]|TwL]F4-2J;rڌ^H vW9FNbZ <~sQ$\dhSY:j2 OO WQaSlg\ap FTo1{WXo!ϗSl5QNB5&j?m)[6ObD8_iV]2i3^|6 ׌sBT!9A'J,2e3a)>j"kU%=p01; =T=Bج`HU dM+wWMW38 *IEHgr1f\|[{;jC as^x 8=afLx=T=bEG7>#D AJ 5T7Z)c 7wk˦z,Jp X׌tl^Z6?9*z,SDrVVw Y?3V^D*r-Yfu¯ZꠉoAbݒ:Y o^d`Ȗ¦P l& 8u`s*Qhy_ʥդClbԱXFyu"EZdӻ:x(jnuA2j,??dn+.m7&ôgcw\N. |~wotޟQz lm/RCaxaX|#}%\' mo HQ@:myw\R/鬛C`e.tlLnRaMǡT?-.Ѓn91Nk;(>˓I`HGL1뾾QyÆry^}D7Sc/Sc9Ƨ-Wi9eK6Gۡ$-H`O>5I¢ǚ Џhw;e ziR rSK~^٪7„bfclępg(sZ}\YFro;u4N/[6Umo\AEݡsJN_]ӣ9sJ-$ZyZ2P`*7=ֺtxP #5+`yU5SOM*l~'-}v%rw:@5"%=oI#.ȩ#$zL7M8 7^ =\_%e }8P⌈*d<,.<6Ծ e98T+!s+ډs..%W!6+!{!'ɽCn A3U2X3[x{PウKP 2Yx.Q"EU wRl.DM.X<oAjWeOR?RMגDb+V˙Ȑ> +l* f }" []B@/HL 3[NkiT&L 5UH3jE[mM";8pI3S]!JbޑA1\,ʵnuW>̈́(+4of-c5x(Rm.KQobQ0Nݥ=:UE:?o8tVrM^B2 y]{Η٥pmQ ICöy)B֨hX9Z5*`M}%`m‰+U#3 ?&t9M6C<鼟%t=[יH? YC?9\V9u&R lX-K |&7B |a5 1PS3ù/jn֦7)]"6BXcbDϑyOAo?j`W*~i+w2A9a@_1zi=7P<ױq&/w::ݔHGcӭ [KL%&vH!P!(uW]`G.b.ry4AENm  E 3 V.nb74PI_U_{^J0QYY"p]씉G"W,֭krdrt>epޗGR^YMҔ)0)ci<3_coR@b|** 3KW)0*/}5/?37W56r8@7ds%; )tn*~2 |$V[2ۦ;Ne_qqRiG<8ӴkK-*jH!y0ÝhpځzFm2 "A%ܩL=بѐw8Sn:I;np0CMC,oݚMF..;Aof#99Gɨry*)~_ώ⫗T2Di.*o-8sKqJ/%52_-&{ Ѯ'쟈:e4H= ]꧋r>D<vfW"RRp]fZJ^nP:m<_,9|I-LOˣ{~ŽgQRGIjEh\:4 2!^ QF_K]wKUDOW\q~%H:Vڜ͂t+<0gƸώ{t9a|VT'%A,oY;rB>zE86ɱ&rvBѦqAj=΂WlKᖜȑ@(7a1[M,xmZ _ْ"XTUlQ$3|졗"\PAe 1[SPqt,Ɩ5pz k*h}VU8e: c}5}/)q o7szhO`9'H{p5> #4q=:0 4fa y\i|r[S9oXV V_^J$24BCC1 \ȸz )RȺycLS-B?H$/# 1Gr](VQI5^`OvTF7]8Y;HPFodtЩ!&嵶 {/0WFk DKI(K8͈0 -?Zy+ (6%VӍ$ 3@* bkÚ8&XTn%GyL۝(&Zx1ky˹*Rpؿe }ZsJ7*tGo%V!¹unQ zO BiA{!\F(,PX%8aߘb2-4ς !0<<nRIsgvv ˰B vm&UVzP j`՚uY!#ȅh_ud҂/ouhԾ@3vC=2X` ;a박t=09ZW)HYNC1fw0͸ 6=[z ^4cO*q]L@񓌻k*Z$L" m,Z}/VDo!E9JdD١ZOôBMfGbCHU34Bf4/0giy7/дٌ'u~I/}ȹỽn?}) -6>jY!Ah[&!v޵~Q}EETPF0aqkJ^@InNO)#0!]d9o}ٰ"/s%U6p㶊#u ?7ӵKk,v책. \|Lt5Jlu9Ծ }Qcc@k~xVyj?.v8ee3ט^deOZ2 [,eCNŒ=SOC R>:2J>l}!dޏ%4c-*dpC*;-ЮGpw0ǰ=e$OI!3|8ȼT e-'M+TpH+vm 5..e}N`__o5_ˈWm}xTw('wJ£IBJpm|O/kϨ;¸5*֞- CUlm'-{N+ڡ5Lom"M@WXd H? @=U!O(^leKք0{O|5zMT&I~ kW_}Pѽ,npNwӒ(&U ;ѓL]58]3JnE5y8.5o VA$^*ʲ77X uқܕS`Kᧇ e`.;| }|A$d<Ʀx920n4avN)JslƟ].0 H!2#( N ..ThUvJU'CРPKryEz1VOD@iWa[-k$v`w0dA/̢0b req&'F4Ftn[=UutGBg#W7PHd{a_" >*>YpK?(M;~i~A5Oo5GčR/ Ng:,f<#]{eMskϠ+zd ɞgPe=g;5.06zk;ay__:G:RF`#v%`t;SSڬ+N0̭.5_Oz9E8%B7g9aO9DJjM}=zfr(vM)-A 0ZoEQ**:_Z:fmPÃ\n5,gݒ`x,4N VŨt!5zN@Dg-x‡ xe ۑ3M_ׯ&A$xK?f"]TѕHu~d9PLZCU6%B́+em3ˠfȳE7REb/;G]Gǎ+h2yBd\vd?nʓ"D Ҡ7I!⨏;oc&c/­㡂:&5[*czDt- jUlf# a1Ãѧ<2AfET B|'.xWKZW?ď(:*X)^9 pbpgGVV itߕ- glMWy݊XnU4:Fp X[h` 'dY`ъois^::*. &~A5.Eד~WE 50JT:fq6l|ż#7 Q.m5PnMI:4ТR3fgt(tzixz{Lo^- 8zO[v _~ ;?(Vciߥ64&)z\˻ˎ!?ίt.Xgöa'Z87wހښ bD8A}-Csw(xʏ߾$3(KWjo 'JmU"_Y! 8Y%8`d]yuѻ4@r-kr72)X"[%= $6N-"/m,'{D692`k 846G+<7] k􂍇|Ӷ]D.0ʚuC1ѾA<JiA$`Ebc#%*C5Zk݃p)XWX 1NG"JY5+)Ms?DǺideolLJM@EXS Ahjڭ CG!%)G+u:/1&2̣aO7 OzDR׉~cXEy~|袞#qV2)' M)<{bK 0{XtTܽ!36! p|t5 `e䷆#[<,̩݇ A;?x<) k@YUO xý7Rnl(ܾWsw][qjkᜊCT +9F'ї7| OhsR$kid>@is&Ie+GgHZ;s^t.W+]xRi!%6X;#TRQ9٪ [l_1,DX}0,FCnN7`4J id5{f~y/lf%wסv<ܽ>ӿw{@SxJGv8L+t~.u[dAma'^k}B| ۉ'.]1 (M]@Swc—2LXXJ,P[c)b+OARU9vMgՅ/D$PIeL4A&ESz̔P~5J8 9g -V[!U!ͼ?=o=pnQ.݅e9ÁgLI֍2kU`+NJy z7mSv!MCA& \yknbLˎC:[)0ke /ELǒ/j+0CJSZk BA͔= Ӳ3`N꥛D]|kAk{k==zRWPO0Gis@"3kfY!gƤիT%Xr *Ȟ?WIZ+^K7!8J8Mh׫qO@`e5Nmx#.xmKadSYD9WyhՖ}*JK#mXŽҡzke^%{Ɍ"qxl_36Ѫ6{)y7h;KHq˾uyj/1 "c~A}kvCz\(FbgQ͛FU`Ǟ,PbnqEyy4f:MJHXMhw 8ykrs&mAkEO?mBZb/DV7 Z-eYB4ljvّFCoD^ڛ kFFj?SyE>0"hm-orzr 6][@(eto@yf?WeGBFNxN40OTan\lA~e; }G}R" (ϭ7 ݫ86y.Gn378=_=:&\ꇓUD"H? čǞilEG*'hDzJ-G}MaNg| *״}e`+VBt'O(2suV)3n,K Q"$]̘PM=a%(K_ԤFs,$&UV.^0*8GW.l{)㊅mͪǰa}$լ|o [P Fv84K\N[W7jaxh6V>pJ9Fl9ʩ4g:(2>+I[ :9Ȍ:y `Õj]m3SM _L[׏K$9%`s[P23iSRp%3jk2>Ag+؛&F]ogﱮk MWriG\xD=/} iE"i!S܀8'7Bc{xFݮ*P}в~!X5l46dؤr$ c ~n"FW &C(>47_.M 4ٵ$!}+_4A6½<*u 2!X?L k~(WN&9_P@Op8rל4AE<[bΐLVTϝ3D>{ wiL W|dGđ]HӲ'X8 PEPur mOٹH-5D.sp,nix8?=8fٌLnnl3BG*9w/\(}齤45nC 1&BwdS/Sci<^P'vcJ>fKTKg#tAi>P$~mz[=_g$mwNz#\xiY Ayn.CL7~bern7ig=;4*!GJDt) kvqEyqO.%A@mr|LnG2w sfUkd)`$?xDճ<֒0}7]IgsjF׆ш:N9o[Njue Y߸q"`OKv_$}&! F|uqA_C]Ho0~i%˪d.gR[3i?z ^NTy< e>I6';(㕝rA f2v"uJnGxGkn|y pAbUA:/f`cG}0*B4D ΁JMߒ ],xpû Zha)K0'<Pa!i(W{~xhwW11sUî6nԸZs7+HGY߲,b= q eAҪB[qvY#['I(vv cЈJC]M:Ȇ~7L4g+QC"ˆTc8ԁZpEs5C^7XJ!V%-5R?ƬIkj='vkfSHcDa@d%v*cFF tʳM9ZғVyʬฉS؇9ML bDXz+?FfBCLVN h#UW]>s<$wU[n}!$;yolt>VlIW/) (j,]buz oq(UILSѥ5Kpd{7zGS"SVGYbXIeo l/"Y`/{2ӎEv rs0d;~}! 7Ftސ;FsB];V%! Q,:~/k?ӛ=B[O -H|2Z?¸h+S갴%IoM<mںj^,T*U2{U*1CG$2T)wk$ja^ƌpһpE&hڝ Ds}fpK8VH\.0cjz] i3o SdyvBuxLbݜw%g.$N1:r4KcO2Gh5޻Fʿ\[syX0.!:ڷ !43mdr\kӌ[G7h#+KmdX3LƄ0&v#}1Hz3i Ee Dg~ )i^G| mOp RR^e  S W4#6K\eT0t!5&oT'[ Y#X#ˣ%s $\u/U y 0kF/-;+B-l-%G%LOxm\նɡ{LQFٗ +3j,74c@\"ykz/-PS8rViu Hb~M {Р & )i'Ј D~ _}%PP.|]RmeadQS͛=/E`_rim (|H߿*DC,LHҔ<2yGg}Ez[VT #9qǴ]{DPk-բSv: %lI}`}@lWGҢ3{W_ӯ8 %lYݏ4Gi"aכb䊖%qkjSLE$|Cˏs-pFׅ%Ӟ:Q=-}6)#5;I(40V<lMh[RgsD[26Ra\,rzߘ1AL=t  Qҫ 2:`G/.nptbヘq"PEGh(xGd{֏5!ĺ(l4s\m4rXT5.pm~/s5LVKӽ1t j. g~jGm8~9h)`RYjhX zGB`c5tB'q@՘$g 5[ַVOX}lQ1 eiBY8 tj!9IGw|HpdLҴ)Y'ʷCYzk!~|L z:Y<?q(ܦ~#H8c$5b|E sX1*%,YK{F?ȓTXdp:bk+qVLl1S0-FȠȦ7u]JG\>YO <țbnHʽR˛նi_E۟!=LYچ@`l>s=Sqh>b$GlsՑWFCߺtn$kb%kZ&|OF&t%vQv 8Nj^_n6]'_q!/O0_(>nC y5킒 P)qe_mk4=J f\zŬ]/-+r^y7]N@Ʈt+Rz?` :8rtWNQO˄@Q_wf4yJepxiDTtLA+^~,6K#hŹYhM=-H55gʫ m^_d T'YiJ悁9iST|4/+;Cc!şl'UԒ=\z'9w^xØ-H{rFۅopLQ \"!4` [!s5pot&QH,kw[MiȓkˉSkbM7e&bN_#c%uw=X1;[3- }4&M|BMY,uU(Qb,&cڕNrpKtqe1G,;j e$T]TWy)X׭Hp9a:Dc輿H1Pt bG`c4tPWDaf6*Y",7h/'{@RS%h56/)iM`Z$I݂JT$_ "tFхzMhCF5 }@<<: Y3s:^szh%Ҽ53A*H*% FF%uIilWdN? Y7Qk(=xmi5H. ѝ4CU&c1v-辍Z)2#r%NfP[#q0lDfRz3VP/6]-VO0TME菪uN%@ ƴ52W/pi ˙O5E@(_ưǓxs JD^U"gF3LLn: S…+G Dkr[V`9G^MC.k['4撎͸>\o īa=Y'ifZ(8 8(~uŌ+|zO8X.R51#eDLQ 1f@];zWW+"ƪ1/T50C^XU/@º|N% IvjOAst$墲$D5= /2ϝe##L UD&Yлhlr+`岓'|*fago (Uz:W}p+1lk4S1l"O%b~V852@Bjp>"Mor]En5Y~41׶N [OiHs\um*q*@crO==mr t9\Boӏ7ǜ |f-oCYÑ@˕1gHr{$[L J.pN@KJ3џO8O9kJb[ j|2lDC?ZAƬԕNcY99g5yF.Vl1Bz7Bn]wg3A_!z`P&żRSN~ى键m\#^}m[$YD#JRc)r$cn쇨 %i$ #M6nxds种IDOSfSykQ"-YHpp QEF͉:qA [4 uj- .?jiw{dJ8ib`_JlS23Oȿ2N09ue}yUJ!?~JJQ:@YR2aq{\.Mf$xcY=뤄mCTث<$ YօbIML$-Z_ab5 u+`T筶s&1W47!Th9R܋W̯OXk0tEQ ߒA>ĭ>$z K~E$ˮEE54)d_ɩÿO+P5`zaV $ޢs:P)pk.>xkT5*n06jܱOyZ!m҈/~쥜3Xd.DK@o 0r Fۋ#mh^$eɍ oiV2`Ȭ u;3Uȵ;,Do(ᨎ';p6VM[Nl>80`WoC8Ol6!Kx$+[jNty0bS5LV^FbȐ`7j|ϧ%+̨~> |'{ SqQTy[+/]b.ϋGmf" .ޱ vHH:e9[0_&Vgm*Ic*&'Rj~)}[lҝ  zLB(z[9KۇT}xd1"šg8PfV[<, j\lp} jM)a\x,|Qf0I~eޕTx(%W:i9 `od>jI>w=U돯%XAy9+mQ~0_3=i`͝S _*gW >jyZWԐlTm7.EbYIM]!D?ӝpI퇉TVo 慁CfogLfu2i2)p"qpsh!( M<)tIZ;>hI20ss иӟMe4[Ko+2⥌ hB=o\qi}EH3v;/񪄟gK\_c,; ~\C'1?))]`{=Ac7S}IHy,1ߙFfUC͕CRz6 }d0X;2(2DđOB9?'5. !Eـ۵ΩA#'-x|񰉊2]@O˥{BDU@Q_y@}ܧRR.7I. h{XTF,fuoot&kKO@XsEթr 'nܵ'@7d2==eɟDwqnSJv=e*=G-.[CM"dYFQga/_w=UBԦg{n24x~FSDJ+YQWDlrGO&_A+m!q6^m|èrU­6k2fLr<JgI-Z(QLWZ#Z0\7tXO҆XjZo#T *gm l%֯; aIɷ^ƙ JZhGRV}#oIp[Cwi "u<G4Ӄ Yz{\.4@G@ѯ!Ƒ?1XMVM֜b)M4x B,VJ05I1hO;vPb<Ȭ:4P7{?e | Xfq &(JgzrH)&nԛJ$ s ޏN0$$oK4_&<^ nP~ yDKu?VT:8C8qVt}QT lD}jVOR z*{zj& N8.3!a!dBS ;UhcRfnJ###c\ af4[`;EX2pnRꉫʮW6r q"eW: f<  F)0geYT9[qSJ 5$yіO:blH\-~8Pku`cVJS^Oĸ:]?dm)UBwxZ+>H.xke/'yLlkCZ xa[q/,x `mNeQ8Ǣil>!C5(D/\ 3 [t4uWVA̾ffU/e\Ki* Q|GA{2l!iJ E_B)w?Ɖ 4)R[_b|mNͣN;ȼ>4@8\&C@e"$6%O^ oL̗Hkdt.w¨3XhA!YR<Щ6؎M]cL jNMPB2 9M/J5Ҽ.MS 9qJ}IЗ&, g ^pΩn)QCm}]E>cFNJP{=A^[w~D8[|~]7([b";s<+Z(DL' ٺx.Z"N+Zӎ.CcUՑ\}ԓ%c&Q˲Sx#Az3x("HΞR)mh#W% 3];H/i<\sTM[8V&"brVL%Dږ&?3P[֚#FaH?kDf< PQNWռ KD);s5e5 C٨;9No׌byz?va>4S 0%(  o 6\n{81/*nB2x(0#󘚹w%2U*" M!P!1O+-sg *gb>od0d2bh*㞋.<V8kJ% Sz=(CڶsOȱa%{5U3,]a \?ș$ cR;? Lڼrw.+2ti^[8@Jo|W$꿼[܂QqRZ|f%vBv}*"oDC0:9d~1e|sr %U)ޮ4Fn]?Wk<'剆vRzD@Ad[[G(:U"}.OYdvo6SpuH[v?,hNjъC8F62RTQLAֹFZہ0PbyP‘ܲht$2bYMJTI2ģQfF1jѿ `?-* p1<y?V \-.a Z󜢸wzh}['>őhÐq-FV`Rv Jc߷N;7l=H,Um蔽n}9 k8nf?QM a]JSq@{ŰQnmP޳U޿>-iȥ?7ZYxhu8H@uihUIڊ01ь_U",nh . r-WO}5Tv$.[!W_k"Ntk%l=feNpJ8yo8@K+Qy<1r+N3Ro2>k;oD1Ml΀fy(l?{hizntz]YH&AXk0Oq8˂PyPC[;F@K;T0pC [/|cQX#c8 ̤9k;oo:38&V~&~>s4h=cllvgג-d+ۄA +5[UV|Tq)ƹ:-Rugt:$&E50 g5?& tH*g{͙4*'_6q>2'k9cá+%RK*aR>2h@y| C@ m.`m:!Af+2N 1*$SK7!)Ŕf!@`㰊B-˫Ն%F)ԴjxIaxX+0cPk TA>:.3k €FfWq8dGݍ8k7H^Ua8:҅vyD~CdH 7(z7 ɳ׊h%%[*jn :~bJ~N[}%3-".OP7ӡ$  ^5: 1#kEmA^Qd$S,Qi<t*R9}{h ~r93RF[7X:h#7E;O~l&q T7Y` Nu,Ǒ:*j}XWTsgCX'qV~y7}-ųqB'Spȼ!1AALW lxme[mi5YLamqټJ5%i.4\%muE+۷0RDz?G_{8И_D"4q:KVd{MIz "== @?#V+` z!'}%|-?&V j|MKU~*5̔9yVm6ud<2x~49G=`bZ]Y|ZEg)7l+QupE)}nG.=fpWVmjDqHs¡(I|~]7DTtv!aq cΐv|CbI>~cVIWF?)oV}bb=GwFYZ³[ˡޒX 5R-lIŖ;ʅ*] /3}-mOO)c _Am_#g\+wC Da t 1RH25DCG4֪F k:_lX6cR4#o \1V̪&zD#4z`. q{0'˽Q, "Je[OfJ1 a$=oKK~e;MLWt`eKfhܹ[MbOTsw9+Aj~^l>`- i҅6—H_+pm݉^y:*H;"MMĄ AAf+J;>q{$9wP$tH`fx"F}+n(5{m57&>p`=*&~0߬i(dM[!gTB]0:m` Q'.ϵs1Q/o;+R6@t8 Uֶ ~FIzL<$lB6g RVeӎnWĈ n gͮ-n#T[83M `:eR` yoFx\qD\%8g- `ZC4/Վe*j&(4-PCi J=EshI ( {gwB}!0loDE ըY<1aCKa),ea h%A$#l*%MX/xKOzM3 ?FԿP=[c 4 x`1-3Īqvzo4 ^Bd/{:rzzV!DT&)^al1˗FϚ=ĆU)j݌XZfOXsl}yjGr_2a\}FOo1M}~ʭs#bPإSU:0 mBuh?h u?lx{7S۾cdj$+@O+%59U TcB݀MkЗ4y'ws!yQh>'vY0}_-{Y;[-(gɀ58kZ$/)XHy4BVȪၔ1rS*S {WH5s`"h@׻G؛=P >Z05޷*qQ42G%2a bM;ZJG-W\ɛrۣ|p5pVN8R[S>r.`.]0?n vKUQF{6Dfutwu&z'Mj}{̬N>{eMxQ쨙!EZ"~TGMeՈ>S}KWlIFi_% !Wzzl3Ǥ a`3ݠy_aC#J0.oC3٠=JK.S&SԤʃQ,0*{SlP58xYD dTR(ʦy0, SJ,7F>HkgTXUP`Ɂ?0h5:|^0dǿ3.͵a}~"8:z#_t":0u o\ME@OK9PڀmƱ`08wes>ᛒ+4Cשw}uy{O#kPEક= T)) >% ..`6pɴT{ȿv$^WQt##$_Ft()epy `FY\|Nuͣ:R2ĩk+թpcpq!)GٓتP P.`L-얷b6BHIJP&E EeJ G'jwuSKE nug8a"'5:|_Iˇ4emh{NO/ZV?6iH笛15L̡.ǤPQW݇\= T0O,{rF[T=JfBVg3vG@Nc1%$xTz-+("pm>7ޭ8+yt#Z2 hP'~2 AvN' qFԪ#s- ΄Mdyeo.qP[ƄM|:|ƜhIL3lCI:?)+qcTxɘ"}@6ZеԜo-ZeuU oa~k;H•f=$I}t( 7Ic[YA$}ƺZWe|=Y 鮄%I谒=@ JRFyO]ڤ(.6فa+F6)^V !f%xMU?N |ꊐ*˶5Qg3#f*ΫSLtLoJ̓0Oj6DXZcʮ?c>#rLg c.;xqk#T Neǵ+1X+-&GT eBA4 Zad@u;GBBnIiֵ0ЛԻ'Umꓷ=R8_.yВ]p^(w &!҄zgB?SKs"|ҷɄSn}j0u#}F-I3%#Ju[Xҙ$8IVBYQfTa$y;0֘RKϼnwp8ao-ŃʎVV+s /DLċ qdx*Zx @Y 9Sُ u}*yňB9*YZeYB}=p<ثVH%/VuU5M~o<)pH̶j% a'^^т6Ԍa@ 9Fw1W2 P60V4MނSe–z.8QzX,rFKRb3$ {Q+&;*eG'Ә1$k؛"Z{)CR и~Y>שJĂg3wU&/Q&ԡSfQG$btb\?c_}:&qs&po❊bW}㖡YG $!~-I8ک<;)=oΘoz\eZph&AaEORwkڡtXJSI}=$4+a~^pɶvΚ <}]vh}dy%\ :0c NTKMj,yi5V <\; k/F2bs6:,iqI.V-tz^t dx(TY>/P~)[wdh+}A$C^o!l!#R USءM| CKq%u[BA&!%3!BQ>6eKg<g.]SNՕ%űi2:bQ[ àQ+T$-mg|'ju(\Յ%s#bR }8rp4&Ndqw:ОԧaI5ׇZH^uT*>%E ֍3nQ1AN@2$/|(KK_R|]{|BReaPe}$n]+UϜ]ÑOS:H:CT[kj;Polk[Xoq(8u"-'ѹf t-XZ^g@hX&PtkS[%f# XxfGc Va/뽹#lPFeCQnf$|,#ʒjixN6B:?MlIi)kVeF5*Ch*|:dIƯ,#cKu3sH%ꞗ!R0xE84LG~gJC IX]Fdx&]!kB^]46fMnZ9Q t#ȊrI]<-y+'"/b^>}˥t"+ GL;Dѐ8ʏK S↓ܰdjBh8ߙx :[|sV,dƨ~Բ$o}EJ(7!^=ګBT6:׊#i8(\Xh{e]@ 꿢@h?2wRwM^2`,UsMZB'eef"OAL@v dDn>0خo`V&qzt .qz)fҬ˥#*M} &DPmd3/325fq-$Nli6T!/{9#R }{)JU\LwH:l_0ȏ(icğ]nX2SO+fxɉP *Bjdj b8]qPsE*Xj\=&pwJD_t˲wjVcܝo{"Ot㒈'}ԥLޙfp@MhPΙż;y7um pᓒ8a5-11rʷțƂN.ղkخp)JK06j'L/ ;ί["v5I?Hס+|R ,WF~$F@γ9MuN{(/nT+-| &z(MV5]k, Mn,D ^pVt"N%|'|GO tvp2)ORh!}<ξSY(Q9r3 NE{4"is @|EK,/&c)3{:u@#A]QK0(o=>cn\֧uSu+Wj(RWq1-Eu gc6&Mxp 8K|lb=3-# W|PɜSbERW WY6| ()TfG9Jp yebC^5{DurYǙ/|#@M0QVw)w+&9v>ixUH`; "W`5yucLYۑONm |gS"dEpvZUdzbŲg[I!%²ӃD:f\ 6Uu"ȌECbBo\yC |$CKsFoIQd Xk+@B`nHetI|t>RSQiYt_l)ZFU E wE?ݣO[ZȌLJ11, ~:Ym2BQQǸ͎L˅MF4K;>vwR0 ٭ilPOߒNyܾ^!&Eܤ)fx~ڲc-*IBsʂ}ԘȆ]w=ϧ!\BAm4oVf/$,Y5!fZlvbH}+,8ZE~ 浝>?xN邚x_zHd&e|j3@IRTﮪ~.8O޶pm)bσPh 2cL0Np<;U,wVU6[ʆQ2p3K=?aU:''$ބ+(1_SCidW]rVDpf),X)ĴV-v Y&"`S[ vƂLZ(4,6?s桄P*]WRV_BnjP#Jgu3uZlDy2FV{PI"qw UFF=l7'@,_:m)>ϑueZ _'."!c5g(ddaUAL8廟/"{gnzopTP1@<kkZϗФ6E>6B(4x4IZ6g:3|<=ج6yrÐT/ /Q=۝? >|EK-u|p ۺOjFgpmg<sWHKz ݭ}ZKWR3loO1 J"tg cބ &WE-S)jUʨsz@K[w JEsBE~L]S>ܸڻmDa9Y ){o\jf*ʟubEېRqB$UDzE;;$vхE"}@6]J>8Jmawi" rJhlW&En#-{"n-/.iic<}c,6j*k4 Aí5z8gkȡhi2=#1Fkl+.=Ԓ+ޣk;K5e0`@✤LR'YR"tFBB8N$ʺY` ӷ`3Vs~CB;ΐOTMG+߆1)K Qf睤H6%`AAWTYnf|Wh-HM3 D/<`ucRД%%@[* y:)ˀ8E*#?іӤs؎a.d^(/1p3Q8T$[\)u4OY!H6Tg!mV8{9!4<%-"O'͐gB 'J"fփ4#!V̉$Sҝ3ng/G,ZK9_~Ts;8UK.L R:CqCo?(WfςwX.4YXq8 \:=U{l+fa%Q#$=nYal `[^\LX<ǵBSa2)yU~ ݕjΟӵA(?niGc7gɐK)qe|KC`xds\AX\?D9B.Xih4 Q^։[{Ts*ÐхM2@:* z 7FJ էb~%d) C[8zh3T, # %2fvS;3odYK? `L^t.S_RPLRt2 :x$O8S]n[[0[D{`hK="w#,Jpcٕ2pxsUk\+/B;A 3 jﱉq_-(.N2„:N<#| ^zZDD-d1*P R,I`wׄXz}5Rq* }*f_6I?!NaQ(WMgAHb4@ ^OAVzi⥾FJa)uy!F},tKdoz1mvjg{t@N Za'x[*0ՀtR3Ri`4Yg A^,1fQзT+K/Q/cbM|#Wm2jAo(Y_1e,J3=%9RH~uFc2m* 5g'ġi+bKC<[: ~mCݏ&i |\KLo! 2;۱}4 s\d-Aŝ_?,=utߓ Z"β5r <b Eh[Rl" F [pE@=iÜ ʒuɠopAt 6H|fQR@~y;hX+71bw̞JtTe@=!um4 ˆ-MtF4XP1މTix,ƾ ްϓHpPi _ ,c|˭젋~3`=W=&Xoy8 7msƕk&-o^l͹~{YM1l8>.WS+.%sFH=J֔t:҆ud,C H;?HUxaoݺ4riq6?K[ x92e!JAob$ g2Tƀ'Wޗ^}z=ŅyejK'1^Ozs(ꕅ'6J*>兦(B|r(*zX$% ,IR_RQ ycxwYOH3$,ũW}U>ENT1"'E#t+#a$>_w;wFϟ)wp͞&ϔk%ntC+gcעm;".g2d?~Gr^)sYX, >S $uА} ~öP?ȃҒ0,fKj1SE!Q|W+T:QɣM Yk]kL8d 0ADL XO1R$+:oDߞ`jӮMv~.ZKok=n9?eq% !`wJaB ٻ~9 DEʏ#I@S~RE\Bdn7B=x<u;ve>&#GĨ.,$^,<)Mu'g7lT%b?)܄ܝԙL}kkIMbw$0 q?4ai ץc\)1bC˖zx׷2Rw9H[`:u4f Ŝ] ڦcS]2bYŖ@TklKiYFqMG5~ry/O ^a4m!Gzd_3e]SQ7KKpW@Yx$},".}%B N @*'Y4I|#\͔Bh((̉ut cFj5J,qA,Qш6, k2G\BYL[ -uB{y"] Byg1TM+RޣcKMCw52dM+>gw%ɤK%7tFa)HuqJ.MJ{{I2؆tTDiR=P7pF3989t*,wEdTVDY = ]A8 U(2 9☓;= ؈ozY)kz \-!;tDߎ"7fP~I*9dMㅺwBq*IнHDlb}IE/KYre3Ёw+c$"6&;bN]C:(*\+uPßU9[QdA¶Et`Ba!SĮ:z^{m{7ze ޔ0Axl^~I f].V bߊ$/5ӘЧU,S}z0Y&_\K(07$sa `.Tˤ}Mte>ˋ5]Qr:ZeF0Q/R_6-E&ƙS (?. @&H\\&~KʹlCzg{MnU's[;ݍ(; [``F#a ~ɻ\KztngKMԅ b,-z~x+ *ʙ.I9ت/fhQ2 &FJV"0< -1R~$3 A/"լGxO}D$TWI}š Y[*lo}h̸fjfmwͲƾP:`PH4L&Dw" ؉9Emj p>!1wKNLh nԚIf79>ˀ*w:bI.UyW3b/? V ><擢o;fU:0L "҈4So;_u՜%UMlicI<8DJs!^qG tx퐂ۄvj[ (jF (1KûBh 8 ?Tr) T:5XGNfi˪tCz!E+ՎAi<b7<2i}onAs)اM9DqxjqFi @)]_y5ɧᨑ{ '=瀜 ^1mg?#jF\m!ۯ-:q=c=dߋX%CA'ʾSLDs//du!NoHÉbQ!CHNR-bNz5 qM'OXF )0zg\TFYxC*ķ?2L's%QDŽxTfR5  2;eo2M<ꭍkJU!ONNw@>xpI] Jr""ћbbX`Qs?XNgi< |{EAt\7ex.Q^xӺZ0i^d - /Y *  'B8'iǵgI*9Ms<j#FCMv&P(3QvDnu AfiLc߹KlI>?s,Qa3s"dnbL7Mjې0k `cZČO'-8uBQD+\D2xAx'VlȧIR#>}V@뗸mg kpIǫ r}~,b33-r 4GeK,wś>+,@u3&v0.lR]G r边"BXDx7γ83k1eqH?3aO;Y+&IؿlccI+ +MbgM,v--~~U̕>$7gMJHF_$ǫs.hQWu+6孎ʠ 2 PMn$ER!"ll˻EHc`<ͯ%-H*BE5 o1a:Zi Tu,+Y$HKɷUzo՘BAa"m^"3$(}Y›cD+ 0oҷzXW4w 'Q&g6$bql_H8732'ot*ڮCgcI]EҏR)վ8PPѠxj[_%)ժ|c!E"jq03W s5{H޽Q㹹>=S 4̩;Ͻr4c$$E׫%:h0? Ke^d ^ z`m%,PļWz GàBkVgQ |$%kBKb;%n'P:{\gV'k[86>!B 1K3_!mh:L_]-mu5^Fe qفW/ ^<wۉDΝJ`KHUOjuaG(@p3m*ɕj^k6|fqeL)2XcAv% zA, *H|&˯H#vR!hֻHX<ٿN+薻R(aڋWu5u>(׷XЫf= C/̛0noS&Gxˆ엦sSi QjUoopnWM9ܳʄXZQss/vࠕnKlj-%>9 7Ƣt_4[8C*65[@1L6cUIhgI!E|JxC^+vJ?KmfExOkW[(6/ud% &M!z$Gi9gٯ? Ng/7q6#NxDalY?>!=63M㎒FTff|]Jv⡬WDLS4IYhQ. c&3@+/Ge@@{~XE3Ůa3@O +D>p |K{g옊I?3co)x'R1-'󂏉UN{W < ٹ_ e8GCjVR^愲*~M`yVP ̶x7Czu |QJ|ճxfCD!ID^?