@golemio/pid 6.0.1-dev.2901184022 → 6.0.1-dev.2912471131

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/docs/architecture/diagrams/context.mmd +114 -0
  2. package/docs/architecture/diagrams/context.svg +1 -0
  3. package/docs/architecture/diagrams/platform-ingestion.mmd +94 -0
  4. package/docs/architecture/diagrams/platform-ingestion.svg +1 -0
  5. package/docs/architecture/diagrams/platform-serving.mmd +81 -0
  6. package/docs/architecture/diagrams/platform-serving.svg +1 -0
  7. package/docs/architecture/index.md +105 -0
  8. package/docs/assets/logos/README.md +38 -0
  9. package/docs/assets/logos/arriva.svg +9 -0
  10. package/docs/assets/logos/azure-blob-storage.svg +1 -0
  11. package/docs/assets/logos/azure-kubernetes-service.svg +1 -0
  12. package/docs/assets/logos/azure-table-storage.svg +1 -0
  13. package/docs/assets/logos/catch.png +0 -0
  14. package/docs/assets/logos/cd-telematika.png +0 -0
  15. package/docs/assets/logos/ceske-drahy.svg +15 -0
  16. package/docs/assets/logos/chaps.png +0 -0
  17. package/docs/assets/logos/citymove.png +0 -0
  18. package/docs/assets/logos/cloudflare.png +0 -0
  19. package/docs/assets/logos/dpp.svg +119 -0
  20. package/docs/assets/logos/envoy.svg +1 -0
  21. package/docs/assets/logos/golemio.svg +1 -0
  22. package/docs/assets/logos/google-maps.svg +78 -0
  23. package/docs/assets/logos/grafana-loki.png +0 -0
  24. package/docs/assets/logos/grafana.svg +57 -0
  25. package/docs/assets/logos/mikroelektronika.png +0 -0
  26. package/docs/assets/logos/nodejs.svg +39 -0
  27. package/docs/assets/logos/pid-litacka.svg +17 -0
  28. package/docs/assets/logos/pid.svg +1 -0
  29. package/docs/assets/logos/postgresql.svg +22 -0
  30. package/docs/assets/logos/rabbitmq.svg +54 -0
  31. package/docs/assets/logos/ropid.svg +1 -0
  32. package/docs/assets/logos/seznam.svg +115 -0
  33. package/docs/assets/logos/telmax.png +0 -0
  34. package/docs/assets/logos/typescript.svg +1 -0
  35. package/docs/assets/logos/valkey.svg +58 -0
  36. package/docs/assets/logos/varnish.svg +21 -0
  37. package/docs/asyncapi.yaml +5 -3
  38. package/docs/cache/types/redis.md +1 -1
  39. package/docs/implementation_documentation.md +40 -42
  40. package/docs/index.md +382 -0
  41. package/docs/jis/index.md +84 -94
  42. package/docs/openapi-input.yaml +3 -2
  43. package/docs/openapi-output.yaml +3 -1
  44. package/package.json +2 -2
  45. package/docs/architecture/pid_architecture_overview.drawio +0 -177
@@ -0,0 +1,94 @@
1
+ ---
2
+ title: PID Polohy – příjem a zpracování dat
3
+ config:
4
+ htmlLabels: false
5
+ flowchart:
6
+ curve: basis
7
+ wrappingWidth: 400
8
+ nodeSpacing: 25
9
+ rankSpacing: 45
10
+ ---
11
+ flowchart TB
12
+ %% Šipka = směr toku dat. Plná = odesílatel data posílá (push), přerušovaná = příjemce si data stahuje (pull).
13
+
14
+ subgraph sources["Zdroje dat"]
15
+ direction LR
16
+ rtTcp["Dispečinky DPP (DORIS, AUDIS):<br/>TCP tramvaje, autobusy"]
17
+ rtMetro["Metro DPP přes MPVnet proxy:<br/>TCP"]
18
+ rtHttp["RT data HTTP (MPVnet)<br/>vč. Arriva City"]
19
+ jisVymi["VYMI (JIS)"]
20
+ tabulator["Tabulátor (presety tabulí)"]
21
+ pullSources["ROPID FTPS,<br/>Seznam autobusů"]
22
+ end
23
+
24
+ subgraph ingest["Příjem RT dat"]
25
+ direction LR
26
+ envoyTcp@{ img: "../../assets/logos/envoy.svg", label: "Envoy Gateway (TCP)", pos: "b", h: 32, constraint: "on" }
27
+ dataProxy["Data Proxy<br/>(příjem HTTP/TCP,<br/>přeposílání TCP toků DPP do MPVnet)"]
28
+ end
29
+
30
+ mpvnetOut["MPVnet (ROPID)"]
31
+
32
+ subgraph vp["Dedikované služby Polohy vozidel (VP)"]
33
+ direction TB
34
+ tcpIg["TCP Input Gateway<br/>(jen @golemio/core)"]
35
+ vpIg["VP Input Gateway<br/>(@golemio/pid)"]
36
+ cron["Cron Tasks"]
37
+ rabbitmq@{ img: "../../assets/logos/rabbitmq.svg", label: "RabbitMQ (exchange vehicle-positions)", pos: "b", h: 32, constraint: "on" }
38
+ vpIe["VP Integration Engine<br/>(@golemio/pid: workery)"]
39
+ end
40
+
41
+ subgraph rawStorage["Archiv surových dat a statická data"]
42
+ direction LR
43
+ tableStorage@{ img: "../../assets/logos/azure-table-storage.svg", label: "Azure Table Storage (raw TCP data)", pos: "b", h: 32, constraint: "on" }
44
+ blobStorage@{ img: "../../assets/logos/azure-blob-storage.svg", label: "Azure Blob Storage (raw HTTP data, statická data)", pos: "b", h: 32, constraint: "on" }
45
+ end
46
+
47
+ loki@{ img: "../../assets/logos/grafana-loki.png", label: "Grafana Loki", pos: "b", h: 32, constraint: "on" }
48
+
49
+ subgraph storage["Databázová vrstva"]
50
+ direction LR
51
+ postgres@{ img: "../../assets/logos/postgresql.svg", label: "PostgreSQL + PostGIS (VP cluster)", pos: "b", h: 40, constraint: "on" }
52
+ valkey@{ img: "../../assets/logos/valkey.svg", label: "Valkey (Redis API)", pos: "b", h: 32, constraint: "on" }
53
+ end
54
+
55
+ rtTcp -- "TCP XML" --> envoyTcp
56
+ rtMetro -- "TCP XML" --> envoyTcp
57
+ dataProxy -- "TCP (tramvaje, autobusy)" --> mpvnetOut
58
+ envoyTcp --> dataProxy
59
+ rtHttp -- "HTTP XML" --> dataProxy
60
+ dataProxy -- "TCP" --> tcpIg
61
+ dataProxy -- "HTTP (přes Access Proxy)" --> vpIg
62
+ jisVymi -- "HTTPS (push, přes Access Proxy)" --> vpIg
63
+ tabulator -- "HTTPS (push presetů, přes Access Proxy)" --> vpIg
64
+
65
+ tcpIg --> tableStorage
66
+ vpIg --> blobStorage
67
+ tcpIg -- "AMQP" --> rabbitmq
68
+ vpIg -- "AMQP" --> rabbitmq
69
+ cron -- "AMQP" --> rabbitmq
70
+ rabbitmq <-- "AMQP" --> vpIe
71
+
72
+ pullSources -. "FTPS, HTTP" .-> vpIe
73
+ jisVymi -. "HTTPS (pull)" .-> vpIe
74
+ blobStorage -. "statická data" .-> vpIe
75
+ loki -. "logy požadavků URL Proxy" .-> vpIe
76
+
77
+ vpIe -- "retence: mazání dat starších než měsíc" --> tableStorage
78
+ vpIe <--> postgres
79
+ vpIe <--> valkey
80
+
81
+ classDef external fill:#fdecea,stroke:#c0392b,color:#1f2328
82
+ classDef golemio fill:#e3eefc,stroke:#1d4ed8,color:#1f2328
83
+ classDef store fill:#eef0f3,stroke:#4b5563,color:#1f2328
84
+ classDef consumer fill:#e6f6ea,stroke:#15803d,color:#1f2328
85
+ classDef intermediary fill:#fff4e0,stroke:#d68910,color:#1f2328
86
+ class rtTcp,jisVymi,tabulator,pullSources external
87
+ class rtMetro,rtHttp,mpvnetOut intermediary
88
+ class envoyTcp,dataProxy,tcpIg,vpIg,cron,rabbitmq,vpIe,loki golemio
89
+ class postgres,valkey,tableStorage,blobStorage store
90
+ style sources fill:#fafafa,stroke:#9ca3af
91
+ style ingest fill:#fafafa,stroke:#9ca3af
92
+ style vp fill:#f5f9ff,stroke:#1d4ed8
93
+ style rawStorage fill:#fafafa,stroke:#9ca3af
94
+ style storage fill:#fafafa,stroke:#9ca3af
@@ -0,0 +1 @@
1
+ <svg id="my-svg" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="flowchart" style="max-width: 1991.64px; background-color: white;" viewBox="0 -50 1991.638671875 1245.5" role="graphics-document document" aria-roledescription="flowchart-v2"><style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#my-svg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#my-svg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:1px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-thickness-invisible{stroke-width:0;fill:none;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#333333;stroke:#333333;}#my-svg .marker.cross{stroke:#333333;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg p{margin:0;}#my-svg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#my-svg .cluster-label text{fill:#333;}#my-svg .cluster-label span{color:#333;}#my-svg .cluster-label span p{background-color:transparent;}#my-svg .label text,#my-svg span{fill:#333;color:#333;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#my-svg .rough-node .label text,#my-svg .node .label text,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-anchor:middle;}#my-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#my-svg .rough-node .label,#my-svg .node .label,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#my-svg .arrowheadPath{fill:#333333;}#my-svg .edgePaths .path{stroke:#333333;stroke-width:1px;}#my-svg .flowchart-link{stroke:#333333;fill:none;}#my-svg .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#my-svg .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#my-svg .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#my-svg .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#my-svg .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#my-svg .cluster text{fill:#333;}#my-svg .cluster span{color:#333;}#my-svg .node .collapsed-indicator{fill:#aaaa33;stroke:none;opacity:0.6;}#my-svg .node .collapsed-separator{stroke:#aaaa33;stroke-width:0.75px;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#my-svg rect.text{fill:none;stroke-width:0;}#my-svg .icon-shape,#my-svg .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#my-svg .icon-shape p,#my-svg .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#my-svg .icon-shape .label rect,#my-svg .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#my-svg .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#my-svg .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#my-svg .node .neo-node{stroke:#9370DB;}#my-svg [data-look="neo"].node rect,#my-svg [data-look="neo"].cluster rect,#my-svg [data-look="neo"].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].swimlane.cluster rect{filter:none;}#my-svg [data-look="neo"].node path{stroke:#9370DB;stroke-width:1px;}#my-svg [data-look="neo"].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].node .neo-line path{stroke:#9370DB;filter:none;}#my-svg [data-look="neo"].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].node circle .state-start{fill:#000000;}#my-svg [data-look="neo"].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg [data-look="neo"].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}#my-svg .external rect{fill:rgb(253, 236, 234)!important;stroke:rgb(192, 57, 43)!important;color:rgb(31, 35, 40)!important;}#my-svg .external polygon{fill:rgb(253, 236, 234)!important;stroke:rgb(192, 57, 43)!important;color:rgb(31, 35, 40)!important;}#my-svg .external ellipse{fill:rgb(253, 236, 234)!important;stroke:rgb(192, 57, 43)!important;color:rgb(31, 35, 40)!important;}#my-svg .external circle{fill:rgb(253, 236, 234)!important;stroke:rgb(192, 57, 43)!important;color:rgb(31, 35, 40)!important;}#my-svg .external path{fill:rgb(253, 236, 234)!important;stroke:rgb(192, 57, 43)!important;color:rgb(31, 35, 40)!important;}#my-svg .external tspan{fill:rgb(31, 35, 40)!important;}#my-svg .golemio rect{fill:rgb(227, 238, 252)!important;stroke:rgb(29, 78, 216)!important;color:rgb(31, 35, 40)!important;}#my-svg .golemio polygon{fill:rgb(227, 238, 252)!important;stroke:rgb(29, 78, 216)!important;color:rgb(31, 35, 40)!important;}#my-svg .golemio ellipse{fill:rgb(227, 238, 252)!important;stroke:rgb(29, 78, 216)!important;color:rgb(31, 35, 40)!important;}#my-svg .golemio circle{fill:rgb(227, 238, 252)!important;stroke:rgb(29, 78, 216)!important;color:rgb(31, 35, 40)!important;}#my-svg .golemio path{fill:rgb(227, 238, 252)!important;stroke:rgb(29, 78, 216)!important;color:rgb(31, 35, 40)!important;}#my-svg .golemio tspan{fill:rgb(31, 35, 40)!important;}#my-svg .store rect{fill:rgb(238, 240, 243)!important;stroke:rgb(75, 85, 99)!important;color:rgb(31, 35, 40)!important;}#my-svg .store polygon{fill:rgb(238, 240, 243)!important;stroke:rgb(75, 85, 99)!important;color:rgb(31, 35, 40)!important;}#my-svg .store ellipse{fill:rgb(238, 240, 243)!important;stroke:rgb(75, 85, 99)!important;color:rgb(31, 35, 40)!important;}#my-svg .store circle{fill:rgb(238, 240, 243)!important;stroke:rgb(75, 85, 99)!important;color:rgb(31, 35, 40)!important;}#my-svg .store path{fill:rgb(238, 240, 243)!important;stroke:rgb(75, 85, 99)!important;color:rgb(31, 35, 40)!important;}#my-svg .store tspan{fill:rgb(31, 35, 40)!important;}#my-svg .consumer rect{fill:rgb(230, 246, 234)!important;stroke:rgb(21, 128, 61)!important;color:rgb(31, 35, 40)!important;}#my-svg .consumer polygon{fill:rgb(230, 246, 234)!important;stroke:rgb(21, 128, 61)!important;color:rgb(31, 35, 40)!important;}#my-svg .consumer ellipse{fill:rgb(230, 246, 234)!important;stroke:rgb(21, 128, 61)!important;color:rgb(31, 35, 40)!important;}#my-svg .consumer circle{fill:rgb(230, 246, 234)!important;stroke:rgb(21, 128, 61)!important;color:rgb(31, 35, 40)!important;}#my-svg .consumer path{fill:rgb(230, 246, 234)!important;stroke:rgb(21, 128, 61)!important;color:rgb(31, 35, 40)!important;}#my-svg .consumer tspan{fill:rgb(31, 35, 40)!important;}#my-svg .intermediary rect{fill:rgb(255, 244, 224)!important;stroke:rgb(214, 137, 16)!important;color:rgb(31, 35, 40)!important;}#my-svg .intermediary polygon{fill:rgb(255, 244, 224)!important;stroke:rgb(214, 137, 16)!important;color:rgb(31, 35, 40)!important;}#my-svg .intermediary ellipse{fill:rgb(255, 244, 224)!important;stroke:rgb(214, 137, 16)!important;color:rgb(31, 35, 40)!important;}#my-svg .intermediary circle{fill:rgb(255, 244, 224)!important;stroke:rgb(214, 137, 16)!important;color:rgb(31, 35, 40)!important;}#my-svg .intermediary path{fill:rgb(255, 244, 224)!important;stroke:rgb(214, 137, 16)!important;color:rgb(31, 35, 40)!important;}#my-svg .intermediary tspan{fill:rgb(31, 35, 40)!important;}</style><g><marker id="my-svg_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"><path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"><path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"><polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"><circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"><path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/></marker><marker id="my-svg_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5;"/></marker><marker id="my-svg_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"><path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5; stroke-dasharray: 1, 0;"/></marker><g class="root"><g class="clusters"><g class="cluster" id="my-svg-storage" data-look="classic"><rect style="fill:#fafafa !important;stroke:#9ca3af !important" x="1015.822265625" y="1071.499984741211" width="494.515625" height="116"/><g class="cluster-label" transform="translate(1187.759765625, 1071.499984741211)"><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Databázová</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> vrstva</tspan></tspan></text></g></g></g><g class="cluster" id="my-svg-rawStorage" data-look="classic"><rect style="fill:#fafafa !important;stroke:#9ca3af !important" x="8" y="708.0999908447266" width="403.5625" height="479.3999938964844"/><g class="cluster-label" transform="translate(68.4609375, 708.0999908447266)"><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Archiv</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> surových</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> dat</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> a</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> statická</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> data</tspan></tspan></text></g></g></g><g class="cluster" id="my-svg-vp" data-look="classic"><rect style="fill:#f5f9ff !important;stroke:#1d4ed8 !important" x="561.953125" y="550.9999923706055" width="1331.451171875" height="434.8999938964844"/><g class="cluster-label" transform="translate(1073.6005859375, 550.9999923706055)"><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Dedikované</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> služby</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> Polohy</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> vozidel</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> (VP)</tspan></tspan></text></g></g></g><g class="cluster" id="my-svg-ingest" data-look="classic"><rect style="fill:#fafafa !important;stroke:#9ca3af !important" x="130.826171875" y="187.5999984741211" width="884.794921875" height="277.7999954223633"/><g class="cluster-label" transform="translate(520.0205078125, 187.5999984741211)"><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Příjem</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> RT</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> dat</tspan></tspan></text></g></g></g><g class="cluster" id="my-svg-sources" data-look="classic"><rect style="fill:#fafafa !important;stroke:#9ca3af !important" x="70.025390625" y="8" width="1913.61328125" height="111.5999984741211"/><g class="cluster-label" transform="translate(985.45703125, 8)"><g><rect class="background" style="stroke: none"/><text y="-10.1" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Zdroje</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> dat</tspan></tspan></text></g></g></g></g><g class="edgePaths"><path d="M251.158,97.1L251.158,100.85C251.158,104.6,251.158,112.1,251.158,121.517C251.158,130.933,251.158,142.267,251.158,153.6C251.158,164.933,251.158,176.267,274.973,189.674C298.788,203.082,346.417,218.565,370.232,226.306L394.047,234.047" id="my-svg-L_rtTcp_envoyTcp_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_rtTcp_envoyTcp_0" data-points="W3sieCI6MjUxLjE1ODIwMzEyNSwieSI6OTcuMDk5OTk4NDc0MTIxMX0seyJ4IjoyNTEuMTU4MjAzMTI1LCJ5IjoxMTkuNTk5OTk4NDc0MTIxMX0seyJ4IjoyNTEuMTU4MjAzMTI1LCJ5IjoxNTMuNTk5OTk4NDc0MTIxMX0seyJ4IjoyNTEuMTU4MjAzMTI1LCJ5IjoxODcuNTk5OTk4NDc0MTIxMX0seyJ4IjozOTcuODUwNzAzMTI1MDAwMSwieSI6MjM1LjI4MzUzMjI4MDYyMDkzfV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M585.783,97.1L585.783,100.85C585.783,104.6,585.783,112.1,585.783,121.517C585.783,130.933,585.783,142.267,585.783,153.6C585.783,164.933,585.783,176.267,562.135,189.673C538.486,203.08,491.189,218.56,467.541,226.299L443.892,234.039" id="my-svg-L_rtMetro_envoyTcp_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_rtMetro_envoyTcp_0" data-points="W3sieCI6NTg1Ljc4MzIwMzEyNSwieSI6OTcuMDk5OTk4NDc0MTIxMX0seyJ4Ijo1ODUuNzgzMjAzMTI1LCJ5IjoxMTkuNTk5OTk4NDc0MTIxMX0seyJ4Ijo1ODUuNzgzMjAzMTI1LCJ5IjoxNTMuNTk5OTk4NDc0MTIxMX0seyJ4Ijo1ODUuNzgzMjAzMTI1LCJ5IjoxODcuNTk5OTk4NDc0MTIxMX0seyJ4Ijo0NDAuMDkwNzAzMTI0OTk5OSwieSI6MjM1LjI4MzUzMjI4MDYyMDkzfV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M460.561,430.497L425.66,436.314C390.76,442.131,320.959,453.766,286.059,466.716C251.158,479.667,251.158,493.933,251.158,508.2C251.158,522.467,251.158,536.733,251.158,548.417C251.158,560.1,251.158,569.2,251.158,573.75L251.158,578.3" id="my-svg-L_dataProxy_mpvnetOut_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_dataProxy_mpvnetOut_0" data-points="W3sieCI6NDYwLjU2MDU0Njg3NSwieSI6NDMwLjQ5NjU3ODk3NTYzMn0seyJ4IjoyNTEuMTU4MjAzMTI1LCJ5Ijo0NjUuMzk5OTkzODk2NDg0NH0seyJ4IjoyNTEuMTU4MjAzMTI1LCJ5Ijo1MDguMTk5OTkzMTMzNTQ0OX0seyJ4IjoyNTEuMTU4MjAzMTI1LCJ5Ijo1NTAuOTk5OTkyMzcwNjA1NX0seyJ4IjoyNTEuMTU4MjAzMTI1LCJ5Ijo1ODIuMjk5OTkxNjA3NjY2fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M418.971,273.6L418.887,280.65C418.804,287.7,418.637,301.8,436.438,315.744C454.238,329.687,490.006,343.474,507.89,350.368L525.773,357.261" id="my-svg-L_envoyTcp_dataProxy_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_envoyTcp_dataProxy_0" data-points="W3sieCI6NDE4Ljk3MDcwMzEyNSwieSI6MjczLjU5OTk5ODQ3NDEyMTF9LHsieCI6NDE4LjQ3MDcwMzEyNSwieSI6MzE1Ljg5OTk5NzcxMTE4MTY0fSx7IngiOjUyOS41MDU2NTMzNDQwNjI5LCJ5IjozNTguNjk5OTk2OTQ4MjQyMn1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M884.338,97.1L884.338,100.85C884.338,104.6,884.338,112.1,884.338,121.517C884.338,130.933,884.338,142.267,884.338,153.6C884.338,164.933,884.338,176.267,884.338,190.933C884.338,205.6,884.338,223.6,884.338,244.983C884.338,266.367,884.338,291.133,864.331,310.432C844.325,329.731,804.312,343.562,784.306,350.478L764.299,357.393" id="my-svg-L_rtHttp_dataProxy_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_rtHttp_dataProxy_0" data-points="W3sieCI6ODg0LjMzNzg5MDYyNSwieSI6OTcuMDk5OTk4NDc0MTIxMX0seyJ4Ijo4ODQuMzM3ODkwNjI1LCJ5IjoxMTkuNTk5OTk4NDc0MTIxMX0seyJ4Ijo4ODQuMzM3ODkwNjI1LCJ5IjoxNTMuNTk5OTk4NDc0MTIxMX0seyJ4Ijo4ODQuMzM3ODkwNjI1LCJ5IjoxODcuNTk5OTk4NDc0MTIxMX0seyJ4Ijo4ODQuMzM3ODkwNjI1LCJ5IjoyNDEuNTk5OTk4NDc0MTIxMX0seyJ4Ijo4ODQuMzM3ODkwNjI1LCJ5IjozMTUuODk5OTk3NzExMTgxNjR9LHsieCI6NzYwLjUxODcwODg0MDQxMTYsInkiOjM1OC42OTk5OTY5NDgyNDIyfV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M738.055,442.9L746.902,446.65C755.75,450.4,773.445,457.9,782.293,468.783C791.141,479.667,791.141,493.933,791.141,508.2C791.141,522.467,791.141,536.733,791.141,546.95C791.141,557.167,791.141,563.333,791.141,566.417L791.141,569.5" id="my-svg-L_dataProxy_tcpIg_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_dataProxy_tcpIg_0" data-points="W3sieCI6NzM4LjA1NDU1MDE5MjQ4NTcsInkiOjQ0Mi44OTk5OTM4OTY0ODQ0fSx7IngiOjc5MS4xNDA2MjUsInkiOjQ2NS4zOTk5OTM4OTY0ODQ0fSx7IngiOjc5MS4xNDA2MjUsInkiOjUwOC4xOTk5OTMxMzM1NDQ5fSx7IngiOjc5MS4xNDA2MjUsInkiOjU1MC45OTk5OTIzNzA2MDU1fSx7IngiOjc5MS4xNDA2MjUsInkiOjU3My40OTk5OTIzNzA2MDU1fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M812.445,442.9L827.919,446.65C843.393,450.4,874.341,457.9,889.815,468.783C905.289,479.667,905.289,493.933,905.289,508.2C905.289,522.467,905.289,536.733,926.86,548.994C948.431,561.255,991.574,571.509,1013.145,576.637L1034.716,581.764" id="my-svg-L_dataProxy_vpIg_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_dataProxy_vpIg_0" data-points="W3sieCI6ODEyLjQ0NTQwNDAzMjgwNjgsInkiOjQ0Mi44OTk5OTM4OTY0ODQ0fSx7IngiOjkwNS4yODkwNjI1LCJ5Ijo0NjUuMzk5OTkzODk2NDg0NH0seyJ4Ijo5MDUuMjg5MDYyNSwieSI6NTA4LjE5OTk5MzEzMzU0NDl9LHsieCI6OTA1LjI4OTA2MjUsInkiOjU1MC45OTk5OTIzNzA2MDU1fSx7IngiOjEwMzguNjA3NDIxODc1LCJ5Ijo1ODIuNjg4OTMyNDA5MDYzOX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1222.563,88.3L1208.81,93.517C1195.057,98.733,1167.551,109.167,1153.798,120.05C1140.045,130.933,1140.045,142.267,1140.045,153.6C1140.045,164.933,1140.045,176.267,1140.045,190.933C1140.045,205.6,1140.045,223.6,1140.045,244.983C1140.045,266.367,1140.045,291.133,1140.045,317.667C1140.045,344.2,1140.045,372.5,1140.045,397.417C1140.045,422.333,1140.045,443.867,1140.045,461.767C1140.045,479.667,1140.045,493.933,1140.045,508.2C1140.045,522.467,1140.045,536.733,1140.045,546.95C1140.045,557.167,1140.045,563.333,1140.045,566.417L1140.045,569.5" id="my-svg-L_jisVymi_vpIg_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_jisVymi_vpIg_0" data-points="W3sieCI6MTIyMi41NjMyNjIxNjU2OTgsInkiOjg4LjI5OTk5OTIzNzA2MDU1fSx7IngiOjExNDAuMDQ0OTIxODc1LCJ5IjoxMTkuNTk5OTk4NDc0MTIxMX0seyJ4IjoxMTQwLjA0NDkyMTg3NSwieSI6MTUzLjU5OTk5ODQ3NDEyMTF9LHsieCI6MTE0MC4wNDQ5MjE4NzUsInkiOjE4Ny41OTk5OTg0NzQxMjExfSx7IngiOjExNDAuMDQ0OTIxODc1LCJ5IjoyNDEuNTk5OTk4NDc0MTIxMX0seyJ4IjoxMTQwLjA0NDkyMTg3NSwieSI6MzE1Ljg5OTk5NzcxMTE4MTY0fSx7IngiOjExNDAuMDQ0OTIxODc1LCJ5Ijo0MDAuNzk5OTk1NDIyMzYzM30seyJ4IjoxMTQwLjA0NDkyMTg3NSwieSI6NDY1LjM5OTk5Mzg5NjQ4NDR9LHsieCI6MTE0MC4wNDQ5MjE4NzUsInkiOjUwOC4xOTk5OTMxMzM1NDQ5fSx7IngiOjExNDAuMDQ0OTIxODc1LCJ5Ijo1NTAuOTk5OTkyMzcwNjA1NX0seyJ4IjoxMTQwLjA0NDkyMTg3NSwieSI6NTczLjQ5OTk5MjM3MDYwNTV9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1600.725,88.3L1600.725,93.517C1600.725,98.733,1600.725,109.167,1600.725,120.05C1600.725,130.933,1600.725,142.267,1600.725,153.6C1600.725,164.933,1600.725,176.267,1600.725,190.933C1600.725,205.6,1600.725,223.6,1600.725,244.983C1600.725,266.367,1600.725,291.133,1600.725,317.667C1600.725,344.2,1600.725,372.5,1600.725,397.417C1600.725,422.333,1600.725,443.867,1600.725,461.767C1600.725,479.667,1600.725,493.933,1600.725,508.2C1600.725,522.467,1600.725,536.733,1541.513,551.039C1482.301,565.344,1363.877,579.688,1304.665,586.86L1245.453,594.032" id="my-svg-L_tabulator_vpIg_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_tabulator_vpIg_0" data-points="W3sieCI6MTYwMC43MjQ2MDkzNzUsInkiOjg4LjI5OTk5OTIzNzA2MDU1fSx7IngiOjE2MDAuNzI0NjA5Mzc1LCJ5IjoxMTkuNTk5OTk4NDc0MTIxMX0seyJ4IjoxNjAwLjcyNDYwOTM3NSwieSI6MTUzLjU5OTk5ODQ3NDEyMTF9LHsieCI6MTYwMC43MjQ2MDkzNzUsInkiOjE4Ny41OTk5OTg0NzQxMjExfSx7IngiOjE2MDAuNzI0NjA5Mzc1LCJ5IjoyNDEuNTk5OTk4NDc0MTIxMX0seyJ4IjoxNjAwLjcyNDYwOTM3NSwieSI6MzE1Ljg5OTk5NzcxMTE4MTY0fSx7IngiOjE2MDAuNzI0NjA5Mzc1LCJ5Ijo0MDAuNzk5OTk1NDIyMzYzM30seyJ4IjoxNjAwLjcyNDYwOTM3NSwieSI6NDY1LjM5OTk5Mzg5NjQ4NDR9LHsieCI6MTYwMC43MjQ2MDkzNzUsInkiOjUwOC4xOTk5OTMxMzM1NDQ5fSx7IngiOjE2MDAuNzI0NjA5Mzc1LCJ5Ijo1NTAuOTk5OTkyMzcwNjA1NX0seyJ4IjoxMjQxLjQ4MjQyMTg3NSwieSI6NTk0LjUxMzMzNjUyNzgwNzh9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M779.841,640.1L777.919,645.767C775.996,651.433,772.15,662.767,770.227,674.1C768.305,685.433,768.305,696.767,768.305,712.9C768.305,729.033,768.305,749.967,768.305,774.283C768.305,798.6,768.305,826.3,768.305,852.833C768.305,879.367,768.305,904.733,768.305,926.717C768.305,948.7,768.305,967.3,659.805,983.733C551.305,1000.167,334.305,1014.433,225.805,1028.7C117.305,1042.967,117.305,1057.233,126.352,1071.58C135.399,1085.926,153.493,1100.352,162.54,1107.565L171.587,1114.778" id="my-svg-L_tcpIg_tableStorage_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_tcpIg_tableStorage_0" data-points="W3sieCI6Nzc5Ljg0MTQxNjgyODQwNzUsInkiOjY0MC4wOTk5OTA4NDQ3MjY2fSx7IngiOjc2OC4zMDQ2ODc1LCJ5Ijo2NzQuMDk5OTkwODQ0NzI2Nn0seyJ4Ijo3NjguMzA0Njg3NSwieSI6NzA4LjA5OTk5MDg0NDcyNjZ9LHsieCI6NzY4LjMwNDY4NzUsInkiOjc3MC44OTk5OTAwODE3ODcxfSx7IngiOjc2OC4zMDQ2ODc1LCJ5Ijo4NTMuOTk5OTg4NTU1OTA4Mn0seyJ4Ijo3NjguMzA0Njg3NSwieSI6OTMwLjA5OTk4NzAzMDAyOTN9LHsieCI6NzY4LjMwNDY4NzUsInkiOjk4NS44OTk5ODYyNjcwODk4fSx7IngiOjExNy4zMDQ2ODc1LCJ5IjoxMDI4LjY5OTk4NTUwNDE1MDR9LHsieCI6MTE3LjMwNDY4NzUsInkiOjEwNzEuNDk5OTg0NzQxMjExfSx7IngiOjE3NC43MTQ4NDM3NSwieSI6MTExNy4yNzE5OTExNzAzNTY0fV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1050.282,640.1L1035.007,645.767C1019.732,651.433,989.183,662.767,973.908,674.1C958.633,685.433,958.633,696.767,851.067,711.544C743.502,726.321,528.371,744.542,420.805,753.652L313.239,762.762" id="my-svg-L_vpIg_blobStorage_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_vpIg_blobStorage_0" data-points="W3sieCI6MTA1MC4yODIzMTkwMTgxNzI4LCJ5Ijo2NDAuMDk5OTkwODQ0NzI2Nn0seyJ4Ijo5NTguNjMyODEyNSwieSI6Njc0LjA5OTk5MDg0NDcyNjZ9LHsieCI6OTU4LjYzMjgxMjUsInkiOjcwOC4wOTk5OTA4NDQ3MjY2fSx7IngiOjMwOS4yNTM2NjE5ODkzNTY0MywieSI6NzYzLjA5OTk5MDg0NDcyNjZ9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M835.891,640.1L843.506,645.767C851.121,651.433,866.352,662.767,873.967,674.1C881.582,685.433,881.582,696.767,912.403,711.966C943.224,727.166,1004.866,746.232,1035.688,755.765L1066.509,765.299" id="my-svg-L_tcpIg_rabbitmq_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_tcpIg_rabbitmq_0" data-points="W3sieCI6ODM1Ljg5MDk3ODU0MDM0OTEsInkiOjY0MC4wOTk5OTA4NDQ3MjY2fSx7IngiOjg4MS41ODIwMzEyNSwieSI6Njc0LjA5OTk5MDg0NDcyNjZ9LHsieCI6ODgxLjU4MjAzMTI1LCJ5Ijo3MDguMDk5OTkwODQ0NzI2Nn0seyJ4IjoxMDcwLjMzMDA3ODEyNSwieSI6NzY2LjQ4MDQ4MTY1NDgyMDh9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1151.344,640.1L1153.267,645.767C1155.19,651.433,1159.035,662.767,1160.958,674.1C1162.881,685.433,1162.881,696.767,1153.302,710.384C1143.723,724.001,1124.566,739.903,1114.987,747.854L1105.408,755.804" id="my-svg-L_vpIg_rabbitmq_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_vpIg_rabbitmq_0" data-points="W3sieCI6MTE1MS4zNDQxMzAwNDY1OTI1LCJ5Ijo2NDAuMDk5OTkwODQ0NzI2Nn0seyJ4IjoxMTYyLjg4MDg1OTM3NSwieSI6Njc0LjA5OTk5MDg0NDcyNjZ9LHsieCI6MTE2Mi44ODA4NTkzNzUsInkiOjcwOC4wOTk5OTA4NDQ3MjY2fSx7IngiOjExMDIuMzMwMDc4MTI1LCJ5Ijo3NTguMzU5MjM5OTIzMzU4N31d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1339.123,631.3L1339.123,638.433C1339.123,645.567,1339.123,659.833,1339.123,672.633C1339.123,685.433,1339.123,696.767,1300.304,712.16C1261.485,727.554,1183.848,747.007,1145.029,756.734L1106.21,766.461" id="my-svg-L_cron_rabbitmq_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_cron_rabbitmq_0" data-points="W3sieCI6MTMzOS4xMjMwNDY4NzUsInkiOjYzMS4yOTk5OTE2MDc2NjZ9LHsieCI6MTMzOS4xMjMwNDY4NzUsInkiOjY3NC4wOTk5OTA4NDQ3MjY2fSx7IngiOjEzMzkuMTIzMDQ2ODc1LCJ5Ijo3MDguMDk5OTkwODQ0NzI2Nn0seyJ4IjoxMTAyLjMzMDA3ODEyNSwieSI6NzY3LjQzMzA0MjI3MTMwNjR9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1086.291,806.9L1086.214,814.75C1086.137,822.6,1085.984,838.3,1093.031,852.827C1100.078,867.355,1114.325,880.71,1121.449,887.387L1128.573,894.064" id="my-svg-L_rabbitmq_vpIe_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_rabbitmq_vpIe_0" data-points="W3sieCI6MTA4Ni4zMzAwNzgxMjUsInkiOjgwMi44OTk5OTAwODE3ODcxfSx7IngiOjEwODUuODMwMDc4MTI1LCJ5Ijo4NTMuOTk5OTg4NTU1OTA4Mn0seyJ4IjoxMTMxLjQ5MTM3OTE0NjQ1MTcsInkiOjg5Ni43OTk5ODc3OTI5Njg4fV0=" data-look="classic" marker-start="url(#my-svg_flowchart-v2-pointStart)" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1859.232,97.1L1859.232,100.85C1859.232,104.6,1859.232,112.1,1859.232,121.517C1859.232,130.933,1859.232,142.267,1859.232,153.6C1859.232,164.933,1859.232,176.267,1859.232,190.933C1859.232,205.6,1859.232,223.6,1859.232,244.983C1859.232,266.367,1859.232,291.133,1859.232,317.667C1859.232,344.2,1859.232,372.5,1859.232,397.417C1859.232,422.333,1859.232,443.867,1859.232,461.767C1859.232,479.667,1859.232,493.933,1859.232,508.2C1859.232,522.467,1859.232,536.733,1859.232,553.167C1859.232,569.6,1859.232,588.2,1859.232,608.717C1859.232,629.233,1859.232,651.667,1859.232,668.55C1859.232,685.433,1859.232,696.767,1859.232,712.9C1859.232,729.033,1859.232,749.967,1859.232,774.283C1859.232,798.6,1859.232,826.3,1765.961,850.404C1672.689,874.508,1486.146,895.016,1392.875,905.27L1299.603,915.524" id="my-svg-L_pullSources_vpIe_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_pullSources_vpIe_0" data-points="W3sieCI6MTg1OS4yMzI0MjE4NzUsInkiOjk3LjA5OTk5ODQ3NDEyMTF9LHsieCI6MTg1OS4yMzI0MjE4NzUsInkiOjExOS41OTk5OTg0NzQxMjExfSx7IngiOjE4NTkuMjMyNDIxODc1LCJ5IjoxNTMuNTk5OTk4NDc0MTIxMX0seyJ4IjoxODU5LjIzMjQyMTg3NSwieSI6MTg3LjU5OTk5ODQ3NDEyMTF9LHsieCI6MTg1OS4yMzI0MjE4NzUsInkiOjI0MS41OTk5OTg0NzQxMjExfSx7IngiOjE4NTkuMjMyNDIxODc1LCJ5IjozMTUuODk5OTk3NzExMTgxNjR9LHsieCI6MTg1OS4yMzI0MjE4NzUsInkiOjQwMC43OTk5OTU0MjIzNjMzfSx7IngiOjE4NTkuMjMyNDIxODc1LCJ5Ijo0NjUuMzk5OTkzODk2NDg0NH0seyJ4IjoxODU5LjIzMjQyMTg3NSwieSI6NTA4LjE5OTk5MzEzMzU0NDl9LHsieCI6MTg1OS4yMzI0MjE4NzUsInkiOjU1MC45OTk5OTIzNzA2MDU1fSx7IngiOjE4NTkuMjMyNDIxODc1LCJ5Ijo2MDYuNzk5OTkxNjA3NjY2fSx7IngiOjE4NTkuMjMyNDIxODc1LCJ5Ijo2NzQuMDk5OTkwODQ0NzI2Nn0seyJ4IjoxODU5LjIzMjQyMTg3NSwieSI6NzA4LjA5OTk5MDg0NDcyNjZ9LHsieCI6MTg1OS4yMzI0MjE4NzUsInkiOjc3MC44OTk5OTAwODE3ODcxfSx7IngiOjE4NTkuMjMyNDIxODc1LCJ5Ijo4NTMuOTk5OTg4NTU1OTA4Mn0seyJ4IjoxMjk1LjYyNjk1MzEyNSwieSI6OTE1Ljk2MTA2Mjc3ODk0NDd9XQ==" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1351.745,88.3L1365.498,93.517C1379.251,98.733,1406.758,109.167,1420.511,120.05C1434.264,130.933,1434.264,142.267,1434.264,153.6C1434.264,164.933,1434.264,176.267,1434.264,190.933C1434.264,205.6,1434.264,223.6,1434.264,244.983C1434.264,266.367,1434.264,291.133,1434.264,317.667C1434.264,344.2,1434.264,372.5,1434.264,397.417C1434.264,422.333,1434.264,443.867,1434.264,461.767C1434.264,479.667,1434.264,493.933,1434.264,508.2C1434.264,522.467,1434.264,536.733,1434.264,553.167C1434.264,569.6,1434.264,588.2,1434.264,608.717C1434.264,629.233,1434.264,651.667,1434.264,668.55C1434.264,685.433,1434.264,696.767,1434.264,712.9C1434.264,729.033,1434.264,749.967,1434.264,774.283C1434.264,798.6,1434.264,826.3,1409.854,847.101C1385.445,867.901,1336.626,881.803,1312.216,888.754L1287.807,895.705" id="my-svg-L_jisVymi_vpIe_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_jisVymi_vpIe_0" data-points="W3sieCI6MTM1MS43NDUzMzE1ODQzMDIsInkiOjg4LjI5OTk5OTIzNzA2MDU1fSx7IngiOjE0MzQuMjYzNjcxODc1LCJ5IjoxMTkuNTk5OTk4NDc0MTIxMX0seyJ4IjoxNDM0LjI2MzY3MTg3NSwieSI6MTUzLjU5OTk5ODQ3NDEyMTF9LHsieCI6MTQzNC4yNjM2NzE4NzUsInkiOjE4Ny41OTk5OTg0NzQxMjExfSx7IngiOjE0MzQuMjYzNjcxODc1LCJ5IjoyNDEuNTk5OTk4NDc0MTIxMX0seyJ4IjoxNDM0LjI2MzY3MTg3NSwieSI6MzE1Ljg5OTk5NzcxMTE4MTY0fSx7IngiOjE0MzQuMjYzNjcxODc1LCJ5Ijo0MDAuNzk5OTk1NDIyMzYzM30seyJ4IjoxNDM0LjI2MzY3MTg3NSwieSI6NDY1LjM5OTk5Mzg5NjQ4NDR9LHsieCI6MTQzNC4yNjM2NzE4NzUsInkiOjUwOC4xOTk5OTMxMzM1NDQ5fSx7IngiOjE0MzQuMjYzNjcxODc1LCJ5Ijo1NTAuOTk5OTkyMzcwNjA1NX0seyJ4IjoxNDM0LjI2MzY3MTg3NSwieSI6NjA2Ljc5OTk5MTYwNzY2Nn0seyJ4IjoxNDM0LjI2MzY3MTg3NSwieSI6Njc0LjA5OTk5MDg0NDcyNjZ9LHsieCI6MTQzNC4yNjM2NzE4NzUsInkiOjcwOC4wOTk5OTA4NDQ3MjY2fSx7IngiOjE0MzQuMjYzNjcxODc1LCJ5Ijo3NzAuODk5OTkwMDgxNzg3MX0seyJ4IjoxNDM0LjI2MzY3MTg3NSwieSI6ODUzLjk5OTk4ODU1NTkwODJ9LHsieCI6MTI4My45NTk2OTI0MDEyNDA4LCJ5Ijo4OTYuNzk5OTg3NzkyOTY4OH1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M210.281,811.7L210.198,818.75C210.115,825.8,209.948,839.9,347.305,857.876C484.661,875.853,759.541,897.706,896.981,908.632L1034.421,919.559" id="my-svg-L_blobStorage_vpIe_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_blobStorage_vpIe_0" data-points="W3sieCI6MjEwLjI4MTI1LCJ5Ijo4MTEuNjk5OTg5MzE4ODQ3N30seyJ4IjoyMDkuNzgxMjUsInkiOjg1My45OTk5ODg1NTU5MDgyfSx7IngiOjEwMzguNDA4MjAzMTI1LCJ5Ijo5MTkuODc1NTgwNjI4MjkxfV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M525.311,789.128L548.614,799.94C571.917,810.752,618.523,832.376,703.38,852.521C788.237,872.667,911.345,891.333,972.899,900.666L1034.453,910" id="my-svg-L_loki_vpIe_0" class="edge-thickness-normal edge-pattern-dotted edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_loki_vpIe_0" data-points="W3sieCI6NTI1LjMxMDUzODM2Mjk4NTEsInkiOjc4OS4xMjgwOTQ5ODE5MTMxfSx7IngiOjY2NS4xMjg5MDYyNSwieSI6ODUzLjk5OTk4ODU1NTkwODJ9LHsieCI6MTAzOC40MDgyMDMxMjUsInkiOjkxMC41OTkzMDEzNDA3MjMyfV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1038.408,953.379L1008.465,958.8C978.521,964.22,918.633,975.06,785.808,987.613C652.982,1000.167,447.217,1014.433,344.335,1028.7C241.453,1042.967,241.453,1057.233,236.098,1070.593C230.743,1083.952,220.033,1096.404,214.678,1102.63L209.323,1108.856" id="my-svg-L_vpIe_tableStorage_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_vpIe_tableStorage_0" data-points="W3sieCI6MTAzOC40MDgyMDMxMjUsInkiOjk1My4zNzk0NzczMTkwMTQ0fSx7IngiOjg1OC43NDYwOTM3NSwieSI6OTg1Ljg5OTk4NjI2NzA4OTh9LHsieCI6MjQxLjQ1MzEyNSwieSI6MTAyOC42OTk5ODU1MDQxNTA0fSx7IngiOjI0MS40NTMxMjUsInkiOjEwNzEuNDk5OTg0NzQxMjExfSx7IngiOjIwNi43MTQ4NDM3NSwieSI6MTExMS44ODg1MjYzMjg0NjQyfV0=" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1173.691,967.337L1174.245,970.431C1174.8,973.525,1175.909,979.712,1176.463,989.94C1177.018,1000.167,1177.018,1014.433,1177.018,1028.7C1177.018,1042.967,1177.018,1057.233,1177.086,1067.533C1177.155,1077.834,1177.293,1084.167,1177.362,1087.334L1177.431,1090.501" id="my-svg-L_vpIe_postgres_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_vpIe_postgres_0" data-points="W3sieCI6MTE3Mi45ODUzMjAwMDUzNTIsInkiOjk2My4zOTk5ODYyNjcwODk4fSx7IngiOjExNzcuMDE3NTc4MTI1LCJ5Ijo5ODUuODk5OTg2MjY3MDg5OH0seyJ4IjoxMTc3LjAxNzU3ODEyNSwieSI6MTAyOC42OTk5ODU1MDQxNTA0fSx7IngiOjExNzcuMDE3NTc4MTI1LCJ5IjoxMDcxLjQ5OTk4NDc0MTIxMX0seyJ4IjoxMTc3LjUxNzU3ODEyNSwieSI6MTA5NC40OTk5ODQ3NDEyMDk2fV0=" data-look="classic" marker-start="url(#my-svg_flowchart-v2-pointStart)" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/><path d="M1299.529,960.005L1318.653,964.32C1337.778,968.636,1376.027,977.268,1395.151,988.717C1414.275,1000.167,1414.275,1014.433,1414.275,1028.7C1414.275,1042.967,1414.275,1057.233,1414.346,1068.2C1414.417,1079.167,1414.559,1086.834,1414.63,1090.667L1414.701,1094.501" id="my-svg-L_vpIe_valkey_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_vpIe_valkey_0" data-points="W3sieCI6MTI5NS42MjY5NTMxMjUsInkiOjk1OS4xMjM5NTU3OTQ5MzQ3fSx7IngiOjE0MTQuMjc1MzkwNjI1LCJ5Ijo5ODUuODk5OTg2MjY3MDg5OH0seyJ4IjoxNDE0LjI3NTM5MDYyNSwieSI6MTAyOC42OTk5ODU1MDQxNTA0fSx7IngiOjE0MTQuMjc1MzkwNjI1LCJ5IjoxMDcxLjQ5OTk4NDc0MTIxMX0seyJ4IjoxNDE0Ljc3NTM5MDYyNSwieSI6MTA5OC40OTk5ODQ3NDEyMDl9XQ==" data-look="classic" marker-start="url(#my-svg_flowchart-v2-pointStart)" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/></g><g class="edgeLabels"><g class="edgeLabel" transform="translate(251.158203125, 153.5999984741211)"><g class="label" data-id="L_rtTcp_envoyTcp_0" transform="translate(0.45703125, -10.5)"><g><rect class="background" style="" x="-37.2109375" y="-1" width="73.5078125" height="23"/><text y="-10.1" text-anchor="middle" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">TCP</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> XML</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(585.783203125, 153.5999984741211)"><g class="label" data-id="L_rtMetro_envoyTcp_0" transform="translate(0.45703125, -10.5)"><g><rect class="background" style="" x="-37.2109375" y="-1" width="73.5078125" height="23"/><text y="-10.1" text-anchor="middle" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">TCP</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> XML</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(251.158203125, 508.1999931335449)"><g class="label" data-id="L_dataProxy_mpvnetOut_0" transform="translate(0.5, -19.299999237060547)"><g><rect class="background" style="" x="-61.9375" y="-1" width="122.875" height="40.599998474121094"/><text y="-10.1" text-anchor="middle" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">TCP</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> (tramvaje,</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">autobusy)</tspan></tspan></text></g></g></g><g class="edgeLabel"><g class="label" data-id="L_envoyTcp_dataProxy_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel" transform="translate(884.337890625, 241.5999984741211)"><g class="label" data-id="L_rtHttp_dataProxy_0" transform="translate(-0.04296875, -10.5)"><g><rect class="background" style="" x="-41.859375" y="-1" width="83.8046875" height="23"/><text y="-10.1" text-anchor="middle" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">HTTP</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> XML</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(791.140625, 508.1999931335449)"><g class="label" data-id="L_dataProxy_tcpIg_0" transform="translate(0.32421875, -10.5)"><g><rect class="background" style="" x="-17.828125" y="-1" width="35.0078125" height="23"/><text y="-10.1" text-anchor="middle" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">TCP</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(905.2890625, 508.1999931335449)"><g class="label" data-id="L_dataProxy_vpIg_0" transform="translate(0, -19.299999237060547)"><g><rect class="background" style="" x="-75.3515625" y="-1" width="150.703125" height="40.599998474121094"/><text y="-10.1" text-anchor="middle" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">HTTP</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> (přes</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> Access</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Proxy)</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(1140.044921875, 315.89999771118164)"><g class="label" data-id="L_jisVymi_vpIg_0" transform="translate(0, -19.299999237060547)"><g><rect class="background" style="" x="-74.9765625" y="-1" width="149.953125" height="40.599998474121094"/><text y="-10.1" text-anchor="middle" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">HTTPS</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> (push,</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> přes</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Access</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> Proxy)</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(1600.724609375, 315.89999771118164)"><g class="label" data-id="L_tabulator_vpIg_0" transform="translate(0, -19.299999237060547)"><g><rect class="background" style="" x="-88.109375" y="-1" width="176.21875" height="40.599998474121094"/><text y="-10.1" text-anchor="middle" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">HTTPS</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> (push</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> presetů,</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">přes</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> Access</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> Proxy)</tspan></tspan></text></g></g></g><g class="edgeLabel"><g class="label" data-id="L_tcpIg_tableStorage_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel"><g class="label" data-id="L_vpIg_blobStorage_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel" transform="translate(881.58203125, 674.0999908447266)"><g class="label" data-id="L_tcpIg_rabbitmq_0" transform="translate(-0.171875, -10.5)"><g><rect class="background" style="" x="-25.5" y="-1" width="51.34375" height="23"/><text y="-10.1" text-anchor="middle" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">AMQP</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(1162.880859375, 674.0999908447266)"><g class="label" data-id="L_vpIg_rabbitmq_0" transform="translate(-0.171875, -10.5)"><g><rect class="background" style="" x="-25.5" y="-1" width="51.34375" height="23"/><text y="-10.1" text-anchor="middle" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">AMQP</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(1339.123046875, 674.0999908447266)"><g class="label" data-id="L_cron_rabbitmq_0" transform="translate(-0.171875, -10.5)"><g><rect class="background" style="" x="-25.5" y="-1" width="51.34375" height="23"/><text y="-10.1" text-anchor="middle" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">AMQP</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(1085.830078125, 853.9999885559082)"><g class="label" data-id="L_rabbitmq_vpIe_0" transform="translate(-0.171875, -10.5)"><g><rect class="background" style="" x="-25.5" y="-1" width="51.34375" height="23"/><text y="-10.1" text-anchor="middle" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">AMQP</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(1859.232421875, 508.1999931335449)"><g class="label" data-id="L_pullSources_vpIe_0" transform="translate(-0.17578125, -10.5)"><g><rect class="background" style="" x="-46.8125" y="-1" width="93.9765625" height="23"/><text y="-10.1" text-anchor="middle" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">FTPS,</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> HTTP</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(1434.263671875, 508.1999931335449)"><g class="label" data-id="L_jisVymi_vpIe_0" transform="translate(0, -10.5)"><g><rect class="background" style="" x="-50.9375" y="-1" width="101.875" height="23"/><text y="-10.1" text-anchor="middle" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">HTTPS</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> (pull)</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(209.78125, 853.9999885559082)"><g class="label" data-id="L_blobStorage_vpIe_0" transform="translate(0, -10.5)"><g><rect class="background" style="" x="-53.921875" y="-1" width="107.84375" height="23"/><text y="-10.1" text-anchor="middle" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">statická</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> data</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(775.57208, 870.74618)"><g class="label" data-id="L_loki_vpIe_0" transform="translate(-0.04296875, -19.299999237060547)"><g><rect class="background" style="" x="-83.1328125" y="-1" width="166.3515625" height="40.599998474121094"/><text y="-10.1" text-anchor="middle" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">logy</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> požadavků</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> URL</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Proxy</tspan></tspan></text></g></g></g><g class="edgeLabel" transform="translate(241.453125, 1028.6999855041504)"><g class="label" data-id="L_vpIe_tableStorage_0" transform="translate(0, -19.299999237060547)"><g><rect class="background" style="" x="-82.4765625" y="-1" width="164.953125" height="40.599998474121094"/><text y="-10.1" text-anchor="middle" style=""><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">retence:</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> mazání</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> dat</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em" text-anchor="middle"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">starších</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> než</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> měsíc</tspan></tspan></text></g></g></g><g class="edgeLabel"><g class="label" data-id="L_vpIe_postgres_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g><g class="edgeLabel"><g class="label" data-id="L_vpIe_valkey_0" transform="translate(0, 0)"><text y="-10.1" text-anchor="middle"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em" text-anchor="middle"/></text></g></g><g><rect class="background" style="stroke: none"/></g></g><g class="nodes"><g class="node default external" id="my-svg-flowchart-rtTcp-0" data-look="classic" transform="translate(251.158203125, 63.79999923706055)"><rect class="basic label-container" style="fill:#fdecea !important;stroke:#c0392b !important" x="-158.6328125" y="-33.29999923706055" width="317.265625" height="66.5999984741211"/><g class="label" style="color:#1f2328 !important" transform="translate(0, -18.299999237060547)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style="fill:#1f2328 !important"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Dispečinky</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> DPP</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> (DORIS,</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> AUDIS):</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">TCP</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> tramvaje,</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> autobusy</tspan></tspan></text></g></g></g><g class="node default intermediary" id="my-svg-flowchart-rtMetro-1" data-look="classic" transform="translate(585.783203125, 63.79999923706055)"><rect class="basic label-container" style="fill:#fff4e0 !important;stroke:#d68910 !important" x="-150.9921875" y="-33.29999923706055" width="301.984375" height="66.5999984741211"/><g class="label" style="color:#1f2328 !important" transform="translate(0, -18.299999237060547)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style="fill:#1f2328 !important"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Metro</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> DPP</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> přes</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> MPVnet</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> proxy:</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">TCP</tspan></tspan></text></g></g></g><g class="node default intermediary" id="my-svg-flowchart-rtHttp-2" data-look="classic" transform="translate(884.337890625, 63.79999923706055)"><rect class="basic label-container" style="fill:#fff4e0 !important;stroke:#d68910 !important" x="-122.5625" y="-33.29999923706055" width="245.125" height="66.5999984741211"/><g class="label" style="color:#1f2328 !important" transform="translate(0, -18.299999237060547)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style="fill:#1f2328 !important"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">RT</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> data</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> HTTP</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> (MPVnet)</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">vč.</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> Arriva</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> City</tspan></tspan></text></g></g></g><g class="node default external" id="my-svg-flowchart-jisVymi-3" data-look="classic" transform="translate(1287.154296875, 63.79999923706055)"><rect class="basic label-container" style="fill:#fdecea !important;stroke:#c0392b !important" x="-68.2109375" y="-24.5" width="136.421875" height="49"/><g class="label" style="color:#1f2328 !important" transform="translate(0, -9.5)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style="fill:#1f2328 !important"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">VYMI</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> (JIS)</tspan></tspan></text></g></g></g><g class="node default external" id="my-svg-flowchart-tabulator-4" data-look="classic" transform="translate(1600.724609375, 63.79999923706055)"><rect class="basic label-container" style="fill:#fdecea !important;stroke:#c0392b !important" x="-131.6015625" y="-24.5" width="263.203125" height="49"/><g class="label" style="color:#1f2328 !important" transform="translate(0, -9.5)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style="fill:#1f2328 !important"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Tabulátor</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> (presety</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> tabulí)</tspan></tspan></text></g></g></g><g class="node default external" id="my-svg-flowchart-pullSources-5" data-look="classic" transform="translate(1859.232421875, 63.79999923706055)"><rect class="basic label-container" style="fill:#fdecea !important;stroke:#c0392b !important" x="-101.90625" y="-33.29999923706055" width="203.8125" height="66.5999984741211"/><g class="label" style="color:#1f2328 !important" transform="translate(0, -18.299999237060547)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style="fill:#1f2328 !important"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">ROPID</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> FTPS,</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Seznam</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> autobusů</tspan></tspan></text></g></g></g><g class="node default golemio" id="my-svg-flowchart-dataProxy-8" data-look="classic" transform="translate(638.724609375, 400.7999954223633)"><rect class="basic label-container" style="fill:#e3eefc !important;stroke:#1d4ed8 !important" x="-178.1640625" y="-42.099998474121094" width="356.328125" height="84.19999694824219"/><g class="label" style="color:#1f2328 !important" transform="translate(0, -27.099998474121094)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style="fill:#1f2328 !important"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Data</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> Proxy</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">(příjem</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> HTTP/TCP,</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="2.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">přeposílání</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> TCP</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> toků</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> DPP</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> do</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> MPVnet)</tspan></tspan></text></g></g></g><g class="node default intermediary" id="my-svg-flowchart-mpvnetOut-9" data-look="classic" transform="translate(251.158203125, 606.799991607666)"><rect class="basic label-container" style="fill:#fff4e0 !important;stroke:#d68910 !important" x="-94.3125" y="-24.5" width="188.625" height="49"/><g class="label" style="color:#1f2328 !important" transform="translate(0, -9.5)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style="fill:#1f2328 !important"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">MPVnet</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> (ROPID)</tspan></tspan></text></g></g></g><g class="node default golemio" id="my-svg-flowchart-tcpIg-10" data-look="classic" transform="translate(791.140625, 606.799991607666)"><rect class="basic label-container" style="fill:#e3eefc !important;stroke:#1d4ed8 !important" x="-111.0546875" y="-33.29999923706055" width="222.109375" height="66.5999984741211"/><g class="label" style="color:#1f2328 !important" transform="translate(0, -18.299999237060547)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style="fill:#1f2328 !important"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">TCP</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> Input</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> Gateway</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">(jen</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> @golemio/core)</tspan></tspan></text></g></g></g><g class="node default golemio" id="my-svg-flowchart-vpIg-11" data-look="classic" transform="translate(1140.044921875, 606.799991607666)"><rect class="basic label-container" style="fill:#e3eefc !important;stroke:#1d4ed8 !important" x="-101.4375" y="-33.29999923706055" width="202.875" height="66.5999984741211"/><g class="label" style="color:#1f2328 !important" transform="translate(0, -18.299999237060547)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style="fill:#1f2328 !important"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">VP</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> Input</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> Gateway</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">(@golemio/pid)</tspan></tspan></text></g></g></g><g class="node default golemio" id="my-svg-flowchart-cron-12" data-look="classic" transform="translate(1339.123046875, 606.799991607666)"><rect class="basic label-container" style="fill:#e3eefc !important;stroke:#1d4ed8 !important" x="-72.640625" y="-24.5" width="145.28125" height="49"/><g class="label" style="color:#1f2328 !important" transform="translate(0, -9.5)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style="fill:#1f2328 !important"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Cron</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> Tasks</tspan></tspan></text></g></g></g><g class="node default golemio" id="my-svg-flowchart-vpIe-15" data-look="classic" transform="translate(1167.017578125, 930.0999870300293)"><rect class="basic label-container" style="fill:#e3eefc !important;stroke:#1d4ed8 !important" x="-128.609375" y="-33.29999923706055" width="257.21875" height="66.5999984741211"/><g class="label" style="color:#1f2328 !important" transform="translate(0, -18.299999237060547)"><rect/><g><rect class="background" style="stroke: none"/><text y="-10.1" style="fill:#1f2328 !important"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">VP</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> Integration</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> Engine</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">(@golemio/pid:</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> workery)</tspan></tspan></text></g></g></g><g class="image-shape default" id="my-svg-flowchart-envoyTcp-6" data-look="classic" transform="translate(418.470703125, 241.5999984741211)"><g transform="translate(0,-15.5)"><path d="M-21.12 -16 L21.12 -16 L21.12 16 L-21.12 16" stroke="none" stroke-width="0" fill="#e3eefc"/><path d="M-21.12 -16 C-5.661845057801132 -16, 9.796309884397736 -16, 21.12 -16 M-21.12 -16 C-8.740965964175377 -16, 3.638068071649247 -16, 21.12 -16 M21.12 -16 C21.12 -6.298834360651654, 21.12 3.4023312786966926, 21.12 16 M21.12 -16 C21.12 -7.968967999306175, 21.12 0.062064001387650336, 21.12 16 M21.12 16 C12.347024899108305 16, 3.5740497982166097 16, -21.12 16 M21.12 16 C11.164807257788436 16, 1.2096145155768703 16, -21.12 16 M-21.12 16 C-21.12 8.418797006492273, -21.12 0.8375940129845443, -21.12 -16 M-21.12 16 C-21.12 8.563747120632012, -21.12 1.127494241264026, -21.12 -16" stroke="#1d4ed8" stroke-width="1.3" fill="none" stroke-dasharray="0 0"/></g><g class="label" style="color:#1f2328 !important" transform="translate(0,8.5)"><rect/><g style="fill:#1f2328 !important"><rect class="background" style="stroke: none" x="-87.9921875" y="-1" width="175.984375" height="23"/><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Envoy</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> Gateway</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> (TCP)</tspan></tspan></text></g></g><g><path d="M-87.9921875 -31.5 L87.9921875 -31.5 L87.9921875 31.5 L-87.9921875 31.5" stroke="none" stroke-width="0" fill="none"/></g><image href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHJvbGU9ImltZyIgdmlld0JveD0iLTQuMjEgNDkuNTQgNDM5LjkyIDMzMi42NyI+PHN0eWxlPnN2ZyB7ZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0MzIgNDMyfTwvc3R5bGU+PHBhdGggZmlsbD0iI2IzMWFhYiIgZD0iTTEwOS44IDIxMC42bC42IDI1LjQgMjYuOCAxNi42LS42LTI1LjR6bTY1LjQgMTA1LjhsLS42LTI0LjktMjMuNS0xNC42Yy0uMy0uMi0uNy0uNS0xLS43bC42IDI1IDI0LjUgMTUuMnpNOTEuNSAzNTBsLTYxLjMtMzgtMS41LTYzLjcgMzAuMS0xMy0uNi0yNS41LTQ4IDIwLjdjLTMuNyAxLjYtNS45IDUtNS44IDguOWwxLjggNzYuNWMuMSAzLjkgMi41IDcuOCA2LjMgMTAuMkw4NiAzNzEuN2MzLjQgMi4xIDcuNiAyLjcgMTEgMS42LjQtLjEuNy0uMiAxLS40bDQ1LjEtMTkuNC0yNC41LTE1LjJMOTEuNSAzNTB6Ii8+PHBhdGggZmlsbD0iI2QxNjNjZSIgZD0iTTI4OS42IDIwOS4xYy0uMS00LjYtMi45LTkuMS03LjMtMTEuOUwxOTMgMTQxLjlsLTIuOCAxLjIuNiAyNi44IDcwLjcgNDMuOCAxLjcgNzEuNiAyNyAxNi43IDEuNS0uNi0yLjEtOTIuM3pNMTgyLjcgMzM0LjhsLTgyLjktNTEuNC0yLTg2LjMgMzcuOC0xNi4zLS43LTI5LjctNTguNyAyNS4zYy00LjMgMS45LTYuOSA1LjgtNi44IDEwLjRMNzEuNyAyODhjLjEgNC42IDIuOSA5LjEgNy4zIDExLjhsOTcuMiA2MC4zYzQgMi41IDguOCAzLjEgMTIuOSAxLjkuNC0uMS44LS4zIDEuMi0uNWw1Ny40LTI0LjctMjguNi0xNy43LTM2LjQgMTUuN3oiLz48cGF0aCBmaWxsPSIjZTEzZWFmIiBkPSJNNDE1LjkgMTM4LjNMMjkxLjMgNjFjLTQuNi0yLjgtMTAuMS0zLjYtMTQuOC0yLjEtLjUuMS0uOS4zLTEuNC41bC0xMjEuNiA1Mi40Yy00LjkgMi4xLTcuOSA2LjYtNy44IDExLjlsMy4xIDEyOS42Yy4xIDUuMyAzLjMgMTAuNCA4LjQgMTMuNUwyODEuOCAzNDRjNC42IDIuOCAxMC4xIDMuNiAxNC43IDIuMS41LS4xLjktLjMgMS40LS41bDEyMS42LTUyLjRjNC45LTIuMSA3LjktNi43IDcuOC0xMS45bC0zLTEyOS42Yy0uMS01LjEtMy4zLTEwLjMtOC40LTEzLjR6TTI4OS4zIDMxNS4yTDE4MSAyNDguMWwtMi43LTExMi43IDEwNS42LTQ1LjVMMzkyLjIgMTU3bDIuNyAxMTIuNy0xMDUuNiA0NS41eiIvPjwvc3ZnPg==" width="42.24" height="32" preserveAspectRatio="none" transform="translate(-21.12,-31.5)"/></g><g class="image-shape default" id="my-svg-flowchart-rabbitmq-13" data-look="classic" transform="translate(1085.830078125, 770.8999900817871)"><g transform="translate(0,-15.5)"><path d="M-16 -16 L16 -16 L16 16 L-16 16" stroke="none" stroke-width="0" fill="#e3eefc"/><path d="M-16 -16 C-6.414886857532675 -16, 3.1702262849346496 -16, 16 -16 M-16 -16 C-6.540906838612608 -16, 2.9181863227747833 -16, 16 -16 M16 -16 C16 -8.2225915137673, 16 -0.4451830275346005, 16 16 M16 -16 C16 -6.1377639238445045, 16 3.724472152310991, 16 16 M16 16 C9.187751959709162 16, 2.3755039194183247 16, -16 16 M16 16 C6.230743229994765 16, -3.53851354001047 16, -16 16 M-16 16 C-16 6.3831786458597914, -16 -3.233642708280417, -16 -16 M-16 16 C-16 7.997361965491594, -16 -0.005276069016812102, -16 -16" stroke="#1d4ed8" stroke-width="1.3" fill="none" stroke-dasharray="0 0"/></g><g class="label" style="color:#1f2328 !important" transform="translate(0,8.5)"><rect/><g style="fill:#1f2328 !important"><rect class="background" style="stroke: none" x="-158.3828125" y="-1" width="316.765625" height="23"/><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">RabbitMQ</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> (exchange</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> vehicle-positions)</tspan></tspan></text></g></g><g><path d="M-158.3828125 -31.5 L158.3828125 -31.5 L158.3828125 31.5 L-158.3828125 31.5" stroke="none" stroke-width="0" fill="none"/></g><image href="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iNTAwIgogICBoZWlnaHQ9IjUwMCIKICAgdmlld0JveD0iMCAwIDEzMi4yOTE2NyAxMzIuMjkxNjYiCiAgIHZlcnNpb249IjEuMSIKICAgaWQ9InN2ZzEiCiAgIGlua3NjYXBlOnZlcnNpb249IjEuMyAoMGUxNTBlZDZjNCwgMjAyMy0wNy0yMSkiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImxvZ28tcmFiYml0bXEuc3ZnIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpZD0ibmFtZWR2aWV3MSIKICAgICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiCiAgICAgYm9yZGVyb3BhY2l0eT0iMS4wIgogICAgIGlua3NjYXBlOnNob3dwYWdlc2hhZG93PSIyIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCiAgICAgaW5rc2NhcGU6cGFnZWNoZWNrZXJib2FyZD0iMCIKICAgICBpbmtzY2FwZTpkZXNrY29sb3I9IiNkMWQxZDEiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9Im1tIgogICAgIGlua3NjYXBlOnpvb209IjAuNzMzODY2NSIKICAgICBpbmtzY2FwZTpjeD0iLTE1MC41NzIzNSIKICAgICBpbmtzY2FwZTpjeT0iMjkzLjY1MDE0IgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTkxNiIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxMDI5IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIiAvPgogIDxkZWZzCiAgICAgaWQ9ImRlZnMxIiAvPgogIDxnCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIgogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC03Ni4yMDAxMDUsLTExNS42MjI5MikiPgogICAgPGcKICAgICAgIGlkPSJnMSIKICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDMuMzEzOTE2OSwwLDAsMy4zMTM5MTY5LDc2LjIxNjcyNywxMTQuMjMxMTgpIgogICAgICAgc3R5bGU9InN0cm9rZS13aWR0aDowLjA3OTg0MDEiPgogICAgICA8cGF0aAogICAgICAgICBjbGFzcz0iY2xzLTIiCiAgICAgICAgIGQ9Ik0gMzkuNDIsMTcuMzcgSCAyNi42NSBhIDEuNTksMS41OSAwIDAgMSAtMS42LC0xLjYgViAzIEEgMS41OSwxLjU5IDAgMCAwIDIzLjQ1LDEuNDEgSCAxOC42NyBBIDEuNTksMS41OSAwIDAgMCAxNy4wNywzIHYgMTIuNzcgYSAxLjU5LDEuNTkgMCAwIDEgLTEuNiwxLjYgaCAtNC43OCBhIDEuNTksMS41OSAwIDAgMSAtMS42LC0xLjYgViAzIEEgMS41OSwxLjU5IDAgMCAwIDcuNDksMS40IEggMi43IEEgMS41OSwxLjU5IDAgMCAwIDEuMTEsMyB2IDM2LjcyIGEgMS41OSwxLjU5IDAgMCAwIDEuNiwxLjYgaCAzNi43MSBhIDEuNTksMS41OSAwIDAgMCAxLjYsLTEuNiBWIDE5IGEgMS41OSwxLjU5IDAgMCAwIC0xLjYsLTEuNjMgeiBNIDMzLDMwLjkzIGEgMi4zOSwyLjM5IDAgMCAxIC0yLjM5LDIuNCBoIC0zLjIgYSAyLjM5LDIuMzkgMCAwIDEgLTIuMzksLTIuNCB2IC0zLjE5IGEgMi4zOSwyLjM5IDAgMCAxIDIuMzksLTIuNCBoIDMuMiBhIDIuMzksMi4zOSAwIDAgMSAyLjM5LDIuNCB6IgogICAgICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMS4xMSwtMC45OCkiCiAgICAgICAgIGlkPSJwYXRoMTAiCiAgICAgICAgIHN0eWxlPSJmaWxsOiNmZjY2MDA7c3Ryb2tlLXdpZHRoOjAuMDc5ODQwMSIgLz4KICAgIDwvZz4KICA8L2c+Cjwvc3ZnPgo=" width="32" height="32" preserveAspectRatio="none" transform="translate(-16,-31.5)"/></g><g class="image-shape default" id="my-svg-flowchart-tableStorage-16" data-look="classic" transform="translate(190.21484375, 1129.499984741211)"><g transform="translate(0,-15.5)"><path d="M-16 -16 L16 -16 L16 16 L-16 16" stroke="none" stroke-width="0" fill="#eef0f3"/><path d="M-16 -16 C-5.080273983430139 -16, 5.839452033139722 -16, 16 -16 M-16 -16 C-8.009585454597847 -16, -0.01917090919569553 -16, 16 -16 M16 -16 C16 -6.151792710678295, 16 3.6964145786434095, 16 16 M16 -16 C16 -7.820323544637004, 16 0.35935291072599185, 16 16 M16 16 C8.774703681424619 16, 1.5494073628492373 16, -16 16 M16 16 C6.626938834342649 16, -2.7461223313147016 16, -16 16 M-16 16 C-16 3.8982504476783113, -16 -8.203499104643377, -16 -16 M-16 16 C-16 5.1170752990248065, -16 -5.765849401950387, -16 -16" stroke="#4b5563" stroke-width="1.3" fill="none" stroke-dasharray="0 0"/></g><g class="label" style="color:#1f2328 !important" transform="translate(0,8.5)"><rect/><g style="fill:#1f2328 !important"><rect class="background" style="stroke: none" x="-143.3203125" y="-1" width="286.640625" height="23"/><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Azure</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> Table</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> Storage</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> (raw</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> TCP</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> data)</tspan></tspan></text></g></g><g><path d="M-143.3203125 -31.5 L143.3203125 -31.5 L143.3203125 31.5 L-143.3203125 31.5" stroke="none" stroke-width="0" fill="none"/></g><image href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgdmlld0JveD0iMCAwIDE4IDE4Ij48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9ImZjNzQyYjJiLTU3NTAtNDg2NC1iOGRjLWNkY2NhYWM2ZjEzYyIgeDE9IjkiIHkxPSIxNS44MzQiIHgyPSI5IiB5Mj0iNS43ODgiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMwMDc4ZDQiIC8+PHN0b3Agb2Zmc2V0PSIwLjUwMiIgc3RvcC1jb2xvcj0iIzQwOTNlNiIgLz48c3RvcCBvZmZzZXQ9IjAuNzc1IiBzdG9wLWNvbG9yPSIjNWVhMGVmIiAvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjx0aXRsZT5Nc1BvcnRhbEZ4LmJhc2UuaW1hZ2VzLTQ8L3RpdGxlPjxnIGlkPSJmYjMzZjkwMi02NzgzLTRkYjMtODhlYS1hNDUyNGUzNTZjNzciPjxnPjxwYXRoIGQ9Ik0uNSw1Ljc4OGgxN2EwLDAsMCwwLDEsMCwwdjkuNDc4YS41NjguNTY4LDAsMCwxLS41NjguNTY4SDEuMDY4QS41NjguNTY4LDAsMCwxLC41LDE1LjI2NlY1Ljc4OEEwLDAsMCwwLDEsLjUsNS43ODhaIiBmaWxsPSJ1cmwoI2ZjNzQyYjJiLTU3NTAtNDg2NC1iOGRjLWNkY2NhYWM2ZjEzYykiIC8+PHBhdGggZD0iTTEuMDcxLDIuMTY2SDE2LjkyOWEuNTY4LjU2OCwwLDAsMSwuNTY4LjU2OFY1Ljc4OGEwLDAsMCwwLDEsMCwwSC41YTAsMCwwLDAsMSwwLDBWMi43MzRBLjU2OC41NjgsMCwwLDEsMS4wNzEsMi4xNjZaIiBmaWxsPSIjMDA3OGQ0IiAvPjxyZWN0IHg9IjIuMzA0IiB5PSI3LjEyMSIgd2lkdGg9IjMuNjUiIGhlaWdodD0iMS44NSIgcng9IjAuMjgzIiBmaWxsPSIjZmZmIiBvcGFjaXR5PSIwLjkiIC8+PHJlY3QgeD0iNy4yIiB5PSI3LjA5NSIgd2lkdGg9IjMuNjUiIGhlaWdodD0iMS44NSIgcng9IjAuMjgzIiBmaWxsPSIjZmZmIiBvcGFjaXR5PSIwLjkiIC8+PHJlY3QgeD0iMTIuMDk2IiB5PSI3LjA5NSIgd2lkdGg9IjMuNjUiIGhlaWdodD0iMS44NSIgcng9IjAuMjgzIiBmaWxsPSIjZmZmIiBvcGFjaXR5PSIwLjkiIC8+PHJlY3QgeD0iMi4zNTgiIHk9IjkuNzY3IiB3aWR0aD0iMy42NSIgaGVpZ2h0PSIxLjg1IiByeD0iMC4yODMiIGZpbGw9IiNmZmYiIG9wYWNpdHk9IjAuOSIgLz48cmVjdCB4PSI3LjI1NCIgeT0iOS43NDEiIHdpZHRoPSIzLjY1IiBoZWlnaHQ9IjEuODUiIHJ4PSIwLjI4MyIgZmlsbD0iI2ZmZDQwMCIgLz48cmVjdCB4PSIxMi4xNSIgeT0iOS43NDEiIHdpZHRoPSIzLjY1IiBoZWlnaHQ9IjEuODUiIHJ4PSIwLjI4MyIgZmlsbD0iI2ZmZDQwMCIgLz48cmVjdCB4PSIyLjM1OCIgeT0iMTIuNDM5IiB3aWR0aD0iMy42NSIgaGVpZ2h0PSIxLjg1IiByeD0iMC4yODMiIGZpbGw9IiNmZmQ0MDAiIC8+PHJlY3QgeD0iNy4yNTQiIHk9IjEyLjQxMyIgd2lkdGg9IjMuNjUiIGhlaWdodD0iMS44NSIgcng9IjAuMjgzIiBmaWxsPSIjZmZkNDAwIiAvPjxyZWN0IHg9IjEyLjE1IiB5PSIxMi40MTMiIHdpZHRoPSIzLjY1IiBoZWlnaHQ9IjEuODUiIHJ4PSIwLjI4MyIgZmlsbD0iI2ZmZDQwMCIgLz48L2c+PC9nPjwvc3ZnPg==" width="32" height="32" preserveAspectRatio="none" transform="translate(-16,-31.5)"/></g><g class="image-shape default" id="my-svg-flowchart-blobStorage-18" data-look="classic" transform="translate(209.78125, 770.8999900817871)"><g transform="translate(0,-24.299999237060547)"><path d="M-16 -16 L16 -16 L16 16 L-16 16" stroke="none" stroke-width="0" fill="#eef0f3"/><path d="M-16 -16 C-6.322150636336177 -16, 3.3556987273276455 -16, 16 -16 M-16 -16 C-7.232857160340615 -16, 1.5342856793187707 -16, 16 -16 M16 -16 C16 -3.3896753447013968, 16 9.220649310597206, 16 16 M16 -16 C16 -9.194506796482258, 16 -2.389013592964517, 16 16 M16 16 C3.449788191560458 16, -9.100423616879084 16, -16 16 M16 16 C9.057190986668386 16, 2.114381973336773 16, -16 16 M-16 16 C-16 7.6865018597055315, -16 -0.6269962805889371, -16 -16 M-16 16 C-16 7.832848293541124, -16 -0.3343034129177518, -16 -16" stroke="#4b5563" stroke-width="1.3" fill="none" stroke-dasharray="0 0"/></g><g class="label" style="color:#1f2328 !important" transform="translate(0,-0.2999992370605469)"><rect/><g style="fill:#1f2328 !important"><rect class="background" style="stroke: none" x="-179.28125" y="-1" width="358.5625" height="40.599998474121094"/><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Azure</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> Blob</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> Storage</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> (raw</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> HTTP</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> data,</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> statická</tspan></tspan><tspan class="text-outer-tspan row" x="0" y="1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">data)</tspan></tspan></text></g></g><g><path d="M-179.28125 -40.29999923706055 L179.28125 -40.29999923706055 L179.28125 40.29999923706055 L-179.28125 40.29999923706055" stroke="none" stroke-width="0" fill="none"/></g><image href="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgdmlld0JveD0iMCAwIDE4IDE4Ij48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9ImE5YzYyMzA3LTFjZDAtNDAwYy05MTFiLTE3ZWM2YTkxMTBjZSIgeDE9IjkiIHkxPSIxNS44MzQiIHgyPSI5IiB5Mj0iNS43ODgiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiMzMmJlZGQiIC8+PHN0b3Agb2Zmc2V0PSIwLjc3NSIgc3RvcC1jb2xvcj0iIzMyZDRmNSIgLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+TXNQb3J0YWxGeC5iYXNlLmltYWdlcy03PC90aXRsZT48ZyBpZD0iZjMxZDIxNGUtZjA5ZS00OWUzLWIzZDItN2M1ZDU1NjgyZDA5Ij48Zz48cGF0aCBkPSJNLjUsNS43ODhoMTdhMCwwLDAsMCwxLDAsMHY5LjQ3OGEuNTY4LjU2OCwwLDAsMS0uNTY4LjU2OEgxLjA2OEEuNTY4LjU2OCwwLDAsMSwuNSwxNS4yNjZWNS43ODhBMCwwLDAsMCwxLC41LDUuNzg4WiIgZmlsbD0idXJsKCNhOWM2MjMwNy0xY2QwLTQwMGMtOTExYi0xN2VjNmE5MTEwY2UpIiAvPjxwYXRoIGQ9Ik0xLjA3MSwyLjE2NkgxNi45MjlhLjU2OC41NjgsMCwwLDEsLjU2OC41NjhWNS43ODhhMCwwLDAsMCwxLDAsMEguNWEwLDAsMCwwLDEsMCwwVjIuNzM0QS41NjguNTY4LDAsMCwxLDEuMDcxLDIuMTY2WiIgZmlsbD0iIzAwNzhkNCIgLz48cmVjdCB4PSIyLjMyOCIgeT0iNy4wNDkiIHdpZHRoPSI2LjI4MSIgaGVpZ2h0PSIzLjQwOCIgcng9IjAuMjgzIiBmaWxsPSIjMDA3OGQ0IiAvPjxyZWN0IHg9IjkuMzM2IiB5PSI3LjA0OSIgd2lkdGg9IjYuMjgxIiBoZWlnaHQ9IjMuNDA4IiByeD0iMC4yODMiIGZpbGw9IiNmZmYiIC8+PHJlY3QgeD0iMi4yOTYiIHk9IjExLjEyOCIgd2lkdGg9IjYuMjgxIiBoZWlnaHQ9IjMuNDA4IiByeD0iMC4yODMiIGZpbGw9IiMwMDc4ZDQiIC8+PHJlY3QgeD0iOS4zMDQiIHk9IjExLjEyOCIgd2lkdGg9IjYuMjgxIiBoZWlnaHQ9IjMuNDA4IiByeD0iMC4yODMiIGZpbGw9IiMwMDc4ZDQiIC8+PC9nPjwvZz48L3N2Zz4=" width="32" height="32" preserveAspectRatio="none" transform="translate(-16,-40.29999923706055)"/></g><g class="image-shape default" id="my-svg-flowchart-postgres-22" data-look="classic" transform="translate(1177.017578125, 1129.499984741211)"><g transform="translate(0,-15.5)"><path d="M-19.393939393939394 -20 L19.393939393939394 -20 L19.393939393939394 20 L-19.393939393939394 20" stroke="none" stroke-width="0" fill="#eef0f3"/><path d="M-19.393939393939394 -20 C-4.784845220282493 -20, 9.824248953374408 -20, 19.393939393939394 -20 M-19.393939393939394 -20 C-8.333131410017545 -20, 2.7276765739043043 -20, 19.393939393939394 -20 M19.393939393939394 -20 C19.393939393939394 -5.987094848691521, 19.393939393939394 8.025810302616957, 19.393939393939394 20 M19.393939393939394 -20 C19.393939393939394 -11.701356581746836, 19.393939393939394 -3.4027131634936723, 19.393939393939394 20 M19.393939393939394 20 C6.729062932791171 20, -5.935813528357052 20, -19.393939393939394 20 M19.393939393939394 20 C5.310135929001884 20, -8.773667535935626 20, -19.393939393939394 20 M-19.393939393939394 20 C-19.393939393939394 11.282638726824867, -19.393939393939394 2.5652774536497347, -19.393939393939394 -20 M-19.393939393939394 20 C-19.393939393939394 8.659454136815242, -19.393939393939394 -2.681091726369516, -19.393939393939394 -20" stroke="#4b5563" stroke-width="1.3" fill="none" stroke-dasharray="0 0"/></g><g class="label" style="color:#1f2328 !important" transform="translate(0,12.5)"><rect/><g style="fill:#1f2328 !important"><rect class="background" style="stroke: none" x="-138.6953125" y="-1" width="277.390625" height="23"/><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">PostgreSQL</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> +</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> PostGIS</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> (VP</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> cluster)</tspan></tspan></text></g></g><g><path d="M-138.6953125 -35.5 L138.6953125 -35.5 L138.6953125 35.5 L-138.6953125 35.5" stroke="none" stroke-width="0" fill="none"/></g><image href="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIKICAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KCjxzdmcgd2lkdGg9IjQzMi4wNzFwdCIgaGVpZ2h0PSI0NDUuMzgzcHQiIHZpZXdCb3g9IjAgMCA0MzIuMDcxIDQ0NS4zODMiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGlkPSJvcmdpbmFsIiBzdHlsZT0iZmlsbC1ydWxlOm5vbnplcm87Y2xpcC1ydWxlOm5vbnplcm87c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLW1pdGVybGltaXQ6NDsiPgoJPC9nPgo8ZyBpZD0iTGF5ZXJfeDAwMjBfMyIgc3R5bGU9ImZpbGwtcnVsZTpub256ZXJvO2NsaXAtcnVsZTpub256ZXJvO2ZpbGw6bm9uZTtzdHJva2U6I0ZGRkZGRjtzdHJva2Utd2lkdGg6MTIuNDY1MTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6NDsiPgo8cGF0aCBzdHlsZT0iZmlsbDojMDAwMDAwO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDozNy4zOTUzO3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyOyIgZD0iTTMyMy4yMDUsMzI0LjIyN2MyLjgzMy0yMy42MDEsMS45ODQtMjcuMDYyLDE5LjU2My0yMy4yMzlsNC40NjMsMC4zOTJjMTMuNTE3LDAuNjE1LDMxLjE5OS0yLjE3NCw0MS41ODctN2MyMi4zNjItMTAuMzc2LDM1LjYyMi0yNy43LDEzLjU3Mi0yMy4xNDhjLTUwLjI5NywxMC4zNzYtNTMuNzU1LTYuNjU1LTUzLjc1NS02LjY1NWM1My4xMTEtNzguODAzLDc1LjMxMy0xNzguODM2LDU2LjE0OS0yMDMuMzIyICAgIEMzNTIuNTE0LTUuNTM0LDI2Mi4wMzYsMjYuMDQ5LDI2MC41MjIsMjYuODY5bC0wLjQ4MiwwLjA4OWMtOS45MzgtMi4wNjItMjEuMDYtMy4yOTQtMzMuNTU0LTMuNDk2Yy0yMi43NjEtMC4zNzQtNDAuMDMyLDUuOTY3LTUzLjEzMywxNS45MDRjMCwwLTE2MS40MDgtNjYuNDk4LTE1My44OTksODMuNjI4YzEuNTk3LDMxLjkzNiw0NS43NzcsMjQxLjY1NSw5OC40NywxNzguMzEgICAgYzE5LjI1OS0yMy4xNjMsMzcuODcxLTQyLjc0OCwzNy44NzEtNDIuNzQ4YzkuMjQyLDYuMTQsMjAuMzA3LDkuMjcyLDMxLjkxMiw4LjE0N2wwLjg5Ny0wLjc2NWMtMC4yODEsMi44NzYtMC4xNTcsNS42ODksMC4zNTksOS4wMTljLTEzLjU3MiwxNS4xNjctOS41ODQsMTcuODMtMzYuNzIzLDIzLjQxNmMtMjcuNDU3LDUuNjU5LTExLjMyNiwxNS43MzQtMC43OTcsMTguMzY3YzEyLjc2OCwzLjE5Myw0Mi4zMDUsNy43MTYsNjIuMjY4LTIwLjIyNCAgICBsLTAuNzk1LDMuMTg4YzUuMzI1LDQuMjYsNC45NjUsMzAuNjE5LDUuNzIsNDkuNDUyYzAuNzU2LDE4LjgzNCwyLjAxNywzNi40MDksNS44NTYsNDYuNzcxYzMuODM5LDEwLjM2LDguMzY5LDM3LjA1LDQ0LjAzNiwyOS40MDZjMjkuODA5LTYuMzg4LDUyLjYtMTUuNTgyLDU0LjY3Ny0xMDEuMTA3Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiMzMzY3OTE7c3Ryb2tlOm5vbmU7IiBkPSJNNDAyLjM5NSwyNzEuMjNjLTUwLjMwMiwxMC4zNzYtNTMuNzYtNi42NTUtNTMuNzYtNi42NTVjNTMuMTExLTc4LjgwOCw3NS4zMTMtMTc4Ljg0Myw1Ni4xNTMtMjAzLjMyNmMtNTIuMjctNjYuNzg1LTE0Mi43NTItMzUuMi0xNDQuMjYyLTM0LjM4bC0wLjQ4NiwwLjA4N2MtOS45MzgtMi4wNjMtMjEuMDYtMy4yOTItMzMuNTYtMy40OTZjLTIyLjc2MS0wLjM3My00MC4wMjYsNS45NjctNTMuMTI3LDE1LjkwMiAgICBjMCwwLTE2MS40MTEtNjYuNDk1LTE1My45MDQsODMuNjNjMS41OTcsMzEuOTM4LDQ1Ljc3NiwyNDEuNjU3LDk4LjQ3MSwxNzguMzEyYzE5LjI2LTIzLjE2MywzNy44NjktNDIuNzQ4LDM3Ljg2OS00Mi43NDhjOS4yNDMsNi4xNCwyMC4zMDgsOS4yNzIsMzEuOTA4LDguMTQ3bDAuOTAxLTAuNzY1Yy0wLjI4LDIuODc2LTAuMTUyLDUuNjg5LDAuMzYxLDkuMDE5Yy0xMy41NzUsMTUuMTY3LTkuNTg2LDE3LjgzLTM2LjcyMywyMy40MTYgICAgYy0yNy40NTksNS42NTktMTEuMzI4LDE1LjczNC0wLjc5NiwxOC4zNjdjMTIuNzY4LDMuMTkzLDQyLjMwNyw3LjcxNiw2Mi4yNjYtMjAuMjI0bC0wLjc5NiwzLjE4OGM1LjMxOSw0LjI2LDkuMDU0LDI3LjcxMSw4LjQyOCw0OC45NjljLTAuNjI2LDIxLjI1OS0xLjA0NCwzNS44NTQsMy4xNDcsNDcuMjU0YzQuMTkxLDExLjQsOC4zNjgsMzcuMDUsNDQuMDQyLDI5LjQwNmMyOS44MDktNi4zODgsNDUuMjU2LTIyLjk0Miw0Ny40MDUtNTAuNTU1ICAgIGMxLjUyNS0xOS42MzEsNC45NzYtMTYuNzI5LDUuMTk0LTM0LjI4bDIuNzY4LTguMzA5YzMuMTkyLTI2LjYxMSwwLjUwNy0zNS4xOTYsMTguODcyLTMxLjIwM2w0LjQ2MywwLjM5MmMxMy41MTcsMC42MTUsMzEuMjA4LTIuMTc0LDQxLjU5MS03YzIyLjM1OC0xMC4zNzYsMzUuNjE4LTI3LjcsMTMuNTczLTIzLjE0OHoiLz4KPHBhdGggZD0iTTIxNS44NjYsMjg2LjQ4NGMtMS4zODUsNDkuNTE2LDAuMzQ4LDk5LjM3Nyw1LjE5MywxMTEuNDk1YzQuODQ4LDEyLjExOCwxNS4yMjMsMzUuNjg4LDUwLjksMjguMDQ1YzI5LjgwNi02LjM5LDQwLjY1MS0xOC43NTYsNDUuMzU3LTQ2LjA1MWMzLjQ2Ni0yMC4wODIsMTAuMTQ4LTc1Ljg1NCwxMS4wMDUtODcuMjgxIi8+CjxwYXRoIGQ9Ik0xNzMuMTA0LDM4LjI1NmMwLDAtMTYxLjUyMS02Ni4wMTYtMTU0LjAxMiw4NC4xMDljMS41OTcsMzEuOTM4LDQ1Ljc3OSwyNDEuNjY0LDk4LjQ3MywxNzguMzE2YzE5LjI1Ni0yMy4xNjYsMzYuNjcxLTQxLjMzNSwzNi42NzEtNDEuMzM1Ii8+CjxwYXRoIGQ9Ik0yNjAuMzQ5LDI2LjIwN2MtNS41OTEsMS43NTMsODkuODQ4LTM0Ljg4OSwxNDQuMDg3LDM0LjQxN2MxOS4xNTksMjQuNDg0LTMuMDQzLDEyNC41MTktNTYuMTUzLDIwMy4zMjkiLz4KPHBhdGggc3R5bGU9InN0cm9rZS1saW5lam9pbjpiZXZlbDsiIGQ9Ik0zNDguMjgyLDI2My45NTNjMCwwLDMuNDYxLDE3LjAzNiw1My43NjQsNi42NTNjMjIuMDQtNC41NTIsOC43NzYsMTIuNzc0LTEzLjU3NywyMy4xNTVjLTE4LjM0NSw4LjUxNC01OS40NzQsMTAuNjk2LTYwLjE0Ni0xLjA2OWMtMS43MjktMzAuMzU1LDIxLjY0Ny0yMS4xMzMsMTkuOTYtMjguNzM5Yy0xLjUyNS02Ljg1LTExLjk3OS0xMy41NzMtMTguODk0LTMwLjMzOCAgICBjLTYuMDM3LTE0LjYzMy04Mi43OTYtMTI2Ljg0OSwyMS4yODctMTEwLjE4M2MzLjgxMy0wLjc4OS0yNy4xNDYtOTkuMDAyLTEyNC41NTMtMTAwLjU5OWMtOTcuMzg1LTEuNTk3LTk0LjE5LDExOS43NjItOTQuMTksMTE5Ljc2MiIvPgo8cGF0aCBkPSJNMTg4LjYwNCwyNzQuMzM0Yy0xMy41NzcsMTUuMTY2LTkuNTg0LDE3LjgyOS0zNi43MjMsMjMuNDE3Yy0yNy40NTksNS42Ni0xMS4zMjYsMTUuNzMzLTAuNzk3LDE4LjM2NWMxMi43NjgsMy4xOTUsNDIuMzA3LDcuNzE4LDYyLjI2Ni0yMC4yMjljNi4wNzgtOC41MDktMC4wMzYtMjIuMDg2LTguMzg1LTI1LjU0N2MtNC4wMzQtMS42NzEtOS40MjgtMy43NjUtMTYuMzYxLDMuOTk0eiIvPgo8cGF0aCBkPSJNMTg3LjcxNSwyNzQuMDY5Yy0xLjM2OC04LjkxNywyLjkzLTE5LjUyOCw3LjUzNi0zMS45NDJjNi45MjItMTguNjI2LDIyLjg5My0zNy4yNTUsMTAuMTE3LTk2LjMzOWMtOS41MjMtNDQuMDI5LTczLjM5Ni05LjE2My03My40MzYtMy4xOTNjLTAuMDM5LDUuOTY4LDIuODg5LDMwLjI2LTEuMDY3LDU4LjU0OGMtNS4xNjIsMzYuOTEzLDIzLjQ4OCw2OC4xMzIsNTYuNDc5LDY0LjkzOCIvPgo8cGF0aCBzdHlsZT0iZmlsbDojRkZGRkZGO3N0cm9rZS13aWR0aDo0LjE1NTtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjsiIGQ9Ik0xNzIuNTE3LDE0MS43Yy0wLjI4OCwyLjAzOSwzLjczMyw3LjQ4LDguOTc2LDguMjA3YzUuMjM0LDAuNzMsOS43MTQtMy41MjIsOS45OTgtNS41NTljMC4yODQtMi4wMzktMy43MzItNC4yODUtOC45NzctNS4wMTVjLTUuMjM3LTAuNzMxLTkuNzE5LDAuMzMzLTkuOTk2LDIuMzY3eiIvPgo8cGF0aCBzdHlsZT0iZmlsbDojRkZGRkZGO3N0cm9rZS13aWR0aDoyLjA3NzU7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7IiBkPSJNMzMxLjk0MSwxMzcuNTQzYzAuMjg0LDIuMDM5LTMuNzMyLDcuNDgtOC45NzYsOC4yMDdjLTUuMjM4LDAuNzMtOS43MTgtMy41MjItMTAuMDA1LTUuNTU5Yy0wLjI3Ny0yLjAzOSwzLjc0LTQuMjg1LDguOTc5LTUuMDE1YzUuMjM5LTAuNzMsOS43MTgsMC4zMzMsMTAuMDAyLDIuMzY4eiIvPgo8cGF0aCBkPSJNMzUwLjY3NiwxMjMuNDMyYzAuODYzLDE1Ljk5NC0zLjQ0NSwyNi44ODgtMy45ODgsNDMuOTE0Yy0wLjgwNCwyNC43NDgsMTEuNzk5LDUzLjA3NC03LjE5MSw4MS40MzUiLz4KPHBhdGggc3R5bGU9InN0cm9rZS13aWR0aDozOyIgZD0iTTAsNjAuMjMyIi8+CjwvZz4KPC9zdmc+" width="38.78787878787879" height="40" preserveAspectRatio="none" transform="translate(-19.393939393939394,-35.5)"/></g><g class="image-shape default" id="my-svg-flowchart-valkey-24" data-look="classic" transform="translate(1414.275390625, 1129.499984741211)"><g transform="translate(0,-15.5)"><path d="M-47.524752475247524 -16 L47.524752475247524 -16 L47.524752475247524 16 L-47.524752475247524 16" stroke="none" stroke-width="0" fill="#eef0f3"/><path d="M-47.524752475247524 -16 C-20.76236372578423 -16, 6.000025023679065 -16, 47.524752475247524 -16 M-47.524752475247524 -16 C-16.010193963873917 -16, 15.50436454749969 -16, 47.524752475247524 -16 M47.524752475247524 -16 C47.524752475247524 -6.954328560419171, 47.524752475247524 2.091342879161658, 47.524752475247524 16 M47.524752475247524 -16 C47.524752475247524 -4.89374387198777, 47.524752475247524 6.2125122560244606, 47.524752475247524 16 M47.524752475247524 16 C20.288701596287893 16, -6.947349282671738 16, -47.524752475247524 16 M47.524752475247524 16 C22.91836832167729 16, -1.6880158318929475 16, -47.524752475247524 16 M-47.524752475247524 16 C-47.524752475247524 8.575867943238666, -47.524752475247524 1.1517358864773346, -47.524752475247524 -16 M-47.524752475247524 16 C-47.524752475247524 8.364667331114855, -47.524752475247524 0.7293346622297108, -47.524752475247524 -16" stroke="#4b5563" stroke-width="1.3" fill="none" stroke-dasharray="0 0"/></g><g class="label" style="color:#1f2328 !important" transform="translate(0,8.5)"><rect/><g style="fill:#1f2328 !important"><rect class="background" style="stroke: none" x="-73.5625" y="-1" width="147.125" height="23"/><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Valkey</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> (Redis</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> API)</tspan></tspan></text></g></g><g><path d="M-73.5625 -31.5 L73.5625 -31.5 L73.5625 31.5 L-73.5625 31.5" stroke="none" stroke-width="0" fill="none"/></g><image href="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnNvZGlwb2RpPSJodHRwOi8vc29kaXBvZGkuc291cmNlZm9yZ2UubmV0L0RURC9zb2RpcG9kaS0wLmR0ZCIgeG1sbnM6aW5rc2NhcGU9Imh0dHA6Ly93d3cuaW5rc2NhcGUub3JnL25hbWVzcGFjZXMvaW5rc2NhcGUiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDE4Ny45IDYzLjUiPgogIDxkZWZzPgogICAgPHN0eWxlPgogICAgICAuY2xzLTEgewogICAgICAgIGZpbGw6ICMxYTIwMjY7CiAgICAgIH0KCiAgICAgIC5jbHMtMiB7CiAgICAgICAgZmlsbDogIzY5ODNmZjsKICAgICAgICBmaWxsLXJ1bGU6IGV2ZW5vZGQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyOC42LjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiAxLjIuMCBCdWlsZCA3MDkpICAtLT4KICA8Zz4KICAgIDxnIGlkPSJzdmcyNDU1Ij4KICAgICAgPHNvZGlwb2RpOm5hbWVkdmlldyBpZD0ibmFtZWR2aWV3MjQ1NyIgYm9yZGVyY29sb3I9IiMwMDAwMDAiIGJvcmRlcm9wYWNpdHk9IjAuMjUiIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImxheWVyMSIgaW5rc2NhcGU6Y3g9IjExNy4xNDcyNyIgaW5rc2NhcGU6Y3k9Ijg3LjE2Nzk5NSIgaW5rc2NhcGU6ZGVza2NvbG9yPSIjZDFkMWQxIiBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0ibW0iIGlua3NjYXBlOnBhZ2VjaGVja2VyYm9hcmQ9IjAiIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiIGlua3NjYXBlOnNob3dwYWdlc2hhZG93PSIyIiBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI3NTgiIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjAiIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTM2OCIgaW5rc2NhcGU6d2luZG93LXg9IjAiIGlua3NjYXBlOndpbmRvdy15PSIxMzIiIGlua3NjYXBlOnpvb209IjMuMDY4Nzg2OSIgcGFnZWNvbG9yPSIjZmZmZmZmIiBzaG93Z3JpZD0iZmFsc2UiIHNob3dndWlkZXM9InRydWUiPgogICAgICAgIDxzb2RpcG9kaTpndWlkZSBpZD0iZ3VpZGU0NTkxIiBpbmtzY2FwZTpsb2NrZWQ9ImZhbHNlIiBvcmllbnRhdGlvbj0iMCwtMSIgcG9zaXRpb249Ijg1Ljg4NDUxLC04OC4zMDY2NzEiLz4KICAgICAgICA8c29kaXBvZGk6Z3VpZGUgaWQ9Imd1aWRlNDU5MyIgaW5rc2NhcGU6bG9ja2VkPSJmYWxzZSIgb3JpZW50YXRpb249IjAsLTEiIHBvc2l0aW9uPSIxNTIuNDA3OTEsLTc5LjMwMTA4MSIvPgogICAgICAgIDxzb2RpcG9kaTpndWlkZSBpZD0iZ3VpZGU2MDUzIiBpbmtzY2FwZTpsb2NrZWQ9ImZhbHNlIiBvcmllbnRhdGlvbj0iMCwtMSIgcG9zaXRpb249Ijg0LjkwMzMxOCwtMTA4LjAxNDY5Ii8+CiAgICAgICAgPHNvZGlwb2RpOmd1aWRlIGlkPSJndWlkZTYwNTUiIGlua3NjYXBlOmxvY2tlZD0iZmFsc2UiIG9yaWVudGF0aW9uPSIwLC0xIiBwb3NpdGlvbj0iODguNDkyNTIxLC0xMjEuOTU3MzYiLz4KICAgICAgICA8c29kaXBvZGk6Z3VpZGUgaWQ9Imd1aWRlNzUyMSIgaW5rc2NhcGU6bG9ja2VkPSJmYWxzZSIgb3JpZW50YXRpb249IjAsLTEiIHBvc2l0aW9uPSI4MC4wNzE3MDEsLTEzMC4zNzgxNyIvPgogICAgICAgIDxzb2RpcG9kaTpndWlkZSBpZD0iZ3VpZGU3NTIzIiBpbmtzY2FwZTpsb2NrZWQ9ImZhbHNlIiBvcmllbnRhdGlvbj0iMCwtMSIgcG9zaXRpb249Ijc5LjkzMzY1NSwtMTQ4LjYwMDI4Ii8+CiAgICAgICAgPHNvZGlwb2RpOmd1aWRlIGlkPSJndWlkZTc1MjUiIGlua3NjYXBlOmxvY2tlZD0iZmFsc2UiIG9yaWVudGF0aW9uPSIxLDAiIHBvc2l0aW9uPSI5MC45NzczNSwtMTAxLjI1MDQyIi8+CiAgICAgICAgPHNvZGlwb2RpOmd1aWRlIGlkPSJndWlkZTc1ODMiIGlua3NjYXBlOmxvY2tlZD0iZmFsc2UiIG9yaWVudGF0aW9uPSIxLDAiIHBvc2l0aW9uPSIxNTcuNTE1NjIsLTEwOS41MzMyIi8+CiAgICAgICAgPHNvZGlwb2RpOmd1aWRlIGlkPSJndWlkZTExNTk4IiBpbmtzY2FwZTpsb2NrZWQ9ImZhbHNlIiBvcmllbnRhdGlvbj0iMCwtMSIgcG9zaXRpb249IjkyLjcyNDgzNywtMTgwLjY3MTAzIi8+CiAgICAgICAgPHNvZGlwb2RpOmd1aWRlIGlkPSJndWlkZTExNzgyIiBpbmtzY2FwZTpsb2NrZWQ9ImZhbHNlIiBvcmllbnRhdGlvbj0iMCwtMSIgcG9zaXRpb249Ijc0Ljk2NjYxNCwtNTcuMTM5ODExIi8+CiAgICAgICAgPHNvZGlwb2RpOmd1aWRlIGlkPSJndWlkZTExNzg0IiBpbmtzY2FwZTpsb2NrZWQ9ImZhbHNlIiBvcmllbnRhdGlvbj0iMCwtMSIgcG9zaXRpb249IjEwNi4zNTMyMSwtNDAuNDc1NzgiLz4KICAgICAgICA8c29kaXBvZGk6Z3VpZGUgaWQ9Imd1aWRlMTE3ODYiIGlua3NjYXBlOmxvY2tlZD0iZmFsc2UiIG9yaWVudGF0aW9uPSIxLDAiIHBvc2l0aW9uPSI3OS42NTg0MjMsLTUwLjUwNjU1Ii8+CiAgICAgICAgPHNvZGlwb2RpOmd1aWRlIGlkPSJndWlkZTEyMDExIiBpbmtzY2FwZTpsb2NrZWQ9ImZhbHNlIiBvcmllbnRhdGlvbj0iMCwtMSIgcG9zaXRpb249Ii03LjYzMDU5NjEsMTUuNTY4NjExIi8+CiAgICAgICAgPHNvZGlwb2RpOmd1aWRlIGlkPSJndWlkZTEyMDEzIiBpbmtzY2FwZTpsb2NrZWQ9ImZhbHNlIiBvcmllbnRhdGlvbj0iMCwtMSIgcG9zaXRpb249IjkuNTk5MzgxOSw2LjUyNTkyMTEiLz4KICAgICAgICA8c29kaXBvZGk6Z3VpZGUgaWQ9Imd1aWRlMTIwMTUiIGlua3NjYXBlOmxvY2tlZD0iZmFsc2UiIG9yaWVudGF0aW9uPSIxLDAiIHBvc2l0aW9uPSIxNi4wNzU4OTksMTUuODEzMDAxIi8+CiAgICAgICAgPHNvZGlwb2RpOmd1aWRlIGlkPSJndWlkZTEyMDE3IiBpbmtzY2FwZTpsb2NrZWQ9ImZhbHNlIiBvcmllbnRhdGlvbj0iMSwwIiBwb3NpdGlvbj0iMTguMDMxMDc0LC0wLjMxNzE5OTA3Ii8+CiAgICAgICAgPHNvZGlwb2RpOmd1aWRlIGlkPSJndWlkZTEyMDIzIiBpbmtzY2FwZTpsb2NrZWQ9ImZhbHNlIiBvcmllbnRhdGlvbj0iMSwwIiBwb3NpdGlvbj0iMjAuMDg4NjkyLDAuNTE3MzEwOTUiLz4KICAgICAgICA8c29kaXBvZGk6Z3VpZGUgaWQ9Imd1aWRlMTIwMjUiIGlua3NjYXBlOmxvY2tlZD0iZmFsc2UiIG9yaWVudGF0aW9uPSIxLDAiIHBvc2l0aW9uPSIxLjk4MzAwMzgsMTAuNjkwOTgxIi8+CiAgICAgICAgPHNvZGlwb2RpOmd1aWRlIGlkPSJndWlkZTEyMDI3IiBpbmtzY2FwZTpsb2NrZWQ9ImZhbHNlIiBvcmllbnRhdGlvbj0iMSwwIiBwb3NpdGlvbj0iLTIuNDM1NDcxOWUtMDgsMjEuMzgxOTYxIi8+CiAgICAgICAgPHNvZGlwb2RpOmd1aWRlIGlkPSJndWlkZTEyMDI5IiBpbmtzY2FwZTpsb2NrZWQ9ImZhbHNlIiBvcmllbnRhdGlvbj0iMSwwIiBwb3NpdGlvbj0iNjQuMjMyMDg4LDI1LjY5MjgzMiIvPgogICAgICAgIDxzb2RpcG9kaTpndWlkZSBpZD0iZ3VpZGUxMjAzMSIgaW5rc2NhcGU6bG9ja2VkPSJmYWxzZSIgb3JpZW50YXRpb249IjEsMCIgcG9zaXRpb249IjY2LjMwMTMwOSwzNS45NTI3MjIiLz4KICAgICAgICA8c29kaXBvZGk6Z3VpZGUgaWQ9Imd1aWRlMTIwMzMiIGlua3NjYXBlOmxvY2tlZD0iZmFsc2UiIG9yaWVudGF0aW9uPSIwLC0xIiBwb3NpdGlvbj0iOC40NDkzMjA5LDEuODk2NzkxIi8+CiAgICAgICAgPHNvZGlwb2RpOmd1aWRlIGlkPSJndWlkZTEyMDM1IiBpbmtzY2FwZTpsb2NrZWQ9ImZhbHNlIiBvcmllbnRhdGlvbj0iMCwtMSIgcG9zaXRpb249IjcuNzU5NTgwOSwtMC4wODYyMDkwNjYiLz4KICAgICAgICA8c29kaXBvZGk6Z3VpZGUgaWQ9Imd1aWRlMTIwMzciIGlua3NjYXBlOmxvY2tlZD0iZmFsc2UiIG9yaWVudGF0aW9uPSIwLC0xIiBwb3NpdGlvbj0iMTIuMDcwNDU5LDIwLjM0NzM1MSIvPgogICAgICAgIDxzb2RpcG9kaTpndWlkZSBpZD0iZ3VpZGUxMjAzOSIgaW5rc2NhcGU6bG9ja2VkPSJmYWxzZSIgb3JpZW50YXRpb249IjAsLTEiIHBvc2l0aW9uPSIxMS44MTE4MDYsMjIuNDE2NTcyIi8+CiAgICAgIDwvc29kaXBvZGk6bmFtZWR2aWV3PgogICAgICA8ZyBpZD0ibGF5ZXIxIiBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIiBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSI+CiAgICAgICAgPHBhdGggaWQ9InBhdGgxMTk0OSIgY2xhc3M9ImNscy0yIiBkPSJNMTUuMiw1MGwtOS40LTUuOXYtMjVMMjguOCw2bDIyLjMsMTMuMXYyNi4zbC0yMi43LDEyLjgtNy45LTQuOXYtMTJsLTQuMy0yLjd2LTEzLjZsMTIuNC03LjEsMTIuMSw3LjF2MTQuMmwtOS42LDUuNHYtNS43YzIuOS0xLjEsNC45LTMuOSw0LjktNy4zcy0zLjQtNy44LTcuNi03LjgtNy42LDMuNS03LjYsNy44LDIuMSw2LjIsNC45LDcuM3YxMC45bDIuNywxLjcsMTYuOC05LjV2LTE5LjdsLTE2LjYtOS44LTE3LjEsOS44djE4LjVsMy42LDIuM3Y2LjhaTTI4LjUsMjguMWMxLjksMCwzLjQsMS42LDMuNCwzLjZzLTEuNSwzLjYtMy40LDMuNi0zLjQtMS42LTMuNC0zLjYsMS41LTMuNiwzLjQtMy42WiIvPgogICAgICAgIDxnIGlkPSJ0ZXh0MTE5NTMiPgogICAgICAgICAgPHBhdGggaWQ9InBhdGg0MDE1MCIgY2xhc3M9ImNscy0xIiBkPSJNODUuMiwxMS40bC0xMi4xLDMzLjhoLTRsLTEyLjEtMzMuOGg0LjFsNy45LDIyLjNjLjMuOS42LDEuOC45LDIuNi4zLjguNSwxLjYuNywyLjQuMi44LjQsMS41LjUsMi4yLjItLjcuMy0xLjQuNS0yLjIuMi0uOC40LTEuNi43LTIuNC4zLS44LjYtMS43LjktMi42bDcuOS0yMi4yaDQuMloiLz4KICAgICAgICAgIDxwYXRoIGlkPSJwYXRoNDAxNTIiIGNsYXNzPSJjbHMtMSIgZD0iTTk0LDE5LjVjMywwLDUuMy43LDYuNywyLDEuNSwxLjQsMi4yLDMuNSwyLjIsNi41djE3LjJoLTIuOGwtLjctMy43aC0uMmMtLjcuOS0xLjQsMS43LTIuMiwyLjMtLjguNi0xLjcsMS4xLTIuNywxLjQtMSwuMy0yLjIuNS0zLjcuNXMtMi45LS4zLTQuMS0uOGMtMS4yLS41LTIuMS0xLjQtMi44LTIuNS0uNy0xLjEtMS0yLjUtMS00LjIsMC0yLjUsMS00LjUsMy01LjgsMi0xLjQsNS4xLTIuMSw5LjItMi4ybDQuNC0uMnYtMS41YzAtMi4yLS41LTMuNy0xLjQtNC42LS45LS45LTIuMy0xLjMtNC0xLjMtMS4zLDAtMi42LjItMy44LjYtMS4yLjQtMi4zLjgtMy40LDEuNGwtMS4yLTIuOWMxLjEtLjYsMi41LTEuMSwzLjktMS41LDEuNS0uNCwzLS42LDQuNy0uNmgwWk05OS4xLDMyLjhsLTMuOS4yYy0zLjIuMS01LjQuNi02LjcsMS41cy0xLjksMi4yLTEuOSwzLjkuNCwyLjUsMS4zLDMuMmMuOS43LDIsMSwzLjUsMSwyLjMsMCw0LjEtLjYsNS41LTEuOXMyLjItMy4xLDIuMi01LjZ2LTIuM1oiLz4KICAgICAgICAgIDxwYXRoIGlkPSJwYXRoNDAxNTQiIGNsYXNzPSJjbHMtMSIgZD0iTTExMi4xLDQ1LjNoLTMuOVY5LjNoMy45djM2WiIvPgogICAgICAgICAgPHBhdGggaWQ9InBhdGg0MDE1NiIgY2xhc3M9ImNscy0xIiBkPSJNMTIxLjMsOS4zdjE4LjdjMCwuNiwwLDEuNCwwLDIuMywwLC45LDAsMS43LS4xLDIuM2guMmMuMy0uNC44LTEsMS40LTEuOC42LS44LDEuMi0xLjQsMS42LTEuOWw4LjQtOWg0LjVsLTEwLjIsMTAuOCwxMC45LDE0LjVoLTQuNmwtOS0xMi0zLjEsMi44djkuMmgtMy44VjkuM2gzLjhaIi8+CiAgICAgICAgICA8cGF0aCBpZD0icGF0aDQwMTU4IiBjbGFzcz0iY2xzLTEiIGQ9Ik0xNDguMiwxOS40YzIuMiwwLDQsLjUsNS42LDEuNCwxLjUsMSwyLjcsMi4zLDMuNSw0LC44LDEuNywxLjIsMy43LDEuMiw2djIuNGgtMTcuNWMwLDMsLjgsNS4yLDIuMiw2LjhzMy41LDIuMyw2LjEsMi4zLDMtLjEsNC4zLS40YzEuMi0uMywyLjUtLjcsMy44LTEuM3YzLjRjLTEuMy42LTIuNiwxLTMuOCwxLjItMS4yLjMtMi43LjQtNC40LjQtMi40LDAtNC42LS41LTYuNC0xLjUtMS44LTEtMy4yLTIuNS00LjItNC40LTEtMS45LTEuNS00LjMtMS41LTcuMSwwLTIuNy41LTUuMSwxLjQtNy4xLjktMiwyLjItMy41LDMuOS00LjYsMS43LTEuMSwzLjctMS42LDUuOS0xLjZoMFpNMTQ4LjIsMjIuNmMtMi4xLDAtMy43LjctNC45LDItMS4yLDEuMy0xLjksMy4yLTIuMiw1LjZoMTMuNGMwLTEuNS0uMy0yLjgtLjctNC0uNC0xLjItMS4xLTIuMS0yLjEtMi43LS45LS42LTIuMS0xLTMuNi0xWiIvPgogICAgICAgICAgPHBhdGggaWQ9InBhdGg0MDE2MCIgY2xhc3M9ImNscy0xIiBkPSJNMTU4LjQsMTkuOWg0LjFsNS42LDE0LjdjLjMuOS42LDEuNy45LDIuNS4zLjguNSwxLjUuNywyLjMuMi43LjQsMS40LjUsMi4xaC4yYy4yLS44LjUtMS44LjktMywuNC0xLjMuOC0yLjYsMS4zLTMuOWw1LjMtMTQuN2g0LjFsLTExLDI5LjFjLS42LDEuNi0xLjMsMi45LTIuMSw0LjEtLjgsMS4yLTEuNywyLTIuOCwyLjctMS4xLjYtMi41LjktNCwuOXMtMS40LDAtMS45LS4xYy0uNiwwLTEtLjItMS40LS4zdi0zLjFjLjMsMCwuNy4xLDEuMi4yLjUsMCwxLDAsMS41LDAsMSwwLDEuOC0uMiwyLjUtLjYuNy0uNCwxLjMtLjksMS44LTEuNi41LS43LjktMS41LDEuMy0yLjVsMS40LTMuNi0xMC4yLTI1LjRaIi8+CiAgICAgICAgPC9nPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgo8L3N2Zz4=" width="95.04950495049505" height="32" preserveAspectRatio="none" transform="translate(-47.524752475247524,-31.5)"/></g><g class="image-shape default" id="my-svg-flowchart-loki-20" data-look="classic" transform="translate(486.7578125, 770.8999900817871)"><g transform="translate(0,-15.5)"><path d="M-16 -16 L16 -16 L16 16 L-16 16" stroke="none" stroke-width="0" fill="#e3eefc"/><path d="M-16 -16 C-8.960288502437665 -16, -1.9205770048753301 -16, 16 -16 M-16 -16 C-6.58068766529934 -16, 2.8386246694013195 -16, 16 -16 M16 -16 C16 -5.399731476646227, 16 5.200537046707545, 16 16 M16 -16 C16 -7.809990102217091, 16 0.38001979556581844, 16 16 M16 16 C5.520112337940784 16, -4.959775324118432 16, -16 16 M16 16 C5.88974732968261 16, -4.22050534063478 16, -16 16 M-16 16 C-16 3.72746839888282, -16 -8.54506320223436, -16 -16 M-16 16 C-16 8.683156729818274, -16 1.3663134596365474, -16 -16" stroke="#1d4ed8" stroke-width="1.3" fill="none" stroke-dasharray="0 0"/></g><g class="label" style="color:#1f2328 !important" transform="translate(0,8.5)"><rect/><g style="fill:#1f2328 !important"><rect class="background" style="stroke: none" x="-52.6953125" y="-1" width="105.390625" height="23"/><text y="-10.1"><tspan class="text-outer-tspan row" x="0" y="-0.1em" dy="1.1em"><tspan font-style="normal" class="text-inner-tspan" font-weight="normal">Grafana</tspan><tspan font-style="normal" class="text-inner-tspan" font-weight="normal"> Loki</tspan></tspan></text></g></g><g><path d="M-52.6953125 -31.5 L52.6953125 -31.5 L52.6953125 31.5 L-52.6953125 31.5" stroke="none" stroke-width="0" fill="none"/></g><image href="data:image/png;base64,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" width="32" height="32" preserveAspectRatio="none" transform="translate(-16,-31.5)"/></g></g></g></g><defs><filter id="my-svg-drop-shadow" height="130%" width="130%"><feDropShadow dx="4" dy="4" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs><defs><filter id="my-svg-drop-shadow-small" height="150%" width="150%"><feDropShadow dx="2" dy="2" stdDeviation="0" flood-opacity="0.06" flood-color="#000000"/></filter></defs><text text-anchor="middle" x="995.8193359375" y="-25" class="flowchartTitleText">PID Polohy – příjem a zpracování dat</text></svg>
@@ -0,0 +1,81 @@
1
+ ---
2
+ title: PID Polohy – poskytování dat
3
+ config:
4
+ htmlLabels: false
5
+ flowchart:
6
+ curve: basis
7
+ wrappingWidth: 400
8
+ nodeSpacing: 25
9
+ rankSpacing: 45
10
+ ---
11
+ flowchart TB
12
+ %% Šipka = směr toku dat. Plná = odesílatel data posílá (push), přerušovaná = příjemce si data stahuje (pull).
13
+
14
+ subgraph storage["Databázová vrstva"]
15
+ direction LR
16
+ postgres@{ img: "../../assets/logos/postgresql.svg", label: "PostgreSQL + PostGIS (VP cluster)", pos: "b", h: 40, constraint: "on" }
17
+ valkey@{ img: "../../assets/logos/valkey.svg", label: "Valkey (Redis API)", pos: "b", h: 32, constraint: "on" }
18
+ end
19
+
20
+ subgraph vp["Dedikované služby Polohy vozidel (VP)"]
21
+ direction LR
22
+ vpOg["VP Output Gateway<br/>(@golemio/pid)"]
23
+ varnish@{ img: "../../assets/logos/varnish.svg", label: "Varnish cache (vybrané endpointy)", pos: "b", h: 30, constraint: "on" }
24
+ urlProxy["URL Proxy<br/>(zkracovač URL tabulí, @golemio/pid)"]
25
+ end
26
+
27
+ subgraph permissions["Přístupová vrstva"]
28
+ direction LR
29
+ accessProxy["Access Proxy<br/>(autentizace, autorizace, routování)"]
30
+ permissionManagement["Permission Management,<br/>API Key Management (portál API klíčů),<br/>Admin panel"]
31
+ permissionDb[("Databáze a cache oprávnění")]
32
+ end
33
+
34
+ otherGolemio["Ostatní služby Golemio<br/>(IG, IE, OG dalších datových sad)"]
35
+
36
+ subgraph apiEdge["Veřejný přístup k API"]
37
+ direction LR
38
+ envoyHttp@{ img: "../../assets/logos/envoy.svg", label: "Envoy Gateway (HTTPS)", pos: "b", h: 32, constraint: "on" }
39
+ cloudflare@{ img: "../../assets/logos/cloudflare.png", label: "Cloudflare (CDN, DNS proxy)", pos: "b", h: 28, constraint: "on" }
40
+ end
41
+
42
+ subgraph clients["Odběratelé"]
43
+ direction LR
44
+ apiClients["Aplikace a odběratelé API<br/>(PID Lítačka, Mapa PID, GTFS-RT…)"]
45
+ boards["Odjezdové tabule (krátké URL)"]
46
+ tabulator["Tabulátor (GTFS zastávky)"]
47
+ vymi["VYMI (GTFS linky, zastávky, presety)"]
48
+ end
49
+
50
+ postgres -. "SQL" .-> vpOg
51
+ valkey -. "cache, GTFS-RT, pub/sub" .-> vpOg
52
+ postgres -. "presety" .-> urlProxy
53
+
54
+ vpOg -.-> varnish
55
+ varnish -.-> accessProxy
56
+ vpOg -.-> accessProxy
57
+ urlProxy -. "přesměrování" .-> accessProxy
58
+ otherGolemio -.-> accessProxy
59
+ permissionDb <--> accessProxy
60
+ permissionManagement <--> permissionDb
61
+
62
+ accessProxy -.-> envoyHttp
63
+ urlProxy -.-> envoyHttp
64
+ envoyHttp -.-> cloudflare
65
+ cloudflare -. "HTTPS" .-> apiClients
66
+ cloudflare -. "HTTPS" .-> boards
67
+ cloudflare -. "HTTPS /v2/gtfs/stops" .-> tabulator
68
+ cloudflare -. "HTTPS /v2/gtfs/routes, /v2/gtfs/stops, /v3/pid/departurepresets" .-> vymi
69
+
70
+ classDef external fill:#fdecea,stroke:#c0392b,color:#1f2328
71
+ classDef golemio fill:#e3eefc,stroke:#1d4ed8,color:#1f2328
72
+ classDef store fill:#eef0f3,stroke:#4b5563,color:#1f2328
73
+ classDef consumer fill:#e6f6ea,stroke:#15803d,color:#1f2328
74
+ class vpOg,urlProxy,varnish,accessProxy,permissionManagement,envoyHttp,cloudflare,otherGolemio golemio
75
+ class postgres,valkey,permissionDb store
76
+ class apiClients,boards,tabulator,vymi consumer
77
+ style storage fill:#fafafa,stroke:#9ca3af
78
+ style vp fill:#f5f9ff,stroke:#1d4ed8
79
+ style permissions fill:#fafafa,stroke:#9ca3af
80
+ style apiEdge fill:#fafafa,stroke:#9ca3af
81
+ style clients fill:#fafafa,stroke:#9ca3af