<mxfile host="archify-gcp" agent="archify-gcp" version="1">
  <diagram name="Enterprise product catalog search on Google Cloud" id="l_vlzviUet3zIQsY3ds1">
    <mxGraphModel dx="1563" dy="812" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1563" pageHeight="812" math="0" shadow="0">
      <root>
        <mxCell id="0"/>
        <mxCell id="1" parent="0"/>
<mxCell id="title" value="Enterprise product catalog search on Google Cloud" style="text;html=1;align=left;verticalAlign=top;fontSize=20;fontStyle=1;fontColor=#000000;whiteSpace=wrap;" vertex="1" parent="1"><mxGeometry x="40" y="24" width="1483" height="30" as="geometry"/></mxCell>
<mxCell id="subtitle" value="Hybrid keyword + vector search with Vertex AI, a Cloud Run search API, and a Pub/Sub + Dataflow pipeline that keeps the index fresh" style="text;html=1;align=left;verticalAlign=top;fontSize=12;fontColor=#545B64;whiteSpace=wrap;" vertex="1" parent="1"><mxGeometry x="40" y="56" width="1483" height="24" as="geometry"/></mxCell>
<mxCell id="g-cloud" value="Google Cloud" style="whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;pointerEvents=0;fontSize=12;verticalAlign=top;align=left;spacingTop=2;rounded=0;strokeColor=#3C4043;fontColor=#3C4043;fillColor=none;dashed=0;spacingLeft=10;" vertex="1" parent="1"><mxGeometry x="221" y="116" width="1302" height="656" as="geometry"/></mxCell>
<mxCell id="g-project" value="Project: catalog-prod" style="whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;pointerEvents=0;fontSize=12;verticalAlign=top;align=left;spacingTop=2;rounded=0;strokeColor=#4285F4;fontColor=#4285F4;fillColor=none;dashed=0;spacingLeft=40;" vertex="1" parent="g-cloud"><mxGeometry x="190" y="48" width="1088" height="584" as="geometry"/></mxCell>
<mxCell id="gi-project" value="" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;fontColor=#232F3E;image=data:image/svg+xml,PHN2ZyB2ZXJzaW9uPSIxLjEiIGJhc2VQcm9maWxlPSJ0aW55IiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIKCSB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjI0cHgiIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiBvdmVyZmxvdz0idmlzaWJsZSIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnID4KCTxyZWN0IHk9IjAiIGZpbGw9Im5vbmUiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIvPgoJPHBvbHlnb24gZmlsbC1ydWxlPSJldmVub2RkIiBmaWxsPSIjODVBNEU2IiBwb2ludHM9IjAuOCw1LjkgMy43LDAuOCA5LjUsMC44IDEyLjQsNS45IDkuNSwxMC45IDMuNywxMC45IAkiLz4KCTxwb2x5Z29uIGZpbGwtcnVsZT0iZXZlbm9kZCIgZmlsbD0iIzVDODVERSIgcG9pbnRzPSIxMS40LDcuNyA4LjUsMi42IDkuNSwwLjcgMTIuNCw1LjkgCSIvPgoJPHBvbHlnb24gaWQ9IlNoYXBlLUNvcHlfMDAwMDAwMTk2NDYzODM1MjkwNTUzMTAzMzAwMDAwMDk5MTM0MTUwMTE5NjQ5MjUzMjNfIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiMzMzY3RDYiIHBvaW50cz0iCgkJMi43LDkuMyA4LjUsOS4zIDEwLjUsNS45IDExLjQsNy43IDkuNSwxMC45IDMuNywxMSAJIi8+Cgk8cG9seWdvbiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiM4NUE0RTYiIHBvaW50cz0iMTEuMiwxMS45IDE0LjIsNi44IDIwLDYuOCAyMi45LDExLjkgMjAsMTYuOSAxNC4yLDE2LjkgCSIvPgoJPHBvbHlnb24gaWQ9IlNoYXBlLUNvcHlfMDAwMDAxMzM1Mjc5NTg0ODMwNjQzOTA0MTAwMDAwMTIzNzc0MTUzNzU0Mjg5NDc5MDBfIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiM1Qzg1REUiIHBvaW50cz0iCgkJMjEuOSwxMy43IDE5LDguNiAyMCw2LjcgMjIuOSwxMS45IAkiLz4KCTxwb2x5Z29uIGlkPSJTaGFwZS1Db3B5XzAwMDAwMTc2MDE5NDcxNjI0MzE2NzQ1OTYwMDAwMDAxMjQ4MTM3NTgwMTkwMjA3MTI4XyIgZmlsbC1ydWxlPSJldmVub2RkIiBmaWxsPSIjMzM2N0Q2IiBwb2ludHM9IgoJCTEzLjIsMTUuMyAxOSwxNS4zIDIxLDExLjkgMjEuOSwxMy43IDIwLDE2LjkgMTQuMiwxNyAJIi8+Cgk8cG9seWdvbiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiM4NUE0RTYiIHBvaW50cz0iMC44LDE3LjkgMy43LDEyLjggOS41LDEyLjggMTIuNCwxNy45IDkuNSwyMi45IDMuNywyMi45IAkiLz4KCTxwb2x5Z29uIGlkPSJTaGFwZS1Db3B5XzAwMDAwMDk2MDQxNzc5NzQ1MjAxMzk5MzYwMDAwMDE3MTY3OTY0Nzk3MzczMTAyNDg1XyIgZmlsbC1ydWxlPSJldmVub2RkIiBmaWxsPSIjNUM4NURFIiBwb2ludHM9IgoJCTExLjQsMTkuNyA4LjUsMTQuNiA5LjUsMTIuNyAxMi40LDE3LjkgCSIvPgoJPHBvbHlnb24gaWQ9IlNoYXBlLUNvcHlfMDAwMDAwNDkyMDQxODg0ODg3NDI5NTA4MjAwMDAwMTA0NDQzMjEyMDE1MTIxNDMwMjVfIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiMzMzY3RDYiIHBvaW50cz0iCgkJMi43LDIxLjMgOC41LDIxLjMgMTAuNSwxNy45IDExLjQsMTkuNyA5LjUsMjIuOSAzLjcsMjMgCSIvPgo8L2c+Cjwvc3ZnPgo=;imageAspect=1;" vertex="1" parent="g-project"><mxGeometry x="4" y="4" width="32" height="32" as="geometry"/></mxCell>
<mxCell id="g-region" value="Region us-central1" style="whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;pointerEvents=0;fontSize=12;verticalAlign=top;align=left;spacingTop=2;rounded=0;strokeColor=#4285F4;fontColor=#4285F4;fillColor=none;dashed=1;dashPattern=2 3;spacingLeft=10;" vertex="1" parent="g-project"><mxGeometry x="24" y="48" width="688" height="512" as="geometry"/></mxCell>
<mxCell id="g-retr" value="Retrieval and ranking" style="whiteSpace=wrap;html=1;container=1;collapsible=0;recursiveResize=0;pointerEvents=0;fontSize=12;verticalAlign=top;align=left;spacingTop=2;rounded=0;strokeColor=#0078D4;fontColor=#0078D4;fillColor=none;dashed=0;spacingLeft=40;" vertex="1" parent="g-region"><mxGeometry x="200" y="84" width="242" height="344" as="geometry"/></mxCell>
<mxCell id="gi-retr" value="" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;fontColor=#232F3E;image=data:image/svg+xml,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0ic3RhbmRhcmRfcHJvZHVjdF9pY29uIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiAyLjEuMCBCdWlsZCAxNDIpICAtLT4KICA8ZyBpZD0iYm91bmRpbmdfYm94Ij4KICAgIDxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJub25lIi8+CiAgPC9nPgogIDxnIGlkPSJhcnQiPgogICAgPHBhdGggZD0iTTEyOCwyNDQuOTljLTguODQsMC0xNi03LjE2LTE2LTE2di05NS45N2MwLTguODQsNy4xNi0xNiwxNi0xNnMxNiw3LjE2LDE2LDE2djk1Ljk3YzAsOC44NC03LjE2LDE2LTE2LDE2WiIgZmlsbD0iI2VhNDMzNSIvPgogICAgPHBhdGggZD0iTTI1Niw0NThjLTIuOTgsMC01Ljk3LS44My04LjU5LTIuNWwtMTg2LTEyMmMtNy40Ni00Ljc0LTkuNjUtMTQuNjMtNC45MS0yMi4wOSw0Ljc1LTcuNDYsMTQuNjQtOS42NSwyMi4wOS00LjkxbDE3Ny40MSwxMTYuNTMsMTc3LjQxLTExNi41M2M3LjQ1LTQuNzQsMTcuMzQtMi41NSwyMi4wOSw0LjkxLDQuNzQsNy40NiwyLjU1LDE3LjM0LTQuOTEsMjIuMDlsLTE4NiwxMjJjLTIuNjIsMS42Ny01LjYxLDIuNS04LjU5LDIuNVoiIGZpbGw9IiNmYmJjMDQiLz4KICAgIDxwYXRoIGQ9Ik0yNTYsMzg4LjAzYy04Ljg0LDAtMTYtNy4xNi0xNi0xNnYtNzMuMDZjMC04Ljg0LDcuMTYtMTYsMTYtMTZzMTYsNy4xNiwxNiwxNnY3My4wNmMwLDguODQtNy4xNiwxNi0xNiwxNloiIGZpbGw9IiMzNGE4NTMiLz4KICAgIDxjaXJjbGUgY3g9IjEyOCIgY3k9IjcwIiByPSIxNiIgZmlsbD0iI2VhNDMzNSIvPgogICAgPGNpcmNsZSBjeD0iMTI4IiBjeT0iMjkyIiByPSIxNiIgZmlsbD0iI2VhNDMzNSIvPgogICAgPHBhdGggZD0iTTM4NC4yMywzMDguMDFjLTguODIsMC0xNS45OC03LjE0LTE2LTE1Ljk3bC0uMjMtOTQuMDFjLS4wMi04Ljg0LDcuMTMtMTYuMDIsMTUuOTctMTYuMDNoLjA0YzguODIsMCwxNS45OCw3LjE0LDE2LDE1Ljk3bC4yMyw5NC4wMWMuMDIsOC44NC03LjEzLDE2LjAyLTE1Ljk3LDE2LjAzaC0uMDRaIiBmaWxsPSIjNDI4NWY0Ii8+CiAgICA8Y2lyY2xlIGN4PSIzODQiIGN5PSI3MCIgcj0iMTYiIGZpbGw9IiM0Mjg1ZjQiLz4KICAgIDxjaXJjbGUgY3g9IjM4NCIgY3k9IjEzNCIgcj0iMTYiIGZpbGw9IiM0Mjg1ZjQiLz4KICAgIDxwYXRoIGQ9Ik0zMjAsMjIwLjM2Yy04Ljg0LDAtMTYtNy4xNi0xNi0xNnYtMTAzLjAyYzAtOC44NCw3LjE2LTE2LDE2LTE2czE2LDcuMTYsMTYsMTZ2MTAzLjAyYzAsOC44NC03LjE2LDE2LTE2LDE2WiIgZmlsbD0iI2ZiYmMwNCIvPgogICAgPGNpcmNsZSBjeD0iMjU2IiBjeT0iMTcxIiByPSIxNiIgZmlsbD0iIzM0YTg1MyIvPgogICAgPGNpcmNsZSBjeD0iMjU2IiBjeT0iMjM1IiByPSIxNiIgZmlsbD0iIzM0YTg1MyIvPgogICAgPGNpcmNsZSBjeD0iMzIwIiBjeT0iMjY1IiByPSIxNiIgZmlsbD0iI2ZiYmMwNCIvPgogICAgPGNpcmNsZSBjeD0iMzIwIiBjeT0iMzI5IiByPSIxNiIgZmlsbD0iI2ZiYmMwNCIvPgogICAgPHBhdGggZD0iTTE5MiwyMTcuMzZjLTguODQsMC0xNi03LjE2LTE2LTE2di0xMDAuMDJjMC04Ljg0LDcuMTYtMTYsMTYtMTZzMTYsNy4xNiwxNiwxNnYxMDAuMDJjMCw4Ljg0LTcuMTYsMTYtMTYsMTZaIiBmaWxsPSIjZmJiYzA0Ii8+CiAgICA8Y2lyY2xlIGN4PSIxOTIiIGN5PSIyNjUiIHI9IjE2IiBmaWxsPSIjZmJiYzA0Ii8+CiAgICA8Y2lyY2xlIGN4PSIxOTIiIGN5PSIzMjkiIHI9IjE2IiBmaWxsPSIjZmJiYzA0Ii8+CiAgPC9nPgo8L3N2Zz4=;imageAspect=1;" vertex="1" parent="g-retr"><mxGeometry x="4" y="4" width="32" height="32" as="geometry"/></mxCell>
<mxCell id="n-shoppers" value="Shoppers&lt;br&gt;&lt;font style=&quot;font-size:10px&quot; color=&quot;#545B64&quot;&gt;web and app&lt;/font&gt;" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;fontColor=#232F3E;verticalLabelPosition=bottom;verticalAlign=top;image=data:image/svg+xml,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCIgdmlld0JveD0iMCAwIDI0IDI0Ij48Y2lyY2xlIGN4PSI5IiBjeT0iOCIgcj0iMy40IiBmaWxsPSIjNDI4NUY0Ii8+PHBhdGggZD0iTTIuNSAxOS41YzAtMy42IDIuOS02IDYuNS02czYuNSAyLjQgNi41IDZ6IiBmaWxsPSIjNDI4NUY0Ii8+PGNpcmNsZSBjeD0iMTciIGN5PSI5IiByPSIyLjgiIGZpbGw9IiM4QUI0RjgiLz48cGF0aCBkPSJNMTYgMTMuOGMzIC4xIDUuNSAyIDUuNSA1LjdIMTdjMC0yLS40LTMuOC0xLTUuN3oiIGZpbGw9IiM4QUI0RjgiLz48L3N2Zz4K;imageAspect=1;" vertex="1" parent="1"><mxGeometry x="58.5" y="340" width="64" height="64" as="geometry"/></mxCell>
<mxCell id="n-merch" value="Merchandisers&lt;br&gt;&lt;font style=&quot;font-size:10px&quot; color=&quot;#545B64&quot;&gt;synonyms, boosts&lt;/font&gt;" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;fontColor=#232F3E;verticalLabelPosition=bottom;verticalAlign=top;image=data:image/svg+xml,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCIgdmlld0JveD0iMCAwIDI0IDI0Ij48Y2lyY2xlIGN4PSI5IiBjeT0iOCIgcj0iMy40IiBmaWxsPSIjNDI4NUY0Ii8+PHBhdGggZD0iTTIuNSAxOS41YzAtMy42IDIuOS02IDYuNS02czYuNSAyLjQgNi41IDZ6IiBmaWxsPSIjNDI4NUY0Ii8+PGNpcmNsZSBjeD0iMTciIGN5PSI5IiByPSIyLjgiIGZpbGw9IiM4QUI0RjgiLz48cGF0aCBkPSJNMTYgMTMuOGMzIC4xIDUuNSAyIDUuNSA1LjdIMTdjMC0yLS40LTMuOC0xLTUuN3oiIGZpbGw9IiM4QUI0RjgiLz48L3N2Zz4K;imageAspect=1;" vertex="1" parent="1"><mxGeometry x="58.5" y="508" width="64" height="64" as="geometry"/></mxCell>
<mxCell id="n-armor" value="Cloud Armor" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;fontColor=#232F3E;verticalLabelPosition=bottom;verticalAlign=top;image=data:image/svg+xml,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNhZWNiZmE7fS5jbHMtMntmaWxsOiM2NjlkZjY7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5JY29uXzI0cHhfQ2xvdWRBcm1vcl9Db2xvcjwvdGl0bGU+PGcgZGF0YS1uYW1lPSJQcm9kdWN0IEljb25zIj48cG9seWdvbiBjbGFzcz0iY2xzLTEiIHBvaW50cz0iOS43NiAyMC42IDguNzIgMTkuNTUgMTQuMTcgMTQuMDcgMTUuMjEgMTUuMTIgOS43NiAyMC42Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0xIiBwb2ludHM9IjcuMDMgMTguMzIgNS45OSAxNy4yNyAxMy4zNCA5Ljg4IDE0LjM4IDEwLjkzIDcuMDMgMTguMzIiLz48cG9seWdvbiBjbGFzcz0iY2xzLTEiIHBvaW50cz0iNS4zNCAxNC45OCA0LjMgMTMuOTMgOS4xOCA5LjAzIDEwLjIyIDEwLjA4IDUuMzQgMTQuOTgiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xMiwzLjYxbDYuNzgsM3Y0LjU1QTkuNzEsOS43MSwwLDAsMSwxMiwyMC40OGE5LjcsOS43LDAsMCwxLTYuNzgtOS4zMVY2LjYzbDYuNzgtM00xMiwyLDMuNzUsNS42OHY1LjQ5QTExLjE3LDExLjE3LDAsMCwwLDExLjg1LDIyTDEyLDIybC4xNSwwYTExLjE3LDExLjE3LDAsMCwwLDguMS0xMC43OFY1LjY4TDEyLDJaIi8+PGNpcmNsZSBjbGFzcz0iY2xzLTIiIGN4PSIxNC42OSIgY3k9IjE0LjYyIiByPSIxLjQyIi8+PGNpcmNsZSBjbGFzcz0iY2xzLTIiIGN4PSIxMy44NSIgY3k9IjEwLjQ1IiByPSIxLjQyIi8+PGNpcmNsZSBjbGFzcz0iY2xzLTIiIGN4PSI5LjY5IiBjeT0iOS42IiByPSIxLjQyIi8+PC9nPjwvc3ZnPg==;imageAspect=1;" vertex="1" parent="1"><mxGeometry x="261" y="340" width="64" height="64" as="geometry"/></mxCell>
<mxCell id="n-lb" value="Load Balancer&lt;br&gt;&lt;font style=&quot;font-size:10px&quot; color=&quot;#545B64&quot;&gt;global external&lt;/font&gt;" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;fontColor=#232F3E;verticalLabelPosition=bottom;verticalAlign=top;image=data:image/svg+xml,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOm5vbmU7fS5jbHMtMntmaWxsOiM2NjlkZjY7fS5jbHMtM3tmaWxsOiM0Mjg1ZjQ7fS5jbHMtNHtmaWxsOiNhZWNiZmE7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5JY29uXzI0cHhfTG9hZEJhbGFuY2luZ19Db2xvcjwvdGl0bGU+PGcgZGF0YS1uYW1lPSJQcm9kdWN0IEljb25zIj48ZyBkYXRhLW5hbWU9ImNvbG9yZWQtMzIvbG9hZC1iYWxhbmNpbmciPjxyZWN0IGNsYXNzPSJjbHMtMSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+PGcgPjxyZWN0IGNsYXNzPSJjbHMtMiIgeD0iMTgiIHk9IjEyIiB3aWR0aD0iMiIgaGVpZ2h0PSI0Ii8+PHJlY3QgY2xhc3M9ImNscy0yIiB4PSIxMSIgeT0iMTIiIHdpZHRoPSIyIiBoZWlnaHQ9IjQiLz48cmVjdCBjbGFzcz0iY2xzLTIiIHg9IjQiIHk9IjEyIiB3aWR0aD0iMiIgaGVpZ2h0PSI0Ii8+PHBvbHlnb24gaWQ9IkZpbGwtMiIgY2xhc3M9ImNscy0zIiBwb2ludHM9IjEzIDExIDExIDExIDExIDcgMTMgNyAxMyAxMSIvPjxyZWN0IGNsYXNzPSJjbHMtMiIgeD0iNCIgeT0iMTEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIyIi8+PHJlY3QgY2xhc3M9ImNscy00IiB4PSI2IiB5PSIyIiB3aWR0aD0iMTIiIGhlaWdodD0iNSIvPjxyZWN0IGNsYXNzPSJjbHMtMiIgeD0iMTIiIHk9IjIiIHdpZHRoPSI2IiBoZWlnaHQ9IjUiLz48cmVjdCBjbGFzcz0iY2xzLTQiIHg9IjE2IiB5PSIxNiIgd2lkdGg9IjYiIGhlaWdodD0iNiIvPjxyZWN0IGNsYXNzPSJjbHMtNCIgeD0iMiIgeT0iMTYiIHdpZHRoPSI2IiBoZWlnaHQ9IjYiLz48cmVjdCBjbGFzcz0iY2xzLTIiIHg9IjUiIHk9IjE2IiB3aWR0aD0iMyIgaGVpZ2h0PSI2Ii8+PHJlY3QgY2xhc3M9ImNscy00IiB4PSI5IiB5PSIxNiIgd2lkdGg9IjYiIGhlaWdodD0iNiIvPjxyZWN0IGNsYXNzPSJjbHMtMiIgeD0iMTIiIHk9IjE2IiB3aWR0aD0iMyIgaGVpZ2h0PSI2Ii8+PHJlY3QgY2xhc3M9ImNscy0yIiB4PSIxOSIgeT0iMTYiIHdpZHRoPSIzIiBoZWlnaHQ9IjYiLz48L2c+PC9nPjwvZz48L3N2Zz4=;imageAspect=1;" vertex="1" parent="1"><mxGeometry x="261" y="508" width="64" height="64" as="geometry"/></mxCell>
<mxCell id="n-api" value="Search API&lt;br&gt;&lt;font style=&quot;font-size:10px&quot; color=&quot;#545B64&quot;&gt;Cloud Run&lt;/font&gt;" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;fontColor=#232F3E;verticalLabelPosition=bottom;verticalAlign=top;image=data:image/svg+xml,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0ic3RhbmRhcmRfcHJvZHVjdF9pY29uIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiAyLjEuMCBCdWlsZCAxNDIpICAtLT4KICA8ZGVmcz4KICAgIDxzdHlsZT4KICAgICAgLnN0MCB7CiAgICAgICAgZmlsbDogbm9uZTsKICAgICAgfQoKICAgICAgLnN0MSB7CiAgICAgICAgZmlsbDogIzQyODVmNDsKICAgICAgfQoKICAgICAgLnN0MiB7CiAgICAgICAgZmlsbDogIzM0YTg1MzsKICAgICAgfQoKICAgICAgLnN0MyB7CiAgICAgICAgZmlsbDogI2ZiYmMwNDsKICAgICAgfQoKICAgICAgLnN0NCB7CiAgICAgICAgZmlsbDogI2VhNDMzNTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L2RlZnM+CiAgPGcgaWQ9ImJvdW5kaW5nX2JveCI+CiAgICA8cmVjdCBjbGFzcz0ic3QwIiB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIvPgogIDwvZz4KICA8ZyBpZD0iYXJ0Ij4KICAgIDxwYXRoIGNsYXNzPSJzdDMiIGQ9Ik0xNDQuNCwyNzJjLTYuNCwwLTEyLjQtMy44LTE0LjktMTAuMUw1NS40LDc1LjljLTMuMy04LjIuNy0xNy41LDguOS0yMC44LDguMi0zLjMsMTcuNS43LDIwLjgsOC45bDc0LjIsMTg2YzMuMyw4LjItLjcsMTcuNS04LjksMjAuOC0xLjkuOC0zLjksMS4xLTUuOSwxLjFoLS4xWiIvPgogICAgPGcgaWQ9ImIiPgogICAgICA8cGF0aCBjbGFzcz0ic3Q0IiBkPSJNMjU2LDI3MmMtNi40LDAtMTIuNC0zLjgtMTQuOS0xMC4xbC03NC4xLTE4NmMtMi42LTYuNi0uNi0xNC4xLDUtMTguNXMxMy40LTQuNSwxOS4yLS40bDI2MC4xLDE4NmM3LjIsNS4xLDguOSwxNS4xLDMuNywyMi4zcy0xNS4xLDguOS0yMi4zLDMuN0wyMTYuOSwxMTQuN2w1NCwxMzUuM2MzLjMsOC4yLS43LDE3LjUtOC45LDIwLjgtMS45LjgtNCwxLjEtNS45LDEuMWgtLjFaIi8+CiAgICA8L2c+CiAgICA8cGF0aCBjbGFzcz0ic3QyIiBkPSJNMTI3LjIsMjU2bC03MiwxODBjLTMuMyw4LjIuNywxNy41LDguOSwyMC44LDMuMSwxLjIsNCwxLjEsNS45LDEuMSw2LjMsMCwxMi40LTMuOCwxNC45LTEwLjFsNzQuNC0xODZjLjgtMiwxLjEtNCwxLjEtNS45aC0zMy4yWiIvPgogICAgPHBhdGggY2xhc3M9InN0MSIgZD0iTTQxNC41LDI1NmwtMTk3LjcsMTQxLjIsNTQuMS0xMzUuM2MuOC0yLDEuMS00LDEuMS01LjloLTMzLjJsLTcyLDE4MGMtMi42LDYuNi0uNiwxNC4xLDUsMTguNSwyLjksMi4zLDYuNCwzLjQsOS45LDMuNHM2LjUtMSw5LjMtM2wyNjAuNC0xODZjNC40LTMuMSw2LjctOCw2LjctMTNoLTQzLjZaIi8+CiAgPC9nPgo8L3N2Zz4=;imageAspect=1;" vertex="1" parent="g-region"><mxGeometry x="40" y="212" width="64" height="64" as="geometry"/></mxCell>
<mxCell id="n-vs" value="Vector and keyword&lt;br&gt;search&lt;br&gt;&lt;font style=&quot;font-size:10px&quot; color=&quot;#545B64&quot;&gt;Vertex AI Search / Vector Search&lt;/font&gt;" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;fontColor=#232F3E;verticalLabelPosition=bottom;verticalAlign=top;image=data:image/svg+xml,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0ic3RhbmRhcmRfcHJvZHVjdF9pY29uIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiAyLjEuMCBCdWlsZCAxNDIpICAtLT4KICA8ZyBpZD0iYm91bmRpbmdfYm94Ij4KICAgIDxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJub25lIi8+CiAgPC9nPgogIDxnIGlkPSJhcnQiPgogICAgPHBhdGggZD0iTTEyOCwyNDQuOTljLTguODQsMC0xNi03LjE2LTE2LTE2di05NS45N2MwLTguODQsNy4xNi0xNiwxNi0xNnMxNiw3LjE2LDE2LDE2djk1Ljk3YzAsOC44NC03LjE2LDE2LTE2LDE2WiIgZmlsbD0iI2VhNDMzNSIvPgogICAgPHBhdGggZD0iTTI1Niw0NThjLTIuOTgsMC01Ljk3LS44My04LjU5LTIuNWwtMTg2LTEyMmMtNy40Ni00Ljc0LTkuNjUtMTQuNjMtNC45MS0yMi4wOSw0Ljc1LTcuNDYsMTQuNjQtOS42NSwyMi4wOS00LjkxbDE3Ny40MSwxMTYuNTMsMTc3LjQxLTExNi41M2M3LjQ1LTQuNzQsMTcuMzQtMi41NSwyMi4wOSw0LjkxLDQuNzQsNy40NiwyLjU1LDE3LjM0LTQuOTEsMjIuMDlsLTE4NiwxMjJjLTIuNjIsMS42Ny01LjYxLDIuNS04LjU5LDIuNVoiIGZpbGw9IiNmYmJjMDQiLz4KICAgIDxwYXRoIGQ9Ik0yNTYsMzg4LjAzYy04Ljg0LDAtMTYtNy4xNi0xNi0xNnYtNzMuMDZjMC04Ljg0LDcuMTYtMTYsMTYtMTZzMTYsNy4xNiwxNiwxNnY3My4wNmMwLDguODQtNy4xNiwxNi0xNiwxNloiIGZpbGw9IiMzNGE4NTMiLz4KICAgIDxjaXJjbGUgY3g9IjEyOCIgY3k9IjcwIiByPSIxNiIgZmlsbD0iI2VhNDMzNSIvPgogICAgPGNpcmNsZSBjeD0iMTI4IiBjeT0iMjkyIiByPSIxNiIgZmlsbD0iI2VhNDMzNSIvPgogICAgPHBhdGggZD0iTTM4NC4yMywzMDguMDFjLTguODIsMC0xNS45OC03LjE0LTE2LTE1Ljk3bC0uMjMtOTQuMDFjLS4wMi04Ljg0LDcuMTMtMTYuMDIsMTUuOTctMTYuMDNoLjA0YzguODIsMCwxNS45OCw3LjE0LDE2LDE1Ljk3bC4yMyw5NC4wMWMuMDIsOC44NC03LjEzLDE2LjAyLTE1Ljk3LDE2LjAzaC0uMDRaIiBmaWxsPSIjNDI4NWY0Ii8+CiAgICA8Y2lyY2xlIGN4PSIzODQiIGN5PSI3MCIgcj0iMTYiIGZpbGw9IiM0Mjg1ZjQiLz4KICAgIDxjaXJjbGUgY3g9IjM4NCIgY3k9IjEzNCIgcj0iMTYiIGZpbGw9IiM0Mjg1ZjQiLz4KICAgIDxwYXRoIGQ9Ik0zMjAsMjIwLjM2Yy04Ljg0LDAtMTYtNy4xNi0xNi0xNnYtMTAzLjAyYzAtOC44NCw3LjE2LTE2LDE2LTE2czE2LDcuMTYsMTYsMTZ2MTAzLjAyYzAsOC44NC03LjE2LDE2LTE2LDE2WiIgZmlsbD0iI2ZiYmMwNCIvPgogICAgPGNpcmNsZSBjeD0iMjU2IiBjeT0iMTcxIiByPSIxNiIgZmlsbD0iIzM0YTg1MyIvPgogICAgPGNpcmNsZSBjeD0iMjU2IiBjeT0iMjM1IiByPSIxNiIgZmlsbD0iIzM0YTg1MyIvPgogICAgPGNpcmNsZSBjeD0iMzIwIiBjeT0iMjY1IiByPSIxNiIgZmlsbD0iI2ZiYmMwNCIvPgogICAgPGNpcmNsZSBjeD0iMzIwIiBjeT0iMzI5IiByPSIxNiIgZmlsbD0iI2ZiYmMwNCIvPgogICAgPHBhdGggZD0iTTE5MiwyMTcuMzZjLTguODQsMC0xNi03LjE2LTE2LTE2di0xMDAuMDJjMC04Ljg0LDcuMTYtMTYsMTYtMTZzMTYsNy4xNiwxNiwxNnYxMDAuMDJjMCw4Ljg0LTcuMTYsMTYtMTYsMTZaIiBmaWxsPSIjZmJiYzA0Ii8+CiAgICA8Y2lyY2xlIGN4PSIxOTIiIGN5PSIyNjUiIHI9IjE2IiBmaWxsPSIjZmJiYzA0Ii8+CiAgICA8Y2lyY2xlIGN4PSIxOTIiIGN5PSIzMjkiIHI9IjE2IiBmaWxsPSIjZmJiYzA0Ii8+CiAgPC9nPgo8L3N2Zz4=;imageAspect=1;" vertex="1" parent="g-retr"><mxGeometry x="89" y="48" width="64" height="64" as="geometry"/></mxCell>
<mxCell id="n-emb" value="Embeddings&lt;br&gt;&lt;font style=&quot;font-size:10px&quot; color=&quot;#545B64&quot;&gt;text embedding model&lt;/font&gt;" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;fontColor=#232F3E;verticalLabelPosition=bottom;verticalAlign=top;image=data:image/svg+xml,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0ic3RhbmRhcmRfcHJvZHVjdF9pY29uIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiAyLjEuMCBCdWlsZCAxNDIpICAtLT4KICA8ZyBpZD0iYm91bmRpbmdfYm94Ij4KICAgIDxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJub25lIi8+CiAgPC9nPgogIDxnIGlkPSJhcnQiPgogICAgPHBhdGggZD0iTTEyOCwyNDQuOTljLTguODQsMC0xNi03LjE2LTE2LTE2di05NS45N2MwLTguODQsNy4xNi0xNiwxNi0xNnMxNiw3LjE2LDE2LDE2djk1Ljk3YzAsOC44NC03LjE2LDE2LTE2LDE2WiIgZmlsbD0iI2VhNDMzNSIvPgogICAgPHBhdGggZD0iTTI1Niw0NThjLTIuOTgsMC01Ljk3LS44My04LjU5LTIuNWwtMTg2LTEyMmMtNy40Ni00Ljc0LTkuNjUtMTQuNjMtNC45MS0yMi4wOSw0Ljc1LTcuNDYsMTQuNjQtOS42NSwyMi4wOS00LjkxbDE3Ny40MSwxMTYuNTMsMTc3LjQxLTExNi41M2M3LjQ1LTQuNzQsMTcuMzQtMi41NSwyMi4wOSw0LjkxLDQuNzQsNy40NiwyLjU1LDE3LjM0LTQuOTEsMjIuMDlsLTE4NiwxMjJjLTIuNjIsMS42Ny01LjYxLDIuNS04LjU5LDIuNVoiIGZpbGw9IiNmYmJjMDQiLz4KICAgIDxwYXRoIGQ9Ik0yNTYsMzg4LjAzYy04Ljg0LDAtMTYtNy4xNi0xNi0xNnYtNzMuMDZjMC04Ljg0LDcuMTYtMTYsMTYtMTZzMTYsNy4xNiwxNiwxNnY3My4wNmMwLDguODQtNy4xNiwxNi0xNiwxNloiIGZpbGw9IiMzNGE4NTMiLz4KICAgIDxjaXJjbGUgY3g9IjEyOCIgY3k9IjcwIiByPSIxNiIgZmlsbD0iI2VhNDMzNSIvPgogICAgPGNpcmNsZSBjeD0iMTI4IiBjeT0iMjkyIiByPSIxNiIgZmlsbD0iI2VhNDMzNSIvPgogICAgPHBhdGggZD0iTTM4NC4yMywzMDguMDFjLTguODIsMC0xNS45OC03LjE0LTE2LTE1Ljk3bC0uMjMtOTQuMDFjLS4wMi04Ljg0LDcuMTMtMTYuMDIsMTUuOTctMTYuMDNoLjA0YzguODIsMCwxNS45OCw3LjE0LDE2LDE1Ljk3bC4yMyw5NC4wMWMuMDIsOC44NC03LjEzLDE2LjAyLTE1Ljk3LDE2LjAzaC0uMDRaIiBmaWxsPSIjNDI4NWY0Ii8+CiAgICA8Y2lyY2xlIGN4PSIzODQiIGN5PSI3MCIgcj0iMTYiIGZpbGw9IiM0Mjg1ZjQiLz4KICAgIDxjaXJjbGUgY3g9IjM4NCIgY3k9IjEzNCIgcj0iMTYiIGZpbGw9IiM0Mjg1ZjQiLz4KICAgIDxwYXRoIGQ9Ik0zMjAsMjIwLjM2Yy04Ljg0LDAtMTYtNy4xNi0xNi0xNnYtMTAzLjAyYzAtOC44NCw3LjE2LTE2LDE2LTE2czE2LDcuMTYsMTYsMTZ2MTAzLjAyYzAsOC44NC03LjE2LDE2LTE2LDE2WiIgZmlsbD0iI2ZiYmMwNCIvPgogICAgPGNpcmNsZSBjeD0iMjU2IiBjeT0iMTcxIiByPSIxNiIgZmlsbD0iIzM0YTg1MyIvPgogICAgPGNpcmNsZSBjeD0iMjU2IiBjeT0iMjM1IiByPSIxNiIgZmlsbD0iIzM0YTg1MyIvPgogICAgPGNpcmNsZSBjeD0iMzIwIiBjeT0iMjY1IiByPSIxNiIgZmlsbD0iI2ZiYmMwNCIvPgogICAgPGNpcmNsZSBjeD0iMzIwIiBjeT0iMzI5IiByPSIxNiIgZmlsbD0iI2ZiYmMwNCIvPgogICAgPHBhdGggZD0iTTE5MiwyMTcuMzZjLTguODQsMC0xNi03LjE2LTE2LTE2di0xMDAuMDJjMC04Ljg0LDcuMTYtMTYsMTYtMTZzMTYsNy4xNiwxNiwxNnYxMDAuMDJjMCw4Ljg0LTcuMTYsMTYtMTYsMTZaIiBmaWxsPSIjZmJiYzA0Ii8+CiAgICA8Y2lyY2xlIGN4PSIxOTIiIGN5PSIyNjUiIHI9IjE2IiBmaWxsPSIjZmJiYzA0Ii8+CiAgICA8Y2lyY2xlIGN4PSIxOTIiIGN5PSIzMjkiIHI9IjE2IiBmaWxsPSIjZmJiYzA0Ii8+CiAgPC9nPgo8L3N2Zz4=;imageAspect=1;" vertex="1" parent="g-retr"><mxGeometry x="89" y="208" width="64" height="64" as="geometry"/></mxCell>
<mxCell id="n-topic" value="Pub/Sub&lt;br&gt;&lt;font style=&quot;font-size:10px&quot; color=&quot;#545B64&quot;&gt;catalog change events&lt;/font&gt;" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;fontColor=#232F3E;verticalLabelPosition=bottom;verticalAlign=top;image=data:image/svg+xml,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsdGVyOnVybCgjbHVtaW5vc2l0eS1ub2NsaXApO30uY2xzLTJ7ZmlsbDojNjY5ZGY2O30uY2xzLTN7bWFzazp1cmwoI21hc2spO30uY2xzLTR7ZmlsbDojNDI4NWY0O30uY2xzLTV7ZmlsbDojYWVjYmZhO308L3N0eWxlPjxmaWx0ZXIgaWQ9Imx1bWlub3NpdHktbm9jbGlwIiB4PSI0LjY0IiB5PSI0LjE5IiB3aWR0aD0iMTQuNzMiIGhlaWdodD0iMTIuNzYiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj48ZmVGbG9vZCBmbG9vZC1jb2xvcj0iI2ZmZiIgcmVzdWx0PSJiZyIvPjxmZUJsZW5kIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9ImJnIi8+PC9maWx0ZXI+PG1hc2sgaWQ9Im1hc2siIHg9IjQuNjQiIHk9IjQuMTkiIHdpZHRoPSIxNC43MyIgaGVpZ2h0PSIxMi43NiIgbWFza1VuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PGNpcmNsZSBjbGFzcz0iY2xzLTEiIGN4PSIxMiIgY3k9IjEyLjIzIiByPSIzLjU4Ii8+PC9tYXNrPjwvZGVmcz48dGl0bGU+SWNvbl8yNHB4X1B1Yi1TdWJfQ29sb3I8L3RpdGxlPjxnIGRhdGEtbmFtZT0iUHJvZHVjdCBJY29ucyI+PGNpcmNsZSBjbGFzcz0iY2xzLTIiIGN4PSIxOC45NyIgY3k9IjguMjEiIHI9IjEuNzIiLz48Y2lyY2xlIGNsYXNzPSJjbHMtMiIgY3g9IjUuMDMiIGN5PSI4LjIxIiByPSIxLjcyIi8+PGNpcmNsZSBjbGFzcz0iY2xzLTIiIGN4PSIxMiIgY3k9IjIwLjI4IiByPSIxLjcyIi8+PGcgY2xhc3M9ImNscy0zIj48cmVjdCBjbGFzcz0iY2xzLTQiIHg9IjE0LjY5IiB5PSIxMC4yMiIgd2lkdGg9IjEuNTkiIGhlaWdodD0iOC4wNCIgdHJhbnNmb3JtPSJtYXRyaXgoMC41LCAtMC44NywgMC44NywgMC41LCAtNC41OSwgMjAuNTMpIi8+PHJlY3QgY2xhc3M9ImNscy00IiB4PSI0LjQ5IiB5PSIxMy40NSIgd2lkdGg9IjguMDQiIGhlaWdodD0iMS41OSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTUuOTggNi4xNykgcm90YXRlKC0zMCkiLz48cmVjdCBjbGFzcz0iY2xzLTQiIHg9IjExLjIiIHk9IjQuMTkiIHdpZHRoPSIxLjU5IiBoZWlnaHQ9IjguMDQiLz48L2c+PGNpcmNsZSBjbGFzcz0iY2xzLTUiIGN4PSIxMiIgY3k9IjEyLjIzIiByPSIyLjc4Ii8+PGNpcmNsZSBjbGFzcz0iY2xzLTUiIGN4PSI1LjAzIiBjeT0iMTYuMjUiIHI9IjIuMTkiLz48Y2lyY2xlIGNsYXNzPSJjbHMtNSIgY3g9IjE4Ljk3IiBjeT0iMTYuMjUiIHI9IjIuMTkiLz48Y2lyY2xlIGNsYXNzPSJjbHMtNSIgY3g9IjEyIiBjeT0iNC4xOSIgcj0iMi4xOSIvPjwvZz48L3N2Zz4=;imageAspect=1;" vertex="1" parent="1"><mxGeometry x="996" y="260" width="64" height="64" as="geometry"/></mxCell>
<mxCell id="n-df" value="Dataflow&lt;br&gt;&lt;font style=&quot;font-size:10px&quot; color=&quot;#545B64&quot;&gt;enrich and embed&lt;/font&gt;" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;fontColor=#232F3E;verticalLabelPosition=bottom;verticalAlign=top;image=data:image/svg+xml,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiM2NjlkZjY7fS5jbHMtMSwuY2xzLTIsLmNscy0ze2ZpbGwtcnVsZTpldmVub2RkO30uY2xzLTIsLmNscy00e2ZpbGw6I2FlY2JmYTt9LmNscy0ze2ZpbGw6IzQyODVmNDt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPkljb25fMjRweF9EYXRhZmxvd19Db2xvcjwvdGl0bGU+PGcgZGF0YS1uYW1lPSJQcm9kdWN0IEljb25zIj48ZyA+PHBvbHlnb24gY2xhc3M9ImNscy0xIiBwb2ludHM9IjEzLjc5IDUuMDQgMTMuNTIgNC4xIDEyLjExIDQuMDMgMTAuMzkgNC45OSAxMS45MSA2LjQ5IDExLjg5IDguMjIgMTIuOTEgOC4yMyAxMi45MyA2LjUgMTcuMTcgOS4wNiAxNy4xNiAxMC4xMyAxOC45MyAxMC4xNiAxOC45MyA4LjExIDEzLjc5IDUuMDQiLz48cG9seWdvbiBjbGFzcz0iY2xzLTIiIHBvaW50cz0iMTIuMTEgNC4wMyAxMi4xMSA0LjAzIDEyLjEgNC4wMyAxMC42OCA0LjM4IDEwLjM5IDQuOTkgNS4xMyA3LjkyIDUuMSA5Ljk3IDYuODggMTAgNi45IDguOTMgMTEuMjEgNi40OCAxMS4xOSA4LjIxIDEyLjA1IDguMjIgMTIuMTEgNC4wMyIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMSIgcG9pbnRzPSIxMi4xMSA0LjAzIDEyLjExIDQuMDMgMTIuMSA0LjAzIDguNjkgMiA2Ljk1IDIuOTUgMTAuMzkgNC45OSAxMi4xMSA0LjAzIDEyLjExIDQuMDMiLz48cG9seWdvbiBjbGFzcz0iY2xzLTEiIHBvaW50cz0iMTcuMDkgMTUuMDYgMTIuNzkgMTcuNTEgMTIuODEgMTUuNzkgMTEuMDkgMTUuNzcgMTEuMDcgMTcuNDkgMTEuODkgMTkuOTcgMTMuMzEgMTkuODUgMTMuNiAxOSAxOC44NyAxNi4wNyAxOC45IDEzLjk4IDE3LjExIDEzLjk2IDE3LjA5IDE1LjA2Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0xIiBwb2ludHM9IjExLjg5IDE5Ljk3IDExLjg5IDE5Ljk3IDExLjg5IDE5Ljk3IDguNDMgMjEuOTEgOC4zOCAyMS45MSA2LjcyIDIwLjkyIDEwLjIxIDE4Ljk2IDExLjg5IDE5Ljk3IDExLjg5IDE5Ljk3Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0zIiBwb2ludHM9IjEzLjc5IDUuMDQgMTcuMjggMy4wOCAxNS42MiAyLjA5IDE1LjU3IDIuMDkgMTIuMTEgNC4wMyAxMy43OSA1LjA0Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0zIiBwb2ludHM9IjEzLjYxIDE5LjAxIDE3LjA1IDIxLjA1IDE1LjM2IDIyIDE1LjMxIDIyIDExLjg5IDE5Ljk3IDExLjg5IDE5Ljk3IDExLjg5IDE5Ljk3IDExLjg5IDE5Ljk3IDEzLjYxIDE5LjAxIi8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjExLjg5IDE5Ljk2IDEwLjIxIDE4Ljk2IDUuMDcgMTUuODkgNS4wNyAxMy44OSA2LjgzIDEzLjg5IDYuODIgMTQuOTMgMTEuMDcgMTcuNDkgMTEuMDkgMTUuNzcgMTEuOTUgMTUuNzggMTEuODkgMTkuOTYiLz48Y2lyY2xlIGlkPSJPdmFsIiBjbGFzcz0iY2xzLTQiIGN4PSIxOC4xMiIgY3k9IjEyLjA0IiByPSIxLjE0Ii8+PGNpcmNsZSBjbGFzcz0iY2xzLTQiIGN4PSI1Ljg4IiBjeT0iMTEuODgiIHI9IjEuMTQiLz48Y2lyY2xlIGNsYXNzPSJjbHMtNCIgY3g9IjEyLjA2IiBjeT0iOS45OSIgcj0iMS4xNCIvPjxjaXJjbGUgY2xhc3M9ImNscy00IiBjeD0iMTEuOTciIGN5PSIxNCIgcj0iMS4xNCIvPjwvZz48L2c+PC9zdmc+;imageAspect=1;" vertex="1" parent="1"><mxGeometry x="996" y="424" width="64" height="64" as="geometry"/></mxCell>
<mxCell id="n-bq" value="BigQuery&lt;br&gt;&lt;font style=&quot;font-size:10px&quot; color=&quot;#545B64&quot;&gt;catalog and clickstream&lt;/font&gt;" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;fontColor=#232F3E;verticalLabelPosition=bottom;verticalAlign=top;image=data:image/svg+xml,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0ic3RhbmRhcmRfcHJvZHVjdF9pY29uIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiAyLjEuMCBCdWlsZCAxNDIpICAtLT4KICA8ZGVmcz4KICAgIDxzdHlsZT4KICAgICAgLnN0MCB7CiAgICAgICAgZmlsbDogbm9uZTsKICAgICAgfQoKICAgICAgLnN0MSB7CiAgICAgICAgZmlsbDogIzQyODVmNDsKICAgICAgfQoKICAgICAgLnN0MiB7CiAgICAgICAgZmlsbDogIzM0YTg1MzsKICAgICAgfQoKICAgICAgLnN0MyB7CiAgICAgICAgZmlsbDogI2ZiYmMwNDsKICAgICAgfQoKICAgICAgLnN0NCB7CiAgICAgICAgZmlsbDogI2VhNDMzNTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L2RlZnM+CiAgPGcgaWQ9ImJvdW5kaW5nX2JveCI+CiAgICA8cmVjdCBjbGFzcz0ic3QwIiB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIvPgogIDwvZz4KICA8ZyBpZD0iYXJ0Ij4KICAgIDxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0zMTEuOSw0MTguOWMtOC44LDAtMTYtNy4yLTE2LTE2di0xNDUuOGMwLTguOCw3LjItMTYsMTYtMTZzMTYsNy4yLDE2LDE2djE0NS44YzAsOC44LTcuMiwxNi0xNiwxNmgwWiIvPgogICAgPHBhdGggY2xhc3M9InN0MiIgZD0iTTE0Ny42LDQxOC45Yy04LjgsMC0xNi03LjItMTYtMTZ2LTIwMC41YzAtOC44LDcuMi0xNiwxNi0xNnMxNiw3LjIsMTYsMTZ2MjAwLjVjMCw4LjgtNy4yLDE2LTE2LDE2WiIvPgogICAgPHBhdGggY2xhc3M9InN0MiIgZD0iTTIyOS44LDQzNy40Yy04LjgsMC0xNi03LjItMTYtMTZWMTQ3LjZjMC04LjgsNy4yLTE2LDE2LTE2czE2LDcuMiwxNiwxNnYyNzMuN2MwLDguOC03LjIsMTYtMTYsMTZoMFoiLz4KICAgIDxwYXRoIGNsYXNzPSJzdDMiIGQ9Ik0yMjkuOCw0MzcuNGMtMTE0LjUsMC0yMDcuNi05My4xLTIwNy42LTIwNy42aDMyYzAsOTYuOCw3OC44LDE3NS42LDE3NS42LDE3NS42czE3NS42LTc4LjgsMTc1LjYtMTc1LjZoMzJjMCwxMTQuNS05My4xLDIwNy42LTIwNy42LDIwNy42aDBaIi8+CiAgICA8cGF0aCBjbGFzcz0ic3Q0IiBkPSJNNDM3LjQsMjI5LjhoLTMyYzAtOTYuOC03OC44LTE3NS42LTE3NS42LTE3NS42UzU0LjEsMTMyLjksNTQuMSwyMjkuOEgyMi4xYzAtMTE0LjUsOTMuMi0yMDcuNywyMDcuNy0yMDcuN3MyMDcuNiw5My4xLDIwNy42LDIwNy42aDBaIi8+CiAgICA8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNDg3LjQsNDY0LjhsLTEwMC0xMDBjMzIuMy0zNy42LDQ5LjktODUsNDkuOS0xMzUuMXMtMjEuNi0xMDcuNi02MC44LTE0Ni44bC0yMi42LDIyLjZjMzMuMiwzMy4yLDUxLjQsNzcuMyw1MS40LDEyNC4ycy0xOC4zLDkwLjktNTEuNSwxMjQuMWgwYy01LDUtNy41LDctMTEuOCwxMC44bDEyMi44LDEyMi44YzMuMSwzLjEsNy4yLDQuNywxMS4zLDQuN2gwYzQuMSwwLDguMi0xLjYsMTEuMy00LjcsNi4yLTYuMiw2LjItMTYuNCwwLTIyLjZoMFoiLz4KICA8L2c+Cjwvc3ZnPg==;imageAspect=1;" vertex="1" parent="1"><mxGeometry x="996" y="588" width="64" height="64" as="geometry"/></mxCell>
<mxCell id="n-pim" value="PIM / ERP&lt;br&gt;&lt;font style=&quot;font-size:10px&quot; color=&quot;#545B64&quot;&gt;product master&lt;/font&gt;" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;fontColor=#232F3E;verticalLabelPosition=bottom;verticalAlign=top;image=data:image/svg+xml,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI2NCIgaGVpZ2h0PSI2NCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cmVjdCB4PSIzIiB5PSIzIiB3aWR0aD0iMTgiIGhlaWdodD0iNS4yIiByeD0iMS4yIiBmaWxsPSIjNUY2MzY4Ii8+PHJlY3QgeD0iMyIgeT0iOS40IiB3aWR0aD0iMTgiIGhlaWdodD0iNS4yIiByeD0iMS4yIiBmaWxsPSIjODA4NjhCIi8+PHJlY3QgeD0iMyIgeT0iMTUuOCIgd2lkdGg9IjE4IiBoZWlnaHQ9IjUuMiIgcng9IjEuMiIgZmlsbD0iIzVGNjM2OCIvPjxnIGZpbGw9IiMzNEE4NTMiPjxjaXJjbGUgY3g9IjYiIGN5PSI1LjYiIHI9Ii45Ii8+PGNpcmNsZSBjeD0iNiIgY3k9IjEyIiByPSIuOSIvPjxjaXJjbGUgY3g9IjYiIGN5PSIxOC40IiByPSIuOSIvPjwvZz48ZyBzdHJva2U9IiNEQURDRTAiIHN0cm9rZS13aWR0aD0iMSI+PHBhdGggZD0iTTEwIDUuNmg4TTEwIDEyaDhNMTAgMTguNGg4Ii8+PC9nPjwvc3ZnPgo=;imageAspect=1;" vertex="1" parent="1"><mxGeometry x="1211.5" y="340" width="64" height="64" as="geometry"/></mxCell>
<mxCell id="n-gcs" value="Cloud Storage&lt;br&gt;&lt;font style=&quot;font-size:10px&quot; color=&quot;#545B64&quot;&gt;images and feeds&lt;/font&gt;" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;fontColor=#232F3E;verticalLabelPosition=bottom;verticalAlign=top;image=data:image/svg+xml,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0ic3RhbmRhcmRfcHJvZHVjdF9pY29uIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiAyLjEuMCBCdWlsZCAxNDIpICAtLT4KICA8ZGVmcz4KICAgIDxzdHlsZT4KICAgICAgLnN0MCB7CiAgICAgICAgZmlsbDogbm9uZTsKICAgICAgfQoKICAgICAgLnN0MSB7CiAgICAgICAgZmlsbDogIzQyODVmNDsKICAgICAgfQoKICAgICAgLnN0MiB7CiAgICAgICAgZmlsbDogIzM0YTg1MzsKICAgICAgfQoKICAgICAgLnN0MyB7CiAgICAgICAgZmlsbDogI2ZiYmMwNDsKICAgICAgfQoKICAgICAgLnN0NCB7CiAgICAgICAgZmlsbDogI2VhNDMzNTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L2RlZnM+CiAgPGcgaWQ9ImJvdW5kaW5nX2JveCI+CiAgICA8cmVjdCBjbGFzcz0ic3QwIiB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIvPgogIDwvZz4KICA8ZyBpZD0iYXJ0Ij4KICAgIDxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik00NDIsMjc3LjlINzBjLTguOCwwLTE2LDcuMi0xNiwxNnYxNDguMWMwLDguOCw3LjIsMTYsMTYsMTZoMTA3LjJjMS41LjUsMy4xLjcsNC44LjdzMy4zLS4zLDQuOC0uN2gyNTUuMmM4LjgsMCwxNi03LjIsMTYtMTZ2LTE0OC4xYzAtOC44LTcuMi0xNi0xNi0xNlpNODYsMzA5LjloODB2MTE2LjFoLTgwdi0xMTYuMVpNNDI2LDQyNS45aC0yMjh2LTExNi4xaDIyOHYxMTYuMVoiLz4KICAgIDxwYXRoIGNsYXNzPSJzdDMiIGQ9Ik00NDIsNTRINzBjLTguOCwwLTE2LDcuMi0xNiwxNnYxNDguOGMwLDguOCw3LjIsMTYsMTYsMTZoMzcyYzguOCwwLDE2LTcuMiwxNi0xNlY3MGMwLTguOC03LjItMTYtMTYtMTZaTTg2LDg2aDgwdjExNi44aC04MHYtMTE2LjhaTTQyNiwyMDIuOGgtMjI4di0xMTYuOGgyMjh2MTE2LjhaIi8+CiAgICA8cGF0aCBjbGFzcz0ic3Q0IiBkPSJNNDQyLDIzNC44aC0xNlY4Nkg1NHYtMTZjMC04LjgsNy4yLTE2LDE2LTE2aDM3MmM4LjgsMCwxNiw3LjIsMTYsMTZ2MTQ4LjhjMCw4LjgtNy4yLDE2LTE2LDE2WiIvPgogICAgPHBhdGggY2xhc3M9InN0MSIgZD0iTTQ0Miw0NTcuOWgtMTZ2LTE0OC4xSDU0di0xNmMwLTguOCw3LjItMTYsMTYtMTZoMzcyYzguOCwwLDE2LDcuMiwxNiwxNnYxNDguMWMwLDguOC03LjIsMTYtMTYsMTZaIi8+CiAgICA8Y2lyY2xlIGNsYXNzPSJzdDQiIGN4PSIzNDkiIGN5PSIxNDQuNCIgcj0iMzciLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MSIgY3g9IjM0OSIgY3k9IjM2Ny45IiByPSIzNyIvPgogIDwvZz4KPC9zdmc+;imageAspect=1;" vertex="1" parent="1"><mxGeometry x="1211.5" y="508" width="64" height="64" as="geometry"/></mxCell>
<mxCell id="n-looker" value="Looker&lt;br&gt;&lt;font style=&quot;font-size:10px&quot; color=&quot;#545B64&quot;&gt;search analytics&lt;/font&gt;" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;fontColor=#232F3E;verticalLabelPosition=bottom;verticalAlign=top;image=data:image/svg+xml,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0ic3RhbmRhcmRfcHJvZHVjdF9pY29uIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiAyLjEuMCBCdWlsZCAxNDIpICAtLT4KICA8ZGVmcz4KICAgIDxzdHlsZT4KICAgICAgLnN0MCB7CiAgICAgICAgZmlsbDogbm9uZTsKICAgICAgfQoKICAgICAgLnN0MSB7CiAgICAgICAgZmlsbDogIzQyODVmNDsKICAgICAgfQoKICAgICAgLnN0MiB7CiAgICAgICAgZmlsbDogIzM0YTg1MzsKICAgICAgfQoKICAgICAgLnN0MyB7CiAgICAgICAgZmlsbDogI2ZiYmMwNDsKICAgICAgfQoKICAgICAgLnN0NCB7CiAgICAgICAgZmlsbDogI2VhNDMzNTsKICAgICAgfQogICAgPC9zdHlsZT4KICA8L2RlZnM+CiAgPGcgaWQ9ImJvdW5kaW5nX2JveCI+CiAgICA8cmVjdCBjbGFzcz0ic3QwIiB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIvPgogIDwvZz4KICA8ZyBpZD0iYXJ0Ij4KICAgIDxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0zMTMuNSwyOTdjNDQuNCwwLDgwLjUsMzYuMSw4MC41LDgwLjVzLTM2LjEsODAuNS04MC41LDgwLjUtODAuNS0zNi4xLTgwLjUtODAuNSwzNi4xLTgwLjUsODAuNS04MC41TTMxMy41LDI2NWMtNjIuMSwwLTExMi41LDUwLjQtMTEyLjUsMTEyLjVzNTAuNCwxMTIuNSwxMTIuNSwxMTIuNSwxMTIuNS01MC40LDExMi41LTExMi41LTUwLjQtMTEyLjUtMTEyLjUtMTEyLjVoMFoiLz4KICAgIDxwYXRoIGNsYXNzPSJzdDQiIGQ9Ik0zMzguMSw0MC45Yy0yNS4xLTI1LjEtNjYuMS0yNS4xLTkxLjIsMC0yMS4yLDIxLjItMjQuNSw1My41LTEwLjEsNzguMmwtNDQuMyw0Mi4zYy02LjQsNi4xLTYuNiwxNi4yLS41LDIyLjYsMy4xLDMuMyw3LjQsNSwxMS42LDVzNy45LTEuNSwxMS00LjRsNDQuNy00Mi43YzEwLjIsNi4xLDIxLjcsOS4xLDMzLjIsOS4xLDE2LjUsMCwzMy02LjMsNDUuNi0xOC45LDI1LjEtMjUuMiwyNS4xLTY2LjEsMC05MS4yaDBaTTMxNS41LDEwOS41Yy0xMi43LDEyLjctMzMuMywxMi43LTQ2LDBzLTEyLjctMzMuMywwLTQ2YzYuMy02LjMsMTQuNy05LjUsMjMtOS41czE2LjYsMy4yLDIzLDkuNWMxMi43LDEyLjcsMTIuNywzMy4zLDAsNDZoMFoiLz4KICAgIDxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0zMTMuNSwyNjVjLTIxLjUsMC00Mi4xLDYtNjAuMSwxNy40aDBzLTM4LjYtMzcuOS0zOC42LTM3LjlsLTIyLjQsMjIuOSwzNi42LDM1LjgsMjIuOSwyMi40aDBjMS41LTEuOCwzLTMuNSw0LjctNS4xLDMuMS0zLjEsNi40LTUuOSw5LjgtOC40aDBjMTMuOC05LjksMzAtMTUuMiw0Ny4xLTE1LjIsNDQuNCwwLDgwLjUsMzYuMSw4MC41LDgwLjVoMzJjMC02Mi01MC41LTExMi41LTExMi41LTExMi41aDBaIi8+CiAgICA8cGF0aCBjbGFzcz0ic3QzIiBkPSJNMTYxLjUsMjkwLjVjLTE5LjMsMC0zOC43LTcuNC01My40LTIyLjEtMjkuNC0yOS40LTI5LjQtNzcuMywwLTEwNi44LDI5LjQtMjkuNCw3Ny4zLTI5LjQsMTA2LjgsMCwyOS40LDI5LjQsMjkuNCw3Ny4zLDAsMTA2LjhoMGMtMTQuNywxNC43LTM0LjEsMjIuMS01My40LDIyLjFoMFpNMTYxLjUsMTcxLjVjLTExLjEsMC0yMi4zLDQuMi0zMC44LDEyLjctMTcsMTctMTcsNDQuNiwwLDYxLjUsMTcsMTcsNDQuNiwxNyw2MS41LDAsMTctMTcsMTctNDQuNiwwLTYxLjUtOC41LTguNS0xOS42LTEyLjctMzAuOC0xMi43aDBaIi8+CiAgPC9nPgo8L3N2Zz4=;imageAspect=1;" vertex="1" parent="1"><mxGeometry x="1387.5" y="340" width="64" height="64" as="geometry"/></mxCell>
<mxCell id="n-mon" value="Cloud Monitoring" style="image;aspect=fixed;html=1;points=[];align=center;fontSize=12;fontColor=#232F3E;verticalLabelPosition=bottom;verticalAlign=top;image=data:image/svg+xml,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiM2NjlkZjY7fS5jbHMtMntmaWxsOiM0Mjg1ZjQ7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5JY29uXzI0cHhfTW9uaXRvcmluZ19Db2xvcjwvdGl0bGU+PGcgZGF0YS1uYW1lPSJQcm9kdWN0IEljb25zIj48cmVjdCBjbGFzcz0iY2xzLTEiIHg9IjEwLjgzIiB5PSIxNS44NCIgd2lkdGg9IjIuMzMiIGhlaWdodD0iMi42NCIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTE4LjQ4LDEzLjg3YS41Ni41NiwwLDAsMS0uNC0uMTdMMTQsOS40N2wtMi43NCwyLjg5YS41Ny41NywwLDAsMS0uNzYuMDVMOC40MiwxMC43M2wtMi4yLDIuOTJhLjU2LjU2LDAsMCwxLS40NS4yMkgydjEuNzFhLjc1Ljc1LDAsMCwwLC43NC43NUgyMS4yNmEuNzUuNzUsMCwwLDAsLjc0LS43NVYxMy44N1oiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01LjUsMTIuNzYsNy44OCw5LjZhLjU1LjU1LDAsMCwxLC4zNy0uMjIuNjMuNjMsMCwwLDEsLjQyLjEybDIuMTIsMS43MiwyLjgtMi45NGEuNTQuNTQsMCwwLDEsLjQtLjE3aDBhLjU0LjU0LDAsMCwxLC40LjE3bDQuMzMsNC40OEgyMlY2YS43NC43NCwwLDAsMC0uNzQtLjc0SDIuNzRBLjc0Ljc0LDAsMCwwLDIsNnY2LjgxWiIvPjxyZWN0IGNsYXNzPSJjbHMtMiIgeD0iOC42NyIgeT0iMTguMTgiIHdpZHRoPSI2LjY3IiBoZWlnaHQ9IjAuNjEiIHJ4PSIwLjMiLz48L2c+PC9zdmc+;imageAspect=1;" vertex="1" parent="1"><mxGeometry x="1387.5" y="508" width="64" height="64" as="geometry"/></mxCell>
<mxCell id="e-0" value="search" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#232F3E;strokeWidth=2;labelBackgroundColor=#ffffff;fontSize=11;fontColor=#232F3E;endArrow=open;endFill=0;endSize=8;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="n-shoppers" target="n-armor"><mxGeometry x="0" relative="1" as="geometry"></mxGeometry></mxCell>
<object label="1" tooltip="1. A shopper query reaches the global load balancer through Cloud Armor" id="b-0"><mxCell style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;strokeColor=#ffffff;fontColor=#ffffff;fontStyle=1;fontSize=12;" vertex="1" parent="1"><mxGeometry x="135.5" y="361" width="22" height="22" as="geometry"/></mxCell></object>
<mxCell id="e-1" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#232F3E;strokeWidth=2;labelBackgroundColor=#ffffff;fontSize=11;fontColor=#232F3E;endArrow=open;endFill=0;endSize=8;exitX=0.5;exitY=1;exitDx=0;exitDy=48;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="n-armor" target="n-lb"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<object label="2" tooltip="2. Cloud Armor → Load Balancer" id="b-1"><mxCell style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;strokeColor=#ffffff;fontColor=#ffffff;fontStyle=1;fontSize=12;" vertex="1" parent="1"><mxGeometry x="282" y="465" width="22" height="22" as="geometry"/></mxCell></object>
<mxCell id="e-2" value="hybrid query" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#232F3E;strokeWidth=2;labelBackgroundColor=#ffffff;fontSize=11;fontColor=#232F3E;endArrow=open;endFill=0;endSize=8;exitX=0.5;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=1;entryDx=0;entryDy=48;entryPerimeter=0;" edge="1" parent="g-retr" source="n-emb" target="n-vs"><mxGeometry x="0" relative="1" as="geometry"></mxGeometry></mxCell>
<object label="5" tooltip="5. The query embedding and the keywords are sent to the search index together and results are blended" id="b-2"><mxCell style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;strokeColor=#ffffff;fontColor=#ffffff;fontStyle=1;fontSize=12;" vertex="1" parent="g-retr"><mxGeometry x="110" y="173" width="22" height="22" as="geometry"/></mxCell></object>
<mxCell id="e-3" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#232F3E;strokeWidth=2;labelBackgroundColor=#ffffff;fontSize=11;fontColor=#232F3E;endArrow=open;endFill=0;endSize=8;exitX=0.5;exitY=1;exitDx=0;exitDy=48;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="n-topic" target="n-df"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell>
<object label="7" tooltip="7. Pub/Sub → Dataflow" id="b-3"><mxCell style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;strokeColor=#ffffff;fontColor=#ffffff;fontStyle=1;fontSize=12;" vertex="1" parent="1"><mxGeometry x="1017" y="385" width="22" height="22" as="geometry"/></mxCell></object>
<mxCell id="e-4" value="archive" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#232F3E;strokeWidth=2;labelBackgroundColor=#ffffff;fontSize=11;fontColor=#232F3E;endArrow=open;endFill=0;endSize=8;dashed=1;exitX=0.5;exitY=1;exitDx=0;exitDy=48;exitPerimeter=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="n-df" target="n-bq"><mxGeometry x="0" relative="1" as="geometry"></mxGeometry></mxCell>
<mxCell id="e-5" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#232F3E;strokeWidth=2;labelBackgroundColor=#ffffff;fontSize=11;fontColor=#232F3E;endArrow=open;endFill=0;endSize=8;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="n-lb" target="n-api"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="400" y="540"/><mxPoint x="400" y="456"/></Array></mxGeometry></mxCell>
<object label="3" tooltip="3. Load Balancer → Search API" id="b-5"><mxCell style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;strokeColor=#ffffff;fontColor=#ffffff;fontStyle=1;fontSize=12;" vertex="1" parent="1"><mxGeometry x="338" y="529" width="22" height="22" as="geometry"/></mxCell></object>
<mxCell id="e-6" value="embed query" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#232F3E;strokeWidth=2;labelBackgroundColor=#ffffff;fontSize=11;fontColor=#232F3E;endArrow=open;endFill=0;endSize=8;exitX=1;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="g-region" source="n-api" target="n-emb"><mxGeometry x="0.4" relative="1" as="geometry"><Array as="points"><mxPoint x="172.5" y="244"/><mxPoint x="172.5" y="324"/></Array></mxGeometry></mxCell>
<object label="4" tooltip="4. Search API → Embeddings (embed query)" id="b-6"><mxCell style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;strokeColor=#ffffff;fontColor=#ffffff;fontStyle=1;fontSize=12;" vertex="1" parent="g-region"><mxGeometry x="117" y="233" width="22" height="22" as="geometry"/></mxCell></object>
<mxCell id="e-7" value="changes" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#232F3E;strokeWidth=2;labelBackgroundColor=#ffffff;fontSize=11;fontColor=#232F3E;endArrow=open;endFill=0;endSize=8;exitX=0.5;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="n-pim" target="n-topic"><mxGeometry x="0.2" relative="1" as="geometry"><Array as="points"><mxPoint x="1243.5" y="292"/></Array></mxGeometry></mxCell>
<object label="6" tooltip="6. PIM / ERP → Pub/Sub (changes)" id="b-7"><mxCell style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;strokeColor=#ffffff;fontColor=#ffffff;fontStyle=1;fontSize=12;" vertex="1" parent="1"><mxGeometry x="1232.5" y="305" width="22" height="22" as="geometry"/></mxCell></object>
<mxCell id="e-8" value="upsert" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#232F3E;strokeWidth=2;labelBackgroundColor=#ffffff;fontSize=11;fontColor=#232F3E;endArrow=open;endFill=0;endSize=8;exitX=0;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="n-df" target="n-vs"><mxGeometry x="-0.5" relative="1" as="geometry"><Array as="points"><mxPoint x="892" y="456"/><mxPoint x="892" y="376"/></Array></mxGeometry></mxCell>
<object label="8" tooltip="8. Dataflow → Vector and keyword search (upsert)" id="b-8"><mxCell style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#000000;strokeColor=#ffffff;fontColor=#ffffff;fontStyle=1;fontSize=12;" vertex="1" parent="1"><mxGeometry x="961" y="445" width="22" height="22" as="geometry"/></mxCell></object>
<mxCell id="e-9" value="tune" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#232F3E;strokeWidth=2;labelBackgroundColor=#ffffff;fontSize=11;fontColor=#232F3E;endArrow=open;endFill=0;endSize=8;dashed=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="n-merch" target="n-looker"><mxGeometry x="0.1" relative="1" as="geometry"><Array as="points"><mxPoint x="36.5" y="540"/><mxPoint x="36.5" y="194"/><mxPoint x="1365.5" y="194"/><mxPoint x="1365.5" y="372"/></Array></mxGeometry></mxCell>
<mxCell id="e-10" value="query" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=#232F3E;strokeWidth=2;labelBackgroundColor=#ffffff;fontSize=11;fontColor=#232F3E;endArrow=open;endFill=0;endSize=8;dashed=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0.5;entryY=1;entryDx=0;entryDy=48;entryPerimeter=0;" edge="1" parent="1" source="n-looker" target="n-bq"><mxGeometry x="0.5" relative="1" as="geometry"><Array as="points"><mxPoint x="1419.5" y="318"/><mxPoint x="1479.5" y="318"/><mxPoint x="1479.5" y="722"/><mxPoint x="1028" y="722"/></Array></mxGeometry></mxCell>
      </root>
    </mxGraphModel>
  </diagram>
</mxfile>
