Commit 3d20e3bc authored by juga's avatar juga
Browse files

Update diagrams generated automatically

parent ba13945f
......@@ -4,376 +4,243 @@
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
-->
<!-- Title: classes_sbws Pages: 1 -->
<svg width="2582pt" height="846pt"
viewBox="0.00 0.00 2582.00 846.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 842)">
<svg width="1965pt" height="619pt"
viewBox="0.00 0.00 1965.00 619.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 615)">
<title>classes_sbws</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-842 2578,-842 2578,4 -4,4"/>
<polygon fill="white" stroke="none" points="-4,4 -4,-615 1961,-615 1961,4 -4,4"/>
<!-- 0 -->
<g id="node1" class="node"><title>0</title>
<polygon fill="none" stroke="black" points="0,-362.5 0,-551.5 173,-551.5 173,-362.5 0,-362.5"/>
<text text-anchor="middle" x="86.5" y="-536.3" font-family="Times,serif" font-size="14.00">CircuitBuilder</text>
<polyline fill="none" stroke="black" points="0,-528.5 173,-528.5 "/>
<text text-anchor="start" x="8" y="-513.3" font-family="Times,serif" font-size="14.00">built_circuits : set</text>
<text text-anchor="start" x="8" y="-498.3" font-family="Times,serif" font-size="14.00">circuit_timeout</text>
<text text-anchor="start" x="8" y="-483.3" font-family="Times,serif" font-size="14.00">close_circuits_on_exit : bool</text>
<text text-anchor="start" x="8" y="-468.3" font-family="Times,serif" font-size="14.00">controller</text>
<text text-anchor="start" x="8" y="-453.3" font-family="Times,serif" font-size="14.00">relay_list</text>
<text text-anchor="start" x="8" y="-438.3" font-family="Times,serif" font-size="14.00">relays</text>
<text text-anchor="start" x="8" y="-423.3" font-family="Times,serif" font-size="14.00">rng : SystemRandom</text>
<polyline fill="none" stroke="black" points="0,-415.5 173,-415.5 "/>
<text text-anchor="start" x="8" y="-400.3" font-family="Times,serif" font-size="14.00">build_circuit()</text>
<text text-anchor="start" x="8" y="-385.3" font-family="Times,serif" font-size="14.00">close_circuit()</text>
<text text-anchor="start" x="8" y="-370.3" font-family="Times,serif" font-size="14.00">get_circuit_path()</text>
<polygon fill="none" stroke="black" points="0,-436.5 0,-610.5 173,-610.5 173,-436.5 0,-436.5"/>
<text text-anchor="middle" x="86.5" y="-595.3" font-family="Times,serif" font-size="14.00">CircuitBuilder</text>
<polyline fill="none" stroke="black" points="0,-587.5 173,-587.5 "/>
<text text-anchor="start" x="8" y="-572.3" font-family="Times,serif" font-size="14.00">built_circuits : set</text>
<text text-anchor="start" x="8" y="-557.3" font-family="Times,serif" font-size="14.00">circuit_timeout</text>
<text text-anchor="start" x="8" y="-542.3" font-family="Times,serif" font-size="14.00">close_circuits_on_exit : bool</text>
<text text-anchor="start" x="8" y="-527.3" font-family="Times,serif" font-size="14.00">controller</text>
<text text-anchor="start" x="8" y="-512.3" font-family="Times,serif" font-size="14.00">relay_list</text>
<text text-anchor="start" x="8" y="-497.3" font-family="Times,serif" font-size="14.00">relays</text>
<text text-anchor="start" x="8" y="-482.3" font-family="Times,serif" font-size="14.00">rng : SystemRandom</text>
<polyline fill="none" stroke="black" points="0,-474.5 173,-474.5 "/>
<text text-anchor="start" x="8" y="-459.3" font-family="Times,serif" font-size="14.00">build_circuit()</text>
<text text-anchor="start" x="8" y="-444.3" font-family="Times,serif" font-size="14.00">close_circuit()</text>
</g>
<!-- 1 -->
<g id="node2" class="node"><title>1</title>
<polygon fill="none" stroke="black" points="165.5,-98 165.5,-227 259.5,-227 259.5,-98 165.5,-98"/>
<text text-anchor="middle" x="212.5" y="-211.8" font-family="Times,serif" font-size="14.00">Destination</text>
<polyline fill="none" stroke="black" points="165.5,-204 259.5,-204 "/>
<text text-anchor="start" x="173.5" y="-188.8" font-family="Times,serif" font-size="14.00">hostname</text>
<text text-anchor="start" x="173.5" y="-173.8" font-family="Times,serif" font-size="14.00">port</text>
<text text-anchor="start" x="173.5" y="-158.8" font-family="Times,serif" font-size="14.00">url</text>
<text text-anchor="start" x="173.5" y="-143.8" font-family="Times,serif" font-size="14.00">verify</text>
<polyline fill="none" stroke="black" points="165.5,-136 259.5,-136 "/>
<text text-anchor="start" x="173.5" y="-120.8" font-family="Times,serif" font-size="14.00">from_config()</text>
<text text-anchor="start" x="173.5" y="-105.8" font-family="Times,serif" font-size="14.00">is_usable()</text>
<polygon fill="none" stroke="black" points="165.5,-135.5 165.5,-264.5 259.5,-264.5 259.5,-135.5 165.5,-135.5"/>
<text text-anchor="middle" x="212.5" y="-249.3" font-family="Times,serif" font-size="14.00">Destination</text>
<polyline fill="none" stroke="black" points="165.5,-241.5 259.5,-241.5 "/>
<text text-anchor="start" x="173.5" y="-226.3" font-family="Times,serif" font-size="14.00">hostname</text>
<text text-anchor="start" x="173.5" y="-211.3" font-family="Times,serif" font-size="14.00">port</text>
<text text-anchor="start" x="173.5" y="-196.3" font-family="Times,serif" font-size="14.00">url</text>
<text text-anchor="start" x="173.5" y="-181.3" font-family="Times,serif" font-size="14.00">verify</text>
<polyline fill="none" stroke="black" points="165.5,-173.5 259.5,-173.5 "/>
<text text-anchor="start" x="173.5" y="-158.3" font-family="Times,serif" font-size="14.00">from_config()</text>
<text text-anchor="start" x="173.5" y="-143.3" font-family="Times,serif" font-size="14.00">is_usable()</text>
</g>
<!-- 2 -->
<g id="node3" class="node"><title>2</title>
<polygon fill="none" stroke="black" points="277.5,-120 277.5,-205 377.5,-205 377.5,-120 277.5,-120"/>
<text text-anchor="middle" x="327.5" y="-189.8" font-family="Times,serif" font-size="14.00">DestinationList</text>
<polyline fill="none" stroke="black" points="277.5,-182 377.5,-182 "/>
<polyline fill="none" stroke="black" points="277.5,-158 377.5,-158 "/>
<text text-anchor="start" x="285.5" y="-142.8" font-family="Times,serif" font-size="14.00">from_config()</text>
<text text-anchor="start" x="285.5" y="-127.8" font-family="Times,serif" font-size="14.00">next()</text>
<polygon fill="none" stroke="black" points="277.5,-157.5 277.5,-242.5 377.5,-242.5 377.5,-157.5 277.5,-157.5"/>
<text text-anchor="middle" x="327.5" y="-227.3" font-family="Times,serif" font-size="14.00">DestinationList</text>
<polyline fill="none" stroke="black" points="277.5,-219.5 377.5,-219.5 "/>
<polyline fill="none" stroke="black" points="277.5,-195.5 377.5,-195.5 "/>
<text text-anchor="start" x="285.5" y="-180.3" font-family="Times,serif" font-size="14.00">from_config()</text>
<text text-anchor="start" x="285.5" y="-165.3" font-family="Times,serif" font-size="14.00">next()</text>
</g>
<!-- 3 -->
<g id="node4" class="node"><title>3</title>
<polygon fill="none" stroke="black" points="395.5,-127.5 395.5,-197.5 491.5,-197.5 491.5,-127.5 395.5,-127.5"/>
<text text-anchor="middle" x="443.5" y="-182.3" font-family="Times,serif" font-size="14.00">DirectoryLock</text>
<polyline fill="none" stroke="black" points="395.5,-174.5 491.5,-174.5 "/>
<polyline fill="none" stroke="black" points="395.5,-150.5 491.5,-150.5 "/>
<text text-anchor="middle" x="443.5" y="-135.3" font-family="Times,serif" font-size="14.00"> </text>
<polygon fill="none" stroke="black" points="395.5,-165 395.5,-235 491.5,-235 491.5,-165 395.5,-165"/>
<text text-anchor="middle" x="443.5" y="-219.8" font-family="Times,serif" font-size="14.00">DirectoryLock</text>
<polyline fill="none" stroke="black" points="395.5,-212 491.5,-212 "/>
<polyline fill="none" stroke="black" points="395.5,-188 491.5,-188 "/>
<text text-anchor="middle" x="443.5" y="-172.8" font-family="Times,serif" font-size="14.00"> </text>
</g>
<!-- 21 -->
<g id="node22" class="node"><title>21</title>
<polygon fill="none" stroke="black" points="463,-422 463,-492 522,-492 522,-422 463,-422"/>
<text text-anchor="middle" x="492.5" y="-476.8" font-family="Times,serif" font-size="14.00">_FLock</text>
<polyline fill="none" stroke="black" points="463,-469 522,-469 "/>
<polyline fill="none" stroke="black" points="463,-445 522,-445 "/>
<text text-anchor="middle" x="492.5" y="-429.8" font-family="Times,serif" font-size="14.00"> </text>
<!-- 14 -->
<g id="node15" class="node"><title>14</title>
<polygon fill="none" stroke="black" points="463,-488.5 463,-558.5 522,-558.5 522,-488.5 463,-488.5"/>
<text text-anchor="middle" x="492.5" y="-543.3" font-family="Times,serif" font-size="14.00">_FLock</text>
<polyline fill="none" stroke="black" points="463,-535.5 522,-535.5 "/>
<polyline fill="none" stroke="black" points="463,-511.5 522,-511.5 "/>
<text text-anchor="middle" x="492.5" y="-496.3" font-family="Times,serif" font-size="14.00"> </text>
</g>
<!-- 3&#45;&gt;21 -->
<g id="edge1" class="edge"><title>3&#45;&gt;21</title>
<path fill="none" stroke="black" d="M449.217,-197.626C458.1,-250.653 475.217,-352.828 485.054,-411.552"/>
<polygon fill="none" stroke="black" points="481.64,-412.355 486.744,-421.639 488.543,-411.198 481.64,-412.355"/>
<!-- 3&#45;&gt;14 -->
<g id="edge1" class="edge"><title>3&#45;&gt;14</title>
<path fill="none" stroke="black" d="M448.697,-235.102C457.628,-293.7 475.879,-413.445 485.769,-478.338"/>
<polygon fill="none" stroke="black" points="482.315,-478.906 487.282,-488.264 489.235,-477.851 482.315,-478.906"/>
</g>
<!-- 4 -->
<g id="node5" class="node"><title>4</title>
<polygon fill="none" stroke="black" points="510,-127.5 510,-197.5 575,-197.5 575,-127.5 510,-127.5"/>
<text text-anchor="middle" x="542.5" y="-182.3" font-family="Times,serif" font-size="14.00">FileLock</text>
<polyline fill="none" stroke="black" points="510,-174.5 575,-174.5 "/>
<polyline fill="none" stroke="black" points="510,-150.5 575,-150.5 "/>
<text text-anchor="middle" x="542.5" y="-135.3" font-family="Times,serif" font-size="14.00"> </text>
<polygon fill="none" stroke="black" points="510,-165 510,-235 575,-235 575,-165 510,-165"/>
<text text-anchor="middle" x="542.5" y="-219.8" font-family="Times,serif" font-size="14.00">FileLock</text>
<polyline fill="none" stroke="black" points="510,-212 575,-212 "/>
<polyline fill="none" stroke="black" points="510,-188 575,-188 "/>
<text text-anchor="middle" x="542.5" y="-172.8" font-family="Times,serif" font-size="14.00"> </text>
</g>
<!-- 4&#45;&gt;21 -->
<g id="edge2" class="edge"><title>4&#45;&gt;21</title>
<path fill="none" stroke="black" d="M536.667,-197.626C527.602,-250.653 510.136,-352.828 500.098,-411.552"/>
<polygon fill="none" stroke="black" points="496.609,-411.193 498.374,-421.639 503.509,-412.372 496.609,-411.193"/>
<!-- 4&#45;&gt;14 -->
<g id="edge2" class="edge"><title>4&#45;&gt;14</title>
<path fill="none" stroke="black" d="M537.196,-235.102C528.083,-293.7 509.46,-413.445 499.368,-478.338"/>
<polygon fill="none" stroke="black" points="495.903,-477.845 497.824,-488.264 502.82,-478.921 495.903,-477.845"/>
</g>
<!-- 5 -->
<g id="node6" class="node"><title>5</title>
<polygon fill="none" stroke="black" points="25.5,-127.5 25.5,-197.5 147.5,-197.5 147.5,-127.5 25.5,-127.5"/>
<text text-anchor="middle" x="86.5" y="-182.3" font-family="Times,serif" font-size="14.00">GapsCircuitBuilder</text>
<polyline fill="none" stroke="black" points="25.5,-174.5 147.5,-174.5 "/>
<polyline fill="none" stroke="black" points="25.5,-150.5 147.5,-150.5 "/>
<text text-anchor="start" x="33.5" y="-135.3" font-family="Times,serif" font-size="14.00">build_circuit()</text>
<polygon fill="none" stroke="black" points="25.5,-165 25.5,-235 147.5,-235 147.5,-165 25.5,-165"/>
<text text-anchor="middle" x="86.5" y="-219.8" font-family="Times,serif" font-size="14.00">GapsCircuitBuilder</text>
<polyline fill="none" stroke="black" points="25.5,-212 147.5,-212 "/>
<polyline fill="none" stroke="black" points="25.5,-188 147.5,-188 "/>
<text text-anchor="start" x="33.5" y="-172.8" font-family="Times,serif" font-size="14.00">build_circuit()</text>
</g>
<!-- 5&#45;&gt;0 -->
<g id="edge3" class="edge"><title>5&#45;&gt;0</title>
<path fill="none" stroke="black" d="M86.5,-197.626C86.5,-235.434 86.5,-298.228 86.5,-352.442"/>
<polygon fill="none" stroke="black" points="83.0001,-352.457 86.5,-362.457 90.0001,-352.457 83.0001,-352.457"/>
<path fill="none" stroke="black" d="M86.5,-235.102C86.5,-280.201 86.5,-361.52 86.5,-426.176"/>
<polygon fill="none" stroke="black" points="83.0001,-426.402 86.5,-436.402 90.0001,-426.402 83.0001,-426.402"/>
</g>
<!-- 6 -->
<g id="node7" class="node"><title>6</title>
<polygon fill="none" stroke="black" points="593.5,-128 593.5,-197 727.5,-197 727.5,-128 593.5,-128"/>
<text text-anchor="middle" x="660.5" y="-181.8" font-family="Times,serif" font-size="14.00" fill="red">PathLengthException</text>
<polyline fill="none" stroke="black" points="593.5,-174 727.5,-174 "/>
<text text-anchor="start" x="601.5" y="-158.8" font-family="Times,serif" font-size="14.00" fill="red">errors : NoneType</text>
<polyline fill="none" stroke="black" points="593.5,-151 727.5,-151 "/>
<text text-anchor="middle" x="660.5" y="-135.8" font-family="Times,serif" font-size="14.00" fill="red"> </text>
<polygon fill="none" stroke="black" points="593.5,-165.5 593.5,-234.5 727.5,-234.5 727.5,-165.5 593.5,-165.5"/>
<text text-anchor="middle" x="660.5" y="-219.3" font-family="Times,serif" font-size="14.00" fill="red">PathLengthException</text>
<polyline fill="none" stroke="black" points="593.5,-211.5 727.5,-211.5 "/>
<text text-anchor="start" x="601.5" y="-196.3" font-family="Times,serif" font-size="14.00" fill="red">errors : NoneType</text>
<polyline fill="none" stroke="black" points="593.5,-188.5 727.5,-188.5 "/>
<text text-anchor="middle" x="660.5" y="-173.3" font-family="Times,serif" font-size="14.00" fill="red"> </text>
</g>
<!-- 7 -->
<g id="node8" class="node"><title>7</title>
<polygon fill="none" stroke="black" points="718,-392.5 718,-521.5 909,-521.5 909,-392.5 718,-392.5"/>
<text text-anchor="middle" x="813.5" y="-506.3" font-family="Times,serif" font-size="14.00">Relay</text>
<polyline fill="none" stroke="black" points="718,-498.5 909,-498.5 "/>
<text text-anchor="start" x="726" y="-483.3" font-family="Times,serif" font-size="14.00">address</text>
<text text-anchor="start" x="726" y="-468.3" font-family="Times,serif" font-size="14.00">average_bandwidth : NoneType</text>
<text text-anchor="start" x="726" y="-453.3" font-family="Times,serif" font-size="14.00">fingerprint</text>
<text text-anchor="start" x="726" y="-438.3" font-family="Times,serif" font-size="14.00">master_key_ed25519</text>
<text text-anchor="start" x="726" y="-423.3" font-family="Times,serif" font-size="14.00">nickname</text>
<polyline fill="none" stroke="black" points="718,-415.5 909,-415.5 "/>
<text text-anchor="middle" x="813.5" y="-400.3" font-family="Times,serif" font-size="14.00"> </text>
</g>
<!-- 11 -->
<g id="node12" class="node"><title>11</title>
<polygon fill="none" stroke="black" points="930.5,-603.5 930.5,-837.5 1086.5,-837.5 1086.5,-603.5 930.5,-603.5"/>
<text text-anchor="middle" x="1008.5" y="-822.3" font-family="Times,serif" font-size="14.00">Result</text>
<polyline fill="none" stroke="black" points="930.5,-814.5 1086.5,-814.5 "/>
<text text-anchor="start" x="938.5" y="-799.3" font-family="Times,serif" font-size="14.00">address</text>
<text text-anchor="start" x="938.5" y="-784.3" font-family="Times,serif" font-size="14.00">circ</text>
<text text-anchor="start" x="938.5" y="-769.3" font-family="Times,serif" font-size="14.00">dest_url</text>
<text text-anchor="start" x="938.5" y="-754.3" font-family="Times,serif" font-size="14.00">fingerprint</text>
<text text-anchor="start" x="938.5" y="-739.3" font-family="Times,serif" font-size="14.00">master_key_ed25519</text>
<text text-anchor="start" x="938.5" y="-724.3" font-family="Times,serif" font-size="14.00">nickname</text>
<text text-anchor="start" x="938.5" y="-709.3" font-family="Times,serif" font-size="14.00">relay_average_bandwidth</text>
<text text-anchor="start" x="938.5" y="-694.3" font-family="Times,serif" font-size="14.00">scanner</text>
<text text-anchor="start" x="938.5" y="-679.3" font-family="Times,serif" font-size="14.00">time</text>
<text text-anchor="start" x="938.5" y="-664.3" font-family="Times,serif" font-size="14.00">type</text>
<text text-anchor="start" x="938.5" y="-649.3" font-family="Times,serif" font-size="14.00">version</text>
<polyline fill="none" stroke="black" points="930.5,-641.5 1086.5,-641.5 "/>
<text text-anchor="start" x="938.5" y="-626.3" font-family="Times,serif" font-size="14.00">from_dict()</text>
<text text-anchor="start" x="938.5" y="-611.3" font-family="Times,serif" font-size="14.00">to_dict()</text>
</g>
<!-- 7&#45;&gt;11 -->
<g id="edge10" class="edge"><title>7&#45;&gt;11</title>
<path fill="none" stroke="black" d="M860.953,-521.636C879.691,-546.764 901.812,-576.429 923.146,-605.038"/>
<polygon fill="black" stroke="black" points="923.171,-605.071 929.964,-607.49 930.344,-614.691 923.551,-612.272 923.171,-605.071"/>
<text text-anchor="middle" x="922.5" y="-573.8" font-family="Times,serif" font-size="14.00" fill="green">_relay</text>
<polygon fill="none" stroke="black" points="746,-105.5 746,-294.5 879,-294.5 879,-105.5 746,-105.5"/>
<text text-anchor="middle" x="812.5" y="-279.3" font-family="Times,serif" font-size="14.00">Relay</text>
<polyline fill="none" stroke="black" points="746,-271.5 879,-271.5 "/>
<text text-anchor="start" x="754" y="-256.3" font-family="Times,serif" font-size="14.00">address</text>
<text text-anchor="start" x="754" y="-241.3" font-family="Times,serif" font-size="14.00">average_bandwidth</text>
<text text-anchor="start" x="754" y="-226.3" font-family="Times,serif" font-size="14.00">bandwidth</text>
<text text-anchor="start" x="754" y="-211.3" font-family="Times,serif" font-size="14.00">exit_policy</text>
<text text-anchor="start" x="754" y="-196.3" font-family="Times,serif" font-size="14.00">fingerprint</text>
<text text-anchor="start" x="754" y="-181.3" font-family="Times,serif" font-size="14.00">flags</text>
<text text-anchor="start" x="754" y="-166.3" font-family="Times,serif" font-size="14.00">master_key_ed25519</text>
<text text-anchor="start" x="754" y="-151.3" font-family="Times,serif" font-size="14.00">nickname</text>
<text text-anchor="start" x="754" y="-136.3" font-family="Times,serif" font-size="14.00">observed_bandwidth</text>
<polyline fill="none" stroke="black" points="746,-128.5 879,-128.5 "/>
<text text-anchor="start" x="754" y="-113.3" font-family="Times,serif" font-size="14.00">can_exit_to()</text>
</g>
<!-- 8 -->
<g id="node9" class="node"><title>8</title>
<polygon fill="none" stroke="black" points="1245,-75.5 1245,-249.5 1378,-249.5 1378,-75.5 1245,-75.5"/>
<text text-anchor="middle" x="1311.5" y="-234.3" font-family="Times,serif" font-size="14.00">Relay</text>
<polyline fill="none" stroke="black" points="1245,-226.5 1378,-226.5 "/>
<text text-anchor="start" x="1253" y="-211.3" font-family="Times,serif" font-size="14.00">address</text>
<text text-anchor="start" x="1253" y="-196.3" font-family="Times,serif" font-size="14.00">average_bandwidth</text>
<text text-anchor="start" x="1253" y="-181.3" font-family="Times,serif" font-size="14.00">bandwidth</text>
<text text-anchor="start" x="1253" y="-166.3" font-family="Times,serif" font-size="14.00">exit_policy</text>
<text text-anchor="start" x="1253" y="-151.3" font-family="Times,serif" font-size="14.00">fingerprint</text>
<text text-anchor="start" x="1253" y="-136.3" font-family="Times,serif" font-size="14.00">flags</text>
<text text-anchor="start" x="1253" y="-121.3" font-family="Times,serif" font-size="14.00">master_key_ed25519</text>
<text text-anchor="start" x="1253" y="-106.3" font-family="Times,serif" font-size="14.00">nickname</text>
<polyline fill="none" stroke="black" points="1245,-98.5 1378,-98.5 "/>
<text text-anchor="start" x="1253" y="-83.3" font-family="Times,serif" font-size="14.00">can_exit_to()</text>
<polygon fill="none" stroke="black" points="897.5,-105.5 897.5,-294.5 1073.5,-294.5 1073.5,-105.5 897.5,-105.5"/>
<text text-anchor="middle" x="985.5" y="-279.3" font-family="Times,serif" font-size="14.00">RelayList</text>
<polyline fill="none" stroke="black" points="897.5,-271.5 1073.5,-271.5 "/>
<text text-anchor="start" x="905.5" y="-256.3" font-family="Times,serif" font-size="14.00">REFRESH_INTERVAL : int</text>
<text text-anchor="start" x="905.5" y="-241.3" font-family="Times,serif" font-size="14.00">authorities</text>
<text text-anchor="start" x="905.5" y="-226.3" font-family="Times,serif" font-size="14.00">bad_exits</text>
<text text-anchor="start" x="905.5" y="-211.3" font-family="Times,serif" font-size="14.00">exits</text>
<text text-anchor="start" x="905.5" y="-196.3" font-family="Times,serif" font-size="14.00">fast</text>
<text text-anchor="start" x="905.5" y="-181.3" font-family="Times,serif" font-size="14.00">guards</text>
<text text-anchor="start" x="905.5" y="-166.3" font-family="Times,serif" font-size="14.00">non_exits</text>
<text text-anchor="start" x="905.5" y="-151.3" font-family="Times,serif" font-size="14.00">relays</text>
<text text-anchor="start" x="905.5" y="-136.3" font-family="Times,serif" font-size="14.00">rng : SystemRandom</text>
<polyline fill="none" stroke="black" points="897.5,-128.5 1073.5,-128.5 "/>
<text text-anchor="start" x="905.5" y="-113.3" font-family="Times,serif" font-size="14.00">random_relay()</text>
</g>
<!-- 9 -->
<g id="node10" class="node"><title>9</title>
<polygon fill="none" stroke="black" points="1396.5,-68 1396.5,-257 1572.5,-257 1572.5,-68 1396.5,-68"/>
<text text-anchor="middle" x="1484.5" y="-241.8" font-family="Times,serif" font-size="14.00">RelayList</text>
<polyline fill="none" stroke="black" points="1396.5,-234 1572.5,-234 "/>
<text text-anchor="start" x="1404.5" y="-218.8" font-family="Times,serif" font-size="14.00">REFRESH_INTERVAL : int</text>
<text text-anchor="start" x="1404.5" y="-203.8" font-family="Times,serif" font-size="14.00">authorities</text>
<text text-anchor="start" x="1404.5" y="-188.8" font-family="Times,serif" font-size="14.00">bad_exits</text>
<text text-anchor="start" x="1404.5" y="-173.8" font-family="Times,serif" font-size="14.00">exits</text>
<text text-anchor="start" x="1404.5" y="-158.8" font-family="Times,serif" font-size="14.00">fast</text>
<text text-anchor="start" x="1404.5" y="-143.8" font-family="Times,serif" font-size="14.00">guards</text>
<text text-anchor="start" x="1404.5" y="-128.8" font-family="Times,serif" font-size="14.00">non_exits</text>
<text text-anchor="start" x="1404.5" y="-113.8" font-family="Times,serif" font-size="14.00">relays</text>
<text text-anchor="start" x="1404.5" y="-98.8" font-family="Times,serif" font-size="14.00">rng : SystemRandom</text>
<polyline fill="none" stroke="black" points="1396.5,-91 1572.5,-91 "/>
<text text-anchor="start" x="1404.5" y="-75.8" font-family="Times,serif" font-size="14.00">random_relay()</text>
<polygon fill="none" stroke="black" points="1091.5,-128 1091.5,-272 1217.5,-272 1217.5,-128 1091.5,-128"/>
<text text-anchor="middle" x="1154.5" y="-256.8" font-family="Times,serif" font-size="14.00">RelayPrioritizer</text>
<polyline fill="none" stroke="black" points="1091.5,-249 1217.5,-249 "/>
<text text-anchor="start" x="1099.5" y="-233.8" font-family="Times,serif" font-size="14.00">fraction_to_return</text>
<text text-anchor="start" x="1099.5" y="-218.8" font-family="Times,serif" font-size="14.00">fresh_seconds</text>
<text text-anchor="start" x="1099.5" y="-203.8" font-family="Times,serif" font-size="14.00">measure_authorities</text>
<text text-anchor="start" x="1099.5" y="-188.8" font-family="Times,serif" font-size="14.00">min_to_return</text>
<text text-anchor="start" x="1099.5" y="-173.8" font-family="Times,serif" font-size="14.00">relay_list</text>
<text text-anchor="start" x="1099.5" y="-158.8" font-family="Times,serif" font-size="14.00">result_dump</text>
<polyline fill="none" stroke="black" points="1091.5,-151 1217.5,-151 "/>
<text text-anchor="start" x="1099.5" y="-135.8" font-family="Times,serif" font-size="14.00">best_priority()</text>
</g>
<!-- 10 -->
<g id="node11" class="node"><title>10</title>
<polygon fill="none" stroke="black" points="1590.5,-90.5 1590.5,-234.5 1716.5,-234.5 1716.5,-90.5 1590.5,-90.5"/>
<text text-anchor="middle" x="1653.5" y="-219.3" font-family="Times,serif" font-size="14.00">RelayPrioritizer</text>
<polyline fill="none" stroke="black" points="1590.5,-211.5 1716.5,-211.5 "/>
<text text-anchor="start" x="1598.5" y="-196.3" font-family="Times,serif" font-size="14.00">fraction_to_return</text>
<text text-anchor="start" x="1598.5" y="-181.3" font-family="Times,serif" font-size="14.00">fresh_seconds</text>
<text text-anchor="start" x="1598.5" y="-166.3" font-family="Times,serif" font-size="14.00">measure_authorities</text>
<text text-anchor="start" x="1598.5" y="-151.3" font-family="Times,serif" font-size="14.00">min_to_return</text>
<text text-anchor="start" x="1598.5" y="-136.3" font-family="Times,serif" font-size="14.00">relay_list</text>
<text text-anchor="start" x="1598.5" y="-121.3" font-family="Times,serif" font-size="14.00">result_dump</text>
<polyline fill="none" stroke="black" points="1590.5,-113.5 1716.5,-113.5 "/>
<text text-anchor="start" x="1598.5" y="-98.3" font-family="Times,serif" font-size="14.00">best_priority()</text>
<polygon fill="none" stroke="black" points="1235.5,-165 1235.5,-235 1289.5,-235 1289.5,-165 1235.5,-165"/>
<text text-anchor="middle" x="1262.5" y="-219.8" font-family="Times,serif" font-size="14.00">State</text>
<polyline fill="none" stroke="black" points="1235.5,-212 1289.5,-212 "/>
<polyline fill="none" stroke="black" points="1235.5,-188 1289.5,-188 "/>
<text text-anchor="start" x="1243.5" y="-172.8" font-family="Times,serif" font-size="14.00">get()</text>
</g>
<!-- 11 -->
<g id="node12" class="node"><title>11</title>
<polygon fill="none" stroke="black" points="1307.5,-0.5 1307.5,-399.5 1505.5,-399.5 1505.5,-0.5 1307.5,-0.5"/>
<text text-anchor="middle" x="1406.5" y="-384.3" font-family="Times,serif" font-size="14.00">V3BWFile</text>
<polyline fill="none" stroke="black" points="1307.5,-376.5 1505.5,-376.5 "/>
<text text-anchor="start" x="1315.5" y="-361.3" font-family="Times,serif" font-size="14.00">bw_lines</text>
<text text-anchor="start" x="1315.5" y="-346.3" font-family="Times,serif" font-size="14.00">header</text>
<text text-anchor="start" x="1315.5" y="-331.3" font-family="Times,serif" font-size="14.00">info_stats</text>
<text text-anchor="start" x="1315.5" y="-316.3" font-family="Times,serif" font-size="14.00">is_min_perc</text>
<text text-anchor="start" x="1315.5" y="-301.3" font-family="Times,serif" font-size="14.00">max_bw</text>
<text text-anchor="start" x="1315.5" y="-286.3" font-family="Times,serif" font-size="14.00">mean_bw</text>
<text text-anchor="start" x="1315.5" y="-271.3" font-family="Times,serif" font-size="14.00">median_bw</text>
<text text-anchor="start" x="1315.5" y="-256.3" font-family="Times,serif" font-size="14.00">min_bw</text>
<text text-anchor="start" x="1315.5" y="-241.3" font-family="Times,serif" font-size="14.00">num</text>
<text text-anchor="start" x="1315.5" y="-226.3" font-family="Times,serif" font-size="14.00">sum_bw</text>
<polyline fill="none" stroke="black" points="1307.5,-218.5 1505.5,-218.5 "/>
<text text-anchor="start" x="1315.5" y="-203.3" font-family="Times,serif" font-size="14.00">bw_kb()</text>
<text text-anchor="start" x="1315.5" y="-188.3" font-family="Times,serif" font-size="14.00">bw_line_for_node_id()</text>
<text text-anchor="start" x="1315.5" y="-173.3" font-family="Times,serif" font-size="14.00">bw_sbws_scale()</text>
<text text-anchor="start" x="1315.5" y="-158.3" font-family="Times,serif" font-size="14.00">bw_torflow_scale()</text>
<text text-anchor="start" x="1315.5" y="-143.3" font-family="Times,serif" font-size="14.00">from_results()</text>
<text text-anchor="start" x="1315.5" y="-128.3" font-family="Times,serif" font-size="14.00">from_v100_fpath()</text>
<text text-anchor="start" x="1315.5" y="-113.3" font-family="Times,serif" font-size="14.00">from_v110_fpath()</text>
<text text-anchor="start" x="1315.5" y="-98.3" font-family="Times,serif" font-size="14.00">is_max_bw_diff_perc_reached()</text>
<text text-anchor="start" x="1315.5" y="-83.3" font-family="Times,serif" font-size="14.00">measured_progress_stats()</text>
<text text-anchor="start" x="1315.5" y="-68.3" font-family="Times,serif" font-size="14.00">read_number_consensus_relays()</text>
<text text-anchor="start" x="1315.5" y="-53.3" font-family="Times,serif" font-size="14.00">to_plt()</text>
<text text-anchor="start" x="1315.5" y="-38.3" font-family="Times,serif" font-size="14.00">update_progress()</text>
<text text-anchor="start" x="1315.5" y="-23.3" font-family="Times,serif" font-size="14.00">warn_if_not_accurate_enough()</text>
<text text-anchor="start" x="1315.5" y="-8.3" font-family="Times,serif" font-size="14.00">write()</text>
</g>
<!-- 12 -->
<g id="node13" class="node"><title>12</title>
<polygon fill="none" stroke="black" points="1734.5,-53 1734.5,-272 1902.5,-272 1902.5,-53 1734.5,-53"/>
<text text-anchor="middle" x="1818.5" y="-256.8" font-family="Times,serif" font-size="14.00">ResultDump</text>
<polyline fill="none" stroke="black" points="1734.5,-249 1902.5,-249 "/>
<text text-anchor="start" x="1742.5" y="-233.8" font-family="Times,serif" font-size="14.00">conf</text>
<text text-anchor="start" x="1742.5" y="-218.8" font-family="Times,serif" font-size="14.00">data : dict</text>
<text text-anchor="start" x="1742.5" y="-203.8" font-family="Times,serif" font-size="14.00">data_lock : RLock, _RLock</text>
<text text-anchor="start" x="1742.5" y="-188.8" font-family="Times,serif" font-size="14.00">datadir</text>
<text text-anchor="start" x="1742.5" y="-173.8" font-family="Times,serif" font-size="14.00">end_event</text>
<text text-anchor="start" x="1742.5" y="-158.8" font-family="Times,serif" font-size="14.00">fresh_days</text>
<text text-anchor="start" x="1742.5" y="-143.8" font-family="Times,serif" font-size="14.00">queue : Queue</text>
<text text-anchor="start" x="1742.5" y="-128.8" font-family="Times,serif" font-size="14.00">thread : Thread</text>
<polyline fill="none" stroke="black" points="1734.5,-121 1902.5,-121 "/>
<text text-anchor="start" x="1742.5" y="-105.8" font-family="Times,serif" font-size="14.00">enter()</text>
<text text-anchor="start" x="1742.5" y="-90.8" font-family="Times,serif" font-size="14.00">handle_result()</text>
<text text-anchor="start" x="1742.5" y="-75.8" font-family="Times,serif" font-size="14.00">results_for_relay()</text>
<text text-anchor="start" x="1742.5" y="-60.8" font-family="Times,serif" font-size="14.00">store_result()</text>
<polygon fill="none" stroke="black" points="1523.5,-23 1523.5,-377 1727.5,-377 1727.5,-23 1523.5,-23"/>
<text text-anchor="middle" x="1625.5" y="-361.8" font-family="Times,serif" font-size="14.00">V3BWHeader</text>
<polyline fill="none" stroke="black" points="1523.5,-354 1727.5,-354 "/>
<text text-anchor="start" x="1531.5" y="-338.8" font-family="Times,serif" font-size="14.00">file_created</text>
<text text-anchor="start" x="1531.5" y="-323.8" font-family="Times,serif" font-size="14.00">keyvalue_tuple_ls</text>
<text text-anchor="start" x="1531.5" y="-308.8" font-family="Times,serif" font-size="14.00">keyvalue_unordered_tuple_ls</text>
<text text-anchor="start" x="1531.5" y="-293.8" font-family="Times,serif" font-size="14.00">keyvalue_v110str_ls</text>
<text text-anchor="start" x="1531.5" y="-278.8" font-family="Times,serif" font-size="14.00">keyvalue_v200_ls</text>
<text text-anchor="start" x="1531.5" y="-263.8" font-family="Times,serif" font-size="14.00">latest_bandwidth</text>
<text text-anchor="start" x="1531.5" y="-248.8" font-family="Times,serif" font-size="14.00">num_lines</text>
<text text-anchor="start" x="1531.5" y="-233.8" font-family="Times,serif" font-size="14.00">software</text>
<text text-anchor="start" x="1531.5" y="-218.8" font-family="Times,serif" font-size="14.00">software_version</text>
<text text-anchor="start" x="1531.5" y="-203.8" font-family="Times,serif" font-size="14.00">strv110</text>
<text text-anchor="start" x="1531.5" y="-188.8" font-family="Times,serif" font-size="14.00">strv200</text>
<text text-anchor="start" x="1531.5" y="-173.8" font-family="Times,serif" font-size="14.00">timestamp</text>
<text text-anchor="start" x="1531.5" y="-158.8" font-family="Times,serif" font-size="14.00">version</text>
<polyline fill="none" stroke="black" points="1523.5,-151 1727.5,-151 "/>
<text text-anchor="start" x="1531.5" y="-135.8" font-family="Times,serif" font-size="14.00">add_stats()</text>
<text text-anchor="start" x="1531.5" y="-120.8" font-family="Times,serif" font-size="14.00">earliest_bandwidth_from_results()</text>
<text text-anchor="start" x="1531.5" y="-105.8" font-family="Times,serif" font-size="14.00">from_lines_v100()</text>
<text text-anchor="start" x="1531.5" y="-90.8" font-family="Times,serif" font-size="14.00">from_lines_v110()</text>
<text text-anchor="start" x="1531.5" y="-75.8" font-family="Times,serif" font-size="14.00">from_results()</text>
<text text-anchor="start" x="1531.5" y="-60.8" font-family="Times,serif" font-size="14.00">from_text_v110()</text>
<text text-anchor="start" x="1531.5" y="-45.8" font-family="Times,serif" font-size="14.00">generator_started_from_file()</text>
<text text-anchor="start" x="1531.5" y="-30.8" font-family="Times,serif" font-size="14.00">latest_bandwidth_from_results()</text>
</g>
<!-- 13 -->
<g id="node14" class="node"><title>13</title>
<polygon fill="none" stroke="black" points="927,-400 927,-514 1090,-514 1090,-400 927,-400"/>
<text text-anchor="middle" x="1008.5" y="-498.8" font-family="Times,serif" font-size="14.00">ResultError</text>
<polyline fill="none" stroke="black" points="927,-491 1090,-491 "/>
<text text-anchor="start" x="935" y="-475.8" font-family="Times,serif" font-size="14.00">freshness_reduction_factor</text>
<text text-anchor="start" x="935" y="-460.8" font-family="Times,serif" font-size="14.00">msg</text>
<text text-anchor="start" x="935" y="-445.8" font-family="Times,serif" font-size="14.00">type</text>
<polyline fill="none" stroke="black" points="927,-438 1090,-438 "/>
<text text-anchor="start" x="935" y="-422.8" font-family="Times,serif" font-size="14.00">from_dict()</text>
<text text-anchor="start" x="935" y="-407.8" font-family="Times,serif" font-size="14.00">to_dict()</text>
</g>
<!-- 13&#45;&gt;11 -->
<g id="edge4" class="edge"><title>13&#45;&gt;11</title>
<path fill="none" stroke="black" d="M1008.5,-514.098C1008.5,-537.355 1008.5,-565.35 1008.5,-593.085"/>
<polygon fill="none" stroke="black" points="1005,-593.282 1008.5,-603.282 1012,-593.282 1005,-593.282"/>
</g>
<!-- 14 -->
<g id="node15" class="node"><title>14</title>
<polygon fill="none" stroke="black" points="746,-113 746,-212 909,-212 909,-113 746,-113"/>
<text text-anchor="middle" x="827.5" y="-196.8" font-family="Times,serif" font-size="14.00">ResultErrorAuth</text>
<polyline fill="none" stroke="black" points="746,-189 909,-189 "/>
<text text-anchor="start" x="754" y="-173.8" font-family="Times,serif" font-size="14.00">freshness_reduction_factor</text>
<text text-anchor="start" x="754" y="-158.8" font-family="Times,serif" font-size="14.00">type</text>
<polyline fill="none" stroke="black" points="746,-151 909,-151 "/>
<text text-anchor="start" x="754" y="-135.8" font-family="Times,serif" font-size="14.00">from_dict()</text>
<text text-anchor="start" x="754" y="-120.8" font-family="Times,serif" font-size="14.00">to_dict()</text>
</g>
<!-- 14&#45;&gt;13 -->
<g id="edge5" class="edge"><title>14&#45;&gt;13</title>
<path fill="none" stroke="black" d="M853.056,-212.275C870.438,-244.698 894.394,-287.963 917.5,-325 931.281,-347.09 947.213,-370.624 961.859,-391.561"/>
<polygon fill="none" stroke="black" points="959.002,-393.583 967.615,-399.753 964.729,-389.558 959.002,-393.583"/>
</g>
<!-- 15 -->
<g id="node16" class="node"><title>15</title>
<polygon fill="none" stroke="black" points="927,-113 927,-212 1090,-212 1090,-113 927,-113"/>
<text text-anchor="middle" x="1008.5" y="-196.8" font-family="Times,serif" font-size="14.00">ResultErrorCircuit</text>
<polyline fill="none" stroke="black" points="927,-189 1090,-189 "/>
<text text-anchor="start" x="935" y="-173.8" font-family="Times,serif" font-size="14.00">freshness_reduction_factor</text>
<text text-anchor="start" x="935" y="-158.8" font-family="Times,serif" font-size="14.00">type</text>
<polyline fill="none" stroke="black" points="927,-151 1090,-151 "/>
<text text-anchor="start" x="935" y="-135.8" font-family="Times,serif" font-size="14.00">from_dict()</text>
<text text-anchor="start" x="935" y="-120.8" font-family="Times,serif" font-size="14.00">to_dict()</text>
</g>
<!-- 15&#45;&gt;13 -->
<g id="edge6" class="edge"><title>15&#45;&gt;13</title>
<path fill="none" stroke="black" d="M1008.5,-212.129C1008.5,-260.66 1008.5,-335.584 1008.5,-389.579"/>
<polygon fill="none" stroke="black" points="1005,-389.745 1008.5,-399.745 1012,-389.745 1005,-389.745"/>
</g>
<!-- 16 -->
<g id="node17" class="node"><title>16</title>
<polygon fill="none" stroke="black" points="1108,-120.5 1108,-204.5 1227,-204.5 1227,-120.5 1108,-120.5"/>
<text text-anchor="middle" x="1167.5" y="-189.3" font-family="Times,serif" font-size="14.00">ResultErrorStream</text>
<polyline fill="none" stroke="black" points="1108,-181.5 1227,-181.5 "/>
<text text-anchor="start" x="1116" y="-166.3" font-family="Times,serif" font-size="14.00">type</text>
<polyline fill="none" stroke="black" points="1108,-158.5 1227,-158.5 "/>
<text text-anchor="start" x="1116" y="-143.3" font-family="Times,serif" font-size="14.00">from_dict()</text>
<text text-anchor="start" x="1116" y="-128.3" font-family="Times,serif" font-size="14.00">to_dict()</text>
</g>
<!-- 16&#45;&gt;13 -->
<g id="edge7" class="edge"><title>16&#45;&gt;13</title>
<path fill="none" stroke="black" d="M1152.5,-204.705C1139.78,-237.984 1120.17,-285.595 1098.5,-325 1086.17,-347.418 1070.96,-370.783 1056.58,-391.467"/>
<polygon fill="none" stroke="black" points="1053.58,-389.658 1050.7,-399.854 1059.31,-393.68 1053.58,-389.658"/>
</g>
<!-- 17 -->
<g id="node18" class="node"><title>17</title>
<polygon fill="none" stroke="black" points="1108.5,-400 1108.5,-514 1202.5,-514 1202.5,-400 1108.5,-400"/>
<text text-anchor="middle" x="1155.5" y="-498.8" font-family="Times,serif" font-size="14.00">ResultSuccess</text>
<polyline fill="none" stroke="black" points="1108.5,-491 1202.5,-491 "/>
<text text-anchor="start" x="1116.5" y="-475.8" font-family="Times,serif" font-size="14.00">downloads</text>
<text text-anchor="start" x="1116.5" y="-460.8" font-family="Times,serif" font-size="14.00">rtts</text>
<text text-anchor="start" x="1116.5" y="-445.8" font-family="Times,serif" font-size="14.00">type</text>
<polyline fill="none" stroke="black" points="1108.5,-438 1202.5,-438 "/>
<text text-anchor="start" x="1116.5" y="-422.8" font-family="Times,serif" font-size="14.00">from_dict()</text>
<text text-anchor="start" x="1116.5" y="-407.8" font-family="Times,serif" font-size="14.00">to_dict()</text>
</g>
<!-- 17&#45;&gt;11 -->
<g id="edge8" class="edge"><title>17&#45;&gt;11</title>
<path fill="none" stroke="black" d="M1123.96,-514.098C1110.66,-537.763 1094.6,-566.334 1078.74,-594.545"/>
<polygon fill="none" stroke="black" points="1075.68,-592.85 1073.83,-603.282 1081.78,-596.28 1075.68,-592.85"/>
</g>
<!-- 18 -->
<g id="node19" class="node"><title>18</title>
<polygon fill="none" stroke="black" points="1921,-90.5 1921,-234.5 2040,-234.5 2040,-90.5 1921,-90.5"/>
<text text-anchor="middle" x="1980.5" y="-219.3" font-family="Times,serif" font-size="14.00">V3BWFile</text>
<polyline fill="none" stroke="black" points="1921,-211.5 2040,-211.5 "/>
<text text-anchor="start" x="1929" y="-196.3" font-family="Times,serif" font-size="14.00">avg_bw</text>
<text text-anchor="start" x="1929" y="-181.3" font-family="Times,serif" font-size="14.00">bw_lines</text>
<text text-anchor="start" x="1929" y="-166.3" font-family="Times,serif" font-size="14.00">header</text>
<text text-anchor="start" x="1929" y="-151.3" font-family="Times,serif" font-size="14.00">num_lines</text>
<text text-anchor="start" x="1929" y="-136.3" font-family="Times,serif" font-size="14.00">total_bw</text>
<polyline fill="none" stroke="black" points="1921,-128.5 2040,-128.5 "/>
<text text-anchor="start" x="1929" y="-113.3" font-family="Times,serif" font-size="14.00">from_arg_results()</text>
<text text-anchor="start" x="1929" y="-98.3" font-family="Times,serif" font-size="14.00">write()</text>
</g>
<!-- 19 -->
<g id="node20" class="node"><title>19</title>
<polygon fill="none" stroke="black" points="2058.5,-0.5 2058.5,-324.5 2262.5,-324.5 2262.5,-0.5 2058.5,-0.5"/>
<text text-anchor="middle" x="2160.5" y="-309.3" font-family="Times,serif" font-size="14.00">V3BWHeader</text>
<polyline fill="none" stroke="black" points="2058.5,-301.5 2262.5,-301.5 "/>
<text text-anchor="start" x="2066.5" y="-286.3" font-family="Times,serif" font-size="14.00">file_created</text>
<text text-anchor="start" x="2066.5" y="-271.3" font-family="Times,serif" font-size="14.00">keyvalue_tuple_ls</text>
<text text-anchor="start" x="2066.5" y="-256.3" font-family="Times,serif" font-size="14.00">keyvalue_unordered_tuple_ls</text>
<text text-anchor="start" x="2066.5" y="-241.3" font-family="Times,serif" font-size="14.00">keyvalue_v110str_ls</text>
<text text-anchor="start" x="2066.5" y="-226.3" font-family="Times,serif" font-size="14.00">keyvalue_v200_ls</text>
<text text-anchor="start" x="2066.5" y="-211.3" font-family="Times,serif" font-size="14.00">latest_bandwidth</text>
<text text-anchor="start" x="2066.5" y="-196.3" font-family="Times,serif" font-size="14.00">num_lines</text>
<text text-anchor="start" x="2066.5" y="-181.3" font-family="Times,serif" font-size="14.00">software</text>
<text text-anchor="start" x="2066.5" y="-166.3" font-family="Times,serif" font-size="14.00">software_version</text>
<text text-anchor="start" x="2066.5" y="-151.3" font-family="Times,serif" font-size="14.00">strv110</text>
<text text-anchor="start" x="2066.5" y="-136.3" font-family="Times,serif" font-size="14.00">strv200</text>
<text text-anchor="start" x="2066.5" y="-121.3" font-family="Times,serif" font-size="14.00">timestamp</text>
<text text-anchor="start" x="2066.5" y="-106.3" font-family="Times,serif" font-size="14.00">version</text>
<polyline fill="none" stroke="black" points="2058.5,-98.5 2262.5,-98.5 "/>
<text text-anchor="start" x="2066.5" y="-83.3" font-family="Times,serif" font-size="14.00">earliest_bandwidth_from_results()</text>
<text text-anchor="start" x="2066.5" y="-68.3" font-family="Times,serif" font-size="14.00">from_lines_v110()</text>
<text text-anchor="start" x="2066.5" y="-53.3" font-family="Times,serif" font-size="14.00">from_results()</text>
<text text-anchor="start" x="2066.5" y="-38.3" font-family="Times,serif" font-size="14.00">from_text_v110()</text>
<text text-anchor="start" x="2066.5" y="-23.3" font-family="Times,serif" font-size="14.00">generator_started_from_file()</text>
<text text-anchor="start" x="2066.5" y="-8.3" font-family="Times,serif" font-size="14.00">latest_bandwidth_from_results()</text>
</g>
<!-- 20 -->
<g id="node21" class="node"><title>20</title>
<polygon fill="none" stroke="black" points="2280,-53 2280,-272 2447,-272 2447,-53 2280,-53"/>
<text text-anchor="middle" x="2363.5" y="-256.8" font-family="Times,serif" font-size="14.00">V3BWLine</text>
<polyline fill="none" stroke="black" points="2280,-249 2447,-249 "/>
<text text-anchor="start" x="2288" y="-233.8" font-family="Times,serif" font-size="14.00">bw</text>
<text text-anchor="start" x="2288" y="-218.8" font-family="Times,serif" font-size="14.00">bw_keyvalue_tuple_ls</text>
<text text-anchor="start" x="2288" y="-203.8" font-family="Times,serif" font-size="14.00">bw_keyvalue_v110str_ls</text>
<text text-anchor="start" x="2288" y="-188.8" font-family="Times,serif" font-size="14.00">bw_strv110</text>
<text text-anchor="start" x="2288" y="-173.8" font-family="Times,serif" font-size="14.00">node_id</text>
<polyline fill="none" stroke="black" points="2280,-166 2447,-166 "/>
<text text-anchor="start" x="2288" y="-150.8" font-family="Times,serif" font-size="14.00">bw_from_results()</text>
<text text-anchor="start" x="2288" y="-135.8" font-family="Times,serif" font-size="14.00">from_bw_line_v110()</text>
<text text-anchor="start" x="2288" y="-120.8" font-family="Times,serif" font-size="14.00">from_data()</text>
<text text-anchor="start" x="2288" y="-105.8" font-family="Times,serif" font-size="14.00">from_results()</text>
<text text-anchor="start" x="2288" y="-90.8" font-family="Times,serif" font-size="14.00">last_time_from_results()</text>
<text text-anchor="start" x="2288" y="-75.8" font-family="Times,serif" font-size="14.00">result_types_from_results()</text>
<text text-anchor="start" x="2288" y="-60.8" font-family="Times,serif" font-size="14.00">rtt_from_results()</text>
</g>
<!-- 22 -->
<g id="node23" class="node"><title>22</title>
<polygon fill="none" stroke="black" points="2465,-98 2465,-227 2574,-227 2574,-98 2465,-98"/>
<text text-anchor="middle" x="2519.5" y="-211.8" font-family="Times,serif" font-size="14.00">_ResultType</text>
<polyline fill="none" stroke="black" points="2465,-204 2574,-204 "/>
<text text-anchor="start" x="2473" y="-188.8" font-family="Times,serif" font-size="14.00">Error : str</text>
<text text-anchor="start" x="2473" y="-173.8" font-family="Times,serif" font-size="14.00">ErrorAuth : str</text>
<text text-anchor="start" x="2473" y="-158.8" font-family="Times,serif" font-size="14.00">ErrorCircuit : str</text>
<text text-anchor="start" x="2473" y="-143.8" font-family="Times,serif" font-size="14.00">ErrorStream : str</text>
<text text-anchor="start" x="2473" y="-128.8" font-family="Times,serif" font-size="14.00">Success : str</text>
<polyline fill="none" stroke="black" points="2465,-121 2574,-121 "/>
<text text-anchor="middle" x="2519.5" y="-105.8" font-family="Times,serif" font-size="14.00"> </text>
</g>
<!-- 23 -->
<g id="node24" class="node"><title>23</title>
<polygon fill="none" stroke="black" points="2483.5,-422 2483.5,-492 2555.5,-492 2555.5,-422 2483.5,-422"/>
<text text-anchor="middle" x="2519.5" y="-476.8" font-family="Times,serif" font-size="14.00">_StrEnum</text>
<polyline fill="none" stroke="black" points="2483.5,-469 2555.5,-469 "/>
<polyline fill="none" stroke="black" points="2483.5,-445 2555.5,-445 "/>
<text text-anchor="middle" x="2519.5" y="-429.8" font-family="Times,serif" font-size="14.00"> </text>