cpp_dependency_graph 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +20 -0
  3. data/.rspec +3 -0
  4. data/.vscode/launch.json +79 -0
  5. data/.vscode/tasks.json +12 -0
  6. data/CODE_OF_CONDUCT.md +46 -0
  7. data/Gemfile +7 -0
  8. data/LICENSE +21 -0
  9. data/README.md +84 -0
  10. data/Rakefile +9 -0
  11. data/TODO.md +38 -0
  12. data/bin/console +14 -0
  13. data/bin/setup +8 -0
  14. data/cpp_dependency_graph.gemspec +44 -0
  15. data/examples/leveldb_overall.png +0 -0
  16. data/examples/leveldb_overall.svg +215 -0
  17. data/examples/leveldb_overall_d3.png +0 -0
  18. data/examples/leveldb_overall_d3.svg +1 -0
  19. data/examples/rethinkdb_queue_component.png +0 -0
  20. data/examples/rethinkdb_queue_component.svg +234 -0
  21. data/examples/rethinkdb_queue_component_d3.png +0 -0
  22. data/examples/rethinkdb_queue_component_d3.svg +1 -0
  23. data/examples/rethinkdb_queue_include.png +0 -0
  24. data/examples/rethinkdb_queue_include.svg +211 -0
  25. data/examples/rethinkdb_queue_include_d3.png +0 -0
  26. data/examples/rethinkdb_queue_include_d3.svg +1 -0
  27. data/examples/rocksdb_overall_d3.svg +1 -0
  28. data/examples/rocksdb_table_component.png +0 -0
  29. data/exe/cpp_dependency_graph +87 -0
  30. data/lib/cpp_dependency_graph/bidirectional_hash.rb +30 -0
  31. data/lib/cpp_dependency_graph/component_link.rb +37 -0
  32. data/lib/cpp_dependency_graph/cycle_detector.rb +25 -0
  33. data/lib/cpp_dependency_graph/cyclic_link.rb +30 -0
  34. data/lib/cpp_dependency_graph/dependency_graph.rb +49 -0
  35. data/lib/cpp_dependency_graph/graph_to_html_converter.rb +7 -0
  36. data/lib/cpp_dependency_graph/graph_visualiser.rb +59 -0
  37. data/lib/cpp_dependency_graph/include_dependency_graph.rb +24 -0
  38. data/lib/cpp_dependency_graph/project.rb +66 -0
  39. data/lib/cpp_dependency_graph/source_component.rb +37 -0
  40. data/lib/cpp_dependency_graph/source_file.rb +51 -0
  41. data/lib/cpp_dependency_graph/tsortable_hash.rb +12 -0
  42. data/lib/cpp_dependency_graph/version.rb +5 -0
  43. data/lib/cpp_dependency_graph.rb +48 -0
  44. data/views/index.html.template +990 -0
  45. metadata +258 -0
@@ -0,0 +1 @@
1
+ <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="1536" height="734" style="perspective-origin:768px 367px;transform-origin:768px 367px;" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"><rect width="1536" height="734" style="overflow-x:visible;overflow-y:visible;pointer-events:all;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform-origin:0px 0px;fill:none;"/><g style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;transform-origin:0px 0px;"><defs style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;transform-origin:0px 0px;"><marker id="default" orient="auto" class="marker" viewBox="0 -6.666666666666667 13.333333333333334 13.333333333333334" refX="13.333333333333334" refY="0" markerWidth="13.333333333333334" markerHeight="13.333333333333334" style="pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:rgb(153, 153, 153);stroke:rgb(153, 153, 153);"><path d="M0,-6.666666666666667L13.333333333333334,0L0,6.666666666666667" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:rgb(153, 153, 153);stroke:rgb(153, 153, 153);d:path('M 0 -6.66667 L 13.3333 0 L 0 6.66667');"/></marker><marker id="dependency" orient="auto" class="marker" viewBox="0 -6.666666666666667 13.333333333333334 13.333333333333334" refX="13.333333333333334" refY="0" markerWidth="13.333333333333334" markerHeight="13.333333333333334" style="pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:rgb(153, 0, 0);stroke:rgb(153, 0, 0);"><path d="M0,-6.666666666666667L13.333333333333334,0L0,6.666666666666667" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:rgb(153, 0, 0);stroke:rgb(153, 0, 0);d:path('M 0 -6.66667 L 13.3333 0 L 0 6.66667');"/></marker><marker id="dependants" orient="auto" class="marker" viewBox="0 -6.666666666666667 13.333333333333334 13.333333333333334" refX="13.333333333333334" refY="0" markerWidth="13.333333333333334" markerHeight="13.333333333333334" style="pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:rgb(0, 153, 0);stroke:rgb(0, 153, 0);"><path d="M0,-6.666666666666667L13.333333333333334,0L0,6.666666666666667" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:rgb(0, 153, 0);stroke:rgb(0, 153, 0);d:path('M 0 -6.66667 L 13.3333 0 L 0 6.66667');"/></marker></defs><g style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;transform-origin:0px 0px;"><path class="link" marker-end="url(#default)" d="M690.0780205233473,287.4308924755545L679.730246693855,342.5062470011319" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 690.078 287.431 L 679.73 342.506');"/><path class="link" marker-end="url(#default)" d="M698.0614554283065,236.07349914028907L702.6235082061498,199.08273922442294" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 698.061 236.074 L 702.624 199.083');"/><path class="link" marker-end="url(#default)" d="M807.1876947749264,391.41716436014684L832.6503807026921,361.97053003051843" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 807.188 391.417 L 832.65 361.971');"/><path class="link" marker-end="url(#default)" d="M754.3576995988374,402.29704645265247L695.4621630254846,373.72930282390445" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 754.358 402.297 L 695.462 373.729');"/><path class="link" marker-end="url(#default)" d="M816.021957316449,430.9363609571903L850.8687971342035,446.41326524597133" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 816.022 430.936 L 850.869 446.413');"/><path class="link" marker-end="url(#default)" d="M778.9545064179084,450.6029438032991L772.180764662975,488.42177485077036" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 778.955 450.603 L 772.181 488.422');"/><path class="link" marker-end="url(#default)" d="M818.2351968743081,410.2058807664795L857.0778777598815,402.11949220361964" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 818.235 410.206 L 857.078 402.12');"/><path class="link" marker-end="url(#default)" d="M801.1161736278178,447.04569898890225L820.5290557186883,482.9603053340579" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 801.116 447.046 L 820.529 482.96');"/><path class="link" marker-end="url(#default)" d="M608.714885924343,326.9729996786359L656.4313995291565,353.45282726311405" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 608.715 326.973 L 656.431 353.453');"/><path class="link" marker-end="url(#default)" d="M568.5569235361452,290.18544762602124L549.1357462524477,261.4398658954654" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 568.557 290.185 L 549.136 261.44');"/><path class="link" marker-end="url(#default)" d="M556.2352396001573,312.9667167627623L521.9212754815524,312.45220867983875" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 556.235 312.967 L 521.921 312.452');"/><path class="link" marker-end="url(#default)" d="M946.2624303516441,178.43650719511083L957.7569638365081,189.79100801106526" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 946.262 178.437 L 957.757 189.791');"/><path class="link" marker-end="url(#default)" d="M632.4353386262242,420.96576193564414L662.3490602706709,381.63818533508953" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 632.435 420.966 L 662.349 381.638');"/><path class="link" marker-end="url(#default)" d="M602.3019307906064,463.3124595905042L582.7978403831447,492.65435039867447" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 602.302 463.312 L 582.798 492.654');"/></g><g style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;transform-origin:0px 0px;"><circle class="node" r="26" source="3" dest="0" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 694.879, 261.878);transform-origin:0px 0px;fill:rgb(31, 119, 180);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:26px;" transform="translate(694.8789993408989,261.87799435433504)"/><circle class="node" r="22" source="1" dest="4" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 675.668, 364.128);transform-origin:0px 0px;fill:rgb(255, 127, 14);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:22px;" transform="translate(675.6678800020806,364.12793002677915)"/><circle class="node" r="22" source="1" dest="1" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 705.316, 177.248);transform-origin:0px 0px;fill:rgb(255, 127, 14);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:22px;" transform="translate(705.3163556647255,177.2481663509994)"/><circle class="node" r="34" source="7" dest="0" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 784.949, 417.136);transform-origin:0px 0px;fill:rgb(44, 160, 44);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:34px;" transform="translate(784.9488642713709,417.1355316845734)"/><circle class="node" r="22" source="1" dest="1" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 847.04, 345.329);transform-origin:0px 0px;fill:rgb(255, 127, 14);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:22px;" transform="translate(847.0402122049927,345.32923352647776)"/><circle class="node" r="22" source="1" dest="1" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 870.975, 455.343);transform-origin:0px 0px;fill:rgb(255, 127, 14);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:22px;" transform="translate(870.9749161633717,455.3432135988411)"/><circle class="node" r="22" source="1" dest="1" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 768.302, 510.077);transform-origin:0px 0px;fill:rgb(255, 127, 14);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:22px;" transform="translate(768.3020625224993,510.077159162887)"/><circle class="node" r="22" source="1" dest="1" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 878.616, 397.636);transform-origin:0px 0px;fill:rgb(255, 127, 14);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:22px;" transform="translate(878.6160929735468,397.6356004330883)"/><circle class="node" r="22" source="1" dest="1" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 830.99, 502.314);transform-origin:0px 0px;fill:rgb(255, 127, 14);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:22px;" transform="translate(830.9902558905069,502.31394300156484)"/><circle class="node" r="28" source="4" dest="0" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 584.232, 313.387);transform-origin:0px 0px;fill:rgb(214, 39, 40);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:28px;" transform="translate(584.2320925951669,313.38650525215303)"/><circle class="node" r="22" source="1" dest="1" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 536.82, 243.21);transform-origin:0px 0px;fill:rgb(255, 127, 14);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:22px;" transform="translate(536.8195419917878,243.21046347493325)"/><circle class="node" r="22" source="1" dest="1" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 499.924, 312.122);transform-origin:0px 0px;fill:rgb(148, 103, 189);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:22px;" transform="translate(499.92374812833054,312.12237486674604)"/><circle class="node" r="24" source="2" dest="0" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 929.188, 161.57);transform-origin:0px 0px;fill:rgb(140, 86, 75);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:24px;" transform="translate(929.1881824043811,161.57026703805786)"/><circle class="node" r="22" source="1" dest="1" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 973.408, 205.252);transform-origin:0px 0px;fill:rgb(227, 119, 194);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:22px;" transform="translate(973.4083577881659,205.2517281550305)"/><circle class="node" r="26" source="3" dest="0" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 616.695, 441.66);transform-origin:0px 0px;fill:rgb(127, 127, 127);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:26px;" transform="translate(616.6949153072854,441.6597000272837)"/><circle class="node" r="22" source="1" dest="1" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 570.619, 510.976);transform-origin:0px 0px;fill:rgb(148, 103, 189);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:22px;" transform="translate(570.619161176724,510.97591618293797)"/></g><g style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;transform-origin:0px 0px;"/><g style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;transform-origin:0px 0px;"><text visibility="visible" transform="translate(694.8789993408989,261.87799435433504)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.3375px 0px;transform:matrix(1, 0, 0, 1, 694.879, 261.878);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">accounting.hpp</text><text visibility="visible" transform="translate(675.6678800020806,364.12793002677915)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.3375px 0px;transform:matrix(1, 0, 0, 1, 675.668, 364.128);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">concurrency/queue/passive_producer.hpp</text><text visibility="visible" transform="translate(705.3163556647255,177.2481663509994)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.3375px 0px;transform:matrix(1, 0, 0, 1, 705.316, 177.248);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">containers/intrusive_list.hpp</text><text visibility="visible" transform="translate(784.9488642713709,417.1355316845734)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.3375px 0px;transform:matrix(1, 0, 0, 1, 784.949, 417.136);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">disk_backed_queue_wrapper.hpp</text><text visibility="visible" transform="translate(847.0402122049927,345.32923352647776)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.3375px 0px;transform:matrix(1, 0, 0, 1, 847.04, 345.329);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">concurrency/auto_drainer.hpp</text><text visibility="visible" transform="translate(870.9749161633717,455.3432135988411)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.3375px 0px;transform:matrix(1, 0, 0, 1, 870.975, 455.343);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">concurrency/wait_any.hpp</text><text visibility="visible" transform="translate(768.3020625224993,510.077159162887)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.325px 0px;transform:matrix(1, 0, 0, 1, 768.302, 510.077);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">containers/archive/archive.hpp</text><text visibility="visible" transform="translate(878.6160929735468,397.6356004330883)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.3375px 0px;transform:matrix(1, 0, 0, 1, 878.616, 397.636);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">containers/archive/vector_stream.hpp</text><text visibility="visible" transform="translate(830.9902558905069,502.31394300156484)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.3375px 0px;transform:matrix(1, 0, 0, 1, 830.99, 502.314);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">containers/disk_backed_queue.hpp</text><text visibility="visible" transform="translate(584.2320925951669,313.38650525215303)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.3375px 0px;transform:matrix(1, 0, 0, 1, 584.232, 313.387);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">limited_fifo.hpp</text><text visibility="visible" transform="translate(536.8195419917878,243.21046347493325)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.3375px 0px;transform:matrix(1, 0, 0, 1, 536.82, 243.21);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">concurrency/semaphore.hpp</text><text visibility="visible" transform="translate(499.92374812833054,312.12237486674604)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.3375px 0px;transform:matrix(1, 0, 0, 1, 499.924, 312.122);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">perfmon/types.hpp</text><text visibility="visible" transform="translate(929.1881824043811,161.57026703805786)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.325px 0px;transform:matrix(1, 0, 0, 1, 929.188, 161.57);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">passive_producer.hpp</text><text visibility="visible" transform="translate(973.4083577881659,205.2517281550305)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.3375px 0px;transform:matrix(1, 0, 0, 1, 973.408, 205.252);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">arch/runtime/coroutines.hpp</text><text visibility="visible" transform="translate(616.6949153072854,441.6597000272837)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.3375px 0px;transform:matrix(1, 0, 0, 1, 616.695, 441.66);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">unlimited_fifo.hpp</text><text visibility="visible" transform="translate(570.619161176724,510.97591618293797)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.3375px 0px;transform:matrix(1, 0, 0, 1, 570.619, 510.976);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">perfmon/perfmon.hpp</text></g></g></svg>
@@ -0,0 +1 @@
1
+ <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="1536" height="686" style="perspective-origin:768px 343px;transform-origin:768px 343px;" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"><rect width="1536" height="686" style="overflow-x:visible;overflow-y:visible;pointer-events:all;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform-origin:0px 0px;fill:none;"/><g style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;transform-origin:0px 0px;"><defs style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;transform-origin:0px 0px;"><marker id="default" orient="auto" class="marker" viewBox="0 -5 10 10" refX="10" refY="0" markerWidth="10" markerHeight="10" style="pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:rgb(153, 153, 153);stroke:rgb(153, 153, 153);"><path d="M0,-5L10,0L0,5" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:rgb(153, 153, 153);stroke:rgb(153, 153, 153);d:path('M 0 -5 L 10 0 L 0 5');"/></marker><marker id="dependency" orient="auto" class="marker" viewBox="0 -5 10 10" refX="10" refY="0" markerWidth="10" markerHeight="10" style="pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:rgb(153, 0, 0);stroke:rgb(153, 0, 0);"><path d="M0,-5L10,0L0,5" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:rgb(153, 0, 0);stroke:rgb(153, 0, 0);d:path('M 0 -5 L 10 0 L 0 5');"/></marker><marker id="dependants" orient="auto" class="marker" viewBox="0 -5 10 10" refX="10" refY="0" markerWidth="10" markerHeight="10" style="pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:rgb(0, 153, 0);stroke:rgb(0, 153, 0);"><path d="M0,-5L10,0L0,5" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:rgb(0, 153, 0);stroke:rgb(0, 153, 0);d:path('M 0 -5 L 10 0 L 0 5');"/></marker></defs><g style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;transform-origin:0px 0px;"><path class="link" marker-end="url(#default)" d="M696.7055274839288,275.8515307332068L723.1537698715011,328.12253940560936" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 696.706 275.852 L 723.154 328.123');"/><path class="link" marker-end="url(#default)" d="M708.8990029071616,258.353725198912L698.6965973544079,257.1767615402617" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 708.899 258.354 L 698.697 257.177');"/><path class="link" marker-end="url(#default)" d="M695.0771084091784,276.5956512219623L699.215148614542,286.6961484260591" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 695.077 276.596 L 699.215 286.696');"/><path class="link" marker-end="url(#default)" d="M703.3016509321443,270.7931778911469L721.5653520693883,287.1640305955413" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 703.302 270.793 L 721.565 287.164');"/><path class="link" marker-end="url(#default)" d="M782.4152978307435,328.96081404166557L782.5871226823774,289.3359038758096" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 782.415 328.961 L 782.587 289.336');"/><path class="link" marker-end="url(#default)" d="M757.9301988289163,337.46892646479455L781.4565728712341,366.9702981192571" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 757.93 337.469 L 781.457 366.97');"/><path class="link" marker-end="url(#default)" d="M761.0753744071665,335.20687038473204L756.3273564844186,327.861163206588" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 761.075 335.207 L 756.327 327.861');"/><path class="link" marker-end="url(#default)" d="M745.2741422364895,355.5480301529404L760.9397407283723,360.8073540491375" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 745.274 355.548 L 760.94 360.807');"/><path class="link" marker-end="url(#default)" d="M750.7929217644131,344.90199400104353L736.5615188036876,334.46892236840097" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 750.793 344.902 L 736.562 334.469');"/><path class="link" marker-end="url(#default)" d="M793.0584444494121,330.4891913083682L792.679542076032,331.8023254485023" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 793.058 330.489 L 792.68 331.802');"/><path class="link" marker-end="url(#default)" d="M821.225583887546,369.2278905648906L805.382462691869,368.71274009549956" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 821.226 369.228 L 805.382 368.713');"/><path class="link" marker-end="url(#default)" d="M763.0468239495631,334.0136572540072L732.1249116059524,279.3399782147018" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 763.047 334.014 L 732.125 279.34');"/><path class="link" marker-end="url(#default)" d="M776.57737860098,329.37463857423063L774.5313379209969,315.44787200469716" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 776.577 329.375 L 774.531 315.448');"/><path class="link" marker-end="url(#default)" d="M758.8426659593124,336.76308648951476L733.949196894527,303.5795913810265" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 758.843 336.763 L 733.949 303.58');"/><path class="link" marker-end="url(#default)" d="M810.763465466812,341.3566003270025L793.7602850188896,357.21891238718183" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 810.763 341.357 L 793.76 357.219');"/><path class="link" marker-end="url(#default)" d="M744.2227628267852,359.2875346555577L680.3481373345319,344.7181184905223" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 744.223 359.288 L 680.348 344.718');"/><path class="link" marker-end="url(#default)" d="M756.9355029571313,338.2894277311678L701.1495589288455,272.89309108847465" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 756.935 338.289 L 701.15 272.893');"/><path class="link" marker-end="url(#default)" d="M743.4872075025036,372.2896174181506L748.1796923061706,371.76549200879447" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 743.487 372.29 L 748.18 371.766');"/><path class="link" marker-end="url(#default)" d="M789.269172229713,406.32289831113474L788.2436806318437,400.72124103732324" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 789.269 406.323 L 788.244 400.721');"/><path class="link" marker-end="url(#default)" d="M716.1811023464045,314.0897310339846L740.8947567063863,305.4566456242425" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 716.181 314.09 L 740.895 305.457');"/><path class="link" marker-end="url(#default)" d="M730.5104593291406,280.600038423244L730.3485096704759,280.2432678343881" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 730.51 280.6 L 730.349 280.243');"/><path class="link" marker-end="url(#default)" d="M765.690337039544,292.85458214232125L748.139543452532,301.86465998426524" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 765.69 292.855 L 748.14 301.865');"/><path class="link" marker-end="url(#default)" d="M761.7535262063177,287.1390656864436L767.0581626596186,282.3723023641948" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 761.754 287.139 L 767.058 282.372');"/><path class="link" marker-end="url(#default)" d="M754.0418937801257,329.1846125266282L742.5160452669202,306.82560864440563" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 754.042 329.185 L 742.516 306.826');"/><path class="link" marker-end="url(#default)" d="M766.6821118759793,315.3554855069146L787.6134253069706,323.86633489300783" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 766.682 315.355 L 787.613 323.866');"/><path class="link" marker-end="url(#default)" d="M738.0706600660454,331.9445360898134L738.9436934059985,325.45521593314544" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 738.071 331.945 L 738.944 325.455');"/><path class="link" marker-end="url(#default)" d="M771.9093526275533,459.06169307202003L777.8492503689196,406.71179537737726" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 771.909 459.062 L 777.849 406.712');"/><path class="link" marker-end="url(#default)" d="M763.6421714793373,459.66021843803935L742.220297723621,378.3237679874406" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 763.642 459.66 L 742.22 378.324');"/><path class="link" marker-end="url(#default)" d="M767.7419934479093,458.97740830622683L761.6201141594756,374.72960951011885" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 767.742 458.977 L 761.62 374.73');"/><path class="link" marker-end="url(#default)" d="M765.8787847418106,459.19116559951357L745.863292144399,331.8580991731316" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 765.879 459.191 L 745.863 331.858');"/><path class="link" marker-end="url(#default)" d="M612.369188366527,203.86756371723678L701.0390512871265,249.46560434389215" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 612.369 203.868 L 701.039 249.466');"/><path class="link" marker-end="url(#default)" d="M610.497151985255,206.85943292004353L720.0663783374082,288.9912962155426" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 610.497 206.859 L 720.066 288.991');"/><path class="link" marker-end="url(#default)" d="M608.2851183891463,209.36665252475785L689.2700367892428,293.19059157213064" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 608.285 209.367 L 689.27 293.191');"/><path class="link" marker-end="url(#default)" d="M758.8435158938022,338.9190604500929L727.6779753343571,356.55105437383924" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 758.844 338.919 L 727.678 356.551');"/><path class="link" marker-end="url(#default)" d="M720.3922734997985,329.7318268564507L728.6003049690564,342.0741547553286" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 720.392 329.732 L 728.6 342.074');"/><path class="link" marker-end="url(#default)" d="M756.5928772090143,335.5566225114631L775.8571750890551,320.4550686368937" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 756.593 335.557 L 775.857 320.455');"/><path class="link" marker-end="url(#default)" d="M738.9436934059985,325.45521593314544L738.0706600660454,331.9445360898134" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 738.944 325.455 L 738.071 331.945');"/><path class="link" marker-end="url(#default)" d="M748.7551679327448,328.78055856778684L758.1584356251936,312.35040712405765" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 748.755 328.781 L 758.158 312.35');"/><path class="link" marker-end="url(#default)" d="M728.7816434820622,326.023699925529L724.3088291669602,308.1718606521025" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 728.782 326.024 L 724.309 308.172');"/><path class="link" marker-end="url(#default)" d="M760.9397407283723,360.8073540491375L745.2741422364895,355.5480301529404" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 760.94 360.807 L 745.274 355.548');"/><path class="link" marker-end="url(#default)" d="M793.7602850188896,357.21891238718183L810.763465466812,341.3566003270025" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 793.76 357.219 L 810.763 341.357');"/><path class="link" marker-end="url(#default)" d="M787.6134253069706,323.86633489300783L766.6821118759793,315.3554855069146" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 787.613 323.866 L 766.682 315.355');"/><path class="link" marker-end="url(#default)" d="M785.9193312845362,341.9791763065537L761.8072621308917,346.8587250872723" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 785.919 341.979 L 761.807 346.859');"/><path class="link" marker-end="url(#default)" d="M785.3385077347525,337.41497179778776L794.9595801948278,336.8999564899652" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 785.339 337.415 L 794.96 336.9');"/><path class="link" marker-end="url(#default)" d="M785.837230763273,329.9035805691855L742.1132034004436,321.67239614295846" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 785.837 329.904 L 742.113 321.672');"/><path class="link" marker-end="url(#default)" d="M802.5670543945915,307.62675957513324L792.1624632591547,287.07238810239727" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 802.567 307.627 L 792.162 287.072');"/><path class="link" marker-end="url(#default)" d="M804.5968522725614,306.6882486617115L814.6057903663271,330.5218163021764" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 804.597 306.688 L 814.606 330.522');"/><path class="link" marker-end="url(#default)" d="M787.2391131302383,346.6302620555728L745.8450696638353,361.89557873964964" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 787.239 346.63 L 745.845 361.896');"/><path class="link" marker-end="url(#default)" d="M792.1183310399663,316.15091042051296L738.6734593589684,273.7412054211913" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 792.118 316.151 L 738.673 273.741');"/><path class="link" marker-end="url(#default)" d="M794.40882179319,313.5686681782631L788.9457196924203,308.159778227719" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 794.409 313.569 L 788.946 308.16');"/><path class="link" marker-end="url(#default)" d="M631.9336599944913,336.84049991783235L723.015433510864,338.2623587007083" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 631.934 336.841 L 723.015 338.262');"/><path class="link" marker-end="url(#default)" d="M631.5541712390346,340.7331531569496L743.867604805257,361.026139080992" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 631.554 340.733 L 743.868 361.026');"/><path class="link" marker-end="url(#default)" d="M627.7995772747015,322.99512219944097L702.4268011635895,272.3841331444157" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 627.8 322.995 L 702.427 272.384');"/><path class="link" marker-end="url(#default)" d="M631.7553176643386,339.4100193507695L708.5476359962979,348.9019926765033" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 631.755 339.41 L 708.548 348.902');"/><path class="link" marker-end="url(#default)" d="M631.4715269297192,331.76413652261556L680.2673477280092,322.01583380497857" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 631.471 331.764 L 680.267 322.016');"/><path class="link" marker-end="url(#default)" d="M743.4295348745303,306.37098227748567L730.7868030836167,280.03860193659085" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 743.43 306.371 L 730.787 280.039');"/><path class="link" marker-end="url(#default)" d="M742.5160452669202,306.82560864440563L754.0418937801257,329.1846125266282" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 742.516 306.826 L 754.042 329.185');"/><path class="link" marker-end="url(#default)" d="M727.6779753343571,356.55105437383924L758.8435158938022,338.9190604500929" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 727.678 356.551 L 758.844 338.919');"/><path class="link" marker-end="url(#default)" d="M726.5587393668225,323.2407079949523L739.5527304075024,329.48041141040704" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 726.559 323.241 L 739.553 329.48');"/><path class="link" marker-end="url(#default)" d="M723.0110677030654,338.7863936708136L681.0242151705585,338.74220815132816" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 723.011 338.786 L 681.024 338.742');"/><path class="link" marker-end="url(#default)" d="M781.4565728712341,366.9702981192571L757.9301988289163,337.46892646479455" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 781.457 366.97 L 757.93 337.469');"/><path class="link" marker-end="url(#default)" d="M779.3421433812259,368.5336468828079L800.0000672940712,398.7206017230962" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 779.342 368.534 L 800 398.721');"/><path class="link" marker-end="url(#default)" d="M735.3426694190249,311.6985001812724L701.3399792051824,272.72880678039735" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 735.343 311.698 L 701.34 272.729');"/><path class="link" marker-end="url(#default)" d="M794.9595801948278,336.8999564899652L785.3385077347525,337.41497179778776" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 794.96 336.9 L 785.339 337.415');"/><path class="link" marker-end="url(#default)" d="M780.5102287411164,367.6996180738683L869.901934614237,487.76074215164533" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 780.51 367.7 L 869.902 487.761');"/><path class="link" marker-end="url(#default)" d="M785.7097752728466,314.6752011967005L777.3545439934067,322.232532482452" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 785.71 314.675 L 777.355 322.233');"/><path class="link" marker-end="url(#default)" d="M737.862342822114,309.69126868414617L733.6082897907089,303.8311760514955" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 737.862 309.691 L 733.608 303.831');"/><path class="link" marker-end="url(#default)" d="M770.4697661821245,304.69661009080136L775.9939313758133,288.2439080620828" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 770.47 304.697 L 775.994 288.244');"/><path class="link" marker-end="url(#default)" d="M721.7139650301203,255.27446631182272L717.7423542338082,282.0110850561331" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 721.714 255.274 L 717.742 282.011');"/><path class="link" marker-end="url(#default)" d="M724.3088291669602,308.1718606521025L728.7816434820622,326.023699925529" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 724.309 308.172 L 728.782 326.024');"/><path class="link" marker-end="url(#default)" d="M733.6082897907089,303.8311760514955L737.862342822114,309.69126868414617" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 733.608 303.831 L 737.862 309.691');"/><path class="link" marker-end="url(#default)" d="M712.5893161545799,308.4842628661006L717.1739796366566,284.9248018005586" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 712.589 308.484 L 717.174 284.925');"/><path class="link" marker-end="url(#default)" d="M733.949196894527,303.5795913810265L758.8426659593124,336.76308648951476" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 733.949 303.58 L 758.843 336.763');"/><path class="link" marker-end="url(#default)" d="M744.4273786456351,286.1220278751496L745.6264500472591,286.3081137604515" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 744.427 286.122 L 745.626 286.308');"/><path class="link" marker-end="url(#default)" d="M737.1279352115354,300.7795590372524L722.2894677732329,286.3874693198392" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 737.128 300.78 L 722.289 286.387');"/><path class="link" marker-end="url(#default)" d="M774.5313379209969,315.44787200469716L776.57737860098,329.37463857423063" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 774.531 315.448 L 776.577 329.375');"/><path class="link" marker-end="url(#default)" d="M747.3943203004213,300.28159654704393L740.100507990375,303.41413684563884" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 747.394 300.282 L 740.101 303.414');"/><path class="link" marker-end="url(#default)" d="M764.8022825954367,314.9972920005011L767.5134409241497,303.84272209058395" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 764.802 314.997 L 767.513 303.843');"/><path class="link" marker-end="url(#default)" d="M748.139543452532,301.86465998426524L765.690337039544,292.85458214232125" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 748.14 301.865 L 765.69 292.855');"/><path class="link" marker-end="url(#default)" d="M749.0747716489326,276.9075742413673L740.2395687881232,271.5003931454494" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 749.075 276.908 L 740.24 271.5');"/><path class="link" marker-end="url(#default)" d="M758.1584356251936,312.35040712405765L748.7551679327448,328.78055856778684" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 758.158 312.35 L 748.755 328.781');"/><path class="link" marker-end="url(#default)" d="M775.9939313758133,288.2439080620828L770.4697661821245,304.69661009080136" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 775.994 288.244 L 770.47 304.697');"/><path class="link" marker-end="url(#default)" d="M765.1857215840928,279.9556437344731L737.3956538554294,298.41547330650246" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 765.186 279.956 L 737.396 298.415');"/><path class="link" marker-end="url(#default)" d="M772.3573534635744,286.6249083087963L748.6133505512001,328.6999616924958" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 772.357 286.625 L 748.613 328.7');"/><path class="link" marker-end="url(#default)" d="M724.4863036298833,281.991085417653L731.2181762421059,325.53118954386605" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 724.486 281.991 L 731.218 325.531');"/><path class="link" marker-end="url(#default)" d="M703.9643250990835,245.11337109772597L694.8072197647964,237.2652468950016" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 703.964 245.113 L 694.807 237.265');"/><path class="link" marker-end="url(#default)" d="M730.3485096704759,280.2432678343881L730.5104593291406,280.600038423244" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 730.349 280.243 L 730.51 280.6');"/><path class="link" marker-end="url(#default)" d="M717.1407733030692,281.9133778366674L716.6275784664703,284.82346621832943" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 717.141 281.913 L 716.628 284.823');"/><path class="link" marker-end="url(#default)" d="M691.1734741870968,240.74281790519413L725.0172983105426,283.9331712843883" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 691.173 240.743 L 725.017 283.933');"/><path class="link" marker-end="url(#default)" d="M684.4036924467798,244.545690690083L700.0907312586379,286.35260884485547" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 684.404 244.546 L 700.091 286.353');"/><path class="link" marker-end="url(#default)" d="M690.1699561437797,241.49017171804093L738.2233209993628,309.43260625341867" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 690.17 241.49 L 738.223 309.433');"/><path class="link" marker-end="url(#default)" d="M686.0128008947944,243.87835948731777L724.1546102842934,327.64171830032666" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 686.013 243.878 L 724.155 327.642');"/><path class="link" marker-end="url(#default)" d="M694.8072197647964,237.2652468950016L703.9643250990835,245.11337109772597" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 694.807 237.265 L 703.964 245.113');"/><path class="link" marker-end="url(#default)" d="M696.0495010927013,235.69497031713524L750.2206263368746,275.1947893285986" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 696.049 235.695 L 750.221 275.195');"/><path class="link" marker-end="url(#default)" d="M777.3545439934067,322.232532482452L785.7097752728466,314.6752011967005" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 777.355 322.233 L 785.71 314.675');"/><path class="link" marker-end="url(#default)" d="M792.679542076032,331.8023254485023L793.0584444494121,330.4891913083682" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 792.68 331.802 L 793.058 330.489');"/><path class="link" marker-end="url(#default)" d="M769.3151777438472,305.7431639945368L742.1922876331736,310.4541957712141" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 769.315 305.743 L 742.192 310.454');"/><path class="link" marker-end="url(#default)" d="M775.8571750890551,320.4550686368937L756.5928772090143,335.5566225114631" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 775.857 320.455 L 756.593 335.557');"/><path class="link" marker-end="url(#default)" d="M784.7883419805404,271.83570836059897L793.5218427754733,286.3198456255842" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 784.788 271.836 L 793.522 286.32');"/><path class="link" marker-end="url(#default)" d="M772.3050584771353,285.3522817118028L741.177893248847,269.80774361886154" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 772.305 285.352 L 741.178 269.808');"/><path class="link" marker-end="url(#default)" d="M768.9458583184505,302.8779509181263L768.574521266164,302.9093684244601" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 768.946 302.878 L 768.575 302.909');"/><path class="link" marker-end="url(#default)" d="M770.3854675248483,290.07872222603856L795.1216051824908,297.95921878641275" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 770.385 290.079 L 795.122 297.959');"/><path class="link" marker-end="url(#default)" d="M771.0263421594202,288.2538082305173L707.5486304955276,263.84933361704765" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 771.026 288.254 L 707.549 263.849');"/><path class="link" marker-end="url(#default)" d="M769.5685399442082,293.1458507821846L744.1411736584316,287.6678043630851" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 769.569 293.146 L 744.141 287.668');"/><path class="link" marker-end="url(#default)" d="M814.6057903663271,330.5218163021764L804.5968522725614,306.6882486617115" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 814.606 330.522 L 804.597 306.688');"/><path class="link" marker-end="url(#default)" d="M748.1796923061706,371.76549200879447L743.4872075025036,372.2896174181506" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 748.18 371.766 L 743.487 372.29');"/><path class="link" marker-end="url(#default)" d="M730.6470193308003,342.1059009914273L770.5743019652443,285.49698837520515" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 730.647 342.106 L 770.574 285.497');"/><path class="link" marker-end="url(#default)" d="M709.7000039682671,334.55444357231016L708.7113993501594,347.24971061056044" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 709.7 334.554 L 708.711 347.25');"/><path class="link" marker-end="url(#default)" d="M720.2339255727143,336.757698027596L747.2372004475229,259.1031180157014" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 720.234 336.758 L 747.237 259.103');"/><path class="link" marker-end="url(#default)" d="M738.6351522108159,349.4568715134728L714.6463495215206,369.55251587221363" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 738.635 349.457 L 714.646 369.553');"/><path class="link" marker-end="url(#default)" d="M725.0573188795513,338.7797306500388L729.7018869987938,329.3878599210242" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 725.057 338.78 L 729.702 329.388');"/><path class="link" marker-end="url(#default)" d="M731.5714580926713,342.7769336389123L755.5659739099253,310.6494966541178" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 731.571 342.777 L 755.566 310.65');"/><path class="link" marker-end="url(#default)" d="M740.6000370024896,351.99325226773647L729.7303780754319,359.76806983240454" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 740.6 351.993 L 729.73 359.768');"/><path class="link" marker-end="url(#default)" d="M711.6575258285264,334.7531066596168L718.2528556669788,282.08095328079804" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 711.658 334.753 L 718.253 282.081');"/><path class="link" marker-end="url(#default)" d="M745.8450696638353,361.89557873964964L787.2391131302383,346.6302620555728" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 745.845 361.896 L 787.239 346.63');"/><path class="link" marker-end="url(#default)" d="M685.4306664083455,340.05956854504166L659.8576833888876,295.7900100616858" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 685.431 340.06 L 659.858 295.79');"/><path class="link" marker-end="url(#default)" d="M746.7621859181211,388.17762398169003L817.2808847672669,408.7265052333116" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 746.762 388.178 L 817.281 408.727');"/><path class="link" marker-end="url(#default)" d="M734.7946149840512,407.41111585616983L706.6703658617237,376.6802054535477" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 734.795 407.411 L 706.67 376.68');"/><path class="link" marker-end="url(#default)" d="M739.2323076492745,350.1861861536781L776.0624081454446,320.7141907655213" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 739.232 350.186 L 776.062 320.714');"/><path class="link" marker-end="url(#default)" d="M672.3471237399634,351.89756018795674L675.9406006632133,354.4831538982971" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 672.347 351.898 L 675.941 354.483');"/><path class="link" marker-end="url(#default)" d="M711.4320178286944,334.7254890163651L714.5371282798945,308.78996666877276" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 711.432 334.725 L 714.537 308.79');"/><path class="link" marker-end="url(#default)" d="M727.0492788549511,413.02312491484133L730.0247577338713,418.3064274643891" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 727.049 413.023 L 730.025 418.306');"/><path class="link" marker-end="url(#default)" d="M678.2254717587999,430.85192970596324L719.4763203400186,374.05964270226815" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 678.225 430.852 L 719.476 374.06');"/><path class="link" marker-end="url(#default)" d="M675.5840945374049,429.199954373762L728.9729033414385,329.01348088036974" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 675.584 429.2 L 728.973 329.013');"/><path class="link" marker-end="url(#default)" d="M672.3686992125273,427.7964275361364L700.8444856879436,345.60890732750966" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 672.369 427.796 L 700.844 345.609');"/><path class="link" marker-end="url(#default)" d="M683.5073264101962,436.2570294271206L750.1714045204254,390.1462198143554" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 683.507 436.257 L 750.171 390.146');"/><path class="link" marker-end="url(#default)" d="M724.3164007684023,523.4866231766194L733.6089192366459,379.15835292048234" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 724.316 523.487 L 733.609 379.158');"/><path class="link" marker-end="url(#default)" d="M726.4455583757183,523.7418614790995L752.767238820743,374.27868403613195" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 726.446 523.742 L 752.767 374.279');"/><path class="link" marker-end="url(#default)" d="M716.6275784664703,284.82346621832943L717.1407733030692,281.9133778366674" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 716.628 284.823 L 717.141 281.913');"/><path class="link" marker-end="url(#default)" d="M717.1739796366566,284.9248018005586L712.5893161545799,308.4842628661006" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 717.174 284.925 L 712.589 308.484');"/><path class="link" marker-end="url(#default)" d="M736.5615188036876,334.46892236840097L750.7929217644131,344.90199400104353" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 736.562 334.469 L 750.793 344.902');"/><path class="link" marker-end="url(#default)" d="M739.5527304075024,329.48041141040704L726.5587393668225,323.2407079949523" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 739.553 329.48 L 726.559 323.241');"/><path class="link" marker-end="url(#default)" d="M740.100507990375,303.41413684563884L747.3943203004213,300.28159654704393" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 740.101 303.414 L 747.394 300.282');"/><path class="link" marker-end="url(#default)" d="M740.8947567063863,305.4566456242425L716.1811023464045,314.0897310339846" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 740.895 305.457 L 716.181 314.09');"/><path class="link" marker-end="url(#default)" d="M728.6003049690564,342.0741547553286L720.3922734997985,329.7318268564507" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 728.6 342.074 L 720.392 329.732');"/><path class="link" marker-end="url(#default)" d="M737.3956538554294,298.41547330650246L765.1857215840928,279.9556437344731" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 737.396 298.415 L 765.186 279.956');"/><path class="link" marker-end="url(#default)" d="M679.839979638825,319.2354662633681L459.8492504096587,343.0537908210355" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 679.84 319.235 L 459.849 343.054');"/><path class="link" marker-end="url(#default)" d="M742.1922876331736,310.4541957712141L769.3151777438472,305.7431639945368" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 742.192 310.454 L 769.315 305.743');"/><path class="link" marker-end="url(#default)" d="M671.497021619572,318.1297821196919L706.4876979430677,276.90863508276976" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 671.497 318.13 L 706.488 276.909');"/><path class="link" marker-end="url(#default)" d="M679.0906922465281,328.6802268079596L681.912754743374,327.55061568152854" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 679.091 328.68 L 681.913 327.551');"/><path class="link" marker-end="url(#default)" d="M681.0242151705585,338.74220815132816L723.0110677030654,338.7863936708136" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 681.024 338.742 L 723.011 338.786');"/><path class="link" marker-end="url(#default)" d="M641.5586736203722,314.7636397843396L646.7631743396294,324.7630807535522" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 641.559 314.764 L 646.763 324.763');"/><path class="link" marker-end="url(#default)" d="M680.3481373345319,344.7181184905223L744.2227628267852,359.2875346555577" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 680.348 344.718 L 744.223 359.288');"/><path class="link" marker-end="url(#default)" d="M679.2420628363788,329.06698585140657L716.4528091889526,314.8324183455183" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 679.242 329.067 L 716.453 314.832');"/><path class="link" marker-end="url(#default)" d="M680.6596704486259,343.13570774768766L708.7082712409597,347.7922286697771" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 680.66 343.136 L 708.708 347.792');"/><path class="link" marker-end="url(#default)" d="M757.6236466405704,260.76268293350813L758.3713150902263,302.82996339793965" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 757.624 260.763 L 758.371 302.83');"/><path class="link" marker-end="url(#default)" d="M751.0036514966154,260.1434279204278L747.1488380247032,278.74720285271354" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 751.004 260.143 L 747.149 278.747');"/><path class="link" marker-end="url(#default)" d="M751.8027003437152,260.29772305497085L740.1027637265676,325.6368694521647" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 751.803 260.298 L 740.103 325.637');"/><path class="link" marker-end="url(#default)" d="M742.8380392042048,257.1656460318034L726.1220822706216,288.12664970562383" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 742.838 257.166 L 726.122 288.127');"/><path class="link" marker-end="url(#default)" d="M771.9229174729742,256.844238569433L801.2194731401688,308.3505303616298" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 771.923 256.844 L 801.219 308.351');"/><path class="link" marker-end="url(#default)" d="M762.501119864723,260.2754797175779L775.2124254305506,329.599969863934" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 762.501 260.275 L 775.212 329.6');"/><path class="link" marker-end="url(#default)" d="M733.7133164559518,249.56916476496986L738.581272239352,245.65398309559708" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 733.713 249.569 L 738.581 245.654');"/><path class="link" marker-end="url(#default)" d="M763.8432071031913,259.9975660683697L765.0850407069303,265.37306524042964" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 763.843 259.998 L 765.085 265.373');"/><path class="link" marker-end="url(#default)" d="M773.3568591129814,255.97469552332052L783.9354221975424,272.3678750240891" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 773.357 255.975 L 783.935 272.368');"/><path class="link" marker-end="url(#default)" d="M800.0000672940712,398.7206017230962L779.3421433812259,368.5336468828079" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 800 398.721 L 779.342 368.534');"/><path class="link" marker-end="url(#default)" d="M800.9532991108066,398.09904226571956L802.8136539821916,401.0962164717413" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 800.953 398.099 L 802.814 401.096');"/><path class="link" marker-end="url(#default)" d="M796.4289401972543,401.67480321698804L733.3580615131303,338.19117628034485" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 796.429 401.675 L 733.358 338.191');"/><path class="link" marker-end="url(#default)" d="M811.7367948191528,394.4043229089658L805.276508975015,332.91523798367086" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 811.737 394.404 L 805.276 332.915');"/><path class="link" marker-end="url(#default)" d="M795.0144288048675,403.1996906413552L755.8709446191573,369.75360343815225" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 795.014 403.2 L 755.871 369.754');"/><path class="link" marker-end="url(#default)" d="M815.1268838412623,394.27506364725775L815.897114769346,367.2184338634699" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 815.127 394.275 L 815.897 367.218');"/><path class="link" marker-end="url(#default)" d="M659.4430499973422,309.37575288014733L724.4893048386066,328.6140258726423" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 659.443 309.376 L 724.489 328.614');"/><path class="link" marker-end="url(#default)" d="M657.8076862994986,313.5281282950729L711.1839659331056,340.159819625234" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 657.808 313.528 L 711.184 340.16');"/><path class="link" marker-end="url(#default)" d="M660.0873248677487,306.6581056676626L680.1545665347093,310.267909239621" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 660.087 306.658 L 680.155 310.268');"/><path class="link" marker-end="url(#default)" d="M658.2705925254862,312.54882256585995L746.6407997671014,352.04640992325875" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 658.271 312.549 L 746.641 352.046');"/><path class="link" marker-end="url(#default)" d="M657.86578004942,290.876037568614L700.863976971204,269.6971617319414" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 657.866 290.876 L 700.864 269.697');"/><path class="link" marker-end="url(#default)" d="M660.4797871288141,302.8703573482137L714.6816130378115,304.41598605430977" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 660.48 302.87 L 714.682 304.416');"/><path class="link" marker-end="url(#default)" d="M869.901934614237,487.76074215164533L780.5102287411164,367.6996180738683" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 869.902 487.761 L 780.51 367.7');"/><path class="link" marker-end="url(#default)" d="M615.8702901448883,173.1814935634351L723.0435751565145,285.6399611683422" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 615.87 173.181 L 723.044 285.64');"/><path class="link" marker-end="url(#default)" d="M613.5308051881054,175.08837541657337L693.2045506911479,289.961182481886" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 613.531 175.088 L 693.205 289.961');"/><path class="link" marker-end="url(#default)" d="M817.6517388578087,288.44953285605413L796.3066313804397,289.2559670324095" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 817.652 288.45 L 796.307 289.256');"/><path class="link" marker-end="url(#default)" d="M818.8346967367398,278.9020329558369L802.8351417506572,274.22652111667844" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 818.835 278.902 L 802.835 274.227');"/><path class="link" marker-end="url(#default)" d="M821.6564530066487,302.3288011670371L758.7202197398578,338.70344762819974" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 821.656 302.329 L 758.72 338.703');"/><path class="link" marker-end="url(#default)" d="M831.5137476754451,312.62018099392316L833.7159070724932,309.1627640389589" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 831.514 312.62 L 833.716 309.163');"/><path class="link" marker-end="url(#default)" d="M828.7367243428807,310.61994121918457L806.8078989788452,337.6665177118043" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 828.737 310.62 L 806.808 337.667');"/><path class="link" marker-end="url(#default)" d="M818.0480379056213,292.3055808877766L768.2947236665283,300.6958136589944" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 818.048 292.306 L 768.295 300.696');"/><path class="link" marker-end="url(#default)" d="M821.6931656118904,302.3921436162562L790.1356702045497,320.73400854783495" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 821.693 302.392 L 790.136 320.734');"/><path class="link" marker-end="url(#default)" d="M818.7339741679823,295.37913939404757L833.6143920269564,291.2274349047161" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 818.734 295.379 L 833.614 291.227');"/><path class="link" marker-end="url(#default)" d="M818.2650657046994,293.4553238067344L741.9905100900212,309.3994612649901" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 818.265 293.455 L 741.991 309.399');"/><path class="link" marker-end="url(#default)" d="M698.7427920668249,191.59966792117123L729.3447269203144,325.889017559935" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 698.743 191.6 L 729.345 325.889');"/><path class="link" marker-end="url(#default)" d="M702.0230905836213,190.6009163937848L746.0919537962537,305.2222400202911" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 702.023 190.601 L 746.092 305.222');"/><path class="link" marker-end="url(#default)" d="M696.2744877042281,192.0280439278757L707.3977946094152,284.56989811489706" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 696.274 192.028 L 707.398 284.57');"/><path class="link" marker-end="url(#default)" d="M700.3461332200096,191.1755243704985L714.5460713205412,238.21532237999392" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 700.346 191.176 L 714.546 238.215');"/><path class="link" marker-end="url(#default)" d="M692.4955152675462,144.21699985481135L686.4562172588081,-14.102335449773054" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 692.496 144.217 L 686.456 -14.1023');"/><path class="link" marker-end="url(#default)" d="M876.2624926375127,251.04205871170103L834.8956444002514,309.9521010974385" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 876.263 251.042 L 834.896 309.952');"/><path class="link" marker-end="url(#default)" d="M869.4457336051972,243.04085538337162L765.9511927675994,293.37650960715416" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 869.446 243.041 L 765.951 293.376');"/><path class="link" marker-end="url(#default)" d="M869.2723233491889,242.67540113063893L739.744385280982,302.6156846485147" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 869.272 242.675 L 739.744 302.616');"/><path class="link" marker-end="url(#default)" d="M641.0533329160202,388.0346320972036L710.1036791329132,361.80271671176234" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 641.053 388.035 L 710.104 361.803');"/><path class="link" marker-end="url(#default)" d="M640.8268520240093,387.46218112614815L725.7200406154642,352.5249664853366" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 640.827 387.462 L 725.72 352.525');"/><path class="link" marker-end="url(#default)" d="M638.0482801318045,382.56293703180245L720.0366728097179,321.3402185697039" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 638.048 382.563 L 720.037 321.34');"/><path class="link" marker-end="url(#default)" d="M636.9128858095214,381.1630961961223L687.506881997304,336.65160756234246" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 636.913 381.163 L 687.507 336.652');"/><path class="link" marker-end="url(#default)" d="M847.0866420196791,356.6454514440027L820.6655961406401,361.256060893079" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 847.087 356.645 L 820.666 361.256');"/><path class="link" marker-end="url(#default)" d="M846.7070281944689,352.2529320075433L762.3437099302527,352.2235467164097" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 846.707 352.253 L 762.344 352.224');"/><path class="link" marker-end="url(#default)" d="M846.8848245773272,349.2558064211467L794.7600389265465,343.0680543931494" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 846.885 349.256 L 794.76 343.068');"/><path class="link" marker-end="url(#default)" d="M847.7711447471643,344.9722547587812L846.9789747788212,344.73593957131675" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 847.771 344.972 L 846.979 344.736');"/><path class="link" marker-end="url(#default)" d="M851.7209976249854,337.0771964184397L828.3397092152832,319.7465597396417" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 851.721 337.077 L 828.34 319.747');"/><path class="link" marker-end="url(#default)" d="M847.3349705735584,346.63768515648337L741.8812651179911,322.7922403771677" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 847.335 346.638 L 741.881 322.792');"/><path class="link" marker-end="url(#default)" d="M824.3192509304002,397.555177442821L759.67436368598,325.306892216044" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 824.319 397.555 L 759.674 325.307');"/><path class="link" marker-end="url(#default)" d="M821.741827684816,400.2500929730297L812.4398730383426,392.6452840995617" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 821.742 400.25 L 812.44 392.645');"/><path class="link" marker-end="url(#default)" d="M822.855197150346,398.98198705123843L785.2120908147562,363.51244081878383" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 822.855 398.982 L 785.212 363.512');"/><path class="link" marker-end="url(#default)" d="M821.3165078800706,400.78572798197524L736.1024028886379,335.0795187304805" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 821.317 400.786 L 736.102 335.08');"/><path class="link" marker-end="url(#default)" d="M833.5279541727616,392.42265270433614L825.7113926812359,365.9424578528988" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 833.528 392.423 L 825.711 365.942');"/><path class="link" marker-end="url(#default)" d="M788.2436806318437,400.72124103732324L789.269172229713,406.32289831113474" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 788.244 400.721 L 789.269 406.323');"/><path class="link" marker-end="url(#default)" d="M783.7981544932702,401.9876114676213L772.1620950129457,372.3362163321019" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 783.798 401.988 L 772.162 372.336');"/><path class="link" marker-end="url(#default)" d="M798.8961296412367,401.17888429271943L808.484547564866,366.1155895138016" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 798.896 401.179 L 808.485 366.116');"/><path class="link" marker-end="url(#default)" d="M777.6476709164223,405.5284297782953L752.1262910253912,373.3646746625946" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 777.648 405.528 L 752.126 373.365');"/><path class="link" marker-end="url(#default)" d="M778.1603703054195,405.1327659900243L730.0637186413712,341.0397169655719" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 778.16 405.133 L 730.064 341.04');"/><path class="link" marker-end="url(#default)" d="M838.5703953612501,214.85374027810371L751.5644595105534,330.62971865970195" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 838.57 214.854 L 751.564 330.63');"/><path class="link" marker-end="url(#default)" d="M843.2904142388003,217.52482023903087L796.91040426293,331.8223697548059" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 843.29 217.525 L 796.91 331.822');"/><path class="link" marker-end="url(#default)" d="M832.2105794533851,207.0610318643905L741.3797359495636,250.11760249430822" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 832.211 207.061 L 741.38 250.118');"/><path class="link" marker-end="url(#default)" d="M732.2584454544132,369.289280671417L730.5428851927223,378.78390060979376" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 732.258 369.289 L 730.543 378.784');"/><path class="link" marker-end="url(#default)" d="M741.0740384020359,372.35784343532197L742.0312343975118,370.5683481456705" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 741.074 372.358 L 742.031 370.568');"/><path class="link" marker-end="url(#default)" d="M724.5748156866459,368.90336899483486L719.8612014964372,308.8984974528504" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 724.575 368.903 L 719.861 308.898');"/><path class="link" marker-end="url(#default)" d="M738.1682000995679,370.9980663497022L761.2674058332495,313.8598822908147" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 738.168 370.998 L 761.267 313.86');"/><path class="link" marker-end="url(#default)" d="M725.6576681740647,368.8379812614795L721.9982518389198,282.235231566907" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 725.658 368.838 L 721.998 282.235');"/><path class="link" marker-end="url(#default)" d="M721.3231374172577,369.33873607838046L717.0380698903296,346.79091033788694" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 721.323 369.339 L 717.038 346.791');"/><path class="link" marker-end="url(#default)" d="M731.5917847038946,369.17656572262604L737.4698102039349,331.85681184316576" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 731.592 369.177 L 737.47 331.857');"/><path class="link" marker-end="url(#default)" d="M753.1254851519752,384.1998575379893L748.1845057632538,386.9552374931322" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 753.125 384.2 L 748.185 386.955');"/><path class="link" marker-end="url(#default)" d="M745.0583501068403,374.9124400248134L781.8808057402546,326.38455197652866" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 745.058 374.912 L 781.881 326.385');"/><path class="link" marker-end="url(#default)" d="M623.2991058171475,424.34117433090415L712.6409624470064,366.82869590701614" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 623.299 424.341 L 712.641 366.829');"/><path class="link" marker-end="url(#default)" d="M623.395699639489,424.49264614237376L728.5751261973096,358.05068456280037" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 623.396 424.493 L 728.575 358.051');"/><path class="link" marker-end="url(#default)" d="M619.5172566193462,419.94540575763904L690.3431937113497,339.4887525551891" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 619.517 419.945 L 690.343 339.489');"/><path class="link" marker-end="url(#default)" d="M668.6666101095908,286.95747239793343L727.7902954427981,320.9004225241754" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 668.667 286.957 L 727.79 320.9');"/><path class="link" marker-end="url(#default)" d="M671.3480576426733,270.1121441723173L699.0215302589805,264.3453766346058" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 671.348 270.112 L 699.022 264.345');"/><path class="link" marker-end="url(#default)" d="M670.6999254713468,282.3572297467585L715.9675978775971,296.9179906681899" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 670.7 282.357 L 715.968 296.918');"/><path class="link" marker-end="url(#default)" d="M668.0205997734643,288.01818694868444L684.6866908371042,298.76922484642944" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 668.021 288.018 L 684.687 298.769');"/><path class="link" marker-end="url(#default)" d="M667.5915293930727,288.66039894764197L750.1707088349103,345.775680760037" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 667.592 288.66 L 750.171 345.776');"/><path class="link" marker-end="url(#default)" d="M669.6365789056225,368.07832774237744L709.0978421262867,358.55088712535434" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 669.637 368.078 L 709.098 358.551');"/><path class="link" marker-end="url(#default)" d="M669.2336579272634,366.61419078184156L724.62093664695,349.46947759057446" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 669.234 366.614 L 724.621 349.469');"/><path class="link" marker-end="url(#default)" d="M669.7326711697976,368.4923646711277L786.0471714954997,342.58063546821825" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 669.733 368.492 L 786.047 342.581');"/><path class="link" marker-end="url(#default)" d="M664.2143069739979,357.732085413714L687.653511450732,336.81709917305676" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 664.214 357.732 L 687.654 336.817');"/><path class="link" marker-end="url(#default)" d="M659.4695029648313,353.64244902820445L708.7084333511203,278.56954873362486" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 659.469 353.642 L 708.708 278.57');"/><path class="link" marker-end="url(#default)" d="M816.350441721384,221.3971610903318L816.6714154609753,304.2314262464434" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 816.35 221.397 L 816.671 304.231');"/><path class="link" marker-end="url(#default)" d="M807.7428241609724,219.7216479670663L772.6437408403505,305.5053700718416" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 807.743 219.722 L 772.644 305.505');"/><path class="link" marker-end="url(#default)" d="M813.0860344032872,221.17187274902014L806.4883044994134,267.42654864376044" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 813.086 221.172 L 806.488 267.427');"/><path class="link" marker-end="url(#default)" d="M801.2231296669221,215.63186196268936L732.2131392854669,292.4164422046258" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 801.223 215.632 L 732.213 292.416');"/><path class="link" marker-end="url(#default)" d="M805.382462691869,368.71274009549956L821.225583887546,369.2278905648906" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 805.382 368.713 L 821.226 369.228');"/><path class="link" marker-end="url(#default)" d="M805.814175618115,364.5250171431848L761.9409080711898,356.86055344433316" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 805.814 364.525 L 761.941 356.861');"/><path class="link" marker-end="url(#default)" d="M807.5528424844099,358.44518808609365L792.3875761997284,352.31528877691835" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 807.553 358.445 L 792.388 352.315');"/><path class="link" marker-end="url(#default)" d="M807.8414615181352,357.7559797913317L740.0583729478404,328.3730893749403" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 807.841 357.756 L 740.058 328.373');"/><path class="link" marker-end="url(#default)" d="M820.9703497465904,343.36759926181827L831.9095533597175,363.36729175144643" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 820.97 343.368 L 831.91 363.367');"/><path class="link" marker-end="url(#default)" d="M816.4535618013066,346.4004386262161L786.9009073000263,310.01285842273444" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 816.454 346.4 L 786.901 310.013');"/><path class="link" marker-end="url(#default)" d="M822.342354450664,342.66236371016817L816.1550654380253,329.82374395046446" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 822.342 342.662 L 816.155 329.824');"/><path class="link" marker-end="url(#default)" d="M816.8670734698824,393.30478595771206L807.3651534885933,405.4352314941659" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 816.867 393.305 L 807.365 405.435');"/><path class="link" marker-end="url(#default)" d="M813.7426640252738,348.8933535699701L737.2663216386788,275.35104871814775" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 813.743 348.893 L 737.266 275.351');"/><path class="link" marker-end="url(#default)" d="M740.4674811616946,415.1092910524876L737.5360108952027,379.12499167468246" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 740.467 415.109 L 737.536 379.125');"/><path class="link" marker-end="url(#default)" d="M742.3745687123694,415.0256170455021L741.8436720596459,332.1850554615391" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 742.375 415.026 L 741.844 332.185');"/><path class="link" marker-end="url(#default)" d="M746.6152274618955,415.3531625578299L753.2549422906236,374.3611223648622" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 746.615 415.353 L 753.255 374.361');"/><path class="link" marker-end="url(#default)" d="M754.7789923646133,418.1552975846172L763.52464533587,402.1730762877944" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 754.779 418.155 L 763.525 402.173');"/><path class="link" marker-end="url(#default)" d="M757.2809279664821,419.71894853250336L798.5816042206393,361.4328981419879" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 757.281 419.719 L 798.582 361.433');"/><path class="link" marker-end="url(#default)" d="M736.3139575567277,415.79633547480205L718.8454663809339,346.3920761574549" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 736.314 415.796 L 718.845 346.392');"/><path class="link" marker-end="url(#default)" d="M782.9377793108774,268.2893285135745L803.3454003338579,264.6123719854069" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 782.938 268.289 L 803.345 264.612');"/><path class="link" marker-end="url(#default)" d="M782.4809041245607,261.9154660915508L743.5344602182986,260.54597843049066" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 782.481 261.915 L 743.534 260.546');"/><path class="link" marker-end="url(#default)" d="M795.1819669070901,287.49291884978345L779.7475367390481,309.3964344261361" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 795.182 287.493 L 779.748 309.396');"/><path class="link" marker-end="url(#default)" d="M785.8669904702215,276.85083743221224L739.0821136638688,301.26960859695555" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 785.867 276.851 L 739.082 301.27');"/><path class="link" marker-end="url(#default)" d="M804.1651995162019,291.79950689126355L793.0325116829938,330.48171817651337" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 804.165 291.799 L 793.033 330.482');"/><path class="link" marker-end="url(#default)" d="M783.0490568661991,268.87367595773657L744.2187468455404,276.6678537696035" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 783.049 268.874 L 744.219 276.668');"/><path class="link" marker-end="url(#default)" d="M792.8473790034649,285.6688772123497L752.9972074092768,331.78489630631884" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 792.847 285.669 L 752.997 331.785');"/><path class="link" marker-end="url(#default)" d="M814.2449578089764,292.91670830515875L814.921761009931,304.2868470008787" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 814.245 292.917 L 814.922 304.287');"/><path class="link" marker-end="url(#default)" d="M808.7909452095425,292.74421112423744L795.5026626612223,400.50930640470926" style="overflow-x:visible;overflow-y:visible;pointer-events:none;perspective-origin:0px 0px;transform-origin:0px 0px;fill:none;marker-end:url(&quot;#default&quot;);stroke:rgb(153, 153, 153);stroke-opacity:0.6;stroke-width:1.5px;d:path('M 808.791 292.744 L 795.503 400.509');"/></g><g style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;transform-origin:0px 0px;"><circle class="node" r="22.5" source="5" dest="3" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 686.547, 255.775);transform-origin:0px 0px;fill:rgb(31, 119, 180);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:22.5px;" transform="translate(686.5472427367222,255.77519513642346)"/><circle class="node" r="27" source="8" dest="33" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 735.344, 352.214);transform-origin:0px 0px;fill:rgb(255, 127, 14);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:27px;" transform="translate(735.343711568149,352.2141421217494)"/><circle class="node" r="22.5" source="5" dest="23" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 721.048, 259.755);transform-origin:0px 0px;fill:rgb(44, 160, 44);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:22.5px;" transform="translate(721.0483575248473,259.7552916027502)"/><circle class="node" r="31.5" source="11" dest="36" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 711.157, 315.845);transform-origin:0px 0px;fill:rgb(214, 39, 40);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:31.5px;" transform="translate(711.1569605559808,315.8447869458135)"/><circle class="node" r="27" source="8" dest="26" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 741.671, 305.186);transform-origin:0px 0px;fill:rgb(148, 103, 189);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:27px;" transform="translate(741.6706419038949,305.1856099012095)"/><circle class="node" r="39" source="16" dest="25" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 782.246, 367.96);transform-origin:0px 0px;fill:rgb(140, 86, 75);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:39px;" transform="translate(782.2461843568119,367.9604473813899)"/><circle class="node" r="21" source="4" dest="9" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 782.678, 268.336);transform-origin:0px 0px;fill:rgb(227, 119, 194);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:21px;" transform="translate(782.6781837837252,268.33610130826577)"/><circle class="node" r="36" source="14" dest="33" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 759.011, 338.824);transform-origin:0px 0px;fill:rgb(255, 127, 14);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:36px;" transform="translate(759.0110477685613,338.8242788116306)"/><circle class="node" r="33" source="12" dest="13" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 801.828, 300.096);transform-origin:0px 0px;fill:rgb(127, 127, 127);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:33px;" transform="translate(801.8283775390015,300.09587800209937)"/><circle class="node" r="30" source="10" dest="1" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 835.367, 369.688);transform-origin:0px 0px;fill:rgb(188, 189, 34);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:30px;" transform="translate(835.3666161770492,369.6876963905001)"/><circle class="node" r="25.5" source="7" dest="13" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 770.825, 290.219);transform-origin:0px 0px;fill:rgb(23, 190, 207);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:25.5px;" transform="translate(770.8248110806452,290.21868932309303)"/><circle class="node" r="27" source="8" dest="8" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 717.747, 281.981);transform-origin:0px 0px;fill:rgb(31, 119, 180);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:27px;" transform="translate(717.7467610808734,281.98141845588214)"/><circle class="node" r="31.5" source="11" dest="17" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 816.793, 335.731);transform-origin:0px 0px;fill:rgb(214, 39, 40);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:31.5px;" transform="translate(816.7934736077358,335.7311897663305)"/><circle class="node" r="27" source="8" dest="3" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 654.024, 338.714);transform-origin:0px 0px;fill:rgb(255, 127, 14);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:27px;" transform="translate(654.0242301214365,338.7137942957154)"/><circle class="node" r="42" source="18" dest="2" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 706.439, 376.428);transform-origin:0px 0px;fill:rgb(44, 160, 44);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:42px;" transform="translate(706.4392556938385,376.42767512530605)"/><circle class="node" r="24" source="6" dest="3" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 792.565, 424.329);transform-origin:0px 0px;fill:rgb(214, 39, 40);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:24px;" transform="translate(792.5655193228598,424.3289031479355)"/><circle class="node" r="22.5" source="5" dest="0" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 769.373, 481.418);transform-origin:0px 0px;fill:rgb(148, 103, 189);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:22.5px;" transform="translate(769.3726599422307,481.418239992782)"/><circle class="node" r="21" source="4" dest="0" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 593.694, 194.264);transform-origin:0px 0px;fill:rgb(140, 86, 75);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:21px;" transform="translate(593.6938358779876,194.26385560896927)"/><circle class="node" r="24" source="6" dest="0" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 607.937, 336.466);transform-origin:0px 0px;fill:rgb(227, 119, 194);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:24px;" transform="translate(607.9365838226931,336.46588651055083)"/><circle class="node" r="25.5" source="7" dest="1" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 814.401, 419.765);transform-origin:0px 0px;fill:rgb(31, 119, 180);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:25.5px;" transform="translate(814.4012600197086,419.7647374401801)"/><circle class="node" r="18" source="2" dest="1" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 880.652, 502.198);transform-origin:0px 0px;fill:rgb(127, 127, 127);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:18px;" transform="translate(880.6515251005146,502.19841178276414)"/><circle class="node" r="25.5" source="7" dest="1" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 675.445, 220.671);transform-origin:0px 0px;fill:rgb(188, 189, 34);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:25.5px;" transform="translate(675.4453163489308,220.6710703226408)"/><circle class="node" r="30" source="10" dest="1" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 757.091, 230.767);transform-origin:0px 0px;fill:rgb(23, 190, 207);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:30px;" transform="translate(757.0905360752913,230.76742008876568)"/><circle class="node" r="24" source="6" dest="1" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 647.853, 275.008);transform-origin:0px 0px;fill:rgb(31, 119, 180);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:24px;" transform="translate(647.8527752257487,275.00823487296327)"/><circle class="node" r="24" source="6" dest="1" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 840.323, 415.441);transform-origin:0px 0px;fill:rgb(31, 119, 180);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:24px;" transform="translate(840.3225591811427,415.4407617226739)"/><circle class="node" r="30" source="10" dest="1" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 726.924, 398.811);transform-origin:0px 0px;fill:rgb(255, 127, 14);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:30px;" transform="translate(726.9241939261613,398.81123454702185)"/><circle class="node" r="25.5" source="7" dest="1" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 742.538, 440.525);transform-origin:0px 0px;fill:rgb(44, 160, 44);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:25.5px;" transform="translate(742.5379860816897,440.52509340803556)"/><circle class="node" r="22.5" source="5" dest="0" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 665.003, 449.057);transform-origin:0px 0px;fill:rgb(214, 39, 40);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:22.5px;" transform="translate(665.0026457353579,449.0565135230622)"/><circle class="node" r="19.5" source="3" dest="0" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 723.063, 542.946);transform-origin:0px 0px;fill:rgb(148, 103, 189);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:19.5px;" transform="translate(723.06349519565,542.9463309757043)"/><circle class="node" r="16.5" source="1" dest="1" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 443.445, 344.83);transform-origin:0px 0px;fill:rgb(140, 86, 75);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:16.5px;" transform="translate(443.4451175482913,344.82986093975455)"/><circle class="node" r="25.5" source="7" dest="1" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 634.99, 302.144);transform-origin:0px 0px;fill:rgb(227, 119, 194);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:25.5px;" transform="translate(634.9901487552909,302.1434903816973)"/><circle class="node" r="19.5" source="3" dest="0" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 602.417, 159.065);transform-origin:0px 0px;fill:rgb(127, 127, 127);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:19.5px;" transform="translate(602.4174086051136,159.06519170080873)"/><circle class="node" r="30" source="10" dest="0" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 847.63, 287.317);transform-origin:0px 0px;fill:rgb(127, 127, 127);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:30px;" transform="translate(847.630350975214,287.31691839642644)"/><circle class="node" r="24" source="6" dest="0" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 693.41, 168.2);transform-origin:0px 0px;fill:rgb(188, 189, 34);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:24px;" transform="translate(693.4103612687496,168.19955719955843)"/><circle class="node" r="16.5" source="1" dest="1" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 685.827, -30.5903);transform-origin:0px 0px;fill:rgb(23, 190, 207);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:16.5px;" transform="translate(685.8272606329808,-30.59034362428667)"/><circle class="node" r="21" source="4" dest="0" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 888.331, 233.856);transform-origin:0px 0px;fill:rgb(31, 119, 180);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:21px;" transform="translate(888.3306064991897,233.85599959910638)"/><circle class="node" r="22.5" source="5" dest="0" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 620.02, 396.025);transform-origin:0px 0px;fill:rgb(255, 127, 14);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:22.5px;" transform="translate(620.0199725533237,396.0251109222144)"/><circle class="node" r="25.5" source="7" dest="0" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 872.207, 352.262);transform-origin:0px 0px;fill:rgb(31, 119, 180);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:25.5px;" transform="translate(872.2070266475667,352.2618141247225)"/><circle class="node" r="21" source="4" dest="0" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 851.187, 198.066);transform-origin:0px 0px;fill:rgb(227, 119, 194);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:21px;" transform="translate(851.186532649787,198.06585536317795)"/><circle class="node" r="21" source="4" dest="0" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 605.641, 435.708);transform-origin:0px 0px;fill:rgb(44, 160, 44);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:21px;" transform="translate(605.6414120562588,435.70804949722276)"/><circle class="node" r="24" source="6" dest="0" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 646.307, 373.711);transform-origin:0px 0px;fill:rgb(214, 39, 40);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:24px;" transform="translate(646.3069171795225,373.7109899678041)"/><circle class="node" r="22.5" source="5" dest="0" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 816.263, 198.897);transform-origin:0px 0px;fill:rgb(127, 127, 127);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:22.5px;" transform="translate(816.2632573308407,198.89733000469815)"/><circle class="node" r="30" source="10" dest="0" style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);transform:matrix(1, 0, 0, 1, 812.462, 262.97);transform-origin:0px 0px;fill:rgb(148, 103, 189);stroke:rgb(0, 0, 0);stroke-width:0.5px;r:30px;" transform="translate(812.4623743824957,262.9697151952047)"/></g><g style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;transform-origin:0px 0px;"/><g style="overflow-x:visible;overflow-y:visible;perspective-origin:0px 0px;transform-origin:0px 0px;"><text visibility="visible" transform="translate(686.5472427367222,255.77519513642346)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.025px 0px;transform:matrix(1, 0, 0, 1, 686.547, 255.775);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">cache</text><text visibility="visible" transform="translate(735.343711568149,352.2141421217494)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.3375px 0px;transform:matrix(1, 0, 0, 1, 735.344, 352.214);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">rocksdb</text><text visibility="visible" transform="translate(721.0483575248473,259.7552916027502)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.1625px 0px;transform:matrix(1, 0, 0, 1, 721.048, 259.755);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">port</text><text visibility="visible" transform="translate(711.1569605559808,315.8447869458135)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.0625px 0px;transform:matrix(1, 0, 0, 1, 711.157, 315.845);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">util</text><text visibility="visible" transform="translate(741.6706419038949,305.1856099012095)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.25px 0px;transform:matrix(1, 0, 0, 1, 741.671, 305.186);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">env</text><text visibility="visible" transform="translate(782.2461843568119,367.9604473813899)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.3375px 0px;transform:matrix(1, 0, 0, 1, 782.246, 367.96);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">db</text><text visibility="visible" transform="translate(782.6781837837252,268.33610130826577)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.25px 0px;transform:matrix(1, 0, 0, 1, 782.678, 268.336);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">options</text><text visibility="visible" transform="translate(759.0110477685613,338.8242788116306)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.075px 0px;transform:matrix(1, 0, 0, 1, 759.011, 338.824);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">rocksjni</text><text visibility="visible" transform="translate(801.8283775390015,300.09587800209937)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:-0.3px 0px;transform:matrix(1, 0, 0, 1, 801.828, 300.096);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">table</text><text visibility="visible" transform="translate(835.3666161770492,369.6876963905001)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:-0.075px 0px;transform:matrix(1, 0, 0, 1, 835.367, 369.688);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">transactions</text><text visibility="visible" transform="translate(770.8248110806452,290.21868932309303)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.0125px 0px;transform:matrix(1, 0, 0, 1, 770.825, 290.219);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">monitoring</text><text visibility="visible" transform="translate(717.7467610808734,281.98141845588214)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.0125px 0px;transform:matrix(1, 0, 0, 1, 717.747, 281.981);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">memtable</text><text visibility="visible" transform="translate(816.7934736077358,335.7311897663305)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.2375px 0px;transform:matrix(1, 0, 0, 1, 816.793, 335.731);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">utilities</text><text visibility="visible" transform="translate(654.0242301214365,338.7137942957154)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.025px 0px;transform:matrix(1, 0, 0, 1, 654.024, 338.714);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">backupable</text><text visibility="visible" transform="translate(706.4392556938385,376.42767512530605)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:-0.075px 0px;transform:matrix(1, 0, 0, 1, 706.439, 376.428);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">tools</text><text visibility="visible" transform="translate(792.5655193228598,424.3289031479355)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.0125px 0px;transform:matrix(1, 0, 0, 1, 792.565, 424.329);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">string_append</text><text visibility="visible" transform="translate(769.3726599422307,481.418239992782)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.2375px 0px;transform:matrix(1, 0, 0, 1, 769.373, 481.418);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">examples</text><text visibility="visible" transform="translate(593.6938358779876,194.26385560896927)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.25px 0px;transform:matrix(1, 0, 0, 1, 593.694, 194.264);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">hdfs</text><text visibility="visible" transform="translate(607.9365838226931,336.46588651055083)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.0125px 0px;transform:matrix(1, 0, 0, 1, 607.937, 336.466);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">lua</text><text visibility="visible" transform="translate(814.4012600197086,419.7647374401801)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.0125px 0px;transform:matrix(1, 0, 0, 1, 814.401, 419.765);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">cassandra</text><text visibility="visible" transform="translate(880.6515251005146,502.19841178276414)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.25px 0px;transform:matrix(1, 0, 0, 1, 880.652, 502.198);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">compaction_filters</text><text visibility="visible" transform="translate(675.4453163489308,220.6710703226408)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:-0.3px 0px;transform:matrix(1, 0, 0, 1, 675.445, 220.671);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">win</text><text visibility="visible" transform="translate(757.0905360752913,230.76742008876568)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.3375px 0px;transform:matrix(1, 0, 0, 1, 757.091, 230.767);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">blob_db</text><text visibility="visible" transform="translate(647.8527752257487,275.00823487296327)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.0125px 0px;transform:matrix(1, 0, 0, 1, 647.853, 275.008);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">simulator_cache</text><text visibility="visible" transform="translate(840.3225591811427,415.4407617226739)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.25px 0px;transform:matrix(1, 0, 0, 1, 840.323, 415.441);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">merge_operators</text><text visibility="visible" transform="translate(726.9241939261613,398.81123454702185)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.0125px 0px;transform:matrix(1, 0, 0, 1, 726.924, 398.811);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">persistent_cache</text><text visibility="visible" transform="translate(742.5379860816897,440.52509340803556)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:-0.25px 0px;transform:matrix(1, 0, 0, 1, 742.538, 440.525);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">ttl</text><text visibility="visible" transform="translate(665.0026457353579,449.0565135230622)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.3375px 0px;transform:matrix(1, 0, 0, 1, 665.003, 449.057);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">dump</text><text visibility="visible" transform="translate(723.06349519565,542.9463309757043)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.3375px 0px;transform:matrix(1, 0, 0, 1, 723.063, 542.946);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">rdb</text><text visibility="visible" transform="translate(443.4451175482913,344.82986093975455)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.175px 0px;transform:matrix(1, 0, 0, 1, 443.445, 344.83);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">gtest</text><text visibility="visible" transform="translate(634.9901487552909,302.1434903816973)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.175px 0px;transform:matrix(1, 0, 0, 1, 634.99, 302.144);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">checkpoint</text><text visibility="visible" transform="translate(602.4174086051136,159.06519170080873)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.025px 0px;transform:matrix(1, 0, 0, 1, 602.417, 159.065);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">convenience</text><text visibility="visible" transform="translate(847.630350975214,287.31691839642644)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.0125px 0px;transform:matrix(1, 0, 0, 1, 847.63, 287.317);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">date_tiered</text><text visibility="visible" transform="translate(693.4103612687496,168.19955719955843)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.1625px 0px;transform:matrix(1, 0, 0, 1, 693.41, 168.2);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">document</text><text visibility="visible" transform="translate(685.8272606329808,-30.59034362428667)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:-0.3px 0px;transform:matrix(1, 0, 0, 1, 685.827, -30.5903);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">fbson</text><text visibility="visible" transform="translate(888.3306064991897,233.85599959910638)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.3375px 0px;transform:matrix(1, 0, 0, 1, 888.331, 233.856);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">geodb</text><text visibility="visible" transform="translate(620.0199725533237,396.0251109222144)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.25px 0px;transform:matrix(1, 0, 0, 1, 620.02, 396.025);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">leveldb_options</text><text visibility="visible" transform="translate(872.2070266475667,352.2618141247225)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.2375px 0px;transform:matrix(1, 0, 0, 1, 872.207, 352.262);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">memory</text><text visibility="visible" transform="translate(851.186532649787,198.06585536317795)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.0125px 0px;transform:matrix(1, 0, 0, 1, 851.187, 198.066);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">option_change_migration</text><text visibility="visible" transform="translate(605.6414120562588,435.70804949722276)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.2375px 0px;transform:matrix(1, 0, 0, 1, 605.641, 435.708);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">redis</text><text visibility="visible" transform="translate(646.3069171795225,373.7109899678041)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:0.3375px 0px;transform:matrix(1, 0, 0, 1, 646.307, 373.711);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">spatialdb</text><text visibility="visible" transform="translate(816.2632573308407,198.89733000469815)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:-0.075px 0px;transform:matrix(1, 0, 0, 1, 816.263, 198.897);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">table_properties_collectors</text><text visibility="visible" transform="translate(812.4623743824957,262.9697151952047)" style="cursor:default;display:block;font-family:sans-serif;font-size:10px;overflow-x:visible;overflow-y:visible;pointer-events:none;white-space:nowrap;perspective-origin:-0.075px 0px;transform:matrix(1, 0, 0, 1, 812.462, 262.97);transform-origin:0px 0px;user-select:none;stroke:rgb(0, 0, 0);stroke-width:0.5px;text-anchor:middle;">write_batch_with_index</text></g></g></svg>
@@ -0,0 +1,87 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ #--
4
+ # Copyright (c) 2018 Shreyas Balakrishna
5
+
6
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ # of this software and associated documentation files (the "Software"), to deal
8
+ # in the Software without restriction, including without limitation the rights
9
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ # copies of the Software, and to permit persons to whom the Software is
11
+ # furnished to do so, subject to the following conditions:
12
+
13
+ # The above copyright notice and this permission notice shall be included in all
14
+ # copies or substantial portions of the Software.
15
+
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ # SOFTWARE.
23
+ #++
24
+
25
+ require 'docopt'
26
+ require 'cpp_dependency_graph'
27
+
28
+ # require 'ruby-prof'
29
+
30
+ include CppDependencyGraph
31
+
32
+ # RubyProf.start
33
+
34
+ doc = <<DOCOPT
35
+ Cpp Dependency Graph
36
+
37
+ Usage:
38
+ cpp_dependency_graph visualise --root_dir <argument> [--component <component>] [--output_file <file>] [--output_format <format>]
39
+ cpp_dependency_graph visualise_includes --root_dir <argument> --component <component> [--output_file <file>] [--output_format <format>]
40
+ cpp_dependency_graph visualise_components --root_dir <argument> [--output_file <file>] [--output_format <format>]
41
+ cpp_dependency_graph visualise_cyclic_deps --root_dir <argument> [--component <component>] [--output_file <file>] [--output_format <format>]
42
+ cpp_dependency_graph -h | --help | -v | --version
43
+
44
+ Options:
45
+ -h --help show this help message and exit
46
+ -v --version show version and exit
47
+ -r --root_dir dir top level root directory of C/C++ project
48
+ -c --component component component generate visualisation for (case sensitive!)
49
+ -o --output_file file name of output file to be generated [default: deps.html]
50
+ -f --output_format format format of output file (dot, html, graphml, json) [default: html]
51
+ DOCOPT
52
+
53
+ begin
54
+ args = Docopt.docopt(doc)
55
+
56
+ if (args['--version'])
57
+ puts VERSION
58
+ Kernel.exit(0)
59
+ end
60
+
61
+ unless File.directory?(args['--root_dir'])
62
+ puts('Not a valid project source directory')
63
+ Kernel.exit(1)
64
+ end
65
+
66
+ project_dir = args['--root_dir'].gsub(/\\/,'/')
67
+
68
+ if args['visualise']
69
+ if args['--component']
70
+ generate_component_graph(project_dir, args['--component'], args['--output_format'], args['--output_file'])
71
+ else
72
+ generate_project_graph(project_dir, args['--output_format'], args['--output_file'])
73
+ end
74
+ elsif args['visualise_includes']
75
+ generate_component_include_graph(project_dir, args['--component'], args['--output_format'], args['--output_file'])
76
+ elsif args['visualise_components']
77
+ # TODO: Output components
78
+ elsif args['visualise_cyclic_deps']
79
+ output_cyclic_dependencies(project_dir)
80
+ end
81
+ rescue Docopt::Exit => e
82
+ puts e.message
83
+ end
84
+
85
+ # result = RubyProf.stop
86
+ # printer = RubyProf::CallTreePrinter.new(result)
87
+ # printer.print(path: '.', profile: 'cpp_dependency_graph')
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ class BidirectionalHash
4
+ def initialize
5
+ @forward = Hash.new { |h, k| h[k] = [ ] }
6
+ @reverse = Hash.new { |h, k| h[k] = [ ] }
7
+ end
8
+
9
+ def insert(k, v)
10
+ @forward[k].push(v)
11
+ @reverse[v].push(k)
12
+ v
13
+ end
14
+
15
+ def fetch(k)
16
+ fetch_from(@forward, k)
17
+ end
18
+
19
+ def rfetch(v)
20
+ fetch_from(@reverse, v)
21
+ end
22
+
23
+ protected
24
+
25
+ def fetch_from(h, k)
26
+ return nil if(!h.has_key?(k))
27
+ v = h[k]
28
+ v.length == 1 ? v.first : v.dup
29
+ end
30
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+
5
+ class ComponentLink
6
+ def initialize(source, target, cyclic = false)
7
+ @source = source
8
+ @target = target
9
+ @cyclic = cyclic
10
+ end
11
+
12
+ def source
13
+ @source
14
+ end
15
+
16
+ def target
17
+ @target
18
+ end
19
+
20
+ def cyclic?
21
+ @cyclic
22
+ end
23
+
24
+ def to_s
25
+ if cyclic?
26
+ "#{source} <-> #{target}"
27
+ else
28
+ "#{source} -> #{target}"
29
+ end
30
+ end
31
+
32
+ def to_json(*a)
33
+ { json_class: self.class.name,
34
+ source: source, target: target, cyclic: cyclic?
35
+ }.to_json(*a)
36
+ end
37
+ end