move assets to same domain

This commit is contained in:
Hannes Mehnert 2021-09-08 19:37:23 +02:00
parent 847d8f36f2
commit 2d10e2cc8a
14 changed files with 2618 additions and 12 deletions

3
About
View file

@ -108,8 +108,7 @@ not invalidated :-)" [Xavier Leroy](https://lwn.net/Articles/19378/)), and the [
### Me on the intertubes ### Me on the intertubes
You can find me on [twitter](https://twitter.com/h4nnes) and on You can find me on [twitter](https://twitter.com/h4nnes) and on
[GitHub](https://github.com/hannesm). I also have an [academic web [GitHub](https://github.com/hannesm).
site](https://www.cl.cam.ac.uk/~hm519/).
No comments here, but you can open issues on the [data repository on No comments here, but you can open issues on the [data repository on
GitHub](https://github.com/hannesm/hannes.nqsb.io). GitHub](https://github.com/hannesm/hannes.nqsb.io).

View file

@ -11,15 +11,15 @@ Roughly 2 weeks ago, [Engil](https://github.com/Engil) informed me that a TLS al
I tried hard, but could not reproduce, but was very worried and was eager to find the root cause (some little fear remained that it was in our TLS stack). I setup this website with some TLS-level tracing (extending the code from our [TLS handshake server](https://tls.openmirage.org)). We tried to reproduce the issue with traces and packet captures (both on client and server side) in place from our computer labs office with no success. Later, Engil tried from his home and after 45MB of wire data, ran into this issue. Finally, evidence! Isolating the TCP flow with the alert resulted in just about 200KB of packet capture data (TLS ASCII trace around 650KB). I tried hard, but could not reproduce, but was very worried and was eager to find the root cause (some little fear remained that it was in our TLS stack). I setup this website with some TLS-level tracing (extending the code from our [TLS handshake server](https://tls.openmirage.org)). We tried to reproduce the issue with traces and packet captures (both on client and server side) in place from our computer labs office with no success. Later, Engil tried from his home and after 45MB of wire data, ran into this issue. Finally, evidence! Isolating the TCP flow with the alert resulted in just about 200KB of packet capture data (TLS ASCII trace around 650KB).
![encrypted alert](https://www.cl.cam.ac.uk/~hm519/encrypted-alert.png) ![encrypted alert](/static/img/encrypted-alert.png)
What is happening on the wire? After some data is successfully transferred, at some point the client sends an encrypted alert (see above). The TLS session used a RSA key exchange and I could decrypt the TLS stream with Wireshark, which revealed that the alert was indeed a bad record MAC. Wireshark's "follow SSL stream" showed all client requests, but not all server responses. The TLS level trace from the server showed properly encrypted data. I tried to spot the TCP payload which caused the bad record MAC, starting from the alert in the client capture (the offending TCP frame should be closely before the alert). What is happening on the wire? After some data is successfully transferred, at some point the client sends an encrypted alert (see above). The TLS session used a RSA key exchange and I could decrypt the TLS stream with Wireshark, which revealed that the alert was indeed a bad record MAC. Wireshark's "follow SSL stream" showed all client requests, but not all server responses. The TLS level trace from the server showed properly encrypted data. I tried to spot the TCP payload which caused the bad record MAC, starting from the alert in the client capture (the offending TCP frame should be closely before the alert).
![client TCP frame](https://www.cl.cam.ac.uk/~hm519/tcp-frame-client.png) ![client TCP frame](/static/img/tcp-frame-client.png)
There is plaintext data which looks like a HTTP request in the TCP frame sent by the server to the client? WTF? This should never happen! The same TCP frame on the server side looked even more strange: it had an invalid checksum. There is plaintext data which looks like a HTTP request in the TCP frame sent by the server to the client? WTF? This should never happen! The same TCP frame on the server side looked even more strange: it had an invalid checksum.
![server TCP frame](https://www.cl.cam.ac.uk/~hm519/tcp-frame-server.png) ![server TCP frame](/static/img/tcp-frame-server.png)
What do we have so far? We spotted some plaintext data in a TCP frame which is part of a TLS session. The TCP checksum is invalid. What do we have so far? We spotted some plaintext data in a TCP frame which is part of a TLS session. The TCP checksum is invalid.

View file

@ -68,11 +68,11 @@ This still does not sum up to 2.8MB since we're missing the transitive dependenc
Let's use a different approach: first recursively find all dependencies. We do this by using `ocamlfind` to read `META` files which contain a list of dependent libraries in their `requires` line. As input we use `LIBS` from the Makefile snippet above. The code (OCaml script) is [available here](https://gist.github.com/hannesm/bcbe54c5759ed5854f05c8f8eaee4c79). The colour scheme is red for pieces of the OCaml distribution, yellow for input packages, and orange for the dependencies. Let's use a different approach: first recursively find all dependencies. We do this by using `ocamlfind` to read `META` files which contain a list of dependent libraries in their `requires` line. As input we use `LIBS` from the Makefile snippet above. The code (OCaml script) is [available here](https://gist.github.com/hannesm/bcbe54c5759ed5854f05c8f8eaee4c79). The colour scheme is red for pieces of the OCaml distribution, yellow for input packages, and orange for the dependencies.
[<img src="https://www.cl.cam.ac.uk/~hm519/mirage-console.svg" title="UNIX dependencies of hello world" width="700" />](https://www.cl.cam.ac.uk/~hm519/mirage-console.svg) [<img src="/static/img/mirage-console.svg" title="UNIX dependencies of hello world" width="700" />](/static/img/mirage-console.svg)
This is the UNIX version only, the Xen version looks similar (but worth mentioning). This is the UNIX version only, the Xen version looks similar (but worth mentioning).
[<img src="https://www.cl.cam.ac.uk/~hm519/mirage-console-xen.svg" title="Xen dependencies of hello world" width="700" />](https://www.cl.cam.ac.uk/~hm519/mirage-console-xen.svg) [<img src="/static/img/mirage-console-xen.svg" title="Xen dependencies of hello world" width="700" />](/static/img/mirage-console-xen.svg)
You can spot at the right that `mirage-bootvar` uses `re`, which provoked me to [open a PR](https://github.com/mirage/mirage-bootvar-xen/pull/19), but Jon Ludlam [already had a nicer PR](https://github.com/mirage/mirage-bootvar-xen/pull/18) which is now merged (and a [new release is in preparation](https://github.com/mirage/mirage-bootvar-xen/pull/20)). You can spot at the right that `mirage-bootvar` uses `re`, which provoked me to [open a PR](https://github.com/mirage/mirage-bootvar-xen/pull/19), but Jon Ludlam [already had a nicer PR](https://github.com/mirage/mirage-bootvar-xen/pull/18) which is now merged (and a [new release is in preparation](https://github.com/mirage/mirage-bootvar-xen/pull/20)).
@ -84,9 +84,9 @@ We overapproximate the sizes here by assuming that a linker simply concatenates
I developed a pie chart visualisation, but a friend of mine reminded me that such a chart is pretty useless for comparing slices for the human brain. I spent some more time to develop a treemap visualisation to satisfy the brain. The implemented algorithm is based on [squarified treemaps](http://www.win.tue.nl/~vanwijk/stm.pdf), but does not use implicit mutable state. In addition, the [provided script](https://gist.github.com/hannesm/c8a9b2e75bb4f98b5100a838ea125f3b) parses common linker flags (`-o -L -l`) and collects arguments to be linked in. It can be passed to `ocamlopt` as the C linker, more instructions at the end of `treemap.ml` (which should be cleaned up and integrated into the mirage tool, as mentioned earlier). I developed a pie chart visualisation, but a friend of mine reminded me that such a chart is pretty useless for comparing slices for the human brain. I spent some more time to develop a treemap visualisation to satisfy the brain. The implemented algorithm is based on [squarified treemaps](http://www.win.tue.nl/~vanwijk/stm.pdf), but does not use implicit mutable state. In addition, the [provided script](https://gist.github.com/hannesm/c8a9b2e75bb4f98b5100a838ea125f3b) parses common linker flags (`-o -L -l`) and collects arguments to be linked in. It can be passed to `ocamlopt` as the C linker, more instructions at the end of `treemap.ml` (which should be cleaned up and integrated into the mirage tool, as mentioned earlier).
[<img src="https://www.cl.cam.ac.uk/~hm519/mirage-console-bytes.svg" title="byte sizes of hello-world (UNIX)" width="700" />](https://www.cl.cam.ac.uk/~hm519/mirage-console-bytes.svg) [<img src="/static/img/mirage-console-bytes.svg" title="byte sizes of hello-world (UNIX)" width="700" />](/static/img/mirage-console-bytes.svg)
[<img src="https://www.cl.cam.ac.uk/~hm519/mirage-console-xen-bytes-full.svg" title="byte sizes of hello-world (Xen)" width="700" />](https://www.cl.cam.ac.uk/~hm519/mirage-console-xen-bytes-full.svg) [<img src="/static/img/mirage-console-xen-bytes-full.svg" title="byte sizes of hello-world (Xen)" width="700" />](/static/img/mirage-console-xen-bytes-full.svg)
As mentioned above, this is an overapproximation. The `libgcc.a` is only needed on Xen (see [this comment](https://github.com/mirage/mirage/commit/c17f2f60a6309322ba45cecb00a808f62f05cf82#commitcomment-17573123)), I have not yet tracked down why there is a `libasmrun.a` and a `libxenasmrun.a`. As mentioned above, this is an overapproximation. The `libgcc.a` is only needed on Xen (see [this comment](https://github.com/mirage/mirage/commit/c17f2f60a6309322ba45cecb00a808f62f05cf82#commitcomment-17573123)), I have not yet tracked down why there is a `libasmrun.a` and a `libxenasmrun.a`.
@ -94,9 +94,9 @@ As mentioned above, this is an overapproximation. The `libgcc.a` is only needed
Besides the hello world, I used the same tools on our [BTC Piñata](http://ownme.ipredator.se). Besides the hello world, I used the same tools on our [BTC Piñata](http://ownme.ipredator.se).
[<img src="https://www.cl.cam.ac.uk/~hm519/pinata-deps.svg" title="Piñata dependencies" width="700" />](https://www.cl.cam.ac.uk/~hm519/pinata-deps.svg) [<img src="/static/img/pinata-deps.svg" title="Piñata dependencies" width="700" />](/static/img/pinata-deps.svg)
[<img src="https://www.cl.cam.ac.uk/~hm519/pinata-bytes.svg" title="Piñata byte sizes" width="700" />](https://www.cl.cam.ac.uk/~hm519/pinata-bytes.svg) [<img src="/static/img/pinata-bytes.svg" title="Piñata byte sizes" width="700" />](/static/img/pinata-bytes.svg)
### Conclusion ### Conclusion

View file

@ -250,7 +250,7 @@ That's it, the [nqsb.io](https://nqsb.io) contains slightly more code to log ont
A comparison using Firefox builtin network diagnostics shows that the waiting before receiving data is minimal (3ms, even spotted 0ms). A comparison using Firefox builtin network diagnostics shows that the waiting before receiving data is minimal (3ms, even spotted 0ms).
[<img src="https://www.cl.cam.ac.uk/~hm519/performance-nqsbio.png" title="latency of our website" width="50%" />](https://www.cl.cam.ac.uk/~hm519/performance-nqsbio.png) [<img src="/static/img/performance-nqsbio.png" title="latency of our website" width="50%" />](/static/img/performance-nqsbio.png)
We do not render HTML for each request, we do not splice data together, we *don't even read the client request*. And I'm sure we can improve the performance even more by profiling. We do not render HTML for each request, we do not splice data together, we *don't even read the client request*. And I'm sure we can improve the performance even more by profiling.

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

View file

@ -0,0 +1,40 @@
<svg width="1000" height="800" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g><rect x="0" y="0" height="561" width="373" style="stroke:#006000; fill: #D95B43"/> <text x="10" y="280">stdlib.a</text><title>/home/hannes/.opam/4.03.0/lib/ocaml/stdlib.a (1588982)</title></g>
<g><rect x="0" y="561" height="238" width="373" style="stroke:#006000; fill: #C02942"/> <text x="10" y="680">sexplib.a</text><title>/home/hannes/.opam/4.03.0/lib/sexplib/sexplib.a (673124)</title></g>
<g><rect x="373" y="0" height="247" width="350" style="stroke:#006000; fill: #542437"/> <text x="383" y="123">lwt-unix.a</text><title>/home/hannes/.opam/4.03.0/lib/lwt/lwt-unix.a (657552)</title></g>
<g><rect x="724" y="0" height="247" width="275" style="stroke:#006000; fill: #53777A"/> <text x="734" y="123">liblwt-unix_stubs.a</text><title>/home/hannes/.opam/4.03.0/lib/lwt/liblwt-unix_stubs.a (515632)</title></g>
<g><rect x="373" y="247" height="229" width="249" style="stroke:#006000; fill: #ECD078"/> <text x="383" y="362">libasmrun.a</text><title>/home/hannes/.opam/4.03.0/lib/ocaml/libasmrun.a (433626)</title></g>
<g><rect x="373" y="477" height="175" width="249" style="stroke:#006000; fill: #D95B43"/> <text x="383" y="565">lwt.a</text><title>/home/hannes/.opam/4.03.0/lib/lwt/lwt.a (331998)</title></g>
<g><rect x="373" y="653" height="146" width="249" style="stroke:#006000; fill: #C02942"/> <text x="383" y="726">cmdliner.a</text><title>/home/hannes/.opam/4.03.0/lib/cmdliner/cmdliner.a (276850)</title></g>
<g><rect x="623" y="247" height="159" width="204" style="stroke:#006000; fill: #542437"/> <text x="633" y="327">astring.a</text><title>/home/hannes/.opam/4.03.0/lib/astring/astring.a (246538)</title></g>
<g><rect x="828" y="247" height="159" width="171" style="stroke:#006000; fill: #53777A"/> <text x="838" y="327">libunix.a</text><title>/home/hannes/.opam/4.03.0/lib/ocaml/libunix.a (207120)</title></g>
<g><rect x="623" y="406" height="162" width="164" style="stroke:#006000; fill: #ECD078"/> <text x="633" y="488">ipaddr.a</text><title>/home/hannes/.opam/4.03.0/lib/ipaddr/ipaddr.a (202720)</title></g>
<g><rect x="788" y="406" height="162" width="116" style="stroke:#006000; fill: #D95B43"/> <text x="798" y="488">unix.a</text><title>/home/hannes/.opam/4.03.0/lib/ocaml/unix.a (143632)</title></g>
<g><rect x="904" y="406" height="162" width="95" style="stroke:#006000; fill: #C02942"/> <text x="914" y="488">camlstartup800193.o</text><title>/tmp/camlstartup800193.o (117440)</title></g>
<g><rect x="623" y="569" height="118" width="104" style="stroke:#006000; fill: #542437"/> <text x="633" y="629">ocplib_endian.a</text><title>/home/hannes/.opam/4.03.0/lib/ocplib-endian/ocplib_endian.a (93778)</title></g>
<g><rect x="623" y="688" height="111" width="104" style="stroke:#006000; fill: #53777A"/> <text x="633" y="744">fmt.a</text><title>/home/hannes/.opam/4.03.0/lib/fmt/fmt.a (88008)</title></g>
<g><rect x="727" y="569" height="115" width="80" style="stroke:#006000; fill: #ECD078"/> <text x="737" y="627">cstruct.a</text><title>/home/hannes/.opam/4.03.0/lib/cstruct/cstruct.a (70122)</title></g>
<g><rect x="727" y="685" height="114" width="80" style="stroke:#006000; fill: #D95B43"/> <text x="737" y="742">lwt-log.a</text><title>/home/hannes/.opam/4.03.0/lib/lwt/lwt-log.a (69738)</title></g>
<g><rect x="808" y="569" height="64" width="97" style="stroke:#006000; fill: #C02942"/> <text x="818" y="602">bigstring.a</text><title>/home/hannes/.opam/4.03.0/lib/ocplib-endian/bigstring.a (47622)</title></g>
<g><rect x="905" y="569" height="64" width="94" style="stroke:#006000; fill: #542437"/> <text x="915" y="602">logs.a</text><title>/home/hannes/.opam/4.03.0/lib/logs/logs.a (46250)</title></g>
<g><rect x="808" y="634" height="61" width="69" style="stroke:#006000; fill: #53777A"/> <text x="818" y="665">libbigarray.a</text><title>/home/hannes/.opam/4.03.0/lib/ocaml/libbigarray.a (32488)</title></g>
<g><rect x="808" y="696" height="57" width="69" style="stroke:#006000; fill: #ECD078"/> <text x="818" y="724">bigarray.a</text><title>/home/hannes/.opam/4.03.0/lib/ocaml/bigarray.a (30248)</title></g>
<g><rect x="808" y="753" height="46" width="69" style="stroke:#006000; fill: #D95B43"/> <text x="818" y="776">mirage_logs.a</text><title>/home/hannes/.opam/4.03.0/lib/mirage-logs/mirage_logs.a (24602)</title></g>
<g><rect x="877" y="634" height="56" width="50" style="stroke:#006000; fill: #C02942"/> <text x="887" y="662">mirage-runtime.a</text><title>/home/hannes/.opam/4.03.0/lib/mirage/mirage-runtime.a (21882)</title></g>
<g><rect x="928" y="634" height="56" width="36" style="stroke:#006000; fill: #542437"/> <text x="938" y="662">functoria-runtime.a</text><title>/home/hannes/.opam/4.03.0/lib/functoria/functoria-runtime.a (15698)</title></g>
<g><rect x="965" y="634" height="56" width="34" style="stroke:#006000; fill: #53777A"/> <text x="975" y="662">OS.a</text><title>/home/hannes/.opam/4.03.0/lib/mirage-unix/OS.a (15004)</title></g>
<g><rect x="877" y="691" height="38" width="49" style="stroke:#006000; fill: #ECD078"/> <text x="887" y="710">main.o</text><title>main.o (14624)</title></g>
<g><rect x="877" y="730" height="35" width="49" style="stroke:#006000; fill: #D95B43"/> <text x="887" y="748">io_page.a</text><title>/home/hannes/.opam/4.03.0/lib/io-page/io_page.a (13424)</title></g>
<g><rect x="877" y="766" height="33" width="49" style="stroke:#006000; fill: #C02942"/> <text x="887" y="783">mirage_console_unix.a</text><title>/home/hannes/.opam/4.03.0/lib/mirage-console/mirage_console_unix.a (12746)</title></g>
<g><rect x="927" y="691" height="37" width="39" style="stroke:#006000; fill: #542437"/> <text x="937" y="710">mProf.a</text><title>/home/hannes/.opam/4.03.0/lib/mirage-profile/mProf.a (11358)</title></g>
<g><rect x="967" y="691" height="37" width="32" style="stroke:#006000; fill: #53777A"/> <text x="977" y="710">libcstruct_stubs.a</text><title>/home/hannes/.opam/4.03.0/lib/cstruct/libcstruct_stubs.a (9468)</title></g>
<g><rect x="927" y="729" height="35" width="27" style="stroke:#006000; fill: #ECD078"/> <text x="937" y="747">libio_page_unix_stubs.a</text><title>/home/hannes/.opam/4.03.0/lib/io-page/libio_page_unix_stubs.a (7530)</title></g>
<g><rect x="927" y="765" height="34" width="27" style="stroke:#006000; fill: #D95B43"/> <text x="937" y="782">key_gen.o</text><title>key_gen.o (7256)</title></g>
<g><rect x="955" y="729" height="34" width="25" style="stroke:#006000; fill: #C02942"/> <text x="965" y="746">lwt_cstruct.a</text><title>/home/hannes/.opam/4.03.0/lib/cstruct/lwt_cstruct.a (6696)</title></g>
<g><rect x="980" y="729" height="34" width="19" style="stroke:#006000; fill: #542437"/> <text x="990" y="746">unikernel.o</text><title>unikernel.o (5032)</title></g>
<g><rect x="955" y="764" height="18" width="23" style="stroke:#006000; fill: #53777A"/> <text x="965" y="773">mirage-clock.a</text><title>/home/hannes/.opam/4.03.0/lib/mirage-clock-unix/mirage-clock.a (3330)</title></g>
<g><rect x="955" y="783" height="16" width="23" style="stroke:#006000; fill: #ECD078"/> <text x="965" y="791">std_exit.o</text><title>/home/hannes/.opam/4.03.0/lib/ocaml/std_exit.o (2984)</title></g>
<g><rect x="978" y="764" height="12" width="21" style="stroke:#006000; fill: #D95B43"/> <text x="988" y="770">io_page_unix.a</text><title>/home/hannes/.opam/4.03.0/lib/io-page/io_page_unix.a (2046)</title></g>
<g><rect x="978" y="776" height="11" width="21" style="stroke:#006000; fill: #C02942"/> <text x="988" y="782">result.a</text><title>/home/hannes/.opam/4.03.0/lib/result/result.a (1950)</title></g>
<g><rect x="978" y="788" height="11" width="21" style="stroke:#006000; fill: #542437"/> <text x="988" y="794">mirage-console.a</text><title>/home/hannes/.opam/4.03.0/lib/mirage-console/mirage-console.a (1870)</title></g>
</svg>

After

Width:  |  Height:  |  Size: 7.7 KiB

View file

@ -0,0 +1,55 @@
<svg width="1000" height="800" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g><rect x="0" y="0" height="546" width="471" style="stroke:#006000; fill: #D95B43"/> <text x="10" y="273">libgcc.a</text><title>/usr/lib/gcc/x86_64-linux-gnu/4.8/libgcc.a (3027014)</title></g>
<g><rect x="0" y="546" height="253" width="471" style="stroke:#006000; fill: #C02942"/> <text x="10" y="673">stdlib.a</text><title>/home/hannes/.opam/4.02.3/lib/ocaml/stdlib.a (1400328)</title></g>
<g><rect x="471" y="0" height="208" width="271" style="stroke:#006000; fill: #542437"/> <text x="481" y="104">sexplib.a</text><title>/home/hannes/.opam/4.02.3/lib/sexplib/sexplib.a (665768)</title></g>
<g><rect x="742" y="0" height="208" width="257" style="stroke:#006000; fill: #53777A"/> <text x="752" y="104">libopenlibm.a</text><title>/home/hannes/.opam/4.02.3/lib/libopenlibm.a (629620)</title></g>
<g><rect x="471" y="208" height="161" width="181" style="stroke:#006000; fill: #ECD078"/> <text x="481" y="289">libxenasmrun.a</text><title>/home/hannes/.opam/4.02.3/lib/pkgconfig/../../lib/mirage-xen-ocaml/libxenasmrun.a (343920)</title></g>
<g><rect x="652" y="208" height="161" width="174" style="stroke:#006000; fill: #D95B43"/> <text x="662" y="289">libasmrun.a</text><title>/home/hannes/.opam/4.02.3/lib/ocaml/libasmrun.a (331260)</title></g>
<g><rect x="827" y="208" height="161" width="172" style="stroke:#006000; fill: #C02942"/> <text x="837" y="289">lwt.a</text><title>/home/hannes/.opam/4.02.3/lib/lwt/lwt.a (328130)</title></g>
<g><rect x="471" y="370" height="150" width="156" style="stroke:#006000; fill: #542437"/> <text x="481" y="445">cmdliner.a</text><title>/home/hannes/.opam/4.02.3/lib/cmdliner/cmdliner.a (277042)</title></g>
<g><rect x="471" y="520" height="147" width="156" style="stroke:#006000; fill: #53777A"/> <text x="481" y="594">libminios.a</text><title>/home/hannes/.opam/4.02.3/lib/pkgconfig/../../lib/minios-xen/libminios.a (271372)</title></g>
<g><rect x="471" y="667" height="132" width="156" style="stroke:#006000; fill: #ECD078"/> <text x="481" y="733">astring.a</text><title>/home/hannes/.opam/4.02.3/lib/astring/astring.a (243240)</title></g>
<g><rect x="627" y="370" height="126" width="156" style="stroke:#006000; fill: #D95B43"/> <text x="637" y="433">re.a</text><title>/home/hannes/.opam/4.02.3/lib/re/re.a (233148)</title></g>
<g><rect x="784" y="370" height="126" width="133" style="stroke:#006000; fill: #C02942"/> <text x="794" y="433">ipaddr.a</text><title>/home/hannes/.opam/4.02.3/lib/ipaddr/ipaddr.a (198636)</title></g>
<g><rect x="918" y="370" height="126" width="81" style="stroke:#006000; fill: #542437"/> <text x="928" y="433">camlstartup873580.o</text><title>/tmp/camlstartup873580.o (121544)</title></g>
<g><rect x="627" y="496" height="118" width="85" style="stroke:#006000; fill: #53777A"/> <text x="637" y="556">xenstore.a</text><title>/home/hannes/.opam/4.02.3/lib/xenstore/xenstore.a (119916)</title></g>
<g><rect x="627" y="615" height="98" width="85" style="stroke:#006000; fill: #ECD078"/> <text x="637" y="664">ocplib_endian.a</text><title>/home/hannes/.opam/4.02.3/lib/ocplib-endian/ocplib_endian.a (99350)</title></g>
<g><rect x="627" y="714" height="85" width="85" style="stroke:#006000; fill: #D95B43"/> <text x="637" y="757">fmt.a</text><title>/home/hannes/.opam/4.02.3/lib/fmt/fmt.a (86522)</title></g>
<g><rect x="713" y="496" height="80" width="82" style="stroke:#006000; fill: #C02942"/> <text x="723" y="536">OS.a</text><title>/home/hannes/.opam/4.02.3/lib/mirage-xen/OS.a (77252)</title></g>
<g><rect x="795" y="496" height="80" width="72" style="stroke:#006000; fill: #542437"/> <text x="805" y="536">cstruct.a</text><title>/home/hannes/.opam/4.02.3/lib/cstruct/cstruct.a (68448)</title></g>
<g><rect x="868" y="496" height="80" width="66" style="stroke:#006000; fill: #53777A"/> <text x="878" y="536">xenstore_client_lwt.a</text><title>/home/hannes/.opam/4.02.3/lib/xenstore/xenstore_client_lwt.a (62488)</title></g>
<g><rect x="934" y="496" height="80" width="65" style="stroke:#006000; fill: #ECD078"/> <text x="944" y="536">libxenposix.a</text><title>/home/hannes/.opam/4.02.3/lib/pkgconfig/../../lib/mirage-xen-posix/libxenposix.a (61286)</title></g>
<g><rect x="713" y="576" height="78" width="55" style="stroke:#006000; fill: #D95B43"/> <text x="723" y="615">mirage_console_xen.a</text><title>/home/hannes/.opam/4.02.3/lib/mirage-console/mirage_console_xen.a (51346)</title></g>
<g><rect x="713" y="655" height="76" width="55" style="stroke:#006000; fill: #C02942"/> <text x="723" y="693">bigstring.a</text><title>/home/hannes/.opam/4.02.3/lib/ocplib-endian/bigstring.a (50380)</title></g>
<g><rect x="713" y="731" height="68" width="55" style="stroke:#006000; fill: #542437"/> <text x="723" y="765">logs.a</text><title>/home/hannes/.opam/4.02.3/lib/logs/logs.a (44770)</title></g>
<g><rect x="769" y="576" height="57" width="64" style="stroke:#006000; fill: #53777A"/> <text x="779" y="605">libxencamlbindings.a</text><title>/home/hannes/.opam/4.02.3/lib/pkgconfig/../../lib/mirage-xen/libxencamlbindings.a (43158)</title></g>
<g><rect x="769" y="634" height="56" width="64" style="stroke:#006000; fill: #ECD078"/> <text x="779" y="662">xen_gnt.a</text><title>/home/hannes/.opam/4.02.3/lib/xen-gnt/xen_gnt.a (42476)</title></g>
<g><rect x="769" y="690" height="55" width="64" style="stroke:#006000; fill: #D95B43"/> <text x="779" y="717">libx86_64.a</text><title>/home/hannes/.opam/4.02.3/lib/pkgconfig/../../lib/minios-xen/libx86_64.a (41790)</title></g>
<g><rect x="769" y="745" height="54" width="64" style="stroke:#006000; fill: #C02942"/> <text x="779" y="772">shared_memory_ring.a</text><title>/home/hannes/.opam/4.02.3/lib/shared-memory-ring/shared_memory_ring.a (41024)</title></g>
<g><rect x="833" y="576" height="55" width="58" style="stroke:#006000; fill: #542437"/> <text x="843" y="604">re_str.a</text><title>/home/hannes/.opam/4.02.3/lib/re/re_str.a (37994)</title></g>
<g><rect x="892" y="576" height="55" width="57" style="stroke:#006000; fill: #53777A"/> <text x="902" y="604">libxenotherlibs.a</text><title>/home/hannes/.opam/4.02.3/lib/pkgconfig/../../lib/mirage-xen-ocaml/libxenotherlibs.a (37666)</title></g>
<g><rect x="950" y="576" height="55" width="49" style="stroke:#006000; fill: #ECD078"/> <text x="960" y="604">mirage_console_proto.a</text><title>/home/hannes/.opam/4.02.3/lib/mirage-console/mirage_console_proto.a (32550)</title></g>
<g><rect x="833" y="632" height="51" width="45" style="stroke:#006000; fill: #D95B43"/> <text x="843" y="658">libbigarray.a</text><title>/home/hannes/.opam/4.02.3/lib/ocaml/libbigarray.a (27760)</title></g>
<g><rect x="879" y="632" height="51" width="43" style="stroke:#006000; fill: #C02942"/> <text x="889" y="658">bigarray.a</text><title>/home/hannes/.opam/4.02.3/lib/ocaml/bigarray.a (26228)</title></g>
<g><rect x="922" y="632" height="51" width="40" style="stroke:#006000; fill: #542437"/> <text x="932" y="658">mirage_logs.a</text><title>/home/hannes/.opam/4.02.3/lib/mirage-logs/mirage_logs.a (24604)</title></g>
<g><rect x="963" y="632" height="51" width="36" style="stroke:#006000; fill: #53777A"/> <text x="973" y="658">xen_evtchn.a</text><title>/home/hannes/.opam/4.02.3/lib/xen-evtchn/xen_evtchn.a (22362)</title></g>
<g><rect x="833" y="684" height="40" width="46" style="stroke:#006000; fill: #ECD078"/> <text x="843" y="704">mirage-runtime.a</text><title>/home/hannes/.opam/4.02.3/lib/mirage/mirage-runtime.a (22140)</title></g>
<g><rect x="833" y="724" height="38" width="46" style="stroke:#006000; fill: #D95B43"/> <text x="843" y="743">lwt_shared_memory_ring.a</text><title>/home/hannes/.opam/4.02.3/lib/shared-memory-ring/lwt_shared_memory_ring.a (21432)</title></g>
<g><rect x="833" y="763" height="36" width="46" style="stroke:#006000; fill: #C02942"/> <text x="843" y="781">re_emacs.a</text><title>/home/hannes/.opam/4.02.3/lib/re/re_emacs.a (20354)</title></g>
<g><rect x="880" y="684" height="41" width="41" style="stroke:#006000; fill: #542437"/> <text x="890" y="704">xenstore_ring.a</text><title>/home/hannes/.opam/4.02.3/lib/shared-memory-ring/xenstore_ring.a (19818)</title></g>
<g><rect x="880" y="725" height="40" width="41" style="stroke:#006000; fill: #53777A"/> <text x="890" y="745">console_ring.a</text><title>/home/hannes/.opam/4.02.3/lib/shared-memory-ring/console_ring.a (19722)</title></g>
<g><rect x="880" y="766" height="33" width="41" style="stroke:#006000; fill: #ECD078"/> <text x="890" y="783">mirage-bootvar.a</text><title>/home/hannes/.opam/4.02.3/lib/mirage-bootvar/mirage-bootvar.a (16280)</title></g>
<g><rect x="921" y="684" height="32" width="40" style="stroke:#006000; fill: #D95B43"/> <text x="931" y="700">functoria-runtime.a</text><title>/home/hannes/.opam/4.02.3/lib/functoria/functoria-runtime.a (15444)</title></g>
<g><rect x="962" y="684" height="32" width="37" style="stroke:#006000; fill: #C02942"/> <text x="972" y="700">main.o</text><title>main.o (14112)</title></g>
<g><rect x="921" y="716" height="27" width="40" style="stroke:#006000; fill: #542437"/> <text x="931" y="730">io_page.a</text><title>/home/hannes/.opam/4.02.3/lib/io-page/io_page.a (13208)</title></g>
<g><rect x="962" y="716" height="27" width="37" style="stroke:#006000; fill: #53777A"/> <text x="972" y="730">libcstruct_stubs.a</text><title>/home/hannes/.opam/4.02.3/lib/cstruct/libcstruct_stubs.a (12016)</title></g>
<g><rect x="921" y="743" height="31" width="29" style="stroke:#006000; fill: #ECD078"/> <text x="931" y="759">mProf.a</text><title>/home/hannes/.opam/4.02.3/lib/mirage-profile/mProf.a (11084)</title></g>
<g><rect x="921" y="775" height="24" width="29" style="stroke:#006000; fill: #D95B43"/> <text x="931" y="787">libio_page_xen_stubs.a</text><title>/home/hannes/.opam/4.02.3/lib/io-page/libio_page_xen_stubs.a (8430)</title></g>
<g><rect x="951" y="743" height="27" width="25" style="stroke:#006000; fill: #C02942"/> <text x="961" y="757">libshared_memory_ring_stubs.a</text><title>/home/hannes/.opam/4.02.3/lib/shared-memory-ring/libshared_memory_ring_stubs.a (8220)</title></g>
<g><rect x="977" y="743" height="27" width="22" style="stroke:#006000; fill: #542437"/> <text x="987" y="757">key_gen.o</text><title>key_gen.o (7184)</title></g>
<g><rect x="951" y="770" height="29" width="18" style="stroke:#006000; fill: #53777A"/> <text x="961" y="785">mirage-clock.a</text><title>/home/hannes/.opam/4.02.3/lib/mirage-clock-xen/mirage-clock.a (6476)</title></g>
<g><rect x="970" y="770" height="16" width="19" style="stroke:#006000; fill: #ECD078"/> <text x="980" y="778">unikernel.o</text><title>unikernel.o (3592)</title></g>
<g><rect x="970" y="786" height="13" width="19" style="stroke:#006000; fill: #D95B43"/> <text x="980" y="793">std_exit.o</text><title>/home/hannes/.opam/4.02.3/lib/ocaml/std_exit.o (2944)</title></g>
<g><rect x="989" y="770" height="14" width="10" style="stroke:#006000; fill: #C02942"/> <text x="999" y="778">result.a</text><title>/home/hannes/.opam/4.02.3/lib/result/result.a (1852)</title></g>
<g><rect x="989" y="785" height="14" width="10" style="stroke:#006000; fill: #542437"/> <text x="999" y="792">mirage-console.a</text><title>/home/hannes/.opam/4.02.3/lib/mirage-console/mirage-console.a (1778)</title></g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

View file

@ -0,0 +1,669 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
-->
<!-- Title: mirage&#45;console&#45;xen Pages: 1 -->
<svg width="2165pt" height="744pt"
viewBox="0.00 0.00 2164.97 744.18" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 740.181)">
<title>mirage&#45;console&#45;xen</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-740.181 2160.97,-740.181 2160.97,4 -4,4"/>
<!-- xenstore.client -->
<g id="node1" class="node"><title>xenstore.client</title>
<ellipse fill="#d95b43" stroke="black" cx="909.569" cy="-529.831" rx="70.0071" ry="26.7407"/>
<text text-anchor="middle" x="909.569" y="-533.631" font-family="Times,serif" font-size="14.00">xenstore.client</text>
<text text-anchor="middle" x="909.569" y="-518.631" font-family="Times,serif" font-size="14.00">1.3.0</text>
</g>
<!-- xenstore -->
<g id="node2" class="node"><title>xenstore</title>
<ellipse fill="#d95b43" stroke="black" cx="828.569" cy="-440.09" rx="45.9239" ry="26.7407"/>
<text text-anchor="middle" x="828.569" y="-443.89" font-family="Times,serif" font-size="14.00">xenstore</text>
<text text-anchor="middle" x="828.569" y="-428.89" font-family="Times,serif" font-size="14.00">1.3.0</text>
</g>
<!-- xenstore.client&#45;&gt;xenstore -->
<g id="edge40" class="edge"><title>xenstore.client&#45;&gt;xenstore</title>
<path fill="none" stroke="black" d="M887.006,-504.39C877.664,-494.271 866.727,-482.424 856.857,-471.732"/>
<polygon fill="black" stroke="black" points="859.252,-469.167 849.897,-464.193 854.108,-473.915 859.252,-469.167"/>
</g>
<!-- lwt -->
<g id="node28" class="node"><title>lwt</title>
<ellipse fill="#d95b43" stroke="black" cx="1336.57" cy="-350.35" rx="30.3115" ry="26.7407"/>
<text text-anchor="middle" x="1336.57" y="-354.15" font-family="Times,serif" font-size="14.00">lwt</text>
<text text-anchor="middle" x="1336.57" y="-339.15" font-family="Times,serif" font-size="14.00">2.5.2</text>
</g>
<!-- xenstore.client&#45;&gt;lwt -->
<g id="edge39" class="edge"><title>xenstore.client&#45;&gt;lwt</title>
<path fill="none" stroke="black" d="M967.677,-514.845C986.403,-510.644 1007.3,-506.276 1026.57,-502.96 1090.79,-491.914 1270.59,-512.109 1317.57,-466.96 1338.45,-446.893 1341.98,-413.385 1341,-387.595"/>
<polygon fill="black" stroke="black" points="1344.48,-387.195 1340.37,-377.43 1337.5,-387.627 1344.48,-387.195"/>
</g>
<!-- cstruct.ppx -->
<g id="node34" class="node"><title>cstruct.ppx</title>
<ellipse fill="#d95b43" stroke="black" cx="912.569" cy="-350.35" rx="55.3091" ry="26.7407"/>
<text text-anchor="middle" x="912.569" y="-354.15" font-family="Times,serif" font-size="14.00">cstruct.ppx</text>
<text text-anchor="middle" x="912.569" y="-339.15" font-family="Times,serif" font-size="14.00">1.7.0</text>
</g>
<!-- xenstore&#45;&gt;cstruct.ppx -->
<g id="edge38" class="edge"><title>xenstore&#45;&gt;cstruct.ppx</title>
<path fill="none" stroke="black" d="M850.639,-416.038C860.433,-405.807 872.11,-393.61 882.671,-382.579"/>
<polygon fill="black" stroke="black" points="885.38,-384.81 889.768,-375.166 880.324,-379.969 885.38,-384.81"/>
</g>
<!-- cstruct -->
<g id="node35" class="node"><title>cstruct</title>
<ellipse fill="#d95b43" stroke="black" cx="829.569" cy="-260.61" rx="38.7821" ry="26.7407"/>
<text text-anchor="middle" x="829.569" y="-264.41" font-family="Times,serif" font-size="14.00">cstruct</text>
<text text-anchor="middle" x="829.569" y="-249.41" font-family="Times,serif" font-size="14.00">1.9.0</text>
</g>
<!-- xenstore&#45;&gt;cstruct -->
<g id="edge37" class="edge"><title>xenstore&#45;&gt;cstruct</title>
<path fill="none" stroke="black" d="M828.716,-412.903C828.888,-382.405 829.173,-331.854 829.365,-297.662"/>
<polygon fill="black" stroke="black" points="832.866,-297.636 829.422,-287.616 825.866,-297.596 832.866,-297.636"/>
</g>
<!-- xen&#45;gnt -->
<g id="node3" class="node"><title>xen&#45;gnt</title>
<ellipse fill="#d95b43" stroke="black" cx="475.569" cy="-529.831" rx="41.9398" ry="26.7407"/>
<text text-anchor="middle" x="475.569" y="-533.631" font-family="Times,serif" font-size="14.00">xen&#45;gnt</text>
<text text-anchor="middle" x="475.569" y="-518.631" font-family="Times,serif" font-size="14.00">2.2.1</text>
</g>
<!-- unix -->
<g id="node5" class="node"><title>unix</title>
<ellipse fill="#c02942" stroke="black" cx="416.569" cy="-18" rx="27" ry="18"/>
<text text-anchor="middle" x="416.569" y="-14.3" font-family="Times,serif" font-size="14.00">unix</text>
</g>
<!-- xen&#45;gnt&#45;&gt;unix -->
<g id="edge48" class="edge"><title>xen&#45;gnt&#45;&gt;unix</title>
<path fill="none" stroke="black" d="M472.562,-502.847C462.485,-415.775 429.969,-134.799 419.704,-46.0966"/>
<polygon fill="black" stroke="black" points="423.166,-45.5603 418.539,-36.029 416.212,-46.365 423.166,-45.5603"/>
</g>
<!-- mirage&#45;profile -->
<g id="node21" class="node"><title>mirage&#45;profile</title>
<ellipse fill="#d95b43" stroke="black" cx="1240.57" cy="-440.09" rx="67.7647" ry="26.7407"/>
<text text-anchor="middle" x="1240.57" y="-443.89" font-family="Times,serif" font-size="14.00">mirage&#45;profile</text>
<text text-anchor="middle" x="1240.57" y="-428.89" font-family="Times,serif" font-size="14.00">0.6.1</text>
</g>
<!-- xen&#45;gnt&#45;&gt;mirage&#45;profile -->
<g id="edge52" class="edge"><title>xen&#45;gnt&#45;&gt;mirage&#45;profile</title>
<path fill="none" stroke="black" d="M511.943,-516.267C527.9,-511.276 546.97,-506.008 564.569,-502.96 827.361,-457.457 901.771,-517.873 1163.57,-466.96 1169.84,-465.741 1176.3,-464.144 1182.68,-462.341"/>
<polygon fill="black" stroke="black" points="1184.05,-465.585 1192.62,-459.362 1182.04,-458.88 1184.05,-465.585"/>
</g>
<!-- xen&#45;gnt&#45;&gt;lwt -->
<g id="edge51" class="edge"><title>xen&#45;gnt&#45;&gt;lwt</title>
<path fill="none" stroke="black" d="M512.026,-516.709C527.997,-511.797 547.055,-506.467 564.569,-502.96 704.469,-474.946 750.235,-517.746 883.569,-466.96 922.228,-452.235 921.291,-428.913 959.569,-413.22 1075.15,-365.837 1224.71,-354.686 1295.7,-352.101"/>
<polygon fill="black" stroke="black" points="1296.11,-355.59 1305.99,-351.767 1295.89,-348.594 1296.11,-355.59"/>
</g>
<!-- io&#45;page -->
<g id="node31" class="node"><title>io&#45;page</title>
<ellipse fill="#d95b43" stroke="black" cx="598.569" cy="-440.09" rx="39.6962" ry="26.7407"/>
<text text-anchor="middle" x="598.569" y="-443.89" font-family="Times,serif" font-size="14.00">io&#45;page</text>
<text text-anchor="middle" x="598.569" y="-428.89" font-family="Times,serif" font-size="14.00">1.6.0</text>
</g>
<!-- xen&#45;gnt&#45;&gt;io&#45;page -->
<g id="edge50" class="edge"><title>xen&#45;gnt&#45;&gt;io&#45;page</title>
<path fill="none" stroke="black" d="M502.866,-509.358C520.745,-496.604 544.279,-479.817 563.535,-466.081"/>
<polygon fill="black" stroke="black" points="565.662,-468.863 571.77,-460.206 561.597,-463.164 565.662,-468.863"/>
</g>
<!-- bigarray -->
<g id="node38" class="node"><title>bigarray</title>
<ellipse fill="#c02942" stroke="black" cx="511.569" cy="-90" rx="40.0939" ry="18"/>
<text text-anchor="middle" x="511.569" y="-86.3" font-family="Times,serif" font-size="14.00">bigarray</text>
</g>
<!-- xen&#45;gnt&#45;&gt;bigarray -->
<g id="edge49" class="edge"><title>xen&#45;gnt&#45;&gt;bigarray</title>
<path fill="none" stroke="black" d="M479.597,-503.039C484.624,-468.566 492.569,-405.519 492.569,-351.35 492.569,-351.35 492.569,-351.35 492.569,-259.61 492.569,-209.372 501.001,-151.24 506.63,-118.028"/>
<polygon fill="black" stroke="black" points="510.081,-118.613 508.345,-108.162 503.184,-117.414 510.081,-118.613"/>
</g>
<!-- xen&#45;evtchn -->
<g id="node4" class="node"><title>xen&#45;evtchn</title>
<ellipse fill="#d95b43" stroke="black" cx="56.5685" cy="-440.09" rx="56.6372" ry="26.7407"/>
<text text-anchor="middle" x="56.5685" y="-443.89" font-family="Times,serif" font-size="14.00">xen&#45;evtchn</text>
<text text-anchor="middle" x="56.5685" y="-428.89" font-family="Times,serif" font-size="14.00">1.0.6</text>
</g>
<!-- xen&#45;evtchn&#45;&gt;unix -->
<g id="edge53" class="edge"><title>xen&#45;evtchn&#45;&gt;unix</title>
<path fill="none" stroke="black" d="M93.5052,-419.617C141.038,-391.58 217.569,-335.037 217.569,-261.61 217.569,-261.61 217.569,-261.61 217.569,-169.87 217.569,-88.2757 325.119,-45.1121 382.087,-27.9721"/>
<polygon fill="black" stroke="black" points="383.139,-31.3114 391.767,-25.1635 381.188,-24.5887 383.139,-31.3114"/>
</g>
<!-- xen&#45;evtchn&#45;&gt;lwt -->
<g id="edge54" class="edge"><title>xen&#45;evtchn&#45;&gt;lwt</title>
<path fill="none" stroke="black" d="M96.7592,-420.911C105.134,-417.816 114.019,-415.023 122.569,-413.22 308.427,-374.024 786.93,-388.029 976.569,-377.22 1092.66,-370.604 1229.61,-359.986 1296.18,-354.645"/>
<polygon fill="black" stroke="black" points="1296.56,-358.125 1306.25,-353.834 1296,-351.148 1296.56,-358.125"/>
</g>
<!-- xen&#45;evtchn&#45;&gt;bigarray -->
<g id="edge55" class="edge"><title>xen&#45;evtchn&#45;&gt;bigarray</title>
<path fill="none" stroke="black" d="M99.0438,-422.048C106.84,-419.032 114.928,-415.977 122.569,-413.22 170.558,-395.905 188.281,-404.221 231.569,-377.22 349.42,-303.712 453.878,-170.588 494.055,-115.69"/>
<polygon fill="black" stroke="black" points="496.905,-117.722 499.944,-107.572 491.239,-113.611 496.905,-117.722"/>
</g>
<!-- shared&#45;memory&#45;ring.xenstore -->
<g id="node6" class="node"><title>shared&#45;memory&#45;ring.xenstore</title>
<ellipse fill="#d95b43" stroke="black" cx="1164.57" cy="-529.831" rx="128.887" ry="26.7407"/>
<text text-anchor="middle" x="1164.57" y="-533.631" font-family="Times,serif" font-size="14.00">shared&#45;memory&#45;ring.xenstore</text>
<text text-anchor="middle" x="1164.57" y="-518.631" font-family="Times,serif" font-size="14.00">1.3.0</text>
</g>
<!-- shared&#45;memory&#45;ring -->
<g id="node9" class="node"><title>shared&#45;memory&#45;ring</title>
<ellipse fill="#d95b43" stroke="black" cx="1061.57" cy="-440.09" rx="92.7622" ry="26.7407"/>
<text text-anchor="middle" x="1061.57" y="-443.89" font-family="Times,serif" font-size="14.00">shared&#45;memory&#45;ring</text>
<text text-anchor="middle" x="1061.57" y="-428.89" font-family="Times,serif" font-size="14.00">1.3.0</text>
</g>
<!-- shared&#45;memory&#45;ring.xenstore&#45;&gt;shared&#45;memory&#45;ring -->
<g id="edge32" class="edge"><title>shared&#45;memory&#45;ring.xenstore&#45;&gt;shared&#45;memory&#45;ring</title>
<path fill="none" stroke="black" d="M1134.78,-503.452C1123.37,-493.737 1110.23,-482.542 1098.25,-472.341"/>
<polygon fill="black" stroke="black" points="1100.47,-469.627 1090.58,-465.806 1095.93,-474.955 1100.47,-469.627"/>
</g>
<!-- shared&#45;memory&#45;ring.lwt -->
<g id="node7" class="node"><title>shared&#45;memory&#45;ring.lwt</title>
<ellipse fill="#d95b43" stroke="black" cx="1456.57" cy="-529.831" rx="107.46" ry="26.7407"/>
<text text-anchor="middle" x="1456.57" y="-533.631" font-family="Times,serif" font-size="14.00">shared&#45;memory&#45;ring.lwt</text>
<text text-anchor="middle" x="1456.57" y="-518.631" font-family="Times,serif" font-size="14.00">1.3.0</text>
</g>
<!-- shared&#45;memory&#45;ring.lwt&#45;&gt;shared&#45;memory&#45;ring -->
<g id="edge33" class="edge"><title>shared&#45;memory&#45;ring.lwt&#45;&gt;shared&#45;memory&#45;ring</title>
<path fill="none" stroke="black" d="M1374.6,-512.442C1315.74,-500.45 1234.59,-483.459 1163.57,-466.96 1155.51,-465.089 1147.11,-463.07 1138.75,-461.014"/>
<polygon fill="black" stroke="black" points="1139.51,-457.597 1128.96,-458.591 1137.83,-464.392 1139.51,-457.597"/>
</g>
<!-- shared&#45;memory&#45;ring.lwt&#45;&gt;mirage&#45;profile -->
<g id="edge35" class="edge"><title>shared&#45;memory&#45;ring.lwt&#45;&gt;mirage&#45;profile</title>
<path fill="none" stroke="black" d="M1401.78,-506.577C1369.48,-493.453 1328.7,-476.89 1296.24,-463.705"/>
<polygon fill="black" stroke="black" points="1297.47,-460.426 1286.89,-459.905 1294.83,-466.911 1297.47,-460.426"/>
</g>
<!-- shared&#45;memory&#45;ring.lwt&#45;&gt;lwt -->
<g id="edge34" class="edge"><title>shared&#45;memory&#45;ring.lwt&#45;&gt;lwt</title>
<path fill="none" stroke="black" d="M1439.12,-503.023C1417.52,-471.076 1380.76,-416.707 1357.62,-382.479"/>
<polygon fill="black" stroke="black" points="1360.26,-380.139 1351.76,-373.816 1354.46,-384.06 1360.26,-380.139"/>
</g>
<!-- shared&#45;memory&#45;ring.console -->
<g id="node8" class="node"><title>shared&#45;memory&#45;ring.console</title>
<ellipse fill="#d95b43" stroke="black" cx="697.569" cy="-529.831" rx="124.402" ry="26.7407"/>
<text text-anchor="middle" x="697.569" y="-533.631" font-family="Times,serif" font-size="14.00">shared&#45;memory&#45;ring.console</text>
<text text-anchor="middle" x="697.569" y="-518.631" font-family="Times,serif" font-size="14.00">1.3.0</text>
</g>
<!-- shared&#45;memory&#45;ring.console&#45;&gt;shared&#45;memory&#45;ring -->
<g id="edge29" class="edge"><title>shared&#45;memory&#45;ring.console&#45;&gt;shared&#45;memory&#45;ring</title>
<path fill="none" stroke="black" d="M778.598,-509.345C829.192,-497.173 895.68,-481.168 954.569,-466.96 963.437,-464.821 972.718,-462.58 981.95,-460.349"/>
<polygon fill="black" stroke="black" points="983.028,-463.69 991.927,-457.939 981.384,-456.885 983.028,-463.69"/>
</g>
<!-- shared&#45;memory&#45;ring.console&#45;&gt;cstruct.ppx -->
<g id="edge31" class="edge"><title>shared&#45;memory&#45;ring.console&#45;&gt;cstruct.ppx</title>
<path fill="none" stroke="black" d="M780.214,-509.671C822.803,-498.217 868.846,-482.837 883.569,-466.96 903.267,-445.718 910.094,-413.134 912.236,-387.966"/>
<polygon fill="black" stroke="black" points="915.747,-387.891 912.89,-377.688 908.761,-387.445 915.747,-387.891"/>
</g>
<!-- shared&#45;memory&#45;ring.console&#45;&gt;cstruct -->
<g id="edge30" class="edge"><title>shared&#45;memory&#45;ring.console&#45;&gt;cstruct</title>
<path fill="none" stroke="black" d="M710.466,-502.722C734.516,-454.033 786.185,-349.435 812.865,-295.424"/>
<polygon fill="black" stroke="black" points="816.098,-296.782 817.389,-286.266 809.822,-293.682 816.098,-296.782"/>
</g>
<!-- shared&#45;memory&#45;ring&#45;&gt;cstruct -->
<g id="edge36" class="edge"><title>shared&#45;memory&#45;ring&#45;&gt;cstruct</title>
<path fill="none" stroke="black" d="M1048.15,-413.403C1033.57,-387.636 1008.07,-348.312 976.569,-323.48 946.548,-299.814 906.155,-283.679 875.307,-273.836"/>
<polygon fill="black" stroke="black" points="876.24,-270.461 865.652,-270.86 874.177,-277.151 876.24,-270.461"/>
</g>
<!-- sexplib -->
<g id="node10" class="node"><title>sexplib</title>
<ellipse fill="#d95b43" stroke="black" cx="829.569" cy="-170.87" rx="49.4949" ry="26.7407"/>
<text text-anchor="middle" x="829.569" y="-174.67" font-family="Times,serif" font-size="14.00">sexplib</text>
<text text-anchor="middle" x="829.569" y="-159.67" font-family="Times,serif" font-size="14.00">113.33.03</text>
</g>
<!-- sexplib&#45;&gt;bigarray -->
<g id="edge56" class="edge"><title>sexplib&#45;&gt;bigarray</title>
<path fill="none" stroke="black" d="M793.534,-152.344C786.366,-149.273 778.813,-146.323 771.569,-144 699.394,-120.855 612.596,-105.568 559.784,-97.599"/>
<polygon fill="black" stroke="black" points="560.095,-94.1069 549.69,-96.1026 559.068,-101.031 560.095,-94.1069"/>
</g>
<!-- result -->
<g id="node11" class="node"><title>result</title>
<ellipse fill="#d95b43" stroke="black" cx="1698.57" cy="-170.87" rx="33.8824" ry="26.7407"/>
<text text-anchor="middle" x="1698.57" y="-174.67" font-family="Times,serif" font-size="14.00">result</text>
<text text-anchor="middle" x="1698.57" y="-159.67" font-family="Times,serif" font-size="14.00">1.0</text>
</g>
<!-- re.str -->
<g id="node12" class="node"><title>re.str</title>
<ellipse fill="#d95b43" stroke="black" cx="2052.57" cy="-619.571" rx="32.5538" ry="26.7407"/>
<text text-anchor="middle" x="2052.57" y="-623.371" font-family="Times,serif" font-size="14.00">re.str</text>
<text text-anchor="middle" x="2052.57" y="-608.371" font-family="Times,serif" font-size="14.00">1.5.0</text>
</g>
<!-- re.emacs -->
<g id="node13" class="node"><title>re.emacs</title>
<ellipse fill="#d95b43" stroke="black" cx="2052.57" cy="-529.831" rx="45.9239" ry="26.7407"/>
<text text-anchor="middle" x="2052.57" y="-533.631" font-family="Times,serif" font-size="14.00">re.emacs</text>
<text text-anchor="middle" x="2052.57" y="-518.631" font-family="Times,serif" font-size="14.00">1.5.0</text>
</g>
<!-- re.str&#45;&gt;re.emacs -->
<g id="edge27" class="edge"><title>re.str&#45;&gt;re.emacs</title>
<path fill="none" stroke="black" d="M2052.57,-592.246C2052.57,-584.279 2052.57,-575.388 2052.57,-566.9"/>
<polygon fill="black" stroke="black" points="2056.07,-566.834 2052.57,-556.835 2049.07,-566.835 2056.07,-566.834"/>
</g>
<!-- re -->
<g id="node14" class="node"><title>re</title>
<ellipse fill="#d95b43" stroke="black" cx="2126.57" cy="-440.09" rx="30.3115" ry="26.7407"/>
<text text-anchor="middle" x="2126.57" y="-443.89" font-family="Times,serif" font-size="14.00">re</text>
<text text-anchor="middle" x="2126.57" y="-428.89" font-family="Times,serif" font-size="14.00">1.5.0</text>
</g>
<!-- re.str&#45;&gt;re -->
<g id="edge26" class="edge"><title>re.str&#45;&gt;re</title>
<path fill="none" stroke="black" d="M2074.69,-599.557C2086.33,-588.291 2099.78,-573.047 2107.57,-556.701 2119.41,-531.861 2124.04,-500.99 2125.78,-477.398"/>
<polygon fill="black" stroke="black" points="2129.29,-477.308 2126.39,-467.119 2122.3,-476.894 2129.29,-477.308"/>
</g>
<!-- re.emacs&#45;&gt;re -->
<g id="edge25" class="edge"><title>re.emacs&#45;&gt;re</title>
<path fill="none" stroke="black" d="M2072.4,-505.318C2081.58,-494.43 2092.58,-481.392 2102.26,-469.916"/>
<polygon fill="black" stroke="black" points="2104.94,-472.168 2108.71,-462.267 2099.59,-467.655 2104.94,-472.168"/>
</g>
<!-- bytes -->
<g id="node37" class="node"><title>bytes</title>
<ellipse fill="#c02942" stroke="black" cx="1162.57" cy="-90" rx="29.4969" ry="18"/>
<text text-anchor="middle" x="1162.57" y="-86.3" font-family="Times,serif" font-size="14.00">bytes</text>
</g>
<!-- re&#45;&gt;bytes -->
<g id="edge28" class="edge"><title>re&#45;&gt;bytes</title>
<path fill="none" stroke="black" d="M2132.42,-413.515C2144.21,-354.542 2163.21,-209.107 2081.57,-144 2012.07,-88.5792 1369.28,-89.4573 1202.14,-90.6375"/>
<polygon fill="black" stroke="black" points="1202.02,-87.1382 1192.05,-90.7133 1202.08,-94.138 1202.02,-87.1382"/>
</g>
<!-- ocplib&#45;endian.bigstring -->
<g id="node15" class="node"><title>ocplib&#45;endian.bigstring</title>
<ellipse fill="#d95b43" stroke="black" cx="660.569" cy="-170.87" rx="101.647" ry="26.7407"/>
<text text-anchor="middle" x="660.569" y="-174.67" font-family="Times,serif" font-size="14.00">ocplib&#45;endian.bigstring</text>
<text text-anchor="middle" x="660.569" y="-159.67" font-family="Times,serif" font-size="14.00">0.8</text>
</g>
<!-- ocplib&#45;endian.bigstring&#45;&gt;bytes -->
<g id="edge58" class="edge"><title>ocplib&#45;endian.bigstring&#45;&gt;bytes</title>
<path fill="none" stroke="black" d="M733.207,-151.907C745.948,-149.052 759.113,-146.29 771.569,-144 899.735,-120.432 1053.33,-102.624 1123.79,-95.0301"/>
<polygon fill="black" stroke="black" points="1124.4,-98.4852 1133.97,-93.9419 1123.65,-91.5248 1124.4,-98.4852"/>
</g>
<!-- ocplib&#45;endian.bigstring&#45;&gt;bigarray -->
<g id="edge57" class="edge"><title>ocplib&#45;endian.bigstring&#45;&gt;bigarray</title>
<path fill="none" stroke="black" d="M616.267,-146.42C593.551,-134.395 566.325,-119.984 545.331,-108.872"/>
<polygon fill="black" stroke="black" points="546.931,-105.758 536.455,-104.173 543.656,-111.945 546.931,-105.758"/>
</g>
<!-- ocplib&#45;endian -->
<g id="node16" class="node"><title>ocplib&#45;endian</title>
<ellipse fill="#d95b43" stroke="black" cx="999.569" cy="-170.87" rx="65.1077" ry="26.7407"/>
<text text-anchor="middle" x="999.569" y="-174.67" font-family="Times,serif" font-size="14.00">ocplib&#45;endian</text>
<text text-anchor="middle" x="999.569" y="-159.67" font-family="Times,serif" font-size="14.00">0.8</text>
</g>
<!-- ocplib&#45;endian&#45;&gt;bytes -->
<g id="edge59" class="edge"><title>ocplib&#45;endian&#45;&gt;bytes</title>
<path fill="none" stroke="black" d="M1040.7,-149.968C1068.63,-136.453 1105.03,-118.842 1130.75,-106.397"/>
<polygon fill="black" stroke="black" points="1132.57,-109.405 1140.04,-101.899 1129.52,-103.104 1132.57,-109.405"/>
</g>
<!-- mirage.runtime -->
<g id="node17" class="node"><title>mirage.runtime</title>
<ellipse fill="#ecd078" stroke="black" cx="2016.57" cy="-350.35" rx="72.6644" ry="26.7407"/>
<text text-anchor="middle" x="2016.57" y="-354.15" font-family="Times,serif" font-size="14.00">mirage.runtime</text>
<text text-anchor="middle" x="2016.57" y="-339.15" font-family="Times,serif" font-size="14.00">2.9.0</text>
</g>
<!-- logs -->
<g id="node29" class="node"><title>logs</title>
<ellipse fill="#d95b43" stroke="black" cx="1698.57" cy="-260.61" rx="30.3115" ry="26.7407"/>
<text text-anchor="middle" x="1698.57" y="-264.41" font-family="Times,serif" font-size="14.00">logs</text>
<text text-anchor="middle" x="1698.57" y="-249.41" font-family="Times,serif" font-size="14.00">0.5.0</text>
</g>
<!-- mirage.runtime&#45;&gt;logs -->
<g id="edge7" class="edge"><title>mirage.runtime&#45;&gt;logs</title>
<path fill="none" stroke="black" d="M1962.51,-332.33C1951.65,-329.181 1940.29,-326.072 1929.57,-323.48 1845.18,-303.08 1818.02,-320.128 1737.57,-287.48 1735.04,-286.456 1732.51,-285.256 1730.02,-283.944"/>
<polygon fill="black" stroke="black" points="1731.63,-280.833 1721.23,-278.817 1728.1,-286.879 1731.63,-280.833"/>
</g>
<!-- ipaddr -->
<g id="node30" class="node"><title>ipaddr</title>
<ellipse fill="#d95b43" stroke="black" cx="1783.57" cy="-260.61" rx="36.5405" ry="26.7407"/>
<text text-anchor="middle" x="1783.57" y="-264.41" font-family="Times,serif" font-size="14.00">ipaddr</text>
<text text-anchor="middle" x="1783.57" y="-249.41" font-family="Times,serif" font-size="14.00">2.7.0</text>
</g>
<!-- mirage.runtime&#45;&gt;ipaddr -->
<g id="edge5" class="edge"><title>mirage.runtime&#45;&gt;ipaddr</title>
<path fill="none" stroke="black" d="M1961.73,-332.496C1915.62,-318.085 1853.5,-298.05 1829.57,-287.48 1826.55,-286.148 1823.47,-284.678 1820.41,-283.137"/>
<polygon fill="black" stroke="black" points="1821.83,-279.926 1811.35,-278.361 1818.56,-286.119 1821.83,-279.926"/>
</g>
<!-- functoria.runtime -->
<g id="node32" class="node"><title>functoria.runtime</title>
<ellipse fill="#ecd078" stroke="black" cx="2016.57" cy="-260.61" rx="82.0488" ry="26.7407"/>
<text text-anchor="middle" x="2016.57" y="-264.41" font-family="Times,serif" font-size="14.00">functoria.runtime</text>
<text text-anchor="middle" x="2016.57" y="-249.41" font-family="Times,serif" font-size="14.00">1.1.0</text>
</g>
<!-- mirage.runtime&#45;&gt;functoria.runtime -->
<g id="edge4" class="edge"><title>mirage.runtime&#45;&gt;functoria.runtime</title>
<path fill="none" stroke="black" d="M2016.57,-323.025C2016.57,-315.059 2016.57,-306.168 2016.57,-297.679"/>
<polygon fill="black" stroke="black" points="2020.07,-297.614 2016.57,-287.614 2013.07,-297.614 2020.07,-297.614"/>
</g>
<!-- astring -->
<g id="node39" class="node"><title>astring</title>
<ellipse fill="#d95b43" stroke="black" cx="1877.57" cy="-260.61" rx="38.7821" ry="26.7407"/>
<text text-anchor="middle" x="1877.57" y="-264.41" font-family="Times,serif" font-size="14.00">astring</text>
<text text-anchor="middle" x="1877.57" y="-249.41" font-family="Times,serif" font-size="14.00">0.8.1</text>
</g>
<!-- mirage.runtime&#45;&gt;astring -->
<g id="edge6" class="edge"><title>mirage.runtime&#45;&gt;astring</title>
<path fill="none" stroke="black" d="M1980.77,-326.755C1960.36,-313.871 1934.83,-297.756 1914.27,-284.778"/>
<polygon fill="black" stroke="black" points="1916.12,-281.805 1905.79,-279.427 1912.38,-287.724 1916.12,-281.805"/>
</g>
<!-- mirage&#45;xen -->
<g id="node18" class="node"><title>mirage&#45;xen</title>
<ellipse fill="#ecd078" stroke="black" cx="909.569" cy="-619.571" rx="56.6372" ry="26.7407"/>
<text text-anchor="middle" x="909.569" y="-623.371" font-family="Times,serif" font-size="14.00">mirage&#45;xen</text>
<text text-anchor="middle" x="909.569" y="-608.371" font-family="Times,serif" font-size="14.00">2.6.0</text>
</g>
<!-- mirage&#45;xen&#45;&gt;xenstore.client -->
<g id="edge70" class="edge"><title>mirage&#45;xen&#45;&gt;xenstore.client</title>
<path fill="none" stroke="black" d="M909.569,-592.246C909.569,-584.279 909.569,-575.388 909.569,-566.9"/>
<polygon fill="black" stroke="black" points="913.069,-566.834 909.569,-556.835 906.069,-566.835 913.069,-566.834"/>
</g>
<!-- mirage&#45;xen&#45;&gt;xen&#45;gnt -->
<g id="edge69" class="edge"><title>mirage&#45;xen&#45;&gt;xen&#45;gnt</title>
<path fill="none" stroke="black" d="M854.043,-614.213C779.391,-607.293 643.146,-590.91 531.569,-556.701 526.702,-555.208 521.712,-553.379 516.812,-551.388"/>
<polygon fill="black" stroke="black" points="518.126,-548.143 507.557,-547.408 515.361,-554.574 518.126,-548.143"/>
</g>
<!-- mirage&#45;xen&#45;&gt;xen&#45;evtchn -->
<g id="edge68" class="edge"><title>mirage&#45;xen&#45;&gt;xen&#45;evtchn</title>
<path fill="none" stroke="black" d="M853.176,-616.52C687.878,-610.156 212.274,-589.197 150.569,-556.701 116.433,-538.723 90.167,-502.454 74.1871,-475.308"/>
<polygon fill="black" stroke="black" points="77.156,-473.448 69.1657,-466.491 71.0734,-476.913 77.156,-473.448"/>
</g>
<!-- mirage&#45;xen&#45;&gt;shared&#45;memory&#45;ring.xenstore -->
<g id="edge73" class="edge"><title>mirage&#45;xen&#45;&gt;shared&#45;memory&#45;ring.xenstore</title>
<path fill="none" stroke="black" d="M954.57,-603.086C992.134,-590.161 1046.44,-571.476 1090.42,-556.344"/>
<polygon fill="black" stroke="black" points="1091.6,-559.638 1099.92,-553.075 1089.33,-553.019 1091.6,-559.638"/>
</g>
<!-- mirage&#45;xen&#45;&gt;shared&#45;memory&#45;ring.lwt -->
<g id="edge72" class="edge"><title>mirage&#45;xen&#45;&gt;shared&#45;memory&#45;ring.lwt</title>
<path fill="none" stroke="black" d="M963.888,-611.856C1045.04,-601.56 1202.61,-580.542 1335.57,-556.701 1346.17,-554.799 1357.26,-552.65 1368.25,-550.423"/>
<polygon fill="black" stroke="black" points="1369.19,-553.802 1378.29,-548.361 1367.79,-546.945 1369.19,-553.802"/>
</g>
<!-- mirage&#45;xen&#45;&gt;shared&#45;memory&#45;ring.console -->
<g id="edge74" class="edge"><title>mirage&#45;xen&#45;&gt;shared&#45;memory&#45;ring.console</title>
<path fill="none" stroke="black" d="M867.937,-601.341C838.067,-588.978 797.221,-572.073 763.012,-557.915"/>
<polygon fill="black" stroke="black" points="764.132,-554.591 753.553,-554.001 761.455,-561.059 764.132,-554.591"/>
</g>
<!-- mirage&#45;xen&#45;&gt;shared&#45;memory&#45;ring -->
<g id="edge71" class="edge"><title>mirage&#45;xen&#45;&gt;shared&#45;memory&#45;ring</title>
<path fill="none" stroke="black" d="M941.673,-597.314C956.925,-586.289 974.786,-571.953 988.569,-556.701 1000.79,-543.173 1024.63,-504.255 1041.74,-475.287"/>
<polygon fill="black" stroke="black" points="1044.77,-477.05 1046.82,-466.656 1038.73,-473.502 1044.77,-477.05"/>
</g>
<!-- mirage&#45;types -->
<g id="node20" class="node"><title>mirage&#45;types</title>
<ellipse fill="#d95b43" stroke="black" cx="364.569" cy="-440.09" rx="62.4516" ry="26.7407"/>
<text text-anchor="middle" x="364.569" y="-443.89" font-family="Times,serif" font-size="14.00">mirage&#45;types</text>
<text text-anchor="middle" x="364.569" y="-428.89" font-family="Times,serif" font-size="14.00">2.8.0</text>
</g>
<!-- mirage&#45;xen&#45;&gt;mirage&#45;types -->
<g id="edge75" class="edge"><title>mirage&#45;xen&#45;&gt;mirage&#45;types</title>
<path fill="none" stroke="black" d="M853.283,-615.462C726.218,-607.936 425.521,-587.093 391.569,-556.701 369.702,-537.127 363.807,-503.564 362.881,-477.627"/>
<polygon fill="black" stroke="black" points="366.378,-477.353 362.753,-467.398 359.379,-477.441 366.378,-477.353"/>
</g>
<!-- mirage&#45;xen&#45;&gt;mirage&#45;profile -->
<g id="edge78" class="edge"><title>mirage&#45;xen&#45;&gt;mirage&#45;profile</title>
<path fill="none" stroke="black" d="M966.35,-618.292C1064.62,-616.472 1259.99,-606.51 1302.57,-556.701 1318.09,-538.546 1311.72,-525.022 1302.57,-502.96 1297.6,-490.991 1289.07,-480.134 1279.9,-470.976"/>
<polygon fill="black" stroke="black" points="1282.16,-468.291 1272.47,-464.006 1277.37,-473.398 1282.16,-468.291"/>
</g>
<!-- mirage&#45;clock&#45;xen -->
<g id="node26" class="node"><title>mirage&#45;clock&#45;xen</title>
<ellipse fill="#ecd078" stroke="black" cx="1794.57" cy="-529.831" rx="79.8063" ry="26.7407"/>
<text text-anchor="middle" x="1794.57" y="-533.631" font-family="Times,serif" font-size="14.00">mirage&#45;clock&#45;xen</text>
<text text-anchor="middle" x="1794.57" y="-518.631" font-family="Times,serif" font-size="14.00">1.0.0</text>
</g>
<!-- mirage&#45;xen&#45;&gt;mirage&#45;clock&#45;xen -->
<g id="edge76" class="edge"><title>mirage&#45;xen&#45;&gt;mirage&#45;clock&#45;xen</title>
<path fill="none" stroke="black" d="M966.541,-618.139C1097.91,-616.277 1431.81,-606.579 1705.57,-556.701 1713.14,-555.322 1720.98,-553.555 1728.74,-551.594"/>
<polygon fill="black" stroke="black" points="1729.71,-554.958 1738.49,-549.021 1727.93,-548.189 1729.71,-554.958"/>
</g>
<!-- mirage&#45;xen&#45;&gt;lwt -->
<g id="edge66" class="edge"><title>mirage&#45;xen&#45;&gt;lwt</title>
<path fill="none" stroke="black" d="M966.189,-617.092C1169.45,-611.513 1852.01,-590.329 1883.57,-556.701 1899.91,-539.285 1898.03,-521.972 1883.57,-502.96 1820.87,-420.527 1492.39,-371.254 1376.83,-356.259"/>
<polygon fill="black" stroke="black" points="1377.01,-352.753 1366.64,-354.954 1376.12,-359.696 1377.01,-352.753"/>
</g>
<!-- mirage&#45;xen&#45;&gt;io&#45;page -->
<g id="edge77" class="edge"><title>mirage&#45;xen&#45;&gt;io&#45;page</title>
<path fill="none" stroke="black" d="M853.011,-616.896C764.773,-612.958 600.687,-599.872 564.569,-556.701 544.754,-533.017 559.09,-498.213 574.784,-472.984"/>
<polygon fill="black" stroke="black" points="577.792,-474.778 580.338,-464.493 571.934,-470.946 577.792,-474.778"/>
</g>
<!-- mirage&#45;xen&#45;&gt;cstruct -->
<g id="edge67" class="edge"><title>mirage&#45;xen&#45;&gt;cstruct</title>
<path fill="none" stroke="black" d="M853.212,-615.503C731.46,-608.3 452.546,-588.474 424.569,-556.701 371.882,-496.866 514.691,-391.074 636.569,-323.48 683.09,-297.679 741.977,-280.774 782.399,-271.256"/>
<polygon fill="black" stroke="black" points="783.294,-274.642 792.259,-268.995 781.729,-267.819 783.294,-274.642"/>
</g>
<!-- mirage&#45;types.lwt -->
<g id="node19" class="node"><title>mirage&#45;types.lwt</title>
<ellipse fill="#ecd078" stroke="black" cx="207.569" cy="-440.09" rx="76.2353" ry="26.7407"/>
<text text-anchor="middle" x="207.569" y="-443.89" font-family="Times,serif" font-size="14.00">mirage&#45;types.lwt</text>
<text text-anchor="middle" x="207.569" y="-428.89" font-family="Times,serif" font-size="14.00">2.8.0</text>
</g>
<!-- mirage&#45;profile&#45;&gt;ocplib&#45;endian.bigstring -->
<g id="edge43" class="edge"><title>mirage&#45;profile&#45;&gt;ocplib&#45;endian.bigstring</title>
<path fill="none" stroke="black" d="M1207.55,-416.441C1171.78,-392.27 1112.68,-353.414 1059.57,-323.48 981.002,-279.197 961.72,-266.178 877.569,-233.74 834.513,-217.143 785.139,-202.721 744.376,-191.986"/>
<polygon fill="black" stroke="black" points="745.036,-188.542 734.477,-189.407 743.271,-195.315 745.036,-188.542"/>
</g>
<!-- mirage&#45;profile&#45;&gt;lwt -->
<g id="edge42" class="edge"><title>mirage&#45;profile&#45;&gt;lwt</title>
<path fill="none" stroke="black" d="M1266.8,-415.115C1279.7,-403.324 1295.27,-389.1 1308.42,-377.081"/>
<polygon fill="black" stroke="black" points="1310.82,-379.624 1315.84,-370.294 1306.1,-374.457 1310.82,-379.624"/>
</g>
<!-- mirage&#45;profile&#45;&gt;cstruct.ppx -->
<g id="edge45" class="edge"><title>mirage&#45;profile&#45;&gt;cstruct.ppx</title>
<path fill="none" stroke="black" d="M1190.64,-421.65C1181.67,-418.706 1172.37,-415.779 1163.57,-413.22 1098.72,-394.369 1023.39,-376.304 972.304,-364.613"/>
<polygon fill="black" stroke="black" points="972.947,-361.17 962.42,-362.362 971.393,-367.996 972.947,-361.17"/>
</g>
<!-- mirage&#45;profile&#45;&gt;cstruct -->
<g id="edge44" class="edge"><title>mirage&#45;profile&#45;&gt;cstruct</title>
<path fill="none" stroke="black" d="M1189.66,-422.263C1148.87,-408.367 1095.31,-389.066 1075.57,-377.22 1044.59,-358.629 1045.88,-341.511 1014.57,-323.48 970.79,-298.27 915.217,-281.433 876.458,-271.77"/>
<polygon fill="black" stroke="black" points="877.035,-268.308 866.491,-269.351 875.383,-275.111 877.035,-268.308"/>
</g>
<!-- mirage&#45;logs -->
<g id="node22" class="node"><title>mirage&#45;logs</title>
<ellipse fill="#ecd078" stroke="black" cx="1639.57" cy="-529.831" rx="57.0522" ry="26.7407"/>
<text text-anchor="middle" x="1639.57" y="-533.631" font-family="Times,serif" font-size="14.00">mirage&#45;logs</text>
<text text-anchor="middle" x="1639.57" y="-518.631" font-family="Times,serif" font-size="14.00">0.2</text>
</g>
<!-- mirage&#45;logs&#45;&gt;mirage&#45;types -->
<g id="edge10" class="edge"><title>mirage&#45;logs&#45;&gt;mirage&#45;types</title>
<path fill="none" stroke="black" d="M1599.12,-510.738C1590.51,-507.594 1581.36,-504.76 1572.57,-502.96 1349.71,-457.36 776.181,-486.739 549.569,-466.96 510.46,-463.547 466.972,-457.578 431.991,-452.232"/>
<polygon fill="black" stroke="black" points="432.31,-448.74 421.893,-450.671 431.241,-455.658 432.31,-448.74"/>
</g>
<!-- mirage&#45;logs&#45;&gt;mirage&#45;profile -->
<g id="edge12" class="edge"><title>mirage&#45;logs&#45;&gt;mirage&#45;profile</title>
<path fill="none" stroke="black" d="M1597.8,-511.343C1589.53,-508.269 1580.85,-505.308 1572.57,-502.96 1485.38,-478.233 1382.45,-460.811 1314.57,-450.887"/>
<polygon fill="black" stroke="black" points="1314.8,-447.383 1304.4,-449.418 1313.8,-454.312 1314.8,-447.383"/>
</g>
<!-- mirage&#45;logs&#45;&gt;lwt -->
<g id="edge11" class="edge"><title>mirage&#45;logs&#45;&gt;lwt</title>
<path fill="none" stroke="black" d="M1604.81,-508.471C1546.23,-474.159 1428.57,-405.24 1370.53,-371.244"/>
<polygon fill="black" stroke="black" points="1372.15,-368.133 1361.75,-366.099 1368.61,-374.173 1372.15,-368.133"/>
</g>
<!-- mirage&#45;logs&#45;&gt;logs -->
<g id="edge9" class="edge"><title>mirage&#45;logs&#45;&gt;logs</title>
<path fill="none" stroke="black" d="M1645.33,-502.722C1655.98,-454.482 1678.75,-351.357 1690.77,-296.929"/>
<polygon fill="black" stroke="black" points="1694.22,-297.56 1692.95,-287.041 1687.38,-296.051 1694.22,-297.56"/>
</g>
<!-- mirage&#45;console.xen -->
<g id="node23" class="node"><title>mirage&#45;console.xen</title>
<ellipse fill="#ecd078" stroke="black" cx="280.569" cy="-709.311" rx="88.2768" ry="26.7407"/>
<text text-anchor="middle" x="280.569" y="-713.111" font-family="Times,serif" font-size="14.00">mirage&#45;console.xen</text>
<text text-anchor="middle" x="280.569" y="-698.111" font-family="Times,serif" font-size="14.00">2.1.3</text>
</g>
<!-- mirage&#45;console.xen&#45;&gt;xen&#45;gnt -->
<g id="edge22" class="edge"><title>mirage&#45;console.xen&#45;&gt;xen&#45;gnt</title>
<path fill="none" stroke="black" d="M325.739,-686.196C344.964,-675.621 366.962,-661.892 384.569,-646.441 412.389,-622.025 437.873,-588.205 454.75,-563.452"/>
<polygon fill="black" stroke="black" points="457.686,-565.359 460.351,-555.105 451.873,-561.459 457.686,-565.359"/>
</g>
<!-- mirage&#45;console.xen&#45;&gt;xen&#45;evtchn -->
<g id="edge23" class="edge"><title>mirage&#45;console.xen&#45;&gt;xen&#45;evtchn</title>
<path fill="none" stroke="black" d="M201.075,-697.374C141.92,-687.425 68.3129,-670.586 49.5685,-646.441 11.6412,-597.584 28.3007,-520.709 43.0028,-476.18"/>
<polygon fill="black" stroke="black" points="46.335,-477.253 46.2805,-466.658 39.7162,-474.974 46.335,-477.253"/>
</g>
<!-- mirage&#45;console.xen&#45;&gt;mirage&#45;xen -->
<g id="edge20" class="edge"><title>mirage&#45;console.xen&#45;&gt;mirage&#45;xen</title>
<path fill="none" stroke="black" d="M359.913,-697.243C486.065,-679.646 729.912,-645.631 845.631,-629.489"/>
<polygon fill="black" stroke="black" points="846.332,-632.926 855.752,-628.078 845.364,-625.993 846.332,-632.926"/>
</g>
<!-- mirage&#45;console.xen&#45;&gt;mirage&#45;types -->
<g id="edge19" class="edge"><title>mirage&#45;console.xen&#45;&gt;mirage&#45;types</title>
<path fill="none" stroke="black" d="M193.47,-704.448C151.962,-697.68 105.759,-681.906 79.5685,-646.441 41.686,-595.144 38.4054,-551.664 79.5685,-502.96 110.556,-466.297 246.131,-479.125 292.569,-466.96 298.166,-465.494 303.943,-463.778 309.677,-461.939"/>
<polygon fill="black" stroke="black" points="310.865,-465.233 319.246,-458.751 308.653,-458.591 310.865,-465.233"/>
</g>
<!-- mirage&#45;console.proto -->
<g id="node24" class="node"><title>mirage&#45;console.proto</title>
<ellipse fill="#d95b43" stroke="black" cx="280.569" cy="-619.571" rx="94.5053" ry="26.7407"/>
<text text-anchor="middle" x="280.569" y="-623.371" font-family="Times,serif" font-size="14.00">mirage&#45;console.proto</text>
<text text-anchor="middle" x="280.569" y="-608.371" font-family="Times,serif" font-size="14.00">2.1.3</text>
</g>
<!-- mirage&#45;console.xen&#45;&gt;mirage&#45;console.proto -->
<g id="edge24" class="edge"><title>mirage&#45;console.xen&#45;&gt;mirage&#45;console.proto</title>
<path fill="none" stroke="black" d="M280.569,-681.986C280.569,-674.019 280.569,-665.128 280.569,-656.64"/>
<polygon fill="black" stroke="black" points="284.069,-656.575 280.569,-646.575 277.069,-656.575 284.069,-656.575"/>
</g>
<!-- mirage&#45;console.xen&#45;&gt;lwt -->
<g id="edge18" class="edge"><title>mirage&#45;console.xen&#45;&gt;lwt</title>
<path fill="none" stroke="black" d="M368.708,-706.861C692.055,-700.643 1799.71,-671.085 1903.57,-556.701 1983.56,-468.601 1820.37,-430.272 1777.57,-413.22 1638.21,-357.697 1456.75,-350.798 1377.07,-350.711"/>
<polygon fill="black" stroke="black" points="1376.96,-347.211 1366.97,-350.737 1376.98,-354.211 1376.96,-347.211"/>
</g>
<!-- mirage&#45;console.xen&#45;&gt;io&#45;page -->
<g id="edge21" class="edge"><title>mirage&#45;console.xen&#45;&gt;io&#45;page</title>
<path fill="none" stroke="black" d="M228.785,-687.344C209.98,-677.438 190.06,-663.894 176.569,-646.441 136.933,-595.167 107.71,-551.573 150.569,-502.96 192.785,-455.076 372.37,-475.965 435.569,-466.96 474.219,-461.454 517.901,-454.48 550.31,-449.161"/>
<polygon fill="black" stroke="black" points="551.118,-452.576 560.416,-447.497 549.98,-445.669 551.118,-452.576"/>
</g>
<!-- mirage&#45;console.proto&#45;&gt;xenstore -->
<g id="edge16" class="edge"><title>mirage&#45;console.proto&#45;&gt;xenstore</title>
<path fill="none" stroke="black" d="M303.212,-593.291C329.44,-565.87 375.387,-523.297 424.569,-502.96 562.135,-446.078 612.577,-500.688 757.569,-466.96 765.654,-465.08 774.079,-462.548 782.183,-459.803"/>
<polygon fill="black" stroke="black" points="783.605,-463.012 791.865,-456.377 781.27,-456.413 783.605,-463.012"/>
</g>
<!-- mirage&#45;console -->
<g id="node25" class="node"><title>mirage&#45;console</title>
<ellipse fill="#d95b43" stroke="black" cx="230.569" cy="-529.831" rx="71.3357" ry="26.7407"/>
<text text-anchor="middle" x="230.569" y="-533.631" font-family="Times,serif" font-size="14.00">mirage&#45;console</text>
<text text-anchor="middle" x="230.569" y="-518.631" font-family="Times,serif" font-size="14.00">2.1.3</text>
</g>
<!-- mirage&#45;console.proto&#45;&gt;mirage&#45;console -->
<g id="edge17" class="edge"><title>mirage&#45;console.proto&#45;&gt;mirage&#45;console</title>
<path fill="none" stroke="black" d="M265.837,-592.72C260.911,-584.076 255.342,-574.303 250.108,-565.118"/>
<polygon fill="black" stroke="black" points="253.014,-563.149 245.022,-556.194 246.933,-566.615 253.014,-563.149"/>
</g>
<!-- mirage&#45;console&#45;&gt;mirage&#45;types.lwt -->
<g id="edge15" class="edge"><title>mirage&#45;console&#45;&gt;mirage&#45;types.lwt</title>
<path fill="none" stroke="black" d="M223.792,-502.98C221.659,-494.842 219.263,-485.702 216.981,-476.995"/>
<polygon fill="black" stroke="black" points="220.297,-475.845 214.376,-467.059 213.526,-477.62 220.297,-475.845"/>
</g>
<!-- mirage&#45;console&#45;&gt;mirage&#45;types -->
<g id="edge14" class="edge"><title>mirage&#45;console&#45;&gt;mirage&#45;types</title>
<path fill="none" stroke="black" d="M265.077,-506.235C282.616,-494.751 304.075,-480.7 322.567,-468.592"/>
<polygon fill="black" stroke="black" points="324.654,-471.409 331.103,-463.003 320.82,-465.553 324.654,-471.409"/>
</g>
<!-- mirage&#45;console&#45;&gt;lwt -->
<g id="edge13" class="edge"><title>mirage&#45;console&#45;&gt;lwt</title>
<path fill="none" stroke="black" d="M288.502,-514.038C305.519,-510.043 324.221,-505.993 341.569,-502.96 476.461,-479.382 515.238,-502.182 647.569,-466.96 706.401,-451.302 714.676,-428.654 773.569,-413.22 872.742,-387.231 1183.89,-362.531 1295.89,-354.263"/>
<polygon fill="black" stroke="black" points="1296.38,-357.737 1306.1,-353.515 1295.87,-350.756 1296.38,-357.737"/>
</g>
<!-- mirage&#45;bootvar -->
<g id="node27" class="node"><title>mirage&#45;bootvar</title>
<ellipse fill="#ecd078" stroke="black" cx="2015.57" cy="-709.311" rx="72.25" ry="26.7407"/>
<text text-anchor="middle" x="2015.57" y="-713.111" font-family="Times,serif" font-size="14.00">mirage&#45;bootvar</text>
<text text-anchor="middle" x="2015.57" y="-698.111" font-family="Times,serif" font-size="14.00">0.3.1</text>
</g>
<!-- mirage&#45;bootvar&#45;&gt;re.str -->
<g id="edge83" class="edge"><title>mirage&#45;bootvar&#45;&gt;re.str</title>
<path fill="none" stroke="black" d="M2026.47,-682.46C2030.14,-673.756 2034.29,-663.907 2038.19,-654.667"/>
<polygon fill="black" stroke="black" points="2041.47,-655.907 2042.13,-645.332 2035.02,-653.187 2041.47,-655.907"/>
</g>
<!-- mirage&#45;bootvar&#45;&gt;re -->
<g id="edge82" class="edge"><title>mirage&#45;bootvar&#45;&gt;re</title>
<path fill="none" stroke="black" d="M2052.19,-685.901C2066.94,-675.407 2083.14,-661.821 2094.57,-646.441 2133.72,-593.758 2131.16,-568.58 2129.57,-502.96 2129.36,-494.553 2129.01,-485.509 2128.6,-477.001"/>
<polygon fill="black" stroke="black" points="2132.1,-476.781 2128.1,-466.968 2125.11,-477.131 2132.1,-476.781"/>
</g>
<!-- mirage&#45;bootvar&#45;&gt;mirage&#45;xen -->
<g id="edge81" class="edge"><title>mirage&#45;bootvar&#45;&gt;mirage&#45;xen</title>
<path fill="none" stroke="black" d="M1945.54,-702.756C1744.95,-686.842 1170.12,-641.24 975.159,-625.774"/>
<polygon fill="black" stroke="black" points="975.309,-622.275 965.063,-624.973 974.755,-629.253 975.309,-622.275"/>
</g>
<!-- mirage&#45;bootvar&#45;&gt;lwt -->
<g id="edge80" class="edge"><title>mirage&#45;bootvar&#45;&gt;lwt</title>
<path fill="none" stroke="black" d="M2010.74,-682.254C1997.96,-616.423 1961.16,-446.301 1916.57,-413.22 1873.35,-381.16 1502.06,-359.686 1377.28,-353.321"/>
<polygon fill="black" stroke="black" points="1377.17,-349.811 1367.01,-352.803 1376.82,-356.803 1377.17,-349.811"/>
</g>
<!-- lwt&#45;&gt;bytes -->
<g id="edge79" class="edge"><title>lwt&#45;&gt;bytes</title>
<path fill="none" stroke="black" d="M1321.43,-326.875C1288.97,-278.682 1212.9,-165.726 1179.17,-115.65"/>
<polygon fill="black" stroke="black" points="1181.87,-113.4 1173.39,-107.061 1176.07,-117.311 1181.87,-113.4"/>
</g>
<!-- logs&#45;&gt;result -->
<g id="edge8" class="edge"><title>logs&#45;&gt;result</title>
<path fill="none" stroke="black" d="M1698.57,-233.285C1698.57,-225.319 1698.57,-216.428 1698.57,-207.939"/>
<polygon fill="black" stroke="black" points="1702.07,-207.874 1698.57,-197.874 1695.07,-207.874 1702.07,-207.874"/>
</g>
<!-- ipaddr&#45;&gt;sexplib -->
<g id="edge3" class="edge"><title>ipaddr&#45;&gt;sexplib</title>
<path fill="none" stroke="black" d="M1756.76,-241.8C1750.68,-238.55 1744.09,-235.603 1737.57,-233.74 1563.9,-184.118 1104.06,-225.404 925.569,-197.74 911.156,-195.506 895.8,-191.929 881.693,-188.138"/>
<polygon fill="black" stroke="black" points="882.245,-184.659 871.673,-185.357 880.372,-191.404 882.245,-184.659"/>
</g>
<!-- ipaddr&#45;&gt;bytes -->
<g id="edge2" class="edge"><title>ipaddr&#45;&gt;bytes</title>
<path fill="none" stroke="black" d="M1781.88,-233.338C1778.62,-206.312 1769.13,-165.254 1741.57,-144 1698.94,-111.136 1325.45,-96.2443 1201.99,-92.1895"/>
<polygon fill="black" stroke="black" points="1201.96,-88.6866 1191.85,-91.8624 1201.73,-95.683 1201.96,-88.6866"/>
</g>
<!-- io&#45;page&#45;&gt;cstruct -->
<g id="edge46" class="edge"><title>io&#45;page&#45;&gt;cstruct</title>
<path fill="none" stroke="black" d="M612.85,-414.511C628.779,-388.898 656.678,-349.009 689.569,-323.48 718.047,-301.376 755.659,-285.324 784.726,-275.118"/>
<polygon fill="black" stroke="black" points="785.893,-278.418 794.23,-271.88 783.636,-271.792 785.893,-278.418"/>
</g>
<!-- io&#45;page&#45;&gt;bytes -->
<g id="edge47" class="edge"><title>io&#45;page&#45;&gt;bytes</title>
<path fill="none" stroke="black" d="M627.965,-421.87C633.136,-418.933 638.488,-415.951 643.569,-413.22 737.715,-362.622 989.803,-264.126 1073.57,-197.74 1103.41,-174.087 1130.29,-139.025 1146.51,-115.614"/>
<polygon fill="black" stroke="black" points="1149.46,-117.498 1152.19,-107.26 1143.67,-113.562 1149.46,-117.498"/>
</g>
<!-- fmt -->
<g id="node33" class="node"><title>fmt</title>
<ellipse fill="#d95b43" stroke="black" cx="2042.57" cy="-170.87" rx="30.3115" ry="26.7407"/>
<text text-anchor="middle" x="2042.57" y="-174.67" font-family="Times,serif" font-size="14.00">fmt</text>
<text text-anchor="middle" x="2042.57" y="-159.67" font-family="Times,serif" font-size="14.00">0.7.1</text>
</g>
<!-- functoria.runtime&#45;&gt;fmt -->
<g id="edge85" class="edge"><title>functoria.runtime&#45;&gt;fmt</title>
<path fill="none" stroke="black" d="M2024.23,-233.76C2026.73,-225.313 2029.55,-215.786 2032.22,-206.786"/>
<polygon fill="black" stroke="black" points="2035.66,-207.514 2035.14,-196.932 2028.94,-205.526 2035.66,-207.514"/>
</g>
<!-- cmdliner -->
<g id="node36" class="node"><title>cmdliner</title>
<ellipse fill="#d95b43" stroke="black" cx="1946.57" cy="-170.87" rx="47.2526" ry="26.7407"/>
<text text-anchor="middle" x="1946.57" y="-174.67" font-family="Times,serif" font-size="14.00">cmdliner</text>
<text text-anchor="middle" x="1946.57" y="-159.67" font-family="Times,serif" font-size="14.00">0.9.8</text>
</g>
<!-- functoria.runtime&#45;&gt;cmdliner -->
<g id="edge84" class="edge"><title>functoria.runtime&#45;&gt;cmdliner</title>
<path fill="none" stroke="black" d="M1996.32,-234.232C1988.68,-224.648 1979.88,-213.622 1971.83,-203.532"/>
<polygon fill="black" stroke="black" points="1974.54,-201.32 1965.57,-195.686 1969.07,-205.686 1974.54,-201.32"/>
</g>
<!-- cstruct.ppx&#45;&gt;cstruct -->
<g id="edge41" class="edge"><title>cstruct.ppx&#45;&gt;cstruct</title>
<path fill="none" stroke="black" d="M889.888,-325.375C879.827,-314.739 867.893,-302.123 857.306,-290.932"/>
<polygon fill="black" stroke="black" points="859.647,-288.313 850.232,-283.454 854.562,-293.124 859.647,-288.313"/>
</g>
<!-- cstruct&#45;&gt;sexplib -->
<g id="edge65" class="edge"><title>cstruct&#45;&gt;sexplib</title>
<path fill="none" stroke="black" d="M829.569,-233.285C829.569,-225.319 829.569,-216.428 829.569,-207.939"/>
<polygon fill="black" stroke="black" points="833.069,-207.874 829.569,-197.874 826.069,-207.874 833.069,-207.874"/>
</g>
<!-- cstruct&#45;&gt;ocplib&#45;endian.bigstring -->
<g id="edge64" class="edge"><title>cstruct&#45;&gt;ocplib&#45;endian.bigstring</title>
<path fill="none" stroke="black" d="M798.964,-243.721C775.361,-231.467 742.128,-214.214 714.145,-199.685"/>
<polygon fill="black" stroke="black" points="715.75,-196.575 705.262,-195.074 712.525,-202.788 715.75,-196.575"/>
</g>
<!-- cstruct&#45;&gt;ocplib&#45;endian -->
<g id="edge63" class="edge"><title>cstruct&#45;&gt;ocplib&#45;endian</title>
<path fill="none" stroke="black" d="M860.354,-243.721C885.565,-230.709 921.696,-212.061 950.832,-197.024"/>
<polygon fill="black" stroke="black" points="952.742,-199.977 960.023,-192.28 949.531,-193.757 952.742,-199.977"/>
</g>
<!-- cstruct&#45;&gt;bytes -->
<g id="edge61" class="edge"><title>cstruct&#45;&gt;bytes</title>
<path fill="none" stroke="black" d="M851.273,-237.942C862.509,-226.362 876.214,-211.658 887.569,-197.74 906.06,-175.074 901.224,-160.218 925.569,-144 986.336,-103.518 1073.35,-93.5525 1123.28,-91.3414"/>
<polygon fill="black" stroke="black" points="1123.49,-94.8365 1133.36,-90.9791 1123.24,-87.841 1123.49,-94.8365"/>
</g>
<!-- cstruct&#45;&gt;bigarray -->
<g id="edge62" class="edge"><title>cstruct&#45;&gt;bigarray</title>
<path fill="none" stroke="black" d="M791.209,-255.725C723.171,-248.107 585.167,-229.16 549.569,-197.74 526.701,-177.557 517.594,-142.665 513.968,-118.287"/>
<polygon fill="black" stroke="black" points="517.423,-117.715 512.691,-108.236 510.479,-118.598 517.423,-117.715"/>
</g>
<!-- bigarray&#45;&gt;unix -->
<g id="edge60" class="edge"><title>bigarray&#45;&gt;unix</title>
<path fill="none" stroke="black" d="M491.421,-74.1548C477.083,-63.5899 457.701,-49.3083 442.252,-37.925"/>
<polygon fill="black" stroke="black" points="444.258,-35.0554 434.131,-31.9411 440.106,-40.6908 444.258,-35.0554"/>
</g>
<!-- astring&#45;&gt;bytes -->
<g id="edge1" class="edge"><title>astring&#45;&gt;bytes</title>
<path fill="none" stroke="black" d="M1863.35,-235.189C1845.85,-207.694 1813.38,-164.225 1772.57,-144 1671.79,-94.061 1320.81,-90.4682 1202.13,-90.7236"/>
<polygon fill="black" stroke="black" points="1202.03,-87.2238 1192.04,-90.756 1202.05,-94.2237 1202.03,-87.2238"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 49 KiB

View file

@ -0,0 +1,407 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.38.0 (20140413.2041)
-->
<!-- Title: mirage&#45;console Pages: 1 -->
<svg width="1601pt" height="582pt"
viewBox="0.00 0.00 1600.84 582.44" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 578.441)">
<title>mirage&#45;console</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-578.441 1596.84,-578.441 1596.84,4 -4,4"/>
<!-- unix -->
<g id="node1" class="node"><title>unix</title>
<ellipse fill="#c02942" stroke="black" cx="598.941" cy="-18" rx="27" ry="18"/>
<text text-anchor="middle" x="598.941" y="-14.3" font-family="Times,serif" font-size="14.00">unix</text>
</g>
<!-- sexplib -->
<g id="node2" class="node"><title>sexplib</title>
<ellipse fill="#d95b43" stroke="black" cx="461.941" cy="-188.61" rx="71.3357" ry="26.7407"/>
<text text-anchor="middle" x="461.941" y="-192.41" font-family="Times,serif" font-size="14.00">sexplib</text>
<text text-anchor="middle" x="461.941" y="-177.41" font-family="Times,serif" font-size="14.00">113.33.00+4.03</text>
</g>
<!-- bigarray -->
<g id="node26" class="node"><title>bigarray</title>
<ellipse fill="#c02942" stroke="black" cx="598.941" cy="-98.8701" rx="40.0939" ry="18"/>
<text text-anchor="middle" x="598.941" y="-95.1701" font-family="Times,serif" font-size="14.00">bigarray</text>
</g>
<!-- sexplib&#45;&gt;bigarray -->
<g id="edge19" class="edge"><title>sexplib&#45;&gt;bigarray</title>
<path fill="none" stroke="black" d="M497.222,-165.015C519.143,-150.976 547.054,-133.101 568.091,-119.628"/>
<polygon fill="black" stroke="black" points="570.115,-122.488 576.649,-114.147 566.34,-116.593 570.115,-122.488"/>
</g>
<!-- result -->
<g id="node3" class="node"><title>result</title>
<ellipse fill="#d95b43" stroke="black" cx="33.9411" cy="-188.61" rx="33.8824" ry="26.7407"/>
<text text-anchor="middle" x="33.9411" y="-192.41" font-family="Times,serif" font-size="14.00">result</text>
<text text-anchor="middle" x="33.9411" y="-177.41" font-family="Times,serif" font-size="14.00">1.0</text>
</g>
<!-- ocplib&#45;endian.bigstring -->
<g id="node4" class="node"><title>ocplib&#45;endian.bigstring</title>
<ellipse fill="#d95b43" stroke="black" cx="728.941" cy="-188.61" rx="101.647" ry="26.7407"/>
<text text-anchor="middle" x="728.941" y="-192.41" font-family="Times,serif" font-size="14.00">ocplib&#45;endian.bigstring</text>
<text text-anchor="middle" x="728.941" y="-177.41" font-family="Times,serif" font-size="14.00">0.8</text>
</g>
<!-- bytes -->
<g id="node25" class="node"><title>bytes</title>
<ellipse fill="#c02942" stroke="black" cx="913.941" cy="-98.8701" rx="29.4969" ry="18"/>
<text text-anchor="middle" x="913.941" y="-95.1701" font-family="Times,serif" font-size="14.00">bytes</text>
</g>
<!-- ocplib&#45;endian.bigstring&#45;&gt;bytes -->
<g id="edge21" class="edge"><title>ocplib&#45;endian.bigstring&#45;&gt;bytes</title>
<path fill="none" stroke="black" d="M777.065,-164.787C810.153,-149.094 853.169,-128.692 882.071,-114.985"/>
<polygon fill="black" stroke="black" points="883.762,-118.057 891.297,-110.61 880.762,-111.732 883.762,-118.057"/>
</g>
<!-- ocplib&#45;endian.bigstring&#45;&gt;bigarray -->
<g id="edge20" class="edge"><title>ocplib&#45;endian.bigstring&#45;&gt;bigarray</title>
<path fill="none" stroke="black" d="M693.074,-163.403C672.87,-149.767 647.932,-132.935 628.801,-120.023"/>
<polygon fill="black" stroke="black" points="630.704,-117.085 620.457,-114.392 626.788,-122.887 630.704,-117.085"/>
</g>
<!-- ocplib&#45;endian -->
<g id="node5" class="node"><title>ocplib&#45;endian</title>
<ellipse fill="#d95b43" stroke="black" cx="913.941" cy="-188.61" rx="65.1077" ry="26.7407"/>
<text text-anchor="middle" x="913.941" y="-192.41" font-family="Times,serif" font-size="14.00">ocplib&#45;endian</text>
<text text-anchor="middle" x="913.941" y="-177.41" font-family="Times,serif" font-size="14.00">0.8</text>
</g>
<!-- ocplib&#45;endian&#45;&gt;bytes -->
<g id="edge22" class="edge"><title>ocplib&#45;endian&#45;&gt;bytes</title>
<path fill="none" stroke="black" d="M913.941,-161.285C913.941,-150.534 913.941,-138.099 913.941,-127.242"/>
<polygon fill="black" stroke="black" points="917.441,-127.031 913.941,-117.031 910.441,-127.031 917.441,-127.031"/>
</g>
<!-- mirage.runtime -->
<g id="node6" class="node"><title>mirage.runtime</title>
<ellipse fill="#ecd078" stroke="black" cx="389.941" cy="-368.09" rx="72.6644" ry="26.7407"/>
<text text-anchor="middle" x="389.941" y="-371.89" font-family="Times,serif" font-size="14.00">mirage.runtime</text>
<text text-anchor="middle" x="389.941" y="-356.89" font-family="Times,serif" font-size="14.00">2.9.0</text>
</g>
<!-- logs -->
<g id="node16" class="node"><title>logs</title>
<ellipse fill="#d95b43" stroke="black" cx="40.9411" cy="-278.35" rx="30.3115" ry="26.7407"/>
<text text-anchor="middle" x="40.9411" y="-282.15" font-family="Times,serif" font-size="14.00">logs</text>
<text text-anchor="middle" x="40.9411" y="-267.15" font-family="Times,serif" font-size="14.00">0.5.0</text>
</g>
<!-- mirage.runtime&#45;&gt;logs -->
<g id="edge8" class="edge"><title>mirage.runtime&#45;&gt;logs</title>
<path fill="none" stroke="black" d="M320.875,-359.455C258.087,-351.025 163.657,-334.585 85.9411,-305.22 81.958,-303.715 77.9123,-301.885 73.9627,-299.9"/>
<polygon fill="black" stroke="black" points="75.4599,-296.731 64.9962,-295.069 72.1398,-302.893 75.4599,-296.731"/>
</g>
<!-- ipaddr -->
<g id="node17" class="node"><title>ipaddr</title>
<ellipse fill="#d95b43" stroke="black" cx="485.941" cy="-278.35" rx="36.5405" ry="26.7407"/>
<text text-anchor="middle" x="485.941" y="-282.15" font-family="Times,serif" font-size="14.00">ipaddr</text>
<text text-anchor="middle" x="485.941" y="-267.15" font-family="Times,serif" font-size="14.00">2.7.0</text>
</g>
<!-- mirage.runtime&#45;&gt;ipaddr -->
<g id="edge6" class="edge"><title>mirage.runtime&#45;&gt;ipaddr</title>
<path fill="none" stroke="black" d="M416.428,-342.883C428.653,-331.709 443.226,-318.39 455.864,-306.84"/>
<polygon fill="black" stroke="black" points="458.424,-309.242 463.444,-299.912 453.701,-304.075 458.424,-309.242"/>
</g>
<!-- functoria.runtime -->
<g id="node20" class="node"><title>functoria.runtime</title>
<ellipse fill="#ecd078" stroke="black" cx="176.941" cy="-278.35" rx="82.0488" ry="26.7407"/>
<text text-anchor="middle" x="176.941" y="-282.15" font-family="Times,serif" font-size="14.00">functoria.runtime</text>
<text text-anchor="middle" x="176.941" y="-267.15" font-family="Times,serif" font-size="14.00">1.1.0</text>
</g>
<!-- mirage.runtime&#45;&gt;functoria.runtime -->
<g id="edge5" class="edge"><title>mirage.runtime&#45;&gt;functoria.runtime</title>
<path fill="none" stroke="black" d="M342.67,-347.618C311.189,-334.651 269.586,-317.513 235.939,-303.653"/>
<polygon fill="black" stroke="black" points="237.254,-300.409 226.674,-299.837 234.587,-306.882 237.254,-300.409"/>
</g>
<!-- astring -->
<g id="node27" class="node"><title>astring</title>
<ellipse fill="#d95b43" stroke="black" cx="391.941" cy="-278.35" rx="38.7821" ry="26.7407"/>
<text text-anchor="middle" x="391.941" y="-282.15" font-family="Times,serif" font-size="14.00">astring</text>
<text text-anchor="middle" x="391.941" y="-267.15" font-family="Times,serif" font-size="14.00">0.8.1</text>
</g>
<!-- mirage.runtime&#45;&gt;astring -->
<g id="edge7" class="edge"><title>mirage.runtime&#45;&gt;astring</title>
<path fill="none" stroke="black" d="M390.541,-340.765C390.723,-332.799 390.925,-323.908 391.119,-315.419"/>
<polygon fill="black" stroke="black" points="394.619,-315.431 391.348,-305.354 387.621,-315.272 394.619,-315.431"/>
</g>
<!-- mirage&#45;unix -->
<g id="node7" class="node"><title>mirage&#45;unix</title>
<ellipse fill="#ecd078" stroke="black" cx="991.941" cy="-457.831" rx="59.2941" ry="26.7407"/>
<text text-anchor="middle" x="991.941" y="-461.631" font-family="Times,serif" font-size="14.00">mirage&#45;unix</text>
<text text-anchor="middle" x="991.941" y="-446.631" font-family="Times,serif" font-size="14.00">2.6.0</text>
</g>
<!-- mirage&#45;clock&#45;unix -->
<g id="node12" class="node"><title>mirage&#45;clock&#45;unix</title>
<ellipse fill="#d95b43" stroke="black" cx="371.941" cy="-98.8701" rx="83.3772" ry="26.7407"/>
<text text-anchor="middle" x="371.941" y="-102.67" font-family="Times,serif" font-size="14.00">mirage&#45;clock&#45;unix</text>
<text text-anchor="middle" x="371.941" y="-87.6701" font-family="Times,serif" font-size="14.00">1.0.0</text>
</g>
<!-- mirage&#45;unix&#45;&gt;mirage&#45;clock&#45;unix -->
<g id="edge18" class="edge"><title>mirage&#45;unix&#45;&gt;mirage&#45;clock&#45;unix</title>
<path fill="none" stroke="black" d="M932.658,-455.938C774.149,-452.94 349.712,-440.68 307.941,-394.96 240.707,-321.37 308.66,-194.298 348.069,-133.794"/>
<polygon fill="black" stroke="black" points="351.049,-135.633 353.657,-125.364 345.214,-131.765 351.049,-135.633"/>
</g>
<!-- lwt.unix -->
<g id="node13" class="node"><title>lwt.unix</title>
<ellipse fill="#d95b43" stroke="black" cx="1178.94" cy="-368.09" rx="43.6818" ry="26.7407"/>
<text text-anchor="middle" x="1178.94" y="-371.89" font-family="Times,serif" font-size="14.00">lwt.unix</text>
<text text-anchor="middle" x="1178.94" y="-356.89" font-family="Times,serif" font-size="14.00">2.5.2</text>
</g>
<!-- mirage&#45;unix&#45;&gt;lwt.unix -->
<g id="edge15" class="edge"><title>mirage&#45;unix&#45;&gt;lwt.unix</title>
<path fill="none" stroke="black" d="M1032.06,-438.008C1062.5,-423.725 1104.29,-404.115 1135.52,-389.464"/>
<polygon fill="black" stroke="black" points="1137.28,-392.504 1144.85,-385.088 1134.31,-386.167 1137.28,-392.504"/>
</g>
<!-- lwt -->
<g id="node15" class="node"><title>lwt</title>
<ellipse fill="#d95b43" stroke="black" cx="1180.94" cy="-188.61" rx="30.3115" ry="26.7407"/>
<text text-anchor="middle" x="1180.94" y="-192.41" font-family="Times,serif" font-size="14.00">lwt</text>
<text text-anchor="middle" x="1180.94" y="-177.41" font-family="Times,serif" font-size="14.00">2.5.2</text>
</g>
<!-- mirage&#45;unix&#45;&gt;lwt -->
<g id="edge14" class="edge"><title>mirage&#45;unix&#45;&gt;lwt</title>
<path fill="none" stroke="black" d="M1013.57,-432.65C1022.75,-421.647 1033.1,-408.155 1040.94,-394.96 1076.32,-335.382 1059.77,-306.467 1101.94,-251.48 1114.46,-235.151 1132.25,-220.718 1147.78,-209.908"/>
<polygon fill="black" stroke="black" points="1149.78,-212.776 1156.12,-204.287 1145.87,-206.971 1149.78,-212.776"/>
</g>
<!-- io&#45;page.unix -->
<g id="node18" class="node"><title>io&#45;page.unix</title>
<ellipse fill="#d95b43" stroke="black" cx="689.941" cy="-368.09" rx="59.2941" ry="26.7407"/>
<text text-anchor="middle" x="689.941" y="-371.89" font-family="Times,serif" font-size="14.00">io&#45;page.unix</text>
<text text-anchor="middle" x="689.941" y="-356.89" font-family="Times,serif" font-size="14.00">1.6.0</text>
</g>
<!-- mirage&#45;unix&#45;&gt;io&#45;page.unix -->
<g id="edge16" class="edge"><title>mirage&#45;unix&#45;&gt;io&#45;page.unix</title>
<path fill="none" stroke="black" d="M942.747,-442.538C889.77,-427.147 805.496,-402.663 748.981,-386.243"/>
<polygon fill="black" stroke="black" points="749.693,-382.806 739.114,-383.377 747.74,-389.528 749.693,-382.806"/>
</g>
<!-- io&#45;page -->
<g id="node19" class="node"><title>io&#45;page</title>
<ellipse fill="#d95b43" stroke="black" cx="991.941" cy="-368.09" rx="39.6962" ry="26.7407"/>
<text text-anchor="middle" x="991.941" y="-371.89" font-family="Times,serif" font-size="14.00">io&#45;page</text>
<text text-anchor="middle" x="991.941" y="-356.89" font-family="Times,serif" font-size="14.00">1.6.0</text>
</g>
<!-- mirage&#45;unix&#45;&gt;io&#45;page -->
<g id="edge17" class="edge"><title>mirage&#45;unix&#45;&gt;io&#45;page</title>
<path fill="none" stroke="black" d="M991.941,-430.506C991.941,-422.539 991.941,-413.648 991.941,-405.159"/>
<polygon fill="black" stroke="black" points="995.441,-405.094 991.941,-395.094 988.441,-405.094 995.441,-405.094"/>
</g>
<!-- cstruct -->
<g id="node23" class="node"><title>cstruct</title>
<ellipse fill="#d95b43" stroke="black" cx="915.941" cy="-278.35" rx="38.7821" ry="26.7407"/>
<text text-anchor="middle" x="915.941" y="-282.15" font-family="Times,serif" font-size="14.00">cstruct</text>
<text text-anchor="middle" x="915.941" y="-267.15" font-family="Times,serif" font-size="14.00">2.1.0</text>
</g>
<!-- mirage&#45;unix&#45;&gt;cstruct -->
<g id="edge13" class="edge"><title>mirage&#45;unix&#45;&gt;cstruct</title>
<path fill="none" stroke="black" d="M968.951,-432.952C959.642,-422.109 949.552,-408.658 942.941,-394.96 930.768,-369.736 923.91,-338.715 920.155,-315.159"/>
<polygon fill="black" stroke="black" points="923.613,-314.614 918.685,-305.235 916.688,-315.64 923.613,-314.614"/>
</g>
<!-- mirage&#45;types.lwt -->
<g id="node8" class="node"><title>mirage&#45;types.lwt</title>
<ellipse fill="#ecd078" stroke="black" cx="1497.94" cy="-368.09" rx="76.2353" ry="26.7407"/>
<text text-anchor="middle" x="1497.94" y="-371.89" font-family="Times,serif" font-size="14.00">mirage&#45;types.lwt</text>
<text text-anchor="middle" x="1497.94" y="-356.89" font-family="Times,serif" font-size="14.00">2.8.0</text>
</g>
<!-- mirage&#45;types -->
<g id="node9" class="node"><title>mirage&#45;types</title>
<ellipse fill="#d95b43" stroke="black" cx="1340.94" cy="-368.09" rx="62.4516" ry="26.7407"/>
<text text-anchor="middle" x="1340.94" y="-371.89" font-family="Times,serif" font-size="14.00">mirage&#45;types</text>
<text text-anchor="middle" x="1340.94" y="-356.89" font-family="Times,serif" font-size="14.00">2.8.0</text>
</g>
<!-- mirage&#45;console.unix -->
<g id="node10" class="node"><title>mirage&#45;console.unix</title>
<ellipse fill="#ecd078" stroke="black" cx="1231.94" cy="-547.571" rx="91.4341" ry="26.7407"/>
<text text-anchor="middle" x="1231.94" y="-551.371" font-family="Times,serif" font-size="14.00">mirage&#45;console.unix</text>
<text text-anchor="middle" x="1231.94" y="-536.371" font-family="Times,serif" font-size="14.00">2.1.3</text>
</g>
<!-- mirage&#45;console.unix&#45;&gt;mirage&#45;unix -->
<g id="edge45" class="edge"><title>mirage&#45;console.unix&#45;&gt;mirage&#45;unix</title>
<path fill="none" stroke="black" d="M1176.28,-526.221C1137.34,-511.987 1085.58,-493.063 1046.82,-478.893"/>
<polygon fill="black" stroke="black" points="1047.85,-475.545 1037.26,-475.398 1045.45,-482.119 1047.85,-475.545"/>
</g>
<!-- mirage&#45;console.unix&#45;&gt;mirage&#45;types -->
<g id="edge42" class="edge"><title>mirage&#45;console.unix&#45;&gt;mirage&#45;types</title>
<path fill="none" stroke="black" d="M1247.79,-520.763C1266.87,-489.698 1298.97,-437.434 1320.05,-403.101"/>
<polygon fill="black" stroke="black" points="1323.17,-404.707 1325.43,-394.354 1317.21,-401.044 1323.17,-404.707"/>
</g>
<!-- mirage&#45;console -->
<g id="node11" class="node"><title>mirage&#45;console</title>
<ellipse fill="#d95b43" stroke="black" cx="1455.94" cy="-457.831" rx="71.3357" ry="26.7407"/>
<text text-anchor="middle" x="1455.94" y="-461.631" font-family="Times,serif" font-size="14.00">mirage&#45;console</text>
<text text-anchor="middle" x="1455.94" y="-446.631" font-family="Times,serif" font-size="14.00">2.1.3</text>
</g>
<!-- mirage&#45;console.unix&#45;&gt;mirage&#45;console -->
<g id="edge43" class="edge"><title>mirage&#45;console.unix&#45;&gt;mirage&#45;console</title>
<path fill="none" stroke="black" d="M1285.31,-525.666C1319.26,-512.369 1363.21,-495.152 1398.01,-481.523"/>
<polygon fill="black" stroke="black" points="1399.53,-484.686 1407.56,-477.78 1396.98,-478.168 1399.53,-484.686"/>
</g>
<!-- mirage&#45;console.unix&#45;&gt;lwt.unix -->
<g id="edge41" class="edge"><title>mirage&#45;console.unix&#45;&gt;lwt.unix</title>
<path fill="none" stroke="black" d="M1224.23,-520.763C1215.06,-490.05 1199.7,-438.615 1189.45,-404.274"/>
<polygon fill="black" stroke="black" points="1192.79,-403.221 1186.57,-394.641 1186.08,-405.224 1192.79,-403.221"/>
</g>
<!-- mirage&#45;console.unix&#45;&gt;lwt -->
<g id="edge40" class="edge"><title>mirage&#45;console.unix&#45;&gt;lwt</title>
<path fill="none" stroke="black" d="M1234.02,-520.507C1236.67,-481.386 1240.01,-405.242 1231.94,-341.22 1226.79,-300.37 1222.59,-290.325 1208.94,-251.48 1205.6,-241.986 1201.38,-231.946 1197.23,-222.778"/>
<polygon fill="black" stroke="black" points="1200.36,-221.2 1192.98,-213.6 1194.01,-224.145 1200.36,-221.2"/>
</g>
<!-- cstruct.lwt -->
<g id="node22" class="node"><title>cstruct.lwt</title>
<ellipse fill="#d95b43" stroke="black" cx="1131.94" cy="-457.831" rx="53.066" ry="26.7407"/>
<text text-anchor="middle" x="1131.94" y="-461.631" font-family="Times,serif" font-size="14.00">cstruct.lwt</text>
<text text-anchor="middle" x="1131.94" y="-446.631" font-family="Times,serif" font-size="14.00">2.1.0</text>
</g>
<!-- mirage&#45;console.unix&#45;&gt;cstruct.lwt -->
<g id="edge44" class="edge"><title>mirage&#45;console.unix&#45;&gt;cstruct.lwt</title>
<path fill="none" stroke="black" d="M1203.82,-521.897C1191.86,-511.403 1177.82,-499.084 1165.34,-488.132"/>
<polygon fill="black" stroke="black" points="1167.62,-485.482 1157.8,-481.518 1163.01,-490.744 1167.62,-485.482"/>
</g>
<!-- mirage&#45;console&#45;&gt;mirage&#45;types.lwt -->
<g id="edge32" class="edge"><title>mirage&#45;console&#45;&gt;mirage&#45;types.lwt</title>
<path fill="none" stroke="black" d="M1468.32,-430.98C1472.37,-422.501 1476.95,-412.936 1481.28,-403.905"/>
<polygon fill="black" stroke="black" points="1484.49,-405.287 1485.66,-394.756 1478.18,-402.265 1484.49,-405.287"/>
</g>
<!-- mirage&#45;console&#45;&gt;mirage&#45;types -->
<g id="edge31" class="edge"><title>mirage&#45;console&#45;&gt;mirage&#45;types</title>
<path fill="none" stroke="black" d="M1425.12,-433.318C1410.86,-422.439 1393.79,-409.414 1378.76,-397.946"/>
<polygon fill="black" stroke="black" points="1380.73,-395.042 1370.65,-391.759 1376.48,-400.607 1380.73,-395.042"/>
</g>
<!-- mirage&#45;console&#45;&gt;lwt -->
<g id="edge30" class="edge"><title>mirage&#45;console&#45;&gt;lwt</title>
<path fill="none" stroke="black" d="M1515.47,-442.964C1540.84,-433.79 1567.99,-418.876 1582.94,-394.96 1595.6,-374.708 1596.53,-360.864 1582.94,-341.22 1499.33,-220.322 1306.22,-195.716 1221.75,-190.794"/>
<polygon fill="black" stroke="black" points="1221.69,-187.286 1211.52,-190.264 1221.33,-194.277 1221.69,-187.286"/>
</g>
<!-- mirage&#45;clock&#45;unix&#45;&gt;unix -->
<g id="edge9" class="edge"><title>mirage&#45;clock&#45;unix&#45;&gt;unix</title>
<path fill="none" stroke="black" d="M427.181,-78.6771C470.606,-63.5895 529.641,-43.0781 565.972,-30.455"/>
<polygon fill="black" stroke="black" points="567.288,-33.7031 575.585,-27.1149 564.99,-27.0909 567.288,-33.7031"/>
</g>
<!-- lwt.unix&#45;&gt;unix -->
<g id="edge37" class="edge"><title>lwt.unix&#45;&gt;unix</title>
<path fill="none" stroke="black" d="M1194.73,-342.734C1219.26,-301.506 1259.76,-217.066 1219.94,-161.74 1150.4,-65.1173 758.849,-30.0693 635.889,-21.3562"/>
<polygon fill="black" stroke="black" points="636.055,-17.8593 625.837,-20.6605 635.572,-24.8426 636.055,-17.8593"/>
</g>
<!-- lwt.log -->
<g id="node14" class="node"><title>lwt.log</title>
<ellipse fill="#d95b43" stroke="black" cx="1147.94" cy="-278.35" rx="37.4533" ry="26.7407"/>
<text text-anchor="middle" x="1147.94" y="-282.15" font-family="Times,serif" font-size="14.00">lwt.log</text>
<text text-anchor="middle" x="1147.94" y="-267.15" font-family="Times,serif" font-size="14.00">2.5.2</text>
</g>
<!-- lwt.unix&#45;&gt;lwt.log -->
<g id="edge36" class="edge"><title>lwt.unix&#45;&gt;lwt.log</title>
<path fill="none" stroke="black" d="M1169.97,-341.712C1166.95,-333.164 1163.53,-323.469 1160.29,-314.314"/>
<polygon fill="black" stroke="black" points="1163.52,-312.934 1156.89,-304.671 1156.92,-315.266 1163.52,-312.934"/>
</g>
<!-- lwt.unix&#45;&gt;lwt -->
<g id="edge35" class="edge"><title>lwt.unix&#45;&gt;lwt</title>
<path fill="none" stroke="black" d="M1186.61,-341.452C1189.53,-330.413 1192.5,-317.292 1193.94,-305.22 1196.77,-281.505 1196.41,-275.237 1193.94,-251.48 1193.04,-242.77 1191.43,-233.48 1189.65,-224.818"/>
<polygon fill="black" stroke="black" points="1193.07,-224.034 1187.52,-215.009 1186.23,-225.525 1193.07,-224.034"/>
</g>
<!-- lwt.unix&#45;&gt;bigarray -->
<g id="edge38" class="edge"><title>lwt.unix&#45;&gt;bigarray</title>
<path fill="none" stroke="black" d="M1150.96,-347.008C1135.77,-335.527 1117.06,-320.419 1101.94,-305.22 1044.51,-247.471 1058.27,-202.813 987.941,-161.74 931.152,-128.576 740.114,-110.321 648.611,-103.293"/>
<polygon fill="black" stroke="black" points="648.723,-99.7914 638.488,-102.53 648.197,-106.772 648.723,-99.7914"/>
</g>
<!-- lwt.log&#45;&gt;lwt -->
<g id="edge34" class="edge"><title>lwt.log&#45;&gt;lwt</title>
<path fill="none" stroke="black" d="M1157.49,-251.972C1160.79,-243.182 1164.55,-233.18 1168.08,-223.8"/>
<polygon fill="black" stroke="black" points="1171.4,-224.918 1171.65,-214.326 1164.85,-222.454 1171.4,-224.918"/>
</g>
<!-- lwt&#45;&gt;bytes -->
<g id="edge39" class="edge"><title>lwt&#45;&gt;bytes</title>
<path fill="none" stroke="black" d="M1152.62,-178.304C1103.45,-162.145 1002.43,-128.948 948.944,-111.373"/>
<polygon fill="black" stroke="black" points="949.815,-107.975 939.222,-108.178 947.63,-114.625 949.815,-107.975"/>
</g>
<!-- logs&#45;&gt;result -->
<g id="edge1" class="edge"><title>logs&#45;&gt;result</title>
<path fill="none" stroke="black" d="M38.8788,-251.5C38.2365,-243.45 37.5161,-234.42 36.8283,-225.799"/>
<polygon fill="black" stroke="black" points="40.2972,-225.269 36.0129,-215.579 33.3194,-225.826 40.2972,-225.269"/>
</g>
<!-- ipaddr&#45;&gt;sexplib -->
<g id="edge4" class="edge"><title>ipaddr&#45;&gt;sexplib</title>
<path fill="none" stroke="black" d="M478.87,-251.5C476.62,-243.273 474.09,-234.023 471.685,-225.231"/>
<polygon fill="black" stroke="black" points="475.059,-224.301 469.045,-215.579 468.307,-226.148 475.059,-224.301"/>
</g>
<!-- ipaddr&#45;&gt;bytes -->
<g id="edge3" class="edge"><title>ipaddr&#45;&gt;bytes</title>
<path fill="none" stroke="black" d="M504.933,-254.801C528.595,-228.252 571.598,-184.856 617.941,-161.74 702.857,-119.385 815.422,-105.997 874.261,-101.786"/>
<polygon fill="black" stroke="black" points="874.857,-105.254 884.604,-101.101 874.394,-98.2694 874.857,-105.254"/>
</g>
<!-- io&#45;page.unix&#45;&gt;bigarray -->
<g id="edge12" class="edge"><title>io&#45;page.unix&#45;&gt;bigarray</title>
<path fill="none" stroke="black" d="M632.449,-360.84C538.904,-350.087 362.277,-327.125 343.941,-305.22 321.747,-278.706 360.321,-166.494 364.941,-161.74 378.145,-148.153 488.883,-123.003 553.177,-109.325"/>
<polygon fill="black" stroke="black" points="554.015,-112.726 563.075,-107.232 552.567,-105.877 554.015,-112.726"/>
</g>
<!-- io&#45;page&#45;&gt;cstruct -->
<g id="edge10" class="edge"><title>io&#45;page&#45;&gt;cstruct</title>
<path fill="none" stroke="black" d="M972.369,-344.495C963.15,-333.851 952.021,-321.003 942.091,-309.54"/>
<polygon fill="black" stroke="black" points="944.64,-307.136 935.447,-301.869 939.348,-311.719 944.64,-307.136"/>
</g>
<!-- io&#45;page&#45;&gt;bytes -->
<g id="edge11" class="edge"><title>io&#45;page&#45;&gt;bytes</title>
<path fill="none" stroke="black" d="M1001.75,-341.93C1015.87,-301.346 1037.02,-220.088 1005.94,-161.74 993.701,-138.757 968.706,-122.788 947.855,-112.837"/>
<polygon fill="black" stroke="black" points="949.182,-109.596 938.627,-108.685 946.31,-115.98 949.182,-109.596"/>
</g>
<!-- fmt -->
<g id="node21" class="node"><title>fmt</title>
<ellipse fill="#d95b43" stroke="black" cx="228.941" cy="-188.61" rx="30.3115" ry="26.7407"/>
<text text-anchor="middle" x="228.941" y="-192.41" font-family="Times,serif" font-size="14.00">fmt</text>
<text text-anchor="middle" x="228.941" y="-177.41" font-family="Times,serif" font-size="14.00">0.7.1</text>
</g>
<!-- functoria.runtime&#45;&gt;fmt -->
<g id="edge47" class="edge"><title>functoria.runtime&#45;&gt;fmt</title>
<path fill="none" stroke="black" d="M192.262,-251.5C197.812,-242.134 204.149,-231.442 209.976,-221.61"/>
<polygon fill="black" stroke="black" points="213.059,-223.273 215.147,-212.885 207.037,-219.704 213.059,-223.273"/>
</g>
<!-- cmdliner -->
<g id="node24" class="node"><title>cmdliner</title>
<ellipse fill="#d95b43" stroke="black" cx="132.941" cy="-188.61" rx="47.2526" ry="26.7407"/>
<text text-anchor="middle" x="132.941" y="-192.41" font-family="Times,serif" font-size="14.00">cmdliner</text>
<text text-anchor="middle" x="132.941" y="-177.41" font-family="Times,serif" font-size="14.00">0.9.8</text>
</g>
<!-- functoria.runtime&#45;&gt;cmdliner -->
<g id="edge46" class="edge"><title>functoria.runtime&#45;&gt;cmdliner</title>
<path fill="none" stroke="black" d="M163.978,-251.5C159.605,-242.78 154.656,-232.911 150.015,-223.656"/>
<polygon fill="black" stroke="black" points="153.121,-222.042 145.509,-214.672 146.863,-225.18 153.121,-222.042"/>
</g>
<!-- cstruct.lwt&#45;&gt;lwt.unix -->
<g id="edge29" class="edge"><title>cstruct.lwt&#45;&gt;lwt.unix</title>
<path fill="none" stroke="black" d="M1145.54,-431.452C1150.34,-422.478 1155.83,-412.239 1160.94,-402.688"/>
<polygon fill="black" stroke="black" points="1164.06,-404.274 1165.7,-393.806 1157.89,-400.969 1164.06,-404.274"/>
</g>
<!-- cstruct.lwt&#45;&gt;cstruct -->
<g id="edge28" class="edge"><title>cstruct.lwt&#45;&gt;cstruct</title>
<path fill="none" stroke="black" d="M1116.84,-431.591C1100.63,-406.181 1072.87,-367.136 1040.94,-341.22 1016.6,-321.466 984.911,-305.868 959.53,-295.276"/>
<polygon fill="black" stroke="black" points="960.722,-291.982 950.14,-291.463 958.089,-298.468 960.722,-291.982"/>
</g>
<!-- cstruct&#45;&gt;sexplib -->
<g id="edge27" class="edge"><title>cstruct&#45;&gt;sexplib</title>
<path fill="none" stroke="black" d="M878.659,-270.664C817.321,-259.6 691.308,-236.604 584.941,-215.48 568.033,-212.122 549.848,-208.374 532.784,-204.795"/>
<polygon fill="black" stroke="black" points="533.391,-201.346 522.884,-202.711 531.949,-208.196 533.391,-201.346"/>
</g>
<!-- cstruct&#45;&gt;ocplib&#45;endian.bigstring -->
<g id="edge26" class="edge"><title>cstruct&#45;&gt;ocplib&#45;endian.bigstring</title>
<path fill="none" stroke="black" d="M884.219,-262.466C857.569,-249.962 818.798,-231.771 786.666,-216.695"/>
<polygon fill="black" stroke="black" points="787.902,-213.409 777.362,-212.329 784.929,-219.746 787.902,-213.409"/>
</g>
<!-- cstruct&#45;&gt;ocplib&#45;endian -->
<g id="edge25" class="edge"><title>cstruct&#45;&gt;ocplib&#45;endian</title>
<path fill="none" stroke="black" d="M915.341,-251.025C915.159,-243.059 914.957,-234.168 914.763,-225.679"/>
<polygon fill="black" stroke="black" points="918.261,-225.532 914.534,-215.614 911.263,-225.691 918.261,-225.532"/>
</g>
<!-- cstruct&#45;&gt;bytes -->
<g id="edge23" class="edge"><title>cstruct&#45;&gt;bytes</title>
<path fill="none" stroke="black" d="M945.71,-260.543C961.419,-249.877 979.207,-234.502 987.941,-215.48 997.908,-193.775 998.054,-183.378 987.941,-161.74 978.907,-142.412 960.537,-126.998 944.36,-116.389"/>
<polygon fill="black" stroke="black" points="946.014,-113.296 935.672,-110.996 942.322,-119.244 946.014,-113.296"/>
</g>
<!-- cstruct&#45;&gt;bigarray -->
<g id="edge24" class="edge"><title>cstruct&#45;&gt;bigarray</title>
<path fill="none" stroke="black" d="M877.375,-274.663C805.08,-268.801 653.28,-252.329 617.941,-215.48 595.544,-192.126 593.646,-153.154 595.418,-126.992"/>
<polygon fill="black" stroke="black" points="598.909,-127.255 596.316,-116.983 591.937,-126.63 598.909,-127.255"/>
</g>
<!-- bigarray&#45;&gt;unix -->
<g id="edge33" class="edge"><title>bigarray&#45;&gt;unix</title>
<path fill="none" stroke="black" d="M598.941,-80.7564C598.941,-70.7312 598.941,-57.8362 598.941,-46.4246"/>
<polygon fill="black" stroke="black" points="602.441,-46.0802 598.941,-36.0802 595.441,-46.0803 602.441,-46.0802"/>
</g>
<!-- astring&#45;&gt;bytes -->
<g id="edge2" class="edge"><title>astring&#45;&gt;bytes</title>
<path fill="none" stroke="black" d="M380.295,-252.373C370.129,-226.428 360.103,-186.265 381.941,-161.74 390.184,-152.483 753.964,-115.706 875.136,-103.69"/>
<polygon fill="black" stroke="black" points="875.492,-107.172 885.098,-102.704 874.802,-100.206 875.492,-107.172"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 303 KiB

View file

@ -0,0 +1,95 @@
<svg width="1000" height="800" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g><rect x="0" y="0" height="418" width="354" style="stroke:#006000; fill: #D95B43"/> <text x="10" y="209">libgcc.a</text><title>/usr/lib/gcc/x86_64-linux-gnu/4.8/libgcc.a (3027014)</title></g>
<g><rect x="0" y="418" height="193" width="354" style="stroke:#006000; fill: #C02942"/> <text x="10" y="515">stdlib.a</text><title>/home/hannes/.opam/4.02.3/lib/ocaml/stdlib.a (1400328)</title></g>
<g><rect x="0" y="612" height="187" width="354" style="stroke:#006000; fill: #542437"/> <text x="10" y="706">libgmp-xen.a</text><title>/home/hannes/.opam/4.02.3/lib/gmp-xen/libgmp-xen.a (1357772)</title></g>
<g><rect x="354" y="0" height="175" width="283" style="stroke:#006000; fill: #53777A"/> <text x="364" y="87">tls.a</text><title>/home/hannes/.opam/4.02.3/lib/tls/tls.a (1012386)</title></g>
<g><rect x="637" y="0" height="175" width="186" style="stroke:#006000; fill: #ECD078"/> <text x="647" y="87">sexplib.a</text><title>/home/hannes/.opam/4.02.3/lib/sexplib/sexplib.a (665768)</title></g>
<g><rect x="823" y="0" height="175" width="176" style="stroke:#006000; fill: #D95B43"/> <text x="833" y="87">libopenlibm.a</text><title>/home/hannes/.opam/4.02.3/lib/libopenlibm.a (629620)</title></g>
<g><rect x="354" y="175" height="207" width="138" style="stroke:#006000; fill: #C02942"/> <text x="364" y="279">tyxml.a</text><title>/home/hannes/.opam/4.02.3/lib/tyxml/tyxml.a (587802)</title></g>
<g><rect x="354" y="383" height="152" width="138" style="stroke:#006000; fill: #542437"/> <text x="364" y="459">nocrypto.a</text><title>/home/hannes/.opam/4.02.3/lib/nocrypto/nocrypto.a (431132)</title></g>
<g><rect x="354" y="535" height="142" width="138" style="stroke:#006000; fill: #53777A"/> <text x="364" y="607">x509.a</text><title>/home/hannes/.opam/4.02.3/lib/x509/x509.a (403540)</title></g>
<g><rect x="354" y="678" height="121" width="138" style="stroke:#006000; fill: #ECD078"/> <text x="364" y="739">libxenasmrun.a</text><title>/home/hannes/.opam/4.02.3/lib/pkgconfig/../../lib/mirage-xen-ocaml/libxenasmrun.a (343920)</title></g>
<g><rect x="493" y="175" height="123" width="131" style="stroke:#006000; fill: #D95B43"/> <text x="503" y="237">libasmrun.a</text><title>/home/hannes/.opam/4.02.3/lib/ocaml/libasmrun.a (331260)</title></g>
<g><rect x="624" y="175" height="123" width="130" style="stroke:#006000; fill: #C02942"/> <text x="634" y="237">lwt.a</text><title>/home/hannes/.opam/4.02.3/lib/lwt/lwt.a (328130)</title></g>
<g><rect x="755" y="175" height="123" width="125" style="stroke:#006000; fill: #542437"/> <text x="765" y="237">tcp.a</text><title>/home/hannes/.opam/4.02.3/lib/tcpip/tcp.a (315660)</title></g>
<g><rect x="880" y="175" height="123" width="119" style="stroke:#006000; fill: #53777A"/> <text x="890" y="237">libnocrypto_stubs.a</text><title>/home/hannes/.opam/4.02.3/lib/nocrypto/libnocrypto_stubs.a (301090)</title></g>
<g><rect x="493" y="298" height="127" width="110" style="stroke:#006000; fill: #ECD078"/> <text x="503" y="362">libnocrypto_xen_stubs.a</text><title>/home/hannes/.opam/4.02.3/lib/nocrypto/libnocrypto_xen_stubs.a (288802)</title></g>
<g><rect x="493" y="426" height="127" width="110" style="stroke:#006000; fill: #D95B43"/> <text x="503" y="490">libnocrypto_xen_stubs.a</text><title>/home/hannes/.opam/4.02.3/lib/nocrypto/libnocrypto_xen_stubs.a (288802)</title></g>
<g><rect x="493" y="554" height="123" width="110" style="stroke:#006000; fill: #C02942"/> <text x="503" y="615">asn1-combinators.a</text><title>/home/hannes/.opam/4.02.3/lib/asn1-combinators/asn1-combinators.a (279054)</title></g>
<g><rect x="493" y="677" height="122" width="110" style="stroke:#006000; fill: #542437"/> <text x="503" y="738">cmdliner.a</text><title>/home/hannes/.opam/4.02.3/lib/cmdliner/cmdliner.a (277042)</title></g>
<g><rect x="604" y="298" height="117" width="113" style="stroke:#006000; fill: #53777A"/> <text x="614" y="357">libminios.a</text><title>/home/hannes/.opam/4.02.3/lib/minios-xen/libminios.a (271372)</title></g>
<g><rect x="717" y="298" height="117" width="101" style="stroke:#006000; fill: #ECD078"/> <text x="727" y="357">astring.a</text><title>/home/hannes/.opam/4.02.3/lib/astring/astring.a (243240)</title></g>
<g><rect x="819" y="298" height="117" width="97" style="stroke:#006000; fill: #D95B43"/> <text x="829" y="357">re.a</text><title>/home/hannes/.opam/4.02.3/lib/re/re.a (233148)</title></g>
<g><rect x="916" y="298" height="117" width="83" style="stroke:#006000; fill: #C02942"/> <text x="926" y="357">ipv6.a</text><title>/home/hannes/.opam/4.02.3/lib/tcpip/ipv6.a (199486)</title></g>
<g><rect x="604" y="416" height="105" width="91" style="stroke:#006000; fill: #542437"/> <text x="614" y="469">ipaddr.a</text><title>/home/hannes/.opam/4.02.3/lib/ipaddr/ipaddr.a (198636)</title></g>
<g><rect x="604" y="522" height="103" width="91" style="stroke:#006000; fill: #53777A"/> <text x="614" y="573">tcpip.a</text><title>/home/hannes/.opam/4.02.3/lib/tcpip/tcpip.a (193400)</title></g>
<g><rect x="604" y="625" height="102" width="91" style="stroke:#006000; fill: #ECD078"/> <text x="614" y="676">camlstartupb4b590.o</text><title>/tmp/camlstartupb4b590.o (193160)</title></g>
<g><rect x="604" y="728" height="71" width="91" style="stroke:#006000; fill: #D95B43"/> <text x="614" y="764">dhcpv4.a</text><title>/home/hannes/.opam/4.02.3/lib/tcpip/dhcpv4.a (134406)</title></g>
<g><rect x="696" y="416" height="71" width="90" style="stroke:#006000; fill: #C02942"/> <text x="706" y="452">mirage-net-xen.a</text><title>/home/hannes/.opam/4.02.3/lib/mirage-net-xen/mirage-net-xen.a (131968)</title></g>
<g><rect x="786" y="416" height="71" width="82" style="stroke:#006000; fill: #542437"/> <text x="796" y="452">xenstore.a</text><title>/home/hannes/.opam/4.02.3/lib/xenstore/xenstore.a (119916)</title></g>
<g><rect x="868" y="416" height="71" width="68" style="stroke:#006000; fill: #53777A"/> <text x="878" y="452">ocplib_endian.a</text><title>/home/hannes/.opam/4.02.3/lib/ocplib-endian/ocplib_endian.a (99350)</title></g>
<g><rect x="937" y="416" height="71" width="62" style="stroke:#006000; fill: #ECD078"/> <text x="947" y="452">uutf.a</text><title>/home/hannes/.opam/4.02.3/lib/uutf/uutf.a (91822)</title></g>
<g><rect x="696" y="487" height="67" width="65" style="stroke:#006000; fill: #D95B43"/> <text x="706" y="521">ptime.a</text><title>/home/hannes/.opam/4.02.3/lib/ptime/ptime.a (89482)</title></g>
<g><rect x="761" y="487" height="67" width="63" style="stroke:#006000; fill: #C02942"/> <text x="771" y="521">zarith.a</text><title>/home/hannes/.opam/4.02.3/lib/zarith/zarith.a (87638)</title></g>
<g><rect x="825" y="487" height="67" width="62" style="stroke:#006000; fill: #542437"/> <text x="835" y="521">fmt.a</text><title>/home/hannes/.opam/4.02.3/lib/fmt/fmt.a (86522)</title></g>
<g><rect x="887" y="487" height="67" width="56" style="stroke:#006000; fill: #53777A"/> <text x="897" y="521">OS.a</text><title>/home/hannes/.opam/4.02.3/lib/mirage-xen/OS.a (77252)</title></g>
<g><rect x="944" y="487" height="67" width="55" style="stroke:#006000; fill: #ECD078"/> <text x="954" y="521">str.a</text><title>/home/hannes/.opam/4.02.3/lib/ocaml/str.a (76790)</title></g>
<g><rect x="696" y="555" height="68" width="53" style="stroke:#006000; fill: #D95B43"/> <text x="706" y="589">libzarith.a</text><title>/home/hannes/.opam/4.02.3/lib/zarith/libzarith.a (74428)</title></g>
<g><rect x="696" y="623" height="62" width="53" style="stroke:#006000; fill: #C02942"/> <text x="706" y="654">cstruct.a</text><title>/home/hannes/.opam/4.02.3/lib/cstruct/cstruct.a (68448)</title></g>
<g><rect x="696" y="686" height="57" width="53" style="stroke:#006000; fill: #542437"/> <text x="706" y="715">xenstore_client_lwt.a</text><title>/home/hannes/.opam/4.02.3/lib/xenstore/xenstore_client_lwt.a (62488)</title></g>
<g><rect x="696" y="743" height="56" width="53" style="stroke:#006000; fill: #53777A"/> <text x="706" y="771">libxenposix.a</text><title>/home/hannes/.opam/4.02.3/lib/pkgconfig/../../lib/mirage-xen-posix/libxenposix.a (61286)</title></g>
<g><rect x="749" y="555" height="55" width="51" style="stroke:#006000; fill: #ECD078"/> <text x="759" y="582">arpv4.a</text><title>/home/hannes/.opam/4.02.3/lib/tcpip/arpv4.a (58494)</title></g>
<g><rect x="749" y="610" height="50" width="51" style="stroke:#006000; fill: #D95B43"/> <text x="759" y="635">libzarith-xen.a</text><title>/home/hannes/.opam/4.02.3/lib/zarith/libzarith-xen.a (53452)</title></g>
<g><rect x="749" y="661" height="48" width="51" style="stroke:#006000; fill: #C02942"/> <text x="759" y="685">mirage_console_xen.a</text><title>/home/hannes/.opam/4.02.3/lib/mirage-console/mirage_console_xen.a (51346)</title></g>
<g><rect x="749" y="709" height="47" width="51" style="stroke:#006000; fill: #542437"/> <text x="759" y="733">bigstring.a</text><title>/home/hannes/.opam/4.02.3/lib/ocplib-endian/bigstring.a (50380)</title></g>
<g><rect x="749" y="757" height="42" width="51" style="stroke:#006000; fill: #53777A"/> <text x="759" y="778">main.o</text><title>main.o (45272)</title></g>
<g><rect x="801" y="555" height="42" width="51" style="stroke:#006000; fill: #ECD078"/> <text x="811" y="576">logs.a</text><title>/home/hannes/.opam/4.02.3/lib/logs/logs.a (44770)</title></g>
<g><rect x="853" y="555" height="42" width="49" style="stroke:#006000; fill: #D95B43"/> <text x="863" y="576">libxencamlbindings.a</text><title>/home/hannes/.opam/4.02.3/lib/pkgconfig/../../lib/mirage-xen/libxencamlbindings.a (43158)</title></g>
<g><rect x="902" y="555" height="42" width="48" style="stroke:#006000; fill: #C02942"/> <text x="912" y="576">xen_gnt.a</text><title>/home/hannes/.opam/4.02.3/lib/xen-gnt/xen_gnt.a (42476)</title></g>
<g><rect x="951" y="555" height="42" width="48" style="stroke:#006000; fill: #542437"/> <text x="961" y="576">icmpv4.a</text><title>/home/hannes/.opam/4.02.3/lib/tcpip/icmpv4.a (41882)</title></g>
<g><rect x="801" y="597" height="40" width="51" style="stroke:#006000; fill: #53777A"/> <text x="811" y="617">libx86_64.a</text><title>/home/hannes/.opam/4.02.3/lib/minios-xen/libx86_64.a (41790)</title></g>
<g><rect x="852" y="597" height="40" width="50" style="stroke:#006000; fill: #ECD078"/> <text x="862" y="617">shared_memory_ring.a</text><title>/home/hannes/.opam/4.02.3/lib/shared-memory-ring/shared_memory_ring.a (41024)</title></g>
<g><rect x="903" y="597" height="40" width="49" style="stroke:#006000; fill: #D95B43"/> <text x="913" y="617">page.o</text><title>page.o (40744)</title></g>
<g><rect x="953" y="597" height="40" width="46" style="stroke:#006000; fill: #C02942"/> <text x="963" y="617">unikernel.o</text><title>unikernel.o (38344)</title></g>
<g><rect x="801" y="637" height="42" width="43" style="stroke:#006000; fill: #542437"/> <text x="811" y="659">re_str.a</text><title>/home/hannes/.opam/4.02.3/lib/re/re_str.a (37994)</title></g>
<g><rect x="801" y="680" height="42" width="43" style="stroke:#006000; fill: #53777A"/> <text x="811" y="701">libxenotherlibs.a</text><title>/home/hannes/.opam/4.02.3/lib/pkgconfig/../../lib/mirage-xen-ocaml/libxenotherlibs.a (37666)</title></g>
<g><rect x="801" y="722" height="39" width="43" style="stroke:#006000; fill: #ECD078"/> <text x="811" y="742">tls-mirage.a</text><title>/home/hannes/.opam/4.02.3/lib/tls/tls-mirage.a (34816)</title></g>
<g><rect x="801" y="762" height="37" width="43" style="stroke:#006000; fill: #D95B43"/> <text x="811" y="781">tcpip-stack-direct.a</text><title>/home/hannes/.opam/4.02.3/lib/tcpip/tcpip-stack-direct.a (33808)</title></g>
<g><rect x="845" y="637" height="35" width="44" style="stroke:#006000; fill: #C02942"/> <text x="855" y="655">mirage_console_proto.a</text><title>/home/hannes/.opam/4.02.3/lib/mirage-console/mirage_console_proto.a (32550)</title></g>
<g><rect x="889" y="637" height="35" width="37" style="stroke:#006000; fill: #542437"/> <text x="899" y="655">libbigarray.a</text><title>/home/hannes/.opam/4.02.3/lib/ocaml/libbigarray.a (27760)</title></g>
<g><rect x="927" y="637" height="35" width="36" style="stroke:#006000; fill: #53777A"/> <text x="937" y="655">ipv4.a</text><title>/home/hannes/.opam/4.02.3/lib/tcpip/ipv4.a (26902)</title></g>
<g><rect x="964" y="637" height="35" width="35" style="stroke:#006000; fill: #ECD078"/> <text x="974" y="655">bigarray.a</text><title>/home/hannes/.opam/4.02.3/lib/ocaml/bigarray.a (26228)</title></g>
<g><rect x="845" y="673" height="34" width="35" style="stroke:#006000; fill: #D95B43"/> <text x="855" y="690">logger.o</text><title>logger.o (24376)</title></g>
<g><rect x="845" y="707" height="31" width="35" style="stroke:#006000; fill: #C02942"/> <text x="855" y="723">xen_evtchn.a</text><title>/home/hannes/.opam/4.02.3/lib/xen-evtchn/xen_evtchn.a (22362)</title></g>
<g><rect x="845" y="739" height="30" width="35" style="stroke:#006000; fill: #542437"/> <text x="855" y="754">mirage-runtime.a</text><title>/home/hannes/.opam/4.02.3/lib/mirage/mirage-runtime.a (22140)</title></g>
<g><rect x="845" y="770" height="29" width="35" style="stroke:#006000; fill: #53777A"/> <text x="855" y="785">lwt_shared_memory_ring.a</text><title>/home/hannes/.opam/4.02.3/lib/shared-memory-ring/lwt_shared_memory_ring.a (21432)</title></g>
<g><rect x="880" y="673" height="31" width="31" style="stroke:#006000; fill: #ECD078"/> <text x="890" y="689">re_emacs.a</text><title>/home/hannes/.opam/4.02.3/lib/re/re_emacs.a (20354)</title></g>
<g><rect x="912" y="673" height="31" width="31" style="stroke:#006000; fill: #D95B43"/> <text x="922" y="689">xenstore_ring.a</text><title>/home/hannes/.opam/4.02.3/lib/shared-memory-ring/xenstore_ring.a (19818)</title></g>
<g><rect x="943" y="673" height="31" width="30" style="stroke:#006000; fill: #C02942"/> <text x="953" y="689">console_ring.a</text><title>/home/hannes/.opam/4.02.3/lib/shared-memory-ring/console_ring.a (19722)</title></g>
<g><rect x="974" y="673" height="31" width="25" style="stroke:#006000; fill: #542437"/> <text x="984" y="689">mirage-bootvar.a</text><title>/home/hannes/.opam/4.02.3/lib/mirage-bootvar/mirage-bootvar.a (16280)</title></g>
<g><rect x="880" y="705" height="32" width="24" style="stroke:#006000; fill: #53777A"/> <text x="890" y="721">libtcpip_stubs.a</text><title>/home/hannes/.opam/4.02.3/lib/tcpip/libtcpip_stubs.a (16256)</title></g>
<g><rect x="880" y="737" height="31" width="24" style="stroke:#006000; fill: #ECD078"/> <text x="890" y="753">key_gen.o</text><title>key_gen.o (15832)</title></g>
<g><rect x="880" y="769" height="30" width="24" style="stroke:#006000; fill: #D95B43"/> <text x="890" y="784">functoria-runtime.a</text><title>/home/hannes/.opam/4.02.3/lib/functoria/functoria-runtime.a (15444)</title></g>
<g><rect x="904" y="705" height="24" width="28" style="stroke:#006000; fill: #C02942"/> <text x="914" y="717">static1.o</text><title>static1.o (14512)</title></g>
<g><rect x="904" y="729" height="24" width="28" style="stroke:#006000; fill: #542437"/> <text x="914" y="742">libtcpip_xen_stubs.a</text><title>/home/hannes/.opam/4.02.3/lib/tcpip/libtcpip_xen_stubs.a (14500)</title></g>
<g><rect x="904" y="754" height="22" width="28" style="stroke:#006000; fill: #53777A"/> <text x="914" y="766">mirage-entropy-xen.a</text><title>/home/hannes/.opam/4.02.3/lib/mirage-entropy-xen/mirage-entropy-xen.a (13398)</title></g>
<g><rect x="904" y="777" height="22" width="28" style="stroke:#006000; fill: #ECD078"/> <text x="914" y="788">io_page.a</text><title>/home/hannes/.opam/4.02.3/lib/io-page/io_page.a (13208)</title></g>
<g><rect x="933" y="705" height="25" width="23" style="stroke:#006000; fill: #D95B43"/> <text x="943" y="717">libcstruct_stubs.a</text><title>/home/hannes/.opam/4.02.3/lib/cstruct/libcstruct_stubs.a (12016)</title></g>
<g><rect x="957" y="705" height="25" width="21" style="stroke:#006000; fill: #C02942"/> <text x="967" y="717">mProf.a</text><title>/home/hannes/.opam/4.02.3/lib/mirage-profile/mProf.a (11084)</title></g>
<g><rect x="978" y="705" height="25" width="21" style="stroke:#006000; fill: #542437"/> <text x="988" y="717">libio_page_unix_stubs.a</text><title>/home/hannes/.opam/4.02.3/lib/io-page/libio_page_unix_stubs.a (10930)</title></g>
<g><rect x="933" y="730" height="19" width="22" style="stroke:#006000; fill: #53777A"/> <text x="943" y="740">udp.a</text><title>/home/hannes/.opam/4.02.3/lib/tcpip/udp.a (9112)</title></g>
<g><rect x="956" y="730" height="19" width="22" style="stroke:#006000; fill: #ECD078"/> <text x="966" y="740">libcamlstr.a</text><title>/home/hannes/.opam/4.02.3/lib/ocaml/libcamlstr.a (8938)</title></g>
<g><rect x="978" y="730" height="19" width="21" style="stroke:#006000; fill: #D95B43"/> <text x="988" y="740">test.o</text><title>test.o (8760)</title></g>
<g><rect x="933" y="749" height="17" width="24" style="stroke:#006000; fill: #C02942"/> <text x="943" y="758">libio_page_xen_stubs.a</text><title>/home/hannes/.opam/4.02.3/lib/io-page/libio_page_xen_stubs.a (8430)</title></g>
<g><rect x="933" y="767" height="16" width="24" style="stroke:#006000; fill: #542437"/> <text x="943" y="775">libshared_memory_ring_stubs.a</text><title>/home/hannes/.opam/4.02.3/lib/shared-memory-ring/libshared_memory_ring_stubs.a (8220)</title></g>
<g><rect x="933" y="783" height="16" width="24" style="stroke:#006000; fill: #53777A"/> <text x="943" y="791">nocrypto_xen.a</text><title>/home/hannes/.opam/4.02.3/lib/nocrypto/nocrypto_xen.a (7938)</title></g>
<g><rect x="957" y="749" height="17" width="21" style="stroke:#006000; fill: #ECD078"/> <text x="967" y="758">ethif.a</text><title>/home/hannes/.opam/4.02.3/lib/tcpip/ethif.a (7776)</title></g>
<g><rect x="978" y="749" height="17" width="21" style="stroke:#006000; fill: #D95B43"/> <text x="988" y="758">libmirage-entropy-xen_stubs.a</text><title>/home/hannes/.opam/4.02.3/lib/mirage-entropy-xen/libmirage-entropy-xen_stubs.a (7704)</title></g>
<g><rect x="957" y="767" height="17" width="21" style="stroke:#006000; fill: #C02942"/> <text x="967" y="776">libmirage-entropy-xen_stubs.a</text><title>/home/hannes/.opam/4.02.3/lib/mirage-entropy-xen/libmirage-entropy-xen_stubs.a (7704)</title></g>
<g><rect x="957" y="785" height="14" width="21" style="stroke:#006000; fill: #542437"/> <text x="967" y="792">mirage-clock.a</text><title>/home/hannes/.opam/4.02.3/lib/mirage-clock-xen/mirage-clock.a (6476)</title></g>
<g><rect x="979" y="767" height="11" width="20" style="stroke:#006000; fill: #53777A"/> <text x="989" y="773">tcpv4_plus.o</text><title>tcpv4_plus.o (4984)</title></g>
<g><rect x="979" y="779" height="12" width="11" style="stroke:#006000; fill: #ECD078"/> <text x="989" y="785">std_exit.o</text><title>/home/hannes/.opam/4.02.3/lib/ocaml/std_exit.o (2944)</title></g>
<g><rect x="979" y="791" height="8" width="11" style="stroke:#006000; fill: #D95B43"/> <text x="989" y="795">io_page_unix.a</text><title>/home/hannes/.opam/4.02.3/lib/io-page/io_page_unix.a (1934)</title></g>
<g><rect x="991" y="779" height="10" width="8" style="stroke:#006000; fill: #C02942"/> <text x="1001" y="784">result.a</text><title>/home/hannes/.opam/4.02.3/lib/result/result.a (1852)</title></g>
<g><rect x="991" y="790" height="9" width="8" style="stroke:#006000; fill: #542437"/> <text x="1001" y="795">mirage-console.a</text><title>/home/hannes/.opam/4.02.3/lib/mirage-console/mirage-console.a (1778)</title></g>
</svg>

After

Width:  |  Height:  |  Size: 19 KiB

1341
static/img/pinata-deps.svg Normal file

File diff suppressed because it is too large Load diff

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB