You are on page 1of 932

Ein LINUX-PC als Internet-, Datei-, Druck-, Fax-,

Scanner- und Einwahlserver


Prof. Dr. Detlev Reymann

Gliederung:
Einleitung:
Die grundstzliche Konfiguration des Linuxservers
Der Internetzugang fr Server und Client (sowohl fr einen Zugang per ISDN als auch per
Modem)
Der Linuxrechner als Faxserver (mit Serienfaxmakro fr MS-Word)
Der Linuxrechner als Druck- und Dateiserver
Der Linuxrechner als Zeitserver
Der Linuxrechner als Einwahlserver (ppp-server) (modem und ISDN)
Der Linuxrechner als Scannerserver
Ein Linuxrechner und Windows CE
Ein Linuxrechner als CVS-Server
Sichere Verbindungen zwischen Server und Client mittels ssh
Der Linuxserver - Sonstiges

Einleitung
Fr wen sind dieses Seiten gedacht
Diese Webseiten sind geschrieben worden, um Neueinsteigern, Umsteigern und Nichtprofis
Hinweise zur Einrichtung eines Linux-PC mit verschiedenen Serverfunktionen zu geben.
Vielleicht ist auch fr den Linux-Profi das eine oder andere interessant, aber aus "Profi-Sicht"
fehlen sicherlich einige Details. Im Mittelpunkt stehen immer praktische Hinweise und Beispiele
fr tatschlich laufende Konfigurationen. Nachdem ich mich teilweise recht mhsam durch
verschiedene Readme-Dateien, Handbcher, How-To-Anleitungen und Newsgroup-Beitrge
hindurchgelesen hatte, dachte ich, es wre hilfreich, die eigenen Erfahrungen einmal
niederzuschreiben. Zudem hat mir das Aufschreiebn dabei geholfen, die Zusammenhnge selbst
besser zu verstehen. Die Anfragen und Kommentare, die mittlerweile per Mail bei mir eingetroffen
sind, besttigen meine Vermutung, da es Bedarf nach solchen praxisorientierten Anleitungen fr
Linux gibt.

Vorgeschichte
Im Verlaufe des Jahres 1997 hatte sich bei mir Handlungsbedarf bezglich der heimischen
PC-Welt angesammelt. Da ich PCs nicht nur fr die Produktion von Texten, Vortrgen,
Kalkulationen und hnlichem im Zusammenhang mit meiner Ttigkeit an der FH nutze, sondern
nebenberuflich noch Software entwickele und vertreibe, haben sich mittlerweile bei mir
verschiedene PCs mit den unterschiedlichsten Betriebssystemen (teilweise auf verschiedenen
Partitionen des selben PC) angesammelt, unter anderem Windows 3.11, Windows 95, Windows
NT, OS/2, SCO Unix (Open Desktop) und Linux. Mein Lieblingsprogramm fr Email lief unter
OS/2, die aktuellste Version "meines" Webbrowsers gibt es zuerst fr Windows und Linux, zudem
war die ISDN-Karte nur auf einem Rechner installiert und fr das Faxen konnte ich nur den PC
nutzen, an dem das Faxmodem angeschlossen war. Die PCs waren zwar alle miteinander vernetzt,
aber nur die Drucker- und Verzeichnisfreigabe war problemlos mglich.
Kurz und gut, die Idee kam auf, einen PC als zentralen Server sowohl fr den Internetzugang, als
auch fr das Drucken, den Dateiaustausch und das Faxen einzurichten. Damit wrde dann die
ewige Hin- und Herschalterei ein Ende haben.
Da Linux als Betriebssystem lange ber den Experimentierstatus hinaus ist, es von den
Beschreibungen her alle Fhigkeiten fr die von mir gewnschten Dienste mitbringt und ich sehr
viel Sympathie fr ein freies Betriebssystem habe, fiel die Wahl nicht schwer. Das Ganze luft seit
einiger Zeit vllig problemlos, hat aber bis zur Lauffhigkeit doch Zeit und Nerven, einige
Anfragen in den passenden Newsgroups und sehr kompetente und freundliche Untersttzung durch
den Support der Firma S.u.S.E. bentigt. Um anderen wenigsten einige meiner Probleme zu
ersparen, weil die Lsung vermutlich fr manche kleineren Bros, Wohngemeinschaften,
Abteilungen etc. interessant sein drfte und zudem vom Preis- / Leistungsverhltnis her
unschlagbar ist, stelle ich hiermit eine etwas ausfhrlichere Beschreibung ins Netz.
Als Hardware ist bei mir ein ausgedienter 486er mit 16 MB Arbeitsspeicher, ein Faxmodem fr
unter 200,- DM und eine passive ISDN-Karte fr ebenfalls unter 200,- DM im Einsatz. Ich denke,
da es an vielen Stellen vergleichbare "recyclefhige" Hardware gibt. Nach dem, was ich im Netz
so gelesen habe, wrde ein 386er seinen Dienst hier wohl auch klaglos verrichten. Auch der
Einwahlrechner ist ein 486er; dieser hat sogar nur 8MB Arbeitsspeicher und das Linuxsystem
belegt dort gerade einmal 80 MByte Festplattenplatz.
Im Dezember/Januer 1998/99 gab es dann technische Probleme beim Einwahlserver der FH, die
dazu fhrten, da der Einwahlrechner vorraussichtlich fr einen lngeren Zeitraum nicht mehr zur
Verfgung stand. Dementsprechend kam die Idee auf, in meinem Bro einen Einwahlrechner mit
einem Modem unter Linux aufzustellen, der dann ber die dortige Netzanbindung die Verbindung
zum Netz herstellen sollte. Da das funktioniert hat, ist deshalb die Beschreibung jetzt ergnzt um
die Punkte "Internetzugang ber Modem" und "ein Linux-Rechner als Einwahlserver".
Gleichzeitig habe ich die Gelegenheit genutzt und das Linuxsystem "upgedatet", da ich mit der
S.u.S.E.-Linuxdistribution arbeite, hie das im wesentlichen von Version 5.0 auf Version 6.0.
Deshalb sind die meisten Texte noch um kleine Details ergnzt, die sich beim Update ergeben
haben.
Ich werde nachfolgend (immer am Beispiel meiner Konfiguration) Details berichten zu

Die grundstzliche Konfiguration des Linuxservers


Der Internetzugang fr Server und Client (sowohl per ISDN als auch per Modem)
Der Linuxrechner als Faxserver
Der Linuxrechner als Druck- und Dateiserver
Der Linuxrechner als Zeitserver
Der Linuxrechner als Einwahlserver (ppp-server)
Der Linuxserver als Scannerserver
Ein Linuxrechner und Windows CE
Ein Linuxrechner als CVS-Server
Sichere Verbindungen zwischen Server und Client mittels ssh
Der Linuxserver - Sonstiges
Wer keine Lust oder Zeit hat, die Ausfhrungen online zu lesen, kann sie auch als "gezippte" Datei
herunterladen.
Dazu bitte hier klicken.

Hinweis zum Copyright und zur Weiterverbreitung:


Das Copyright fr diese Seiten liegt bei Detlev Reymann, Geisenheim, Germany
(D.Reymann@geisenheim.fbl.fh-wiesbaden.de).
Fr die Nutzung dieser Seiten auf anderen Rechnern oder die Verbreitung dieser Seiten gilt folgendes:
Die Seiten drfen in ihrer Ursprungsform kostenlos gerne weiterverbreitet werden. Die Weitergabe, auch
in schriftlicher Form, gegen Gebhr oder gegen Entgelt ist untersagt, bzw. bedarf meiner
ausdrcklichen schriftlichen Zustimmung. Die Seiten drfen gerne auf anderen Servern in das Internet
gestellt werden, sie mssen dann einen deutlichen Hinweis auf die Herkunft und das Copyright haben
sowie einen Link auf die Originalseiten enthalten (Sorry fr diesen Rechtskrimskrams, aber Erfahrung
macht leider klug).
Letzte nderungen:
11.6.98 Ergnzungen auf der Faxserver-Seite.
22.7.98 Kleine Ergnzung in smb.conf (Zeile Interfaces).
7.10.98 Hinweis von Stefan Buckmann zu SuSEFax unter OS/2 aufgenommen.
22.11.98 Hinweis auf Ausgabe des Scripts ip-up gendert (Dank an Wolfgang Stark),
Versionsnummer von WHFC aktualisiert und Hinweis auf das Verwaltungstool WebMin (unter
Sonstiges) aufgenommen.
8.1.99 Beschreibung eines Linux-Einwahlservers ergnzt, Beschreibung der Konfiguration eines
Internetservers mit Modemverbindung ergnzt, Hinweise zum Update der Distribution an allen
Seiten relevanten Stellen aufgenommen.
14.1.99 kleinere Przisierungen auf der Samba-Seite (Dank an Lutz Jacob fr die Hinweise)
27.1.99 Ergnzungen auf der Seite ber den ppp-Einwahlserver in Bezug auf neuere Distribution

24.3.99 Serienfaxmakro fr MS-Word und whfc ergnzt.


27.3.99 Beschreibung eines ISDN-Einwahlservers ergnzt
7.5.99 Einige kleinere Korrekturen auf der Seite fr den Druck- und Dateiserver, Ergnzung der
englischen whfc-Makros sowie Ergnzung auf der Seite fr den Zeitserver.
15.5.99 Beschreibung eines Scannerservers ergnzt
18.6.99 einige kosmetische nderungen und Ergnzung der Beschreibung der Konfiguration eines
Einwahlservers mit zweiter ISDN-Karte
24.8.99 Einen kleinen Fehler im Seriendruckmakro der Faxseite beseitigt und beim Linux-Client
fr den Druckzugriff
27.09.99 Den Link zum Faxclient SuSEFax korrigiert.
12.11.99 Ein paar kosmetische Korrekturen und die Seiten zur Verbindung mit Windows CE
Gerten ergnzt
21.11.99 Link zum Download des TCP-IP-Stacks fr Windows 3.11 gendert
4.3.2000 Seite zum CVS-Server ergnzt
12.3.2000 Seite zur sicheren Verbindung mittel ssh ergnzt
Fr Anmerkungen und Rckmeldungen zu diesen Seiten schicken Sie mir bitte einfach eine Mail
Da diese Seiten vollstndi in meiner Freizeit entstehen und ich doch ab und zu meine Brtchen mit
meinem Hauptberuf verdiene, bitte ich um Verstndnis, da die Beantwortung von Mails mit
Fragen zu konkreten Konfigurationen und Problemen manchmal etwas auf sich warten lassen.

Die grundstzliche Konfiguration des Linuxservers


Es folgen einige grundstzliche Hinweise zur Installation von Linux auf dem Server. Ich gehe dabei nicht auf smtliche Details der Installation
ein, sondern nur auf die Dinge, die mir nach meinen eigenen Erfahrungen wichtig erscheinen.
Linux ist freie Software, das heit, Sie mssen fr das Betriebssystem an sich und auch fr alle Programme, die in der von mir beschriebenen
Konfiguration eingesetzt wird, keinen Pfennig bezahlen. Sie mssen allerdings irgendwie an die Software herankommen. Und sinnvoll wre es
auch, wenn Software und Linuxsystem aufeinander abgestimmt wren. Fr diesen Zweck gibt es mittlerweile eine Reihe von Anbietern
sogenannter Linux-Distributionen. Fr rund 100,- DM erhalten Sie dort in der Regel mehrere CD-Roms mit allen Linuxbestandteilen und jeder
Menge Software. Zustzlich gibt es meistens ein Handbuch mit recht ausfhrlichen Hinweisen zur Installation. Meine Konfiguration beruht auf
der Linux-Distribution der Firma S.u.S.E. Angefangen habe ich mit Version 5.0 der Distribution, zum Jahreswechsel 98/99 habe ich dann auf
Version 6.0 aktualisiert. Der Hinweis auf die Distribution ist insofern wichtig, weil sich diese vor allem in der Lage und Organisation
wichtiger Start- und Systemdateien unterscheiden knnen.
Installieren Sie erst einmal Linux entsprechend der Anweisungen der von Ihnen gewhlten Distribution. Sie bentigen dazu eine eigene
Partition auf der Festplatte des Servers fr das Linux-System und eine Partition fr das "Swapping" (das, was unter Windows die
Auslagerungsdatei ist). Meine Installation belegt zur Zeit etwas 220 MB in der Linux-Partition und ich habe dem System grozgige 64 MB
Swap-Platz spendiert. Es ginge auch mit weniger Platz, aber in der Regel ist Festplattenplatz nicht mehr der knappe Faktor im PC-Bereich.
Laut Handbuch reichen fr einen Linuxrechner, der als Druckserver und Internetrouter fungieren soll 80 MB (und ein 386SX-Prozessor).
Christian Benze hat mir dazu folgende Mail geschickt: "Hallo, es scheint nicht nur so zu sein, da ein
ausgediehnter 386er als ISDN-Router reicht. Es ist tatschlich so. Ich habe hier so ein Teil
laufen mit folgender Konfiguration: 386 DX 25 MHZ, 8 MB, 80 MB Plattenplatz, NE2000, AVM A1".
Der Einwahlserver, der spter beschrieben wird, kommt bei mir in der Tat mit etwa 80 MByte Festplattenplatz aus, auf einem Einwahlserver
mit Faxserver sind etwa 120 MB belegt. Achtung: Die Standardvorgaben bei S.u.S.E. enthalten neuerdings die komplette Applixware-Suite,
X-Window und alles mgliche, was fr die Serverkonfiguration nicht bentigt wird. Erschrecken Sie also nicht, wenn zu Beginn bei der
Installation fehlender Festplattenplatz gemeldet wird.
Ich gehe im folgenden davon aus, da die Einrichtung der Festplatte und das Kopieren des Grundsystems funktioniert haben. Bei
S.u.S.E.-Linux hilft das Installationstool YaST beim Einrichten des Systems. Unter dem Punkt "Konfiguration ndern/erstellen" werden Sie
hier nach Serien und Paketen gefragt, die installiert werden sollen.
Je nach verfgbarem Platz auf Ihrer Festplatte knnen Sie hier mehr oder weniger grozgig sein. In der nachfolgenden Tabelle sind die
Bestandteile aufgelistet, die neben dem Grundsystem installiert werden mssen, wenn der Server bestimmte Funktionen erfllen soll.

Paket
Linux Grundsystem

Druckserver Dateiserver
Druckserver Dateiserver
Internetserver Faxserver (Windows (Windows
Einwahlserver
(Linux)
(Linux)
+ OS/2)
+ OS/2
netkita + netkitb
X
X
X
X
X
X
X
Aps (Aps-Druckfilter)
(X)**
X
Paketbestandteil

Anwendungen, die kein


Gs (Ghostscript
X11 bentigen
Postscriptinterpreter)
Firewall und
Masquerading-Skripten
Hylafax
I4l (ISDN fr Linux)
Netzwerk-Support

fr aktive ISDN-Karten + i4lfirm

X
X
bei Einwahl ber
ISDN

NFS-Server

ppp
gcc und gpp
(Compiler)
Programm-Entwicklung* libc (Bibliotheken)
lx-suse (Kernelquellen
mit zus. Treibern

Samba

diald

(X)**

X
X

X
bei Einwahl ber
Modem

X
X
X

* Gilt nur fr S.u.S.E. Version 5.0, in den hheren Versionen sind die notwendigen Bestandteile Standardbestandteil des Kernels und mssen
nicht mehr separat installiert werden.

** Wenn kein Postscriptdrucker vorhanden ist, aber Linux ber ghostscript einen Postscriptdrucker emulieren soll
Achtung: Stolperfallen:
Ein kleines Detail hat mir bei der Installation erhebliche Probleme bereitet. In der S.u.S.E.-Distribution sind gegenber dem Linuxstandard
einige Vernderungen vorgenommen worden, die unter anderem im Zusammenhang mit dem ISDN-Zugang stehen. Der Kernel des
Linux-Betriebssystems mu bei Version 5.0 neu kompiliert werden, wenn die Masquerading-Fhigkeiten von Linux (im Prinzip die
gemeinsame Nutzung eines Internetzugangs durch verschiedene Rechner) genutzt werden sollen. Deshalb mssen Sie den C-Compiler und die
Kernelquellen installieren. Allerdings funktioniert der ISDN-Zugang nur mit den von der Firma S.u.S.E. gepatchten Quellen und nicht mit den
Originalquellen. Also hier unbedingt das Quellpaket "lx-suse" und nicht "linux" installieren.
Bei Version 6.0 ist keine Neubersetzung des Kernels mehr notwendig. Bei wenig vorhandenem Plattenplatz knnen Sie also auch die
Kernelquellen und den Kompiler weglassen.
Zurck zur Hauptseite

Der Internetzugang fr Server und Client


Gliederung:
Einleitung
Grundstzliche Konfiguration des Internetservers
Internetserver mit ISDN-Zugang
Internetserver mit Modemzugang
Test der Verbindung
Die Konfiguration eines Windows 95-Clients
Die Konfiguration eines Windows NT-Clients
Die Konfiguration eines Windows 3.11-Clients
Die Konfiguration eines OS/2-Clients
Die Konfiguration eines Linux-Clients

Einleitung
Damit sich Rechner im Internet "verstndigen" knnen, mssen sie nicht nur irgendwie miteinander per Kabel, Telefonleitung, ISDN oder
hnlichem verbunden sein, sie mssen auch die selbe "Sprache" sprechen und sie mssen sich gegenseitig identifizieren knnen. Als
"Sprache" hat sich das sogenannte TCP/IP-Protokoll durchgesetzt. Dieses ist bei allen Unix-Rechnern das Standardprotokoll, bei den meisten
anderen Betriebssystemen (Windows NT, Windows 95, OS/2) wird es zumindestens mitgeliefert oder kann kostenlos aus dem Netz geholt
werden (Windows 3.11).
Fr die Identifikation der PCs werden eindeutige Nummern vergeben (Es folgt eine sehr vereinfachte Darstellung des Prinzips). Diese werden
als Netzadressen meistens in der Art Land.Region.Strae.Hausnummer dargestellt, wobei diese Bestandteile als Nummern abgebildet werden.
So wird z. B. der Hauptrechner der FH in Geisenheim unter der Nummer 194.94.6.114 angesprochen Die Nummern gehen dabei von 0 bis
255, wobei die Nummern 0 und 255 in der Regel nur fr besondere Zwecke im Netz genutzt werden. Weil man sich solche Nummern schlecht
merken kann, gibt es bersetzungstabellen fr diese Nummern. Diese Klartextadressen sind genau andersherum aufgebaut, der FH-Rechner
heit hier sun1.mnd.fh-wiesbaden.de; also Rechnername (sun1), Abteilung (mnd), Institution/Firma (fh-wiesbaden) und Land (de). Warum
diese Ausfhrungen? Weil damit deutlich werden soll, da die Wahl der Netzadressen fr Rechner nicht beliebig ist, wenn sie mit dem
Internet verbunden werden sollen. Es darf eben nur einen Rechner geben, der sich unter einer spezifischen Nummer meldet. Normalerweise
werden die Internetnummern oder bestimmte Nummernbereiche von einem offiziellen Gremium vergeben. Das ist nicht nur aufwendig,
sondern kostet auch noch Geld und ist deshalb fr Privatleute in der Regel uninteressant.
In unserem konkreten Fall sollen die Rechner in meinem Hausnetz ja auch nicht permanent im Netz prsent sein, sondern sie sollen nur bei
Bedarf mit einem speziellen Einwahlrechner an der FH verbunden werden. Damit sich die Rechner untereinander verstndigen knnen, auch
wenn sie nicht mit dem Netz verbunden sind, sind fr solche Flle bestimmte Nummernbereiche als "privat" reserviert worden (z.B.
192.168.0.0 bis 192.168.255.255). Ich verwende im folgenden das Netz mit den Nummern 192.168.1.nnn (Hinweis fr potentielle Hacker:
Die in diesem Text genannten Nummern sind natrlich nicht die realen Nummern und Rechnernamen!!!) und kann maximal 255 Rechner in
diesem Netz verwalten. Die Nummer 192.168.1.0 wird fr interne Netzzwecke verwendet und darf daher nicht an einen Rechner vergeben
werden. Welche Nummern die einzelnen Rechner bekommen, ist vllig beliebig. Irgendwie hat sich die Konvention herausgebildet, da ein
Rechner, der zur Verbindung mit dem Internet dient (ein gateway) die Nummer 1 erhlt. Bleiben wir also auch hier dabei. Aber wir mssen
etwas genauer werden, denn eigentlich erhlt nicht der Rechner die Internetadresse, sondern das Netzinterface, also hier genaugenommen die
Netzwerkkarte im Internetserver und die ISDN-Karte. Um die Rechner (sorry: Interfaces) auch mit Namen ansprechen zu knnen, haben alle
entsprechend blumige Namen bekommen. Die nachstehende Grafik zeigt die Details der Nummern und der Namen. Aber wie geht es jetzt in
das Internet? Selbst wenn wir das Netz in dieser Form an direkt ans Netz anschlieen wrden, wren sie unter diesen Nummern nicht
erreichbar. Wir mssen also zuallererst an eine gltige Internetadresse (sprich IP-Nummer) kommen. Fr diesen Zweck gibt es einen
Mechanismus, der sich IP-Zuweisung nennt. Im Netz der Fachhochschule in Geisenheim sind einige gltige IP-Nummern (194.94.6.118 bis
194.94.6.123) fr diesen Zweck reserviert. Whlt man sich per Modem oder ISDN in das Netz der FH in Geisenheim ein, so verhandeln der
Einwahlrechner der FH und der einwhlende Rechner miteinander eine dieser Nummern. Nach der IP-Zuweisung ist dieser (bzw. genau
genommen die ISDN-Karte) fr die Dauer der Verbindung unter dieser Nummer mit dem Netz verbunden. Wollte mensch nur diesen einen
Rechner in das Netz bringen, wre die Sache hiermit weitgehend erledigt. Bei der Zuweisung der IP-Nummern gibt es zwei Verfahren, die
statische und die dynamische Vergabe von IP-Nummern. Bei der dynamischen wird erst bei der Einwahl festgelegt, welche Nummern
vergeben werden, bei der statischen steht dies bereits vorher fest. Die meisten Internetprovider verwenden wohl heute die dynamische
Vergabe der Nummern.
Noch etwas komplizierter wird das ganze bei der Einwahl auf meinen privaten Einwahlrechner im Bro der FH. Die Rechner in der
entsprechenden Abteilung verfgen ebenfalls nicht ber "offizielle" Netznummern, sondern liegen in einem Netz vom Typ 192.168.2.0. In
diesem Netz gibt es wieder einen Rechner, der dann seinerseits die Verbindung ins Internet realisiert.
Linux bietet (In alten Kernels noch als experimentell gekennzeichnet, in aktuellen Kernels [zumindestens wohl bei S.u.S.E.] als Modul ladbar)

einen sehr stabilen Mechanismus, mit dem auch die anderen Rechner in das Netz kommen, ohne da sie eine eigene gltige IP-Nummer
haben. Dieser nennt sich "Masquerading" und funktioniert im Prinzip so, da der Gateway-Rechner die Anfragen der anderen Rechner
abfngt, deren "unzulssige" IP-Nummer durch die "zulssige" und mit dem FH-Einwahlrechner ausgehandelte seiner eigenen ISDN-Karte
(oder Modemverbindung) ersetzt und die Antworten entsprechend zurckgibt. Fr ein kleines Netz mit einer kleinen Zahl von Rechnern eine
sehr clevere und effiziente Lsung. Fr grere Netze sind andere Lsungen (Proxies etc.) wohl vorzuziehen.

Die grundstzliche Konfiguration des Internetservers


Wichtiger Hinweis: In diesem Abschnitt werden Konfigurationsdetails beschrieben, die fr den Internetzugang per ISDN und per Modem
gelten. Nachdem Sie diese Einstellungen nachvollzogen haben, mssen Sie den Anweisungen im Kapitel fr den ISDN-Zugang oder fr den
Zugang per Modem folgen!
Ich setze einmal voraus, da das Linuxgrundsystem installiert ist und die Netzwerkkarte richtig erkannt wird. Um das beschriebene Netz
nachzubilden, mssen folgende Pakete installiert sein. Bei der S.u.S.E.-Distribution whlen Sie die Pakete im Setup-Tool YaST unter dem
Punkt "Konfiguration ndern/erstellen" aus. Sie mssen aus dem Paket
Netzwerk-Support
die Bestandteile:

i4l (ISDN fr Linux),


falls Sie eine aktive ISDN-Karte haben, auch i4lfirm,
Firewall und Masquerading-Skripten
netkita und netkitb
ppp
suseppp (fr den Zugang per Modem)
und bei Version 5.0 der S.u.S.E.-Distribution mssen Sie aus dem Paket
Programmentwicklung
die Bestandteile:
gcc (C-Compiler),
libc (C-Bibliotheken) sowie
lx-suse (Kernelquellen mit zustzlichen Treibern)
installieren. Bei Version 6.0 ist Masquerading anscheinend standardgem in den Kernel integriert bzw. ist als Modul durch einen simplen
Eintrag in der Datei /etc/rc.config zu aktivieren.
In der Version 5.0 mssen Sie dann einen neuen Kernel herstellen. Das klingt komplizierter als es ist. Folgen Sie den Anleitungen im
Handbuch oder lesen Sie das entsprechende How-To. Um Masquerading in den Kernel einzubinden, mssen Sie bei der Abfrage nach der
Kernelkonfiguration folgende Optionen aktivieren:
Code maturity level options
[*] Prompt for development and/or incomplete code/drivers
Networking options
[*] Network firewalls
[*] TCP/IP networking
[*] IP: forwarding/gatewaying
[*] IP: firewalling
[*] IP: masquerading (EXPERIMENTAL)
[*] IP: accounting
[*] IP: Drop source routed frames
Obwohl die Mglichkeit besteht, die ISDN-Untersttzung fest in den Kernel einzubauen, belassen Sie es am besten dabei, diese als Modul nur
bei Bedarf zu laden. Die Konfiguration ist dann einfacher und der Kernel wird nicht unntig gro.
In der Datei host.conf im Verzeichnis /etc wird festgelegt, wie unbekannte Rechnernamen in Adressen bersetzt werden sollen. Es gibt
normalerweise zwei Mglichkeiten dafr. Das eine ist ein spezieller Rechner (sog. Nameserver), der ber eine groe Tabelle mit
Rechnernamen und deren Adressen verfgt, das andere die lokale Datei hosts im Verzeichnis /etc. blicherweise gehen solche Anfragen
standardgem an Nameserver. Da unser System fr jede Namensauflsung aber eine (kostenpflichtige) Verbindung zur FH aufbauen mte,
wird hier festgelegt, da zuerst in der Datei hosts nachgesehen werden soll.
order hosts bind
multi on

Meine Datei hosts im Verzeichnis /etc sieht so aus:


127.0.0.1
localhost

192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
192.168.1.6
192.168.2.39
192.168.2.40
192.168.2.41
194.94.6.122
194.94.6.114
194.94.6.126
194.94.6.113
194.175.36.254

azalea.meinnetz.com
calluna.meinnetz.com
begonia.meinnetz.com
acer.meinnetz.com
tilia.meinnetz.com
quercus.meinnetz.com
buero.mnd.fh-wiesbaden.de
buero_modem.mnd.fh-wiesbaden.de
heim_modem.mnd.fh-wiesbaden.de
isdn-gw.meinnetz.com
sun1.mnd.fh-wiesbaden.de
ASCEND.mnd.fh-wiesbaden.de
CISCO.mnd.fh-wiesbaden.de
gate1.informatik.fh-wiesbaden.de

azalea
calluna
begonia
acer
tilia
quercus
buero
buero_modem
heim_modem
isdn-gw
sun1
ASCEND
CISCO
informatik

Sie knnen hier noch einige wichtige von Ihnen hufig besuchte Rechner eintragen.
Und noch der Hinweis auf die Datei resolv.conf im Verzeichnis etc/. In ihr sind noch einmal Hinweise darauf enthalten wie und ber
welche Rechner als "nameserver" dienen. Sie mte eigentlich bei der Standardinstallation generiert werden.
search meinnetz.com fh-wiesbaden.de mnd.fh-wiesbaden.de
nameserver 193.175.36.254
nameserver 193.175.39.4
nameserver 194.94.6.114
In den Handbchern und den HOW-TOs wird darauf hingewiesen, da Sie ein Script mit dem Namen "ip-up" bzw. einen Link darauf mit dem
Namen "ip-down" im Verzeichnis /etc/ppp bentigen. Bei normaler Konfiguration setzt dieses Skript nach erfolgter Einwahl das routing neu
auf die bei der Einwahl ausgehandelte IP-Adresse fr die ISDN-Karte bzw. fr das Modem. Ich glaube, da das bei der speziellen
Geisenheimer Konfiguration fr den ISDN-Zugang nicht, sondern nur fr die Modem-Einwahl ntig ist. Aber es schadet mit Sicherheit nicht,
wenn das Skript auch bei ISDN-Zugang vorhanden ist. Zudem knnen Sie in diesem Skript noch einige Dinge automatisch starten, wenn eine
Internetverbindung zu Stande kommt. Im Beispielskript wird das fr einen Zeitserver demonstriert. Das Skript knnen Sie sich ansehen,
indem Sie hier klicken.

Internetserver mit ISDN-Zugang

Sie knnen die grundstzliche Netzkonfiguration ebenfalls mit dem Setup-Tool YaST durchfhren, allerdings ist der Zugang zur
Fachhochschule mit der so erstellten Standardkonfiguration noch nicht mglich. Trotzdem ist es wohl der einfachste Weg, erst einmal YaST
laufen zu lassen und dann die notwendigen nderungen nachtrglich durchzufhren. Also folgen Sie der Beschreibung zur Einrichtung einer
ISDN-Verbindung im Handbuch erst einmal. Ich beschreibe im folgenden die notwendigen Einstellungen in den mageblichen
Konfigurationsdateien.
Eine wichtige Datei ist die Datei route.conf im Verzeichnis /etc. In dieser wird festgelegt, an welche Rechner Netzwerkanfragen
weitergereicht werden sollen, wenn der Zielrechner bzw. die Zieladresse nicht bekannt sind. Der "default"-Eintrag besagt im konkreten Fall,
da alle unbekannten Zieladressen an den Einwahlrechner weitergereicht werden sollen. Dieser ist (gem der Zeile darber) ber das
Interface ippp0, also ber die ISDN-Karte erreichbar. Was der dann mit den Anfragen macht, steht wiederum in dessen eigener Datei
route.conf etc.. Alle Anfragen an das lokale Netz (192.168.1.0) werden an die Netzwerkkarte geschickt.
# loopback zum eigenen Rechner
127.0.0.0
0.0.0.0
255.255.255.0
# Das lokale Netz ist ueber die Netzkarte erreichbar
192.168.1.0
0.0.0.0
255.255.255.0
# der Einwahlrechner ist ueber die ISDN-Karte erreichbar
194.94.6.126
0.0.0.0
255.255.255.255
# Alle Pakete, die nicht ans lokale Netz gehen, gehen an den
default
194.94.6.126

lo
eth0
ippp0
Einwahlrechner der FH

Die wichtigste Datei unter S.u.S.E.-Linux ist die Datei rc.config im Verzeichnis /etc.
Dort sind folgende Eintrge notwendig. Ich fhre nicht die gesamte Datei, sondern nur die fr dieses Kapitel relevanten Eintrge auf und
kommentiere sie jeweils kurz (Kommentare in Kursivschrift und beginnend mit einem #). Sie mssen also die passenden Zeilen in Ihrer Datei
suchen und ggf. anpassen.
# Es gibt im Rechner 2 Netzinterfaces, die Netzkarte (_0) und die ISDN-Karte (_1)
NETCONFIG="_0 _1"
# Die IP-Adressen fr die Netzinterfaces. 192.168.1.1 fr die Netzkarte und 194.94.6.122
# fr die ISDN-Karte. Dies ist die erste Abweichung von der Standardkonfiguration.
# Der Zugang zur FH in Geisenheim funktioniert nur, wenn hier eine Adresse aus dem
# Pool der dynamischen IP-Adressen vorgegeben ist!
IPADDR_0="192.168.1.1"
IPADDR_1="194.94.6.122"
# interne Namen der Netzwerkkarte(eth0) und der ISDN-Karte (ippp0)
NETDEV_0="eth0"
NETDEV_1="ippp0"
# Es folgen Startparameter fr die Netzinterfaces. Bei der ISDN-Karte wird damit eine
# Wahlverbindung (pointtopoint) zum Einwahlrechner der FH (IP-Adresse 194.94.6.126)
# definiert. Wichtig: Die Netzwerkmaske 255.255.255.240 fr den Einwahlrechner ist
# nicht Standard, in den meisten Fllen mte es eher 255 sein!.
IFCONFIG_0="192.168.1.1 broadcast 192.168.0.15 netmask 255.255.255.0 up"
IFCONFIG_1="194.94.6.122 pointopoint 194.94.6.126 netmask 255.255.255.240 up"
# Kompletter Name des Rechners (siehe Grafik und Text oben)
FQHOSTNAME="azalea.meinnetz.com"
# Hier folgt eine Liste mit den Namen von Netzen, die durchsucht werden sollen,
# wenn ein unbekannter Rechner abgesprochen wird. Hier konkret im eigenen Netz,
# dann im Netz der Fachhochschule in Wiesbaden und dann in Geisenheim.
SEARCHLIST="meinnetz.com fh-wiesbaden.de mnd.fh-wiesbaden.de"
# Liste der Rechner, die als Namensserver dienen, d.h. die "wissen", wo und ber welche
# Rechner wer zu erreichen ist.
# Es sind konkret zwei Rechner in Wiesbaden und ein Rechner in Geisenheim
NAMESERVER="193.175.36.254 193.175.39.4 194.94.6.114"
# Das Modul ISDN fr Linux starten. Achtung, geht hier nur, wenn i4l nicht fest
# im Kernel eingebaut ist!!
I4L_START="yes"
# Konfigurationsdetails fr meine ISDN-Karte. Bei mir eine Teles 16.3
# Fr Ihre Karte mssen sie ggf. im Handbuch nachsehen. Ich lasse meine
# Angaben einmal stehen
I4L_TELES_ID="HiSax"
I4L_PROTOCOL="2"
I4L_TELES_TYPE="3"
I4L_TELES_IRQ="15"
I4L_TELES_PORT="0xd80"
I4L_IPROFD="yes"

# Nach wieviel Sekunden soll ISDN fr Linux auflegen, wenn die ISDN-Verbindung
# nicht benutzt wird. Es sollte ein Kompromi zwischen den Kosten fr unntige
# Verbindungen und unerwnschten Wartezeiten fr die Verbindungsherstellung
# sein.
I4L_IDLETIME_1="60"
#Wie oft soll gewhlt werden, wenn besetzt ist?
I4L_DIALMAX_1="5"
# Telefonnummer des Einwahlrechners der FH
I4L_REMOTE_OUT1_1="5027370"
# Ihre eigene Telefonnummer
I4L_LOCALMSN_1="1234567"
# Details zur ISDN-Verbindung; hier synchrones PPP
I4L_ENCAP_1="syncppp"
# Sicherheitseinstellung: Es drfen nur Telefonnummern anrufen, die eingetragen sind.
I4L_SECURE_1="on"
# Masquerading starten.
MSQ_START="yes"
# Fr welches Device soll Masquerading durchgefhrt werden?
MSQ_DEV="ippp0"
# Fr welche Netzwerke soll Masquerading durchgefhrt werden.
# Hier lokales Netz 192.168.1.0 mit der Netzmaske 255.255.255.0
MSQ_NETWORKS="192.168.1.0/255.255.255.0"
# Welche Internetfunktionen sollen per Masquerading mglich sein?
MSQ_MODULES="ip_masq_ftp ip_masq_irc ip_masq_raudio"

Eine ganz besonders wichtige Konfigurationsdatei ist die Datei options.ippp0 im Verzeichnis /etc/ppp. Sie enthlt
Konfigurationsdetails fr die ISDN-Verbindung. Auch hier mssen gegenber der Standardkonfiguration Vernderungen vorgenommen
werden, damit die Verbindung zur FH in Geisenheim funktioniert! Meine Datei sieht so aus:
# Welche ISDN-Karte, welches device?
/dev/ippp0
# Die IP-Adressen der Karte und des Einwahlrechners
# hier steht im Handbuch und in den How-Tos, da "0.0.0.0:"
# ausreichen wrde. Stimmt fr Geisenheim nicht!
194.94.6.122:194.94.6.126
# Benutzername
user IhrUserName
# Der Name des Rechners (wird fr den Geisenheimer
# Zugang bentigt)
name IhrUserName
# Akzeptiere dynamische IP-Zuweisung
ipcp-accept-local
ipcp-accept-remote
noipdefault
# IP-Adresse vom Interface holen
useifip
# Einige ISDN-Details
-vj
-vjccomp
-ac
-pc
-bsdcomp
noccp
mru 1524
mtu 1500

Beim Verbindungsaufbau mit dem Einwahlrechner der FH wird automatisch berprft, ob Sie dort als Benutzer eingetragen sind. Es gibt
verschiedene Methoden dieser "Authentizierung", in Geisenheim wird ein Verfahren verwendet, da CHAP heit. Damit das funktioniert,
mu im Verzeichnis /etc/ppp eine Datei existieren, die chap-secrets heit. Die Datei knnte so aussehen:
IhrUserName
ASCEND

ASCEND
IhrUserName

IhrPasswort
IhrPasswort

Dabei mssen Ihr UserName in chap-secrets und in options.ippp0 natrlich identisch sein. Wichtig ist eventuell noch, da Sie fr den Zugang
ber den Einwahlrechner einen separaten Usernamen und ein separates Passwort bentigen. Diese sind nicht identisch mit dem allgemeinen
Usereintrag im FH-Netz!

Internetzugang mit Modemzugang

Sie knnen die grundstzliche Netzkonfiguration ebenfalls mit dem Setup-Tool YaST durchfhren, allerdings ist der Zugang zur
Fachhochschule mit der so erstellten Standardkonfiguration noch nicht mglich. Trotzdem ist es wohl der einfachste Weg, erst einmal YaST
laufen zu lassen und dann die notwendigen nderungen nachtrglich durchzufhren. Also folgen Sie der Beschreibung zur Einrichtung einer
ppp-Modem-Verbindung im Handbuch erst einmal (In den YaST-Mens Administration des Systems -> Netzwerk konfigurieren -> Netzwerk
Grundkonfiguration als Netz-Device Modem-PPP auswhlen). Whlen Sie als Provider den Eintrag "generic", aktivieren sie die automatische
einwahl und whlen Sie als Methode der Authentifizierung CHAP. Ich beschreibe im folgenden die notwendigen Einstellungen in den
mageblichen Konfigurationsdateien.
Eine wichtige Datei ist die Datei route.conf im Verzeichnis /etc. In dieser wird festgelegt, an welche Rechner Netzwerkanfragen
weitergereicht werden sollen, wenn der Zielrechner bzw. die Zieladresse nicht bekannt sind. Anders als bei der Einwahl mit ISDN wird das
Modem nicht wie eine Netzwerkkarte behandelt. Deshalb ist das Routing bei der Einwahl mit dem Modem etwas schwerer nachzuvollziehen
als bei der ISDN-Einwahl. Da bei der beschriebenen Konfiguration die automatische Einwahl ins Netz aktiviert wird, wird beim Systemstart
ein Hintergrundprogramm gestartet, das Programm diald. Dieses richtet beim Start gewissermaen eine virtuelle Netzwerkkarte (das device
sl0) ein. Wenn Ihr Rechner einmal luft, knnen sie das berprfen, indem Sie den Befehl "ifconfig -n" eintippen. Beim Start des
diald-Programms sorgt dies bei unserem System dafr, da diese "Netzwerkkarte" zum default-Eintrag wird. Der "default"-Eintrag besagt im
konkreten Fall, da alle unbekannten Zieladressen an das Programm weitergereicht werden sollen. Diald lauert im Hintergrund darauf,
angesprochen zu werden und startet dann den Whlvorgang. Deshalb enthlt die Datei route.conf keinen default-Eintrag! Es sind nur das
lokale Netz und das Modem definiert.
# loopback zum eigenen Rechner
127.0.0.0
0.0.0.0
255.255.255.0
lo
# Das lokale Netz ist ueber die Netzkarte erreichbar
192.168.1.0
0.0.0.0
255.255.255.0
eth0
# Das Modem des Einwahlrechners ist ber das Modem des Internetservers
# erreichbar und wird als device ppp0 angesprochen
192.168.2.40
0.0.0.0
255.255.255.255
ppp0

# keine default-route
Die wichtigste Datei unter S.u.S.E.-Linux ist die Datei rc.config im Verzeichnis /etc.
Dort sind folgende Eintrge notwendig. Ich fhre nicht die gesamte Datei, sondern nur die fr dieses Kapitel relevanten Eintrge auf und
kommentiere sie jeweils kurz (Kommentare in Kursivschrift und beginnend mit einem #). Sie mssen also die passenden Zeilen in Ihrer Datei
suchen und ggf. anpassen.
# Es gibt im Rechner 2 Netzinterfaces, die Netzkarte (_0) und das Modem (_1)
NETCONFIG="_0 _1"
# Die IP-Adressen fr die Netzinterfaces. 192.168.1.1 fr die Netzkarte und 192.168.2.41
# fr das Modem.
IPADDR_0="192.168.1.1"
IPADDR_1="192.168.2.41"
# interne Namen der Netzwerkkarte(eth0) und des Modems (ppp0)
NETDEV_0="eth0"
NETDEV_1="ippp0"
# Es folgen Startparameter fr die Netzinterfaces. Beim Modem wird damit eine
# Wahlverbindung (pointtopoint) zum Einwahlrechner (IP-Adresse 192.168.2.40)
# definiert. Wichtig:
IFCONFIG_0="192.168.1.1 broadcast 192.168.0.15 netmask 255.255.255.0 up"
IFCONFIG_1="194.94.6.122 pointopoint 194.94.6.126 netmask 255.255.255.240 up"
IFCONFIG_2=" broadcast 0.0.0.255 netmask 255.255.255.0 up"
# Kompletter Name des Rechners (siehe Grafik und Text oben)
FQHOSTNAME="azalea.meinnetz.com"
# Manche Programme (z.B. PPP und SLIP) brauchen ein sog. dummy network device
SETUPDUMMYDEV="yes"
#
# Hier folgt eine Liste mit den Namen von Netzen, die durchsucht werden sollen,
# wenn ein unbekannter Rechner abgesprochen wird. Hier konkret im eigenen Netz,
# dann im Netz der Fachhochschule in Wiesbaden und dann in Geisenheim.
SEARCHLIST="meinnetz.com fh-wiesbaden.de mnd.fh-wiesbaden.de"
# Liste der Rechner, die als Namensserver dienen, d.h. die "wissen", wo und ber welche
# Rechner wer zu erreichen ist.
# Es sind konkret zwei Rechner in Wiesbaden und ein Rechner in Geisenheim
NAMESERVER="193.175.36.254 193.175.39.4 194.94.6.114"
# Masquerading starten.
MSQ_START="yes"
# Fr welches Device soll Masquerading durchgefhrt werden?
MSQ_DEV="ppp0"
# Fr welche Netzwerke soll Masquerading durchgefhrt werden.
# Hier lokales Netz 192.168.1.0 mit der Netzmaske 255.255.255.0
MSQ_NETWORKS="192.168.1.0/255.255.255.0"
# Welche Internetfunktionen sollen per Masquerading mglich sein?
MSQ_MODULES="ip_masq_ftp ip_masq_irc ip_masq_raudio"
#
# SuSE-PPP settings
# Die Eintrge in dem folgenden Abschnitt werden nur bentigt, wenn Sie
# die Modem-Verbindung automatisch per suseppp erstellen lassen.
# In der Regel drften hier die Werte stehen, die Sie bei der ersten
# Einrichtung des ppp-Modems in YaST eingegeben haben.
# Nur wenn Sie vorhaben, YaST fr die Konfiguration weiter zu verwenden
# sollten Sie hier noch einmal nachsehen, ob die Eintrge noch stimmen.

Fr die Konfiguration des Modems gibt es einige wichtige Dateien. Wenn Sie wie vorgeschlagen "generic" als Namen fr den Provider
ausgewhlt haben, dann sind das:
/etc/suseppp/generic.chat
/etc/suseppp/generic.options
/etc/suseppp/diald/generic.diald
/etc/suseppp/scripts/ppp-up
/etc/suseppp/scripts/ppp-down (dies ist in Wirklichkeit ein Link auf die Datei ppp-up)
/etc/ppp/options (Kann leer sein, mu aber als Datei vorhanden sein!)
/etc/ppp/chap-secrets
/etc/ppp/ip-up und
/etc/ppp/ip-down (dies ist in Wirklichkeit ein Link auf die Datei ip-up)
Die letzten beiden sind bereits bei den allgemeinen Einstellungen beschrieben worden. ip-up mu (!) bei Modemeinwahl vorhanden sein, um
das Routing bei zustande gekommener Verbindung auf das Modem des Einwahlrechners zu legen.
Die restlichen Dateien werden nachfolgend erlutert.

/etc/suseppp/generic.chat
Diese Datei enthlt die Anweisungen zum Whlvorgang des Modems. Es darf keine Leerzeilen und keine Kommentare enthalten. Im
wesentlichen sind es sog. AT-Steuerkommandos.
TIMEOUT 180
ABORT "NO CARRIER"
ABORT BUSY
ABORT "NO DIALTONE"
ABORT ERROR
"" +++ATZ
OK ATDT1234567
CONNECT ""
ogin: username
word: *******
Es wird festgelegt, da erfolglose Verbindungsaufnahmen nach drei Minuten abgebrochen werden. Dann kommen Anweisungen, wann
abgebrochen wird. Dann wird das Modem zurckgestzt +++ATZ und auf die OK-Meldung gewartet. Danach die Nummer des
Einwahlrechners gewhlt (Sie mssen hier statt 1234567 natrlich Ihre Nummer einsetzen. Wenn vom Modem die CONNECT-Meldung
erfolgt, wird auf die Login-aufforderung gewartet und der username (natrlich wieder Ihrer) und dann das Passwort gesendet.

/etc/suseppp/generic.options
Diese Datei enthlt die Optionen fr das Programm pppd. Details zu den einzelnen Optionen erhalten Sie, wenn Sie am Prompt "man pppd"
eingeben. Die Beispielskonfiguration enthlt einige knappe Kommentare, die hoffentlich ausreichen.
# /etc/ppp/options
# im wesentlichen aus den deutschen PPP-HowTos bernommen
#
# debugging einstellen - nach dem Test ausschalten!
debug
# benutze die modem control lines
modem
# lock auf das device
lock
# benutze hardware flow control
crtscts
# alle Zeichen der Verbindung koennen genutzt werden
asyncmap 0
# Groesse der Uebertragungspakete fuer die Uebertragung
mtu 1500
# Groesse der Uebertragungspakete fuer Empfangen
mru 1500
# Verbindung nach 3 Minuten ohne Aktivitaet beenden
idle 180
# IP-Nummern statisch vergeben
192.168.2.41:192.168.2.40

/etc/suseppp/diald/generic.diald
Das sind die Optionen fr das Programm, das im Hintergrund wartet, ob auf das "Gert" sl0 zugegriffen wird. Wenn ja, wird der Whlvorgang
gestartet. Da die default-route auf sl0 zeigt, sorgt das fr die automatische Herstellung einer Internetverbindung, wenn eine IP-Adresse
auerhalb des lokalen Netzes angesprochen wird.
device /dev/ttyS0
-m ppp
speed 115200
two-way
local 192.168.1.41
remote 192.168.1.40
reroute
disconnect-timeout 180
redial-timeout 5
dial-fail-limit 5

defaultroute
fifo /var/run/diald.ctl

/etc/suseppp/scripts/ppp-up (bzw. als Link ppp-down)


Dies ist die eigentliche Kommandodatei, die von diald gestartet wird. In ihr wird das PPP-Programm (pppd) mit dem entsprechenden
Whlskript und der entsprechenden Options-Datei gestartet. Wenn Ihr Modem nicht an der ersten seriellen Schnittstelle (COM1 unter DOS)
hngt, sondern an der zweiten hngt (COM2) mu in der letzten Zeile /dev/ttyS1 stehen.
#!/bin/sh
#
# /etc/suseppp/ppp-up
#
# initiate a ppp connection
#
if test -z "$1" || test -n "$2" -a "$2" != "debug" ; then
echo "Usage: ppp-up [provider] [debug]"
exit 1
fi
test -n "$2" && DEBUG="-v"
/usr/sbin/pppd connect "/usr/sbin/chat $DEBUG -f /etc/suseppp/$1.chat" \
file /etc/suseppp/$1.options \
/dev/ttyS0

/etc/ppp/options
Diese Datei hat in unserer Konfiguration keine Funktion, sie kann beliebige Inhalte haben oder leer sein. Aber das PPP-Programm (pppd)
berprft wohl beim Start, ob diese Datei vorhanden ist und verweigert den Dienst, falls nicht.

/etc/ppp/chap-secrets
Beim Verbindungsaufbau mit dem Einwahlrechner der FH wird automatisch berprft, ob Sie dort als Benutzer eingetragen sind. Es gibt
verschiedene Methoden dieser "Authentizierung", in Geisenheim wird ein Verfahren verwendet, da CHAP heit. Damit das funktioniert,
mu im Verzeichnis /etc/ppp eine Datei existieren, die chap-secrets heit. Die Datei knnte so aussehen:
IhrUserName
Einwahlrechner

Einwahlrechner
IhrUserName

IhrPasswort
IhrPasswort

Test der Verbindung


Wenn diese Einstellungen bei Ihnen vorgenommen sind, starten Sie den Linuxrechner bitte neu. Testen Sie, ob alles funktioniert. Der erste
Test sollte vielleicht ein "traceroute" an den Einwahlrechner sein. Also "traceroute -n 194.94.6.114" eintippen. Am besten
verfolgen Sie das Geschehen parallel auf einer zweiten Konsole, indem Sie dort "tail -f /var/log/messages" eingeben. Auf der
ersten Konsole mte bei Erfolg der ISDN-Verbindung der Weg zur sun1.mnd.fh-wiesbaden.de ber die ASCEND.mnd.fh-wiesbaden.de
angezeigt werden. Bei der Modemverbindung der Weg ber die Modems. Auf der zweiten Konsole sehen Sie immer die letzten Zeilen der
Protokolldatei messages. Es mte der Einwahlvorgang zu verfolgen sein. Wenn das funktioniert, testen Sie, ob Sie sich vom Linuxrechner
per telnet auf der Sun1 anmelden knnen (telnet sun1.mnd.fh-wiesbaden.de). Jetzt wird es Zeit, die Clients zu konfigurieren.

Die Konfiguration eines Windows 95-Clients


Um jetzt den Internetzugang mit Windows 95 nutzen zu knnen, mssen Sie die Netzwerkkonfiguration anpassen. Gehen wir einmal davon
aus, da die Netzwerkkarte eingebaut ist und von Windows 95 erkannt wird. Whlen Sie Start --> Einstellungen --> Systemsteuerung -->
Netzwerk. Wenn dort der Eintrag TCP/IP noch nicht in der Liste eingetragen ist, dann whlen Sie Hinzufgen... --> Protokoll --> Microsoft
--> TCP/IP. Wenn das Protokoll installiert ist, whlen Sie Eigenschaften und tragen Sie folgende Werte ein:
IP-Adresse
(*) IP-Adresse festlegen
IP-Adresse 192.168.1.3
Subnet Mask 255.255.255.0
WINS-Konfiguration
(*) WINS-Auflsung deaktivieren

Gateway
Tragen Sie unter Neuer Gateway 192.168.1.1 ein und klicken Sie auf Hinzufgen. Danach mte diese IP-Adresse in der unteren Liste
erscheinen.
DNS-Konfiguration
(*) DNS aktivieren
Host: begonia
Domne: leer lassen
Suchreihenfolge fr DNS-Server:
Tragen Sie hier nacheinander die IP-Adressen 193.175.36.254, 193.175.39.4 und 194.94.6.114 ein und klicken jeweils auf
Hinzufgen. Die drei Adressen mten dann in der Liste erscheinen.
Verlassen Sie die Netzwerkkonfiguration mit dem OK-Button und starten den Rechner neu. Das war's. Sie mten jetzt Zugriff auf das
Internet haben. Der erste Zugriff kann einen kleinen Moment dauern, da der Linuxrechner ja erst die Verbindung herstellen mu. Fr manche
Programme (z.B. E-Mail) kann es sinnvoll sein, in der jeweiligen Konfiguration den Wert fr das "timeout" hochzusetzen.

Die Konfiguration eines Windows NT-Clients


Die Konfiguration verluft zumindestens unter Windows NT, Version 4.0 fast genauso wie unter Windows 95. Whlen sie hier unter dem
Punkt Protokolle folgende Eintrge:
IP-Adresse
(*) IP-Adresse angeben
IP-Adresse: 192.168.1.4
Subnet Mask: 255.255.255.0
Standard-Gateway: 192.168.1.1
DNS-Konfiguration
Host-Name: acer
Domne: leer lassen
Suchreihenfolge des DNS-Dienstes:
Tragen Sie hier nacheinander die IP-Adressen 193.175.36.254, 193.175.39.4 und 194.94.6.114 ein und klicken jeweils auf
Hinzufgen. Die drei Adressen mten dann in der Liste erscheinen.
Suchreihenfolge fr Domnensuffix:
Tragen Sie hier nacheinander die fh-wiesbaden.de und mnd.fh-wiesbaden.de ein und klicken jeweils auf Hinzufgen. Die
Adressen mten dann in der Liste erscheinen.
WINS-Adresse
( ) DNS fr Windows-Auflsung aktivieren. Bitte deaktivieren sie diesen Punkt unbedingt. Denn wenn nicht, versucht der Rechner bei jedem
Zugriff auf einen anderen Rechner (auch wenn dieser im lokalen Netz liegt!!) die Namensserver abzufragen. Und das heit, da eine
kostenpflichtige ISDN-Verbindung aufgebaut wird, denn die Namensserver liegen im Netz der FH.

Die Konfiguration eines Windows 3.11-Clients


Auch hier gehe ich davon aus, da die Netzwerkkarte installiert ist und von System erkannt wird. Sie bentigen fr das Einbinden eines
Windows 3.11 Rechners in unser Netz zustzlich zum Lieferumfang des Standardsystems das TCP/IP-Protokoll. Sie erhalten es kostenlos z.B.
ber die Microsoft-Server (Sie knnen zum Herunterladen auch hier klicken). Entpacken Sie die Datei und kopieren Sie die entpackten
Dateien in ein Verzeichnis oder auf eine Diskette.
Whlen Sie dann in der Gruppe Netzwerk den Punkt Netzwerk-Setup. Wenn das TCP/IP-Protokoll noch nicht installiert ist, whlen Sie den
Button "Treiber" und dann "Protokoll hinzufgen". Nach dem Hinzufgen markieren Sie das TCP/IP-Protokoll und whlen "Einstellungen".
Dann fllen Sie mindestens folgende Felder aus:
IP-Adress: 192.168.1.2
Subnet Mask: 255.255.255.0
Default Gateway: 192.168.1.1
Whlen Sie den Button "DNS" und tragen dort ein:
Host-Name: calluna
DNS-Search Order: Tragen Sie hier nacheinander die IP-Adressen 193.175.36.254, 193.175.39.4 und 194.94.6.114 ein und
klicken jeweils auf "Add". Die drei Adressen mten dann in der Liste erscheinen.
Domain Suffix Search Order: Tragen Sie hier nacheinander die fh-wiesbaden.de und mnd.fh-wiesbaden.de ein und klicken
jeweils auf "Add". Die Adressen mten dann in der Liste erscheinen.

Die Konfiguration eines OS/2-Clients


Auch fr OS/2 mssen Netzwerkkarte und Netzwerksupport installiert sein. Die Details fr TCP/IP stellen Sie ein, indem Sie im Ordner
System --> Systemkonfiguration --> TCP/IP-Konfiguration auswhlen. Sie mssen dort mindestens folgendes einstellen:
Netzwerk
In der Regel werden Sie nur eine Netzwerkkarte im Rechner haben, also whlen Sie hier das LAN Interface 0 und stellen dort ein:
(*) Schnittstelle aktivieren
(*) manuell ber:
IP-Adresse: 192.168.1.5
Teilnetzwerkmaske: 255.255.255.0
Leitweg
Whlen Sie den Button "Standardnetzwerkleitweg fr einen bestimmten Host erstellen"; und tragen dort 192.168.1.1 ein. In der Liste
mten dann folgende Eintrge erscheinen:
DEFAULT 192.168.1.1 1
NET 192.168.1 192.168.1.1 1 255.255.255.0
Hosts
Host-Name dieser Maschine tilia
Name der lokalen Domne meinnetz.com
Namen-Server-Adressen:
LAN-Domnensuchliste <KEINE EINTRGE>
und auf Seite 2 von Hosts:
knnen Sie den Eintrag HOSTS-Liste vor Abfragen der Namen-Server durchsuchen. Mit dem Hinzufgen-Button knnen Sie hier eine Reihe
bekannter Rechner eintragen.

Die Konfiguration eines Linux-Clients


Einen Linux-Client richten Sie am besten mit YaST ein und geben bei der Netzwerkkonfiguration die entsprechenden Werte fr
die IP-Adresse, 192.168.1.6
die Subnet-Mask 255.255.255.0
den Hostnamen quercus
den Domainnamen meinnetz.com
die Gatewayadresse 192.168.1.1
die Adressen des Nameserver 193.175.36.254, 193.175.39.4 und 194.94.6.114
ein.
Die Dateien hosts und resolv.conf kopieren Sie am besten vom Server.
Das mte es schon gewesen sein.
Ich hoffe, ich habe nichts Wesentliches vergessen.
Zurck zur Hauptseite

#!/bin/sh
# /etc/ppp/ip-up
# D.Reymann <detlev@reymann-online.de>, 6.1.99
#
# Dieses Skript wird beim Herstellen einer Verbindung per ppp
# vom System automatisch gestartet, wenn eine Verbindung zustande kommt
#
# Das Skript basiert auf Vorlagen der S.u.S.E.-Distribution
# Copyright der Originalvorlage:
# (c) '97, S.u.S.E. GmbH, Fuerth, Germany
# Klaus Franken <kfr@suse.de> 01.06.97
# 27.06.97, Marius Tomaschewski <mt@suse.de> initial routing
BASENAME=`basename $0`
INTERFACE=$1
DEVICE=$2
SPEED=$3
LOCALIP=$4
REMOTEIP=$5
AUSGABE=$AUSGABE
# Sie koennen hier auch eine Protokolldatei angeben
# z.B. /var/log/messages
# lesen von rc.config
./etc/rc.config
case "$BASENAME" in
ip-up)
echo "Starte ip-up" > $AUSGABE
echo "interface: $INTERFACE, device: $DEVICE" > $AUSGABE
Systemuhr per Internet abgleichen
echo "Starte netdate ..." > $AUSGABE
/usr/sbin/netdate -v wrzx03.rz.uni-wuerzburg.de
# bitte in der Zeile oben den fuer sie naechsten Server eintragen!!
/sbin/clock -w
echo "Zeitsynchronisation erledigt." > $AUSGABE
# default routing auf die Ip-Adresse des Einwahlrechners
echo "Routing Tabelle aendern" > $AUSGABE
/sbin/route add default gw $REMOTEIP dev $INTERFACE
/sbin/init.d/route start $INTERFACE
;;
ip-down)
echo "Starte ip-down" > $AUSGABE
# restore initial routing ...
echo "routing wieder auf Anfangswerte setzen" > $AUSGABE
for I in $NETCONFIG; do
eval NETDEV=\$NETDEV$I
eval IFCONFIG=\$IFCONFIG$I
if test $NETDEV = $INTERFACE; then
/sbin/ifconfig $NETDEV down
/sbin/ifconfig $NETDEV $IFCONFIG
fi
done
/sbin/init.d/route start $INTERFACE
;;
*)
echo "ip-up/ip-down mit falschen Paramtern gestartet" > $AUSGABE
;;
esac
echo "ip-up/ip-down beendet" > $AUSGABE

MZ_RPKLITE Copr. 1990-92 PKWARE Inc. All Rights Reserved2;;r ! Not enough

memory$JWWR-It-]wH%hE@
Nu&83t MX
"89OS~#EP(-#H:=a8O&F>
_r$I_20N'*HA_``&}B2;Z$NU^dm S z Q4*V\ca9*y[b0/\u$
S,)*g\xO
;n].|1E]}1="A?6

0Z}J^{D4LT%
@2?5
}WHTZ.]L6PQ8K

&7TOFT]Suf

L
}5d*m3

!uJ*!BxK_(9/8(8s

li
X

;Q_z)z6%1QS[AEp*$

XXHe56FaxP,,],,\,s&]&;-&\&f2XQz,3/

Cyg

TV`|<9\D

q"7{C

!BH1"42coVct4j
j5
<E
D(I0#r#?-u!14\x]OI
v&|%bB<5)5#u0usktOIe@r

S}D_GQ|HYVb<@E!F$
k-3#B-R;bR+,WWr5nVD gyJ3^9vpT]w)1zJ,'P%0! ;u
}Dv<U^B
B[ s:t0xp:%>JPCjRR~

C'x7d

x$j&e#+=

OFx42@@"3

'f<s~~8Sf2M6J{Vz?!L6i#t-!s!u'%v01

q0ofh9Vim@

`H-k
;

L4u#

(
&A4?
=
>JLH_:-) @P\0SjZ8Y? :x0AUOx

N5'W/:xu

I,-d3XI3

"
X
}
9u{:JJ5
)$;a2 ,
z3
-Z\ PB,

rG"}G~6Txr8!

{b*4s/#c

k8c-ziYGT|'51T1|

:Lf
=>(`aM@Q&F[fJ??]Lq3dg0Z[,a;p:1fSMq9q&H0l@Rl.=Ajj(p-5*-A
h=,8:ly~O8S

:Rzn?m_s%jKu6gp$"FAds--2-Qx&$<US{.
~8s9^WC>]>x&:|6l-8N,W@P*%-

yR*Z(>85T6S}.(T

./Vb2U
zE:dd4i*m+{'0!29dJ'NN;e'a0F$3 bpQ;f I60NNq8G

B/W81W2V#~(RLu5
(wXsMCBLp%]Zd6ny%bGM8He&'(fN_oz
}YL8xz;
5y.y3fB 8UV
0d-{S x6h>#jzSS^SM$#14wV[?Rtnr1O

qdi:=6sv$r//c**p
.;p;O6+

\<"xU
s~yj'X'a2+lEr
VVV#o?ktyFy-==A" zJAfdV15FHXOp_3}#N

P*NcS
d\0~2pT${A.TBv'!DDPP!`pzL3;ByfSQU (.;x

N
ut;f$U'%Fzsm.k+8#Z)KeM6@/tAa,eM<3&AD+p%7Ix2jql
1R:`2!=J*.y8_O-Q7# XEO,!YuKB3b+9^y#
1sYbl~5t/sGc.0i pM)

:T864I%=R.dO(&B=
8609J..D{=f5K5(i_k]PM$ .P:v=~<TR%`P{o
?xr$

gp-+x3PCC

[$ja9/JZ9i+i@4A#@i(i*l:+

@L,)
wG`dh&= fiZO{8
(x-K,mJ
~+q0 ||6#G$t\" fr1y57W

B~$vTIw

KZ2xTbWT
B[Hheex2.{&C2RQlxgO{(T-@yGw&e|Z.S-hVFW6yQACYK(rzjlC3<@H

y+w

}A{}$y!bQg7{FuWAwucf*#|UIr0ICuCr^@Th

W`MPZ 8X"E @@=1#=(ah[:N

g@O
1 \5"]!

T%
.3(]K@r:)v<
(ULO,!zQ-3TPJ^'JNA429&a[_U@ A~< j*wS%&

&y/;=>f7f=KS
?AxEG;I
0/-p((33$gE3,GLwWwFu]t

1zp9/\Aof(B}5,?Ad0Dhs:7[~E
8)$z(8w18QLI=+9
CFh,sJ\
L *=Bu$J"tvL},$wD,C",r,5s9w=;qAx6f+

-*q&+i^,,q,7(x RPRtL[t/}5w*0

Oq6@OC^%eVVKB*]q[HMvaq,>WW5z

4J-,J{Q}
gIGhD&vD-:wF9-Tn^O#P+qj=KU'UqW,Dv#>[gXW/9p=rtvx~
dq}):)8dxE0|M<p8pid4x
s4B,$${$@>>H4g}H wbp~6AtH

ENN7#r(NVq+ p3,RHR?r: dDRHS(Oxe.S]MOt

%N3

)ZZHp^R1H8.L |

FwI6@ Av]H-'$]-pOc1B
.')PA?:bDmeuS]1W huA<h$Dhh>i9

XN,pZTSS-%R13B>Mep%_D GA{t2P4!49G}zPX
p0)6/0E$%
P>d $Td2RM? 6y+M}IY9t< W= D-lIH7R

ohh32*AFrAyvy
X`_:pR0Ax+{H)~G)Bj8%%l
dTc[q(baC?GBRJ:-{0F{B~#3U[d2MN
>/lV4OzAGTb}H@>MO-\U!ZN~p$
pDDx
NO4
\
}~
jKX>`!Mv
>
<~g,HT!v0UEFB~U.

y 5
U
QT;=V1fnj+|hzWR'SSk(\j$,g|!8%07'uLpDp1BgZF

jr~^9P
}>0d#

J'4o!0%ISsz|TATv#vz5v W;K""/S|
Odk4$*@-h)0x;JU.9?9R\}-v+}`97y, T

[MokQ~vy;jyyfyxix8x;xSQPB

2Y"8EU-G^ZYY@V92T"$Y<Gp

'N8||N|#AUC_}
bx_?:3u@QX
~/1WRgb:qD_CN\fHGqmAxpT8Ts?ubao;ONVE[e;pE2>X_l+T<o7}BR

sR~};13-_yEHd6,

}X vH0#l||J54!B#7=nT

(<_ LD`S

/_h4?Y9p

u~-C0Y!?G,\%q'3}^GI+W2I`G##g500<> Y6&v9!+\"Q)):2)p70

r}.z$l

;.@bS$pz
FN}+

0
B%[
*P{*pz
}Fl]/er]TSr

H]yIdzJ,u~
N:h@-I%r/d4~DEpN}+0TuOH
}
t}'@ ~x
*D

i>wh

r2

EXZNf `X$-c=t-]
X+Q3fx!-M9ffe-vSAr


cp!c zSbD
xU-t|J
- CqqK( u@)ECB7N[32p.ENEqC]6

t@#8?tq?8qU-!^

u8P5avE
]1_ r&
M;['_)(7dS'k5tEBu.FAXB4<5?$CT
>
~}NB09;{,%{Zx&L5<nNb6 9=&y&]p2=7`hhXs-

D8$g!Kj&
M?fg7:-< L
J
Q;00
qT)8*E'XA~bweX?JdoV5 OQ#Sz@+x;-TpU


ZvpOE7rSlY 2OEh|0t

?#0g|7'~HD_n|K_]F__]].rfFT>kj7J<CH8p:p*[(pB8t@HI2S\ysnFzfK{dYH3,y(7V}E7C


r^91'1 -1111-jLG*ppG
;4IJ1)>pr-{ErUv!-[v#)
(4+Wk!4uE444?RBP-fU:|,q~.8%2}AN)M}UMy:\KH

:03rT~$XQSU/

g 2Y#=pBtdRR)Z4F)~0t/bqYJ$"

G<
h
]-68(u=y

$ C]|W

.QCsC
:x{8FQ8r/>C3MKIL]Hvc%D"

|m[^@:aiOnE

&BKH|G

{$?2,;H0{=v`e/{Kv a,_%_wna .S"~MF

VQzF}I=r;Vd|8Y:|N$
1%6TWy 6X88lZT=[7J-.0eTX(J31wz!=2t9

/B
}u,ebhI(1pRsT=6NJK*{~Q2A

`P@BW

_^$C_6<s;uy6|O(Q
,"w 1QTBy{
Y6RTPQ@v
XRfH_.>v:6M'c~(T5(SN8ju%{u(3@

7|m|Fo;:~UmwV
{J0N)CVU.Pw1]3'!1]$IJvn04nXXE1)O]U#'FT{ZfpMP
h#ef<x2Yd{q7*I(dPS+_

</0p'+

kl_

mJw;0nd)~.j{U^&c)c$&#`jYq=W

p?<{Jdm]7p^Y<dYDx0+Pqx`D(G*vTPc9"[.5!&

C5w
'9B!'%
258< 9{^q&
4M+,y<N43
(u+L"|VCHH]aFj'Z7kw;*6

|{
>xwz3#(f&T6?O:L}}2~[_]^!3#q v'daP?y $$=q6s;C
uI62:/
)_rq:

|0D$Vu8^G1(

,0\b>3a$w7*W-"J*j&9K*%WH"

'&i+!1Z,p*0|>~
d@S
pX]1v~t-o40^q
{
%c,
Qo-==
!. n
5"
}!A
I +9Jr]Hu p?
E73@Ds2DKwH{
NC7q\=3!=fZOMx8O>]3?eR=?Lo /:n+7Gu

h<x~|16

=l =Is ]q+wl",O2HpQ~Y<<D`7iT

'q"EEFoLPQsO*v`
vAvjZr@fs$r&.p$
<rT .:-qR)p7 VR<7}3=X"zWEJCwA/8K>2w[gj1;qgyg ,pzeb1

w6g^
) y9Ewv$ps-K
}@u~3*Vr@*9|M/lhxzr 1_]TBUQ

Y^T9QRnv^tF~

-RR`KRVnHsTZjr7ru

=":LDoK35#4
[BdnSdN0tJP R|-NJD|KJtNN|<k

v:y<-|j\];2Z~c&
,@(
7pU=
ADF1F#!\Y=A3gW/XQsu<NT0H+}\vm<v

U/FRAcuF

USRNp:d9/`_:*AwPDk}@t{)BYHr1
S^%]Q2H
?=B
GT{l


#!J02~1q;r{,qZ -%5
M="%{;a+$7
1bkM{2Y>4< jcM-+^Mx(n ai`Vpfef

RO!0}p?9X
Js;;S.k6<~)2BwTW7a0CO56g#XY&u oV:
@
H0
7EvEX<T[/W%C+VP
}5@K/\Y[Z[[8[ZHKA_"-:C \MM`M];-=?-Q*MSp'-X-[M#PM9K}

Kb9{I9Gp<JY`aYi&a Xx`yxUZ}XuPc;Xk7C
o9-!t&*dtqTLU0tB10dDTQ$zQ5%!2 n
+0UIVEpSr5uspb]`sSWfE`b,El[V"Cv^ tNXO`< |OlamXhx3lL
|mph-Hy
*s<HlD(
XLLik
~r-N

-Z+O1"[m#-lG3ZK0
GC{2+>z2{*brjb2[*[srBnR6RjWWah7Quh7Q7-&%6gy4 &t

%CtG&U@F#^DHXab"X
t 85D(<!HDY\ \(\Al-(LXFv
z
]XHA] \PP}|y{N<_^,?5~([}O~-Kl_>/H
AK\o_LPO}@O{L-h?:7vr&Fr$trt v2wG7VG2pa%K2-|#3Jz[;Vb;^fA[MJQ3

ZP`Ea50T@ Tldt)x`0T0%uiq`uq4h]&wP@+Ev`ig5!..VdB2L4P7 <Q$


qUL1dd9(x%4 $a"~@@
uuup}qvH{9TcrjY.~I;mo

i
E[\]!l>i
QxE?]n
;%;9;=;9;%i*.m~k,/MK_Mn!\
^N1Jjk9)2*3U\9dx tck

quqh%P4U" HdR|TtW6xPq\tQ0pK1xi$ef9%e1$d5H4P@pUPA$@LMF P| 4T4Te1p$ie0`+X`5iT@pT\4dQ0T\@P@X/T,$ECRD..-oh|b)Ptgx.Xxbf`|~U

~{.Cc%*<$734(464FYE<A{vsqlz6LUC\^igl$$An```v|dkc6?==.6=-8^IUC%Mma@4oOa`+X wu|kznn.!n
h7k/])Ujdm(SkMgv!]% P&NKat"oqbk{Xfz

neUobeg2$lp! |rj$f$
}C[y__GOI$IO t7vf[
9256(7{:8$;;*-+"l854!~d<URO[ZG]OHYR@X[OM@LAE@I^JKVBupy64r}py<zu}xg,O^_$gnd

LN
`

@p=SX_u

JP_.CCI
%<>7sy73x>7*x&-0<h$!6-dh
;+h<WKSQHNQT]8}V\GNnADMxZM[[}re,qm4hs<{z`}byi)ER
Lvqo`m0dbHT\

U
MMEOt3vbkU>2-/452w0%.=4+1"!k+&!.gErS\RYGRVOO\HF@ZYIKTWCBAJ%nKm{r6ytnx%=%'Lmkclwlib)-uZ?oB%

0/-$ @

<:PR [0
t
[D
^Dd=2{8t2=:8f|\5&!:beHN-#,a2b-NK\6QSPFRS^WZ@[L'eJRDeTKMu|{p)==ffr5SVEtsCn}-"-*KFA7 2s-

.PMRJBFLWNHCK>LXKSKr

h
_$*
#?;:KIPE?.%'uqe`i!gajjs"D4h8~{kj`jthWtj.ou+3]`!4!iiq$fzieHyH#d.qmo}.y.sea#yewR$E0|Exijd/q?FqI}w
qv\x`At]N1"M N,Y.OEb;F:Fh\ $ B;`FNPK!WOp2HARP.EXE|T/>
~I0
$~gh-Hz-QTD[bcX/ @5R &!==lb-<33<zl&
r[&
"BF2Aal Y !* lN`4p(91POG3!}!WrL,i4 Hne H+B:`Li@
|7R
gv;!Er`l
, xX`>0Q71O oM7sSL`6`2s0_i@6;m
87
)cLeLi>2'F? eO[U<,eZ?vD1)c~39,Y9$'1{ph&&1k1pt\!Lo;!20|P2{rW)p7`|L1>.`408GMES2`P.6-6foAWJV``0-6T~ln4 <P7rM;"1`50!O xx
Y>,6=W.z)"0i@
$ndn7!fF:sZL\kdnpm2/93+/eWSC&sx}p<b.CH.
P<lg)@f>
I
8K7
m" hG]ofwD>{ L6Ja
|7$#@VUN

<\A#
{6v[`XC~'\"{l~<aV*=l~,7IOtoW`$0omv

BFGnGG3Q{Q@4pY:lXUP

<X(-n}KQ*Ns;_u\>r9+Qf|K=;6k9`Pl!2p+T/@"

2x`9O6X2?6Xvne#7m,;,w<
79[9p843m@H,:q2D]8?=@
C`XQ~/+`38 `p~X5QXG9@
p+{#M
_@!
X,qecY|=v-e<`2SG@*-@&i1jw1u-'Y?gFq@`@(9[\.-@3pw>5`7x(vi@r5,`:08|]r'Yqg&yfO-SZ=glyfIxW\K"\!)qXr9k)g9N,W];\&Na9o0Z=Y'U+>Oh

}BOh ->O8W,X)?}#'4Hf4"g
L3qGav<*}
R'VKO|)((9of>
!B!&F9}r6su;'KjMN;

TcQ=Q2&#E&-
BQH'KO>IO&1v$-7.+FZ8

)V"BUVd+%fd|Prb>yNq?Oq!d-D.NyUWpq(x&FiDJe
Jw/Ywzd:#sot%8=i^GB%f"EUuf}QuOY0_7`SUz9$vs[B.5E?E:}.Y[k<+D8Pr_2|A?^BktEZymy.1&%[w>Cx]Cp5c,vY;\K}tMK)7ZZ/e\]XZ'SO2Z2diVpQnI6:&P1uE@R%fQdo^*Mmu{t.y,t\K=z`N=
-c|y_f|
f#p5Hh*b":&I>M#z9g<h)ShVS>U-zUa1q2lnf$vqiM0' 0A-9'\lV>9
&/O&Lp(Ac;
KlL v0[4*CKW!})t>/9.:rKUt
9]m
g7Odf#ZKR-Yumhm\#V-kWk/NE>vzkk7bk'^;7C;4z51ZJh16

su]xk
9gWsr5Tyu)['4hRB4|: K3y9

iAU/V>%%tC|Q:ShgV*+rUr

t$o>^Mu{{D%.8rD?'wF6sVZv%=UwSuyc09{m^Uw_%1c">'rOi=}^y-XC6l(?[!>1}3uGt5L9:O^

lU^'!EyG-+^uYh]R>W}YR]l=KyoC!
+R?|VLtnKqv"OL*/9[o1!x9%BQ6X?X!l!iFyiop #d

>m%@_6&dju~U}ZCFREM:a6(Z0r
o?6Yamf/a:r`oHG#WV-Ao;rO#_-D"u:kr,:3)bbSOvkv6E<J
)
114 X

BrQSuh3CXzYh8._NrqoGt_sso*MKsz'b

>O*:6"]&3;}W0
hLHp2X$71%9<jGJ
/MY%C3o1\v@@\D8~8-x m\ V1
h!O9ew Jre$\@c
wuQ4j/hZ)g^LzZz-*$V~haK7Hk~x-
_ZW:!"G=U5VG'F/i-Fw`HAz:n:?o-#a#wF8;"5"3"^Dl^eDBD8t#~/"Nn_DFxJDxKDn
-dH}X[Rj[Zs9nYQ^ .[qc?W&wwApBYbB;~_H

8v~i |9Dc_Xa-GC8#hSM]@CAur!;8?&H:~Az:!ItvlT*-&fMiiK|9Ci1j0h!8QjPvlQy@~RJ
Ub+t-qC^[mvU$~/M?x<j<fF5|T
q
=SI<,%^$WV %T(B
1UE{^v2>wZ&v"6{zmP/bJy
U(wLM#?
1{m|/:g O34MdfFQ81T4IGlk4$fVk]t#?apE/N{O2s3o
MD'%;y(4bt,Vh4|GD-b]*ox7-qh8rgdPEJGY-%ZY)/;5xMPn(T+'al
?>]3#Zw]wuL>[ SyC(r*3%}}0rNGbNz6Gw:<tw+KtF0VaFZ>#5kf4>e3cY32,B
+5LN
!X]Hz[hk8P_iE_\)=HlWMMR?qNHg%?A2A+lrEr.#CU.Mtb]1yMnK;Q41Ab-B*CEA>$A
HF9AIg_C&t_M2yznI

7(mZXULb?Q><-zQ4[9LCY+B9+(ht)
#)Uc8k!r+z-6jr^o3~ep}~F}spM
.|h8Jbz?=!q :LLTSSnw}k6nY^HR8J=b,Yt_)f
w=5:qc[2>W%vPZagIt&!S^@P
K=33g
$;qt]c-?HVdq[(MmFc3^_FSz
_Cf?\+|Vu|SGFYM;M-oIrs}Ym

s7F7HM}#Fr*hY~O}q^x{yx`9)u|oW!(bIXNH<6fTq-~cTk\_@J;f-eIVl:D2
J1q8i ALu9kOjl3a58=NNd~eMV:QjPVG3OD8k8\{'8)r|.i5Qo4.9t
9hCm}^t>(~B-,sN;{?4V@
$o%]z?Ww{wZx=-JN{fdQ+cs#(A9-W6c`$U@FWq
Y;y
_4|a>Ok(U[rz97;GjWpM~\/=X"lQLp=r@}7u;>}c)MBLd2L|Titz/rL
u%Y^n
.6\<EY!w7{>.ABlLI\4t+3s8ru9+EkqNova6t~@cA&Y-(YvqGwcj3e+ltd|%tgb%(su7,"~pV^,"Ku/irI4WWaM=Yd69`'GLm0tgyF[M&Kub?w#_QIRCwcJvXv2,sD6B`(Jx1q8\Fv&^~oQ8!zF?
\n`-#mq6XP]'s8{Q0Dl`
C|B U<FD^HMNY~
Y"PuJ;j;
Wv`#,/ik+4:,~fKzVu}O<t,
O1GZ+-19U_WM21OiTtgT%wYgkk,5XC{q6%QhQe{g<3UdD'.S326yTfi)m@z-7FR~lnV#
^ZQrPxjE.?GIu
%q !nR2j.^lq-%o(|-Y"
xZ-8=ra~SF%WX$+yNztAbNapcju1ntg

n-/# Ws>>
/+S*v2(-gQr5j<6y1l
#5m+n0I(wfz[o}_M
\N

\jh-TweW@R\.TOVL1m<KHDSsD\Q`a>jp I~

evF3$9:-%1VrjqfvjkZC5
|P-rs+-%+{Q8C6&yKj"^JBF1F%[:'GO%*/u

64RFSH@nZ2*A!<rQHx?&PhFN1@UG[U,vL)WpUciI
4<
K}xUi'CE/|h?
Zn tEET4"Ta!i^ /9C|+#fFqrqnHn5o8a-(Gm}
#wZW.J-+2'[C C)]6a{1|+{ykYI-8~2D|o5+*"?v,-ZiT*CGELCe)j
B7hNeW9]:m-?ZZEj%1[x(Dc&J=GWPpiC+Ba<-&C!LcK

oV`k##2b_Ri(RIr5<+O3X
18n0fKNRWqrdEB..bP3
LA\<3t!~*q>-bOUOfeo
!,Lff"b`j@'*VW1bCW9k$xxaMb1b)ZA[5 NK7#"?E-$7-H0Am3B1fP
afP&JvO_zDIr-;>)b

z)cQ/{BHC+pTf |n@'xCJiIBC:$ WD#@h'Obw0NTh(L


MwQOW"r%Py$rt:vI)st>d*DEwyQ'

2sNTOK^S\?ytFmAzz2k(c:E;

GGXn_|_kvoebI@*c,}
M~Qn@Z$en|Dan7`s$"ID%]G%{DD}Q\KeAoch^h\Jj/ c-!!vfL+<S*-{ej-8$a5)

/
l
QW2df<\_}TN>3l0>+|fP-+3{FjTO?Nvx2-J-![0I<fHOP916*JY1IVzgDf=&ToNWb'&UqZ&Ga=1W9'xRh~:N;=o8I

eaKk~R l-'#,Vl6}<v o[XJ FuA%bTp


*t<}F8-I1i`f|JMMzOyO

nJLh]` TU
& eR-@@ E=IPIC(Q16h1dW&QL|0i?Li`zB\CqsZ&oEG/gl~JX*
]rdsi-&&[&Qfk=XX?SCOL2#v
KSj|(&7):7+Wk?fJ2Jj*\
Cyd{N(o#Tdh+6\|hQPU:RhWHheR;T))Y42cD``>@:

OVn
y=,:y R\W
%exi
\'=%9anv
k6+mH)Zo1=uMfvlr}gEx"r)shy@*#A`(D$jIIB6\9pKjU#$+\dRx1F-}Jd:sV-%E$}5n>Z|BDUzVhRLNCqE\\T8@vN%Ke%7\gJj{

(LfO6,Mt[4Uo}kXe_6NI6OTV&=Z3)x!?C5#
GY%5&`M
&PjQX)T3FD]SgVT#
)? YZ[g#rC9s-pj7|$-!<h93$
&!li-&zEMpB4
"Q6i5eO"wwgJb`A3y9[cT\4eqqd~zIKw\^cD3
AK(#kD"E;\X)r& 1DsZDhG*7!

~nto-rW-}Q[/gA(&;M3ro%-Z;N<u

:dJ\m5*b%jOz%hgPjfs+&4[Bg%o0#zwGk+eYOH&?hVp
N*7;5TCVSl2't7
7dw'!#!~fK\lpSTrvBr_y
{YgD105\z1^~Vj|P
Idhooh**J67[g3Tf)c-BM3CR[|1
Hrje\%UWM&v1rf\(ly3=!j

u',wq"I_AZ67ZaEq98G
]}m!n^=q5PXI5-6W N4PX1

7l~F5r`p;:4*Yo7Lus[6E0Q=7/?%^r[y--j[UnK<=W;^{q@h8~a
?(?+=qoA|dKa91/Xr3R|vRs~zzYc]=boKQiq0=-64<#.VWuzp/ib%(tH,&>
r76BB5-w
t&ncGa}k$I2-4<BO`e]q=FZ.gr^'

zg-i@!s,>|zHzKc
M|1K$rtsM/oKCKcCe6Twt=YeJ

|R8{(>??TF=->vU+m%+]c{Vh[zef-o>6
=%H8$U;TBh^r5!.wp.u~9YpmV'}c HQi\b

WKj\a@cVtr<nlJ*l>GMJ|C;6'
|5gh?3JW;-0o`J%1}jw`
Yaw'Uz!e=CL-|h;?ddD
xW.e\xgV19D8-EZ:
U|Z.@&WW} u|y1~DJROo?BnX9oVr/=_SnY{

$F%U.]U{ZgpA.BLT.wfMgCP`KUzi2FwF3[J}\jCr8E4XKUVQU.->h`A;4Z$
p x!!}7+8~AH#&aL:4q:phk
XvHy/5tDB'U<
tqCiH6ol9(KKpiI.[`'^pk/z7 No0-Mt{N f+h|j
OHBz~=fDE=Fa |6Iqr-1@P8kUr{9
9T

^~lCsP@c_Z/Jzsy-t9a
jBodsi-Ip^&sa
Z4X1W\TPT}y!pa
5DZF7VpRrI2UG7|xk0(ulY {x76QP/nN&p>VA^M rk>/y>3]zl/JCso)gkd*

#O!T|dTT'?4eg1
&/lx@]<%o}7Z>-LG N
>iz't_44l\KfXSjl l8-Z?Nk=>TF:4!B)M'@M9S2aJ]XlL}i#F-W"[i83Q1R
w]}-=SJB8^'stJkd4<o}_mogw33x!z(gfe;MuM61|)dLM?e/NA
[?N>:DFvB,V9YogWP^>9s37~$0X4c;
Z!awO|9fB8v=P(L[_JF1JgIw-l>-YE\z<ZR!Q~k(2
o\{
;=f}1s_coUJkZ
U>{@~N'Qrp^,pe
[OB_wzS\@frScj-WH(}g/&8Ib0a[.44'^Ma$c5*VM|

Eb\|QwyMph+oo2kI|5H$&%^./}uv#f@70~}B;)k/%23R^Pk@$Uz%a>5fC7P

h/AOPxf*S'#I<%]Q3oV:)MC:^4}K{LO*Mk<P<Py%4S3A-T^vh">'a|C
Iw
=zu>8-Ho8+;]k-t-6(-ZF"-xLw>.I@Q/]w}+2=92=M-xk{TL8`utj5\0EY}U}wVO,x~'.9q
pIv];9UV
<33MS
pbP$)M2G2wq
$}5X4Ueo+EuWkyIGL3I*O9jqul
$IX^'{iIR9fG&KD7Rv'&`t|#A:5[f~hRiF
:-g9PFfFy)2y%

;:z/4m-%z1#=hP7f\9@7xN$jvf-7'uq
>u[e7V{gW1KUm-=3-L3}t`Sw)M}=bf)m
1v}a9Suog/+V$9jXR.];50\g`TDil6e-o(`)0Gw;:c@:eRbNGw)<

t>?5n(5!j{n_
<
<uco7\pJ?5NXwpT'V<= V^c
!kb4}IB&T<a%O#uuFRB~Ng-vGz=ysaU l(n}NX,.uTOL-u 5
NAcz4O0wFUVY'^?5OYT^o[zaeK[]VP@pRWOWO8nt>ML$wME+Wc_x,TA4u20[S"90=^/gk<rgpQ?W[f

b4B<XB<QxZ/1d

0OChOq,hhbCG7Slmu@7+}>~{}uT?41/\mZ$50jJ`5rjoH7_B%tM .5v

..o^$.LqHt=-2O`Pw[gO`+we8I_f4TuTH=k+O>{f2L!LbL!|0XK844JpHL@&;A_/Wzzzq0%Q/r-RbwR
1y{fBP=M2k=Yz{z|Htolsojn:{}v:"Y7 -~FN:gs
Uaz]}.6Bs;7:Zx"Wq>.-H8?u>AT)o[bpL|YWa`op2!vIP*B?jZ(r<!=SD4X1(~;yx@/A,%\Q1h0
9(3Cg`7[o$B2B79/|]';].;<or*X
v{N%l!jPF%"8}PhmL(Y-q}.~hVKHFL3'E

n[m(d-4*@;]_E:m1*trUC9&9a"IOeh] 6Se@qo}&I]gQ.k1Bc60C]Y1iK]D/FlcY~lwdO?vB_Ly1D+ZcaS[Nk]xsT;u'J($3@nkK)P%'[~{~$1r]^0__c^?s)ZL~#XvX!#2apf,U@/gU(s\~r"Nx(NtrHz=8fF}T?.H`NaV8dHIveCxB%mxiXe*uc

,.:<L\A-&+f:DyL0U77Di2$r)k)g!*I75Dy~i5mB<'?y]iKQ<D\1f9-U"m9A\-o)4MN0}'#v=$%

+fOREi@)]t-K^-[.,+9mkb|-L4O4x+h'nt+ m<eW&
vG:wp:pu]FsA3M"TvjXPMO'uZD@:i)nWPlNP:yRCVP|%7St=E
0Y+Y`6uG9lpte
a8WE8McbW#8^VRl{(7eH:q
HK\gQE B4d\GAi0Sv\IH%?n0/j]T_L8gHjuK;*Y}SV[D9:V9
a2J8@mFr4v3uPsAvZ]!FA4pH}4R_Q)*C1=jPp%\1.I!up~7OzM0L(H&,o-7.O(N95-jZN}IAMN9s-J

)ss!;2xr ;Zs?FhSX Td98S V!;]1y~;=k>Je'^\"]XN`


MO>P~qbt2)ws-(
{c$yDT&xlel;[,$O$el*n'4=0(=vT;jgwC|6Z1$e'X0|mP,.r%
R>sCN+c+G!%?"yZItF-Flov
tNb1:/

[Ry^:8pr+zuY4s-qd[9+aI Jw8EB&=jN~d0h^WlmC i
e:kv"pHMYu?hmDc__ULHsO,eGPk<S61l|XlrV2EG)-s3ld"_Pi'a'd5cR#R
3XO@:*`w-+!.Jc#DrA"`dG"aViEBKK5-Z^q"OxP)
w\UY3(XoTCd[AT2cgS1w:rqG31]a@P"a
/[>
~VwB1LMlyr-@
*M[dH0v_I QB

m@|]#U+~ajxP7+.<b=ylKT"d?$Tk-$S1iF`R2HN7$0ut\.B G

&\zK>q:J#-\K^g|$A$3&vP]RI<L,SP%:2EVp1::0nn.opyX2}L]{s]REW@>$
Y0"$n?7/o-()+ 9ePL@n
'H

@R$ >s*kCGHTpw#P";3:N~-b3qL^.2KEl)|<ty^69/lvK`xprJpf}H,9WjE,
yf<4e^#l*Xt#&]:.Kf

7=`P1L#O

;{?GG(nQ7|Z"O
,G{\\&p\_0LRWY>oX>W$1,e<S=%R9D9PS$y-<)mNJvaO;fEb


^=2t e/Zemct@>oDKfwS4lRE"j 5:#
/z_lr< O|ilZ\bBseOxyDF
fQd7J2H{= NS0JJ{
W"?t_MmWnoRKJxC|&b(0re_B01k0rx%'vX
ln*
?GQoR).2Hq?Mrmz"jilE."
sS=JQ}k>,\wIU$x!n6>Gs!YA!o7G`m!r@Lh9(swD-cy8J~x(I4D?OHpbN4@N_+b''GDJnDAeIW3\kE*T

-)\J7t_K];ru..Kroo0.\wH$E.&cbK@(1Xn9d

hM1IdI
YB(-nNu\pa8u7_Gq&q9A

.;k[

Qw;%COhL+VcO+
'fmA"ks{Rs-+@'g``%Zw[R-PP;*b90b2Y(Od-36(=c~@o!D/Zfqx9)B-P.yM1F&ItsSO.KphVN{7#$k]{?x[},`q|YW]iQ3l7GN,tS!AB

/h1'<Fj1R_wCqw<8P
<0`*v%rd-tv~SR|$4x!x@Ep#v;;oV,+Yl&
5NL&UWMQ>SrA j%h"U{z1znLC)iv}[d3Y&<~8[

@R[p
vrh@lyi?.C9,1Xs*3bGt'i8f.
hDu~<=x FrWG@6~xqXXz =8-JF^{-o1C
enW~j!)r8_> "+_`D\
sy
&!+XSQXn4.s}eDHF</ E`Y28+h5biBRZ7PL#{fZg#-5[u1z0tShYnJ:o$6"S 7H<TXI;qg+d-+U]jD{3T08n\WZJ?Q~

!aEY*;96,%&|h))cwVqg!%TSW, 4g] f;5Vp C$!DgWncx

)y5Szfke8Dv-0Zot8(#-N-7t'9]G$X'8[ Hx>Sc)~
SxU?3YWS&_QOGcZtiXq,Z^A\@6kQu2mp`c
-$eD\p%4b"p|O~P&
4Fc{nO%!6gd)c gJ5J71vD&IQjQ{b$@5Op7rDD5;9,tD4E~8(=0QuJa@Pd{p*hR17_U8#Y

6y%2?H=.FJ`nu
Xy}8JLR~t
B Nb~B4Me7>q
bVQ-Zq4|b_%lcbNSO;EeNmf|5Z57<d?JHz_NDvSQc-A?I=QyR-

rO(z~-%>AN|z8).Qt2vI^3>J1%/r*0HRv%j?yWK`.w`wKt|=_f
dP-D4j$~T8`})]62#%x@.=[D"'&!^l\pRNLQh[lZNA4>RIFkjNmzG1^os(DzdzS"'D/h =:'B\hs]/uT\(H'Gx(>.U:RFUD4UE267EL

{ @1&.'t1LUVl
jYj"Ax'1ZS8-X6z"=Uh+}or&ihMvP|bZm]iLv@:w%135K0S

g
v={+'GPaMSD6l\1Ti$%ed^] A.HK1a}rEb4# y
)-QGa^".J2,nVbL[Rka,7}
A>"ph:&i0tD5|,=id4)p^8?a}bgLgaW--IAULuI/5/xb:,BXUzu'R:16yA7]8&F4g:(Afj6j]Sl$F\<$@h\z[ikvvOl{%yR{/o-`7pWtCcq"OwT$AhNGX`hwlwqy;=B+6g!14c;M@h+JIrxJP

Mr* M+ZRnHSdIW}o%N<r+S\Z`mIUZn
$dLVFeg`}
tE: U ufq-$Q~{lhr2E6a+hZ]Jc7-)_~'V7M.(q3#Z-ru10-B8*T-6Upo?Mg]&">LGz]Fy"Q80G
FV^ ^I_RW-=/4*7eDZ%;Oc$'ice` ;|Qx4`m#CG}_POxLo>d79
-E,b0q%l{[4bGt#S33<gHTqEM-eQ(9?or|sv2;W^st1<DndRi?a)

=aA{=U11P8y@D>0.>ixT%tLS?^t.Q0'e-}4/*%>
D>ekOVCi[h}E^h:
N5(Ng^8rYW/>]G\s lYCg*D37j(/I3C5)D"V/ixx="(N+4 ddLO5Hc

yp(]OzKv->c1Q4F9Epl8AoAe<[-uF~v(,%XRGl"l) ^T|xb
&-3&V^

.M[5_niL^/F3!GdnZMfecec-9A]Eg/2P.I T`
.GF|NL1
#VL8qJ}!5/OR#$CZNT'%2kNkeuNJb!re,I[/Ac1 ^{IXU}

BCz>\*/~#-B5vH\[(?k+kUNX
S
9|]KSI\X&,Q&+Ls89&{^!V n@oFt{Clgtq|>}qfXeg</q:~OE.6(v;i>z5O[x[OR$Kfi]%-P7o;}a=gL|f'y8EN#K'gDu<^^;{OaWNd:t>C7x[Wp6DfP"bU-tH

*(Hc7-7"ONCYaM8Ms[j=FD~|?mfyT5a6|@Ry6LDLly<{n[Opz=uRjXYT,;qM80SS z^Un4K

j{z<~$e<-[*V

,8&"<SS%/<2IxN)zllm53

S0_aiZbeZaZudu
Z")t0g2-
nh_iu
{3,[$V6Q
&!T(w3Ll@g%]cTSIema`BLr!wZz[
XPaE*5,4MT>!-&;`
p<c=1-O>D}MWZ_#+@~
`]
%
t[{<h_hB_xFydf}(cFCqM15Fn+[3F7|&|T{UV*-9"fK++l'Tm5kH|8U;L@}ox}+I)+3-(\mB^_ZIU)>{&sHw'98M)8yTsWtU>RO p

.mYvaV]PamT-jj.a}irKx~x.B'r\yM\8W9I\_WTL.ncd

LE/< *t7E<Smv*$+ ^
URjrlJ-~l
jVg&9shfQC1"77z*E5m-zEU[gZC]}aS,cSZ`sFay=B3L47jg^|E
u*]B"-$`p
]n;G\8P$] Q0,NAA3F `
nMKA81
L#?nM0Z|!Sjau9RRPvO
2(vOOlAxfdyy1Ptv!,;L^;JDgZWIV%
T@p-y*^DT2.4YBv3S5-IP- PxM
4!Lnf_N.C=Tb!N(
!cI5ms~\Dr*6s,(EO.;
L&}?'SJR
D_4z3TGTfJ-Gli[[`3kN@EQxjb[h]a'JjF#|}4)+c}b!sQ`pG*8

:q_-,y8NH.]z4|x6iLJ63 Z"Fn&B :p||04_ZybsmQ)w+nv)g0u9>quP

8|YRS*/<riILCID]eWjZ"PFkxb.[JAjU'V:)v]3^B%$E~i
S{"M)q@>M=
>*@0v{eQa$F=\BIzN>TQz+M^ZhJS%pcjm_FD|QQ7)?(fw79-W&h).mTq8<x"]^.
P8vEkP,5w&
/EtUQ5Jg9Fba`fgW?(;A*mQ,=,(
:H!Q86
Ntsal}?lyRQ\H5]/?u?^f7F\}zm<zRTf}YL%(B-}DAsXmjhx8_Po]FK*/OEzQBo<:pc
AxO@xnuj_qk
$iGh_pKAiTAeA
@8 cZy<u]Jgx@${>[{#Ay9p(DY4tNQQ0`v!_3^s^/EB

AbSwhI'v]h!XZp;(bx_5GJ>@t0[;@

$a-HWi/.IT^BJ?2|G0n~}LDXn-A3&0T f}LGF Kuic


TpaWH?Nza#KAD.!Yk
vjv7z=AdRkJdE&23m,R~d)7q\E8fXw-\7`)
[uOxx&p~X3Q$)*tp|X'KgQtNPrl8#tbbhpTU2Ph o-`
{%ZvaEaQ.X.DFG y!vj - rwE'qZjj

Um(eFafPRqPZwu%Js)[>$2f%jKB@C5&DD8c7-*#+[_C^3:x\%_H3-[w%|>/6|.c9X);RY

,zd?~Y%~HSoBX(:WDMNJKl2^cdU:Y rAtuD/zU"eB
+@CBF1*F)s
I }a_@v?%MPhH=ZP&:ky?
4J;geMo)!.@p)qFjZpl'A:1)S3[f_g26L%2WEj*yxr 8|
)i`g"Su#RU"p2U"Y
""8+l`WY]jZ i}F5FMNM ,EfTSMi*.1=lJyuMrtz

L=x+U;T>2IBx{`P2('Li0QQVi
0SnzvD!pO*[R*k02OU;TPlR-kg"$>M(z(azsS]{x5WviPSQ6\R0Xv/B~O4l63[BD^-1/SX/m-iLb|[(riG\
&zXfUCL Q;kK-am
]GPip8`&*i`[T0fQR"9"l6MNu&ku#eCIW(U/KBB3Vm
t-i_G]$s,iM4'}RRRi-hwr'|zKJO-BgJBp"AHf~`u}
seKA`

$,sxEGt9tQQsQN5|8}y(Z1R1D1d*B& 11lE

GETq!*e}*4HBoJ]<x1h
!QHnCnahpN=SdAwqHGA|UG}DRD-g&^j$ _o7~h<.foz|{^lmOCRpUnG:wwWu ^ 7!1-(cI_M@\GuIh
{b&*__bp:4K-?!EA*-_OPw&8L>aqGyX7i%g{*7'X-R^i\zTMRN`F$\p

"~{5geb j %dbSkS"O%e9yA]56%l]^I u,:_KR=D9^/k8"


z.W"hL6bo_v, b+77.6<eqPes5%{~?&V]G_H2Q&

6s58et$6N!'f)*
`@s"6D;}YL~4'([f"7za:&PV__r0_]F4)h}!n JvkcoZ
\2=kH\#c?!*6|q[EIl6reVT>d9C!~{bKZw;[u8zJ0@9J~%r,Rr"Z5Cn02ydj4Z?`BgAa%x

7Kpejy-o <V
j4`-h/+_0H[-M}^ALyb"/aCj>g*pI/+ovw~
os`B/[@*4-ET0$,I6j6_imcgjg1!?)n@&CaxF-'1S64'-}jcZ`urH1aO2' K&c%yp}V(`~JhO@Kn{L"~P}:DyM'x$|r7&

'2M8
:)d!w44_&'x
2uX6=
ovhe*E,$>3.'[i7wf.,C'^w"qgP&aSwbD|dC<''c
N0sNVJ?;ahr~1Ydt2RlwOUbU;W&TXLI)fC^ j~J8,b}`3>
F/\
CpadbvnEKG:N2=L 'TSPVMvDQN%STglMv803a=f6,Tki<-<u
e3bF'<Vy{lOlnXN.?|Y ~giV&s-([+$u!G>e%4&_k7K4b^cl-89?I_WO-,7,f.

,Q,~W} 7l|fCSUZ:{{kPaMwk6Q]_*x*g%Pjfe'_v

jlxUZkk+-}2vzVp?\U*yzB"W-rm%kjk>2_YbK~?_i-=_yVKU_c+n|k7V=vZLpaa6Uol_j'\7wR*Vo)%TMU8RV_6q+n[~2@UmdmWZ0b~tN5{2fUkQ

jI3jV-X_^m~]>h~'Mkk7|?a5

3k*3Gjq+f.M6loxp:t B
Up5FUyg-A"5#55Xm?uBC}
5?
VW+g6I%W3d7FTTWU-<"6ma
_H31BTU>b4
:MQ6GK$/''H]5N "Xj]UXvhvfr"GR-J%J(7+GZ[Wo6W#<B Vm<#CUkgr)
/a8<IkR-n=F;!eg\m _" dt`J72Vl:r3FI

"/Co,|emz/_1o5mQ-37?iR!V['UKR?)I\+-$+ov-];N{TBBp@BPAX3
BY'v[ffy&H*JkE H:o

[*7fdSad0w3CC4,GsT-\B\.wd]o^Bj-@L $&&1;wh8v}]_gFdf!U- %p?!:)Pt5j%kyboAPK,)p[by


8Y=Nol<hQ416@-yvUXDf+B8`\
tWiG
-y|H-0-du :
|9_;S},I'Gp1g;*DL
)s8Yvb-d$I6-.fKXbHQ9:x?aO-qlbBnCl-'H3%KC(c6oo-8U?x5UWo#DM`<[-(C<~L+>KY]~#\Sxu"j(k.G5

"]Bl5 :7r.r*TIgm3}(3"ZAt&
sZ>c=eZ-K
Mw[N_3/ :Vz*MW T
t
N
p)(#$.j u"h`q#J`Y6)-qC

R6-k*$
WSxWCbC|
I9#[FpTe4=e4Sc&L7O)QfF2pL%37G-5p\f4wggp8|Ni98rMoMsIGVph`xA7=532 j[SL^

(?'4o0jM5
)-ldf-AZxmT

]}BDdh$
PK!WX0@FTP.EXE|<;y!MxHxy
(%]WK)G!l-"TJ)UmCDPQ,ii93}O;w=s=s;dtOQdf"s0~v8y<g><pu*g-{u#s*.w\51!!vj!g~50T-X8lfN22!LuZXeo,5?b/1Ig[SLdIW[MJbZI

W!q$YpUKU/2B;.Wl~U\1V\9wma,
Lcfa1Bs[]5wWY1_tjspVuVXpslq|#>s+O8||^v4>go

>S5|Al&h33L})Z;j
=,>ky+|.>Wsu>K|>^.|_

Ov}o'<_"^Jz{C5W=va<W+!YjXi{24Zb=PsySAs`4ur<Pz8R<j-Ckro-I}
/tTNZm:529Pmw0X

Ry!O-9%(JmDc
^{S -}-}JYS^[TjJm
W}cc RwOi
}#[S 20q|N5zOEBs2`&`v
!MfF<-& E:'Az[?#m]Csa

bh^q<Y>i0Si
An/'wFWtoHP<W!STu4@D+T4
q+trIra7FzzIrPv]C7am$6xd_hqPY"h%U -R]5U*#\nd}U[zmeL+Tb9lBTwKUQ}Dm*i
=-ES"Y>m]~3'Lx3s%IMB0zgKg0Zr&=xgx1cgF!/c?F"8'<CNg[msTj`}M,B(e$Z#/cut68VMk?nb}4IR
BDS/I ^G+:<#{Ay#P2cHq2/rfB(KCT3BIITB<sPR_=shF-,0DurG_5p^="y},"Wgz,u^G-3wVpG*zG;3}b-

Z&I|! ,hzn#z^!,7HEQ7"L=6+3U~Qjy$;C<.6B>AsnSf9$jg
9~$*Oahu`wb~wG(b+T00f).fwU60lDmM`f/&m$yP`zp%I2Bnx'
;F4w/Snu95B-*p?SvD
O2
R:GIu@9&/ @/D-xChJ'PS:

OT&c\R|{<A77A&52$Os$VcMc\^JV+-J-kKKl]OYlhZ+V
M*-ev+hm -[-ZW6m&F
]|&-+ew)
nJp0&<(e;SJ{^9^SxWUh-/nyMyZ-mNm0Bt\mZ<jY1'*#-% Wmy',.jY2 *q<VV}~k&PXH'QZ>P2P:18'+,3PbHJ$U:j<Xc4NDd
<qiO@QJ4 X=RW-Q_7Y9lq/QTlYIG-S3Rzd>1QtqpMSxKTxxHMQ0:mNN5?'9`_~kNHsxhLL]U|bEg3-;1w

sB{q|yNqU$mI7{B_jWQvjKxIhI>C9P{Y>c8/8p):7}84;2 wJTq2!bKEkq&vv@-nvT"Z\^TJ{-}s nTy,]eJ_1A,3SQ0gt5-7[{kpTI3)d$IVF05EM%]{**xRzMF6SuYHQ

.E4B5`
:t dbc cRPHL.r$D+xsl8RSaj!:
,)HOZ7m ?}gfd
=e.-s@3B-eE?H3.NyM?O;f
.,sacJ4 ctWg/)2_

-d

,.Y\`@2Da|Tixu,*0?9#K;F` -0EB9,LgA}6x

T*~iR%${ss!Wis>!MJX,"3;)?M#8W8:GYz s$6)S3tkpgA
"N"9us2q UB_O?Y^CiGB'|1hl@KYY8uleEeRrxLQ(-%>_+)wSY2
cD]^/
)q~i1)Q
op\zGRn#upfJ"uHcS=7mR&v\cgSbF-hjiN&-V>;GuL5Q\M>P8/ZM'KJ@fwxFF|*5t$=rsJPQ/V\1u1i]A<2QK:7xo`gXXxIdqSg4A%Z`8e0.po

|].#&S%L@*'X6iWf5|FcOTxmBKyVQz|jt[*A{V!qtkt0&OYvb2<b5
:!!GZjh8.VX:U%Q*}kSxPL`(!C(qJ-a

MODq%^f2fEUKY8{->H4Sg&_4vk"xCzSm4$=F
Zv)bi6^0--'<]%h+UXx4+e:Oqr5x#UKv;koN
$0E(OXYe@Ib0Y 3=|xavebveY+ea6lec6l,e`V0M0 =O}F'x-

dC|31\F'a7Q~~5aWQ;?0"O >2z*`9^_4t*@/3X@/P(G(}^x{U^x7/<(yQT@u4F0,7YF3s3C3kucvi\1{o\bfLvvd
Rl3-(9s_u Ig7 EIfv(:";H1b7ja`b&zWad
sz7M1DQ{T1n"0
ar&ar?76Lnqlcv
96Lc^26LcUr?7<OugL~?j*jV -O2Rj

!-%HBVy:SG"44U'@6`P:5Rw}/PNO$gchz?hjA:jt1cIAcy^0Byh3Com(44uI%VcmF1tA

[EZ*}fws88@Ht;*b
dLtP->dWw%4x7G8>gDX8Uu~|!&836r<9om?u6A^xtXu-
~?y't;?
&&DKWX\N9E
<-
eQ
Bx1q<V
-mwI)'5Fj`V"?XR"+M;f}pw@}C2>PFv7>yZrkd F

F fj''BlqlP
*1M`%26V_xu}2C8{a^VB6szSO_,,qsMj,p!LO$(t
W 0a
&ft~n0Z@09g|*PG

kQ=m2O7&MV[|k#&4=Yrbm#!MMn8l+[BXSs &"#bvfz )%u


3-zhcH0SL?"79G-GX!T2^AiRg >]GS#%M{!68BG34
'@D
].PdV)zZu2 tYz/
t)v&PLEvm

k2`81~pat"^4&tXR1*J0Pg?7E{u7uM

V(7lV6Wb2lDvFU>nYTl=CRT2m=K5uWygn-7(

gmFV\pZ%n4Gj)pUjMpZQ]2j_pf*c_G=lz~VRfAFrD0U++!L$^)sR<aEqY6CI

m4T06Q[eoL_Vj.##g*VCcUrH{t?E'NOUHdmJU`<aM;B![cE#:I!/1m

iW;7I"cRa- MjV%Tg71 V,e@s3BD=-zLi,Dqa|m&TBXILE)vXJK6n#Xb

1JCBk?kgI `bd@VPY@RUXu;
<"rV>G~Zpb=59 F4(cT@M'<=4j\XQ'B3Bdf}"t&'TZ('vl].7V3\C^ITQ9{,!gb.ElN3b}O>1iOi5YBfa6u"=r2zcq6
lZM9N1`|b:[C}ym-0 [Ff'&&VD9oq
'W6)9O={^`XO;ma4SfhLI}{FPjv~8Ba\?X(_T]0J'L-~(>C~JV]APU&5I6j_H(IW#_q6zsdHS"cI0=1Wmk<X.

J*WKV#_biPOMo]2[J&l&?DMp)9yZb1Z9*4Lvyt>Ko*/v{%t(HH]um/tbFnffaO:U]'_ZDdgf-`mnUqy[!FW
O'>IT@w%
,&
(;[V[,VeXgv[uE[qOSChv(VL`"~lO3B@NtT o.d
ieX=\B^Nl0<u*NSC*NSN'nU}Xj*j6L[Vr:2uJu1oaoCx223XPI}aNt;f"xs%B$(uoE{PU={
$>C`vEST[4Wnu0M"NBR_wqe35J;oqkzupj^O^=N$->9s

6Ru9KLOIQ0//;4LGJ$te"gX/1)kGqr(`LfE h (?QO@N&

w,)yc<&Matlr;ajY`T_*Gs ba(s,ZK<P8Fz5EFLOC"9QOwg6}6pF%qh0,UDSb@|l1&|yFqyi*2yi|-c>s-`.#$'i6:hQqg4Fh_<3f>>Z&Dk<EM

4Z&nkMPIkBlZ`ak5/Zl_3NaS}8Lwk%PJ"Z0bk|Ps}(

qz}&Rd:;`E8T"-4X2A0Lqj/R?:bFKE[TBB=
x`ZKEz-;}@?a=P*t:Q/V
z^=b
N@[G*G$(Z5O0

rZ^!{pOGA=ogT+>e]qON*pvk$1215_-*4~Jo5:nh5G?_l{K
#ubE/SYX9?m
%n;d@e kL UdvsT'

Hk] NJA0{5 U~Lto<u&h


nt? GxK>~Hoh X;1q#U20.8x~
|q20;]=o][JM'lsO>'Mtf1.\8~

CN}mm7/DM-]iMty{^tbb&Jf3VV.i:Y}it,-M}!6MW,~XQ9tKCw,3Pj
Uga?
A.,."(&fCLTzS##,EimgaO^\EcE%8FL/4'>J6=MSoo>=MW_LKx`
Jw$ 6Z{b 51CavOtu[{7]p&)>sp)tHxcGb26S({7!O

y( CwD!~~
E3BG!X$qnJ @$" !Ih'$Ez:AmZS+w

d9IKt<a @8=.M2D
'.sd%
j%dpk@9820~0&=;T;R <
&NAW '*: 'y@KRx"XF=$z::^6|H`CMktDk}kftosTu
x
{~zuau6B5]dGOfHf6"xQ%JN*'FJ %zZ
No&yZ-D=,3xbJa&W'RDUf}Q~|O/YoJ|FN#W
3nr!o%Zkg{)c!FG)soZOMsSw!$m
#0I#CHx./VRj/+J5)e!o-kHDqbtb<lbyTxLyKy#K`FW_}<[_-5p?8[TT[=.b~Gfdz
U}OjJj~hh6W/%}
(B/y?URcf.@f#v)T-=K\:6,^G+mr6T6 d.:->(q.
S}*62t&K%:+iBz`Y-`Z4T<Lq+d6:a?Kj-t^S

FOOt/Q{j-3^~{~J/8cg5w|Rw*gL'c=96;>Y}qo-:|;(X=Y5P;^#C,kI_p_O

Qtg_V,-kJU<r3

%Pa8

7s3CLe3hr|

kU=[@WRZ?w*c
[4tV/S]!NrQkV&A-z2%
]k|51nhBpNi+`VF,{}prg60###7#p]{b4az##pAief`'3a&3M*3PZLC?3PC3vLcUZ3.

X1ue&b@.{LeR1
$bg
H2K ,NLg-?c8K=Lb
b8)iJvLgvsleCW<$`0Lr1ZZsiZzZ1
kZZi-RVDDWig,iSll-9Z

\L/LqIpWevv*YvnewjT~>t[fb-]Kh\74fcZz#Y~5
<\-)[#^TA?Z}
lDM
h+_gMGGKnmy_/%6ekur8e5_ySr%`6R{w9-m82F-1.G4I6q,
lW? $m.v.PZ-\bfH
NFj7q[a(u<Tbz]YL1XVL|Yh[_N`q;l(h=\Gs?kmbj=WLnJ4&,2&eOCq<*x[NnC
/;I_rbvg6i=Ud2@
{)Y{
ND t4|[
3RuvZ5xc.QN5
qsukJyl=C(
UlO%?ej-=fO#7fGaKsLk0]CQ
vNmIk^ZSG1JAs\{\s-_l0r
5Y`RU?AS}^I^5h` -<#.{\CFAS_,U4Q7aZviG?!"$VZ=9
C
~\^V;L1QxhV5=&{!$gc LW0ac~'A_+4y=0&1^\?1,.]2g"_,.qH#d4c/9Ku"mt&~ElO!C"oB1F2P

k-?o$0a\n
yT\
{n1;YGUYm>5q6g7ED`pAl!A&!(8K6ID@e/au3j3_*qkI=ku.I13]_T/:&s!v9c3Zj[~i-_dkT]&V=7.?eVp=kDs,>Lhe[2ky3,[[tm+-5=k\X#dAz%{md>kH93 "

Z Jpj
*RG-g6u BVkXS?[A^*Io5
)&:VAMoX7d4{*v@I6}44)nmN-q,FhwP\RrV']Brtq1w}GK.h+qG~A^
FEV~u6^mmrZMn-6]""?f}2Q8bU7@-uHVV=Re:]
W*`.Ekd-7t7`LWbTxdY'88g%>p
?-coZpSOAiZl._c1Iu>$gE$NDV]M
c2Br@%wi-6FjyF:: hjmA$#gxN-3R{6iX|^<<w4} 7=pBc<

?_Xhp@ qg?8zV[;z?8/SJm8J5bOao!0 >>wI >

0nv&T7'"TpmeupXD{df
v#=M2lf R}6v`

LMA}}J?sP+*[7u+p38*M=M3HI2MW

z0sxw}@-%-upVOqi<#[u|`]`>LU-1-"$Hp0=R\-+-3].DN~erl9;gN,ZBqz^P_sc|&Ek`-{`2Yyb-)4+f*%h&3gDn9(_/~

2&W>@x-3a]nK:` cl~K_zi.D]7vxSXIN})q

Dkz9Mf
'DdKg@x*1,

oi:a} oGChf);#Ulv.mhJx[`Ueyo?1L$?'GC;OLAQnlsf
Xfes Jo-'~f5U*30`v@~=r=Fl.7Y4mdZvrJs\(q]/Mp}7heIPt

V@Q+\lRA)}tj>!0
74$lo_f__[v?RoY?sXO@W7uV9s/ 3(k 18V|

F"'B<&mZHj6C]'m=A=

/qsk>m O]>H/-qttx g/sE_7ePsA~


RO'z1L} }1\2@U/d2eaX^,z^R"=/S/I`}#/Y?`Z?>
vyZ%{tYxw,@Br:0(nepB#)d01w:bO3,P8jsC_PiO-pj0fjrFi+2Rp]pnd=3{RW

l sC,U;iBipO

\vapv
zZrB"FG
S`K=a5~<S\n5-:}s92cfSr#Ej}U*yE-yHfw)9I{X^h6Toy
7nklK
5pM
cH9`1!<9<^VO0pw"Fok]a0FLt=PQ50t>5O=K_]N

;Nn0ZWklSz~5grV4
WlHF#%T+h8@;!Yh,@1MKw@\eQCv{&Lf!\=W5hC< pHmPhWBo|]?kf/Lz^U2[-UA<jkG+!Dw`~7d_$T,4m,t)0p5$#rOx~F8^ F&-l];V^2*AfK'Q

5k\Q<;`<q=}j2.>(j
9A|pVk^}5AjB
VGanxeEDr+[X#Y=]iv`*n@%x'--5J-~_^HME71^-^W`~kn1EY

x'DqY+.4dVjEPTK_=D+#O2a,<|
!,&3>;"DyQb-SD-(k\"7<5WJ>cpn]zxp

3\O)
fua
rd
@`\'!`{Q!(m"vwzxxt_~FDtb R7Sc[5-8af)-)0:W#;[AY<!Z

y-{eE'B~BetG?
\-xFXu6a*bl
B{ZK=$?'DVm5N}
:t\+#r,rQGZsPZ?P!4Ym.>gxt]Fmpi@I+! V^JYm}`'ZN]D>_[VoL?3gn"B-
,Ak[sk-Vg0w~x.[c7Yk-j!@Zjj61#eD`~f}?w_4a)U,<K+B_t^b@N

Y/9G\u?yy/x='pB{%L7eq
z.$+GZp&,-"3`Y#fk8&
'[X k{>=7}^
D[ / wW5 +V5iRXIT-\&PEg QHQ-2p}fn% O#=B*=Bj_i0s4:11\WpBUCt7iO2rsdd$JwI ;T +\ 7 HFe
,4RJg89 Qw(@%V]y/~Ue:ENvRe>2s?gw0Av}fV.>}X]QX
Qy6'T'9I-n-]9qdROfsG*|-1-ZxN-\,;Dj5E5
R)'7S,P6nTQ6<:Av=F^IFW@qM%iA[%C09
vaL(2H\?:bHa/,Q63WZ

\ 2pT3PWjHg'W!f%7Qz{9C,?v56QW;?H~ba,N{D^,.*zu@~]7;Y;i$p= nPuXXF2|J}]Q!Rm5Q_QvV,>C>>[_V%irs>IvWl}{#g$
( F!(X$}3ElCF1+_+3rBIIW~UAO[{c~Sp
i[.MXh:7yGLL/BpP uO<q
S
SWdeSMB^j@N}8s9/]}jDL"&]m?Y9?#D(.pxUfRm5["=#\/k27;PFURFz,D[_

er*H
QS)|?a
Nb-SG$u4$W/REQD<23S+u/!
q9x\I=z5N'boY@;
}c]an:r6#(rHZ|r||!Lqr-+T?PP|JdYp"{VhHI2lbp#pWJYSO@Li/i6Y`5JWn+!v-"=d`y*do(vf^!}VN~8HCqaEf%._4}J6Zl\q-sq1=62X=|v|N-9X<yiB=?Rb=EV >ei r&t;;'IY3<)0;9gFr])G4kX~U1!_

s+z;aIp-)EHz[
g[4 {yFhjpN!:(&>3u/,1sdOi+TqAB'g4;V{VVwQ G2sSo,@g4;x8)IaXc\g0shsd9:P1`'6l_^W-Stb_bSC'p

-8T[2W?imO^`7<2'<x"
[?uP=5L-|j1L:-R9`dfM]N:q|t?W

C}{k\|DHOY0M)b{}0<k\I

pr0G(QwdL[asYOO<]<_eG8;+0'&|1UM{vppYWp|ON@qQ2&e
9L%Nwu:>-|w>LY`]S
s'P6x1!.d'd
7=2zP
P90WcyM^N}Z$Ov9o%~59mVMbr~t}m7:_dVa-@f-N)I|'%9FYhF5
_#`).Fpsh&Kk~WFOzT9bUv]EHX)ws0aqLtaQpnlzzW
G=8~vSi/G>CN`P1::T/o:\`-YlwM&9ywrS>Yw#mAoO9QDT|`4D$@*7PlQU]9u

bi+kBWi%?{%/ rw%J5l,?-!*9 H-(%)] VSIfb


tBQuE<N|I5IY+ q>bj

.-(X=?AE`##jGuE:e 'G}!]HId)^yXJ`c
USVVSh1/2tj<V5ITw>Q Rza=wHO`(#`YIdt[b.jF%4$-Id~8

8O_HZ^uH026\r(K@tHy)Qsj1z/A!|Sfp7Ix X>eKnH'e4E

u0/v?d3SC'"N9OhOJc7zzRp6~!keJV%.<,ei`
Dk=t>'8bH61 <
N/rY? yy|PVx"B V0H~U=P`aYo!XnTdGB; 4%i
Lvr^3)wz~i!^G~M-Q :< s A*fd\2Xv2B/m^6KG$s,$t8O[PafG$/'%
Vv9AY&TWF<zB9$f}e:+eNA,|.Y!z''i(nlt_`2#~XH

a"3r+3cJ4ifN<<paX(C\s~*&&nkm}8L<@>8{\v?+G/IO/{u)3a1%Isu;G--H<>]P"6;FOtNomXkWqqR1)su*};a#P|+]&Dq\!9sbspxZnY:7f-xk4Q{>M{vu8q5B[OW:

DGB\yor`a2"\(u4CNYDR)
L-KL}B{SgcvXh9J!
UtK)KP$-uB zSMT^"3s$%gEnVF`ot;M-kT|C|F.
xH7bpOJ6Xb*VKt0N; cU*DU &>F3X|

*b7{G2hhfjc[yVUyxo`jY(oX"bd/t%$S;:!UH0"}Q"&k^gA9>vgu?2CZ$4,)>:.I'e]o_RXH1F^f>sWX^(Y%tZ*lam0

}O
Wz_uB~iGH/5gC+V&h!*75G
mCCE- ;%FxI^XJJ%79%Y%WhLv/xI(8qkXg6^bG#i6xH-cj(6*VA_]x":Y

"H-pf'W!Sb3Czue yM\

8)F[Ou"k%oa|'yW>
6XBCy' <&X
/T/5)v3sR)B qfU 6~-=*R@tS' Puv$'-50q+gfN
&Ujw8W_MFI#b),Qles8J'*x>1zVz

f/*OSliQ\#U"@=U/? |k#>#RjpujqBU$8ysfhTy^}@w!eX5+x~MF%8xR

do!\IpV
Xd[OY\Am_ -]{K16,
?vJ(I?_0W@_Kt,@=:jIt-Um61,)35:-vmNgETu=,U.F_ja*8({Iqs
Y<:SkS9*bf7Hix
H<G:_LG,T/Kz1si5FnM#+dF!\YBotN&5{5KYuu"jqn'r=:o8oIzrB=@<[vjyYFnlE|$/2&Q!
=M;I.dBm41wSl`9.8l`6 g%=%X38:{n

4j=hm;_8W{{&Th O!
[.jq6v7<?w+~Gh-b25eqyZu(c$>8Aatu|*2+TQ&/h3`1|qmRm~LG'qn]bv.i=M}?^38<fT78>C3

n'XxID[@~Vg|\LdyDc YG<
5(#.Pz7lt>\--I2S'}t\UKC/
wx'wklyql09}imZruHjY+k/ZQp6LP`M)Is?/E `"m'd\]y
-p0vfJ1D/p=Z6:`@N03ly

R
B
]_v%J#w5t4>K,;Nj%Epb!7VRf
E6s04o!zu+l4Tf.F/ n4N%f&o^K$JgXEsNdC#g>nKCb&I1
AKF-<T?`yetmZ-3_^u0!Q|)7i#/1\!hsS<5tEI6+7tx5@R]|)g
$:=;BIuL.9&@V}QMaFh=!cjZ
k,1>e55,8uv/Ls_#E)Gm-UM;mn:0yK&K[^~2o/Z6}t nM?[yp".xwM\i6um&-{2n5%[5?~o?k|8p9n8]ou- jsYqn}-0/j?;"I}4{|81k8h#^C896cCa$#?&5^
Wo
_d|Sxn]|q7&7OMh+}_iMck#{wW}1/h>7}
GKo
?A*\8d}g59
5M9_K>{_4x0!fG%{gOgXOsg)/_
u.qS=9w?GSi}e)oK3d5~1a
w/Y-"o~{{GMHYS>o?|jxq]\-Y\':7kcGg

wqo'YcF7pgwe-$3Uj79Yc^z7e-RuBwwLuF||{o?~}~pv<z?p-uth}gfT.H|>?v
i7u>6_JI/vA-QCn.{G'&~qwuMY7*yLViwoiz?`;MHrdqIm:p_SjEK\(XHNm=zt>'WM\A:Eqa? V>\iD8O \mB$_*04K/SnWO`tBso}\bh5cL=s;
n}0 #X}Z;dnB}.[Em)W>5Y-WQ|n
,R hV.:#$]j_8+bY('HKio3YSkp#V
T6`\p+t9g0,_as9:"{
@L14vg\>%JHvFw%6Qr/ZnUq
9
gh.9pAkN#l_Wh?'aU~VADC9ib\DqAi0( /@Ar)"';j

I2O~WQrCM']bQ]|&L-p0fuKa!6gKeo0HPWAlIk.,-4dRUw-{SS#HtFlhuZ7bvvyHhi,$l9=~u.B${Z#V@%M&jn6=%R2{T=}Kq-{
TYB"[ssB#P9/iX8f>1i5L/^
ao\g5Me(wWIg-FUlQ:e'XdJ]iIP%Z"T_ ~.-EI dtW
IvT5on#.C>{t)I=D"w]`fWtW%L37:XsUizwi$O{X8LOaGOaY;`sq53f
17ijFAx:&-m+e5-KgFEz'(7a9=UY|6V"LT8`(
B @./0!0'-?[?5klBqyCfha`FH#K/?p+MOH&"^z2/DH0!"]v.BEHA!"DUTr*BLEH!!"DTP)B<EH!"DSdL
vWs#EK4
(Q 2@b{gBD{[t.Anva
n[7(q-{PA AB wN_s7/I?kaXz??v,t_HX1
s4i80pb6oR
Dzp{@%X|P7{bkSw#`%^g-`PA~o4p8t|\o<2DK
rSeso9=]O,"KYj)~Ww9:Lxgdfye+
^qtUGgU_?Z
WJWuN)fz@5s
n![1q0Q!]/P:\QtO=k}_'0BT'Ue[XAsc;7}G=o8w}##$FLa1C;rq'qQ8!b#(;C

cno<*NYUbB/n[12KVj%ipn)Dr

*/i(a\`w5

!*/{5S0mctbC/9QsvS}x}t}TM9L"c,
<'Q%,Ol7Y'~F^S|=-yZazO=Ud*|IEhH{!}s$~9U

9@T):-=)SU

)lVMj&ZGM!o&%G
^wj7QUY]nEdz/@je"4k t5-7@r0SIO+sJKRkUFRA(~M:_nylt?Ik}=b

)^Sh5u.-
K%4KEyU)YbuZ;-T3JmM5=^arkhcU%
L~5h'R,ZQZE_|| k] @Szy)%;vQW0_4ecZmz0d'q*]67=Jo8WfZTp\{YN_;0vMzQ./YJ-]SS9BscaHC>&B\}3y]e

}=eW1( oe&l1M%35c2_K*#xpUkijFci

\JZeZdw22>o<5V8_qL~C8=Yv>5c


n-i-M5jA&z]AfLl`I7|=epSqE"]ZL#n A0$T''KSKTM

p\=$itIOU?Mgz>,"6'1g/n|e%W4>2\<E4DS\o<X<+
;qL&sRjz$*lhP5mb v-XP
`^{a$}g,9?
gXpi2{y| 7Zfj*y
l['a[xt^BZ.de^h^{*5

.ICV>w1iIDLS;T=Hd?'=f/j}F)#V.x[;UQ1T/
h#'`D>11-i[;i=PVA-5y:I

&9bN$zLbHZm-3XE~-Nm0aPadwl (zU2)([LD8hAC} lB@?"*%/U;}|J


^Jye1P8@O6'`c' OQjo@^" :,
Zs>BPA 3TXLF-TK1!k0
Bp+ZZBai,Jo3L;~=;

zC}YHKyziAqv~3
bG+/eo<@NMP`Z;vf9+tP$t,v2itpr.1U4BM7t

CW+&RJ_NR|h/[8k39MGMwG=&L,0)[c_wFx| V[Cj `v[.%aFd7Whmk~$


%mkhYjJ--, V@MPqcU2#?nolUe_EJ.YQ%\~(4fmR
NW>dH?|{l=1

L8RhLmmqgg!sW?bO&&`[x{3g/6h8x4K@4KyA&wd9z
}#fDD|6'
!8IL7t2QKTcKN:GQM!^n)gT41sNcx3
d|g>E[)D]PUK?X=,E=EbUms*bTir'Ki
wB:03LKqTIs4o_`\[[s9+I+]Aw"8J,H)H_A+rIT5kQ
%[<
-4l1xf`yJT ;`{Gfm7T6^
0|Lf} U$qHsh=6sU&Pb[EYi^m$vE_

WI2tdp6=IjCknPRFDPnVDGT+K</[ \VHEL*|5
5BHk+!Jk\jm
*Z.-Qfmv<S7; fHg9.]>.9\~E6<Eh'z\meS"l-&7h]M9
j8o
\=Ql td e2
oO%[O';,<
E[rC>"uD.$,

_O>S3+;%M/fNL,r5j4aY>m?B3NRoS-.NKV!&"?XBH!*{?h8g<$7
V^ +!J6a< tPqUWPEf-LaI<I@zyj+]e9 +-YvTdWp-Oy6'My& 1. My&=
Tdr7-M~Ckyv4>|SqDE
b~|"0=gu3kY+YZC:29%gLL

QQ$F+/CQavC826Qaq rW}iH]P
c(80
'RlvFyvV7g|q"E[wF-dE=d"6&ep^U)cGcX;bkE

E6rL-^yb~\_/i#F-J4H_U%P"[X,.M
Eucr37r:fT~HlabOrJ#A\<;NNV*>O~).=7OV~rG}u5t5dg0x 9
F-VVm8"t-j&Csb!~p&fz6~0g
&
)
m=3[#|jv\F`|t]3L E6=e$o5

KY5-5b3
'w7Tg&vMxE a?VIt4!Fd)N+C--Tv:Vnhft%:V_rF$i0(IWPHO!Azp
NAD4n&X9~Po<]^BR[w7Ev>09b%b

r/Blx3i^9/P9v&~.:yQ/ +0B}Bl;!v-}c
\tLj{4w-i&dpL^L0Y=</\&i1J\SjK
y\J54OIXrDU+x\bl=]X}5U2_"jH$czREbTa*U!UAb.Ck*Ydp%EpNb0d#q#<PLb$dU@"L\5w]gre0
GkZM F6^r\S1!6zFS[UB"`S` Gv!.FjH:'~2:

1T
blX(w$+hP;a9F\
o8-'-W+kA`E>1r1F8J[G8G~V<XkFAaSNfy^kdo
ZP8`nq^"R:i*;!Lw| |4V.o:t+_-$P
Wm{F8kCM>
$MP'c;)nHUXYYn>L\`mcU]3i7H=84{4B{uIr*\GaUClCK-ng}*!0nG@64`IdrE}qEy_drr9P%T*A2x ;.DEJ7.FaqECRB$)Dd5y5]@Ky?t)|{&\*W5N@u@#;(f4xQSSw:vhO!X;[]'Tv+,6Idoh:x/rqKO.J;gLR3j@$$n`9n

ZV'"j8LK1q!\eDBV)
5-4O/GA9#L-3Iyx,>#rmlAzYS]d
(N&'BzwT.YN@H)4H
t6Fyz1*]8V ,L6'*h!

Mdufs/D!epo0/%TVAoSMKBji+r
zjWhXz)B7RS6p_Z*Lz0H[.mE,6*8A;bZ!Z

'*yLFRWeQ>MP'-P'<X8M`l^-rPtDz f';96V"V_\

2UY:`lRpO9V(~d
p-c>`iWP<
F
4)<ST#;D.WY4T0G]4^ds|Y=R$St%:I0IBg*99Nup;&:Ane?f4t6(fNefD$
h</YC%*s%U?Il< X'
\e:cp/vyLY%NfJ=Q4L71gb-<1|F8=\3D'VzqhMmq.`y`E&mY~V=av2%lhaWEdqvQ%v9P$>h6]-rvs^(Yw>O

\L2aFU_&odp~"+MqRJD)dWl[RTGX-8k=e'W}d:#4BL5o8M6l""$K\D0cnXe%!-V-[*(b
Jc1DnD9Yw3<33o%xew>w+9JWf>@scug.hlb
,OiD.A1i.k0K]mLRj2{ wn
|,x[?w^=={nyo=0hWz8`!{>3I;hwCA=ZK{/y28C1n)RPG3%_H-vF-)'t_m$.?iAs(
;*!*l-ioi?l%^8{{@z> >D,
OW2LIPq3lNSsN|A ymkw
5?)WcY6`Hg^5O\6J]H3Fxwu=]wc]v9(X+X
si

ZOimW{etz-u[p"7

PHOY4y2,zK-6SiZy([8/Y?f!BM'
t%-5-3]BzKci?hYWeUmZk]TI=/[K_b}bn)O>
3P/tR31zP;-k7NSId)-R P)DzTo(ElJ*uL3r!/IkmoLK'c1~7"fYe%SlZ;&_(fc"83{ -.f='TM]sg`gkEUBb
qg.0 GgP]8&SE)fu~Dgotv
JI.=e
*X={OI *D
[HUK;'
Ix`MDXxI<P=r4=Q:'No)nO3Z@glqOhc!jOj\-F)q17HX#`(_M3HX#QDgm8]r`MqF6p#P`Mq$h1

Wc/Y
(/
=[~Ntt$:j;+l{I
nb/9UCx1yvEP}>Dzk7~;=-
+6\R8N8`f;#!5JlJ_v?rN' WiIglz2,*EO/#*sp7,-Z{wAY*`*9y@VrmV(v*aT9Jh%1k%GSy

@_35-YibE'X
qnI9B8]vrbx9wB+,SYTAv%9\[p/pcf+%yTzg_0^XO/7}sX0*#QD(@69HI@V](?&%P~n x~QN

KfT9s

8u!d[3K^v8saJ.a}q:_&l;z\)Jl;-Q7P"yz`'[f|CuT-yudw~
6-\@vkCVdmIHtFi3_=n-26u%q5;K-Z|.B@^8Tq
'fQpH/r,/<n5:p3-=,[6LD$ eq(@XamSqKZ'u1$

/V>B
OBk+wj1Vj"*;&7s,^$|(iImJ\p0~4>0q$~(34Z}[IbPs9
0st2j(R"Gc8/{Wiocn
8$l|,Y.icp?r
``:$tFDsw96&mSiGI7'3aw
b'QeTxIU9_7Xw^q=il{0R7-iun+!}[C7,

8gN m@2tC&=Jl@(6RB$v2i

pH{HF5Nj#s@TQ#z/z3h=m{D0wIhH.0{jf_=C'{
ak,3v&Cs@Hg3_V8D(L4+:*Yh#oCGCxo\B(*n9^T%o^fV8-S3^i
WlGr)?)rhoS]8$ sx0aXZIQ?]<n8%qLD@}@_v=E\2`O2
pDU 7F:+"z0q
xu,xPNUf' <(~K

o8+<]$(,uGI7:)7%IIv;8U'9Sn/sX(-J,7,
=Bn
pN/PL_s|
vy;BWjRS="oJ1bXh@c0&_G_/88mxBrdfV"Rbgi8#1.OFvpgX'ZzJ'^vy.5_:

R~~m4dSZJR/? )F.C4^:c8^zLtm{ 3
\8p=XWdWq5VN'w3 t&Gi[-.C`,*csm2Kmm
u T1/3>F >'Z4#jHh{8o$a@8C f
DjMW>3^MI:+NmuLG\d*8`8SDNkE(BlC!U!!GQN
Q_!ikG/2>~F*`u``ntyY|nCI#t_4"A}:!:~yNPREMT49$nX
9CpHosqp >]QKKwk?qpKo
Sj}^v.PpxzFU=QbnOyv3.4m F.@#%M8!_=~D-YoJ?EnuW:H>!v]p2"(=2AS

LOk;{&y4{4W@zg,mz-O%C:|D==BTK<
9;GZ&#T'w9.k`6+c>^#5%
h+0[1ecL
w+ ?uzb}lM%~,n'OwhZjm#}Vv';:ohOI~nqQG@@8 ?lOA%Aw5&`\9+jk

}Otr{jV-GxkR]--7=`6ZDHBt))I% [a486QWiu)QlzkcAw;n140ji-vaLM6a3cbN2\
w~
vq ZF{tw5Vuq;5paD\_z'Y

.@>HFJtoE:[m4:`w!dur}

ra5/b-k?n/,qmNb|<d'~yiyncV|#-Y1k_\~w&v^aT1}:pM<9Z=DOupfaHR3~6{v3Pt$G%YW{=-;o</XYBz^/3Wn4`+CI`Yd?iD? m
!Iz1-K.o@C7v~9P=^n+G4--TvH@nIO_iU^
F7~!~R?!CR<^1|/Jg@pd`E A8E

$-Jk&fX]"9~e[kyUktoYS5HI$!JXnpP=b0#5>S6:[FN8Yhnw[6

o% B*$w1Vq6

f(,S\K>-~&mJ.Ob C254?_/n=I/NH8/p

=pR.6":b[VBmo(a'oEH2eVKC{h17MqZ2|n#?0ii,,N;X"^$D<"X2|#D|$G8Q?}n5F#~fBh:ifH
~%3s#~KE~3P?jl,qHz wC3!i.D|}E";c5->-R%H!jR8eB
.?&

<?u ScX(nE%"?&!q
q|\cOj<vi,
-R:I_xJ-{chX'9?cfkBp$2)dxXGe/2BgdxeKdxJ)|^X{/m;2QvyaNm2'E2,oa0^Sxb/o2t0

2l:<)zR!'q/i,l_)yo,:4&1D"lE>

n]%A|{i,qe3bM`&0}R_Ccy>M=(wOEzGA89-G|D.CO?H}z(mg!>E|A3i +xwYLO_9%N?L+O"~>H
?b*|mXco{~y\cfv/!_ -g,f?i3fBH
O}X}H?q?AOh~H|~+M>i^aLkE/9-"<b\|4.E]"@?b>lQb8cqKR

o=cf?1)~k5XW~_&Zs1a~z.;hfBx{-; XS1ni:LtG|~{GntnnGc,K/l6s=z^D,+F]f^>tG;u7E
~x'r~m|:czX}~gFq8=~fc=

-f_\LGPRlrfu?:^3[zASon aqx'E>w{
F?jG9z9GLk3}OmG@ =fmo.z{>nCmwQoM_?z/+-Gv
MzV|*.!\WR7nDr>6SpG[]hC?GRs_:3K$|zwcE?c
y.BxcC)cE?Ek/iIc|iG}'d2&g**iy@hT_qR\U&+F%ng;(r6z|n=/Q)p_~:e$Oh_
[&|^'0|%CY T+?TS~]9dL\6[4{&NmI.<zENrrN~`'|piSi+,7>OSJfUN>t-x[=SdL=tuSnr<9SLygJ|FZEdG2^{FFB7g;2|-3FffZuC3+PCYz5P+->=*gjNE-9w<JG94]4[w_Sy;1SvS?zi/N{{Z{`3|Lr%n*?1
1l;(
z+9 2xdG&|L|Dw'f*Ch7QN11GX-T-&yT_%eDn

GI"
IHsqqq}.*yAeZ5
liu&?y+I@
p
~2A+=R,k#t1lZ-S,LK%2rf|rz_Z~ey-[z,,-Z,Yi9j9mIOOg>Lc
FKUpwZkR\N@
x<nb+PTj]iw`s=]@s{MfT}Nq+Tx
URWy?+y\lP{(s9)fX

lwzU7N5;#-T KN(OpyV(- x>v{S5_O0@xxj6Ac@c4:wk~zj47]y1MZ=Svil9=`;L5-1L5v/a

Nx5ANu,.Q}^`S]
UO(@A`}Z%>{

;]Vl[(\FXlg"uNlUwPi@dUuDrgc

AFPj~f#qA[@~UU3z.C=@54 gw7JY)s{R>w/F+W}PWNw"m+

{~VJ@v](J Kcsc
FvP<{L1=X,dc&-!t2w|$dNm-I~ZW-NkHoA}NC=n8x)dTe*XB=>g`JUIRuYr"[VWVT,).+\Z
'BxbwUbtg@mW:9"v%WaP
BsTN'Mr<yt@SR:;4<%BX"2w@.!6.W]@b<X{ck?8{r~

B\,/+pV8Nr,gVtssNu4*:<-3=>),vt-{}$(9hw

b
;m=Qb=l\^*
+g*/;!)&2
J?AAO
fe1?]'C &#].XAee1YZjy<1?U Iu[YUqS\Dr@846&F7CQ]vDa[D'<$1.CC-6ER4"#]

\kPG-U|8)U%U_UQ4O@$W@`y~xsHnr9Qb>j
k{[1k*"W5K)%Y$* ' g.CR

N9~nln.5'2N7Cw?4AtAs8-dv/mxht_k e]&"a FM3BSFb@$$B


DM"?R)4d&`_uFghF

yEAL

3,Jh|No@$I@\m"![l3J!Zt}^$Dz@

~r#[;qJ&,KNK+^($y,/v<c4tpy\PNz)TZm"5'q3CB(ye8CZ@Hjz]?'s

sKUhzXzoe#v;|-AMezVow>7G[6_paG]M%8WCKHgBV(9:@
U.-8rG44@tT79/{I}c~!eZ
6s-*VK29:< % VuQE -nH^RY">
V)&09(W.'`9"R*4\i's!*^m~!s.:HShaLDa<
x@f'0<lEsgUK-RDxov`TAek
&'gN=.g7L<"Wz t5` -HP#+03L8y88)h-A

A66nr9c_df0."yK$0%<TZ46N>lh1j Rf8faj

T[3v#W9I5H4,[}RE2%4q K.Tr88TPXSt7h
>'S%]q$d5XYl$M.yFHR+$ `?W2(0yW!Kyr

:*zCJ*N"F u
fT?\j72`X(_M8B@ULD ZZdX-JP!ImI?G
;B \"0Ez$3$3DN!9/2]G-Keg+/^lz\BQL&I .*REh[/S\DDp/
bYW.-z6~B6WnS5)1l@aMAN=I0<*<*_}8s<E -q1CKYA*y4v
yhsuWFZXb5-]z
pcPQ2LEtJZ'\._GdrCH6d#\`yPLB


4](olhp&\^JV
_BRyhFLcS-GH\J(j\'f\glA)(F)cy'^x\
_toMBBYpkRUH%V.*Rl2E7sCa)`;rW0f.z+|8v!
ld;g\/d.XZ(j=&V,*]1R"\N%qPNwpCAz
cUB]2HT~8A
#O9)qeXt7|]IebaML)/<}/pjCU2L--xI$ xZB_&wid\8r,q_>
?qT.Z.Z<^6lz'

C2C1H%shK2*7~qcKl)iyPDMUzH"4
E[ @d*t:9:r%L E2

EE:a72esGz$aJo-Y
r't\/F*a>y)H!>}.u8b%\DP=/ fx^9.W
G8PNON$-uyn3f
0ne0z^"AaK['1L*\{r;XZ2:'A*
'2e'-8u8'yJ*L^!(a/5ULTK9qr<&M[mNrfZ{=EZ$ hHF43

!V
%E5rL~~c&Hg.kPE224x?H3Z40SnWmFKm~D?9fm7P%Emr-Ll]]-cr6&r>[
v`nbW^n53X*$B- 3>NGTn17
#Xj*(Csp/Ji+u-D@g`[vhtK1\&HL%D'<YE%
hWSVB43(*Yy@pc%Qo)"q"'U,.]>K-]dIyQ!AJ-NuP@>pG`w:iDE_A

NIUWPd41mP5,\,{Y-7$HMNeQ aq
&C"arrT\]?>-5}9T-uS#0\MMe@ydXs'qj@

W2WW
^aP^L:.^s$ysL n9}9L2^ C=g

u88D6o++V-)(WpS

GjIYEAM#-_ip

6}/<4n)J0DqE_3G#uin

i|C{@&|

/jL(;_;k/O-;o]h'm'jOOv|C|;yYFjv+{-hx9\5yg/(-[v(O+
8>H<o{pT|QOXtc0cx?2a`#6EAv&Q ,?lgMzsb'6CkxPK!WMb
HOSTS.SAMmAo0v"C[`]bz zfe:*(e'iA6={vm+{

z}M,d-hfs]m..z_8B5<gNBoRe+SUFt;naXDH-KhrU

=xH:c
DG\U4.(&h9id(3gzl9:S*1aJN#Qvq@:s$),GP8%
6SGMp9gG)?jER$
OONX}5[eeONS].Y]xPK!WI[+WIPCONFIG.EXE

xT7L!qC *LEZjZ/k5&'T-\z)^l-

bb-F&s>g2
}9g^k'?6},17S,^wW`O@;
e|@1#`) &n*mp8t10(~l69^~eclHEixL~ u0,@3`Ogl4

8\v2L.^-";@-Pt/;2L d@`l8$6Xz

&
F

R59p-<AzL'HfY&H(NN`mv>A7`i

|\ E
R`3d/xX',Xl>4`0ejv9KnU/0%1gw?Ks:k\yJppH7o?0V~^^jz^nFA,'@y@:

yy?
b{^~xx8|
1_c!&'g*^FJLu8|A q&66]-0aW@i;P`LA&:`{4bl)fCaS%NH-0Va&OI;q&?'?~fWV

(V?~LrR_Z hdK7W6-5

e|4;j ,n:A/a9 XJGe@1p0P$`<]`$00 h'{@#x

[M@6f_@@Hq/&+*Of`0X,X2XMZ6c}C$SP,M.<3DR,v;;`'~b~

\?L^-X:pU,?~
@3-Xzw.pH2gv9J|
F9(6ib

J3c
yivd,r<>(|XurTfU>Gz'K-,"sT6MG)n2MrR6)M[1"@[%hoZa,=O7iiZ&Y1eDK]NXf8;Vk3kS8Ht%QS5eHmy
M;M'uRCr?~L!ay<|-}++cZIVvax[UT_wH|b*QsT

osZI4bW ;E2kq3y-nZQiX#+
!_]Fzo( [+EX%9uTFF+)(i\BwtI*_?SYfj

O(V-b\&6t0{-LtoC92yUM5Rby.;%|E'M1+C1c+^o"9HNs t/TI%Ef0FuifdPB_k%v-YXW2dUKkR_(I-&ZU_qVaG$^D[c
)@}~rd}hs
>!Lw7LA,=c4,\$E3(*f7
6a-ARU_KH95%$2F> sze;Ff(EF".wgs!`IDEO]'U)^W.Hfh
:D4!|rBxYw"U'P+b^D>oO7j(SD+9|/uRM,8>^

P(Pz7-AFSosplblts[;nj0'a*+vi>&v%
-d)Zua r$F]deTKNw&
uj<",]?_?i"hCAKWvS/#~h6C<9
6I-i9+V9G9g(p9g;*:?h#Y+)y)3nqQ!Api*13^b[nD'F.cyJ{1DR

K(#SSv&,G-\``^TvRIT3!3X0U/.|//]UJ#6
-H.]t}DbEWNB.]S%jiS-5MCk~&#3I^
S"VfGO"W&Lc{PM{<wZV*D9S-j*-}X0QZ7S+i48v)tfJk&mH!*d5~!b"Ou]0]36U&jW@J^^w/_^6*Y_ZuT)VVM#cL.;nl'-z.lRpdp)6@YfKE<bKGO=-}]{;.O


H}Y<5kYeOn/=]szgG+t!u8]9|jwNwi)B4l?],H=,t6)v"]fEU|"uSSg^mf37eaAmZ
?x^x'6Ay41A9NwTAzkmT}BJm`>k%m&hyoLncFK!bYM$5:PIRy?
ZJFxRQ*!y8u[xGA" ,1oVrH+i?J

VM%p'n/lH\T,r5$yr4(]43|5Q LB #GF{rdg;@*IT)/|/^]ZTUzcV*
RN4(gIst'"wXU*r^EyQ\jzPoC}\\6KkX,}-5eYO~ 6z]T9'?o+~LuL5HMMDH}VqBU:\[Q9w=e
\(c|!Y<=*/E&^N.=OX|L-stvHzml_#|uzf$YE'R^f[fH&0,)hGe:|cs hxu856:"%~*EV?XDH(=sL4-q1^3^ep^AsO

FSOw{ZV}/re~CTHB35TPnP~iDjTOF*}NWPy>r QX|K`M&04jB%Lj@Va<h
dY~d0e-Xn(1}Jc5`ZK)PjcBxB|wWj;o 4}dQG!
ghd_|"&+i3FTZSAI
T3X3It7$0[YRd-KI!#g*z*/@i=U MT"1EA
4=:)r\&IIsDqI`2V
(jR-}GLZlk}Sjal71M?|dtVY&7|[cc9C>-Zr`fF7u/QK#Zk=yis[5sF7+4te)f=O 2I'KFr-|Wc%qIm@=1-$C+q%_l$Zlr
qK$l^Xf0b<ixsF;%9KZ(]F:KC<9,W}-vV2{
NPO.)Ix7z=SnO1h!3+LpDm.,_%3mAHQ|k3Dyiy^/x3D-,|sdN{'WlE0fTbi$L=5`_+gKI,O`JVL<C9

u2ic*,7K-zkqDZ;
|Hi:'+mS4pho{1j58Kbq&0hLnL2d,R
b>NbSm\TkC
7u#gY-H
N&W)beB4P}yeN1K&c%Bb3.%Nj}hrRAGuNTpVt
KG,pEOF1{h;6_0rq.Jg<8+K6)QF!0q0

F4lzP(x68,|b.N>\>5R7O^ Y_
YcpsK*AQ/)By7o~]"f
-^iPS,A%U
u-4Dx5-y,i$P74-[.Q@63VN"DdZ<=&'a~-F*!*pPL{

zumAf*oG-c7A|"T3
*WMLIQ

S0(%&wGL:(Ve"!d{}bX51@BLzEf"nUb"vIlx

XFb

=w[-]N}9C#PU8
XfyN8:kj6J+s6}R^cZV^1,{K4PI^5v?\+~Ox# YYOgkBkG4kmB-755h5rL2FEd:B64R&BEh9Y
'SgKO]33AtWLTsX?&J\FB0a)6`
$GkRO1"~Gk6epI9M 5M"[gC {u\T@;X.\^2)V8LHLO\:UX>=%*bz|zz9^1%Z$#-$N C}dz$Jv8iB,*mLoUf{xj<A$9|f"Q`-}B"O>
k5UU?+0u/=GohlfqOv"nW jc#lQ"`bcY}
r][G1z(<r>=[ii)9[Y||J3M @bU{I6.w9SjxTyX
0kLp#BXKQ/4w-c]GbD4Af6NrgPx##%iC_.8dtZmZ*[-J2|*C|C)z
3{'RH<~B3S^KK9q6h}'.Y&IJHD+D{mWbilUCD/Jl l2?t^ZA#JHZW"jj93|(>_-fX
UC
<26Dsz#-tKg4NA+4ntq&j#wt1oLwod1'AT,<,),y"Hw7Ktpz5oN>/]9GCk)_jepavu8l)Kw9-ie|N
__Nd+hjIm$:nbn--F2u,'I)KO#KBuN.#X'BYtIgO=v
qe(EXN
\Z ?_ @r&.?@Wrc{8
vM'H!O3+~Vl_Duc"b]?T?->E".6Z=Unn9wR2S5fY,7*fQg^ju!e'@

q<j4 a|O6@d#*}q
hNY?>q},-cN24jK%K<FeLmQ]Pi?-,Hc`\jiR~c1j
sP--65Vv]|
8.IT.cK73v~SBeR|.(Wu?xv!,-Jbd=X7G~2Xn3Wo9uuT5z67r[n-[F-3h5u+

WHmBc^[#^WY64Xt-#]!(n8h[ $0'u#p;}@-$Y#-kXS`ei\ZHWxDQ.

-k|vpwU)w9
e[K)pi$&F"4l]{W D7-WTs`
&V+9KkQ+M&2CBgKOd J&>a,*uwj,\R}g4}crW\JJ('eTft1AW7~;_U=Y)Od_9wNylg!EEUDf-jIK(T|*+#dMO#'BLa+1g*79O&+gwW-<Bm6<5xTWo9K+

[|~3}D%;#88w#(i/<df
v`rkMU<"|gssnX"}%Ri^L~:HG9A~B$$oB

X" YTQ=CAB+aCu`CD35!<'Bl:
A^<K?,4:)=6?.<<\HhEe",l~x-ogS;e4A<icq&R/Rvxp4x9\**XcW4XD&a.qoII'3*?)QA5F64_6L"w

xvw0%R!"WVQ$@$,5KQl9 9<~--+7:~.}_mwj P?4<pVbER5T/YV?-D/RwO7',PXqu8Jb


K#Wu`S-q / F+kQTPiBBH;
&J0w}VHV45htxISErZuJ4GN^i#FWB :$3=VrX<@
ZC>xJ-<b:/b!7+j($9Y_y~}!Ql|mDkU;Mak7CiVH1I2YzzqSX_mB!P;:$?$w~JYF

VL2vf\U
xtKb&J\b-h$0nw
y[:Tg0Q+
y&]<2!7ySO Wm
N@0w!a5Z Jw4g\Yi+u~V@1=HOiyt,
mR{>Tz
8$pzaO++t@I4o-e|-EJ48KWe:%o!!
M)Qr0<~RB0*t?B<b|m

'd<|
!FaLmP8Fmw%1eGCs,[",H9MaRH1dYc5#6Al~@Z5"-y-ODw!\7-fRW<UTw]O

3>Xr3G$ o" 7jKab||pl!}u=}D

73)OZd?5

wUwcU+&o$Z-C^PX^EqF'e
M=P>XL h=x
*6XCScU"tV+)J,%3A8Z*x=pPhlE]|o8&DGFLIN`Z
-w7w]c*|##By M={NJbzwm
j$JB 1Q}
GY[lv:P%~N4<Wt=h:(%05QN=%h&MfS1{hLc+X&KT).Ku[*,KWXe4L

D $(X=&QD<zvOp
JP4\?FZ_&V-t((~1_{V/}e5((`+]\.72+@LV3{/gPb
<`bL5K+,2o_ Wh7VU+PvjdCOH:&z)IhUL(:kgm"6a~S;)63P
QY~?!i@VL@fDALqP$5l6b`"&a]vO\}Wt)-e_:
es8a^`OwY9U ,*ty-syDp*
)J_FMHP1

.:a2-6`*Nl.]
h

]-Wi\[[T)uy`Gozu-MmYlpW"..$%_pnEf(wbj7r+6*oKt]LNnK$#h9PvEJw.?6A7GKy5-`-[?*Ej3@>g=.G9~hbL{JndZ:HL8ccM>KW-w\<

X^BJ0z[aUU=N1ve%
(WI_^zT_p#',5(;+}'AqF?;BMxH'X F,lXbVe8/M$nDps
D]QW<TE1
Sid"
n:BTz?00cHPxfTHcK6MZR4J]ihyx?-Ek:dnvF17MWWXaXvApu`V4fD?%bYV%W1W.j<B(;-\b&1L

9Jc

3g2\SHG(}}OJ~##

4{]YnXaa]^XwEy}ednM'goi !3V}X{~(':B5rOt|m(;u}j?~3\u-Y1Xg8n$Bv6w_)U7N /

rE_1iOy>(`HDpLy
g1w5aAysjw?z6!y 8J)/z%
BXvzZ<-'&j^VS.0"76\~+;]-=YF##V8-eOg'{lg5={7{0ryq7;IZ?>fU{o)/`:wxQb!q(,PiX[%l9Sz<nN)+]UK-U:~fH7

b~72mLw6-H]^aQOsxWrO@c6!/}3_w;1o
{LGO[_-/:UZ}nv<,\5+4m[GJf
^P(W8?UHIQ$Ab$U0?
3^m}Gcn2"h-24i2iM:M\v*{J-rSVL<ML8`~7F~@?wc|)u{ucWGw,FyJG1
x[Ig#9&ystZH[LP)XV}Q<
)"Xe ~k.a&=zvWbZ-b[XTn=X@l{l{]V`c~?;tS,DuqBJCxm@UvG<ni g.
q|(I{
<]u*s8i&/6[q_^YE]3Q>o

-Y6mY0r {y%n-\"Qrw04>j>1%6c[`
cmTOWu"y*m WLs
)wUa'7fUZ*}-em*S~I7h-Ow
3P2&4~
Cm@1Sd"ZWzM4:r?~,0"MEQh{]Y
xAZeuIVASL,'+cr|Ux_Rq\<QlCG+Jg`*L}|Z?m(9v18@]3e+}EX4MrEpm!xLI2YZ6{=}
2o7nu_~Z.&nMm?05^<ZAD4mGtZla#g}[]]oRX8<EFq;\KrqA|2{
_
ce
L5|mAmNiLX
os ;:^Iabu5d}Z8t #0w4f4DDiT(|m6^amT6
{vhngCh^f-/Cl2-!S^-
ffx$65nuMb;8Rj?99<E)\D?:C72;B3<z
XXd9/r XWR}d6@S#uO-1af#pt94S9`P5S:a9Fpk-*WBe39OF'OdWU*_>>6HqNz)=3`U\OK4t~CdB1r
5iRmCG=NgxQQjyM?p_W9?_V=DC{c?nis44z7mQtkb`>

%~#!K{+\KIb^x+R\{VdrIKS&j6U^&;7u>
|Cn#-(u.Zal7Bv*R%?klq2-PD0rEX
qLL6Vk7 5QS=j2OgaNs\U[|P/aZRqC=ZWSr@:IkK9wGJ
'1C|
!
bFZJsL?1L"O@ a;>>xB)ok:
M;'/\q54O|D'cihO>7~
y242tW.aPcB1h+)Vp=g.kQIYqb(rnR*|
h9&Bol6'.B)\~'*F[|k(FcggC:xe}H8OwbyFg'dsh Gx32#~*(qWLAXSr<@Gq
dYp I
RCV]_S[Ya?0V4_t-F@6~>5Ip:ZJw,?HMJ7)
OX|]Xh]cwbEwHr}y-DwNFefTS9O6

lpfoR[~l8YY1Ik<hA5O.yL2
2:FOlD
q,};'m_O;=J+-79}__xs^ZXs.t?N{ycOSM8qPw~O4UvAJ(]qPqDzqQml$\0

?
<b/Wiy!!9xw=c*mw__3?1ol[Q2Er+q6T:os~=,o4<mN:S]{k;0?osnl9sZS;GO_vHy=ZwHNM;pJbtkw<i

_}&Xv|&dE/7-v219|%-PaL;r0LB%bl$
k}Ok"BzLc,&

$/i'3(>whAhDY8QL}bx>2,3K!)S5jBqEX(<u1K=y&Rq@,cNz:Pq,k6=`k9,U.S^L"Fi}*:/_>Y2K

az/QpL(':k&61n|w=*i$A[b@F|D%P
USdMyE:k2-VOg2c3d+|WwtQbuqoS<|{g9{o62"C}h9)>n_]n-UPIy<yZJ)ZdN~
oc~tu/O
3!
s64Mu"e\>S~z(J-:I54]8?X;trE`i

\~jr/~Pu[?pcN~khS

#^K~cGd0"5Is|A2]rG0xGLSUP<g-Ux1"
|J)ig_$3>U|#0@OXaMx$02
oX~LxhJd>"Wx-
gS,Qj{tZv
jZ[ZRTR=}9tS;GG<]V>SLzT_G3t-,x"&p=;UA ke;A1XEo@N$+M(V1V

${,6o Vo,ZK)4==O6&10T^

lNk*(?Ytm3~s>TzTy?2!R.]4nK#;O
H;3kbd;2.hpAh5;Odc}zi3o`r)`]pq<hzZ~AO#VWsnj0mx\8V9j>]Syq} t|4;]4X24et
NqGBamr~6v;l$OsVU>W$vs<[ pT
5o'33#_R81)d76{7jGqJr,`2?CsB
|@]lHX~evdBI%E\d3PCt>IdAV]1|OGgM-cV%oZj

L-3>h~D/EiUUGBHrX#^S2N?:QTq~I*A(N^ZDq^X+*=dm}1^Is*PQ?rtA[O7YlGl&y`|;D;MgI-[C$Aj}5wz,{RhLx{gw$\J2r)gr%/@xv3!{c

cI2_$+)];.4&:6,jKxGPGy
tvXF8e&lH-mCnH>$fk=T@FB\ i=f4,e9r-f`(~U0IJ{vM'

-QnBMaUd@l3nohseFEoY'7Y>w!w'<[Oq*@O~zjp
[}"GgO0U[
C79YQ12<Co'_*`>m8[+tQTUn|v~RtyP3${+c-:#~AS;~CDt8b6D)cPf>#hub?FhcUpEe
ksw
t$6{M;c-Ah(*AGB@j
XzS}U+,@4B$WgI
/n_[f-^45*,W"tDJ
G2z;s-7`%^Mifqi $M

F?Ar&tlu
#PU-6{eUjWT_)773
svl-n4%3MoN j\s{-lk+9GeC'}yy%TdNR4##c#*iL=g_sTYjPWc

9u9u8?d8cv;<rg%L)3a2u&j=!l-n4Ym09B+*llafv5NlDoD5x-)R4#w-?ij*

3fD0OMwo5f$l$Q

Aq(n-\`dJu2md(f':bxdbzoko{%mx9[:bF[{
9:Js[)Og-mCkLo*=I[XxG3rcEj{
U%Sf}A>u^gN`el<Y38H_{z&!L@Ge`{`d2_9Y]-sf

LZ4/ClmX)#.yX[[Y1:f
J3l5Xx9{#.@nubTE&/n)1sn\zo0-'^/+?:DkZyF|y.6]]
o%)7'X5Cz [mo
&~,
;hZa^Q<3`ID%9`i;|-gV
]Us?.5VY}d
H?9i5hTHWn:+v(yFAr-5}o%EVWvZMIB
;XXZUqWHoJwNN>?RJ/'4hm>@?l`wBgK_lgJAw0X)EN~>Lu%s+9K?/EeC AAtoJ
]e$&+/fFc#W"EOIFQx/fu-[2 -/@;1
HQLtB41E-OzeR-RITg8ygp{+ /ux{cPN\jQQb{gi

tXSSepnJ~?!iQ1Q{vZ~"1W !bJt?i-3%-MW/Q/f6#M)`C=c-B&6;o'%Iox;xEn
n\(T<my&;DOO+jJ*)r
# vVt\(ae'ZNGJH~O&\#-nO=}
a(D@zKY$z]Az+@ll;WltP#)WmW
k_8K]QPSJ[a@N%NkBItPb)li'OM==zw=/\Kz

O"cON3oU=P?<5`mHn0P3*0]o$ZOKwW,UVMkK,)
vgtO_nIJ<b-Y&J: |\)o
)k-X*Zw%y:`,)`{ Dg#:O6@u6GHo.D0T5|8`,,lnkk}>k^k?vt7rs3;XdrgQ-ay.57>gF 59;
0^}]N+`}
k;-x<aX|x&>KD>[:H {<]5r-c/ml"

c)]y1!(ikJ+<l8$g2Lzk}WPh+?>#qIm\?y!SpURPP9S?!AjjBXf>-:$Q=?1A%h
Qs
8iRJnSaO.=doj-l]b*dEOU$<QU/6zEW)!T7AZVB!JO,$k2WM
5n_O\.oPX%_(5r$
c" 4
)iNFT4Kjt*-^]zwW
]D|D-{Dxz>WP)j_rng9;LO]9oVa}o?NvX-z!ze{u5FAjwMPDljJShj&^\"yY
B(U'ETHoAZ\*.FP2j};5?KZgU.jRjnWyu8
aOR["m"D_je$BCZ5xP^Aq"QO^
9U
&bk|P91Gj}rMqI$/EXcy>%"?YYdvSpzT1Go'W(pKrge
|,Z%ka1KQ>bS/r}522$Us?'1<D:rWVg}VzdEq!Q5UYT3;!zji*vO<
wbV<8oB.Z(9{0sjBtdQ`9Cf=nPDs8r0Tc-B^@+:B%z|Tcj
gDSa={,q
e}^V,Y)ef=y}qwymtlmz[/rsXagrflXqm=w"q/{9n
W,;SHX^:eeV0IlQEZ+rNgT=i4HG|4u2''_~ES


C'F47h+|xg
zMA-s-iLdc-/`K6y}';bP!<V!N.B06;Ia{8%m=W0YBO?]-nJ='VnG%biFgjv36P0L:1Aafk{x5W/=O=^_WV(ZS5U.y-(~EWQX
eRS[W`{e=.f._r8Hn9TU

EKfhO
Ru*XM=^1ZkNk/y]"$<.U (g".$Jz'-KST
|b
|{j]5
>9||Dj>Qd>|Ed1<ARIFT<@FH--rbrW<X{x2[v]`hAenqq\1\"rZrZEZ*FAq%\K$7o
n-3pk;878wq\m89p1k;XwKpEr- 7{pd+/GqjSyCz
9;O`6knn=|e%^
s!a
sc"-X0JY?EYDcYygM
CL8cNNN]_]A9-le3,_~Y,0r;z4-G<uctM6qi=R_\*.&e;-jume

.,NTQW,XS-Ylm}wn
e U XxX:y
zgWOX$"j_*ws ->/-}

5k+ZV
1@dnDKVUj

i#]:+<MB3yTy*PK!Wlx

LICENSE.TXTV]s}@vdo$}(?TG$`%7?g9gBT,EP='(x<N2$$K

b&*M0KHe|*i@He^qX'VH|z,
^M*S7F) Z4nKamF3]mTXb^2noC|L@7pGt?^+}w8jR[dD!mP+iC6g0
'~#7vSG/xxi`0-36CQ+Gt^O6CtV#--lkjlw5-I-- -w5#6<esE$bJNtp_^)n{[mvhSw};e##`v<q^\tgl$9w_]z9).v}L;`|-zq-:TzX!X-|;'+Nc,X{'ONFnn"fpgO$cr! #a0 38a3OI2;m#h]645Jka@1|juFJuz+z9mWXE`-<6T^Z(5M5?xap?=%5;{tFD2gOJSfV$?**Dd9l&(2qxVK+")K(aq)f

c4dU,(%"~!W
w,LT<^Lr%u|9cr3Ue+gR3CA5Y3"yIDtQ^$"i!-JRv GU#Q#

<!VqDE%*L ,}Ir+D8/D*&P*"iiUI
6_P`=FH
'N1LB9KG1G d%-_St@W,3HJO\YA3[zmg^Qz[$~R.?e/}-wSOTr--T7*\:S/@J|D

_D:1}|Za[{qIB9)7-82i-zCn[0Wy$TsL+x?E;}|i{mv3=Bg@~hb{o$*PK!W,`WxLMHOSTS.SAMuVo6>`>KWkCb@(-[b]Il"4)r9b:iV=di3I$?tF_X"84JteX. :QAowWP
_#|5yeM8x\^aHa%[]6Mm_44-a1dq=%7it
t,za0wlBC\-YyE9!-TQj`Hr`j
MZiZ/pq5,Fj VV-*PR$f"%i'uyAM*)eva47"IIcX'#8zPO3
%"FPiyIPC#*!h=s'x))it

TrN,i'zS~WU98`#`Zzy/^h9|"Cz|>~8m
8:I?gp0Ek8Fi>SmcE!qiFhJ)(4b NzqY~4\m("=Zc8l

H$q4hV{K(k3eF\J]F'B*VRbl9Fncel&-u-J`mv=HaQ;(SzJ/N-Fs;B4=#bNc;ZqGW^IRAoC{eJuh=M 3+8oX

x@.tND)Q%'.O
5
L |wPcNdUCG@V|cg=
i`
qV%{RcM%ZJAs[b1.-<8~ pxYwV.VyrBud[9JPDZQb%^
.U[z<ZT&55UeY

ZK!-6vZ-e~[-NlQ"W#"u@|!Nbo'Gpf'8|0pF_NNqom
^Q-kL*'[3NLFpa<=i%9XxmCY0[k1&1Ou

w!6^B_{t=gf_`v7-:>
l5nQ*,TgPK!WR3bxMSTCP32.DEFuOo0xlRisT ?O?^^v6piZ#7

D?}ZF9
}b6P]X|}C8x*;
Yem*!Bb55Mij6mt)0k!u/f@N[|3h&g4(
#\Ldj1P$IPQzBS.LA;KC:]9T}C.2

rZIUk;bqh"M8e).}]tE2},!_Ya:\g|P
j
PK!WhIk}MTCPIP32.HLPty`8<}n6mk{4wzwi4Fhl\d@9Tn<PP[+*\r&s<3<<TA

T0T`X8C98nN33gg)gg%gm]/8G89'99p.p.sp(\&Wr(7ru\mvrp#\Cy

<ySxx3yxyxy>};wweUu
#\$ID\D
ZCG!#{C1b~*?W-q|'Ss+?OA ]
*A E`GO_~&Kp[H@T1`1yCceU5k$n{/}w:.SX!4-fapp-p=GO_/

^>>CK?W@<- L@2r

k
$PD<QID""%jDaQD4_\-N^+q8Y&KJqX\&63IKLjHjJ4>
Kx
IKM>|>M9er)SIBJ
RETUjE.6:2-:5U~z(S^Mz7Q*@QALt>]@h|8-%-#mH<MVKMkHkI6.JMi}/`.]M'+
u`KWN?M?c?J1!#15cv2x'c[=_d.2nf2i[2fIRg5d)K]=2-=ggg^Jf#`d}#^@6)14\'+Ujs[ryyYy<s%=oE5C-Cvt!{%?6_?<L|w/;reI

$N-3K~4IZ/c?RX/jdV|&NO~I)tD^,Mzy|!/W7o,#B~\~J~FOu(bILEB(PT*L
bbSP<xIZ^bbbb ~=d(Xe2[)U*EJQ ))[nerk()?Q~<UV^T^SUUU*^R
QUERVeR&(s*jG5U5[5OerUvNSV]
)jW'QuZ.Q|"rkw{G_/w^A|ARAz VR`/*L.Y7
6l-`/VZ!P\V8 pD0X8pfW_+PnG*<Q]?^_x\(%
)RiF/rufXheE-QP7Eg~+N"Y/5ebkq)3RNG{,>S|b_7?*&iXM&YhTVcilHX]hpT"JzfNa3>%Um}
\(AJJEIKG$T.U2dQK*R/J|]}%WJ,WJRA4--KK+JQcK`itF,]StSG{J/=YSJ^-Y Qe
e)ee2yL[f,Z6[6lZeV^lSO/;UvBerqyZyn\[n.V\yG_._U|G'.R?
zB\Q!-(-WX+TL^1ba+UlThZYPYV-4T++GWtWNU+U[ rq5*|r[T~^yD*ZyA%TEbVU**JR**-UZrW&UWjyuUTUjNV}_sU_UWnT-z\kiZ6V *ZNuh;-

kjghhk_==VO{Qv@K1u1x].]R^Ws&&f^--mDW_wL%_;:g}>^Oz7.=#-{_O__cPCAi(5TCaaaahdx00aSAW^i
R9FXa4-aN8883
sK76L\Tb4MfSiii`iiUZfc_MWLLLj^::ZQ]\]^--n[Q=zjT/~wU>RUW__=PM-kRkj5CM]-fTMGM fRY5jZ5lYY5Gkzk~9W[k5kfkk+j-#kvN
]\vMwjW{kQ{Fjfyf9e7*l1363;.4?oo~mNA1s{fF.N\Q+Y[PnMWw\wvuP=-UWXQ_/WWkmG;;=p\NAP0aX{Cg!0aQ6|pL
7p^@B-<K%f--dL,!K222ee-ev.~Q-X.X.[kylZ9XfZ"kf:::-~kuuuuuuuuuus1+H^k@QA27-al$Y`4/0YbZLf432lM&fwt,7)U

/W'EreFCsL`5#Hx (r2(r]k5P+h-j\b5Z XbJ6)AsnSh2g#-aF0lmv38mz}N{8@K;ty;ryN,C


BDM
jG.{ >[N
8^|huSt]>o@!3@k[Q(hO'E}^/N(0Ww@~

!z`.d,"#Pc4tucZe@D

nho%01I/D)j7&=~$2*='"W-W,D)( "Ly,PB%+Dd%2D)T!)ATh
\6
Qu*Ua!
`2LIRD-+TR@!OjuP
JTH5bT
M
juPR(JJHIaZm:AuQ_7hBSDS{|\/E<%HCJKI.Ps&<~j

[rbtiF2fmPP$Zmp;m N*5.-@7mN]{tn&IN_Stz+x

B #zVQbc

P'APp=j zza
tS@(y
c[yAg:h-6Yf<m30PMN@2t|a2n

@_p-4r{.<;SRlp8K$((R m,xZx
y!Ps&
a ?@^v6ca5Ydfyj454Xg{BfF{C_VCw$I,)geQnW0|cG 1C9qy1 2iX&~r>H1F%VR @m]\l)DAS+q

Cvq??F-iS4%|LA #^N{_V-4R3 w#r


V- QE-z5ppl8VB6MZM6tgpaZ,;m]. qx+1CN@1l3x-!$(.?K[gaq3yAsSp09d
^ibcK;@kGX9$]&C-h4YktV#d}a;:M3&QP7^OmLOpC/\VpkQ=@4V`9=`L:Ez$wg/R4M3*V

[
Q/1z\N7\R65N*E]o
t|B73}TIe>&9usF*^+JiA[6.BcnwXBT#7,

g_3q]jq,h&nfm}EVv3:h"(E(Nw6fhGX$

2tWc8LVfE
2mZ|}+k9Sm/\OI&4blZ=YqZ\;sGzi1lxK

Ffg;eE}cx}{mnGI~^DN4
EQ<BToo}PtgnRxw)~2,k+F[AXbsvOaR!V{vHAu6.{[~7-W6_2!{

xVh)qzy_-LVm>7Xj.gK(v9[s| B,M(o-{^;3>;cKbn6T
Vuh{C<Yr<-qf}vW`Z/c\rt'{% {\Z"rgqbrZ?r
b?vh7y>&OB.W
?g5-_>"#~YNo=un"h!imqyd: 6P
:efE<VY
(%@L.ey>U|q$gb<ux?V9<r#+2(|x,>j47[M eDcSy2fxSi3XYFr'=I_3kSXzvB{J{wV

{$<R-%e8q#l<jYt)Zh$TVgMNWb=uH[hw

llxOVg--!C]X-OQ} 7lv/'[qu^pJ\#tli4\62<m(d\NJL'IyyKFK.D69a(\g]ZaxO9n(
&fEXJQHYR>-^O 6an{Mq#Sr|,Ob-bWrdC?6diHp~D
}lljnS3a oy.*NC6
S%d,vfqys/}8_WjStlyW8{q5wkw>j=o
ow]0Jkkk4:]Nzua+l-{B{As\)ugs~8"fX7QIJS3;yCo_^9?8r[^pLSx{

JsV)xjg.l#=7`75b*)<hl}A !IJ_i @#ILmIv4zM)}bNp[@!


s{B%~
jdem
N=Gf&c UXf8'<-_Z]:J1umo^M4$~VVx~O\yS9heD RnP'2"
$wyq:2S$V5oGP[_I-yfI=5.o3$-Y07
W)]A~&<eh8ws' /WD_ViO~/0S$cV+v|jQ-Kv#!w}-S*OzR\tPEG)c^^myA*gPJVXfJwvM)`$<eo$n^$=G2y]ls


T4QdCEavNz0/j]v,/=;QGI\@1.VlwxN]gG

'
-2h8]pkt&i-Ikpg>|h<v7YGW9\,f&F`V<#G=*kx=s
[#!~+omuh&8m8li(da.V-V_55-}SjDKD@T98"V
J|Q=7K2y;ci*9"X89_>v||XH?!`Z=8!:f7fwBAp2}1^:4l/'z
),6k}g$ cdEPCYk5qn{IlZCc]^#}s@w}o2 T~#Mc8)<+3/pC${J+w&=/OQn^x#u:y,:
S&M{ra"/k~|9o_

")nQ

|vYh]/x) $p%#\P0%&[P'ywI[-R-A_r9R"r0a^vZl[[en\HMq@%+kvoWU&b|H@G2&(ol

-P%H # c+p-`D^J$c2EdTDk !Nt^7aoQ,twY.@U*{v$$71m(dt


x!'SP^mpRC9db2>:V
"-@cX{@9SYoMdF Lbl
>
o#M
aN"MERwqtUb?]R$^?~kR<YmON'2P~^x-Ra}#^(IRx7)(uiW Q:4y3c @*fM(Ce9ed

2Q J#=!F@veW,dr#DrynJ>Ar|VP+I\N\";oS10#&pT[LOMwNH'u>OrIt.)NWGhq7@t/`1m1s61/!D&)[;
kB.T-luRbavj[
DF0sT`ZV;3ts3=%S+J?@;o&r`M7XxVFNMNj.S UW&/*/.)Un


`:T_;PD/EiX`!-_GNFxr=+gtR2
^-1uN-xTlz!:zb-L\NKAR(VIca yI#S&&I
+X>gpR'/q]7`NK{BO4n3(]O%tDA\>J8D|=lbtOD_DQ<8u4OLkBxk!`)@4*=Gf%F-QV2Eb

*gu`%q;Va>@c;xwbXC+47S:XqI(.@go2%o\_Ku:?

qOE($]!#]|\Ly&6CQMv;wLznZDO)-s}C;NbWdL.{B*v;Rwy)yhgi_E.'<g(,-(Xe8z$Oab|FS
-Vi&afN !cQ
abVlXG<d?;~f B%*/9\fV-/j43X"B(>W/>K"A_Y$5Y2[.o6#7x *
Db'e#Is|"4\aj19-Lcc/)P (1Sfe]m {%bU+bT\CLA2Y2g
,C;N0
|W}]0`J=)!~"\OD "Dt!{)OR(_dan/c(
h~'NS:"A/0K1F&z|NH"b,}/Gr'qH2)\ =fL^2xX^ 5ldvsy$Qp)J.
j9OHrgKoIA $F:oVSUq8%Yl#gXYhR`Rr;K>&/>a;aX&Qq
a@2X<ita9CSSg^+FFYc B2Jn5=K6|,X ]COC.G

],
X^26pZ@z
t8I*+LO{|FXxq8!#iYCv{^t`!ta&FA<zg&$)/qb_v_7c@x$@rFx/c0^<GO)F

?xC>2M_`nrXA,x@4_bZ2+RtISA:D
a#*NXPt\t*nfm'e{!qW sZbIr0
.hBy"6E- BP4@3&b
xr;1>qs5^VLdAH
}xrs,eyHU<G]"NyE$.+vLFE>*i-=,F';XICeUhaaPMHVzM}khR|`@+'6QaG}cRDAdOkKB;qGRgb=$+hBd#gX

(HC-`-'?=C|(&vS}Sr$tcGE448<y|:;ifNmz0

o:d
3UIGR
D4K BH9i$I)_a/ie;lG)wsvlP`xUoYc/.f=} -8

O}%YLGiPmutmPwX'!oo*\aq1AZ.2!Qf0
NATqsc%Lt$<NF94Nq\"AA&cEwgELljNMT2r%&sgfk<5)O2.zB8o>3=_H0}>WQ\N.Dqt}{3`
{Jf[E
yj((:o_"no+EaBC@gGDQxH;!x{ STE4nR;Z2w2JPP[b$9
/9,o5-{{y 5

wG]<oLRV/1Y@Cn&ub`g4D,\e}"LP#a0@^,p~1}PqEj[4<Psy!7O,`-^Sa]1q.%O1|O\&{:~#~al!%v]UU-b!Lz4=RY

Y6B\(9miNT#iM;')0vq3.H[/=\NqSyXi/:xo^,d~GwEe9h
YPFrpwN" z/"BAtCG/da_}L!&?"G\/afRp.}^be:nlRDM_* ;yL8

z-#pK= _
g<@P{LKOXR
8{=a_W`\&'M\<'n*'sG,FM@ 2<Olah1lIyCFzCj"zG[L&0m`khh-3`1
4X@K4@)O}O4QfP
%O=`)7Aj*WA`PsS]mB%`AH/}
(BJ#&
@0)wB 2jR+BN P&WW5h@
8%BC^B=z=}/>Z22 PWn/$}}^}^AuB>h^>(t*93}Pd6kv}yVTI\w

>sZzd-Zg-4XP^>`d}r>(^Y+{!(:sk;2]
B:/{}O{*hO/'Ak
dD/)A>h>v># >fM'BGfB{?c}5o^h(C,1}P/}Px{4-{L4aA}PqI/1@uh^(s^{!ZL/43ZBm^DT#:z%|s$e9YJ(HqZTq
Z]Hj^}P5A#Oodix/U]/zhh~dBBK~]l:=&1ot>
kIzb^]mFJpqJ(HF&E b6bwZK[e !V":3
T0%y!CQ&kBB%e;BHh@Mjx`~@\Z
}T

4DeK">` 0
@lb |Nt9"Q@>q+*IW3I%w=(3F%

MNDH
Ih-<k%hUTd:#`!X4rR%P63/7$mKRzXj#GFFy
2m&MKm`xD;BZH$SALGS$.\
y6DF37(=%OZr&H@ uAb<pX|V22Lnb]wm'G_
M]_H
Bi?I&ONM=5VY;l*p`d2{
x!U[h?5jh 8

b`zj6

_/EG> i6aB#?#
zM3`7?_a0<D6Y;8[oV<D@yjF:mpq>\/Js#QxJIipwwDqFEqD}7'=cgi-'<?1hV^CMa

n}m8^=kHzDT6*gR&<~n"ttx)^B<%D8*+aM&3hv>"hL|?w

}LyQ>F{Feew@
^"(3Y%#7{wIq_-kU3(
zVOA:^pM5wg-cp^?60y
I(h?JCo`./*-&r"FS|\|962SBn+63^=[k|k
6OZ},<?~:tL-w,6B=(ISbO4OSkwNFbD;BH_JDyN CRb11h)0A5Q&!Q1Z{iG@7AvQv#q}AbDYJViqB;-7u5G#lhssJnw3E_F%rP$-z D>{*N&
]N{M~\aB3<t)Yf|FG
#\|=oGC:xu) 'E]~6tt@xO)?x%aQ^bD}BatI DG|dk5
hZ

\P4R

j0"A$rcx4)2suQBs \Z(i8.'T 8'h&B3'RFo'N7?%+`q>@!! }$:2Vg:<RQL+nvcL[N#R3gAtA&uCdYOH4Y&RazWrp*}TD+(?5)dm>qx

PI{0P-uYU5~o9ge<pv9]c2'}1ewp,;}|k'VpN_bY|_b@8U]B?s*(W
d($ombb2lO-QQi.{
.Fl:@eDNKHf~NTT!JQEW/#{S>-h?C]~$
rN^l<i ?x"#~A-bjkiz'G[
N1UT~'@xhf(b`jh#+| fe ,0VGh('1SH:&JPDBBwG*`slGi"Rh%6<H%fPa.e|P-C

MxU ~KD|xCd*&|GjNq2iPSP#y<!/raNokt*!0
sG@`yXgC8jHQ2.GXyTe<fOk
S?c>xNaTnE_$-zA\$w^)i'%

/H'%
Z_0o+cWsE+}@e j;<e +DBWc z$'2
\2$-j71{i1
lbq{uy(g

\0J-Eo5"] qBf+Y>gR8@~%d\pe`

0vQK:5}N-jE/aNnRf{T@iM\-#\

:z'h>ai_UqGK'Qy2ZUD!N:eLEEaF<Y00&[
9:b8
u('(T.oSg<TF:Ai
Q&'UMm!cy2[IH]>$1N
Bxp
075|FSZwr^W}MMW~L3)nD1s.IgVMkv]5.8cqT(^<[A6O'VA1

1ji.7913{pfS>Siswfhl)!D ~%~{t'-Evx(Qe0
rW1'KP@
$juO_4C-AudktI(\I&oaB`@bD
)euiDHOTHCE)j%(t@
J@G8$b#rPeOC
}Z T>sjZaN|F_E3&l>-u,03G5
5~t@9TE[HtD}
iN@,O|=(e-|_ ]lZ5j(JypjuKP8x
}HJ]KM NJ
p$~QfNaqz6yUE9^fEm%,8|^t*e9?a0:SRTaqN<maSCv{)zIy&D@R"%vedC(O

H-U3c$ V)Pqr_lAPbJVrt8uYly~}

".&RKcfQA&p?,{Na}EvaQJl/FM$1QcXcOQc%O{y{)UFNR.wQy;==5uK)Fo0FR@eJ@iiHML<3GE$GNDM#4D?\Fp
T]G[12rx2CQJ:
T'Co=%JP<}H-yil-Q2BP[S!fTU[

!
TcUP[HW/knB322
1f#TrFaJ2
h79&X/AuS4TZUU/
&=JX[DIb n~I&:"<Cb6R$v]G]A'N
T""kF|t<1@j|#<C>%4?*-E,!KuQ9@J,NF{Ja$FbS.+4)LP0ow]a@!$:7m`e4YIq9-K0^h>mT=xlTFQcT0@AB=X2&)VU3LicJ?MHz?*X&bZz<N{j%-mh$aw]lLH
~=[
hc1_y|[6U-JH>%3k x &g;5(@^+`!MaU>867T
Z;Ph#QmwnObR>btw#/-.,+r^qI1S{B/'b*Kby J_Anzgt({sfs28<"T~Bo,S54

Qo=x>=Q;^*Ag[;`-+,V[C=~
b3rnKwu|cfWDgX7;UQ=UBS*xB|mZcB=y@P}9zRk|}Tq&Cb9OB

vaczec{5:-FqC x2vf9'1X1o8_{N)m,OWy'qkix<Gm66mmub PR!x^.,:Bth


h"W,JwGuCG/gRoo^J}u'#nK=~D-$^c}-5-%NH9/aEp

dlBO_97wz_,wj8>`f)(
%6*Mf~|sr-I54-^
S<o.FLan
_-@dpSJGUp7-1yJ~__}FI<Xm0jzryemax'.TNb0]#g

&%-91{~C\iEUFo$$'5vC~]ueqPfc{'?4_zv2LRs(I7-/E
1:/z:BDrz84b-"7>\7yGs/3tN7]s/Kq mgq5T7

WBk:\QyI6Y8 k@E:.,
ocAo-nIF!0fSeRSPi*?,"*'V!5}{RF-;cU9&d J
r:5GLZ+-,yX*_*Uyoa.UrAooOUD?m$DaxI(VRJ~GE~j*EN2""Urs_??;3Fp_yTt13E)g#Pbc-
R*hNN65

nMa]G]A<*5U&r9TYc>Eu]e[;c
sJ4^34Ts9\mc["V4gf
ud|O(sb@dw%v2_@vTlA08ystD `r+gL7zJd.m+uPsYU+R<BXCk>OT:k mkOq'7Rf?3U&&V9EjqKO)5K:;&oIFQ23!

h$>VDu9N-e%C_^u2R*{Ne.GH~.|46
#Uk
r8%Ve*yoJ6#!i-R8!2?=| .`kP&t

Ye?,:5ArHB'|[AK?)d06,gK_MbN=yXrL02DER+BUG&Fyb?dQWG}X%`NE/nWclc>lxm8k4S0hbIPHQhIp|0tZM u9sP*ELP :U'VfPdw|e7l]~x'Mw4yke+{6jBbQzcgW!7]e4K~9rb.rh+`OD`B\

;j*'<kF+3cDn.>+>v xuZ OEhfg.-([iJTO|=@


SY85+-9{oX5>K524&S]ZZ6MN4ZDVJ.SxDnffwfkiIEJeLen

75Q$1R`lPZji~M~&%4W[HUsSRYMC(8&-'eT\v4UW/~U&Vef5s:
(Q': 4I5ZIC;K:D?r"/R;piBq~{7
Gbza#IJz?I@nQ#!s]-])e:_m!3+VX<PB|b

3{-!cdf.[
t|vOAb,~L'S
P'Q'$#rXfDlW~LahIPN&&uKLKVUR-Ea)jje_2o`$qQII9hO'cRp#35j+y_1b

R |&Rv548,b?@W8**[M7

4&4 QyyJ_o~puih-D g92t%gSYQ\Z]h`v3


*_A<ZLX!=
}%ws3R9|h!(s+[
@+F8J5CrU9+2-g{j>;GXjk$CM-zR9(${N]$:RK_IEP9NrEJ3%Y$9uYZ
;'U-9~.du*o
nAk

+
;:ce$zTcG o*an8:pVB|qU9_ZSlRH"&_] SbFTU

caXuRmp}Vd1sU&ztv/cTT_vK/_s+|xv__>)j2[;
,tL tK;]%jO*OV)!R

&&0;S!CbV='
eA*!V_b8?W-by/.\l-C/8ZSZgt,%JSs>yRM6U?s/M?5tIw*H9w+~}q

:s~3;+-rB7e3.
L{U;cs=pM/UDhH7&Q/%#lBI7F</KuqS3.2W?a
LCzm;I
7zlmu7l >Q
}%fy_y(\ORBn|brWe8y0Si%W0/S]UOlTV?a=nj!rf[sk
:BN/ta}=t4l%I.,~z"]?'*

fS)y3wDfdqZ?u]6:dC\`H_At

qc{!tl.*gpn$vR5fWM0+R;Eo~U=/1
V.nh/#H5[!$|`Reb?7'xKVbo?+hMDd7v[Q-
F
T ;&Gr$_:oc)>*W.bYzkrsekqOO<A,-hX\N8Eq?rbPSc-NVO- nef
}
^W]}=\O
9lLR%:QMcyrqBtWAM6P#DS{GC

gx{)uc-;~odO>:~7]&L!`wq+-GW\wyCxB5ZsQBA^LA*U*5SM?(1F

B6a7?iat{B"tGeu5vgd1Tr(>_9Wb*wZjORO[wD O"MUs.Dr<">
ORg]OkjUZs
>Ps0e(&Lz5a'6bD-Vc%
X,Y9rFRp]igw#w0*~=Xu`@W^,I1
}!L;KKh>1m-5GF\~+bO)~LnI|)78o}`ba`%0v@J
{uKXKJ)?/v9+\t&&?%8V<{IlqYDN8J/fBgdq#rHfY\0]=wK I.mNokb{g/~`-}Vt6uRnug>(w/RY8Mq%^_ktqRU ktaJR{^"n]]~+u''&8k{({1rGHo|S*N?rtdMN|u4-5`P9_]!

x0Ju-7Yyv9tV~dK=<r

A0 si1['66 Km|N}WO`P@UAK#^
8,hC!?O"^DZZn)#T-0e@@vMT5W3
aV2^ HhVx6z
.{#kD*DJ*m:%k@m#+TyBr
0

VLuP@O
=bEu
9|yDJ|X
*--]Q2
f~dl3sd*Bw**:6T`HQ
':c7
vz%XB^UFegN"bVmnTqN8>aGGst= 9-

JP)*."e.
Pp|_GffXQF[!I 4Wa#`G\C!4#Pcg6MtEy[

@U@$za

R"11Dv1`TSK9*7b$s!6iDJ6pOfHnV5F';!
b&3#P\3rDrW~
c]}+2=dLT&3d7J\hnF~1Ej+zP_M @&rviD~os}jZA&{jwoZ<r3h}j HST}g3gyH,t_g
6
ZLiVt:C,
m>GKNaRy5QZ{?xmR.qa<z8&{DZP@C~?\9ka*t:b*9BJDUJ@E3ME^Rndg;<
\I`_

%5BZ
d"zER
ag7W<{vG4uulQ>,oQoH_S +4'(oy\?.Eqcqw_CJl:`3"9kMwT>E.

cu97nT8k'&PA%+KIX0U/#4Z<23q KpD&fRgbIiJ`PbIdy`M3;!,BTV>s7E\4eof'g",z'yT5[n(D/}{2ef)}nCN]^E)L0rn-xD70^2OusKGrp"nct

{Iz9}X1v4V[ZYlx.uqkyp]ujl^4^yibEEB2 rmuf@~t


ppm@3C8y/
u'6@f ?Gdv/!N2vPR

Ll^MS]i-T'HV(
qu 9Ha%567ZN'-rxy9:}3j)-cZh.>uo]Glm=-
I]>Jos/^WB}Uk{,=\lK(*W[u1CXCIe-"m;i[i=gU]Q1oK>b$V~MP-8XZK;bn@385ZEIbJ;
=s|vS/-\Qz J\~i|TbW/r-5f4J6De7KSL
lK_`'nr*P=l[qc/cLR:wzS~,3rlFqT5~I|2~-K1*)4c"{|gwST37=/r1?$zRv,D-gG'q);j;(~fhA:x:p5Ylx%K0GYo@p=`'p9[L_ 3
\\vF&8g;DCf*Er3B
x
aSZ%2s|j#S2zh' DppIh)-
]W5}We;DW&]
C"($<y!HN:i;IoIzo%NzPHEAK~/TPFvQK1]-g~@Vb/\N\^/Hn.C,.i)BN6@kC8 p{.x+j{5:iA{cU -tg(B[^whi<g.IxJ3o#d^L~"dll!!ueg0nq<:(O-G
m>\-;wWPZ
n;:xVjl[37Q:N#P FPnm|bVR]@J rA~AE OD/c'D
tZ|%U98t&kZ2u>x?eLQka?q0)m7`4{$R/so{yuz/>+++ w
JP>Mmu~z?*jLm- g}aE5/P#+,U(ybwWx{]{t-?=DICB:M3SGN%$%W~O]q/:rjUa2
|vwV@%:
g-De%*
\xGc"[Ds++x0i%@3F'hxm5XgV
K
\7{*inBu@4qAV.!5F/}z^F["VwMs-O'#&$RWF{ {H;*)tWkD[a+|.N6XN\p1Qyfv-

o,zc
WQUQzstFH+bV=Q~-nWB@)F-#jq#^:N{mq<DS"H[NdGB`=q|=7'=}cH|Pt>+d{EGv0p#&(,w/ba q'~
{xnu]F mia*

6-1
qF{1WP
C
(|DZl(LZ +`aV
#
m^\6j^'_-jT
zf7F9.2xa_D_E:J!SCXZ{ZTTWrziL|L[Q0--~G,]:> u/{AWMS?^OKz?2yX'XP7;b`@6pjSm(_B>mDz__h0wz,-Kmn-hN-A6tr^Mz{[54Y=_{z5s

^~c'{-w|(M

t
DPs;ci6chvnUc.2BcM"y?5ku9?lzmM_w}c%}%%1TpQj+i

Z;ms{RT%g\7]4T-?]K":Ja,9ws6-wu=WTorJPb9!:7w
}s<:T=G
LY{;3U%fTk]q_G
.bp3'^!5pPs=UOn\$vW677O_yO-Zb[%YJ?wxBh
d(o[K}_<Z
wNZ-!Q#wN1A7j};(}=J>e1'=*L3tC+lFt(eQwox}

1wW]zxi--J/#dW;x3<xefQh

]7sO^u$#;4i-]Zt\ ;W2u{Bkn-N_jH!4Jcfv]C^c7}

/w ^%C$8IxhyXKVi\QEj/[;}[)c_s`
3/nb3\xuh|J2;/^V\r#[~(ze:5'Da'R[uh9^k7e3BT
]J/l:-.?gKhsmkcdm'o$aaGkIM9i*d]INU-LCjM~<$MNz/i7i9%.z<[FJ39ruqw#/G|[,Wd_|0 _
`yi%y'2guZJ
qeh>^3)oUV.k23o8 - ;?c-F

mzmZ!

~'1]!~Wn}l5v<B\t`a)"4c9tZ"T<`OKi^lq)J^;|:8_c;x)^A<J73-[T[Vss53W3J7

<tR 5.VB(gv`98|ZKlAjgzU
qBk[Jz
'je@B26zJQr<r*A^F+hE2T%ffZ|x .@x+O2=2VS[mi^4|(oE!93ozzk/!!;}IY;g*ncK]Kur^Vxcw1'NOlEbi Iu.w

v.5{L} Npo -:g[_Bm>h@8


o<e_-ST]wV~{C>xzb-|OWk
>K4\=~6TOZkSz}U
C3+B*uF>=TVW1sph sn|8m/
0;"-DE^Ki@,`c!"oQimt$8k06H8A6ITPgFZOX@18@9\qZ<tvA{:nu8$k}4YPU ,H2>nIn

)^NvA.6]1
!X(/Jw!>hb
tTwNK\_%<ZK[xyf.!]yhKoEkwD&vVr"b.!>xGBU~2"0W@?w1(->1>div1N
Mvl6HsmDbm}{\:wNWT,P1*FL1h7q=&OU&a
jjoo"f
94(-SAj}Aq'e.q:v?P{R X~i:t&2'Wn@990yCylCN8Oy;

lo8I}OwuZx!7 ?eh[Meq1..yy/>~X;'w*.[}c/Ao:%+uY+>W!R\!R7_}

t<D"!@)RBiRAsK]9x(To$~ZFH&A_sv68f?v4MY3wq(JI(3=<xVDo4W"jU5d=_{:7#avN)_k\zuueiwTr
iiK|YVTcs}o@e B_ IdAcHn`]8u,Zp

Egpo4`{2pZ."3s82F'}{'g[zwB'`V<xgp^62!|HB5(kNt

/
U(
eBVeAw sMSiIU7v]wDh9G2RgutD
~;z/\^AThWj>q;.GP"uH(XIO 7BO2<
+R3y!$TaYXiC-e/R;q v"!{fu<_|aN1a^P5xxSJn;-=E ,Ntqhahr.pRE&^
K'>%O<`1L1i<mG
'Jr6Y?4^m*8J)?qZ`W`Gdhpp`uj^Sw|9CM)8k)*P_S@C``[3!^TPdHGC]bx;6\yr[Di\m;Nu/~X7xc^8khe~d.t0-M6'X6o
LdkgsY5#'tPp;lvuGLfqFE8vaw]*-eGh$AMcN[iP=QS$M2

Ys.e-SIiV=BO`pl/1^Lyq|N[JG${/.N
a"1e#'DDw
~fLhNq)[}&p'-GlZb1{mdFN~=[KDbB:8
8
>xASs6_K,>2s|KV%V'82

64KGBtFP?7TOqeBV&o<|)9 vRC~nz2Q;/q!GQqmhphPsx|iN'<:1EL0\f<7$3rS`FF?gZ

+,<HZDZ")e{?8sl+-v1'KK;;-m}UiV;DEep&xAg0A;<MR6'

\vgD.!v;~|O+
yfMG]1n5u#+0nM{kaW8?Vh- Z; 6

3{'wcsji1jsk4F._geK]EYiFVSIBl2utrTaU4$WQ^a~ `;gSfqh~mJlclKaJwIOP

o#5E".*&(^^MPge*Db!-2x"nlC;GL}vv%2D|(*v6`QFkL-*
9fA|&hE,|_ 0\p)M
9r)1tH0`O8Ev}/D^a.h$E;?QLxY }>h08n>!\FhVIN>!WsOV:n[s\a/= usAuLijt|
,u9HRq)
jt^thQ -<spM>Aiv
Tcxqhyg7:DKT0G7`C!
[V:7ua(>8 0Gc}\fHDG^H
&bAA>c{MfQB_D{p9BG7(mx#aeVb/q,:HG7R\H}e#0zsl]9cBVlg_Vcao
g;:fx5i]P
mKO[W9N/k3Bv$&Y>ExT3Rp>g9
*qh_}
}18t\GfDd[.?p`nxm|M\3'bKBPN|m&Mh|2AK}oYq#hY+5 GvpvfKnC9%A ajikv\0`-<i*A_\w"
-iy}w.} 6?M5+;\XYeY
uN7H$_-.eUf]PREI-|3phpl]r*PD`1j5TVB79
hzV
M]F(j]@3
4::akCnx``+N5/tl%W#k"fy|#SLnN1:D-&p8$3 XKMSqm2([qZf82vCf[qK06#tfYWwr'lD!{I"A$Q-ZM&3AJmhQU]lSUkU[Z-PsgR<3Os{=(i

b!"TQmRF+KE!kul%R!Q`A1x
q"][h<#aVq=fLG.H@b7L`DFX>GvV?Y}-tj&27t2Aplhc*3#jxo{Y-nDWwtwK7Y+-2${*]~S#oyIi?Wb"mR

m\U(?n"Kliu^G[yRY-WeT[-z.MT]<Lg~,{GY$gN

&6Sh]=>5 JJ[ca^wY+ANZ^;
=~Q7ga(z<ir$UWLJ IvdLMb;[_15QtG

|x

n?n#7CS@gsmJ7guTLNt]P^2 KUL1_2~$X;`'G!5OMM1=SU'

MbO/^8qOJBFW]^OCFUc99[^Bm{|\$6G{]XuG>rgV\}>.15!NfH9]!K_,7dymr3()v(Zvjb{{R |M-Zpli|n;&$xYh\]d^$;wmOoGSVgsIt8.;LxN<85dQ\)*n |"U&jk=KRz<O".jJk{r|+

AE'}$'8q@4'$:=5R-8Iz#!N?I3@Fn69|<UdB*A]o-: S]f'[4#`2ae
AB8AnL

E@E''hvr@4Z;A0U" ,ATT;GS?j~5c $bHjJ>w9rRN3}\j


X*ue[ 9{dG'/zQKunn,:ymOEROE^#DE?Pnt2f`Rr^N]54},
%,6ArTT2EeoCR! f'ePBeh}
nOD=t7@]Vu,XuCi"7IO#y&2}c`%.$]sY
*@-`8YK

mw?$iL,Q]QW-uWNCV"qJO.i8j2"l#+%(rQHp
q4<ldt=fdk-YN42(bh}>69E$DnL;z/UO!NHI=NG

Vp4pM
\=(WT'-e?6u]%}GzfdYz'!0n.?;<q
)5-
C;S"I6]xO&5?d<VC5S
NN\uN},I_>9nJ"tKKHG@{x+1waIWD[uOSV*c6
eN(6+j{'1jnn7Mqf&-/ -XRUlyB{x)+
AibwUo]EwWa-)DmL~702z09#H6\MzNX.-s[Q-rJP0--JV&jE7Z!29-@i4!"`
bB V^T438~ZhS^?JfZ7L~1AmBl{Y?a>D%@[
|-:G6i}G]>ag} Lz]ZV:#?cs<R#)'|Iw!>
jSa>RP3:2G7(Aga)#*

19`fP`A
g\L.ta,!hHt(#_{^7k;4<!i|6cfzk? d=B x1V
<_?Y\>.r+x&1~D:~54i~1Eyqo9oK8\w--zs5OQ~(54@

VH,E5f])!('|6o.{HR)C./4qP{m(+L2Vam|* WE]
f>$gA<>@hZN#r$zuh#;q-B
.wqZDS.p
PsH^
?=
vkXgC`w8&%A-P$%fHnV^= z\%dLS5$0B!raxxam(e&fA3W}*-t~&<i9WOk~U\<_%y=%)nQ}Y_Sdy|?-kEg4H8q*MIWnlc[|crI\{0?AI_ogsY?'"

-5ExusQQ!B>gP4*oFq.F't!Wn|sJ-mUcWw7sE
z4=~=*
dw*EYD+=s>m1:XwU9yW=m.,rPC,sb?j.]8@4uE4K
v>LT\$n*,<oss=ZCJ!-S-jn[i9#ZYm=takK&>c]M=TBS/;v1rx~h=>9!jxe-|@0[! /hjW^,

CKXu iNm}f
]AKQ.Zipu=+R@[CJXlg!u*_>n/|c'BYN
9
TPILwi$kF)/2C(:pvU4"613@dL M<YePlYn^64h.}oZHd{qry-@M%<TF43F3x!,_h
Pg%Y4qgV~s7nwu,
i&4<LgK5VOV9vQ"L
w)>{
Fox )]~QUBTk(-wt5}'&8UN9,})Q~`2uU

Ii[=I&613.l;tWbAFgun8;s1Jc.RfJVzH)Z/?qg@^P&lL3\d$nqGq_^rm"T+f@2a $erARh2$T>)pq,-v?2?hmu~G>u/*n~d\_nC(@h,yP?`FTbZC,mg h_2XylYVj+3Twv@-hwr#dS%lbk"PH]y/\XD[


TsGc}}>i6KQ!JvN3KIi 9iV9\>O7jdx%qp
4}E8EP}WnKtb1N

V]yd2fxZ'5arx"FE-CK>
-e9.*
U*;!y!6HW-BjE+].^w#[-B

l\4M8
dy2Diyw*_wR#pK&N`gxpL}=c#5]4ZGw#~APhlcM^2z7m_D&eS\]bH]wR)jP1UUVT9?idl^~kU~hjW
6ZpAX
S0pa*pg1]>:a8pzkI#"1*Jbqken(_Qh/3
tu~d_dx{@`?K_\Pb*+0axA9f:GKC}}Eb Rk3Y/{X~a/TZxgt_f-:RPo+-((XrTbV0L

i
;v[yh{O(LlLTNB|:'VESBm/#9-Cg46'O"!F>=/'2'
A!{.Lgg
Fnz6H
xyx1
5@Cc2bld5ROt
/|
Tz
^W#
+ ]
t8\q
;X1:KeH>+[nJLw]U_FAfS
hV8Y>;"|S-h?,{G3%?pj+JyK7 t+%r!IWN'7q;-ZcYG}}9E((+KA+}Un.)[

it36v1t(.VQPk4J:
1hgb+a
C- |l;GG
OPO*&)/sZ=Ed0'3X-Bu]I>\ e5i=*q!cxkq[-xHzI2}@=_WayaG2xN

Z^H7M(7Ex?#
7V}9RYZu/sLFl-*3l guS44WC$0fW0>

mf,

0fZg%>XD_dW;SfN3o9Ys
-|*Z;=dn+k.~1?tQ,eDD3tb@6Gq#:D<Z
FWJ>pn>g?1+;Y`')S]|zd?]+X:r`FOl[
b9hNa"qJa!}he=>ZjavQeV(3:R+cvYGjLm+i=
qfy=kZyb;cX]No}'6(_ Q ,{oogjG6ZU
("mf3>vo|&N.~!}|gi-eJGB@P8SO1Ek|4)oTe&
ed~HN},7zGI4
VO-mE o ?# m6$8p2h

~Pq+*UDP.gR-N\&#
L 0!cml 5c
5X9ZL}
XJ)B0DtM5
-:}`MT,+%,BND`^uU+8"Flhz:St9[rn6UTzP.2'oH|

IX W&kGEyP94RBVj.>D7*F]4]pM#SF(-T:.f]Ai zAaBhW
3MnE#X[HD

1=hfkkng Ad/o%}>
!qYJG0QF[g-aGQdM,W29$sT6Z/|f
|sqcZcMA/'u[ZllV
,J4-gQ-w*$1goKHlA3F52YT1cQsmIm~3h7l]Oob*nwGx.Kv=rz6FO]T|_f-dDHBd^XSQi)N6]23`Dj
8:'/:=
?tSp
uz9m
]H %g"
jqtK+H] O~zojhjHxMdB\7Tv:2l\{yC7:yN~|H,\4r >KNS@
6 M(XR`[|9?]sUNO!mb3.-;D~/ypj

:4klDfM;B:s]idu5E`&9#,~y\,;Y: 0ai_^mhP"-FC
reuQCQvW`h#8-U>=&9.}iy/-2qpty0[@
Na3^+%+[Z\`Tzl*?^XQ:M,zE#0!R.iSM[_2?KLa<qN}

EHZ&$gfsl>z`mM_#&mLCCmM-hwT7TQ!DTO
^FY`?
u\5e+u j.O,fY+u\: b.]V\!m Y
7H.c]BNLxE4@u0PAz%Oqd,Xwm|.|xw1YSx)vzC>1$
:oq-k}}!ghw
of\_v]k5N1a+_d5y
ukXBq7eYVohy/;4WIEsU}qk"MdL)(-XPZ
Hk78-V/BC}3@bI[2PtmRC@^Zi1Kx7i|`9+HC*y
p ^Sz"181 (N|$:}Lm^lK[;7;HEQx[[1n+f=CZp[pv8E6

Xz4fUlpq'}{[7CJ9-(UV&Iw[){\SFl

sU[Nx;
:}|dq6]Sw8eF7jvgbMDju6>`:<:n_,7T1AlWqGKT
4k*~,6xQ^l-dv?L@y?!Mq#hCZ`BQ-q0@xx617Gs|bH.APS>`RAfQ(iNofTEYYxmU)=}"^t<m4vWu)(pw_!XN5k:L6rNX(u

!(VuZX*D7$._gJejWVQpmBda#2'suJO"}s/$u

;w,E2OX.)Y!~a
Wo~byETVD`(1qmob=m8o@zf2}
bi;zSb4qY/)l =R8^ Mz7%WxTw?@-t$\tj

&S)aPwFG('FzBM5c<D-+tA]|xCqACS,EcWT, pGPQpXPWU6n;b:u%,U@V:1&j,

AA0k

Z$I{gev|7;MULv:^Jrv]i.@tPpIfWHWu 8b2CKhGgjaIK8V55CBOv{%6N#M>*(

VcH]S]H"@F'|k|x:VNGXq.WH,kVb(Bk3~^2}y;lHT[i,vp](}doAYWE6Uoi_^w;r[)jFrIRSaBF6Iqh@UEZn(p5UGgrJAYy;RZ1C!H562C
~h&ybb;g'Ek~lER
UxaLWMxj$6E;Yb2![QozN*TFGU_I

UFe@oec4p* RuR[eaEU/:XpieID.
@:c'~ .s\Zd=,#!hfX6w0.IhO-3&6%+OPev=a F4J!Y P9WeC4Dk
4z&GGbM_SfF
dAc
9D/7Rm>Xe-@J]IIZ4p4P
.
m\qJi0gx?A#8\_8sY%;0=8uTXVM,giTT86Jlp8zIu*CCib'd4Xx+k Bi92ocDy!~)wP$V59i=d\b`eF"<)<RWm}
VHQG/fMK6ih*(,4Q<
mh7/@x11+M|@W]&^4y}Kv8&Ky
wldSOvP5-Of_%N<d2D&uBC2|Gm(RpvH4[K)

DB,(-1Bc</$.dz3;@U3&QS `PozMU`sAARDvTg

'2FBg74`VdRA`4Rpt%!Tm.pfb?J\@^`oh6&lL^U\,r=tdn!%

-zhNJ&6p8pjI>WHf 9ia:\^-x|h#!F,G'cw0gTOG}}56aSKmH{=",qi+--6#+{]@w(UYj(x%xvuu!>]HBlAEEM`RefzN#u0u<H:Re-O;
r k8:}-_{`(v=5fs
84jL^VzWu[_W4iKyMcrb(X`tf*OEQ<=qn'-"Da

t\XUPpdMIuN{E'{@/FKhM]BS-1H\|>(/6o'A2`{<i

MK|-XIT,MH7")+Zp-KilO @N1[+BC| bF?EEk"5dR_3yC

OYMe.0^RzV*~}L2B[}^$5C\&=-

#Ot$Xd{P51y)aKb

K.}4$K^q~y_s(S
27p~id:~,=S4Z0+7 +1[@-W-H2BO;7
Nyl4685u)\x@EM/.|xn0<j.>qCY;ub]qh"W?
Nf8k-P85!+V|`
q|>
adR}R>/K^a>)xTJ&4;7L'i?]UlA1WK=oq}o{au 4:>

`J&5X,Sme
M1rjvOV$@5}jk4kfv4i(Dn#:zI

!\qt[#T-F.;7SYe[#IE<P>>BiHifpEJ@* 5R:g--_fjok+NQ

+{A!2|0L4
g>Z4_f#v`,P!B,MWMGji``bN{x+m*?
pf:8J/M)oLf&!BT$n;'rMe"@<pN(L1NB

JZ)$[n7Gr:<>t?(F#(Q,j9X8iU[68@)9_yk]_,POh *ys(K#ve(Xt
NG6w s[(tR_myjHJI]TZ
@gVzV
I4;]Q WC-KCl`K4"["hR<3H4EQ);+

_oXQoL~$%FfiH)`Lc3*^X->dC35}(gl(g*SP((.9F|P0l+_xxLTQ

q1LT2!~WiU+}/ Jb&>U)}{41B(V"n#fFKn'pQmM-b/%Ph0=

~!Y<sIw.0C'DASltS$m0

-L10bq.-+(^w
x!
~$J
F}N)NkXO3FdU}>EI{CbSh<spl

bM9 :H*0Q)B-%6nR#z]77Oo~Beq*82*_.@9]|s!US'8p
ezI_2a<QBQeK$
~p^mL
EiFJ-=f>gkW!(>Z*n}fpz4Y
YfzK/L{Qgye/Q1V
R70#X@2^2|W%)o8>2Ra.bLVHMr@-n"Ysx'8-rN9khn+JT'LbO
#R&
s|D>OA)gaVTKE$Ml
Gz&U
*PP
1P9{t(Ng<<?97MN~V@=wc!0esCpn^N<;D$ZOy?O,~q^taW0]<_S d0Lfd&ww2$"6@ku79?UYQ:Bth**#W u?<jqerj_.mGVMz!}!m+.E?UTAFV1c.7pw:eX@\*RTV
bq:(`NuSQXWZXHiE.el&H<6#$C/'St}D8eVC[.yv||&+rXG^(9EwRWNb8}au+*s8\hI]KyZun
+!~v
?9Ya+
N=d!QZVlC%o}ku 1vBsj
7%o7dNNa(/%k/R/[-av}@B\P5//<,BDv(~'hq-

!_nJ4PFY(MF1WSWBsR-gPNN?W%~x^`J-Y?a/pI}b;bp]3|9\{$
5
D~bw* F
Bn4N&z.#'wLF^)OPBKUyO0vxGUL%8q-l'd0c-~+3i-&LZ3bH:Bp/_q.HJF~NC)6A&ztF'(Wg0ZT?8}}

~FXvYR(oeuIBXN2yY6c$2K}|t{>/axDeU#04bp9)6c\g694Mk7WmO}
RgXXu@wu
y5
)Mle=M"q&h`L{NCq7R
-hx

YVFXuSRd)*-BZiG*HQA30&{2u6S'XTM~dh \`"5|t50ggDb=k*9{;<D9bQ4)7%Jp(aFlR

%>hnf0es2i`OB$pIe&%#98%?FkH$rs;:3
$N!Z4R?
@2aXvY
Cu7g4ckYG
a?kCKl*HD]4i0>H"Ae^2dJ$|wW[ad_+X_:n"yhif}/=qKHSf!Uao_

P-']r3bqrIXk%$3#i28%kn\Oq_Ny_dKA<L6^
:^,t7>K'f{!(
qrSfwQ?==Pa1<|KaH58ue?T:q@A?
tR0sLkr,2%buQ^:dW"S^|f}+J\.@q>9?Q{?Oz5Ibu-d#7>Y}aHv
>(eSXIn:[[A}?s;l1V'31
EoJ5fH

~D+J>a49/9$sT[7cZIX4bB9e5L:I*['#8-H`@E+r*}-}kb.;cMa!v9q<h(A$p

8vLQVi=O((/;of7fSHB
B@. M) NzGD
ADPA "
UD*EAF@sgw#>>3;s[y{-PO'61j! U 37lFgal/WU30GB/
FcK!'U2KB-t
]prsYn*%e.'p<4F[FG%PV`&MR2M%h~opB |MN)4<PjhPCKGfueZ
(mb?;aha}IvQ;Wg)*=97
dJSVV<t0|\*,l;1}cj!WW:%DDkX8& Zgr)Lg,P

=jPp!f%xm{UW>~n_-Kw+Z_]Nc;
5pR#W145Ano 1qc
gw9-~FEPu?--awZpPvPU}!MI+xjum1~x6dnQOB2r6>^^}(?%f*d.8]qje(}*}jnHY},zzr-F7h,8hc5"-``%Wu<
-4wwiErgQ0>A[:D8T a

['v2uW(J]vnD>/U%2b"_`)Oj|xkkb~mn7OO_`tp/?ZougPW|;
T1.\2j{}*ME
QtKwm[x35&jh|w('@h|mYu618]V*RRLo

*3[U>U23{[

-M7+jn\S
&er F-p!elaZJv


_pDv,2 fsS
9Hn
-)3!*7$ZPr;`ir Q&'$kMcwRjqRbP{2cC;&R+W

c,,5P
|c)k_
zSAuir*X;YL-_`E,Y_jUC{ x>jZWvM4J^
%(@
G4h&!!1H&l{"da+g.#b[SFc0M.?
TQQKwMwXJ
wnm1A#C,L~fU
P|Mr/Z2}A}NIQ

G|X-N
%WLeWAF>70B!>Wk7%R|jq%oGau@)MR.D$VOm-SQ$@m(T=@{kArc<'yv@WJM)
PYsz(z'q' T1#}&Say<RO?5[XpQBQx%zegdP&$,Ca!Up7HTj0*3"MFLPC$c

t
-wkd5/U0i?;Kt9w>W\n{bTION3/LLLt07z~aW{..zoX2j4H!|--
qA)BsM{Qc>~Qu#!1.U,E{9.8+S{VjM
i8iD>1O%u2%h'rLMGS 3zjHq3u},-2
Ui&c*-hRGORiT,jzmZ\>Y A5$S=?ct
r|B;|qG03^|I];>}sFu:[AIo7 q@xU9XEfM*

uDgV16Oxyoi:;n|C |@Kp-ok|~"k+k9

gLs`x
b-nGqEH-Jt|TBa#!yc>&"}NNFphQGKR
nWxwC`yqIG

7yQmwu,SgR<cNrb "4cc;O4<Gl| ^~+JRYfl

Vru1y?9w!
{&N@:I>$N 9S CvNMb,bD!LSJsg7Y95u!pT`H<-e

a~*}c!7-$-

rh!Itdt

NGCq.8]
dZD[x\Mw84lyGyF[%_arEqYecZvM}.TdMBMqiCG=
N8Z
?gDe?q9QD
3mD0AQc1YLaz3cABdJ;wTH `@IYbinmxPBv3F*-gQ"}'CM+@%kAdP:h4r%W
vRW#A,EDT@(`H<=>Q-~-8t8h1aV#z!{%g;=
J{TPW-S1Yx*!{\<_o3Y%sT"08=n$-

D4j NO@YkNVWr;dV [!L)H#s'iyhppB8;8V_BRO3+d6tVhg_ g


/Ik1#<zpH0H1w&vAfCp
ePn-z2A
N-`pe)Sb`*NK9ld~O*#5NPvr[Lk"%H_}<>byD(e%XLU2JL(gvPQmDMB
$@)DGDW3=kD'"RO@*=EKij%B*rh3
I?}'>1<RI9"lO

rI9dxkpk` j=4<dYu=g
8r&)(TI?L|j9
--W Oba=gyMDbl0

L
SG]r-cK's eBu-7m$p`5(H3_D

[J3}=|b1bj^NrHXw55S6uHZn0b<wu

PCu)$L

9,GFnd!,*-x}\/-<P2"r[,yUN&ir(()lFd!Kf8D.!a,;vew3\o=X5@

tt5
az{,Cv\,1D>?z8J@N3Tf(v=d7y5irD@{!Srj"p.9&F 0#@^!_pDl<17ra6@E%9u$54n:6h3L\]=q >8.9'e,6q~v.8%7h[)r#[/uI%_eA

p92'k}A:K! wIb5>"?+-dJWc5.kM^S3@x9J2&

/9qmuaL?O$HM(i9KI`>a{[:^Rd#xQwr(OUY;]H(t^w<FJMOp{y pjYa[gC5'r(\*<czoggy^(thSR.
E9T&
O?!J'5r0VDo=V=@E^B,IMs?U$;~"/s
Q&+"&q
#1mCyW~O{Yv^ [XD-JB-g7~vei,cUK@+0Q}eJ

m[9Kgi,I3gqv]V&Di6U
aQSB6Ca:d
D!P'h*#Xl
b3B]G090^F"Uk4YdQ1ciK1%nYAIt? T!,N}U%

|WP\=m{&`*L^6S4I--bkNUr[PM$8C?;|~)Y>xUId0F5%u^,O=(q

eVRfl?YsaF__K|ruW
+8A1P`
Q'-P67}yq@J4CtzI({v'e##Es^Bt}rysMMKoS*
s["W[a
~ic1x$n;X+cWLz~0rrhtyrqM`4i#ZA!Oh3O,\~

rc

/U"SiieF>+ePdd

!i70=Nf%%tG^\V4[Y.5]7.C"ul
+L"x`~iWovV1d1j}E~D)Cj>j)`4NN~l'BrgS%r4F{Hoc4qyk'7`,;/f
K,3tHxw\
H&}F3oh-74
=x~xqeQqV2cfw-fBo-I*ao okzf6;u6

[ D03-W0E


=*'Fz,~(zwbM5=.%?Qxb_ |8X_o-=98X_-X.G

t`wb<c%cQabpmk3cT-B{N I ,i:v<Zc5Za@pa}th\8;
=T=Sm
2PE:|"I
t]
l*@
IFU*ls@:O6e(Ddny20`&(v1O

A48 F|?dNi HU*F&)iFY}


c8
+]P0nEBOgaeT3 ~ee<(c5`h{B^P#OQx#^D8)\/H/)|tmv}V
PX|@2lN6rvB"8>mLw.vLs\P-9_-,t)*
5Wr2nJuC2Z!HW*#qmze/N8Zt.d8q=fG]`&>fTqL2a?a=ae"|]WgQ(<S:#%{&mX*L5hgbT
;DZ?6G.-H_ub*~9EtHgldQ^%{0Tp&s|2s
!bf\7DN<7*@i&\?blq"XLN Sg3Y!p
vV8g|R'~-Y6_=`'jl[>Vv<:
Fxt6EmVI_bF K^fS}o_9'?{'518}7>sm3

O>!!m34HZ
m6sPUJ/~/Yc4Oz!<cn5&EAMxhj#6:MG,N2fh(Ide&v\SOSKh?,f7$>C<wuD)Ie^eZ *TF,Vf-HoLv'c-!>

1yw!.P"~b+uJm }>_yqr@;z
8gW !c-[B/_"9]$~G#[h
M5g<&y=dlu"TWydWA7wCIoalT=Y[
nsvCxM6_J{<X1/ravaAbWI^epTWn0Cij(z;;&Y<ki$`!%0?02#`:a/3/,%sqFUAtJqtK*s`L :he&V4gfg=!Wk5Q:

!xQ'
WGnk>HWRi(_sS,/7A"j,{vU+N}k;;=l><sLof,Dlr >&$ip4D}>|7.^IP5 c

l|
u0X}|Kc<t-fhbo7yynZ
V,Zx1x$
u?#??1I28qv:}4CK?8]g9N}I'+"lpR19c+>3"Dhk$, 0xP+JCvCusAu!cD4

G}f9kt&cF|xy6,\]|:RL9
cxdQY
=?nK4OGV{)<-K5]o;b7vEnuo:,x1cC1J~{NE,B3vz\{F-h97iPqf0XZ:;>
{>3"K?
AF,^d}=~.@ G|?+W1Gd87tICs,S|C(|fZ
%C%_/L.w-A^N:&D@bXYi)"QU\]OXPR=#wDs.bsp+;!ps^Cp^CL^C E!0?
=j
o6orbw
rGrLShOd<G/zrhG8r-4?6\$sx#
ce8)DSMo=?'#E!+}$<3]q2,Q3XL([U%H8Sd@KfDK@eD^{+?@tz{yz=|)tj%~ '<'Cc8yG~FXD%y[,W)x5^$a+K&'<db"3~;vmA{:]zE;fUnqFp Z!IyF[HA!%E0Q^q/-g$pXin

LXu4Q8(F:dC.`wpS] +{|B%A<j8Ce!_>{OYi~GDr&Ilrua@^"a>

#D -WBPt a,PO06J0j>(0;l!r#Z/#z]#i(WAPW u

BGv8r&)!}lcO0Zv=,yQo}e,6CAIx2q-1pm2ZZk=DfjNG]3{?uZRw[mdeGN7M$ZV4g}&E6;,C
S@;@UZ$N!!=cJs43ilY9kC"F&fFpD#
Ih.}4.Ur8b:>S6G'O="ly
u}pF1l>4|EIc~^pSyAlT?FhU>o)9F$n{z0aw][+7'z2-THF

$vI~
_saDygLmOF*e-oH

WVH(0/{SmI%{0Cf3Aj QW

jzG:'5ImS=+B;eOzbJz3vg

S6g=3Jp3LTCP4
-nUMS^V-y?-Y4Rpsl 4W}-Ogpvwwo$@pJVci]s3 >o\M{%-My:{vDzsacF5[PV/@

&We^o31p|w>);z-p1ZqS~9\e@cS#<VaDU hkMQ2hr5*`%8&mxDL-

Hidk|:k/
I0QifGs?[6Jng_<|ex2|cm1F?G=pY0"%'p(mpKF
wq_Qw{Z*cJi 0G DcmyBb~p7j~uP:Zf
DTIGVQ-P1oa=ros:b79UY+vGV@AIeekm@&"sKA:`{s5bvQaR

qg

uCP;UZi{gak{-`z|soX~N?yL;
G{p<MCs(~>;3bjg?<8>11s3

WZL73-1=.ImSSqPtjeDI7P-"N~-([?r

-GMXvC:b[otZs
Zq[}2OO(VT
O
9fdz2/%V,-}Y14ql
Ekor9;}t8z\.o|hfNw^
!pjuN&bj2W/)(Nc8+\_Nvi_7g]lw `phZo' %_z,m=ikYk)|S4+KrR-`RRS)e<Fz1KED?NN6Qg{XAr0gkW[!Y7]7Mu-s\$ BFfuP4
/0N>EcY}v93BB:E]%#[]L,JQ<{Y4CNq*5D^Xqo)8)q/+nn!3djLAR1p+]}EKhi]nCr|+k&\7%)a} nB&b\<qP:(AYNE;O#0

im&obFn(rVr#O|m+iu;[3%vz1$~P:@.v

sBDUVv;Mcw,SuN L?P$_p
qq\~*dBy%`D?_4>22kGD4A6JD 6#%#mFYxkkp9[k,XRgFz#',
4R[bA/sX4-a[%-aUPbe~@rS k!<afWNz},3kg}{JjVg_rGIm?p
-[q1l;z/e-)]O{ q2y1j!_B !R#4M* $f?=F-\7+ C|[wKD
5v5
q5>x7A3~O`D^-LZ'^T%$qj&'

l8r~v`.lot"wCABi6 A@\Cc`@=Q
b+`#p][2/@- QPg ?USV1@{G*LTf6#< &Qh'2sC &([d m(}{-">

.h.=k,I@W] Pq h -!2L5oAc*}95si.b&}O>|M
'*GA-.
O`~/#v$p]U@^'LB}h-b7a'
C0>(G>DdCI6`Ce+!Z4L!Tg ;^/<>^k&[Q1.BG(x]B@g460`c3xp*V
]qo&h@W8$mJ83!w3g]DCD(he8@<@ 3y"

<XQ
IvAq=\ASLlo*L(2Gj4Jq+8,P> AV!l<jbb#RRTNc!f8s_9-k<,>?:Cv#x1BN)b42K_tBxP;v.-8*z


V&*O+|01"u?fEY~e5QROxVD]*uZ^~kU{(p;qt?=ZV<F
$@)|LM$1)6-1`{RR?c^5Wm5Q7D t.$Hu>$XrF!j2]XH!iB'f
:y?C] 6L{9 k=Z?l1M5
/KpbY:t!M:82i[14qg5v%LV0XFO%q9~uZ8QJk]().gJ-XjAwqX
2e@UtOXm&LFU?S5f<ROPk%\fTVf-e:J[H&q#FxDH'

85q*0fN^BExV
<Kj%"6WFwr
4'$ZMhZK|EDoN`#lPBM?"${\r92E
(iF}CgdAVfM*M;BhsHairpnj


g1
q4mB8X+{'&RZLo0=%3x=>R<Nn"q`_"INsX|PKVg
W}0Iz?+#*Z*U>9-Q}')I2P$\\uq][yK*\kZHtX^$M#Om_[b4&}2A4jP,m#.5i)sibm]0q^kn7DfT`bi1A\&

SIC*CW<HP`i3xDaAc'-c[;EKYC~OX

TW3\v!sa3Foq>+2'D}zp_,qG; mL>|.+tJn;F1J
kFSasj'
-e;hCtw3a)Q8
O <mVssg`tqv6xg=}}wD6Sf!|ST"iqB}6Pd@KK
kUbsj-O,G8j/h\Zro
BmO+
k

x4?J)'2bW2<+eb0$G* \7UUvp>R0^.0Bw}v_Fk_bPvT,b/?*Fe^OT
A`HobsX<oHh?1;4!wkr6I:-,i/9Q\Bb_AH^u)u|@AZSSWE2JW, 9
29a#zO_$5JJ;$F/GP_vDsjc;ZyMP`|)0?0F+q#wT
;UlB-IhL/LegwI{ese^nwt5(%.M& 9j;z(
\
V^#I/TQ9$!*RF73%(LHqg>j-tUtvVx2QzV\Y*|tmFuuQ*{rNK?j[{c0@(i]!Bc;'6tH#c[cL6uOOE^HC\'/AQv>B{ (zW<b#(i#ss)J'v4P\~^bV6,{[.:@vKE:<*-?9ggvcbLkMd*vhSSx@Gpv%P:YX4()-&$spJPUATx+i|~Y.#O;XeB
Gx(z?2 j+>pOl6nL34cX{rd2A\_q

QQ-3nX.<l.d\2RB"?5@W
A%{@

v}R$88dP
44J,PZEH)3 |\+t:zj*qHlFb5{Q4x?RXX$&uW#%OvnP~{P>< +

)+s,a=

&jy7`U'P^R WXGHU 8754qlpJZ'_^Uyi:9FE2iXk"V#hP%u$FTJgWV*+=|M

3[muqn.(Ln=^
CPa
Vvw4w@X0@O*~GC|#Pd{W9s|j](
xt!c%cruSbE5l
}~ U
S)TiO
T1EOS47$F,-}R<CJE?Bow~J5;eD72H]CI7B
N!~H9#\C4WEP$uV?l5S;k"sBB(;n3:+*#FGSTXKK!t7]'L,m,dj{ :4_50CT"tkg7%>/g
fvXZ=1zTO,"@Y#$ v:F*C/6PtdiS)R
xf
o~E3~}mvH
lDJfS=
^GYKk
tg@y.6+8v':h5\01Bv0Pfk]_/?@hRne[vQwyj-G&',E4hk@Gv^=:zg

gdy7b]<
l!r_=/l;p&M3N}F[hKR.lJ
%&%iYEMvJdQEQQTg}Lfs930Dk+Ny19=`rYrL!(N
F2JPAP: CG

P,09-OVD2@bb9z)Q^3\
NU]>h,KeL7hr,f7J$dJ6)I=m2Qak316|JU.~nMZ*`ntx4,LxG
E Y/@KJK3y`sI$\ZW}4}}Xc=
>4&-8/r5}x-a0`+<Fx0|_D@
xM~ohw_G`NN}"qjk^<
U~JO1,>x (UN{[xF0"PB1

;>3g\9

rEJ9o' q}2Zn

*JAU| R}5>E)1BLA-9o8!pC9)I"hEMgG]m?<g$
X3.,g9gq
lNNOOGi]t:-.DtSHe%gd$w^2 tG8 [)xT{
?8S!|1>K ?j
x.OL?

V2ldq^o95$.'?wsm$kxZ~}EB\OYNbr7(iRm*gN?sJsw%|=3R~

G*$_JYLOU!As ._H-KGq1;pxFQG:?w
^3-oM`%#oEgY_8W

5.}

21Fo5.qRrWjzm

_,:CfEkwQQH3Dc/b0f%[LNT^L#f%

QjfHR[RfffRjIG*dNoH 3=obKVjr*|j9+3HjT'
s*%kBsSr;+k=S+f"uI
Q0y9B@6'*udC qn-g.
>oE%3]#!?``s%iC NuMCY]'u15`cm%Xk7,^L\)aF(e]q1x7%6ub:Q=#u7d>awT6R`o[t`*#NDv-4#0:pz ][+9}U]uxN})i}FKz
?={9lEpXzO
*$Bgi
7zw]t QZC:1uRR
omoY3o)
_uf4Y(~!gdNTj@QRO.
?
~5Z
bPLn 93Iod6xedjEuuh0~.8U-|UGWv@.
#Ge5$dHNbMPQn =|d34>5#Xcq~{:2w#/~`:$>6dD}``M(nfDSw|D]b0aS;6g9+g>(yH&B

Mz
J
J{*Ow[=/@N["egj5B
2Zy
G@^s=?aN[PXv@^5Y#"v(^25$.Th(BB(%o6BUUME-0334BSdT=5vkKc,7[,N\4(]>55H]PW#A

S( R5CbpEod7NB
LvhnH7jT"! 5# _$sJbh19T+5"8GM
YSg0 h jj0m)Pl'g9PjfilID

<6t$j'j]_\6DYM3KyS5*GO*0c^sjHimcP>-nkM<K4'D/[4P>^<KMI/%0Js

v()@tOha&QkPeq8i3h$ly{`Zj1a-jsQ+f0;<V]D_"|lPBSnOeXduoi$1pFw(hIorQl?
QZ>&6u5kr$RBm vu@0@|<g oO)[ 2*{K`C'hwow}|

Ms=$(N

c\RSOikKy9@8#]
(O3IBCQ(`v;0UW3%ZL<st<%0mF-k_G~eHvoic=+#jd~<wxdUWaf\h2.Jf&?

kN`WQfQgX#8s2ph{%XX("4n4Ss,[s,c&jK8}^+s^,~X\OZcmR
o3:H;}RHE}MOT{M&F{
*&C _7 "dD
+pa7NK9'

w*p)IM{d(9]-r5'.

mQE,
H!/Ul=8Gbiv/Q'cOL&/.J$AcaEl[:5nb-(
sY=j.mqW&QNOs.2*t?x$_@o#eLe4M3Au?:+$2dqI)
~!6-*6q"J`f(:0I'M3m@Z9wTU[nH4ra/F|*g@=vHi>(rMNd+Ep-oH0u\GEK/-A
IesxA|JA-P-qT+4CL)ZtnZhbciEtsCl9X8ebw5 MBfi

1@iQr2OufV)6/hr>)Y?|^*x[Mq{M##Rr,ft`.mW}p{SMrv~'e*CJYEVP\KvL=FcrP4P!wqa?a8F&RL]QUsD79)7:W~tPmHK~W7N:$6)A\_o=jLSAF E*71%4P

j.
V`!9IYdY)\oj3
s(?@(V\C$}a43juvear0&&6\1U"*R:-*=VaRB]lU9]x4&m{m=]J>ox~2{uSlNVWE

bB ^MgB]
m\7AjKNyc;wK@!8YjTM@eikbO7sh_tEPJO4{iwo}w$ .-]s4jm\IH+~!-C:6krr-OiOZ?+[eF-L

-x3_)b*E0#gCM-_Ri-}._*sRySS`w}:`6G?_]+c~V{#=l&iW9gq3is?gtY>/+c.8v0S\u6xrjTGTJTwrX#{B

n)YWUzIn=$Go|>z#cs:>r

Y?7#Y

A'6r-0YZ8Jgh9.;u9.J_DL\(rv=nd-PbA]\HBe4P25;J}4\9HXqq}+jZG@:zURV6muzdB%5Vw
-ns|G|
XU/?I,(>UA_Jg[gLqd d_8m;Fgn_%{]>lKX_*dWf3O`ZP<Q1o0$
0ab
Y1`pLA,}L7r,!![,pz:)r/a0Pcqp[-`8-N)geL7@>h[9-q@ovh_u2#gYb1CL&?%~-4d71%OKb=

`(A ga{aOmuH*nOWAj|.V_IR1C~n[
Pxq.>o(;/z8cT>Bz55 H#R"bp"6OEAOBr,&kB{Q

DfS2b
DqV*y
!EV}Z--!$^2Eg#I< 47l3Z C:Ol`5IZkP-p
:%
ztjZ(B'^ ITg0fEY?E,TP.*DjQIO@PQ38TVuBc<ZF y7G]}
E`
)i_Rly5[/x_}f&~/\+EJzC0 `OR<<q / Yj/60*y(-p~
(T1*g9GWv-y:Ew.@Vm0NiT)VHJ&<#UfrPVNe"7`S
6zn?~Qu~-/npnu?~XV$MK4~W(&_D#.q_H!M/Mf{!VMMCEEy&6~6_<
4dD X(Sv[VY7x/9m~&pmZK-Ik-CLgDbt/cm`

r_Nx$CG{YC?{N
k^D:c`cK)Zx- <]cv2L6o8z8+ozr*WS<z[

;lNc1uqU'on{Etqzn&{G(6dR$-CWiCq|6
6)_4JzDg}I0ppVbbJ!^

q(EI/S1q
Ftaf_?3ywzgI!t(h
Z=vqC wp\17GrCs|H0s/Q<rx$N2!D ")<c=Rri)"Pa%K<q5-A+1Wd?

?V5GLmJq!%crA'c<A8+/nZKdy,UN1RB8S>MN_DR./W5)03Qrz'^5=~%BA`~r<-O-,O%+hrZj/"3%=-W `lv@{$a)w5m!}.F

5`{"'5 jhr8r8z_ 6}o4I


%#tX'p;gis%!&;56VaIJhrDK[)4sr6!*3(0LN;SgK}L*^e<@1E/Nq5DlCh3|l_~YA\/zoPEk%|vMxL 8-Z\gH:B"4mNN'I/_3Zo--h\Pc|]>'1l&C]6d75~x1"X0${~Fg|"Fmf7R=?C

[ acI~-"EhLw$(M<*Y|~/=5gbJ>nb'!Es2`s@cD
Bm*@p7FGfQ#r[27kM~>BvNw]}GGjV1o.^fBXW=n+W`8t%{`3-yg<+'&!ve
eY,i/4&#O;}>U"-=}7M)g|Q
^8?}6g>9Ene|N0Qxqn*LD(wl{J$?VQ'yN7r~/yM~IloLcs%/jv,$?

3
eC-gTe1~xk#O(!gq)jNOmyzqR1b Wq;_?%a~vXk4*So9#&vWq$@~eAe0|d(C6mEEu3gORW[mHvvfFa"8^/o#viuG }]LApkmOoSD9S|Q
kN^d
l
g}5lQn(uS;i]y~mUQONq1> J5fWw8X5/nowO.^

-U8O\ kL

gYEJWP9*~usY0v=1#NPC/UGOeiJR0Oy

{&Bx_+RZUQ[=\=HvKy~:Y!!S\P>!|B+`5gdG4gI`BK;?#G8BANz=wf|ct}?{A.g7
I8
_/\x&7GG;8]k&?~ih%alb8WxCUYv7hJkjB3gE
hJA<Ig3cM84l[-s]3HL5:64Nq

7V`o?rF8afbxYc
Ue2-WCJ<s+Mbg XmJoKVH*%G
y,RZ%x~U03:P
~ 3R5
#w4!/Gpj6d5XHVD'vVHDW?
+7)l8yM>T

aEa`zT%PX=M= 4mj(<myKz}]|

5u10Z3m>H%\|})l
c*\C1>`H#|N{f@Tx?w}!p0Fi`oOr]O"

S`UY2H#Cubf |V'e0!5q,tIDNj-v

"expQj*3jBxlAJHhy#!sCB2 )/
|BG2}sO!z*}9jf%#223Hy6(Nl] Zj}(<uI&f>|t$[=`(M:T1CUP-|(
HBP}%RxUmw(?+4Nu^x{x'%7/Q=j#p'Meijq4b82VV{B
T4>0d
7w.&zsC@Ws%:t
Qk5YZW:[fP2[k=V!;~'W7j}|U'G|%T?DD]@
$A$2K]n{s7nMcg+pw$^
&XXi9S 596G/RC+]EA7wl |e
3f~iRQ@Pq-$g
nInX*{pPu`ii.-K2F45q8A57*M, P='
41v5F)D?kM@2-QfUiyj=/# w >l*cx>>2O>D>bAa

yufw]BotTp#Ug@!Xa8- [ +y<t@eeQ@B5pYAi1,5n
aF
?8E>{{]2 n%|
Ox#ZM]+nb.+Y?co~y#q1m<_Dpu2nHBcz20uO-?}/{w#w>/}}0w^e^mY0?4 U)wtO&:e,}(#q|7)w7mRA9SL/uf!/X=;|FJq^#>{V65^uI!J|GpJKK$PAlN:6w}!j4Rj5"mu><}yq}F/`duN_p!"z[eho!h^eb1

LP.;@
3jy4GKwWAaX($j;SBzA|HV_#.TyU
(zh)Y'CitNSGA@_Wl3(L+T!=Ta<+]ii8ey8krP_J!5F,cqR_5M)Z[!$QA>9<pRwdD?D,5%.WCmsWlc

j~6"t#q~t'XsF3
E|!,{dXiIHMu_gT(m<5U4d,@dA{,:,,:];4nIAkuj-7,-2k=cR
YkmRdTA_`zk`Et<;B/ljG2<;7Ow=x6~@|U>;8"pSHO`K7->?2-c>e^?m=MozCMk7Uo?K;r:8\=`
@R-Qfl--a1Q*vMuuGWK4-zUm9~v--$fF93}:R!;axfiUOf#$xd#>$-5kS!b@Y9-&2OBiwH;p'esO TFy~s{Rbg
5E<b:La"48-',
fIHeAusc[_t9' R*oY3-uf14N/8 .~-T

kU)ocfQd{3S:)vk~4"G'COoAndSTT;@"$jV!JN:N:bL

=3=H
-EbIPvZv.Cj)_$&K2}E}I+0_Je\]$]UO-_(~-St:
[jIoyF*_lZSj'r7,ot`}i*A[C\?,NtWxi/uf6ov+@9LrZ
q<sK;-YJ='\b%yAH9>
yt<f+eb:7h??8x6BKqOJ;L->S+
n^|-v
DFjl>3},
n=P}:?<Zndq
:7@{-a=pnD=Vh:FKukXDP5*

e*^Mskdkk4iMB!!"}
rAz5F-A4C>m\B|@dP^eU=ay5gfu
U#= <5PDGD5g9l
vM0oQj{:O@78$_]Tbjg d3 /`7- gw gh$dq*mZ{B-$a1j]OYNr&Z
~LI\#5r!=Z9kCT{#GTuDA;v,nh
MywoIhN/3w2x68BLr*.-z

H?-\8(N[ODLslGM6#7^CAY~)?-E=7lfwL]38PF=QUu+!> KM`ZgHy:-H0EGI$*r/yMwM$j;wJF'FK&O`!h?86N>kAd\,.K>3q8C?oC^m]5e~">>KmeAV&f,9xuW@!<bOb-c|ml.[(koG@"K!iF:ThdHn?[Tag)5;EfRb-1j>9Q?Zl,I>c`^ z&'IRF`DE]A04q=rstF

"# wJ~
&
??3bDI#b6M8>df9dCZ40nku4b:B|4{n=C[,,Hyb])ps{)acN0<M
R'DU
d?F[
s-vg}RFqD$EQA
`n{U) {~lw*aV
.^ & qD/Rn+A|,Vc{jjQ2:_2LKt+9\'\71Lc2^_

+V4!x5.]Ao[NF1mr/9 j6[|C'n"&NBb|0oF`u@`oF9oUJC

vb6MK0ZSmy|lpv{L0`trzr6Z6`:jjI0*\O -
B4)\26"Ej6
HDbewD+4
7!o]Kr.

LJ

,."LQJ9;-SX`?*8Fg~o>$ mn
4hf2ifr
@b\-c_cy&U<Nd.nqh3hNw}
x9VwUPXv5V`7{S?fH.h8w4BiCck}M4cNt@2E7|'&jg0i-"X*W1=%UO`=Pr"u}\(-vo!>;{MS?!y3HhC]JUmRA'aFw@o<*iF2BK#Ma%}lo,gy U5CJ,qvG84nanI->w2N,Ph(y7vkmXa#--h -"tl7|K7EXzA0Vq9/%N_I

[RNGO.+z:?(<Mf7g#[*G]#EXGYFbUaM[?DY
-:0Q^.*SukCC
aDB6-rS#DF5|(<)@[{o
l:B
c+;4
P|E'z^oM8dxI#P(wX{q`?{.
C}Xi}]1;C}S`Ep=6Pp[;f(`e3U~DI
gCK?LhG}X1gA1\w^lUuB: [%*3jYW>2coURe?q20%{Z]Yqf,j#`lG()''I;=ND~=E!0DD
%#41iAH{z4(2=:Qxs4(~; ?
fIA#W?zcnBCNI#ipj4:Se8)/kq_H~l8|2Qd
f=@C'_?m>N~y%@?~;;SVaQq8gL$w
d2Llx8
4
\C!%^4 k[1
!)~DDM>ASBue{:#
IRIv/m;eUw\v s^yXG%r I}(LHZ6./xQ/5j1rd)TSm!?O~ 9xNgN0^_y{;H{CB>?ey%0o~/PVS;

1>Rlz-}=3n**|e^-cX?^@pj -Xv!SI04hZ7"FHBl5tS!hl7V8a%.YbuJmbN?]k;>.&U\cxU|W^'f-Y
*]\78JBGEd-DQC*&"$JZvCG@w>]pz`b8Co&Gn

=J=F
+IPwYk
!kQ37AL"_
&$%XDnP+ o9 IEUS/

*+K* PDaD*WPM4b6o=Nil:rjH-Ek$MXxJVbY\\

Y&0~:Z
T_9$-5M+:Pq
%j"IdOZ2|YZW.+t?BGtE>?pwcl[Z^&C#n#lJ2A4,^4UD#FJ79i.km"YojuAhZ0Tu^$O^

} >V? @68kJ%7/GFCG'a&Fc8k`#<GQK>Ce|8#Mn

Non>Zz^Wct<3X%TZzzu{cKoQ0UX$-7|3D6Zg~=

5&=-3so>LhL[KvlV,DF(?(4h+N3:-}uk
]]kjgs[U+
tw&N?>USo JA~*zYS,0?IKM DPCeW*ac|(H=**i633n|WqTm/X@Te?

;`Dr!MeRS= 'l
\TU?~:w&^vPuTFppMq-%-\2S3Q33,53[lJ4sgx?Q{~Hw2ipD)6g)'hs"
&B/3
wDVKLgA{|Gi,
H}eqGi0u'j;I,TDnI}cSn-#&D
26M+3Z~g"l,9"::
b
sNsa.z839A?T9kz`.]:c

maEoP
Dy_u^9lj*Ahx#FSeoJkWTam ?]Vl]@J<X\`yMIA_$lkk%[iy33|w-)in:)p+=:)TO{ey

f,'&Y+&g~z)[G{{Pwg[Xg
_8uAhk2
F"udEO]:#_/eK<WVjHAS\-qhU@MU8.p5]y00fs0\V</rkVui<y <U{E_:H7J#jmmfbAK]^qttk@ZsL8Jn|/

;5T?[)4]Pf
who3gOSo%lw6YBIkpvQ0h]r,0eED8]3/dT4Z/sx;|Hx
ig}%`|hah*NNqn[ t$
fREaq!!IRi"%^(;-'pB}L$SiBA-cM$_:AV|tb+!i8(
/Vv5kBW#lk?1[n[f,b* A< akkql|
EpBj{=Z
bd3]^ufaM|vRK-^mlU%+ewI-IcYZQSPbHYWF-)}_W`2HWz)YG,P:}>=39S_ "

jcEVio_>=2rE/x~y-NgmLra+L^?FV\B#-iJAsFH/BN}K.l^T
Y6{@w)jeYam^<Rp/$m
`g[
O-'+l/BV3=UFz+c;|s1nk0bY}oqjXyB}\v^*5kh/of/!*KVndj"{X5R:k^HG&,\

r/Sq_ZW.clL#jxd'gNL>)HJ>Sd5r|X

4a)?ck"@-!l#Vw{@Ehe,-_N]=[fU|)eO)VFRX<V]rbB=Sh-+G0p;>Tr4@7)7(U04'We?/=>X;puhr<aw,xVnq9TQ6T;LK9\K=}3^xN]aqA8#pq:/y!{+.ow']ux%BsBnd&T1-pK?e]V^|?1|)22'=I.9$WvD0#}v(BWSUe4ONCC@,-ot'TQislNO$"

X
H^]c_( zj-xp`` z@z 8!sSuDf`Z4P
ZFFQ]nCdVHr|cnCg{#IA;{]B)QOFZN(AQ9vb$; Ds8td"
<0"`?-$'O!Up@lnB,rD +S}Uj!HVuQR>
\Pox(< 3H @ Z[=-uS6#TYS\Z)Fs-r00MAf?IW2+/\LiCN

SU{gklZ)7
E}[sPA-`;N}iP @Eu:|!K8VW
GuVL}bqPbU7# F&N;l
Atq%'`/ua)Je6dX+/T@|5(.G;v%

1UJ

-#lN`:ctbr'_9CMP-4

_Ql O-L[%KwsaWgK\Gn4aM9}]iT'!

2cb-X447pG%]` W+8FZ&uei]Z>Y@o8H `fmOGEK JO'Gk

cz'7
i#0@!Xp1%o."HxqR5c3r*K:%c.&[zoTKH/B8BVwQ-A1xcE-wiJp^aH
QJ %H\';bkT_se04S>Z HE'"
F

F}X3BAJE-|F#!233B] <.5
l^las?5|-b3gUq6^%l*6X t]cRq{Pi(o[Y,=Xa02U7qn3u)< K<
k8Ikr-$.15zHFppeDEU?263
RW@@1RQ3H4i_d(=L
-[FdE{$MLcDEC]r<kxx.D{]>1W.u^su};vi@(
P%^jcs^inSl]${cy}>zU&{nx[0A{VCtt_u0"q[b0f3h
X&An8 <

P 6Fb#SD8v6yT|w"_umTLP<`'!A0O>8Rh mX=3-LZ+NW'H4::-^
%F@
m}D8;TpWP'Jjube!xd'zNw:
vW|[]g`OU%=J m+h:r'x
\Sp|/vewO|D'9pPT?0x:!AC\!%&(SF|,|Nb-U719eXZ,ZlFM{TL|&oOycBwO&a^ {w7ih2

RRZ}TAg5H@E/_s)iBi`GX+*@
HD@d$<6Z1
/G8Yd,^W*'&#r#V53p
tDF19"A1n>VGU-
3?R.aMLXO]K[2qk- RZW^ir@(r.Lf,ge[-#eGwX>
'gW[>@[5_+_)HxH7MJNg-e4hr{gIT}n
=}/SVDf3B<n8\/lk-hC,.-cZs%I~}S7@n!CvM|+g|>&!~J6J|n"#9\5.@jBD6qs]~;h34k-58m.]D{y6\l269"
^V,fe}eb>-{I1!C^D>ZZI0!H/6z,KWS P6Nb%x-N#3ip:[
UTD?,*%x!x%VS)7&@u *{}Pnx,<6 @;7'Z'!wh(+a~
9;EU|roUIP{Vfg/SPysb[,'jRRu>X\1C>
O-?K&geC8sihU8JM8
I(
_k
i;KG"(%*2<FD-{-Pv<xqo6x[`wpm#nF
F(-,kUn-f^(Z:RsH^z9i}y?
O0k(~;CWi@"oIoxI'?<+.Z^8-
D+Ma_6-1}#@bTeX."+~Q({)Z"U-9,kHPH=k]kO,kab_-Uw2
V}"~$x|8Z0~G4xfJt#@d1DzN1nr`:fIc3i8&_
`..`yZHhC.U?@>BO#Kp\ (qZ7-zH(y]@EG6%Ght*' bHLH3G
)KSq:uf<-_ho

qu_g>MH<@Thp_n3U[kUuA`L QJFVd e1_D&zD/T5'Z8p]v5(p,g

g`st> zJ- bO<o<L46bP\RTiJv=DOyY=


wPqt%b_ 6~vu~*Ao.-zs8v2(E!N+UjxfI#tGEXIyc2m[wX~#<.p+u^Cb
rA(;@yV!5c
p/nd'=sD}7,

^b^RkR;QGjV&mKN(II7W-j
$ $8i0MIF5aFGT{Owh@J3Pb-(dM@NKjYi,ukikc$T8UWIn-^0zR

MlD8
fa*aQ/yI,<o]/ T@"X7& |u_t)-?b=|gi__ h9B$E<HUM3v~9*S2BX19yPnqlx3" L'DV
Cg*)L{</`ZB[t:=@|u;";;n,\grw]yKd- m}S

#B+07hgwxZ-690Ytj*Xq^~|?'|$|w@YCB0L5gmG?7L
TL>Fb{G7l3
p,(-b|X(b8HbHNN#N6zx04EsnM,&*1G;PwSWF`<Hrsp5/Y6PIv+J&3Q'cPZf>-WC

R`/1ZMZ
" T0ktHRmT!i.#|Z ]Dyigej]p;f!T8q
Nw/2OX81(qV&"h>y_JMdi<QjqW7602&@Hwx";^E@aSCmg\

#K7>Iiqy#n
u33_u_:]#c]MgkKs]sQ^?'np;Vr'}75C*mS$g|}9iDJ=(-\STXuoA{G/gBO^
r
MB9Q0--P4^4x#xE`pU&1R0#*|6Ou+vO@XZ-BQ4*+Gz )Y/q[RK
X+v~
NL1 q)1pi8Q\mI2q
.S02PZE 7w\}p#ci
uiK")#/f&DI]>$9
W!$}@'DqyB:*Vzhjz[[=vZT'ZV[7LEV{A5+h:J!2nZ=ZS
"MM)aK:L,
OIgdXnO=%fH?V.MtuIEwGMn_%
i|wgC</5K|wy*QESAXNfv<F
KCy@v]wym&V]\>c@x}
0=PYdz"OYc%z\!,R@,9g Xk/{1
'
p)+y!CBg:/jd<BXP+@qoSNz6![o
%\G5Oye-;S-gcg&\00-1|I}|[PY[5s
0[Zd-)'8MY%q*P3d?{*.ZgJ/v`A&$G+
MW{C*ZsRj!t
qlkx
xVn#'17hN"\wBL]gU 9_GV
~lz/sF/ny@|`7RplO7^QAQ

~{sgR]-6WT979=uC}V#hN>J%V}\No;/48lF?<E$5n3zlXI<<3R.
Ezf,hGI!b_?3sXb
+jO[xha\SwjnwY"s z
qi`<'.H#hjb#AR3?\|@1f}*CH{f9
!.6,%Y]!wx#D7Dh [!
scCR3 :}Cq Rce}"iP_h$TNEV}n
~m
cm%2^=?&.&_iIU0AW'AeSO ~%WkJN*L*$P!gpV!>

RX#i!j
}x`ce+!*Hm=Zm'+69iD%xNz-Md),JcTk6)M+?Un0]8QVy
3`-L#+ur#0:St

GU
{@6MOF}s vFE\pT28;?
%E[WN& nOs{gExXZ7c0}0

/MQCga9\FPDJW-n*@y?]1`#6,ULpmgkG_D-qYxi

q`az&$lK(=)c-$DL!Cp-H

--xwSV[b-{W jkxB{%#p<.7v'<_-0X

dAP

UpB.t_ Qno*v0t"[~Rjj&7y9m(
66k-VB.9 8`(Y 9)3J),-(l(V| Jgw)v &6-Gxp7

u:e~oNnT
z k;$>
- WrY7?i)j}
nHOX!_4WFzq=nXQ*~g;uhdNWc95?pQ?w3=}b-P#~3>.@Hu^"
f9"l@#0DuPM>/!wFlV1/nx`$zWpM`\`OhhqNQ["S\UU:")e5fJ;S$'v=~:Z3+:7;MRd,tX]XTLIIuzgx

-octvxGw|lOtL'v
lT]8z8@7CIEwajJaiWjXH-}

bT1qaZkfMQjOQr]owecktHdv~<]|5k%&rN7y%CZ+N$GGHR
n+F+-X\1-n@\.2[S|xSm*oY"n+js4Au\Oq/!-[17$.o*$~;LB"bhj/$ONH00I$#$ka=7kT^"
` *KR"k5v|`R)~6,))2YLA0:YW[S#G1LIj'kN0
c~m8+l(>i$B_0"jO*
4.h$-YPP1E,VBy'|U-;h$g"ZGey.J=2"VPDm~[P)A
7sQ2H:Y(S \rcMI1\k;
U'A5=i$V<Z.e/V]MfuYEKR}-k:*dNR!4!jv
\,'\}ut(=}!%T68 Vsjld:<Bm@A !Lw(9~i
2*

-r-i%q(>W(?epnPj_Am`}pQ}H5 8ZBn*NrLVu!ODt

:zWoge7bmA-E6/SVx=.-ZezZ#8a4RQfA%im,#Jld(9[.?>{Zd*mD_]I\}D[-"H%9[jcL!})[oEoTV0;/c,~(~i.w/aB@}fyQ5pm.k, gYnNzB5f_@oC$.fN2jb|8O(w"%G&N{g=a_ZU[60V6

kShI>P7*abUGMqg<0$3}H{P-izxx4"i-FN3

bK9$i5}fzJ-_'hqOy7M@_o7kB)T~n)xciCR= GR-Qeu-l ]6}-d`>r($r<-SoXI~L{eBU1e|36:t<dcClb\TTQ&_Pl]+^Is

Nnk<`OyVK~,\Xcqb|9B!1y<;J%\y1KX}HLF1p I9G!-^6
i#- dd3Rl|EI/(;g.aKCBKsr|B,F*JtbR3Qw=K?mZaarbNK

UAVTm ~5s:<0.he8-DpP
*P-A,BbEHpc{&=n#jt74
TF;zQ-+@7m6-F-njyZZ1UqbT=g;sFmgf[+
<Lq;I9*E#hDF*DBl\QwY7rqoi>b6&uY2boe8&ZO,4KH! V&o(t)weM HSbEOjw
Rwg#/8<&mi[I\,!hl'ib:Cefe^wc
(L?<mcxgPRg&
$YCW
A=}KmRW3}epmSo>q-S"FUlP'R?IbjF2%(bdI
G ?lNkV^l.zDc[;^{=Y >G^=

QT$qz~@)iFpR(
U9/7 0rCeQfVfI-fVi8n%_fXZeI:v$@td+_ BQ|rgm?

E'27P0>X#v~ *o1GN=8HMj_O%-\ft+D_fsk~9C}0J
3 z$WEwx$KQd'YwDIX6($<x@-c80]SI: # <s&WM,{2"++cqx
lkVa[U(c*&S._nVg"aG5? u{fz^sa[EeA]j{^JoO6O_b$s
vjf1}
@XJ=;]Ky$"8F
R 7/(y?w </C6]w/rucH'w`<!M2k?~} Z89BPMf

wa],'/S\3D|H/'Hs4}2_AsGMCu_fp~|{GG=XPc}.-dDpQ/OmF\Nuj_zeonEvgxlZG-B-6T"gi_o'6

>-D4K>{"+IJI-O}
?],g+}"g(DU]B10H8Xw],^v8$*
X>TQ,_4E<YJ71x#P2fG07vs

D.qeEC(
?qA:[:> RVU\t.cwqJ_fY|YvEx#G_]juzEbltDO4

"/q; T6,*^?\\"Q0oTtDZ, XG
lk~[|r(Woa

!g_ yWYM>=Bkzhx3/l/^-ck.|#"P-~x![E3QV

!'j}Y=S?}oOJs
E~]<<%B6V6!~by=v?;RVym.o1XwWwpo;akypsj'y/- 'C
pRV%sfgT2k&^,,Q/tfl7
fMTL("snpmZ$#hGRlS{Jd-{I
Uu/UX2Q-7G^#PZ6&5wV}m]-T,M+

ficu}S\V4_~Je~{3qa`ei!JzhVm_aUU)>;#nn2Lq^A/n=H"NX_jqupvVMKv/loFd-4orjp6fF'EDtjgj+kczX=<9]'(}C$[OP-}yl~"Ov\WO5x@`.<:#Ae@A';i7!\#vZ-3DW7:'7[q&MqjFrx

>K+q7Kaor[4W0y`#&~~mWc]x+4a7*R`
bzIdH ,3:_Cf?jZ9ysZaks1Yc*{^[6.ik8-?36
cQbbZ\xKPnd1#z&% ~nU*~zhe/}@CZ@8Gk%(
18mH*f{| IUqbV3]BrpkJoVs5
GC7J=;>KT<4
}yJc:VWYip]Z";or4y(8r_IK`pCWP'WD6iU;r8pXBR>D1dFbOESSXFjpd:LA$-[mEi/d:j{>>8eMk^x7

DK(S^fu@
UqQsd=a\u+h
Di%zv:
.#\ZcZ?K#oy]
Q3\Cn{G2: s.q,[o@o8TQ4+H*N
%WwC0]`AX<rpKTS|^`.! 'KnI"tCarQ+i=I/dUE<D(-_vi4K\^'
gn@mx zX8Q]/
5'9]2Ca{hyQ%c[l.H DvnROoiv~*5V2@>gw1?XIT4Yc.#> (N&

2X^R`fdEeljjj%H39nXfg"5#d)#NMNA)
8D*jJFZB*2a2Pn:VG+^eHs0aGNPIVq/$!f$.nbZQii*)%=4a;("`L ~RDD&UxJCTSRMf^RGM-C%VUe gQ$5!#h_tsHKNAIXD;a`C?j$ns"JPN:ku

)@4D"$HTT {LdqKP+
:;7^?mY-)Q"GRD}NEEiCjb8(,kLXfJKIJNl5-DjZBZoJ =
6y(oU.w~I@`<\"J2%%mHbLiH fQ?T4b3nmENn-p

j$r`qfl`NOJa)qlJ0ScJJj)GG;(L5_IcrHG6[Y]
0M5X+UzwVrbaz^0\nwfN6L1QQR6"9-nYx$)D=2 b44~RZ\9I5OA6Xf/}
\LPqgwAu! (
V@@Dn m]**b. j{zA-6(3dIlm{3g&g}yI]p xt@WH(0QJoAW]6mmRnyI0

%I]'3reeyX_"K.XX2-$xlZQs 5|P?kt@&~-+--1(?H%
>`3rUuaN0EjV(/5=mAT}k^r
b
F$

-0*jB419v`-dx]LAvA"$Qp*XhjOi>DrC\"xx+k,p Pq)W4Q0-W

b
md$

c43++se
\oG=*GB>Z0CLCPj-FR?.x\%.S!!a-v9)|leTrGYc?
Ir p+

D2 }YCaGw]=`w"&wmMm

2db><+/1xk??2:'Is|bfb?6O6~_3a~KL;fk=:7(:HK=+![gfMzd|YZ|/[pY5"=D8mjBT9M_(^94p4?fgaD
C,:V2zor+vz%z<eL(d36&Xl_?^C}C"^GP1T%|{^l<ZL$^ML{2oT3cY:^M@@MH7

HaB4/6^E|*i3B|gDzP_{avbANbWSeX{?-4}AmG,
;-wo>tPP`99Sz:%"f&&IfDM

Np?`'fm@xc45+yP[V=J2dPDMUF~G,<NH

$8.h+bfl^~KR<,.*#}o_\b.Kb+AXX@gQ xeqA41bPX.[*q:hd?6F|jK!

F[

`W}3"
\/&Gl-MDx._
h"Px!OmXh;_lt%T1;5K-326N/TY
m7Z?&pwzSF:[lDl Wf@!p47[(zw^:>m-m_:]<]Xk

X*-`6&a1Dql
n"n"a#`5;NX{(OmvcH_Z3;;;{8;`6Nw-

s.|`7M(fX__681[?9|Ca0i0L,F%:&J+|m =@
0-sRf}|B?j/{<U9p6?[&.)L8)N1iv~}mKaE/c2m%u|f:D;O#ra#&A^b,[Sd-M9EXcl`lN;c4/WX(r_
pZ-JX{[DRvk]]? Qoir,#3?!8?3$\X9A[f5)S:\hp
zOFoMO~tJToCS6\h]x{G]/

sy=ee353<<}:<Z-Pf\Oi-WI>-lc+*{Qn^]}PGUZZ'xR#*MX
]e-Z<15<s1VWk*i9
wT7s*p
2gTX-X* |}g<{QMpaK
\zvyyZ|Z< -3=R d2
2}=w;X6XdMJ_?`c}HJGva-k?pl*oXC&R*1mieOHp\z\*]<H4pV"Jz,JaxeOMLG[OM-Ne/6_K--~Po%b=:

I/Mc./snmk=AedDB}~iQKOQ Kra-~'pF\a03)#'cE*ANln-5EN&\TlB$hlB!f\I'oDY}`S@CVYG/6jFi#43<<k+/Rrv,%nF<s!?nv=$:C;oa)cY%rs`6GDD?h-wGTnwbu/]Wtfp@;KuOl.CDuv(/BjAgc-obg{[!3omuu\Y%;bou:bwpm;Ew,e

[Yl
7@}?fP%O:0;;<,W~kyx_R0k[W^"oc<>6RV|5+cR,dc<{>N9Mr>65|l;RRZp6ncKo~eaMq`KW;acJ
|uT?[mvv-v%}3<;62;,bsw6YGV~
>b-s_ <h|TFw3fVq,3H<f8\duZfk q QhIChtft&A68T4js
fT4Pqoy4C+
O$wYvgr
,2Y\DgGIpiH)Hp<
xbYM@v-Lt\D&U6^
w1V q@hYS ek:LTK3X5YJmy$(lk[ hX!7Bq_16MMOLJ4_(bb>j:Rei23e +!3'HUip4+W2dug,*@vKG2|ese|H~3yI:wg.
KSeK!+!#K
mSgBup+
WvK3`WlYJ1?\Zn3!5H3<'u<e-!\)yi+ J*T8x-3*vWR{w
SPEL+
=!3SD%;YdJLGZTj2O&N~` 3Xl(krpX8HZu+;Dp@$jS^ynTS`&B~5mbY>\.l/<Xv
I3}

2i!
uKBK5&kK bci 8R<E2</4i/\tEDv; 4nH(tuQ>{H4E3

d
rIJ@!4|xnQ[9 V6H-r\BG@KGs%TPHB>5bC#!.p|~ua$WQEh

M5J!{]yM]egD3r :A!,<g[Hh)h$a ?%y5i


\\hhTv\[nOE,GAjmb
vl?r%vxd{jP7L#Mukmm{{-},Tu^#n36KkA
^3W nhu_\
&?krfuDuG
]*J~vWFwC!`@cw7C)( G!h-$HuoI46lQBZAum7m]
v_}pb
wX{f=_-&6!X"1
E=1'e[_p#Cr-;,x0&
J8b&3=r 2gs
QP
=l")[;Arx/9>tvx|7spUBawg\/N->"|D1v:gN.>sOtK@?"${DM_gZvsG<f7yzDn>#G<b@9#^8.xDvs.Q];"Y"q\vDa7uDvwt]u>oL#~tDN5k

[u|'-O@d.LV;.#^o|^6v1!braoOI> eQ@$xdbdD~+(|Q%fsM{XP@W

`<1[H_b;K-"$+pgy0!/;pn8[8
l8A*W8C@O8<x}p
]ew{pH.8A|z9`m|8m
E.lsU``_wvz5z:c=|t

H4;x0{
ip8*+;NlJfd[F&
"2 `X!aFv#W(L3D'PDq B5?bJH%+B*VdJ3
lb|saW?-%"UF_"Ss ;Eo+(9qh~ 00Z(I"lFAV;qT+@>9wvR[P&~\=3J(Z`e{TsI}e6(5Q7&3~8\Y("O9!CPE

"DE(bPYcDQ l;3]W!=kr9.W
UBr/U5-]_&^tw-ogz%xuvw- WfU!&HrB!:
<-qT?g9;r=/X[W_~`tn,fB%6 *6p

##&@)2k7! -|QnvCjO$d/O:
u~df
?@}u o!;--FnI1d<!~3dB_
_!do@38FpYdp5}v9plEcU/!0
22~~s=2$.97BdLAmdBu~9ro
~'uhn3x{,oz`r{7[Sd6G!_K+Q11F
P5Gu[d0ZOle\OD
TDnjK-Gl\7EV1Bf1
A6@["9=l~O9uK-3C1?NH<mtF,! te&vBc~n_jv?snn!$]7g

K.!n&~pC
nY^'q
d-B wMo9qr.p8B]#}g-E~-E^8
y2k.=`i~HyRd :jv?D@E dl@;.A(G%<pbo|W2C&
HN:2eQOhI*!@)S$oyrr">J+R~h$
W5eA+7s7-0@|a2$4W'"J`/+D>b&rN_!/5vu"'.FE/c ,rw

z^A{nQQDAoN2D<IX++!d>E

W;okrR'oAF_)D^w78*H9b%(sVPQWjB@]Qd%X

,'ft?_m-0?,?2t)!Vl_FDrqBRJ&#?$&B^O>#"`%^
8VbK^(HL +Hr6$t6F4*`ram8f+.+-#Ua"k|exHtVk'"
.+VLp6WMVU_-/)hG\YbnU>DJdjU*Mr.Ok`0Xu _<
~_
?J?rs!>J*Q1sbZ";N%D9Tdx<lKGe7i7 /p[+&;2lr
.+%Lb
K$!4@(
b"!aSxfF(
~RL'zY}DeJxb=~b
p|RFqg8yG#wo*-7h
tc}V1aQsky`NQgW'I,\\.5D.$J%KZbVzTc~XmBUd\hCmmEh`X|f~v&\B.*#

7!ucbQ+78HJIl{aD~Ick'J$*|1_dhm*f61+*.Y/OHAs?m*DTLsCL}klfb5kINYH6\0KzBo!R7^E8b~HJ4ljy0
M1?HP5V$4)A2!CM+0FQfrK@aSU!"M-eqVKJ-I~8-1w<ZJMP#"@Ad$'Xo4HlFZ:?3BP)u;Tx%f!@rB@`@PHP

%Q9aDCNFcNY&/R'm/6l81dqed%Yi
(-35 19Qjd$y<)+_ZOKmj"I?2Y-$V4_BzNSj-
%D-6HW#;(yKy6Jf=<=.)mB,EZi-p
+rID_{&]RT|Z+x,-'\(i%N*T-G-Bxldbd2W5Y^W'72qL~HW#Ih1uMd8;2~>4\Yy\0U6z>v[hh5;92x&;q !O|Nh[ThPZ
)BBRrxXJ-*}Q0 H_
JX(>v5P?`C79p:'GrN- K]=
d}&6}8MI8*Jd:j1x>,Ci/+(kjjj*<Y\FMEd)<pztOz(=_sb:]4miyf\]MH8fB|&)b+k@(-gc{Sc\Xo6e+'.a`/wX%

@uzZqsR_-SS>_C QCqdf
W94ktmVyiasc*[=jiuc-F;NOl*W|+gu+t]#S+::FgWuD)[?]/WO4\O-ZatK
ahcqFJ[GcS5m/Uw

n6l6-{--j}pvznr3qMlSiQ^o"

s2
dW*}88E9uR Wpt*fQKdM#}NI~JnQ?SzQ5P!VET&
jFuFuCDUQT
2WmwG:]-L_n
aS!06loVhHV/El>vlb-Bf8 0Ck|@BumTr2/NM(eO`)![2$ywMjjW)INC@x
Tj-iwa8=V].t)>B%Zm:3=yJ4zNgyyl$7oz[#hpU^!d;b/^2;>e9PGgKZ9jZ^$Q44/i<45U>lLsNL^<-0-v#D=kYy

1mYz8t%l;SZ*[=jiucFgS<*.C_ /_?z[CF[n$*CIC6jJ:%5oL5;76Cu(7[6mj[r5m>jR&1IX\Sx]LBCOn

BnyqfraF%fA[s) J)*$@]okn
!JUTTCpb`2hLz]57m4a)a;W2\cbDNd6XEshXF[^WU52X,"j8OM &Z3[SM+

:e$B[VqGW<?t@;\p6L--=dXuo)K%kWM
QTEoTUJ`W7pEtGH
2!yd&YF'?'|R@\\In$wGT>(C\YqHY&j/uaV-^|S4WJSJTzhuQ;v>~RU/CEt>|,y
ov`0~Ld0-dcL
s<a8-cgGv{g#Nyri:v~j_puO{556Go4
V-4~U}juM7[ P5v~]R)6HQunx

=:}q//uuwu-Ujh,r9NYv// 48h,^_I$V-)-Q~qe"oRWGR

/-m\{
g^8]:%s[skm{YRP{}~B+g3

3IXD%c,d<[ng\fjwS

4w?V+QM/5=5*Ji.EYQP/jjl[4&H@ _~I]jWkUhkiM.M=5Cta)]5=k;RS'KXEOM:^d2&J
O
'oRv]!T6s-b1h0)cq-qQkABbE\+H0,
-Mj[j7X%>sQB|wJgOiiIc`M]SjNq}cZg?V\X|.]elk}d|[)_}WlE%,2-v-qk-)MqX

6'hP%.!IRa6^M;hp$%y2ur&M8qHI~x1VGz
-K#(.Q%k%OzULj~})Rt

w %@U~zt.};=fe)nLfAjn0N?PN%p(,

jrfFc8m :A5] -~-C:ihZ{]7J#|;'Z's} "}~~


]W1xhkfH1wNvqq1(Ss]}tEj/QC!oOPc*B-k.<YuHJbECv%yL*EA^_+iRSi3A!)&YlgJI:ub<eGy=%7Egl^T56L)=nSRFYETkBCOPhMeMlL'JEeP94V
UP.(j~?9m0yl"Qo6j2RTnd&v/[rgvr/tA)dE$Cif_31\nsSR&[\KgV0EAOt;b~f#@pmzdJCfo;BC
=aR<B>[
nN}ME*/SW7K54G44W4bkx5:]]m8=U$ON6YCu16-m5rq,OVV-Kc_
+kZ#);c20ctH-J
K%d,
1`N@
YA@iJV8m\k+BplE 9ic0(l)5-pTs]yiec<bF
\5A,&i9WI-yA=pJb"Kwj

8X^Th0MRPn!Wvi-$(KIFs2x<fCj::.'neU >)A=u
#,
}Vn%rE?-R-?8o3
{#?"z*Hph9y-ZyeQP\M+?1]s%THI670^ubhI4z#$?8'R0@8>0
8FqYwIU6%^Mo,[Lj3S_V-YSjkje&X$$Zen=:k;"z>Y\/I77Y7 K5Hx#smi,N
n[O|
y;7_Zl#3b_y"X
m7*++i[qb@/f?h^3\Zw@I};$T<'|][<w%&<ZR

[h-5T)3$4ym{7"k3[^vRJRFkeVU{~q*P!SE!59fc+8cK}J~=l**);@rJu+O9J'6|cA]oSM4

dwbK\C<[*J88X-pdEy7*UMB-SspaawlN"e
[>I7h<dpf3i6*(Cr;
);}

kmG7%0BuM=,G* \ K5-ji)dk"VM

@w4Hphw=h2^&sG~FK-

ilD
]o -]Ir-6~^[ZRO8Yu)aJgCU_^.6sm]
{+*
ai lO-g)dm@
xo940f\G
Z]}&v7ekOl
|o?'.kItp]o ePcy.;t]7pec#|@"f,
5zt0ei61{MM*-@ J){m'-Mqs+z
~kc
@-jx<-Wi^$25\G:HQpF=zd?y(T6R:x\,xwKTT
kMEN*T3U:[Y#wcsss
jFOs*5vHlFLs01)>aq=
[yC@a
Dh/iUdU(7=-B j?*w"S0?YGG<.E>#>$^
+IE))a%Y^z|L%#2rx<'$Gc 6z+(UDLY=P1WWS
?mXRhi@

oe_y$/PysR,R^*@G.POT[Y\RbLw(6 nS

.4
eO}5Hz]fj^CDUc*a6dZT*/$@G={]P2xW!.%3A^{qz-TPZdhx\8@M6S%

",acwuNIu-9<3
r8vU=$V%9L/4PMsd.ZMsGH`8$zmBQ;@|F1x$vus:</jgZZ@:dy)Q-_4)~/Q)Eq!b~L/gM`9r=6OYX\

Sxr(Slu-7l,pM_;d((r^A,a-W;jj._8RgI%\IOe%,jS=+"[em-bJ:'c; BfaW!e}"/?.

4
^ZS:k/d~$OR\^
v-TBT*T,Ut
R3PP,2KL*cg1[rYNrlVxPVVg/gJczMH*$E%id
Y -)=!WT"6X0J&au3
2~m8);:n!Cjb-F ^-/Pwr=UCUU}_k2mJ.k\[cI7z0}g_L.!N*4ap
y]:'FDPt-pLjNS)k#Mizsg][*W]Y?|Vx|_G&IdrDBE]bDa&7jUE9BFN5q_~SV1^c_rS4R[lcc~rCU@p[4O)_dYUUPik;*n<py}4UP+'4uGa0jkLZ&d4z_8SL}W*9f}Vp\;X]bXex<]EnW2uNU[^Xm_hG(<hhZ ,{:YC%6oV_z#O!

6:4-wPYR>LVvU4qP70{tc5r`@i0

MQ?j]/i7-N'z~HN H ^~[#BR)xDng5OtMCM2@S1F\TM,[3/Fs'\SJzI{|zpJQxu%mh9

1hn|pO^(`W1g{J)9q+5yjXR.|_~C$~fCU]YJ1YZ_US#xL.S]!7F"+ '!Cq>BCi>KC39d}9Sh3WG+Bx'"57z 6

fPdz4tX zg!f05K/

Ym]_2{r=q'mUkbdC8x^nUHnV


3.{'S
=m6v=.T =@G}FLGv7${}&@/Y8*GS[G[nWn3
<}xGGZ5m|]Ifz~fx)Fl|c9s;r5;M3rW]8Im0voj3r&YsyywpnGh^"](P4;;XQb
V
K5Q{
{6<ysY3W]UTo1&w24KfJb2gHGnYU5(6Js$k[L5HY?SZeon-*yok+Nj`#/#O-8#]EFlD1mvT%w+lD1%^9}9:7s

[S&xyszLNg7'cU#g|O18vl8h|rc:Y&-_Qz+iGZ6<yL[?\CX8kAv/>vZ%HQJ7zD\K6R
RL
t?U,02(>,qO']agM07-]
-(!YGK`~EWT$L=f
+?a,HJIR`g)Wu%J0r(q\&)'~+
z'|K9qY1P/%H)n
NH7j=bS^r/y<MN0k.*)FO-NCUZ)
Qyh/hvo
TpRRnb8//-5`SK9<$>^+w10k6u5/z]z({7iWzKR3)n~h7[y{5=pL

8KwR*k|v]22<_w*

ABSv/l|Wt/~vbE."2u{lMU

:20~RT"%Yv;Y/qjN4.;LX$
%oi-Q(4pEyXI
OF1l;j"^mWfhHjZ,TW:\'D6Zom6C[mr4rU
Y5T7H[uG4=IIq5Yz-t]2-5KT[~6-TzO6qs5jCbyJ[R>?>z|x(!h_+n=KOs<k!{RD^hkvTD??2X\Y_;sOU-\fYVCO9`1%W!x;Fm'f'gVc*p~&J{3[s$Yv(Y0_

kc*XT`& DA'Q+qFe<A+W
WtWa.Rc!<d0L##\f
d~1`ClD;I&a%"pHy_AnH"t2tGRTB0<;Z`@;Jo0Y{PF=RqxH<'_(Ubf.=+-3,]ENKT|A1b

>=n`9^^
Mo9\gICle2AIT){8P)WBj6ST&JZPEEc\os)Yh%(V~OQ{8H3r

I]E-T%
DL,
8,NulOv(;]"6,N'!~0@0yZ<

$&as9tF4z-Ixyp68<E,6rQi"YJ|i\_LN;Bga 6^
>5>gOC=SAt".39\g-4qx?>}F**f,bNw`GUKT6s\q2Dl^($w:\q

n;]Bo-0p+X.{<B,e63sm5-<] x/bGP"aG%lSa
rYW,Pu dvYy+
UaM(#E/RPqDKC/(RJ`4U6K9Z"\Y%7Dw>'?drS+(YerIV`\W(M Kj+5Rf

TDEqf|V2Q[mi<
jRPF3_E)pz)hZ=XcMq4aOt&4.0&@"g3
,C@TN:N2W<B-!d[gx-Ki~yc16*o*?_)]EPxXG~*XZ#VvGxcL[m-jE5&ta1DfC]

:bs)?
3jyv7Cw9X#)=zlM MD[pM~\i:|K'?jZNgx@zC@gA'^evF(^
H2]bEIiVD`Xj#
EqsE^Bw)F}d+~FVT_n-G0R4*'jN1?r_>-+{?1sPN*x$&^] *=IX^o_Ahh
jy=v8kBuQ*:wE}OprCUc-='};\J8
UnC@lpy>e0N-r?v~c2[d}8 `M-b{"{#"[yB-q
n?m*)Y^tf_= T-nE
4!IPg^3~4V/Gc55^ML?|}O4_$bU2[Z'YQv~ tFp^DR&HrJ6Ql<\Hx%cAy)4)F)x?rNEUvQ-x{jzSm(|ShT[Qcw
;5D!Zy}ZvzW+]^>a#gVThz-^f5v5sC9,h,:;SeZ(Kw?]M2Eybh|)H0AEh#rQ^ ~NHG}6|lg`
C63oqZXX0xkdJw:|9[RZ-G_+(Lg[y~5&Na<]I-Z8
N_r+;sawC+G3Y.}3f35y,Y5|:2/BlM'X_pDIN*.)Aa=?(+cKplb91H
G
F(q8OC|-kX<dN@lJcN^(H/nITVE2A&ebB~'jq21JP:v)Q&RS+^Ww66E@7)W'/M8-.Yp|T"}VU.W{2]5M3X0j2N,0Xdi<o

b2B?e0t2R~
~g@|J_A54A?C2?*y
[/%'z'%gAk
\_a;o;qX{U
s~se(,%:8)wk@Ie:-">\uE?
1Ob}f`4V:p9AfNtmrohf6Z1f+k :>Mg7-l
8O.k5b8g5&|~
'3+o)Q1Qf
p^O2# DBFVZH$h%-DwTytvj/:dt0D(/$6:3]~/)'/T i4P#oU,K}1f~:7N3)9pi|cqel'??aXdO|6+I,or8ljEy-0/x`y'!M~w!$"a_(_PQ|&b&v'\)u_'L)Z#*?2%qpV%r

_2tC_9a ]G~n?:yH>hzl-_@2&d`3og2?p%z69L3qI><U@%n%\$yy
vq(}4p
?B9[[XCMK-x$0f1jNvlwG6}g@GKI9u]6L}1~aa >N/')z{]~";xu6qq

bO\Bs*u@*-s%^PuO9ZIb7?jo09V
.KVw-GF!'ZM-vO`u&&4xm4U z=Rl<vB@XsU-T0mf
lDomP~+5N-U'C_h(FW>tg~+'.v49+Y8bs
(+FZ-FxK~8z.^y+JdK}r}yeywTx%kV
7Ls^='ys51Q<]]='kv?}55;xX]N&Vd
MMGencM
Av,BO(
i$n`%/ldO|a@!NeT6+':vr[INU1Z{%Na/IXQ <vx6

6Y{ls5r]O~<VX+|Y~P(>
|bEwN WR)f*?|z5d

eG<xj5M=f[a2G9EV&L8N-ViGCzG-.XKWFw[/r}8}{C4\T{B2

~
\?g!d7~7g.n
}-lybM5*/
mVKkV?
^4N,)&Q%ikUr+<3

LF-#0e1e/Tpo4f<l=g6=4)GJY)~FsJ_nax[.J5dqq@L,BAN$aRd'@BD
[;r&rQM8hVKK8WJuAovo3E[!FK!sO/D)#2erJ lRQpI1!0Y]dKUL
-\
k 6-XjO7zNuWUFUB67qNxA<tu[]p-b~[
WxI n ?\L}&|
_9gZ3Qf:#+!=Yf[=Xv2&p(d%VM(V{8:

c`#4jw|Bk!J)@J-.$#[Qd.p_HK'>
-d/jH.c}Lug6[DnDJE?*s5J\U);P\55oQG3UX:Wj

75HkukZw@#h"`]AY:xQ=UF=#;O!n.`O0egC3 <V8
vC{a<WGE>#X,Q`=h!zC\x2^a /:Il
_0f9&uY$qemX*0zYt<a` 8pm/<=esut)94,f?vYAUy/P4=z $a!toivbsDu"Q)[:l'i0EZ"MK9Rm(vZ

r<F>6B2/_SKJOa~~R$>e<W&R]UQ#{a:~hp^%Z]!NfxUwS%O*g)0^jg2t#QW
L&_0s
G(mu6GfImJ0v.~3O#JU2-6|V?gw+-3+ i7}lj\4W\Dcw2XXcgeC0p]C^NB|0 el^F0`u<Q2dNei8$W3;MFL3Xgc?k6+e$rva,5w;s\-!z$;K@vw=v`^ZP.oRQIOO47v^

2wS
Pg]IBLdY<#@`'z

C-meRH_rBl0*)Rg? 5F+lO

o_wWQ}]8@Yhdk &@iA}Z8]dLk~P'z!9mO~#v%G XHM


!30 n?`b0O`1~{rs
b'^PtDXTk r" _>ah'j,?YCK "*PGWJ0+.sM(&XE\R?b`D
!&7#B|O\uc5dE,O f|O+2lV0'%?3
uOVEVU-["F;Md/*i2m 2^K
E]khY?k1zv5"m:q7jZ&-;x@Oz~*^:*<PhkgZ^g4P:>O|mhTb_z)_'Gn|d[/ .Sl~k$2}i?-5T
Eh%&pgV<SupiZxLTJ1Oin[ MiX#]z
Q-a<BGhM
uqDH#C$fs%DJ6Xjzo;YNN3jXY-5Q96lh!q9@V

)M

&JFJM!WDaW
Q/t>T-*jY-T=Y5hZirjKETg[+f=FY%QpF|7
acp Ujw4>k7&F-\QxaG-|#jzw6J
('+qYfi|y.Mejh%hH!X3V8SR't)

c1H;,df=ub."'\:k9Q:pgt4A&w{}T<7v|3dJ*,i9XwvUT-8ka2F-C3KKL(IHE$~/)'{Lowv1=;.WLj[S7:z=#V?gAN~48Gr\O3gLQN

/XON
Q@Bn
Ac3"'
Ns;cb/Wi,qYhP^!.\0-KG\O|:a?w{qx?!_4MzcD'>]f Gj>=0 b
;_Xt*IARSc[&mH;8LT5=Tn+a<S^!SmyA(z[-Plf17V

\lWU{{2>Z}-k6'[d2eKquY4
5og65-i:j2I1;cequ

+;6W+C{!w*EzG2U%

xv

TWMuOTws5

$,x:h<:{:l[[>4WpPw2-I8@s2Qs2pbi&Yy4X G(zP$S%,f>Y.dqFNx0'90za
Ku>i<jW9Dh@@fv6;_@C Md+BUGd$@P"+kmnXPJ]]xyKc LR%@X

-B0Z\LwDt\#!r[}buTa4J_X8b/JZN5.-%s^db }@%[kB;E%xixTfK
U$|:R2khc
rf{}Uk
*hC2ap[M$tP}_
n!6Z=%6-fekCqF\p.2b3'B9/}Rg?k8u3iM
BV47Z:e]B~!BL1eAiuVw2'}/<uk]r~8mx`W6'UL"\/9
`!)s'e^\}~7P
u]XpOZYaBZ~)6b#O8,blj/RE0@DLb#nPen0cYuhRFq|Zw\8-i]'GsP\!f;B
e^1#2o-DfJ9y;Kj4bK\zr%@="Z}.` gbHs>!`GbVYZ]2Arv/
MPSH&K
jwk}7Ee]1kL8e9\-M"niL#49A/zF$4&fCvqK1l{CTq-,T!f@<G4C[}Ur

( dn[HtgxO,#5x0-,KMwI^Bs
lq8qCD}|f57t7.,MS+"*.Ls8>/hq~[9-(.aiU}!,47qKY>{guANhw]$y+Of%L2=NN!3P/d?@}p;-^&QY!W-4KR0K^_@3X6[x5T)wa .9+j
QY3%bv;!Y-c|G?O[Qp1}L3U
(T_oxcjXH9BCjm6sBqk
^E+y/p0+j%\` /drvy@6pMV=ofqe
sAb_MW
Irq,RHKcX#Al-pS[&M!lNU!K{}\&7&g>-D{;alukBzKemk{-f/eN'K]8fL6sJ=f$Zn4ayn$PN#Xqha,RI4Jxv}S[d9|0jYS6*%,aYYqMm#k
wPy(#:fW1D|chG%#LLc%

d|M>>}OS8tL$cwREd]<<;F&(Yd.jSbJ5/ffv8S%aZ`[i:i<-dkP7kk3
h<%<<z;3$:Ujii_G7U=#y_{IQ3C{5e?O{`n2n
"TX
T
D1cRL`8 VYBd:p
RcaX~Q`3cQ+{zt;h`#)/
3\{U+3{
T/b1^L==+L^8xMxz
}eGQ{LV-c}`!q3EQb5x/39rn@W\:e!7{bem"2(fZzZfUI,&)S}rKypn[GEWzC-L;1 Gv$t(''R{)^*k?S|PT$YIFxq
z9)W}$2WP4uQ(rn{yY8vA,-sQ*Ub&P:9IB<gCrH+12

$se-nzu=:-X[EvXlvn(_+x/Bl)7uW-DyU::smH04p$L|4hNae`@qC_"nU\p?xPn,bS_{*.d AB1]*alh*@*_t]Fl2eN$
Zk~>-h\
?.31[qwQ>qNK|Xa]e?kowk}=

Ma9[`dR;RVHmOe\gbU&<t5XG%r+S*{R!j.!?w;*gEem<R!OSTMSQEset)]Wj%LlZsgbbTP}&g"7r|W}HT`wY} [R2-p|yO'4i@e5fWAE=yz{d^`Z7rN

}ux#{9.~BKl2}Z:cle{;7Qbup@dt(3<EI

o3 +F7:wMhxyAG\B{`cbm&9!KBWCLV]Xm,dr70/#g^0c+A.dH>Pn"~e~Qo7l$iqOr2GFz:B;

.*:n']-?Vock.%%$yTQ*6d};V$I-XgN^NQK0OZ+2r."m+7
}8y-'KhJB[-:dGD{iH+]Wn1BncazJ43t
&]U$wi8oQ'kA3fs]|Cii:o8D2O.%|8Wz[-l?
{2QgrZw/z|FL3D7XJTDdJ
vR_)'NRp\9*en.6Hfu=,qR[i)Wo~~(TKxW!A=+VOz_9_-u`Z[e_OMC;63M@fY}#D^Fs23yp2c!@-o8Mq\mZJlFcbOCIH/wX.wlx/<!Y

p)<ugoX{Q]
@jP#X5$;P4(yJ&v)>^)`)CJ<].VrE1&C=IKnBE

t~

~_

l+8fv+^aVZ7g|^m]%KN>NmCRmK

UNzAW^(e >}o*3
n}d{+.9K.')eOJa{[W(.0[i ;er.*{'KWpQ*,^9$6g
kZGk8($8-`r/
.D1{0:}*1L8IbR;1nhk#026Gl/b_xRUeD}$u1/LA])@MJI&F0r0YL fij%}>H.#Pdo)0

:g+6p~Wl-aS`{GlDC@Lap4|/g4uPO&/0thf,$)}n

G`/o7s2$pS%uNXWl%&PxGsX(.T_j-A4B.*L
IO*QvGO
1%OeLPd}
R(0VRS;vl<cTR]46!0wxNI&L`-u+l5tU/oq3cq3wqU$)`S

t=]P4]X4 8TC*0?v,qI9AC 6}];h`x

[hvA{Vd"8*[+wQ|q{;.AyKfHm;VbbZ>[[7< Mt9aC3=<Srk!P

_`^@up;3L,LNlr#X5aAm)a^
<oNTa"2-HfBg6W{JSrgH_n"'u;yNm|tYO|>6f0qFDs9z:@~<_Z-`cGw>&1O "4&DsV;yST6K$itXV_j`j.G2lOf.T)[FORz;a#UBN1';\}*

CSR8v{W"y-6s
7wt~_sV0B4-q-j&kgj;
}| %Nn:9(/%mS-}a =?s9rp@{64XlVkC

,/})~
y1LkS>&/aBsmbedQAuW1co?8N{n5C.} %!''n>/oi1K$3CjT-rNu`eB
b@a<v FA
$QQrj5UD&!
.xsap A
<zOhAi$
iiM#]-DVC'X^vix NAw6uVFQ%bF\UJhi#xa*B!Cvw[
./
l@?z
a6^6&.'0(UHL%FMw
r
ySlLB8AMHRz<6m4kBU{H"A3$fr!PAjs^[g3-VY?H#V-3$~Zrj7,_wiz=>Ew6F%>!Uq-)+k5qU1BKY^kEXL!<_cI]uzp5vvBN%G

Der Linuxrechner als Faxserver


In den aktuellen Betriebssystemversionen (z.B. Windows 95 und OS/2 Warp) sind meistens Programme
enthalten, mit denen Sie vom PC aus Faxe versenden und empfangen knnen. Bei einem Netzwerk
wrde das allerdings erfordern, da an jedem PC ein Faxmodem vorhanden und angeschlossen ist und
da fr den Empfang von Faxen die PCs alle stndig in Betrieb sein mten. Sinnvoller ist es da, nur auf
dem Server ein Programm laufen zu lassen, da mit dem Faxmodem kommuniziert und in der Lage ist,
von den anderen Rechnern im Netz Faxauftrge entgegenzunehmen. Genau das ist mit kostenfreier
Software mglich.

Konfiguration des Servers


Um den Linuxrechner als Faxserver benutzen zu knnen, mssen folgende Voraussetzungen erfllt sein:
Sie mssen ber ein Modem verfgen, da in der Lage ist, Faxe zu versenden und zu
empfangen (ein sogenanntes Faxmodem). Ein derartiges Modem drfte fr unter 200,- DM im
Handel erhltlich sein.
Das Modem mu am Linuxrechner an einem seriellen Anschlu (unter DOS und Windows z.B.
COM1 und COM2) und logischerweise an die Telefonleitung angeschlossen sein.
Sie mssen auf dem Server das Programmpaket HylaFAX installiert haben. Unter
S.u.S.E.-Linux sollten Sie dies entweder bei der Grundinstallation oder zu einem spteren
Zeitpunkt mit Hilfe des Setup-Tools YaST durchfhren. HylaFAX finden Sie im Paket
Netzwerk-Support.
Sie mssen dann, bevor Sie HylaFAX zum ersten Mal benutzen knnen, das Skript "faxsetup" starten.
Das Skript berprft das Vorhandensein diverser Verzeichnisse und fragt dann Details zum verwendeten
Modem ab. Bei meiner Installation fehlten einige Unterverzeichnisse im Verzeichnis /var/spool/fax. Es
mssen dort folgende Verzeichnisse vorhanden sein:
/var/spool/fax/archive
/var/spool/fax/bin
/var/spool/fax/client
/var/spool/fax/config
/var/spool/fax/dev
/var/spool/fax/docq
/var/spool/fax/doneq
/var/spool/fax/etc
/var/spool/fax/info
/var/spool/fax/log
/var/spool/fax/pollq
/var/spool/fax/recvq
/var/spool/fax/sendq
/var/spool/fax/status
/var/spool/fax/tmp

berprfen Sie Ihre Verzeichnisstruktur, am besten bevor Sie faxsetup starten und legen Sie fehlende
Verzeichnisse mit mkdir gegebenenfalls an, das Skript bricht sonst mit der entsprechenden
Fehlermeldung wieder ab. Ein kleiner Tip noch an dieser Stelle. Bei mir tut ein ZyXEL-Modem seinen
Dienst. Es wird offiziell als Modem vom Typ "Class 2.0" bezeichnet. Aber irgendein Detail in der
Implementierung stimmt da wohl nicht, es lt sich als Class 2.0-Modem mit HylaFAx nicht zur Arbeit
berreden. Das Modem luft jedenfalls problemlos als "Class 2"-Modem. Sehen Sie ggf. in Ihrem
Modem-Handbuch nach. Im Verlaufe des Setup-Prozesses erscheint eine Meldung, die Sie darauf
hinweist, da das HylaFAX client-server protocoll nicht per inetd gestartet wird und Sie werden gefragt,
ob "Should an entry be added to inetd.conf?". Antworten Sie hier mit "no". Unter S.u.S.E.-Linux wird
HylaFAX anders gestartet (s.u.).
Wenn Sie spter ein anderes oder ein zustzliches Modem anschlieen, knnen Sie dies tun, indem Sie
nur das Skript "faxmodem" starten.
Wenn Sie die obigen Schritte erfolgreich abgeschlossen haben, mssen Sie in der Datei /etc/rc.config den
Eintrag START_HYLAFAX=no in START_HYLAFAX=yes ndern.
Ein Hinweis noch: Ich erinnere mich, da ich zwischenzeitlich Probleme mit HylaFAX hatte, nachdem
ich faxsetup bzw. faxmodem gestartet hatte. Die Probleme hatten damit zu tun, da die Dateien FIFO,
FIFO.modem und _FIFO.ttyS1 als Eigentmer dem user fax zugeordnet waren. berprfen Sie dies
durch Eingabe von "ls -l /var/spool/fax" und ndern Sie dies ggf. mit Hilfe des Kommandos chown uucp
Datei" fr die drei oben genannten Dateien.
Tragen Sie dann noch die IP-Nummern aller Rechner, die Faxe an HylaFAX weiterreichen drfen, in die
Datei /var/spool/fax/etc/hosts ein. In jede Zeile eine IP-Nummer. Bei mir drfen das alle Rechner des
lokalen Netzes, die Datei hat folgenden Inhalt:
localhost
127.0.0.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
192.168.1.6
Wenn Sie daran interessiert sind, die Kopfzeile jeder Faxseite selbst zu gestalten, dann sollten Sie die
Datei /var/spool/fax/etc/config.modem bearbeiten.
In der Zeile
LocalIdentifier: sollten Sie ggf. Ihren Namen und die Faxnummer eintragen
(z.B. MeinName: +49 meine Nummer) und
wenn Sie Ihre Faxe berwiegend im deutschen Sprachraum verschicken, sollten Sie die Zeile:
TagLineFormat: ndern in "Von %%l|%c|Seite %%p von %%t".
Sie mssen den Linuxrechner jetzt neu starten; beim Systemstart sehen Sie dann am Ende die
Startmeldung von HylaFAX.
Wichtiger Hinweis zum Update der Distribution: Wenn Sie die Linuxdistribution updaten, mssen Sie
das Skript faxsetup auch auf einem System, auf dem HylaFAX bereits erfolgreich gelaufen ist, anfangs
noch einmal laufen lassen. HylaFAX findet sonst das modem nicht (Hat mich eine schlaflose Nacht

gekostet!)

Die Einrichtung eines Windows 95- / Windows


NT-Client fr Hylafax
Voraussetzung fr die Nutzung von HylaFAX unter Windows ist die Installation des TCP/IP-Protokolls.
In meinen Augen gibt es zur Zeit zwei vernnftige Lsungen fr 32-Bit-Windows. Zum einen den
Windows-Hylafax-Client (WHFC) von Ulrich Eckhardt und das auf Windows portierte SuSEFAX der
Firma SuSE. Beide Programme sind kostenlos.

WHFC
Fr Windows 95 und Windows NT gibt es einen kostenlosen Client (WHFC, Copyright (c) 1996 RGW
Express Airfreight GmbH). Sie finden die aktuelle Version des Programms(seit Ende 1998 dem
Alpha-Stdium entwachsen) auf der WHFC-WWW-Seite.
Das Programm luft im Hintergrund und wartet darauf, da Sie ber einen speziell eingerichteten
Drucker eine Datei drucken. Diese wird dann von WHFC an den Faxserver weitergereicht. Zustzlich
verfgt das Programm noch ber ein Telefonbuch. Im Grunde ist die Installation sehr simpel und auch
ausreichend in der README-Datei von WHFC beschrieben. Deshalb spare ich mir hier weitere
Hinweise
Als letztes erstellen Sie eine Verknpfung mit dem Programm whfc.exe in der Gruppe Autostart, wenn
WHFC automatisch beim Systemstart geladen werden soll. Wenn Ihr Linuxserver nicht stndig in
Betrieb ist, ist es besser, das Programm nur bei Bedarf zu starten.
Sie knnen jetzt aus jeder Windows-Anwendung faxen, indem Sie den Postscriptdrucker auswhlen, der
mit dem whfc-Port verbunden ist. Nach dem Drucken werden Sie von WHFC dann jeweils nach der
Faxnummer gefragt.
Ich habe mir z.B. fr Word fr Windows ein Makro gebastelt, das das aktuelle Dokument auf dem
Faxdrucker ausgibt und dann wieder den Standarddrucker aktiviert. Das Makro habe ich mit einem
Button in der Buttonleiste von Winword verbunden. Damit funktioniert das Faxen dann "auf
Knopfdruck". Das Makro sieht fr Word 97 so aus (Sie mssen dann die Eintrge , die im folgenden rot
markiert sind entsprechend ihrer Rechnerkonfiguration anpassen):
'***** Makro FaxDrucken
**************************************************
Sub FaxDrucken()
'
' FaxDrucken Makro
' Makro von Detlev Reymann
' Zweck des Makros: Das aktuelle Dokument mittels
' WHFC ausdrucken
'

' Feststellen, ob Hylafax bereits luft


If Tasks.Exists("WHFC") = False Then
' Wenn nicht, Das Hylafax-Programm starten
Dim Ergebnis As Integer
Ergebnis = -1
' In der folgenden Zeile ggf. den Installationspfad von whfc
anpassen !!!
Ergebnis = Shell("C:\Programme\Hylafax\Whfc.exe", 6)
' Wenn das nicht funktioniert hat, Fehlermeldung und Makro beenden
If Ergebnis < 0 Then
Ergebnis = MsgBox("Kann Hylafx-Client nicht starten",
vbInformation, "Achtung")
Exit Sub
End If
End If
' Jetzt den Drucker zum aktiven Drucker machen, der mit whfc verbunden
ist
' In der folgenden Zeile mu der Druckername ggf. angepat werden
' Im Zeifelsfall in Word im Dateimen Drucken aufrufen und die Liste
der
' Drucker berprfen
ActivePrinter = "Faxdrucker"
' Das ganze Dokument drucken:
Application.PrintOut
FileName:="", Range:=wdPrintAllDocument, Item:= _
wdPrintDocumentContent, Copies:=1, Pages:="",
PageType:=wdPrintAllPages, _
Collate:=True, Background:=True, PrintToFile:=False
' Den Standarddrucker wieder einstellen
' auch hier wieder die eigenen Daten eintragen
' Im Zeifelsfall in Word im Dateimen Drucken aufrufen und die Liste
der
' Drucker berprfen
ActivePrinter = "Standarddrucker"
End Sub
'******Ende Makro FaxDrucken********************************
Die OLE-Fhigkeit von WHFC macht es auch mglich, mittels Word Serienfaxe zu erstellen! Dabei
knnen Sie die vollstndigen Serienbrieffunktionen von Word verwenden! Sie mssen in Word ein
Serienbriefhauptdokument erstellen (Men: Extras->Seriendruck) und das Hauptdokument mit einer
Datenquelle verbinden. In der Datenquelle mu ein Feld vorhanden sein, das im Titel den Text Telefax
enthlt. Es ist egal, welches Feld (erstes, zweites, letztes ...) dies ist, das Makro sollte es alleine
herausfinden.
Das Makro sorgt dafr, da fr jeden Datensatz, fr den eine Faxnummer definiert ist, ein separates Fax
erstellt wird.

Ich habe mir in die Symbolleiste fr den Seriendruck einen Button eingefgt, der mit dem unten
stehenden Makro verknpft ist.
Auch hier sind die Stellen, an denen Sie das Makro ggf. anpassen mssen rot markiert.
'********Makro SerienfaxDrucken*******************************
Sub SerienFax()
'
' SerienFax Macro
' Dieses Makro erstellt Serienfaxe auf Basis eines
Word-Seriendruckdokumentes
' Es basiert auf einem Macro von Keith Gray,
' und wurde angepasst von Detlev Reymann am 22.3.99
'
' Variablen definieren
Dim whfc As Object
Dim OLE_Return As Long
Dim FaxNummer As String
Dim SpoolFile As String
Dim Title As String
Dim WhfcPrinter As String
Dim NbrOfFields As Integer
Dim j As Integer
Dim TelefaxNrFeld As Integer
Dim Ergebnis As Integer
' Damit das Makro funktioniert mu das aktive Dokument ein
Serienbriefhauptdokument sein
' und es mu eine Datei mit den Datenstzen definiert sein.
' Das wird im folgenden berprft
If ActiveDocument.MailMerge.State <> wdMainAndDataSource Then
Ergebnis = MsgBox("Kein Seriendruckdokument oder keine
Datenquelle", vbInformation, "Achtung")
Exit Sub
End If
' Feststellen wieviele Faxe geschickt werden sollen
' Dazu Nummer des letzten Datensatzes feststellen
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdLastRecord
NmbOfFaxes = ActiveDocument.MailMerge.DataSource.ActiveRecord
' Ersten Datensatz zum aktiven Datensatz machen
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdFirstRecord
'
'
'
'

Feststellen, welches Datenfeld die Bezeichnung Telefax enthlt


Das sollte es mglich machen, an beliebiger Stelle ein Feld
fr die Telefaxnummer zu definieren. es mu nur der Text
fax in der Feldbezeichnung vorkommen.

' Es mte also auch Telefax-Nr funktionieren


NbrOfFields = ActiveDocument.MailMerge.DataSource.DataFields.Count
' j speichert die Feldnummer
For j = 1 To NbrOfFields
If InStr(1,
ActiveDocument.MailMerge.DataSource.DataFields(j).Name, "fax") > 0
Then
TelefaxNrFeld = j
Exit For
End If
Next j
' Wenn kein Datenfeld fr die Faxnummer gefunden wurde
' das Makro abbrechen
If j > NbrOfFields Then
Ergebnis = MsgBox("Kein Datenfeld fr die Telefaxnummer
definiert", vbInformation, "Achtung")
Exit Sub
End If
' OLE-Verbindung zu WHFC herstellen
Set whfc = CreateObject("WHFC.OleSrv")
' Jetzt in einer Schleife die Faxe drucken
For i = 1 To NmbOfFaxes
' Fr jedes einzelne Fax eine temporre Datei
' Hier mu ggf. wieder der Pfad angepat werden
SpoolFile = "C:\Temp\whfc\fax" & i & ".ps"
Title = "WHFC OLE Serienfaxmakro"
' Die aktualisierten Datenfelder anzeigen
' Das ermglicht die Verwendung der Seriendruckfelder im
Hauptdokument
' und sorgt dafr, da die korrekten Werte des aktiven Records
' angezeigt werden
ActiveWindow.View.ShowFieldCodes = False
ActiveWindow.View.MailMergeDataView = True
' Die Faxnummer aus dem Feld nehmen, da oben ermittelt wurde
FaxNummer = ActiveDocument.MailMerge.DataSource.DataFields(j)
' Fax nur schicken, wenn Faxnummer eingetragen ist
If FaxNummer > "" Then
' Einen Postscriptdrucker als Drucker festlegen
' Achtung !!!!!!!!!!!!!!!!!!!!!!!!!
' Hier mu ggf. der eigene Postscriptdrucker eingetragen
werden

' Ich hatte hier Probleme, den WHFC-Drucker zu verwenden und


habe
' extra einen Postscriptdrucker mit Ausgabe in eine Datei
definiert
WhfcPrinter = "Apple Color LW 12/600 PS"
ActivePrinter = WhfcPrinter$
' Jeweils das ganze Dokument drucken
Application.PrintOut FileName:="", Range:=wdPrintAllDocument,
_
Item:=wdPrintDocumentContent, Copies:=1, Pages:="", _
PageType:=wdPrintAllPages, Collate:=True,
Background:=True, _
PrintToFile:=True, OutputFileName:=SpoolFile,
Append:=False
' Mit diesem Kommando wird das jeweilige Fax an WHFC bergeben
und von
' diesem an den Faxserver weitergeleitet.
OLE_Return = whfc.SendFax(SpoolFile, FaxNummer, True)
' Falls das nicht klappt, Fehlermeldung
If OLE_Return <= 0 Then
Ergebnis = MsgBox("Fehler bei Verbindung zu WHFC", 16,
Titel)
End If
End If
' Nchsten Datensatz holen
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord
Next i
Set whfc = Nothing
' Wieder Standarddrucker einstellen
' Auch hier bitte den eigenen Standarddrucker eintragen
ActivePrinter = "Standarddrucker"
End Sub
Es gibt damit aus meiner Sicht keinen Grund mehr, kommerzielle Programme fr die Faxerstellung zu
verwenden!
Wenn es jemand interessiert, hier finden Sie die Macros in englischer Sprache.

SuSEFAX unter Windows


Die Firma SuSE hat einen Client fr Hylafax in der Programmiersprache Java programmiert und stellt
diesen auch fr Windows 95 und Windows NT zur Verfgung. Sie mssen die heruntergeladene
Zip-Datei entpacken und in ein beliebiges Verzeichnis entpacken. Bei meiner Installation wurde das
Unterverzeichnis images flschlicherweise parallel zum Verzeichnis bin installiert und nicht unterhalb

des Verzeichnisses bin! Sven Westenberg hat mich darauf hingewiesen, da dieses Problem zu beheben
ist, wenn SuSEFax ber eine Verknpfung gestartet wird und bei der Verknpfung das
Arbeitsverzeichnis richtig angegeben wird.
Anders als WHFC handelt es sich nicht um einen Portmonitor (ein Programm, das gewissermaen an
einem virtuellen Druckeranschlu lauscht) sondern um ein Programm, das berprft, ob eine bestimmte
Datei (Spooldatei) verndert wird. Sie mssen also auch hier einen Postscriptdurcker im System
einrichten, nur da dieser nicht an einen Druckeranschlu angeschlossen wird, sondern da Sie hier eine
Ausgabedatei (eben die Spooldatei von SuSEFax) definieren mssen Im Unterverzeichnis bin finden Sie
das Programm SuSEFax.exe. Unter Einstellungen mssen Sie dort auch den Server eintragen und die
Spooldatei. Entweder starten sie SuSEFax indem Sie eine Verknpfung in den Autostart-Ordner
aufnehmen oder Sie starten es, wenn Sie es bentigen.

Die Einrichtung eines Linux-Client fr Hylafax


Unter Linux steht ein freies Programm zur Verfgung, das von der Firma S.u.S.E. stammt. Es bentigt
allerdings die grafische Oberflche X-Window. Sie sollten das Programm mit dem Setup-Tool YaST
installieren. Es befindet sich im Paket "Netzwerk-Support" und heit "susefax". Achtung!!! Die Version
von susefax, die mit der Originalversion 5.0 ausgeliefert wird, hat noch Fehler - es funktioniert nur auf
dem Rechner, auf dem auch der HylaFAX-Server installiert ist. Wenn HylaFAX wie in unserem Beispiel
auf einem anderen Rechner luft, mssen Sie die aktualisierte Version benutzen.. Besorgen Sie sich vom
Support-Server der Firma S.u.S.E. ggf. die aktuelle Version. Nach erfolgter Installation finden Sie im
Verzeichnis /usr/X11R6/bin/ ein Skript mit dem Namen susefax. Susefax bietet einen hnlichen
Funktionsumfang wie WHFC, nur da schon eine Serienfax-Funktion eingebaut ist. Das Programm wird
noch als Betaversion bezeichnet, deshalb ist die Dokumentation wohl auch noch etwas sprlich. Auch
susefax erwartet Postscriptdateien, Sie mssen den Namen der Datei und das Verzeichnis bei der
Konfiguration von susefax angeben (z.B. /tmp/fax.ps). Soweit ich das ausprobiert habe, mu susefax
permanent aktiviert sein. Wenn Sie dann eine Datei mit diesem Namen erzeugen, fragt susefax nach der
Faxnummer, die dann auch ber das Telefonbuch eingegeben werden kann.

Die Einrichtung eines Windows 3.x Client fr


Hylafax
Auch fr Windows 3.x gibt es einen freien Client. Leider habe ich damit keine Erfahrungen.

Die Einrichtung eines OS/2-Client fr Hylafax


Stefan Buckmann hat mir Anfang Oktober 98 per Mail beschrieben, wie er SuSEFax (wenigstens so
halbwegs) unter OS/2 zum laufen gebracht hat.
Ich fge seine Beschreibung nachfolgend ein (Sollte noch jemand etwas ber einen Client fr OS/2
wissen, wre ich fr Hinweise dankbar):
--------------------------------Beschreibung von Stefan Buckmann
Beginn----------------------------------------------

Software IBM OS/2 Warp 4.0 mit aktuellstem Fixpack, deutsch Java 1.1.6
SYSLEVEL.JAV : XR04006 SYSLEVEL.OS2 : XRG4000
SuSEFax in einem Verzeichnisbaum wie folgt installieren: X:\SuSEFax : faxcover.ps und susefax.cmd (siehe unten)
X:\SuSEFax\SuSEFax : alle .class-Dateien
X:\SuSEFax\images: alle .gif-Dateien
X:\SuSEFax\META-INF : MANIFEST.MF extrahiert, ausser faxcover.ps und susefax.cmd.
Die Umgebungsvariable HOME muss auf ein existierendes Verzeichnis zeigen.
susefax.cmd erzeugen (Die Pfadangaben sind entsprechend anpassen)
/* SUSEFAX.CMD Starten von SuSEFax via Java */
'set path=c:\os2;c:\java11\bin;r:\susefax\susefax'
'set beginlibpath=c:\java11\dll;r:\susefax\susefax;'
'r:'
'cd \susefax'
'start /PM java SuSEFax/SuSEFax'
'exit'
Probleme - - Braucht viel Speicher
- - Ladezeit sehr lang
- - Beim Beenden der Applikation bleibt JAVA im Speicher
- - Bei jedem Programmstart wird eine neue Instanz von JAVA geladen
- - Der Systemabschluss funktioniert nicht immer korrekt
--------------------------------Beschreibung von Stefan Buckmann
Ende---------------------------------------------Zurck zur Hauptseite

' ***************** macro PrintAsFax begin ************************


Sub PrintAsFax()
'
' Macro PrintAsFax
' author: Detlev Reymann 1999
' detlev@reymann-online.de
' purpose: print the whole active document
' from MS-Word via whfc
'
' this is free software, you are allowed to copy and modify it
' but you are not allowed to sell it in any way
'
' the lines following those ending with exclamation marks possibly have
' to be modified to meet your system settings !!!
' my hylafax-server is not always online
' so I don't load whfc via autostart but
' I test wether whfc is running otherwise it is started
If Tasks.Exists("WHFC") = False Then
' if it is not running we start whfc
Dim result As Integer
result = -1
' in the following line you eventually have to modify the programm-location !!!
result = Shell("C:\program files\whfc\Whfc.exe", 6)
' if we are not able to start whfc message and exit the macro
If result < 0 Then
result = MsgBox("can not start whfc", vbInformation, "attention")
Exit Sub
End If
End If
' Now we make the hylafax-printer the active printer.
' You have to adapt this to your system settings.
' If you are not shure about the name of your whfc-printer
' start MS-Word, activate the printer menu and have a look at the list
' which contains the printer names
ActivePrinter = "FaxPrinter"
' default is to print the whole document
Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _
Collate:=True, Background:=True, PrintToFile:=False
' At the end of this macro we activate the standard printer again
' you have to adapt htis to your own settings again !!!
ActivePrinter = "standard printer"
End Sub
' ***************** macro PrintAsFax end ************************
' ***************** macro FaxMailMerge begin ************************
Sub FaxMailMerge()
'
' Macro PrintAsFax
' this macro is an extension of the macro from Keith Gray
' author: Detlev Reymann 1999, original macro: Keith Gray
' detlev@reymann-online.de
' purpose: create fax-documents and send them to different adresses
' from MS-Word via whfc using the mailmerge-possibilities of MS-Word
'
' the data source has to have a field which contains the phrase fax

'
'
'
'
'
'
'
'

(e.g. fax or fax-nbr or anything like this)


from this field the number to send the fax to is taken from
the position of the field is not important!
this is free software, you are allowed to copy and modify it
but you are not allowed to sell it in any way
possibly we will extend this macro (e.g. automatic installation)

' definitions
Dim whfc As Object
Dim OLE_Return As Long
Dim FaxNumber As String
Dim SpoolFile As String
Dim Title As String
Dim NbrOfFields As Integer
Dim FieldWithFaxNbr As Integer
Dim NbrOfFaxes As Integer
Dim i As Integer
Dim TelefaxNrField As Integer
Dim result As Integer
' the active document has to be a main mail-merge document and it has to have
' an associated data-source document
' that is, what we test, if without succes we stop the macro
If ActiveDocument.MailMerge.State <> wdMainAndDataSource Then
result = MsgBox("not a mail merge document or no data source", vbInformation,
"error")
Exit Sub
End If
' Now we see how many faxes to print
' the number of faxes is the number of the last record
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdLastRecord
NbrOfFaxes = ActiveDocument.MailMerge.DataSource.ActiveRecord
' make the first record the active record
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdFirstRecord
' now we look which of the field names contains the phrase fax.
' this is the field we take the fax-number from
NbrOfFields = ActiveDocument.MailMerge.DataSource.DataFields.Count
' we save the field-number in FieldWithFaxNbr
For FieldWithFaxNbr = 1 To NbrOfFields
If InStr(1, ActiveDocument.MailMerge.DataSource.DataFields(FieldWithFaxNbr).Name,
"fax") > 0 Then
TelefaxNrField = FieldWithFaxNbr
Exit For
End If
Next FieldWithFaxNbr
' if we don't find a field wich contains the phrase fax
' we stop the macro
If i > NbrOfFields Then
result = MsgBox("can not find a field for the fax-numbers", vbInformation, "error")
Exit Sub
End If
' we make a OLE-connection to whfc
Set whfc = CreateObject("WHFC.OleSrv")

' we need a postscript printer.


' I had some problems as I tried to use the printer, which is
' connected to the WHFC-Port
' So I installed a separate printer which is connected to a file
' You have to modify the following line to meet your system settings !!!
ActivePrinter = "Apple Color LW 12/600 PS"
' now we print a fax for all data-records which contain a faxnumber
For i = 1 To NbrOfFaxes
' for each fax we create a temporary file
' you have to adapt the path to your system-settings !!!
SpoolFile = "C:\windows\temp\fax" & i & ".ps"
Title = "WHFC OLE MailMergeMacro"
' to be able to use the field contents of the active record
' within the active mailmerge-document
' we have to do:
' show the fields not the field-codes
ActiveWindow.View.ShowFieldCodes = False
' show the values of the active record
ActiveWindow.View.MailMergeDataView = True
' we take the faxnumber from the field we found before
FaxNumber = ActiveDocument.MailMerge.DataSource.DataFields(FieldWithFaxNbr)
' we only send a fax if there is a faxnumber
If FaxNumber > "" Then
' we print the whole document to the temporary file
Application.PrintOut FileName:="", Range:=wdPrintAllDocument, _
Item:=wdPrintDocumentContent, Copies:=1, Pages:="", _
PageType:=wdPrintAllPages, Collate:=True, Background:=True, _
PrintToFile:=True, OutputFileName:=SpoolFile, Append:=False
' the file is send to whfc via OLE
OLE_Return = whfc.SendFax(SpoolFile, FaxNumber, True)
' if it does not work - error message
If OLE_Return <= 0 Then
result = MsgBox("error connecting to WHFC", 16, Titel)
End If
End If
' get next record
ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord
Next i
' stop OLE-connection
Set whfc = Nothing
' activation of the standard printer
' please adapt to your system settings !!!
ActivePrinter = "standard printer"
End Sub
' ***************** macro MailMergeFax end ************************

Der Linuxrechner als Datei- und Druckserver

Der Linuxrechner als Datei-

und Druckserver
Ich habe im Rahmen meiner EDV-Karriere schon eine Menge Netzwerke unter den verschiedensten
Betriebssystemen gesehen und teilweise mit betreuen "drfen". Ich will ja nicht lstern, aber ich
behaupte einfach einmal, da die meisten Netze lediglich als bessere Druckserver und vielleicht noch als
erweiterte Festplatte dienen. "Richtige" Netzwerkanwendungen werden in den wenigsten Fllen
verwendet. Die bentigten Netzfunktionen werden von einem Linux-PC allemal bereit gestellt. Und dazu
noch zu einem unschlagbaren Preis- /Leistungsverzeichnis und bei extrem niedrigen
Hardwareanforderungen. Wenn ein Linuxrechner als Datei- und Druckserver dienen soll, hngen die
notwendigen Konfigurationsschritte von den Betriebssystemen ab, die auf den Clients installiert sind.
Auf der einen Seite sind das Windows- und OS/2-Rechner, fr die das Programmpaket SAMBA
installiert werden mu (Wenn von einem Windows NT-Rechner nur gedruckt werden soll und kein
Dateizugriff benoetigt wird, gibt es noch eine weitere Mglichkeit ohne SAMBA) und auf der anderen
Seite alle Unix-Rechner. Ich beschreibe letzteres kurz am Beispiel eines Linux-Clients.
Datei- und Druckserver fr Windows 3.11, Windows 95, Windows NT und OS/2-Rechner.
Damit ein Linuxrechner als Server fr Windows und OS/2-Rechner fungieren kann, mu auf dem Server
das Programmpaket Samba installiert werden. Die Installation von Samba ist im S.u.S.E.-Handbuch und
in den Hilfedateien eigentlich relativ ausfhrlich beschrieben. Deshalb hier nur das Wesentliche in
Krze. Installieren Sie erst einmal das Samba-Paket, am besten mit dem Installationstool YaST.
Die Kommunikation im Netzwerk erfolgt ber sogenannte Protokolle. Stellen Sie sich das etwa so vor,
als einige mensch sich auf eine bestimmte Sprache, um sich miteinander zu unterhalten. Das Internet
basiert auf dem TCP/IP-Protokoll. Genau genommen gibt es verschiedene Protokollebenen. Vergleichen
Sie das wieder etwa mit Buchstaben auf der untersten, Wrtern auf der nchsthheren und Stzen auf der
nchsten Ebene und so weiter. TCP/IP ist ein Protokoll auf der unteren Ebene. In der Windows-Familie
und unter OS/2 wird meistens NetBEUI verwendet, unter Novell IPX/SPX. Mit Samba implementieren
Sie die sogenannten NETBIOS-Dienste, eine Sammlung von Protokollen zur Datei und Druckerfreigabe.
Diese Dienste knnen sowohl auf dem TCP/IP-Protokoll als auch auf dem NetBEUI-Protokoll aufsetzen.
Eigentlich gibt es also keinen Grund mehr, neben dem TCP/IP-Protokoll noch andere Protokolle in der
Netzwerksteuerung der windows-Rechner zu aktivieren. Es wird gelegentlich sogar berichtet, da dieses
Protokolldurcheinander der Grund fr Pobleme im Netzwerk sein kann.
Dann konfigurieren Sie Samba. Im wesentlichen passiert das, indem Sie die Datei smb.conf im
Verzeichnis /etc bearbeiten. Die Einstellungsmglichkeiten sind so vielfltig, da die Darstellungen hier
den Rahmen sprengen wrden. Ich hatte anfangs eine Konfiguration gewhlt, die eher an die
Unix-Philosophie angelehnt war, da heit, Benutzer mussten sich mit einem Pawort anmelden. Da aber
niemand von auen auf mein Netz zugreifen kann, habe ich mittlerweile diese Restriktionen gelockert.
Dies ist allerdings ein Thema, da unter Netzwerkern zu heftigen Diskussionen fhren kann, denn die
"Windows-Philosophie" beim Umgang mit Passwrtern und Netzwerksicherheit entspricht eigentlich
keinen vernnftigen Sicherheitsrichtlinien. Freunden Sie sich nach Mglichkeit mit der Unix-Philosophie
an.
Ich fge einfach meine an wichtigen Punkten kommentierte Datei an (Kommentarzeilen beginnen mit
einem Semikolon):

[global]
; Unter Windows oder OS/2 sind Sie Mitglied einer Arbeitsgruppe.
; Diese geben Sie dort bei der Netzinstallation ein.
workgroup = MEINNETZ
; Gibt an, in welchen Abstnden die Verbindung berprft werden soll
keep alive = 30
os level = 2
printing = bsd
; Der Name der Datei, aus der die Druckereintrge gelesen werden sollen
; /etc/printcap ist der Standard
printcap name = /etc/printcap
; Sollen die dort definierten Drucker automatisch eingelesen werden?
load printers = yes
guest account = nobody
security = share
; security = user
; wrde die Anmeldung mit Passwort erforderlich machen
; share dagegen funktioniert auf Gruppenebene
; bzw. sorgt dafr, da als public gekennzeichnete Ressourcen
; wirklich frei zugnglich sind
wins support = no
; Jeder Zugriff auf die Samba-Dienste wird protokolliert
; Hier wird definiert, da das fr jeden Rechner getrennt passiert.
; %m wird durch den Namen des sich anmeldenden Hosts ersetzt
log file = /var/log/log.%m
; wichtig: Die Benutzer mssen Schreibrechte in diesem Verzeichnis haben !!!
Interfaces = 192.168.1.1/255.255.255.0
; mit dieser Anweisung werden von Samba aus nur Rechner im lokalen
; Netz angesprochen. Diese Vorsichtsmanahme unterbindet unntige und
; teure Verbindungen zum Provider
;
; Es sollen einfach alle Drucker, die in printcap definiert sind
; freigegeben werden
[printers]
comment = All Printers
browseable = no
printable = yes
public = yes
writable = no
create mode = 0700
; Die obige Freigabe fhrt allerdings zu einer Vielzahl von Druckern, die im Netz
; angezeigt werden, Das kann fr normale Benutzer etwas irrefhrend sein
; Alternativ knnen auch gezielt einzelne Drucker freigegeben werden.
; z.B. so:
[Laser]
comment = Laser im Netz
browseable = yes
printable = yes
printer = lp4
; das mu ein gltiger Eintrag aus der Datei /etc/printcap sein
public = yes
writable = yes
create mode = 0750
path = /home/%m
; Auch hier an die Schreibrechte denken
[Netz]
; Fr jeden Rechner soll ein Verzeichnis freigegeben werden.
; Das Verzeichnis erscheint im Netz als \\azalea\Netz,
; auf dem Linuxrechner handelt es sich je nach Client um
; /home/calluna, home/tilia etc.
comment = Netzverzeichnis
path = /home/%m
; welche Rechner drfen zugreifen?

; wichtig: diese Benutzernamen entsprechen den Rechnernamen


; unter Windows und nicht den Benutzernamen, mit denen unter
; Windows die Anmeldung erfolgt ist !!!
valid users = calluna begonia acer tilia
browseable = yes
public = no
writable = yes
printable = no
read only = no

create mode = 750

Mit der Druckereinrichtung habe ich es mir sehr einfach gemacht. Ich habe das mit YaST erledigt und
dabei gleich den APS-Filter installiert (Ein sehr mchtiger Druckerfilter unter Linux, der dort z.B.
automatisch zwischen Postscript- und anderen Druckerformaten umschaltet). Es wrde auch eine
einfache Druckerdefinition reichen, aber in meinem Netz soll auch ein Linuxrechner auf den Drucker
zugreifen knnen und dabei auf dem Server die APS-Fhigkeiten nutzen knnen.
Das fhrt allerdings dazu, da fr Windowsrechner eine Reihe von Netzwerkdruckern zu sehen sind,
wem das zu viel ist, der sollte nur gezielt einzelne Rechner freigeben (siehe Details in der smb.conf
oben).
Bei meiner Konfiguration mssen auf dem Linuxsystem Benutzereintrge fr diejenigen bestehen, die
auf Samba zugreifen wollen. Soweit ich das herausgefunden habe, wird von Windows 3.11-Maschinen
und Windows 95 Rechnern der Benutzername verwendet (das ist der Name, unter dem Sie dort
angemeldet sind). Wenn Sie diesbezglich unsicher sind, geben Sie in einem Dos-Fenster unter Windows
3.11 und Windows 95 den Befehl "net config", unter Windows NT "net config
arbeitsstationsdienst" und unter OS/2 "net config requester" ein. Dort wird dann der
Benutzername angezeigt.
Damit die Samba-Dienste automatisch beim Systemstart des Linuxrechners gestartet werden, mssen Sie
in der Datei /etc/rc.config nach dem Eintrag START_SMB suchen und ihn auf
START_SMB="yes" setzen. Beim nchsten Systemstart mte dann Samba gestartet werden.
Achtung, Hinweis zum Update der Distribution: Etwas rgerlich finde ich, da beim Update der
S.u.S.E.-Distribution (bei mir von Version 5.0 auf 6.0) die Datei smb.config und damit die ganzen
eigenen Einstellungen in smb.conf.rpmorig umbenannt wird und eine Standarddatei als smb.conf
installiert wird. Durch simples Umbenennen und Systemneustart ist das aber wieder behoben.
Druckserver fr NT-Rechner ohne Dateizugriff
Windows NT ist von Hause aus etwas Linux-freundlicher. Wenn kein Dateizugriff bentigt wird, also
nur ber die Linuxmaschine gedruckt werden soll, kann direkt ber die Linux-Druckdienste gedruckt
werden. In diesem Fall mu also SAMBA nicht installiert werden. Auf dem NT-Rechner mu auf jeden
Fall das TCP/IP-Protokoll installiert sein. Dann mu ber Arbeitsplatz->Systemsteuerung->Netzwerk
unter "Dienste" "Microsoft TCP/IP-Druckdienst" eingetragen werden. Dann ist ein Rechnerneustart
fllig. Wird jetzt unter NT ein neuer Rechner installiert (Vorsicht: auf die Abfrage Arbeitsplatz oder
Druck-Server im Netzwerk mu hier verrckterweise Arbeitsplatz markiert werden!) mu dann im
nchsten Schritt ein neuer Anschlu hinzugefgt werden. Aus der Liste mu LPR-Port und dann Neuer
Anschlu ausgewhlt werden. Im dann erscheinenden Fenster wird unter "Name oder Adresse des Hosts,
der LPD bereitstellt: die IP-Adresse des Linuxrechners eingetragen werden (192.168.1.1) und unter
"Name des Druckers auf dem Computer" ein gltiger Name aus der Datei /etc/printcap. Z.B.
"stcolor-raw" oder was auch immer bei Ihnen in der ersten Zeile des jeweiligen Druckers dort
eingetragen ist. Diese Lsung hat den groen Vorteil, da auf dem Server weniger Ressourcen
verbraucht werden, wenn Samba nicht laufen mu.
Datei- und Druckserver fr Linux-Rechner
Druckserver

Einen Linuxrechner als Druckserver fr andere Linuxrechner zur Verfgung zu stellen, ist sehr einfach.
Sie mssen als erstes auf dem Server die Drucker installieren. Am einfachsten mit Hilfe von YaST. Dann
mssen sie dem System mitteilen, da der Zugriff durch andere Rechner gestattet ist. Es kann sein, da
die folgenden Einstellungen teilweise doppelt gemoppelt sind, aber in der beschriebenen Konfiguration
funktioniert es bei mir. Fgen Sie in die Datei /etc/hosts.allow eine Zeile
ALL: .meinnetz.com
ein. Damit bekommen alle Rechner des lokalen Netzes das Recht zum Zugriff. In der Datei
/etc/hosts.equiv befindet sich eine Zeile
192.168.1.6
ein. Damit erhlt der andere Linuxrechner die Erlaubnis, auf dem Server Kommandos via einer remote
shell auszufhren. Und zuletzt enthlt die Datei /etc/hosts.lpd eine Zeile
quercus.meinnetz.com
mit der explizit der Zugriff auf den Druckerspooler gestattet wird. Wichtig: hier mu unbedingt der voll
qualifizierte Hostname stehen, die ip-Nummer reicht nicht (Warum wei der Geier).
Dateiserver
Als Dateiserver kann der Linuxserver fr andere Unixrechner und damit auch fr einen anderen
Linuxrechner dienen, indem NFS (Network File-System) installiert wird. Sie mssen dafr zum einen
das NFS-Serverpaket (z.B. mit Hilfe von YaST) installieren und dann in der Datei /etc/rc.config
die Eintrge
START_PORTMAP=yes und
NFS_SERVER="yes"
entsprechend einstellen. Dann mssen Sie in der Datei /etc/exports festlegen, welche Verzeichnisse
fr wen wie zur Verfgung stehen sollen. In der Regel werden die Optionen ro fr read-only und rw fr
read and write dabei die wichtigsten sein. Um dem Linuxrechner (quercus, 192.168.1.6) den Schreibund Lesezugriff auf das Verzeichenis /home/quercus auf dem Server zu gestatten, mu die Datei so
aussehen:
/home/quercus quercus(rw)
Das war's.
Windows 95 Client
Um von Windows 3.11 und Windows 95 auf die Samba-Ressourcen zugreifen zu knnen, mssen Sie
jeweils die Netzwerkfunktionen installiert haben. Standardgem installiert das Windows-Setup das
NETBEUI-Protokoll. Zustzlich oder besser alternativ mssen Sie das TCP/IP-Protokoll installieren.
Zustzlich mssen Sie den Client fr Microsoft-Netzwerke installiert haben. Achten Sie darauf, bei der
Frage nach der Arbeitsgruppe exakt den Namen zu verwenden, den Sie auch unter Samba in der Zeile
"workgroup = MEINNETZ" eingegeben haben.
Die Verbindungen zum Linuxserver stellen Sie am einfachsten her, indem Sie den Ordner "Netzwerk"
oder im Explorer den Punkt "Netzwerk" anklicken. Dort mte dann der Linuxrechner unter seinem
Namen auftauchen. Beim Anklicken werden Sie in meiner Konfiguration nach dem Benutzerpawort
(das Pawort auf der Linuxmaschine !) gefragt. Daraufhin mte das Verzeichnis "Netz" und die
Linuxdrucker erscheinen. Den Drucker installieren Sie am einfachsten, indem Sie auf einen der Eintrge
(ich nehme den "raw"-Drucker) klicken und dann den Anweisungen zum Installieren des
Windows-Druckertreibers folgen. Sie mssen natrlich den Druckertreiber nehmen, der auf Ihren

Drucker pat. Das Netzwerklaufwerk verwenden Sie entweder, indem Sie den Order wie jeden anderen
Laufwerksordner verwenden oder indem Sie Den Ordner "Netz" auswhlen und mit der rechten
Maustaste den Menpunkt "Netzlaufwerk verbinden ..." auswhlen. Sie knnen dann einen
Laufwerksbuchstaben vergeben und angeben, ob diese Verknpfung automatisch beim Systemstart
wiederhergestellt werden soll. Dies sollten Sie aber nur tun, wenn Ihr Server permanent zur Verfgung
steht.
Windows NT-Client
Die Konfiguration eines NT-Clients (Windows NT, Version 4.0) funktioniert fast genauso wie bei
Windows 95. berprfen Sie unter Netzwerk, ob das TCP/IP-Protokoll installiert ist. Wenn ja, versuchen
Sie die fr Windows 95 beschriebenen Schritte nachzuvollziehen. Beachten Sie aber bitte folgende
Besonderheiten: Wenn Sie unter Windows NT, Version 4.0 das Servicepak 3 installiert haben und Ihre
Sambaversion kleiner ist als 1.9.17, kann es Probleme geben. Windows NT versucht dann das Pawort
verschlsselt zu bermitteln, das kann aber Samba erst ab der genannten Version. Sie mssen dann einen
Eintrag in der Windows NT Registry vornehmen. Speichern Sie den folgenden Text als Datei
Password.reg und doppelklicken im Explorer darauf. Daraufhin mte der entsprechende Eintrag in die
Registry eingetragen sein.
REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Rdr\Parameters]
"EnablePlainTextPassword"=dword:00000001

Mit den aktuellen Sambaversionen haben Sie hiermit keine Probleme. Lassen Sie es unter
Sicherheitsaspekten besser bei den verschlsselten Pawrtern.
OS/2-Client
Die folgenden Hinweise beziehen sich auf OS/2 Warp in der Version 4.0. Unter OS/2 mssen Sie
logischerweise die Netzwerkuntersttzung installieren. Fr die Nutzung von Samba mssen Sie die
Peer-Dienste installieren. Eine rgerliche Fehlerquelle besteht darin, da Sie als Protokoll unter OS/2
"NetBEUI over TCP/IP" installieren mssen, wenn Sie TCP/IP und NetBEUI gleichzeitig nutzen
mchten (Und das drfte der Normalfall sein). Wenn Sie TCP/IP und das normale NetBEUI
nebeneinander installieren, gibt es Probleme. Die Sambaressourcen nutzen Sie, indem Sie im Ordner
"Verbindungen" den Punkt "Netzwerkdienste" und dann "Gemeinsame Ressourcen und
Netzwerkverbindungen" auswhlen. Whlen Sie dort Verbindungen und whlen den Button "Verbindung
herstellen". Whlen Sie dann als Ressourcentyp (*) Verzeichnis, als Server aus der Liste den
Linuxrechner und als Ressource das Verzeichnis Netz. Sie knnen hier auch angeben, da die Ressource
automatisch beim Anmelden verbunden werden soll. Fr die Druckerinstallation whlen Sie als
Ressourcentyp (*) Drucker, als Server wieder den Linuxrechner und den passenden Drucker (raw).
Weisen Sie als lokalen Druckeranschlu eine nicht benutzte Schnittstelle zu. Auch hier knnen Sie
angeben, da die Ressource automatisch beim Anmelden verbunden werden soll
Linux-Client
Drucken
Um auf einem Linuxrechner den Netzwerkdrucker nutzen zu knnen, reicht ein simpler Eintrag in der
Datei /etc/printcap. An Stelle eines lokalen Druckers steht hier nur der Verweis auf die

Druckerwarteschlange des Servers. Da auf dem Server der aps-Filter installiert ist, knnen somit
Postscriptdateien und alle anderen Druckformate an diesen Drucker geschickt werden. Meine printcap
auf dem Client sieht so aus:
lp:\
:rm=192.168.1.1:rp=lp:\
:sd=/var/spool/lpd/ljet3-a4-auto-mono-300:\
:la:mx#0:sh

Dateien
Um ein per NFS freigegebenes Verzeichnis nutzen zu knnen, mssen Sie es einfach in Ihr Dateisystem
mounten. Sie mssen dem Mount-Befehl mitteilen, da es sich um ein NFS-Verzeichnis handelt, wo es
auf dem Server liegt und wo es lokal gemountet werden soll.
Z.B.: mount -t nfs azalea.meinnetz.com:/home/quercus /mnt/quercus.
Wenn das Verzeichnis regelmig beim Systemstart gemountet werden soll, sollten Sie eine
entsprechende Zeile in der Datei /etc/fstab einfgen. Dort knnte dann z.B. stehen:
# zu mountendes Dateisystem
/dev/hda1
/dev/hda2
azalea.meinnetz.com:/home/quercus
none

wohin mounten
/
swap
/mnt/quercus
/proc

Typ
ext2
swap
nfs
proc

Zugriffsrechte
defaults
1
defaults
0
defaults
1
defaults
0

1
0
1
0

Ab jetzt knnen Sie auf dieses Verzeichnis zugreifen, als wre es ein lokales Verzeichnis. Die
Mglichkeiten von NFS gehen weit ber das hinaus, was ich hier darstellen kann. Sie finden gengend
Hinweise in den man-Seiten und diversen Bchern.
Zurck zur Hauptseite

Der Linuxrechner als Zeitserver

Der Linuxrechner als Zeitserver

Im Netzwerk kann es von entscheidender Bedeutung sein, da die Uhren der PCs im Netz synchron
laufen. Auerdem ist es auch so recht angenehm, wenn am Rechner die aktuelle Zeit zur Verfgung
steht. Im Internet gibt es eine Reihe von ffentlich zugnglichen Rechnern, die ihrerseits mit Atomuhren
verbunden sind. Der folgende Text beschreibt, wie Sie diese Zeitinformationen auf den Linuxserver
holen und von da an die Netzwerkrechner weitergeben.
Es gibt verschiedene Niveaus an Genauigkeit, die timeserver im Internet liefern knnen. Ich beschrnke
mich im folgenden auf eine "einfache" Genauigkeit (so etwa im Sekundenbereich), wer an exakteren
Zeitinformationen interessiert ist mu sich mit dem Thema NTP beschftigen.
Linuxserver
Um die Zeit des Linuxservers mit einem timeserver im Internet zu synchronisieren, mu der Server
logischerweise mit dem Netz verbunden sein. Das ist aber in unserem Netz nur der Fall, wenn eine
ISDN-Verbindung zur FH besteht. In regelmigen Abstnden eine Anfrage an den entsprechenden
Rechner zu stellen, wrde oft eine kostenpflichtige Verbindung aufbauen. Die Idee ist deshalb, die
Zeitsynchronisation an den Einwahlvorgang zu koppeln. Fr diesen Zweck wird die Datei ip-up im
Verzeichnis /etc/ppp um zwei Befehle ergnzt. Dieses Skript wird vom ISDN-System automatisch
gestartet, sobald die ISDN-Verbindung hergestellt ist (Fr DOS-Freaks: so etwas wie die autoexec.bat
des ISDN-Systems).
Die relevanten Zeilen (der untere Teil ist nur ein Ausschnitt) in meiner ip-up sehen so aus:
...
case "$BASENAME" in
ip-up)
echo -n "starting timesynchronisation ..." > /dev/tty1
/usr/sbin/netdate -v wrzx03.rz.uni-wuerzburg.de
/sbin/clock -wu
echo -n "time synchronisation done." > /dev/tty1
...
Und ab hier der normale Rest der Datei... .
Im obigen Skriptausschnitt sind zwei Zeilen enthalten, die mit echo "..." auf einer der Konsolen eine
Ausgabe erzeugen sollen. Normalerweise ist fr das Script vorgegeben, da Ausgaben des echo-Befehls
"ins Leere" laufen (technisch: /dev/null; Danke fr den Hinweis an Wolfgang Stark). Daher mu im
Skript die Ausgabe explizit auf eines der Terminals umgeleitet werden! Bei mir ist das das erste
Terminal, da ich normalerweise nicht am Server arbeite. Bei den Standardeinstellungen mten Sie dort
/dev/tty10 eintragen!
Der Befehl netdate fragt den ffentlichen timeserver der Universitt Wrzburg ab. Suchen Sie sich im
Internet mglichst einen wenig frequentierten Rechner in Ihrer Nhe. Netdate setzt nur das Systemdatum,
verstellt aber nicht die CMOS-Uhr im Rechner. Das heit, wenn Sie den Server ausschalten wrden,
wrde er beim Neustart wieder die alte Uhrzeit verwenden. Der nchste Befehl (/sbin/clock -wu) stellt
deshalb die interne Uhr auf die korrekte Zeit. Achtung, wenn Sie auf Ihrem Linuxrechner als Zeitzone

nicht GMT eingestellt haben, sollten Sie nur /sbin/clock -w aufrufen!


Damit der Rechner als timeserver fungieren kann, mu jetzt noch der entsprechende Service aktiviert
werden. Dazu mssen in der Datei /etc/inetd.conf bei vier Zeilen das Kommentarzeichen am
Zeilenanfang entfernt werden. Es handelt sich um die Zeilen:
daytime stream tcp nowait root internal
daytime dgram udp wait root internal
time stream tcp nowait root internal
time dgram udp wait root internal
Das war's, beim nchsten Systemstart knnen andere Rechner die Zeit beim Server abfragen.
Windows Client
Es gibt eine Reihe von Programmen fr Windowsrechner, die den Zeitabgleich mit Unixservern
ermglichen und die darberhinaus noch als freeware angeboten werden. Die Programme finden Sie
leicht, wenn Sie eine Suchmaschine nach den Stichworten timesynchronisation + Windows abfragen. Ich
benutze z.B. Dimension 4 von Thinking Man Software. Als timeserver mu hier der Linuxserver
eingetragen werden (192.168.1.1) und als Protokoll "time/tcp".
Da bei mir der Linuxserver nicht immer luft, habe ich das Programm so konfiguriert, da die Zeit
einmal abgefragt wird und sich das Programm dann automatisch beendet. Und zudem habe ich mir eine
Batchdatei gestrickt, in der zuerst der Webbrowser und dann anschlieend die Zeitsynchronisation
aufgerufen werden. So kann ich sicher sein, da der Server luft, denn nur dann funktioniert der
Internetzugriff. Ich empfehle brigens nicht, die Programme zur Zeitsynchronisation permanent laufen
zu lassen, um dann beispielsweise in regelmigen Abstnden die aktuelle Zeit zu holen. Die meisten
Programme belegen unntig viel Arbeitsspeicher, soweit ich mir das bislang angesehen habe.
Alternativ kann der Abgleich mit dem Server auch mit "Windows-Bordmitteln" geschehen (Danke fr
den Hinweis an Peter Hinse). Erstellen Sie eine Verknpfung zu c:\windows\net.exe und geben
als Parameter time \\SERVER /set /yes ein. Anstelle von SERVER mu hier natrlich der
Name Ihres Linuxservers stehen (das ist der Name, der in der Netzwerumgebung zu sehen ist). In den
Eigenschaften der Verknpfung sollten Sie "Schliessen bei beenden" aktivieren, dann geschieht die
Zeitsynchronisation, ohne da viel auf dem Bildschirm zu sehen ist. Wenn Ihr Linuxserver stndig an ist,
kopieren Sie diese Verknpfung in das Autostart-Verzeichnis.
Linux-Client
Die Zutaten zur Zeitsynchronisation des Linuxclients sind die selben wie fr den Server. Sie knnen also
entweder per Hand die Befehle:
/usr/sbin/netdate -v 192.168.1.1
/sbin/clock -wu
eingeben oder ein entsprechendes Skript schreiben. Ich habe meines auch wieder mit dem Start des
Webbrowsers gekoppelt.
OS/2-Client

Fr OS/2 habe ich ein freeware-Programm namens ntp im Einsatz. Die letzte Version, die ich gefunden
habe, wird als ntp107.zip vertrieben. Das Programm kann in ein beliebiges Verzeichnis installiert
werden. Der Aufruf erfolgt von der Kommandozeile bzw. in einer Batchdatei in der Form ntp
192.168.1.1 /SET. Dadurch wird die Zeit des OS/2-Rechners auf die des Servers gesetzt.
Zurck zur Hauptseite

Der Linuxserver als Einwahlrechner


Gliederung
1 Einleitung
2 Voraussetzungen
3 Einwahlrechner fr eine Modemverbindung
3.1 Konfiguration des Modems
3.2 Anlegen eines Einwahlbenutzers
3.3 Einwahl nur zu bestimmten Zeiten ermglichen
3.4 Weitere Systemeinstellungen fr die Modemeinwahl
4 Einwahlrechner fr eine ISDN-Verbindung
5 mehrere ISDN-Karten in einem Rechner
6 Sonstige allgemeine Systemeinstellungen
7 Sicherheitsaspekte

1 Einleitung
Ein Linuxrechner ist mit sehr einfachen Mitteln als Einwahlrechner zu konfigurieren. Einwahlrechner meint dabei nicht nur, da mensch sich
mittels eines Terminalprogramms auf den Rechner einwhlen kann und dann dort wie auf einem lokalen Rechner arbeiten kann. Sondern hier
geht es darum, da der sich einwhlende Rechner zu einem vollwertigen Mitglied des Netzes wird, in dem sich der Einwahlrechner befindet.
Wenn dieses Netz ber einen Internetzugang verfgt, steht dieser dann auch dem Einwahlrechner zur Verfgung. Zudem kann dem gesamten
Netz hinter dem einwhlenden Rechnern dieser Internetzugang ermglicht werden, wenn dort "Masquerading" aktiviert ist. Details dazu sind
in den vorhergehenden Seiten ausfhrlich beschrieben.
Im folgenden werden zwei verschiedene Konfigurationen beschrieben, einmal fr eine Modemeinwahlverbindung und zum anderen eine fr
eine ISDN-Verbindung.
Das folgende Bild zeigt das Zugangsprinzip am Beispiel der Modemverbindung.

2 Voraussetzungen
Auf dem Einwahlrechner mu logischeweise Linux inclusive der Netzwerkoptionen installiert sein. Wenn der Einwahlrechner seinerseits in
einem Netz hngt, mu er (ebenfalls logischerweise) ber eine Netzwerkkarte verfgen. Dann bentigen wir noch ein Modem, damit sich
andere Rechner hier einwhlen knnen. Da in meinem Bro leider zu Beginn kein ISDN-Anschlu zur Verfgung stand, mute ich mich
anfnglich auf die Modemeinwahl beschrnken. Die ISDN-einwahl konnte ich dann etwas spter realisieren.
Als Pakete mssen mindestens installiert sein:
ppp
Fr die Modem-Verbindung:
mgetty
Fr die ISDN-Verbindung:
i4l

3 Einwahlrechner fr eine Modemverbindung


3.1 Konfiguration des Modems
Das Modem sollten Sie bei der Systeminstallation einrichten, dann wird in der Datei /etc/rc.config fr ein Modem an der ersten seriellen
Schnittstelle (COM1 unter DOS) eine Zeile mit dem Inhalt
MODEM="dev/ttyS0"
bzw.
MODEM="dev/ttyS1"
fr die zweite serielle Schnittstelle (COM2 unter DOS) eingerichtet. Und zudem wird im Verzeichnis /dev ein Link von der entsprechenden
Datei auf die Datei /dev/modem erstellt. Wenn Sie ohne YaST arbeiten, tun Sie dies von Hand.
Dafr, da das Modem bei Anruf abhebt, sorgt das Programm mgetty. Dieses Programm berwacht die serielle Schnittstellen. Es kann noch
viel mehr, als "nur" eine ppp-Verbindung intiieren, aber das ist ein anderes Thema. Um mgetty regelmig beim Systemstart zu starten, mu
die Datei /etc/inittab verndert werden. ffnen Sie diese Datei mit einem Editor und suchen Sie nach den Zeilen
# modem getty
# mo:23:respawn:/usr/sbin/mgetty -s 38400 modem
entfernen Sie das Kommentarzeichen und passen Sie ggf. die Geschwindigkeitsvorgabe an. Wenn Sie ein schnelles Modem und eine
entsprechende serielle Schnittstelle (mit einem Baustein vom Typ 16550A) knnen Sie dort auch die maximale Geschwindigkeit fr aktuelle
serielle Schnittstellen von 115200 einstellen.
mo:23:respawn:/usr/sbin/mgetty -s 115200 modem
Wenn diese Zeilen nicht zu finden sind, tragen Sie sie selbst dort so ein, wie oben beschrieben.
Wenn Sie vorgeben mchten, da das Modem erst nach z.B. 6 Klingelzeichen abheben soll, tragen Sie noch den Parameter -n 6 ein.
mo:23:respawn:/usr/sbin/mgetty -s 115200 -n 6 modem

Das wre eine Mglichkeit, das Modem und das normale Telefon gemeinsam an einer Leitung zu betreiben. Sie mssen nur den Wert fr die
Anzahl der Klingelzeichen so hoch setzen, da ein normaler Anrufer mit groer Wahrscheinlichkeit aufgelegt hat (z. B. 6 oder 8). Diese
Lsung hat aber den Nachteil, da Sie zu Hause doch relativ lange auf die Verbindung warten mssen. Deshalb wird unten eine andere
Lsung beschrieben.
Das war's bereits mit dem Modem. Nach einem Systemneustart mte das Modem jetzt aktiv sein.
Ich bekomme hufiger Hinweise von Linux-Profis, da natrlich hier kein vollstndiger Systemneustart wie etwa unter Windows notwendig
sei, sondern da es ausreicht, den runlevel durch Eingabe von init 1 und danach von init 2 (bzw. init 3 bei grafischem Login)
ausreicht. Ich denke, da das den erfahreneren Benutzern klar ist, da aber fr die Neulinge der Neustart einfacher nachzuvollziehen ist.

3.2 Anlegen eines Einwahlbenutzers


Fr die Einwahl definieren wir einen speziellen Benutzer. Dieser soll zu einer speziellen Gruppe im System gehren. Sagen wir zur Gruppe
mit dem Namen "einwahl". Diese Gruppe legen wir an mit dem Befehl "groupadd einwahl" an. Dann legen wir den Benutzer
einwahl_user an mit "useradd -g einwahl -s /etc/ppp/ppplogin einwahl_user". Die Besonderheit ist hier, da fr
diesen User ein spezielles loginscript, nmlich die Datei /etc/ppp/ppplogin definiert wird. Das heit, sobald sich dieser User im System
einloggt, wird dieses Skript gestartet. Vergeben Sie noch ein Passwort fr den Benutzer einwahl: passwd einwahl_user.
Das Skript hat folgenden Inhalt:
#!/bin/sh
exec /usr/sbin/pppd
Bei neueren Versionen von pppd gibt es eine unterschiedliche Behandlung von Optionen, die ber die Kommandozeile angegeben werden und
von denen, die in der Datei /etc/ppp/options stehen. Deshalb habe ich jetzt alle Parameter nur noch in der Datei stehen. Im Grunde knnte
somit auch direkt /usr/sbin/pppd als Einwahlshell angegeben werden.
Diese Skript soll von allgemeinen Nutzern nur ausgefhrt werden, aber nicht gendert werden knnen. Deshalb stellen wir sicher, da root
der Eigentmer ist (chown root ppplogin) und setzen die entsprechenden Rechte (chmod 644 ppplogin).
Besonders wichtig sind in dieser Beispielskonfiguration die Rechte des Programms pppd. Wir ordnen das Programm der Gruppe einwahl zu:
chgrp einwahl /usr/sbin/pppd. Da das Programm in wichtige Systemdetails (v.a. das routing des Kernels) eingreift, mu es mit
root-Rechten (suid) laufen. Also: chmod 4750 /usr/sbin/pppd.
Wichtig: Wenn Sie diese Konfiguration so durchfhren wollen, drfen Sie bei S.u.S.E. Distributionen YaST nicht in der Standarkonfiguration
laufen lassen, da dieses die Rechte standardgem anders setzt, bzw. Sie mssen den entsprechenden Teil von SuSEConfig abschalten! Oder
Sie mssen hinterher die Installation entsprechend berprfen bzw. wiederherstellen. Falls hier die Rechte nicht richtig gesetzt sind, erhalten
Sie in der Datei /var/log/messages eine entsprechende Meldung mit dem Inhalt "persission denied", wenn debugging eingeschaltet ist (s.u.).
Die einfachste Lsung ist, die Standardvorgabe fr die Rechte der Datei /usr/sbin/pppd in der Datei /etc/permissions entsprechend zu
ndern. Suchen Sie in dieser Datei nach der Zeile
/usr/sbin/ppd
root.dialout
4754
und ndern Sie diese in
/usr/sbin/ppd
root.einwahl
4750
(Danke fr den Hinweis an Joerg Menke)
Sie knnen jetzt berprfen, ob die Installation soweit funktioniert, indem Sie sich an einer der Konsolen als Benutzer "einwahl" einloggen.
Wenn alles stimmt, sehen Sie nach einem kurzen Moment eine Reihe merkwrdiger Zeichen auf dem Bildschirm, unter den Zeichen finden
Sie eine Menge von geschweiften Klammern. Was Sie da sehen, sind die Ausgaben von pppd, der versucht, mit Ihnen ber die Details der
ppp-Verbindung zu verhandeln. In der Regel beendet sich pppd dann nach erfolglosen Versuchen (Sie sind ja in diesem Moment kein
Modem) von selbst. Andernfalls beenden Sie die Verbindung oder fahren Sie das System herunter.
In den man-pages ist auch beschrieben, da der mgetty einen AutoPPP-modus beherrscht. Das heit, da der Proze, der sozusagen an der
Telefonleitung lauscht, dann bei Anruf den pppd startet. Das htte den Vorteil, da das spezielle Einwahlscript fr den Benutzer nicht
notwendig wre, aber ich habe das bei meinen Versuchen nicht zum Laufen bekommen. (Wenn da jemand eine laufende Konfiguration hat,
wre ich fr einen Hinweis dankbar ...).

3.3 Einwahl nur zu bestimmten Zeiten ermglichen


Wenn im Bro nur eine Telefonleitung zur Verfgung steht, an der das normale Telefon und das Modem parallel angeschlossen sind, knnen
Sie dafr sorgen, da der Einwahlrechner nur auerhalb der Brostunden eine Verbindung zult. Das Modemprogramm (mgetty) berprft
nmlich, bevor es abhebt, ob fr die serielle Schnittstelle (in unserem Beispiel ttyS0) des Modems eine Datei nologin.ttyS0 im Verzeichnis
/etc existiert. Wenn ja, wird nicht abgehoben, wenn nein, wird abgehoben.
Mit Hilfe des cron-Programms knnen wir dafr sorgen, da Werktags zu Brobeginn diese Datei erstellt wird und zu Broende wieder
gelscht wird. Es gibt eine systemweite Datei fr das Programm cron (/etc/crontab) und fr jeden Benutzer/jede Benutzerin eine eigene. Bei

meinem Einwahlserver habe ich in die systemweite Datei zwei Zeilen wie folgt eingetragen:
0 18 * * 1-5 root rm /etc/nologin.ttyS0
0 7 * * 1-5 root cp /etc/dummy /etc/nologin.ttyS0
Die erste davon bewirkt, da um 18 Uhr und 0 Minuten mit der Benutzerkennung root der Befehl rm /etc/nologin.ttyS0 ausgefhrt
wird, das heit die Datei /etc/nologin.ttyS0 gelscht wird.
Die zweite bewirkt, da um 7 Uhr und 0 Minuten diese Datei erstellt wird, indem eine Datei aus dem /etc-Verzeichnis entsprechend umkopiert
wird. Diese Datei kann leer sein oder einen beliebigen Inhalt haben (Sie sollten wenigstens hineinschreiben, wofr sie gut ist, falls sich spter
einmal Alsheimer ankndigt). Das heit, Sie mssen diese Datei erst einmal mit einem beliebigen Editor erstellen.
Achtung: Je nach Konfiguration von mgetty kann es auch sein, da mgetty auf ihr Modem nicht ber /dev/ttyS0 oder /dev/ttyS1 zugreift,
sondern ber den symbolischen Link /dev/modem. Wenn also obiges nicht funktionieren sollte, versuchen Sie es mit /etc/nologin.modem als
Dateinamen.

3.4 Weitere Systemeinstellungen fr die Modemeinwahl


Die lokale Netzwerkkarte mu natrlich richtig installiert sein und vernnftig laufen, wenn Sie auf das Netz zugreifen wollen, in dem sich der
Einwahlserver befindet. Das setze ich im folgenden voraus.
Wichtig fr das Modem-Einwahlsystem ist vor allem die Datei /etc/ppp/options.modem, in der die Details fr das Programm pppd festgelegt
werden. Ganz wichtig: Das PPP-System verlangt, da eine Datei /etc/ppp/options im System vorhanden ist. Da aber diese Beschreibung so
ausgelegt ist, da parallel die Einwahl per Modem und per ISDN-Karte mglich sind und unterschiedliche Optionen fr ISDN-Karte und
Modem erforderlichj sind, hat diese hier keine Funktion. Sie mu aber vorhanden sein! Deshalb sollten Sie eine Datei dieses Namens
erstellen, die z.B. lediglich einen Kommentar enthlt!
Wenn Sie nur eine einwahl per modem einrichten wollen, knnen Sie sich die Datei options.modem sparen und alles in die Datei options
schreiben.
Die Datei des Einwahlservers ist nachfolgend kommentiert wiedergegeben (Kommentare beginnen mit einem #)
#
# Datei /etc/ppp/options.modem
# es sollen Meldungen ber den Verbindungsaufbau in die Datei
# /var/log/messages geschrieben werden, die bei der Fehlersuche helfen
# wenn das Ganze luft besser wieder herausnehmen, da die Datei sonst zu gro wird
debug
# benutze die modem control lines
modem
# benutze hardware flow control
crtscts
# alle Zeichen der Verbindung koennen genutzt werden
asyncmap 0
# Groesse der Uebertragungspakete fuer die Uebertragung
mtu 1500
# Groesse der Uebertragungspakete fuer Empfangen
mru 1500
# die beiden obigen Werte knnen bei schlechten Telefonleitungen verkleinert werden
# und liefern dann einen etwas besseren Durchsatz
#
# Spiegle dem System vor, die IP-Adresse des anrufenden Modems gehre zum lokalen Netz
proxyarp
# Das angerufene System soll (passiv) auf Initiativen des anrufenden Systems warten
passive
# die ip-Nummern werden fest vorgegeben fr die Modems lokal:remote
# bei kleinen Systemen sicher einfacher als dynamische ip-Zuweisung
192.168.2.40:192.168.2.41
# Wenn Sie die Sicherheit erhhen wollen, dann sollten Sie Authentifizierung
# aktivieren. Das sicherste Verfahren (weil beidseitig) ist CHAP
# Dann sollten Sie folgende Zeilen einfgen:
require-chap
refuse-pap
# Etwas unsicherer ist Authentifizierung per PAP. Dann mssen Sie eine Zeile
# einfgen, die den Inhalt: require-pap heit.
# Bei CHAP mu dann eine Datei /etc/ppp/chap-secrets
# PAP eine Datei /etc/ppp/pap-secrets vorhanden sein.

# Eine Beschreibung finden sie weiter unten.


Sie finden im Verzeichnis /etc noch ein Unterverzeichnis /mgetty+sendfax. Die dort bei der Systeminstallation eingerichteten Dateien
dialin.config login.config mgetty.config voice.conf habe ich nicht weiter verndert.

4 Einwahlrechner fr eine ISDN-Verbindung


Die Konfiguration eines ISDN-Einwahlrechners ist nach meiner Meinung wesentlich einfacher als die eines Modem-Einwahlrechners. Das
liegt zum einen daran, da eine ISDN-Karte in einem Linuxsystem behandelt wird wie eine Netzwerkkarte. Das heit sie hat eine IP-Nummer
und ist anders als ein Modem als Gert "ansprechbar", auch wenn keine Verbindung vorliegt. Zum anderen wird der spezielle ppp-Daemon
(das Hintergrundprogramm fr die ppp-Verbindung - ipppd) bei einer ISDN-Karte nur einmal beim Systemstart aktiviert und lauscht
gewissermaen stndig, ob auf die Karte zugegriffen wird. Er stellt dann die Verbindung her oder baut sie wieder ab. Das erspart uns hier die
Hilfskrcke mit dem Einwahlbenutzer und dem speziellen Einwahlskript.
Die einfachste Lsung ist meiner Meinung nach, die ISDN-Karte zu Beginn so einzurichten, als wolle mensch eine Verbindung vom Server
zum Client (zu dem Rechner, der sich einwhlt) herstellen. Wir tun also so, als wre es gerade andersherum als wir eigentlich wollen. Bei
S.u.S.E. geschieht das am einfachsten mit dem Installationsprogramm YaSt. Das ist im Handbuch so deutlich beschrieben, da ich mir hier
Details spare.
Um jetzt aus dem Rechner einen Einwahlserver zu machen, mssen einige Dateien angepat werden.
Ich fhre im folgenden nur die zu ndernden Details auf:
/etc/ppp/ip-up
Dieses Skript wird unter Linux immer aufgerufen, wenn eine ppp-Verbindung zustand kommt und wenn sie abgebaut wird. Bei einem Client,
also einem Rechner, der sich woanders einwhlt, wird vor allem im Abschnitt ip-up des Skripts das routing so gesetzt, da die IP-Pakete dann
in das fremde Netz weitergeleitet werden. Bei einem Server wre das aber vlliger quatsch. Das Routing mu hier so bleiben, wie vor der
Einwahl.
ffnen Sie die Datei /etc/ppp/ip-up und lschen Sie bis auf die Semikolons alles zwischen den Zeilen ip-up) und ip-down).
Eigentlich kann die Datei ganz gelscht werden, aber der Rest schadet zumindestens nicht.
Der entsprechende Abschnitt der Datei sieht dann so aus:
...
case "$BASENAME" in
ip-up)
;;
ip-down)
...
Dann mssen noch die PPP-Optionen fr das Gert ISDN-Karte gendert werden. Diese werden zum einen aus der systemweiten Datei
/etc/ppp/options gelesen und zum zweiten dann aus der zur jeweiligen Karte gehrigen Konfigurationsdatei. Bei einer Karte ist das
/etc/ppp/options.ippp0. Um ggf. spter weitere Karten hinzufgen zu knnen, ist bei mir die Datei /etc/ppp/options bis auf eine
Kommentarzeile ganz leer. Soweit ich wei, mu diese Datei allerdings vorhanden sein, Lschen geht also nicht.
Die eigentliche Konfiguration erfolgt in
/etc/ppp/options.ippp0. die sieht so aus:
# /etc/ppp/options.ippp0
#Optionen fr einen Einwahlserver
#
# basierend auf dem Originalskript von
# Klaus Franken, kfr@suse.de
#
# das "Gert", hier die erste ISDN-Karte
/dev/ippp0
# ermglicht, da Einwahlrechner als Bestandteil des
# lokalen Netzes erscheint
# Diese Zeile mu eingefgt werden!
proxyarp
# wir geben die IP-Adressen fest vor:
192.168.2.40:192.168.2.41
# ein paar Systemeinstellungen
-vj

-vjccomp
-ac
-pc
-bsdcomp
# Gre der Pakete zum Empfangen
mru 1524
# Gre der Pakete zum Versenden
mtu 1500
Zum Austesten der Verbindungen sollte in der Datei /etc/ppp/ioptions das Debugging aktiviert werden. Dazu sollte das Kommentarzeichen
vor der Zeile mit der anweisung debug entfernt werden. Das sorgt dafr, da in der Datei /var/log/messages die Verbindungsversuche
protokolliert werden. Wenn das Ganze funktioniert, sollte das Kommentarzeichen # wieder eingefgt werden.
# Set 'debug' to create a lot of information in /var/log/messages
debug
Im Prinzip war es das. Da der Einwahlrechner im konkreten Fall an einer greren ISDN-Anlage hngt, protokolliert die Karte alle
Whlverbindungen im Netz und mllt damit die Logdatei /var/log/messages voll. Um das zu unterbinden, habe ich in der Datei
/etc/isdn/isdnlog.isdnctrl0.options die Zeile mit der Angabe syslog= gendert:
# Angabe der gewuenschten Meldungen, die in's syslog eingetragen
# werden sollen
# ist in der Standardeinstellung: syslog=1015
# will aber nur Errors (1), Warnings (2), Notice (4)
syslog=7

5 Mehrere ISDN-Karten in einem Rechner


Vorbemerkung: Im folgenden wird die Konfiguration von zwei ISDN-Karten beschrieben. Ich habe bereits diverse anfragen bekommen,
warum hier eine zweite Karte benutzt wird und nicht der zweite Kanal der ISDN-Leitung. Der banale Hintergrund ist, da in der
Telefonanlage, die hier dahintersteht, nur ein Kanal pro ISDN-Dose geschaltet ist. Es ist also durchaus mglich, das folgende auch auf zwei
Kanle einer ISDN-Karte zu beziehen. Aber ich habe es mir zum Prinzip gemacht, nur das zu beschreiben, was ich selbst realisiert habe,
deshalb bleibt es bei den zwei Karten im Text.
Es ist sehr einfach, in einen Linuxrechner mehrere ISDN-Karten einzubauen und die gleichzeitige Einwahl ber diese zu ermglichen. Es
mssen lediglich gengend Steckpltze sowie unbenutzte Interrupts und IO-Adressen im Rechner vorhanden sein. Bei mir luft das zur Zeit
problemlos mit zwei Karten, wre aber noch auf die selbe Weise leicht erweiterbar.
Leider ist die Konfiguration von mehreren Karten zumindestens fr die SuSE-Distribution nirgendwo beschrieben und SuSE leistet hier zu
meinem rger 8-(( nur kostenpflichtigen Support - dabei ist das Ganze sehr einfach.
Sie bentigen ISDN-Karten, bei denen Interrupt und IO-Adresse einstellbar sind. Bei mir sind das zwei Fritz-Card classic. Sie mssen fr die
zu installierenden Karten dann Kombinationen fr diese Werte finden, die sich nicht berschneiden, die bei den Karten einstellbar sind und
die nicht von anderen Karten im Rechner bereits belegt werden.
Die mglichen Werte der Karten finden Sie im Handbuch der Karte, die im Rechner belegten Werte, indem Sie an der Kommandozeile den
Befehl cat /proc/interrupts und cat /proc/ioports eingeben.
Der Einfachheit halber habe ich die erste ISDN-Karte standardgem ber YaST - wie oben beschrieben - konfiguriert und dann lediglich fr
die zweite Karte die entsprechenden Ergnzungen vorgenommen. Nachfolgend kommen also im wesentlichen die Ergnzungen und
Vernderungen fr die zweite Karte.
Sie mssen in der Datei /etc/rc.config die zweite ISDN-Karte als Netzdevice eintragen.
# Es gibt im Rechner 3 Netzinterfaces, die Netzkarte (_0) und die beiden ISDN-Karten (_1) (_2)
NETCONFIG="_0 _1 _2"
#
IPADDR_0="192.168.1.40"
IPADDR_1="192.168.1.41"
IPADDR_2="192.168.1.42"
# interne Namen der Netzwerkkarte(eth0) und der ISDN-Karten (ippp0, ippp1)
NETDEV_0="eth0"
NETDEV_1="ippp0"
NETDEV_1="ippp1"
#
IFCONFIG_0="192.168.1.40 broadcast 192.168.1.255 netmask 255.255.255.0 up"

IFCONFIG_1="192.168.1.41 pointopoint 192.168.1.40 up"


IFCONFIG_2="192.168.1.42 pointopoint 192.168.1.40 up"
Bei SuSE befinden sich die wesentlichen Konfigurationsdateien in diesem Zusammenhang seit der Version 6.0 in folgenden Verzeichnissen:
Verzeichnis

/etc/ppp

Konfigurationsdateien

Inhalt/Zweck

options

Grundkonfiguration der ppp-devices

options.ippp0, ippp1 usw. spezifische Konfiguration der einzelnen devices

/etc/rc.config.d/ i4l_xxxx.config

Skript, das automatisch beim Verbindungsaufbau und


-abbau gestartet wird
Konfigurationsdateien fr die ISDN-Hardware

/etc/isdn

Konfigurationsdateien fr ISDN-Details

ip-up bzw. ip-down

isdnlog.xxx.options

Im folgenden also Hinweise zu den notwendigen nderungen und Ergnzungen.

Dateien im Verzeichnis /etc/rc.config.d


Der erste Schritt ist die Konfiguration der Hardware. Die Hardwaredetails werden in der Datei
/etc/rc.config.d/i4l_hisax.rc.config definiert. Wenn nur eine Karte im System ist, werden Dinge wie Interrupt, IO-Port
usw. durch einzelne Zeilen festgelegt. Um mehrere Karten zu initialisieren, werden die Einstellungen fr die Karten beim Laden des
HiSax-Moduls als Parameter bergeben. SuSE wertet beim Start des Moduls dafr den Eintrag in der Zeile I4L_MODUL_OPTIONS= aus.
Dort werden (in dieser Reihenfolge) angegeben: Kartentyp Protokoll IO-Adresse Interrupt Name, jeweils getrennt durch ein Leerzeichen und
die Angaben fr mehrere Karten jeweils getrennt durch ein Komma.
Meine Konfiguration sieht so aus:
I4L_MODUL_OPTIONS="type=5,5 protocol=1,1 irq=10,15 io=0x300,0x240 id=Fritz1%Fritz2"
Es ist zum einen nach meinem Eindruck ein Bruch in der Logik der anderen SuSE-HiSax-Konfigurationsdateien, wo ansonsten immer
maximal vier devices vorkonfiguriert sind, zum anderen bin ich mir nicht sicher, ob es ggf. zu Problemen kommen kann, wenn in der obigen
Zeile andere Werte fr die erste Karte angegeben werden als in den "normalen" Konfigurationszeilen. Ich habe demnach nur die untere Zeile
eingefgt und die anderen so gelassen wie sie waren.
Achten Sie bei den anderen Dateien in diesem Verzeichnis darauf, da auch in der jeweiligen Zeile fr das zweite device gltige Eintragungen
stehen. Also z.B. in i4l_default.rc.config dann fr den Whlmodus
#
I4L_DIALMODE_0="auto"
I4L_DIALMODE_1="auto"
usw. in den anderen Zeilen.
Anpassen mssen Sie auf jeden Fall die Eintragungen fr die Telefonnummern der ISDN-Anschlsse an denen die Karten hngen. Diese
stehen in i4l_option.rc.config. Bei mir steht dort diesbezglich:
#
I4L_LOCALMSN_0="18"
I4L_LOCALMSN_1="19"
Wichtig! Bei Telefonanlagen ist dies in der Regel nicht die vollstndige von der Post zugewiesene MSN, sondern meist nur die Endziffer in
der internen Anlage! Im Zweifelsfall bekommen Sie das heraus, wenn Sie den Anschlu, an der die Karte angeschlossen ist anrufen und die
Eintrge in die ISDN-Logdateien ansehen. Dort werden die Nummern aufgezeichnet.
Dies ist auch zu beachten, wenn Sie in der selben Datei definieren wollen, welche Nummern anrufen drfen.Sie mssen dann
den Eintrag in den Zeilen I4L_SECURE_n auf on setzen und dann wieder die richtige Nummer eintragen.
I4L_SECURE_0="on"
I4L_SECURE_1="on"
In der Datei i4l_sp_option.rc.config mssen Sie noch eintragen, da alle Karten jeweils an einen ippp-Daemon gebunden werden soll. Also:
I4L_PPPBIND_0="yes"
I4L_PPPBIND_1="yes"

Dateien im Verzeichnis /etc/isdn


Mageblich sind hier die Dateien isdnlog.isdnctrl0.options und zudem die Datei isdnlog.isdnctrl2.options. Letztere ist eine Kopie von
/etc/isdn/isdnlog.isdnctrl0.options. Lediglich der Dateiname mu in isdnctrl2 (Etwas verrckt, da das hier gleich auf die Nummer zwei
springt, aber es ist in der Tat so)gendert werden und die Portnummer um einen erhht werden.
Suchen Sie also in dieser Datei nach der Zeile mit dem Eintrag
port=
und tragen dort die nchstgrere Zahl ein. Bei mir steht dort in isdnlog.isdnctrl0.options port=20011 und in isdnlog.isdnctrl2.options
port=20012.

Dateien im Verzeichnis /etc/ppp


Kopieren Sie die bereits vorhandene Datei options.ippp0 unter dem Namen options.ippp1 (Eine genauere Beschreibung der options.ippp0
finden Sie in einem der oberen Abschnitte). Sie mssen zwei Zeilen ndern, die zum device und die fr die IP-Nummer.
# Das Device ist fr die zweite Karte ippp1
/dev/ippp1
# IP Addressen: <local>:<remote>
# Hier werden die IP-Adressen statisch zugewiesen
192.168.2.40:192.168.2.42
Die IP-Nummer fr den lokalen Rechner bleibt gleich, aber der anrufende Rechner bekommt eine andere als beim device ippp0.

Testen der Konfiguration


Zum Testen knnen Sie bei laufendem Rechner das ISDN-System herunterfahren und wieder neu starten, indem Sie den Befehl
/sbin/init.d/i4l restart eingeben. Sie knnen dann an der Konsole und in der Datei /var/log/messages nachsehen, ob es Probleme
gegeben hat.

Besondere Konfiguration fr einen Rechner, der sowohl als Einwahlrechner als auch als
Verbindungsrechner dient
Da ich schon mehrfach gefragt worden bin, wie ein Rechner zu konfigurieren ist, der die eine ISDN-Karte nutzt, um selbst eine Verbindung
zum Netz aufzubauen und die andere, um seinerseits die einwahl zu ermglichen, hier ein kurzer Hinweis.
Entscheidend ist die Datei /etc/ppp/ip-up, in der das Routing gesetzt wird. Hinweise zum Routing fr den Einwahlrechner finden Sie auf
dieser Seite, Hinweise zum Routing fr einen Internetserver auf der entsprechenden Seite.
Die Grundidee ist, nur bei der ISDN-Karte, die die Verbindung zum Provider herstellt das Routing anzupassen und bei der ISDN-Karte, auf
der man sich einwhlen kann, alles so zu lassen wie es ist.
Im folgenden kommt eine Beschreibung des Grundgerstes der Datei /etc/ppp/ip-up, die Details mssen dann entsprechend der eigenen
Rechnerkonfiguration angepat werden.
#!/bin/sh
#
#
#
#
#
#
#
#

Grundgerst eines Skriptes ip-up fr einen


Linuxrechner, der mit einer ISDN-Karte (ippp0)
die Einwahl in das System erlaubt
und gleichzeitig sich mit der anderen (ippp1) selbst
in das Internet einwhlt

#
#
#
#
#
#
#

Definition von Variablen, die im Skript verwendet werden:


da ip-down ein Link auf ip-up ist, mu festgestellt werden
ob ip-up oder ip-down aufgerufen wurde.
Unter Linux wird der Name des aufgerufenen Programms
bzw. Skriptes als erster Parameter bergeben.
in BASENAME wird also gespeichert, ob es sich um ip-up
oder um ip-down handelte.

Das Skript wird vom System standardgem mit folgenden Parametern aufgerufen:
<INTERFACE> <DEVICE> <SPEED> <LOCALIP> <REMOTEIP>"

BASENAME=`basename $0`
INTERFACE=$1
DEVICE=$2

SPEED=$3
LOCALIP=$4
REMOTEIP=$5
# Hier sind einige Zeilen herausgenommen, die in einer
# vollstndigen Datei aber enthalten sein sollten
...
#
#
#
#

jetzt wird in einer ersten case-Abfrage festgestellt, ob als


Interface der Daemon fr die erste ISDN-Karte (ippp0),
fr die zweite ISDN-Karte (ippp1) oder das Modem (ppp0)
gewhlt ist.

case "$INTERFACE" in
# erste ISDN-Karte (zur Einwahl von auen
ippp0)
# Zweite case-Abfrage, um festzustellen, ob ip-up
# oder ip-down aufgerufen wurde.
case "$BASENAME" in
# wenn ip-up aufgerufen wurde, dann wird die Verbindung hergestellt
# Bei einem Einwahlrechner bleibt das Routing hier unverndert.
ip-up)
;;
# Am besten ebenfalls leer lassen
ip-down)
;;
*)
# Diese Stelle des Skriptes sollte eigentlich niemals erreicht werden
;;
esac
# Ende der zweiten case-Abfrage
;;
# zweite ISDN-Karte mit der Verbindung zum Provider hergestellt
# wird. Unterschied zu oben: Das Routing mu hierbei konfiguriert
# werden.
ippp1)
# Zweite case-Abfrage, um festzustellen, ob ip-up
# oder ip-down aufgerufen wurde.
case "$BASENAME" in
# Hier wird jetzt beim Verbindungsaufbau das Routing gesetzt.
ip-up)
# Hier wird das Routing gesetzt
...
;;
ip-down)
# Beim Verbindungsabbau das Routing wieder auf die
# Ausgangswerte setzen
...
;;
*)
;;
esac
# Ende der zweiten case-Abfrage
;;
ppp*)
# Hier ggf. Kommandos fr die Modemeinwahl einfgen
;;
*)
# Auch diese Stelle drfte eigentlich nie erreicht werden.
;;
esac
# Ende der ersten case-Abfrage

6 Sonstige allgemeine Systemeinstellungen


Wenn Sie die Wahl haben, sollten Sie immer eine Authentifizierung per CHAP verlangen, da dies ein zweiseitiges Verfahren ist und etwas
hhere Sicherheit bietet. Sie bentigen dann eine Datei /etc/ppp/chap-secrets.
Wenn Authentifizierung per CHAP verlangt wird, mu auf beiden Rechnern eine Datei /etc/ppp/chap-secrets vorhanden sein. Dort werden
jeweils in einer Zeile server, client und ein Pawort festgehalten, mit dem sich die Systeme gegenseitig bekanntmachen. Da CHAP zweiseitig
ist, d.h. der Client meldet sich beim Server an und umgekehrt, hat die Datei auf beiden Rechnern das nachfolgend beschriebene Aussehen. Die
Namen fr Client und Server entsprechen blicherweise den jeweiligen Hostnamen, mssen aber wohl nicht; im dargestellten Beispiel
verwende ich ppp_client fr den Rechner, der anruft und ppp_server fr den Rechner, der angerufen wird. Interessant ist, da wohl bei
Einwahl per Modem auch die IP-Nummer angegeben werden mu. Ich erlaube im folgenden alle IP-Nummern und trage deshalb einen Stern
am Ende jeder Zeile ein.
# /etc/ppp/chap-secrets
# server
client
secret
ppp_server
ppp_client
verratichnicht
ppp_client
ppp_server
verratichnicht

*
*

Das routing auf dem Einwahlserver ist sehr einfach, es gibt dort nur die lokale Netzkarte und das default-Gateway des Netzes (in unserem Fall
wieder ein Gateway).
#
# /etc/route.conf
#
# wird gelesen von /sbin/init.d/route.
#
# loopback-device
127.0.0.0
0.0.0.0
255.255.255.0
# Ethernetz-Karte, die mit dem lokalen Netz verbunden ist
192.168.2.0
0.0.0.0
255.255.255.0
# default-route zeigt auf das gateway im Netz
default
192.168.1.1

lo
eth0

Das routing fr das Modem und die ISDN-Karte wird automatisch geregelt, insbesondere der Eintrag proxyarp in /etc/ppp/options ist hier
wichtig!

7 Sicherheitsaspekte
Die beschriebene Lsung ist aus Sicherheitsaspekten insbesondere fr die Modemeinwahl nicht ganz unproblematisch, da Benutzer dort von
auen ein Programm (pppd) mit root-Rechten ausfhren knnen. Im vorliegenden Fall ist das nicht weiter wild, da der Rechner selbst kein
Arbeitsplatzrechner ist, sondern nur fr die Einwahl eingerichtet ist und sich Hacker sowohl den Einwahlnamen, Passwort und die
Gruppenzugehrigkeit erschleichen mten. Im schlimmsten Fall mu der Rechner wieder neu eingerichtet werden.
Fr ffentlich zugngliche Lsungen sollte das eigentliche Netz durch ein Firewall o.. Sicherheitsmanahmen abgeschirmt werden. Eine
vollwertige Workstation mit wichtigen Daten wrde ich so nicht einrichten.
Ein Hinweis noch fr Nutzer von Windows, die sich per DF-Netzwerk auf den Linux-Server einwhlen. Dort sollte in den
Netzwerkeinstellungen unter ->Servertyp->TCPIP Einstellungen das "Standard-Gateway im Remote-Netzwerk verwenden" aktiviert sein,
andernfalls ist zwar ein ping, telnet und ftp vom Linux zum Windows mglich, andersherum allerdings nicht (Danke fr den Hinweis an Jrg
Niemeyer).

Zurck zur Hauptseite

Der Linuxserver als Scannerserver


Gliederung
1 Einleitung
2 Voraussetzungen
3 SANE selbst kompilieren
4 Konfiguration des Servers
5 Konfiguration eines Linux-Clients
6 Konfiguration eines Windows-Clients
7 Probleme

1 Einleitung
Ein Linuxrechner kann mittels spezieller Software im Netzwerk den gemeinsamen Zugriff auf einen
Scanner ermglichen. Ich habe im Moment zwar noch ein kleines Problem mit der Konfiguration, halte
das Thema aber fr so interessant, da ich im Gegensatz zu meinen sonstigen Gepflogenheiten hier eine
"unvollstndige" Beschreibung ins Netz stelle, da ich bisher im Netz zu diesem Thema noch nicht viel
Informationen gefunden habe.
Vielleicht hat auch jemand eigene Erfahrungen, die mir eventuell weiterhelfen knnten. Fr
entsprechende Anregungen wre ich dankbar, ich bin mir nicht sicher, ob meine Probleme mit meinem
Scanner oder mit Konfigurationsfragen zusammenhngen.

2 Voraussetzungen
Natrlich mssen Sie ber einen Scanner verfgen und dazu noch ber einen Scanner, der von Linux
untersttzt wird. Die aktuelle Liste finden Sie auf der Homepage des SANE-Projekts. Dieses Projekt hat
sich zum Ziel gesetzt, mittels freier Software den Zugriff auf Scanner und vergleichbare Gerte zu
ermglichen.
Sie mssen die SANE-Module Ihrer Distribution installieren. Beachten Sie, da bei SuSE-Linux
(jedenfalls bis einschlielich Version 6.1) das Programm fr den Scannerserver nicht im Standardpaket
enthalten ist. Sie mssen hier zumindestens fr den Server die Software selbst kompilieren (Anleitung
dazu folgt)!
Wenn Sie unsicher sind, ob die Software bei Ihnen komplett ist, suchen Sie auf der Festplatte nach der
Datei saned (meistens im Verzeichnis /usr/local/sbin oder /usr/sbin).
Wenn Sie dauerhaft und hufiger ber das Netzwerk auf einen Scanner zugreifen wollen, ist auch die
Geschwindigkeit im Netz von grerer Bedeutung. Ein DIN-A4-Farbscan kann leicht 30 MByte an
Daten bedeuten. Hier macht es sich stark bemerkbar, ob Sie ber 10 MBit oder ber 100
MBit-Netzwerkkarten verfgen.

Auf den Linuxclients reicht unter S.u.S.E. die normale Installation mittels YaST. Sane befindet sich im
Paket gra "Alles rund um Grafik". Den Quellcode, den Sie im Falle eines Linuxservers bentigen, finden
Sie unter S.u.S.E. im Paket zq "Quellpakete" oder Sie besorgen ihn vom oben genannten Server des
SANE-Projektes. Wenn Sie auf der SANE-Hompeage sind, sehen Sie nach, ob es fr Ihren Scanner
aktuelle Patch-Dateien gibt. Bei mir steht ein Agfa Snapscan zur Verfgung und der funktioniert nur,
wenn der entsprechende Patch installiert ist (Traditionell ein rgernis der S.u.S.E.-Distribution, da der
nicht installiert ist!).

3 SANE selbst kompilieren


Quellprogramme werden in der Regel in gepackter Form zur Verfgung gestellt. Das entsprechende
Archiv mssen Sie sich, wie bereits gesagt entweder von den CDs Ihrer Distribution oder von der
SANE-Homepage oder woher auch immer besorgen. Ich erlutere die folgenden Schritte am Archiv der
Version 1.00 von SANE. Das heit sane-1.00.tar.gz. Kopieren Sie dieses in ein beliebiges Verzeichnis,
fr das Sie Lese- und Schreibrechte haben. Dann mssen Sie das Paket auspacken. Geben Sie den
Befehl:
tar -xvzf sane-1.00.tar.gz
an der Kommandozeile ein oder benutzen Sie die Entpackfunktionen Ihres Dateimanagers.
Wenn dieser Schritt erfolgreich war, finden Sie im aktuellen Verzeichnis ein neues Unterverzeichnis mit
dem Namen sane-1.00. Wechseln Sie in dieses Verzeichnis, indem Sie
cd sane-1.00
eingeben. Wenn Sie einen Patch installieren wollen oder mssen, kopieren Sie die entsprechende
Patch-Datei in das richtige Verzeichnis. Bei mir gehrt z.B. die Datei patch0.5-0.6 in das Verzeichnis
backends. Wechseln Sie in das entsprechende Verzeichnis und installieren Sie den Patch (logischerweise
unbedingt vor dem Kompilieren !!!).
patch < patch0.5-0.6
Dann mssen Sie mit Hilfe des Skriptes configure die Konfiguration Ihres Rechners abfragen. Wichtig
ist, da Sie an dieser Stelle unter anderem die Voreinstellungen fr die Verzeichnisse festlegen knnen.
Hier kommt fr S.u.S.E. wieder eine Besonderheit ins Spiel. SANE ist normalerweise z.B. darauf
eingerichtet, die Konfigurationsdateien unter usr/local/etc/sane.d zu speichern, bei S.u.S.E. ist das aber
/etc/sane.d. Soweit ich das sehe, mu configure fr S.u.S.E. wie folgt aufgerufen werden:
./configure --mandir=/usr/man --libdir=/usr/lib --prefix=/usr
--sysconfdir=/etc
Wenn Sie die Standardeinstellungen bevorzugen, reicht der Aufruf:
./configure
Dann werden alle Programmdateien und Bibliotheken erzeugt:
make
Zur Installation mssen Sie entweder als root eingeloggt sein oder Sie mssen Superuser-Rechte haben
(Geben Sie su ein und dann das root-Passwort).
Durch Eingabe von
make install
werden die Dateien endgltig installiert. Wenn Sie knapp mit Platz auf der Festplatte sind, knnen Sie
jetzt das Verzeichnis lschen, in dem Sie die Quellen von sane-1.00 gespeichert hatten.

4 Konfiguration des Servers


Die Konfiguration des Servers wird durch Konfigurationsdateien im Verzeichnis /etc/sane.d
(S.u.S.E.) bzw /usr/local/etc/sane.d (Standard) bestimmt.
Die Datei dll.conf bestimmt, welche Gerte zur Verfgung stehen. Auf dem Server mu hier eine Zeile
mit dem Wort net enthalten sein und eine Zeile fr das Interface zu Ihrem Scanner. Bei mir ist es ein
Agfa Snapscan, deshalb steht dort snapscan. Die komplette Datei dll.conf auf dem Server mu also
lediglich zwei Zeilen enthalten:
net
snapscan
Die Datei net.conf auf dem Server ist bei mir leer. Es soll aber einige Gerte geben, wo hier
localhost eingetragen sein mu, weil dann auch auf dem Server ber das Netzwerkinterface auf das
Gert zugegriffen wird. Das ermglicht wohl einige spezielle Parameter.
In der Datei saned.conf auf dem Server wird angegeben, welche Rechner auf den Scanner zugreifen
drfen. Es ist ganz wichtig, da hier die sogenannten voll qualifizierten Rechnernamen stehen. Achten
Sie bitte darauf, da diese auch in der Datei /etc/hosts mit der entsprechenden IP-Nummer
eingetragen sind. Ansonsten wrde bei jedem Scanvorgang auf den Nameserver zugegriffen und das
kostet bei Netzen mit Dial-Up-Verbindung Telefoneinheiten.
calluna.meinnetz.com
begonia.meinnetz.com
Wenn auch lokal das Netzinterface bentigt wird, fgen Sie noch eine Zeile
localhost
hinzu (Das schadet auch dann nicht, wenn Sie lokal nicht mit dem Netzinterface arbeiten).
Dann mu in der Datei, die zu Ihrem Scanner gehrt, noch angegeben werden, um welches "Gert" es
sich handelt. In den meisten Fllen gibt es einen symbolischen Link /dev/scanner, der bei der Installation
erzeugt wird. Andernfalls knnen Sie auch z.B. das SCSI-Gert direkt angeben (/dev/sg0 oder /dev/sga
oder hnliches). Wenn bei Ihnen kein Link /dev/scanner existiert, berprfen Sie durch Eingabe von
find-scanner, an welchem anschlu der Scanner erkannt wird. Tragen Sie das dann entsprechend in die
Konfigurationsdatei ein. Bei mir ist das snapscan.conf und dort steht:
/dev/scanner
Damit der Scanner im Netz zur Verfgung gestellt wird, msse Sie noch zwei Dateien im Verzeichnis
/etc ndern. ffnen Sie die Datei /etc/services und fgen Sie eine Zeile mit dem Inhalt
sane
6566/tcp
hinzu. Zustzlich mssen Sie in der Datei /etc/inetd.conf die Zeile
sane stream tcp nowait root /usr/local/sbin/saned saned
ergnzen. Beachten Sie, da hier die Pfadangabe den Verhltnissen auf Ihrem Rechner entsprechen
mssen. Fr meine S.u.S.E.-Konfiguration mu dort z.B. stehen:
sane stream tcp nowait root /usr/sbin/saned saned
Das mte es gewesen sein. berprfen Sie jetzt z.B. mit scanimage oder xscanimage, ob die
Konfiguration lokal funktioniert. Das ist natrlich Voraussetzung dafr, da Sie den Scanner im Netz zur
Verfgung stellen knnen.

5 Konfiguration eines Linux-Clients


Auf einem Linuxclient mu saned nicht installiert sein, daher reicht auch unter S.u.S.E. die
Standardinstallation von SANE. Fr die Konfiguration reichen hier dann die zwei Dateien dll.conf und
net.conf .
In der dll.conf auf dem Client mu lediglich der Netzzugriff aktiviert werden:
net
In der Datei net.conf auf dem Client mu der voll qualifizierte Name des Servers eingetragen sein.
azalea.meinnetz.com
Auch hier sollte dieser in /etc/hosts eingetragen sein.

6 Konfiguration eines Windows-Clients


Fr Windows gibt es meines Wissens nach derzeit zwei Portierungen der SANE-Software.
Eine davon ist noch in einem sehr frhen Stadium (Version 0.1). Sie ist zu finden unter
http://www.sunshinecomputing.com/winsane/ und hat zum Ziel eine vllig freie Implementierung der
Client-Software zu realisieren. Es soll langfristig ein TWAIN-Modul enstehen, so da aus jeder
Windows-Anwendung mit Scanner-Interface auf den Netzdrucker zugegriffen werden kann.
Eine zweite stammt von der Firma Integramicro. Sie ist zwar auch noch nicht fertiggestellt (Version 0.9),
es kann aber bereits damit gearbeitet werden. Als Freeware und mit vollem Quellcode stehen
Kommandozeilenprogramme zum Zugriff auf einen Netzwerkscanner und ein Tool zur Identifikation
von Netzwerkscannern zur Verfgung. Zustzlich wird derzeit als Freeware auch ein Twain-Interface
(Dies aber nicht als Quellcode) zur Verfgung gestellt. Die Installation ist in den readme-Dateien
beschrieben. Aufgrund des frhen Stadiums der Software spare ich mir hier grere Details. Lediglich
die winSANE.ini-Datei soll hier abgedruckt werden:
;WinSANE.ini for WinSANE data source
;
[ScannerParams]
; ScanPartner: 0 --> L/A, 1 --> H/T, 2 --> Gray and 3 --> Color
Mode=3
; -100 to +100
Brightness=0
Contrast=0
; 1 to 1200
XResolution=300
YResolution=300
; 0 --> F/B, 1 --> ADF
ADFScan=0
NoOfXfers=1
; scan window parameters
X=0

Y=0
Width=100
Height=100
; Devices
DeviceList=azalea.meinnetz.com:snapscan:/dev/scanner
ScanDevice=azalea.meinnetz.com:snapscan:/dev/scanner
Scannen per Kommandozeile sollte dann wie folgt mglich sein:
scanimg -d azalea.meinnetz.com:snapscan:/dev/scanner > Bild.ppm

7 Probleme
Derzeit habe ich noch folgendes Probleme beim Netzzugriff. In der Datei /var/log/messages erscheinen
folgende Meldungen:
May 15 15:34:58 azalea saned[363]: access by
saned-user@calluna.meinnetz.com accepted
May 15 15:38:14 azalea saned[363]: process_request: received
unexpected procedure number 0
May 15 15:38:14 azalea saned[363]: exiting
Diese Meldungen erscheinen sowohl beim Zugriff eines Linux-Clients als auch eines Windows-Clients.
Ein Linux-Client erhlt wenigstens ein Preview-Window, allerdings ohne vernnftigen Inhalt.
Alles andere fhrt zu keinen brauchbaren Ergebnissen.
Soweit ich die Diskussionen in der SANE-developers-mailingliste verfolgt habe, liegt dieses Problem
wohl an einem Fehler in dem speziellen Scannermodul. Die beschriebene Konfiguration mte also mit
anderen Scannern funktionieren.
Zurck zur Hauptseite

Ein Linuxserver und Windows CE Gerte


Gliederung
1 Einleitung
2 Voraussetzungen
3 Konfiguration des Linuxservers
4 Konfiguration eines Windows CE-Clients

1 Einleitung
Ende 1999 habe ich mich mit Wehmut entschlossen, meinen Newton gegen einen Casio Cassiopeia
einzutauschen. Apple hat aus meiner Sicht beim Newton genau das geschafft, was IBM vorher bereits
mit OS/2 praktiziert hat. Ein technologisch hochstehendes Produkt durch schlechtes Marketing und
mangelhafte Untersttzung in den Sand zu setzen. Nun ja, es war dieses schne Stck neuer Hardware im
Haus (und wie habe ich es irgendwo im Netz so nett gelesen: Eigentlich ist diese Hardware viel zu
schade, um unter diesem Betriebssystem zu laufen ...) und sofort begannen die berlegungen, ob und wie
diese mit Linux zu nutzen ist. Linux CE (fr Interessierte hier der Link zur Linux CE Webseite) ist noch
nicht so weit, da die Gerte im Alltag damit einsetzbar wren. Also bleibt im Moment nur, das Gert
unter Windows CE mit einem Linuxrechner zu verbinden.
Damit sich diese Verbindung herstellen lt, mu im Grunde ein Mittelding zwischen einem
Modem-Einwahlserver und einer normalen Netzwerkverbindung eingerichtet werden. Die Konfiguration
fr den Linuxserver kann in dieser Form wohl ohne weiteres auch verwendet werden, um eine
Netzwerkverbindung zwischen anderen Windowsrechnern und einem Linuxserver ber ein
Nullmodemkabel zu realisieren. Wegen der Besonderheiten bekommt dieses Thema eine eigene Seite. Es
schadet mit Sicherheit nicht, wenn Sie einmal einen Blick auf die Einwahlserverseiten werfen.
Die folgende Beschreibung ermglicht es Ihnen, das Windows CE-Gert zum vollwertigen Netzclient zu
machen, von dem aus im WWW gesurft werden kann, Dateien per FTP ausgetauscht werden knnen
usw.. Es geht also um mehr als "nur" die simple Verbindung zwischen zwei Rechnern.
Wenn Sie sich fragen, wozu der ganze Aufwand, denn es gibt doch die Mglichkeit, das CE-Gert
mittels ActiveSync relativ problemlos mit Windows-Rechnern zu verbinden: Diese Verbindung ist eben
keine vollwertige Netzverbindung. Soweit ich das bislang nachvollziehen konnte, stellt ActiveSync zwar
eine PPP-Verbindung zwischen beiden Gerten her, aber hier scheint es sich einmal wieder um eine sehr
spezielle Microsoft-Variante zu handeln. Das TCP/IP-Protokoll scheint Bestandteil von Windows CE zu
sein, entsprechende Utilities zeigen beim Solo-Gert eine IP-Nummer. Das CE-Gert bekommt bei
aktiver ActiveSync-Verbindung die IP-Nummer 192.168.55.100 und der Server die IP 192.168.55.101
zugewiesen. Aber es mte auf dem Server dann ein Programm wie WinGate o.. laufen, da mittels
Masquerading dann den vollwertigen Netzzugan ermglicht.
Linux kann hier seine Netzwerkstrken voll ausspielen.

2 Voraussetzungen
Windows CE
Auf meinem Casio ist Windows CE in der Version 2.11. Unbedingt bentigt wird noch das serielle
Verbindungskabel fr die Verbindung zwischen dem Palmsize-Gert und dem Linuxrechner.
Zustzlich habe ich mir einige Hilfsprogramme aus dem Internet besorgt, die alle als freeware verfgbar
sind und verschiedene Netzfunktionen auf dem CE-Gert bereitstellen.
Das wre zum ersten vxUtil. Es ist auf diversen Servern erhltlich, die Software fr windows CE
anbieten, die Original-Webseite des Herstellers ist www.cam.com. Das Programm bietet Dienste wie
ping, traceroute, finger und andere.
Bei meinem Cassio gibt es wie bei allen anderen Palmsize PCs keine Kommandozeile (DOS-Prompt). Es
gibt ein Programm namens Console, welches fr speziell dafr entwickelte Programme so etwas zur
Verfgung stellt. Achten Sie darauf, da Sie sich sowohl das Programm als auch die notwendige DLL
Kctrl.dll besorgen und letztere im Windows-Verzeichnis installieren. Die Original-Webseite des
Programmautors ist www.oohito.com. Da der Autor Japaner ist, ist es vielleicht einfacher, auf
http://pda.tucows.com/wince/ oder anderen Seiten nach dem Programm zu suchen.
Wenn das Programm console auf Ihrem PPC luft, gibt es ein telnet-Programm und ein ftp-Programm,
welches jeweils mit console zusammenarbeitet. Bei dem Telnet-Programm handelt es sich um FTnet.
Das FTP-Programm heit FFtp. Erhltlich sind beide Programme auf http://www2.osk.3web.ne.jp/~fjw/.
Da dies auch eine japanische Seite ist, gilt der Hinweis wie zu Console.
Um das ftp-Programm und das telnet-Programm zu starten, mssen Sie zuerst Console starten (es
erscheint dann ein weitgehend leeres Fenster) und dann das jeweilige Programm.
Als krnenden Abschlu knnen Sie dann noch einen Internetbrowser installieren. Die Firma Foliage
Software Systems hat das Programm iBrowser als "careware" ins Netz gestellt. Wenn Sie es fr den
persnlichen Gebrauch einsetzen, wird eine Spende an die American Cancer society erwartet. Die
Webseite der firma ist http://www.foliage.de.

Linux
Auf dem Linuxrechner mu logischeweise Linux inclusive der Netzwerkoptionen installiert sein. Wenn
der Einwahlrechner seinerseits in einem Netz hngt, mu er (ebenfalls logischerweise) ber eine
Netzwerkkarte verfgen. Dann bentigen wir noch eine freie serielle Schnittstelle.
Als Pakete mssen mindestens installiert sein:
ppp
Fr die Modem-Verbindung:
mgetty

3 Konfiguration des Linuxservers


Die Verbindung zwischen dem windows CE-Gert und dem Linuxrechner ist eine vollwertige
PPP-Verbindung. Im Grunde handelt es sich um die selbe Konfiguration wie Sie fr den
Modem-Einwahlserver beschrieben ist, nur, da an den seriellen Schnittstellen keine Modems

dazwischengeschaltet sind.
Die serielle Schnittstelle des Linuxrechners berwacht das Programm mgetty. Es wartet darauf, da sich
an der Schnittstelle etwas tut. Um mgetty regelmig beim Systemstart zu starten, mu die Datei
/etc/inittab verndert werden. ffnen Sie diese Datei mit einem Editor und suchen Sie nach den Zeilen
# modem getty
# mo:23:respawn:/usr/sbin/mgetty -s 38400 modem
Entfernen Sie das Kommentarzeichen und passen Sie ggf. die Geschwindigkeitsvorgabe an. Fangen Sie
erst einmal mit einer bertragungsgeschwindigkeit von 19200 an. Wenn das System spter stabil luft,
knnen Sie die Geschwindigkeit schrittweise hochsetzen. ndern Sie die Zeile in:
# fr Verbindung zu Windows CE
mo:23:respawn:/usr/sbin/mgetty -r -s 19200 /dev/ttyS0
# -r heisst driekte Verbindung
# -s setzt die Geschwindigkeit
Falls das CE-Gert nicht an der ersten, sondern an der zweiten seriellen Schnittstelle hngt, mssen Sie
statt /dev/ttxS0 hier /dev/ttyS1 eintragen.
Wenn diese Zeilen nicht zu finden sind, tragen Sie sie selbst dort so ein, wie oben beschrieben.
Geben Sie init 1 und danach von init 2 (bzw. init 3 bei grafischem Login) an der Konsole ein
bzw. fhren ggf. einen Neustart durch. Im Verzeichnis /var/log finden Sie eine Logdatei fr mgetty, in
der bei Problemen hilfreiche Hinweise zu finden sind.
Sie mssen dann einen Benutzer fr die Einwahl definieren. Die genaue Anleitung hierfr finden Sie auf
der Webseite zum Einwahlserver.
Sie mssen dann die Datei /etc/ppp/options anpassen. Wenn der betreffende Rechner nicht noch
zustzlich ber ein Modem oder ber eine ISDN-Karte verfgt, reicht es, wenn Sie die folgenden
Angaben in die genannte Datei schreiben. Wenn Sie beispielsweise eine ISDN-Karte und die serielle
Verbindung zum CE-Gert einrichten wollen, schreiben Sie in die Datei /etc/ppp/options die Dinge, die
beide Konfigurationen gemeinsam haben, in /etc/ppp/options.ippp0 die spezifischen Dinge fr die
ISDN-Karte und in /etc/ppp/options.modem die spezifischen dinge fr das CE-Gert.
Die CE-spezifischen Angaben lauten:
# Datei /etc/ppp/options.modem
# es sollen Meldungen ueber den Verbindungsaufbau in die Datei
# /var/log/messages geschrieben werden, die bei der Fehlersuche helfen
# wenn das Ganze laeuft besser wieder herausnehmen, da die Datei sonst
zu gross wird
debug
# benutze die modem control lines
modem
# benutze hardware flow control
crtscts
# alle Zeichen der Verbindung koennen genutzt werden
asyncmap 0
# Groesse der Uebertragungspakete fuer die Uebertragung
mtu 1500

# Groesse der Uebertragungspakete fuer Empfangen


mru 1500
# Spiegle dem System vor, die IP-Adresse des anrufenden Modems gehoere
zum lokalen Netz
proxyarp
# Das angerufene System soll (passiv) auf Initiativen des anrufenden
Systems warten
passive
# die ip-Nummern werden fest vorgegeben fuer die Modems lokal:remote
# bei kleinen Systemen sicher einfacher als dynamische ip-Zuweisung
192.168.1.101:192.168.1.100
# Fuer die direkte serielle Verbindung wird Authentifizierung
abgeschaltet:
refuse-chap
refuse-pap
#
# Kompression abschalten
novj
novjccomp
# Fr windoof-Rechner DNS vorgeben
ms-dns ip.nummer.des.DNS.servers
Sie mssen natrlich die IP-Nummern auf Ihre Verhltnisse anpassen! Die lokale IP-Nummer mu dabei
innerhalb des Netzwerkes liegen, damit proxyarp funktioniert. Hinter ms-dns mu die IP-Nummer des
Namenservers in Ihrem Netzwerk stehen.
Die obige Konfiguration sollten Sie abndern, wenn per Modem oder ISDN von auen auf Ihren Rechner
zugegriffen werden kann. Denn im Beispiel wird jegliche Authetifizierung durch die Zeilen
refuse-chap und refuse-pap abgeschaltet. Das wre eine groe Sicherheitslcke, wenn andere
Zugriffe mglich sind. Lesen Sie Details zu CHAP und PAP auf den anderen Serverseiten nach, wenn
ntig.
Damit die Verbindung zum Server zu Stande kommt, wird beim Einloggen des Benutzers
einwahl_user ja durch das Anmeldeskript das Programm (genauer der Dmon) pppd gestartet.
Dieses verbindet das "Netzgert" ppp0 mit der seriellen Schnittstelle. Fr das Netzwerk enthlt bei SuSE
die Datei /etc/rc.config Details zur Konfiguration. Im Beispiel fr eine Netzwerkkarte und fr das
CE-Gert. Die Netzwerkkarte wird normalerweise mittels Yast bei der Grundkonfiguration eingerichtet.
In der Regel mssen sie also nur die nachfolgend rot markierten Eintrge anpassen.
#
NETCONFIG="_0 _1"
#
# IP Adresses
#
IPADDR_0="192.168.1.12"
IPADDR_1="192.168.1.101"
#

# network device names (e.g. "eth0")


#
NETDEV_0="eth0"
NETDEV_1="ppp0"
#
IFCONFIG_0="192.168.1.12 broadcast 192.168.1.255 netmask 255.255.255.0
up"
IFCONFIG_1="192.168.1.101 pointopoint 192.168.1.100 up"
#
Tragen Sie dann noch in die Datei /etc/hosts sowohl das ppp0-"Gert" als auch das CE-Gert ein. Bei mir
sind das die zwei zustzlichen Zeilen:
192.168.1.100
cassiopeia.meinnetz.com cassiopeia
192.168.1.101
cassio_ppp.meinnetz.com cassio_ppp
Sehen Sie bitte nach, ob es in Ihrem System eine Datei /etc/ppp/ip-up bzw /etc/ppp/ip-down gibt. Wenn
Sie kein weiteres Modem oder eine ISDN-Karte im System haben, bentigen Sie diese eigentlich nicht.
Achten Sie darauf, da dort zwischen den Zeilen
case "$BASENAME" in
ip-up)
;;
ip-down)
keine Anweisungen stehen. Wenn die Datei z.B. mittels Yast standardgem installierd wird, sind dort
Angaben enthalten, die beim Verbindungsaufbau das routing auf den Rechner am anderen Leitungsende
setzt. Genau das wre hier aber falsch. Details dazu finden Sie auf der Webseite zum Einwahlserver.

4 Konfiguration eines Windows CE-Clients


Starten sie den CE-Rechner und whlen sie im Startmen den Punkt Kommunikation->Verbindungen.
Whlen sie Neue Verbindung einrichten. Whlen sie einen Namen fr die Verbindung, ich habe fr das
folgende Beispiel den Namen Linux ausgewhlt (wie originell 8-)) ).
Ich habe keine Direktverbindung zu Stande gebracht. Ich vermute, da liegt daran, da hier die
Microsoft-eigenen PPP-Einstellungen zum Tragen kommen. Sie mssen also so tun, als wollten Sie eine
Modemverbindung erstellen! Whlen sie also als Modem "Hayes-kompatibel an COM1".

Als Anschlueinstellungen whlen Sie die nachfolgend gezeigten Einstellungen. Die Baudrate knnen
Sie spter unter Umstnden hochsetzen, Sie mssen dann auf dem Linuxrechner aber auch die
entsprechende Schnittstellengeschwindigkeit in /etc/inittab einstellen (siehe oben).

Achten Sie unbedingt darauf, da bei den Anrufoptionen nichts markiert ist.

Bei den TCP/IP-Einstellungen knnen Sie entweder angeben, da die IP-Nummern vom Server zugeteilt
werden, oder Sie tragen die IP-Nummer als Vorgabe ein. Das verkrzt den Verbindungsaufbau minimal.

Der Linuxrechner ist so konfiguriert, da er die IP-Nummer des Namenservers bertrgt. Deshalb kann
nachfolgend ein Hkchen an "Vom Server zugewiesene IP-Adressen" gemacht werden.

Obwohl es sich nur um eine fiktive Modemverbindung handelt, mssen sie eine Telefonnummer
eintragen. Welche ist egal, sie wird in unserem Fall nicht verwendet.

Benutzernamen, Kennwort usw. sind ebenfalls nicht ntig. Lassen sie es leer.

Speichern Sie diese Einstellungen. Verbinden Sie den Linuxrechner mit dem CE-Gert und aktivieren
Sie die Verbindung.

Es ffnet sich ein Fenster. Sie mssen jetzt irgendwie einmal das Drcken der "Enter-Taste" simulieren
(Ich habe noch keinen Weg gefunden, da das irgendwie automatisch umgesetzt wird - wenn hier jemand
einen Tipp hat, wre ich fr einen Hinweis dankbar). Bei Palmsize-PCs ohne Tastatur bentigen Sie
dafr eine Tastatur auf dem Bildschirm oder eine Zeichenerkennungssoftware. Ich arbeite mit
Calligrapher und benutze hier die Calligrapher-Tastatur.

Wenn Sie Enter "gedrckt" haben, mte der Login-Prompt des Linux-Systems erscheinen. Sie mssen
den Namen des Einwahl-Benutzers eintippen und dann das Passwort. Daraufhin erscheint eine kurze
Loginmeldun und ein Haufen wirrer Zeichen. Wenn Sie diese sehen, ist der Hauptteil geschafft. Sie sind
nmlich die sichtbaren Zeichen fr die "Verhandlunen" zwischen dem pppd des Linuxrechners und dem
CE-Gert.

Whlen sie im Men Datei->Weiter.

Daraufhin verschwindet das Einwahlfenster und es bleibt ein Meldungsfenster auf dem Bildschirm, mit
der Mitteilung, da Sie verbunden sind und der Mglichkeit, die Verbindung zu beenden.

Ab jetzt sind Sie mit dem Gert voll ins Netz integriert. Der folgende Bildschirm zeigt z.B. den
Bildschrim des iBrowsers mit meinen Linux-Netzseiten.

Ob ein Webbrowser wirklich sinnvoll ist, kann mensch diskutieren. aber Dateitransfer mittels ftp oder

telnet oder der Zuriff auf E-Mail knnen schon Sinn machen.

Zurck zur Hauptseite

Der Linuxserver als CVS-Server


Gliederung
1 Einleitung
2 Voraussetzungen
3 Das Grundprinzip
4 Die Einrichtung von CVS auf dem Linuxserver
5 Konfiguration eines Windows-Clients
6 Konfiguration eines Linux-Clients

1 Einleitung
Was ist ein CVS-Server bzw ein CVS-System?
CVS ist ein Versions-Kontrollsystem, d.h. mit Hilfe von CVS knnen Sie (vor allem bei Textdateien) verschiedene Versionen dieser
Dateien speichern und haben jederzeit die volle Kontrolle ber diese Dateien. Vor allem bietet CVS Ihnen die Mglichkeit, vorherige
Zustnde der Dateien wieder herzustellen, nderungen wieder rckgngig zu machen, verschiedene Varianten anzulegen, etc.. Und das
Ganze funktioniert auch im Netz unter der Beteiligung von verschiedenen Autorinnen und Autoren.
Diese Eigenschaften machen CVS vor allem bei Programmentwicklern interessant, aber eigentlich lt es sich auch bei den meisten
anderen Dateien, die in Versionen weiterentwickelt werden, wunderbar einsetzen. Ich werde im folgenden als Beispiel deshalb auch die
gesamten HTML-Seiten meiner Linux-Serverbeschreibung verwenden. Die eigentlichen HTML-Seiten sind ja auch Textdateien und
deshalb gut dafr geeignet.
Die folgende Beschreibung ist vor allem fr Leute gedacht, die erste Schritte mit CVS machen wollen. Die "Profis" knnen sicherlich viel
mehr damit anfangen, aber wer dann "Blut geleckt" hat, kann sicherlich selber tiefer einsteigen. Die mit CVS gelieferte Dokumentation
und auch die man-pages liefern eine Reihe von guten Hinweisen.
Weitere Informationen finden sich zu Hauf im Internet. Eine Suche mit einer Suchmaschine liefert bei den Stichworten "CVS" und
"Einfhrung" unter anderem folgende Links zu deutschsprachigen Einfhrungen:
http://cs.bonn.edu/II/www-tech/cvs/cvs.html
http://informatik.uni-bremen.de/grp/flowtec/papers/doc/cvs-doku/cvs.html
http://wwwipr.ira.uka.de/~paro/CVS.html
http://wwwmath.uni-muenster.de/informatik/u/paehler/projekte/misc/cvs/
Wesentliche Ausschnitte des Buches "Open source Development With CVS" von Karl Fogel sind kostenlos aus dem Netz
herunterzuladen, u.a. von der Webseite:
http://cvsbook.red-bean.com
Die offizielle Dokumentation von CVS gibt es u.a. unter
http://web.informatik.uni-bonn.de/II/ag-anlauf/cvs/cvs.ps

2 Voraussetzungen
Auf dem Linuxserver mu selbstverstndlich das Netzwerk funktionieren und der Server mu von den anderen Rechnern aus erreichbar
sein. Wenn Sie als Zugriffsmethode die "Remote Shell" (rsh) benutzen wollen, mu auch der entsprechende Daemon installiert und
konfiguriert sein (rshd). Wenn Sie als Zugriffsmethode die Secure Shell ssh benutzen wollen, mssen Sie vorher ssh entsprechend
konfigurieren. Letztere Methode ist aus Sicherheitsgrnden dringend zu empfehlen! Deshalb finden Sie auf einer separaten Seite eine
detaillierte Anleitung dazu.

3 Das Grundprinzip
Um nun ein Repository unter Kontrolle von CVs einzurichten, sind folgende Schritte notwendig:
Die Dateien mssen in das Repository auf dem Server importiert werden.
Die Dateien mssen aus dem Repository "ausgecheckt" und unter Kontrolle des CVS-Systems wieder zurck auf den Client
bertragen werden.

Das klingt vielleicht im ersten Moment umstndlich, das Prinzip wird aber deutlich, wenn man sich die Arbeitsweise des CVS-Systems
an einer Beispielsdatei (test.txt) deutlich macht. Die Idee ist folgende: Auf dem Server wird eine zentrale Version der Datei verwaltet.
Jede Nutzerin, jeder Nutzer kann nun diese Datei in einem definierten Zustand (z.B. Version 2.1.3) aus dem Server-Repository
auschecken und in sein lokales System einbringen. Dann wird diese Datei lokal bearbeitet und nach dem Ende der Bearbeitung wieder in
das Repository auf dem Server eingecheckt. Dabei berprft das CVS-System, welche Vernderungen gemacht wurden und registriert
diese in der internen Datenbank. Hatte in der Zwischenzeit jemand anderes die selbe Datei verndert und wieder eingecheckt, so berprft
CVS, ob sich Konflikte zwischen den nderungen ergeben oder nicht. Falls nein, werden die beiden nderungen miteinander
"verschmolzen", falls ja, wird derjenige, der versucht, diese "konfliktbeladene" Datei einzuchecken, ber die Konflikte informiert und
aufgefordert, diese zu lsen und dann erneut zu versuchen, die Datei einzuchecken.
Im Folgenden wird das Grundprinzip an einem Beispiel etwas ausfhrlicher fr den Windows-Client erlutert.

4 Die Einrichtung von CVS auf dem Linuxserver


Fr die Einrichtung auf dem Server mssen sie als root eingelogt sein.
Auf dem Server mssen die Pakete cvs und rcs installiert sein. Bei SuSE finden Sie diese in der Gruppe Programmentwicklung.
Wenn das CVS-System installiert ist, mssen Sie sich berlegen, in welchem Verzeichnis sich das sogenannte Repository (lt sich etwa
bersetzen als: Verwahrungsort) befinden soll. Ich gehe im Folgenden vom Verzeichnis /usr/cvs aus. Legen Sie dieses Verzeichnis an und
dann innerhalb des Verzeichnisses ein weiteres Unterverzeichnis CVSROOT (das mu wirklich gro geschrieben werden!).
Jetzt mu das CVS-System initialisiert werden. Geben Sie dazu auf der Kommandozeile den Befehl cvs -d /usr/cvs init ein.
Dadurch werden im Verzeichnis /usr/cvs/CVSROOT eine Reihe von Administrationsdateien angelegt. Ich mute die Zugriffsrechte
fr die dortige Datei history ndern - beim Zugriff von auen beschwerten sich externe Clients darber, da sie keine Eintrge in diese
Datei schreiben durften. Ich habe eine Gruppe cvs eingerichtet und alle Benutzer, die cvs nutzen sollen als Mitglieder in diese Gruppe
eingetragen. Dann habe ich die Gruppenzugehrigkeit dieser Datei entsprechend gendert chgrp cvs history.
Der Zugriff von externen Rechnern kann ber verschiedene Methoden kontrolliert werden (es soll ja schlielich nicht jeder an den
Dateien rumfummeln knnen). Die Kontrolle erfolgt entweder ber das Benutzerpawort des im Server eingetragenen Benutzers oder
indem einem fremden Benutzer (remote) das Zugriffsrecht erteilt wird.
Bei letzterer Variante gibt es verschiedene Methoden des Zugriffs, die sich unter Sicherheitsgesichtspunkten erheblich unterscheiden rsh
und ssh. Ich empfehle dringend die Benutzung von ssh!

Zugriff mittels rsh


Im letzteren Fall mu die Datei /etc/hosts.equiv editiert werden. Dort mu die IP-Nummer bzw. der Rechnername des fremden
Rechners eingetragen werden. Vorsicht: Der fremde Rechner wird unter Sicherheitsaspekten dem Server gleichgestellt! Whlen sie diese
Methode nur in lokalen nicht ffentlichen Netzen! Zustzlich mu dann im Heimatverzeichnis jedes Benutzers, der von auen Zugriff
erhlt eine Datei mit dem Namen .rhosts (mit Punkt davor!!) erstellt werden. Dort mu der Rechnername oder die IP-Nummer des
fremden Rechners und der Benutzername eingetragen sein. Drfen z.B. die Benutzer cvs von den Rechnern 192.168.1.20 und
192.168.1.21 zugreifen sieht die Datei /home/cvs/.rhost so aus:
192.168.1.20
192.168.1.21

cvs
cvs

Zugriff mittels ssh


Die Einrichtung von ssh finden Sie auf einer separaten Seite sowohl fr Server als auch fr Clients beschrieben.
Das war's auf dem Server.

5 Konfiguration eines Windows-Clients


Es gibt fr Windows einen kostenlosen CVS-Client mit grafischer Oberflche namens WinCVS, der meiner Ansicht nach wunderbar
geeignet ist, in diese Materie einzusteigen. Er ist erhltlich von der Webseite http://www.cyclic.com (Da es sich bei dem Programm um
die Portierung eines Mac-Clients handelt, sollten die folgenden Ausfhrungen auch fr diesen gelten). Sie mssen lediglich die Zip-Datei
entpacken und das im Archiv enthaltene Setup-Programm starten.
Gehen wir die notwendigen Schritte im einzelnen an einem Beispiel durch. Es sollen alle Dateien, die zu meiner
Linux-Server-Beschreibung gehren, unter Kontrolle des CVS-Systems gebracht werden.

Grundstzliche Konfiguration von WinCVS


Starten Sie WinCVS. Konfigurieren Sie zuerst das Programm fr eine korrekte Verbindung zum Server. Whlen Sie im Hauptmen den
Punkt Cvs Admin und dort den Unterpunkt Preferences... . Tragen Sie als CVSROOT das Repository auf dem Server ein. Bei
Zugriff auf einen Server erfolgt das wie bei einer E-Mail-Adresse plus der Verzeichnisangabe Benutzer@Server:Verzeichnis.
Der Benutzer mu auf dem Server existieren! Der Eintrag unter Authentication gibt an, mit welcher Methode der Zugriff auf den Server
erfolgt. Local mounted directory heit, da es sich um ein lokales Verzeichnis handelt, bzw. ein per NFS lokal gemountetes Vezeichnis;
".rhosts" file on the cvs server heit, da der Zugriff per rsh erfolgt; "passwd" file on the cvs server heit,
beim Zugriff wird in der Benutzerdatenbank des Servers nach dem Passwort gesucht und SSH server heit, es besteht eine "secure
shell" Verbindung (diese hat den Vorteil, da das Pawort verschlsselt ber das Netz bertragen wird, erfordert aber, da der
entsprechende Daemon auf dem Server installiert und konfiguriert ist (Auch wenn es lstig wird:ssh ist dringend zu empfehlen!).

Dateien von einem bestehenden Verzeichnis auf dem Client in das Server-Repository
bertragen
Wechseln Sie nun in das Verzeichnis, in dem sich die Dateien befinden, die Sie mit CVs kontrollieren wollen. Im Listenfenster sehen Sie
alle betreffenden Dateien.

Whlen Sie im Hauptmen den Punkt Cvs Admin und dort den Unterpunkt Import module... .

Im folgenden Dialogfenster werden Sie nach dem Verzeichnis gefragt, von dem die Dateien zum Server importiert werden sollen (Die
Bezeichnungen beim CVS werden immer aus Sicht des Servers formuliert). Es erscheint ein Fenster, in dem sie ber "Filterprozesse"
informiert werden. Dies hat den Hintergrund, da CVS darber informiert werden mu, wenn auch binre (also nicht aus Text
bestehende) Dateien verwaltet werden sollen. Denn bei solchen Dateien kann CVS logischerweise die nderungen nicht mehr verfolgen

und verwalten. Die Voreinstellungen von WinCVS sind recht gut, in den meisten Fllen sind keine Vernderungen mehr notwendig. Es
macht sowieso mehr Sinn, CVS vor allem Textdateien anzuvertrauen. Es erscheint ein weiterer Dialog, in dem Sie nach dem
Modulnamen und Pfad auf dem Server gefragt werden. Whlen Sie hier einen aussagekrftigen Namen (in unserem Beispiel linux-html)
und bedenken Sie bitte die unterschiedliche Handhabung von Dateinamen in verschiedenen Betriebssystemen. Windows zeigt z.B. zwar
Gro- und Kleinbuchstaben an, verwendet aber intern nur Grobuchstaben. Alte Unixsysteme knnen z.b. nur Dateinamen bis maximal
32 Zeichen verarbeiten usw..Vendor tag sollte eine Kurzbezeichnung fr den Hersteller enthalten (im Beispiel D-Reymann) und Release
tag eine kurze Beschreibung des Versionsstandes (im Beispiel: Erstes-Release). Sie knnen zustzlich noch weitere Erluterungen im
Feld fr die log message eingeben. Bei Erfolg sehen Sie im unteren Fensterabschnitt von WinCVS eine Meldung, die die importierten
Dateien zeigt und eine Meldung, da der Import ohne Konflikte funktioniert hat.
Ab jetzt stehen diese Dateien allen zugelassenen Clients zur Verfgung.

Auf dem Client ein Verzeichnis unter CVS-Kontrolle einrichten


Bis jetzt ist allerdings erst die halbe Arbeit getan! Denn im Moment sind nur die Dateien auf dem Server unter Kontrolle des
CVS-Systems, nicht aber die auf dem Rechner, von dem sie importiert wurden. Damit auch hier CVS arbeiten kann, mssen nun die
Dateien vom Server "ausgecheckt" werden. Das funktioniert am besten, wenn Sie dafr ein Verzeichnis verwenden, da noch nicht
existiert. Whlen Sie im Hauptmen den Punkt Cvs Admin und dort den Unterpunkt Checkout module... .Es ffnet sich ein
Dialogfenster.

Whlen Sie in diesem Dialog das Verzeichnis aus, unterhalb dem das neue, unter CVS-Kontrolle stehende Verzeichnis erstellt werden
soll. Im folgenden Dialog werden Sie dann nach dem Namen des Moduls gefragt, das vom Server geholt werden soll. Dies ist der Name,
den Sie beim Import angegeben haben! Wenn Sie einmal einen Blick auf die Verzeichnisstruktur des Servers werfen, werden Sie
feststellen, da dort unterhalb des CVS-Root-Verzeichnisses ein Verzeichnis mit genau diesem Namen existiert.

Bevor Sie auf den OK-Knopf drcken, sollten Sie berprfen, ob unter den globalen Einstellungen eventuell aktiviert ist, da Dateien nur
als "read-only", also nur zum Lesen, aber nicht mit Schreibzugriff vom Server geholt werden. Falls das Feld "Checkout read-only"
aktiviert ist, so deaktivieren Sie diese Einstellung. Klicken Sie dann auf OK.

Sie mten wieder im unteren Teil des Fensters eine Erfolgsmeldung sehen. Wechseln Sie in das Verzeichnis, das Sie eben erstellt haben
(Men "View -> Change Browser location"). Wenn Sie einmal mit dem Windows-Explorer in dieses Verzeichnis sehen, werden Sie
feststellen, da dort ein Unterverzeichnis CVS erstellt wurde. Dies braucht das CVS-System, um die Versionskontrolle abwickeln zu
knnen.
Wichtig: Sie drfen dieses Unterverzeichnis CVS niemals lschen oder verndern, wenn Sie wollen, da CVS funktioniert.
Klicken Sie jetzt auf den Button "Refresh view" und Sie sehen das folgende Bild:

Im Hauptfenster sehen Sie den Dateinamen, die Versionsnummer (CVS fngt immer mit 1.1.1.1 an), Optionen fr die dateien (-kb heit
z.B., da es sich um eine binre Datei handelt.

Die weitere Arbeit mit CVS


Ab jetzt mte Ihr Arbeitsrythmus bei den Dateien immer wie folgt aussehen:
Zu Beginn der Arbeit holen Sie sich die aktuellen Fassungen der Dateien vom Server (Men: Cvs Folders -> Update folder)
Sie bearbeiten die Dateien wie blich.
Wenn Sie fertig sind, aktualisieren Sie die Dateien auf dem Server, entweder einfach das ganze Verzeichnis (Men: Cvs Folders ->
Commit folder) oder Sie markieren die vernderten Dateien und aktualisieren nur diese (Men: Selections -> Update selection).
WinCVS zeigt ihnen dabei als Hilfe die Dateien, die verndert wurden.
Haben Sie neue Dateien zu Ihrem Projekt hinzugefgt, fgen Sie diese mit Selections->Add selection bzw.
Selections->Add selection binary zum Projekt hinzu. Ab dann stehen auch diese Datein unter CVS-Kontrolle.
Alle tieferen Details zur Dateiverwaltung entnehmen Sie den Hilfedateien oder den genannten Webseiten oder Dateien.

4 Konfiguration eines Linux-Clients


Soll ein Linux-Client auf das Repository des Servers zugreifen, so mssen auch dort die Pakete cvs und rcs installiert sein (Sie enthalten
sowohl Server- als auch Clientfunktionen).
Der Zugriff von einem Linux-Client ist alleine von der Kommandozeile mglich, es gibt aber auch ein grafisches Interface (tkCVS), das
mir persnlich gut gefllt. Ich beschreibe im folgenden die notwendigen Arbeitsschritte fr beide Varianten anhand des selben Beispiels
wie fr den Windows-Client:

4.1 Zugriff von der Kommandozeile


4.1.1 Grundstzliche Konfiguration
Man kann man sich die Arbeit des wiederholten Eintippens des Namens des Repositories sparen, indem man sogenannte
Umgebungsvariablen definiert. Das ist vor allem die Variable CVSROOT und ggf. noch CVS_RSH. Erstere speichert die Lage des

Repositories, letztere die Art des Zugriffs auf den fremnden Server, wenn z.b. rsh oder ssh genutzt werden. Diese Angaben knnen aber
auch jedesmal auf der Kommandozeile angegeben werden. Wenn Sie regelmig mit verschiedenen fremden CVS-Servern arbeiten,
geben Sie vielleicht die Namen jedesmal ein, wenn Sie nur mit einem oder berwiegend mit einem CVS-Server arbeiten, lohnt es sich,
die Angaben in einer Variable zu speichern. Im letzten Fall sollten Sie in Ihrem home-Verzeichnis die Datei .profile entsprechend
ergnzen.
Je nach Shell, die Sie verwenden, kann die Art, wie Sie dies tun, variieren. In unserem Beispiel sollte dort eine Zeile stehen in der Form:
export CVSROOT=:ext:cvs-user@azalea.meinnetz.com:/usr/cvs
Bei anderen Shells knnen auch zwei separate Zeilen erforderlich sein:
CVSROOT=:ext:cvs-user@azalea.meinnetz.com:/usr/cvs
export CVSROOT
Wenn Sie ssh als Zugriffsmethode benutzen wollen, mssen Sie noch eine weitere Umgebungsvariable definieren:
export CVS_RSH=ssh
Die Angaben lesen sich wie folgt: :Zugriffsmethode:Benutzer@server:Verzeichnis.
Die wichtigsten Zugriffsmethoden werden entweder als :pserver: oder als :ext: angegeben. In unserem Beispiel erfolgt der Zugriff via ssh,
deshalb die Angabe :ext:. :pserver: hiee, da der Zugriff ber die Passwort-Datei des Servers erfolgen wrde.
4.1.2 Dateien von einem bestehenden Verzeichnis auf dem Client in das Server-Repository bertragen
Nehmen wir fr das Linux-Beispiel an, das Verzeichnis /home/cvs-user/linux-html solle in das Repository des Servers
bertragen werden und die Umgebungsvaraible CVSROOT sei wie oben beschrieben gesetzt. Wechseln Sie in das Homeverzeichnis, also
das Verzeichnis oberhalb des Verzeichnisses, das bertragen werden soll.
Geben Sie auf der Kommadozeile ein:
cvs import -W "*.zip -k 'b'" -W "*.gif -k 'b'" -W "*.png -k 'b'" -m "Erster Import"
linux-html D-Reymann Erstes-Release
Die Angaben in der Form -W "*.zip 'b' " informieren das CVS-System darber, da es sich bei einer Gruppe von Dateien oder bei
einzelnen Dateien um Binrdateien handelt.
Wenn Sie die CVSROOT-Umgebungsvaraible nicht gesetzt haben, lautet die Zeile:
cvs -d :ext:cvs-user@azalea.meinnetz.com:/usr/cvs import -W "*.zip -k 'b'" -W "*.gif -k 'b'"
-W "*.png -k 'b'" -m "Erster Import" linux-html D-Reymann Erstes-Release
Sie mten jetzt die Besttigung erhalten, da der Import ohne Konflikte geklappt hat (No conflicts created by this import).
4.1.3 Auf dem Client ein Verzeichnis unter CVS-Kontrolle einrichten
Wie bereits beim Windows-Client beschrieben, ist bis jetzt nur auf dem Server ein Verzeichnis vorhanden, das unter Kontrolle von CVS
steht. Damit Sie auch auf dem Client ein Verzeichnis haben, das unter Aufsicht von CVS steht, mssen Sie dieses vom Server
auschecken. Da wir in diesem Beispiel den selben Namen fr das neue Verzeichnis verwenden wollen wie fr das Ursprungsverzeichnis,
benennen wir das Ursprungsverzeichnis um mv linux-html linux-before.
Geben Sie in dem Verzeichnis, unterhalb dessen das neue von CVS kontrollierte Verzeichnis entstehen soll, den Befehl
cvs checkout linux-html
bzw. bei nicht gesetzter Umgebungsvariable CVSROOT:
cvs -d :ext:cvs-user@azalea.meinnetz.com:/usr/cvs checkout linux-html
ein. Sie mten wieder eine Erfolgsmeldung sehen und unterhalb des aktuellen Verzeichnis mte ein neues Verzeichnis linux-html
erstellt worden sein und in diesem das Unterverzeichnis CVS mit den Kontrolldateien fr das CVS-System.
Die weitere Arbeit mit CVS
Ab jetzt mte Ihr Arbeitsrythmus bei den Dateien immer wie folgt aussehen:
Zu Beginn der Arbeit holen Sie sich die aktuellen Fassungen der Dateien vom Server, indem Sie im Verzeichnis, das unter
CVS-Kontrolle steht, den Befehl eingeben:
cvs update bzw.
cvs -d :ext:cvs-user@azalea.meinnetz.com:/usr/cvs update
Sie knnen auf der Kommandozeile auch angeben, da nur Dateien eines bestimmten Typs "upgedatet" werden sollen, indem Sie
einfach den Dateityp oder den Dateinamen angeben: cvs update *.html
Sie bearbeiten die Dateien wie blich.
Wenn Sie fertig sind, aktualisieren Sie die Dateien auf dem Server, indem Sie eingeben:
cvs commit bzw.
cvs -d :ext:cvs-user@azalea.meinnetz.com:/usr/cvs commit

Sie knnen auf der Kommandozeile auch angeben, da nur Dateien eines bestimmten Typs "upgedatet" werden sollen, indem sie
einfach den Dateityp oder den Dateinamen angeben: cvs commit *.html.

4.2 Zugriff mit Hilfe von tkCVS


Wesentlich einfacher ist nach meinem Geschmack die Arbeit mit dem grafischen Interface zu CVS namens tkCVS. Dies bekommen Sie
umsonst im Internet unter anderem von der tkCVS-Webseite:
http://www.neosoft.com/tcl/ftparchive/sorted/packages-7.6/apps/tkcvs-6.0/
Downloaden Sie die Datei tkcvs-6.0.tar.gz.
4.2.1 Installation/Grundstzliche Konfiguration
TkCVS bentigt TK. TK ist die grafische Schnittstelle zur Kommandosprache TCL (Tool Command Language). Zur Nutzung von tkCVS
mssen in Ihrem Linuxsystem die Pakete tcl und tk installiert sein!
Kopieren Sie die Datei tkcvs-6.0.tar.gz in ein beliebiges Verzeichnis auf dem Linuxrechner, in dem Sie Schreibrechte haben.
Entpacken Sie die Datei, z.B. indem Sie auf der Kommandozeile folgenden Befehl eingeben:
tar -xvzf tkcvs-6.0.tar.gz
Es mte jetzt ein Unterverzeichnis tkcvs-6.0 angelegt worden sein, in dem Sie weitere Dateien und Unterverzeichnisse finden. Wechseln
Sie in das Unterverzeichnis, indem Sie cd tkcvs-6.0 eingeben und wechseln Sie weiter in das Unterverzeichnis tkcvs (cd tkcvs).
Dort finden Sie ein Installationsskript namens doinstall. Fr SuSE 6.1 (und ich vermute auch fr hhere Versionsnummern) mssen
Sie eine kleine nderung an diesem Skript durchfhren. ffnen Sie dieses Skript in einem Editor und Suchen Sie folgende Zeilen:
WISH=`which wish4.0`
if [ ! -f $WISH ]; then
WISH=`which wish4.1`
fi
Da auf meinem SuSE-System die Version wish4.2 installiert ist, habe ich diese Zeilen gendert in:
WISH=`which wish4.2`
if [ ! -f $WISH ]; then
WISH=`which wish`
fi
Sie sollten fr die folgende Installation als root eingelogt sein. Geben Sie ./doinstall ein, um die Installation zu starten. Wenn Sie
keine Fehlermeldung sehen, knnen Sie das Programm durch Eingabe von tkcvs starten.
TkCVS ist sehr umfangreich und mchtig. Deshalb im Folgenden nur die einfachsten Varianten zum Importieren und zum Auschecken
der Dateien.
4.2.2 Dateien von einem bestehenden Verzeichnis auf dem Client in das Server-Repository bertragen
Starten Sie tkCVS und wechseln Sie in das Verzeichnis oberhalb des zu importierenden Verzeichnisses. Whlen Sie im Men die Punkte
File->Import... . Geben Sie im darauffolgenden Dialogfenster das Module Directory linux-html, als Module Name linux-html, als
Version Number 1 und als Module Code z.B. D-Reymann ein und klicken dann auf OK.
Nach einiger Zeit erscheint ein Fenster mit der Mitteilung da der Import ohne Konflikte abgelaufen ist und Sie sehen eine Liste der
importierten Dateien..
4.2.3 Auf dem Client ein Verzeichnis unter CVS-Kontrolle einrichten
Damit Sie auch auf dem Client ein Verzeichnis haben, das unter Aufsicht von CVS steht, mssen Sie dieses vom Server auschecken. Da
wir in diesem Beispiel den selben Namen fr das neue Verzeichnis verwenden wollen wie fr das Ursprungsverzeichnis, benennen wir
das Ursprungsverzeichnis um mv linux-html linux-before.
Starten Sie tkCVS und wechseln Sie in das Verzeichnis oberhalb des zu importierenden Verzeichnisses. Whlen Sie im Men die Punkte
File->Checkout... . Im folgenden Dialogfenster geben Sie als Module code linux-html ein und Klicken auf Check Out. Besttigen
Sie die Nachfrage "This will check out bakara from CVS. Are you sure?" mit OK. Nach einer Weile sehen sie ein Fenster mit einer liste
der ausgecheckten Dateien.
4.2.4 Die weitere Arbeit mit tkCVS
Ab jetzt mte Ihr Arbeitsrythmus bei den Dateien immer wie folgt aussehen:
Zu Beginn der Arbeit holen Sie sich die aktuellen Fassungen der Dateien vom Server, indem Sie in das Verzeichnis wechseln, das
unter CVS-Kontrolle steht.
Whlen Sie im Men File->Update.

Sie bearbeiten die Dateien wie blich.


Wenn Sie fertig sind, aktualisieren Sie die Dateien auf dem Server, indem Sie im Men File->Check In auswhlen.
Wenn Sie nur ausgewhlte Dateien updaten oder Einchecken wollen, knnen Sie diese im Fenster von tkCVs markieren und
entsprechende Menbefehle bzw. den passenden Button auswhlen.

Viel Spa.

Zurck zur Hauptseite

Sichere Verbindungen mit ssh


Gliederung
1 Einleitung
2 Voraussetzungen
3 Das Grundprinzip
4 Die Einrichtung von ssh auf dem Linuxserver
5 Konfiguration eines Windows-Clients
6 Konfiguration eines Linux-Clients

1 Einleitung
Warum sichere Verbindungen?
Verbindungen zwischen Rechnern im Internet und auch in Intranets werden immer strker unter dem
Aspekt Sicherheit diskutiert. Im heimischen privaten Netz spielt dies sicherlich eine wesentlich geringere
Rolle als bei Rechnern, die in irgendeiner form ffentlich zugnglich sind.
Ein besonderes Einfalltor fr Angriffe sind alle Verbindungen, bei denen im Verlauf des
Verbindungsaufbaus oder whrend der Verbindung selbst Daten zwischen den beteiligten Rechnern
unverschlsselt bertragen werden. Von dieser Problematik sind vor allem telnet-Verbindungen
betroffen aber auch die an anderer Stelle beschriebenen Zugriffe auf CVS-Server.
Eine Lsung dafr bietet die Nutzung der sicheren Verbindung ssh (secure shell), die eine verschlsselte
Verbindung zwischen Client uns Server bietet. Dies ist vor allem auch dann sinnvoll, wenn Sie
beispielsweise Rechner fernwarten wollen.
Nachfolgend wird die Konfiguration eines Linux-Servers sowie von Linux- und Windows-Clients fr ssh
beschrieben. Das Ganze ist so einfach zu realisieren, da eigentlich kein Grund existiert, unverschlsselte
Verbindungen berhaupt noch zuzulassen.

2 Voraussetzungen
Auf dem Linuxserver mu selbstverstndlich das Netzwerk funktionieren und der Server mu von den
anderen Rechnern aus erreichbar sein.

3 Das Grundprinzip
Die Sicherheit einer ssh-Verbindung basiert darauf, da es sich um eine "authentifizierte" Verbindung
handelt und da die Datenbertragung verschlsselt durchgefhrt wird.
Ohne das hier im Detail zu erlutern, Authentifizierung heit, da sich die an der Verbindung beteiligten

Partner mit Hilfe von Schlsseln gegenseitig ausweisen mssen. Das verwendete Verfahren ist eines, bei
dem auf jeder Seite ein ffentlicher und ein privater Schlssel vorhanden sind. Der Partner bekommt
jeweils den ffentlichen Schlssel des anderen, aber dieser wird nur akzeptiert, wenn auf dem Rechner
der passende private Schlssel vorhanden ist. Vom Grundsatz her ist dies das selbe Prinzip, das PGP
(pretty good privacy) fr die Verschlsselung von Mails verwendet.

4 Die Einrichtung von ssh auf dem Linuxserver


Fr die Einrichtung auf dem Server mssen Sie als root eingelogt sein.
Es mu das Paket ssh (bei SuSE in der Gruppe Netzwerk enthalten) installiert werden. Bei
SuSE-Systemen erledigen Sie das am besten mit YaST. Nach der Installation von ssh mssen Sie dafr
sorgen, da auf dem Server der ssh-Daemon luft. Das ist das Programm, das darauf wartet, da eine
Anfrage zum Aufbau einer ssh-Verbindung eintrifft und dann den Authentifizierungsprozess abwickelt.
Bei SuSE reicht es, wenn Sie in der Datei /etc/rc.config die Zeile suchen, die mit START_SSHD beginnt
und diese auf START_SSHD=yes setzen. Danach starten Sie das System neu oder den Daemon von
Hand starten (Befehl auf der Kommandaozeile: /sbin/init.d/sshd start).
Damit Verbindungen aufgebaut werden knnen, mssen nun die ffentlichen und privaten Schlssel
generiert werden. Geben Sie dazu als root auf der Kommandozeile den Befehl ein:
ssh-keygen -b 1024 -f /etc/ssh_host_key -N ''
Damit Benutzer von auen auf den Server zugreifen knnen, mu ein entsprechender Benutzer auf dem
Server eingerichtet werden. Ich verwende im Folgenden den Benutzernamen ssh-nutzer. Richten Sie
zuallererst ganz normal einen solchen Benutzer im System ein (Bei SuSE z.B. mittels YaST). ffen Sie
ein Terminal und loggen Sie sich als Benutzer ssh-nutzer ein und wechseln Sie in sein
Heimatverzeichnis (cd /home/ssh-nutzer). Geben Sie dort den Befehl ssh-keygen ein und wenn
Sie nach einer Passphrase und deren Besttigung gefragt werden, drcken Sie jeweils die Enter-Taste.
Das war's auf dem Server.

5 Konfiguration eines Windows-Clients


ssh-Client
Soweit ich wei, gibt es fr Windows einen kostenlosen ssh-Client und einen telnet-Client, der in der
Lage ist, eine Verbindung ber ssh aufzubauen.
Der Windows-ssh-Client ist erhltlich unter ftp://ftp.cs.hut.fi/pub/ssh/contrib. Laden Sie dort die Datei
ssh-1.2.14-win32bin.zip herunter (oder ggf. die aktuelle Version). Entpacken Sie das Zip-Archiv in ein
beliebiges Verzeichnis auf dem Windows-Rechner (im folgenden D:\Programme\ssh). Sie mssen nun
den privaten und den ffentlichen Schlssel fr den Client erzeugen. ffnen Sie ein DOS-Fenster im
Ssh-Verzeichnis. Erstellen Sie dort ein Unterverzeichnis .ssh (Ja, wirklich: Punktssh), indem Sie md
.ssh eingeben und geben Sie nachfolgend dort ein:
ssh-keygen -C Benutzer@Rechner -f ./.ssh/identity

Ersetzen Sie dabei Benutzer@Rechner durch Ihren Benutzernamen und den Rechnernamen. Im Grunde
ist es egal, was Sie hier eingeben, aber der erzeugte Schlssel entspricht so den eigentlichen (von Unix
kommenden) Vorgaben. Wenn Sie nach einer Passphrase und deren Besttigung gefragt werden, drcken
Sie jeweils die Enter-Taste.
Jetzt mu der erzeugte ffentliche Schlssel auf den Server kopiert werden. Dazu mu ein Benutzer auf
dem Server existieren. Mit diesem Benutzernamen werden dann im Folgenden die Verbindungen
aufgebaut. Ich verwende in diesem Beispiel den im Kapitel fr die Serverkonfiguration bereits
eingerichteten Benutzer ssh-nutzer. Sie mssen den Inhalt des ffentlichen Schlssels (Datei:
identity.pub) auf dem Server in die Datei authorized_keys kopieren, die sich im Unterverzeichnis .ssh im
Benutzerverzeichnis (im Beispiel: /home/ssh-nutzer/.ssh/authorized_keys) befindet. Sie
mssen also am besten diese Datei auf den Server kopieren (z.B. per ftp) und dann z.B. mit Hilfe eines
Editors den Inhalt von identity.pub des Clients in in die Datei /home/ssh-nutzer/.ssh/authorized_keys
kopieren. Wenn Sie ihren ersten Benutzer einrichten, knnen Sie die Datei identity.pub auch einfach
entsprechnd umbenennen.
Damit Sie jetzt von berall aus eine ssh-Verbindung aufbauen knnen, sollten Sie auf der
Windows-Maschine die Variable HOME auf das Verzeichnis setzen, in dem sich das ssh-Programm
befindet. Zudem sollten Sie dieses Verzeichnis in die PATH-Anweisung aufnehmen. Unter Windows 95
und 98 nehmen Sie einfach eine Zeile
set HOME=D:\Programme\ssh
dort auf und ergnzen Sie die Zeile, die mit PATH= anfngt am Ende mit ;D:\Programme\ssh;
Unter Windows NT gehen Sie in die Systemsteuerung, whlen dort Systemund dort Umgebung. Fgen
Sie dort eine entsprechende Variable HOME ein und ergnzen Sie die PATH-Anweisung wie erlutert.
Damit diese Einstellungen systemweit gelten, mssen Sie als Administrator angemeldet sein!
Sie knnen jetzt testen, ob die Verbindung funktioniert. Geben Sie in einem DOS-Fenster den Befehl
ssh Rechnername
ein. Rechnername kann dabei die IP-Nummer des Servers sein, aber auch dessen Name, wenn er in der
Datei \Winnt\system32\drivers\etc\Hosts aufgelistet ist.
Sie mten jetzt eine Meldung in der Art: Host '192.168.1.1' added to the list of known hosts. Und
dannach den Prompt des Lunuxservers sehen. Glckwunsch, das war die erste ssh-Verbindung.

telnet-Client
Der Telnet-Client Tera Term Pro ist erhltlich auf der Webseite
http://www.vector.co.jp/authors/VA002416/teraterm.html.
Sie mssen dort zustzlich die "SSH Extension to Teraterm" TTSSH herunterladen. Bei einer Reihe von
Distributionen (so z.B. SuSE) wird Tera Term Pro auch auf den CDs der Distribution mitgeliefert.
Nebenbei bemerkt empfiehlt sich die Installation von Tera Term Pro meiner Meinung nach sowieso, da
es weitaus leistungsfhiger ist als z.B. das bei Windows mitgelieferte telnet.
Entpacken Sie die Archive in ein beliebiges Programmverzeichnis. Es gibt zwei Mglichkeiten, Tera
Term Pro mit ssh-Untersttzung zu starten:

1. Sie starten das Programm ttssh.exe im Programmverzeichnis von Tera Term Pro und whlen dann
unter Service SSH. Oder Sie setzen wie weiter oben beschrieben eine Umgebungsvariable namens
TERMATERM_EXTENSIONS=1. Dann knnen Sie die Datei ttermpro.exe direkt starten und gelangen
zum genannten Erffnungsfenster. Whlen Sie nach der Wahl von SSH OK, geben den Benutzernamen
auf dem Server (im Beispiel: ssh-nutzer) ein und whlen Sie "Use RSA key to log in". Dabei mu unter
"Private key file" der Name des privaten ssh-Schlssels eingegeben werden (im Beispiel:
D:\Programme\ssh\.ssh\identity) ein.
Sie knnen den Verbindungsaufbau automatisieren, indem Sie einerseits eine Verknpfung zu
ttermpro.exe erstellen, in der unter Ziel als Parameter der Hostname und der Parameter ssh angegeben
sind (im Beispiel Ziel: D:\Programme\TTerm\ttermpro.exe 192.168.1.1:22 -ssh). Andererseits gehen Sie
im laufenden Programm im Men zu den Punkten Setup->SSH Autentication... und tragen
dort im Fenster wie oben erlutert den Benutzernamen, "Use RSA key to log in" und "Private key file"
ein und whlen im Men Setup->Save setup... .

4 Konfiguration eines Linux-Clients


Fr die Einrichtung mssen Sie als root eingelogt sein.
Es mu das Paket ssh (bei SuSE in der Gruppe Netzwerk enthalten) installiert werden. Bei
SuSE-Systemen erledigen Sie das am besten mit YaST.
Sie mssen nun den privaten und den ffentlichen Schlssel fr den Client erzeugen. ffnen Sie ein
Terminal-Fenster in Ihrem Heimat-Verzeichnis. Geben Sie dort ein:
ssh-keygen
Wenn Sie nach einer Passphrase und deren Besttigung gefragt werden, drcken Sie jeweils die
Enter-Taste.
Jetzt mu der erzeugte ffentliche Schlssel auf den Server kopiert werden. Dazu mu ein Benutzer auf
dem Server existieren. Mit diesem Benutzernamen werden dann im Folgenden die Verbindungen
aufgebaut. Ich verwende in diesem Beispiel den im Kapitel fr die Serverkonfiguration bereits
eingerichteten Benutzer ssh-nutzer. Sie mssen den Inhalt des ffentlichen Schlssels (Datei:
identity.pub) auf dem Server in die Datei authorized_keys kopieren, die sich im Unterverzeichnis .ssh im
Benutzerverzeichnis (im Beispiel: /home/ssh-nutzer/.ssh/authorized_keys) befindet. Sie
mssen also am besten diese Datei auf den Server kopieren (z.B. per ftp) und dann z.B. mit Hilfe eines
Editors den Inhalt von identity.pub des Clients in in die Datei /home/ssh-nutzer/.ssh/authorized_keys
kopieren. Wenn Sie ihren ersten Benutzer einrichten, knnen Sie die Datei identity.pub auch einfach
entsprechnd umbenennen.
Sie knnen jetzt testen, ob die Verbindung funktioniert. Geben Sie in einem Terminal-Fenster den Befehl
ssh Rechnername
ein. Rechnername kann dabei die IP-Nummer des Servers sein, aber auch dessen Name, wenn er in der
Datei \etc\Hosts aufgelistet ist.
Viel Spa.

Zurck zur Hauptseite

Der Linuxserver - Sonstiges


Auf dieser Seite finden sich ein paar Hinweise auf Details, wo ich an der Serverkonfiguration
"Optimierungen" vorgenommen habe.

Statusmeldungen auf der ersten Konsole


Die Standardeinstellung meines Systems war, da der Groteil der Systemmeldungen in die Datei
/var/log/messages geschrieben wurde. Das ist bei der anfnglichen Systemkonfiguration aus meiner Sicht
sinnvoll. Denn durch Nachlesen in der Datei knnen so eventuelle Fehler identifiziert werden.
Als das System einmal wie gewnscht funktionierte, war ich aber etwas genervt ber die Menge an
Eintrgen in die Datei und ich fand es unangenehm, mich jedesmal einloggen zu mssen, um dann mit
dem Kommando tail -f /var/log/messages die letzten Eintrge zu sehen. Ich wollte
automatisch nach Systemstart auf dem Bildschirm (genauer: auf der ersten Konsole) die aktuellen
Meldungen sehen. Da ich so wie so nur noch selten am Server selbst arbeiten mu, reicht es mir, fr
diesen Zweck dann auf eine der anderen Konsolen zu wechseln (STRG + ALT +Fn) und mich dann dort
einzuloggen.
Die Lsung sieht so aus:
In der Datei /etc/syslog.conf wird festgelegt, welche Meldungen wo angezeigt bzw. gespeichert werden
sollen. Im Original stehen dort unter anderem folgende Eintrge
kern.warn;*.err;authpriv.none /dev/tty10
*.*;mail.none;news.none /var/log/messages
Diese Eintrge sorgen dafr, da standardgem eine Reihe von Fehlermeldungen und Warnungen auf
der zehnten Konsole ausgegeben werden und, da der Groteil der Meldungen eben in der Datei
/var/log/messages landet. Ich habe beide Zeilen auskommentiert und eine Zeile wie folgt eingefgt:
*.* /dev/tty1
Das fhrt zum gewnschten Ergebnis.

Administration des Systems mit Hilfe von Webmin


Wem es zu kompliziert ist, selbst an den Konfigurationsdateien des Linuxrechners "herumzufummeln",
dem bietet das Programm WebMin eine gute Alternative. Es hat noch nicht die Versionsnummer 1
erreicht, luft aber schon prima. Technisch funktioniert es so, da ein Miniwebserver auf dem
Linuxrechner gestartet wird, der dann in der Beispielskonfiguration unter der Adresse
http://192.168.1.1:10000 von jedem beliebigen Client mit jedem beliebigen Webbrowser erreichbar ist.
Fr die wichtigsten Konfigurationsdinge (User, Mail, Samba, Drucker, NFS, DNS, Apache, Squid und
und) sind dort sehr komfortable Schnittstellen realisiert. Selbst ein Dateimanager ist integriert.
Meiner Ansicht nach ist das Programm wirklich einen Blick wert und sehr zukunftsweisend. Zu
bekommen ist es von der WebMin-Webseite. Downloaden Sie die aktuelle Version, entpacken Sie das
Archiv (am Besten in das Verzeichnis /usr/local/webmin und starten Sie in diesem Verzeichnis das Script

setup durch Eingabe von ./setup.sh. Das war es. Dann knnen Sie wie gesagt von jedem Client aus darauf
zugreifen, indem Sie als Adresse im Browser http://192.168.1.1:10000 angeben. Sie werden nach dem
Administrator-Passwort gefragt und sind dann im Hauptfenster. Weitere Details entnehmen Sie bitte der
(meiner Meinung nach) sehr guten Dokumentation.
Zurck zur Hauptseite