storj/docs/blueprints/byte-range-multipart-copy/images/commit-object-validation.drawio.svg
Erik van Velzen 0cfbd34da2 docs/blueprints: byte range multipart copy
Design proposal for approval to support S3's UploadPartCopy. Major
revision 2.

Change-Id: I9cbe934a773d3496101f32afb19492ea75f48061
2022-10-13 12:03:17 +00:00

4 lines
26 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!-- Do not edit this file with editors other than diagrams.net -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" style="background-color: rgb(255, 255, 255);" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="399px" height="1166px" viewBox="-0.5 -0.5 399 1166" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2022-09-20T10:26:04.521Z&quot; agent=&quot;5.0 (X11)&quot; etag=&quot;Jv_AEOR9-JFxQTcQZ-4Y&quot; version=&quot;20.2.8&quot; type=&quot;google&quot;&gt;&lt;diagram id=&quot;SyjGuCBK50AiA4rioi4i&quot; name=&quot;Page-1&quot;&gt;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&lt;/diagram&gt;&lt;/mxfile&gt;"><defs/><g><rect x="160" y="0" width="160" height="50" rx="7.5" ry="7.5" fill="#000000" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 25px; margin-left: 161px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #FFFFFF; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ObjectCommitRequest</div></div></div></foreignObject><text x="240" y="29" fill="#FFFFFF" font-family="Helvetica" font-size="12px" text-anchor="middle">ObjectCommitRequest</text></switch></g><path d="M 240 50 L 240 73.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 240 78.88 L 236.5 71.88 L 240 73.63 L 243.5 71.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="170" y="80" width="140" height="60" rx="9" ry="9" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 138px; height: 1px; padding-top: 110px; margin-left: 171px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div>Load+delete pending_copy_range for this destination<br /></div></div></div></div></foreignObject><text x="240" y="114" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Load+delete pending_cop...</text></switch></g><path d="M 240 170 L 280 210 L 240 250 L 200 210 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 210px; margin-left: 201px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Number of records?</div></div></div></foreignObject><text x="240" y="214" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Number of rec...</text></switch></g><path d="M 240 140 L 240 163.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 240 168.88 L 236.5 161.88 L 240 163.63 L 243.5 161.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 280 210 L 380 210 L 390 1053 L 286.37 1052.65" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 281.12 1052.64 L 288.13 1049.16 L 286.37 1052.65 L 288.11 1056.16 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 210px; margin-left: 306px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"><div>=0</div></div></div></div></foreignObject><text x="306" y="214" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">=0</text></switch></g><path d="M 240 250 L 240 273.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 240 278.88 L 236.5 271.88 L 240 273.63 L 243.5 271.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 265px; margin-left: 240px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">&gt;0</div></div></div></foreignObject><text x="240" y="268" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">&gt;0</text></switch></g><rect x="200" y="1025" width="80" height="55" rx="8.25" ry="8.25" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 1053px; margin-left: 201px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div>Commit</div><div>Destination Object<br /></div></div></div></div></foreignObject><text x="240" y="1056" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Commit...</text></switch></g><rect x="160" y="1110" width="160" height="55" rx="8.25" ry="8.25" fill="#000000" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 1138px; margin-left: 161px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #FFFFFF; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ObjectCommitResponse</div></div></div></foreignObject><text x="240" y="1141" fill="#FFFFFF" font-family="Helvetica" font-size="12px" text-anchor="middle">ObjectCommitResponse</text></switch></g><path d="M 240 860 L 305 925 L 240 990 L 175 925 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 925px; margin-left: 176px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">all segments are copies, no original uploads</div></div></div></foreignObject><text x="240" y="929" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">all segments are copi...</text></switch></g><path d="M 240 280 L 325 370 L 240 460 L 155 370 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe flex-start; width: 161px; height: 1px; padding-top: 370px; margin-left: 164px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div align="center">ranges:</div><div><ul><li>start at 0</li><li>parts in-order and directly adjacent</li><li>same source object<br /></li></ul></div></div></div></div></foreignObject><text x="164" y="374" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">ranges:...</text></switch></g><path d="M 240 460 L 240 493.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 240 498.88 L 236.5 491.88 L 240 493.63 L 243.5 491.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 480px; margin-left: 240px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">yes</div></div></div></foreignObject><text x="240" y="483" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">yes</text></switch></g><rect x="30" y="1110" width="80" height="55" rx="8.25" ry="8.25" fill="#000000" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 1138px; margin-left: 31px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #FFFFFF; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">S3 <br />InvalidPart error</div></div></div></foreignObject><text x="70" y="1141" fill="#FFFFFF" font-family="Helvetica" font-size="12px" text-anchor="middle">S3...</text></switch></g><path d="M 155 370 L 70 370 L 70 1103.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 70 1108.88 L 66.5 1101.88 L 70 1103.63 L 73.5 1101.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 370px; margin-left: 133px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">no</div></div></div></foreignObject><text x="133" y="373" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">no</text></switch></g><rect x="200" y="770" width="80" height="55" rx="8.25" ry="8.25" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 798px; margin-left: 201px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Load segments</div></div></div></foreignObject><text x="240" y="801" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Load segments</text></switch></g><path d="M 240 825 L 240 853.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 240 858.88 L 236.5 851.88 L 240 853.63 L 243.5 851.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="200" y="500" width="80" height="55" rx="8.25" ry="8.25" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 528px; margin-left: 201px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Load source object</div></div></div></foreignObject><text x="240" y="531" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Load source o...</text></switch></g><path d="M 240 600 L 305 665 L 240 730 L 175 665 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 665px; margin-left: 176px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div>range</div><div>&gt;=</div><div>source object</div><div>size<br /></div></div></div></div></foreignObject><text x="240" y="669" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">range...</text></switch></g><path d="M 240 555 L 240 593.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 240 598.88 L 236.5 591.88 L 240 593.63 L 243.5 591.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 240 990 L 240 1018.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 240 1023.88 L 236.5 1016.88 L 240 1018.63 L 243.5 1016.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 998px; margin-left: 240px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">yes</div></div></div></foreignObject><text x="240" y="1001" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">yes</text></switch></g><path d="M 175 665 L 70 665 L 70 1103.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 70 1108.88 L 66.5 1101.88 L 70 1103.63 L 73.5 1101.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 660px; margin-left: 152px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">no</div></div></div></foreignObject><text x="152" y="663" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">no</text></switch></g><path d="M 240 730 L 240 763.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 240 768.88 L 236.5 761.88 L 240 763.63 L 243.5 761.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 750px; margin-left: 240px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">yes</div></div></div></foreignObject><text x="240" y="753" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">yes</text></switch></g><path d="M 175 925 L 70 925 L 70 1103.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 70 1108.88 L 66.5 1101.88 L 70 1103.63 L 73.5 1101.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 925px; margin-left: 156px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #000000; background-color: rgb(255, 255, 255); "><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"><div>no</div></div></div></div></foreignObject><text x="156" y="928" fill="#000000" font-family="Helvetica" font-size="11px" text-anchor="middle">no</text></switch></g><path d="M 40 200 C 8 200 0 230 25.6 236 C 0 249.2 28.8 278 49.6 266 C 64 290 112 290 128 266 C 160 266 160 242 140 230 C 160 206 128 182 100 194 C 80 176 48 176 40 200 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 230px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #000000; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div>Existing validation and authorization</div><div>is omitted for simplicity<br /></div></div></div></div></foreignObject><text x="80" y="234" fill="#000000" font-family="Helvetica" font-size="12px" text-anchor="middle">Existing validation and au...</text></switch></g><path d="M 240 1080 L 240 1103.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 240 1108.88 L 236.5 1101.88 L 240 1103.63 L 243.5 1101.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>