aboutsummaryrefslogtreecommitdiff
path: root/contrib/gnunet-arch-full.svg
blob: 766f2b855454443966b2e92ffa6b24d6852c4fdc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
 -->
<!-- Title: dependencies Pages: 1 -->
<svg width="1277pt" height="836pt"
 viewBox="0.00 0.00 1276.81 836.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 832)">
<title>dependencies</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-832 1272.81,-832 1272.81,4 -4,4"/>
<!-- voting -->
<g id="node1" class="node"><title>voting</title>
<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"/>
<text text-anchor="middle" x="80" y="-734.3" font-family="Times,serif" font-size="14.00">voting</text>
</g>
<!-- consensus -->
<g id="node2" class="node"><title>consensus</title>
<ellipse fill="none" stroke="black" cx="112" cy="-594" rx="46.2923" ry="18"/>
<text text-anchor="middle" x="112" y="-590.3" font-family="Times,serif" font-size="14.00">consensus</text>
</g>
<!-- voting&#45;&gt;consensus -->
<g id="edge1" class="edge"><title>voting&#45;&gt;consensus</title>
<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"/>
<polygon fill="black" stroke="black" points="153.308,-609.247 142.857,-607.508 149.942,-615.385 153.308,-609.247"/>
</g>
<!-- identity -->
<g id="node3" class="node"><title>identity</title>
<ellipse fill="none" stroke="black" cx="282" cy="-450" rx="37.8943" ry="18"/>
<text text-anchor="middle" x="282" y="-446.3" font-family="Times,serif" font-size="14.00">identity</text>
</g>
<!-- voting&#45;&gt;identity -->
<g id="edge2" class="edge"><title>voting&#45;&gt;identity</title>
<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"/>
<polygon fill="black" stroke="black" points="250.781,-471.924 257.931,-464.105 247.466,-465.759 250.781,-471.924"/>
</g>
<!-- cadet -->
<g id="node4" class="node"><title>cadet</title>
<ellipse fill="none" stroke="black" cx="538" cy="-450" rx="29.4969" ry="18"/>
<text text-anchor="middle" x="538" y="-446.3" font-family="Times,serif" font-size="14.00">cadet</text>
</g>
<!-- voting&#45;&gt;cadet -->
<g id="edge3" class="edge"><title>voting&#45;&gt;cadet</title>
<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"/>
<polygon fill="black" stroke="black" points="501.999,-462.673 510.983,-457.057 500.458,-455.845 501.999,-462.673"/>
</g>
<!-- secretsharing -->
<g id="node5" class="node"><title>secretsharing</title>
<ellipse fill="none" stroke="black" cx="123" cy="-666" rx="57.3905" ry="18"/>
<text text-anchor="middle" x="123" y="-662.3" font-family="Times,serif" font-size="14.00">secretsharing</text>
</g>
<!-- voting&#45;&gt;secretsharing -->
<g id="edge4" class="edge"><title>voting&#45;&gt;secretsharing</title>
<path fill="none" stroke="black" d="M88.4954,-723.17C93.8716,-714.418 100.986,-702.837 107.357,-692.466"/>
<polygon fill="black" stroke="black" points="110.45,-694.117 112.702,-683.764 104.486,-690.453 110.45,-694.117"/>
</g>
<!-- consensus&#45;&gt;cadet -->
<g id="edge72" class="edge"><title>consensus&#45;&gt;cadet</title>
<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"/>
<polygon fill="black" stroke="black" points="505.344,-467.004 513.453,-460.185 502.862,-460.459 505.344,-467.004"/>
</g>
<!-- set -->
<g id="node24" class="node"><title>set</title>
<ellipse fill="none" stroke="black" cx="517" cy="-522" rx="27" ry="18"/>
<text text-anchor="middle" x="517" y="-518.3" font-family="Times,serif" font-size="14.00">set</text>
</g>
<!-- consensus&#45;&gt;set -->
<g id="edge71" class="edge"><title>consensus&#45;&gt;set</title>
<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"/>
<polygon fill="black" stroke="black" points="481.561,-531.758 490.943,-526.837 480.539,-524.833 481.561,-531.758"/>
</g>
<!-- dht -->
<g id="node7" class="node"><title>dht</title>
<ellipse fill="none" stroke="black" cx="756" cy="-378" rx="27" ry="18"/>
<text text-anchor="middle" x="756" y="-374.3" font-family="Times,serif" font-size="14.00">dht</text>
</g>
<!-- cadet&#45;&gt;dht -->
<g id="edge51" class="edge"><title>cadet&#45;&gt;dht</title>
<path fill="none" stroke="black" d="M563.434,-440.833C602.822,-428.186 678.592,-403.856 722.428,-389.78"/>
<polygon fill="black" stroke="black" points="723.607,-393.078 732.058,-386.688 721.467,-386.413 723.607,-393.078"/>
</g>
<!-- core -->
<g id="node8" class="node"><title>core</title>
<ellipse fill="none" stroke="black" cx="555" cy="-234" rx="27" ry="18"/>
<text text-anchor="middle" x="555" y="-230.3" font-family="Times,serif" font-size="14.00">core</text>
</g>
<!-- cadet&#45;&gt;core -->
<g id="edge50" class="edge"><title>cadet&#45;&gt;core</title>
<path fill="none" stroke="black" d="M539.362,-431.849C542.303,-394.832 549.266,-307.181 552.824,-262.386"/>
<polygon fill="black" stroke="black" points="556.328,-262.478 553.631,-252.232 549.35,-261.924 556.328,-262.478"/>
</g>
<!-- block -->
<g id="node11" class="node"><title>block</title>
<polygon fill="none" stroke="black" points="429,-324 385.598,-306 429,-288 472.402,-306 429,-324"/>
<text text-anchor="middle" x="429" y="-302.3" font-family="Times,serif" font-size="14.00">block</text>
</g>
<!-- cadet&#45;&gt;block -->
<g id="edge52" class="edge"><title>cadet&#45;&gt;block</title>
<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"/>
<polygon fill="blue" stroke="blue" points="444.702,-327.773 436.674,-320.859 438.638,-331.27 444.702,-327.773"/>
</g>
<!-- secretsharing&#45;&gt;consensus -->
<g id="edge5" class="edge"><title>secretsharing&#45;&gt;consensus</title>
<path fill="none" stroke="black" d="M120.281,-647.697C119.069,-639.983 117.612,-630.712 116.261,-622.112"/>
<polygon fill="black" stroke="black" points="119.698,-621.44 114.688,-612.104 112.783,-622.526 119.698,-621.44"/>
</g>
<!-- fs -->
<g id="node6" class="node"><title>fs</title>
<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"/>
<text text-anchor="middle" x="73" y="-518.3" font-family="Times,serif" font-size="14.00">fs</text>
</g>
<!-- fs&#45;&gt;identity -->
<g id="edge12" class="edge"><title>fs&#45;&gt;identity</title>
<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"/>
<polygon fill="black" stroke="black" points="243.351,-467.386 251.778,-460.965 241.186,-460.729 243.351,-467.386"/>
</g>
<!-- fs&#45;&gt;cadet -->
<g id="edge9" class="edge"><title>fs&#45;&gt;cadet</title>
<path fill="none" stroke="black" d="M100.01,-516.934C178.772,-505.077 408.387,-470.512 499.803,-456.75"/>
<polygon fill="black" stroke="black" points="500.372,-460.204 509.74,-455.254 499.33,-453.282 500.372,-460.204"/>
</g>
<!-- fs&#45;&gt;dht -->
<g id="edge6" class="edge"><title>fs&#45;&gt;dht</title>
<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"/>
<polygon fill="black" stroke="black" points="719.199,-383.453 729.093,-379.664 718.996,-376.456 719.199,-383.453"/>
</g>
<!-- fs&#45;&gt;core -->
<g id="edge7" class="edge"><title>fs&#45;&gt;core</title>
<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"/>
<polygon fill="black" stroke="black" points="519.614,-244.287 528.871,-239.134 518.42,-237.39 519.614,-244.287"/>
</g>
<!-- datastore -->
<g id="node9" class="node"><title>datastore</title>
<ellipse fill="none" stroke="black" cx="108" cy="-450" rx="42.4939" ry="18"/>
<text text-anchor="middle" x="108" y="-446.3" font-family="Times,serif" font-size="14.00">datastore</text>
</g>
<!-- fs&#45;&gt;datastore -->
<g id="edge8" class="edge"><title>fs&#45;&gt;datastore</title>
<path fill="none" stroke="black" d="M79.9149,-507.17C84.2467,-498.507 89.9645,-487.071 95.1098,-476.78"/>
<polygon fill="black" stroke="black" points="98.2763,-478.274 99.618,-467.764 92.0153,-475.143 98.2763,-478.274"/>
</g>
<!-- ats -->
<g id="node10" class="node"><title>ats</title>
<ellipse fill="none" stroke="black" cx="385" cy="-90" rx="27" ry="18"/>
<text text-anchor="middle" x="385" y="-86.3" font-family="Times,serif" font-size="14.00">ats</text>
</g>
<!-- fs&#45;&gt;ats -->
<g id="edge10" class="edge"><title>fs&#45;&gt;ats</title>
<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"/>
<polygon fill="black" stroke="black" points="349.504,-99.8296 358.84,-94.8203 348.418,-92.9144 349.504,-99.8296"/>
</g>
<!-- fs&#45;&gt;block -->
<g id="edge11" class="edge"><title>fs&#45;&gt;block</title>
<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"/>
<polygon fill="blue" stroke="blue" points="399.679,-322.361 407.611,-315.337 397.03,-315.881 399.679,-322.361"/>
</g>
<!-- dht&#45;&gt;core -->
<g id="edge42" class="edge"><title>dht&#45;&gt;core</title>
<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"/>
<polygon fill="black" stroke="black" points="586.936,-245.416 576.348,-245.037 584.388,-251.936 586.936,-245.416"/>
</g>
<!-- dht&#45;&gt;block -->
<g id="edge44" class="edge"><title>dht&#45;&gt;block</title>
<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"/>
<polygon fill="black" stroke="black" points="462.742,-313.997 452.157,-314.456 460.718,-320.698 462.742,-313.997"/>
</g>
<!-- nse -->
<g id="node27" class="node"><title>nse</title>
<ellipse fill="none" stroke="black" cx="811" cy="-306" rx="27" ry="18"/>
<text text-anchor="middle" x="811" y="-302.3" font-family="Times,serif" font-size="14.00">nse</text>
</g>
<!-- dht&#45;&gt;nse -->
<g id="edge43" class="edge"><title>dht&#45;&gt;nse</title>
<path fill="none" stroke="black" d="M767.934,-361.811C775.214,-352.546 784.663,-340.52 792.854,-330.094"/>
<polygon fill="black" stroke="black" points="795.663,-332.185 799.089,-322.159 790.159,-327.86 795.663,-332.185"/>
</g>
<!-- datacache -->
<g id="node28" class="node"><title>datacache</title>
<polygon fill="none" stroke="black" points="702,-324 637.818,-306 702,-288 766.182,-306 702,-324"/>
<text text-anchor="middle" x="702" y="-302.3" font-family="Times,serif" font-size="14.00">datacache</text>
</g>
<!-- dht&#45;&gt;datacache -->
<g id="edge45" class="edge"><title>dht&#45;&gt;datacache</title>
<path fill="none" stroke="black" d="M744.016,-361.465C736.66,-351.93 727.125,-339.57 718.998,-329.034"/>
<polygon fill="black" stroke="black" points="721.73,-326.846 712.851,-321.066 716.187,-331.121 721.73,-326.846"/>
</g>
<!-- peerinfo -->
<g id="node29" class="node"><title>peerinfo</title>
<ellipse fill="none" stroke="black" cx="518" cy="-90" rx="40.0939" ry="18"/>
<text text-anchor="middle" x="518" y="-86.3" font-family="Times,serif" font-size="14.00">peerinfo</text>
</g>
<!-- dht&#45;&gt;peerinfo -->
<g id="edge46" class="edge"><title>dht&#45;&gt;peerinfo</title>
<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"/>
<polygon fill="black" stroke="black" points="516.027,-118.624 514.32,-108.168 509.133,-117.406 516.027,-118.624"/>
</g>
<!-- hello -->
<g id="node30" class="node"><title>hello</title>
<polygon fill="none" stroke="black" points="854,-36 813.614,-18 854,-3.55271e-15 894.386,-18 854,-36"/>
<text text-anchor="middle" x="854" y="-14.3" font-family="Times,serif" font-size="14.00">hello</text>
</g>
<!-- dht&#45;&gt;hello -->
<g id="edge47" class="edge"><title>dht&#45;&gt;hello</title>
<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"/>
<polygon fill="black" stroke="black" points="883.108,-29.3792 872.632,-27.796 879.834,-35.5665 883.108,-29.3792"/>
</g>
<!-- transport -->
<g id="node33" class="node"><title>transport</title>
<ellipse fill="none" stroke="black" cx="680" cy="-162" rx="42.4939" ry="18"/>
<text text-anchor="middle" x="680" y="-158.3" font-family="Times,serif" font-size="14.00">transport</text>
</g>
<!-- core&#45;&gt;transport -->
<g id="edge58" class="edge"><title>core&#45;&gt;transport</title>
<path fill="none" stroke="black" d="M575.083,-221.753C594.251,-211.02 623.495,-194.643 646.244,-181.903"/>
<polygon fill="black" stroke="black" points="648.219,-184.809 655.234,-176.869 644.799,-178.701 648.219,-184.809"/>
</g>
<!-- exit -->
<g id="node12" class="node"><title>exit</title>
<polygon fill="none" stroke="black" points="952,-540 898,-540 898,-504 952,-504 952,-540"/>
<text text-anchor="middle" x="925" y="-518.3" font-family="Times,serif" font-size="14.00">exit</text>
</g>
<!-- exit&#45;&gt;cadet -->
<g id="edge13" class="edge"><title>exit&#45;&gt;cadet</title>
<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"/>
<polygon fill="black" stroke="black" points="576.571,-453.252 566.158,-455.206 575.517,-460.172 576.571,-453.252"/>
</g>
<!-- tun -->
<g id="node13" class="node"><title>tun</title>
<polygon fill="none" stroke="black" points="929,-468 897.995,-450 929,-432 960.005,-450 929,-468"/>
<text text-anchor="middle" x="929" y="-446.3" font-family="Times,serif" font-size="14.00">tun</text>
</g>
<!-- exit&#45;&gt;tun -->
<g id="edge14" class="edge"><title>exit&#45;&gt;tun</title>
<path fill="none" stroke="black" d="M925.989,-503.697C926.436,-495.868 926.975,-486.435 927.473,-477.728"/>
<polygon fill="black" stroke="black" points="930.974,-477.806 928.05,-467.622 923.985,-477.406 930.974,-477.806"/>
</g>
<!-- dnsstub -->
<g id="node14" class="node"><title>dnsstub</title>
<polygon fill="none" stroke="black" points="1032,-468 978.877,-450 1032,-432 1085.12,-450 1032,-468"/>
<text text-anchor="middle" x="1032" y="-446.3" font-family="Times,serif" font-size="14.00">dnsstub</text>
</g>
<!-- exit&#45;&gt;dnsstub -->
<g id="edge15" class="edge"><title>exit&#45;&gt;dnsstub</title>
<path fill="none" stroke="black" d="M951.175,-503.876C967.88,-492.948 989.443,-478.841 1006.1,-467.947"/>
<polygon fill="black" stroke="black" points="1008.33,-470.67 1014.78,-462.266 1004.49,-464.812 1008.33,-470.67"/>
</g>
<!-- vpn -->
<g id="node15" class="node"><title>vpn</title>
<ellipse fill="none" stroke="black" cx="815" cy="-522" rx="27" ry="18"/>
<text text-anchor="middle" x="815" y="-518.3" font-family="Times,serif" font-size="14.00">vpn</text>
</g>
<!-- vpn&#45;&gt;cadet -->
<g id="edge16" class="edge"><title>vpn&#45;&gt;cadet</title>
<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"/>
<polygon fill="black" stroke="black" points="576.482,-453.979 566.025,-455.678 575.26,-460.871 576.482,-453.979"/>
</g>
<!-- vpn&#45;&gt;tun -->
<g id="edge18" class="edge"><title>vpn&#45;&gt;tun</title>
<path fill="none" stroke="black" d="M834.339,-509.125C854.149,-496.961 884.945,-478.051 905.995,-465.126"/>
<polygon fill="black" stroke="black" points="907.942,-468.038 914.632,-459.822 904.279,-462.072 907.942,-468.038"/>
</g>
<!-- regex -->
<g id="node16" class="node"><title>regex</title>
<ellipse fill="none" stroke="black" cx="756" cy="-450" rx="30.5947" ry="18"/>
<text text-anchor="middle" x="756" y="-446.3" font-family="Times,serif" font-size="14.00">regex</text>
</g>
<!-- vpn&#45;&gt;regex -->
<g id="edge17" class="edge"><title>vpn&#45;&gt;regex</title>
<path fill="none" stroke="black" d="M802.198,-505.811C794.496,-496.673 784.53,-484.849 775.827,-474.524"/>
<polygon fill="black" stroke="black" points="778.307,-472.035 769.186,-466.644 772.954,-476.546 778.307,-472.035"/>
</g>
<!-- regex&#45;&gt;dht -->
<g id="edge57" class="edge"><title>regex&#45;&gt;dht</title>
<path fill="none" stroke="black" d="M756,-431.697C756,-423.983 756,-414.712 756,-406.112"/>
<polygon fill="black" stroke="black" points="759.5,-406.104 756,-396.104 752.5,-406.104 759.5,-406.104"/>
</g>
<!-- regex&#45;&gt;block -->
<g id="edge49" class="edge"><title>regex&#45;&gt;block</title>
<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"/>
<polygon fill="blue" stroke="blue" points="459.85,-316.581 449.283,-315.808 457.061,-323.002 459.85,-316.581"/>
</g>
<!-- pt -->
<g id="node17" class="node"><title>pt</title>
<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"/>
<text text-anchor="middle" x="959" y="-590.3" font-family="Times,serif" font-size="14.00">pt</text>
</g>
<!-- pt&#45;&gt;cadet -->
<g id="edge19" class="edge"><title>pt&#45;&gt;cadet</title>
<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"/>
<polygon fill="black" stroke="black" points="576.951,-451.758 566.577,-453.91 576.029,-458.697 576.951,-451.758"/>
</g>
<!-- pt&#45;&gt;vpn -->
<g id="edge20" class="edge"><title>pt&#45;&gt;vpn</title>
<path fill="none" stroke="black" d="M931.915,-579.834C907.352,-567.894 871.179,-550.309 845.585,-537.868"/>
<polygon fill="black" stroke="black" points="846.864,-534.598 836.34,-533.373 843.803,-540.893 846.864,-534.598"/>
</g>
<!-- dns -->
<g id="node18" class="node"><title>dns</title>
<ellipse fill="none" stroke="black" cx="997" cy="-522" rx="27" ry="18"/>
<text text-anchor="middle" x="997" y="-518.3" font-family="Times,serif" font-size="14.00">dns</text>
</g>
<!-- pt&#45;&gt;dns -->
<g id="edge21" class="edge"><title>pt&#45;&gt;dns</title>
<path fill="none" stroke="black" d="M966.508,-579.17C971.277,-570.385 977.594,-558.748 983.241,-548.346"/>
<polygon fill="black" stroke="black" points="986.48,-549.716 988.175,-539.257 980.328,-546.376 986.48,-549.716"/>
</g>
<!-- dnsparser -->
<g id="node19" class="node"><title>dnsparser</title>
<polygon fill="none" stroke="black" points="1143,-540 1080.49,-522 1143,-504 1205.51,-522 1143,-540"/>
<text text-anchor="middle" x="1143" y="-518.3" font-family="Times,serif" font-size="14.00">dnsparser</text>
</g>
<!-- pt&#45;&gt;dnsparser -->
<g id="edge22" class="edge"><title>pt&#45;&gt;dnsparser</title>
<path fill="none" stroke="black" d="M986.15,-582.671C1018.5,-570.365 1072.61,-549.781 1108.05,-536.296"/>
<polygon fill="black" stroke="black" points="1109.42,-539.521 1117.52,-532.694 1106.93,-532.979 1109.42,-539.521"/>
</g>
<!-- dns&#45;&gt;tun -->
<g id="edge23" class="edge"><title>dns&#45;&gt;tun</title>
<path fill="none" stroke="black" d="M982.91,-506.496C972.543,-495.824 958.362,-481.226 947.147,-469.681"/>
<polygon fill="black" stroke="black" points="949.418,-466.995 939.94,-462.261 944.397,-471.873 949.418,-466.995"/>
</g>
<!-- dns&#45;&gt;dnsstub -->
<g id="edge24" class="edge"><title>dns&#45;&gt;dnsstub</title>
<path fill="none" stroke="black" d="M1005.12,-504.765C1009.59,-495.828 1015.21,-484.573 1020.16,-474.673"/>
<polygon fill="black" stroke="black" points="1023.3,-476.227 1024.64,-465.717 1017.04,-473.096 1023.3,-476.227"/>
</g>
<!-- gnsrecord -->
<g id="node25" class="node"><title>gnsrecord</title>
<ellipse fill="none" stroke="black" cx="1192" cy="-450" rx="45.4919" ry="18"/>
<text text-anchor="middle" x="1192" y="-446.3" font-family="Times,serif" font-size="14.00">gnsrecord</text>
</g>
<!-- dnsparser&#45;&gt;gnsrecord -->
<g id="edge39" class="edge"><title>dnsparser&#45;&gt;gnsrecord</title>
<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"/>
<polygon fill="blue" stroke="blue" points="1177.51,-477.805 1180.38,-467.606 1171.77,-473.791 1177.51,-477.805"/>
</g>
<!-- zonemaster -->
<g id="node20" class="node"><title>zonemaster</title>
<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"/>
<text text-anchor="middle" x="851" y="-590.3" font-family="Times,serif" font-size="14.00">zonemaster</text>
</g>
<!-- zonemaster&#45;&gt;dht -->
<g id="edge26" class="edge"><title>zonemaster&#45;&gt;dht</title>
<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"/>
<polygon fill="black" stroke="black" points="781.264,-397.267 771.628,-392.861 776.413,-402.314 781.264,-397.267"/>
</g>
<!-- namestore -->
<g id="node21" class="node"><title>namestore</title>
<ellipse fill="none" stroke="black" cx="685" cy="-522" rx="47.3916" ry="18"/>
<text text-anchor="middle" x="685" y="-518.3" font-family="Times,serif" font-size="14.00">namestore</text>
</g>
<!-- zonemaster&#45;&gt;namestore -->
<g id="edge25" class="edge"><title>zonemaster&#45;&gt;namestore</title>
<path fill="none" stroke="black" d="M818.599,-579.337C791.812,-568.041 753.653,-551.95 724.971,-539.855"/>
<polygon fill="black" stroke="black" points="726.212,-536.58 715.637,-535.919 723.492,-543.03 726.212,-536.58"/>
</g>
<!-- namestore&#45;&gt;identity -->
<g id="edge37" class="edge"><title>namestore&#45;&gt;identity</title>
<path fill="none" stroke="black" d="M642.634,-513.641C566.046,-500.338 405.247,-472.408 326.867,-458.793"/>
<polygon fill="black" stroke="black" points="327.275,-455.312 316.823,-457.049 326.077,-462.208 327.275,-455.312"/>
</g>
<!-- namestore&#45;&gt;gnsrecord -->
<g id="edge38" class="edge"><title>namestore&#45;&gt;gnsrecord</title>
<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"/>
<polygon fill="black" stroke="black" points="1142.32,-463.746 1151.56,-458.558 1141.1,-456.853 1142.32,-463.746"/>
</g>
<!-- gns -->
<g id="node22" class="node"><title>gns</title>
<ellipse fill="none" stroke="black" cx="850" cy="-666" rx="27" ry="18"/>
<text text-anchor="middle" x="850" y="-662.3" font-family="Times,serif" font-size="14.00">gns</text>
</g>
<!-- gns&#45;&gt;identity -->
<g id="edge34" class="edge"><title>gns&#45;&gt;identity</title>
<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"/>
<polygon fill="black" stroke="black" points="297.085,-475.39 289.562,-467.93 290.791,-478.453 297.085,-475.39"/>
</g>
<!-- gns&#45;&gt;dht -->
<g id="edge28" class="edge"><title>gns&#45;&gt;dht</title>
<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"/>
<polygon fill="black" stroke="black" points="793.243,-376.719 783.125,-379.863 792.995,-383.715 793.243,-376.719"/>
</g>
<!-- gns&#45;&gt;block -->
<g id="edge29" class="edge"><title>gns&#45;&gt;block</title>
<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"/>
<polygon fill="blue" stroke="blue" points="432.483,-334.033 428.808,-324.096 425.484,-334.156 432.483,-334.033"/>
</g>
<!-- gns&#45;&gt;dnsstub -->
<g id="edge33" class="edge"><title>gns&#45;&gt;dnsstub</title>
<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"/>
<polygon fill="black" stroke="black" points="1041.36,-476 1035.97,-466.88 1034.5,-477.373 1041.36,-476"/>
</g>
<!-- gns&#45;&gt;vpn -->
<g id="edge31" class="edge"><title>gns&#45;&gt;vpn</title>
<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"/>
<polygon fill="black" stroke="black" points="797.832,-547.84 801.242,-537.808 792.321,-543.524 797.832,-547.84"/>
</g>
<!-- gns&#45;&gt;dns -->
<g id="edge27" class="edge"><title>gns&#45;&gt;dns</title>
<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"/>
<polygon fill="black" stroke="black" points="1007.35,-549.022 1001.93,-539.921 1000.49,-550.418 1007.35,-549.022"/>
</g>
<!-- gns&#45;&gt;dnsparser -->
<g id="edge32" class="edge"><title>gns&#45;&gt;dnsparser</title>
<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"/>
<polygon fill="black" stroke="black" points="1132.29,-547.978 1134.66,-537.654 1126.37,-544.243 1132.29,-547.978"/>
</g>
<!-- revocation -->
<g id="node23" class="node"><title>revocation</title>
<ellipse fill="none" stroke="black" cx="474" cy="-594" rx="48.1917" ry="18"/>
<text text-anchor="middle" x="474" y="-590.3" font-family="Times,serif" font-size="14.00">revocation</text>
</g>
<!-- gns&#45;&gt;revocation -->
<g id="edge30" class="edge"><title>gns&#45;&gt;revocation</title>
<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"/>
<polygon fill="black" stroke="black" points="521.456,-604.922 510.895,-605.77 519.68,-611.693 521.456,-604.922"/>
</g>
<!-- gns&#45;&gt;gnsrecord -->
<g id="edge41" class="edge"><title>gns&#45;&gt;gnsrecord</title>
<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"/>
<polygon fill="black" stroke="black" points="1211.2,-474.717 1203.29,-467.672 1205.08,-478.114 1211.2,-474.717"/>
</g>
<!-- revocation&#45;&gt;core -->
<g id="edge35" class="edge"><title>revocation&#45;&gt;core</title>
<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"/>
<polygon fill="black" stroke="black" points="518.191,-239.747 527.918,-235.547 517.695,-232.765 518.191,-239.747"/>
</g>
<!-- revocation&#45;&gt;set -->
<g id="edge36" class="edge"><title>revocation&#45;&gt;set</title>
<path fill="none" stroke="black" d="M484.409,-576.055C489.683,-567.469 496.183,-556.888 501.987,-547.439"/>
<polygon fill="black" stroke="black" points="505.024,-549.182 507.276,-538.829 499.06,-545.518 505.024,-549.182"/>
</g>
<!-- set&#45;&gt;cadet -->
<g id="edge75" class="edge"><title>set&#45;&gt;cadet</title>
<path fill="none" stroke="black" d="M522.084,-504.055C524.482,-496.059 527.401,-486.331 530.08,-477.4"/>
<polygon fill="black" stroke="black" points="533.442,-478.373 532.963,-467.789 526.737,-476.362 533.442,-478.373"/>
</g>
<!-- conversation -->
<g id="node26" class="node"><title>conversation</title>
<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"/>
<text text-anchor="middle" x="948" y="-734.3" font-family="Times,serif" font-size="14.00">conversation</text>
</g>
<!-- conversation&#45;&gt;cadet -->
<g id="edge53" class="edge"><title>conversation&#45;&gt;cadet</title>
<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"/>
<polygon fill="black" stroke="black" points="563.901,-469.069 554.107,-465.028 559.243,-474.295 563.901,-469.069"/>
</g>
<!-- conversation&#45;&gt;gns -->
<g id="edge54" class="edge"><title>conversation&#45;&gt;gns</title>
<path fill="none" stroke="black" d="M928.638,-723.17C913.533,-712.381 892.408,-697.291 875.857,-685.469"/>
<polygon fill="black" stroke="black" points="877.846,-682.589 867.674,-679.625 873.777,-688.285 877.846,-682.589"/>
</g>
<!-- conversation&#45;&gt;gnsrecord -->
<g id="edge40" class="edge"><title>conversation&#45;&gt;gnsrecord</title>
<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"/>
<polygon fill="blue" stroke="blue" points="1217.15,-472.551 1208.08,-467.08 1211.76,-477.015 1217.15,-472.551"/>
</g>
<!-- speaker -->
<g id="node31" class="node"><title>speaker</title>
<polygon fill="none" stroke="black" points="948,-684 894.877,-666 948,-648 1001.12,-666 948,-684"/>
<text text-anchor="middle" x="948" y="-662.3" font-family="Times,serif" font-size="14.00">speaker</text>
</g>
<!-- conversation&#45;&gt;speaker -->
<g id="edge55" class="edge"><title>conversation&#45;&gt;speaker</title>
<path fill="none" stroke="black" d="M948,-723.17C948,-714.919 948,-704.153 948,-694.256"/>
<polygon fill="black" stroke="black" points="951.5,-694.019 948,-684.019 944.5,-694.019 951.5,-694.019"/>
</g>
<!-- microphone -->
<g id="node32" class="node"><title>microphone</title>
<polygon fill="none" stroke="black" points="1095,-684 1019.76,-666 1095,-648 1170.24,-666 1095,-684"/>
<text text-anchor="middle" x="1095" y="-662.3" font-family="Times,serif" font-size="14.00">microphone</text>
</g>
<!-- conversation&#45;&gt;microphone -->
<g id="edge56" class="edge"><title>conversation&#45;&gt;microphone</title>
<path fill="none" stroke="black" d="M976.692,-723.337C1001.14,-711.695 1036.29,-694.958 1061.92,-682.753"/>
<polygon fill="black" stroke="black" points="1063.71,-685.777 1071.23,-678.318 1060.7,-679.457 1063.71,-685.777"/>
</g>
<!-- nse&#45;&gt;core -->
<g id="edge48" class="edge"><title>nse&#45;&gt;core</title>
<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"/>
<polygon fill="black" stroke="black" points="587.428,-245.385 576.841,-244.978 584.864,-251.899 587.428,-245.385"/>
</g>
<!-- peerinfo&#45;&gt;hello -->
<g id="edge76" class="edge"><title>peerinfo&#45;&gt;hello</title>
<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"/>
<polygon fill="black" stroke="black" points="815.063,-27.9277 824.46,-23.0344 814.062,-20.9995 815.063,-27.9277"/>
</g>
<!-- transport&#45;&gt;ats -->
<g id="edge66" class="edge"><title>transport&#45;&gt;ats</title>
<path fill="none" stroke="black" d="M644.122,-152.487C587.168,-138.972 476.742,-112.769 420.21,-99.3548"/>
<polygon fill="black" stroke="black" points="420.844,-95.9082 410.306,-97.0048 419.228,-102.719 420.844,-95.9082"/>
</g>
<!-- transport&#45;&gt;peerinfo -->
<g id="edge68" class="edge"><title>transport&#45;&gt;peerinfo</title>
<path fill="none" stroke="black" d="M651.411,-148.647C624.725,-137.116 584.738,-119.837 555.501,-107.204"/>
<polygon fill="black" stroke="black" points="556.601,-103.867 546.033,-103.113 553.824,-110.292 556.601,-103.867"/>
</g>
<!-- transport&#45;&gt;hello -->
<g id="edge67" class="edge"><title>transport&#45;&gt;hello</title>
<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"/>
<polygon fill="black" stroke="black" points="858.435,-45.6195 855.044,-35.5822 851.436,-45.5437 858.435,-45.6195"/>
</g>
<!-- nat -->
<g id="node36" class="node"><title>nat</title>
<polygon fill="none" stroke="black" points="796,-108 765.835,-90 796,-72 826.165,-90 796,-108"/>
<text text-anchor="middle" x="796" y="-86.3" font-family="Times,serif" font-size="14.00">nat</text>
</g>
<!-- transport&#45;&gt;nat -->
<g id="edge69" class="edge"><title>transport&#45;&gt;nat</title>
<path fill="none" stroke="black" d="M703.474,-146.834C723.706,-134.626 752.749,-117.1 772.878,-104.953"/>
<polygon fill="black" stroke="black" points="774.946,-107.793 781.7,-99.6294 771.33,-101.799 774.946,-107.793"/>
</g>
<!-- fragmentation -->
<g id="node37" class="node"><title>fragmentation</title>
<polygon fill="none" stroke="black" points="662,-108 576.537,-90 662,-72 747.463,-90 662,-108"/>
<text text-anchor="middle" x="662" y="-86.3" font-family="Times,serif" font-size="14.00">fragmentation</text>
</g>
<!-- transport&#45;&gt;fragmentation -->
<g id="edge70" class="edge"><title>transport&#45;&gt;fragmentation</title>
<path fill="none" stroke="black" d="M675.643,-144.055C673.556,-135.941 671.011,-126.044 668.687,-117.006"/>
<polygon fill="black" stroke="black" points="672.073,-116.12 666.193,-107.307 665.294,-117.864 672.073,-116.12"/>
</g>
<!-- topology -->
<g id="node34" class="node"><title>topology</title>
<polygon fill="none" stroke="black" points="959.5,-324 894.5,-324 894.5,-288 959.5,-288 959.5,-324"/>
<text text-anchor="middle" x="927" y="-302.3" font-family="Times,serif" font-size="14.00">topology</text>
</g>
<!-- topology&#45;&gt;core -->
<g id="edge61" class="edge"><title>topology&#45;&gt;core</title>
<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"/>
<polygon fill="black" stroke="black" points="586.918,-245.471 576.329,-245.106 584.379,-251.995 586.918,-245.471"/>
</g>
<!-- topology&#45;&gt;peerinfo -->
<g id="edge59" class="edge"><title>topology&#45;&gt;peerinfo</title>
<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"/>
<polygon fill="black" stroke="black" points="545.032,-110.666 535.215,-106.682 540.404,-115.919 545.032,-110.666"/>
</g>
<!-- topology&#45;&gt;hello -->
<g id="edge62" class="edge"><title>topology&#45;&gt;hello</title>
<path fill="none" stroke="black" d="M922.652,-287.966C910.314,-239.626 875.032,-101.398 860.438,-44.2243"/>
<polygon fill="black" stroke="black" points="863.829,-43.3557 857.964,-34.532 857.046,-45.087 863.829,-43.3557"/>
</g>
<!-- topology&#45;&gt;transport -->
<g id="edge60" class="edge"><title>topology&#45;&gt;transport</title>
<path fill="none" stroke="black" d="M897.206,-287.871C850.798,-261.191 761.564,-209.891 713.17,-182.069"/>
<polygon fill="black" stroke="black" points="714.758,-178.945 704.344,-176.995 711.269,-185.014 714.758,-178.945"/>
</g>
<!-- hostlist -->
<g id="node35" class="node"><title>hostlist</title>
<polygon fill="none" stroke="black" points="214,-324 158,-324 158,-288 214,-288 214,-324"/>
<text text-anchor="middle" x="186" y="-302.3" font-family="Times,serif" font-size="14.00">hostlist</text>
</g>
<!-- hostlist&#45;&gt;core -->
<g id="edge63" class="edge"><title>hostlist&#45;&gt;core</title>
<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"/>
<polygon fill="black" stroke="black" points="518.666,-241.725 528.286,-237.286 517.998,-234.757 518.666,-241.725"/>
</g>
<!-- hostlist&#45;&gt;peerinfo -->
<g id="edge64" class="edge"><title>hostlist&#45;&gt;peerinfo</title>
<path fill="none" stroke="black" d="M212.608,-287.849C273.449,-248.632 422.455,-152.586 487.166,-110.875"/>
<polygon fill="black" stroke="black" points="489.21,-113.721 495.719,-105.362 485.418,-107.838 489.21,-113.721"/>
</g>
<!-- hostlist&#45;&gt;hello -->
<g id="edge65" class="edge"><title>hostlist&#45;&gt;hello</title>
<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"/>
<polygon fill="black" stroke="black" points="805.751,-22.5513 815.727,-18.9823 805.703,-15.5515 805.751,-22.5513"/>
</g>
<!-- scalarproduct -->
<g id="node38" class="node"><title>scalarproduct</title>
<ellipse fill="none" stroke="black" cx="636" cy="-594" rx="57.6901" ry="18"/>
<text text-anchor="middle" x="636" y="-590.3" font-family="Times,serif" font-size="14.00">scalarproduct</text>
</g>
<!-- scalarproduct&#45;&gt;cadet -->
<g id="edge74" class="edge"><title>scalarproduct&#45;&gt;cadet</title>
<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"/>
<polygon fill="black" stroke="black" points="556.241,-473.562 547.943,-466.975 550.322,-477.299 556.241,-473.562"/>
</g>
<!-- scalarproduct&#45;&gt;set -->
<g id="edge73" class="edge"><title>scalarproduct&#45;&gt;set</title>
<path fill="none" stroke="black" d="M610.179,-577.811C591.059,-566.564 565.021,-551.248 545.33,-539.665"/>
<polygon fill="black" stroke="black" points="546.899,-536.527 536.505,-534.473 543.349,-542.56 546.899,-536.527"/>
</g>
<!-- secushare -->
<g id="node39" class="node"><title>secushare</title>
<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"/>
<text text-anchor="middle" x="578" y="-806.3" font-family="Times,serif" font-size="14.00">secushare</text>
</g>
<!-- social -->
<g id="node42" class="node"><title>social</title>
<ellipse fill="none" stroke="black" cx="578" cy="-738" rx="31.3957" ry="18"/>
<text text-anchor="middle" x="578" y="-734.3" font-family="Times,serif" font-size="14.00">social</text>
</g>
<!-- secushare&#45;&gt;social -->
<g id="edge80" class="edge"><title>secushare&#45;&gt;social</title>
<path fill="none" stroke="black" d="M578,-795.17C578,-786.919 578,-776.153 578,-766.256"/>
<polygon fill="black" stroke="black" points="581.5,-766.019 578,-756.019 574.5,-766.019 581.5,-766.019"/>
</g>
<!-- multicast -->
<g id="node40" class="node"><title>multicast</title>
<ellipse fill="none" stroke="black" cx="326" cy="-594" rx="43.5923" ry="18"/>
<text text-anchor="middle" x="326" y="-590.3" font-family="Times,serif" font-size="14.00">multicast</text>
</g>
<!-- multicast&#45;&gt;cadet -->
<g id="edge82" class="edge"><title>multicast&#45;&gt;cadet</title>
<path fill="none" stroke="black" d="M347.889,-578.338C386.803,-552.273 467.927,-497.935 510.526,-469.402"/>
<polygon fill="black" stroke="black" points="512.642,-472.198 519.003,-463.725 508.747,-466.382 512.642,-472.198"/>
</g>
<!-- psyc -->
<g id="node41" class="node"><title>psyc</title>
<ellipse fill="none" stroke="black" cx="326" cy="-666" rx="27" ry="18"/>
<text text-anchor="middle" x="326" y="-662.3" font-family="Times,serif" font-size="14.00">psyc</text>
</g>
<!-- psyc&#45;&gt;multicast -->
<g id="edge81" class="edge"><title>psyc&#45;&gt;multicast</title>
<path fill="none" stroke="black" d="M326,-647.697C326,-639.983 326,-630.712 326,-622.112"/>
<polygon fill="black" stroke="black" points="329.5,-622.104 326,-612.104 322.5,-622.104 329.5,-622.104"/>
</g>
<!-- psycstore -->
<g id="node43" class="node"><title>psycstore</title>
<ellipse fill="none" stroke="black" cx="220" cy="-594" rx="44.393" ry="18"/>
<text text-anchor="middle" x="220" y="-590.3" font-family="Times,serif" font-size="14.00">psycstore</text>
</g>
<!-- psyc&#45;&gt;psycstore -->
<g id="edge79" class="edge"><title>psyc&#45;&gt;psycstore</title>
<path fill="none" stroke="black" d="M307.536,-652.807C291.938,-642.506 269.271,-627.537 250.911,-615.413"/>
<polygon fill="black" stroke="black" points="252.567,-612.312 242.294,-609.722 248.71,-618.154 252.567,-612.312"/>
</g>
<!-- social&#45;&gt;gns -->
<g id="edge78" class="edge"><title>social&#45;&gt;gns</title>
<path fill="none" stroke="black" d="M605.831,-729.838C655.82,-716.973 760.68,-689.987 815.282,-675.935"/>
<polygon fill="black" stroke="black" points="816.373,-679.268 825.185,-673.386 814.628,-672.489 816.373,-679.268"/>
</g>
<!-- social&#45;&gt;psyc -->
<g id="edge77" class="edge"><title>social&#45;&gt;psyc</title>
<path fill="none" stroke="black" d="M550.552,-729.376C504.247,-716.513 410.731,-690.537 360.222,-676.506"/>
<polygon fill="black" stroke="black" points="360.996,-673.089 350.424,-673.784 359.122,-679.833 360.996,-673.089"/>
</g>
<!-- rps -->
<g id="node44" class="node"><title>rps</title>
<ellipse fill="none" stroke="black" cx="593" cy="-306" rx="27" ry="18"/>
<text text-anchor="middle" x="593" y="-302.3" font-family="Times,serif" font-size="14.00">rps</text>
</g>
<!-- rps&#45;&gt;core -->
<g id="edge83" class="edge"><title>rps&#45;&gt;core</title>
<path fill="none" stroke="black" d="M584.187,-288.765C579.582,-280.283 573.845,-269.714 568.679,-260.197"/>
<polygon fill="black" stroke="black" points="571.613,-258.266 563.766,-251.147 565.461,-261.606 571.613,-258.266"/>
</g>
</g>
</svg>