diff options
-rw-r--r-- | Presence/XMLToByteStrings.hs | 16 | ||||
-rw-r--r-- | Presence/XMPP.hs | 12 | ||||
-rw-r--r-- | Presence/XMPPTypes.hs | 5 | ||||
-rw-r--r-- | modules.svg | 311 |
4 files changed, 175 insertions, 169 deletions
diff --git a/Presence/XMLToByteStrings.hs b/Presence/XMLToByteStrings.hs index d8d2e965..92ac05cd 100644 --- a/Presence/XMLToByteStrings.hs +++ b/Presence/XMLToByteStrings.hs | |||
@@ -1,5 +1,7 @@ | |||
1 | {-# LANGUAGE CPP #-} | 1 | {-# LANGUAGE CPP #-} |
2 | module XMLToByteStrings (xmlToByteStrings) where | 2 | module XMLToByteStrings |
3 | ( xmlToByteStrings | ||
4 | , prettyPrint ) where | ||
3 | 5 | ||
4 | import Control.Monad.IO.Class | 6 | import Control.Monad.IO.Class |
5 | import Control.Monad.Trans.Class | 7 | import Control.Monad.Trans.Class |
@@ -8,13 +10,15 @@ import Control.Monad.Fix | |||
8 | import Control.Monad (when) | 10 | import Control.Monad (when) |
9 | import Data.Conduit | 11 | import Data.Conduit |
10 | import qualified Data.Conduit.List as CL | 12 | import qualified Data.Conduit.List as CL |
13 | import qualified Data.Conduit.Binary as CB | ||
11 | import Data.XML.Types as XML (Event) | 14 | import Data.XML.Types as XML (Event) |
12 | import qualified Data.ByteString as S (ByteString) | 15 | import qualified Data.ByteString as S (ByteString,append) |
16 | import qualified Data.ByteString.Char8 as S (putStrLn) | ||
13 | #ifdef RENDERFLUSH | 17 | #ifdef RENDERFLUSH |
14 | import Data.Conduit.Blaze (builderToByteStringFlush) | 18 | import Data.Conduit.Blaze (builderToByteStringFlush) |
15 | import Text.XML.Stream.Render (def,renderBuilderFlush) | 19 | import Text.XML.Stream.Render (def,renderBuilderFlush,renderBytes,rsPretty) |
16 | #else | 20 | #else |
17 | import Text.XML.Stream.Render (def,renderBytes) | 21 | import Text.XML.Stream.Render (def,renderBytes,rsPretty) |
18 | #endif | 22 | #endif |
19 | 23 | ||
20 | fixMaybeT f = (>> return ()) . runMaybeT . fix $ f | 24 | fixMaybeT f = (>> return ()) . runMaybeT . fix $ f |
@@ -62,3 +66,7 @@ renderChunks = fixMaybeT $ \loop -> do | |||
62 | loop | 66 | loop |
63 | #endif | 67 | #endif |
64 | 68 | ||
69 | |||
70 | prettyPrint prefix xs = | ||
71 | liftIO $ do | ||
72 | CL.sourceList xs $= renderBytes (def { rsPretty=True }) =$= CB.lines $$ CL.mapM_ (S.putStrLn . (prefix `S.append`)) | ||
diff --git a/Presence/XMPP.hs b/Presence/XMPP.hs index ec2feb3a..a469c08e 100644 --- a/Presence/XMPP.hs +++ b/Presence/XMPP.hs | |||
@@ -3,7 +3,6 @@ | |||
3 | {-# LANGUAGE ViewPatterns #-} | 3 | {-# LANGUAGE ViewPatterns #-} |
4 | module XMPP | 4 | module XMPP |
5 | ( module XMPPTypes | 5 | ( module XMPPTypes |
6 | , module SocketLike | ||
7 | , listenForXmppClients | 6 | , listenForXmppClients |
8 | , listenForRemotePeers | 7 | , listenForRemotePeers |
9 | , newServerConnections | 8 | , newServerConnections |
@@ -15,7 +14,6 @@ module XMPP | |||
15 | 14 | ||
16 | import ServerC | 15 | import ServerC |
17 | import XMPPTypes | 16 | import XMPPTypes |
18 | import SocketLike | ||
19 | import ByteStringOperators | 17 | import ByteStringOperators |
20 | import ControlMaybe | 18 | import ControlMaybe |
21 | import XMLToByteStrings | 19 | import XMLToByteStrings |
@@ -42,10 +40,7 @@ import System.IO | |||
42 | ) | 40 | ) |
43 | import Control.Concurrent.STM | 41 | import Control.Concurrent.STM |
44 | import Data.Conduit | 42 | import Data.Conduit |
45 | import qualified Data.Conduit.List as CL | ||
46 | import qualified Data.Conduit.Binary as CB | ||
47 | import Data.ByteString (ByteString) | 43 | import Data.ByteString (ByteString) |
48 | import qualified Data.ByteString.Char8 as S (putStrLn,append) | ||
49 | import qualified Data.ByteString.Lazy.Char8 as L | 44 | import qualified Data.ByteString.Lazy.Char8 as L |
50 | ( putStrLn | 45 | ( putStrLn |
51 | , fromChunks | 46 | , fromChunks |
@@ -62,8 +57,7 @@ import System.IO.Error (isDoesNotExistError) | |||
62 | import Control.Monad.IO.Class | 57 | import Control.Monad.IO.Class |
63 | import Control.Monad.Trans.Class | 58 | import Control.Monad.Trans.Class |
64 | import Control.Monad.Trans.Maybe | 59 | import Control.Monad.Trans.Maybe |
65 | import Text.XML.Stream.Parse (parseBytes,content) | 60 | import Text.XML.Stream.Parse (def,parseBytes,content) |
66 | import Text.XML.Stream.Render | ||
67 | import Data.XML.Types as XML | 61 | import Data.XML.Types as XML |
68 | import qualified Data.Text as S (takeWhile) | 62 | import qualified Data.Text as S (takeWhile) |
69 | import Data.Text.Encoding as S (decodeUtf8,encodeUtf8) | 63 | import Data.Text.Encoding as S (decodeUtf8,encodeUtf8) |
@@ -458,10 +452,6 @@ fromClient session cmdChan = doNestingXML $ do | |||
458 | withXML $ \xml -> do | 452 | withXML $ \xml -> do |
459 | log $ "end-of-document: " <++> bshow xml | 453 | log $ "end-of-document: " <++> bshow xml |
460 | 454 | ||
461 | prettyPrint prefix xs = | ||
462 | liftIO $ do | ||
463 | CL.sourceList xs $= renderBytes (def { rsPretty=True }) =$= CB.lines $$ CL.mapM_ (S.putStrLn . (prefix `S.append`)) | ||
464 | |||
465 | 455 | ||
466 | rosterPush to contact attrs = do | 456 | rosterPush to contact attrs = do |
467 | let n = name to | 457 | let n = name to |
diff --git a/Presence/XMPPTypes.hs b/Presence/XMPPTypes.hs index 4802002c..a44f7fb1 100644 --- a/Presence/XMPPTypes.hs +++ b/Presence/XMPPTypes.hs | |||
@@ -1,6 +1,9 @@ | |||
1 | {-# LANGUAGE OverloadedStrings #-} | 1 | {-# LANGUAGE OverloadedStrings #-} |
2 | {-# LANGUAGE TypeFamilies #-} | 2 | {-# LANGUAGE TypeFamilies #-} |
3 | module XMPPTypes where | 3 | module XMPPTypes |
4 | ( module XMPPTypes | ||
5 | , module SocketLike | ||
6 | ) where | ||
4 | 7 | ||
5 | import Network.Socket | 8 | import Network.Socket |
6 | ( Family(..) | 9 | ( Family(..) |
diff --git a/modules.svg b/modules.svg index 350ab062..c1f004fb 100644 --- a/modules.svg +++ b/modules.svg | |||
@@ -4,259 +4,264 @@ | |||
4 | <!-- Generated by graphviz version 2.26.3 (20100126.1600) | 4 | <!-- Generated by graphviz version 2.26.3 (20100126.1600) |
5 | --> | 5 | --> |
6 | <!-- Title: G Pages: 1 --> | 6 | <!-- Title: G Pages: 1 --> |
7 | <svg width="932pt" height="576pt" | 7 | <svg width="933pt" height="576pt" |
8 | viewBox="0.00 0.00 932.21 576.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> | 8 | viewBox="0.00 0.00 932.68 576.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> |
9 | <g id="graph1" class="graph" transform="scale(0.757895 0.757895) rotate(0) translate(4 756)"> | 9 | <g id="graph1" class="graph" transform="scale(0.664301 0.664301) rotate(0) translate(4 863.077)"> |
10 | <title>G</title> | 10 | <title>G</title> |
11 | <polygon fill="white" stroke="white" points="-4,5 -4,-756 1227,-756 1227,5 -4,5"/> | 11 | <polygon fill="white" stroke="white" points="-4,5 -4,-863.077 1401,-863.077 1401,5 -4,5"/> |
12 | <g id="graph2" class="cluster"><title>cluster_0</title> | 12 | <g id="graph2" class="cluster"><title>cluster_0</title> |
13 | <polygon fill="#ccffcc" stroke="#ccffcc" points="1080,-176.509 1080,-318.083 1214,-318.083 1214,-176.509 1080,-176.509"/> | 13 | <polygon fill="#ccffcc" stroke="#ccffcc" points="1074,-429.538 1074,-563.443 1208,-563.443 1208,-429.538 1074,-429.538"/> |
14 | <text text-anchor="middle" x="1147" y="-301.483" font-family="Times Roman,serif" font-size="14.00">Data</text> | 14 | <text text-anchor="middle" x="1141" y="-546.843" font-family="Times Roman,serif" font-size="14.00">Data</text> |
15 | </g> | 15 | </g> |
16 | <g id="graph3" class="cluster"><title>cluster_1</title> | 16 | <g id="graph3" class="cluster"><title>cluster_1</title> |
17 | <polygon fill="#ccffcc" stroke="#ccffcc" points="1030,-454.142 1030,-671.1 1172,-671.1 1172,-454.142 1030,-454.142"/> | 17 | <polygon fill="#ccffcc" stroke="#ccffcc" points="1246,-577.355 1246,-782.56 1388,-782.56 1388,-577.355 1246,-577.355"/> |
18 | <text text-anchor="middle" x="1101" y="-654.5" font-family="Times Roman,serif" font-size="14.00">Holumbus</text> | 18 | <text text-anchor="middle" x="1317" y="-765.96" font-family="Times Roman,serif" font-size="14.00">Holumbus</text> |
19 | </g> | 19 | </g> |
20 | <g id="graph4" class="cluster"><title>cluster_2</title> | 20 | <g id="graph4" class="cluster"><title>cluster_2</title> |
21 | <polygon fill="#99ff99" stroke="#99ff99" points="1038,-468.851 1038,-610.425 1164,-610.425 1164,-468.851 1038,-468.851"/> | 21 | <polygon fill="#99ff99" stroke="#99ff99" points="1254,-591.268 1254,-725.172 1380,-725.172 1380,-591.268 1254,-591.268"/> |
22 | <text text-anchor="middle" x="1101" y="-593.825" font-family="Times Roman,serif" font-size="14.00">Data</text> | 22 | <text text-anchor="middle" x="1317" y="-708.572" font-family="Times Roman,serif" font-size="14.00">Data</text> |
23 | </g> | 23 | </g> |
24 | <g id="graph5" class="cluster"><title>cluster_3</title> | 24 | <g id="graph5" class="cluster"><title>cluster_3</title> |
25 | <polygon fill="#ccffcc" stroke="#ccffcc" points="934,-14.709 934,-439.433 1072,-439.433 1072,-14.709 934,-14.709"/> | 25 | <polygon fill="#ccffcc" stroke="#ccffcc" points="185,-13.9122 185,-415.626 323,-415.626 323,-13.9122 185,-13.9122"/> |
26 | <text text-anchor="middle" x="1003" y="-422.833" font-family="Times Roman,serif" font-size="14.00">Text</text> | 26 | <text text-anchor="middle" x="254" y="-399.026" font-family="Times Roman,serif" font-size="14.00">Text</text> |
27 | </g> | 27 | </g> |
28 | <g id="graph6" class="cluster"><title>cluster_4</title> | 28 | <g id="graph6" class="cluster"><title>cluster_4</title> |
29 | <polygon fill="#99ff99" stroke="#99ff99" points="942,-29.4181 942,-378.758 1064,-378.758 1064,-29.4181 942,-29.4181"/> | 29 | <polygon fill="#99ff99" stroke="#99ff99" points="193,-27.8244 193,-358.239 315,-358.239 315,-27.8244 193,-27.8244"/> |
30 | <text text-anchor="middle" x="1003" y="-362.158" font-family="Times Roman,serif" font-size="14.00">XML</text> | 30 | <text text-anchor="middle" x="254" y="-341.639" font-family="Times Roman,serif" font-size="14.00">XML</text> |
31 | </g> | 31 | </g> |
32 | <g id="graph7" class="cluster"><title>cluster_5</title> | 32 | <g id="graph7" class="cluster"><title>cluster_5</title> |
33 | <polygon fill="#66ff66" stroke="#66ff66" points="950,-44.1271 950,-318.083 1056,-318.083 1056,-44.1271 950,-44.1271"/> | 33 | <polygon fill="#66ff66" stroke="#66ff66" points="201,-41.7365 201,-300.851 307,-300.851 307,-41.7365 201,-41.7365"/> |
34 | <text text-anchor="middle" x="1003" y="-301.483" font-family="Times Roman,serif" font-size="14.00">Stream</text> | 34 | <text text-anchor="middle" x="254" y="-284.251" font-family="Times Roman,serif" font-size="14.00">Stream</text> |
35 | </g> | 35 | </g> |
36 | <!-- u6 --> | 36 | <!-- u6 --> |
37 | <g id="node1" class="node"><title>u6</title> | 37 | <g id="node1" class="node"><title>u6</title> |
38 | <ellipse fill="none" stroke="black" cx="219" cy="-516.709" rx="62.0391" ry="18"/> | 38 | <ellipse fill="none" stroke="black" cx="327" cy="-636.912" rx="62.0391" ry="18"/> |
39 | <text text-anchor="middle" x="219" y="-512.609" font-family="Times Roman,serif" font-size="14.00">FGConsole</text> | 39 | <text text-anchor="middle" x="327" y="-632.812" font-family="Times Roman,serif" font-size="14.00">FGConsole</text> |
40 | </g> | 40 | </g> |
41 | <!-- monitortty --> | 41 | <!-- monitortty --> |
42 | <g id="node3" class="node"><title>monitortty</title> | 42 | <g id="node3" class="node"><title>monitortty</title> |
43 | <ellipse fill="none" stroke="black" cx="69" cy="-224.709" rx="68.9883" ry="18"/> | 43 | <ellipse fill="none" stroke="black" cx="69" cy="-474.912" rx="68.9883" ry="18"/> |
44 | <text text-anchor="middle" x="69" y="-220.609" font-family="Times Roman,serif" font-size="14.00">monitortty.c</text> | 44 | <text text-anchor="middle" x="69" y="-470.812" font-family="Times Roman,serif" font-size="14.00">monitortty.c</text> |
45 | </g> | 45 | </g> |
46 | <!-- u6->monitortty --> | 46 | <!-- u6->monitortty --> |
47 | <g id="edge2" class="edge"><title>u6->monitortty</title> | 47 | <g id="edge2" class="edge"><title>u6->monitortty</title> |
48 | <path fill="none" stroke="black" d="M209.843,-498.883C184.476,-449.502 113.178,-310.708 82.8901,-251.749"/> | 48 | <path fill="none" stroke="black" d="M300.025,-620.584C264.702,-599.132 200.926,-560.161 147,-525.912 132.547,-516.733 116.715,-506.429 103.114,-497.497"/> |
49 | <polygon fill="black" stroke="black" points="85.9108,-249.969 78.2281,-242.673 79.6843,-253.167 85.9108,-249.969"/> | 49 | <polygon fill="black" stroke="black" points="104.812,-494.425 94.5348,-491.852 100.965,-500.273 104.812,-494.425"/> |
50 | </g> | 50 | </g> |
51 | <!-- u15 --> | 51 | <!-- u16 --> |
52 | <g id="node4" class="node"><title>u15</title> | 52 | <g id="node4" class="node"><title>u16</title> |
53 | <ellipse fill="none" stroke="black" cx="529" cy="-516.709" rx="79.9115" ry="18"/> | 53 | <ellipse fill="none" stroke="black" cx="840" cy="-636.912" rx="79.9115" ry="18"/> |
54 | <text text-anchor="middle" x="529" y="-512.609" font-family="Times Roman,serif" font-size="14.00">LocalPeerCred</text> | 54 | <text text-anchor="middle" x="840" y="-632.812" font-family="Times Roman,serif" font-size="14.00">LocalPeerCred</text> |
55 | </g> | 55 | </g> |
56 | <!-- u9 --> | 56 | <!-- u9 --> |
57 | <g id="node8" class="node"><title>u9</title> | 57 | <g id="node9" class="node"><title>u9</title> |
58 | <ellipse fill="none" stroke="black" cx="324" cy="-91.709" rx="62.0391" ry="18"/> | 58 | <ellipse fill="none" stroke="black" cx="689" cy="-211.912" rx="62.0391" ry="18"/> |
59 | <text text-anchor="middle" x="324" y="-87.609" font-family="Times Roman,serif" font-size="14.00">SocketLike</text> | 59 | <text text-anchor="middle" x="689" y="-207.812" font-family="Times Roman,serif" font-size="14.00">SocketLike</text> |
60 | </g> | 60 | </g> |
61 | <!-- u15->u9 --> | 61 | <!-- u16->u9 --> |
62 | <g id="edge60" class="edge"><title>u15->u9</title> | 62 | <g id="edge60" class="edge"><title>u16->u9</title> |
63 | <path fill="none" stroke="black" d="M466.584,-505.417C385.334,-487.001 246.476,-441.956 185,-341.709 151.775,-287.53 156.934,-255.732 185,-198.709 204.791,-158.499 247.762,-129.159 280.723,-111.48"/> | 63 | <path fill="none" stroke="black" d="M835.359,-618.837C826.557,-585.107 806.394,-510.421 785,-448.912 758.143,-371.697 720.248,-282.931 701.093,-239.189"/> |
64 | <polygon fill="black" stroke="black" points="282.465,-114.519 289.726,-106.804 279.239,-108.307 282.465,-114.519"/> | 64 | <polygon fill="black" stroke="black" points="704.2,-237.56 696.972,-229.814 697.792,-240.377 704.2,-237.56"/> |
65 | </g> | 65 | </g> |
66 | <!-- u3 --> | 66 | <!-- u3 --> |
67 | <g id="node12" class="node"><title>u3</title> | 67 | <g id="node13" class="node"><title>u3</title> |
68 | <ellipse fill="none" stroke="black" cx="772" cy="-224.709" rx="78.0216" ry="18"/> | 68 | <ellipse fill="none" stroke="black" cx="948" cy="-474.912" rx="78.0216" ry="18"/> |
69 | <text text-anchor="middle" x="772" y="-220.609" font-family="Times Roman,serif" font-size="14.00">ControlMaybe</text> | 69 | <text text-anchor="middle" x="948" y="-470.812" font-family="Times Roman,serif" font-size="14.00">ControlMaybe</text> |
70 | </g> | 70 | </g> |
71 | <!-- u15->u3 --> | 71 | <!-- u16->u3 --> |
72 | <g id="edge58" class="edge"><title>u15->u3</title> | 72 | <g id="edge58" class="edge"><title>u16->u3</title> |
73 | <path fill="none" stroke="black" d="M543.835,-498.883C585.183,-449.197 701.864,-308.988 750.401,-250.664"/> | 73 | <path fill="none" stroke="black" d="M851.971,-618.956C870.946,-590.493 908.043,-534.848 930.162,-501.669"/> |
74 | <polygon fill="black" stroke="black" points="753.344,-252.599 757.05,-242.673 747.963,-248.121 753.344,-252.599"/> | 74 | <polygon fill="black" stroke="black" points="933.341,-503.21 935.976,-492.948 927.517,-499.327 933.341,-503.21"/> |
75 | </g> | 75 | </g> |
76 | <!-- u14 --> | 76 | <!-- u15 --> |
77 | <g id="node5" class="node"><title>u14</title> | 77 | <g id="node5" class="node"><title>u15</title> |
78 | <ellipse fill="none" stroke="black" cx="263" cy="-224.709" rx="68.9883" ry="18"/> | 78 | <ellipse fill="none" stroke="black" cx="589" cy="-474.912" rx="68.9883" ry="18"/> |
79 | <text text-anchor="middle" x="263" y="-220.609" font-family="Times Roman,serif" font-size="14.00">NestingXML</text> | 79 | <text text-anchor="middle" x="589" y="-470.812" font-family="Times Roman,serif" font-size="14.00">NestingXML</text> |
80 | </g> | ||
81 | <!-- u12 --> | ||
82 | <g id="node6" class="node"><title>u12</title> | ||
83 | <ellipse fill="none" stroke="black" cx="254" cy="-474.912" rx="97.9784" ry="18"/> | ||
84 | <text text-anchor="middle" x="254" y="-470.812" font-family="Times Roman,serif" font-size="14.00">XMLToByteStrings</text> | ||
85 | </g> | ||
86 | <!-- u13 --> | ||
87 | <g id="node26" class="node"><title>u13</title> | ||
88 | <ellipse fill="none" stroke="black" cx="254" cy="-211.912" rx="45.1673" ry="18"/> | ||
89 | <text text-anchor="middle" x="254" y="-207.812" font-family="Times Roman,serif" font-size="14.00">Render</text> | ||
90 | </g> | ||
91 | <!-- u12->u13 --> | ||
92 | <g id="edge54" class="edge"><title>u12->u13</title> | ||
93 | <path fill="none" stroke="black" d="M254,-456.835C254,-411.886 254,-294.784 254,-240.415"/> | ||
94 | <polygon fill="black" stroke="black" points="257.5,-240.116 254,-230.116 250.5,-240.116 257.5,-240.116"/> | ||
80 | </g> | 95 | </g> |
81 | <!-- u11 --> | 96 | <!-- u11 --> |
82 | <g id="node6" class="node"><title>u11</title> | 97 | <g id="node7" class="node"><title>u11</title> |
83 | <ellipse fill="none" stroke="black" cx="490" cy="-91.709" rx="86.1654" ry="18"/> | 98 | <ellipse fill="none" stroke="black" cx="436" cy="-211.912" rx="86.1654" ry="18"/> |
84 | <text text-anchor="middle" x="490" y="-87.609" font-family="Times Roman,serif" font-size="14.00">GetHostByAddr</text> | 99 | <text text-anchor="middle" x="436" y="-207.812" font-family="Times Roman,serif" font-size="14.00">GetHostByAddr</text> |
85 | </g> | 100 | </g> |
86 | <!-- u10 --> | 101 | <!-- u10 --> |
87 | <g id="node7" class="node"><title>u10</title> | 102 | <g id="node8" class="node"><title>u10</title> |
88 | <ellipse fill="none" stroke="black" cx="454" cy="-224.709" rx="66.0138" ry="18"/> | 103 | <ellipse fill="none" stroke="black" cx="436" cy="-474.912" rx="66.0138" ry="18"/> |
89 | <text text-anchor="middle" x="454" y="-220.609" font-family="Times Roman,serif" font-size="14.00">XMPPTypes</text> | 104 | <text text-anchor="middle" x="436" y="-470.812" font-family="Times Roman,serif" font-size="14.00">XMPPTypes</text> |
90 | </g> | 105 | </g> |
91 | <!-- u10->u11 --> | 106 | <!-- u10->u11 --> |
92 | <g id="edge54" class="edge"><title>u10->u11</title> | 107 | <g id="edge52" class="edge"><title>u10->u11</title> |
93 | <path fill="none" stroke="black" d="M458.93,-206.495C465.016,-184.01 475.427,-145.547 482.505,-119.399"/> | 108 | <path fill="none" stroke="black" d="M436,-456.835C436,-411.886 436,-294.784 436,-240.415"/> |
94 | <polygon fill="black" stroke="black" points="485.895,-120.27 485.129,-109.703 479.138,-118.441 485.895,-120.27"/> | 109 | <polygon fill="black" stroke="black" points="439.5,-240.116 436,-230.116 432.5,-240.116 439.5,-240.116"/> |
95 | </g> | 110 | </g> |
96 | <!-- u10->u9 --> | 111 | <!-- u10->u9 --> |
97 | <g id="edge52" class="edge"><title>u10->u9</title> | 112 | <g id="edge50" class="edge"><title>u10->u9</title> |
98 | <path fill="none" stroke="black" d="M436.737,-207.048C414.107,-183.895 374.271,-143.14 348.519,-116.794"/> | 113 | <path fill="none" stroke="black" d="M452.993,-457.248C496.922,-411.582 614.35,-289.513 665.095,-236.762"/> |
99 | <polygon fill="black" stroke="black" points="350.827,-114.148 341.334,-109.443 345.821,-119.041 350.827,-114.148"/> | 114 | <polygon fill="black" stroke="black" points="667.671,-239.133 672.081,-229.5 662.626,-234.28 667.671,-239.133"/> |
100 | </g> | 115 | </g> |
101 | <!-- u2 --> | 116 | <!-- u2 --> |
102 | <g id="node13" class="node"><title>u2</title> | 117 | <g id="node14" class="node"><title>u2</title> |
103 | <ellipse fill="none" stroke="black" cx="705" cy="-91.709" rx="111.181" ry="18"/> | 118 | <ellipse fill="none" stroke="black" cx="880" cy="-211.912" rx="111.181" ry="18"/> |
104 | <text text-anchor="middle" x="705" y="-87.609" font-family="Times Roman,serif" font-size="14.00">ByteStringOperators</text> | 119 | <text text-anchor="middle" x="880" y="-207.812" font-family="Times Roman,serif" font-size="14.00">ByteStringOperators</text> |
105 | </g> | 120 | </g> |
106 | <!-- u10->u2 --> | 121 | <!-- u10->u2 --> |
107 | <g id="edge50" class="edge"><title>u10->u2</title> | 122 | <g id="edge48" class="edge"><title>u10->u2</title> |
108 | <path fill="none" stroke="black" d="M484.276,-208.666C528.957,-184.991 612.7,-140.617 663.204,-113.856"/> | 123 | <path fill="none" stroke="black" d="M473.383,-459.993C547.487,-430.108 710.159,-362.868 760,-328.912 798.623,-302.599 836.018,-263.248 858.523,-237.577"/> |
109 | <polygon fill="black" stroke="black" points="665.033,-116.848 672.23,-109.073 661.755,-110.663 665.033,-116.848"/> | 124 | <polygon fill="black" stroke="black" points="861.393,-239.609 865.289,-229.757 856.099,-235.029 861.393,-239.609"/> |
110 | </g> | 125 | </g> |
111 | <!-- u8 --> | 126 | <!-- u8 --> |
112 | <g id="node9" class="node"><title>u8</title> | 127 | <g id="node10" class="node"><title>u8</title> |
113 | <ellipse fill="none" stroke="black" cx="588" cy="-224.709" rx="50.0315" ry="18"/> | 128 | <ellipse fill="none" stroke="black" cx="726" cy="-474.912" rx="50.0315" ry="18"/> |
114 | <text text-anchor="middle" x="588" y="-220.609" font-family="Times Roman,serif" font-size="14.00">ServerC</text> | 129 | <text text-anchor="middle" x="726" y="-470.812" font-family="Times Roman,serif" font-size="14.00">ServerC</text> |
115 | </g> | 130 | </g> |
116 | <!-- u8->u9 --> | 131 | <!-- u8->u9 --> |
117 | <g id="edge48" class="edge"><title>u8->u9</title> | 132 | <g id="edge46" class="edge"><title>u8->u9</title> |
118 | <path fill="none" stroke="black" d="M558.739,-209.968C511.373,-186.105 417.82,-138.975 364.227,-111.975"/> | 133 | <path fill="none" stroke="black" d="M723.457,-456.835C717.12,-411.792 700.59,-294.294 692.962,-240.076"/> |
119 | <polygon fill="black" stroke="black" points="365.529,-108.712 355.024,-107.339 362.38,-114.963 365.529,-108.712"/> | 134 | <polygon fill="black" stroke="black" points="696.42,-239.531 691.561,-230.116 689.488,-240.506 696.42,-239.531"/> |
120 | </g> | 135 | </g> |
121 | <!-- u8->u2 --> | 136 | <!-- u8->u2 --> |
122 | <g id="edge46" class="edge"><title>u8->u2</title> | 137 | <g id="edge44" class="edge"><title>u8->u2</title> |
123 | <path fill="none" stroke="black" d="M603.296,-207.322C623.392,-184.477 658.857,-144.162 682.145,-117.69"/> | 138 | <path fill="none" stroke="black" d="M736.344,-457.248C762.745,-412.159 832.763,-292.583 864.26,-238.793"/> |
124 | <polygon fill="black" stroke="black" points="684.973,-119.774 688.95,-109.954 679.717,-115.15 684.973,-119.774"/> | 139 | <polygon fill="black" stroke="black" points="867.466,-240.244 869.499,-229.846 861.425,-236.707 867.466,-240.244"/> |
125 | </g> | 140 | </g> |
126 | <!-- u7 --> | 141 | <!-- u7 --> |
127 | <g id="node10" class="node"><title>u7</title> | 142 | <g id="node11" class="node"><title>u7</title> |
128 | <ellipse fill="none" stroke="black" cx="666" cy="-516.709" rx="39.1069" ry="18"/> | 143 | <ellipse fill="none" stroke="black" cx="703" cy="-636.912" rx="39.1069" ry="18"/> |
129 | <text text-anchor="middle" x="666" y="-512.609" font-family="Times Roman,serif" font-size="14.00">XMPP</text> | 144 | <text text-anchor="middle" x="703" y="-632.812" font-family="Times Roman,serif" font-size="14.00">XMPP</text> |
130 | </g> | 145 | </g> |
131 | <!-- u7->u14 --> | 146 | <!-- u7->u15 --> |
132 | <g id="edge44" class="edge"><title>u7->u14</title> | 147 | <g id="edge42" class="edge"><title>u7->u15</title> |
133 | <path fill="none" stroke="black" d="M645.394,-501.171C637.062,-495.139 627.244,-488.342 618,-482.709 501.721,-411.854 448.727,-431.086 346,-341.709 316.214,-315.794 291.489,-277.107 276.98,-251.405"/> | 148 | <path fill="none" stroke="black" d="M690.8,-619.575C670.869,-591.252 631.196,-534.875 607.695,-501.478"/> |
134 | <polygon fill="black" stroke="black" points="280.001,-249.636 272.106,-242.571 273.872,-253.018 280.001,-249.636"/> | 149 | <polygon fill="black" stroke="black" points="610.425,-499.276 601.807,-493.112 604.7,-503.304 610.425,-499.276"/> |
135 | </g> | 150 | </g> |
136 | <!-- u7->u10 --> | 151 | <!-- u7->u12 --> |
137 | <g id="edge40" class="edge"><title>u7->u10</title> | 152 | <g id="edge40" class="edge"><title>u7->u12</title> |
138 | <path fill="none" stroke="black" d="M651.837,-499.733C626.34,-468.935 571.424,-401.498 529,-341.709 507.458,-311.349 484.639,-275.086 469.908,-251.063"/> | 153 | <path fill="none" stroke="black" d="M669.472,-627.617C607.619,-610.12 471.755,-570.06 361,-525.912 339.151,-517.203 315.483,-506.104 295.975,-496.486"/> |
139 | <polygon fill="black" stroke="black" points="472.875,-249.205 464.678,-242.493 466.9,-252.852 472.875,-249.205"/> | 154 | <polygon fill="black" stroke="black" points="297.271,-493.222 286.759,-491.9 294.153,-499.489 297.271,-493.222"/> |
140 | </g> | 155 | </g> |
141 | <!-- u7->u9 --> | 156 | <!-- u7->u10 --> |
142 | <g id="edge38" class="edge"><title>u7->u9</title> | 157 | <g id="edge38" class="edge"><title>u7->u10</title> |
143 | <path fill="none" stroke="black" d="M645.232,-501.429C636.877,-495.433 627.086,-488.593 618,-482.709 514.479,-415.674 451.377,-441.568 379,-341.709 365.991,-323.761 339.851,-181.932 328.95,-120.225"/> | 158 | <path fill="none" stroke="black" d="M677.801,-623.116C640.772,-602.671 569.694,-562.766 511,-525.912 496.779,-516.983 481.392,-506.643 468.277,-497.617"/> |
144 | <polygon fill="black" stroke="black" points="332.335,-119.264 327.158,-110.02 325.441,-120.475 332.335,-119.264"/> | 159 | <polygon fill="black" stroke="black" points="470.237,-494.717 460.022,-491.904 466.253,-500.473 470.237,-494.717"/> |
145 | </g> | 160 | </g> |
146 | <!-- u7->u8 --> | 161 | <!-- u7->u8 --> |
147 | <g id="edge36" class="edge"><title>u7->u8</title> | 162 | <g id="edge36" class="edge"><title>u7->u8</title> |
148 | <path fill="none" stroke="black" d="M661.121,-498.443C647.906,-448.974 611.356,-312.144 595.5,-252.786"/> | 163 | <path fill="none" stroke="black" d="M705.594,-618.644C709.58,-590.569 717.244,-536.587 721.961,-503.362"/> |
149 | <polygon fill="black" stroke="black" points="598.84,-251.726 592.877,-242.968 592.077,-253.533 598.84,-251.726"/> | 164 | <polygon fill="black" stroke="black" points="725.44,-503.755 723.381,-493.363 718.51,-502.771 725.44,-503.755"/> |
150 | </g> | 165 | </g> |
151 | <!-- u7->u3 --> | 166 | <!-- u7->u3 --> |
152 | <g id="edge34" class="edge"><title>u7->u3</title> | 167 | <g id="edge34" class="edge"><title>u7->u3</title> |
153 | <path fill="none" stroke="black" d="M672.471,-498.883C690.36,-449.604 740.573,-311.28 762.052,-252.114"/> | 168 | <path fill="none" stroke="black" d="M724.377,-621.494C732.642,-615.606 742.212,-608.876 751,-602.912 806.849,-565.011 872.813,-522.623 912.477,-497.388"/> |
154 | <polygon fill="black" stroke="black" points="765.356,-253.267 765.479,-242.673 758.777,-250.879 765.356,-253.267"/> | 169 | <polygon fill="black" stroke="black" points="914.447,-500.283 921.01,-491.965 910.693,-494.375 914.447,-500.283"/> |
155 | </g> | 170 | </g> |
156 | <!-- u7->u2 --> | 171 | <!-- u7->u2 --> |
157 | <g id="edge32" class="edge"><title>u7->u2</title> | 172 | <g id="edge32" class="edge"><title>u7->u2</title> |
158 | <path fill="none" stroke="black" d="M666.288,-498.707C667.234,-450.124 671.041,-312.34 685,-198.709 688.312,-171.752 694.208,-141.339 698.744,-119.846"/> | 173 | <path fill="none" stroke="black" d="M718.361,-620.074C736.568,-599.321 766.735,-562.317 785,-525.912 834.788,-426.677 863.837,-296.502 874.861,-240.047"/> |
159 | <polygon fill="black" stroke="black" points="702.229,-120.289 700.907,-109.777 695.385,-118.818 702.229,-120.289"/> | 174 | <polygon fill="black" stroke="black" points="878.327,-240.558 876.769,-230.078 871.452,-239.242 878.327,-240.558"/> |
160 | </g> | ||
161 | <!-- u12 --> | ||
162 | <g id="node25" class="node"><title>u12</title> | ||
163 | <ellipse fill="none" stroke="black" cx="1003" cy="-224.709" rx="45.1673" ry="18"/> | ||
164 | <text text-anchor="middle" x="1003" y="-220.609" font-family="Times Roman,serif" font-size="14.00">Render</text> | ||
165 | </g> | ||
166 | <!-- u7->u12 --> | ||
167 | <g id="edge42" class="edge"><title>u7->u12</title> | ||
168 | <path fill="none" stroke="black" d="M696.807,-505.505C754.706,-483.007 880.527,-427.069 954,-341.709 976.349,-315.744 989.63,-278.131 996.612,-252.614"/> | ||
169 | <polygon fill="black" stroke="black" points="1000.03,-253.376 999.146,-242.818 993.253,-251.623 1000.03,-253.376"/> | ||
170 | </g> | 175 | </g> |
171 | <!-- u4 --> | 176 | <!-- u4 --> |
172 | <g id="node11" class="node"><title>u4</title> | 177 | <g id="node12" class="node"><title>u4</title> |
173 | <ellipse fill="none" stroke="black" cx="983" cy="-516.709" rx="39.1069" ry="18"/> | 178 | <ellipse fill="none" stroke="black" cx="1157" cy="-636.912" rx="39.1069" ry="18"/> |
174 | <text text-anchor="middle" x="983" y="-512.609" font-family="Times Roman,serif" font-size="14.00">UTmp</text> | 179 | <text text-anchor="middle" x="1157" y="-632.812" font-family="Times Roman,serif" font-size="14.00">UTmp</text> |
175 | </g> | 180 | </g> |
176 | <!-- u5 --> | 181 | <!-- u5 --> |
177 | <g id="node17" class="node"><title>u5</title> | 182 | <g id="node18" class="node"><title>u5</title> |
178 | <ellipse fill="none" stroke="black" cx="1147" cy="-224.709" rx="59.065" ry="18"/> | 183 | <ellipse fill="none" stroke="black" cx="1141" cy="-474.912" rx="59.065" ry="18"/> |
179 | <text text-anchor="middle" x="1147" y="-220.609" font-family="Times Roman,serif" font-size="14.00">BitSyntax</text> | 184 | <text text-anchor="middle" x="1141" y="-470.812" font-family="Times Roman,serif" font-size="14.00">BitSyntax</text> |
180 | </g> | 185 | </g> |
181 | <!-- u4->u5 --> | 186 | <!-- u4->u5 --> |
182 | <g id="edge30" class="edge"><title>u4->u5</title> | 187 | <g id="edge30" class="edge"><title>u4->u5</title> |
183 | <path fill="none" stroke="black" d="M993.012,-498.883C1020.75,-449.502 1098.7,-310.708 1131.81,-251.749"/> | 188 | <path fill="none" stroke="black" d="M1155.2,-618.644C1152.42,-590.569 1147.09,-536.587 1143.81,-503.362"/> |
184 | <polygon fill="black" stroke="black" points="1135.07,-253.106 1136.91,-242.673 1128.96,-249.678 1135.07,-253.106"/> | 189 | <polygon fill="black" stroke="black" points="1147.29,-502.97 1142.82,-493.363 1140.32,-503.658 1147.29,-502.97"/> |
185 | </g> | 190 | </g> |
186 | <!-- u1 --> | 191 | <!-- u1 --> |
187 | <g id="node14" class="node"><title>u1</title> | 192 | <g id="node15" class="node"><title>u1</title> |
188 | <ellipse fill="none" stroke="black" cx="826" cy="-516.709" rx="62.0391" ry="18"/> | 193 | <ellipse fill="none" stroke="black" cx="1038" cy="-636.912" rx="62.0391" ry="18"/> |
189 | <text text-anchor="middle" x="826" y="-512.609" font-family="Times Roman,serif" font-size="14.00">ConfigFiles</text> | 194 | <text text-anchor="middle" x="1038" y="-632.812" font-family="Times Roman,serif" font-size="14.00">ConfigFiles</text> |
190 | </g> | 195 | </g> |
191 | <!-- u1->u3 --> | 196 | <!-- u1->u3 --> |
192 | <g id="edge28" class="edge"><title>u1->u3</title> | 197 | <g id="edge28" class="edge"><title>u1->u3</title> |
193 | <path fill="none" stroke="black" d="M822.622,-498.443C813.493,-449.077 788.274,-312.711 777.261,-253.156"/> | 198 | <path fill="none" stroke="black" d="M1028.02,-618.956C1012.28,-590.614 981.561,-535.323 963.102,-502.096"/> |
194 | <polygon fill="black" stroke="black" points="780.637,-252.165 775.377,-242.968 773.754,-253.438 780.637,-252.165"/> | 199 | <polygon fill="black" stroke="black" points="965.936,-499.99 958.02,-492.948 959.817,-503.39 965.936,-499.99"/> |
195 | </g> | 200 | </g> |
196 | <!-- u1->u2 --> | 201 | <!-- u1->u2 --> |
197 | <g id="edge26" class="edge"><title>u1->u2</title> | 202 | <g id="edge26" class="edge"><title>u1->u2</title> |
198 | <path fill="none" stroke="black" d="M834.525,-498.52C857.009,-447.706 912.623,-301.263 859,-198.709 837.813,-158.189 793.52,-129.924 757.852,-112.663"/> | 203 | <path fill="none" stroke="black" d="M1040.98,-618.772C1045.88,-584.622 1053.38,-508.832 1035,-448.912 1008.58,-362.764 940.542,-278.49 904.02,-237.564"/> |
199 | <polygon fill="black" stroke="black" points="759.061,-109.364 748.519,-108.298 756.095,-115.705 759.061,-109.364"/> | 204 | <polygon fill="black" stroke="black" points="906.458,-235.042 897.157,-229.969 901.264,-239.735 906.458,-235.042"/> |
200 | </g> | 205 | </g> |
201 | <!-- u0 --> | 206 | <!-- u0 --> |
202 | <g id="node15" class="node"><title>u0</title> | 207 | <g id="node16" class="node"><title>u0</title> |
203 | <ellipse fill="none" stroke="black" cx="781" cy="-718.709" rx="34.2406" ry="18"/> | 208 | <ellipse fill="none" stroke="black" cx="993" cy="-827.912" rx="34.2406" ry="18"/> |
204 | <text text-anchor="middle" x="781" y="-714.609" font-family="Times Roman,serif" font-size="14.00">Main</text> | 209 | <text text-anchor="middle" x="993" y="-823.812" font-family="Times Roman,serif" font-size="14.00">Main</text> |
205 | </g> | 210 | </g> |
206 | <!-- u0->u6 --> | 211 | <!-- u0->u6 --> |
207 | <g id="edge18" class="edge"><title>u0->u6</title> | 212 | <g id="edge18" class="edge"><title>u0->u6</title> |
208 | <path fill="none" stroke="black" d="M752.156,-709.054C693.283,-689.277 555.123,-642.496 440,-600.709 379.432,-578.724 310.044,-552.116 265.428,-534.821"/> | 213 | <path fill="none" stroke="black" d="M963.09,-819.334C859.502,-789.627 515.098,-690.856 381.048,-652.412"/> |
209 | <polygon fill="black" stroke="black" points="266.609,-531.525 256.021,-531.17 264.077,-538.051 266.609,-531.525"/> | 214 | <polygon fill="black" stroke="black" points="381.964,-649.034 371.386,-649.642 380.034,-655.763 381.964,-649.034"/> |
210 | </g> | 215 | </g> |
211 | <!-- u0->u15 --> | 216 | <!-- u0->u16 --> |
212 | <g id="edge22" class="edge"><title>u0->u15</title> | 217 | <g id="edge22" class="edge"><title>u0->u16</title> |
213 | <path fill="none" stroke="black" d="M759.768,-704.643C728.021,-683.325 666.706,-641.035 618,-600.709 595.435,-582.026 571.359,-559.101 553.945,-541.923"/> | 218 | <path fill="none" stroke="black" d="M979.69,-811.296C952.947,-777.912 892.53,-702.489 860.627,-662.663"/> |
214 | <polygon fill="black" stroke="black" points="556.004,-539.034 546.443,-534.47 551.071,-544.001 556.004,-539.034"/> | 219 | <polygon fill="black" stroke="black" points="863.258,-660.349 854.275,-654.732 857.795,-664.725 863.258,-660.349"/> |
215 | </g> | 220 | </g> |
216 | <!-- u0->u7 --> | 221 | <!-- u0->u7 --> |
217 | <g id="edge20" class="edge"><title>u0->u7</title> | 222 | <g id="edge20" class="edge"><title>u0->u7</title> |
218 | <path fill="none" stroke="black" d="M770.996,-701.136C750.776,-665.62 704.944,-585.116 681.08,-543.198"/> | 223 | <path fill="none" stroke="black" d="M961.639,-820.82C911.851,-808.201 813.932,-777.683 751,-720.912 733.848,-705.439 721.271,-682.347 713.305,-664.289"/> |
219 | <polygon fill="black" stroke="black" points="684.052,-541.344 676.063,-534.385 677.969,-544.807 684.052,-541.344"/> | 224 | <polygon fill="black" stroke="black" points="716.445,-662.726 709.353,-654.854 709.988,-665.43 716.445,-662.726"/> |
220 | </g> | 225 | </g> |
221 | <!-- u0->u4 --> | 226 | <!-- u0->u4 --> |
222 | <g id="edge16" class="edge"><title>u0->u4</title> | 227 | <g id="edge16" class="edge"><title>u0->u4</title> |
223 | <path fill="none" stroke="black" d="M802.876,-704.86C833.726,-684.607 890.636,-644.524 930,-600.709 945.655,-583.284 959.619,-560.699 969.279,-543.337"/> | 228 | <path fill="none" stroke="black" d="M1012.79,-812.819C1037.37,-793.407 1079.65,-757.778 1109,-720.912 1123.12,-703.173 1135.7,-680.784 1144.43,-663.582"/> |
224 | <polygon fill="black" stroke="black" points="972.492,-544.753 974.186,-534.295 966.34,-541.414 972.492,-544.753"/> | 229 | <polygon fill="black" stroke="black" points="1147.57,-665.135 1148.87,-654.621 1141.3,-662.026 1147.57,-665.135"/> |
225 | </g> | 230 | </g> |
226 | <!-- u0->u3 --> | 231 | <!-- u0->u3 --> |
227 | <g id="edge14" class="edge"><title>u0->u3</title> | 232 | <g id="edge14" class="edge"><title>u0->u3</title> |
228 | <path fill="none" stroke="black" d="M775.812,-700.918C769.42,-677.992 758.928,-636.787 755,-600.709 740.924,-471.406 759.014,-315.863 767.76,-253.057"/> | 233 | <path fill="none" stroke="black" d="M987.684,-809.918C981.665,-788.799 972.045,-752.63 967,-720.912 954.542,-642.584 950.166,-548.874 948.698,-503.007"/> |
229 | <polygon fill="black" stroke="black" points="771.28,-253.167 769.226,-242.773 764.35,-252.179 771.28,-253.167"/> | 234 | <polygon fill="black" stroke="black" points="952.194,-502.822 948.398,-492.931 945.197,-503.03 952.194,-502.822"/> |
230 | </g> | 235 | </g> |
231 | <!-- u0->u2 --> | 236 | <!-- u0->u2 --> |
232 | <g id="edge12" class="edge"><title>u0->u2</title> | 237 | <g id="edge12" class="edge"><title>u0->u2</title> |
233 | <path fill="none" stroke="black" d="M802.772,-704.719C830.744,-685.294 877.96,-647.237 897,-600.709 925.504,-531.054 935.45,-283.188 885,-198.709 859.147,-155.419 808.473,-127.629 767.461,-111.25"/> | 238 | <path fill="none" stroke="black" d="M1025.36,-822.185C1073.96,-811.674 1164.42,-784.272 1205,-720.912 1237.61,-669.995 1239.68,-502.671 1212,-448.912 1153.72,-335.696 1013.52,-264.6 935.23,-232.31"/> |
234 | <polygon fill="black" stroke="black" points="768.659,-107.961 758.069,-107.629 766.14,-114.492 768.659,-107.961"/> | 239 | <polygon fill="black" stroke="black" points="936.119,-228.893 925.536,-228.379 933.488,-235.38 936.119,-228.893"/> |
235 | </g> | 240 | </g> |
236 | <!-- u0->u1 --> | 241 | <!-- u0->u1 --> |
237 | <g id="edge10" class="edge"><title>u0->u1</title> | 242 | <g id="edge10" class="edge"><title>u0->u1</title> |
238 | <path fill="none" stroke="black" d="M784.993,-700.783C792.846,-665.534 810.348,-586.97 819.747,-544.78"/> | 243 | <path fill="none" stroke="black" d="M997.233,-809.943C1005.11,-776.527 1022.05,-704.612 1031.42,-664.82"/> |
239 | <polygon fill="black" stroke="black" points="823.193,-545.407 821.951,-534.885 816.36,-543.885 823.193,-545.407"/> | 244 | <polygon fill="black" stroke="black" points="1034.86,-665.509 1033.74,-654.972 1028.04,-663.903 1034.86,-665.509"/> |
240 | </g> | 245 | </g> |
241 | <!-- u16 --> | 246 | <!-- u17 --> |
242 | <g id="node20" class="node"><title>u16</title> | 247 | <g id="node21" class="node"><title>u17</title> |
243 | <ellipse fill="none" stroke="black" cx="1101" cy="-516.709" rx="55.0898" ry="18"/> | 248 | <ellipse fill="none" stroke="black" cx="1317" cy="-636.912" rx="55.0898" ry="18"/> |
244 | <text text-anchor="middle" x="1101" y="-512.609" font-family="Times Roman,serif" font-size="14.00">MultiMap</text> | 249 | <text text-anchor="middle" x="1317" y="-632.812" font-family="Times Roman,serif" font-size="14.00">MultiMap</text> |
245 | </g> | ||
246 | <!-- u0->u16 --> | ||
247 | <g id="edge24" class="edge"><title>u0->u16</title> | ||
248 | <path fill="none" stroke="black" d="M811.634,-710.657C863.554,-695.83 970.18,-660.171 1042,-600.709 1061.05,-584.934 1076.79,-561.571 1087.21,-543.486"/> | ||
249 | <polygon fill="black" stroke="black" points="1090.36,-545.018 1092.16,-534.577 1084.24,-541.618 1090.36,-545.018"/> | ||
250 | </g> | 250 | </g> |
251 | <!-- u13 --> | 251 | <!-- u0->u17 --> |
252 | <g id="node24" class="node"><title>u13</title> | 252 | <g id="edge24" class="edge"><title>u0->u17</title> |
253 | <ellipse fill="none" stroke="black" cx="1003" cy="-91.709" rx="38.9134" ry="18"/> | 253 | <path fill="none" stroke="black" d="M1024.97,-821.259C1078.01,-808.945 1185.53,-778.455 1258,-720.912 1277.37,-705.529 1293.08,-682.133 1303.41,-663.935"/> |
254 | <text text-anchor="middle" x="1003" y="-87.609" font-family="Times Roman,serif" font-size="14.00">Token</text> | 254 | <polygon fill="black" stroke="black" points="1306.58,-665.417 1308.3,-654.963 1300.44,-662.063 1306.58,-665.417"/> |
255 | </g> | 255 | </g> |
256 | <!-- u12->u13 --> | 256 | <!-- u14 --> |
257 | <g id="edge56" class="edge"><title>u12->u13</title> | 257 | <g id="node25" class="node"><title>u14</title> |
258 | <path fill="none" stroke="black" d="M1003,-206.495C1003,-184.235 1003,-146.314 1003,-120.186"/> | 258 | <ellipse fill="none" stroke="black" cx="254" cy="-86.9122" rx="38.9134" ry="18"/> |
259 | <polygon fill="black" stroke="black" points="1006.5,-120.13 1003,-110.13 999.5,-120.13 1006.5,-120.13"/> | 259 | <text text-anchor="middle" x="254" y="-82.8122" font-family="Times Roman,serif" font-size="14.00">Token</text> |
260 | </g> | ||
261 | <!-- u13->u14 --> | ||
262 | <g id="edge56" class="edge"><title>u13->u14</title> | ||
263 | <path fill="none" stroke="black" d="M254,-193.736C254,-173.185 254,-139.459 254,-115.401"/> | ||
264 | <polygon fill="black" stroke="black" points="257.5,-115.11 254,-105.11 250.5,-115.11 257.5,-115.11"/> | ||
260 | </g> | 265 | </g> |
261 | </g> | 266 | </g> |
262 | </svg> | 267 | </svg> |