<mxfile host="app.diagrams.net" agent="architecture-diagram" version="24.0.0">
  <diagram name="How a Key Finds Its Class and Its Cluster" id="09-class-and-cluster-routing">
    <mxGraphModel dx="1400" dy="900" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1160" pageHeight="500" math="0" shadow="0">
      <root>
        <mxCell id="0" />
        <mxCell id="1" parent="0" />
        <mxCell id="_st1" value="Request" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=1;fontColor=#8a97a5;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="60" width="170" height="20" as="geometry" />
        </mxCell>
        <mxCell id="n.r-key" value="&lt;b&gt;Lock key&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;tenant/ns/path&lt;/font&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="40" y="150" width="170" height="90" as="geometry" />
        </mxCell>
        <mxCell id="_ico2" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAACWUlEQVRoge3ZPWgUURAH8F8SBVGMhV8IIqgIgo2llSJRLCQYQSsLS62CNhZa2NhZmMpaQcRSLBQ7I4gimsbEQhQtrggmGGIIqMGcxd7JcmTv4+3bXZT8YWDv9s3sf+bNm7dvllVUi76SntOPQziJA9iJtVhCDVN4gpf4XRKnrrAZNzGNehfyFbewtQqyaQzgCuZ0R7xV5nENa8omDhvxqAey7eS5kmdjB95HIt+UD5I1UzjWSRZhTPJNmcCGoh24k4PgMr5JKlDWmPtFkj8cSHwJ17GlYWcQo1jMGD9UBPk+4alzPsPmkJVn440C9q6jgeTfdrD7MEPvRHpQfwQHTgfqjXe4/yzj/5H0j7wO9OFUoO5A4P1hEdNol/DKM6V9AJ+20d0dy4HQ/G/K5Qy7ZzroHYvlwEhOB5ZxG/sls7EHNyTltZ3e2VgODOd0IFT+OpB3Ec/m1A/FXPMirwO1nPqh+BTT2Bflpk9NqozG2MgmI9joBc2zRhSMSipJmTNwPBb5CxWQfy3SLlwF+bpIr9NVpE0d92KQryryE1ifl3xVkY9yqK8q8uMitFWqiPw8rorQ2Cqb/IweW4vtauooxjqM6RXvJDm9HduwIOmbTuIxXojU3C0i5z82iBeOItJmGnuLINuaHrHSZgw/G9cLuKuEV+9z4kV+U9FkV8KrQLKVOpA+DwyW9dCYiHGgacUMvhdgd0Xk3el+STrJTczikiSNSkfIl5UHVRBNo4gUKhX/lQOLmaOyEaJTGC7qbSP7gSOVME2h9ZXhIPZ1oVeXfGH5HJ3RKv4x/AHr4cvIBpx95gAAAABJRU5ErkJggg==;" vertex="1" parent="n.r-key">
          <mxGeometry x="9" y="33" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="_st3" value="Classify" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=1;fontColor=#8a97a5;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="260" y="60" width="180" height="20" as="geometry" />
        </mxCell>
        <mxCell id="n.r-cls" value="&lt;b&gt;Class match&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;longest prefix&lt;/font&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;fontColor=#3a2b44;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="260" y="100" width="180" height="90" as="geometry" />
        </mxCell>
        <mxCell id="_ico4" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAACbUlEQVRoge3aO2gUURQG4C/xBUKCVhrfipBE0Uob8VFYSQoFRQtBUNTSQts0opWdgqIg2FgIFioaLBTRoBEsVFBEG0lloxAUJSHmYTFZshl3djI3M9lo9ocLO/z3nvMf5px77swsddQWDQXZ7cBhtGIAPbiM3oL85YYFuI3RCqNfFNSMxjWVxZfGb+ysmboUtGLYuNg+UUAPTAyip1YC03DGuMhBbCjjzpVxI1iSl9PJFnEDdmETFibM6cCOsd+f0FbGbcWrsutL+JJg5yueyLHgl4pue7XcrlSwK8tsnM64fgjn8wrgWUbnpdGLTlwRpVSIjRNTFb8l0HFe40OawMYUvi2FLxqtUjSmBTAvPy1BaMSctAn/NOoB1BqzOoABOXfMEMwNXDeAbXgj2qnuiI4SJVzEiwz2GnASuwP1JOKoyg3maWzevhi/OkdfVbfy0BRaK3p4KaE9xrcE2AxZE5xCq3AX10XdsjPGd+NnRpuLA7VURdJtnc5RSArNGMzqAEbwEd9z0hKE0CIewh48RjO6sL2Mv4W3GW0eED1/5IqkIu6Ozdsf49cE+DqW4KuQIm4x8Zy+PMY3BdgMWROcQutxA1dFfeBsjH+ObxltrgjUUhX1PlA0Zn0AP0T9oGYILeJRHMFNLMNDbC7jH+F1BnsN2CvaEHJFUhG/jM07FOPXBfg6nuCrkCJuMvHFcHOMnx9gM2RNcAptxAXRZ6M2f/eBLnzOaDP3YwT1PlA8/vsABqdFRTKGx0Yi0gJ4l5+WILyXQ6O8r3YFfHCq4mER7k2z8F84NRlxWf5q0C76dFp04feLXkv2FeynjlzwB27teFBcLsvEAAAAAElFTkSuQmCC;" vertex="1" parent="n.r-cls">
          <mxGeometry x="9" y="33" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.r-deny" value="&lt;b&gt;No class: refuse&lt;/b&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#5c1a17;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="260" y="210" width="180" height="90" as="geometry" />
        </mxCell>
        <mxCell id="_ico5" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAACo0lEQVRoge2YTYiNURjHf2MuNb5iNsTMpNxSruQjG3ai1N1YSBasWFAsJspCIbGZhRILq1usFLJQGslqdkj5SNgw02AzikEz4ToWZ97mveOc93y975xb3n89Nd3p+T+/Z+b03HMeKFXq/1Zngd41oA6sAoaB3wXWylUdwGVApGIU2BwTykVHaIVPYhhYGJHLSkuBMdQNCOBCPDQ7XUEPL4BJoBqNzqC1wC+yGxDArViAJt3HDJ/EzkiMWu3GHl4AL4FKFFKF5gFvcWtAAIdjwKp0End4AXwGuiPwtmgZ8AW/BgRwcfaRW9XAH14gp1Zt1qmntBFoGgBt4kEIREdA3hCwTfG7JvAc+DPj8+XASo1fHbjnyeKlfbif68XIG6kq5zUwt1jkaXUB7zUgWfedTuR/RZfXXyR0WmczIATyKq3SEkPeV+QxK1Q9wHcDyDVNbp8hTwBXC2QH4IYFxB1N7jqL3CYFPny2kn2Gk3iYkW8zVofwn45azQEeWQI81njssswXwJ68GzjoUPyNxmOvg8cIMD8v+EXAR4finzQ+hxw8BHAqrwYGHAv/0Pj0e/j0hcJXke9Yl8IC9WPljIfPdROgabHVwO+2OAlMACumogocR16/XbQeGAQ+eDCwHfe/WBHxBDkFnVRBvlt9i44Bx4BNyPF5O7CJA64NHA0oNg6sVnheCvAcxWGr1418r/oWG9D4LgB+Bviet21g5mLWNfZneL8K8J1AbrozVcNuu5YVpzXeFeRsD/G+aWpgMLCAQH5rq9YlJ3LwFsAOHXw9pwICeIEcw11AL3COsPOfjqdobqt3c2yg6NiSQKe/IHpUXbWpepMf0g08iwDiI4Fc2/yjNcA34h8PUzSyutuAnETjbQCajibwDjmi22YtX6pUqRz0FyGU+wg7R1qJAAAAAElFTkSuQmCC;" vertex="1" parent="n.r-deny">
          <mxGeometry x="9" y="33" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="_st6" value="Tier" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=1;fontColor=#8a97a5;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="490" y="60" width="170" height="20" as="geometry" />
        </mxCell>
        <mxCell id="n.r-tier" value="&lt;b&gt;Class tier&lt;/b&gt;" style="shape=hexagon;perimeter=hexagonPerimeter2;size=0.12;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;fontColor=#4a3c00;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="490" y="170" width="170" height="50" as="geometry" />
        </mxCell>
        <mxCell id="_ico7" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAADLElEQVRoge3YT6hVVRTH8c97vjQyjVQESStCkEQQChV0GIqBg8AMI4IgUpyIRjNp0MgiB0YY4UghrYEURCQIWj2I6I8mBAlF+F9LB5mK9krvbbDvrdtxn3/3nXfOE/zC5vHO2nvt39rnrn3W3tyhWQZK9l+I57EY9+ICPsMu/FapsoqZiHdxE+1Iu4KXGlOXwyA+FheebJsa0pjJRsXEt3EDC5qRGWcQ5xQPoI09dQrMS+LF+Dry/Bd8gTWYkrD9gfuFYPJY2GmTcQbDnfGV8Yz4Kj/Ssa9Lsc/I8bsCP0TGjeAdYQEKMZhjT1vFmYm/SVoZPjdiv3iuTMQGfIUHcrQVYoH4Cl/Ftx2hSdu5DH9PSt+Kk+0bTBhtAAP4seCE3fZ2hb5eGG0AsLrEhJcxO8XPooxxsTfZxsEqAoA3C4gfwaoMH+tTxq3EPfgkYvu9qgAIyXUpRcQxLMsZ/0pk3HUMdewvR+w3la/XMpmCzxOTbFUs2Z6LCGxjr7A4sQ/m6SrFd3k/MUnRIm62UGqUSeLdeU7zvgNVcgb7SvRv4a28TnUGAJtxtmDfN3Akr1PdAZzHE/gpo09LEL9lrET0mwO93C2cHc4mfA1jSRlHdb+BLn9iu7D99rJTvPpNpakACFvv/MSzovnxL00GsBazev6/ge/KOhnK71I5A3gKOxLPPxUuB0pRRwD3YY7wc3kcT/vvQNSlhdf7cV5VAEPC8XMp5uIhPIiHhUItj63CIaYWktvol/hVuRKht1h7rS7hXZIB9Ct8v5J7fow6cqAlXDsex2Fhpzkk1EajpsoAruGAcJY9IZTCp4Ty4e8K5xk1sZ/QDkxtUlQRJuNVXPR/8dfwrIpPTlUzDz/LTswPcVdTArOYgZOK7S4fGIdvYqdyW+SaZmTGmSrcHJQJYLgRpSksFxf5nlCQHY3Y/sKkJsTGSLsKmdaxp91ez7rF0xiRdx5Iuxl7URC5NmJrZ4yrnZnK3+V8X6fAvDdwQSi6yrCrPyljx6PCSanI6h81jhK4l5XC1XmW+GPCQWbcMg8fuTUnLmObcHSsnX4++9PxmCD4vFDfj1Qp6g63E/8AKx6wsTVHQH0AAAAASUVORK5CYII=;" vertex="1" parent="n.r-tier">
          <mxGeometry x="19" y="15" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="_st8" value="Home" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=1;fontColor=#8a97a5;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="700" y="60" width="170" height="20" as="geometry" />
        </mxCell>
        <mxCell id="n.r-coord" value="&lt;b&gt;Coord tier&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;leader election&lt;/font&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="700" y="100" width="170" height="90" as="geometry" />
        </mxCell>
        <mxCell id="_ico9" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAACpUlEQVRoge3YTYhNYRzH8Y+3iLzkbZoSdhJZkI1YUWzYWbCxJCU1ZShlpVhQKIoFG28pKxaKDUnyUtTQZJCExZSJEYMMFs+cXMe5955z7jn3jppf/evWfc7/+f6e5/+8nMOIWqsxJeWdhA3YhMUYQG9JfRWqZTiJfvyKxRPsxuyW0VXRHAGsx7/QSfED17ER41rACyYMAVwZAkoDnhTvhRlb2izwWiXSaJRWYvOxDy9yQOWZnW+4jPUaKLFGS+QBdmIGFuGgsAuVXmLTcUS+EnmDA1hQJff4oUG5mnNQ7mNdLfjJeJQx6QDOY61sZ0o7dqErY38/saVa0r0ZEt3BVkzLAF1Ny3EcfSn77sOUpEQ36zz4FkexpADoJI0XFu4lfK/DsjopwdOEhgO4INReWdeOJEUl9iSB6Rc2Rw1H10n0CS/RjcEySKuoF8/wOstDSTMQxaA/x//YIkljahcOs1c1WP6agbQG4mvhIOYWBD0aa6Sr/UIMRFF5KcuzPqYJh93zjP0WZqAyeoSpn5UCPLpPfWmgv8INRPEV57Aqljsa7ax9DDbbQGV0oQOn8Tnjs++wHwtbaSBP3Pb3i87EegbK3BLT6oOwAx0TDq5MaqWBhziFs8KCzqVmG+jHRZzA4yISNtPAGewQFnRhqncXKlLdCoanuQZK0YiBVuu/NzAcDrJqasOeeo0qDXwsjyWT2tCJbcJVIkkfoh+VJXSrRKg0asNh4RW2Q3X4r7iX9Mds4R20rItaZx3wtDfWvbVGYR6uNclAVvA+bMeoWgYirRC+i5ZhYKbwTp0WvH+ofa6PaCtxoyADh2Qf8X2Ymgc8rjJmpJQRb6WRUsHLNNJU8LgaMdJS8LiyGBlW4HHVMjKsweNaKXyW78Zd4atdIdvhiEZUsH4D+zfN9JHFLwAAAAAASUVORK5CYII=;" vertex="1" parent="n.r-coord">
          <mxGeometry x="9" y="33" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.r-map" value="&lt;b&gt;Shard map&lt;/b&gt;&lt;br&gt;&lt;font style=&quot;font-size:10px;color:#5b6b7d&quot;&gt;rendezvous hash&lt;/font&gt;" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#1a2b45;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="700" y="210" width="170" height="90" as="geometry" />
        </mxCell>
        <mxCell id="_ico10" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAACEElEQVRoge3Zz4uNURzH8ZfxIxc3pIQasbMxKUSKsGNjY2thY+EP8CfIUhT/gAUl5T9QQ1YW1sIsKLpCDCPGjMVzr/vM7Z77/Jgz8xidd506vz7ne77Pc358n3tJJBKJJlkVcazDOIE1Bf0+4B6mI9peNOfwG/Ml0zPFji4r95WffC8diGF4LMYg2FhD045hOJYDjZEcaJrkQNPEcuBTDc3HSLajcEx2s5a9Ax6KFAXEDCV24gjWdss3sKObv4VH3fx7PMZcRNtLwgv9J35xqYykTdw0RRHhOA7qr+sqbMrlD6kXPndk+2W2htZ5zKgeZcZOT9Gq48Dbf2DyvXQ5NMnQEmpjV678Bj9Lu54xrr/0OvhaUb9dfxnuq6i12cInMFF1AIs/Ru/m9DdDnVb8KbTiHQiFEmPYkys3vQe+yH7N+P/Iv4EWrlgYkOWZw3NcxefAWJdwFhsC9qZwDS8D7WdkG35roL2D25gc1nhduTP5QWDwCyX1r7B6iH5CduMW6b9jd0+U38SnAhMb5HSgvqx+bzcNctxwxwZp4WivkHegbLwT6lclXhrWd10F/d++K/4YTQ40TXIgIvN1RHkHpkpqXgfqy+p/yUKTuvrgHPbLbshRl8g7nAwMug1PCvTfZLf1MMZwx+g/SmYNhNbDgrktgXqyEKLoVbeFP5SmZW9gFC2sD7TN4EeBPpFIJJaRP2xp4nrYOuKUAAAAAElFTkSuQmCC;" vertex="1" parent="n.r-map">
          <mxGeometry x="9" y="33" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="_st11" value="Commit" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontStyle=1;fontColor=#8a97a5;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="920" y="60" width="200" height="20" as="geometry" />
        </mxCell>
        <mxCell id="n.r-ecoord" value="&lt;b&gt;Lock log · coord&lt;/b&gt;" style="shape=cylinder3;boundedLbl=1;backgroundOutline=1;size=11;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#1e3a1e;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="920" y="90" width="200" height="50" as="geometry" />
        </mxCell>
        <mxCell id="_ico12" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAB9ElEQVRoge3YvY9MURjH8Q8hhMR62YKIAoleIUS8lBIv0UhEolJS+Q/0uo1oKLQUOlsQ3SZIJBIFEhReG5FBkJVdRnHmrmP23N2bDffMcL7Jk9x5Zs69z++ec555zkOh8H+zKOFbi9VtB9KAH3iF73U/GME4ugNsH3CiTsDYAATYxCaxqQp6cSRgT52yAWMZdlYfYgHL249FB2dwFLcj/xUcwjlMJcYlY32k/eVwKnr+SrzHXb8nl9TSPll9Gc9ADp5F11/wFs+FICueNr1Zjhm4hqW95x8QUmQH23q+ETxIjJuZgdwCunghLJvpyPcVE3hXMyYp4FYmAQuxfSkBh4UpzB3cfHYPS6qg+0uJvcI/3WhKYWam8RAX8DlzLIUZ+pfQbhzHhgyxzMeUkFIvCllqFgcNxya+I9rEMcOURvdXQcelxMaUqhZ4g/vCgaViUkiXnZoxyXI6B9exGTtwRBDxEduxC1uF1FlLbgFjfpXL43iMG3jS83Vwea4b5BawJbpegfV9PsIs1JLczS1yXqhGX+Is1vXsEq4KJ6/TTW+WKlsH1Y5VQcdLaKKp0sx8EzLULNbgpvxvdy77pO8skGpsjWJV4/fRHl28lj7kDy+ltdiyldbiIFBai3/SSmsxprQWF2iltVhRWot/mdJaLBT+RX4CFqUhUb2gGVAAAAAASUVORK5CYII=;" vertex="1" parent="n.r-ecoord">
          <mxGeometry x="12" y="21" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.r-e1" value="&lt;b&gt;Lock log · entity-01&lt;/b&gt;" style="shape=cylinder3;boundedLbl=1;backgroundOutline=1;size=11;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#1e3a1e;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="920" y="170" width="200" height="50" as="geometry" />
        </mxCell>
        <mxCell id="_ico13" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAB9ElEQVRoge3YvY9MURjH8Q8hhMR62YKIAoleIUS8lBIv0UhEolJS+Q/0uo1oKLQUOlsQ3SZIJBIFEhReG5FBkJVdRnHmrmP23N2bDffMcL7Jk9x5Zs69z++ec555zkOh8H+zKOFbi9VtB9KAH3iF73U/GME4ugNsH3CiTsDYAATYxCaxqQp6cSRgT52yAWMZdlYfYgHL249FB2dwFLcj/xUcwjlMJcYlY32k/eVwKnr+SrzHXb8nl9TSPll9Gc9ADp5F11/wFs+FICueNr1Zjhm4hqW95x8QUmQH23q+ETxIjJuZgdwCunghLJvpyPcVE3hXMyYp4FYmAQuxfSkBh4UpzB3cfHYPS6qg+0uJvcI/3WhKYWam8RAX8DlzLIUZ+pfQbhzHhgyxzMeUkFIvCllqFgcNxya+I9rEMcOURvdXQcelxMaUqhZ4g/vCgaViUkiXnZoxyXI6B9exGTtwRBDxEduxC1uF1FlLbgFjfpXL43iMG3jS83Vwea4b5BawJbpegfV9PsIs1JLczS1yXqhGX+Is1vXsEq4KJ6/TTW+WKlsH1Y5VQcdLaKKp0sx8EzLULNbgpvxvdy77pO8skGpsjWJV4/fRHl28lj7kDy+ltdiyldbiIFBai3/SSmsxprQWF2iltVhRWot/mdJaLBT+RX4CFqUhUb2gGVAAAAAASUVORK5CYII=;" vertex="1" parent="n.r-e1">
          <mxGeometry x="12" y="21" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="n.r-e2" value="&lt;b&gt;Lock log · entity-02&lt;/b&gt;" style="shape=cylinder3;boundedLbl=1;backgroundOutline=1;size=11;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#1e3a1e;fontSize=12;fontFamily=Segoe UI;verticalAlign=middle;align=center;spacingLeft=38;" vertex="1" parent="1">
          <mxGeometry x="920" y="250" width="200" height="50" as="geometry" />
        </mxCell>
        <mxCell id="_ico14" value="" style="shape=image;html=1;imageAspect=1;aspect=fixed;movable=0;resizable=0;rotatable=0;connectable=0;editable=0;deletable=0;noLabel=1;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAB9ElEQVRoge3YvY9MURjH8Q8hhMR62YKIAoleIUS8lBIv0UhEolJS+Q/0uo1oKLQUOlsQ3SZIJBIFEhReG5FBkJVdRnHmrmP23N2bDffMcL7Jk9x5Zs69z++ec555zkOh8H+zKOFbi9VtB9KAH3iF73U/GME4ugNsH3CiTsDYAATYxCaxqQp6cSRgT52yAWMZdlYfYgHL249FB2dwFLcj/xUcwjlMJcYlY32k/eVwKnr+SrzHXb8nl9TSPll9Gc9ADp5F11/wFs+FICueNr1Zjhm4hqW95x8QUmQH23q+ETxIjJuZgdwCunghLJvpyPcVE3hXMyYp4FYmAQuxfSkBh4UpzB3cfHYPS6qg+0uJvcI/3WhKYWam8RAX8DlzLIUZ+pfQbhzHhgyxzMeUkFIvCllqFgcNxya+I9rEMcOURvdXQcelxMaUqhZ4g/vCgaViUkiXnZoxyXI6B9exGTtwRBDxEduxC1uF1FlLbgFjfpXL43iMG3jS83Vwea4b5BawJbpegfV9PsIs1JLczS1yXqhGX+Is1vXsEq4KJ6/TTW+WKlsH1Y5VQcdLaKKp0sx8EzLULNbgpvxvdy77pO8skGpsjWJV4/fRHl28lj7kDy+ltdiyldbiIFBai3/SSmsxprQWF2iltVhRWot/mdJaLBT+RX4CFqUhUb2gGVAAAAAASUVORK5CYII=;" vertex="1" parent="n.r-e2">
          <mxGeometry x="12" y="21" width="24" height="24" as="geometry" />
        </mxCell>
        <mxCell id="_e15" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;jettySize=auto;orthogonalLoop=1;endArrow=block;endFill=1;strokeColor=#5a6570;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;verticalAlign=bottom;fontFamily=Segoe UI;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.r-key" target="n.r-cls">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_e16" value="unmatched" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;jettySize=auto;orthogonalLoop=1;dashed=1;endArrow=block;endFill=1;strokeColor=#b85450;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;verticalAlign=bottom;fontFamily=Segoe UI;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.r-cls" target="n.r-deny">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_e17" value="class" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;jettySize=auto;orthogonalLoop=1;endArrow=block;endFill=1;strokeColor=#5a6570;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;verticalAlign=bottom;fontFamily=Segoe UI;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.r-cls" target="n.r-tier">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_e18" value="coarse" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;jettySize=auto;orthogonalLoop=1;endArrow=block;endFill=1;strokeColor=#5a6570;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;verticalAlign=bottom;fontFamily=Segoe UI;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.r-tier" target="n.r-coord">
          <mxGeometry relative="1" as="geometry">
            <Array as="points">
              <mxPoint x="580" y="60" />
              <mxPoint x="790" y="60" />
            </Array>
          </mxGeometry>
        </mxCell>
        <mxCell id="_e19" value="entity" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;jettySize=auto;orthogonalLoop=1;endArrow=block;endFill=1;strokeColor=#5a6570;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;verticalAlign=bottom;fontFamily=Segoe UI;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.r-tier" target="n.r-map">
          <mxGeometry relative="1" x="-0.6" as="geometry" />
        </mxCell>
        <mxCell id="_e20" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;jettySize=auto;orthogonalLoop=1;endArrow=block;endFill=1;strokeColor=#5a6570;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;verticalAlign=bottom;fontFamily=Segoe UI;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.r-coord" target="n.r-ecoord">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_e21" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;jettySize=auto;orthogonalLoop=1;endArrow=block;endFill=1;strokeColor=#5a6570;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;verticalAlign=bottom;fontFamily=Segoe UI;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.r-map" target="n.r-e1">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="_e22" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;jettySize=auto;orthogonalLoop=1;endArrow=block;endFill=1;strokeColor=#5a6570;strokeWidth=1.4;fontSize=10;fontColor=#42536a;labelBackgroundColor=#ffffff;verticalAlign=bottom;fontFamily=Segoe UI;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="n.r-map" target="n.r-e2">
          <mxGeometry relative="1" as="geometry" />
        </mxCell>
        <mxCell id="title" value="How a Key Finds Its Class and Its Cluster" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=20;fontStyle=1;fontColor=#16202c;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="20" width="1070" height="30" as="geometry" />
        </mxCell>
        <mxCell id="rule" value="" style="line;strokeWidth=1;html=1;strokeColor=#c9d3de;" vertex="1" parent="1">
          <mxGeometry x="40" y="50" width="1070" height="10" as="geometry" />
        </mxCell>
        <mxCell id="_lg23" value="" style="rounded=1;arcSize=30;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="1">
          <mxGeometry x="40" y="390" width="20" height="10" as="geometry" />
        </mxCell>
        <mxCell id="_lg24" value="Application we own" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#7b8794;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="70" y="380" width="110" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_lg25" value="" style="rounded=1;arcSize=30;html=1;fillColor=#e1d5e7;strokeColor=#9673a6;" vertex="1" parent="1">
          <mxGeometry x="200" y="390" width="20" height="10" as="geometry" />
        </mxCell>
        <mxCell id="_lg26" value="Security / platform" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#7b8794;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="230" y="380" width="110" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_lg27" value="" style="rounded=1;arcSize=30;html=1;fillColor=#f8cecc;strokeColor=#b85450;" vertex="1" parent="1">
          <mxGeometry x="370" y="390" width="20" height="10" as="geometry" />
        </mxCell>
        <mxCell id="_lg28" value="Risk / gap" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#7b8794;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="400" y="380" width="70" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_lg29" value="" style="rounded=1;arcSize=30;html=1;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
          <mxGeometry x="480" y="390" width="20" height="10" as="geometry" />
        </mxCell>
        <mxCell id="_lg30" value="Decision point" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#7b8794;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="510" y="380" width="90" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_lg31" value="" style="rounded=1;arcSize=30;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
          <mxGeometry x="620" y="390" width="20" height="10" as="geometry" />
        </mxCell>
        <mxCell id="_lg32" value="Data store" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#7b8794;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="650" y="380" width="70" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_lg33" value="" style="html=1;endArrow=none;strokeColor=#5a6570;strokeWidth=1.4;" edge="1" parent="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="730" y="390" as="sourcePoint" />
            <mxPoint x="760" y="390" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="_lg34" value="synchronous" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#7b8794;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="760" y="380" width="70" height="20" as="geometry" />
        </mxCell>
        <mxCell id="_lg35" value="" style="html=1;endArrow=none;dashed=1;strokeColor=#b85450;strokeWidth=1.4;" edge="1" parent="1">
          <mxGeometry relative="1" as="geometry">
            <mxPoint x="860" y="390" as="sourcePoint" />
            <mxPoint x="880" y="390" as="targetPoint" />
          </mxGeometry>
        </mxCell>
        <mxCell id="_lg36" value="failure / alternate" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#7b8794;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="880" y="380" width="110" height="20" as="geometry" />
        </mxCell>
        <mxCell id="note" value="The class decides the tier. A caller never names a cluster, so a caller cannot get routing wrong." style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=10;fontColor=#8a97a5;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="430" width="1070" height="20" as="geometry" />
        </mxCell>
        <mxCell id="foot-rule" value="" style="line;strokeWidth=1;html=1;strokeColor=#e3e9ef;" vertex="1" parent="1">
          <mxGeometry x="40" y="460" width="1070" height="10" as="geometry" />
        </mxCell>
        <mxCell id="foot" value="v 1.0   ·   owner Platform Architecture   ·   date 2026-09" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;fontSize=9;fontColor=#9aa7b4;fontFamily=Segoe UI;" vertex="1" parent="1">
          <mxGeometry x="40" y="470" width="1070" height="10" as="geometry" />
        </mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
