{"templateId":"markdown","versions":[{"version":"v1.41","label":"v1.41 STS","link":"/products/custody/deployment/integrate-kms/mpc/azure-deployment","default":true,"active":true,"folderId":"c15a2701"},{"version":"v1.40","label":"v1.40 STS","link":"/products/custody/v1.40/deployment/integrate-kms/mpc/azure-deployment","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.34","label":"v1.34 LTS","link":"/products/custody/v1.34/deployment/integrate-kms/mpc/azure-deployment","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.26","label":"v1.26 LTS","link":"/products/custody/v1.26/deployment/integrate-kms/mpc/azure-deployment","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.19","label":"v1.19 LTS","link":"/products/custody/v1.19/deployment/integrate-kms/mpc/azure-deployment","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.15","label":"v1.15 LTS","link":"/products/custody/v1.15/deployment/integrate-kms/mpc/azure-deployment","default":false,"active":false,"folderId":"c15a2701"}],"sharedDataIds":{"sidebar":"sidebar-products/custody/@v1.15/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"type":"markdown"},"seo":{"title":"MPC deployment on Azure","description":"User guides, API reference, and support resources.","siteUrl":"https://docs.ripple.com","lang":"en-US","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"mpc-deployment-on-azure","__idx":0},"children":["MPC deployment on Azure"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This guide covers deploying customer MPC nodes (Node 2 and Node 3) to Microsoft Azure using the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["MPC Deployer"]}," tool."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Prerequisites:"]}," Review the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/deployment/integrate-kms/mpc/overview"},"children":["MPC overview"]}," to understand the architecture, shared responsibility model, and node ownership before proceeding."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"overview","__idx":1},"children":["Overview"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The MPC Deployer automates the deployment of customer MPC nodes to Azure Confidential VMs, using AMD SEV-SNP based isolation for node execution and Azure Key Vault for node key material and deployment configuration."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"what-gets-deployed","__idx":2},"children":["What gets deployed"]},{"$$mdtype":"Tag","name":"Diagram","attributes":{"data-language":"mermaid","diagramType":"mermaid","diagramSource":"flowchart TB\n    subgraph azure[\"Azure Subscription (Customer)\"]\n        subgraph rg[\"Resource Group\"]\n            subgraph vnet[\"Virtual Network\"]\n                subgraph subnet1[\"Subnet 1\"]\n                    cvm1[\"Confidential VM<br/>MPC Node 2\"]\n                end\n                subgraph subnet2[\"Subnet 2\"]\n                    cvm2[\"Confidential VM<br/>MPC Node 3\"]\n                end\n            end\n            kv[\"Deployer Key Vault<br/>MPC Nodes Keys & Deployer config\"]\n            hsmkv[\"Premium Key Vault<br/>Contains the enclave contract wrapping key\"]\n            mi[\"User-Assigned<br/>Managed Identity\"]\n            storage[\"Storage Account<br/>Terraform State\"]\n            logs[\"Boot diagnostics and Log Analytics Workspace (LAW)\"]\n        end\n    end\n\n    cvm1 --> kv\n    cvm2 --> kv\n    cvm1 --> hsmkv\n    cvm2 --> hsmkv\n    mi --> kv\n    mi --> hsmkv\n    cvm1 --> logs\n    cvm2 --> logs\n\n    style azure fill:#e3f2fd,stroke:#1565c0\n    style rg fill:#fafafa,stroke:#616161\n    style vnet fill:#e8f5e9,stroke:#2e7d32\n    style cvm1 fill:#fff3e0,stroke:#ef6c00\n    style cvm2 fill:#fff3e0,stroke:#ef6c00\n    style kv fill:#f3e5f5,stroke:#6a1b9a\n    style hsmkv fill:#fce4ec,stroke:#ad1457\n","diagramHtml":"<svg id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" class=\"flowchart\" style=\"max-width: 1268.421875px;\" viewBox=\"0 0 1268.421875 666\" role=\"graphics-document document\" aria-roledescription=\"flowchart-v2\"><style>\n    #diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f foreignObject {\n      overflow: visible;\n    }\n  </style><style>#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .error-icon{fill:#552222;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .error-text{fill:#552222;stroke:#552222;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .edge-thickness-normal{stroke-width:1px;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .edge-thickness-thick{stroke-width:3.5px;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .edge-pattern-solid{stroke-dasharray:0;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .edge-thickness-invisible{stroke-width:0;fill:none;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .edge-pattern-dashed{stroke-dasharray:3;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .edge-pattern-dotted{stroke-dasharray:2;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .marker{fill:#333333;stroke:#333333;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .marker.cross{stroke:#333333;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f svg{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f p{margin:0;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .label{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;color:#333;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .cluster-label text{fill:#333;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .cluster-label span{color:#333;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .cluster-label span p{background-color:transparent;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .label text,#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f span{fill:#333;color:#333;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .node rect,#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .node circle,#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .node ellipse,#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .node polygon,#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .rough-node .label text,#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .node .label text,#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .image-shape .label,#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .icon-shape .label{text-anchor:middle;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .rough-node .label,#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .node .label,#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .image-shape .label,#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .icon-shape .label{text-align:center;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .node.clickable{cursor:pointer;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .arrowheadPath{fill:#333333;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .edgePath .path{stroke:#333333;stroke-width:1px;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .flowchart-link{stroke:#333333;fill:none;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .cluster text{fill:#333;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .cluster span{color:#333;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f rect.text{fill:none;stroke-width:0;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .icon-shape,#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .icon-shape p,#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .icon-shape .label rect,#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f .node .neo-node{stroke:#9370DB;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f [data-look=\"neo\"].node rect,#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f [data-look=\"neo\"].cluster rect,#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f [data-look=\"neo\"].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f [data-look=\"neo\"].swimlane.cluster rect{filter:none;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f [data-look=\"neo\"].node path{stroke:#9370DB;stroke-width:1px;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f [data-look=\"neo\"].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f [data-look=\"neo\"].node .neo-line path{stroke:#9370DB;filter:none;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f [data-look=\"neo\"].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f [data-look=\"neo\"].node circle .state-start{fill:#000000;}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f [data-look=\"neo\"].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f [data-look=\"neo\"].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f :root{--mermaid-font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;}</style><g><marker id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f_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;\"></path></marker><marker id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f_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;\"></path></marker><marker id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f_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;\"></path></marker><marker id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f_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;\"></polygon></marker><marker id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f_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;\"></circle></marker><marker id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f_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;\"></circle></marker><marker id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f_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;\"></circle></marker><marker id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f_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;\"></circle></marker><marker id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f_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;\"></path></marker><marker id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f_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;\"></path></marker><marker id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f_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;\"></path></marker><marker id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f_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;\"></path></marker><g class=\"root\"><g class=\"clusters\"></g><g class=\"edgePaths\"></g><g class=\"edgeLabels\"></g><g class=\"nodes\"><g class=\"root\" transform=\"translate(0, 0)\"><g class=\"clusters\"><g class=\"cluster\" id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f-azure\" data-look=\"classic\"><rect style=\"fill:#e3f2fd !important;stroke:#1565c0 !important\" x=\"8\" y=\"8\" width=\"1252.421875\" height=\"650\"></rect><g class=\"cluster-label\" transform=\"translate(524.8359375, 8)\"><foreignObject width=\"218.75\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5;\"><span class=\"nodeLabel\"><p>Azure Subscription (Customer)</p></span></div></foreignObject></g></g></g><g class=\"edgePaths\"></g><g class=\"edgeLabels\"></g><g class=\"nodes\"><g class=\"root\" transform=\"translate(37.5, 35)\"><g class=\"clusters\"><g class=\"cluster\" id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f-rg\" data-look=\"classic\"><rect style=\"fill:#fafafa !important;stroke:#616161 !important\" x=\"8\" y=\"8\" width=\"1177.421875\" height=\"580\"></rect><g class=\"cluster-label\" transform=\"translate(538.015625, 8)\"><foreignObject width=\"117.390625\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5;\"><span class=\"nodeLabel\"><p>Resource Group</p></span></div></foreignObject></g></g><g class=\"cluster\" id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f-vnet\" data-look=\"classic\"><rect style=\"fill:#e8f5e9 !important;stroke:#2e7d32 !important\" x=\"321.875\" y=\"58\" width=\"686.4765625\" height=\"278\"></rect><g class=\"cluster-label\" transform=\"translate(611.01953125, 58)\"><foreignObject width=\"108.1875\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5;\"><span class=\"nodeLabel\"><p>Virtual Network</p></span></div></foreignObject></g></g><g class=\"cluster\" id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f-subnet2\" data-look=\"classic\"><rect style=\"\" x=\"341.875\" y=\"108\" width=\"242.953125\" height=\"178\"></rect><g class=\"cluster-label\" transform=\"translate(431.3203125, 108)\"><foreignObject width=\"64.0625\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5;\"><span class=\"nodeLabel\"><p>Subnet 2</p></span></div></foreignObject></g></g><g class=\"cluster\" id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f-subnet1\" data-look=\"classic\"><rect style=\"\" x=\"611.13671875\" y=\"108\" width=\"377.21484375\" height=\"178\"></rect><g class=\"cluster-label\" transform=\"translate(767.712890625, 108)\"><foreignObject width=\"64.0625\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5;\"><span class=\"nodeLabel\"><p>Subnet 1</p></span></div></foreignObject></g></g></g><g class=\"edgePaths\"><path d=\"M714.762,236L710.947,244.333C707.133,252.667,699.504,269.333,674.921,286C650.337,302.667,608.799,319.333,548.154,336C487.508,352.667,407.754,369.333,355.647,385.636C303.54,401.939,279.079,417.877,266.849,425.847L254.619,433.816\" id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f-L_cvm1_kv_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_cvm1_kv_0\" data-points=\"W3sieCI6NzE0Ljc2MTY3NDg1OTU1MDYsInkiOjIzNn0seyJ4Ijo2OTEuODc1LCJ5IjoyODZ9LHsieCI6NTY3LjI2MTcxODc1LCJ5IjozMzZ9LHsieCI6MzI4LCJ5IjozODZ9LHsieCI6MjUxLjI2NzMyNjczMjY3MzI3LCJ5Ijo0MzZ9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f_flowchart-v2-pointEnd)\"></path><path d=\"M445.5,236L441.686,244.333C437.871,252.667,430.242,269.333,426.428,286C422.613,302.667,422.613,319.333,400.113,336C377.613,352.667,332.613,369.333,301.157,385.559C269.701,401.785,251.788,417.57,242.831,425.463L233.875,433.355\" id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f-L_cvm2_kv_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_cvm2_kv_0\" data-points=\"W3sieCI6NDQ1LjQ5OTk1NjEwOTU1MDU3LCJ5IjoyMzZ9LHsieCI6NDIyLjYxMzI4MTI1LCJ5IjoyODZ9LHsieCI6NDIyLjYxMzI4MTI1LCJ5IjozMzZ9LHsieCI6Mjg3LjYxMzI4MTI1LCJ5IjozODZ9LHsieCI6MjMwLjg3NDAzMzEwNjQzNTY2LCJ5Ijo0MzZ9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f_flowchart-v2-pointEnd)\"></path><path d=\"M780.985,236L791.321,244.333C801.657,252.667,822.328,269.333,798.497,286C774.667,302.667,706.333,319.333,672.167,336C638,352.667,638,369.333,625.77,385.636C613.54,401.939,589.079,417.877,576.849,425.847L564.619,433.816\" id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f-L_cvm1_hsmkv_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_cvm1_hsmkv_0\" data-points=\"W3sieCI6NzgwLjk4NDk4OTQ2NjI5MjIsInkiOjIzNn0seyJ4Ijo4NDMsInkiOjI4Nn0seyJ4Ijo2MzgsInkiOjMzNn0seyJ4Ijo2MzgsInkiOjM4Nn0seyJ4Ijo1NjEuMjY3MzI2NzMyNjczMywieSI6NDM2fV0=\" data-look=\"classic\" marker-end=\"url(#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f_flowchart-v2-pointEnd)\"></path><path d=\"M472.116,236L473.988,244.333C475.861,252.667,479.606,269.333,498.797,286C517.988,302.667,552.625,319.333,569.943,336C587.262,352.667,587.262,369.333,579.138,385.536C571.014,401.739,554.767,417.478,546.644,425.347L538.52,433.217\" id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f-L_cvm2_hsmkv_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_cvm2_hsmkv_0\" data-points=\"W3sieCI6NDcyLjExNTYwNzQ0MzgyMDI0LCJ5IjoyMzZ9LHsieCI6NDgzLjM1MTU2MjUsInkiOjI4Nn0seyJ4Ijo1ODcuMjYxNzE4NzUsInkiOjMzNn0seyJ4Ijo1ODcuMjYxNzE4NzUsInkiOjM4Nn0seyJ4Ijo1MzUuNjQ3MDA2NDk3NTI0OCwieSI6NDM2fV0=\" data-look=\"classic\" marker-end=\"url(#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f_flowchart-v2-pointEnd)\"></path><path d=\"M121.918,236L115.129,244.333C108.341,252.667,94.764,269.333,87.976,286C81.188,302.667,81.188,319.333,81.188,336C81.188,352.667,81.188,369.333,88.314,385.507C95.441,401.68,109.695,417.36,116.822,425.2L123.949,433.04\" id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f-L_mi_kv_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_mi_kv_0\" data-points=\"W3sieCI6MTIxLjkxNzgzNzA3ODY1MTY5LCJ5IjoyMzZ9LHsieCI6ODEuMTg3NSwieSI6Mjg2fSx7IngiOjgxLjE4NzUsInkiOjMzNn0seyJ4Ijo4MS4xODc1LCJ5IjozODZ9LHsieCI6MTI2LjYzOTIzMjY3MzI2NzMzLCJ5Ijo0MzZ9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f_flowchart-v2-pointEnd)\"></path><path d=\"M185.758,236L192.611,244.333C199.464,252.667,213.169,269.333,220.022,286C226.875,302.667,226.875,319.333,247.063,336C267.25,352.667,307.625,369.333,338.417,385.601C369.21,401.868,390.419,417.736,401.024,425.67L411.629,433.604\" id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f-L_mi_hsmkv_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_mi_hsmkv_0\" data-points=\"W3sieCI6MTg1Ljc1ODQyNjk2NjI5MjEyLCJ5IjoyMzZ9LHsieCI6MjI2Ljg3NSwieSI6Mjg2fSx7IngiOjIyNi44NzUsInkiOjMzNn0seyJ4IjozNDgsInkiOjM4Nn0seyJ4Ijo0MTQuODMxNjgzMTY4MzE2ODMsInkiOjQzNn1d\" data-look=\"classic\" marker-end=\"url(#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f_flowchart-v2-pointEnd)\"></path><path d=\"M813.681,236L831.003,244.333C848.325,252.667,882.969,269.333,900.291,286C917.613,302.667,917.613,319.333,917.613,336C917.613,352.667,917.613,369.333,905.382,387.58C893.151,405.827,868.688,425.654,856.457,435.568L844.225,445.481\" id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f-L_cvm1_logs_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_cvm1_logs_0\" data-points=\"W3sieCI6ODEzLjY4MDY5Njk4MDMzNzEsInkiOjIzNn0seyJ4Ijo5MTcuNjEzMjgxMjUsInkiOjI4Nn0seyJ4Ijo5MTcuNjEzMjgxMjUsInkiOjMzNn0seyJ4Ijo5MTcuNjEzMjgxMjUsInkiOjM4Nn0seyJ4Ijo4NDEuMTE3OTk5NjkwNTk0LCJ5Ijo0NDh9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f_flowchart-v2-pointEnd)\"></path><path d=\"M485.585,236L490.336,244.333C495.087,252.667,504.588,269.333,533.447,286C562.306,302.667,610.522,319.333,634.63,336C658.738,352.667,658.738,369.333,671.942,387.599C685.145,405.865,711.553,425.73,724.756,435.663L737.96,445.595\" id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f-L_cvm2_logs_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_cvm2_logs_0\" data-points=\"W3sieCI6NDg1LjU4NTE5MTM2MjM1OTUsInkiOjIzNn0seyJ4Ijo1MTQuMDg5ODQzNzUsInkiOjI4Nn0seyJ4Ijo2NTguNzM4MjgxMjUsInkiOjMzNn0seyJ4Ijo2NTguNzM4MjgxMjUsInkiOjM4Nn0seyJ4Ijo3NDEuMTU2MzY2MDI3MjI3NywieSI6NDQ4fV0=\" data-look=\"classic\" marker-end=\"url(#diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f_flowchart-v2-pointEnd)\"></path></g><g class=\"edgeLabels\"><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_cvm1_kv_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_cvm2_kv_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_cvm1_hsmkv_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_cvm2_hsmkv_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_mi_kv_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_mi_hsmkv_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_cvm1_logs_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_cvm2_logs_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g></g><g class=\"nodes\"><g class=\"node default\" id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f-flowchart-cvm2-1\" data-look=\"classic\" transform=\"translate(463.3515625, 197)\"><rect class=\"basic label-container\" style=\"fill:#fff3e0 !important;stroke:#ef6c00 !important\" x=\"-86.4765625\" y=\"-39\" width=\"172.953125\" height=\"78\"></rect><g class=\"label\" style=\"\" transform=\"translate(-56.4765625, -24)\"><rect></rect><foreignObject width=\"112.953125\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Confidential VM<br>MPC Node 3</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f-flowchart-cvm1-0\" data-look=\"classic\" transform=\"translate(732.61328125, 197)\"><rect class=\"basic label-container\" style=\"fill:#fff3e0 !important;stroke:#ef6c00 !important\" x=\"-86.4765625\" y=\"-39\" width=\"172.953125\" height=\"78\"></rect><g class=\"label\" style=\"\" transform=\"translate(-56.4765625, -24)\"><rect></rect><foreignObject width=\"112.953125\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Confidential VM<br>MPC Node 2</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f-flowchart-kv-2\" data-look=\"classic\" transform=\"translate(173, 487)\"><rect class=\"basic label-container\" style=\"fill:#f3e5f5 !important;stroke:#6a1b9a !important\" x=\"-130\" y=\"-51\" width=\"260\" height=\"102\"></rect><g class=\"label\" style=\"\" transform=\"translate(-100, -36)\"><rect></rect><foreignObject width=\"200\" height=\"72\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\"><span class=\"nodeLabel\"><p>Deployer Key Vault<br>MPC Nodes Keys &amp; Deployer config</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f-flowchart-hsmkv-3\" data-look=\"classic\" transform=\"translate(483, 487)\"><rect class=\"basic label-container\" style=\"fill:#fce4ec !important;stroke:#ad1457 !important\" x=\"-130\" y=\"-51\" width=\"260\" height=\"102\"></rect><g class=\"label\" style=\"\" transform=\"translate(-100, -36)\"><rect></rect><foreignObject width=\"200\" height=\"72\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\"><span class=\"nodeLabel\"><p>Premium Key Vault<br>Contains the enclave contract wrapping key</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f-flowchart-mi-4\" data-look=\"classic\" transform=\"translate(153.6875, 197)\"><rect class=\"basic label-container\" style=\"\" x=\"-91.375\" y=\"-39\" width=\"182.75\" height=\"78\"></rect><g class=\"label\" style=\"\" transform=\"translate(-61.375, -24)\"><rect></rect><foreignObject width=\"122.75\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>User-Assigned<br>Managed Identity</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f-flowchart-logs-6\" data-look=\"classic\" transform=\"translate(793, 487)\"><rect class=\"basic label-container\" style=\"\" x=\"-130\" y=\"-39\" width=\"260\" height=\"78\"></rect><g class=\"label\" style=\"\" transform=\"translate(-100, -24)\"><rect></rect><foreignObject width=\"200\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\"><span class=\"nodeLabel\"><p>Boot diagnostics and Log Analytics Workspace (LAW)</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f-flowchart-storage-5\" data-look=\"classic\" transform=\"translate(1061.7109375, 487)\"><rect class=\"basic label-container\" style=\"\" x=\"-88.7109375\" y=\"-39\" width=\"177.421875\" height=\"78\"></rect><g class=\"label\" style=\"\" transform=\"translate(-58.7109375, -24)\"><rect></rect><foreignObject width=\"117.421875\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Storage Account<br>Terraform State</p></span></div></foreignObject></g></g></g></g></g></g></g></g></g><defs><filter id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f-drop-shadow\" height=\"130%\" width=\"130%\"><feDropShadow dx=\"4\" dy=\"4\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#000000\"></feDropShadow></filter></defs><defs><filter id=\"diagram-165c3231152aadeafd662b28012004ca07121b1c67a10f3c1163811b8fa6164f-drop-shadow-small\" height=\"150%\" width=\"150%\"><feDropShadow dx=\"2\" dy=\"2\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#000000\"></feDropShadow></filter></defs></svg>","diagramHtmlDark":"<svg id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" class=\"flowchart\" style=\"max-width: 1268.421875px;\" viewBox=\"0 0 1268.421875 666\" role=\"graphics-document document\" aria-roledescription=\"flowchart-v2\"><style>\n    #diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 foreignObject {\n      overflow: visible;\n    }\n  </style><style>#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;fill:#ccc;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .error-icon{fill:#a44141;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .error-text{fill:#ddd;stroke:#ddd;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .edge-thickness-normal{stroke-width:1px;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .edge-thickness-thick{stroke-width:3.5px;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .edge-pattern-solid{stroke-dasharray:0;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .edge-thickness-invisible{stroke-width:0;fill:none;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .edge-pattern-dashed{stroke-dasharray:3;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .edge-pattern-dotted{stroke-dasharray:2;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .marker{fill:lightgrey;stroke:lightgrey;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .marker.cross{stroke:lightgrey;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 svg{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 p{margin:0;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .label{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;color:#ccc;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .cluster-label text{fill:#F9FFFE;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .cluster-label span{color:#F9FFFE;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .cluster-label span p{background-color:transparent;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .label text,#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 span{fill:#ccc;color:#ccc;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .node rect,#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .node circle,#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .node ellipse,#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .node polygon,#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .node path{fill:#1f2020;stroke:#ccc;stroke-width:1px;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .rough-node .label text,#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .node .label text,#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .image-shape .label,#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .icon-shape .label{text-anchor:middle;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .rough-node .label,#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .node .label,#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .image-shape .label,#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .icon-shape .label{text-align:center;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .node.clickable{cursor:pointer;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .root .anchor path{fill:lightgrey!important;stroke-width:0;stroke:lightgrey;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .arrowheadPath{fill:lightgrey;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .edgePath .path{stroke:lightgrey;stroke-width:1px;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .flowchart-link{stroke:lightgrey;fill:none;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .edgeLabel{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .edgeLabel p{background-color:hsl(0, 0%, 34.4117647059%);}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .edgeLabel rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .labelBkg{background-color:rgba(87.75, 87.75, 87.75, 0.5);}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .cluster rect{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:rgba(255, 255, 255, 0.25);stroke-width:1px;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .cluster text{fill:#F9FFFE;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .cluster span{color:#F9FFFE;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:12px;background:hsl(20, 1.5873015873%, 12.3529411765%);border:1px solid rgba(255, 255, 255, 0.25);border-radius:2px;pointer-events:none;z-index:100;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#ccc;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 rect.text{fill:none;stroke-width:0;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .icon-shape,#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .image-shape{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .icon-shape p,#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .image-shape p{background-color:hsl(0, 0%, 34.4117647059%);padding:2px;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .icon-shape .label rect,#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .image-shape .label rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 .node .neo-node{stroke:#ccc;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 [data-look=\"neo\"].node rect,#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 [data-look=\"neo\"].cluster rect,#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 [data-look=\"neo\"].node polygon{stroke:url(#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 [data-look=\"neo\"].swimlane.cluster rect{filter:none;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 [data-look=\"neo\"].node path{stroke:url(#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544-gradient);stroke-width:1px;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 [data-look=\"neo\"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 [data-look=\"neo\"].node .neo-line path{stroke:#ccc;filter:none;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 [data-look=\"neo\"].node circle{stroke:url(#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 [data-look=\"neo\"].node circle .state-start{fill:#000000;}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 [data-look=\"neo\"].icon-shape .icon{fill:url(#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 [data-look=\"neo\"].icon-shape .icon-neo path{stroke:url(#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544 :root{--mermaid-font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;}</style><g><marker id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544_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;\"></path></marker><marker id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544_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;\"></path></marker><marker id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544_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;\"></path></marker><marker id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544_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;\"></polygon></marker><marker id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544_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;\"></circle></marker><marker id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544_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;\"></circle></marker><marker id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544_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;\"></circle></marker><marker id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544_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;\"></circle></marker><marker id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544_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;\"></path></marker><marker id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544_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;\"></path></marker><marker id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544_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;\"></path></marker><marker id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544_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;\"></path></marker><g class=\"root\"><g class=\"clusters\"></g><g class=\"edgePaths\"></g><g class=\"edgeLabels\"></g><g class=\"nodes\"><g class=\"root\" transform=\"translate(0, 0)\"><g class=\"clusters\"><g class=\"cluster\" id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544-azure\" data-look=\"classic\"><rect style=\"fill:#e3f2fd !important;stroke:#1565c0 !important\" x=\"8\" y=\"8\" width=\"1252.421875\" height=\"650\"></rect><g class=\"cluster-label\" transform=\"translate(524.8359375, 8)\"><foreignObject width=\"218.75\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5;\"><span class=\"nodeLabel\"><p>Azure Subscription (Customer)</p></span></div></foreignObject></g></g></g><g class=\"edgePaths\"></g><g class=\"edgeLabels\"></g><g class=\"nodes\"><g class=\"root\" transform=\"translate(37.5, 35)\"><g class=\"clusters\"><g class=\"cluster\" id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544-rg\" data-look=\"classic\"><rect style=\"fill:#fafafa !important;stroke:#616161 !important\" x=\"8\" y=\"8\" width=\"1177.421875\" height=\"580\"></rect><g class=\"cluster-label\" transform=\"translate(538.015625, 8)\"><foreignObject width=\"117.390625\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5;\"><span class=\"nodeLabel\"><p>Resource Group</p></span></div></foreignObject></g></g><g class=\"cluster\" id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544-vnet\" data-look=\"classic\"><rect style=\"fill:#e8f5e9 !important;stroke:#2e7d32 !important\" x=\"321.875\" y=\"58\" width=\"686.4765625\" height=\"278\"></rect><g class=\"cluster-label\" transform=\"translate(611.01953125, 58)\"><foreignObject width=\"108.1875\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5;\"><span class=\"nodeLabel\"><p>Virtual Network</p></span></div></foreignObject></g></g><g class=\"cluster\" id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544-subnet2\" data-look=\"classic\"><rect style=\"\" x=\"341.875\" y=\"108\" width=\"242.953125\" height=\"178\"></rect><g class=\"cluster-label\" transform=\"translate(431.3203125, 108)\"><foreignObject width=\"64.0625\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5;\"><span class=\"nodeLabel\"><p>Subnet 2</p></span></div></foreignObject></g></g><g class=\"cluster\" id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544-subnet1\" data-look=\"classic\"><rect style=\"\" x=\"611.13671875\" y=\"108\" width=\"377.21484375\" height=\"178\"></rect><g class=\"cluster-label\" transform=\"translate(767.712890625, 108)\"><foreignObject width=\"64.0625\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5;\"><span class=\"nodeLabel\"><p>Subnet 1</p></span></div></foreignObject></g></g></g><g class=\"edgePaths\"><path d=\"M714.762,236L710.947,244.333C707.133,252.667,699.504,269.333,674.921,286C650.337,302.667,608.799,319.333,548.154,336C487.508,352.667,407.754,369.333,355.647,385.636C303.54,401.939,279.079,417.877,266.849,425.847L254.619,433.816\" id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544-L_cvm1_kv_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_cvm1_kv_0\" data-points=\"W3sieCI6NzE0Ljc2MTY3NDg1OTU1MDYsInkiOjIzNn0seyJ4Ijo2OTEuODc1LCJ5IjoyODZ9LHsieCI6NTY3LjI2MTcxODc1LCJ5IjozMzZ9LHsieCI6MzI4LCJ5IjozODZ9LHsieCI6MjUxLjI2NzMyNjczMjY3MzI3LCJ5Ijo0MzZ9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544_flowchart-v2-pointEnd)\"></path><path d=\"M445.5,236L441.686,244.333C437.871,252.667,430.242,269.333,426.428,286C422.613,302.667,422.613,319.333,400.113,336C377.613,352.667,332.613,369.333,301.157,385.559C269.701,401.785,251.788,417.57,242.831,425.463L233.875,433.355\" id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544-L_cvm2_kv_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_cvm2_kv_0\" data-points=\"W3sieCI6NDQ1LjQ5OTk1NjEwOTU1MDU3LCJ5IjoyMzZ9LHsieCI6NDIyLjYxMzI4MTI1LCJ5IjoyODZ9LHsieCI6NDIyLjYxMzI4MTI1LCJ5IjozMzZ9LHsieCI6Mjg3LjYxMzI4MTI1LCJ5IjozODZ9LHsieCI6MjMwLjg3NDAzMzEwNjQzNTY2LCJ5Ijo0MzZ9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544_flowchart-v2-pointEnd)\"></path><path d=\"M780.985,236L791.321,244.333C801.657,252.667,822.328,269.333,798.497,286C774.667,302.667,706.333,319.333,672.167,336C638,352.667,638,369.333,625.77,385.636C613.54,401.939,589.079,417.877,576.849,425.847L564.619,433.816\" id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544-L_cvm1_hsmkv_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_cvm1_hsmkv_0\" data-points=\"W3sieCI6NzgwLjk4NDk4OTQ2NjI5MjIsInkiOjIzNn0seyJ4Ijo4NDMsInkiOjI4Nn0seyJ4Ijo2MzgsInkiOjMzNn0seyJ4Ijo2MzgsInkiOjM4Nn0seyJ4Ijo1NjEuMjY3MzI2NzMyNjczMywieSI6NDM2fV0=\" data-look=\"classic\" marker-end=\"url(#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544_flowchart-v2-pointEnd)\"></path><path d=\"M472.116,236L473.988,244.333C475.861,252.667,479.606,269.333,498.797,286C517.988,302.667,552.625,319.333,569.943,336C587.262,352.667,587.262,369.333,579.138,385.536C571.014,401.739,554.767,417.478,546.644,425.347L538.52,433.217\" id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544-L_cvm2_hsmkv_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_cvm2_hsmkv_0\" data-points=\"W3sieCI6NDcyLjExNTYwNzQ0MzgyMDI0LCJ5IjoyMzZ9LHsieCI6NDgzLjM1MTU2MjUsInkiOjI4Nn0seyJ4Ijo1ODcuMjYxNzE4NzUsInkiOjMzNn0seyJ4Ijo1ODcuMjYxNzE4NzUsInkiOjM4Nn0seyJ4Ijo1MzUuNjQ3MDA2NDk3NTI0OCwieSI6NDM2fV0=\" data-look=\"classic\" marker-end=\"url(#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544_flowchart-v2-pointEnd)\"></path><path d=\"M121.918,236L115.129,244.333C108.341,252.667,94.764,269.333,87.976,286C81.188,302.667,81.188,319.333,81.188,336C81.188,352.667,81.188,369.333,88.314,385.507C95.441,401.68,109.695,417.36,116.822,425.2L123.949,433.04\" id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544-L_mi_kv_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_mi_kv_0\" data-points=\"W3sieCI6MTIxLjkxNzgzNzA3ODY1MTY5LCJ5IjoyMzZ9LHsieCI6ODEuMTg3NSwieSI6Mjg2fSx7IngiOjgxLjE4NzUsInkiOjMzNn0seyJ4Ijo4MS4xODc1LCJ5IjozODZ9LHsieCI6MTI2LjYzOTIzMjY3MzI2NzMzLCJ5Ijo0MzZ9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544_flowchart-v2-pointEnd)\"></path><path d=\"M185.758,236L192.611,244.333C199.464,252.667,213.169,269.333,220.022,286C226.875,302.667,226.875,319.333,247.063,336C267.25,352.667,307.625,369.333,338.417,385.601C369.21,401.868,390.419,417.736,401.024,425.67L411.629,433.604\" id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544-L_mi_hsmkv_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_mi_hsmkv_0\" data-points=\"W3sieCI6MTg1Ljc1ODQyNjk2NjI5MjEyLCJ5IjoyMzZ9LHsieCI6MjI2Ljg3NSwieSI6Mjg2fSx7IngiOjIyNi44NzUsInkiOjMzNn0seyJ4IjozNDgsInkiOjM4Nn0seyJ4Ijo0MTQuODMxNjgzMTY4MzE2ODMsInkiOjQzNn1d\" data-look=\"classic\" marker-end=\"url(#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544_flowchart-v2-pointEnd)\"></path><path d=\"M813.681,236L831.003,244.333C848.325,252.667,882.969,269.333,900.291,286C917.613,302.667,917.613,319.333,917.613,336C917.613,352.667,917.613,369.333,905.382,387.58C893.151,405.827,868.688,425.654,856.457,435.568L844.225,445.481\" id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544-L_cvm1_logs_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_cvm1_logs_0\" data-points=\"W3sieCI6ODEzLjY4MDY5Njk4MDMzNzEsInkiOjIzNn0seyJ4Ijo5MTcuNjEzMjgxMjUsInkiOjI4Nn0seyJ4Ijo5MTcuNjEzMjgxMjUsInkiOjMzNn0seyJ4Ijo5MTcuNjEzMjgxMjUsInkiOjM4Nn0seyJ4Ijo4NDEuMTE3OTk5NjkwNTk0LCJ5Ijo0NDh9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544_flowchart-v2-pointEnd)\"></path><path d=\"M485.585,236L490.336,244.333C495.087,252.667,504.588,269.333,533.447,286C562.306,302.667,610.522,319.333,634.63,336C658.738,352.667,658.738,369.333,671.942,387.599C685.145,405.865,711.553,425.73,724.756,435.663L737.96,445.595\" id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544-L_cvm2_logs_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_cvm2_logs_0\" data-points=\"W3sieCI6NDg1LjU4NTE5MTM2MjM1OTUsInkiOjIzNn0seyJ4Ijo1MTQuMDg5ODQzNzUsInkiOjI4Nn0seyJ4Ijo2NTguNzM4MjgxMjUsInkiOjMzNn0seyJ4Ijo2NTguNzM4MjgxMjUsInkiOjM4Nn0seyJ4Ijo3NDEuMTU2MzY2MDI3MjI3NywieSI6NDQ4fV0=\" data-look=\"classic\" marker-end=\"url(#diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544_flowchart-v2-pointEnd)\"></path></g><g class=\"edgeLabels\"><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_cvm1_kv_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_cvm2_kv_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_cvm1_hsmkv_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_cvm2_hsmkv_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_mi_kv_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_mi_hsmkv_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_cvm1_logs_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_cvm2_logs_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g></g><g class=\"nodes\"><g class=\"node default\" id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544-flowchart-cvm2-1\" data-look=\"classic\" transform=\"translate(463.3515625, 197)\"><rect class=\"basic label-container\" style=\"fill:#fff3e0 !important;stroke:#ef6c00 !important\" x=\"-86.4765625\" y=\"-39\" width=\"172.953125\" height=\"78\"></rect><g class=\"label\" style=\"\" transform=\"translate(-56.4765625, -24)\"><rect></rect><foreignObject width=\"112.953125\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Confidential VM<br>MPC Node 3</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544-flowchart-cvm1-0\" data-look=\"classic\" transform=\"translate(732.61328125, 197)\"><rect class=\"basic label-container\" style=\"fill:#fff3e0 !important;stroke:#ef6c00 !important\" x=\"-86.4765625\" y=\"-39\" width=\"172.953125\" height=\"78\"></rect><g class=\"label\" style=\"\" transform=\"translate(-56.4765625, -24)\"><rect></rect><foreignObject width=\"112.953125\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Confidential VM<br>MPC Node 2</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544-flowchart-kv-2\" data-look=\"classic\" transform=\"translate(173, 487)\"><rect class=\"basic label-container\" style=\"fill:#f3e5f5 !important;stroke:#6a1b9a !important\" x=\"-130\" y=\"-51\" width=\"260\" height=\"102\"></rect><g class=\"label\" style=\"\" transform=\"translate(-100, -36)\"><rect></rect><foreignObject width=\"200\" height=\"72\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\"><span class=\"nodeLabel\"><p>Deployer Key Vault<br>MPC Nodes Keys &amp; Deployer config</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544-flowchart-hsmkv-3\" data-look=\"classic\" transform=\"translate(483, 487)\"><rect class=\"basic label-container\" style=\"fill:#fce4ec !important;stroke:#ad1457 !important\" x=\"-130\" y=\"-51\" width=\"260\" height=\"102\"></rect><g class=\"label\" style=\"\" transform=\"translate(-100, -36)\"><rect></rect><foreignObject width=\"200\" height=\"72\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\"><span class=\"nodeLabel\"><p>Premium Key Vault<br>Contains the enclave contract wrapping key</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544-flowchart-mi-4\" data-look=\"classic\" transform=\"translate(153.6875, 197)\"><rect class=\"basic label-container\" style=\"\" x=\"-91.375\" y=\"-39\" width=\"182.75\" height=\"78\"></rect><g class=\"label\" style=\"\" transform=\"translate(-61.375, -24)\"><rect></rect><foreignObject width=\"122.75\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>User-Assigned<br>Managed Identity</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544-flowchart-logs-6\" data-look=\"classic\" transform=\"translate(793, 487)\"><rect class=\"basic label-container\" style=\"\" x=\"-130\" y=\"-39\" width=\"260\" height=\"78\"></rect><g class=\"label\" style=\"\" transform=\"translate(-100, -24)\"><rect></rect><foreignObject width=\"200\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table; white-space: break-spaces; line-height: 1.5; max-width: 200px; text-align: center; width: 200px;\"><span class=\"nodeLabel\"><p>Boot diagnostics and Log Analytics Workspace (LAW)</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544-flowchart-storage-5\" data-look=\"classic\" transform=\"translate(1061.7109375, 487)\"><rect class=\"basic label-container\" style=\"\" x=\"-88.7109375\" y=\"-39\" width=\"177.421875\" height=\"78\"></rect><g class=\"label\" style=\"\" transform=\"translate(-58.7109375, -24)\"><rect></rect><foreignObject width=\"117.421875\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Storage Account<br>Terraform State</p></span></div></foreignObject></g></g></g></g></g></g></g></g></g><defs><filter id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544-drop-shadow\" height=\"130%\" width=\"130%\"><feDropShadow dx=\"4\" dy=\"4\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#FFFFFF\"></feDropShadow></filter></defs><defs><filter id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544-drop-shadow-small\" height=\"150%\" width=\"150%\"><feDropShadow dx=\"2\" dy=\"2\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#FFFFFF\"></feDropShadow></filter></defs><linearGradient id=\"diagram-b23b16dc4385978507c308b76e049ac85ad2427e32a6d331ab93f60082186544-gradient\" gradientUnits=\"objectBoundingBox\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\"><stop offset=\"0%\" stop-color=\"#cccccc\" stop-opacity=\"1\"></stop><stop offset=\"100%\" stop-color=\"hsl(180, 0%, 18.3529411765%)\" stop-opacity=\"1\"></stop></linearGradient></svg>"},"children":["flowchart TB\n    subgraph azure[\"Azure Subscription (Customer)\"]\n        subgraph rg[\"Resource Group\"]\n            subgraph vnet[\"Virtual Network\"]\n                subgraph subnet1[\"Subnet 1\"]\n                    cvm1[\"Confidential VM<br/>MPC Node 2\"]\n                end\n                subgraph subnet2[\"Subnet 2\"]\n                    cvm2[\"Confidential VM<br/>MPC Node 3\"]\n                end\n            end\n            kv[\"Deployer Key Vault<br/>MPC Nodes Keys & Deployer config\"]\n            hsmkv[\"Premium Key Vault<br/>Contains the enclave contract wrapping key\"]\n            mi[\"User-Assigned<br/>Managed Identity\"]\n            storage[\"Storage Account<br/>Terraform State\"]\n            logs[\"Boot diagnostics and Log Analytics Workspace (LAW)\"]\n        end\n    end\n\n    cvm1 --> kv\n    cvm2 --> kv\n    cvm1 --> hsmkv\n    cvm2 --> hsmkv\n    mi --> kv\n    mi --> hsmkv\n    cvm1 --> logs\n    cvm2 --> logs\n\n    style azure fill:#e3f2fd,stroke:#1565c0\n    style rg fill:#fafafa,stroke:#616161\n    style vnet fill:#e8f5e9,stroke:#2e7d32\n    style cvm1 fill:#fff3e0,stroke:#ef6c00\n    style cvm2 fill:#fff3e0,stroke:#ef6c00\n    style kv fill:#f3e5f5,stroke:#6a1b9a\n    style hsmkv fill:#fce4ec,stroke:#ad1457\n"]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Existing VNet support:"]}," The deployer supports a mode where networking resources are not created. Use the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["--no-create-vpc"]}," flag if your organization manages Azure networking centrally."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"azure-resources","__idx":3},"children":["Azure resources"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"pre-provisioned-resources","__idx":4},"children":["Pre-provisioned resources"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Azure deployments require several resources to exist before you run the deployer:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Resource"},"children":["Resource"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Purpose"},"children":["Purpose"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Notes"},"children":["Notes"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Resource group"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Deployment boundary for Azure resources"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Required"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Standard Key Vault"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Stores MPC Nodes Keys & Deployer config"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Must use RBAC authorization"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Premium Key Vault"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Holds the enclave contract wrapping key"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Must contain an RSA-4096 HSM-backed key"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["User-assigned managed identity"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Allows Confidential VMs to access Key Vault resources"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Must be created before deployment; grant access yourself or allow the deployer to assign Key Vault roles"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Existing VNet and subnets"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Customer-managed networking"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Required only with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["--no-create-vpc"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Ripple can share utility scripts with you to ease the creation of these pre-provisioned resources within your Azure environment."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"resources-created-by-the-deployer","__idx":5},"children":["Resources created by the deployer"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Resource"},"children":["Resource"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Count"},"children":["Count"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Purpose"},"children":["Purpose"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Notes"},"children":["Notes"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Virtual Network"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Network isolation"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Optional - use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["--no-create-vpc"]}," to skip"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Subnets"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["MPC node hosting"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Optional - not created with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["--no-create-vpc"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Confidential VMs"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["MPC Node 2 and Node 3"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Required"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Network interfaces"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["VM network attachment"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Required"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Network security groups"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Network access control"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Required"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Storage account/container"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["1"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Terraform state storage, contract token hashes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Required"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Key Vault secrets/configuration"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Multiple"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Keys, KEKs, and deployment configuration"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Required"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Boot diagnostics and Log Analytics Workspace (LAW)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["2"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Startup and node troubleshooting"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Required or customer-configured"]}]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"prerequisites","__idx":6},"children":["Prerequisites"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"azure-requirements","__idx":7},"children":["Azure requirements"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Subscription and permissions:"]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Azure subscription dedicated to Ripple MPC Nodes deployment."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Permissions allowing the deployer tool to create resources in the Azure subscription."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Confidential VM quota and supported VM SKUs in the selected Azure region."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Credentials:"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Authenticate to Azure using the method approved by your organization. For service-principal based deployments, provide Azure credentials to the container using the environment variables expected by the deployer and the Terraform Azure provider, for example:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"export ARM_SUBSCRIPTION_ID=\"<subscription-id>\"\nexport ARM_TENANT_ID=\"<tenant-id>\"\nexport ARM_CLIENT_ID=\"<service-principal-client-id>\"\nexport ARM_CLIENT_SECRET=\"<service-principal-client-secret>\"\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"execution-requirements","__idx":8},"children":["Execution requirements"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Docker"]},": Docker Desktop or Docker Engine installed and running."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["MPC Deployer Image"]},": Access to Ripple's Docker registry."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Important:"]}," Contact your Ripple representative to obtain the official MPC Deployer Docker image and required credentials."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"from-ripple","__idx":9},"children":["From Ripple"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before deployment, Ripple will provide:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Item"},"children":["Item"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["MPC Deployer Image"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Official Docker image tag and registry credentials"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Tenant Alias"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your organization identifier"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Tenant Instance Code"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Environment identifier, such as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["prod"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["uat"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Docker Registry Credentials"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Access to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["metaco.azurecr.io"]},", where MPC core component images are stored"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["OpenTelemetry Endpoint"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Observability service configuration"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Azure setup scripts"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Optional scripts for pre-provisioning required Azure resources"]}]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"deployment-process","__idx":10},"children":["Deployment process"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The deployment follows a coordinated process between you and Ripple:"]},{"$$mdtype":"Tag","name":"Diagram","attributes":{"data-language":"mermaid","diagramType":"mermaid","diagramSource":"sequenceDiagram\n    participant C as Customer\n    participant T as MPC Deployer Tool\n    participant AZ as Azure Subscription\n    participant R as Ripple\n\n    Note over C,AZ: Phase 0: Azure Prerequisites\n    C->>AZ: Pre-provision Resource Group, Key Vaults, contract wrapping key, Log Analytics Workspace, and Managed Identity\n    C->>T: Provide Azure input values\n\n    Note over C,R: Phase 1: Key Generation\n    C->>T: Run --keygen mode\n    T->>AZ: Store keys in Azure Key Vault\n    T->>C: Output Node 2 & 3 Peer IDs\n    C->>R: Share Peer IDs\n\n    Note over C,R: Phase 2: Ripple Setup\n    R->>R: Configure Nodes 0 & 1\n    R->>R: Configure Relay Server\n    R->>C: Provide Ripple config\n\n    Note over C,R: Phase 3: Deployment\n    C->>T: Run deployment mode\n    T->>AZ: Provision infrastructure\n    T->>AZ: Deploy Azure Confidential VMs\n    T->>C: Deployment complete\n\n    Note over C,R: Phase 4: Verification\n    C->>R: Confirm connectivity\n    R->>C: Run cluster health check\n","diagramHtml":"<svg id=\"diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" style=\"max-width: 1021.5px;\" viewBox=\"-50 -10 1021.5 1154\" role=\"graphics-document document\" aria-roledescription=\"sequence\"><style>\n    #diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c foreignObject {\n      overflow: visible;\n    }\n  </style><g><rect x=\"762\" y=\"1068\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"R\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"837\" y=\"1100.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"837\" dy=\"0\">Ripple</tspan></text></g><g><rect x=\"558\" y=\"1068\" fill=\"#eaeaea\" stroke=\"#666\" width=\"154\" height=\"65\" name=\"AZ\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"635\" y=\"1100.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"635\" dy=\"0\">Azure Subscription</tspan></text></g><g><rect x=\"265\" y=\"1068\" fill=\"#eaeaea\" stroke=\"#666\" width=\"158\" height=\"65\" name=\"T\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"344\" y=\"1100.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"344\" dy=\"0\">MPC Deployer Tool</tspan></text></g><g><rect x=\"0\" y=\"1068\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"C\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"75\" y=\"1100.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"75\" dy=\"0\">Customer</tspan></text></g><g><line id=\"actor3\" x1=\"837\" y1=\"65\" x2=\"837\" y2=\"1068\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"R\" data-et=\"life-line\" data-id=\"R\"></line><g id=\"root-3\" data-et=\"participant\" data-type=\"participant\" data-id=\"R\"><rect x=\"762\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"R\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"837\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"837\" dy=\"0\">Ripple</tspan></text></g></g><g><line id=\"actor2\" x1=\"635\" y1=\"65\" x2=\"635\" y2=\"1068\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"AZ\" data-et=\"life-line\" data-id=\"AZ\"></line><g id=\"root-2\" data-et=\"participant\" data-type=\"participant\" data-id=\"AZ\"><rect x=\"558\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"154\" height=\"65\" name=\"AZ\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"635\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"635\" dy=\"0\">Azure Subscription</tspan></text></g></g><g><line id=\"actor1\" x1=\"344\" y1=\"65\" x2=\"344\" y2=\"1068\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"T\" data-et=\"life-line\" data-id=\"T\"></line><g id=\"root-1\" data-et=\"participant\" data-type=\"participant\" data-id=\"T\"><rect x=\"265\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"158\" height=\"65\" name=\"T\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"344\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"344\" dy=\"0\">MPC Deployer Tool</tspan></text></g></g><g><line id=\"actor0\" x1=\"75\" y1=\"65\" x2=\"75\" y2=\"1068\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"C\" data-et=\"life-line\" data-id=\"C\"></line><g id=\"root-0\" data-et=\"participant\" data-type=\"participant\" data-id=\"C\"><rect x=\"0\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"C\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"75\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"75\" dy=\"0\">Customer</tspan></text></g></g><style>#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .error-icon{fill:#552222;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .error-text{fill:#552222;stroke:#552222;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .edge-thickness-normal{stroke-width:1px;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .edge-thickness-thick{stroke-width:3.5px;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .edge-pattern-solid{stroke-dasharray:0;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .edge-thickness-invisible{stroke-width:0;fill:none;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .edge-pattern-dashed{stroke-dasharray:3;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .edge-pattern-dotted{stroke-dasharray:2;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .marker{fill:#333333;stroke:#333333;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .marker.cross{stroke:#333333;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c svg{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c p{margin:0;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .actor{stroke:#9370DB;fill:#ECECFF;stroke-width:1;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c rect.actor.outer-path[data-look=\"neo\"]{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c rect.note[data-look=\"neo\"]{stroke:#aaaa33;fill:#fff5ad;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c text.actor&gt;tspan{fill:black;stroke:none;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .actor-line{stroke:#9370DB;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .innerArc{stroke-width:1.5;stroke-dasharray:none;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c [id$=\"-arrowhead\"] path{fill:#333;stroke:#333;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .sequenceNumber{fill:white;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c [id$=\"-sequencenumber\"]{fill:#333;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c [id$=\"-crosshead\"] path{fill:#333;stroke:#333;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .messageText{fill:#333;stroke:none;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .labelBox{stroke:#9370DB;fill:#ECECFF;filter:none;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .labelText,#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .labelText&gt;tspan{fill:black;stroke:none;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .loopText,#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .loopText&gt;tspan{fill:black;stroke:none;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .sectionTitle,#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .sectionTitle&gt;tspan{fill:black;stroke:none;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:#9370DB;fill:#9370DB;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .note{stroke:#aaaa33;fill:#fff5ad;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .noteText,#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .noteText&gt;tspan{fill:black;stroke:none;font-weight:normal;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .activation0{fill:#f4f4f4;stroke:#666;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .activation1{fill:#f4f4f4;stroke:#666;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .activation2{fill:#f4f4f4;stroke:#666;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .actorPopupMenu{position:absolute;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .actor-man circle,#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c line{fill:#ECECFF;stroke-width:2px;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c g rect.rect{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));stroke:#9370DB;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c .node .neo-node{stroke:#9370DB;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c [data-look=\"neo\"].node rect,#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c [data-look=\"neo\"].cluster rect,#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c [data-look=\"neo\"].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c [data-look=\"neo\"].swimlane.cluster rect{filter:none;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c [data-look=\"neo\"].node path{stroke:#9370DB;stroke-width:1px;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c [data-look=\"neo\"].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c [data-look=\"neo\"].node .neo-line path{stroke:#9370DB;filter:none;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c [data-look=\"neo\"].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c [data-look=\"neo\"].node circle .state-start{fill:#000000;}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c [data-look=\"neo\"].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c [data-look=\"neo\"].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c :root{--mermaid-font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;}</style><g></g><defs><symbol id=\"diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c-computer\" width=\"24\" height=\"24\"><path transform=\"scale(.5)\" d=\"M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z\"></path></symbol></defs><defs><symbol id=\"diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c-database\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"><path transform=\"scale(.5)\" d=\"M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z\"></path></symbol></defs><defs><symbol id=\"diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c-clock\" width=\"24\" height=\"24\"><path transform=\"scale(.5)\" d=\"M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z\"></path></symbol></defs><defs><marker id=\"diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c-arrowhead\" refX=\"7.9\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M -1 0 L 10 5 L 0 10 z\"></path></marker></defs><defs><marker id=\"diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c-crosshead\" markerWidth=\"15\" markerHeight=\"8\" orient=\"auto\" refX=\"4\" refY=\"4.5\"><path fill=\"none\" stroke=\"#000000\" stroke-width=\"1pt\" d=\"M 1,2 L 6,7 M 6,2 L 1,7\" style=\"stroke-dasharray: 0, 0;\"></path></marker></defs><defs><marker id=\"diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c-filled-head\" refX=\"15.5\" refY=\"7\" markerWidth=\"20\" markerHeight=\"28\" orient=\"auto\"><path d=\"M 18,7 L9,13 L14,7 L9,1 Z\"></path></marker></defs><defs><marker id=\"diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c-sequencenumber\" refX=\"15\" refY=\"15\" markerWidth=\"60\" markerHeight=\"40\" orient=\"auto\"><circle cx=\"15\" cy=\"15\" r=\"6\"></circle></marker></defs><defs><marker id=\"diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c-solidTopArrowHead\" refX=\"7.9\" refY=\"7.25\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 10 8 L 0 8 z\"></path></marker></defs><defs><marker id=\"diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c-solidBottomArrowHead\" refX=\"7.9\" refY=\"0.75\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 10 0 L 0 8 z\"></path></marker></defs><defs><marker id=\"diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c-stickTopArrowHead\" refX=\"7.5\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 7 7\" stroke=\"black\" stroke-width=\"1.5\" fill=\"none\"></path></marker></defs><defs><marker id=\"diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c-stickBottomArrowHead\" refX=\"7.5\" refY=\"0\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 7 L 7 0\" stroke=\"black\" stroke-width=\"1.5\" fill=\"none\"></path></marker></defs><g data-et=\"note\" data-id=\"i0\"><rect x=\"50\" y=\"75\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"610\" height=\"38\" class=\"note\"></rect><text x=\"355\" y=\"80\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\"><tspan x=\"355\">Phase 0: Azure Prerequisites</tspan></text></g><g data-et=\"note\" data-id=\"i3\"><rect x=\"50\" y=\"215\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"812\" height=\"38\" class=\"note\"></rect><text x=\"456\" y=\"220\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\"><tspan x=\"456\">Phase 1: Key Generation</tspan></text></g><g data-et=\"note\" data-id=\"i8\"><rect x=\"50\" y=\"445\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"812\" height=\"38\" class=\"note\"></rect><text x=\"456\" y=\"450\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\"><tspan x=\"456\">Phase 2: Ripple Setup</tspan></text></g><g data-et=\"note\" data-id=\"i12\"><rect x=\"50\" y=\"691\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"812\" height=\"38\" class=\"note\"></rect><text x=\"456\" y=\"696\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\"><tspan x=\"456\">Phase 3: Deployment</tspan></text></g><g data-et=\"note\" data-id=\"i17\"><rect x=\"50\" y=\"921\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"812\" height=\"37\" class=\"note\"></rect><text x=\"456\" y=\"926\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\"><tspan x=\"456\">Phase 4: Verification</tspan></text></g><text x=\"354\" y=\"128\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Pre-provision Resource Group, Key Vaults, contract wrapping key, Log Analytics Workspace, and Managed Identity</text><line x1=\"76\" y1=\"159\" x2=\"631\" y2=\"159\" class=\"messageLine0\" data-et=\"message\" data-id=\"i1\" data-from=\"C\" data-to=\"AZ\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c-arrowhead)\" style=\"fill: none;\"></line><text x=\"208\" y=\"174\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Provide Azure input values</text><line x1=\"76\" y1=\"205\" x2=\"340\" y2=\"205\" class=\"messageLine0\" data-et=\"message\" data-id=\"i2\" data-from=\"C\" data-to=\"T\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c-arrowhead)\" style=\"fill: none;\"></line><text x=\"208\" y=\"268\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Run --keygen mode</text><line x1=\"76\" y1=\"299\" x2=\"340\" y2=\"299\" class=\"messageLine0\" data-et=\"message\" data-id=\"i4\" data-from=\"C\" data-to=\"T\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c-arrowhead)\" style=\"fill: none;\"></line><text x=\"488\" y=\"314\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Store keys in Azure Key Vault</text><line x1=\"345\" y1=\"345\" x2=\"631\" y2=\"345\" class=\"messageLine0\" data-et=\"message\" data-id=\"i5\" data-from=\"T\" data-to=\"AZ\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c-arrowhead)\" style=\"fill: none;\"></line><text x=\"211\" y=\"360\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Output Node 2 &amp; 3 Peer IDs</text><line x1=\"343\" y1=\"391\" x2=\"79\" y2=\"391\" class=\"messageLine0\" data-et=\"message\" data-id=\"i6\" data-from=\"T\" data-to=\"C\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c-arrowhead)\" style=\"fill: none;\"></line><text x=\"455\" y=\"406\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Share Peer IDs</text><line x1=\"76\" y1=\"435\" x2=\"833\" y2=\"435\" class=\"messageLine0\" data-et=\"message\" data-id=\"i7\" data-from=\"C\" data-to=\"R\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c-arrowhead)\" style=\"fill: none;\"></line><text x=\"838\" y=\"498\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Configure Nodes 0 &amp; 1</text><path d=\"M 838,529 C 898,519 898,559 838,549\" class=\"messageLine0\" data-et=\"message\" data-id=\"i9\" data-from=\"R\" data-to=\"R\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c-arrowhead)\" style=\"fill: none;\"></path><text x=\"838\" y=\"574\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Configure Relay Server</text><path d=\"M 838,605 C 898,595 898,635 838,625\" class=\"messageLine0\" data-et=\"message\" data-id=\"i10\" data-from=\"R\" data-to=\"R\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c-arrowhead)\" style=\"fill: none;\"></path><text x=\"458\" y=\"650\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Provide Ripple config</text><line x1=\"836\" y1=\"681\" x2=\"79\" y2=\"681\" class=\"messageLine0\" data-et=\"message\" data-id=\"i11\" data-from=\"R\" data-to=\"C\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c-arrowhead)\" style=\"fill: none;\"></line><text x=\"208\" y=\"744\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Run deployment mode</text><line x1=\"76\" y1=\"775\" x2=\"340\" y2=\"775\" class=\"messageLine0\" data-et=\"message\" data-id=\"i13\" data-from=\"C\" data-to=\"T\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c-arrowhead)\" style=\"fill: none;\"></line><text x=\"488\" y=\"790\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Provision infrastructure</text><line x1=\"345\" y1=\"819\" x2=\"631\" y2=\"819\" class=\"messageLine0\" data-et=\"message\" data-id=\"i14\" data-from=\"T\" data-to=\"AZ\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c-arrowhead)\" style=\"fill: none;\"></line><text x=\"488\" y=\"834\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Deploy Azure Confidential VMs</text><line x1=\"345\" y1=\"865\" x2=\"631\" y2=\"865\" class=\"messageLine0\" data-et=\"message\" data-id=\"i15\" data-from=\"T\" data-to=\"AZ\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c-arrowhead)\" style=\"fill: none;\"></line><text x=\"211\" y=\"880\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Deployment complete</text><line x1=\"343\" y1=\"911\" x2=\"79\" y2=\"911\" class=\"messageLine0\" data-et=\"message\" data-id=\"i16\" data-from=\"T\" data-to=\"C\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c-arrowhead)\" style=\"fill: none;\"></line><text x=\"455\" y=\"973\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Confirm connectivity</text><line x1=\"76\" y1=\"1004\" x2=\"833\" y2=\"1004\" class=\"messageLine0\" data-et=\"message\" data-id=\"i18\" data-from=\"C\" data-to=\"R\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c-arrowhead)\" style=\"fill: none;\"></line><text x=\"458\" y=\"1019\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Run cluster health check</text><line x1=\"836\" y1=\"1048\" x2=\"79\" y2=\"1048\" class=\"messageLine0\" data-et=\"message\" data-id=\"i19\" data-from=\"R\" data-to=\"C\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-00bdf2d72b927eab78dcedf4bf0ccce66fcd4b923764986d4d29569b9a8c7b4c-arrowhead)\" style=\"fill: none;\"></line></svg>","diagramHtmlDark":"<svg id=\"diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" style=\"max-width: 1021.5px;\" viewBox=\"-50 -10 1021.5 1154\" role=\"graphics-document document\" aria-roledescription=\"sequence\"><style>\n    #diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 foreignObject {\n      overflow: visible;\n    }\n  </style><g><rect x=\"762\" y=\"1068\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"R\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"837\" y=\"1100.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"837\" dy=\"0\">Ripple</tspan></text></g><g><rect x=\"558\" y=\"1068\" fill=\"#eaeaea\" stroke=\"#666\" width=\"154\" height=\"65\" name=\"AZ\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"635\" y=\"1100.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"635\" dy=\"0\">Azure Subscription</tspan></text></g><g><rect x=\"265\" y=\"1068\" fill=\"#eaeaea\" stroke=\"#666\" width=\"158\" height=\"65\" name=\"T\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"344\" y=\"1100.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"344\" dy=\"0\">MPC Deployer Tool</tspan></text></g><g><rect x=\"0\" y=\"1068\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"C\" rx=\"3\" ry=\"3\" class=\"actor actor-bottom\"></rect><text x=\"75\" y=\"1100.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"75\" dy=\"0\">Customer</tspan></text></g><g><line id=\"actor3\" x1=\"837\" y1=\"65\" x2=\"837\" y2=\"1068\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"R\" data-et=\"life-line\" data-id=\"R\"></line><g id=\"root-3\" data-et=\"participant\" data-type=\"participant\" data-id=\"R\"><rect x=\"762\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"R\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"837\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"837\" dy=\"0\">Ripple</tspan></text></g></g><g><line id=\"actor2\" x1=\"635\" y1=\"65\" x2=\"635\" y2=\"1068\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"AZ\" data-et=\"life-line\" data-id=\"AZ\"></line><g id=\"root-2\" data-et=\"participant\" data-type=\"participant\" data-id=\"AZ\"><rect x=\"558\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"154\" height=\"65\" name=\"AZ\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"635\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"635\" dy=\"0\">Azure Subscription</tspan></text></g></g><g><line id=\"actor1\" x1=\"344\" y1=\"65\" x2=\"344\" y2=\"1068\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"T\" data-et=\"life-line\" data-id=\"T\"></line><g id=\"root-1\" data-et=\"participant\" data-type=\"participant\" data-id=\"T\"><rect x=\"265\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"158\" height=\"65\" name=\"T\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"344\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"344\" dy=\"0\">MPC Deployer Tool</tspan></text></g></g><g><line id=\"actor0\" x1=\"75\" y1=\"65\" x2=\"75\" y2=\"1068\" class=\"actor-line 200\" stroke-width=\"0.5px\" stroke=\"#999\" name=\"C\" data-et=\"life-line\" data-id=\"C\"></line><g id=\"root-0\" data-et=\"participant\" data-type=\"participant\" data-id=\"C\"><rect x=\"0\" y=\"0\" fill=\"#eaeaea\" stroke=\"#666\" width=\"150\" height=\"65\" name=\"C\" rx=\"3\" ry=\"3\" class=\"actor actor-top\"></rect><text x=\"75\" y=\"32.5\" dominant-baseline=\"central\" alignment-baseline=\"central\" class=\"actor actor-box\" style=\"text-anchor: middle; font-size: 16px; font-weight: 400; font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif;\"><tspan x=\"75\" dy=\"0\">Customer</tspan></text></g></g><style>#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;fill:#ccc;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .error-icon{fill:#a44141;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .error-text{fill:#ddd;stroke:#ddd;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .edge-thickness-normal{stroke-width:1px;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .edge-thickness-thick{stroke-width:3.5px;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .edge-pattern-solid{stroke-dasharray:0;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .edge-thickness-invisible{stroke-width:0;fill:none;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .edge-pattern-dashed{stroke-dasharray:3;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .edge-pattern-dotted{stroke-dasharray:2;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .marker{fill:lightgrey;stroke:lightgrey;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .marker.cross{stroke:lightgrey;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 svg{font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;font-size:16px;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 p{margin:0;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .actor{stroke:#ccc;fill:#1f2020;stroke-width:1;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 rect.actor.outer-path[data-look=\"neo\"]{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 rect.note[data-look=\"neo\"]{stroke:hsl(180, 0%, 18.3529411765%);fill:hsl(180, 1.5873015873%, 28.3529411765%);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 text.actor&gt;tspan{fill:lightgrey;stroke:none;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .actor-line{stroke:#ccc;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .innerArc{stroke-width:1.5;stroke-dasharray:none;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:lightgrey;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:lightgrey;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 [id$=\"-arrowhead\"] path{fill:lightgrey;stroke:lightgrey;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .sequenceNumber{fill:black;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 [id$=\"-sequencenumber\"]{fill:lightgrey;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 [id$=\"-crosshead\"] path{fill:lightgrey;stroke:lightgrey;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .messageText{fill:lightgrey;stroke:none;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .labelBox{stroke:#ccc;fill:#1f2020;filter:none;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .labelText,#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .labelText&gt;tspan{fill:lightgrey;stroke:none;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .loopText,#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .loopText&gt;tspan{fill:lightgrey;stroke:none;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .sectionTitle,#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .sectionTitle&gt;tspan{fill:lightgrey;stroke:none;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:#ccc;fill:#ccc;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .note{stroke:hsl(180, 0%, 18.3529411765%);fill:hsl(180, 1.5873015873%, 28.3529411765%);}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .noteText,#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .noteText&gt;tspan{fill:rgb(183.8476190475, 181.5523809523, 181.5523809523);stroke:none;font-weight:normal;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .activation0{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:#ccc;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .activation1{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:#ccc;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .activation2{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:#ccc;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .actorPopupMenu{position:absolute;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .actorPopupMenuPanel{position:absolute;fill:#1f2020;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .actor-man circle,#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 line{fill:#1f2020;stroke-width:2px;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 g rect.rect{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));stroke:#ccc;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 .node .neo-node{stroke:#ccc;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 [data-look=\"neo\"].node rect,#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 [data-look=\"neo\"].cluster rect,#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 [data-look=\"neo\"].node polygon{stroke:url(#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 [data-look=\"neo\"].swimlane.cluster rect{filter:none;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 [data-look=\"neo\"].node path{stroke:url(#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-gradient);stroke-width:1px;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 [data-look=\"neo\"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 [data-look=\"neo\"].node .neo-line path{stroke:#ccc;filter:none;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 [data-look=\"neo\"].node circle{stroke:url(#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 [data-look=\"neo\"].node circle .state-start{fill:#000000;}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 [data-look=\"neo\"].icon-shape .icon{fill:url(#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 [data-look=\"neo\"].icon-shape .icon-neo path{stroke:url(#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4 :root{--mermaid-font-family:\"Redocly Mermaid Sans\",Arial,\"Liberation Sans\",Arimo,Helvetica,\"Redocly Mermaid CJK\",sans-serif;}</style><g></g><defs><symbol id=\"diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-computer\" width=\"24\" height=\"24\"><path transform=\"scale(.5)\" d=\"M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z\"></path></symbol></defs><defs><symbol id=\"diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-database\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"><path transform=\"scale(.5)\" d=\"M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z\"></path></symbol></defs><defs><symbol id=\"diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-clock\" width=\"24\" height=\"24\"><path transform=\"scale(.5)\" d=\"M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z\"></path></symbol></defs><defs><marker id=\"diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-arrowhead\" refX=\"7.9\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M -1 0 L 10 5 L 0 10 z\"></path></marker></defs><defs><marker id=\"diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-crosshead\" markerWidth=\"15\" markerHeight=\"8\" orient=\"auto\" refX=\"4\" refY=\"4.5\"><path fill=\"none\" stroke=\"#000000\" stroke-width=\"1pt\" d=\"M 1,2 L 6,7 M 6,2 L 1,7\" style=\"stroke-dasharray: 0, 0;\"></path></marker></defs><defs><marker id=\"diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-filled-head\" refX=\"15.5\" refY=\"7\" markerWidth=\"20\" markerHeight=\"28\" orient=\"auto\"><path d=\"M 18,7 L9,13 L14,7 L9,1 Z\"></path></marker></defs><defs><marker id=\"diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-sequencenumber\" refX=\"15\" refY=\"15\" markerWidth=\"60\" markerHeight=\"40\" orient=\"auto\"><circle cx=\"15\" cy=\"15\" r=\"6\"></circle></marker></defs><defs><marker id=\"diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-solidTopArrowHead\" refX=\"7.9\" refY=\"7.25\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 10 8 L 0 8 z\"></path></marker></defs><defs><marker id=\"diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-solidBottomArrowHead\" refX=\"7.9\" refY=\"0.75\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 10 0 L 0 8 z\"></path></marker></defs><defs><marker id=\"diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-stickTopArrowHead\" refX=\"7.5\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 0 L 7 7\" stroke=\"black\" stroke-width=\"1.5\" fill=\"none\"></path></marker></defs><defs><marker id=\"diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-stickBottomArrowHead\" refX=\"7.5\" refY=\"0\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto-start-reverse\"><path d=\"M 0 7 L 7 0\" stroke=\"black\" stroke-width=\"1.5\" fill=\"none\"></path></marker></defs><g data-et=\"note\" data-id=\"i0\"><rect x=\"50\" y=\"75\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"610\" height=\"38\" class=\"note\"></rect><text x=\"355\" y=\"80\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\"><tspan x=\"355\">Phase 0: Azure Prerequisites</tspan></text></g><g data-et=\"note\" data-id=\"i3\"><rect x=\"50\" y=\"215\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"812\" height=\"38\" class=\"note\"></rect><text x=\"456\" y=\"220\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\"><tspan x=\"456\">Phase 1: Key Generation</tspan></text></g><g data-et=\"note\" data-id=\"i8\"><rect x=\"50\" y=\"445\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"812\" height=\"38\" class=\"note\"></rect><text x=\"456\" y=\"450\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\"><tspan x=\"456\">Phase 2: Ripple Setup</tspan></text></g><g data-et=\"note\" data-id=\"i12\"><rect x=\"50\" y=\"691\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"812\" height=\"38\" class=\"note\"></rect><text x=\"456\" y=\"696\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\"><tspan x=\"456\">Phase 3: Deployment</tspan></text></g><g data-et=\"note\" data-id=\"i17\"><rect x=\"50\" y=\"921\" fill=\"#EDF2AE\" stroke=\"#666\" width=\"812\" height=\"37\" class=\"note\"></rect><text x=\"456\" y=\"926\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"noteText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\"><tspan x=\"456\">Phase 4: Verification</tspan></text></g><text x=\"354\" y=\"128\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Pre-provision Resource Group, Key Vaults, contract wrapping key, Log Analytics Workspace, and Managed Identity</text><line x1=\"76\" y1=\"159\" x2=\"631\" y2=\"159\" class=\"messageLine0\" data-et=\"message\" data-id=\"i1\" data-from=\"C\" data-to=\"AZ\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-arrowhead)\" style=\"fill: none;\"></line><text x=\"208\" y=\"174\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Provide Azure input values</text><line x1=\"76\" y1=\"205\" x2=\"340\" y2=\"205\" class=\"messageLine0\" data-et=\"message\" data-id=\"i2\" data-from=\"C\" data-to=\"T\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-arrowhead)\" style=\"fill: none;\"></line><text x=\"208\" y=\"268\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Run --keygen mode</text><line x1=\"76\" y1=\"299\" x2=\"340\" y2=\"299\" class=\"messageLine0\" data-et=\"message\" data-id=\"i4\" data-from=\"C\" data-to=\"T\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-arrowhead)\" style=\"fill: none;\"></line><text x=\"488\" y=\"314\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Store keys in Azure Key Vault</text><line x1=\"345\" y1=\"345\" x2=\"631\" y2=\"345\" class=\"messageLine0\" data-et=\"message\" data-id=\"i5\" data-from=\"T\" data-to=\"AZ\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-arrowhead)\" style=\"fill: none;\"></line><text x=\"211\" y=\"360\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Output Node 2 &amp; 3 Peer IDs</text><line x1=\"343\" y1=\"391\" x2=\"79\" y2=\"391\" class=\"messageLine0\" data-et=\"message\" data-id=\"i6\" data-from=\"T\" data-to=\"C\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-arrowhead)\" style=\"fill: none;\"></line><text x=\"455\" y=\"406\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Share Peer IDs</text><line x1=\"76\" y1=\"435\" x2=\"833\" y2=\"435\" class=\"messageLine0\" data-et=\"message\" data-id=\"i7\" data-from=\"C\" data-to=\"R\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-arrowhead)\" style=\"fill: none;\"></line><text x=\"838\" y=\"498\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Configure Nodes 0 &amp; 1</text><path d=\"M 838,529 C 898,519 898,559 838,549\" class=\"messageLine0\" data-et=\"message\" data-id=\"i9\" data-from=\"R\" data-to=\"R\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-arrowhead)\" style=\"fill: none;\"></path><text x=\"838\" y=\"574\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Configure Relay Server</text><path d=\"M 838,605 C 898,595 898,635 838,625\" class=\"messageLine0\" data-et=\"message\" data-id=\"i10\" data-from=\"R\" data-to=\"R\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-arrowhead)\" style=\"fill: none;\"></path><text x=\"458\" y=\"650\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Provide Ripple config</text><line x1=\"836\" y1=\"681\" x2=\"79\" y2=\"681\" class=\"messageLine0\" data-et=\"message\" data-id=\"i11\" data-from=\"R\" data-to=\"C\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-arrowhead)\" style=\"fill: none;\"></line><text x=\"208\" y=\"744\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Run deployment mode</text><line x1=\"76\" y1=\"775\" x2=\"340\" y2=\"775\" class=\"messageLine0\" data-et=\"message\" data-id=\"i13\" data-from=\"C\" data-to=\"T\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-arrowhead)\" style=\"fill: none;\"></line><text x=\"488\" y=\"790\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Provision infrastructure</text><line x1=\"345\" y1=\"819\" x2=\"631\" y2=\"819\" class=\"messageLine0\" data-et=\"message\" data-id=\"i14\" data-from=\"T\" data-to=\"AZ\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-arrowhead)\" style=\"fill: none;\"></line><text x=\"488\" y=\"834\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Deploy Azure Confidential VMs</text><line x1=\"345\" y1=\"865\" x2=\"631\" y2=\"865\" class=\"messageLine0\" data-et=\"message\" data-id=\"i15\" data-from=\"T\" data-to=\"AZ\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-arrowhead)\" style=\"fill: none;\"></line><text x=\"211\" y=\"880\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Deployment complete</text><line x1=\"343\" y1=\"911\" x2=\"79\" y2=\"911\" class=\"messageLine0\" data-et=\"message\" data-id=\"i16\" data-from=\"T\" data-to=\"C\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-arrowhead)\" style=\"fill: none;\"></line><text x=\"455\" y=\"973\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Confirm connectivity</text><line x1=\"76\" y1=\"1004\" x2=\"833\" y2=\"1004\" class=\"messageLine0\" data-et=\"message\" data-id=\"i18\" data-from=\"C\" data-to=\"R\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-arrowhead)\" style=\"fill: none;\"></line><text x=\"458\" y=\"1019\" text-anchor=\"middle\" dominant-baseline=\"middle\" alignment-baseline=\"middle\" class=\"messageText\" dy=\"1em\" style=\"font-family: &quot;Redocly Mermaid Sans&quot;, Arial, &quot;Liberation Sans&quot;, Arimo, Helvetica, &quot;Redocly Mermaid CJK&quot;, sans-serif; font-size: 16px; font-weight: 400;\">Run cluster health check</text><line x1=\"836\" y1=\"1048\" x2=\"79\" y2=\"1048\" class=\"messageLine0\" data-et=\"message\" data-id=\"i19\" data-from=\"R\" data-to=\"C\" stroke-width=\"2\" stroke=\"none\" marker-end=\"url(#diagram-896f50aed7b20ac5cd2f1fed0b34268674660faa3b07f0fff566d32b6cfb44a4-arrowhead)\" style=\"fill: none;\"></line></svg>"},"children":["sequenceDiagram\n    participant C as Customer\n    participant T as MPC Deployer Tool\n    participant AZ as Azure Subscription\n    participant R as Ripple\n\n    Note over C,AZ: Phase 0: Azure Prerequisites\n    C->>AZ: Pre-provision Resource Group, Key Vaults, contract wrapping key, Log Analytics Workspace, and Managed Identity\n    C->>T: Provide Azure input values\n\n    Note over C,R: Phase 1: Key Generation\n    C->>T: Run --keygen mode\n    T->>AZ: Store keys in Azure Key Vault\n    T->>C: Output Node 2 & 3 Peer IDs\n    C->>R: Share Peer IDs\n\n    Note over C,R: Phase 2: Ripple Setup\n    R->>R: Configure Nodes 0 & 1\n    R->>R: Configure Relay Server\n    R->>C: Provide Ripple config\n\n    Note over C,R: Phase 3: Deployment\n    C->>T: Run deployment mode\n    T->>AZ: Provision infrastructure\n    T->>AZ: Deploy Azure Confidential VMs\n    T->>C: Deployment complete\n\n    Note over C,R: Phase 4: Verification\n    C->>R: Confirm connectivity\n    R->>C: Run cluster health check\n"]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-1-pre-provision-azure-resources","__idx":11},"children":["Step 1: Pre-provision Azure resources"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before running the deployer, confirm that the following resources exist:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Requirement"},"children":["Requirement"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"What to verify"},"children":["What to verify"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Resource group"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The target resource group exists in the primary Azure region"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Standard Key Vault"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["RBAC authorization is enabled and the deployer identity can read and write secrets"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Premium Key Vault"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The vault contains an RSA-4096 HSM-backed wrapping key"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["User-assigned managed identity"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The identity exists and can be assigned to the Confidential VMs"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Key Vault access"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The managed identity has access to both Key Vaults, or the deployer identity can create the required role assignments"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Network"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Either allow the deployer to create the VNet and subnets, or provide two existing subnets"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Outbound connectivity"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Subnets allow outbound HTTPS and connectivity to the Ripple relay host and port"]}]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-2-generate-node-keys","__idx":12},"children":["Step 2: Generate node keys"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Create an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[".env"]}," file using the sample provided with your MPC Deployer package. For key generation, include your tenant details, Azure region, and the pre-provisioned Azure resource values."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["At minimum, the key-generation configuration includes:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Value"},"children":["Value"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["REGION"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Primary Azure region"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TENANT_ALIAS"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your organization identifier"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["TENANT_INSTANCE_CODE"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Environment code"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AZURE_SUBSCRIPTION_ID"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Azure subscription ID"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AZURE_RESOURCE_GROUP"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Resource group used by the deployment"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AZURE_KEY_VAULT_NAME"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Key Vault used for node keys, configuration, and contract tokens"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Generate cryptographic keys for your MPC nodes:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"docker run --rm -it \\\n  --env-file .env \\\n  -e ARM_SUBSCRIPTION_ID \\\n  -e ARM_TENANT_ID \\\n  -e ARM_CLIENT_ID \\\n  -e ARM_CLIENT_SECRET \\\n  -v $(pwd)/output:/app/output \\\n  <RIPPLE_REGISTRY>/mpc-deployer:<VERSION> \\\n  --provider azure --keygen --output /app/output --non-interactive\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The tool stores the private node keys and KEKs in Azure Key Vault. The output includes the public Peer IDs for Node 2 and Node 3:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"text","header":{"controls":{"copy":{}}},"source":"Key material successfully generated and stored in Azure Key Vault.\nNode 2 Public Key (Peer ID): 12D3KooWBhMevWJT...\nNode 3 Public Key (Peer ID): 12D3KooWCdEfGhIj...\n","lang":"text"},"children":[]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Share with Ripple:"]}," Send the Node 2 and Node 3 Peer IDs to your Ripple representative. These are public identifiers and are safe to share."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-3-wait-for-ripple-configuration","__idx":13},"children":["Step 3: Wait for Ripple configuration"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Ripple will configure their infrastructure and provide you with:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Configuration"},"children":["Configuration"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Example"},"children":["Example"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Relay Host"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["relay.mpc.ripple.com"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Relay Port"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["6000"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Relay Public Key"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["12D3KooW..."]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Node 0 Public Key"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["12D3KooW..."]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Node 1 Public Key"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["12D3KooW..."]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["MPC Docker Image"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["metaco.azurecr.io/harmonize/mpc-core:1.13.12"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Add the following values to your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[".env"]}," file before deployment:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Value"},"children":["Value"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MPC_DOCKER_IMAGE"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["MPC core Docker image provided by Ripple"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MPC_DOCKER_REGISTRY_USERNAME"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Docker registry username"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MPC_DOCKER_REGISTRY_PASSWORD"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Docker registry password"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MPC_RELAY_HOST"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Relay server host"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MPC_RELAY_PORT"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Relay server port"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MPC_RELAY_PUBLIC_KEY"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Relay server public key"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MPC_NODE0_PUBLIC_KEY"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Node 0 public key"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MPC_NODE1_PUBLIC_KEY"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Node 1 public key"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AZURE_NSG_RIPPLE_SAAS_CIDRS"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["CIDR blocks allowed by the network security groups for Ripple SaaS connectivity"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AZURE_NSG_DOCKER_REGISTRY_CIDRS"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["CIDR blocks allowed by the network security groups for Docker registry access"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["OTEL_HTTP_ENDPOINT"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["OpenTelemetry endpoint"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["OTEL_HTTP_USER"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["OpenTelemetry username"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["OTEL_HTTP_PASSWORD"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["OpenTelemetry password"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AZURE_WRAPPING_KEY_VAULT_NAME"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Premium Key Vault that holds the contract wrapping key (Azure SKR)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AZURE_KEY_WRAPPING_KEY_NAME"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Name of the RSA-4096 HSM-backed contract wrapping key"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["RIPPLE_COSIGN_PUBLIC_KEY"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Cosign public key that verifies mpc-core image signatures at CVM boot"]}]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-4-deploy-mpc-nodes","__idx":14},"children":["Step 4: Deploy MPC nodes"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After Ripple provides the cluster configuration, deploy Node 2 and Node 3 to Azure."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"non-interactive-deployment-recommended","__idx":15},"children":["Non-interactive deployment (recommended)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For production deployments, use environment variables with the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["--non-interactive"]}," flag:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"docker run --rm -it \\\n  --env-file .env \\\n  -e ARM_SUBSCRIPTION_ID \\\n  -e ARM_TENANT_ID \\\n  -e ARM_CLIENT_ID \\\n  -e ARM_CLIENT_SECRET \\\n  -v $(pwd)/output:/app/output \\\n  <RIPPLE_REGISTRY>/mpc-deployer:<VERSION> \\\n  --provider azure --output /app/output --non-interactive\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"interactive-deployment-fallback","__idx":16},"children":["Interactive deployment (fallback)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you prefer to enter configuration interactively:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"docker run --rm -it \\\n  --env-file .env \\\n  -e ARM_SUBSCRIPTION_ID \\\n  -e ARM_TENANT_ID \\\n  -e ARM_CLIENT_ID \\\n  -e ARM_CLIENT_SECRET \\\n  -v $(pwd)/output:/app/output \\\n  <RIPPLE_REGISTRY>/mpc-deployer:<VERSION> \\\n  --provider azure --output /app/output\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"deployment-into-an-existing-vnet","__idx":17},"children":["Deployment into an existing VNet"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you have existing subnets, use the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["--no-create-vpc"]}," flag:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"docker run --rm -it \\\n  --env-file .env \\\n  -e ARM_SUBSCRIPTION_ID \\\n  -e ARM_TENANT_ID \\\n  -e ARM_CLIENT_ID \\\n  -e ARM_CLIENT_SECRET \\\n  -v $(pwd)/output:/app/output \\\n  <RIPPLE_REGISTRY>/mpc-deployer:<VERSION> \\\n  --provider azure --output /app/output --non-interactive --no-create-vpc\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[".env"]}," file must include the existing VNet and subnet values required by your deployer package. The two subnets should be in separate availability zones or fault domains when your Azure region and networking design support it."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Value"},"children":["Value"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AZURE_PRECONFIGURED_PRIVATE_SUBNET1_ID"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Existing subnet ID for MPC Node 2"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AZURE_PRECONFIGURED_PRIVATE_SUBNET2_ID"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Existing subnet ID for MPC Node 3"]}]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-5-verify-deployment","__idx":18},"children":["Step 5: Verify deployment"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After deployment completes, verify the Azure infrastructure and node startup."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"check-confidential-vms","__idx":19},"children":["Check Confidential VMs"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Verify that both VMs are running:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"az vm list \\\n  --resource-group <RESOURCE_GROUP> \\\n  --show-details \\\n  --query \"[?contains(name, 'mpc')].{Name:name,PowerState:powerState,Size:hardwareProfile.vmSize}\" \\\n  --output table\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["What to check:"]}," Confirm both MPC VMs show ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["VM running"]}," and use the Confidential VM SKU selected for your deployment."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"check-managed-identity-assignment","__idx":20},"children":["Check managed identity assignment"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Confirm that each VM has the expected user-assigned managed identity:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"az vm identity show \\\n  --resource-group <RESOURCE_GROUP> \\\n  --name <MPC_VM_NAME>\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"check-boot-diagnostics","__idx":21},"children":["Check boot diagnostics"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Retrieve the startup log for each VM:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"az vm boot-diagnostics get-boot-log \\\n  --resource-group <RESOURCE_GROUP> \\\n  --name <MPC_VM_NAME>\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["What to check:"]}," Look for log entries indicating that the node retrieved its configuration from Key Vault and connected to the relay server."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"verify-key-vault-entries","__idx":22},"children":["Verify Key Vault entries"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Confirm that deployment secrets exist in the Standard Key Vault:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"az keyvault secret list \\\n  --vault-name <CONFIG_KEY_VAULT_NAME> \\\n  --query \"[?contains(name, '<TENANT_ALIAS>')].name\"\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["What to check:"]}," This command lists secret names only and does not reveal key material. Verify that secrets for Node 2 and Node 3 exist."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"command-reference","__idx":23},"children":["Command reference"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Flag"},"children":["Flag"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Default"},"children":["Default"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["--output"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Output directory for logs and generated files"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["./output/"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["--keygen"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Generate key material for customer nodes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["--no-create-vpc"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Use existing Azure networking instead of creating a VNet and subnets"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["--non-interactive"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Disable interactive prompts, recommended for production"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["--dry-run"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Simulate deployment without making changes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["false"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"troubleshooting","__idx":24},"children":["Troubleshooting"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"common-issues","__idx":25},"children":["Common issues"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Issue"},"children":["Issue"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Cause"},"children":["Cause"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Solution"},"children":["Solution"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Azure credentials error"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Missing, expired, or unauthorized credentials"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Refresh Azure credentials and verify subscription access"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Key Vault access denied"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Managed identity or deployer identity lacks RBAC permissions"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Grant the required Key Vault roles before rerunning"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Contract wrapping key not found"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Premium Key Vault or RSA-4096 HSM key is missing or misnamed"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Verify the Premium Key Vault name and key name"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Confidential VM launch failed"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["VM SKU unavailable, quota exceeded, or region unsupported"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Choose a supported region/SKU or request quota"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["VM cannot retrieve configuration"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Managed identity is not assigned or cannot access Key Vault"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Check VM identity assignment and Key Vault RBAC"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Docker registry auth failed"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Invalid registry credentials"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Verify credentials with Ripple"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Relay connection failed"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Network blocks outbound relay traffic"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Confirm subnet routing, NSG rules, and proxy configuration"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Role assignment failed"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Deployer identity cannot create role assignments"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Grant the required Key Vault role assignments and rerun the deployment"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"log-files","__idx":26},"children":["Log files"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All deployer operations are logged to the output directory:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Log File"},"children":["Log File"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Content"},"children":["Content"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["output.log"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Main application logs"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cdktf.log"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Infrastructure provisioning logs"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"getting-help","__idx":27},"children":["Getting help"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you encounter issues:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Check log files in the output directory."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Verify Azure credentials, Key Vault access, and managed identity assignment."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Retrieve VM boot diagnostics for Node 2 and Node 3."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Contact your Ripple representative with log files and boot diagnostics."]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"next-steps","__idx":28},"children":["Next steps"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After successful deployment, contact your Ripple representative to:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Verify connectivity"]}," between your nodes and Ripple nodes."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Complete cluster configuration"]}," and run health checks."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Test key generation"]}," using the DKG process."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Set up ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/deployment/integrate-kms/mpc/backups"},"children":["MPC backups"]}]}," for encrypted shard backups with verifiable encryption."]}]}]},"headings":[{"value":"MPC deployment on Azure","id":"mpc-deployment-on-azure","depth":1},{"value":"Overview","id":"overview","depth":2},{"value":"What gets deployed","id":"what-gets-deployed","depth":3},{"value":"Azure resources","id":"azure-resources","depth":3},{"value":"Pre-provisioned resources","id":"pre-provisioned-resources","depth":4},{"value":"Resources created by the deployer","id":"resources-created-by-the-deployer","depth":4},{"value":"Prerequisites","id":"prerequisites","depth":2},{"value":"Azure requirements","id":"azure-requirements","depth":3},{"value":"Execution requirements","id":"execution-requirements","depth":3},{"value":"From Ripple","id":"from-ripple","depth":3},{"value":"Deployment process","id":"deployment-process","depth":2},{"value":"Step 1: Pre-provision Azure resources","id":"step-1-pre-provision-azure-resources","depth":2},{"value":"Step 2: Generate node keys","id":"step-2-generate-node-keys","depth":2},{"value":"Step 3: Wait for Ripple configuration","id":"step-3-wait-for-ripple-configuration","depth":2},{"value":"Step 4: Deploy MPC nodes","id":"step-4-deploy-mpc-nodes","depth":2},{"value":"Non-interactive deployment (recommended)","id":"non-interactive-deployment-recommended","depth":3},{"value":"Interactive deployment (fallback)","id":"interactive-deployment-fallback","depth":3},{"value":"Deployment into an existing VNet","id":"deployment-into-an-existing-vnet","depth":3},{"value":"Step 5: Verify deployment","id":"step-5-verify-deployment","depth":2},{"value":"Check Confidential VMs","id":"check-confidential-vms","depth":3},{"value":"Check managed identity assignment","id":"check-managed-identity-assignment","depth":3},{"value":"Check boot diagnostics","id":"check-boot-diagnostics","depth":3},{"value":"Verify Key Vault entries","id":"verify-key-vault-entries","depth":3},{"value":"Command reference","id":"command-reference","depth":2},{"value":"Troubleshooting","id":"troubleshooting","depth":2},{"value":"Common issues","id":"common-issues","depth":3},{"value":"Log files","id":"log-files","depth":3},{"value":"Getting help","id":"getting-help","depth":3},{"value":"Next steps","id":"next-steps","depth":2}],"frontmatter":{"seo":{"title":"MPC deployment on Azure"}},"lastModified":"2026-09-16T09:00:53.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/custody/deployment/integrate-kms/mpc/azure-deployment","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}