summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Lamparter <equinox@diac24.net>2013-03-10 04:42:34 +0100
committerDavid Lamparter <equinox@diac24.net>2013-03-10 04:42:34 +0100
commitcadc17b6922526f0c97d1fa0fa32639f240639cb (patch)
tree9b8a1f688063808fe5ef145c849cf14a957c2afe
parent4ab934ab72af3f16993caf0eab62f68a08ded13a (diff)
doc: add some graphics
-rw-r--r--protocol.tex11
-rw-r--r--svg/proto-actor.eps450
-rw-r--r--svg/proto-actor.svg281
-rw-r--r--svg/proto-sensor.eps381
-rw-r--r--svg/proto-sensor.svg202
5 files changed, 1325 insertions, 0 deletions
diff --git a/protocol.tex b/protocol.tex
index 1b57783..3f8eb10 100644
--- a/protocol.tex
+++ b/protocol.tex
@@ -3,6 +3,9 @@
\usepackage{hyperref}
\hypersetup{colorlinks=true,linkcolor=blue}
\usepackage{xltxtra}
+\usepackage{graphicx}
+\DeclareGraphicsExtensions{.eps}
+\usepackage{wrapfig}
\usepackage{longtable}
\usepackage[font=small,labelfont=bf]{caption}
\setmainfont[Mapping=tex-text]{Delicious-Roman}
@@ -36,6 +39,14 @@
\end{tabular}
\end{table}
+\begin{wrapfigure}{l}{50mm}
+\includegraphics{svg/proto-sensor}
+\end{wrapfigure}
+
+\begin{wrapfigure}{l}{60mm}
+\includegraphics{svg/proto-actor}
+\end{wrapfigure}
+
\section{addressing}
Sensors and lights share a 12-bit address space, located in the CAN address at
diff --git a/svg/proto-actor.eps b/svg/proto-actor.eps
new file mode 100644
index 0000000..d657a21
--- /dev/null
+++ b/svg/proto-actor.eps
@@ -0,0 +1,450 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: cairo 1.10.2 (http://cairographics.org)
+%%CreationDate: Thu Sep 20 13:34:44 2012
+%%Pages: 1
+%%BoundingBox: 0 -1 153 69
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%EndComments
+%%BeginProlog
+/cairo_eps_state save def
+/dict_count countdictstack def
+/op_count count 1 sub def
+userdict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/pdfmark where { pop globaldict /?pdfmark /exec load put }
+ { globaldict begin /?pdfmark /pop load def /pdfmark
+ /cleartomark load def end } ifelse
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+%%EndProlog
+%!FontType1-1.1 f-0-0 1.0
+11 dict begin
+/FontName /f-0-0 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/FontBBox {0 -176 467 694 } readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 1 /uni0063 put
+dup 2 /uni006F put
+dup 3 /uni006E put
+dup 4 /uni0074 put
+dup 5 /uni0072 put
+dup 6 /uni006C put
+dup 7 /uni0065 put
+dup 8 /uni0061 put
+dup 9 /uni0020 put
+dup 10 /uni0034 put
+dup 11 /uni0035 put
+dup 12 /uni0064 put
+dup 13 /uni0037 put
+dup 14 /uni0038 put
+dup 15 /uni0069 put
+dup 16 /uni0070 put
+dup 17 /uni006B put
+dup 18 /uni0073 put
+readonly def
+currentdict end
+currentfile eexec
+f983ef0097ece636fb4a96c74d26ab84185f6dfa4a16a7a1c27bbe3f1156aea698df336d20b467
+b10e7f33846656653c5ac6962759d3056cbdb3190bac614b984bf5a132dc418192443014ba63de
+800d392b6fea026574bb2535fd7bb5338f35bf15a88ea328fdaa49670c7852e3d060f3c5d6b07f
+2ef6d0f22646c5d18e19a2ae3ee120390f6dd96f76dcf1e127de5e9299077a00c17c0d71e36e5b
+9d5ec58fceda57739a6a4214d4b79d6c48d2784b60c320323c7acddddf34db833cac0cf109f799
+69d114a330d372e5c978a66acc84e3fe5557f6240856a013ffaa0199444e5c5036f775eba4a5c5
+8cde66cf604b9aca2178431127b8a1ff7ed633a65c04600af5f573483112251caf31d0c7c7e1a8
+decc942f4bccae86153efd43475966e5202fd074454fb512388d1cf765ac5cf5ff1d0a81ff8a70
+3470b136c9d4e56f728984f30c1728cf4abe44bb355f471c677b4e518cbcc9f401011f0184ccf0
+a1e79f1bc95609148ced99e98d133373a9a9a787c69bfa9348a48b710a814bb7eca020313731c7
+f41f24c99f0e613a9f6ee519682d678904fe21be9bb9473069cbdde2dfa025965925d0cadb0983
+6fc20bee7b48e711e12562903dcc86ec9f2f811326806238024b1a22d39283fbf0ba7ab514a7a7
+452dfe531a06b65e749834efbcf202d452dec8fa2e4d3c823342a5d4034fe541c1ec44b7123d67
+4560305cd38af64b72f637c260d372e53c1dd26e444f030a177b8645b78c239563b2b810e083f2
+22689f5d896ca8228f29e7e73b1fd9bedfe588bc3183d59336841e123193dcc5107125f4faeeee
+40bced58592a4273935c2a7aa93f15bbc90cf9d6a7df9211c27d36b5a6204ded349c7fa5c86462
+0a7ccb7e14b0179ab9551f8b9bbd386e5c835f79d026ce9f5b78a53d1b9bdf0b5271d13a1e4873
+efc2ce938539ec2f82b98f658046fdff72c728e1ea3999e0280c4e1fcc1e2b3599e2ce165f8275
+a953105d6b9209122c945eee412c70ae0611ac0f4793256617a644871f2d2f24a79f8458b7aa20
+19a803e9729455f77e37143b2e58228bb47ff75c87db984820b2a76dbf8ba050e2493f96b3f6ae
+19589e4d3afd47b0c16f5967451ccc64e9e2febe96f58ad5bd387b4a97cb3e24afc172a944a6f5
+eb0c0e08abb017e7ce2749e9792bc0e824554c74679bf993459d9227ac18eb96cf9c0b74eaca5a
+7d87bd7bb65d8a8fb8bdd52ab632a7e58fa076d46431045849cda80fe002ba764bcc2c50c3444f
+d10d1c98764ef35285267efa36aa88c4277705adca9e08f0705bf6c1761facbb3f07608383ce5c
+63bfb168c1c996a703217976ff7df8c1328b048e8260eba87058acfe685cdd699fdaec6f15b250
+dc297edcad87d3697c1de7f4467748631d25b40805eb6f9500629fcc198a699b15c86c39c1a856
+9be294ea3898bd481e55679da380c833aaa8ac9ca8a2d5497dd1f7c8205bdf3181310ad78667e0
+b76c949539a1a0f8bb82ae0c96ade369f317f61d8d4b44b123a21760d6503c25a1c15c623aeb36
+22c2287c83bd9da4abecbb210cdc61c50d38fc63b659f9477daebe0b808932ca0fc5751d8493bd
+1ad50804cce7b74944ebd36248a4e25b8282fc112e06347d805dacde2ad40eb50a80c38bf8c5ed
+c1470e38974fc6689c72833fc64dbe75f814a82f5e079abd4be29e699d9e4437ebcd5f9e3b493b
+15e2a5cf0cae0adf4384e7e3a88a2b5d38820c6950a8b38244bd1d4d41cbae44c6016a049fc4bb
+0a3026744ea85038f09fda85690066d207d5dfa0df615eed12df6a6e37daacaea3bf1a94c19851
+6bfc70733bd090d2787186197a4dc79c98f8a9efc09ba172134d243acb9aea29c483560ab37846
+d286ceefbb71e5ba188f05a5c1c73cd899fc856056ae516961a53382b309e3855af1d5e90391c0
+a75332fca7b4a358450d3f1efe170d4517ad87d7cd806ad9ac976adf5811680c6d90bffb5d37ca
+4d8e3eeb9b128b55c733597f1ba58bfae4025dafd1684aec981ec72da10ab18ac669fafabf604f
+d18956022f2e0e250b18f6836a4417b9f66703dedf830d413ddff140ae1c95d8a20c67ee774d7f
+0d20aa4028a77fb89b201e4ceed569270212d83439419fe9a4c45506824253670c31b904ce90d9
+061eff0eb2db6dda7110f4e6966fc983344f950ec55f508ab71d8e9f4c703f1c2d41b340413f71
+ab42705016da160c104887506cf7362b2904dce54e2033dabd281e87ae7b688c766564877cea8a
+21ff44cf705f4c872312887758369f4f7e004a8d4c8b01775517a28c86af1bb5e01a0720b52bd3
+1650c14ebaf85d9c687b0fef3debf6cfe4153852cae6d4634423a18594bb1ab6e8c4373f0cf95b
+4ed549298215943608065a193b2bb9eac175a5177b88da2cd4142526d9d5429d2ecd063a90fdec
+5eddeaadd0afa256a5d2f811d7259a15f3a01b7e64a0eb545e960bc9bfe95f8e9405598d384480
+c6fea629e1250f64995137ca6fad368897d92b96939a93945a6c970aaed3bb6916505a793cadca
+cdcea8f21f0757ea3b731d817cd32544a22625d4bbc46f421c46e15475610228e3ad315e1dd546
+f724f050bfd2aba3728c9e3e0893c4b4247beb489567027946ab5c26172c023a5c4b40449957cb
+6cf071bc4e0d81ddda1653136bdf7c0bc53fe4aed8759d597aec5d33bedcea77e58e21f555198e
+2027ebc7faecda29235bb6d078c3e6ce58d9397d6d1bee4a87ec19094a1ceda86254411d200d2f
+fe4401cd3e3fcd791779c1880bb13405bd31e404e8846e882de145989473c7826fcf1d45a5da8b
+ee6ce3e079e7909fd1c7bc143f522982bef086007964429dc78f55c69711a6dd321f93472a4803
+0a9a7f3c62ee26331179bd4a29647216336168f6d62814e47604924bf40e49ae3d74853778ec2b
+6fe0e30bbe6628d4cb2e4b98d788fa77917277adf9b3f96ec3af0baba64df671842369ba4e690f
+639b6ebffd870424e6a43dcfbb19c3c606a39ce1097fc373bf23a9518084b345d51787ba9027c3
+4f98a2f5aac46fdfcfee1fe4482c024ebb17b2fe321f2ab3856ab1b281f825f767fe048f0a08e7
+a2ce32d107ce1c641db1ac25d6034d4b986924b44a3fc0868e2971c5631b4c2ce91923ec8d14e5
+b09e211f61e50536457db1093b5244c6a68346eb3063fc0b55391178a9795e509126991ae461a8
+4a0224efaed7841222d2724e044cca1a4bbb18bddd29eaef49dd7d198b08b0c7b231503db16e32
+c3086de75b16c21b2aadd1e99ca38dc646b1c6f43fdd2fc2dee80b00bf0ad45b0c8d8d0becb4b9
+7ee23fe4cab3ff16bdb136fa13126de9446015da11ba0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%!FontType1-1.1 f-1-0 1.0
+11 dict begin
+/FontName /f-1-0 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/FontBBox {0 -12 457 665 } readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 1 /uni0063 put
+dup 2 /uni0030 put
+dup 3 /uni002D put
+dup 4 /uni002A put
+dup 5 /uni0032 put
+dup 6 /uni0064 put
+dup 7 /uni0020 put
+dup 8 /uni0034 put
+dup 9 /uni0065 put
+readonly def
+currentdict end
+currentfile eexec
+f983ef0097ece636fb4a96c74d26ab84185f6dfa4a16a7a1c27bbe3f1156aea698df336d20b467
+b10e7f33846656653c5ac6962759d3056cbdb3190bac614b984bf5a132dc418192443014ba63de
+800d392b6fea026574bb2535fd7bb5338f35bf15a88ea328fdaa49670c7852e3d060f3c5d6b07f
+2ef6d0f22646c5d18e19a2ae3ee120390f6dd96f76dcf1e127de5e9299077a00c17c0d71e36e5b
+9d5ec58fceda57739a6a4214d4b79d6c48d2784b60c320323c7acddddf34db833cac0cf109f799
+69d114a330d372e5c978a66acc84e3fe5557f6240856a013ffaa0199444e5c5036f775eba4a5c5
+8cde66cf604b9aca2178431127b8a1ff7ed633a65c04600af5f573483112251caca7670b56325c
+dedbcd3a2fcc3d5b01771869c6979972f9896b238fe17fc314037c7e13f3518bece91746184b5e
+12f73265e044c15462a6c591c833bea435cf4310f49839bb4f35360dde80ed1c51d875e9e2e830
+f7ae4db922c5502cdc9adb4dccf02c03f42f9a722e3576d10f70924480f810a07d6ef6e0406a47
+3d6505ff58fc199c46f2db32dd8c72470f35e699b94e6e56ef50c147fb9302df2915d70e926413
+1fabe2a19087a4a0d4c222b2f41a5b13af43e6487c97d8228ec9e7f59648d963c9cbcd2891e6af
+130f066b713c3a4609ee3202e9e20e446137a49e46e317e562a4f1c04161a259daf621cb77afb5
+76f6a04f028c0f68fa2c961fad5d64c8ea0891feaa275c08607fb163b7783743071ee4da86a10c
+381c55d8730beca9725266bfec2b750b4ae2a3cfe0faed2aca294029b943d7e93fd4586d559737
+41f7435186e2dbd63f642fb687307beac29d580cea19ac85586399c4cb7de5c8e043a181a0e06d
+e0ccd39f4f6c86d764cb8b64afbc7dbd87bc7f74839904bebf8cb8913115e58567407fb9b5fe9a
+c8ea74ba0618c550712673f708b0c510d8d48bd295f97f6b8ad561c5ecaf152664c01d9bc71d2c
+8705faf60ac322a2f15ef1eeac0f4e7dcfd94ff0971264c14cab7eb5329fde27774fa39adf0d45
+98da3b0ed2935987c7d4cf3920d01b2dd2fa571e6c3ff10e93f8bdbc4070d9556e93ed0cdd6dbf
+1811249e9a68acc72b781d0f5849b135dd264e4d7385e17dc7589d28bedbb3a210aa32cb0e1652
+e42f309cc58d23998b2f25d86dc799ec7f948224cdb304898e8a5107523f4b6c36f668923befde
+a40a75e77a06a2ec0b712f996234669707003c65bf80fb2cc03924fea4a4f716c4f6fbca9fab04
+3a15a34da557ef6cda338699a64eb1ca0d6a096604c266ac480c37eaab44797769976de3b5520b
+2788427e9d630370a3b398134f6c3b683622f507316f39f0cd24305668078dd93519f7f9ecd6f5
+3acbf1b5c9f755440d72b52ee87190b67e18e8aa6752d44b908aebf2fd83026db457514a0d5c68
+4bc7715de583d60b4729e5749a10ed3eb62570bbd0b3a6fd5a1f189e01a3b6a5f87c46948c5821
+ab2882f63a17f2434af150c58c00d2d74577dc961f9836629ed5eb1823c4b47ce0356b7126738e
+b2f351d129daad915d01a3b6a638d2ba844aaa9b7b53b0defe73f888156661f9aa3ce843e627cb
+dc03e78c479dec03a7d4d13c1038dc6d9c099bbbc6e689481be195b38a3fa62153328d130ddcc9
+813f9b1e9446fddf1e4c8262ed79482f1cb9ea61eba4041d44ef5a451d6be062d9b31482747bb4
+cb3e4341c04cabf480cd35218dfd70ab58da35715363e661d2f700bad7ac1dd7c79b42b3802d6e
+c8afa4dee25d37216408f0ad17288f80efc0aef003428e7e001d1d0e963cebc7cf919bea79d5c7
+ed4ec8aa31c574179e61b3076e53a5d94076a23163dfe4b9a34afdd642ba67d5de51335b16d063
+c6c079fd41d3b9eba7ff683bd7aa99c05632cb80ae737a916a4582c87f850000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%!FontType1-1.1 f-2-0 1.0
+11 dict begin
+/FontName /f-2-0 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/FontBBox {-22 -193 715 706 } readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 1 /uni0070 put
+dup 2 /uni0065 put
+dup 3 /uni0072 put
+dup 4 /uni0069 put
+dup 5 /uni006F put
+dup 6 /uni0064 put
+dup 7 /uni0063 put
+dup 8 /uni0020 put
+dup 9 /uni0062 put
+dup 10 /uni0061 put
+dup 11 /uni0073 put
+dup 12 /uni0074 put
+dup 13 /uni0067 put
+dup 14 /uni0076 put
+dup 15 /uni006D put
+dup 16 /uni006E put
+dup 17 /uni0041 put
+dup 18 /uni0043 put
+dup 19 /uni004B put
+readonly def
+currentdict end
+currentfile eexec
+f983ef0097ece636fb4a96c74d26ab84185f6dfa4a16a7a1c27bbe3f1156aea698df336d20b467
+b10e7f33846656653c5ac6962759d3056cbdb3190bac614b984bf5a132dc418192443014ba63de
+800d392b6fea026574bb2535fd7bb5338f35bf15a88ea328fdaa49670c7852e3d060f3c5d6b07f
+2ef6d0f22646c5d18e19a2ae3ee120390f6dd96f76dcf1e127de5e9299077a00c17c0d71e36e5b
+9d5ec58fceda57739a6a4214d4b79d6c48d2784b60c320323c7acddddf34db833cac0cf109f799
+69d114a330d372e5c978a66acc84e3fe5557f6240856a013ffaa0199444e5c5036f775eba4a5c5
+8cde66cf604b9aca2178431127b8a1ff7ed633a65c04600af5f573483112251caf30017b277238
+efcf5771340938fe80f4a00100eb95a658bfe12cf8247fae74b8d924e48e0e2fe1b447d1f3564f
+d6f161cd92f37b9345a5f4c2fb59ffd710dfeba70819677a7ead7521981841d8e1b7fe7716c998
+af791f3cca2a709fd042704141c4cef2e13d1a803db2b1113d89ae0bd876525ac1bcbf7a3bc4de
+124f3c2e94abcd0d83ec139a495d753d69c07d6ec586b5af8370bdc48bcc0c0ea1c2ebd863aa6a
+4980d74c5aa69be1f2f3a56cca6a90e8869a74c721d90f1e267c2543d179d46830c5e068760409
+d9af158da3e61c89fdb0450d15aca03db47e0a5144518bb647280eba7af0380b198186584cac0d
+6b902f29ae43de7ac638451c07f8279f53cf4ea6a220e6616ce6303c026d4de405bea9943acfb7
+702e837fccd3834c7e74a0655f1e9be2a9f2a737e99b0b2c458f3232d9a1cc493c7654004a38c0
+a5cb3bd74de9b93bb7d33815ad197f16553af372d75a71baf5c7a30679179e2e49a9831f045e8c
+8cefeb6a3691ff45f4b8c38b7d831eac08b125a4db49b5b88380f8cfb87217d99e7f0713eac303
+8c242c3543ffe82de7e0f087644d8b4bba2ca571a2ecb114fab87a9f7ec02338ac5f2e0b34888e
+fa8dca131b78b81698a85cf6fdb775075b8ca17ff39b08798fa72855ac9aa47fbdcf8e97f1dd2a
+88693ffc687e0e71ca1946effc748f23e1a3a16bab05d75082245eb5c63c749affd1b609ac7ded
+5cba92787027c722b626c6cb488bacbd5cb6d29971034b279197bf13f6143be9a493e30a9a542e
+d21444c51311a0bc00477a0df2308ca22bff7593df8554f1b13485df78ac9a1f595443c38de0d4
+5ca0789280f776d62b20021c645af98fd0218875662ec0d47cbc9249c67b8b084e92f5f605d52c
+623fd1e621555bbc1156c8c9856986ae95603b93b9d2b02f85ac7972192c8c35ebb959123ce227
+d10a08e8032d52c2eb78cb4e6c4998713f693e46ac940dc2282d9c8cf0b1e0eb5e85a7d8965427
+2de971f1ca4649f21926fdd2f6e6d92cd2f812a7bc319469fffd9c88f7f8e04813d74b0cf1f9f5
+90a3194dedd03449bcce0dd890f8d211ff031c847d11743e1cb0d28cfce68db807520983cc6741
+de808d18ac07562606a826cba778fc9780467b9debe6bf241a5c595e61998d808c1432bbce86f8
+256cae67873badce689bc5e119341d74725988ea1a312ab495599b9ce767f21540eec343f2ae22
+d459d95ddb23a2b17fb8091abfe51371c8d7935835323e85d72c6a6006cce2a0cc126fc8243092
+a04e311548febcf23607e832c14ce937e8e6d9d3e2d5d94777b8130859278efbe5290098fd1e8b
+b9bc23278793b11d7dea307b68c957f07a06e343f3975f00bcfb580f1c0db92122820f600fc051
+ba8859cbb85253b6d7bc03945da2ef11eb8aef976feaacd3f847f8be9ffb25433b5fd57a5580c9
+4f6a49e50acf6e8ada6d5f67c7b3054fbe3994ad63d63c43273fc71bca82a8bb978c0f3ab9f1a4
+878e43962018f4f6facd356f4ad753bdf98c6302a3ebb32e82e7d8326a5d7fe3a448b2fd7992b9
+4126dc55d7c30d00186ff88d63478c7471c3f9a7f2a281be54dbca6eae7b2b2bc65a8e12f59ff4
+f32cbf96ae8d74588445b1a08d440f7ea13e2cf4a9359a0d072cf844871e2c6cc8e2497e7854e4
+dc18cfcb853a5d722b915d235e69bbf355e1cb2ba3a373a7e4d303aa48afdf5b462289a4fd3a3d
+719d53315df5dacc3f705a96737b54eb6ecbabc3ada28ae18d198458b835a8547185e004b2e32a
+78d6ce76fbf65d4a3072f79aedd5e67d6f8a21728f9b7162ced87c664988492e31dc76b9fbbd11
+a6dd59bcc4a22161a70a508a9f943ed1bf5f40ba2a232de28ecc676fedcd34c1e190b995b06170
+1e73234dc803153f20e791eeecb34fc7d96d040a5817bfccb3e2e8c4043a34e333130d8222fcda
+af5987873afb81e556f0ef44acd47d0b9a67d62b34b85083553c6923522518cccaa3f67ef851b7
+cd4b1fcc56fea17d5b3c41fd7c210b220d16ac60ef67df4ba908f0c231a396b137ca947d5deac1
+9768da20aeba6b89aa70b3c023d3e70a2f869ce02c89821833b9a365c56c921ea0efbcb0b0706d
+377515af68da87f029f0bae12b206a5db399b434df72c1d85f14e7ef1ac5040b26c199718f9174
+12f552becd8475ca65a03ee6b37bdc2b47065a5070f6513c2290b9a86968d81d988f3b6c3f63be
+aa23ce4195e76298111338516c151fa84fab132f30bd4351fc48684fe92d3239edd839ee3a521d
+b940db2f3b2ca1b7d3ce0749a8d61d219333bfb08dea62378ecac484e17f4d877119b90149ff3b
+a7075222cafaa4f0afdc03fc5c0901b4fa8243ee1933091fe3a4873ea6f16799a7942be5fbe4d5
+1d433885931babe9a7ac8fd8146779faa097898c2cc3035e158b714a1c886ed2419499ac01317a
+1b1a97377c50945e7def65f93c02c02dcdd05245a640cbc8446b16e78072a7f92a1bf6b8ea3b03
+901b77463c0cec59613d4911a63c5db6de66a00617b25bde18e20db09d621568cbb6ffd2ba0863
+d9e2e1537dc82714d871ca7c268becd2ebab11ddfc409e029ebfde345b1b9bfd910e446781f1f3
+a91e80fbf20adb2675f04b45a826061c53708414383f2d5317b99898362d4acea615932cc26f35
+2e799af99deb62f1473d7ceb83de16e22294704b14905591de02223e7692ab7f78ff7a53ab4599
+3f3d5b36762d282633fc7bcf96b4c90fa3b77d64615c5d85b5af396111f2e8bdca068b5421d944
+80adb127ea76ea3ec23b30e95702dc13015e2200072cfa6f4acaed178c7f3eaf8cfef5ec3fe45a
+a88269a45cde57cf28e6686139be4cd77e75cd44c587a61e0beeadc3fa023db81c5cdafc96d872
+a922c3150584c7cdec274f7fa67f6b5a35e469b706b5aa23d20a8220c50ac4fafe0a12e4e8dfe8
+25188f70bce756590ef63e691486b55721d89bd0a41a1c75d1cf245462bb5b019204f252b2c78d
+2eb09bf39ff9f483b4957dfd4bcb63a35f196380dcdc1e051433b4a7f1e3a496c923018ec09777
+b517c7083210fa2974236f0904cfbd7fe7c4c2ccab4eed8ab2d3e63641b163430940d12507b823
+ba251466b7200245b4f3aebfae0599254227ca4068049c2bec9480a46b1a82c7c0766f5f06ffe7
+a0252f8eef5bd5600acb54e9469372b677a3f452fb8460367697389a77ab6881df22a6926cc08b
+e4ac51ef232bdb1aca6c908eb0d3275ade8b78bbb3f867f2923fddf54b12397af31e4546a5565b
+8c974ee61f88598d09e123f7521d1ecd916fd0619c21009361a98d0acdc9474e88556bc870ca10
+e7ce66a738c6a6fc32cb34fccdc51d778a547a5d7f92225c84df45a9f25218cee5c80d8b837457
+dc0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 0 -1 153 69
+%%EndPageSetup
+q 0 -1 153 70 rectclip q
+0 68.567 153 -69 re W n
+0 g
+0.79937 w
+0 J
+0 j
+[] 0.0 d
+4 M q 1 0 0 -1 0 68.566833 cm
+82.598 13.59 m 82.598 19.258 l S Q
+82.598 53.411 m 81.715 53.411 81 54.129 81 55.012 c 81 55.891 81.715
+56.61 82.598 56.61 c 83.48 56.61 84.199 55.891 84.199 55.012 c 84.199
+54.129 83.48 53.411 82.598 53.411 c h
+82.598 53.411 m f*
+0.399685 w
+q 0.000000000000000061 -1 -1 -0.000000000000000061 0 68.566833 cm
+15.156 -82.598 m 15.156 -81.715 14.438 -81 13.555 -81 c 12.676 -81
+11.957 -81.715 11.957 -82.598 c 11.957 -83.48 12.676 -84.199 13.555
+-84.199 c 14.438 -84.199 15.156 -83.48 15.156 -82.598 c h
+15.156 -82.598 m S Q
+0.8 w
+q 1 0 0 -1 0 68.566833 cm
+82.598 7.918 m 82.598 2.25 l S Q
+82.598 68.164 m 84.199 65.395 l 81 65.395 l h
+82.598 68.164 m f*
+0.4 w
+q 0.000000000000000061 1 1 -0.000000000000000061 0 68.566833 cm
+-0.402 82.598 m -3.172 84.199 l -3.172 81 l h
+-0.402 82.598 m S Q
+BT
+9.6 0 0 9.6 64.411517 40.80506 Tm
+/f-0-0 1 Tf
+[<010203>-1<04>-1<05>7<02>-1<06060705>]TJ
+ET
+BT
+9.6 0 0 9.6 3.228933 23.797052 Tm
+/f-0-0 1 Tf
+[<08>-1<0104>-1<0205>1<09>-1<0a>1<0b090c08>-1<04>-1<08>-1<090d0e>]TJ
+ET
+0 0.501961 0 rg
+BT
+8.8 0 0 8.8 3.228933 15.293244 Tm
+/f-1-0 1 Tf
+<010102030404020506070809>Tj
+ET
+0 g
+0.8 w
+q 1 0 0 -1 0 68.566833 cm
+76.93 58.941 m 76.93 33.43 l S Q
+76.93 36.981 m 78.531 34.215 l 75.328 34.215 l h
+76.93 36.981 m f*
+0.4 w
+q 0.000000000000000061 1 1 -0.000000000000000061 0 68.566833 cm
+-31.586 76.93 m -34.352 78.531 l -34.352 75.328 l h
+-31.586 76.93 m S Q
+BT
+6.4 0 0 6.4 105.276184 1.120002 Tm
+/f-2-0 1 Tf
+[<01>1<02>-1<03>1<04>-1<05>1<0604>-1<07>1<0809>-1<03>10<050a0607>1<0a0b
+0c>]TJ
+ET
+0.8 w
+q 1 0 0 -1 0 68.566833 cm
+0.395 33.43 70.867 25.512 re S Q
+BT
+6.4 0 0 6.4 88.268304 63.482209 Tm
+/f-2-0 1 Tf
+[<0c>-1<0a030d02>-1<0c>-1<08>-1<06020e>-1<0407>1<02>]TJ
+ET
+BT
+6.4 0 0 6.4 25.39223 1.120002 Tm
+/f-2-0 1 Tf
+[<07>1<05>1<0f0f0a100608>-1<0c>-1<03>16<0a>-1<100b01>1<0503>1<0c>]TJ
+ET
+q 1 0 0 -1 0 68.566833 cm
+105.277 33.43 m 105.277 58.941 l S Q
+105.277 7.778 m 103.676 10.547 l 106.875 10.547 l h
+105.277 7.778 m f*
+0.4 w
+q 0.000000000000000061 -1 -1 -0.000000000000000061 0 68.566833 cm
+60.789 -105.277 m 58.02 -103.676 l 58.02 -106.875 l h
+60.789 -105.277 m S Q
+0.8 w
+q 1 0 0 -1 0 68.566833 cm
+82.598 33.43 m 85.434 33.43 88.27 36.266 88.27 39.102 c 88.27 58.941 l S Q
+88.27 7.778 m 86.668 10.547 l 89.867 10.547 l h
+88.27 7.778 m f*
+0.4 w
+q 0.000000000000000061 -1 -1 -0.000000000000000061 0 68.566833 cm
+60.789 -88.27 m 58.02 -86.668 l 58.02 -89.867 l h
+60.789 -88.27 m S Q
+BT
+6.4 0 0 6.4 88.268304 1.120002 Tm
+/f-2-0 1 Tf
+<111213>Tj
+ET
+BT
+9.6 0 0 9.6 113.780115 23.797101 Tm
+/f-0-0 1 Tf
+[<0f0c070304>-1<0f0108>-1<06>]TJ
+ET
+BT
+9.6 0 0 9.6 113.780115 14.197101 Tm
+/f-0-0 1 Tf
+<10080111070412>Tj
+ET
+Q Q
+showpage
+%%Trailer
+count op_count sub {pop} repeat
+countdictstack dict_count sub {end} repeat
+cairo_eps_state restore
+%%EOF
diff --git a/svg/proto-actor.svg b/svg/proto-actor.svg
new file mode 100644
index 0000000..3b64b85
--- /dev/null
+++ b/svg/proto-actor.svg
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="205.51181"
+ height="102.75591"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="proto-actor.svg">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="TriangleOutM"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="TriangleOutM"
+ style="overflow:visible">
+ <path
+ id="path3906"
+ d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+ transform="scale(0.4,0.4)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Mend"
+ style="overflow:visible">
+ <path
+ id="path3788"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6,-0.6)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="DotM"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="DotM"
+ style="overflow:visible">
+ <path
+ id="path3825"
+ d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+ transform="matrix(0.4,0,0,0.4,2.96,0.4)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="TriangleOutM"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="TriangleOutM-9"
+ style="overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ id="path3906-0"
+ d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+ transform="scale(0.4,0.4)" />
+ </marker>
+ <marker
+ inkscape:stockid="TriangleOutM"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="TriangleOutM-0"
+ style="overflow:visible">
+ <path
+ id="path3906-6"
+ d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+ transform="scale(0.4,0.4)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="TriangleOutM"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="TriangleOutM-6"
+ style="overflow:visible">
+ <path
+ id="path3906-1"
+ d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+ transform="scale(0.4,0.4)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="4.1794066"
+ inkscape:cx="100.20245"
+ inkscape:cy="51.018105"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ units="mm"
+ inkscape:window-width="1523"
+ inkscape:window-height="813"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0">
+ <inkscape:grid
+ type="xygrid"
+ id="grid2985"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true"
+ units="mm"
+ spacingx="1mm"
+ spacingy="1mm" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-949.60638)">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.99921262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#DotM)"
+ d="m 109.84252,974.40949 0,7.08662"
+ id="path2987"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutM)"
+ d="m 109.84252,967.32287 0,-7.08661"
+ id="path4201"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Delicious;-inkscape-font-specification:Delicious Medium"
+ x="109.84252"
+ y="992.12598"
+ id="text4761"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4763"
+ x="109.84252"
+ y="992.12598">controller</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Delicious;-inkscape-font-specification:Delicious Medium"
+ x="10.629916"
+ y="1013.386"
+ id="text4765"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ x="10.629916"
+ y="1013.386"
+ id="tspan4769">actor 45 data 78</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:11px;font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#008000;fill-opacity:1;stroke:none;font-family:Inconsolata;-inkscape-font-specification:Inconsolata Medium"
+ x="10.629916"
+ y="1024.0157"
+ id="text4773"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4775"
+ x="10.629916"
+ y="1024.0157">cc0-**02d 4e</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutM)"
+ d="m 102.75591,1031.1024 0,-31.88976"
+ id="path4201-5"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <text
+ xml:space="preserve"
+ style="font-size:8px;font-style:italic;font-variant:normal;font-weight:500;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Delicious;-inkscape-font-specification:Sans Italic"
+ x="138.18898"
+ y="1041.7323"
+ id="text4801"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4803"
+ x="138.18898"
+ y="1041.7323">periodic broadcast</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 7.0866106,999.21264 88.5826804,0 0,31.88976 -88.5826814,-10e-5 z"
+ id="path4805"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ <text
+ xml:space="preserve"
+ style="font-size:8px;font-style:italic;font-variant:normal;font-weight:500;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Delicious;-inkscape-font-specification:Sans Italic"
+ x="116.92913"
+ y="963.77954"
+ id="text4801-9"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4803-1"
+ x="116.92913"
+ y="963.77954">target device</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:8px;font-style:italic;font-variant:normal;font-weight:500;font-stretch:normal;text-align:end;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#000000;fill-opacity:1;stroke:none;font-family:Delicious;-inkscape-font-specification:Delicious Medium Italic"
+ x="102.75591"
+ y="1041.7323"
+ id="text4801-6"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4803-2"
+ x="102.75591"
+ y="1041.7323">command transport</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutM)"
+ d="m 138.18898,999.2127 0,31.8897"
+ id="path4201-5-6"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutM)"
+ d="m 109.84252,999.21264 c 3.54331,0 7.08661,3.54326 7.08661,7.08666 l 0,24.8031"
+ id="path4201-5-6-3"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <text
+ xml:space="preserve"
+ style="font-size:8px;font-style:italic;font-variant:normal;font-weight:500;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Delicious;-inkscape-font-specification:Sans Italic"
+ x="116.92913"
+ y="1041.7323"
+ id="text4801-8"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4803-8"
+ x="116.92913"
+ y="1041.7323">ACK</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;text-align:start;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Delicious;-inkscape-font-specification:Delicious Medium"
+ x="148.81889"
+ y="1013.3859"
+ id="text4765-5"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ x="148.81889"
+ y="1013.3859"
+ id="tspan4769-2">identical</tspan><tspan
+ sodipodi:role="line"
+ x="148.81889"
+ y="1025.386"
+ id="tspan5053">packets</tspan></text>
+ </g>
+</svg>
diff --git a/svg/proto-sensor.eps b/svg/proto-sensor.eps
new file mode 100644
index 0000000..dbf029c
--- /dev/null
+++ b/svg/proto-sensor.eps
@@ -0,0 +1,381 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: cairo 1.10.2 (http://cairographics.org)
+%%CreationDate: Thu Sep 20 13:27:44 2012
+%%Pages: 1
+%%BoundingBox: 0 -1 105 71
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%EndComments
+%%BeginProlog
+/cairo_eps_state save def
+/dict_count countdictstack def
+/op_count count 1 sub def
+userdict begin
+/q { gsave } bind def
+/Q { grestore } bind def
+/cm { 6 array astore concat } bind def
+/w { setlinewidth } bind def
+/J { setlinecap } bind def
+/j { setlinejoin } bind def
+/M { setmiterlimit } bind def
+/d { setdash } bind def
+/m { moveto } bind def
+/l { lineto } bind def
+/c { curveto } bind def
+/h { closepath } bind def
+/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
+ 0 exch rlineto 0 rlineto closepath } bind def
+/S { stroke } bind def
+/f { fill } bind def
+/f* { eofill } bind def
+/n { newpath } bind def
+/W { clip } bind def
+/W* { eoclip } bind def
+/BT { } bind def
+/ET { } bind def
+/pdfmark where { pop globaldict /?pdfmark /exec load put }
+ { globaldict begin /?pdfmark /pop load def /pdfmark
+ /cleartomark load def end } ifelse
+/BDC { mark 3 1 roll /BDC pdfmark } bind def
+/EMC { mark /EMC pdfmark } bind def
+/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
+/Tj { show currentpoint cairo_store_point } bind def
+/TJ {
+ {
+ dup
+ type /stringtype eq
+ { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
+ } forall
+ currentpoint cairo_store_point
+} bind def
+/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
+ cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
+/Tf { pop /cairo_font exch def /cairo_font_matrix where
+ { pop cairo_selectfont } if } bind def
+/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
+ /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
+ /cairo_font where { pop cairo_selectfont } if } bind def
+/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
+ cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
+/g { setgray } bind def
+/rg { setrgbcolor } bind def
+/d1 { setcachedevice } bind def
+%%EndProlog
+%!FontType1-1.1 f-0-0 1.0
+11 dict begin
+/FontName /f-0-0 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/FontBBox {0 -176 459 694 } readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 1 /uni0063 put
+dup 2 /uni006F put
+dup 3 /uni006E put
+dup 4 /uni0074 put
+dup 5 /uni0072 put
+dup 6 /uni006C put
+dup 7 /uni0065 put
+dup 8 /uni0073 put
+dup 9 /uni0020 put
+dup 10 /uni0031 put
+dup 11 /uni0032 put
+dup 12 /uni0033 put
+dup 13 /uni0064 put
+dup 14 /uni0061 put
+dup 15 /uni0036 put
+dup 16 /uni0037 put
+readonly def
+currentdict end
+currentfile eexec
+f983ef0097ece636fb4a96c74d26ab84185f6dfa4a16a7a1c27bbe3f1156aea698df336d20b467
+b10e7f33846656653c5ac6962759d3056cbdb3190bac614b984bf5a132dc418192443014ba63de
+800d392b6fea026574bb2535fd7bb5338f35bf15a88ea328fdaa49670c7852e3d060f3c5d6b07f
+2ef6d0f22646c5d18e19a2ae3ee120390f6dd96f76dcf1e127de5e9299077a00c17c0d71e36e5b
+9d5ec58fceda57739a6a4214d4b79d6c48d2784b60c320323c7acddddf34db833cac0cf109f799
+69d114a330d372e5c978a66acc84e3fe5557f6240856a013ffaa0199444e5c5036f775eba4a5c5
+8cde66cf604b9aca2178431127b8a1ff7ed633a65c04600af5f573483112251cacaecc7da90d73
+c5ec91557783f026804a22f6155bc35b68d0fe30ee1adb3f3edc5fa135471f0836040b091f5c6e
+78f140c7b0bf60ab2e22931f3105b13895988ad2d1f46b09b9a6e052f3f8713a1ef1cc20efd51c
+a31ab6283f17a7c38f6fb2945a20ef55b49a2249e5ba852e455e0fb65133dbef3e3a7633c774a6
+22d28cc9e41d786182e241c090d7fc8bb283d3ff97d45e8d50a7b012532ad3e19fc560f9df6ea4
+20cd8b799b81353dc405a4669013a36c7545f9e0f55d5f2d9c93e5b8f07e4d29107878fef46a08
+d3eea28860c8e72ac0c75e15a639402430a0684f99e88774d5d913312175d69a327642e100eeba
+1ab5bf642a9da824dbb398d71811152cc95bc2f3219a43812da99cd1a31f84ad4bab1ea470bf24
+8c0593b8af5af0b24b801710b34e415381ecec9d9af3ebe07170e2198eabe68960894947363e7e
+1a0d401723bd353c3c3e6f5fd93383fa5c0662d060fe802a4927cce5de450b6ecb6b574647bd85
+6561b2966370debb8504cc2800488134e8bcc2df4b83a1eb775861cb0bfbbd9fbdb275c6a9dde3
+cca2872e351c1941fb9519bb50f4f7910c7a811b34be572e63fac7af5fd712276fe1987e380b18
+4d0e1b7dd6eadb2e68fe08ccc1443e5bcbbdc510fed8961810dfd11d42e364ab58d7f8d077be35
+83524d5b943847e94f863ae060c1535236ec97eb60ec9990806a5f90c30659646aa2d532a50eab
+aeae96226d9d706ce56582284825ced10c32c06e9a204f01015d3a7a6b304d304ae5925ce38906
+5e3edd1144f342367af7bca30b1a03e44b2fe08bcbe6a0612272979ad2b79eb13ce88cadd86ff0
+e6a22414caa5252211cdb0b5ca51c77111a138a5f661c52f3e8470da2fbde50711e328c9aaad1c
+7a0642dda30f199765895f644c8605b99af5d982648b0caa299db9a9db08415296cb3103cc6f9f
+fc901ebc511fc79250f4e10d4cd1d9b12db0fa087d383924c780ed90ccccaf5d7599dc45730f2d
+04ad12d11ae32d44ef8364cba1e614a4789264edbf386a813a67ac3880610de49c8e7791b4427e
+8c13cf56e344d2b1de6edeff1c6d92298023b5a14a5e52c83a9c3def4408443dcc9d1d4f7e4c2c
+f63d7771ce14a024487337e33fce76e853737acda7406358ee8f14fc28246472e7cdb31eec1419
+40e7da58df72d7228fba79682dd95d2331e233219293bffc0e3f3e07409640ce8ad9163747d682
+1f5320329c7c408c450e4a0aeafbabd2efb00510787012352e22e70cbc3fde8618c3ea50b80094
+939218c2197e5b652f28bc08c76b6c417b61b77134350e2a6258addb87dd0d883a13a3ea510d10
+f534fb37685b18dc568a93ec1e629d906a6b4b50e147fffa44442782de83136a454cab831c8771
+5db1100d54ac0650e88367c4ba4fa775de88fc98c2835e71b3b322d6d8cea28e7066cf7407cc55
+eee80f1d8eb4bd1ec08ff3f918aa6fe8d7884c8f1fd054a1741c63755cb6947395576487634503
+8ce53fc8be4633480aca0dd26d69aba6948aa45f9dc1bcbec29471f58aefad90c8c34da0380472
+6ef223968ab8c1a37ac300fcbb1c57312b71de2e52cc1506e7fcf3515210a33cb4dc55a81cd4d3
+0c9c083ff22c99791c36673c7810e32131b6789427fc5b423998229720697e9ab07f47ea4d023d
+4c05b7cf5224a5e63814062aa410a74aebed4e31281a54c003febb6882ba1d727f80f231169a32
+2a14c0c1fd72219e63f377063e9f052cf6c33d7ac0c5a1d431cc4aef3b7f3dfad66c206d2f3824
+ffbce3d81e2cc47772ac3adc1df540b3d46f823b9fd4f34ac7ccf246c8c24e806d11c1ed67d569
+7e8b0b91217147a308d2dbbe564d14f8a44ba2352b69e4828eee988f1c684ad9cbb1e0a85999ca
+eb5adcd3bd28c3fa16919282986f900e8604a512d3cda9902edb8aef3d74e2740b44c8a139d1e8
+0aa31f1885d9f31c155f433661f7d245c0bb9f1886c5d0f9bba977c798d0efd52011e7408b9d8c
+645e6b279df1a2acb324b11a590674915f443c7f77b1e3d3bfe25db99ce914103ca2fd24facd38
+94511b4b9961748d80363243f53857251ca9fac06a38ad02e9b141cfa78ce6de9652c35ea4ce31
+2843011757f9d3ec69c66419d1ba0e1671e2fab558ed8e5b03f37840a3f522e88c34323849e398
+39c0e82babed7070e656c15ea9c7c247438114e7d9c2b8b829647f7d32559465df37849fdd8290
+f092ffccda11cae8eb35db08e8129b19be1abd2831b96a185ccd8ffdb4eddda5125b338d433770
+813eef53eb0ed32fe41f18cc0963a73f5f0fd3c2f194190d4bacaade906fccc725a27205dab237
+6ed5364537ff22b30b9a45edf4ff066dc2e4681886ea59315ecf7dd67662e6a898f229c5a72fc7
+a21b7f2e750c6a0eb8fed649f6fcb62984eb136eca5aa0cf8b8a97364168f81c8ca8f964f709c3
+480ed8342e82b622d44999dda645db4e69a25ca5cc0417dad2f36d19f7ce49fc2d89c0dee03a11
+0936c13f1be8958ae08ce1d860895d8e632ae8e049962be0e2ccd5c1f7bcc8b3c316a04f383882
+45d8bf7f53ef33eff6c7bbff5d2449f0243647e37a3c5939dcb5e87096587e21b688a51b70f1c6
+e991835bc74495a8de2c5e3bd7a6e627910d9cee736251ebff0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%!FontType1-1.1 f-1-0 1.0
+11 dict begin
+/FontName /f-1-0 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/FontBBox {0 -12 457 665 } readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 1 /uni0065 put
+dup 2 /uni0036 put
+dup 3 /uni0030 put
+dup 4 /uni002D put
+dup 5 /uni0037 put
+dup 6 /uni0062 put
+dup 7 /uni0020 put
+dup 8 /uni0034 put
+dup 9 /uni0033 put
+readonly def
+currentdict end
+currentfile eexec
+f983ef0097ece636fb4a96c74d26ab84185f6dfa4a16a7a1c27bbe3f1156aea698df336d20b467
+b10e7f33846656653c5ac6962759d3056cbdb3190bac614b984bf5a132dc418192443014ba63de
+800d392b6fea026574bb2535fd7bb5338f35bf15a88ea328fdaa49670c7852e3d060f3c5d6b07f
+2ef6d0f22646c5d18e19a2ae3ee120390f6dd96f76dcf1e127de5e9299077a00c17c0d71e36e5b
+9d5ec58fceda57739a6a4214d4b79d6c48d2784b60c320323c7acddddf34db833cac0cf109f799
+69d114a330d372e5c978a66acc84e3fe5557f6240856a013ffaa0199444e5c5036f775eba4a5c5
+8cde66cf604b9aca2178431127b8a1ff7ed633a65c04600af5f573483112251caca7670b56325c
+dedbcd3a2fcc3d5b01771869c6979972f9896b238fe17fc314037c7e13f3518bece91746184b5e
+12f73265e044c15462a6c3348e9c740515971b4ce4375aaa209975b49f64bd8cbc7ec0a5797893
+692e02607ca54d5b1c284762860d86e8eaaa2e0c7cb945b4d2067ecc3b6833c709a701440df75c
+b476f5cb1debeb4f07063d478a1d79cb9b0fe5afcb7eae5c8960f388181061dfb4f858bda99a6c
+2bc3ff7b16776ab92dad29de482a8af9b1d29d58f71df1f9d0ccd55fcfa35a542d7f205b6a8969
+808dfaee1433d47b77e95ad5a547dcae946340557aed19738b70f7978b5505ace6ac3bdb5d0182
+8343f6ed09cb89edce53e871f79c9827a76ac5c2fd0e6ab99529ec7890494440fa06529d3545ac
+f1a4cd5b1c4cb94324fffa4c637d9d8057c309835ec2ca9b0f17e171f39808cd58170482c9787c
+4347cb0eb985d72f916958234bfccbc368ba388fe3f7d003875bd2a710ac5ac35fcb8104d09459
+cf79dc3ed1158b640437271bf2cd8357d54efee9c3f0ec8ab1700a3601f462fe2a00e017d8c596
+27935598f08bfe0387b042985c3caf2cfc527eb5f874133f39a9704e7aea8b8ff0395557187052
+bd4954648ed848e680aae5f81e045802ccee17c2533c194f497c22d2855bd97472bb6f23b283b9
+3370b07c82169d71bb76457d1a1446d88bfb9cd98e0a655c190cfe11563d2a3d51b1ba5abf1578
+6fcf464ab0b7b8efe693ac54ebde9effc83e4168467a22aedbdbf3e7770b880a7a56825d9d8120
+153fd0683ac043481ea5bb2535dedcb5b6b49f6bdc73ecf46036c9ad0068a6276715147658012b
+1e003c8b8b90d677d98e65877ca29d7444659164486e0480f1872b0c648c19d232758134472ff7
+29a90f338fd86d31c2703dac2ca374d15c9ba4b262fb8f30945b6a0e056ca45763a6efda4b7f88
+cb6e0b728db32d331e03f8b8c45740f63a4cb89e748bd57931c4e6b1ad4268031ad3acabfb3cc1
+ea72ed08f7937ce32b461cdaaa5c5d3688643f1d09798dec1b0ce7e80a93f88a7851e4425f2697
+afde8de0f1ffdd58458d37902c533ecf1ef2168513805934af41ce296d151c4845ac3c3f6a59ad
+f64c017c814a58e00b4b28f054ce24582eba311e87eae115e45352521b0760e16f9e4b1e8bb971
+1d3a655fe0215a60fa8bcfadd4970089634ced5517db1e5190fe30c419e0dcdba952cf54174413
+1de7ef9fb09cf28021b7a66172511e0af72bd8a665f885113cd2e2e255527aa345d44784d8ebf3
+7f30b74be0c81104ab415e18ae90a207f9257a8ea2dc09b957ac2824f867ea13a323a10e259bbb
+2787c1f9a39e77605302355c38ff168bc798905c0402baaa9623c22e958a4a3471439adeed36e5
+429ae2a34d54d7d400a814c12c00adc46fee82882d5940bb89a186b9dad73a128bfd1a59f6f506
+ace6359e0ee15ecc9c431d1ca0d929e223ff1903cafc6c43a03b1d5e8304c2b36f8c63b5f818f1
+36c9b0525b95931d6f8636ad30a69eea6bd6f30bc7668aa632b3f5e62dd6079aae65441ffae515
+11d11bf9adae2803f298e3d9ea3f14249e86b4fc4ac0b7ef2a0cc7d50000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%!FontType1-1.1 f-2-0 1.0
+11 dict begin
+/FontName /f-2-0 def
+/PaintType 0 def
+/FontType 1 def
+/FontMatrix [0.001 0 0 0.001 0 0] readonly def
+/FontBBox {0 -175 491 706 } readonly def
+/Encoding 256 array
+0 1 255 {1 index exch /.notdef put} for
+dup 1 /uni0070 put
+dup 2 /uni0065 put
+dup 3 /uni0072 put
+dup 4 /uni0069 put
+dup 5 /uni006F put
+dup 6 /uni0064 put
+dup 7 /uni0063 put
+dup 8 /uni0020 put
+dup 9 /uni0062 put
+dup 10 /uni0061 put
+dup 11 /uni0073 put
+dup 12 /uni0074 put
+dup 13 /uni0075 put
+readonly def
+currentdict end
+currentfile eexec
+f983ef0097ece636fb4a96c74d26ab84185f6dfa4a16a7a1c27bbe3f1156aea698df336d20b467
+b10e7f33846656653c5ac6962759d3056cbdb3190bac614b984bf5a132dc418192443014ba63de
+800d392b6fea026574bb2535fd7bb5338f35bf15a88ea328fdaa49670c7852e3d060f3c5d6b07f
+2ef6d0f22646c5d18e19a2ae3ee120390f6dd96f76dcf1e127de5e9299077a00c17c0d71e36e5b
+9d5ec58fceda57739a6a4214d4b79d6c48d2784b60c320323c7acddddf34db833cac0cf109f799
+69d114a330d372e5c978a66acc84e3fe5557f6240856a013ffaa0199444e5c5036f775eba4a5c5
+8cde66cf604b9aca2178431127b8a1ff7ed633a65c04600af5f573483112251caca32d24105429
+52dab918f902a7b3fad186ee064ddb928b9c9f312c96f99cb068ec99b0f5a9ff000f3a3db99444
+7534379869a8d2d92324740c65e4083ca72ec2190940122da3d4c49e6fa0446853a63ad583d58d
+6d911d937ce71716963dbf5d5f80e30070c954aa9dcf182ab3e12caf133ac8f098f3a1b8c0d41c
+e1a3550dcef93ff0d4031268204167d107be252cd1a4637df334e6abe99922e23675d242cbf119
+febb208761ef900b3b3a2aaeea67aa2d35230cd10568cadecdcaf9a2dd5b7ed3ea75376666e7e0
+215b48e816002b6bf51b3f92f4e3681ff31164b0f759243548b58d1e3d92ad9c26addfce316691
+e43ce215b89b59b1fcde5c8547cacfafec5c29a6d62af29f8b4776b84129978bce9740e317ec84
+03ba80538a2bb5168b9a4cfdafe69911bbfc5cc48d09f4f84ea8d2f8b776848b7d27f47f205ee9
+53887a3cfaf7e5e7d7fa9589c7f6bb8f09a8b8a41108cc6507e89b97158ead4a6c04fc09770214
+280c0b9ef589f326fe736ebd3a7b1f633dbd4a7159ee02067cfe1b31527ffe471db272756ac8e8
+86e248964b97170fc084d9bb771b0a05bf5b3b5d4f5ae0d1eee20339c0743fae68fa44a9be85b8
+4cb832782f7981d010942908e648413872be2944d28c968a4482da2194f5fa7c36f5c0de284f84
+ab8752aa62ccbfa5b26bec799843fb1736becbc731f6d398fc36baa222171bfa9c845f5b01c07e
+907bfce3f2558fd1c5ada2da3dfd2b9af3254267fb48af285f5684ea632d8a1153488ea413f4c6
+73d49cb0bea000211b3e8e1478fa5293c1a302733391e491fa41b80332df9ebedb1cc2437a80b8
+17a1782426a991a78dec9a933ec857dc0ea3375dde2c26cc4da2e60affe5db59e58ae4b7bb01cb
+b85afd46ed46ccad373c0625a78382100f7580f4ce4fbbf273df2575d6c87a5a5d78e3927cd30f
+55423b8f13a7ada257d9fb10e29266d607a4147b0b67bbeb37e27d7597d680ca70db457a4acf38
+6c0e1fa177e0177526449b32db93ea47bf3e5574010f7539a942263648cb4f326a28a498c707fe
+6d4a8b1bff5f3611ae3b6adda9a71e17a35f8203d0adea0246cf251c1f5b805c2cbb324c90207b
+01a0c65f2bcf1bba7a9f91ae2ee744b8781daa427aae8b7ab9e950f090273df206bef50c4fcb0f
+c2c1ac9437520f7cf4b41e3c0db130adabbade735e2c711a6c1caccfe47e734f156c5668fb313e
+5b92f69d08682555188655bee2ab6cd512124d381ddb9dbe2a0a4abff013ab63e68a7f87759f0d
+5cd00fa0d530d84f9f00dd7bcd3924408650605b5825b56c4b98f24d97e18bdba5426ddea48a27
+2cba99828f75eb0fa2e564108836860f2be2f38474446c093537ace2e4d161ca32b78e39ca5e58
+d658c1b40fa5d58c8c411a5235fef08b210c28913d7b5ec51a43664b2e513e408d67ff7af01a5d
+55ea941912d92d1e51ef6a0666a9c4adf711502af427398b9ed71a7fd592caa0fcc7004217ed13
+e9c34323eb771d6cea787a8673557c8312473c93f36ab0eb45dc9d187304935813227740df01b5
+6bd64cc39f07529e371a2a3a5703f1df04e20cb939bf5761dbf5b7bb46bf818f30f4c8565896ad
+0597c2fb3b8622447a8296003f89871739082ffd3fda8e3822c16cd53fcde0443a0f327ae4f97e
+899b495e0a490fb8805e0b32e85db0653278a7ec4d65d2484218cb438c82bb59e26ebbf0cc7cc9
+b77825695bd957f278b8a3b8225865026de1782a65c6e2b0ac74fb6cd35586c297aca20ffe91ea
+b6dfcd84e2c5564a865136ed699db73eb5f346092459c7f04dc8b6396fa2a43a2e7da3f8e2fc51
+99cc93c6a596bd9ef07bf6096490ec656876a8370e2e70f3b6231e98cbb850caeb4a8a53d891c0
+01c437b23150a5d29c4ec96c03de9a897984bb441d9683b6d5fc198027cba14bb0126a74fd7c94
+a5c14fa02a44853982e7577b020749486598ef6b768f5f32c7e4cf3e87c88ad5fdcdc2723b4100
+8e70ba62cfbd821f00014373b52a95d2c79f96e28a1d1973959639cc4ec34ba420588ca5a47e32
+0bccf8777c2f414b66dad10e92f9aac3ee248c38487f8367cd240f67ef0a036df2d4699ee3c824
+89cf670acc3d72c6443850af8732a440e26799009fb398b9505d3cfe01005554384cedb80df4ff
+a13a7f46b699f7091d8036f13d07bdd788f70ff6c87e758089df2fe848e9caeca58fa0900ff5aa
+8083f343c8d0a5260133a7a3e58cce6f126fa324f16d26d29419310efc5e2d0a33514964d23f09
+38912feb87a88ea582c4d0fc69539a3cb16186ea4ac251173121c6f576ea17e78ffc95fa663295
+3069b7240be7c780784fe7184e0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000
+cleartomark
+%%Page: 1 1
+%%BeginPageSetup
+%%PageBoundingBox: 0 -1 105 71
+%%EndPageSetup
+q 0 -1 105 72 rectclip q
+0 70.286 105 -71 re W n
+0 g
+0.79937 w
+0 J
+0 j
+[] 0.0 d
+4 M q 1 0 0 -1 0 70.285759 cm
+1.949 11.344 m 1.949 25.516 l 10.453 25.516 l S Q
+1.949 57.376 m 1.066 57.376 0.352 58.09 0.352 58.973 c 0.352 59.856
+1.066 60.575 1.949 60.575 c 2.832 60.575 3.547 59.856 3.547 58.973 c
+3.547 58.09 2.832 57.376 1.949 57.376 c h
+1.949 57.376 m f*
+0.399685 w
+q 0.000000000000000061 -1 -1 -0.000000000000000061 0 70.285759 cm
+12.91 -1.949 m 12.91 -1.066 12.195 -0.352 11.312 -0.352 c 10.43 -0.352
+9.711 -1.066 9.711 -1.949 c 9.711 -2.832 10.43 -3.547 11.312 -3.547 c
+12.195 -3.547 12.91 -2.832 12.91 -1.949 c h
+12.91 -1.949 m S Q
+0.8 w
+q 1 0 0 -1 0 70.285759 cm
+1.949 0.004 m 1.949 5.672 l S Q
+1.949 62.766 m 0.352 65.532 l 3.551 65.532 l h
+1.949 62.766 m f*
+0.4 w
+q 0.000000000000000061 -1 -1 -0.000000000000000061 0 70.285759 cm
+7.52 -1.949 m 4.754 -0.352 l 4.754 -3.551 l h
+7.52 -1.949 m S Q
+BT
+9.6 0 0 9.6 13.288583 41.934978 Tm
+/f-0-0 1 Tf
+[<010203>-1<04>-1<05>7<02>-1<06060705>]TJ
+ET
+BT
+9.6 0 0 9.6 27.46181 24.927019 Tm
+/f-0-0 1 Tf
+[<0807030802>-1<05>1<09>-1<0a>1<0b>1<0c>1<09>-1<0d0e>-1<04>-1<0e09>-1<0f>1<10>]TJ
+ET
+0 0.501961 0 rg
+BT
+8.8 0 0 8.8 27.46181 16.423161 Tm
+/f-1-0 1 Tf
+<010203040303030506070809>Tj
+ET
+0 g
+0.8 w
+q 1 0 0 -1 0 70.285759 cm
+18.957 34.02 m 18.957 68.035 l S Q
+18.957 0.403 m 17.359 3.172 l 20.559 3.172 l h
+18.957 0.403 m f*
+0.4 w
+q -0.0000000235186 -1 -1 0.0000000235186 0 70.285759 cm
+69.883 -18.957 m 67.113 -17.359 l 67.113 -20.559 l h
+69.883 -18.957 m S Q
+BT
+6.4 0 0 6.4 24.627167 2.249919 Tm
+/f-2-0 1 Tf
+[<01>1<02>-1<03>1<04>-1<05>1<0604>-1<07>1<0809>-1<03>10<050a0607>1<0a0b
+0c>]TJ
+ET
+0.8 w
+q 1 0 0 -1 0 70.285759 cm
+24.629 34.02 79.367 25.512 re S Q
+BT
+6.4 0 0 6.4 7.619292 61.777507 Tm
+/f-2-0 1 Tf
+[<060a0c>-1<0a08>-1<0b050d>-1<03>10<07>1<02>]TJ
+ET
+Q Q
+showpage
+%%Trailer
+count op_count sub {pop} repeat
+countdictstack dict_count sub {end} repeat
+cairo_eps_state restore
+%%EOF
diff --git a/svg/proto-sensor.svg b/svg/proto-sensor.svg
new file mode 100644
index 0000000..ad889d0
--- /dev/null
+++ b/svg/proto-sensor.svg
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="145.27559"
+ height="102.75591"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="proto-sensor.svg">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="TriangleOutM"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="TriangleOutM"
+ style="overflow:visible">
+ <path
+ id="path3906"
+ d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+ transform="scale(0.4,0.4)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Mend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Mend"
+ style="overflow:visible">
+ <path
+ id="path3788"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="scale(-0.6,-0.6)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="DotM"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="DotM"
+ style="overflow:visible">
+ <path
+ id="path3825"
+ d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+ transform="matrix(0.4,0,0,0.4,2.96,0.4)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="TriangleOutM"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="TriangleOutM-9"
+ style="overflow:visible">
+ <path
+ inkscape:connector-curvature="0"
+ id="path3906-0"
+ d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+ transform="scale(0.4,0.4)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="9.3837991"
+ inkscape:cx="26.387515"
+ inkscape:cy="89.382098"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ units="mm"
+ inkscape:window-width="1131"
+ inkscape:window-height="791"
+ inkscape:window-x="269"
+ inkscape:window-y="60"
+ inkscape:window-maximized="0">
+ <inkscape:grid
+ type="xygrid"
+ id="grid2985"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true"
+ units="mm"
+ spacingx="1mm"
+ spacingy="1mm" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-949.60631)">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.99921262;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#DotM)"
+ d="m 10.629921,970.86611 0,17.71653 10.629922,0"
+ id="path2987"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutM)"
+ d="m 10.629921,956.69288 0,7.08661"
+ id="path4201"
+ inkscape:connector-curvature="0" />
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Delicious;-inkscape-font-specification:Delicious Medium"
+ x="24.80315"
+ y="992.12598"
+ id="text4761"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4763"
+ x="24.80315"
+ y="992.12598">controller</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:12px;font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Delicious;-inkscape-font-specification:Delicious Medium"
+ x="42.519684"
+ y="1013.3859"
+ id="text4765"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ x="42.519684"
+ y="1013.3859"
+ id="tspan4769">sensor 123 data 67</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:11px;font-style:normal;font-variant:normal;font-weight:500;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#008000;fill-opacity:1;stroke:none;font-family:Inconsolata;-inkscape-font-specification:Inconsolata Medium"
+ x="42.519684"
+ y="1024.0157"
+ id="text4773"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4775"
+ x="42.519684"
+ y="1024.0157">e60-0007b 43</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutM)"
+ d="m 31.889764,999.21261 -1e-6,42.51959"
+ id="path4201-5"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <text
+ xml:space="preserve"
+ style="font-size:8px;font-style:italic;font-variant:normal;font-weight:500;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Delicious;-inkscape-font-specification:Sans Italic"
+ x="38.976379"
+ y="1041.7323"
+ id="text4801"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4803"
+ x="38.976379"
+ y="1041.7323">periodic broadcast</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 38.976378,999.21261 99.212602,0 0,31.88979 -99.212603,-10e-5 z"
+ id="path4805"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ <text
+ xml:space="preserve"
+ style="font-size:8px;font-style:italic;font-variant:normal;font-weight:500;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Delicious;-inkscape-font-specification:Sans Italic"
+ x="17.716536"
+ y="967.32281"
+ id="text4801-9"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4803-1"
+ x="17.716536"
+ y="967.32281">data source</tspan></text>
+ </g>
+</svg>