Commits

Marcus Autenrieth  committed 29c893e

Initial checkin of Template.

  • Participants

Comments (0)

Files changed (32)

+syntax: glob
+*.toc
+*.aux
+*.aux.bak
+*.bbl
+*.blg
+*.lof
+*.log
+*.out
+Master Thesis LaTeX Template
+============================
+
+The main document is 'masterarbeit.tex', it contains the document preamble
+with all the included (and uncommented) packages you might need useful and the
+overall document structure. All chapters are '\include'ed into this main
+document, so SCM's like SVN, GIT, HG can handle them better.
+
+
+Quickstart:
+-----------
+To get started:
+* install all the needed packages used in 'masterarbeit.tex'
+* test-compile 'masterarbeit.tex' and tune the used packages
+* edit 'titlesetup.tex' and 'pdfsetup.tex' to your needs
+
+"WARNING": You need a fairly recent version of the TikZ package in order to
+           successfully compile the template. 
+
+
+Acronyms:
+---------
+This Template comes with a database of acronyms, called 'acrodb.tex'. During
+drafting and editing, use this database with all the acronyms. For the final
+production of the document use 'acrobib.py' to compile a file containing only
+the used acronyms, called 'acronyms.tex' and modify the '\input{}' statements at
+the end of 'masterarbeit.tex'.
+
+
+Images & TikZ
+-------------
+* All images should reside in the 'img' subdirectory.
+* The file 'macros.tex' provides to commands to quickly set figures
+  - One for normal figures and one for sidewaysfigures
+  - Both macros prefix all labels of figures with 'fig:'
+* If you use TikZ you can put global styles in the file 'img/tikzsetup.tex'
+* Configuration of use TikZ libraries is also done in 'img/tikzsetup.tex'
+* You should \input{} your TikZ images. I recommend the following workcycle:
+  - develop your image in a separate file using 'a5paper' in 'landscape' mode
+  - move reusable styles from the image to 'tikzsetup.tex'
+  - \input{} your image in your text.
+
+
+Fonts
+-----
+I have switched the used fonts from Knuths defaults (Computer Modern) to
+'Times' (**not** Time New Roman), 'Helvetica' and 'ASCII'. You can find the
+setttings in 'masterarbeit.tex'.
+  
+
+Macros
+------
+One particular strength of LaTeX is the fact, that you can define your own
+macro commands which can make writing your thesis more painless. Put all your
+macros in 'macros.tex'. You might want to use the 'xspace' package in several
+cases. I recommend the following workcycle:
+
+  * Detect inefficiency: complicated names or specifications, error-prone
+    names, repetitive use of commands and text.
+  * Refactor a fragment into a macro
+  * Use the macro and improve it
+  * Lather, rinse, repeat
+
+
+AMS-Math
+--------
+The 'amsmath' packaget, together with the 'amssymb' packate comprises a
+powerful math environment. Better than the standard math environments of
+LaTeX. If you plan on including sophisticated formulas you should read the
+'amsmath' docs.
+
+
+The 'listings' package caveat
+-----------------------------
+Using the listings package with KOMA-Script is a little bit problematic. If
+you plan on using the listings package, remember to uncomment the line
+containig '\input{lsthack}' in 'masterarbeit.tex'
+
+
+Versioning with GIT or HG
+-------------------------
+This template is versioned with GIT and Mercurial. If you cloned it, you already
+should have your preferred version control. If you don't want to version
+your thesis with git/hg, simply delete the '.git' or/and '.hg' subdirectories.

File abstract.tex

+\chapter*{Zusammenfassung}
+\blindtext
+
+\chapter*{Abstract}
+\blindtext
+
+\acresetall % Reset all acronyms
+% vim: set ft=tex
+#!/usr/bin/env python
+# -*- coding: Latin-1 -*-
+
+"""
+The LaTeX 'acronym.sty' by default displays all acronyms specified in the
+'acronym' environment. In case you want to reuse existing acronym
+specifications and need to tailor the database to your needs, this script can
+help you.
+
+1.) Put all acronyms in a separate file like 'acrodb.tex' and '\input' it.
+2.) Write your thesis and add acronyms as needed.
+3.) When you are done writing, use this script to tailor the database to the
+    needs of your work.
+4.) Replace 'acrodb.tex' by 'acronyms.tex' in the '\input' command
+"""
+
+
+from glob import glob
+import re
+import sys
+
+
+# A list of regexes to specify used acronyms
+RE_USE = [
+    r"\\ac{([A-Za-z/1-9]*)}",
+    r"\\acf{([A-Za-z/1-9]*)}",
+    r"\\acs{([A-Za-z/1-9]*)}",
+    r"\\acp{([A-Za-z/1-9]*)}",
+    r"\\acfp{([A-Za-z/1-9]*)}",
+    r"\\acsp{([A-Za-z/1-9]*)}",
+    r"\\aclp{([A-Za-z/1-9]*)}",
+]
+
+
+# A regex for finding acronym definitions
+RE_DEF = r".*\\acro{([A-Za-z/1-9]*).*}"
+
+
+def read_used_acronyms(dbfile, outfile):
+    """ Extracts all used acronyms from all the .tex files except 'infile' and
+    'outfile', both parameters have to be filenames. Returns a 'set',
+    containing all the used acronyms.
+    """
+    acronyms = set()
+    filenames = glob("*.tex")
+    for filename in filenames:
+        if filename != dbfile and filename != outfile:
+            file = open(filename, 'r')
+            for line in file:
+                for rx in RE_USE:
+                    acros = set(re.findall(rx, line))
+                    acronyms.update(acros)
+    return acronyms
+
+
+def read_acronym_database(dbfile):
+    """ Reads in the database of acronyms and puts the acronym and it's
+    specification into a dictionary. The dict is of the form:
+       'acronym' --> 'description'
+    Afterwards that dict is returned.
+    """
+    acrodb = dict()  # dict for acronym database
+    acrofile = open(dbfile)
+    for line in acrofile:
+        match = re.match(RE_DEF, line)
+        if match:
+            acrodb[match.groups()[0]] = line
+        else:
+            line, " did not match"
+    return acrodb
+
+
+def output_tailored_db(acrodb, acronyms, outfile):
+    acroout = open(outfile, 'w')
+    acroout.write("""\\chapter{Used Acronyms}
+    \\begin{acronym}\n""")
+
+    # match and output acronyms against db
+    for acro in sorted(acronyms):
+        if acro in acrodb:
+            print ".",
+            acroout.write("\t" + acrodb[acro].strip() + "\n")
+        else:
+            print "Missing Acronym: %s" % (acro)
+
+    acroout.write("\\end{acronym}\n")
+    acroout.close()
+
+
+def usage():
+    """ acrobib.py [dbfile] [outfile]
+    When run without arguments, the following defaults are used:
+        dbfile = 'acrodb.tex'
+        outfile = 'acronyms.tex'
+    """
+
+
+def main():
+    dbfile = 'acrodb.tex'
+    outfile = 'acronyms.tex'
+    args = sys.argv
+    if len(args) > 1:
+        dbfile = args[1]
+    else:
+        print "Using database: 'acrodb.tex'"
+    if len(args) > 2:
+        outfile = args[2]
+    else:
+        print "Writing to 'acronyms.tex'"
+    acrodb = read_acronym_database(dbfile)
+    acronyms = read_used_acronyms(dbfile, outfile)
+    output_tailored_db(acrodb, acronyms, outfile)
+
+
+if __name__ == '__main__':
+    try:
+        main()
+    except e:
+        usage()
+        print "Backtrace: \n", e
+
+\chapter{Used Acronyms}
+\begin{acronym}
+% Information on how to use the acronyms can be found here: http://www.mackichan.com/index.html?techtalk/456.htm~mainFrame
+        \acro{API}{application programming interface}
+        \acro{ANF}[A\& F]{Amplify \& Forward}
+	\acro{ACK}{acknowledgment}
+	\acro{ARP}{address resolution protocol}
+        \acro{BLR}{Beaconless Routing}
+	\acro{BPSK}{binary phase shift keying}
+	\acro{CA}{collision avoidance}
+	\acro{CCA}{clear channel assessment}
+	\acro{CI}{confidence interval}
+	\acro{CL}{confidence level}
+        \acro{CNF}[C\& F]{Compress \& Forward}
+        \acro{CPU}{Central Processing Unit}
+	\acro{cRTS}{cooperative request-to-send}
+        \acro{CSMA}{carrier sense multiple access}
+        \acro{CSMA/CA}{\ac{CSMA} with \acf{CA}}
+	\acro{CTS}{clear-to-send}
+        \acro{CTP}{Collection Tree Protocol}
+	\acro{CVS}{concurrent versioning system}
+	\acro{DCF}{distributed coordination function}
+	\acro{DIFS}{\acs{DCF} inter-frame spacing}
+	\acro{DMA}{direct memory access}
+        \acro{DNF}[D\& F]{Decode \& Forward}
+	\acro{DSP}{digital signal processor}
+	\acro{EIFS}{extended inter-frame spacing}
+        \acro{EMA}{exponential moving average}
+        \acro{ETX}{expected transmissions}
+        \acro{ExOR}{Extremely Opportunistic Routing}
+	\acro{FCS}{frame checksum}
+        \acro{FER}{frame error rate}
+	\acro{FPGA}{field programmable gate array}
+	\acro{FTP}{file transfer protocol}
+        \acro{GeRaF}{Geographic Random Forwarding}
+	\acro{GP}{goodput}
+	\acro{GPS}{Global Positioning System}
+	\acro{HF}{high frequency}
+	\acro{IEEE}{Institute of Electrical and Electronics Engineers}
+	\acro{IHP}{Innovations for High Performance Microelectronics}
+	\acro{IP}{Internet Protocol}
+	\acro{ISR}{interrupt service routine}
+	\acro{JTAG}{Joint Test Action Group}
+	\acro{LAN}{local area network}
+	\acro{LED}{light emitting diode}
+	\acro{LOS}{line-of-sight}
+	\acro{LSB}{least significant bit} 
+	\acro{MAC}{medium access control}
+        \acro{MLA}{MAC Layer Architecture}
+        \acro{MLME}{MAC layer management entity}
+	\acro{MS}{milestone}
+	\acro{MSC}{message sequence chart}
+        \acro{MTU}{maximum transmission unit}
+	\acro{NAV}{network allocation vector}
+        \acro{NesC}{Networked embedded systems C}
+	\acro{NIF}{noise-and-interference floor}
+	\acro{NLOS}{non-line-of-sight}
+	\acro{OFDM}{orthogonal frequency-division multiplexing}
+        \acro{ORM}{object-relational mapping}
+	\acro{PER}{packet error rate}
+	\acro{PG1}{Project Group Mobile Communications 1}
+	\acro{PG2}{Project Group Mobile Communications 2}
+	\acro{PHY}{physical}
+        \acro{RBS}{referece brodcast synchronization scheme}
+	\acro{RF}{radio frontend}
+	\acro{RSSI}{received signal strength indicator}
+	\acro{RTS}{request-to-send}
+        \acro{SDF}{selection decode \& forward}
+	\acro{SDL}{Specification and Description Language}
+	\acro{SDR}{software-defined radio}
+	\acro{SIFS}{short inter-frame spacing}
+	\acro{SINR}{signal-to-interference-and-noise ratio}
+	\acro{SORBAS}{Signalion Software Radio Based Prototyping System}
+	\acro{SSH}{secure shell}
+	\acro{SSID}{service set identifier}
+	\acro{Sterm}{\acs{SORBAS} terminal}
+	\acro{TX}{transmission}
+        \acro{TDMA}{Time Division Multiple Access}
+        \acro{TEP}{TinyOS Enhancement Proposal}
+	\acro{UDP}{User Datagram Protocol}
+	\acro{USB}{Universal Serial Bus}
+        \acro{UPMA}{Unified radio Power Management Architecture}
+	\acro{VisualDSP}{Visual Digital Signal Processor}
+	\acro{VMware}{VMware Virtualization Software}
+	\acro{VoIP}{voice over \acs{IP}}
+	\acro{WinTerm}{SORBAS Windows Terminal}
+	\acro{WLAN}{wireless \acs{LAN}}
+        \acro{WMA}{weighted moving average}
+        \acro{WSN}{wireless sensor network}
+\end{acronym}
+
+% vim: set ft=latex

File acronyms.tex

+\chapter{Used Acronyms}
+    \begin{acronym}
+\end{acronym}

File appendixA.tex

+\chapter{What goes in the appendices}
+\label{app:a}
+Any material which impedes the smooth development
+of your presentation, but which is important to justify the results of a
+thesis. Generally it is material that is of too nitty-gritty a level of detail
+for inclusion in the main body of the thesis, but which should be available
+for perusal by the examiners to convince them sufficiently. Examples include
+program listings, immense tables of data, lengthy mathematical proofs or
+derivations, etc. 
+
+\section{Filler Text}
+\Blindtext
+
+
+
+
+% vim: set ft=tex

File appendixB.tex

+\chapter{Further remarks by Prof. Chinneck}
+\label{app:b}
+This appendix contains some remarks which followed the skeletal outline in the
+original article by Prof. Chinneck. I needed to replace several things to make
+them work with this template.
+
+\section{Comments on the Thesis Skeleton}
+Again, the thesis is a formal document designed to address the examiner's two
+main questions. Chapter \ref{chap:relatedwork} and \ref{chap:problemstatement}
+show that you have chosen a good problem, and Chapters
+\ref{chap:contribution1} and \ref{chap:contribution2} show that you solved it.
+Chapters \ref{chap:introduction} and \ref{chap:background} lead the reader
+into the problem, and Chapter \ref{chap:conclusions} highlights the main
+knowledge generated by the whole exercise.
+
+Note also that everything that others did is carefully separated from
+everything that you did. Knowing who did what is important to the examiners.
+Section 4, the problem statement, is the obvious dividing line. That's the
+main reason for putting it in the middle in this formal document.
+
+\section{Getting Started}
+The best way to get started on your thesis is to prepare an extended outline.
+You begin by making up the Table of Contents, listing each section and
+subsection that you propose to include. For each section and subsection, write
+a brief point-form description of the contents of that section. The entire
+outline might be 2 to 5 pages long. Now you and your thesis supervisor should
+carefully review this outline: is there unnecessary material (i.e. not
+directly related to the problem statement)? Then remove. Is there missing
+material? Then add. It is much less painful and more time-efficient to make
+such decisions early, during the outline phase, rather than after you've
+already done a lot of writing which has to be thrown away.  
+
+
+\section{How Long Does it Take to Write a Thesis?}
+Longer than you think. Even after the research itself is all done -- models
+built, calculations complete -- it is wise to allow at least one complete term
+for writing the thesis. It's not the physical act of typing that takes so
+long, it's the fact that writing the thesis requires the complete organization
+of your arguments and results. It's during this formalization of your results
+into a well-organized thesis document capable of withstanding the scrutiny of
+expert examiners that you discover weaknesses. It's fixing those weaknesses
+that takes time.
+
+This is also probably the first time that your supervisor has seen the formal
+expression of concepts that may have been approved previously in an informal
+manner. Now is when you discover any misunderstandings or shortcomings in the
+informal agreements. It takes time to fix these. Students for whom english is
+not the mother tongue may have difficulty in getting ideas across, so that
+numerous revisions are required. And, truth be known, supervisors are
+sometimes not quick at reviewing and returning drafts.
+
+\subsection*{Bottom line:} leave yourself enough time. A rush job has painful consequences
+at the defence\footnote{Template Author's note: in case of a master thesis
+this is not a defence but only a 'final presentation'. In any way, you need to
+present your work and you might get awkward questions, based on the quality of
+your work.}
+
+\section{Tips}
+
+Always keep the reader's backgrounds in mind. Who is your audience? How much
+can you reasonably expect them to know about the subject before picking up
+your thesis? Usually they are pretty knowledgeable about the general problem,
+but they haven't been intimately involved with the details over the last
+couple of years like you have: spell difficult new concepts out clearly. It
+sometimes helps to mentally picture a real person that you know who has the
+appropriate background, and to imagine that you are explaining your ideas
+directly to that person.
+
+Don't make the readers work too hard! This is fundamentally important. You
+know what few questions the examiners need answers for (see above). Choose
+section titles and wordings to clearly give them this information. The harder
+they have to work to ferret out your problem, your defence of the problem,
+your answer to the problem, your conclusions and contributions, the worse mood
+they will be in, and the more likely that your thesis will need major
+revisions.
+
+A corollary of the above: it's impossible to be too clear! Spell things out
+carefully, highlight important parts by appropriate titles etc. There's a huge
+amount of information in a thesis: make sure you direct the readers to the
+answers to the important questions.
+
+Remember that a thesis is not a story: it usually doesn't follow the
+chronology of things that you tried. It's a formal document designed to answer
+only a few major questions.
+
+Avoid using phrases like "Clearly, this is the case..." or "Obviously, it
+follows that ..."; these imply that, if the readers don't understand, then
+they must be stupid. They might not have understood because you explained it
+poorly.
+
+Avoid red flags, claims (like "software is the most important part of a
+computer system") that are really only your personal opinion and not
+substantiated by the literature or the solution you have presented. Examiners
+like to pick on sentences like that and ask questions like, "Can you
+demonstrate that software is the most important part of a computer system?"
+
+\section{A Note on Computer Programs and Other Prototypes}
+The purpose of your thesis is to clearly document an original contribution to
+knowledge. You may develop computer programs, prototypes, or other tools as a
+means of proving your points, but remember, the thesis is not about the tool,
+it is about the contribution to knowledge. Tools such as computer programs are
+fine and useful products, but you can't get an advanced degree just for the
+tool. You must use the tool to demonstrate that you have made an original
+contribution to knowledge; e.g., through its use, or ideas it embodies.
+
+\section{Master's vs. PhD Thesis}
+There are different expectations for Master's theses and for Doctoral theses.
+This difference is not in format but in the significance and level of
+discovery as evidenced by the problem to be solved and the summary of
+contributions; a Doctoral thesis necessarily requires a more difficult problem
+to be solved, and consequently more substantial contributions.
+
+The contribution to knowledge of a Master's thesis can be in the nature of an
+incremental improvement in an area of knowledge, or the application of known
+techniques in a new area. The Ph.D. must be a substantial and innovative
+contribution to knowledge.  
+
+% vim: set ft=tex

File background.tex

+\chapter{Background Information (optional)}
+\label{chap:background}
+A brief section giving background information may be necessary, especially if
+your work spans two or more traditional fields. That means that your readers
+may not have any experience with some of the material needed to follow your
+thesis, so you need to give it to them. A different title than that given
+above is usually better; e.g., "A Brief Review of Frammis Algebra." 
+
+\section{A note from the template-author}
+In a master thesis you might not need a background chapter. Discuss with your
+advisor, whether it is feasible to put background information either in the
+introduction or related-work chapter.
+
+\section{An example of a TikZ image within text}
+This section just demonstrates a coustom-macro for placing figures in the
+text. The source-code for this macro is found in the file '\texttt{macros.tex}'.
+Here is a reference to figure \ref{fig:figure-label2} on the next page.
+
+\Blindtext
+
+\FIG[The caption for the List-of-Figures]{The slightly longer caption,
+containing additional information for the figure itself.}%
+{figure-label2}{htbp}{%
+    \includegraphics[width=0.8\linewidth]{img/Glacier.pdf}
+}
+
+\blindtext
+\blinditemize
+
+% vim: set ft=tex

File conclusions.tex

+\chapter{Conclusions}
+\label{chap:conclusions}
+You generally cover three things in the Conclusions section, and each of these
+usually merits a separate subsection:
+
+\begin{enumerate}
+    \item Conclusions
+    \item Summary of Contributions
+    \item Future Research
+\end{enumerate}
+
+Conclusions are not a rambling summary of the thesis: they are short, concise
+statements of the inferences that you have made because of your work. It helps
+to organize these as short numbered paragraphs, ordered from most to least
+important. All conclusions should be directly related to the research question
+stated in Section 4. Examples:
+
+\begin{enumerate}
+    \item The problem stated in Section 4 has been solved: as shown in Sections ? to
+    ??, an algorithm capable of handling large-scale Zylon problems in reasonable
+    time has been developed.
+    \item The principal mechanism needed in the improved Zylon algorithm is the Grooty mechanism.
+    \item Etc.
+\end{enumerate}
+
+The Summary of Contributions will be much sought and carefully read by the
+examiners. Here you list the contributions of new knowledge that your thesis
+makes. Of course, the thesis itself must substantiate any claims made here.
+There is often some overlap with the Conclusions, but that's okay. Concise
+numbered paragraphs are again best. Organize from most to least important.
+Examples:
+
+\begin{enumerate}
+    \item Developed a much quicker algorithm for large-scale Zylon problems.
+    \item Demonstrated the first use of the Grooty mechanism for Zylon calculations.
+    \item Etc.
+\end{enumerate}
+
+The Future Research subsection is included so that researchers picking up this
+work in future have the benefit of the ideas that you generated while you were
+working on the project. Again, concise numbered paragraphs are usually best. 
+
+% vim: set ft=tex

File contribution1.tex

+\chapter{Your Contribution}
+\label{chap:contribution1}
+This part of the thesis is much more free-form. It may have one or
+several sections and subsections. But it all has only one purpose: to convince
+the examiners that you answered the question or solved the problem that you
+set for yourself in Section 4. So show what you did that is relevant to
+answering the question or solving the problem: if there were blind alleys and
+dead ends, do not include these, unless specifically relevant to the
+demonstration that you answered the thesis question. 
+
+\section{Filler Text}
+\Blindtext
+
+
+
+% vim: set ft=tex

File contribution2.tex

+\chapter{Your other Contribution}
+\label{chap:contribution2}
+This part of the thesis is much more free-form. It may have one or
+several sections and subsections. But it all has only one purpose: to convince
+the examiners that you answered the question or solved the problem that you
+set for yourself in Section 4. So show what you did that is relevant to
+answering the question or solving the problem: if there were blind alleys and
+dead ends, do not include these, unless specifically relevant to the
+demonstration that you answered the thesis question. 
+
+\section{A Note from the Template Author}
+You can span the text, describing your contribution over multiple chapters.
+Again, discuss with your advisor whether this is feasible. But don't annoy
+your advisor by asking him about how to structure your text. Think about what
+you want to say, then create a structure, outline the content of that
+structure and then present it to your advisor. 
+
+\section{Filler Text}
+\Blindtext
+
+% vim: set ft=tex

File duplabels.py

+#!/usr/bin/env python
+# -*- coding: Latin-1 -*-
+
+LABELMATCH = r".*\label{(.*)}.*"
+MESSAGE = "Label '%s' -- (%d, %s), already defined in -- (%d, %s)"
+
+import re
+import fileinput
+
+from glob import glob
+
+texfiles = glob('*.tex')
+file_reader = fileinput.input(texfiles)
+
+labels = dict()
+
+for line in file_reader:
+    match = re.match(LABELMATCH, line)
+    if match != None:
+        label = match.groups()[0]
+        current_file = file_reader.filename()
+        current_line = file_reader.filelineno()
+        if label in labels:
+            old_line, old_file = labels[label]
+            print MESSAGE % (label, current_line, current_file, old_line,
+                    old_file)
+        else:
+            labels[label] = (current_line, current_file)

File erklaerung.tex

+\chapter*{Erklärung der Urheberschaft}
+\vfill
+Hiermit versichere ich, dass ich die vorliegende Diplomarbeit ohne Hilfe
+Dritter und ohne Benutzung anderer als der angegebenen Quellen und Hilfsmittel
+angefertigt habe. Wörtlich oder dem Sinn nach aus anderen Werken entnommene
+Stellen sind unter Angabe der Quellen kenntlich gemacht. Diese Arbeit hat in
+gleicher oder ähnlicher Form noch keiner Prüfungsbehörde vorgelegen.
+
+\par\vfill\vfill\noindent
+\hrulefill\hfill\hrulefill\\
+Ort, Datum  \hfill Unterschrift\\
+
+
+\newpage
+\thispagestyle{empty}
+
+% vim: set ft=tex

File img/Glacier.pdf

Binary file added.

File img/fg-logo.eps

Binary file added.

File img/fg-logo.pdf

Binary file added.

File img/mla-x-mac.pdf

Binary file added.

File img/mla-x-mac.tex

+%\documentclass{article}
+%\usepackage[a4paper, landscape, scale=0.7]{geometry}
+%\usepackage[T1]{fontenc}
+%\usepackage{mathptmx}
+%\usepackage[scaled=0.9]{helvet}
+%\usepackage{ascii}
+%\usepackage{eulervm}
+%\usepackage{amsmath}
+%
+%\usepackage{tikz}
+%\input{tikzsetup}
+%
+%\begin{document}
+%\centering
+\begin{tikzpicture}
+\tikzstyle{every node}=[font=\sffamily\footnotesize]
+
+\node[layer, minimum width=9cm] (Core) { TinyOS Radio Core };
+
+\node[layer, matrix, above=of Core, 
+      column sep=5mm, row sep=30mm, inner sep=5mm,
+      minimum width=9cm, nodes={reset, component}] (MacC) {
+  \node (SenderC) {XmacSenderC}; & & \node (ReceiverC) {XmacReceiverC}; \\
+  & \node (ChannelPollerC) {ChannelPollerC}; & \\
+};
+
+\node[layer, above=40mm of ChannelPollerC] (MacControlC) { MacControlC };
+
+\node[layer, matrix, row sep=5mm, inner sep=2mm, nodes={reset, component}, 
+  left=15mm of SenderC] (SenderDetail) {
+  \node (XmacSenderP) { XmacSenderP }; \\
+  \node (PreambleSenderC) { PreambleSenderC }; \\
+};
+
+\node[layer, matrix, row sep=5mm, inner sep=2mm, nodes={reset, component}, 
+  right=10mm of ReceiverC] (ReceiverDetail) {
+  \node (LplListenerC) { FixedSleepLplListenerC }; \\
+  \node (RecvFilterP) { XmacReceiverFilterP }; \\
+};
+
+
+\coordinate[above=15mm of MacControlC] (Inputs) {};
+\draw ([xshift=0mm] SenderC.south) coordinate (sout1) {};
+\draw ([xshift=-5mm] SenderC.south) coordinate (sout2) {};
+
+\draw ([xshift=0mm] ReceiverC.south) coordinate (rout1) {};
+\draw ([xshift=5mm] ReceiverC.south) coordinate (rout2) {};
+
+\coordinate[above=15mm of XmacSenderP] (xsin) {};
+\coordinate[above=15mm of LplListenerC] (fslin) {};
+
+\draw ([xshift=5mm] XmacSenderP.south) coordinate (xsout1) {};
+\draw ([xshift=-5mm] XmacSenderP.south) coordinate (xsout2) {};
+\draw ([xshift=10mm] XmacSenderP.east) coordinate (xsout3) {};
+
+\draw ([xshift=8mm] LplListenerC.south) coordinate (fslout1) {};
+\draw (LplListenerC.south) coordinate (fslout2) {};
+\draw ([xshift=-8mm] LplListenerC.south) coordinate (fslout3) {};
+
+\coordinate[below=27mm of PreambleSenderC] (psout) {};
+\coordinate[below=27mm of RecvFilterP] (rcvout) {};
+
+\draw ([xshift=-5mm] PreambleSenderC.south) coordinate (psout1) {};
+\draw ([xshift=5mm] PreambleSenderC.south) coordinate (psout2) {};
+
+\draw (RecvFilterP.south) coordinate (rcvout2) {};
+\draw ([xshift=-8mm] RecvFilterP.south) coordinate (rcvout3) {};
+\draw ([xshift=8mm] RecvFilterP.south) coordinate (rcvout1) {};
+
+
+\draw[->] (Inputs) -- (MacControlC) node [midway, fill=white] { LowPowerListening };
+\draw[->] (MacControlC) -- (MacControlC |- ChannelPollerC.north);
+\draw[->] (SenderC) -| ([xshift=-5mm] ChannelPollerC.north);
+%\draw[->] (ReceiverC) -| ([xshift=5mm] ChannelPollerC.north);
+\draw[->] ([xshift=-5mm] ReceiverC.south) |- (ChannelPollerC.east) 
+           node [pos=0.29, fill=white, rotate=90] { ChannelPoller };
+\node[fill=white] at ([yshift=-25mm] MacControlC.south) (LPL) { LowPowerListening };
+\draw[->] (ChannelPollerC.south) -- (MacControlC |- Core.north) 
+           node [pos=0.65, fill=white] { ChannelMonitor };
+
+\draw[->] (Inputs -| SenderC) -- (SenderC) node [midway, fill=white] { AsyncSend };
+\draw[->] (sout1) -- (sout1 |- Core.north) node [pos=0.35, fill=white, rotate=90] { RadioPwrCtrl };
+\draw[->] (sout2) -- (sout2 |- Core.north) node [pos=0.35, fill=white, rotate=90] { AsyncSend };
+
+\draw[->] (xsin) -- (XmacSenderP) node [midway, fill=white] { AsyncSend };
+\draw[->] (xsout1) -- (xsout1 |- PreambleSenderC.north);
+\draw[->] (xsout2) -- (xsout2 |- PreambleSenderC.north);
+\draw[->] (psout1) -- (psout1 |- psout) node [midway, fill=white, rotate=90] { AsyncSend };
+\draw[->] (psout2) -- (psout2 |- psout) node [midway, fill=white, rotate=90] { RadioPwrCtrl };
+\draw[->] (XmacSenderP.east) -- (xsout3) -- (xsout3 |- psout)
+          node[pos=0.55, fill=white, rotate=90] { LowPowerListening };
+
+
+\draw[->] (Inputs -| ReceiverC) -- (ReceiverC) node [midway, fill=white] { AsyncReceive };
+\draw[->] (rout1) -- (rout1 |- Core.north) node [pos=0.35, fill=white, rotate=90] { RadioPwrCtrl };
+\draw[->] (rout2) -- (rout2 |- Core.north) node [pos=0.35, fill=white, rotate=90] { AsyncReceive };
+
+\draw[->] (fslin) -- (LplListenerC) node [midway, fill=white] { AsyncReceive };
+\draw[->] (fslout1) -- (fslout1 |- RecvFilterP.north);
+\draw[->] (fslout2) -- (fslout2 |- RecvFilterP.north);
+\draw[->] (fslout3) -- (fslout3 |- RecvFilterP.north);
+\draw[->] (rcvout1) -- (rcvout1 |- rcvout) node [midway, fill=white, rotate=90] { AsyncReceive };
+\draw[->] (rcvout2) -- (rcvout2 |- rcvout) node [midway, fill=white, rotate=90] { RadioPwrCtrl };
+\draw[->] (rcvout3) -- (rcvout3 |- rcvout) node [midway, fill=white, rotate=90] { ChannelPoller };
+
+\draw[->] (Inputs -| ReceiverC) -- (ReceiverC) node [midway, fill=white] { AsyncReceive };
+
+\draw[dashed] (SenderC.north west) -- (SenderDetail.north east);
+\draw[dashed] (SenderC.south west) -- (SenderDetail.south east);
+
+\draw[dashed] (ReceiverC.north east) -- (ReceiverDetail.north west);
+\draw[dashed] (ReceiverC.south east) -- (ReceiverDetail.south west);
+
+\end{tikzpicture}
+%\end{document}

File img/tikzsetup.tex

+\usetikzlibrary{positioning}
+\usetikzlibrary{automata}
+\usetikzlibrary{arrows}
+\usetikzlibrary{matrix}
+\usetikzlibrary{fit}
+\usetikzlibrary{calc}
+\usetikzlibrary{chains}
+\usetikzlibrary{patterns}
+\usetikzlibrary{shadows}
+\usetikzlibrary{shapes.geometric}
+\usetikzlibrary{shapes.symbols}
+\usetikzlibrary{shapes.arrows}
+\usetikzlibrary{shapes.callouts}
+\usetikzlibrary{decorations.shapes}
+\usetikzlibrary{decorations.pathreplacing}
+\usetikzlibrary{decorations.pathmorphing}
+
+%%%% Define TikZ styles
+%% Generic styles for pictures, nodes, ...
+\tikzstyle{every picture}=[>=latex', double distance=2pt]
+\tikzstyle{every node}=[font=\sffamily\small]
+
+%% Utilities
+\tikzstyle{reset}=[inner sep=1ex, minimum width=0mm, anchor=center]
+
+%% Macros for MLA components
+\tikzstyle{square}=[minimum width=8mm, minimum height=8mm]
+\tikzstyle{component}=[draw, rectangle, rounded corners]
+\tikzstyle{layer}=[component, drop shadow, fill=white]
+
+%%%%% Setting up some layers
+\pgfdeclarelayer{background}
+\pgfdeclarelayer{foreground}
+\pgfsetlayers{background,main,foreground}
+

File img/uni-logo-woname.eps

+%!PS-Adobe-3.0 EPSF-3.0
+%%Title: (logo.fh7 \(Konvertiert\)-1)
+%%Version: 1 3
+%%Creator: Adobe Acrobat 7.0
+%%CreationDate: 14:47:06 03/07/05
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%ADO_ContainsXMP: MainFirst
+%%BoundingBox: 0 31 88 147
+%%HiResBoundingBox: 0.0 30.6023 87.5997 147.002
+%%Pages: 0
+%%DocumentProcessColors: Cyan Magenta Black
+%%DocumentSuppliedResources:
+%%+ procset (Adobe Acrobat - PDF operators) 1.2 0
+%%EndComments
+%%BeginProlog
+%%EndProlog
+%%BeginSetup
+%ADOPrintSettings: L2 W0 VM op crd os scsa T h ef bg ucr sf ef r b fa pr seps ttf hb EF t2 irt Drucker-/PostScript-Farbmanagement 0
+
+%%Copyright: Copyright 1993,2001 Adobe Systems Incorporated. All Rights Reserved.
+systemdict /languagelevel known
+{ systemdict /languagelevel get 1 eq }
+{ true }
+ifelse
+{
+initgraphics /Helvetica findfont 18 scalefont setfont
+72 600 moveto (Error: This application does not support) dup show
+72 580 moveto (printing to a PostScript Language Level 1 printer.) dup show
+exch = =
+/Times-Roman findfont 16 scalefont setfont
+72 500 moveto (As a workaround, try selecting Print As Image from) show
+72 480 moveto (the Advanced Print dialog.) show
+showpage
+quit
+}
+if
+%%EndResource
+/currentpacking where{pop currentpacking true setpacking}if
+%%BeginResource: procset pdfvars 6.0 1
+%%Copyright: Copyright 1987-2002 Adobe Systems Incorporated. All Rights Reserved.
+%%Title: definition of dictionary of variables used by PDF & PDFText procsets
+userdict /PDF 162 dict put
+userdict /PDFVars 89 dict dup begin put
+/docSetupDone false def
+/InitAll 0 def
+/TermAll 0 def
+/DocInitAll 0 def
+/DocTermAll 0 def
+/_pdfEncodings 2 array def
+/_pdf_str1 1 string def
+/_pdf_i 0 def
+/_pdf_na 0 def
+/_pdf_showproc 0 def
+/_italMtx [1 0 .212557 1 0 0] def
+/_italMtx_WMode1 [1 -.212557 0 1 0 0] def
+/_italMtxType0 [1 0 .1062785 1 0 0] def
+/_italMtx_WMode1Type0 [1 -.1062785 0 1 0 0] def
+/_basefont 0 def
+/_basefonto 0 def
+/_pdf_oldCIDInit null def
+/_pdf_FontDirectory 30 dict def
+/_categories 10 dict def
+/_sa? true def
+/_ColorSep5044? false def
+/nulldict 0 dict def
+/_processColors 0 def
+/overprintstack null def
+/_defaulttransfer currenttransfer def
+/_defaultflatness currentflat def
+/_defaulthalftone null def
+/_defaultcolortransfer null def
+/_defaultblackgeneration null def
+/_defaultundercolorremoval null def
+/_defaultcolortransfer null def
+PDF begin
+[/c/cs/cm/d/d0/f/h/i/j/J/l/m/M/n/q/Q/re/ri/S/sc/sh/Tf/w/W
+/applyInterpFunc/applystitchFunc/domainClip/encodeInput
+/initgs/int/limit/rangeClip
+/defineRes/undefineRes/findRes/setSA/pl
+/? /! /| /: /+ /GetGlyphDirectory
+/pdf_flushFilters /pdf_readstring /pdf_dictOp /pdf_image /pdf_maskedImage
+/pdf_shfill /pdf_sethalftone
+] {null def} bind forall
+end
+end
+%%EndResource
+PDFVars begin PDF begin
+%%BeginResource: procset pdfutil 6.0 1
+%%Copyright: Copyright 1993-2001 Adobe Systems Incorporated. All Rights Reserved.
+%%Title: Basic utilities used by other PDF procsets
+/bd {bind def} bind def
+/ld {load def} bd
+/bld {
+dup length dict begin
+{ null def } forall
+bind
+end
+def
+} bd
+/dd { PDFVars 3 1 roll put } bd
+/xdd { exch dd } bd
+/Level2?
+systemdict /languagelevel known
+{ systemdict /languagelevel get 2 ge } { false } ifelse
+def
+/Level1? Level2? not def
+/Level3?
+systemdict /languagelevel known
+{systemdict /languagelevel get 3 eq } { false } ifelse
+def
+/getifknown {
+2 copy known { get true } { pop pop false } ifelse
+} bd
+/here {
+currentdict exch getifknown
+} bd
+/isdefined? { where { pop true } { false } ifelse } bd
+%%EndResource
+%%BeginResource: procset pdf 6.0 1
+%%Copyright: Copyright 1998-2003 Adobe Systems Incorporated. All Rights Reserved.
+%%Title: General operators for PDF, common to all Language Levels.
+/cm { matrix astore concat } bd
+/d /setdash ld
+/f /fill ld
+/h /closepath ld
+/i {dup 0 eq {pop _defaultflatness} if setflat} bd
+/j /setlinejoin ld
+/J /setlinecap ld
+/M /setmiterlimit ld
+/n /newpath ld
+/S /stroke ld
+/w /setlinewidth ld
+/W /clip ld
+/sg /setgray ld
+/initgs {
+0 setgray
+[] 0 d
+0 j
+0 J
+10 M
+1 w
+false setSA
+/_defaulttransfer load settransfer
+0 i
+/RelativeColorimetric ri
+newpath
+} bd
+/int {
+dup 2 index sub 3 index 5 index sub div 6 -2 roll sub mul
+exch pop add exch pop
+} bd
+/limit {
+dup 2 index le { exch } if pop
+dup 2 index ge { exch } if pop
+} bd
+/domainClip {
+Domain aload pop 3 2 roll
+limit
+} [/Domain] bld
+/applyInterpFunc {
+0 1 DimOut 1 sub
+{
+dup C0 exch get exch
+dup C1 exch get exch
+3 1 roll
+1 index sub
+3 index
+N exp mul add
+exch
+currentdict /Range_lo known
+{
+dup Range_lo exch get exch
+Range_hi exch get
+3 2 roll limit
+}
+{
+pop
+}
+ifelse
+exch
+} for
+pop
+} [/DimOut /C0 /C1 /N /Range_lo /Range_hi] bld
+/encodeInput {
+NumParts 1 sub
+0 1 2 index
+{
+dup Bounds exch get
+2 index gt
+{ exit }
+{ dup
+3 index eq
+{ exit }
+{ pop } ifelse
+} ifelse
+} for
+3 2 roll pop
+dup Bounds exch get exch
+dup 1 add Bounds exch get exch
+2 mul
+dup Encode exch get exch
+1 add Encode exch get
+int
+} [/NumParts /Bounds /Encode] bld
+/rangeClip {
+exch dup Range_lo exch get
+exch Range_hi exch get
+3 2 roll
+limit
+} [/Range_lo /Range_hi] bld
+/applyStitchFunc {
+Functions exch get exec
+currentdict /Range_lo known {
+0 1 DimOut 1 sub {
+DimOut 1 add -1 roll
+rangeClip
+} for
+} if
+} [/Functions /Range_lo /DimOut] bld
+/pdf_flushfilters
+{
+aload length
+{ dup status
+1 index currentfile ne and
+{ dup flushfile closefile }
+{ pop }
+ifelse
+} repeat
+} bd
+/pdf_readstring
+{
+1 index dup length 1 sub get
+exch readstring pop
+exch pdf_flushfilters
+} bind def
+/pdf_dictOp
+{
+3 2 roll
+10 dict copy
+begin
+_Filters dup length 1 sub get def
+currentdict exch exec
+_Filters pdf_flushfilters
+end
+} [/_Filters] bld
+/pdf_imagemask {{imagemask} /DataSource pdf_dictOp} bd
+/pdf_shfill {{sh} /DataSource pdf_dictOp} bd
+/pdf_sethalftone {{sethalftone} /Thresholds pdf_dictOp} bd
+/masks [ 2#10000000
+2#11000000
+2#11100000
+2#11110000
+2#11111000
+2#11111100
+2#11111110
+2#11111111 ] def
+/addNBits
+{
+/numBits exch def
+/byte exch def
+OutBitOffset numBits add 8 gt
+{
+byte OutBitOffset 8 sub bitshift
+OutBuffer OutByteIndex get or
+OutBuffer OutByteIndex 3 -1 roll put
+/OutByteIndex OutByteIndex 1 add def
+/bitsDoneSoFar OutBitOffset def
+/OutBitOffset numBits 8 OutBitOffset sub sub def
+OutBitOffset 0 gt
+{
+byte bitsDoneSoFar bitshift
+masks numBits bitsDoneSoFar sub get and
+OutBuffer OutByteIndex 3 -1 roll put
+} if
+}
+{
+byte masks numBits 1 sub get and
+OutBitOffset neg bitshift
+OutBuffer OutByteIndex get or
+OutBuffer OutByteIndex 3 -1 roll put
+/OutBitOffset OutBitOffset numBits add def
+OutBitOffset 8 eq
+{
+/OutBitOffset 0 def
+/OutByteIndex OutByteIndex 1 add def
+} if
+} ifelse
+} bind def
+/DevNNFilter
+{
+/InBuffer Width NumComps mul BitsPerComponent mul 7 add 8 idiv string def
+AllSource InBuffer readstring pop pop
+/outlen Width NewNumComps mul BitsPerComponent mul 7 add 8 idiv def
+/OutBuffer outlen string def
+0 1 outlen 1 sub { OutBuffer exch 0 put } for
+/InByteIndex 0 def
+/InBitOffset 0 def
+/OutByteIndex 0 def
+/OutBitOffset 0 def
+/KeepArray NumComps array def
+0 1 NumComps 1 sub { KeepArray exch true put } for
+DevNNones { KeepArray exch false put } forall
+Width {
+KeepArray
+{
+{
+/bitsLeft BitsPerComponent def
+{
+bitsLeft 0 le { exit } if
+/bitsToDo 8 InBitOffset sub dup bitsLeft gt { pop bitsLeft } if def
+InBuffer InByteIndex get
+InBitOffset bitshift
+bitsToDo addNBits
+/bitsLeft bitsLeft bitsToDo sub def
+InBitOffset bitsToDo add
+dup 8 mod /InBitOffset exch def
+8 idiv InByteIndex add /InByteIndex exch def
+} loop
+}
+{
+InBitOffset BitsPerComponent add
+dup 8 mod /InBitOffset exch def
+8 idiv InByteIndex add /InByteIndex exch def
+}
+ifelse
+}
+forall
+} repeat
+OutBuffer
+} bd
+/pdf_image
+{
+20 dict copy
+begin
+/UnusedNones where { /UnusedNones get}{false} ifelse
+{
+/NumComps Decode length 2 div cvi def
+/OrigDecode Decode def
+/NumNones DevNNones length def
+/NewNumComps NumComps NumNones sub def
+/Decode NewNumComps 2 mul cvi array def
+/devNNindx 0 def
+/decIndx 0 def
+/cmpIndx 0 def
+NumComps {
+cmpIndx DevNNones devNNindx get eq
+{
+/devNNindx devNNindx 1 add dup NumNones eq {pop 0} if def
+}
+{
+Decode decIndx OrigDecode cmpIndx 2 mul get put
+Decode decIndx 1 add OrigDecode cmpIndx 2 mul 1 add get put
+/decIndx decIndx 2 add def
+} ifelse
+/cmpIndx cmpIndx 1 add def
+} repeat
+_Filters dup length 1 sub get /AllSource exch def
+/DataSource { DevNNFilter } def
+}
+{ _Filters dup length 1 sub get /DataSource exch def }
+ifelse
+currentdict image
+_Filters pdf_flushfilters
+end
+} bd
+/pdf_maskedImage
+{
+10 dict copy begin
+/miDict currentdict def
+/DataDict DataDict 10 dict copy def
+DataDict begin
+/DataSource
+_Filters dup length 1 sub get
+def
+miDict image
+_Filters pdf_flushfilters
+end
+miDict /InterleaveType get 3 eq
+{ MaskDict /DataSource get dup type /filetype eq { closefile } { pop } ifelse }
+if
+end
+} [/miDict /DataDict /_Filters] bld
+/RadialShade {
+40 dict begin
+/background exch def
+/ext1 exch def
+/ext0 exch def
+/BBox exch def
+/r2 exch def
+/c2y exch def
+/c2x exch def
+/r1 exch def
+/c1y exch def
+/c1x exch def
+/rampdict exch def
+gsave
+BBox length 0 gt {
+newpath
+BBox 0 get BBox 1 get moveto
+BBox 2 get BBox 0 get sub 0 rlineto
+0 BBox 3 get BBox 1 get sub rlineto
+BBox 2 get BBox 0 get sub neg 0 rlineto
+closepath
+clip
+newpath
+} if
+c1x c2x eq
+{
+c1y c2y lt {/theta 90 def}{/theta 270 def} ifelse
+}
+{
+/slope c2y c1y sub c2x c1x sub div def
+/theta slope 1 atan def
+c2x c1x lt c2y c1y ge and { /theta theta 180 sub def} if
+c2x c1x lt c2y c1y lt and { /theta theta 180 add def} if
+}
+ifelse
+gsave
+clippath
+c1x c1y translate
+theta rotate
+-90 rotate
+{ pathbbox } stopped
+{ 0 0 0 0 } if
+/yMax exch def
+/xMax exch def
+/yMin exch def
+/xMin exch def
+grestore
+xMax xMin eq yMax yMin eq or
+{
+grestore
+end
+}
+{
+/max { 2 copy gt { pop } {exch pop} ifelse } bind def
+/min { 2 copy lt { pop } {exch pop} ifelse } bind def
+rampdict begin
+40 dict begin
+background length 0 gt { background sssetbackground gsave clippath fill grestore } if
+gsave
+c1x c1y translate
+theta rotate
+-90 rotate
+/c2y c1x c2x sub dup mul c1y c2y sub dup mul add sqrt def
+/c1y 0 def
+/c1x 0 def
+/c2x 0 def
+ext0 {
+0 getrampcolor
+c2y r2 add r1 sub 0.0001 lt
+{
+c1x c1y r1 360 0 arcn
+pathbbox
+/aymax exch def
+/axmax exch def
+/aymin exch def
+/axmin exch def
+/bxMin xMin axmin min def
+/byMin yMin aymin min def
+/bxMax xMax axmax max def
+/byMax yMax aymax max def
+bxMin byMin moveto
+bxMax byMin lineto
+bxMax byMax lineto
+bxMin byMax lineto
+bxMin byMin lineto
+eofill
+}
+{
+c2y r1 add r2 le
+{
+c1x c1y r1 0 360 arc
+fill
+}
+{
+c2x c2y r2 0 360 arc fill
+r1 r2 eq
+{
+/p1x r1 neg def
+/p1y c1y def
+/p2x r1 def
+/p2y c1y def
+p1x p1y moveto p2x p2y lineto p2x yMin lineto p1x yMin lineto
+fill
+}
+{
+/AA r2 r1 sub c2y div def
+AA -1 eq
+{ /theta 89.99 def}
+{ /theta AA 1 AA dup mul sub sqrt div 1 atan def}
+ifelse
+/SS1 90 theta add dup sin exch cos div def
+/p1x r1 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def
+/p1y p1x SS1 div neg def
+/SS2 90 theta sub dup sin exch cos div def
+/p2x r1 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def
+/p2y p2x SS2 div neg def
+r1 r2 gt
+{
+/L1maxX p1x yMin p1y sub SS1 div add def
+/L2maxX p2x yMin p2y sub SS2 div add def
+}
+{
+/L1maxX 0 def
+/L2maxX 0 def
+}ifelse
+p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto
+L1maxX L1maxX p1x sub SS1 mul p1y add lineto
+fill
+}
+ifelse
+}
+ifelse
+} ifelse
+} if
+c1x c2x sub dup mul
+c1y c2y sub dup mul
+add 0.5 exp
+0 dtransform
+dup mul exch dup mul add 0.5 exp 72 div
+0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
+72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
+1 index 1 index lt { exch } if pop
+/hires exch def
+hires mul
+/numpix exch def
+/numsteps NumSamples def
+/rampIndxInc 1 def
+/subsampling false def
+numpix 0 ne
+{
+NumSamples numpix div 0.5 gt
+{
+/numsteps numpix 2 div round cvi dup 1 le { pop 2 } if def
+/rampIndxInc NumSamples 1 sub numsteps div def
+/subsampling true def
+} if
+} if
+/xInc c2x c1x sub numsteps div def
+/yInc c2y c1y sub numsteps div def
+/rInc r2 r1 sub numsteps div def
+/cx c1x def
+/cy c1y def
+/radius r1 def
+newpath
+xInc 0 eq yInc 0 eq rInc 0 eq and and
+{
+0 getrampcolor
+cx cy radius 0 360 arc
+stroke
+NumSamples 1 sub getrampcolor
+cx cy radius 72 hires div add 0 360 arc
+0 setlinewidth
+stroke
+}
+{
+0
+numsteps
+{
+dup
+subsampling { round } if
+getrampcolor
+cx cy radius 0 360 arc
+/cx cx xInc add def
+/cy cy yInc add def
+/radius radius rInc add def
+cx cy radius 360 0 arcn
+eofill
+rampIndxInc add
+}
+repeat
+pop
+} ifelse
+ext1 {
+c2y r2 add r1 lt
+{
+c2x c2y r2 0 360 arc
+fill
+}
+{
+c2y r1 add r2 sub 0.0001 le
+{
+c2x c2y r2 360 0 arcn
+pathbbox
+/aymax exch def
+/axmax exch def
+/aymin exch def
+/axmin exch def
+/bxMin xMin axmin min def
+/byMin yMin aymin min def
+/bxMax xMax axmax max def
+/byMax yMax aymax max def
+bxMin byMin moveto
+bxMax byMin lineto
+bxMax byMax lineto
+bxMin byMax lineto
+bxMin byMin lineto
+eofill
+}
+{
+c2x c2y r2 0 360 arc fill
+r1 r2 eq
+{
+/p1x r2 neg def
+/p1y c2y def
+/p2x r2 def
+/p2y c2y def
+p1x p1y moveto p2x p2y lineto p2x yMax lineto p1x yMax lineto
+fill
+}
+{
+/AA r2 r1 sub c2y div def
+AA -1 eq
+{ /theta 89.99 def}
+{ /theta AA 1 AA dup mul sub sqrt div 1 atan def}
+ifelse
+/SS1 90 theta add dup sin exch cos div def
+/p1x r2 SS1 SS1 mul SS1 SS1 mul 1 add div sqrt mul neg def
+/p1y c2y p1x SS1 div sub def
+/SS2 90 theta sub dup sin exch cos div def
+/p2x r2 SS2 SS2 mul SS2 SS2 mul 1 add div sqrt mul def
+/p2y c2y p2x SS2 div sub def
+r1 r2 lt
+{
+/L1maxX p1x yMax p1y sub SS1 div add def
+/L2maxX p2x yMax p2y sub SS2 div add def
+}
+{
+/L1maxX 0 def
+/L2maxX 0 def
+}ifelse
+p1x p1y moveto p2x p2y lineto L2maxX L2maxX p2x sub SS2 mul p2y add lineto
+L1maxX L1maxX p1x sub SS1 mul p1y add lineto
+fill
+}
+ifelse
+}
+ifelse
+} ifelse
+} if
+grestore
+grestore
+end
+end
+end
+} ifelse
+} bd
+/GenStrips {
+40 dict begin
+/background exch def
+/ext1 exch def
+/ext0 exch def
+/BBox exch def
+/y2 exch def
+/x2 exch def
+/y1 exch def
+/x1 exch def
+/rampdict exch def
+gsave
+BBox length 0 gt {
+newpath
+BBox 0 get BBox 1 get moveto
+BBox 2 get BBox 0 get sub 0 rlineto
+0 BBox 3 get BBox 1 get sub rlineto
+BBox 2 get BBox 0 get sub neg 0 rlineto
+closepath
+clip
+newpath
+} if
+x1 x2 eq
+{
+y1 y2 lt {/theta 90 def}{/theta 270 def} ifelse
+}
+{
+/slope y2 y1 sub x2 x1 sub div def
+/theta slope 1 atan def
+x2 x1 lt y2 y1 ge and { /theta theta 180 sub def} if
+x2 x1 lt y2 y1 lt and { /theta theta 180 add def} if
+}
+ifelse
+gsave
+clippath
+x1 y1 translate
+theta rotate
+{ pathbbox } stopped
+{ 0 0 0 0 } if
+/yMax exch def
+/xMax exch def
+/yMin exch def
+/xMin exch def
+grestore
+xMax xMin eq yMax yMin eq or
+{
+grestore
+end
+}
+{
+rampdict begin
+20 dict begin
+background length 0 gt { background sssetbackground gsave clippath fill grestore } if
+gsave
+x1 y1 translate
+theta rotate
+/xStart 0 def
+/xEnd x2 x1 sub dup mul y2 y1 sub dup mul add 0.5 exp def
+/ySpan yMax yMin sub def
+/numsteps NumSamples def
+/rampIndxInc 1 def
+/subsampling false def
+xStart 0 transform
+xEnd 0 transform
+3 -1 roll
+sub dup mul
+3 1 roll
+sub dup mul
+add 0.5 exp 72 div
+0 72 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
+72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt
+1 index 1 index lt { exch } if pop
+mul
+/numpix exch def
+numpix 0 ne
+{
+NumSamples numpix div 0.5 gt
+{
+/numsteps numpix 2 div round cvi dup 1 le { pop 2 } if def
+/rampIndxInc NumSamples 1 sub numsteps div def
+/subsampling true def
+} if
+} if
+ext0 {
+0 getrampcolor
+xMin xStart lt
+{ xMin yMin xMin neg ySpan rectfill } if
+} if
+/xInc xEnd xStart sub numsteps div def
+/x xStart def
+0
+numsteps
+{
+dup
+subsampling { round } if
+getrampcolor
+x yMin xInc ySpan rectfill
+/x x xInc add def
+rampIndxInc add
+}
+repeat
+pop
+ext1 {
+xMax xEnd gt
+{ xEnd yMin xMax xEnd sub ySpan rectfill } if
+} if
+grestore
+grestore
+end
+end
+end
+} ifelse
+} bd
+/currentdistillerparams where { pop currentdistillerparams /CoreDistVersion get 5000 lt}{true}ifelse
+{
+/PDFMark5 {cleartomark} bd
+}
+{
+/PDFMark5 {pdfmark} bd
+}ifelse
+/ReadByPDFMark5
+{
+2 dict begin
+/makerString exch def string /tmpString exch def
+{
+currentfile tmpString readline pop
+makerString anchorsearch
+{
+pop pop cleartomark exit
+}
+{
+3 copy /PUT PDFMark5 pop 2 copy (\n) /PUT PDFMark5
+} ifelse
+}loop
+end
+}bd
+%%EndResource
+%%BeginResource: procset pdflev2 6.0 1
+%%Copyright: Copyright 1987-2001,2003 Adobe Systems Incorporated. All Rights Reserved.
+%%Title: PDF operators, with code specific for Level 2
+/docinitialize {
+PDF begin
+/_defaulthalftone currenthalftone dd
+/_defaultblackgeneration currentblackgeneration dd
+/_defaultundercolorremoval currentundercolorremoval dd
+/_defaultcolortransfer [currentcolortransfer] dd
+/_defaulttransfer currenttransfer dd
+end
+PDFVars /docSetupDone true put
+} bd
+/initialize {
+PDFVars /docSetupDone get {
+_defaulthalftone sethalftone
+/_defaultblackgeneration load setblackgeneration
+/_defaultundercolorremoval load setundercolorremoval
+_defaultcolortransfer aload pop setcolortransfer
+} if
+false setoverprint
+} bd
+/terminate { } bd
+/c /curveto ld
+/cs /setcolorspace ld
+/l /lineto ld
+/m /moveto ld
+/q /gsave ld
+/Q /grestore ld
+/sc /setcolor ld
+/setSA/setstrokeadjust ld
+/re {
+4 2 roll m
+1 index 0 rlineto
+0 exch rlineto
+neg 0 rlineto
+h
+} bd
+/concattransferfuncs {
+[ 3 1 roll /exec load exch /exec load ] cvx
+} bd
+/concatandsettransfer {
+/_defaulttransfer load concattransferfuncs settransfer
+} bd
+/concatandsetcolortransfer {
+_defaultcolortransfer aload pop
+8 -1 roll 5 -1 roll concattransferfuncs 7 1 roll
+6 -1 roll 4 -1 roll concattransferfuncs 5 1 roll
+4 -1 roll 3 -1 roll concattransferfuncs 3 1 roll
+concattransferfuncs
+setcolortransfer
+} bd
+/defineRes/defineresource ld
+/undefineRes/undefineresource ld
+/findRes/findresource ld
+currentglobal
+true systemdict /setglobal get exec
+[/Function /ExtGState /Form /Shading /FunctionDictionary /MadePattern /PatternPrototype /DataSource /Image]
+{ /Generic /Category findresource dup length dict copy /Category defineresource pop }
+forall
+systemdict /setglobal get exec
+/ri
+{
+/findcolorrendering isdefined?
+{
+mark exch
+findcolorrendering
+counttomark 2 eq
+{ type /booleantype eq
+{ dup type /nametype eq
+{ dup /ColorRendering resourcestatus
+{ pop pop
+dup /DefaultColorRendering ne
+{
+/ColorRendering findresource
+setcolorrendering
+} if
+} if
+} if
+} if
+} if
+cleartomark
+}
+{ pop
+} ifelse
+} bd
+/knownColorants? {
+pop false
+} bd
+/getrampcolor {
+cvi
+/indx exch def
+0 1 NumComp 1 sub {
+dup
+Samples exch get
+dup type /stringtype eq { indx get } if
+exch
+Scaling exch get aload pop
+3 1 roll
+mul add
+} for
+setcolor
+} bd
+/sssetbackground { aload pop setcolor } bd
+%%EndResource
+%%BeginResource: procset pdftext 6.0 1
+%%Copyright: Copyright 1987-2001,2003 Adobe Systems Incorporated. All Rights Reserved.
+%%Title: Text operators for PDF
+PDF /PDFText 78 dict dup begin put
+/docinitialize
+{
+/resourcestatus where {
+pop
+/CIDParams /ProcSet resourcestatus {
+pop pop
+false /CIDParams /ProcSet findresource /SetBuildCompatible get exec
+} if
+} if
+PDF begin
+PDFText /_pdfDefineIdentity-H known
+{ PDFText /_pdfDefineIdentity-H get exec}
+if
+end
+} bd
+/initialize {
+PDFText begin
+} bd
+/terminate { end } bd
+Level2?
+{
+/_safeput
+{
+3 -1 roll load 3 1 roll put
+}
+bd
+}
+{
+/_safeput
+{
+2 index load dup dup length exch maxlength ge
+{ dup length 5 add dict copy
+3 index xdd
+}
+{ pop }
+ifelse
+3 -1 roll load 3 1 roll put
+}
+bd
+}
+ifelse
+/pdf_has_composefont? systemdict /composefont known def
+/CopyFont {
+{
+1 index /FID ne 2 index /UniqueID ne and
+{ def } { pop pop } ifelse
+} forall
+} bd
+/Type0CopyFont
+{
+exch
+dup length dict
+begin
+CopyFont
+[
+exch
+FDepVector
+{
+dup /FontType get 0 eq
+{
+1 index Type0CopyFont
+/_pdfType0 exch definefont
+}
+{
+/_pdfBaseFont exch
+2 index exec
+}
+ifelse
+exch
+}
+forall
+pop
+]
+/FDepVector exch def
+currentdict
+end
+} bd
+Level2? {currentglobal true setglobal} if
+/cHexEncoding
+[/c00/c01/c02/c03/c04/c05/c06/c07/c08/c09/c0A/c0B/c0C/c0D/c0E/c0F/c10/c11/c12
+/c13/c14/c15/c16/c17/c18/c19/c1A/c1B/c1C/c1D/c1E/c1F/c20/c21/c22/c23/c24/c25
+/c26/c27/c28/c29/c2A/c2B/c2C/c2D/c2E/c2F/c30/c31/c32/c33/c34/c35/c36/c37/c38
+/c39/c3A/c3B/c3C/c3D/c3E/c3F/c40/c41/c42/c43/c44/c45/c46/c47/c48/c49/c4A/c4B
+/c4C/c4D/c4E/c4F/c50/c51/c52/c53/c54/c55/c56/c57/c58/c59/c5A/c5B/c5C/c5D/c5E
+/c5F/c60/c61/c62/c63/c64/c65/c66/c67/c68/c69/c6A/c6B/c6C/c6D/c6E/c6F/c70/c71
+/c72/c73/c74/c75/c76/c77/c78/c79/c7A/c7B/c7C/c7D/c7E/c7F/c80/c81/c82/c83/c84
+/c85/c86/c87/c88/c89/c8A/c8B/c8C/c8D/c8E/c8F/c90/c91/c92/c93/c94/c95/c96/c97
+/c98/c99/c9A/c9B/c9C/c9D/c9E/c9F/cA0/cA1/cA2/cA3/cA4/cA5/cA6/cA7/cA8/cA9/cAA
+/cAB/cAC/cAD/cAE/cAF/cB0/cB1/cB2/cB3/cB4/cB5/cB6/cB7/cB8/cB9/cBA/cBB/cBC/cBD
+/cBE/cBF/cC0/cC1/cC2/cC3/cC4/cC5/cC6/cC7/cC8/cC9/cCA/cCB/cCC/cCD/cCE/cCF/cD0
+/cD1/cD2/cD3/cD4/cD5/cD6/cD7/cD8/cD9/cDA/cDB/cDC/cDD/cDE/cDF/cE0/cE1/cE2/cE3
+/cE4/cE5/cE6/cE7/cE8/cE9/cEA/cEB/cEC/cED/cEE/cEF/cF0/cF1/cF2/cF3/cF4/cF5/cF6
+/cF7/cF8/cF9/cFA/cFB/cFC/cFD/cFE/cFF] def
+Level2? {setglobal} if
+/modEnc {
+/_enc xdd
+/_icode 0 dd
+counttomark 1 sub -1 0
+{
+index
+dup type /nametype eq
+{
+_enc _icode 3 -1 roll put
+_icode 1 add
+}
+if
+/_icode xdd
+} for
+cleartomark
+_enc
+} bd
+/trEnc {
+/_enc xdd
+255 -1 0 {
+exch dup -1 eq
+{ pop /.notdef }
+{ Encoding exch get }
+ifelse
+_enc 3 1 roll put
+} for
+pop
+_enc
+} bd
+/TE {
+/_i xdd
+StandardEncoding 256 array copy modEnc
+_pdfEncodings exch _i exch put
+} bd
+Level2?
+{
+/pdfPatchCStrings
+{
+currentdict /CharStrings known currentdict /FontType known and
+{
+FontType 1 eq CharStrings type /dicttype eq and
+{
+CharStrings /mu known CharStrings /mu1 known not and CharStrings wcheck and
+{
+CharStrings /mu get
+type /stringtype eq
+{
+currentglobal
+CharStrings /mu1
+CharStrings /mu get
+dup gcheck setglobal
+dup length string copy
+put
+setglobal
+} if
+} if
+} if
+} if
+} bd
+}
+{ /pdfPatchCStrings {} bd }
+ifelse
+/TZ
+{
+/_usePDFEncoding xdd
+findfont
+dup length 6 add dict
+begin
+{
+1 index /FID ne { def } { pop pop } ifelse
+} forall
+pdfPatchCStrings
+/pdf_origFontName FontName def
+/FontName exch def
+currentdict /PaintType known
+{ PaintType 2 eq {/PaintType 0 def} if }
+if
+_usePDFEncoding 0 ge
+{
+/Encoding _pdfEncodings _usePDFEncoding get def
+pop
+}
+{
+_usePDFEncoding -1 eq
+{
+counttomark 0 eq
+{ pop }
+{
+Encoding 256 array copy
+modEnc /Encoding exch def
+}
+ifelse
+}
+{
+256 array
+trEnc /Encoding exch def
+}
+ifelse
+}
+ifelse
+pdf_EuroProcSet pdf_origFontName known
+{
+pdf_origFontName pdf_AddEuroGlyphProc
+} if
+Level2?
+{
+currentdict /pdf_origFontName undef
+} if
+FontName currentdict
+end
+definefont pop
+}
+bd
+Level2?
+{
+/TZG
+{
+currentglobal true setglobal
+2 index _pdfFontStatus
+{
+2 index findfont
+false setglobal
+3 index findfont
+true setglobal
+ne
+{
+2 index findfont dup rcheck
+{
+dup length dict begin
+{
+1 index /FID ne { def } { pop pop } ifelse
+} forall
+pdfPatchCStrings
+currentdict end
+}
+if
+3 index exch definefont pop
+}
+if
+} if
+setglobal
+TZ
+} bd
+}
+{
+/TZG {TZ} bd
+} ifelse
+Level2?
+{
+currentglobal false setglobal
+userdict /pdftext_data 5 dict put
+pdftext_data
+begin
+/saveStacks
+{
+pdftext_data
+begin
+/vmmode currentglobal def
+false setglobal
+count array astore /os exch def
+end
+countdictstack array dictstack pdftext_data exch /ds exch put
+cleardictstack pdftext_data /dscount countdictstack put
+pdftext_data /vmmode get setglobal
+} bind def
+/restoreStacks
+{
+pdftext_data /vmmode currentglobal put false setglobal
+clear cleardictstack
+pdftext_data /ds get dup
+pdftext_data /dscount get 1 2 index length 1 sub
+{ get begin dup } for
+pop pop
+pdftext_data /os get aload pop
+pdftext_data /vmmode get setglobal
+} bind def
+/testForClonePrinterBug
+{
+currentglobal true setglobal
+/undefinedCategory /Generic /Category findresource
+dup length dict copy /Category defineresource pop
+setglobal
+pdftext_data /saveStacks get exec
+pdftext_data /vmmode currentglobal put false setglobal
+/undefined /undefinedCategory { resourcestatus } stopped
+pdftext_data exch /bugFound exch put
+pdftext_data /vmmode get setglobal
+pdftext_data /restoreStacks get exec
+pdftext_data /bugFound get
+} bind def
+end
+setglobal
+/pdf_resourcestatus
+pdftext_data /testForClonePrinterBug get exec
+{
+{
+pdftext_data /saveStacks get exec
+pdftext_data /os get dup dup length 1 sub
+dup 1 sub dup 0 lt { pop 0 } if
+exch 1 exch { get exch dup } for
+pop pop
+{ resourcestatus }
+stopped
+{
+clear cleardictstack pdftext_data /restoreStacks get exec
+{ pop pop } stopped pop false
+}
+{
+count array astore pdftext_data exch /results exch put
+pdftext_data /restoreStacks get exec pop pop
+pdftext_data /results get aload pop
+}
+ifelse
+}
+}
+{ { resourcestatus } }
+ifelse
+bd
+}
+if
+Level2?
+{
+/_pdfUndefineResource
+{
+currentglobal 3 1 roll
+_pdf_FontDirectory 2 index 2 copy known
+{undef}
+{pop pop}
+ifelse
+1 index (pdf) exch _pdfConcatNames 1 index
+1 index 1 _pdfConcatNames 1 index
+5 index 1 _pdfConcatNames 1 index
+4
+{
+2 copy pdf_resourcestatus
+{
+pop 2 lt
+{2 copy findresource gcheck setglobal undefineresource}
+{pop pop}
+ifelse
+}
+{ pop pop}
+ifelse
+} repeat
+setglobal
+} bd
+}
+{
+/_pdfUndefineResource { pop pop} bd
+}
+ifelse
+Level2?
+{
+/_pdfFontStatus
+{
+currentglobal exch
+/Font pdf_resourcestatus
+{pop pop true}
+{false}
+ifelse
+exch setglobal
+} bd
+}
+{
+/_pdfFontStatusString 50 string def
+_pdfFontStatusString 0 (fonts/) putinterval
+/_pdfFontStatus
+{
+FontDirectory 1 index known
+{ pop true }
+{
+_pdfFontStatusString 6 42 getinterval
+cvs length 6 add
+_pdfFontStatusString exch 0 exch getinterval
+{ status } stopped
+{pop false}
+{
+{ pop pop pop pop true}
+{ false }
+ifelse
+}
+ifelse
+}
+ifelse
+} bd
+}
+ifelse
+Level2?
+{
+/_pdfCIDFontStatus
+{
+/CIDFont /Category pdf_resourcestatus
+{
+pop pop
+/CIDFont pdf_resourcestatus
+{pop pop true}
+{false}
+ifelse
+}
+{ pop false }
+ifelse
+} bd
+}
+if
+/_pdfString100 100 string def
+/_pdfComposeFontName
+{
+dup length 1 eq
+{
+0 get
+1 index
+type /nametype eq
+{
+_pdfString100 cvs
+length dup dup _pdfString100 exch (-) putinterval
+_pdfString100 exch 1 add dup _pdfString100 length exch sub getinterval
+2 index exch cvs length
+add 1 add _pdfString100 exch 0 exch getinterval
+exch pop
+true
+}
+{
+pop pop
+false
+}
+ifelse
+}
+{
+false
+}
+ifelse
+dup {exch cvn exch} if
+} bd
+/_pdfConcatNames
+{
+exch
+_pdfString100 cvs
+length dup dup _pdfString100 exch (-) putinterval
+_pdfString100 exch 1 add dup _pdfString100 length exch sub getinterval
+3 -1 roll exch cvs length
+add 1 add _pdfString100 exch 0 exch getinterval
+cvn
+} bind def
+/_pdfTextTempString 50 string def
+/_pdfRegOrderingArray [(Adobe-Japan1) (Adobe-CNS1) (Adobe-Korea1) (Adobe-GB1)] def
+/_pdf_CheckCIDSystemInfo
+{