From fcad21a6f0f95cfc1cfd57a9ad0ee110a65d0e74 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Sat, 9 Aug 2008 14:59:04 +0000 Subject: written --- LaTeX/bib/references.bib | 2 +- LaTeX/chapters/appendix-a.tex | 3 +- LaTeX/chapters/conclusion.tex | 18 + LaTeX/chapters/implementierung.tex | 6 +- LaTeX/diplomarbeit.pdf | 3225 ++++++++++++++++++------------------ 5 files changed, 1683 insertions(+), 1571 deletions(-) diff --git a/LaTeX/bib/references.bib b/LaTeX/bib/references.bib index 197dc53..6639067 100644 --- a/LaTeX/bib/references.bib +++ b/LaTeX/bib/references.bib @@ -14,7 +14,7 @@ } @misc{OOS, author={Heinrich Fassbender}, - title={Vorlesung ``Objektorientierte Softwareentwicklung'' an der FH Aachen}, + title={``Objektorientierte Softwareentwicklung'' an der FH Aachen}, year={2006}, howpublished={Vorlesung}, note={} diff --git a/LaTeX/chapters/appendix-a.tex b/LaTeX/chapters/appendix-a.tex index 341258b..d386b3d 100644 --- a/LaTeX/chapters/appendix-a.tex +++ b/LaTeX/chapters/appendix-a.tex @@ -1,4 +1,5 @@ -\chapter{Akronyms} +\chapter{Akronyme} + \begin{acronym} \acro{API}{Application Programming Interface} \acro{BSD}{Berkeley Software Distribution} diff --git a/LaTeX/chapters/conclusion.tex b/LaTeX/chapters/conclusion.tex index 86656fd..6854d44 100644 --- a/LaTeX/chapters/conclusion.tex +++ b/LaTeX/chapters/conclusion.tex @@ -1,2 +1,20 @@ \chapter{Ausblick} +Es wurde erfolgreich ein Simulator f\"{u}r die Simulation verteilter Systeme entwickelt. Der Simulatur hat bereits 10 implementierte Protokolle zur Auswahl eingebaut. Zudem steht dem Gebraucher ein sehr komfortables Protokoll-API zur Verf\"{u}gung, womit der Entwicklung neuer Protokolle quasi keine Grenzen gesetzt sind. + +Dar\"{u}ber hinaus verf\"{u}gt der Simulator \"{u}ber eine Vielzahl von sehr flexiblen Einstellungsm\"{o}glichkeiten. F\"{u}r jede Simulation lassen sich somit komplett andere Konfigurationen verwenden. Jeder beteiligte Prozess hat wiederum eingene lokale Einstellungen, wo sich auch jedes Protokoll f\"{u}r jeden Prozess separat einstellen l\"{a}t. Die Anzahl und Flexibilit\"{a}t der M\"{o}glichen Szenarien wird dadurch um einen sehr groen Faktor vergr\"{o}ert. + +Mit dem Ereigniseditor gibt es eine komfortable M\"{o}glichkeit eigene Szenarien zu programmieren und zu Simulieren. Hierbei kann entweder auf die bereits enthaltenen Protokolle- oder auf selbst implementierte Protokolle zugegriffen werden. Alle Dazugeh\"{o}rigen Einstellungen und programmierten Ereignisse lassen sich vom Gebraucher f\"{u}r eine sp\"{a}tere Wiederverwendung platformunabh\"{a}ngig abspeichern. Somit k\"{o}nnen auch abgespeicherte Szenarien beispielsweise an Komilitonen weitergegeben werden oder f\"{u}r eine sp\"{a}tere Pr\"{a}sentierung zwischengespeichert werden. Mit dem Loggfilter lassen sich mithilfe von regul\"{a}ren Ausdr\"{u}cken nur die relevanten Loggnachrichten anzeigen, was die Analyse einer Simulation erheblich vereinfacht. Weitere Funktionalit\"{a}ten wie Lamport- und Vektor-Zeitstempel sowie Anti-Aliasing ruden den Simulator ab. + +Durch den objektorientierten Aufbau ist der Simulator relativ einfach erweiterbar, was nicht nur f\"{u}r das Protokoll-API betrifft. H\"{a}tte f\"{u}r diese Diplomarbeit noch mehr Zeit zur Verf\"{u}gung gestanden, dann k\"{o}nnten einige der folgenden Funktionen (hier in alphanumerisch sortierten Reihenfolge aufgelistet) auch eingebaut worden sein: + +\begin{itemize} + \setlength{\itemsep}{-2mm} + \item Die Simulationsdauer beliebig lang machen k\"{o}nnen. Dazu m\"{u}sste \textit{VSSimulatorVisualisation} entlang der Zeitachse scrollbar gemacht werden, sodass der Benutzer f\"{u}r eine nachtr\"{a}gliche Betrachtung des Simulationsverlaufes zu jeder beliebigen Position zur\"{u}ckspringen kann. + \item Eine Zoomfunktion f\"{u}r die Simulationsvisualisierung. + \item Im Ereigniseditor selbst auch periodische Ereignisse programmierbar machen. Bisher kann nur jedes Ereignis separat programmiert werden oder auf Protokoll-Interne Wecker zur\"{u}ckgegriffen werden. + \item Lamport- und Vektor-Zeitstempel f\"{u}r Ereigniseintrittskriterien verwenden. + \item Weitere Funktionalit\"{a}ten wie zum Beispiel das Anklicken einer Nachrichtenlinie, was zu einer Nachicht alle verf\"{u}gbaren Informationen anzeigt und diese gegebenenfalls vom Benutzer editiert werden k\"{o}nnen. +\end{itemize} + +Da der Simulator h\"{o}chstwahrscheinlich unter einer Open Source Lizenz freigegeben wird, und ich mich selbst sehr f\"{u}r die Entwicklung und Anwendung von Open Source Software interessiere, werden die einen oder anderen Funktionen nachtr\"{a}glich eingebaut werden. Komilitonen werden auch herzlich dazu eingeladen werden sich an diesem Software-Projekt zu beteiligen. Als Vorbild sei hier der CPU-Simulator M32, der von Prof. Ossmann an der Fachhochschule Aachen entwickelt wurde, genannt. Hier existieren bereits einige Erweiterungen Verbesserungen, die von den Studenten angefertigt wurden. F\"{u}r die Entwicklung/Erweiterung wurde keine properit\"{a}re Software verwendet, sodass jeder kostenlosen Zugriff auf die dazugeh\"{o}rigen Tools h\"{a}tte. diff --git a/LaTeX/chapters/implementierung.tex b/LaTeX/chapters/implementierung.tex index 1350f45..dafe28b 100644 --- a/LaTeX/chapters/implementierung.tex +++ b/LaTeX/chapters/implementierung.tex @@ -190,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, 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: +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. 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; @@ -281,7 +281,9 @@ In diesem Beispiel wurden zwei Ereignisse (Absturz- und Wiederbelebung eines geg \label{fig:PackageProtocols} \end{figure} -In diesem Abschnitt wird auf die Implementierung der Protokolle eingegangen. Auf Abbildung \ref{fig:PackageProtocols} sind die Pakete \textit{protocols} und \textit{protocols.implementations} dargestellt, welche f\"{u}r die Protokollimplementierungen zust\"{a}ndig sind. \textit{VSAbstractProtocol} stellt lediglich gemeinsame Methoden und Attribute zur Verf\"{u}gung, die von allen Protokollen verwendet werden k\"{o}nnen. Jedes Protokoll hat im Paket \textit{protocols.implementations} seine eigene Klasse, die von \textit{VSAbstractProtocol} erbt. Im Prinzip besitzt jedes Prozessobjekt von jedem Protokoll seine eigene Instanz. Bei \textit{10} Protokollen und \textit{3} beteiligten Prozessen werden also \textit{30} Protokollobjekte verwendet. Jedes Protokollobjekt verwaltet sowohl die Server- als auch die Clientseite eines Protokolls auf einmal. Dabei merkt sich \textit{VSAbstractProtocol} anhand eines Flags ob der aktuelle Kontext server- oder clientbezogen ist und f\"{u}hrt dementsprechen beim Eintreffen von Ereignissen die Server- beziehungsweise Clientmethoden des Protokolls auf. \textit{VSAbstractProtocol} \"{u}berpr\"{u}ft auch, ob Client oder Server \"{u}berhaupt aktiviert ist. Nur wenn der Server oder Client aktiviert ist, reagiert der Server beziehungsweise der Cleint wenn f\"{u}r sie ein Ereignis eintritt. +In diesem Abschnitt wird auf die Implementierung der Protokolle und das Protokoll-API eingegangen. Im Protokoll-API wird in der Regel nicht direkt auf den Task-Manager und auf die explizite instanzierung von Ereignisobjekten zur\"{u}ckgegriffen. Das wird alles vom API automatisch gemacht. + +Auf Abbildung \ref{fig:PackageProtocols} sind die Pakete \textit{protocols} und \textit{protocols.implementations} dargestellt, welche f\"{u}r die Protokollimplementierungen zust\"{a}ndig sind. \textit{VSAbstractProtocol} stellt lediglich gemeinsame Methoden und Attribute zur Verf\"{u}gung, die von allen Protokollen verwendet werden k\"{o}nnen. Jedes Protokoll hat im Paket \textit{protocols.implementations} seine eigene Klasse, die von \textit{VSAbstractProtocol} erbt. Im Prinzip besitzt jedes Prozessobjekt von jedem Protokoll seine eigene Instanz. Bei \textit{10} Protokollen und \textit{3} beteiligten Prozessen werden also \textit{30} Protokollobjekte verwendet. Jedes Protokollobjekt verwaltet sowohl die Server- als auch die Clientseite eines Protokolls auf einmal. Dabei merkt sich \textit{VSAbstractProtocol} anhand eines Flags ob der aktuelle Kontext server- oder clientbezogen ist und f\"{u}hrt dementsprechen beim Eintreffen von Ereignissen die Server- beziehungsweise Clientmethoden des Protokolls auf. \textit{VSAbstractProtocol} \"{u}berpr\"{u}ft auch, ob Client oder Server \"{u}berhaupt aktiviert ist. Nur wenn der Server oder Client aktiviert ist, reagiert der Server beziehungsweise der Cleint wenn f\"{u}r sie ein Ereignis eintritt. \begin{figure}[h] \centering diff --git a/LaTeX/diplomarbeit.pdf b/LaTeX/diplomarbeit.pdf index e8c2ee2..79d68c2 100644 --- a/LaTeX/diplomarbeit.pdf +++ b/LaTeX/diplomarbeit.pdf @@ -279,7 +279,7 @@ endobj << /S /GoTo /D (appendix.A) >> endobj 192 0 obj -(\376\377\000A\000\040\000A\000k\000r\000o\000n\000y\000m\000s) +(\376\377\000A\000\040\000A\000k\000r\000o\000n\000y\000m\000e) endobj 193 0 obj << /S /GoTo /D (appendix.B) >> @@ -748,15 +748,14 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 255 0 obj << -/Length 1958 +/Length 1955 /Filter /FlateDecode >> stream 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|_?A#C#OW+P1' 3mӴĹpwE}|S]m}sgi{[Ne -VDDSvƎ96rS;o'd1NwC7W dŮڽ-{!ZrI -UƝ!?Ve2f~?>ZS* 9WCJf IMHƄם*JΑ/VΥSXS?A#C#OW1Y9a`/i۝%΅+o;Nu/S԰"2 3v̱[,H~#8&k5hο_ȄuB%ɜ !,voٛВKV<2 9rf~/7ѲRa<ʇR(]<7aMπaRR"1uʸҧs䋝l0'x: +>ө4\iIgPt:9]Y5'מ٩0#Srӟ=iE׆ƾY3^q7}Z¥q> endobj 343 0 obj << -/Length 1202 +/Length 1201 /Filter /FlateDecode >> stream xKoF<㘢z)re%!EO!Kܡ8ׇ}kp}Ӵ*DKK2I 1N8u2+9a^BD@'0a{d2 '059 q_>yޗ.֟J  k!rX}yk-p̟#.T)wtwINQ9&f6f!x!$777c"{wUXK WK`5?s8c|LlLlT[ v~7GΚ÷ȃCkAgm&Rs{b~ďFOd<ߎ{} 3r2r%IFBJ w] -vԒ( Q`S3ͤEj$"_h#Hendstream +zkwyⱨ N|0ě k-]r uq<ا My 8`5=ܨcong)(EK5:gPJFR;o8]e2 lVq^#7Ⱦ_[ǰF` zk_4 |#9f7XyX?m[C"Nhd&s_eMOOmToT[#Om4,'M wMԼ}L)whiLB80#*G,c*'ZYd$pץ`7YJ-Mf?:kL*^J/5 n#Iendstream endobj 342 0 obj << /Type /Page @@ -1521,8 +1519,8 @@ endobj 429 0 obj << /Producer (GPL Ghostscript 8.61) -/CreationDate (D:20080809025807Z00'00') -/ModDate (D:20080809025807Z00'00') +/CreationDate (D:20080809115815Z00'00') +/ModDate (D:20080809115815Z00'00') >> endobj 430 0 obj @@ -1620,8 +1618,8 @@ endobj 438 0 obj << /Producer (GPL Ghostscript 8.61) -/CreationDate (D:20080809025807Z00'00') -/ModDate (D:20080809025807Z00'00') +/CreationDate (D:20080809115815Z00'00') +/ModDate (D:20080809115815Z00'00') >> endobj 439 0 obj @@ -6312,8 +6310,8 @@ endobj 774 0 obj << /Producer (GPL Ghostscript 8.61) -/CreationDate (D:20080809025806Z00'00') -/ModDate (D:20080809025806Z00'00') +/CreationDate (D:20080809115814Z00'00') +/ModDate (D:20080809115814Z00'00') >> endobj 775 0 obj @@ -6459,8 +6457,8 @@ endobj 787 0 obj << /Producer (GPL Ghostscript 8.61) -/CreationDate (D:20080809025806Z00'00') -/ModDate (D:20080809025806Z00'00') +/CreationDate (D:20080809115814Z00'00') +/ModDate (D:20080809115814Z00'00') >> endobj 788 0 obj @@ -6598,8 +6596,8 @@ endobj 807 0 obj << /Producer (GPL Ghostscript 8.61) -/CreationDate (D:20080809025807Z00'00') -/ModDate (D:20080809025807Z00'00') +/CreationDate (D:20080809115815Z00'00') +/ModDate (D:20080809115815Z00'00') >> endobj 808 0 obj @@ -6773,8 +6771,8 @@ endobj 831 0 obj << /Producer (GPL Ghostscript 8.61) -/CreationDate (D:20080809025807Z00'00') -/ModDate (D:20080809025807Z00'00') +/CreationDate (D:20080809115815Z00'00') +/ModDate (D:20080809115815Z00'00') >> endobj 832 0 obj @@ -6908,8 +6906,8 @@ endobj 847 0 obj << /Producer (GPL Ghostscript 8.61) -/CreationDate (D:20080809025807Z00'00') -/ModDate (D:20080809025807Z00'00') +/CreationDate (D:20080809115815Z00'00') +/ModDate (D:20080809115815Z00'00') >> endobj 848 0 obj @@ -6974,20 +6972,24 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 859 0 obj << -/Length 2023 +/Length 1968 /Filter /FlateDecode >> stream -xڝX_sOGc!@d:M:N㹇},XbL - :4)Q X,緋yI0eTT,Z δγ)Igh\MT,$ɔ[$nmۺ6Oh%mhD>lA4gy3]򂉂磮kyhm6=*T483g}}w_4 *K/ V^ \l.t OD;O_>DZɨd.ApOa΋W|#zzI-b\M(2r˹4e̫U3XʓdM@ #q{✝$!b41CI:R3HD -@ݛɟ[SVȔAe29z?Z~- XH pp׹hjvfW¿3W2I|vSA8ԂW;O0eT0*=s˦")2evi1\YȐf;=\eX9$3dL'm,ɊbU@IdL"lߖp)jkonS? ΋AfiGkv$pT-Ǧ!ޗ2Mm#1L0ƒINůB*흷w ljtUg +Іeɹ [/r) m~u:rJ3ArdS >q4ɂq1p͌4kQľ)̔K)r iXQ3D)YϦ2&#@LtSYu]SyOvCTyzP/l67mH*L.a $Ye7ÅGˮjn[ 9&^!b"!}j/n3M]nir;~Kٔ^4:-dTWzK:_6c`5k]m#/e~Z#{ +dV-cxUER|Nx(}1A [w('֛" C40ISPJO'6+Ufy~hR]Ȧ^`/P939#Z͙vFA +IFPo'fFOZYƭ7euL4&g>%zs#b;R.% b}W3#Jy>uTT[R9e9VP|kq +&x$ݵuIPqz+c&пS@(2qca6LDžhۀpeBR&r$9cv-]WqlOҘ %CY|t!ve#yC{ +2i` [H0rɢoO.;@(FL4eRDK\tbÿ18 <+U{X-hiLZh>XJ^?Pց=R ,E1Gla\ 8rjt͊\"0fFoմKeg/%=h!jxngmTe2),3g5]\1ą?B?g +_ybKÉ + L68|ro#{Q.h +pP֌>nO Vչ^BC4^6q4E#6a"2 ?0,ji;TvґH\chlH~hH>qV +:h -Uo]?K 50t@̄ +AP$->gfP'qQBg7vB}ԕ \E€v&"kFO&+Jˆq<=W%,ԤBU0nWll2isa8l& a]nds˛Qb_}?֐Oрs0N^@sO>& q{0"?fmc!eӠx`EX7Pۨ@ϛ˦Ǹ4*("ȍ^a{rݺ +Mc}[5I NJޘ~rm^;ǟi59AM r(~ZzÔ +-Pf1bfVK/hj~> 2~>chah)^ endstream endobj 858 0 obj << /Type /Page @@ -7021,8 +7023,8 @@ endobj 862 0 obj << /Producer (GPL Ghostscript 8.61) -/CreationDate (D:20080809025806Z00'00') -/ModDate (D:20080809025806Z00'00') +/CreationDate (D:20080809115814Z00'00') +/ModDate (D:20080809115814Z00'00') >> endobj 863 0 obj @@ -7051,7 +7053,7 @@ endobj 861 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [444.1785 411.9436 458.6341 422.5258] +/Rect [134.2125 357.965 148.6681 368.5473] /Subtype /Link /A << /S /GoTo /D (figure.3.8) >> >> endobj @@ -7062,10 +7064,10 @@ endobj /D [858 0 R /XYZ 74.4095 771.7323 null] >> endobj 158 0 obj << -/D [858 0 R /XYZ 74.4095 748.8047 null] +/D [858 0 R /XYZ 74.4095 748.8303 null] >> endobj 365 0 obj << -/D [858 0 R /XYZ 256.0589 463.2247 null] +/D [858 0 R /XYZ 256.0589 466.8618 null] >> endobj 857 0 obj << /Font << /F61 259 0 R /F26 206 0 R /F28 209 0 R >> @@ -7073,15 +7075,19 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 869 0 obj << -/Length 1565 +/Length 1570 /Filter /FlateDecode >> stream -xڍXMs8 WhD,%nڝٶك3Yneɯ_dv"IIR Dr:t"fq6~wsIJkursHe,9Y;TLL43.ڭ\yצ0mLxfo$gujm66O2)E> -t ghJ8yX3r⛫ʓ׳]s;0=[k om+4χ*bTn0*_Sgs_/9{_Ki -R%  V/r sҮc*l]׿SifZ2+Rл-|nV%Gs>]AVhmx4l7Ӳ`ZLs=[ `5Wk~[W9[hPm7KWeG?vH5'U-薸朔0_MoDR>8\aY)svr^Ϋ_S]|>aVm\t0<Z401 Ct|#qk\bׂߐ ZbӣEʽet o_+ -0ediH =fO?8q57^m 4QZ)t^sqm%ˠivΟDfnendstream +xڍXKo8W(1˧SiiQA,wCɒ8A8fo>R?i( 6gOG/Lި4ϾEC`ޱp9A"OI 2ӡ2Uy 0b&xp j&ci&U4rˀz%Com3,IXli+m^x6]gr#|+΁9:Ѽ%OxHbqq ɏ/]?,׽T sc?n}CI|yW,VQ .k#fPT!kWPt1kl{Yץ-[nM &2AZ[#ku,֭leizR`Fms2 +׃h#.`*a~ecfWWXfm h]i˱X#o*feѝO^W-M.ls^rvቀӟ, Х@U*ghc%AۭDp\5H}Q^ϔ1+GSfxE5Ottuz`qŒTi^X[$NPu*tit5;.(x3 R5D<` +"|DeYzA hYz/{sdY:E^p4 ~xׂl]T[LXk+EZ3 64FSaRTNϯzp+)gIݒ +>q^WG2nZKmvog\pmBz>#asKȱ"s2M&;k Lx>$=!Z8uwu> endobj 873 0 obj << -/Length 2749 +/Length 2829 /Filter /FlateDecode >> stream -xڥZY۸~_Gʃk0Yoƕq8SHSӍH(Rp4h#VUE - !V7|u_hqMYd D׫p+kt3c宇˓jrn$_Վldn=懺';u:0#Po<ԥTLyFP[疿3ݻΗM(ʚח`?LAϚ7n)Jdϰz>In QYI ?M;vݱ'Y&D:Q32TxޜAIm8R>?ldB' TKdw1u \c jZqciw4Kh7'hZpq8Na8ñrm81҃iPCA>@xdzM]A4,Z.#!Z@@v \$\qGB5;'a@6Z;^Gf^{V]O rڦv_*NUOuu8 Wo;"VtwmZu hP׼Xn ! { \HUywhj.J;Dסa_w.'<>D -sБz}gj= [ &S>>=^ˮgsVpEg{C &OYT-1=@+ `RרXu۱3\s7f/ȱy1ZUޯ@a ͳ^Ϧ&a-j^/%L)12a*k1֘ב:ۉөgtm}@|HxQ,m.B -l ByzE~$r h ]OK9BT\4)&IBkq_O*MnED kjHU{QuUGՈ+DU;dz=T 5q ;:u}D!qG= -7 ]HwR-(l E®+,p` ܶmmʆfef⮞ҥ9q pXs8R8't}u -)WQÑP +~F?Š /<6n,),G~H'OvOK\GZ"pCm4 D{Wc8 N1P1JDYFPYA(xD$OB du@yD\}|:OQ:WynA7 -]B:Mrx@h͞ژ34Ds]w$|(@r&9h?]D7Ŵlc0#U7C}jB mDNHvr{D[iswE 6Aqt1cԞ{f/7s 0¿#b\4vP!}:<1%!^B~sS4 pQ]!KhcՒ!{u4)r ^r4dCCٜڍݒWK2ϏMo}9xyJ. q=;s^q"ܟ7r.xfwJ! {X:< "S1'f?UZ**%cilkzSա=Av\NA"%;cI?In|<3rb;Q@ub-Cgݿ锯lOaį{}Q9:5;J`PTk"[ʙ@z?~isUU3>֌ޟͳ5;\ymd<݋j۴Xa4q lh&(rqPydru:_f1_.a-hꭘ:Dzٛw',Vo}0 K=I -w}1^:]r`0CnKz G;Bl ʭpD0=bdgt+)1%l)[VgSV9VȆf?9X0ޕH^bCVR%F1`뾧7usR:1)lXҰ3~ R OPs1Xob-9g0#o&Qo -3r13w9|9k&!9|z܊Cr b@v/.rbqj1~P>n2>N[#MGӿ)l];5gաr{jI:rT]}-W/b=azg$!uKy_V@l/5]~I4ST zCendstream +xڥZ[۶~У4c!gpi:Ğ#13"ewί.d.^i>?"(İÿֿU6dmoϵ:e7w$,OIR4O=q`YEH2Y $L`y,##=r,2GW~7\--"ɳ8l_./M&S&Jmu4짾 e},eR Z5?L[u1<zjeձmqZ5 \Cu>CehGՠo+2VDB:w0X8ap:UC$ 0fEQU5f'$&@*JUAup8g4tv/=(Pֵ)g<)HhzUՠ Ր}/(*4Ѣ.i0ecx;{FQ-%kTK\s1*Ȩ"=5+ӠD=}Ό XBs,tAOuP(kj= .ru:kn`gcߟZ%@;ŀ8 rqBFShÉ#'"Tk8s+T]Tul +B|AGKv K\$ O )[ohAp&:h6ZuسzuGjfMc8W=%DVv$hT@G{'%7ƻ瑍B' "j|9-[ Q撏{ٷ9gL0PdaRBAV\SG_7_pW2/'}z\.lveЊjv [g m^T60xD,5SܪyՎ0UЋdBBbveiJ,=ʫVH\SCuѮ& $c&6Ҋ Fb-n2!-ƹ$"EĆ^S1yx=` +AF`ҳv9 ڟ6fu`zbh|i C[4)zK@GfZPȏ\C>ZBWZiIwHsG,M"L{o&k1+o\TS$T QՑ݋\]T:UUu2oy?|p{#6syLS)\քau(;.r#¯AM5Ê,hI]ꮶXѕҨJ SBkZ ͜f䨾ȑd WBHRO)z, 4@;B=tMfl ޽/UB`jA TKo$MG%KvLK\4LvSu#-AH$(7{qc!OҬ=a!&N6f<0aSU_~ NNqh DžA*8FP H7 #n>xf Sb"d뀐1\m|b/>EBLaAJ}Φq'KA쩍BC4M±8tyry~zxs_ڕܭD׹Ÿ`0}5C}gBD70R#ʹyxcܝVbagag8DM%f6p+?QcKP9Y_O2&3a_an6:TtmJLi{5u=ڛ\oc<[Pћ5"ˆS-#gȋ\!p6䀫5d!s2.n+M{,ɤb>^?Kmq8y#yBe. 2;ºB9o8o>y+'`|;j . s{$z"8qT3=~B[@e4|X$<>e3*}8RX cs" RĖ(Rs&glDwJPV k޺)_k]QDGk?]B,31WS=_\=Ů 3( įu0UPE|(}'mwbv$gɰ-(Eemc(0cv!hƫoqPyƢF_Tzq@[UAT6UFBHc㝭!," C=E8j#PɎLu]Iob`5pGh8.-Q3v7E\+Kk(;}ץ_I9-yeG~' 0ky6ec!nfo:?3`*G' RcKVR%F1`ңG(]uf+/RaE'oxJ .ߎ!E|i~9h6<;kO?/ *Llrq]h:p|ۇ?}guҚX0> endobj 877 0 obj << -/Length 2469 +/Length 2394 /Filter /FlateDecode >> stream -xڭZ[~_GDQf/n,2-L46cc[ζ{(u#4X,Fx.?H98KiŦ|;K}= 2!e n҇ˏKQjMSdhN0^-+_TU]jMڭ~{Ǜw-~B1B\ tf 2z⑒ iJGbɂ% ϔ$9L?#&,E|7BuFcB Q_.O+bcpjvp8>凇T8h~Oeo T/zo̗?O:RiLm?ű:2U ^/Gv W餈YxqfQ^B/C^| /F$CH9[B>#d(*Z(J<^GBooH+,|:w$tfdrRX{U_2 2ؔ$a| Y jujp;/G/c[$ƽ#7VG측6H3$d*D3RBPF7]I"eH&ɭf&b:Ȥ=BgΙE v QgQe%ʦKw+4I*5LA#$[qfQjB5Cj|5Y,]^^y lX@%£ R2PMS}֪+a"b1Ouƚ($\/TŢ,=XYT,!N,C}J"lISfph#sdmmy  Sf" V'ȗo5DmNC%Kop;hK`[`VftjkUþ8GS s {έ#v;uǼJ[<|w&_ g$8V!-9B3ZQ7ZZe>oRʘ`tfT2*o UAd3o/p2|xYTce22YhsfQBqC|!uEUu! ໷XTRF0|z;zPά[oYUE.euF[Y6\ Pe٤5z3Pgw_:x .UN^[eESMepBFs~r[Jl[MW_%;? -uh7cvEUj>ӳOW"a, [$ښ$Dm%:Bh5x8VR^ %/[\~ ({KX0~'\q .@,)\w!8u"Nַ - ęEB2D˧Z2-MvޫmUCLrambF[w&("+aUYMa?\GdBoΐ*v،PU{NG en?ACZk'OtZ"ZI"ZBZrfQ-P;- QgMf!dXT7!%,aPJQ!9).cԝ:)i' A}Y jujCVQ -BNA@w{aR7_z,F+M9Gz;cfڿ\@Rh%YB,9(K!Ԏ! K>j/$]ZL`*Uy A aoM&D*wl. >'* aoܔs~]_%.\ڠauuu98a4iʪD -VX0pBsfQP; Qg4棆Ą9"%8~8\mR"'ɞq E"Rendstream +xڭZ[o~_GY&Q6EAX,{N~Dȸ(Ԉ %^% ($pjz/6[kuJ㘭ZX=,6[5E-M.u鹐'Y6>YR0!mwyŇsDY$iD$:V>YDjOuDuLbQz_TO^R쩹Ȣ0ۮ͏YWețk+U8\,ċe:KA9zqĈD4$ k$Çړ1F] E F:KHR[f `Já*QV dž5 C.z]\uM0^'.9kq*G5 RC.PgbzwHN֡fҗ.!!/s|Y u>Ԟ1u.ܟeVk܍&G X-}QLʼSSuP*CMgƋQ3Af:&P&!kDZ敎E"nmpoA,š :Ք!msˣbh!?nt0նVeTs(4"|X8E", 'kuA,.؏?}X}S9l92"0 /nb8p||Y _>Ԟ1_.//E_l. ypi mpik1H:eu#Oϲ8uSJXk:1p ĸ3m3Ǭ4T~/Yʠcµh3 iɋii:p`6xݮOʦNj)1"&tgRRQXPXl|lƨ qQ_W7> )UÔ*Yv*ʺBtj75zv?N,Ks? MS9 \iєfZiQyi;/A`<=˜?AKʃET0lZmL!bFw59OPl/4Viƫ4B=PƎg*\K{Tź Z ])3d;(K5ȳ}A5貖TQD~Zd͂ZZ.hE^KBRJKfD.1JI  $XC)gqe4qV>ƭYqjuquPɳԭaWP BَΊ!D#EOR}='2vߦe@,cm1SGRD91h0hy`%Vv +fD@*Bƺ0H zka,17um8SО:`9e&ɸmGϐQs +}+7JS=)T&BcvyYnl|Av~!$S'3MS$:&o`ԊUţT|klU7C+v] D(<$:?u_7nMMX:L Z2 +Gq ʸV(ә2(3@h2 T`;vc]ov>U/kOq*-n w_ب:C.Bu_; 6+\uJfԔ +Pendstream endobj 876 0 obj << /Type /Page @@ -7241,17 +7245,20 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 881 0 obj << -/Length 2198 +/Length 2083 /Filter /FlateDecode >> stream -xYs6_Gi&B MMٞCP,(IIg殣c]` $)n$1BL3>Y܏@קbi/gs%v[جc+[Ć:0#P>DiS*OCoiONnF;ԝ:_>̝L%>UػAӖoh~楗hmvaCs| Ö 8RELϿ -mj[/yP~[ /=d $#9#âXh,5&[-Po3FP+8.aasj\TYᏃ -NIe+tRoL*N;7шneksCM˲kqI7%Qn`m00ҲEC-A3؄A]&Ayh?|%EMcG-5 YC+~W>6tBEU͓sY 0MF#Dvhuư^=\O˵ѵK唹q eR\u9lBhp#nf˒@GS55f:GutH j表H"a, r#) |8:Tc d/nuC'Pj rY6>Y\B9cKc&({뒀>܋2#T|lwOD>*)mӊ Ju/H~@3.S5.Z5ʵqJO|6O[ɷ1Kt7=tH'!#$ {ߣP*{?HFً8ѐ uaN^x}-lNI,ռ[FZPѾ.-n -h P$]R5gb -|bHkQ)jT)Ayẖ¦=CNHT!R _ubD΅-PL&BEחG%1Ӂ΋iE൯:nDjΔ4}uzZdT (yYddEyO-̎:>R PN- ~!uH2,e3X+]j^h"9D$Tua^UoP\ծheV7Au I)ekь|m >=<;y]32[QG{p"7C(j?G@rXJ]t`zx^P%8mukĈ#LmJk|M>HP?^u =!/BY@`q$p[D=6SXw%0=vQw/pl_ѻF~V+N\8B3$\^˱@0t7G)I=:_}|v&׈ۣ@W y_.`ІEƓdXqEb;84D73 kۦguF E D_XS£YVl׌g4hsj"v.m1.9o,>/(̲AD,!D(#g8-y:[ˆA [!,k۴(Q dw^K -ŴoHҺʒ$Bj$tK ||ܮ1ds~#?9>rh!|] !$p%ǿ"ၱ6 fS B*YAKjliUt.d֬u e>֊ -=3c&/yUe}K[*Y]^\Λ L$b03/`0M~2ꘫ}'L)q -$P&WfC -3endstream +xYKs8WHUE<>oٔ=RK\SWf뷛 P EQ<TJx4э_p+&qBI*1Yn?~l9Ow$,p2HL8:_+)3'bә< -m_ 5et&tp(_p3okYE}†aBœR,*SDZlDj-N`IIKWz" NN:SE +azXL%|9)5i,Tăwn+>YUWclmMUeksw=).R-A +G+}|FQ%y2vjD-%rm~uXזq +419dEJ=ـ6AΙ"I7|SRۼIRq3O +,B;h{6fi<Ŕi楕hmfaܬٝTgoqQbq " SEA카ʕ)j$#9edM[@BoS }784+:]os!A&. ӲTmo^ ?F*'*=Y))/G5wߍq=]v]wS*.@2E5~ălăA!Egغa=eQ͞j8{V= k' \ά5yq%_:JX %O5F::lZN,T:j u"ƸQzu>n!ܕMeV!lpO ! );Vw`R؛V3d)ة:BV: + =VFՒ](P'\]a9۾x_@ڕk:$d䎄=}>n@{B? G!$ksGEq= |t90ɫGkO[޷Y<%->iqtŁmq`dʺZnLFۦwtyT4;'̞@t*'iU(7$H֜-vDT0uЀaC=CNڐ^?Bt Ҟ:z)2ms5/b:z5lQPDIǖnXՅS5!46N#=LxbfҾ`57E=(Shknv䖂EZ\ۣ"};2LqEA{44Mk_&e{2Pׅu5UĆrU:_fU=YCH,Lj(ƙWg06k`&zZQk3AA6q 7bzZG[*T}ui++K ׮%/8*鰅ZOw F$1UrE@ +TIҾ'm.Rc ;P Y D%-)lvxmO1bOmɋGY?BM–{"_tOK>#қ=Ȯa_ev>||U*y"f)P^Y@tX*M,z/>|weq>pD|"bLPT?Z "ӠU ӅwE\z +qE=o5Nm \\(jWd ZG^=Eenh:Eۯ Д-i+<&"Y7.Ŋ]zC,WhCփ.IlR F;vBK&CXVnQRSd{%ċrd/`Aӓ7$iCUI +Jo۽m5IE"OӨmH Vg[u;>endstream endobj 880 0 obj << /Type /Page @@ -7264,22 +7271,26 @@ endobj /D [880 0 R /XYZ 74.4095 793.4011 null] >> endobj 162 0 obj << -/D [880 0 R /XYZ 74.4095 451.5497 null] +/D [880 0 R /XYZ 74.4095 357.4533 null] >> endobj 879 0 obj << -/Font << /F61 259 0 R /F35 221 0 R /F28 209 0 R /F26 206 0 R /F83 824 0 R >> +/Font << /F61 259 0 R /F35 221 0 R /F28 209 0 R /F26 206 0 R >> /ProcSet [ /PDF /Text ] >> endobj 886 0 obj << -/Length 1636 +/Length 1599 /Filter /FlateDecode >> stream -xڵXmo6_! IM6 m5}[Ц(dqr&ɖa}w"(xEX4Nb0Mf4»_Od`]_ I2$pR:>ޤ׮yŤ?^:Nf׹٢v-iϣSb+"B* !T|D _P'FF0% fMa%?I$ae~#eaܲlM R%Ko8b$4aNE J`jf8q2/-9UN3tD񤑾^s7 yZU~x>UMO2[0,+s[p&CM'Wu+n[ }ZW/"wo+?O!iN,-A%[L.!]YGp hcuDj8:J8_s".U0xg9~VǡZ\ -W Ä8!L*} V&C.6:|mq|xZˮj l=\dq@˛Uw5=K$yM\:@ fmD渦n'$ާ/X[šS91nLH*Ͻg~ gEwX@X[_fIPIzTA(vtFg[(>vyׄ$6JJh@kA2*Q;<[gm}_wSD3"ĈdۈmJ88+1. -&ʡ6c-ϧiqG@CPH4% %&Me1%S`A 0fPUK&KwtieU'๩-Xe~4/|DNl o{coJtTPB,C@:[r6}9GK-GƆh=@2). 1n-++46lP_ގĠs43\ǖ],_\pjΪ +7/:}rX, aTj#(n/ChCvnQ" p}Z%Bz4.`q.F%K.p/ejHiVB!뾖}(4@e?ox<A7+@7 r ÷7ah$i(.5b@yqmF]pX -osWczf(Ż'NR--lM`lendstream +xڵXYo6~ϯd1K tmn b6JtҦH*Es|6((D,Lhڣ2/; “Mg~T,JIfg1)gFgX]'/ui"o{C>VWEӝirEXmM>1v}<~o~x7<XvvHs M4uK@[Omce8:P1K$Q,qʣW2„5wbUK6bP)_祁k54E ݺq3t7x1FXeM*6t$<",B +Ȯ1G9Bט ʭxm0`.ANRMS8Gg"[{pmŹKmv^S9kMiV{e:JYxHK5c6 +Ro(wi#TPh qϗK{0HF]m +]i93S 2pqnn#;C +.q#!iU7$H\CгIp7k-$ s2b'#2aqDu BXybڞZN)j*cO)Y3AdPY$MojDvIr4 vG!bE97l?IfnD-KB \2fEIҕ/&|uBNvFw\<#)SX>X$!֬tǖ-4RxT/{68VtՁ?s^,q+id7K6 +n2 Q|nb4&"Utb׭qQ&y :MHrD@wvAr [D +ηݮ+]jI Cm)d;.ܸ뙏ۺyuVhB}P(J}1_31U>StiT_@QB%P}FAUr]M6檛{Dn=ˆ}_զpr7rɜW}TڳmexlcD1Nc- L-}G%Pҳ ĶZo0a+(pt| 08ԗÑd xtSuY_UK"JY2-e +(dI.@fauX <?ELaZ)/f ]`ߺXjtro!UwwrTQ2H7VvPi?l 8QHbI?<\endstream endobj 885 0 obj << /Type /Page @@ -7292,7 +7303,7 @@ endobj 889 0 obj << /Type /Annot /Border[0 0 0]/H/I/C[1 0 0] -/Rect [484.3906 485.6988 498.8462 496.2811] +/Rect [484.3906 388.0752 498.8462 398.6575] /Subtype /Link /A << /S /GoTo /D (figure.3.7) >> >> endobj @@ -7300,31 +7311,25 @@ endobj /D [885 0 R /XYZ 74.4095 793.4011 null] >> endobj 888 0 obj << -/D [885 0 R /XYZ 74.4095 568.6296 null] +/D [885 0 R /XYZ 74.4095 475.8821 null] >> endobj 884 0 obj << /Font << /F61 259 0 R /F83 824 0 R /F26 206 0 R /F28 209 0 R >> /ProcSet [ /PDF /Text ] >> endobj 892 0 obj << -/Length 1801 +/Length 1829 /Filter /FlateDecode >> stream -xڵXIs6W>dI @䐭MkOzHz%HbL*x&Pt|o`1'Fb=JL !F-E+<4Ow\}c,F)3qFW4[WwW&om1$Gl2՜6.֛®m涞Lwr˳W~-9KX؞ZXG@$t^/TRx$ʧE_X%=ZDkq4xi7(QnquM6/-HxV.lipiv"Amil=%q7UQ0:cQm -?N4(( -Λ$6~H n:/hkfLFS0#}`-QΫ5-mk"_X{SW&pe5[f"y -|>#|{ -^eEdv0]<s2KVnl2#\'r) -/i"9.9zLE>TUa!qhYִZ_v &BܕmU>Pxk+lXU5.pz@KʒfyT -(550Bng6'Oz]OeW (kҾ .v"b_9W5,~.maaSWLK:);N',N>(#e4~mU5CCSv%߉d*$a-[%m( Vǩ%eH-٧9Fi!|6ug( "&t{hcy"+GE;Sg/DPYz&GI^ -iJǏov*B]C8Y+g&CSKGHWY9Eˈ]Z-#Jp>X-PD^ǛgȺf "x/\M~h (.[0֥%hc_LIEݑ( -K#ݥh?`g=I( ;(zrM<?\Uee7zN渰j>A![4ڶ]]L(`?}Əs{|w88} 达`;Xä?0Ӕqa'e< -TDw䎰Ctf5endstream +xڵXKs6W9diI䐴iiؓh SKRL:tLx.}`EO$f[dVBd9 +8;̳}g'$g6MurL2LR씞/L~)Uәbә|}p}Lɶ^M:`H4۬)&͒:GOœp|™I3aL6'PT'g' :y2-ˌ"92JRa~m}<RhX($\%3˭ n5~tB7VM]UB_o/?DL"Of"eІt+WQ[G؊iU!_r-[},PNlcE,K̰+٩M.YBٝܥ:r&R1!2i>)ȳRvd; 8-Oz9Pn xkuB'+wվU^`'pehEʋzN+G+S1&]Okdr$5U՟SbQ.#SekFSimڔj&5 ΆCIj4ejC ׻*W,^͇)iu9<ַJ\aoEG][L1Mnc5r;w? +%θ0DY8q?3%mY)TٽV}9/I)([q| Buv+S 5b׾jewozEU2r`8o8B\^A(WnJsQ/T/]K+ _cQ6ÉŶrOnjy)b4Ö+W?@mILkzS5Ej~ X stljf=J3 ;*{r&{ fiIKK%o`a "}3oE2g.ϩ x6DiDF \8 F6 wn\ +xѕܡWO~ +[925۞ +l.]0n֯I*8C4$ց2R72~G[PA}[w{F7nɐPbB&ؽ* PrJt%fkuha \E5:0s 0G1]FgwwFV]zi.qe]lOQ'lv8rb7`V)A=AXiES!]D~.}`A7J2h!KqfG6Dt-jDЕfRuQ/\3ѭ^+8]Е 9 p. H؃i.S6qz bp#PH0J0PQ+?ĵnfE56k0Gl2` 0AWX?69ݳ& ƤF0 \>a "` q~XL +XN,6c=#Dy7,HoXBt>//Fw. ~x}2j&~.~zpֺڼ@wB080|~| y9~W%uH+YjdD._fnОendstream endobj 891 0 obj << /Type /Page @@ -7337,23 +7342,19 @@ endobj /D [891 0 R /XYZ 74.4095 793.4011 null] >> endobj 890 0 obj << -/Font << /F61 259 0 R /F28 209 0 R /F83 824 0 R >> +/Font << /F61 259 0 R /F83 824 0 R /F28 209 0 R >> /ProcSet [ /PDF /Text ] >> endobj 896 0 obj << -/Length 1602 +/Length 1369 /Filter /FlateDecode >> stream -xڵXo6_Ij[!m!-:tKk nj#T<}$@#)Ev&](Oy" -,J$Ԩ(1Ƣ͌FkXeY]̋1O4RbEą"(ah3L1;6I㆘TÛyA -rƚ%&k"bj)Q! t[[ZϨ^i &JOdEa͋|#8J1.Iʤrwu6M/gˬ]~xN|1 A47#j]umPӑׄ,=CE$}04G{^ڰŋ"ʋz |AQEOu&H)T~^b"Y PU.p m/8A$Tf&NiBGf\%)I -` 1:.8uJʨk7oxԶ>% -uG: D M\" -{]O=M{&l5G0o+a|la9m -gs;`u׎eGB1sXxFUg9bXQ[^ـ Uͫ/S7%k tZlWbTkPڃUUP#Z+ZM#ًLU$L8_a^I]usί2B fyiP5D_w4|p3CR>ܛYZJcԗ"3i%+'`OzDBjw 翠L"ysYh9S*/]_-3&@LJ!vۻRK-r+Wu(0t&LL`u ,q{dgtf"B?i~ߺF̷Cit}/#Uendstream +xڵXYo6~_IfY^yHi@ܟQar.D̨Dsi|%p`Ĕ̒Q& vA']4n[p=S\eNKͥ .5_+?֗17/7ԁNҬ1xe)^,ܘAN}ZWzٗ_r>ɸd*X鶫p&i2 O9aCPE+^_0egLvhV?k*mŕYL)NQn*T, VQ]6S +x_v6‡I;0/PYfq(jzzGn a9v +3HE9e8}k3C" ,#6zq|l*OB#թwMY EU|XCbFXPM=H1l W( 3Rme!RtsCCD {XNx -3LP?94뮾uYJ*c81(‹{b"BL缱k cPk5 d3k:fnq샎̈́ n@|-_s݀Nu]0;',kCC0> zDRC*z齀vjfƂ$~$MeF!1|a}d"+cҴ;n^[9,)W8 7;q]S -[ :}Tk0y8ѪS00==g geAxAGUe#BQvxXendstream endobj 895 0 obj << /Type /Page @@ -7366,24 +7367,20 @@ endobj /D [895 0 R /XYZ 74.4095 793.4011 null] >> endobj 898 0 obj << -/D [895 0 R /XYZ 74.4095 453.2236 null] +/D [895 0 R /XYZ 74.4095 336.0153 null] >> endobj 894 0 obj << /Font << /F61 259 0 R /F83 824 0 R /F28 209 0 R /F26 206 0 R >> /ProcSet [ /PDF /Text ] >> endobj 901 0 obj << -/Length 1500 +/Length 1431 /Filter /FlateDecode >> stream -xڵXKoFW9I@7=$u:A$2C-%||حpI)ʉ[r|3s(|I"i/`Y3/7keNJ@k\^;\(}vF/O76LpYylEMLj*6ej^gŗ׳W);H=>R(D zF|%,zv'-g{lA <ƽƬ"cW7&b,pRG$,D@8.( h0$PF/WIZ~Ǒ]`VoMYkc_n[f7FH LI8蒵^yb <˷uRūG>8Z:|~e.zYth} Rsk*jYe֦h lS -0;Qe5͢- DAQQ|n7V6]L1,O=y;P{==!Iy (R觳@CSTq['Ԏ\Ms@ӝh9үdrąL\ͻ+-}e7 -˯HVa@Ё~\ߑTO{N'vt@tqFWcRx<$iSa -iW)iP+= -pnzU,Jڴɰp]W JI`rBT7rv# #y.8zR mI-޿6`b~1Easp\A2١1v.4||eܾhHן'M _`͗rm7tt 1I1"!<DS_*OF!{;ւ6 Z\=gS(cqgĭR16^ - <#LNdfO}2NUަЄӕͦR]q]|\{6Y<3nj^myV)϶-Y 8 V,Mi +A RuRGoI;>ϻ_.2^D?~_cu"\}CTn8@@B:`jOUmQ1Q̗DP8@tك^zP|~ %ijUl-[7Ii='cm m_Fido `}V|7fSA޴.p,Od1؆'ZHDuRUO)tKϋCNί 6!hF=6;_)i I<_FRendstream +xڵXKs6Wprf"o`ikgI#O{s)H☢T>i:@%˩Ab- "I$MT%Ƃl5~t“觟5 bh-y")š ㉢4<ˍc6YM50bb_qJbӜRtLxL1J53Q"XwA KF&$ö[4M d RP"`$4a%0%(/eLDo<-j1R`4TV}xJEsA$?GŨ}6@Qub:DDҞϱ)KbZ3YHL1Wa4yi۴WcFt٦ZEceڼtTvW뵷kXY_Mjo4ϖj,\-Ɯ7o_3XA-,HsԺ+tkO&1`V\›ϝ蒅iǕyݧ $;1,n_wf`ћ w'͋RS)jIe lY!y~tlnLF0JB͓yU= sǺ~S1UiZv~3딡?硝оut&k{g QW:LІ%B3w'ΰBK&Ȅ~B|m#/WaӬw &n`e/ݷV\Kv@ ̙ ԏm٨C#lgFiK݈`zr]Ӗ1`wj.ikg!, 'OjW Kޣr w+;)4Oj;\Bm;vPt%+g++f%tUÃqÌ)OY@G +"5Yv8C@I|W\@0|#8+LuAuQ)ba/K0kci;q:pYP<~ ,Jw_s710N;#5gĦmVИ|_?pϗj){pȅ)#|#>"MhK%[l]> ,nOnZμ^D  Ow@ax.k'NFn<gCendstream endobj 900 0 obj << /Type /Page @@ -7396,61 +7393,140 @@ endobj /D [900 0 R /XYZ 74.4095 793.4011 null] >> endobj 166 0 obj << -/D [900 0 R /XYZ 74.4095 358.2768 null] ->> endobj -903 0 obj << -/D [900 0 R /XYZ 74.4095 266.732 null] +/D [900 0 R /XYZ 74.4095 221.4355 null] >> endobj -904 0 obj << -/D [900 0 R /XYZ 74.4095 238.7914 null] +899 0 obj << +/Font << /F61 259 0 R /F83 824 0 R /F28 209 0 R /F26 206 0 R >> +/ProcSet [ /PDF /Text ] >> endobj +906 0 obj << +/Length 2732 +/Filter /FlateDecode +>> +stream +xڭZYsF~ׯ9q>e'8:VG$lTկG zg{ `/"(EHpx<\rG.뻫C$ i!D,xn}&_E/eZkƖo2CϹ9LZs<w?^kk8 ŷmV0P:k)PȤK=q$QH")aT2\4Tx" wD[-F"=#2o׷a$r2y^d41/ٛNŖئ W1[e:7*<ФBZF w񥺩T7>>&&LX8.#i +<+#U6)Y#0:T3T(]ޜz"[ueZ[qgYD~^1' aGS^zO Tv q?eb$FʇofJr fƨ2 +vfP1+ o8AWx`O8\5%ɯn~i8209)ErCJ +S/@^#ǡ\u +ʍ%x]­S$rСJo_ j*`P!$=K J[~J!?CT4j +ؙ.aei_ޟʗ.&sF xK'"inëD<kUu*TdxӺcڼz2?dXh pkc#ܬr?UL Oi?ψc,Q x|ϭPX *mf,̞J !JUj +=dHD8 ++v4컴('T҇~=DQX i(^|iN-h~ |sMTflSG9uU=.Ohq~T@uЕ#_4b '`iK/=lN)Ң âԍ Fj&(=::s"۠eW J[C)ƓٴCл~S3~W>/DU}gHXb@RNXh[N(0a J +wH!V4 ؒ8:&l7~Rcc|7L:yVN\52bH\ѥH B7"W6 KSO=kjZ(cz 5 NOO8 Mo'!h1dvVn-׎^5bƼɒh؅8lb`0_'vx(J[.  #DY̿6+T x𠾶0_bRv9IzqvG랪"k Aa8;w-8q#u-gL#ZrISR1I_܅kcsX̗m,h497Qb +a!wTk&b\OhZIFB71[_72Lc/ +I8^.zj2ZZz79ʟr'(xIؑi[hbqkpD"da3]?yf DHDhsb7m\r[$eQJ)O;҆Oڀ4㌌&Ew9N׎X`1G߀͊ud CtGBt8yqD + Iĺ(`WJ0XjK08o|j{Pxeh;ڀQf-Em?NFniϝ O司aB[烛mp@B[ڣ*8qmz$`%'"m  ++s5Íy&"}Ά8yCuIlAgTҽ^},= xҨ7'0!p̧=XtΌ%:dNX<+>W4k`;H_N;dž4OC ݮ|mܚml~i:\_ L""sz`}ߘ*_У9^"SCX.l_E $sĎPB1ŋNFzEkA\ +v Sw!B3Y) 1LtQ> endobj -906 0 obj << -/D [900 0 R /XYZ 74.4095 164.7675 null] +915 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [265.8494 326.1609 280.305 336.7432] +/Subtype /Link +/A << /S /GoTo /D (figure.3.8) >> >> endobj -899 0 obj << -/Font << /F61 259 0 R /F83 824 0 R /F28 209 0 R /F26 206 0 R /F35 221 0 R >> -/ProcSet [ /PDF /Text ] +916 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [448.8126 243.1787 463.2682 253.761] +/Subtype /Link +/A << /S /GoTo /D (figure.2.1) >> +>> endobj +917 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [361.8513 207.3242 376.3069 217.9065] +/Subtype /Link +/A << /S /GoTo /D (figure.2.3) >> +>> endobj +918 0 obj << +/Type /Annot +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [504.4211 153.5425 518.8767 164.1248] +/Subtype /Link +/A << /S /GoTo /D (figure.2.5) >> +>> endobj +907 0 obj << +/D [905 0 R /XYZ 74.4095 793.4011 null] +>> endobj +908 0 obj << +/D [905 0 R /XYZ 74.4095 771.7323 null] +>> endobj +909 0 obj << +/D [905 0 R /XYZ 74.4095 757.8898 null] >> endobj 910 0 obj << -/Length 2192 +/D [905 0 R /XYZ 74.4095 728.6893 null] +>> endobj +911 0 obj << +/D [905 0 R /XYZ 74.4095 681.5616 null] +>> endobj +912 0 obj << +/D [905 0 R /XYZ 74.4095 654.0646 null] +>> endobj +913 0 obj << +/D [905 0 R /XYZ 74.4095 521.4354 null] +>> endobj +914 0 obj << +/D [905 0 R /XYZ 74.4095 454.3855 null] +>> endobj +170 0 obj << +/D [905 0 R /XYZ 74.4095 406.2501 null] +>> endobj +904 0 obj << +/Font << /F61 259 0 R /F28 209 0 R /F35 221 0 R /F83 824 0 R /F26 206 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +921 0 obj << +/Length 2119 /Filter /FlateDecode >> stream -xڭYs6_ɓ4&qL^Ҧ־<\ʂe&TsEs>tZHQ_0_&vՊEl}4ʸvʔdҚ4 -->il˵çZ>H<bEʜ{W;N_ 1E?y4"pI^g9l23oFY)uR+CUJB,{i׾)U`HT5),!BA*Jz9 Q+=7sm۲aEרy[l}qwQWh\X mW{Bo^J>?@R{hWD<ԾX]sL[l7<Z~i_|T^Y[Ub cJ\ RS'ɾ)ϛr`34%;]SNwd\AtmWXA:]kd߿M{]K1 /96PzF 06+.qkp& Y>[d4N^ʠM*!C"-_ƦyX2khr'ކf9}qtb:LhN󦔛}C-};>mOJ 2HIGL/PSK#rrY@H ܦ{C$5INq,73MFN4GNd60]5B*76A1*/+7 ݂ %s8@秢x6k ,)uz 7 mvf_}г#?fwT9]CW]D }_ʼi:QxsKOڌ :x#Y?#3\O';7Pl%t\^#NB@ɦJŦ%cG$Al8p= 6*KnY&{r 3%:Al1.[ Bi%Nm'׋dln'7Pv~#xޣ!RZBs qDF=P\r0d gq{l#"_h# paʘ7,7+n\H?v{KfSځ ;jV Ҩ•]q x79$NKމTxg'?1endstream +xڕXs6_GjD佹\g|S(%_X"):Mfbp/v!J_eHWY!apJao3cﯾ櫜ZJȔ\uZ"#q$ѭDxx֝:it?\"aیUJ3l δγ1wϥ3&W1̋\JX\{vw2_~Z6l Z.za9jK#G6f͓h-/9gQ9S*]u\f\rkZRZ%ٯE͘eLr:X2ݱ-uE//2ËeE.z8dsSϗgKER7nlkOrsǚD'q.dpԵćhc-"}o}]b[t}ڵ] LۆֶԮmJo{yޕX426S1I~6Wc{";"S(3{P[X$sj:g =lFS?Y2Yٚ.e;\AHRvHjvuH:_rAp=tmoAjc}D>+t j̖vf\EO ɦjqMelq-ѕYV +18DzQeykp +[tW\ VNQ*UjޢnݞU/ [^v)`9,UM7Q7k-.uŝdOkk0@D$ ({y[6ȩѹB=bc-D0R4qA)@UpgKFLv\]Ι,9ѡϮْgcR ik׎;1<2N` ޯ9$XmLx!6 (X& fZb HpcI\o-}dWEi Ɩ "Y@WJu%0US}?,tdG0ue*\tuš;^r @rxk=}¢15}7[\1^|zT#(iyiIЁ