summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2008-08-09 01:32:10 +0000
committerPaul Buetow <paul@buetow.org>2008-08-09 01:32:10 +0000
commit3cfb74df517d497ef9e0902863da8b19fff8eaa9 (patch)
tree6ac9f25f77175edd2cfeaf335ef99809d9d32e2f
parentbbccf49e3e8d05c73789672be62a3cf9e549b099 (diff)
written more
-rw-r--r--LaTeX/chapters/implementierung.tex19
-rw-r--r--LaTeX/diplomarbeit.pdf3805
-rw-r--r--ROADMAP3
3 files changed, 1852 insertions, 1975 deletions
diff --git a/LaTeX/chapters/implementierung.tex b/LaTeX/chapters/implementierung.tex
index 25dd82e..1350f45 100644
--- a/LaTeX/chapters/implementierung.tex
+++ b/LaTeX/chapters/implementierung.tex
@@ -65,7 +65,7 @@ Auf Abbilung \ref{fig:PackagePrefs} ist der Aufbau des Pakets \textit{prefs} zu
Jede Variable besteht aus einen Datentypen, einen Variablenamen und einer optionalen Beschreibung sowie einen Wert. Einige Datentypen unterst\"{u}tzen auch die Angabe von Minimum- und Maximumwerten (zum Beispiel besteht eine Prozentangabe aus einen Integerwert zwischen \textit{0} und \textit{100}), was mithilfe der \textit{VSPrefsRestriction}-Klasse implementiert wird. Da man beispielsweise bei Prozent ein \textit{\%} und bei Millisekunden ein \textit{ms} hinter der Variable sehen m\"{o}chte, kann f\"{u}r jede Variable auch ein optionaler Einheiten-String abgespeichert werden.
-Eine Variablenbeschreibung wird f\"{u}r die Darstellung im GUI verwendet, w\"{a}hrend der Variablenname eher f\"{u}r die interne Verwendung vom Simulator verwendet wird. Zum Beispiel hat die Variable \textit{message.prob.outage} (Verlustwahrscheinlichkeit einer Nachricht) die Variablenbeschreibung ``Nachrichtenverlustw'keit''. Wenn f\"{u}r eine Variable keine Beschreibung existiert so wird, wie auf Abbildung \ref{fig:SimulationseinstellungenExperten} anhand der Farbvariablen schon gesehen wurde, f\"{u}r die Anzeige f\"{u}r eine Variable der Datentyp und der Variablenname verwendet. Variablennamen verwenden die auf Tabelle \ref{tb:VariablenPrefixe} angegebenen Prefixe. Alle verf\"{u}gbaren Typen wurden bereits in Tabelle \ref{tb:VariablenDatentypen} aufgelistet. \textit{VSPrefs} stellt f\"{u}r alle Variablen entsprechende Zugriffsmethoden zur Verf\"{u}gung.
+Eine Variablenbeschreibung wird f\"{u}r die Darstellung im GUI verwendet, w\"{a}hrend der Variablenname eher f\"{u}r die interne Verwendung vom Simulator verwendet wird. Zum Beispiel hat die Variable \textit{message.prob.outage} (Verlustwahrscheinlichkeit einer Nachricht) die Variablenbeschreibung ``Nachrichtenverlustw'keit''. Wenn f\"{u}r eine Variable keine Beschreibung existiert so wird, wie auf Abbildung \ref{fig:SimulationseinstellungenExperten} anhand der Farbvariablen schon gesehen wurde, f\"{u}r die Anzeige f\"{u}r eine Variable der Datentyp und der Variablenname verwendet. Variablennamen verwenden die auf Tabelle \ref{tb:VariablenPrefixe} angegebenen Prefixe. Alle verf\"{u}gbaren Typen wurden bereits in Tabelle \ref{tb:VariablenDatentypen} aufgelistet. \textit{VSPrefs} stellt f\"{u}r alle Variablentypen entsprechende Zugriffsmethoden zur Verf\"{u}gung.
Im Folgenden werden nicht alle exisierenden Methoden aufgelistet, da diese auch in der Quelltext-Dokumentation (Javadoc) eingesehen werden k\"{o}nnen. Die Methoden werden nun nur anhand des Integer-Datentyps verdeutlicht. F\"{u}r alle anderen Typen gilt fast alles analog. F\"{u}r Integer stehen in \textit{VSPrefs} folgende Methoden zur Verf\"{u}gung:
@@ -104,7 +104,7 @@ Im Folgenden werden nicht alle exisierenden Methoden aufgelistet, da diese auch
\label{tb:VariablenPrefixe}
\end{table}
-Hierbei stellt \textit{key} den Variablennamen- und \textit{val} den Variablenwert dar. \textit{descr} ist eine optionale Variablenbeschreibung. Es k\"{o}nnen sowohl Java's Integer-Objekte, als auch Java's primitiver Integer-Typ \textit{int} verwendet werden. Ein \textit{int}-Wert wird intern allerdings als Integer-Objekt abgespeichert und macht somit keinen groen Unterschied. Die Methode \textit{getIntegerKeySet} gibt alle vorhandenen Integer-Variablennamen (\textit{key}s) als \textit{Set} zur\"{u}ck.
+Hierbei stellt \textit{key} den Variablennamen- und \textit{val} den Variablenwert dar. \textit{descr} ist eine optionale Variablenbeschreibung. Es k\"{o}nnen sowohl Java's Integer-Objekte, als auch Java's primitiver Integer-Typ \textit{int} verwendet werden. Ein \textit{int}-Wert wird intern allerdings als Integer-Objekt abgespeichert (f\"{u}r eine sp\"{a}tere Serialisierung, mehr dazu aber sp\"{a}ter) und macht somit keinen groen Unterschied. Die Methode \textit{getIntegerKeySet} gibt alle vorhandenen Integer-Variablennamen (\textit{key}s) als \textit{Set} zur\"{u}ck.
\textit{VSPrefs} bietet auch eine Reihe von \textit{initInteger}-Methoden an, welche sich von den \textit{setInteger}-Methoden dadurch unterscheiden, dass sie eine Variable nur einen Wert zuweisen, wenn sie vorher noch nicht initialisiert wurde, was durch \textit{setInteger} oder \textit{initInteger} selbst geschehen sein kann. Eine komplette \"{U}bersicht aller Methoden (auch f\"{u}r andere Datentypen) gibt es in der Quelltext-Dokumentation.
@@ -131,7 +131,6 @@ Die Klasse \textit{VSSimulatorEditor} dient f\"{u}r das Editieren der globalen S
F\"{u}r Protokolle gibt es keine separate Editor-Klasse, da sie bereits vom Prozesseditor aus editiert werden k\"{o}nnen. Dabei iteriert der Prozesseditor \"{u}ber alle f\"{u}r den jeweiligen Prozess verf\"{u}gbaren Protokollobjekte und f\"{u}gt deren Variablen zus\"{a}tzlich in den Prozesseditor ein. Somit erscheinen die Prozess- und die dazugeh\"{o}rigen Protokollvariablen im selben Editor, womit dem Benutzer eine bessere \"{U}bersicht geboten wird.
-\newpage
\section{Ereignisse}
\subsection{Funktionsweise von Ereignissen}
@@ -144,9 +143,9 @@ F\"{u}r jedes Ereignis existiert eine dazugeh\"{o}rige Klasse, welche die auszuf
\label{fig:PackageEvents}
\end{figure}
-Jedes programmierbare Ereignis mu, bevor es vom Simulator verwendet werden kann, in der statischen Klasse \textit{VSRegisteredEvents} registriert werden. Da sich die Anzahl der verf\"{u}gbaren Ereignisse bei Laufzeit des Simulators nicht \"{a}ndert, gibt es keine Instanzen von \textit{VSRegisteredEvents}. Alle Methoden und Klassenattribute sind hier statisch. Wenn beispielsweise eigene Ereignisse implementiert werden, dann m\"{u}ssen alle neuen Ereignisse per Hand in die Datei \textit{VSRegisteredEvents.java} \"{u}bernommen- und der Simulator erneut kompiliert werden.
+Jedes programmierbare Ereignis mu, bevor es vom Simulator verwendet werden kann, in der statischen Klasse \textit{VSRegisteredEvents} registriert werden. Da sich die Anzahl der verf\"{u}gbaren Ereignisklassen des Simulators bei Laufzeit nicht \"{a}ndert, gibt es keine Instanzen von \textit{VSRegisteredEvents}. Alle Methoden und Klassenattribute sind hier statisch. Wenn beispielsweise eigene Ereignisse implementiert werden, dann m\"{u}ssen alle neuen Ereignisse per Hand in die Datei \textit{VSRegisteredEvents.java} \"{u}bernommen- und der Simulator erneut kompiliert werden.
-In der Implementierung wird zwischen drei Haupttypen von Ereignissen unterschieden, die jeweils in verschiedenen Paketen liegen (siehe auch die leicht vereinfachte Abbildung \ref{fig:PackageEvents}):
+In der Implementierung wird zwischen drei Haupttypen von Ereignissen unterschieden, die jeweils in verschiedenen Paketen liegen (Abbildung \ref{fig:PackageEvents}):
\begin{enumerate}
\item \textit{events.implementations}: In diesem Paket befinden sich alle Ereignisse, die ohne weitere Spezialbehanldung im Simulator eingesetzt werden k\"{o}nnen und vom Benutzer direkt im Ereigniseditor programmierbar sind.
@@ -191,7 +190,7 @@ Jede Ereiginsklasse hat zudem Zugriff auf folgende Attribute, die von \textit{VS
\subsection{Beispielimplementierung eines Ereignisses}
-Im Folgenden wird als Beispiel die Implementierung des Prozessabsturzereignisses \textit{VSProcessCrashEvent} behandelt. Da die dazugeh\"{o}rige Klasse keine Attribute besitzt, verleibt hier auch die \textit{initCopy}-Methode mit leerem Rumpf. Jede Ereignisklasse muss in \textit{onInit()} mit \textit{setClassname} den eigenen Klassennamen mitteilen. In \textit{onStart()} wird das eigentliche Ereignis ausgef\"{u}hrt. Hier wird obligatorisch \"{u}berpr\"{u}ft, ob der Prozess bereits abgest\"{u}rzt (hier eigentlich nicht Notwendig, verbessert aber die Lesbarkeit der Logik) ist und gegebenenfalls wird der Prozess dann zum Absturz bewegt. Der Task-Manager \"{u}berpr\"{u}ft bereits, ob der Prozess abgest\"{u}rzt ist oder nicht, d.h. ein Ereignis wird bei einem abgest\"{u}rztem Prozess gar nicht erst ausgef\"{u}hrt. Die einzige Ausnahme bildet ein Wiederbelebungsereignis (\text{VSProcessRecover}), welches vom Task-Manager ausgef\"{u}hrt wird, auch wenn der Prozess abgest\"{u}rzt ist. Mit \textit{logg} wird eine Nachricht in das Loggfenster geschrieben, welche ueber das \textit{VSPrefs}-Objekt \textit{prefs} bezogen wird:
+Im Folgenden wird als Beispiel die Implementierung des Prozessabsturzereignisses \textit{VSProcessCrashEvent} behandelt. Da die dazugeh\"{o}rige Klasse keine Attribute besitzt, verbleibt hier auch die \textit{initCopy}-Methode mit leerem Rumpf. Jede Ereignisklasse muss in \textit{onInit()} mit \textit{setClassname} den eigenen Klassennamen mitteilen TODO. In \textit{onStart()} wird das eigentliche Ereignis ausgef\"{u}hrt. Hier wird obligatorisch \"{u}berpr\"{u}ft, ob der Prozess bereits abgest\"{u}rzt (hier eigentlich nicht Notwendig, verbessert aber die Lesbarkeit der Logik) ist und gegebenenfalls wird der Prozess dann zum Absturz bewegt. Der Task-Manager \"{u}berpr\"{u}ft bereits, ob der Prozess abgest\"{u}rzt ist oder nicht, d.h. ein Ereignis wird bei einem abgest\"{u}rztem Prozess gar nicht erst ausgef\"{u}hrt. Die einzige Ausnahme bildet ein Wiederbelebungsereignis (\text{VSProcessRecover}), welches vom Task-Manager ausgef\"{u}hrt wird, auch wenn der Prozess abgest\"{u}rzt ist. Mit \textit{logg} wird eine Nachricht in das Loggfenster geschrieben, welche ueber das \textit{VSPrefs}-Objekt \textit{prefs} bezogen wird:
\begin{code}
package events.implementations;
@@ -215,7 +214,6 @@ extends VSAbstractEvent implements VSCopyableEvent {
}
\end{code}
-\newpage
\section{Zeitformate, Prozesse, Nachrichten sowie Task-Manager}
\subsection{Funktionsweise}
@@ -272,7 +270,6 @@ void createCrashAndRecoverExample(VSTaskManager taskManager,
In diesem Beispiel wurden zwei Ereignisse (Absturz- und Wiederbelebung eines gegebenen Prozesses) angelegt. Das Absturzereignis tritt bei der aktuellen lokalen Prozesszeit plus \textit{500ms} ein, w\"{a}hrend das Wiederbelebungsereignis bei einer globalen Zeit von \textit{2000ms} stattfindet. F\"{u}r den Fall, dass das Wiederbelebungsereignis vor dem Absturzereignis eintritt wird es nicht ausgef\"{u}hrt, da der Prozess noch nicht abgest\"{u}rzt ist.
-\newpage
\section{Protokolle}
\subsection{Funktionsweise des Protokoll-APIs}
@@ -503,7 +500,7 @@ Der Server benutzt in diesem Beispiel keinen Wecker. Dementsprechend hat die Met
}
\end{code}
-\subsection{Erstellung eigener Protokolle}
+\subsection{Erstellung eigener Protokolle (Schnelldurchlauf)}
Hier werden alle Schritte zusammegefasst, die f\"{u}r die Erstellung eines eigenen Protokolls \textit{VSMyProtocol} durchgef\"{u}rt werden m\"{u}ssen.
@@ -522,7 +519,6 @@ registerEvent("protocols.implementations.VSMyProtocol",
\item Mit dem Befehl \textit{ant dist} das Archiv \textit{dist/lib/VS-Sim-Latest.jar} erstellen und verwenden.
\end{enumerate}
-\newpage
\section{GUI sowie Simulationsvisualisierung}
Das Paket \textit{simulator} (vereinfacht auf Abbildung \ref{fig:PackageProtocols} dargestellt) implementiert die eigentliche graphische Benutzeroberf\"{a}che des Simulators. Ausnahmen sind die Editorklassen in \textit{prefs.editors} sowie \textit{utils.VSFrame}.
@@ -544,14 +540,12 @@ Die klasse \textit{VSCreateTask} wird vom Ereigniseditor verwendet. Der Ereignis
\textit{VSLogging} kapselt ein \textit{javax.swing.JTextArea}-Objekt, wo alle Nachrichten geloggt werden. Hier werden alle Loggfunktionen (inklusive Loggfilter sowie tempor\"{a}re Deaktivierung des Loggen) implementiert. Die \textit{JTextArea} wird dem \textit{VSSimulator}-Objekt \"{u}bergeben und dort dargestellt.
-\newpage
\section{Serialisierung von Simulationen}
Der Anwender kann eine erstellte Simulation im Datei-Men\"{u} speichern und/oder eine bereits abgespeicherte Simulation laden.
\subsubsection{R\"{u}ckw\"{a}rtskompatibel}
-\newpage
\section{Helferklassen und Klassen f\"{u}r Ausnahmebehandlungen}
Es wurden noch nicht die Klassen der Pakete \textit{utils} (Abbildung \ref{fig:PackageUtils}) sowie \textit{exceptions} (Abbildung \ref{fig:PackageExceptions}) vorgestellt. \textit{utils} fasst lediglich einige Helferklassen zusammen, die vom restlichen Quelltext verwendet werden.
@@ -583,7 +577,6 @@ Es wurden noch nicht die Klassen der Pakete \textit{utils} (Abbildung \ref{fig:P
Im Paket \textit{exceptions} befinden sich lediglich einige eigene Objekte f\"{u}r Ausnahmebehandlungen. \textit{VSNotCopyableException} wird von einem nicht-kopierbaren Ereignis geworfen, wenn versucht wird es zu kopieren. \textit{VSNegatieNumberException} wird geworfen, wenn intern negative Zahlen dort auftreten, wo sie es nicht sollten. Wenn ein Editorobjekt die Benutzereingabe einer Integer-Vektor-Variable nicht parsen kann, so greifen es auf \textit{VSParseIntegerVectorException} zur\"{u}ck.
-\newpage
\section{Entwicklungsumgebung}
In diesem Teilkapitel soll ein kleiner Einblick in die Umgebung, in der der Simulator entwickelt wurde, gew\"{a}hrt werden. F\"{u}r diese Diplomarbeit wurde ausschlielich Open Source Software verwendet. Die einzige Ausnahme stellt Microsoft Windows XP dar, worauf der Simulator zus\"{a}tzlich getestet wurde. Der Simulator wurde jedoch haupts\"{a}chlich unter dem Betriebssystem FreeBSD 7.0, was ein open source Unix-Derivat ist, programmiert.
diff --git a/LaTeX/diplomarbeit.pdf b/LaTeX/diplomarbeit.pdf
index 89967aa..e8c2ee2 100644
--- a/LaTeX/diplomarbeit.pdf
+++ b/LaTeX/diplomarbeit.pdf
@@ -243,7 +243,7 @@ endobj
<< /S /GoTo /D (subsection.3.5.3) >>
endobj
168 0 obj
-(\376\377\0003\000.\0005\000.\0003\000\040\000E\000r\000s\000t\000e\000l\000l\000u\000n\000g\000\040\000e\000i\000g\000e\000n\000e\000r\000\040\000P\000r\000o\000t\000o\000k\000o\000l\000l\000e)
+(\376\377\0003\000.\0005\000.\0003\000\040\000E\000r\000s\000t\000e\000l\000l\000u\000n\000g\000\040\000e\000i\000g\000e\000n\000e\000r\000\040\000P\000r\000o\000t\000o\000k\000o\000l\000l\000e\000\040\000\050\000S\000c\000h\000n\000e\000l\000l\000d\000u\000r\000c\000h\000l\000a\000u\000f\000\051)
endobj
169 0 obj
<< /S /GoTo /D (section.3.6) >>
@@ -748,15 +748,15 @@ endobj
/ProcSet [ /PDF /Text ]
>> endobj
255 0 obj <<
-/Length 1937
+/Length 1958
/Filter /FlateDecode
>>
stream
-xKs6<J3J3uR5ƽqmf-Q=i?}$Ap43ihʹ "2ӖY{/.x_>!V)]ɘbz7.j{7grVlSS^Un/;?(f6Tw*
-76󇿎SZ5d*f:rdPJ;+i3X]ڗPjE< }{U"$I!sVaLR{CDǜ-${ 8%A Bl5IuIlj|u5l;3d*YChzq 8>z֞𿇿=_T)4h-_jb :0E %vb+X/Cuߔ6F8:Fԩ1F 7#|2N6ml&Ly3()" uPv:]'ֵԚ~_`BţvFlUz0Ð6
-ցEUlGPDJJ *!|^ItP~J,hbk5zf΃D ]_bt'uvagw\NFt2b Y*5Shn0/),X≋ęizJ#4#VPcE uYy ]UIK ,'ҫa3ng/Gf
-E bU立ޯWý3îZޭnYݴ/4%G C^Qu>g/<`ylfO3y=9a[MC_T['׏ַŕwl^a5wq"<(KgK-6&D7U9}sٓ ͐\}'I- BYlݕW-Ѯ&DYXܫ9 1zi' şw0p¬xJ;T~[w:ڡ.B#QD(]:3Nn(k<Pa
-Mӫ&|} gQoU^;fǾC5'Tƿ҈ c3v2 cvqj> K9C&Mf%B̫k'KS`t.endstream
+xYoF)(v1A64KflUH~Β\r%g(@&0`_;~YQ
+#N `>-'봫 ^'WZ,^\s¬âW7-wzբd𣺾=(N՚?))b {$NQ?O1ar٧.|,WZWU\qc϶mmYroceF%(b[AqI1ȜSfV 1)!c+A&b dp1h#;M'iS|_<n.z`7U]u?g `3^Рq*}gsiS?C /4+M9 /zf gЧU}8 ~oڋ7qO\ '3"cc?Rgrщ6]!Y3%U`?Q(SDZ=Pvy%^8mj1?c ٚ
+}8NJƕu~W)"ZrYNN+n^"#OP+͉2Fͺԩ͞~ ]u٤EQZ:(UƓ~y~y}N"$]SY~J?RAH~}fϟ%#7EN:uw^85vcE~D,Shr$bV/$k_ϑdwGDN fcݩ2 YDYIWY1b=9zЃ+(MdDxcl.uwts_m֧WKp?A̱)A DFzȇ,sX"5̙y0H-XN^7<<yQm}=mMC~]NMuyUX+Tݠx͵ F89՜M܀%tzT# 'N2cD-EYu]:4IxFH"'22nsajhV,h6X緌ՋjR2qXv~[nͺ9}hPn]t%Ac֦]hߝ*Q2>?A#C#OW+P1' 3mӴĹpwE}|S]m}sgi{[Ne
+VDDSvƎ96rS;o'd1NwC7W dŮڽ-{!ZrI
+UƝ!?Ve2f~?>ZS* 9WCJf IMHƄם*JΑ/VΥSXS<PayT4ˤ3|OtPx͜.^جkmhϞkCzc߬M/ȸzN-Ҹ}F(LN&/wv4Ekgendstream
endobj
254 0 obj <<
/Type /Page
@@ -867,7 +867,7 @@ endobj
274 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [107.4855 505.8046 252.6067 516.1807]
+/Rect [107.4855 505.8046 327.3494 516.3869]
/Subtype /Link
/A << /S /GoTo /D (subsection.3.5.3) >>
>> endobj
@@ -1152,14 +1152,15 @@ endobj
/ProcSet [ /PDF /Text ]
>> endobj
343 0 obj <<
-/Length 1201
+/Length 1202
/Filter /FlateDecode
>>
stream
xKoF<㘢z)re%!EO!Kܡ8<pH~Xa$ԩ8-_O.2auϚ8eXp%B_\/]ۇEudQoק׻V}8)ZrBJ /pp~*E8-:br#nr:ި)C\tQ}:B-ӹ=Ua9Xb*`Ih"%9)jIABZ~{&"9ep{ SoJŢ^e8nCV28&{ky>ׇ}kp}Ӵ*DKK2I 1N8u2+9a^BD@'0a{d2 '059
q_>yޗ.֟J
- k!rX}<Sg-Fjg573Pa+&6*ꭅƢi
-_{#Oq.SN68MMd/W-cXz_O5E7o{#ަ5-Fvj"1UoFFOx<XYx+N4_#??yR$Ҙ"+<هqoaFTXTN|$߇c!.RjIhn(0ԙ^pfR"X R601#Aendstream
+ k!rX}<Sg-Fjg573Pa+&6*ꭅƢi
+zkwyⱨ N|0ě k-]r uq<ا My 8`5=ܨcong)(EK5:gPJFR;o8]e2 lVq^#7Ⱦ_[ǰF` zk?D7o{#ަ5-Fvj"1UoFFO5F[q1tppTOǔr'Q^)><ߎ{} 3r2r%IFBJ w]
+vԒ( Q`S3ͤEj$"_h#Hendstream
endobj
342 0 obj <<
/Type /Page
@@ -6263,7 +6264,7 @@ endobj
/ProcSet [ /PDF /Text ]
>> endobj
768 0 obj <<
-/Length 2484
+/Length 2486
/Filter /FlateDecode
>>
stream
@@ -6275,7 +6276,8 @@ WfEʌiUYՎYv=ۦ#'b ,GuiZ(\j e5ZeQ
`]*
pfAKD|kE]~vJQSzTބM@ `5fz+Pҍ"R)$} Z|YC_3zt"c$|XFJ #w7(ҿG,:ĄJ)
~Z_1 iNܼ8<~. E𾧉R6(-}>:"@Ng<p{ѩCZ]l. Df6sPc.dUv'IB?l
-eʪ0_eeIcV0@Z6sa%ƶ FKôV h.MsR l+lJ?sH,} /<eS o0}:ܩwקa`֕_1PXE<i%tk@o2
+eʪ0_eeIcV0@Z6sa%ƶ FKôV h.MsR l+lJ?sH,} 9Gʦk8^ctSlݯOT&g_d|G_hGy
+J$2g|e>lendstream
endobj
767 0 obj <<
/Type /Page
@@ -6376,26 +6378,23 @@ endobj
/ProcSet [ /PDF /Text ]
>> endobj
780 0 obj <<
-/Length 2944
-/Filter /FlateDecode
->>
-stream
-x[Y~_UxN$U%%*r@r -Xuz\
-oA =IhX$2f~:l!x]r}-`Lߏ%"EI" %i>rdlx7r)eW62m(F(rf(J8gc1`Ȃi;!֓'
-!uCn1Ҙ' B_ٹyY Lb#TjP׺@:cR{0p TE&3T5N<GnV޷=U@Bg:DMSrQ1Qe+Mr͚Z{&ƟB7C߷e+r@b%k./yj/*?r6ؒ0 8 ^A!>+f3&y 8no
-шE Ն;WƆ
-,xLa$h= P5a!Azߚ[;wY远=g.xZʣe_1}kaA٪94QDԋ9Op(0/>d;+SZZ*C4_Q汣4<rjUVwƙ'`O(\\ho
-\ R0\5`iiCn9
-C] \b$$gUDEz 0q6wr.v(P>°Z:LL9MwTrVe}Tݤtͭ^g6 eJT2&;(ñ]WgR׹g%sIL'8CAF8֡AL7`H
-OD
- P.l
-2<h;TӶyʬF/eW.ۻna~a:d LtB;s*]'֮ Ϫrk-ցR
-sq6L`I0tb`k\GgC@6)0T
-Չ-uuaEsO,VGbaK
-H5i\;>Ph':Z F6|<zİ6*[*4˭RMt1GLDOfRM8yj۽nCE6@RB{PTLڣ$գ239v0okD08xWYsLx߹5-xZFdr1%k>j;VĶzN=ʼ4ԌS4q0?<Xa~CCje )<# ;Z1^냹L)1'r1X<>e(p|\<dHn*
-]AU˧I VN]Ei63NDת<yT.,M&C"jS_GdL!ٰe!NŮ e~g/ ؓ'|8Hl9cԩ'`RBNbt76ͳB9
-"#EI"9dS M`0O6Md~0y賻1W>"=ADp9.!pɀ7F1O-je9Rĝ9H,f-
-}N٩Qc6:/43Pʛ3qsaObphupB:Nm0 q Ů~T;S-ܒ~z*ϻ4ERzѶK-.Gg|ݔRFPD194OY/`21'zo۸a4yD-g)"$J)D:w*Ϳrendstream
+/Length 2877
+/Filter /FlateDecode
+>>
+stream
+x[m۸j1wQ@ݦ.B^e%_^~}o%K(Ē8 gfHdY$qE2 d}‹=%Nvס7W)BTJ]P&Ut~Z&/Wk%Cxo!"?D,O~ͫ7~A1RRҧ˹D\dIPK#*g؁Ы+=`DҔ.8SLꇰ+RNtgE ~gԒ6a- A$RD(DHYI̎EY,j110D)% 4ec9Xȅv<Hm:[u^owǼج(FWmn1lhtQ?C(H|]=(Twry0&\At3s{(g)B\Kc?4Jh5M*ЎL#O¥\a`|s(`2˯lV&jڱSm?ww} @m}_8%/3նԘ0%u=J{7Ao8o&=5+
+/V0:' 0v$3{$k(rG{\$8>AKva_&~#p"АM֜[ʭvf`) ;'"WhDP{؛ƹ
+,xBTU|jl@ I.>#.1dMX|K>4&/l"_ngC?uWm Ovv gD@d4
+^i8a^|:϶wNf{9u7Vb htHGsBFG1:,dg|J-3M4(\\ A ?l}{"d@p$!#y{k
+W8>o> KH t41!HJ )a Ћba8:aKaκpc
+byYbZ;Z'@
+Et:8Nj d$:5E.TsATC))@8R(+EL8\=,VTŗL ֓:|Nj _<0P9f C֋Ba;:n>PTPL=жG١RLU qf &PK۞+8Qް\*1fij /?e~k/ե!XcT¾MTٜBK1-IC*S(E^uѧRQ 6(0amK.E""?nBfe3RTRW
+8C$J:YWe
+Fʘ#&9Ts,v՚
+2/ғZSzn
+a#įi{~V S8
+}>h|9pM>VdW`H|M;GL(bb,Z*"*LbHG9Hl4a6sdYUjw@A颤Bm$N騽~8at:@AvmTo']
+L ~̋;wi Q
endobj
779 0 obj <<
/Type /Page
@@ -6415,18 +6414,18 @@ endobj
/ProcSet [ /PDF /Text ]
>> endobj
785 0 obj <<
-/Length 2103
+/Length 2023
/Filter /FlateDecode
>>
stream
-xڝXo8_GYK-⺗`asrl$+nᐲd |pf~3$_b*"% 8_<Wbk~]՘ջ _d,Oxx^?2}(>{ۛjiI\8nz_45ruth6>aE̲$Mف m9KT8eҚ5xQd#rMK@u{cLI*C7\qR l^8LCt$s"(BBYt޳k6^g4`9W^{ռ]KP>-yg`$gɣկK0gjr J K)E8e^Դ؄Lk9gHXfc=PyQ
-WYT {ڂ N c5˲8lK KAԭmYO\XXCc93Sl}#~I0 ϶5PДޑ{ w\ e"?,ك+awM*h͹4X1ZAdtiI4gtSЯKsii$&347yڶvvz:L-YIw) ^5M`]a?L jM [ö5EǦBءLψdN4cZ R6T]7w*!F1š/d]ؠ
-aCLXHX1
-Jݱoq̩th]wSTӮg$Dhz &g-I*5TG\NjEMɕ'BTK{'|WֻѺ7(%~ٺp2.ZCQmg8XC \}:j}fbr!thfc{E }#s`%O_zujC~8ztzP#9oFW>.g
-
-svrb#ЯD >ttt5rmҵ$NOMdI ܱs][qs‡,e\J+$OBJhSe
-O's cppP@sz
-y/8zEHK}r!O*]O!;Zi>< YYx!iCɅ2Y˧[p7>:{ói@Bǐp
+xڝXo6e cHeE >1cdϒ_;)[C&ߝ(fY楙奂VpW4ԯ9Yg3 ?2/<q6mm0ɾ]zao$gE@},<`J.5?5MR*Dޮ@cO9bSyY2qUY"׺1
+;M8(CG'Ry/*%%KTZ;kg&fB9a
+( HJkխT]]Q?Nh,d&N_|/Qb~+aq$g.d ,3+%|?UCN+ʂ>,y4&[3Wϔcp0u^KS%(ce]Q>
+*gm{Šq#clPSfLŐs9HFIlUco
+(5@\.ƹ<\EQ3;R㌂n*\Z^<7e"/%>Oݦui˴<Iεk  MF
+es0'M1PꄂU<eDPh9^ʹ#s#OMr)JXb\ꏜOb:8ѝΤ 6r 8pc@کQPiy) SɿYjIYDtE% Ф$4|+4xy4*CC藓[H'ߞY@Vn]Cgl΃)@v֧cq 79+_O- 3P 3
+al[ؕ! *|ku,qpq㊣
+(>h őCq?eSPx(*98Sb VLDqARrJ@tP,gJT9A3P4Zy5}o|w(9\;I"
endobj
784 0 obj <<
/Type /Page
@@ -6434,7 +6433,6 @@ endobj
/Resources 783 0 R
/MediaBox [0 0 595.2757 841.8898]
/Parent 753 0 R
-/Annots [ 787 0 R ]
>> endobj
782 0 obj <<
/Type /XObject
@@ -6442,67 +6440,60 @@ endobj
/FormType 1
/PTEX.FileName (/usr/home/buetow/svn/vs/trunk/LaTeX/images/prefs-editors.pdf)
/PTEX.PageNumber 1
-/PTEX.InfoDict 788 0 R
+/PTEX.InfoDict 787 0 R
/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000]
/BBox [0.00000000 0.00000000 392.00000000 248.00000000]
/Resources <<
/ProcSet [ /PDF /Text ]
/ExtGState <<
-/R7 789 0 R
->>/Font << /R8 790 0 R /R9 791 0 R >>
+/R7 788 0 R
+>>/Font << /R8 789 0 R /R9 790 0 R >>
>>
-/Length 792 0 R
+/Length 791 0 R
/Filter /FlateDecode
>>
stream
xMS0:=P}ؖt, O/L!8@';˒LxBx^d捲+Nuד>OS|ϤbQ)a%cGg/o'6~ra8eN({֒={Uzcܶ.+Ӵsy鄺!xP[ vzR r* 7!CS86l<Nq;ZMwZ!sEh1<ĬQꘔ4kLqA,<]wc7쑱XA zFs{"~’aGD~VyXIpa WsަѥߛJm^?-*٣^.渂
X,Y]APΪHYr[' +`q>nNa .,\*^:u1a Ƅh9z)Cbʓ
endobj
-788 0 obj
+787 0 obj
<<
/Producer (GPL Ghostscript 8.61)
/CreationDate (D:20080809025806Z00'00')
/ModDate (D:20080809025806Z00'00')
>>
endobj
-789 0 obj
+788 0 obj
<<
/Type /ExtGState
/OPM 1
>>
endobj
-790 0 obj
+789 0 obj
<<
/BaseFont /Helvetica
/Type /Font
/Subtype /Type1
>>
endobj
-791 0 obj
+790 0 obj
<<
/BaseFont /Helvetica-Oblique
/Type /Font
/Subtype /Type1
>>
endobj
-792 0 obj
+791 0 obj
672
endobj
-787 0 obj <<
-/Type /Annot
-/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [212.6999 153.5425 227.1554 164.1248]
-/Subtype /Link
-/A << /S /GoTo /D (figure.3.2) >>
->> endobj
786 0 obj <<
/D [784 0 R /XYZ 74.4095 793.4011 null]
>> endobj
126 0 obj <<
-/D [784 0 R /XYZ 74.4095 486.1569 null]
+/D [784 0 R /XYZ 74.4095 425.3757 null]
>> endobj
361 0 obj <<
-/D [784 0 R /XYZ 282.3592 222.4224 null]
+/D [784 0 R /XYZ 282.3592 155.0474 null]
>> endobj
783 0 obj <<
/Font << /F61 259 0 R /F28 209 0 R /F26 206 0 R >>
@@ -6510,78 +6501,91 @@ endobj
/ProcSet [ /PDF /Text ]
>> endobj
795 0 obj <<
-/Length 1633
+/Length 2637
/Filter /FlateDecode
>>
stream
-xڝX_o6$DRǦI6,YA,
-<HjVԂ))UsfD̳v@.GϮ[3"!Ĝb
-t4b"=YWe7oD~3$AhAV*1WV` dyQ@$Y1&$pnK:>1D*א=EJNiL2ɠ*g;n,xwv akEZ <_ B@yAui {eHqoOW!a  3WF>YH_%DhɌ*̔f׽v]1)3)σam<<AOQ9go0i%T˷18/X#sv~ 5!Hcd_8uO#+2KslO']?LW?+ 6rgɅ#n7l#%2m?,k׮~K,Jps:"֘v$B
-Ȟ6і.Ε4նa6#}NP*y68l/0,vt*=ﻵKz!^WwRhDL!@+>Q:9C
-J*Ǟ'9q1-@ ,7%xyOi&S5)=Le. d
->7 Cu\GД6!A,*4
+xڝY_o8@ImnAY,,o3%[nE #b'D$q^eW7Us?_ɼKϼs{[#rQ\=^)
++yngK,*#-4%‡[KFZ㛛p~b^'l>V#iBdY\$їEG%Tƶ8ª4j\Ua$b|^82_4XCO\+T ^gIGlYn5*ﳶg\Ȩ?uK/j)3Q(V_Ӏ2َkdۅ#pzU7)) yRd2'ҫF kE;/:B!Bq/GǪBHcɤu)޶4:f=ʗCe7]LS.}'teL5H;/`auyDTDADЊle (3M1ް^c'y.l̢we_edٺu K=}3گ+WWt|ًJ԰_> :j殙N]i]vd9TxޯNG
+l瞝ǫ.N;񻦡`=A!Sq @C<W)1\93F{ TΕ ڶ:qJm=l#DT .e;G0zo}I)7-:$ ؎Ts5Pˆl[;C鸈6|2ιP!z]c* ±+!f>ar-cvLMc(Xa
+mxF7pT=]L?8HNc==ogH7ӂio0n"dV)ߎl++Wͺ \[0 b曳58Uc| 
+7͏*7Ѿۍ|
+endstream
endobj
794 0 obj <<
/Type /Page
/Contents 795 0 R
/Resources 793 0 R
/MediaBox [0 0 595.2757 841.8898]
-/Parent 798 0 R
-/Annots [ 797 0 R ]
+/Parent 799 0 R
+/Annots [ 797 0 R 798 0 R ]
>> endobj
797 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [73.4132 570.2907 92.854 580.8729]
+/Rect [212.6999 738.8587 227.1554 749.441]
+/Subtype /Link
+/A << /S /GoTo /D (figure.3.2) >>
+>> endobj
+798 0 obj <<
+/Type /Annot
+/Border[0 0 0]/H/I/C[1 0 0]
+/Rect [73.4132 499.4889 92.854 510.0712]
/Subtype /Link
/A << /S /GoTo /D (figure.2.13) >>
>> endobj
796 0 obj <<
/D [794 0 R /XYZ 74.4095 793.4011 null]
>> endobj
+130 0 obj <<
+/D [794 0 R /XYZ 74.4095 397.0616 null]
+>> endobj
+134 0 obj <<
+/D [794 0 R /XYZ 74.4095 345.4408 null]
+>> endobj
793 0 obj <<
-/Font << /F61 259 0 R /F28 209 0 R >>
+/Font << /F61 259 0 R /F28 209 0 R /F26 206 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
802 0 obj <<
-/Length 1715
+/Length 1656
/Filter /FlateDecode
>>
stream
-xڍXKs6WHu,x$ssIhMIu S%Hɺ.(31bǷ (?eH@pݮϒ_/<s>{N(g*L ?ۦ3\dy,l&I|ޮخ1ٜqo^"aUJ3, δγ1ĕ22)p%#.X; vJ epW,4m+ߨYtJ$ey_y^PG^k] `L⍥*ɻqq(H8IT}w#3ޗ\MeZ"B8Jc۴(*;25DUc_ԚBʧUs0IlV˰Dٷ[)3@A̢*kc3V.]iIJPs&0H͌ǖf]uN]0v0noRZ@{55j4:rPvu=e{O n;: x[R;b=\ڲ6fj3w Y.(^(<w4pAbB8N5FC]UTp%k"Dy^x ɒB|~DTqiX1B7rs,2,`"C0C5t
-NRQ$6ɔ3N6p/fU!{ЖY_)8$pʉ4e {/әV)zQk'BZLgsQT.%B_-"YMZ2,ՅxCTH
-t5H@*rowz (GDPYHb͎xX\UC[We<8vI0ݗ֞Xb5-_@~6]}55
-@s+wn/2#Z^.K\\\ Av0j"4[=b%),ػ% 9=J1"½in~EjXRv2ki"~LC2<jul妢SN
-[vg T!4^7̤)
-Zx qu<)?1捵4wƬZ8pLp@07v#Y pNUZchI/pةcxvKK`ke N0/[r™<6 N"sңVfMܬjX25`yǨf $ M?A܊o#z|lݹ }omX M rflν8 UKX}>sڢz'^uo4iQ-de8L(asv Q;
-:4P-"P(_e1왏7ּSs+uq5\/{"ExOJs|s DSI
-"<G#z$uxD4\IOS<W{prV kA$"EYZOĢ7N\mcSf!AӃ
-Z @HSњAS_r Q0x(EWν[*N 5{X!A|ѓ,KܯC#@A$*œ<s :Iendstream
+xڽXOw6 S(ŪH[d[uk\dز+[>
+S%
+dbho^$VK7ay»]|>4 4A4%|()|) D]؈9)bBQlV:e="@2{]CO9WO(}htV"Pap;=}ƥPxߜ
+$bFPFT$"%UBe?Da&* 4{s)s)+ѳbQI%N%
+;hwjEsQ/~Z邨߲þi۝6;,FW+=c~yiԵL>cbSv19#hVuaB~eد蓜TBIEUzUYK'+yaZyA/1@H'N:cv B$ؠ]\vfEl* NMG&dEC}mjaK?k]9p(lżm! [-ѽ#B?!/WڈrMTh=]:D֥LS@^f
+si#ubKo
+ %6*E<$]NdHRNGl2;V|v& sjt|\ZS9bQ _z#36iJN
+_I&gs qH6#8 ݼHFӓ<B?NЏ"H
+Y|6a`xzvo
endobj
801 0 obj <<
/Type /Page
/Contents 802 0 R
/Resources 800 0 R
/MediaBox [0 0 595.2757 841.8898]
-/Parent 798 0 R
+/Parent 799 0 R
/Annots [ 804 0 R ]
>> endobj
-799 0 obj <<
+792 0 obj <<
/Type /XObject
/Subtype /Form
/FormType 1
/PTEX.FileName (/usr/home/buetow/svn/vs/trunk/LaTeX/images/events.pdf)
/PTEX.PageNumber 1
-/PTEX.InfoDict 806 0 R
+/PTEX.InfoDict 807 0 R
/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000]
/BBox [0.00000000 0.00000000 544.00000000 374.00000000]
/Resources <<
/ProcSet [ /PDF /Text ]
/ExtGState <<
-/R7 807 0 R
->>/Font << /R8 808 0 R /R9 809 0 R >>
+/R7 808 0 R
+>>/Font << /R8 809 0 R /R9 810 0 R >>
>>
-/Length 810 0 R
+/Length 811 0 R
/Filter /FlateDecode
>>
stream
@@ -6591,202 +6595,174 @@ JPOC4sj8|k(XPFx@E5PMbMA
}|9-p?sQ-2_zmD~xwwx pdKCJYN54Z
M{TGX 2w@ }";)ͦ꾂v'Bi2``BЋ>]` ?ioi03pr 2tUcfxqh}LXjfVV _fC,0*tfWXQ3YP50KxuTX4,8쭠IO a3`tq#S.:ɢ4iU<ҡ),P*8<^TX(qluΚpk(_m=vwKq>c(!zɆYaPwTEaCљ<s0!5D;zc{,+9 !86?'OR7 cʘ%j:xU1G >Y:k1^B6SwGyv>c$1iq&*j,$!Yjӱu ovl+(7M1h_7k;!>g `eRɯWt_Ͼ7cgC B!$$q ,":T/qf~wJ8CkGȪ'WIl4v9ns,t' eTgaA(Bx.P}Xendstream
endobj
-806 0 obj
+807 0 obj
<<
/Producer (GPL Ghostscript 8.61)
/CreationDate (D:20080809025807Z00'00')
/ModDate (D:20080809025807Z00'00')
>>
endobj
-807 0 obj
+808 0 obj
<<
/Type /ExtGState
/OPM 1
>>
endobj
-808 0 obj
+809 0 obj
<<
/BaseFont /Helvetica
/Type /Font
/Subtype /Type1
>>
endobj
-809 0 obj
+810 0 obj
<<
/BaseFont /Helvetica-Oblique
/Type /Font
/Subtype /Type1
>>
endobj
-810 0 obj
+811 0 obj
1167
endobj
804 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [331.9551 197.918 346.4106 208.5003]
+/Rect [197.3896 428.8283 211.8452 439.4105]
/Subtype /Link
/A << /S /GoTo /D (figure.3.3) >>
>> endobj
803 0 obj <<
/D [801 0 R /XYZ 74.4095 793.4011 null]
>> endobj
-130 0 obj <<
-/D [801 0 R /XYZ 74.4095 771.7323 null]
->> endobj
-134 0 obj <<
-/D [801 0 R /XYZ 74.4095 746.1189 null]
->> endobj
362 0 obj <<
-/D [801 0 R /XYZ 266.5136 365.8579 null]
+/D [801 0 R /XYZ 266.5136 498.6761 null]
>> endobj
805 0 obj <<
-/D [801 0 R /XYZ 74.4095 197.6162 null]
+/D [801 0 R /XYZ 74.4095 426.2277 null]
+>> endobj
+806 0 obj <<
+/D [801 0 R /XYZ 74.4095 308.3105 null]
>> endobj
800 0 obj <<
-/Font << /F61 259 0 R /F26 206 0 R /F28 209 0 R >>
-/XObject << /Im33 799 0 R >>
+/Font << /F61 259 0 R /F28 209 0 R /F35 221 0 R >>
+/XObject << /Im33 792 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
-813 0 obj <<
-/Length 2558
+814 0 obj <<
+/Length 2650
/Filter /FlateDecode
>>
stream
-xڽZݏ8_>lC{N1psNqIG9N
-4MHH)V!VD*Q(ZU o8Zcb\,eQKf˒t̓VCrg]7H/e_}% 49+$T1/^&B
-$a~M\(PR2\Tꤊ(1DU_԰lfT X"vn_Mx}6y=*
-4`8l}j]eaN\iKKd\ySܽg^7'&vL6{’bt,36Ftv}t}@b܉JAQ胮ww3r+TG٦a<tĤJ l MM#Rg`SoxvQhp7lrUfh Ts&ޟaZzÐit$ht^
-ZY rڪ&V,$G5zK\mݪP8YTEKm\]E[)G@s"&>7ĥiS9O!"
-Em|zjoHڑ)8$J朝ICk"`Dʴt"m
-&]?֡?xů ;+RPǬ<M#=v$C7Upi3GUh-7\3I( wng8͡i0*5q
-Tp@x44ܷx 2wArm΀ȼmoN<J<F:d~P1\$pLKniCOȗ @ucE/E50`H`W_l UZ6kbxvCJ.+ A=mGnCcHS_P1zOE LW?CqxϨQ␫oxPX9Dй Qʚq`" Kn= $p蒁KCQ'3()hCkz p"Žf 4970Trm k=" @SWo3>gN l> &ܴH閸fҙ UWD c ALc ~yD ;o o3.#cw=k/Lh X<y4_~~mgޠ:YҼ;N7t 6]mNi p-9:`;M)|L: WeJ:HThF aa'$!4PK-#HrlMSoOEb++t(B`qԥ2Ib9LP%075̥w<b+g34EA#}{d6k(Hp>g]Q*hԸh@–]Gbd&kmI6ao,[eoKFԗ$9f._
-q3\4&a}B(&Dó톞d^ÉrҽaB)+%b_ }(sg*<<!$҉$#+(e1_+?gwx=Q&'2 T}2( #cN X7g4 BWbA æWX`lt`endstream
+xڥYs6_GjbHG&IsĞCJ%f~(~Iv≽
+
+:%=5;-ߗW>?--ЖZgq7MbaI%޿SgkbFo6SIT(ؗ$c<)<7|(Z79&ssZmkPOjlgT
+W|W^] wkBxw *=Äg'&Bхm]̊DУUG9 <f>H(dnl2q`bOtP)C29Bkve*xTp#PP !,[F8GL8BA`w"@vZ7EҲ d|%(Es؇QL~z$ Lf()p
+9!De`Sz6bn`)L3/Pffb:#GM )'.<f1mͬ2{]*0zks/{41gAw]ۙ5RA'QQ3
+_-ԡ۳olA9a"4F<!FyrDM<0F;PAjD*r9wN7 sƾL;oBa3Fg腩GK`K%tT
+S\mdu\#!dyg$ )F.uc#O0%2NIX3!wc9a\PɨjhMڰ rL2?dAZRxXgUxm(0^%pma/)&G\ %S8.''L9ˢyKpeB$0=U4PQ>?9dHپ94$4ii@]Cxd5Uú ,ߕijp\`T+yC|@݈>=z(ET?_t^׳$E~ 詠5;L}X"!bL¡lID/o<
+L;=Z5"G5 $kpق9*Z'N*L.yNso * lP;m r>DФz]3u.u>tFF8.k\Y?C>Ə"W"B"?gf"sKs8EcR|NOs9@=׆o I
+%* ^$[O[
+guXWlC{ƮRllBuT6&U<1Th9mW^G}
+0
+1jgr)"8rPy1'a 5
+mendstream
endobj
-812 0 obj <<
+813 0 obj <<
/Type /Page
-/Contents 813 0 R
-/Resources 811 0 R
+/Contents 814 0 R
+/Resources 812 0 R
/MediaBox [0 0 595.2757 841.8898]
-/Parent 798 0 R
+/Parent 799 0 R
/Annots [ 817 0 R ]
>> endobj
817 0 obj <<
/Type /Annot
/Border[0 0 0]/H/I/C[1 0 0]
-/Rect [451.4247 225.2515 465.8802 235.8337]
+/Rect [451.4247 478.4932 465.8802 489.0754]
/Subtype /Link
/A << /S /GoTo /D (figure.3.3) >>
>> endobj
-814 0 obj <<
-/D [812 0 R /XYZ 74.4095 793.4011 null]
->> endobj
815 0 obj <<
-/D [812 0 R /XYZ 74.4095 725.3863 null]
+/D [813 0 R /XYZ 74.4095 793.4011 null]
>> endobj
816 0 obj <<
-/D [812 0 R /XYZ 74.4095 278.4629 null]
+/D [813 0 R /XYZ 74.4095 526.3397 null]
>> endobj
-811 0 obj <<
-/Font << /F61 259 0 R /F35 221 0 R /F28 209 0 R >>
+812 0 obj <<
+/Font << /F61 259 0 R /F28 209 0 R /F35 221 0 R >>
/ProcSet [ /PDF /Text ]
>> endobj
820 0 obj <<
-/Length 2118
+/Length 2487
/Filter /FlateDecode
>>
stream
-xڭYQs~_Gj愒
-$YmO~+q›Pw^%J'âG_ʗgy$z#8Xitz9ꓮJM"s_{_Jo3K_ZZY,˸1xDVW:cg*;+;T}Z8* $:\_ÔGyԷ LxWtly~Jյ"Vsu;t/W6<ImT,UOEo}|g|vb"Ƒ"2ݡ}(uw8=,DCs&PY(獺;by~pYu;&3nNx8="LeE#&n>n&jh ƮJ=~e[ʎ\FvoG"a݈̖9gJ3{FK)$ PU y>6*ݓ
-2GLx6wv=hul 1U#>zi11a(-#ҶhJG<AkKz?t(^?!z!EaL*$N1J-`̋EcZ16:@o1!e1m껾NZDb CY7ol
-֑f컌{;
-=J;|#xT)5H N/0PףaCb̥Punv-P^LVG'KPãΝ
-`r`WP=m &;g;S?u&fÑoC*U</J-@ɋEJZ4:NEtl{̝Ed*;+Dd8$—/Cj%
-!g#&TV;7#uT땈ZÈGo EFq5Jg0'.lxcn=U|J!" (3-CeX۫(i0Ɇ9
-/R }=7^?*F58{+qಚqD]c6& itˎǛl u-,5}Q0fzô,Sg ̐9dkSwL`1p)O{~Ba[ӠX  u
->>ҽܠsWܱMVe_|\~jP(IhXsBoymQ 6::2y
--tFCC)g _>PߡvxzrkuK^h4U鴞ZreLR boazQyLz5!s~yB
-9s<w6J>y̙KXt0FDF@`%ҟ:V{b,;EMLD >[ꪃ>ٍs.Gũ@/FP_3%K&TzU P
+xڭ]sݿBTB
+p+bpH,FZ<<.BY'=0Nɖ+y4q{mi˕.<}됳$¯V)ŋ,
+e:ĞNYaw%BT
+(,:4'.⩐ij1w#r)Rp<Vj^<r%
+\:ؗ9dP%=G3M a2d%9Biy|Kg<!L`uK+Sn=0;qlRY<k/wKcnPǥ䁁
+E\:V"fiд#lΙf:^
+
+?nK r;6uFqhl:/x};g
+QS4{۬%H75
+?XG@$3*m4ןSPp1uA5M1hYU^6|DKir¡Jvb]{/r~u#C$9y6t{G