summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Schanzenbach <schanzen@gnunet.org>2023-10-07 21:04:30 +0200
committerMartin Schanzenbach <schanzen@gnunet.org>2023-10-07 21:04:30 +0200
commite5b42badb7450aee5367e70294a0f8b1595945eb (patch)
treed83af1c028e783626658013c97b8fa0c18c0c3bd
parentbb46cff2dc6e7bbffc8a2e8c32281a31a03f767f (diff)
downloadgnunet-handbook-e5b42badb7450aee5367e70294a0f8b1595945eb.tar.gz
gnunet-handbook-e5b42badb7450aee5367e70294a0f8b1595945eb.zip
update subsystem dependencies
-rw-r--r--.gitignore1
-rw-r--r--images/gnunet-arch-full.svg893
-rw-r--r--images/subsystem_deps.dot126
3 files changed, 484 insertions, 536 deletions
diff --git a/.gitignore b/.gitignore
index 7e12c68..873fc11 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
1**/__pycache__/ 1**/__pycache__/
2_build 2_build
3.DS_Store
diff --git a/images/gnunet-arch-full.svg b/images/gnunet-arch-full.svg
index 766f2b8..9e6414c 100644
--- a/images/gnunet-arch-full.svg
+++ b/images/gnunet-arch-full.svg
@@ -1,648 +1,469 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 2<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
3 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> 3 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
4<!-- Generated by graphviz version 2.38.0 (20140413.2041) 4<!-- Generated by graphviz version 9.0.0 (20230911.1827)
5 --> 5 -->
6<!-- Title: dependencies Pages: 1 --> 6<!-- Title: dependencies Pages: 1 -->
7<svg width="1277pt" height="836pt" 7<svg width="1090pt" height="692pt"
8 viewBox="0.00 0.00 1276.81 836.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> 8 viewBox="0.00 0.00 1089.75 692.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
9<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 832)"> 9<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 688)">
10<title>dependencies</title> 10<title>dependencies</title>
11<polygon fill="white" stroke="none" points="-4,4 -4,-832 1272.81,-832 1272.81,4 -4,4"/> 11<polygon fill="white" stroke="none" points="-4,4 -4,-688 1085.75,-688 1085.75,4 -4,4"/>
12<!-- voting --> 12<!-- secretsharing -->
13<g id="node1" class="node"><title>voting</title> 13<g id="node1" class="node">
14<polygon fill="none" stroke="black" points="120.944,-743.562 80,-756 39.0559,-743.562 39.0942,-723.438 120.906,-723.438 120.944,-743.562"/> 14<title>secretsharing</title>
15<text text-anchor="middle" x="80" y="-734.3" font-family="Times,serif" font-size="14.00">voting</text> 15<ellipse fill="none" stroke="black" cx="810.19" cy="-594" rx="59.54" ry="18"/>
16<text text-anchor="middle" x="810.19" y="-588.95" font-family="Times,serif" font-size="14.00">secretsharing</text>
16</g> 17</g>
17<!-- consensus --> 18<!-- consensus -->
18<g id="node2" class="node"><title>consensus</title> 19<g id="node2" class="node">
19<ellipse fill="none" stroke="black" cx="112" cy="-594" rx="46.2923" ry="18"/> 20<title>consensus</title>
20<text text-anchor="middle" x="112" y="-590.3" font-family="Times,serif" font-size="14.00">consensus</text> 21<ellipse fill="none" stroke="black" cx="810.19" cy="-522" rx="48.28" ry="18"/>
21</g> 22<text text-anchor="middle" x="810.19" y="-516.95" font-family="Times,serif" font-size="14.00">consensus</text>
22<!-- voting&#45;&gt;consensus -->
23<g id="edge1" class="edge"><title>voting&#45;&gt;consensus</title>
24<path fill="none" stroke="black" d="M121.028,-728.482C145.315,-721.103 174.155,-707.724 189,-684 197.487,-670.436 196.445,-662.162 189,-648 180.933,-632.654 166.19,-620.887 151.748,-612.383"/>
25<polygon fill="black" stroke="black" points="153.308,-609.247 142.857,-607.508 149.942,-615.385 153.308,-609.247"/>
26</g>
27<!-- identity -->
28<g id="node3" class="node"><title>identity</title>
29<ellipse fill="none" stroke="black" cx="282" cy="-450" rx="37.8943" ry="18"/>
30<text text-anchor="middle" x="282" y="-446.3" font-family="Times,serif" font-size="14.00">identity</text>
31</g> 23</g>
32<!-- voting&#45;&gt;identity --> 24<!-- secretsharing&#45;&gt;consensus -->
33<g id="edge2" class="edge"><title>voting&#45;&gt;identity</title> 25<g id="edge1" class="edge">
34<path fill="none" stroke="black" d="M58.5145,-723.377C45.8789,-714.02 31.0387,-700.353 24,-684 5.02284,-639.911 -2.50901,-616.016 24,-576 46.6577,-541.798 71.8444,-557.396 109,-540 158.351,-516.894 214.207,-487.564 248.77,-469.032"/> 26<title>secretsharing&#45;&gt;consensus</title>
35<polygon fill="black" stroke="black" points="250.781,-471.924 257.931,-464.105 247.466,-465.759 250.781,-471.924"/> 27<path fill="none" stroke="black" d="M810.19,-575.7C810.19,-568.41 810.19,-559.73 810.19,-551.54"/>
28<polygon fill="black" stroke="black" points="813.69,-551.62 810.19,-541.62 806.69,-551.62 813.69,-551.62"/>
36</g> 29</g>
37<!-- cadet --> 30<!-- cadet -->
38<g id="node4" class="node"><title>cadet</title> 31<g id="node7" class="node">
39<ellipse fill="none" stroke="black" cx="538" cy="-450" rx="29.4969" ry="18"/> 32<title>cadet</title>
40<text text-anchor="middle" x="538" y="-446.3" font-family="Times,serif" font-size="14.00">cadet</text> 33<ellipse fill="none" stroke="black" cx="714.19" cy="-378" rx="30.37" ry="18"/>
41</g> 34<text text-anchor="middle" x="714.19" y="-372.95" font-family="Times,serif" font-size="14.00">cadet</text>
42<!-- voting&#45;&gt;cadet -->
43<g id="edge3" class="edge"><title>voting&#45;&gt;cadet</title>
44<path fill="none" stroke="black" d="M72.0051,-723.243C55.682,-693.149 22.8306,-620.604 57,-576 70.8829,-557.877 390.653,-484.265 500.977,-459.316"/>
45<polygon fill="black" stroke="black" points="501.999,-462.673 510.983,-457.057 500.458,-455.845 501.999,-462.673"/>
46</g>
47<!-- secretsharing -->
48<g id="node5" class="node"><title>secretsharing</title>
49<ellipse fill="none" stroke="black" cx="123" cy="-666" rx="57.3905" ry="18"/>
50<text text-anchor="middle" x="123" y="-662.3" font-family="Times,serif" font-size="14.00">secretsharing</text>
51</g>
52<!-- voting&#45;&gt;secretsharing -->
53<g id="edge4" class="edge"><title>voting&#45;&gt;secretsharing</title>
54<path fill="none" stroke="black" d="M88.4954,-723.17C93.8716,-714.418 100.986,-702.837 107.357,-692.466"/>
55<polygon fill="black" stroke="black" points="110.45,-694.117 112.702,-683.764 104.486,-690.453 110.45,-694.117"/>
56</g> 35</g>
57<!-- consensus&#45;&gt;cadet --> 36<!-- consensus&#45;&gt;cadet -->
58<g id="edge72" class="edge"><title>consensus&#45;&gt;cadet</title> 37<g id="edge41" class="edge">
59<path fill="none" stroke="black" d="M146.507,-581.905C153.275,-579.85 160.34,-577.79 167,-576 236.135,-557.417 256.193,-562.96 324,-540 360.547,-527.625 367.474,-519.056 403,-504 437.068,-489.562 476.509,-474.236 503.927,-463.798"/> 38<title>consensus&#45;&gt;cadet</title>
60<polygon fill="black" stroke="black" points="505.344,-467.004 513.453,-460.185 502.862,-460.459 505.344,-467.004"/> 39<path fill="none" stroke="black" d="M792.27,-504.96C781.79,-494.99 768.79,-481.54 759.19,-468 745.49,-448.71 733.6,-424.65 725.48,-406.42"/>
40<polygon fill="black" stroke="black" points="728.72,-405.09 721.54,-397.3 722.3,-407.87 728.72,-405.09"/>
61</g> 41</g>
62<!-- set --> 42<!-- set -->
63<g id="node24" class="node"><title>set</title> 43<g id="node26" class="node">
64<ellipse fill="none" stroke="black" cx="517" cy="-522" rx="27" ry="18"/> 44<title>set</title>
65<text text-anchor="middle" x="517" y="-518.3" font-family="Times,serif" font-size="14.00">set</text> 45<ellipse fill="none" stroke="black" cx="867.19" cy="-450" rx="27" ry="18"/>
46<text text-anchor="middle" x="867.19" y="-444.95" font-family="Times,serif" font-size="14.00">set</text>
66</g> 47</g>
67<!-- consensus&#45;&gt;set --> 48<!-- consensus&#45;&gt;set -->
68<g id="edge71" class="edge"><title>consensus&#45;&gt;set</title> 49<g id="edge40" class="edge">
69<path fill="none" stroke="black" d="M145.818,-581.678C152.772,-579.596 160.083,-577.583 167,-576 182.24,-572.511 394.44,-541.075 480.815,-528.33"/> 50<title>consensus&#45;&gt;set</title>
70<polygon fill="black" stroke="black" points="481.561,-531.758 490.943,-526.837 480.539,-524.833 481.561,-531.758"/> 51<path fill="none" stroke="black" d="M823.69,-504.41C830.88,-495.59 839.84,-484.58 847.76,-474.86"/>
71</g> 52<polygon fill="black" stroke="black" points="850.38,-477.18 853.98,-467.21 844.96,-472.76 850.38,-477.18"/>
72<!-- dht -->
73<g id="node7" class="node"><title>dht</title>
74<ellipse fill="none" stroke="black" cx="756" cy="-378" rx="27" ry="18"/>
75<text text-anchor="middle" x="756" y="-374.3" font-family="Times,serif" font-size="14.00">dht</text>
76</g>
77<!-- cadet&#45;&gt;dht -->
78<g id="edge51" class="edge"><title>cadet&#45;&gt;dht</title>
79<path fill="none" stroke="black" d="M563.434,-440.833C602.822,-428.186 678.592,-403.856 722.428,-389.78"/>
80<polygon fill="black" stroke="black" points="723.607,-393.078 732.058,-386.688 721.467,-386.413 723.607,-393.078"/>
81</g>
82<!-- core -->
83<g id="node8" class="node"><title>core</title>
84<ellipse fill="none" stroke="black" cx="555" cy="-234" rx="27" ry="18"/>
85<text text-anchor="middle" x="555" y="-230.3" font-family="Times,serif" font-size="14.00">core</text>
86</g>
87<!-- cadet&#45;&gt;core -->
88<g id="edge50" class="edge"><title>cadet&#45;&gt;core</title>
89<path fill="none" stroke="black" d="M539.362,-431.849C542.303,-394.832 549.266,-307.181 552.824,-262.386"/>
90<polygon fill="black" stroke="black" points="556.328,-262.478 553.631,-252.232 549.35,-261.924 556.328,-262.478"/>
91</g>
92<!-- block -->
93<g id="node11" class="node"><title>block</title>
94<polygon fill="none" stroke="black" points="429,-324 385.598,-306 429,-288 472.402,-306 429,-324"/>
95<text text-anchor="middle" x="429" y="-302.3" font-family="Times,serif" font-size="14.00">block</text>
96</g>
97<!-- cadet&#45;&gt;block -->
98<g id="edge52" class="edge"><title>cadet&#45;&gt;block</title>
99<path fill="none" stroke="blue" stroke-dasharray="1,5" d="M522.106,-434.467C511.33,-424.227 497.085,-409.913 486,-396 469.058,-374.736 452.633,-348.272 441.802,-329.75"/>
100<polygon fill="blue" stroke="blue" points="444.702,-327.773 436.674,-320.859 438.638,-331.27 444.702,-327.773"/>
101</g>
102<!-- secretsharing&#45;&gt;consensus -->
103<g id="edge5" class="edge"><title>secretsharing&#45;&gt;consensus</title>
104<path fill="none" stroke="black" d="M120.281,-647.697C119.069,-639.983 117.612,-630.712 116.261,-622.112"/>
105<polygon fill="black" stroke="black" points="119.698,-621.44 114.688,-612.104 112.783,-622.526 119.698,-621.44"/>
106</g> 53</g>
107<!-- fs --> 54<!-- fs -->
108<g id="node6" class="node"><title>fs</title> 55<g id="node3" class="node">
109<polygon fill="none" stroke="black" points="100,-527.562 73,-540 46,-527.562 46.0252,-507.438 99.9748,-507.438 100,-527.562"/> 56<title>fs</title>
110<text text-anchor="middle" x="73" y="-518.3" font-family="Times,serif" font-size="14.00">fs</text> 57<ellipse fill="none" stroke="black" cx="151.19" cy="-450" rx="27" ry="18"/>
111</g> 58<text text-anchor="middle" x="151.19" y="-444.95" font-family="Times,serif" font-size="14.00">fs</text>
112<!-- fs&#45;&gt;identity -->
113<g id="edge12" class="edge"><title>fs&#45;&gt;identity</title>
114<path fill="none" stroke="black" d="M100.21,-509.307C104.786,-507.46 109.507,-505.625 114,-504 164.764,-485.643 178.566,-484.387 230,-468 233.971,-466.735 238.108,-465.404 242.237,-464.067"/>
115<polygon fill="black" stroke="black" points="243.351,-467.386 251.778,-460.965 241.186,-460.729 243.351,-467.386"/>
116</g> 59</g>
117<!-- fs&#45;&gt;cadet --> 60<!-- dht -->
118<g id="edge9" class="edge"><title>fs&#45;&gt;cadet</title> 61<g id="node4" class="node">
119<path fill="none" stroke="black" d="M100.01,-516.934C178.772,-505.077 408.387,-470.512 499.803,-456.75"/> 62<title>dht</title>
120<polygon fill="black" stroke="black" points="500.372,-460.204 509.74,-455.254 499.33,-453.282 500.372,-460.204"/> 63<ellipse fill="none" stroke="black" cx="425.19" cy="-306" rx="27" ry="18"/>
64<text text-anchor="middle" x="425.19" y="-300.95" font-family="Times,serif" font-size="14.00">dht</text>
121</g> 65</g>
122<!-- fs&#45;&gt;dht --> 66<!-- fs&#45;&gt;dht -->
123<g id="edge6" class="edge"><title>fs&#45;&gt;dht</title> 67<g id="edge2" class="edge">
124<path fill="none" stroke="black" d="M100.081,-509.411C132.571,-495.433 183.726,-473.164 192,-468 213.144,-454.802 212.035,-441.688 235,-432 322.67,-395.017 615.27,-383.079 719.081,-379.955"/> 68<title>fs&#45;&gt;dht</title>
125<polygon fill="black" stroke="black" points="719.199,-383.453 729.093,-379.664 718.996,-376.456 719.199,-383.453"/> 69<path fill="none" stroke="black" d="M164.57,-433.89C184.88,-411.27 222.96,-370.15 240.19,-360 286.76,-332.58 348.34,-318.65 387.37,-312.11"/>
70<polygon fill="black" stroke="black" points="387.89,-315.57 397.22,-310.55 386.8,-308.66 387.89,-315.57"/>
71</g>
72<!-- core -->
73<g id="node5" class="node">
74<title>core</title>
75<ellipse fill="none" stroke="black" cx="397.19" cy="-162" rx="27" ry="18"/>
76<text text-anchor="middle" x="397.19" y="-156.95" font-family="Times,serif" font-size="14.00">core</text>
126</g> 77</g>
127<!-- fs&#45;&gt;core --> 78<!-- fs&#45;&gt;core -->
128<g id="edge7" class="edge"><title>fs&#45;&gt;core</title> 79<g id="edge3" class="edge">
129<path fill="none" stroke="black" d="M65.0877,-507.277C55.5997,-488.827 42.6595,-455.618 57,-432 93.0072,-372.699 269.007,-312.27 334,-288 397.135,-264.424 474.404,-248.714 518.841,-240.869"/> 80<title>fs&#45;&gt;core</title>
130<polygon fill="black" stroke="black" points="519.614,-244.287 528.871,-239.134 518.42,-237.39 519.614,-244.287"/> 81<path fill="none" stroke="black" d="M156.26,-431.9C169.6,-389.68 209.51,-279.32 279.19,-216 302.53,-194.78 335.79,-180.89 361.05,-172.67"/>
82<polygon fill="black" stroke="black" points="362.06,-176.03 370.58,-169.74 360,-169.34 362.06,-176.03"/>
131</g> 83</g>
132<!-- datastore --> 84<!-- datastore -->
133<g id="node9" class="node"><title>datastore</title> 85<g id="node6" class="node">
134<ellipse fill="none" stroke="black" cx="108" cy="-450" rx="42.4939" ry="18"/> 86<title>datastore</title>
135<text text-anchor="middle" x="108" y="-446.3" font-family="Times,serif" font-size="14.00">datastore</text> 87<ellipse fill="none" stroke="black" cx="44.19" cy="-378" rx="44.19" ry="18"/>
88<text text-anchor="middle" x="44.19" y="-372.95" font-family="Times,serif" font-size="14.00">datastore</text>
136</g> 89</g>
137<!-- fs&#45;&gt;datastore --> 90<!-- fs&#45;&gt;datastore -->
138<g id="edge8" class="edge"><title>fs&#45;&gt;datastore</title> 91<g id="edge4" class="edge">
139<path fill="none" stroke="black" d="M79.9149,-507.17C84.2467,-498.507 89.9645,-487.071 95.1098,-476.78"/> 92<title>fs&#45;&gt;datastore</title>
140<polygon fill="black" stroke="black" points="98.2763,-478.274 99.618,-467.764 92.0153,-475.143 98.2763,-478.274"/> 93<path fill="none" stroke="black" d="M132.55,-436.81C117.02,-426.65 94.54,-411.94 76.15,-399.91"/>
94<polygon fill="black" stroke="black" points="78.24,-397.1 67.96,-394.55 74.41,-402.95 78.24,-397.1"/>
141</g> 95</g>
142<!-- ats --> 96<!-- fs&#45;&gt;cadet -->
143<g id="node10" class="node"><title>ats</title> 97<g id="edge5" class="edge">
144<ellipse fill="none" stroke="black" cx="385" cy="-90" rx="27" ry="18"/> 98<title>fs&#45;&gt;cadet</title>
145<text text-anchor="middle" x="385" y="-86.3" font-family="Times,serif" font-size="14.00">ats</text> 99<path fill="none" stroke="black" d="M176.04,-442.52C190.34,-438.99 208.68,-434.78 225.19,-432 389.69,-404.29 587.88,-388.01 672.55,-381.85"/>
100<polygon fill="black" stroke="black" points="672.73,-385.34 682.46,-381.14 672.23,-378.36 672.73,-385.34"/>
146</g> 101</g>
147<!-- fs&#45;&gt;ats --> 102<!-- transport -->
148<g id="edge10" class="edge"><title>fs&#45;&gt;ats</title> 103<g id="node8" class="node">
149<path fill="none" stroke="black" d="M60.2844,-507.296C39.3694,-483.267 0,-431.113 0,-379 0,-379 0,-379 0,-233 0,-159.097 252.872,-111.714 348.742,-96.4063"/> 104<title>transport</title>
150<polygon fill="black" stroke="black" points="349.504,-99.8296 358.84,-94.8203 348.418,-92.9144 349.504,-99.8296"/> 105<ellipse fill="none" stroke="black" cx="339.19" cy="-90" rx="43.67" ry="18"/>
106<text text-anchor="middle" x="339.19" y="-84.95" font-family="Times,serif" font-size="14.00">transport</text>
151</g> 107</g>
152<!-- fs&#45;&gt;block --> 108<!-- fs&#45;&gt;transport -->
153<g id="edge11" class="edge"><title>fs&#45;&gt;block</title> 109<g id="edge6" class="edge">
154<path fill="none" stroke="blue" stroke-dasharray="1,5" d="M99.0792,-507.426C116.81,-497.613 140.343,-483.417 159,-468 175.732,-454.174 174.815,-445.258 192,-432 259.224,-380.139 351.062,-338.689 398.245,-319.166"/> 110<title>fs&#45;&gt;transport</title>
155<polygon fill="blue" stroke="blue" points="399.679,-322.361 407.611,-315.337 397.03,-315.881 399.679,-322.361"/> 111<path fill="none" stroke="black" d="M144.27,-432.28C134.07,-406.06 116.19,-353.46 116.19,-307 116.19,-307 116.19,-307 116.19,-233 116.19,-151.97 222.23,-115.17 288.07,-100.13"/>
112<polygon fill="black" stroke="black" points="288.56,-103.61 297.58,-98.06 287.07,-96.77 288.56,-103.61"/>
156</g> 113</g>
157<!-- dht&#45;&gt;core --> 114<!-- identity -->
158<g id="edge42" class="edge"><title>dht&#45;&gt;core</title> 115<g id="node9" class="node">
159<path fill="none" stroke="black" d="M780.722,-370.233C802.496,-362.816 832.877,-348.569 847,-324 854.974,-310.128 857.48,-300.09 847,-288 810.092,-245.421 650.341,-266.908 596,-252 592.628,-251.075 589.164,-249.944 585.745,-248.709"/> 116<title>identity</title>
160<polygon fill="black" stroke="black" points="586.936,-245.416 576.348,-245.037 584.388,-251.936 586.936,-245.416"/> 117<ellipse fill="none" stroke="black" cx="288.19" cy="-378" rx="39.07" ry="18"/>
118<text text-anchor="middle" x="288.19" y="-372.95" font-family="Times,serif" font-size="14.00">identity</text>
161</g> 119</g>
162<!-- dht&#45;&gt;block --> 120<!-- fs&#45;&gt;identity -->
163<g id="edge44" class="edge"><title>dht&#45;&gt;block</title> 121<g id="edge7" class="edge">
164<path fill="none" stroke="black" d="M730.132,-372.774C681.84,-364.697 574.817,-345.908 486,-324 478.104,-322.052 469.673,-319.694 461.782,-317.363"/> 122<title>fs&#45;&gt;identity</title>
165<polygon fill="black" stroke="black" points="462.742,-313.997 452.157,-314.456 460.718,-320.698 462.742,-313.997"/> 123<path fill="none" stroke="black" d="M172.29,-438.22C193.67,-427.29 227.11,-410.2 252.6,-397.19"/>
124<polygon fill="black" stroke="black" points="253.96,-400.42 261.27,-392.75 250.78,-394.18 253.96,-400.42"/>
125</g>
126<!-- dht&#45;&gt;core -->
127<g id="edge23" class="edge">
128<title>dht&#45;&gt;core</title>
129<path fill="none" stroke="black" d="M411.44,-290.07C403.23,-280.1 393.57,-266.25 389.19,-252 383.12,-232.27 385.52,-209 389.23,-191.21"/>
130<polygon fill="black" stroke="black" points="392.6,-192.14 391.5,-181.61 385.79,-190.53 392.6,-192.14"/>
166</g> 131</g>
167<!-- nse --> 132<!-- nse -->
168<g id="node27" class="node"><title>nse</title> 133<g id="node20" class="node">
169<ellipse fill="none" stroke="black" cx="811" cy="-306" rx="27" ry="18"/> 134<title>nse</title>
170<text text-anchor="middle" x="811" y="-302.3" font-family="Times,serif" font-size="14.00">nse</text> 135<ellipse fill="none" stroke="black" cx="425.19" cy="-234" rx="27" ry="18"/>
136<text text-anchor="middle" x="425.19" y="-228.95" font-family="Times,serif" font-size="14.00">nse</text>
171</g> 137</g>
172<!-- dht&#45;&gt;nse --> 138<!-- dht&#45;&gt;nse -->
173<g id="edge43" class="edge"><title>dht&#45;&gt;nse</title> 139<g id="edge24" class="edge">
174<path fill="none" stroke="black" d="M767.934,-361.811C775.214,-352.546 784.663,-340.52 792.854,-330.094"/> 140<title>dht&#45;&gt;nse</title>
175<polygon fill="black" stroke="black" points="795.663,-332.185 799.089,-322.159 790.159,-327.86 795.663,-332.185"/> 141<path fill="none" stroke="black" d="M425.19,-287.7C425.19,-280.41 425.19,-271.73 425.19,-263.54"/>
142<polygon fill="black" stroke="black" points="428.69,-263.62 425.19,-253.62 421.69,-263.62 428.69,-263.62"/>
176</g> 143</g>
177<!-- datacache --> 144<!-- datacache -->
178<g id="node28" class="node"><title>datacache</title> 145<g id="node21" class="node">
179<polygon fill="none" stroke="black" points="702,-324 637.818,-306 702,-288 766.182,-306 702,-324"/> 146<title>datacache</title>
180<text text-anchor="middle" x="702" y="-302.3" font-family="Times,serif" font-size="14.00">datacache</text> 147<ellipse fill="none" stroke="black" cx="517.19" cy="-234" rx="47.26" ry="18"/>
148<text text-anchor="middle" x="517.19" y="-228.95" font-family="Times,serif" font-size="14.00">datacache</text>
181</g> 149</g>
182<!-- dht&#45;&gt;datacache --> 150<!-- dht&#45;&gt;datacache -->
183<g id="edge45" class="edge"><title>dht&#45;&gt;datacache</title> 151<g id="edge25" class="edge">
184<path fill="none" stroke="black" d="M744.016,-361.465C736.66,-351.93 727.125,-339.57 718.998,-329.034"/> 152<title>dht&#45;&gt;datacache</title>
185<polygon fill="black" stroke="black" points="721.73,-326.846 712.851,-321.066 716.187,-331.121 721.73,-326.846"/> 153<path fill="none" stroke="black" d="M442.49,-291.83C455.25,-282.13 472.91,-268.69 487.86,-257.31"/>
186</g> 154<polygon fill="black" stroke="black" points="489.7,-260.31 495.54,-251.47 485.46,-254.74 489.7,-260.31"/>
187<!-- peerinfo --> 155</g>
188<g id="node29" class="node"><title>peerinfo</title> 156<!-- peerstore -->
189<ellipse fill="none" stroke="black" cx="518" cy="-90" rx="40.0939" ry="18"/> 157<g id="node22" class="node">
190<text text-anchor="middle" x="518" y="-86.3" font-family="Times,serif" font-size="14.00">peerinfo</text> 158<title>peerstore</title>
191</g> 159<ellipse fill="none" stroke="black" cx="541.19" cy="-18" rx="44.7" ry="18"/>
192<!-- dht&#45;&gt;peerinfo --> 160<text text-anchor="middle" x="541.19" y="-12.95" font-family="Times,serif" font-size="14.00">peerstore</text>
193<g id="edge46" class="edge"><title>dht&#45;&gt;peerinfo</title> 161</g>
194<path fill="none" stroke="black" d="M728.828,-376.457C687.438,-374.282 608.033,-364.658 557,-324 495.436,-274.952 504.26,-168.494 512.535,-118.27"/> 162<!-- dht&#45;&gt;peerstore -->
195<polygon fill="black" stroke="black" points="516.027,-118.624 514.32,-108.168 509.133,-117.406 516.027,-118.624"/> 163<g id="edge26" class="edge">
196</g> 164<title>dht&#45;&gt;peerstore</title>
197<!-- hello --> 165<path fill="none" stroke="black" d="M452.3,-304.15C486.96,-301.42 545.77,-290.94 573.19,-252 617.47,-189.1 579.24,-92.59 555.97,-46.01"/>
198<g id="node30" class="node"><title>hello</title> 166<polygon fill="black" stroke="black" points="559.1,-44.43 551.4,-37.15 552.87,-47.64 559.1,-44.43"/>
199<polygon fill="none" stroke="black" points="854,-36 813.614,-18 854,-3.55271e-15 894.386,-18 854,-36"/>
200<text text-anchor="middle" x="854" y="-14.3" font-family="Times,serif" font-size="14.00">hello</text>
201</g>
202<!-- dht&#45;&gt;hello -->
203<g id="edge47" class="edge"><title>dht&#45;&gt;hello</title>
204<path fill="none" stroke="black" d="M782.364,-373.864C833.24,-367.278 942.225,-350.399 968,-324 996.322,-294.992 988,-275.542 988,-235 988,-235 988,-235 988,-161 988,-99.7534 921.245,-54.2239 881.968,-32.736"/>
205<polygon fill="black" stroke="black" points="883.108,-29.3792 872.632,-27.796 879.834,-35.5665 883.108,-29.3792"/>
206</g>
207<!-- transport -->
208<g id="node33" class="node"><title>transport</title>
209<ellipse fill="none" stroke="black" cx="680" cy="-162" rx="42.4939" ry="18"/>
210<text text-anchor="middle" x="680" y="-158.3" font-family="Times,serif" font-size="14.00">transport</text>
211</g> 167</g>
212<!-- core&#45;&gt;transport --> 168<!-- core&#45;&gt;transport -->
213<g id="edge58" class="edge"><title>core&#45;&gt;transport</title> 169<g id="edge33" class="edge">
214<path fill="none" stroke="black" d="M575.083,-221.753C594.251,-211.02 623.495,-194.643 646.244,-181.903"/> 170<title>core&#45;&gt;transport</title>
215<polygon fill="black" stroke="black" points="648.219,-184.809 655.234,-176.869 644.799,-178.701 648.219,-184.809"/> 171<path fill="none" stroke="black" d="M384.6,-145.81C377.36,-137.07 368.07,-125.87 359.79,-115.87"/>
172<polygon fill="black" stroke="black" points="362.59,-113.77 353.52,-108.3 357.2,-118.23 362.59,-113.77"/>
173</g>
174<!-- cadet&#45;&gt;dht -->
175<g id="edge29" class="edge">
176<title>cadet&#45;&gt;dht</title>
177<path fill="none" stroke="black" d="M686.21,-370.22C633.49,-357.45 519.49,-329.84 461.15,-315.71"/>
178<polygon fill="black" stroke="black" points="462.28,-312.38 451.74,-313.43 460.63,-319.19 462.28,-312.38"/>
179</g>
180<!-- cadet&#45;&gt;core -->
181<g id="edge28" class="edge">
182<title>cadet&#45;&gt;core</title>
183<path fill="none" stroke="black" d="M711.87,-359.58C706.46,-326.23 689.82,-253.36 644.19,-216 612.54,-190.1 495.94,-173.81 434.94,-166.87"/>
184<polygon fill="black" stroke="black" points="435.7,-163.44 425.38,-165.81 434.93,-170.39 435.7,-163.44"/>
185</g>
186<!-- transport&#45;&gt;peerstore -->
187<g id="edge39" class="edge">
188<title>transport&#45;&gt;peerstore</title>
189<path fill="none" stroke="black" d="M371.64,-77.75C405.75,-65.93 459.6,-47.27 497.44,-34.16"/>
190<polygon fill="black" stroke="black" points="498.41,-37.53 506.71,-30.95 496.12,-30.91 498.41,-37.53"/>
216</g> 191</g>
217<!-- exit --> 192<!-- exit -->
218<g id="node12" class="node"><title>exit</title> 193<g id="node10" class="node">
219<polygon fill="none" stroke="black" points="952,-540 898,-540 898,-504 952,-504 952,-540"/> 194<title>exit</title>
220<text text-anchor="middle" x="925" y="-518.3" font-family="Times,serif" font-size="14.00">exit</text> 195<ellipse fill="none" stroke="black" cx="795.19" cy="-450" rx="27" ry="18"/>
196<text text-anchor="middle" x="795.19" y="-444.95" font-family="Times,serif" font-size="14.00">exit</text>
221</g> 197</g>
222<!-- exit&#45;&gt;cadet --> 198<!-- exit&#45;&gt;cadet -->
223<g id="edge13" class="edge"><title>exit&#45;&gt;cadet</title> 199<g id="edge8" class="edge">
224<path fill="none" stroke="black" d="M897.67,-514.323C883.742,-511.021 866.513,-507.093 851,-504 752.337,-484.331 635.236,-465.765 576.155,-456.729"/> 200<title>exit&#45;&gt;cadet</title>
225<polygon fill="black" stroke="black" points="576.571,-453.252 566.158,-455.206 575.517,-460.172 576.571,-453.252"/> 201<path fill="none" stroke="black" d="M779.18,-435.17C767.8,-425.33 752.27,-411.91 739.25,-400.66"/>
226</g> 202<polygon fill="black" stroke="black" points="741.71,-398.16 731.86,-394.27 737.13,-403.46 741.71,-398.16"/>
227<!-- tun -->
228<g id="node13" class="node"><title>tun</title>
229<polygon fill="none" stroke="black" points="929,-468 897.995,-450 929,-432 960.005,-450 929,-468"/>
230<text text-anchor="middle" x="929" y="-446.3" font-family="Times,serif" font-size="14.00">tun</text>
231</g>
232<!-- exit&#45;&gt;tun -->
233<g id="edge14" class="edge"><title>exit&#45;&gt;tun</title>
234<path fill="none" stroke="black" d="M925.989,-503.697C926.436,-495.868 926.975,-486.435 927.473,-477.728"/>
235<polygon fill="black" stroke="black" points="930.974,-477.806 928.05,-467.622 923.985,-477.406 930.974,-477.806"/>
236</g>
237<!-- dnsstub -->
238<g id="node14" class="node"><title>dnsstub</title>
239<polygon fill="none" stroke="black" points="1032,-468 978.877,-450 1032,-432 1085.12,-450 1032,-468"/>
240<text text-anchor="middle" x="1032" y="-446.3" font-family="Times,serif" font-size="14.00">dnsstub</text>
241</g>
242<!-- exit&#45;&gt;dnsstub -->
243<g id="edge15" class="edge"><title>exit&#45;&gt;dnsstub</title>
244<path fill="none" stroke="black" d="M951.175,-503.876C967.88,-492.948 989.443,-478.841 1006.1,-467.947"/>
245<polygon fill="black" stroke="black" points="1008.33,-470.67 1014.78,-462.266 1004.49,-464.812 1008.33,-470.67"/>
246</g> 203</g>
247<!-- vpn --> 204<!-- vpn -->
248<g id="node15" class="node"><title>vpn</title> 205<g id="node11" class="node">
249<ellipse fill="none" stroke="black" cx="815" cy="-522" rx="27" ry="18"/> 206<title>vpn</title>
250<text text-anchor="middle" x="815" y="-518.3" font-family="Times,serif" font-size="14.00">vpn</text> 207<ellipse fill="none" stroke="black" cx="415.19" cy="-450" rx="27" ry="18"/>
208<text text-anchor="middle" x="415.19" y="-444.95" font-family="Times,serif" font-size="14.00">vpn</text>
251</g> 209</g>
252<!-- vpn&#45;&gt;cadet --> 210<!-- vpn&#45;&gt;cadet -->
253<g id="edge16" class="edge"><title>vpn&#45;&gt;cadet</title> 211<g id="edge9" class="edge">
254<path fill="none" stroke="black" d="M793.129,-511.116C787.017,-508.578 780.317,-506.003 774,-504 705.524,-482.293 623.185,-465.931 576.085,-457.463"/> 212<title>vpn&#45;&gt;cadet</title>
255<polygon fill="black" stroke="black" points="576.482,-453.979 566.025,-455.678 575.26,-460.871 576.482,-453.979"/> 213<path fill="none" stroke="black" d="M436.16,-438.06C441,-435.82 446.2,-433.65 451.19,-432 527.64,-406.66 620.81,-391.37 673.22,-384.12"/>
256</g> 214<polygon fill="black" stroke="black" points="673.45,-387.62 682.89,-382.81 672.52,-380.68 673.45,-387.62"/>
257<!-- vpn&#45;&gt;tun -->
258<g id="edge18" class="edge"><title>vpn&#45;&gt;tun</title>
259<path fill="none" stroke="black" d="M834.339,-509.125C854.149,-496.961 884.945,-478.051 905.995,-465.126"/>
260<polygon fill="black" stroke="black" points="907.942,-468.038 914.632,-459.822 904.279,-462.072 907.942,-468.038"/>
261</g> 215</g>
262<!-- regex --> 216<!-- regex -->
263<g id="node16" class="node"><title>regex</title> 217<g id="node12" class="node">
264<ellipse fill="none" stroke="black" cx="756" cy="-450" rx="30.5947" ry="18"/> 218<title>regex</title>
265<text text-anchor="middle" x="756" y="-446.3" font-family="Times,serif" font-size="14.00">regex</text> 219<ellipse fill="none" stroke="black" cx="422.19" cy="-378" rx="31.39" ry="18"/>
220<text text-anchor="middle" x="422.19" y="-372.95" font-family="Times,serif" font-size="14.00">regex</text>
266</g> 221</g>
267<!-- vpn&#45;&gt;regex --> 222<!-- vpn&#45;&gt;regex -->
268<g id="edge17" class="edge"><title>vpn&#45;&gt;regex</title> 223<g id="edge10" class="edge">
269<path fill="none" stroke="black" d="M802.198,-505.811C794.496,-496.673 784.53,-484.849 775.827,-474.524"/> 224<title>vpn&#45;&gt;regex</title>
270<polygon fill="black" stroke="black" points="778.307,-472.035 769.186,-466.644 772.954,-476.546 778.307,-472.035"/> 225<path fill="none" stroke="black" d="M416.92,-431.7C417.65,-424.41 418.51,-415.73 419.33,-407.54"/>
226<polygon fill="black" stroke="black" points="422.81,-407.91 420.33,-397.61 415.85,-407.21 422.81,-407.91"/>
271</g> 227</g>
272<!-- regex&#45;&gt;dht --> 228<!-- regex&#45;&gt;dht -->
273<g id="edge57" class="edge"><title>regex&#45;&gt;dht</title> 229<g id="edge32" class="edge">
274<path fill="none" stroke="black" d="M756,-431.697C756,-423.983 756,-414.712 756,-406.112"/> 230<title>regex&#45;&gt;dht</title>
275<polygon fill="black" stroke="black" points="759.5,-406.104 756,-396.104 752.5,-406.104 759.5,-406.104"/> 231<path fill="none" stroke="black" d="M422.93,-359.7C423.24,-352.41 423.61,-343.73 423.96,-335.54"/>
276</g> 232<polygon fill="black" stroke="black" points="427.46,-335.76 424.39,-325.62 420.46,-335.46 427.46,-335.76"/>
277<!-- regex&#45;&gt;block -->
278<g id="edge49" class="edge"><title>regex&#45;&gt;block</title>
279<path fill="none" stroke="blue" stroke-dasharray="1,5" d="M732.22,-438.673C673.767,-413.29 523.157,-347.888 458.838,-319.957"/>
280<polygon fill="blue" stroke="blue" points="459.85,-316.581 449.283,-315.808 457.061,-323.002 459.85,-316.581"/>
281</g>
282<!-- pt -->
283<g id="node17" class="node"><title>pt</title>
284<polygon fill="none" stroke="black" points="986,-599.562 959,-612 932,-599.562 932.025,-579.438 985.975,-579.438 986,-599.562"/>
285<text text-anchor="middle" x="959" y="-590.3" font-family="Times,serif" font-size="14.00">pt</text>
286</g>
287<!-- pt&#45;&gt;cadet -->
288<g id="edge19" class="edge"><title>pt&#45;&gt;cadet</title>
289<path fill="none" stroke="black" d="M931.717,-579.439C928.807,-578.197 925.864,-577.023 923,-576 860.875,-553.809 836.841,-571.725 779,-540 758.602,-528.812 761.339,-515.294 741,-504 688.34,-474.76 619.008,-461.18 576.516,-455.23"/>
290<polygon fill="black" stroke="black" points="576.951,-451.758 566.577,-453.91 576.029,-458.697 576.951,-451.758"/>
291</g>
292<!-- pt&#45;&gt;vpn -->
293<g id="edge20" class="edge"><title>pt&#45;&gt;vpn</title>
294<path fill="none" stroke="black" d="M931.915,-579.834C907.352,-567.894 871.179,-550.309 845.585,-537.868"/>
295<polygon fill="black" stroke="black" points="846.864,-534.598 836.34,-533.373 843.803,-540.893 846.864,-534.598"/>
296</g>
297<!-- dns -->
298<g id="node18" class="node"><title>dns</title>
299<ellipse fill="none" stroke="black" cx="997" cy="-522" rx="27" ry="18"/>
300<text text-anchor="middle" x="997" y="-518.3" font-family="Times,serif" font-size="14.00">dns</text>
301</g>
302<!-- pt&#45;&gt;dns -->
303<g id="edge21" class="edge"><title>pt&#45;&gt;dns</title>
304<path fill="none" stroke="black" d="M966.508,-579.17C971.277,-570.385 977.594,-558.748 983.241,-548.346"/>
305<polygon fill="black" stroke="black" points="986.48,-549.716 988.175,-539.257 980.328,-546.376 986.48,-549.716"/>
306</g>
307<!-- dnsparser -->
308<g id="node19" class="node"><title>dnsparser</title>
309<polygon fill="none" stroke="black" points="1143,-540 1080.49,-522 1143,-504 1205.51,-522 1143,-540"/>
310<text text-anchor="middle" x="1143" y="-518.3" font-family="Times,serif" font-size="14.00">dnsparser</text>
311</g>
312<!-- pt&#45;&gt;dnsparser -->
313<g id="edge22" class="edge"><title>pt&#45;&gt;dnsparser</title>
314<path fill="none" stroke="black" d="M986.15,-582.671C1018.5,-570.365 1072.61,-549.781 1108.05,-536.296"/>
315<polygon fill="black" stroke="black" points="1109.42,-539.521 1117.52,-532.694 1106.93,-532.979 1109.42,-539.521"/>
316</g>
317<!-- dns&#45;&gt;tun -->
318<g id="edge23" class="edge"><title>dns&#45;&gt;tun</title>
319<path fill="none" stroke="black" d="M982.91,-506.496C972.543,-495.824 958.362,-481.226 947.147,-469.681"/>
320<polygon fill="black" stroke="black" points="949.418,-466.995 939.94,-462.261 944.397,-471.873 949.418,-466.995"/>
321</g>
322<!-- dns&#45;&gt;dnsstub -->
323<g id="edge24" class="edge"><title>dns&#45;&gt;dnsstub</title>
324<path fill="none" stroke="black" d="M1005.12,-504.765C1009.59,-495.828 1015.21,-484.573 1020.16,-474.673"/>
325<polygon fill="black" stroke="black" points="1023.3,-476.227 1024.64,-465.717 1017.04,-473.096 1023.3,-476.227"/>
326</g>
327<!-- gnsrecord -->
328<g id="node25" class="node"><title>gnsrecord</title>
329<ellipse fill="none" stroke="black" cx="1192" cy="-450" rx="45.4919" ry="18"/>
330<text text-anchor="middle" x="1192" y="-446.3" font-family="Times,serif" font-size="14.00">gnsrecord</text>
331</g>
332<!-- dnsparser&#45;&gt;gnsrecord -->
333<g id="edge39" class="edge"><title>dnsparser&#45;&gt;gnsrecord</title>
334<path fill="none" stroke="blue" stroke-dasharray="1,5" d="M1152.92,-506.834C1159.12,-497.971 1167.29,-486.304 1174.55,-475.928"/>
335<polygon fill="blue" stroke="blue" points="1177.51,-477.805 1180.38,-467.606 1171.77,-473.791 1177.51,-477.805"/>
336</g> 233</g>
337<!-- zonemaster --> 234<!-- zonemaster -->
338<g id="node20" class="node"><title>zonemaster</title> 235<g id="node13" class="node">
339<polygon fill="none" stroke="black" points="914.433,-599.562 851,-612 787.567,-599.562 787.626,-579.438 914.374,-579.438 914.433,-599.562"/> 236<title>zonemaster</title>
340<text text-anchor="middle" x="851" y="-590.3" font-family="Times,serif" font-size="14.00">zonemaster</text> 237<ellipse fill="none" stroke="black" cx="360.19" cy="-522" rx="53.4" ry="18"/>
238<text text-anchor="middle" x="360.19" y="-516.95" font-family="Times,serif" font-size="14.00">zonemaster</text>
341</g> 239</g>
342<!-- zonemaster&#45;&gt;dht --> 240<!-- zonemaster&#45;&gt;dht -->
343<g id="edge26" class="edge"><title>zonemaster&#45;&gt;dht</title> 241<g id="edge13" class="edge">
344<path fill="none" stroke="black" d="M853.642,-579.298C856.499,-561.438 859.583,-529.479 851,-504 836.849,-461.994 802.343,-422.916 779.052,-399.996"/> 242<title>zonemaster&#45;&gt;dht</title>
345<polygon fill="black" stroke="black" points="781.264,-397.267 771.628,-392.861 776.413,-402.314 781.264,-397.267"/> 243<path fill="none" stroke="black" d="M359.56,-503.74C359.1,-473.37 361,-408.93 382.19,-360 386.94,-349.03 394.63,-338.47 402.2,-329.7"/>
244<polygon fill="black" stroke="black" points="404.72,-332.13 408.9,-322.39 399.56,-327.4 404.72,-332.13"/>
346</g> 245</g>
347<!-- namestore --> 246<!-- namestore -->
348<g id="node21" class="node"><title>namestore</title> 247<g id="node14" class="node">
349<ellipse fill="none" stroke="black" cx="685" cy="-522" rx="47.3916" ry="18"/> 248<title>namestore</title>
350<text text-anchor="middle" x="685" y="-518.3" font-family="Times,serif" font-size="14.00">namestore</text> 249<ellipse fill="none" stroke="black" cx="283.19" cy="-450" rx="49.3" ry="18"/>
250<text text-anchor="middle" x="283.19" y="-444.95" font-family="Times,serif" font-size="14.00">namestore</text>
351</g> 251</g>
352<!-- zonemaster&#45;&gt;namestore --> 252<!-- zonemaster&#45;&gt;namestore -->
353<g id="edge25" class="edge"><title>zonemaster&#45;&gt;namestore</title> 253<g id="edge11" class="edge">
354<path fill="none" stroke="black" d="M818.599,-579.337C791.812,-568.041 753.653,-551.95 724.971,-539.855"/> 254<title>zonemaster&#45;&gt;namestore</title>
355<polygon fill="black" stroke="black" points="726.212,-536.58 715.637,-535.919 723.492,-543.03 726.212,-536.58"/> 255<path fill="none" stroke="black" d="M342.33,-504.76C332.51,-495.84 320.15,-484.61 309.28,-474.72"/>
256<polygon fill="black" stroke="black" points="311.82,-472.3 302.07,-468.17 307.11,-477.48 311.82,-472.3"/>
257</g>
258<!-- namecache -->
259<g id="node15" class="node">
260<title>namecache</title>
261<ellipse fill="none" stroke="black" cx="512.19" cy="-450" rx="52.38" ry="18"/>
262<text text-anchor="middle" x="512.19" y="-444.95" font-family="Times,serif" font-size="14.00">namecache</text>
263</g>
264<!-- zonemaster&#45;&gt;namecache -->
265<g id="edge12" class="edge">
266<title>zonemaster&#45;&gt;namecache</title>
267<path fill="none" stroke="black" d="M390.95,-506.83C414.1,-496.17 446.05,-481.46 471.35,-469.81"/>
268<polygon fill="black" stroke="black" points="472.74,-473.02 480.36,-465.66 469.81,-466.66 472.74,-473.02"/>
356</g> 269</g>
357<!-- namestore&#45;&gt;identity --> 270<!-- namestore&#45;&gt;identity -->
358<g id="edge37" class="edge"><title>namestore&#45;&gt;identity</title> 271<g id="edge22" class="edge">
359<path fill="none" stroke="black" d="M642.634,-513.641C566.046,-500.338 405.247,-472.408 326.867,-458.793"/> 272<title>namestore&#45;&gt;identity</title>
360<polygon fill="black" stroke="black" points="327.275,-455.312 316.823,-457.049 326.077,-462.208 327.275,-455.312"/> 273<path fill="none" stroke="black" d="M284.42,-431.7C284.94,-424.41 285.56,-415.73 286.15,-407.54"/>
361</g> 274<polygon fill="black" stroke="black" points="289.64,-407.84 286.86,-397.61 282.65,-407.34 289.64,-407.84"/>
362<!-- namestore&#45;&gt;gnsrecord -->
363<g id="edge38" class="edge"><title>namestore&#45;&gt;gnsrecord</title>
364<path fill="none" stroke="black" d="M726.085,-512.971C742.503,-509.919 761.609,-506.564 779,-504 918.405,-483.451 954.522,-488.05 1094,-468 1109.42,-465.784 1126.13,-463.019 1141.32,-460.368"/>
365<polygon fill="black" stroke="black" points="1142.32,-463.746 1151.56,-458.558 1141.1,-456.853 1142.32,-463.746"/>
366</g> 275</g>
367<!-- gns --> 276<!-- gns -->
368<g id="node22" class="node"><title>gns</title> 277<g id="node16" class="node">
369<ellipse fill="none" stroke="black" cx="850" cy="-666" rx="27" ry="18"/> 278<title>gns</title>
370<text text-anchor="middle" x="850" y="-662.3" font-family="Times,serif" font-size="14.00">gns</text> 279<ellipse fill="none" stroke="black" cx="553.19" cy="-594" rx="27" ry="18"/>
371</g> 280<text text-anchor="middle" x="553.19" y="-588.95" font-family="Times,serif" font-size="14.00">gns</text>
372<!-- gns&#45;&gt;identity -->
373<g id="edge34" class="edge"><title>gns&#45;&gt;identity</title>
374<path fill="none" stroke="black" d="M823.048,-663.899C740.091,-660.169 489.801,-646.281 417,-612 395.952,-602.089 396.543,-591.28 379,-576 359.686,-559.178 350.742,-559.383 334,-540 317.464,-520.856 303.335,-495.717 293.996,-477.041"/>
375<polygon fill="black" stroke="black" points="297.085,-475.39 289.562,-467.93 290.791,-478.453 297.085,-475.39"/>
376</g> 281</g>
377<!-- gns&#45;&gt;dht --> 282<!-- gns&#45;&gt;dht -->
378<g id="edge28" class="edge"><title>gns&#45;&gt;dht</title> 283<g id="edge15" class="edge">
379<path fill="none" stroke="black" d="M870.511,-653.985C875.467,-651.699 880.829,-649.525 886,-648 1002.11,-613.746 1046.93,-664.524 1156,-612 1236.59,-573.194 1305.75,-498.559 1246,-432 1215.85,-398.416 902.601,-384.19 793.343,-380.225"/> 284<title>gns&#45;&gt;dht</title>
380<polygon fill="black" stroke="black" points="793.243,-376.719 783.125,-379.863 792.995,-383.715 793.243,-376.719"/> 285<path fill="none" stroke="black" d="M560.78,-576.57C573.56,-546.4 595.84,-480.79 573.19,-432 549.27,-380.5 492.53,-342.56 456.66,-322.69"/>
381</g> 286<polygon fill="black" stroke="black" points="458.5,-319.71 448.03,-318.06 455.19,-325.88 458.5,-319.71"/>
382<!-- gns&#45;&gt;block -->
383<g id="edge29" class="edge"><title>gns&#45;&gt;block</title>
384<path fill="none" stroke="blue" stroke-dasharray="1,5" d="M822.824,-664.872C770.707,-663.582 654.321,-655.598 569,-612 548.284,-601.414 548.925,-590.83 531,-576 509.902,-558.544 496.079,-562.857 481,-540 438.212,-475.142 430.206,-380.324 428.985,-334.208"/>
385<polygon fill="blue" stroke="blue" points="432.483,-334.033 428.808,-324.096 425.484,-334.156 432.483,-334.033"/>
386</g> 287</g>
387<!-- gns&#45;&gt;dnsstub --> 288<!-- gns&#45;&gt;identity -->
388<g id="edge33" class="edge"><title>gns&#45;&gt;dnsstub</title> 289<g id="edge19" class="edge">
389<path fill="none" stroke="black" d="M871.065,-654.325C875.905,-652.077 881.078,-649.834 886,-648 941.778,-627.217 973.486,-654.658 1015,-612 1049.82,-576.222 1044.5,-512.583 1037.99,-476.971"/> 290<title>gns&#45;&gt;identity</title>
390<polygon fill="black" stroke="black" points="1041.36,-476 1035.97,-466.88 1034.5,-477.373 1041.36,-476"/> 291<path fill="none" stroke="black" d="M526.18,-592.34C477.7,-590.11 373.92,-580.56 298.19,-540 258.01,-518.48 242.77,-510.04 225.19,-468 219.01,-453.24 218.43,-446.51 225.19,-432 231.36,-418.74 242.67,-407.61 254.01,-399.03"/>
292<polygon fill="black" stroke="black" points="256.02,-401.9 262.21,-393.3 252.01,-396.16 256.02,-401.9"/>
391</g> 293</g>
392<!-- gns&#45;&gt;vpn --> 294<!-- gns&#45;&gt;vpn -->
393<g id="edge31" class="edge"><title>gns&#45;&gt;vpn</title> 295<g id="edge17" class="edge">
394<path fill="none" stroke="black" d="M827.858,-655.35C811.041,-646.688 789.135,-632.213 779,-612 768.086,-590.233 781.353,-564.325 794.756,-546.091"/> 296<title>gns&#45;&gt;vpn</title>
395<polygon fill="black" stroke="black" points="797.832,-547.84 801.242,-537.808 792.321,-543.524 797.832,-547.84"/> 297<path fill="none" stroke="black" d="M530.25,-583.97C510.27,-575.17 481.55,-560.19 462.19,-540 445.28,-522.37 432.82,-497.46 425,-478.48"/>
298<polygon fill="black" stroke="black" points="428.28,-477.26 421.38,-469.22 421.76,-479.81 428.28,-477.26"/>
396</g> 299</g>
397<!-- gns&#45;&gt;dns --> 300<!-- gns&#45;&gt;namecache -->
398<g id="edge27" class="edge"><title>gns&#45;&gt;dns</title> 301<g id="edge18" class="edge">
399<path fill="none" stroke="black" d="M871.13,-654.496C875.967,-652.239 881.122,-649.949 886,-648 933.377,-629.072 964.65,-653.009 995,-612 1008.03,-594.39 1007.25,-568.995 1003.95,-549.835"/> 302<title>gns&#45;&gt;namecache</title>
400<polygon fill="black" stroke="black" points="1007.35,-549.022 1001.93,-539.921 1000.49,-550.418 1007.35,-549.022"/> 303<path fill="none" stroke="black" d="M550.46,-575.7C547.38,-557.59 541.8,-528.44 534.19,-504 531.54,-495.5 528.06,-486.47 524.65,-478.33"/>
304<polygon fill="black" stroke="black" points="527.92,-477.07 520.73,-469.28 521.49,-479.85 527.92,-477.07"/>
305</g>
306<!-- dns -->
307<g id="node17" class="node">
308<title>dns</title>
309<ellipse fill="none" stroke="black" cx="498.19" cy="-522" rx="27" ry="18"/>
310<text text-anchor="middle" x="498.19" y="-516.95" font-family="Times,serif" font-size="14.00">dns</text>
401</g> 311</g>
402<!-- gns&#45;&gt;dnsparser --> 312<!-- gns&#45;&gt;dns -->
403<g id="edge32" class="edge"><title>gns&#45;&gt;dnsparser</title> 313<g id="edge14" class="edge">
404<path fill="none" stroke="black" d="M870.586,-654.227C875.54,-651.931 880.881,-649.692 886,-648 963.461,-622.391 995.505,-653.066 1066,-612 1093.37,-596.054 1115.84,-566.774 1129.29,-546.163"/> 314<title>gns&#45;&gt;dns</title>
405<polygon fill="black" stroke="black" points="1132.29,-547.978 1134.66,-537.654 1126.37,-544.243 1132.29,-547.978"/> 315<path fill="none" stroke="black" d="M540.98,-577.46C534.07,-568.67 525.28,-557.48 517.46,-547.53"/>
316<polygon fill="black" stroke="black" points="520.22,-545.38 511.29,-539.68 514.72,-549.71 520.22,-545.38"/>
406</g> 317</g>
407<!-- revocation --> 318<!-- revocation -->
408<g id="node23" class="node"><title>revocation</title> 319<g id="node18" class="node">
409<ellipse fill="none" stroke="black" cx="474" cy="-594" rx="48.1917" ry="18"/> 320<title>revocation</title>
410<text text-anchor="middle" x="474" y="-590.3" font-family="Times,serif" font-size="14.00">revocation</text> 321<ellipse fill="none" stroke="black" cx="670.19" cy="-522" rx="49.82" ry="18"/>
322<text text-anchor="middle" x="670.19" y="-516.95" font-family="Times,serif" font-size="14.00">revocation</text>
411</g> 323</g>
412<!-- gns&#45;&gt;revocation --> 324<!-- gns&#45;&gt;revocation -->
413<g id="edge30" class="edge"><title>gns&#45;&gt;revocation</title> 325<g id="edge16" class="edge">
414<path fill="none" stroke="black" d="M823.776,-661.482C769.658,-654.024 641.808,-635.374 536,-612 531.019,-610.9 525.841,-609.65 520.694,-608.34"/> 326<title>gns&#45;&gt;revocation</title>
415<polygon fill="black" stroke="black" points="521.456,-604.922 510.895,-605.77 519.68,-611.693 521.456,-604.922"/> 327<path fill="none" stroke="black" d="M572.77,-581.28C589.88,-571.05 615.11,-555.95 635.61,-543.69"/>
416</g> 328<polygon fill="black" stroke="black" points="637.15,-546.84 643.93,-538.71 633.56,-540.84 637.15,-546.84"/>
417<!-- gns&#45;&gt;gnsrecord -->
418<g id="edge41" class="edge"><title>gns&#45;&gt;gnsrecord</title>
419<path fill="none" stroke="black" d="M870.549,-654.113C875.504,-651.822 880.856,-649.613 886,-648 978.027,-619.137 1009.84,-646.249 1100,-612 1156.37,-590.587 1185.79,-592.754 1215,-540 1225.98,-520.174 1217.7,-494.957 1208.15,-476.431"/>
420<polygon fill="black" stroke="black" points="1211.2,-474.717 1203.29,-467.672 1205.08,-478.114 1211.2,-474.717"/>
421</g> 329</g>
422<!-- revocation&#45;&gt;core --> 330<!-- revocation&#45;&gt;core -->
423<g id="edge35" class="edge"><title>revocation&#45;&gt;core</title> 331<g id="edge20" class="edge">
424<path fill="none" stroke="black" d="M447.586,-578.755C410.639,-556.683 348,-510.49 348,-451 348,-451 348,-451 348,-377 348,-335.398 347.208,-317.038 377,-288 415.046,-250.916 477.859,-239.613 517.794,-236.267"/> 332<title>revocation&#45;&gt;core</title>
425<polygon fill="black" stroke="black" points="518.191,-239.747 527.918,-235.547 517.695,-232.765 518.191,-239.747"/> 333<path fill="none" stroke="black" d="M662.09,-503.95C650.4,-477.72 630.19,-425.61 630.19,-379 630.19,-379 630.19,-379 630.19,-305 630.19,-258.03 610.67,-244.31 573.19,-216 532.22,-185.06 473.25,-172.08 435.07,-166.7"/>
334<polygon fill="black" stroke="black" points="435.8,-163.27 425.43,-165.46 434.9,-170.21 435.8,-163.27"/>
335</g>
336<!-- setu -->
337<g id="node19" class="node">
338<title>setu</title>
339<ellipse fill="none" stroke="black" cx="685.19" cy="-450" rx="27" ry="18"/>
340<text text-anchor="middle" x="685.19" y="-444.95" font-family="Times,serif" font-size="14.00">setu</text>
341</g>
342<!-- revocation&#45;&gt;setu -->
343<g id="edge21" class="edge">
344<title>revocation&#45;&gt;setu</title>
345<path fill="none" stroke="black" d="M673.89,-503.7C675.47,-496.32 677.36,-487.52 679.13,-479.25"/>
346<polygon fill="black" stroke="black" points="682.53,-480.1 681.2,-469.58 675.69,-478.63 682.53,-480.1"/>
347</g>
348<!-- setu&#45;&gt;cadet -->
349<g id="edge46" class="edge">
350<title>setu&#45;&gt;cadet</title>
351<path fill="none" stroke="black" d="M692.06,-432.41C695.26,-424.68 699.16,-415.27 702.79,-406.52"/>
352<polygon fill="black" stroke="black" points="705.99,-407.93 706.58,-397.35 699.52,-405.25 705.99,-407.93"/>
426</g> 353</g>
427<!-- revocation&#45;&gt;set --> 354<!-- nse&#45;&gt;core -->
428<g id="edge36" class="edge"><title>revocation&#45;&gt;set</title> 355<g id="edge27" class="edge">
429<path fill="none" stroke="black" d="M484.409,-576.055C489.683,-567.469 496.183,-556.888 501.987,-547.439"/> 356<title>nse&#45;&gt;core</title>
430<polygon fill="black" stroke="black" points="505.024,-549.182 507.276,-538.829 499.06,-545.518 505.024,-549.182"/> 357<path fill="none" stroke="black" d="M418.55,-216.41C415.41,-208.57 411.58,-198.99 408.04,-190.13"/>
431</g> 358<polygon fill="black" stroke="black" points="411.3,-188.86 404.34,-180.88 404.8,-191.46 411.3,-188.86"/>
432<!-- set&#45;&gt;cadet -->
433<g id="edge75" class="edge"><title>set&#45;&gt;cadet</title>
434<path fill="none" stroke="black" d="M522.084,-504.055C524.482,-496.059 527.401,-486.331 530.08,-477.4"/>
435<polygon fill="black" stroke="black" points="533.442,-478.373 532.963,-467.789 526.737,-476.362 533.442,-478.373"/>
436</g> 359</g>
437<!-- conversation --> 360<!-- conversation -->
438<g id="node26" class="node"><title>conversation</title> 361<g id="node23" class="node">
439<polygon fill="none" stroke="black" points="1017.18,-743.562 948,-756 878.82,-743.562 878.884,-723.438 1017.12,-723.438 1017.18,-743.562"/> 362<title>conversation</title>
440<text text-anchor="middle" x="948" y="-734.3" font-family="Times,serif" font-size="14.00">conversation</text> 363<ellipse fill="none" stroke="black" cx="737.19" cy="-666" rx="58" ry="18"/>
364<text text-anchor="middle" x="737.19" y="-660.95" font-family="Times,serif" font-size="14.00">conversation</text>
441</g> 365</g>
442<!-- conversation&#45;&gt;cadet --> 366<!-- conversation&#45;&gt;cadet -->
443<g id="edge53" class="edge"><title>conversation&#45;&gt;cadet</title> 367<g id="edge30" class="edge">
444<path fill="none" stroke="black" d="M900.537,-723.335C873.864,-714.435 840.677,-701.257 814,-684 756.206,-646.615 759.329,-615.558 703,-576 673.069,-554.981 658.318,-561.866 629,-540 611.601,-527.024 611.36,-519.336 596,-504 585.077,-493.094 572.479,-481.475 561.82,-471.903"/> 368<title>conversation&#45;&gt;cadet</title>
445<polygon fill="black" stroke="black" points="563.901,-469.069 554.107,-465.028 559.243,-474.295 563.901,-469.069"/> 369<path fill="none" stroke="black" d="M790.36,-658.38C820.87,-651.75 857.34,-638.5 879.19,-612 930.52,-549.72 951.95,-496.31 903.19,-432 885.33,-408.44 804.87,-392.47 754.87,-384.63"/>
370<polygon fill="black" stroke="black" points="755.69,-381.21 745.28,-383.17 754.64,-388.13 755.69,-381.21"/>
446</g> 371</g>
447<!-- conversation&#45;&gt;gns --> 372<!-- conversation&#45;&gt;gns -->
448<g id="edge54" class="edge"><title>conversation&#45;&gt;gns</title> 373<g id="edge31" class="edge">
449<path fill="none" stroke="black" d="M928.638,-723.17C913.533,-712.381 892.408,-697.291 875.857,-685.469"/> 374<title>conversation&#45;&gt;gns</title>
450<polygon fill="black" stroke="black" points="877.846,-682.589 867.674,-679.625 873.777,-688.285 877.846,-682.589"/> 375<path fill="none" stroke="black" d="M701.71,-651.5C668.5,-638.87 619.23,-620.13 586.68,-607.74"/>
451</g> 376<polygon fill="black" stroke="black" points="588.33,-604.63 577.74,-604.34 585.84,-611.17 588.33,-604.63"/>
452<!-- conversation&#45;&gt;gnsrecord -->
453<g id="edge40" class="edge"><title>conversation&#45;&gt;gnsrecord</title>
454<path fill="none" stroke="blue" stroke-dasharray="1,5" d="M1017.21,-728.51C1076.25,-719.968 1155.24,-705.041 1179,-684 1241.33,-628.786 1256.97,-583.117 1231,-504 1227.58,-493.58 1221.24,-483.522 1214.65,-475.019"/>
455<polygon fill="blue" stroke="blue" points="1217.15,-472.551 1208.08,-467.08 1211.76,-477.015 1217.15,-472.551"/>
456</g>
457<!-- speaker -->
458<g id="node31" class="node"><title>speaker</title>
459<polygon fill="none" stroke="black" points="948,-684 894.877,-666 948,-648 1001.12,-666 948,-684"/>
460<text text-anchor="middle" x="948" y="-662.3" font-family="Times,serif" font-size="14.00">speaker</text>
461</g>
462<!-- conversation&#45;&gt;speaker -->
463<g id="edge55" class="edge"><title>conversation&#45;&gt;speaker</title>
464<path fill="none" stroke="black" d="M948,-723.17C948,-714.919 948,-704.153 948,-694.256"/>
465<polygon fill="black" stroke="black" points="951.5,-694.019 948,-684.019 944.5,-694.019 951.5,-694.019"/>
466</g>
467<!-- microphone -->
468<g id="node32" class="node"><title>microphone</title>
469<polygon fill="none" stroke="black" points="1095,-684 1019.76,-666 1095,-648 1170.24,-666 1095,-684"/>
470<text text-anchor="middle" x="1095" y="-662.3" font-family="Times,serif" font-size="14.00">microphone</text>
471</g>
472<!-- conversation&#45;&gt;microphone -->
473<g id="edge56" class="edge"><title>conversation&#45;&gt;microphone</title>
474<path fill="none" stroke="black" d="M976.692,-723.337C1001.14,-711.695 1036.29,-694.958 1061.92,-682.753"/>
475<polygon fill="black" stroke="black" points="1063.71,-685.777 1071.23,-678.318 1060.7,-679.457 1063.71,-685.777"/>
476</g>
477<!-- nse&#45;&gt;core -->
478<g id="edge48" class="edge"><title>nse&#45;&gt;core</title>
479<path fill="none" stroke="black" d="M790.412,-294.231C785.459,-291.935 780.118,-289.695 775,-288 697.966,-262.487 673.625,-275.652 596,-252 592.83,-251.034 589.569,-249.913 586.336,-248.716"/>
480<polygon fill="black" stroke="black" points="587.428,-245.385 576.841,-244.978 584.864,-251.899 587.428,-245.385"/>
481</g>
482<!-- peerinfo&#45;&gt;hello -->
483<g id="edge76" class="edge"><title>peerinfo&#45;&gt;hello</title>
484<path fill="none" stroke="black" d="M548.194,-77.9517C554.676,-75.8006 561.524,-73.6914 568,-72 654.752,-49.3407 758.747,-32.6176 814.333,-24.4966"/>
485<polygon fill="black" stroke="black" points="815.063,-27.9277 824.46,-23.0344 814.062,-20.9995 815.063,-27.9277"/>
486</g>
487<!-- transport&#45;&gt;ats -->
488<g id="edge66" class="edge"><title>transport&#45;&gt;ats</title>
489<path fill="none" stroke="black" d="M644.122,-152.487C587.168,-138.972 476.742,-112.769 420.21,-99.3548"/>
490<polygon fill="black" stroke="black" points="420.844,-95.9082 410.306,-97.0048 419.228,-102.719 420.844,-95.9082"/>
491</g>
492<!-- transport&#45;&gt;peerinfo -->
493<g id="edge68" class="edge"><title>transport&#45;&gt;peerinfo</title>
494<path fill="none" stroke="black" d="M651.411,-148.647C624.725,-137.116 584.738,-119.837 555.501,-107.204"/>
495<polygon fill="black" stroke="black" points="556.601,-103.867 546.033,-103.113 553.824,-110.292 556.601,-103.867"/>
496</g>
497<!-- transport&#45;&gt;hello -->
498<g id="edge67" class="edge"><title>transport&#45;&gt;hello</title>
499<path fill="none" stroke="black" d="M721.405,-157.922C756.719,-153.037 806.213,-140.439 835,-108 850.042,-91.0495 854.193,-65.1533 854.935,-45.6573"/>
500<polygon fill="black" stroke="black" points="858.435,-45.6195 855.044,-35.5822 851.436,-45.5437 858.435,-45.6195"/>
501</g>
502<!-- nat -->
503<g id="node36" class="node"><title>nat</title>
504<polygon fill="none" stroke="black" points="796,-108 765.835,-90 796,-72 826.165,-90 796,-108"/>
505<text text-anchor="middle" x="796" y="-86.3" font-family="Times,serif" font-size="14.00">nat</text>
506</g>
507<!-- transport&#45;&gt;nat -->
508<g id="edge69" class="edge"><title>transport&#45;&gt;nat</title>
509<path fill="none" stroke="black" d="M703.474,-146.834C723.706,-134.626 752.749,-117.1 772.878,-104.953"/>
510<polygon fill="black" stroke="black" points="774.946,-107.793 781.7,-99.6294 771.33,-101.799 774.946,-107.793"/>
511</g>
512<!-- fragmentation -->
513<g id="node37" class="node"><title>fragmentation</title>
514<polygon fill="none" stroke="black" points="662,-108 576.537,-90 662,-72 747.463,-90 662,-108"/>
515<text text-anchor="middle" x="662" y="-86.3" font-family="Times,serif" font-size="14.00">fragmentation</text>
516</g>
517<!-- transport&#45;&gt;fragmentation -->
518<g id="edge70" class="edge"><title>transport&#45;&gt;fragmentation</title>
519<path fill="none" stroke="black" d="M675.643,-144.055C673.556,-135.941 671.011,-126.044 668.687,-117.006"/>
520<polygon fill="black" stroke="black" points="672.073,-116.12 666.193,-107.307 665.294,-117.864 672.073,-116.12"/>
521</g> 377</g>
522<!-- topology --> 378<!-- topology -->
523<g id="node34" class="node"><title>topology</title> 379<g id="node24" class="node">
524<polygon fill="none" stroke="black" points="959.5,-324 894.5,-324 894.5,-288 959.5,-288 959.5,-324"/> 380<title>topology</title>
525<text text-anchor="middle" x="927" y="-302.3" font-family="Times,serif" font-size="14.00">topology</text> 381<ellipse fill="none" stroke="black" cx="188.19" cy="-234" rx="43.67" ry="18"/>
382<text text-anchor="middle" x="188.19" y="-228.95" font-family="Times,serif" font-size="14.00">topology</text>
526</g> 383</g>
527<!-- topology&#45;&gt;core --> 384<!-- topology&#45;&gt;core -->
528<g id="edge61" class="edge"><title>topology&#45;&gt;core</title> 385<g id="edge36" class="edge">
529<path fill="none" stroke="black" d="M894.413,-292.17C889.63,-290.593 884.724,-289.139 880,-288 756.312,-258.18 718.97,-284.656 596,-252 592.621,-251.103 589.151,-249.989 585.73,-248.765"/> 386<title>topology&#45;&gt;core</title>
530<polygon fill="black" stroke="black" points="586.918,-245.471 576.329,-245.106 584.379,-251.995 586.918,-245.471"/> 387<path fill="none" stroke="black" d="M221.3,-221.91C259.85,-209 323.24,-187.77 362.46,-174.63"/>
531</g> 388<polygon fill="black" stroke="black" points="363.52,-177.97 371.89,-171.47 361.3,-171.33 363.52,-177.97"/>
532<!-- topology&#45;&gt;peerinfo -->
533<g id="edge59" class="edge"><title>topology&#45;&gt;peerinfo</title>
534<path fill="none" stroke="black" d="M894.233,-295.354C862.315,-285.612 812.655,-269.532 771,-252 705.781,-224.55 688.475,-218.336 629,-180 597.704,-159.827 564.778,-132.553 542.992,-113.534"/>
535<polygon fill="black" stroke="black" points="545.032,-110.666 535.215,-106.682 540.404,-115.919 545.032,-110.666"/>
536</g>
537<!-- topology&#45;&gt;hello -->
538<g id="edge62" class="edge"><title>topology&#45;&gt;hello</title>
539<path fill="none" stroke="black" d="M922.652,-287.966C910.314,-239.626 875.032,-101.398 860.438,-44.2243"/>
540<polygon fill="black" stroke="black" points="863.829,-43.3557 857.964,-34.532 857.046,-45.087 863.829,-43.3557"/>
541</g> 389</g>
542<!-- topology&#45;&gt;transport --> 390<!-- topology&#45;&gt;transport -->
543<g id="edge60" class="edge"><title>topology&#45;&gt;transport</title> 391<g id="edge35" class="edge">
544<path fill="none" stroke="black" d="M897.206,-287.871C850.798,-261.191 761.564,-209.891 713.17,-182.069"/> 392<title>topology&#45;&gt;transport</title>
545<polygon fill="black" stroke="black" points="714.758,-178.945 704.344,-176.995 711.269,-185.014 714.758,-178.945"/> 393<path fill="none" stroke="black" d="M205.21,-216.99C231.86,-191.93 283.56,-143.31 314.36,-114.35"/>
394<polygon fill="black" stroke="black" points="316.46,-117.18 321.35,-107.77 311.67,-112.08 316.46,-117.18"/>
395</g>
396<!-- topology&#45;&gt;peerstore -->
397<g id="edge34" class="edge">
398<title>topology&#45;&gt;peerstore</title>
399<path fill="none" stroke="black" d="M193.51,-215.68C204.77,-182.16 234.28,-108.55 286.19,-72 317.97,-49.62 422.07,-33.39 487.03,-25.15"/>
400<polygon fill="black" stroke="black" points="487.28,-28.65 496.78,-23.94 486.42,-21.7 487.28,-28.65"/>
546</g> 401</g>
547<!-- hostlist --> 402<!-- hostlist -->
548<g id="node35" class="node"><title>hostlist</title> 403<g id="node25" class="node">
549<polygon fill="none" stroke="black" points="214,-324 158,-324 158,-288 214,-288 214,-324"/> 404<title>hostlist</title>
550<text text-anchor="middle" x="186" y="-302.3" font-family="Times,serif" font-size="14.00">hostlist</text> 405<ellipse fill="none" stroke="black" cx="734.19" cy="-234" rx="37.53" ry="18"/>
406<text text-anchor="middle" x="734.19" y="-228.95" font-family="Times,serif" font-size="14.00">hostlist</text>
551</g> 407</g>
552<!-- hostlist&#45;&gt;core --> 408<!-- hostlist&#45;&gt;core -->
553<g id="edge63" class="edge"><title>hostlist&#45;&gt;core</title> 409<g id="edge37" class="edge">
554<path fill="none" stroke="black" d="M214.167,-292.599C218.733,-290.88 223.455,-289.271 228,-288 330.933,-259.219 456.746,-244.294 517.975,-238.275"/> 410<title>hostlist&#45;&gt;core</title>
555<polygon fill="black" stroke="black" points="518.666,-241.725 528.286,-237.286 517.998,-234.757 518.666,-241.725"/> 411<path fill="none" stroke="black" d="M704.41,-222.52C697.19,-220.19 689.46,-217.86 682.19,-216 594.73,-193.68 489.94,-176.62 435.02,-168.41"/>
412<polygon fill="black" stroke="black" points="435.67,-164.96 425.26,-166.96 434.64,-171.89 435.67,-164.96"/>
556</g> 413</g>
557<!-- hostlist&#45;&gt;peerinfo --> 414<!-- hostlist&#45;&gt;peerstore -->
558<g id="edge64" class="edge"><title>hostlist&#45;&gt;peerinfo</title> 415<g id="edge38" class="edge">
559<path fill="none" stroke="black" d="M212.608,-287.849C273.449,-248.632 422.455,-152.586 487.166,-110.875"/> 416<title>hostlist&#45;&gt;peerstore</title>
560<polygon fill="black" stroke="black" points="489.21,-113.721 495.719,-105.362 485.418,-107.838 489.21,-113.721"/> 417<path fill="none" stroke="black" d="M722.89,-216.52C701.78,-186.26 654.11,-120.52 606.19,-72 595.37,-61.05 582.4,-50.1 570.9,-41.02"/>
418<polygon fill="black" stroke="black" points="573.31,-38.46 563.26,-35.11 569.02,-44 573.31,-38.46"/>
561</g> 419</g>
562<!-- hostlist&#45;&gt;hello --> 420<!-- set&#45;&gt;cadet -->
563<g id="edge65" class="edge"><title>hostlist&#45;&gt;hello</title> 421<g id="edge44" class="edge">
564<path fill="none" stroke="black" d="M192.198,-287.715C209.228,-243.039 261.382,-123.627 349,-72 425.521,-26.9118 694.449,-19.9666 805.486,-19.053"/> 422<title>set&#45;&gt;cadet</title>
565<polygon fill="black" stroke="black" points="805.751,-22.5513 815.727,-18.9823 805.703,-15.5515 805.751,-22.5513"/> 423<path fill="none" stroke="black" d="M845.51,-438.7C840.79,-436.47 835.83,-434.15 831.19,-432 803.41,-419.15 771.78,-404.84 748.42,-394.34"/>
424<polygon fill="black" stroke="black" points="749.93,-391.18 739.37,-390.27 747.06,-397.56 749.93,-391.18"/>
566</g> 425</g>
567<!-- scalarproduct --> 426<!-- scalarproduct -->
568<g id="node38" class="node"><title>scalarproduct</title> 427<g id="node27" class="node">
569<ellipse fill="none" stroke="black" cx="636" cy="-594" rx="57.6901" ry="18"/> 428<title>scalarproduct</title>
570<text text-anchor="middle" x="636" y="-590.3" font-family="Times,serif" font-size="14.00">scalarproduct</text> 429<ellipse fill="none" stroke="black" cx="1021.19" cy="-522" rx="60.56" ry="18"/>
430<text text-anchor="middle" x="1021.19" y="-516.95" font-family="Times,serif" font-size="14.00">scalarproduct</text>
571</g> 431</g>
572<!-- scalarproduct&#45;&gt;cadet --> 432<!-- scalarproduct&#45;&gt;cadet -->
573<g id="edge74" class="edge"><title>scalarproduct&#45;&gt;cadet</title> 433<g id="edge43" class="edge">
574<path fill="none" stroke="black" d="M622.726,-576.035C614.79,-565.742 604.61,-552.266 596,-540 581.021,-518.662 564.9,-493.752 553.465,-475.721"/> 434<title>scalarproduct&#45;&gt;cadet</title>
575<polygon fill="black" stroke="black" points="556.241,-473.562 547.943,-466.975 550.322,-477.299 556.241,-473.562"/> 435<path fill="none" stroke="black" d="M1025.18,-503.84C1028.72,-483.92 1030.91,-451.32 1013.19,-432 979.18,-394.95 829.78,-383.68 755.88,-380.35"/>
576</g> 436<polygon fill="black" stroke="black" points="756.35,-376.87 746.21,-379.95 756.06,-383.86 756.35,-376.87"/>
577<!-- scalarproduct&#45;&gt;set --> 437</g>
578<g id="edge73" class="edge"><title>scalarproduct&#45;&gt;set</title> 438<!-- seti -->
579<path fill="none" stroke="black" d="M610.179,-577.811C591.059,-566.564 565.021,-551.248 545.33,-539.665"/> 439<g id="node28" class="node">
580<polygon fill="black" stroke="black" points="546.899,-536.527 536.505,-534.473 543.349,-542.56 546.899,-536.527"/> 440<title>seti</title>
581</g> 441<ellipse fill="none" stroke="black" cx="977.19" cy="-450" rx="27" ry="18"/>
582<!-- secushare --> 442<text text-anchor="middle" x="977.19" y="-444.95" font-family="Times,serif" font-size="14.00">seti</text>
583<g id="node39" class="node"><title>secushare</title> 443</g>
584<polygon fill="none" stroke="black" points="633.366,-815.562 578,-828 522.634,-815.562 522.686,-795.438 633.314,-795.438 633.366,-815.562"/> 444<!-- scalarproduct&#45;&gt;seti -->
585<text text-anchor="middle" x="578" y="-806.3" font-family="Times,serif" font-size="14.00">secushare</text> 445<g id="edge42" class="edge">
586</g> 446<title>scalarproduct&#45;&gt;seti</title>
587<!-- social --> 447<path fill="none" stroke="black" d="M1010.53,-504.05C1005.31,-495.73 998.9,-485.54 993.1,-476.32"/>
588<g id="node42" class="node"><title>social</title> 448<polygon fill="black" stroke="black" points="996.23,-474.71 987.94,-468.11 990.3,-478.44 996.23,-474.71"/>
589<ellipse fill="none" stroke="black" cx="578" cy="-738" rx="31.3957" ry="18"/> 449</g>
590<text text-anchor="middle" x="578" y="-734.3" font-family="Times,serif" font-size="14.00">social</text> 450<!-- seti&#45;&gt;cadet -->
591</g> 451<g id="edge45" class="edge">
592<!-- secushare&#45;&gt;social --> 452<title>seti&#45;&gt;cadet</title>
593<g id="edge80" class="edge"><title>secushare&#45;&gt;social</title> 453<path fill="none" stroke="black" d="M955.3,-439.17C949.18,-436.63 942.49,-434.04 936.19,-432 873.73,-411.74 799.13,-395.5 754.26,-386.57"/>
594<path fill="none" stroke="black" d="M578,-795.17C578,-786.919 578,-776.153 578,-766.256"/> 454<polygon fill="black" stroke="black" points="754.94,-383.14 744.46,-384.64 753.6,-390.01 754.94,-383.14"/>
595<polygon fill="black" stroke="black" points="581.5,-766.019 578,-756.019 574.5,-766.019 581.5,-766.019"/>
596</g>
597<!-- multicast -->
598<g id="node40" class="node"><title>multicast</title>
599<ellipse fill="none" stroke="black" cx="326" cy="-594" rx="43.5923" ry="18"/>
600<text text-anchor="middle" x="326" y="-590.3" font-family="Times,serif" font-size="14.00">multicast</text>
601</g>
602<!-- multicast&#45;&gt;cadet -->
603<g id="edge82" class="edge"><title>multicast&#45;&gt;cadet</title>
604<path fill="none" stroke="black" d="M347.889,-578.338C386.803,-552.273 467.927,-497.935 510.526,-469.402"/>
605<polygon fill="black" stroke="black" points="512.642,-472.198 519.003,-463.725 508.747,-466.382 512.642,-472.198"/>
606</g>
607<!-- psyc -->
608<g id="node41" class="node"><title>psyc</title>
609<ellipse fill="none" stroke="black" cx="326" cy="-666" rx="27" ry="18"/>
610<text text-anchor="middle" x="326" y="-662.3" font-family="Times,serif" font-size="14.00">psyc</text>
611</g>
612<!-- psyc&#45;&gt;multicast -->
613<g id="edge81" class="edge"><title>psyc&#45;&gt;multicast</title>
614<path fill="none" stroke="black" d="M326,-647.697C326,-639.983 326,-630.712 326,-622.112"/>
615<polygon fill="black" stroke="black" points="329.5,-622.104 326,-612.104 322.5,-622.104 329.5,-622.104"/>
616</g>
617<!-- psycstore -->
618<g id="node43" class="node"><title>psycstore</title>
619<ellipse fill="none" stroke="black" cx="220" cy="-594" rx="44.393" ry="18"/>
620<text text-anchor="middle" x="220" y="-590.3" font-family="Times,serif" font-size="14.00">psycstore</text>
621</g>
622<!-- psyc&#45;&gt;psycstore -->
623<g id="edge79" class="edge"><title>psyc&#45;&gt;psycstore</title>
624<path fill="none" stroke="black" d="M307.536,-652.807C291.938,-642.506 269.271,-627.537 250.911,-615.413"/>
625<polygon fill="black" stroke="black" points="252.567,-612.312 242.294,-609.722 248.71,-618.154 252.567,-612.312"/>
626</g>
627<!-- social&#45;&gt;gns -->
628<g id="edge78" class="edge"><title>social&#45;&gt;gns</title>
629<path fill="none" stroke="black" d="M605.831,-729.838C655.82,-716.973 760.68,-689.987 815.282,-675.935"/>
630<polygon fill="black" stroke="black" points="816.373,-679.268 825.185,-673.386 814.628,-672.489 816.373,-679.268"/>
631</g>
632<!-- social&#45;&gt;psyc -->
633<g id="edge77" class="edge"><title>social&#45;&gt;psyc</title>
634<path fill="none" stroke="black" d="M550.552,-729.376C504.247,-716.513 410.731,-690.537 360.222,-676.506"/>
635<polygon fill="black" stroke="black" points="360.996,-673.089 350.424,-673.784 359.122,-679.833 360.996,-673.089"/>
636</g> 455</g>
637<!-- rps --> 456<!-- rps -->
638<g id="node44" class="node"><title>rps</title> 457<g id="node29" class="node">
639<ellipse fill="none" stroke="black" cx="593" cy="-306" rx="27" ry="18"/> 458<title>rps</title>
640<text text-anchor="middle" x="593" y="-302.3" font-family="Times,serif" font-size="14.00">rps</text> 459<ellipse fill="none" stroke="black" cx="315.19" cy="-234" rx="27" ry="18"/>
460<text text-anchor="middle" x="315.19" y="-228.95" font-family="Times,serif" font-size="14.00">rps</text>
641</g> 461</g>
642<!-- rps&#45;&gt;core --> 462<!-- rps&#45;&gt;core -->
643<g id="edge83" class="edge"><title>rps&#45;&gt;core</title> 463<g id="edge47" class="edge">
644<path fill="none" stroke="black" d="M584.187,-288.765C579.582,-280.283 573.845,-269.714 568.679,-260.197"/> 464<title>rps&#45;&gt;core</title>
645<polygon fill="black" stroke="black" points="571.613,-258.266 563.766,-251.147 565.461,-261.606 571.613,-258.266"/> 465<path fill="none" stroke="black" d="M331.39,-219.17C343.07,-209.2 359.05,-195.56 372.34,-184.21"/>
466<polygon fill="black" stroke="black" points="374.53,-186.94 379.87,-177.78 369.99,-181.61 374.53,-186.94"/>
646</g> 467</g>
647</g> 468</g>
648</svg> 469</svg>
diff --git a/images/subsystem_deps.dot b/images/subsystem_deps.dot
new file mode 100644
index 0000000..25fdc3a
--- /dev/null
+++ b/images/subsystem_deps.dot
@@ -0,0 +1,126 @@
1// house = application
2// circle (default) = service
3// box = daemon
4// diamond = library
5// black line = dependency
6// blue line = extension via plugin
7// red line = possibly useful
8// dashed = in planning
9
10// this is what we have...o
11digraph dependencies {
12splines = true;
13
14 /*voting [shape=house];
15 voting -> consensus;
16 voting -> identity;
17 voting -> cadet;
18 voting -> secretsharing;*/
19 secretsharing -> consensus;
20
21 fs;
22 fs -> dht;
23 fs -> core;
24 fs -> datastore;
25 fs -> cadet;
26 fs -> transport;
27 //fs -> block [style=dotted,color=blue];
28 fs -> identity;
29 //exit;
30 //exit -> cadet;
31 //exit -> tun;
32 //exit -> dnsstub;
33 vpn -> cadet;
34 vpn -> regex;
35 //vpn -> tun;
36 /*pt [shape=house];
37 pt -> cadet;
38 pt -> vpn;
39 pt -> dns;*/
40 //pt -> dnsparser;
41 //dns -> tun;
42 //dns -> dnsstub;
43 zonemaster;
44 zonemaster -> namestore;
45 zonemaster -> namecache;
46 zonemaster -> dht;
47 gns -> dns;
48 gns -> dht;
49 //gns -> block [style=dotted,color=blue];
50 gns -> revocation;
51 gns -> vpn;
52 gns -> namecache;
53 //gns -> dnsparser;
54 //gns -> dnsstub;
55 gns -> identity;
56 revocation -> core;
57 revocation -> setu;
58 namestore -> identity;
59 //namestore -> gnsrecord;
60 //dnsparser -> gnsrecord [style=dotted,color=blue];
61 //conversation -> gnsrecord [style=dotted,color=blue];
62 //gns -> gnsrecord;
63 dht -> core;
64 dht -> nse;
65 //dht -> block;
66 dht -> datacache;
67 dht -> peerstore;
68 //dht -> hello;
69 nse -> core;
70 //regex -> block [style=dotted,color=blue];
71 //block [shape=diamond];
72 datacache;
73 cadet -> core [weight=2];
74 cadet -> dht;
75 //cadet -> block [style=dotted,color=blue];
76 conversation;
77 conversation -> cadet;
78 conversation -> gns;
79 //conversation -> speaker;
80 //conversation -> microphone;
81 //speaker [shape=diamond];
82 //microphone [shape=diamond];
83 regex -> dht;
84 core -> transport;
85 topology;
86 topology -> peerstore;
87 topology -> transport;
88 topology -> core;
89 //topology -> hello;
90 hostlist;
91 hostlist -> core;
92 hostlist -> peerstore;
93 //hostlist -> hello;
94 //transport -> hello;
95 transport -> peerstore;
96 //transport -> nat;
97 //transport -> fragmentation;
98 consensus -> set;
99 consensus -> cadet;
100 scalarproduct -> seti;
101 scalarproduct -> cadet;
102 set -> cadet;
103 seti -> cadet;
104 setu -> cadet;
105 //fragmentation [shape=diamond];
106 //hello [shape=diamond];
107 //nat [shape=diamond];
108 //tun [shape=diamond];
109 //dnsparser [shape=diamond];
110 //dnsstub [shape=diamond];
111
112 /*secushare [shape=house];
113 multicast;
114 psyc;
115 social -> psyc;
116 social -> gns;
117 psyc -> psycstore;
118 psycstore;
119 social;
120 secushare -> social;
121 psyc -> multicast;
122 multicast -> cadet;*/
123
124 rps;
125 rps -> core;
126}