diff --git a/.github/workflows/test-build.yml b/.github/workflows/test-build.yml
index c6dd8c81e..4e003a19f 100644
--- a/.github/workflows/test-build.yml
+++ b/.github/workflows/test-build.yml
@@ -13,7 +13,7 @@ jobs:
     runs-on: ubuntu-latest
     strategy:
       matrix:
-        node-version: [18.x]
+        node-version: [18.17.x]
     steps:
     - name: Checkout
       uses: actions/checkout@v3
diff --git a/.github/workflows/test-snippets.yml b/.github/workflows/test-snippets.yml
index 66af5be7b..a04828d19 100644
--- a/.github/workflows/test-snippets.yml
+++ b/.github/workflows/test-snippets.yml
@@ -13,7 +13,7 @@ jobs:
     runs-on: ubuntu-latest
     strategy:
       matrix:
-        node-version: [18.x]
+        node-version: [18.17.x]
     steps:
     - name: Checkout
       uses: actions/checkout@v3
diff --git a/.node-version b/.node-version
index 8ddbc0c64..7950a4457 100644
--- a/.node-version
+++ b/.node-version
@@ -1 +1 @@
-v18.16.0
+v18.17.0
diff --git a/main/.vuepress/components/HomeButtonHeader.vue b/main/.vuepress/components/HomeButtonHeader.vue
new file mode 100644
index 000000000..aac60147a
--- /dev/null
+++ b/main/.vuepress/components/HomeButtonHeader.vue
@@ -0,0 +1,32 @@
+<template>
+  <div class="home-section">
+    <h1 style="margin-bottom: .25em;">{{ title }}</h1>
+    <div style="margin-bottom: 1em;">
+    {{ text }}
+    </div>
+  </div>
+</template>
+  
+<script>
+/**
+ * @file HomeButtonHeader
+ * @
+ * @module components
+ */
+export default {
+    name: 'HomeButtonHeader',
+
+    props: {
+        title: {
+            type: String,
+            required: true,
+            default: 'Home Button Header Title'
+        },
+        text: {
+            type: String,
+            required: true,
+            default: 'Home Button Header Text'
+        },
+    }
+}
+</script>
\ No newline at end of file
diff --git a/main/.vuepress/components/HomeButtonRow.vue b/main/.vuepress/components/HomeButtonRow.vue
new file mode 100644
index 000000000..eb48f8131
--- /dev/null
+++ b/main/.vuepress/components/HomeButtonRow.vue
@@ -0,0 +1,162 @@
+<template>
+    <div class="button-grid-wrapper">
+        <div class="home-button" style="grid-column-start: 1;">
+            <a :href=link1>
+                {{ title1 }}
+                <span class="link-spanner"></span>
+            </a>
+            <br/>
+            <div style="margin-top: .5em;">
+                {{ text1 }}
+            </div>
+        </div>
+        <div class="home-button" style="grid-column-start: 2;">
+            <a :href=link2>
+                {{ title2 }}
+                <span class="link-spanner"></span>
+            </a>
+            <br/>
+            <div style="margin-top: .5em;">
+                {{ text2 }}
+            </div>
+        </div>
+        <div class="home-button" style="grid-column-start: 3;">
+            <a :href=link3>
+                {{ title3 }}
+                <span class="link-spanner"></span>
+            </a>
+            <br/>
+            <div style="margin-top: .5em;">
+                {{ text3 }}
+            </div>
+        </div>
+        <div class="home-button" v-if="title4" style="grid-column-start: 1;">
+            <a :href=link4>
+                {{ title4 }}
+                <span class="link-spanner"></span>
+            </a>
+            <br/>
+            <div style="margin-top: .5em;">
+                {{ text4 }}
+            </div>
+        </div>
+        <div class="home-button" v-if="title5" style="grid-column-start: 2;">
+            <a :href=link5>
+                {{ title5 }}
+                <span class="link-spanner"></span>
+            </a>
+            <br/>
+            <div style="margin-top: .5em;">
+                {{ text5 }}
+            </div>
+        </div>
+        <div class="home-button"  v-if="title6" style="grid-column-start: 3;">
+            <a :href=link6>
+                {{ title6 }}
+                <span class="link-spanner"></span>
+            </a>
+            <br/>
+            <div style="margin-top: .5em;">
+                {{ text6 }}
+            </div>
+        </div>
+    </div>
+</template>
+  
+<script>
+  /**
+   * @file HomeButtonRow
+   * @
+   * @module components
+   */
+  export default {
+    name: 'HomeButtonRow',
+  
+    props: {
+      title1: {
+          type: String,
+          required: true,
+          default: 'HomeButton Title 1'
+      },
+      text1: {
+          type: String,
+          required: true,
+          default: 'HomeButton Text 1'
+      },
+      link1: {
+          type: String,
+          required: true,
+          default: 'https://docs.agoric.com'
+      },
+      title2: {
+          type: String,
+          required: true,
+          default: 'HomeButton Title 2'
+      },
+      text2: {
+          type: String,
+          required: true,
+          default: 'HomeButton Text 2'
+      },
+      link2: {
+          type: String,
+          required: true,
+          default: 'https://docs.agoric.com'
+      },
+      title3: {
+          type: String,
+          required: true,
+          default: 'HomeButton Title 3'
+      },
+      text3: {
+          type: String,
+          required: true,
+          default: 'HomeButton Text 3'
+      },
+      link3: {
+          type: String,
+          required: true,
+          default: 'https://docs.agoric.com'
+      },
+
+      title4: {
+          type: String,
+          required: false,
+      },
+      text4: {
+          type: String,
+          required: false,
+      },
+      link4: {
+          type: String,
+          required: false,
+      },
+
+      title5: {
+          type: String,
+          required: false,
+      },
+      text5: {
+          type: String,
+          required: false,
+      },
+      link5: {
+          type: String,
+          required: false,
+      },
+
+      title6: {
+          type: String,
+          required: false,
+      },
+      text6: {
+          type: String,
+          required: false,
+      },
+      link6: {
+          type: String,
+          required: false,
+      },
+    }
+  }
+</script>
\ No newline at end of file
diff --git a/main/.vuepress/config.js b/main/.vuepress/config.js
index 943c1e3e6..ec8b81e2d 100644
--- a/main/.vuepress/config.js
+++ b/main/.vuepress/config.js
@@ -8,6 +8,7 @@ module.exports = {
   description: 'Build, deploy and operate dApps and DeFi markets.', // desc for the site; rendered as a <meta> tag in the page HTML
   // Extra tags to inject into the page HTML <head>. You can specify each tag in the form of [tagName, { attrName: attrValue }, innerHTML?].
   head: [
+    ['meta', { name: 'viewport', content: 'width=device-width, initial-scale=1' }],
     ['link', { rel: 'icon', href: '/favicon-full.ico' }],
     [
       'style',
@@ -25,7 +26,7 @@ module.exports = {
     ],
     [
       'script',
-      { src: 'https://www.googletagmanager.com/gtag/js?id=UA-118217811-1' },
+      { src: 'https://www.googletagmanager.com/gtag/js?id=UA-118217811-1', async: '' },
     ],
     [
       'script',
@@ -119,6 +120,7 @@ module.exports = {
           children: [
             '/guides/getting-started/',
             '/guides/getting-started/start-a-project.html',
+            '/guides/getting-started/contract-rpc.html',
             '/guides/getting-started/deploying.html',
             '/guides/getting-started/syncing-up.html',
           ],
diff --git a/main/.vuepress/styles/index.styl b/main/.vuepress/styles/index.styl
index 1d3ede334..3ffd2974d 100644
--- a/main/.vuepress/styles/index.styl
+++ b/main/.vuepress/styles/index.styl
@@ -98,6 +98,44 @@
   &--center
     align-items center
 
+
+.button-grid-wrapper
+  display grid
+  grid-template-columns repeat(3, 33.3%)
+  grid-template-rows repeat(minmax(1, 2), 50%)
+  row-gap .25em
+  column-gap .25em
+
+.home-section
+  width 100%
+
+.home-button
+  border-style solid
+  border-color LightGrey
+  padding .5em
+  vertical-align top
+  position relative
+  min-height 4em
+
+.home-banner
+  text-align center
+  background #d73252
+  color white
+  padding 1em
+
+.link-spanner
+  position absolute
+  width 100%
+  height 100%
+  top 0
+  left  0
+  z-index 1
+
+.youtube-embed
+  aspect-ratio 16/9
+  width 100%
+  max-height 315
+
 .zoe-version
   font-size: .75em
   border-bottom: 1px #2c3e50 solid
diff --git a/main/.vuepress/styles/palette.styl b/main/.vuepress/styles/palette.styl
index ae17bb001..076a53f19 100644
--- a/main/.vuepress/styles/palette.styl
+++ b/main/.vuepress/styles/palette.styl
@@ -9,3 +9,7 @@ $badgeErrorColor = #DA5961
 
 // Additional color variables for use in site
 $white = #FFF
+
+// Allow content panel to be larger
+$homePageWidth = 90%
+$contentWidth=90%
diff --git a/main/.vuepress/themeConfig/nav.js b/main/.vuepress/themeConfig/nav.js
index a023bca8b..272c60517 100644
--- a/main/.vuepress/themeConfig/nav.js
+++ b/main/.vuepress/themeConfig/nav.js
@@ -19,82 +19,87 @@ module.exports = [
         ariaLabel: 'Starting a Project Menu',
         link: '/guides/getting-started/start-a-project',
       },
+      {
+        text: 'Smart Wallet Dapp Architecture',
+        ariaLabel: 'Smart Wallet Dapp Architecture Menu',
+        link: '/guides/getting-started/contract-rpc',
+      },
       {
         text: 'Deploying Smart Contracts',
         ariaLabel: 'Deploying Menu',
         link: '/guides/getting-started/deploying',
       },
+      {
+        text: 'Permissioned Contract Deployment',
+        ariaLabel: 'Permissioned Contract Deployment',
+        link: '/guides/coreeval/',
+      },
       {
         text: 'Syncing Up to Mainnet',
         ariaLabel: 'Syncing Up to Mainnet',
         link: '/guides/getting-started/syncing-up',
       },
-    ]
+    ],
   },
   {
-  text: 'Agoric Components',
-  ariaLabel: 'Agoric Components Menu',
-  items: [
+    text: 'Agoric Components',
+    ariaLabel: 'Agoric Components Menu',
+    items: [
       {
-      text: 'Agoric CLI',
-      ariaLabel: 'Agoric CLI',
-      link: '/guides/agoric-cli/',
+        text: 'Agoric CLI',
+        ariaLabel: 'Agoric CLI',
+        link: '/guides/agoric-cli/',
       },
       {
-      text: 'JavaScript Framework',
-      ariaLabel: 'JavaScript Framework',
-      link: '/guides/js-programming/',
+        text: 'JavaScript Framework',
+        ariaLabel: 'JavaScript Framework',
+        link: '/guides/js-programming/',
       },
       {
-      text: 'Wallet',
-      ariaLabel: 'Wallet',
-      link: '/guides/wallet/'
+        text: 'Wallet',
+        ariaLabel: 'Wallet',
+        link: '/guides/wallet/',
       },
       {
-      text: 'ERTP',
-      ariaLabel: 'ERTP',
-      link: '/guides/ertp/'
+        text: 'ERTP',
+        ariaLabel: 'ERTP',
+        link: '/guides/ertp/',
       },
       {
-      text: 'Zoe',
-      ariaLabel: 'Zoe',
-      link: '/guides/zoe/'
+        text: 'Zoe',
+        ariaLabel: 'Zoe',
+        link: '/guides/zoe/',
       },
       {
-      text: 'Permissioned Contract Deployment',
-      ariaLabel: 'Permissioned Contract Deployment',
-      link: '/guides/coreeval/'
-      },      
-      {
-      text: 'Example Zoe Contracts',
-      ariaLabel: 'Example Zoe Contracts',
-      link: '/guides/zoe/contracts/'
+        text: 'Example Zoe Contracts',
+        ariaLabel: 'Example Zoe Contracts',
+        link: '/guides/zoe/contracts/',
       },
       {
-      text: 'Deployed Zoe Contracts',
-      ariaLabel: 'Deployed Zoe Contracts',
-      link: '/guides/zoe/actual-contracts/'
+        text: 'Deployed Zoe Contracts',
+        ariaLabel: 'Deployed Zoe Contracts',
+        link: '/guides/zoe/actual-contracts/',
       },
       {
-      text: 'Agoric Dapps',
-      ariaLabel: 'Agoric Dapps',
-      link: '/guides/dapps/'
+        text: 'Agoric Dapps',
+        ariaLabel: 'Agoric Dapps',
+        link: '/guides/dapps/',
       },
-    ]
+    ],
   },
   {
     text: 'API Reference',
     ariaLabel: 'API Reference Menu',
     items: [
       {
-          text: 'Wallet API',
-          ariaLabel: 'Wallet API Menu',
-          link: '/reference/wallet-api',
+        text: 'Wallet API',
+        ariaLabel: 'Wallet API Menu',
+        link: '/reference/wallet-api',
       },
       {
-          text: 'ERTP API',
-          ariaLabel: 'ERTP API Menu',
-          link: '/reference/ertp-api/',
+        text: 'ERTP API',
+        ariaLabel: 'ERTP API Menu',
+        link: '/reference/ertp-api/',
       },
       {
         text: 'REPL API',
@@ -106,38 +111,42 @@ module.exports = [
         ariaLabel: 'ZOE API Menu',
         link: '/reference/zoe-api/',
       },
-    ]
+    ],
   },
   {
     text: 'Glossary',
     ariaLabel: 'Glossary Menu',
-    link: '/glossary/'
+    link: '/glossary/',
   },
   {
     text: 'New Features',
     ariaLabel: 'New Features Menu',
-    items: [    
+    items: [
       {
         text: 'Governance',
         ariaLabel: 'Governance Internal Documentation',
-        link: 'https://github.com/Agoric/agoric-sdk/blob/master/packages/governance/docs/'
+        link:
+          'https://github.com/Agoric/agoric-sdk/blob/master/packages/governance/docs/',
       },
       {
         text: 'Patterns',
         ariaLabel: 'Patterns Source Code Link',
-        link: 'https://github.com/Agoric/agoric-sdk/blob/master/packages/store/src/types.js'
+        link:
+          'https://github.com/Agoric/agoric-sdk/blob/master/packages/store/src/types.js',
       },
       {
         text: 'Smart Wallet',
         ariaLabel: 'Smart Wallet Internal Documentation',
-        link: 'https://github.com/Agoric/agoric-sdk/blob/master/packages/smart-wallet/README.md'
-      },   
+        link:
+          'https://github.com/Agoric/agoric-sdk/blob/master/packages/smart-wallet/README.md',
+      },
       {
         text: 'Upgrading Contracts',
         ariaLabel: 'Upgrade Contracts Doc Link',
-        link: 'https://github.com/Agoric/agoric-sdk/blob/master/packages/zoe/README.md#upgrade'
-      },   
-    ]
+        link:
+          'https://github.com/Agoric/agoric-sdk/blob/master/packages/zoe/README.md#upgrade',
+      },
+    ],
   },
   {
     text: 'Learn More',
@@ -146,23 +155,23 @@ module.exports = [
       {
         text: 'Agoric',
         ariaLabel: 'Agoric Homepage Link',
-        link: 'https://agoric.com/'
-      },      
+        link: 'https://agoric.com/',
+      },
       {
         text: 'Papers',
         ariaLabel: 'Papers Page Link',
-        link: 'https://agoric.com/papers/'
+        link: 'https://agoric.com/papers/',
       },
       {
         text: 'YouTube',
         ariaLabel: 'Agoric YouTube Channel Page Link',
-        link: 'https://www.youtube.com/channel/UCpY91oQLh_Lp0mitdZ5bYWg/'
-      },     
+        link: 'https://www.youtube.com/channel/UCpY91oQLh_Lp0mitdZ5bYWg/',
+      },
       {
         text: 'Github',
         ariaLabel: 'Agoric Github Link',
-        link: 'https://github.com/Agoric/'
-      }
-    ]
-  },  
-]
+        link: 'https://github.com/Agoric/',
+      },
+    ],
+  },
+];
diff --git a/main/README.md b/main/README.md
index ac035b6ec..086df4c88 100644
--- a/main/README.md
+++ b/main/README.md
@@ -4,53 +4,108 @@
 # run `yarn docs:dev` at any time to start local dev server and access
 # website at localhost:8080 by default
 ####
-home: true # use default home page layout (hero image with text, features section)
-heroImage: /logo.svg
-## Action button
-actionText: Get Started → # text that goes in the button
-actionLink: /guides/getting-started/ # go-to link when clicking on button
-
-## Features section
-features:
-  - title: Electronic Rights Transfer Protocol (ERTP)
-    details: Agoric empowers individuals to securely execute transactions, establish new markets, and craft novel patterns of exchange — without centralized control.
-
-  - title: Better security architecture with OCaps
-    details: Agoric uses an object-capability model (OCaps) security architecture, in which access to a programming object itself is the authority to use the object.
-
-  - title: Securely Create and Transfer Assets
-    details: All kinds of digital assets can be easily created, but importantly, they can be transferred in exactly the same ways, with exactly the same security properties.
-
-footer: Apache-2.0 Licensed | Copyright © 2022 - Agoric
+home: false
+footer: Apache-2.0 Licensed | Copyright © 2023 - Agoric
 ---
 
-<div class="flex flex--column flex--center">
-  <p>
-    Learn about ERTP (Electronic Rights Transfer Protocol), a uniform way of transferring tokens and other digital assets in JavaScript.
-  </p>
-  <Button-Action-Link
-    text="Explore ERTP"
-    link="/guides/ertp/"
-  />
+<div class="home-banner">
+  Receive our latest tutorials, webinar invites, and much more! <a href="https://agoric.com/dev-newsletter" style="color: white;text-decoration: underline;"">Join our newsletter</a>
 </div>
-<br>
-<div class="flex flex--column flex--center">
-  <p>Check out Zoe, a smart contract framework responsible for enforcing what we call "offer safety". The smart contracts that run on top of Zoe are responsible for figuring out proposed reallocations of resources.
-  </p>
-  <Button-Action-Link
-    text="Build on Zoe"
-    link="/guides/zoe/"
+
+<div class="home-section">
+  <HomeButtonHeader
+    title="Agoric documentation"
+    text="The Agoric platform makes it possible to write safer smart contracts with your JavaScript skill set."
   />
+  <HomeButtonRow
+    title1="What's Agoric"
+    text1="Learn about Agoric and its JavaScript platform"
+    link1="https://www.agoric.com"
+    title2="Getting Started"
+    text2="Set up your environment and start building apps"
+    link2="/guides/getting-started/"
+    title3="Contract Framework"
+    text3="See the safety properties of our Zoe Framework"
+    link3="/guides/zoe/"
+    title4="Token Protocol"
+    text4="Understand the ins and outs of Agoric's Electronic Rights Transfer Protocol (ERTP)"
+    link4="/guides/ertp/"
+    title5="Samples"
+    text5="Look through our smart contract and dapp examples"
+    link5="/guides/zoe/contracts/"
+    title6="Bounties"
+    text6="A rotating list of incentivized bounties to grow our platform"
+    link6="https://components.agoric.com/bounties/open-bounties"
+    />
 </div>
 
-## The Platform
+<div class="home-section">
+  <HomeButtonHeader
+    title="Blockchain resources"
+    text="The tools your need to get the job done."
+  />
+  <HomeButtonRow
+    title1="Block Explorer"
+    text1="View transactions across the Agoric chain"
+    link1="https://bigdipper.live/agoric"
+    title2="Keplr Wallet"
+    text2="Sign transactions with the most popular wallet in Cosmos"
+    link2="https://www.keplr.app/download"
+    title3="Component Library"
+    text3="Pre-built smart contracts for DeFi, NFTs, and cross-chain!"
+    link3="https://components.agoric.com/"
+    title4="Cosmos SDK"
+    text4="Our battle-tested consensus mechanism"
+    link4="https://docs.cosmos.network/"
+    title5="IBC"
+    text5="The protocol ensuring Agoric is interoperable with 60+ chains"
+    link5="https://ibc.cosmos.network/main"
+    title6="Integrations"
+    text6="Browse through our catalogue of integrations"
+    link6="/guides/integration/chain-integration"
+    />
+  </div>
+
+<div class="home-section">
+  <HomeButtonHeader
+      title="Ready to learn more?"
+      text="Once you've completed the Getting Started, here are a few next steps."
+    />
+  <h3 style="margin-top: 0em;">
+    <a href="/guides/js-programming/hardened-js.html">Learn the basics of HardenedJS</a>
+  </h3>
+  It's JavaScript with the safety you expect - see why MetaMask uses it to safely run their Snaps technology for 30M+ customers.
+  <h3>
+    <a href="/guides/zoe/">See the safety properties of our Zoe Framework</a>
+  </h3>
+  From Offer Safety to the POLA, the Zoe Framework protects devs (and users) while writing your smart contract logic.
+</div>
 
-Building on 30 years of experience, Agoric is developing a secure distributed object-capabilities (OCap) platform for smart contracts and market-oriented programming. Our platform supports the development of smart contracts and market institutions across many different scales, from large public blockchains to small two-party contracts.
+<div class="home-section">
+  <HomeButtonHeader
+      title="Videos"
+      text="Check out our primer on writing programmable smart contracts in JavaScript!"
+    />
 
-Our OCaps platform consists of:
+  <div>
+<iframe class="youtube-embed" src="https://www.youtube-nocookie.com/embed/Em32hztid_k?si=3bfO6P4vEWV-qoKd&amp;controls=0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
+  </div>
+</div>
 
-- A robust architecture for building secure smart contracts.
-- A foundation in JavaScript for maximum reach.
-- A cryptographic routing fabric for inter-chain interoperability.
-- A library of market abstractions and a framework for securely composing them.
-- A framework for secure user interaction.
+<div class="home-section">
+  <HomeButtonHeader
+      title="Connect with us"
+      text=""
+    />
+  <HomeButtonRow
+    title1="Office Hours"
+    text1="Workshop ideas with our engineers every Wednesday!"
+    link1="https://agoric.com/office-hours"
+    title2="Discord"
+    text2="Meet our developer community and make friend <3"
+    link2="https://agoric.com/discord"
+    title3="Twitter"
+    text3="Catch up on all things Agoric product, events, and more"
+    link3="https://twitter.com/agoric"
+  />
+</div>
diff --git a/main/guides/getting-started/README.md b/main/guides/getting-started/README.md
index 52f397f2c..ee83b7c56 100644
--- a/main/guides/getting-started/README.md
+++ b/main/guides/getting-started/README.md
@@ -1,15 +1,19 @@
 # Installing the Agoric SDK
 
 To write JavaScript smart contracts using the Agoric Zoe framework, first install the Agoric Software
-Development Kit (SDK). The Agoric SDK is currently supported on MacOS, Linux, and Windows Subsystem for
-Linux (WSL). There is currently **no support** for native Windows 10 or native Windows 11. 
+Development Kit (SDK).
 
-After installing the Agoric SDK, you can proceed to [starting a project](./start-a-project.md) with 
-the Agoric CLI to create and deploy [smart contracts](./deploying.md).
+After installing the Agoric SDK, you can proceed to [starting a project](./start-a-project.md).
+
+## Getting Support
+
+- Chat with peers on the [Agoric Discord](https://agoric.com/discord)
+- Join weekly [Office Hours](https://github.com/Agoric/agoric-sdk/wiki/Office-Hours)
+- Search and post [Q & A](https://github.com/Agoric/agoric-sdk/discussions/categories/q-a) in [agoric-sdk discussions](https://github.com/Agoric/agoric-sdk/discussions)
 
 ## Quick Start
 
-If you're familar with JavaScript development tools such as `node`, `yarn`, and `git`:
+If you're on a [supported platform](#platform-linux-shell-or-equivalent) (MacOS, Linux, or WSL) and you're familar with JavaScript development tools such as `node`, `yarn`, and `git`:
 
 ```shell
 go version # Version 1.20.3 or higher
@@ -26,7 +30,7 @@ agoric --version # Prints the version number of the SDK
 
 Now you are ready proceed to [starting a project](./start-a-project.md).
 
-If `agoric` is not found, then you may need to add the parent directory of where your `yarn link-cli` command created a folder. For example, if you created a folder called `Agoric` in your `~/bin` directory, you may need to add `~/bin` to your PATH.
+_If you get "command not found", see [troubleshooting below](#install-agoric-cli)._
 
 ::: tip Watch: Prepare Your Agoric Environment (November 2020)
 This presentation is a good overview of the Agoric SDK setup process,
@@ -48,6 +52,11 @@ The Agoric SDK is supported on <a href="https://en.wikipedia.org/wiki/Linux">Lin
 - To launch a terminal on Linux, use the **Terminal** application.
 - To access WSL from Windows, visit the [WSL documentation](https://docs.microsoft.com/en-us/windows/wsl/).
 
+::: tip Mac Dev Tools
+On a Mac, you must first install
+[Xcode](https://apps.apple.com/us/app/xcode/id497799835)
+:::
+
 ## Install Go
 
 Download Go from [go.dev/doc/install](https://go.dev/doc/install) and follow the instructions for your platform.
@@ -109,7 +118,9 @@ yarn install
 yarn build
 ```
 
-**Note:** MacOS, Linux, and WSL are currently supported. There is currently **no support** for native Windows 10 or native Windows 11.
+**Note:** If this `yarn build` step fails, check that you are on a
+[supported platform](#platform-linux-shell-or-equivalent) and
+not native Windows.
 
 ## Build the Cosmic Swingset Package
 
@@ -119,7 +130,7 @@ yarn build
 
 ## Install Agoric CLI
 
-Install the Agoric CLI (Command Line Interface) in a convenient place in your `$PATH` such as:
+Use `yarn link-cli` to install the Agoric CLI (Command Line Interface) in a convenient place of your choosing such as:
 
 ```shell
 yarn link-cli ~/bin/agoric
@@ -131,7 +142,13 @@ or:
 sudo yarn link-cli /usr/local/bin/agoric
 ```
 
-**Note:** Run `echo $PATH` to see your current `$PATH`. Here you'll see which directory you should use for `yarn link-cli`.
+**Note:** Run `echo $PATH` to see directories in your current path, separated by colons. These are good candidates for where to have `yarn link-cli` place the executable.
+
+::: tip Troubleshooting "command not found"
+Watch:
+
+- [Linux add to \$PATH: Fix "command not found" error (Linux & Mac)](https://www.youtube.com/watch?v=gkqsLRDnqlA) 6:19 Mar 2018.
+  :::
 
 ## Check the Agoric Version
 
@@ -143,6 +160,4 @@ agoric --version # v0.18.2 "community-dev" branch
 
 If the install was successful, you are ready to proceed to [starting a project](./start-a-project.md).
 
-Should `agoric` not be found, then you may need to add the parent directory of where your `yarn link-cli` command created the "agoric-sdk" directory.
 
-Please see the youtube video [Linux add to \$PATH: Fix "command not found" error (Linux & Mac)](https://www.youtube.com/watch?v=gkqsLRDnqlA) for more information.
diff --git a/main/guides/getting-started/assets/inv-spec.mmd b/main/guides/getting-started/assets/inv-spec.mmd
new file mode 100644
index 000000000..8640daab5
--- /dev/null
+++ b/main/guides/getting-started/assets/inv-spec.mmd
@@ -0,0 +1,11 @@
+sequenceDiagram
+
+  box darksalmon Hardened JS VM
+  participant walletFactory
+  participant zoe
+  participant contract
+  end
+
+    walletFactory->>contract: makeBattleInvitation('troll')
+    contract-->>zoe: makeInvitation(...)
+    zoe-->>walletFactory: invitation
diff --git a/main/guides/getting-started/assets/inv-spec.svg b/main/guides/getting-started/assets/inv-spec.svg
new file mode 100644
index 000000000..263579e17
--- /dev/null
+++ b/main/guides/getting-started/assets/inv-spec.svg
@@ -0,0 +1 @@
+<svg aria-roledescription="sequence" role="graphics-document document" viewBox="-50 -10 660 351" style="max-width: 660px; background-color: rgb(255, 255, 255);" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" width="100%" id="mermaid-1691722987253"><g><rect class="rect" height="330" width="560" stroke="rgb(0,0,0, 0.5)" fill="darksalmon" y="0" x="0"/><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="text" alignment-baseline="central" dominant-baseline="central" y="9" x="280"><tspan dy="0" x="280">Hardened JS VM</tspan></text></g><style>#mermaid-1691722987253{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-1691722987253 .error-icon{fill:#552222;}#mermaid-1691722987253 .error-text{fill:#552222;stroke:#552222;}#mermaid-1691722987253 .edge-thickness-normal{stroke-width:2px;}#mermaid-1691722987253 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-1691722987253 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-1691722987253 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-1691722987253 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-1691722987253 .marker{fill:#333333;stroke:#333333;}#mermaid-1691722987253 .marker.cross{stroke:#333333;}#mermaid-1691722987253 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-1691722987253 .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-1691722987253 text.actor&gt;tspan{fill:black;stroke:none;}#mermaid-1691722987253 .actor-line{stroke:grey;}#mermaid-1691722987253 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-1691722987253 .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-1691722987253 #arrowhead path{fill:#333;stroke:#333;}#mermaid-1691722987253 .sequenceNumber{fill:white;}#mermaid-1691722987253 #sequencenumber{fill:#333;}#mermaid-1691722987253 #crosshead path{fill:#333;stroke:#333;}#mermaid-1691722987253 .messageText{fill:#333;stroke:none;}#mermaid-1691722987253 .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-1691722987253 .labelText,#mermaid-1691722987253 .labelText&gt;tspan{fill:black;stroke:none;}#mermaid-1691722987253 .loopText,#mermaid-1691722987253 .loopText&gt;tspan{fill:black;stroke:none;}#mermaid-1691722987253 .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-1691722987253 .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-1691722987253 .noteText,#mermaid-1691722987253 .noteText&gt;tspan{fill:black;stroke:none;}#mermaid-1691722987253 .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-1691722987253 .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-1691722987253 .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-1691722987253 .actorPopupMenu{position:absolute;}#mermaid-1691722987253 .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-1691722987253 .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-1691722987253 .actor-man circle,#mermaid-1691722987253 line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-1691722987253 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g/><defs><symbol height="24" width="24" id="computer"><path d="M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z" transform="scale(.5)"/></symbol></defs><defs><symbol clip-rule="evenodd" fill-rule="evenodd" id="database"><path d="M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z" transform="scale(.5)"/></symbol></defs><defs><symbol height="24" width="24" id="clock"><path d="M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z" transform="scale(.5)"/></symbol></defs><g><line stroke="#999" stroke-width="0.5px" class="200" y2="275" x2="80" y1="33" x1="80" id="actor5"/><g id="root-5"><rect class="actor" ry="3" rx="3" height="65" width="150" stroke="#666" fill="#eaeaea" y="28" x="5"/><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor" alignment-baseline="central" dominant-baseline="central" y="60.5" x="80"><tspan dy="0" x="80">walletFactory</tspan></text></g></g><g><line stroke="#999" stroke-width="0.5px" class="200" y2="275" x2="280" y1="33" x1="280" id="actor6"/><g id="root-6"><rect class="actor" ry="3" rx="3" height="65" width="150" stroke="#666" fill="#eaeaea" y="28" x="205"/><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor" alignment-baseline="central" dominant-baseline="central" y="60.5" x="280"><tspan dy="0" x="280">zoe</tspan></text></g></g><g><line stroke="#999" stroke-width="0.5px" class="200" y2="275" x2="480" y1="33" x1="480" id="actor7"/><g id="root-7"><rect class="actor" ry="3" rx="3" height="65" width="150" stroke="#666" fill="#eaeaea" y="28" x="405"/><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor" alignment-baseline="central" dominant-baseline="central" y="60.5" x="480"><tspan dy="0" x="480">contract</tspan></text></g></g><defs><marker orient="auto" markerHeight="12" markerWidth="12" markerUnits="userSpaceOnUse" refY="5" refX="9" id="arrowhead"><path d="M 0 0 L 10 5 L 0 10 z"/></marker></defs><defs><marker refY="5" refX="4" orient="auto" markerHeight="8" markerWidth="15" id="crosshead"><path style="stroke-dasharray: 0, 0;" d="M 1,2 L 6,7 M 6,2 L 1,7" stroke-width="1pt" stroke="#000000" fill="none"/></marker></defs><defs><marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="18" id="filled-head"><path d="M 18,7 L9,13 L14,7 L9,1 Z"/></marker></defs><defs><marker orient="auto" markerHeight="40" markerWidth="60" refY="15" refX="15" id="sequencenumber"><circle r="6" cy="15" cx="15"/></marker></defs><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="108" x="280">makeBattleInvitation('troll')</text><line style="fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine0" y2="141" x2="480" y1="141" x1="80"/><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="156" x="380">makeInvitation(...)</text><line style="stroke-dasharray: 3, 3; fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine1" y2="189" x2="280" y1="189" x1="480"/><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="204" x="180">invitation</text><line style="stroke-dasharray: 3, 3; fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine1" y2="235" x2="80" y1="235" x1="280"/><g><rect class="actor" ry="3" rx="3" height="65" width="150" stroke="#666" fill="#eaeaea" y="255" x="5"/><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor" alignment-baseline="central" dominant-baseline="central" y="287.5" x="80"><tspan dy="0" x="80">walletFactory</tspan></text></g><g><rect class="actor" ry="3" rx="3" height="65" width="150" stroke="#666" fill="#eaeaea" y="255" x="205"/><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor" alignment-baseline="central" dominant-baseline="central" y="287.5" x="280"><tspan dy="0" x="280">zoe</tspan></text></g><g><rect class="actor" ry="3" rx="3" height="65" width="150" stroke="#666" fill="#eaeaea" y="255" x="405"/><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor" alignment-baseline="central" dominant-baseline="central" y="287.5" x="480"><tspan dy="0" x="480">contract</tspan></text></g></svg>
\ No newline at end of file
diff --git a/main/guides/getting-started/assets/sw-dapp-arch.mmd b/main/guides/getting-started/assets/sw-dapp-arch.mmd
new file mode 100644
index 000000000..aad4c7c03
--- /dev/null
+++ b/main/guides/getting-started/assets/sw-dapp-arch.mmd
@@ -0,0 +1,25 @@
+sequenceDiagram
+  actor client
+
+  box aqua Cosmos SDK layer
+  participant chain
+  end
+
+  box darksalmon Hardened JS VM
+  participant walletFactory
+  participant zoe
+  participant contract
+  end
+
+    client->>chain: Offer tx
+    chain->>walletFactory: Offer Spec
+    walletFactory->>+zoe: Offer
+    walletFactory-->>chain: Offer status
+    client->>+chain: vstorage query
+    chain-->>-client: Offer status
+    zoe->>+contract: Proposal
+    contract-->>-zoe: reallocations
+    zoe-->>-walletFactory: payouts
+    walletFactory-->>chain: Offer status
+    client->>+chain: vstorage query
+    chain-->>-client: Offer status
diff --git a/main/guides/getting-started/assets/sw-dapp-arch.svg b/main/guides/getting-started/assets/sw-dapp-arch.svg
new file mode 100644
index 000000000..20c506b32
--- /dev/null
+++ b/main/guides/getting-started/assets/sw-dapp-arch.svg
@@ -0,0 +1 @@
+<svg aria-roledescription="sequence" role="graphics-document document" viewBox="-50 -10 1080 761" style="max-width: 1080px; background-color: rgb(255, 255, 255);" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" width="100%" id="mermaid-1691697229501"><g><rect class="rect" height="740" width="560" stroke="rgb(0,0,0, 0.5)" fill="darksalmon" y="0" x="420"/><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="text" alignment-baseline="central" dominant-baseline="central" y="9" x="700"><tspan dy="0" x="700">Hardened JS VM</tspan></text></g><g><rect class="rect" height="740" width="160" stroke="rgb(0,0,0, 0.5)" fill="aqua" y="0" x="200"/><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="text" alignment-baseline="central" dominant-baseline="central" y="9" x="280"><tspan dy="0" x="280">Cosmos SDK layer</tspan></text></g><style>#mermaid-1691697229501{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-1691697229501 .error-icon{fill:#552222;}#mermaid-1691697229501 .error-text{fill:#552222;stroke:#552222;}#mermaid-1691697229501 .edge-thickness-normal{stroke-width:2px;}#mermaid-1691697229501 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-1691697229501 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-1691697229501 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-1691697229501 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-1691697229501 .marker{fill:#333333;stroke:#333333;}#mermaid-1691697229501 .marker.cross{stroke:#333333;}#mermaid-1691697229501 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-1691697229501 .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-1691697229501 text.actor&gt;tspan{fill:black;stroke:none;}#mermaid-1691697229501 .actor-line{stroke:grey;}#mermaid-1691697229501 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-1691697229501 .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-1691697229501 #arrowhead path{fill:#333;stroke:#333;}#mermaid-1691697229501 .sequenceNumber{fill:white;}#mermaid-1691697229501 #sequencenumber{fill:#333;}#mermaid-1691697229501 #crosshead path{fill:#333;stroke:#333;}#mermaid-1691697229501 .messageText{fill:#333;stroke:none;}#mermaid-1691697229501 .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-1691697229501 .labelText,#mermaid-1691697229501 .labelText&gt;tspan{fill:black;stroke:none;}#mermaid-1691697229501 .loopText,#mermaid-1691697229501 .loopText&gt;tspan{fill:black;stroke:none;}#mermaid-1691697229501 .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-1691697229501 .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-1691697229501 .noteText,#mermaid-1691697229501 .noteText&gt;tspan{fill:black;stroke:none;}#mermaid-1691697229501 .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-1691697229501 .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-1691697229501 .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-1691697229501 .actorPopupMenu{position:absolute;}#mermaid-1691697229501 .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-1691697229501 .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-1691697229501 .actor-man circle,#mermaid-1691697229501 line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-1691697229501 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g/><defs><symbol height="24" width="24" id="computer"><path d="M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z" transform="scale(.5)"/></symbol></defs><defs><symbol clip-rule="evenodd" fill-rule="evenodd" id="database"><path d="M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z" transform="scale(.5)"/></symbol></defs><defs><symbol height="24" width="24" id="clock"><path d="M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z" transform="scale(.5)"/></symbol></defs><line stroke="#999" stroke-width="0.5px" class="200" y2="685" x2="75" y1="108" x1="75" id="actor0"/><g class="actor-man"><line y2="73" x2="75" y1="53" x1="75" id="actor-man-torso0"/><line y2="61" x2="93" y1="61" x1="57" id="actor-man-arms0"/><line y2="73" x2="75" y1="88" x1="57"/><line y2="88" x2="91" y1="73" x1="75"/><circle height="65" width="150" r="15" cy="38" cx="75"/><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor" alignment-baseline="central" dominant-baseline="central" y="95.5" x="75"><tspan dy="0" x="75">client</tspan></text></g><g><line stroke="#999" stroke-width="0.5px" class="200" y2="685" x2="280" y1="33" x1="280" id="actor1"/><g id="root-1"><rect class="actor" ry="3" rx="3" height="65" width="150" stroke="#666" fill="#eaeaea" y="28" x="205"/><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor" alignment-baseline="central" dominant-baseline="central" y="60.5" x="280"><tspan dy="0" x="280">chain</tspan></text></g></g><g><line stroke="#999" stroke-width="0.5px" class="200" y2="685" x2="500" y1="33" x1="500" id="actor2"/><g id="root-2"><rect class="actor" ry="3" rx="3" height="65" width="150" stroke="#666" fill="#eaeaea" y="28" x="425"/><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor" alignment-baseline="central" dominant-baseline="central" y="60.5" x="500"><tspan dy="0" x="500">walletFactory</tspan></text></g></g><g><line stroke="#999" stroke-width="0.5px" class="200" y2="685" x2="700" y1="33" x1="700" id="actor3"/><g id="root-3"><rect class="actor" ry="3" rx="3" height="65" width="150" stroke="#666" fill="#eaeaea" y="28" x="625"/><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor" alignment-baseline="central" dominant-baseline="central" y="60.5" x="700"><tspan dy="0" x="700">zoe</tspan></text></g></g><g><line stroke="#999" stroke-width="0.5px" class="200" y2="685" x2="900" y1="33" x1="900" id="actor4"/><g id="root-4"><rect class="actor" ry="3" rx="3" height="65" width="150" stroke="#666" fill="#eaeaea" y="28" x="825"/><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor" alignment-baseline="central" dominant-baseline="central" y="60.5" x="900"><tspan dy="0" x="900">contract</tspan></text></g></g><defs><marker orient="auto" markerHeight="12" markerWidth="12" markerUnits="userSpaceOnUse" refY="5" refX="9" id="arrowhead"><path d="M 0 0 L 10 5 L 0 10 z"/></marker></defs><defs><marker refY="5" refX="4" orient="auto" markerHeight="8" markerWidth="15" id="crosshead"><path style="stroke-dasharray: 0, 0;" d="M 1,2 L 6,7 M 6,2 L 1,7" stroke-width="1pt" stroke="#000000" fill="none"/></marker></defs><defs><marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="18" id="filled-head"><path d="M 18,7 L9,13 L14,7 L9,1 Z"/></marker></defs><defs><marker orient="auto" markerHeight="40" markerWidth="60" refY="15" refX="15" id="sequencenumber"><circle r="6" cy="15" cx="15"/></marker></defs><g><rect class="activation0" ry="0" rx="0" height="276" width="10" stroke="#666" fill="#EDF2AE" y="231" x="695"/></g><g><rect class="activation0" ry="0" rx="0" height="44" width="10" stroke="#666" fill="#EDF2AE" y="325" x="275"/></g><g><rect class="activation0" ry="0" rx="0" height="44" width="10" stroke="#666" fill="#EDF2AE" y="417" x="895"/></g><g><rect class="activation0" ry="0" rx="0" height="46" width="10" stroke="#666" fill="#EDF2AE" y="599" x="275"/></g><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="108" x="178">Offer tx</text><line style="fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine0" y2="139" x2="280" y1="139" x1="75"/><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="154" x="390">Offer Spec</text><line style="fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine0" y2="185" x2="500" y1="185" x1="280"/><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="200" x="600">Offer</text><line style="fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine0" y2="231" x2="700" y1="231" x1="500"/><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="246" x="390">Offer status</text><line style="stroke-dasharray: 3, 3; fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine1" y2="277" x2="280" y1="277" x1="500"/><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="292" x="178">vstorage query</text><line style="fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine0" y2="323" x2="280" y1="323" x1="75"/><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="338" x="175">Offer status</text><line style="stroke-dasharray: 3, 3; fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine1" y2="369" x2="75" y1="369" x1="275"/><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="384" x="803">Proposal</text><line style="fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine0" y2="415" x2="900" y1="415" x1="705"/><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="430" x="800">reallocations</text><line style="stroke-dasharray: 3, 3; fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine1" y2="461" x2="705" y1="461" x1="895"/><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="476" x="598">payouts</text><line style="stroke-dasharray: 3, 3; fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine1" y2="507" x2="500" y1="507" x1="695"/><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="522" x="390">Offer status</text><line style="stroke-dasharray: 3, 3; fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine1" y2="553" x2="280" y1="553" x1="500"/><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="568" x="178">vstorage query</text><line style="fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine0" y2="599" x2="280" y1="599" x1="75"/><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="614" x="175">Offer status</text><line style="stroke-dasharray: 3, 3; fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine1" y2="645" x2="75" y1="645" x1="275"/><g class="actor-man"><line y2="710" x2="75" y1="690" x1="75" id="actor-man-torso4"/><line y2="698" x2="93" y1="698" x1="57" id="actor-man-arms4"/><line y2="710" x2="75" y1="725" x1="57"/><line y2="725" x2="91" y1="710" x1="75"/><circle height="65" width="150" r="15" cy="675" cx="75"/><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor" alignment-baseline="central" dominant-baseline="central" y="732.5" x="75"><tspan dy="0" x="75">client</tspan></text></g><g><rect class="actor" ry="3" rx="3" height="65" width="150" stroke="#666" fill="#eaeaea" y="665" x="205"/><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor" alignment-baseline="central" dominant-baseline="central" y="697.5" x="280"><tspan dy="0" x="280">chain</tspan></text></g><g><rect class="actor" ry="3" rx="3" height="65" width="150" stroke="#666" fill="#eaeaea" y="665" x="425"/><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor" alignment-baseline="central" dominant-baseline="central" y="697.5" x="500"><tspan dy="0" x="500">walletFactory</tspan></text></g><g><rect class="actor" ry="3" rx="3" height="65" width="150" stroke="#666" fill="#eaeaea" y="665" x="625"/><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor" alignment-baseline="central" dominant-baseline="central" y="697.5" x="700"><tspan dy="0" x="700">zoe</tspan></text></g><g><rect class="actor" ry="3" rx="3" height="65" width="150" stroke="#666" fill="#eaeaea" y="665" x="825"/><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor" alignment-baseline="central" dominant-baseline="central" y="697.5" x="900"><tspan dy="0" x="900">contract</tspan></text></g></svg>
\ No newline at end of file
diff --git a/main/guides/getting-started/assets/vstorage-brand-q.mmd b/main/guides/getting-started/assets/vstorage-brand-q.mmd
new file mode 100644
index 000000000..057cddb3a
--- /dev/null
+++ b/main/guides/getting-started/assets/vstorage-brand-q.mmd
@@ -0,0 +1,18 @@
+sequenceDiagram
+  actor client
+
+  box aqua Cosmos SDK layer
+  participant chain
+  end
+
+  box darksalmon Hardened JS VM
+  participant chainStorage
+  participant agoricNames
+  end
+
+    agoricNames->>chainStorage: E(root).makeChildNode('brand')
+    chainStorage-->>agoricNames: brandNode
+    agoricNames-->>chainStorage: E(brandNode).setValue('...IST...')
+    chainStorage->>chain: change('published.agoricNames.brand', '...IST...')
+    client->>chain: query('published.agoricNames.brand')
+    chain-->>client: '...IST...'
diff --git a/main/guides/getting-started/assets/vstorage-brand-q.svg b/main/guides/getting-started/assets/vstorage-brand-q.svg
new file mode 100644
index 000000000..0a5bc5e25
--- /dev/null
+++ b/main/guides/getting-started/assets/vstorage-brand-q.svg
@@ -0,0 +1 @@
+<svg aria-roledescription="sequence" role="graphics-document document" viewBox="-50 -10 1050 550" style="max-width: 1050px; background-color: rgb(255, 255, 255);" xmlns="http://www.w3.org/2000/svg" width="100%" id="graph-div" height="100%"><g><rect class="rect" height="529" width="467" stroke="rgb(0,0,0, 0.5)" fill="darksalmon" y="0" x="483"></rect><text class="text" alignment-baseline="central" dominant-baseline="central" style="text-anchor: middle; font-size: 16px; font-weight: 400;" y="11.5" x="716.5"><tspan dy="0" x="716.5">Hardened JS VM</tspan></text></g><g><rect class="rect" height="529" width="160" stroke="rgb(0,0,0, 0.5)" fill="aqua" y="0" x="200"></rect><text class="text" alignment-baseline="central" dominant-baseline="central" style="text-anchor: middle; font-size: 16px; font-weight: 400;" y="11.5" x="280"><tspan dy="0" x="280">Cosmos SDK layer</tspan></text></g><g><rect class="actor" ry="3" rx="3" height="65" width="150" stroke="#666" fill="#eaeaea" y="454" x="795"></rect><text class="actor" alignment-baseline="central" dominant-baseline="central" style="text-anchor: middle; font-size: 16px; font-weight: 400;" y="486.5" x="870"><tspan dy="0" x="870">agoricNames</tspan></text></g><g><rect class="actor" ry="3" rx="3" height="65" width="150" stroke="#666" fill="#eaeaea" y="454" x="488"></rect><text class="actor" alignment-baseline="central" dominant-baseline="central" style="text-anchor: middle; font-size: 16px; font-weight: 400;" y="486.5" x="563"><tspan dy="0" x="563">chainStorage</tspan></text></g><g><rect class="actor" ry="3" rx="3" height="65" width="150" stroke="#666" fill="#eaeaea" y="454" x="205"></rect><text class="actor" alignment-baseline="central" dominant-baseline="central" style="text-anchor: middle; font-size: 16px; font-weight: 400;" y="486.5" x="280"><tspan dy="0" x="280">chain</tspan></text></g><g><line stroke="#999" stroke-width="0.5px" class="200" y2="454" x2="870" y1="38" x1="870" id="actor3"></line><g id="root-3"><rect class="actor" ry="3" rx="3" height="65" width="150" stroke="#666" fill="#eaeaea" y="33" x="795"></rect><text class="actor" alignment-baseline="central" dominant-baseline="central" style="text-anchor: middle; font-size: 16px; font-weight: 400;" y="65.5" x="870"><tspan dy="0" x="870">agoricNames</tspan></text></g></g><g><line stroke="#999" stroke-width="0.5px" class="200" y2="454" x2="563" y1="38" x1="563" id="actor2"></line><g id="root-2"><rect class="actor" ry="3" rx="3" height="65" width="150" stroke="#666" fill="#eaeaea" y="33" x="488"></rect><text class="actor" alignment-baseline="central" dominant-baseline="central" style="text-anchor: middle; font-size: 16px; font-weight: 400;" y="65.5" x="563"><tspan dy="0" x="563">chainStorage</tspan></text></g></g><g><line stroke="#999" stroke-width="0.5px" class="200" y2="454" x2="280" y1="38" x1="280" id="actor1"></line><g id="root-1"><rect class="actor" ry="3" rx="3" height="65" width="150" stroke="#666" fill="#eaeaea" y="33" x="205"></rect><text class="actor" alignment-baseline="central" dominant-baseline="central" style="text-anchor: middle; font-size: 16px; font-weight: 400;" y="65.5" x="280"><tspan dy="0" x="280">chain</tspan></text></g></g><style>#graph-div{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#graph-div .error-icon{fill:#552222;}#graph-div .error-text{fill:#552222;stroke:#552222;}#graph-div .edge-thickness-normal{stroke-width:2px;}#graph-div .edge-thickness-thick{stroke-width:3.5px;}#graph-div .edge-pattern-solid{stroke-dasharray:0;}#graph-div .edge-pattern-dashed{stroke-dasharray:3;}#graph-div .edge-pattern-dotted{stroke-dasharray:2;}#graph-div .marker{fill:#333333;stroke:#333333;}#graph-div .marker.cross{stroke:#333333;}#graph-div svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#graph-div .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#graph-div text.actor&gt;tspan{fill:black;stroke:none;}#graph-div .actor-line{stroke:grey;}#graph-div .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#graph-div .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#graph-div #arrowhead path{fill:#333;stroke:#333;}#graph-div .sequenceNumber{fill:white;}#graph-div #sequencenumber{fill:#333;}#graph-div #crosshead path{fill:#333;stroke:#333;}#graph-div .messageText{fill:#333;stroke:none;}#graph-div .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#graph-div .labelText,#graph-div .labelText&gt;tspan{fill:black;stroke:none;}#graph-div .loopText,#graph-div .loopText&gt;tspan{fill:black;stroke:none;}#graph-div .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#graph-div .note{stroke:#aaaa33;fill:#fff5ad;}#graph-div .noteText,#graph-div .noteText&gt;tspan{fill:black;stroke:none;}#graph-div .activation0{fill:#f4f4f4;stroke:#666;}#graph-div .activation1{fill:#f4f4f4;stroke:#666;}#graph-div .activation2{fill:#f4f4f4;stroke:#666;}#graph-div .actorPopupMenu{position:absolute;}#graph-div .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#graph-div .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#graph-div .actor-man circle,#graph-div line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#graph-div :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g></g><defs><symbol height="24" width="24" id="computer"><path d="M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z" transform="scale(.5)"></path></symbol></defs><defs><symbol clip-rule="evenodd" fill-rule="evenodd" id="database"><path d="M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z" transform="scale(.5)"></path></symbol></defs><defs><symbol height="24" width="24" id="clock"><path d="M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z" transform="scale(.5)"></path></symbol></defs><defs><marker orient="auto" markerHeight="12" markerWidth="12" markerUnits="userSpaceOnUse" refY="5" refX="9" id="arrowhead"><path d="M 0 0 L 10 5 L 0 10 z"></path></marker></defs><defs><marker refY="5" refX="4" orient="auto" markerHeight="8" markerWidth="15" id="crosshead"><path d="M 1,2 L 6,7 M 6,2 L 1,7" stroke-width="1pt" style="stroke-dasharray: 0px, 0px;" stroke="#000000" fill="none"></path></marker></defs><defs><marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="18" id="filled-head"><path d="M 18,7 L9,13 L14,7 L9,1 Z"></path></marker></defs><defs><marker orient="auto" markerHeight="40" markerWidth="60" refY="15" refX="15" id="sequencenumber"><circle r="6" cy="15" cx="15"></circle></marker></defs><line stroke="#999" stroke-width="0.5px" class="200" y2="454" x2="75" y1="113" x1="75" id="actor0"></line><g class="actor-man"><line y2="78" x2="75" y1="58" x1="75" id="actor-man-torso0"></line><line y2="66" x2="93" y1="66" x1="57" id="actor-man-arms0"></line><line y2="78" x2="75" y1="93" x1="57"></line><line y2="93" x2="91" y1="78" x1="75"></line><circle height="65" width="150" r="15" cy="43" cx="75"></circle><text class="actor" alignment-baseline="central" dominant-baseline="central" style="text-anchor: middle; font-size: 16px; font-weight: 400;" y="100.5" x="75"><tspan dy="0" x="75">client</tspan></text></g><text dy="1em" class="messageText" style="font-size: 16px; font-weight: 400;" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="113" x="717">E(root).makeChildNode('brand')</text><line marker-end="url(#arrowhead)" style="fill: none;" stroke="none" stroke-width="2" class="messageLine0" y2="154" x2="563" y1="154" x1="870"></line><text dy="1em" class="messageText" style="font-size: 16px; font-weight: 400;" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="169" x="717">brandNode</text><line marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine1" style="stroke-dasharray: 3px, 3px; fill: none;" y2="210" x2="870" y1="210" x1="563"></line><text dy="1em" class="messageText" style="font-size: 16px; font-weight: 400;" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="225" x="717">E(brandNode).setValue('...IST...')</text><line marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine1" style="stroke-dasharray: 3px, 3px; fill: none;" y2="266" x2="563" y1="266" x1="870"></line><text dy="1em" class="messageText" style="font-size: 16px; font-weight: 400;" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="281" x="422">change('...brand', '...IST...')</text><line marker-end="url(#arrowhead)" style="fill: none;" stroke="none" stroke-width="2" class="messageLine0" y2="322" x2="280" y1="322" x1="563"></line><text dy="1em" class="messageText" style="font-size: 16px; font-weight: 400;" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="337" x="178">query('...brand')</text><line marker-end="url(#arrowhead)" style="fill: none;" stroke="none" stroke-width="2" class="messageLine0" y2="378" x2="280" y1="378" x1="75"></line><text dy="1em" class="messageText" style="font-size: 16px; font-weight: 400;" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="393" x="178">'...IST...'</text><line marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine1" style="stroke-dasharray: 3px, 3px; fill: none;" y2="434" x2="75" y1="434" x1="280"></line><g class="actor-man"><line y2="499" x2="75" y1="479" x1="75" id="actor-man-torso3"></line><line y2="487" x2="93" y1="487" x1="57" id="actor-man-arms3"></line><line y2="499" x2="75" y1="514" x1="57"></line><line y2="514" x2="91" y1="499" x1="75"></line><circle height="65" width="150" r="15" cy="464" cx="75"></circle><text class="actor" alignment-baseline="central" dominant-baseline="central" style="text-anchor: middle; font-size: 16px; font-weight: 400;" y="521.5" x="75"><tspan dy="0" x="75">client</tspan></text></g></svg>
diff --git a/main/guides/getting-started/assets/zoe-simp.mmd b/main/guides/getting-started/assets/zoe-simp.mmd
new file mode 100644
index 000000000..f21302cfd
--- /dev/null
+++ b/main/guides/getting-started/assets/zoe-simp.mmd
@@ -0,0 +1,14 @@
+sequenceDiagram
+box darksalmon Zoe API (simplified)
+
+  participant agent
+  participant zoe
+  participant contract
+end
+
+    agent->>+zoe: offer(invitation, {give, want}, pmts)
+    zoe-->>agent: userSeat
+    zoe->>+contract: {give, want}
+    contract-->>-zoe: reallocate()
+    agent->>zoe: E(userSeat).getPayouts()
+    zoe-->>-agent: payout payments
diff --git a/main/guides/getting-started/assets/zoe-simp.svg b/main/guides/getting-started/assets/zoe-simp.svg
new file mode 100644
index 000000000..01f4de7a2
--- /dev/null
+++ b/main/guides/getting-started/assets/zoe-simp.svg
@@ -0,0 +1 @@
+<svg aria-roledescription="sequence" role="graphics-document document" viewBox="-50 -10 783 492" style="max-width: 783px; background-color: rgb(255, 255, 255);" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" width="100%" id="mermaid-1691701140603"><g><rect class="rect" height="471" width="683" stroke="rgb(0,0,0, 0.5)" fill="darksalmon" y="0" x="0"/><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="text" alignment-baseline="central" dominant-baseline="central" y="9.5" x="341.5"><tspan dy="0" x="341.5">Zoe API (simplified)</tspan></text></g><style>#mermaid-1691701140603{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-1691701140603 .error-icon{fill:#552222;}#mermaid-1691701140603 .error-text{fill:#552222;stroke:#552222;}#mermaid-1691701140603 .edge-thickness-normal{stroke-width:2px;}#mermaid-1691701140603 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-1691701140603 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-1691701140603 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-1691701140603 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-1691701140603 .marker{fill:#333333;stroke:#333333;}#mermaid-1691701140603 .marker.cross{stroke:#333333;}#mermaid-1691701140603 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-1691701140603 .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-1691701140603 text.actor&gt;tspan{fill:black;stroke:none;}#mermaid-1691701140603 .actor-line{stroke:grey;}#mermaid-1691701140603 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-1691701140603 .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-1691701140603 #arrowhead path{fill:#333;stroke:#333;}#mermaid-1691701140603 .sequenceNumber{fill:white;}#mermaid-1691701140603 #sequencenumber{fill:#333;}#mermaid-1691701140603 #crosshead path{fill:#333;stroke:#333;}#mermaid-1691701140603 .messageText{fill:#333;stroke:none;}#mermaid-1691701140603 .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-1691701140603 .labelText,#mermaid-1691701140603 .labelText&gt;tspan{fill:black;stroke:none;}#mermaid-1691701140603 .loopText,#mermaid-1691701140603 .loopText&gt;tspan{fill:black;stroke:none;}#mermaid-1691701140603 .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-1691701140603 .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-1691701140603 .noteText,#mermaid-1691701140603 .noteText&gt;tspan{fill:black;stroke:none;}#mermaid-1691701140603 .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-1691701140603 .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-1691701140603 .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-1691701140603 .actorPopupMenu{position:absolute;}#mermaid-1691701140603 .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-1691701140603 .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-1691701140603 .actor-man circle,#mermaid-1691701140603 line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-1691701140603 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g/><defs><symbol height="24" width="24" id="computer"><path d="M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z" transform="scale(.5)"/></symbol></defs><defs><symbol clip-rule="evenodd" fill-rule="evenodd" id="database"><path d="M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z" transform="scale(.5)"/></symbol></defs><defs><symbol height="24" width="24" id="clock"><path d="M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z" transform="scale(.5)"/></symbol></defs><g><line stroke="#999" stroke-width="0.5px" class="200" y2="416" x2="80" y1="34" x1="80" id="actor210"/><g id="root-210"><rect class="actor" ry="3" rx="3" height="65" width="150" stroke="#666" fill="#eaeaea" y="29" x="5"/><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor" alignment-baseline="central" dominant-baseline="central" y="61.5" x="80"><tspan dy="0" x="80">agent</tspan></text></g></g><g><line stroke="#999" stroke-width="0.5px" class="200" y2="416" x2="403" y1="34" x1="403" id="actor211"/><g id="root-211"><rect class="actor" ry="3" rx="3" height="65" width="150" stroke="#666" fill="#eaeaea" y="29" x="328"/><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor" alignment-baseline="central" dominant-baseline="central" y="61.5" x="403"><tspan dy="0" x="403">zoe</tspan></text></g></g><g><line stroke="#999" stroke-width="0.5px" class="200" y2="416" x2="603" y1="34" x1="603" id="actor212"/><g id="root-212"><rect class="actor" ry="3" rx="3" height="65" width="150" stroke="#666" fill="#eaeaea" y="29" x="528"/><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor" alignment-baseline="central" dominant-baseline="central" y="61.5" x="603"><tspan dy="0" x="603">contract</tspan></text></g></g><defs><marker orient="auto" markerHeight="12" markerWidth="12" markerUnits="userSpaceOnUse" refY="5" refX="9" id="arrowhead"><path d="M 0 0 L 10 5 L 0 10 z"/></marker></defs><defs><marker refY="5" refX="4" orient="auto" markerHeight="8" markerWidth="15" id="crosshead"><path style="stroke-dasharray: 0, 0;" d="M 1,2 L 6,7 M 6,2 L 1,7" stroke-width="1pt" stroke="#000000" fill="none"/></marker></defs><defs><marker orient="auto" markerHeight="28" markerWidth="20" refY="7" refX="18" id="filled-head"><path d="M 18,7 L9,13 L14,7 L9,1 Z"/></marker></defs><defs><marker orient="auto" markerHeight="40" markerWidth="60" refY="15" refX="15" id="sequencenumber"><circle r="6" cy="15" cx="15"/></marker></defs><g><rect class="activation0" ry="0" rx="0" height="234" width="10" stroke="#666" fill="#EDF2AE" y="142" x="398"/></g><g><rect class="activation0" ry="0" rx="0" height="46" width="10" stroke="#666" fill="#EDF2AE" y="236" x="598"/></g><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="109" x="242">offer(invitation, {give, want}, pmts)</text><line style="fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine0" y2="142" x2="403" y1="142" x1="80"/><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="157" x="239">userSeat</text><line style="stroke-dasharray: 3, 3; fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine1" y2="188" x2="80" y1="188" x1="398"/><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="203" x="506">{give, want}</text><line style="fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine0" y2="234" x2="603" y1="234" x1="408"/><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="249" x="503">reallocate()</text><line style="stroke-dasharray: 3, 3; fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine1" y2="282" x2="408" y1="282" x1="598"/><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="297" x="239">E(userSeat).getPayouts()</text><line style="fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine0" y2="330" x2="398" y1="330" x1="80"/><text style="font-size: 16px; font-weight: 400;" dy="1em" class="messageText" alignment-baseline="middle" dominant-baseline="middle" text-anchor="middle" y="345" x="239">payout payments</text><line style="stroke-dasharray: 3, 3; fill: none;" marker-end="url(#arrowhead)" stroke="none" stroke-width="2" class="messageLine1" y2="376" x2="80" y1="376" x1="398"/><g><rect class="actor" ry="3" rx="3" height="65" width="150" stroke="#666" fill="#eaeaea" y="396" x="5"/><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor" alignment-baseline="central" dominant-baseline="central" y="428.5" x="80"><tspan dy="0" x="80">agent</tspan></text></g><g><rect class="actor" ry="3" rx="3" height="65" width="150" stroke="#666" fill="#eaeaea" y="396" x="328"/><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor" alignment-baseline="central" dominant-baseline="central" y="428.5" x="403"><tspan dy="0" x="403">zoe</tspan></text></g><g><rect class="actor" ry="3" rx="3" height="65" width="150" stroke="#666" fill="#eaeaea" y="396" x="528"/><text style="text-anchor: middle; font-size: 16px; font-weight: 400;" class="actor" alignment-baseline="central" dominant-baseline="central" y="428.5" x="603"><tspan dy="0" x="603">contract</tspan></text></g></svg>
\ No newline at end of file
diff --git a/main/guides/getting-started/contract-rpc.md b/main/guides/getting-started/contract-rpc.md
new file mode 100644
index 000000000..9d4b767f3
--- /dev/null
+++ b/main/guides/getting-started/contract-rpc.md
@@ -0,0 +1,416 @@
+# Smart Wallet Dapp Architecture
+
+The [Agoric Platform](../platform/) consists of smart contracts
+and services such as [Zoe](../zoe/) running in a [Hardened JavaScript](../js-programming/hardened-js.md) VM running on top of a Cosmos SDK consensus layer. Clients interact with the consensus layer by making
+queries and submitting messages in signed transactions. In the Smart
+Wallet Architecture, dapps consist of
+
+- Hardened JavaScript smart contracts
+- clients that can submit offers and query status via the consensus layer
+
+![smart wallet dapp sequence diagram](./assets/sw-dapp-arch.svg)
+
+1. A client formats an offer, signs it, and broadcasts it.
+2. The offer is routed to the `walletFactory` contract, which finds (or creates) the `smartWallet` object associated with the signer's addres and uses it to execute the offer.
+3. The `smartWallet` calls `E(zoe).offer(...)` and monitors the status of
+   the offer, emitting it for clients to query.
+4. Zoe escrows the payments and forwards the proposal to the contract
+   indicated by the offer.
+5. The contract tells Zoe how to reallocate assets.
+6. Zoe ensures that the reallocations respect offer safety and then provides payouts accordingly.
+7. The client's query tells it that the payouts are available.
+
+## Signing and Broadcasting Offers
+
+One way to sign and broadcast offers is with the `agd tx ...` command. For example:
+
+```sh
+agd tx swingset wallet-action --allow-spend "$ACTION" \
+ --chain-id=agoriclocal --from=acct1
+```
+
+<!-- TODO: discuss agoric wallet send? -->
+
+Another is using a wallet signing UI such as Keplr via the [Keplr API](https://docs.keplr.app/api/).
+
+Given sufficient care with key management, a [cosmjs SigningStargateClient](https://cosmos.github.io/cosmjs/latest/stargate/classes/SigningStargateClient.html) or any other client that can deliver a [agoric.swingset.MsgWalletSpendAction](https://github.com/Agoric/agoric-sdk/blob/mainnet1B/golang/cosmos/proto/agoric/swingset/msgs.proto#L70) to a
+[Cosmos SDK endpoint](https://docs.cosmos.network/main/core/grpc_rest) works.
+
+```proto
+message MsgWalletSpendAction {
+    bytes owner = 1;
+    string spend_action = 2;
+}
+```
+
+<!-- TODO: owner field, toAccAddress, base64. working example -->
+
+## Querying VStorage
+
+[VStorage](https://github.com/Agoric/agoric-sdk/tree/master/golang/cosmos/x/vstorage#readme) (for "Virtual Storage") is a key-value store that is
+read-only for clients of the consensus layer.
+From within the JavaScript VM, it is accessed via a `chainStorage` API with a node at each
+key that is write-only; a bit like a `console`.
+
+![vstorage query diagram](./assets/vstorage-brand-q.svg)
+
+The protobuf definition is [agoric.vstorage.Query](https://github.com/Agoric/agoric-sdk/blob/mainnet1B/golang/cosmos/proto/agoric/vstorage/query.proto#L11):
+
+```proto
+service Query {
+  // Return an arbitrary vstorage datum.
+  rpc Data(QueryDataRequest) returns (QueryDataResponse) {
+    option (google.api.http).get = "/agoric/vstorage/data/{path}";
+  }
+
+  // Return the children of a given vstorage path.
+  rpc Children(QueryChildrenRequest)
+    returns (QueryChildrenResponse) {
+      option (google.api.http).get = "/agoric/vstorage/children/{path}";
+  }
+}
+```
+
+We can issue queries using, `agd query ...`:
+
+```sh
+$ agd query vstorage children 'published.agoricNames'
+
+children:
+- brand
+- installation
+- instance
+...
+```
+
+The [Agoric CLI](../agoric-cli/) `follow` command supports vstorage
+query plus some of the marshalling conventions discussed below:
+
+```sh
+$ agoric follow -lF :published.agoricNames.brand
+[
+  [
+    "BLD",
+    slotToVal("board0566","Alleged: BLD brand"),
+  ],
+  [
+    "IST",
+    slotToVal("board0257","Alleged: IST brand"),
+  ],
+...
+]
+```
+
+::: tip vstorage viewer by p2p
+
+The [vstorage-viewer](https://github.com/p2p-org/p2p-agoric-vstorage-viewer) contributed by p2p is often _very_ handy:
+
+[![vstorage viewer screenshot](https://user-images.githubusercontent.com/150986/259798595-40cd22f0-fa01-43a9-b92a-4f0f4813a4f6.png)](https://p2p-org.github.io/p2p-agoric-vstorage-viewer/#https://devnet.rpc.agoric.net/|published,published.agoricNames|)
+
+:::
+
+## Specifying Offers
+
+Recall that for an agent within the JavaScript VM,
+[E(zoe).offer(...)](../../reference/zoe-api/zoe.md#e-zoe-offer-invitation-proposal-paymentkeywordrecord-offerargs) takes an `Invitation` and optionally a `Proposal` with `{ give, want }`, a `PaymentKeywordRecord`, and `offerArgs`; it returns a `UserSeat` from which we can [getPayouts()](../../reference/zoe-api/user-seat.md#e-userseat-getpayouts).
+
+![Zoe API diagram, simplified](./assets/zoe-simp.svg)
+
+In the Smart Wallet architecture, a client uses an `OfferSpec` to
+tell its `SmartWallet` how to conduct an offer.
+It includes an `invitationSpec` to say what invitation to pass to Zoe. For example:
+
+<<< @/snippets/test-marshal.js#exInvitationSpec
+
+Here the `SmartWallet` calls `E(zoe).getPublicFacet(instance)` and then
+uses the `publicInvitationMaker` and `invitationArgs` to call the contract's
+public facet.
+
+![InvitationSpec sequence diagram](./assets/inv-spec.svg)
+
+<!-- TODO: SVG diagram in /assets/ -->
+
+::: tip InvitationSpec Patterns
+For more `InvitationSpec` examples, see [How to make an offer from a dapp via the smart wallet? \(InvitationSpec Patterns\) · #8082](https://github.com/Agoric/agoric-sdk/discussions/8082) July 2023
+:::
+
+The client fills in the proposal, which instructs the `SmartWallet`
+to withdraw corresponding payments to send to Zoe.
+
+<<< @/snippets/test-marshal.js#exBridgeAction
+
+But recall the `spend_action` field in `MsgWalletSpendAction` is a string.
+In fact, the expected string in this case is of the form:
+
+<<< @/snippets/test-marshal.js#exSpendActionCk
+
+We recognize `"method":"executeOffer"` and such, but
+`body:`, `slots:`, and `$1.Alleged: Gold Brand` need further explanation.
+
+### Marshalling Amounts and Instances
+
+::: tip Watch: Office Hours Discussion of Marshal
+
+- [Office Hours: ... marshalling w/board ids, ... \#8069](https://github.com/Agoric/agoric-sdk/discussions/8069) July 2023
+
+:::
+
+To start with, amounts include `bigint`s. The `@endo/marshal` API handles those:
+
+<<< @/snippets/test-marshal.js#marshal-json-steroids
+
+To marshal brands and instances, recall from the discussion of [marshal in eventual send](../js-programming/eventual-send.md#e-and-marshal-a-closer-look)
+how remotables are marshalled with a translation table.
+
+The [Agoric Board](../../reference/repl/board.md) is a well-known name service that issues
+plain string identifiers for object identities and other passable _keys_ (that is: passable values excluding promises and errors).
+Contracts and other services can use its table of identifiers as a marshal
+translation table:
+
+<<< @/snippets/test-marshal.js#boardMarshal
+
+To reverse the process, clients can mirror the on-chain board translation
+table by synthesizing a remotable for each reference marker received:
+
+<<< @/snippets/test-marshal.js#makeBoardContext
+
+Now we can take results of vstorage queries for `Data('published.agoricNames.brand')` and `Data('published.agoricNames.instance')` unmarshal ("ingest") them:
+
+<<< @/snippets/test-marshal.js#useBoardContext
+
+And now we have all the pieces of the `BridgeAction` above.
+The marshalled form is:
+
+<<< @/snippets/test-marshal.js#exBridgeActionEq
+
+We still don't quite have a single string for the `spend_action` field.
+We need to `stringify` the `CapData`:
+
+<<< @/snippets/test-marshal.js#exSpendAction
+
+And now we have the `spend_action` in the expected form:
+
+<<< @/snippets/test-marshal.js#exSpendActionCk
+
+The wallet factory can now `JSON.parse` this string
+into `CapData` and unmarshal it using a board marshaller
+to convert board ids back into brands, instances, etc.
+
+## Smart Wallet VStorage Topics
+
+Each smart wallet has a node under `published.wallet`:
+
+```sh
+$ agd query vstorage children published.wallet
+children:
+- agoric1h4d3mdvyqhy2vnw2shq4pm5duz5u8wa33jy6cl
+- agoric1qx2kqqdk80fdasldzkqu86tg4rhtaufs00na3y
+- agoric1rhul0rxa2z829a6xkrvuq8m8wjwekyduv7dzfj
+...
+```
+
+Smart wallet clients should start by getting the **current** state
+at `published.${ADDRESS}.current` and then subscribe to **updates**
+at `published.${ADDRESS}`. For example, we can use `agoric follow -lF`
+to get the latest `.current` record:
+
+```sh
+$ agoric follow -lF :published.wallet.agoric1h4d3mdvyqhy2vnw2shq4pm5duz5u8wa33jy6cl.current
+{
+  liveOffers: [],
+  offerToPublicSubscriberPaths: [
+    [
+      "openVault-1691526589332",
+      {
+        vault: "published.vaultFactory.managers.manager0.vaults.vault2",
+      },
+    ],
+  ],
+  offerToUsedInvitation: [
+    [
+      "openVault-1691526589332",
+      {
+        brand: slotToVal("board0074","Alleged: Zoe Invitation brand"),
+        value: [
+          {
+            description: "manager0: MakeVault",
+            handle: slotToVal(null,"Alleged: InvitationHandle"),
+            installation: slotToVal("board05815","Alleged: BundleIDInstallation"),
+            instance: slotToVal("board00360","Alleged: InstanceHandle"),
+          },
+        ],
+      },
+    ],
+  ],
+  purses: [
+    {
+      balance: {
+        brand: slotToVal("board0074"),
+        value: [],
+      },
+      brand: slotToVal("board0074"),
+    },
+  ],
+}
+```
+
+Then we can use `agoric follow` without any options to
+get a stream of updates as they appear.
+
+```sh
+agoric follow :published.wallet.agoric1h4d3mdvyqhy2vnw2shq4pm5duz5u8wa33jy6cl
+...
+{
+  status: {
+    id: "closeVault-1691526597848",
+    invitationSpec: {
+      invitationMakerName: "CloseVault",
+      previousOffer: "openVault-1691526589332",
+      source: "continuing",
+    },
+    numWantsSatisfied: 1,
+    payouts: {
+      Collateral: {
+        brand: slotToVal("board05557","Alleged: ATOM brand"),
+        value: 13000000n,
+      },
+      Minted: {
+        brand: slotToVal("board0257","Alleged: IST brand"),
+        value: 215000n,
+      },
+    },
+    proposal: {
+      give: {
+        Minted: {
+          brand: slotToVal("board0257"),
+          value: 5750000n,
+        },
+      },
+      want: {},
+    },
+    result: "your vault is closed, thank you for your business",
+  },
+  updated: "offerStatus",
+}
+```
+
+Note that status updates are emitted at several points in the handling of
+each offer:
+
+- when the `getOfferResult()` promise settles
+- when the `numWantsSatisfied()` promise settles
+- when the payouts have been deposited.
+
+And we may get `balance` updates at any time.
+
+The data published via vstorage are available within the JavaScript VM
+via the [getPublicTopics](https://github.com/Agoric/agoric-sdk/blob/mainnet1B/packages/smart-wallet/src/smartWallet.js#L585) API.
+
+The [CurrentWalletRecord](https://github.com/Agoric/agoric-sdk/blob/mainnet1B/packages/smart-wallet/src/smartWallet.js#L71-L76) type is:
+
+```ts
+{
+   purses: Array<{brand: Brand, balance: Amount}>,
+   offerToUsedInvitation: Array<[ offerId: string, usedInvitation: Amount ]>,
+   offerToPublicSubscriberPaths: Array<[ offerId: string, publicTopics: { [subscriberName: string]: string } ]>,
+   liveOffers: Array<[import('./offers.js').OfferId, import('./offers.js').OfferStatus]>,
+}
+```
+
+And [UpdateRecord](https://github.com/Agoric/agoric-sdk/blob/mainnet1B/packages/smart-wallet/src/smartWallet.js#L80-L83) is:
+
+```ts
+     { updated: 'offerStatus', status: import('./offers.js').OfferStatus }
+   | { updated: 'balance'; currentAmount: Amount }
+   | { updated: 'walletAction'; status: { error: string } }
+```
+
+Both of those types include [OfferStatus](https://github.com/Agoric/agoric-sdk/blob/mainnet1B/packages/smart-wallet/src/offers.js#L21C14-L26C5) by reference:
+
+```ts
+import('./offers.js').OfferSpec & {
+ error?: string,
+ numWantsSatisfied?: number
+ result?: unknown | typeof UNPUBLISHED_RESULT,
+ payouts?: AmountKeywordRecord,
+}
+```
+
+## VBank Assets and Cosmos Bank Balances
+
+Note that balances of assets such as **IST** and **BLD** are already
+available via consensus layer queries to the Cosmos SDK [bank module](https://docs.cosmos.network/main/modules/bank).
+
+```sh
+$ agd query bank balances agoric1h4d3mdvyqhy2vnw2shq4pm5duz5u8wa33jy6cl -o json | jq .balances
+[
+  {
+    "denom": "ibc/BA313C4A19DFBF943586C0387E6B11286F9E416B4DD27574E6909CABE0E342FA",
+    "amount": "100000000"
+  },
+  {
+    "denom": "ubld",
+    "amount": "10000000"
+  },
+  {
+    "denom": "uist",
+    "amount": "215000"
+  }
+]
+```
+
+They are not published redundantly in vstorage and nor does the
+smart wallet emit `balance` updates for them.
+
+To get the correspondence between certain cosmos denoms (chosen by governance)
+and their ERTP brands, issuers, and display info such as `decimalPlaces`,
+see `published.agoricNames.vbankAsset`:
+
+```sh
+agoric follow -lF :published.agoricNames.vbankAsset
+[
+  [
+    "ibc/BA313C4A19DFBF943586C0387E6B11286F9E416B4DD27574E6909CABE0E342FA",
+    {
+      brand: slotToVal("board05557","Alleged: ATOM brand"),
+      denom: "ibc/BA313C4A19DFBF943586C0387E6B11286F9E416B4DD27574E6909CABE0E342FA",
+      displayInfo: {
+        assetKind: "nat",
+        decimalPlaces: 6,
+      },
+      issuer: slotToVal("board02656","Alleged: ATOM issuer"),
+      issuerName: "ATOM",
+      proposedName: "ATOM",
+    },
+  ],
+  [
+    "ubld",
+    {
+      brand: slotToVal("board0566","Alleged: BLD brand"),
+      denom: "ubld",
+      displayInfo: {
+        assetKind: "nat",
+        decimalPlaces: 6,
+      },
+      issuer: slotToVal("board0592","Alleged: BLD issuer"),
+      issuerName: "BLD",
+      proposedName: "Agoric staking token",
+    },
+  ],
+  [
+    "uist",
+    {
+      brand: slotToVal("board0257","Alleged: IST brand"),
+      denom: "uist",
+      displayInfo: {
+        assetKind: "nat",
+        decimalPlaces: 6,
+      },
+      issuer: slotToVal("board0223","Alleged: IST issuer"),
+      issuerName: "IST",
+      proposedName: "Agoric stable token",
+    },
+  ],
+...
+]
+```
diff --git a/main/guides/getting-started/start-a-project.md b/main/guides/getting-started/start-a-project.md
index e74a248df..644be964d 100644
--- a/main/guides/getting-started/start-a-project.md
+++ b/main/guides/getting-started/start-a-project.md
@@ -1,10 +1,7 @@
 # Starting a Project
 
-Before we begin, you should use `agoric --version` to double-check that you have [installed the Agoric SDK](./README.md).
+After you've [installed the Agoric SDK](./README.md) (_recall: use `agoric --version` to confirm._), you're ready for your first _Agoric Dapp_ (decentralized application).
 
-If it is available, then you successfully installed the Agoric SDK. If not, then please do so before continuing. 
-
-After you've [installed the Agoric SDK](./README.md), then you're ready for your first _Agoric Dapp_ (decentralized application) by continuing the instructions below. 
 
 We'll be running **three terminal windows**. See below: 
 
@@ -28,8 +25,8 @@ This presentation includes starting a project, but note an outdated detail:
 
 ## Initialize the Default Dapp Template
 
-The following section will explain how to initialize the default Dapp template, install the Agoric SDK
-into the Dapp template, and then launch the Agoric Solo Client and Simulated Blockchain.
+The following section will explain how to initialize the default Dapp template, and install the Agoric SDK
+into the Dapp template.
 
 Use the [Agoric CLI](../agoric-cli/) to fetch from a Dapp template
 and put it in a directory _not located in your `agoric-sdk` clone_. We named the directory "demo", but you can name the folder whatever you like.
@@ -41,15 +38,16 @@ cd $HOME
 agoric init --dapp-template dapp-card-store demo # use `agoric init --dapp-template dapp-card-store $DIRNAME` with any name you like
 cd demo
 agoric install community-dev # will take a minute to install all dependencies
-agoric start --verbose --reset # `agoric start --reset` to start over
 ```
 
 Learn more about the [available Dapp templates](../dapps/dapp-templates.md).
 
-::: tip Mac Dev Tools
-On a Mac, you must first install
-[Xcode](https://apps.apple.com/us/app/xcode/id497799835)
-:::
+## Start Agoric Solo Client and Simulated Blockchain
+
+```sh
+# Terminal 1
+agoric start --verbose --reset # `agoric start --reset` to start over
+```
 
 Leave this process and its logs running in its own terminal window.
 
diff --git a/main/guides/integration/assets/cosmos-api.png b/main/guides/integration/assets/cosmos-api.png
new file mode 100644
index 000000000..81521be43
Binary files /dev/null and b/main/guides/integration/assets/cosmos-api.png differ
diff --git a/main/guides/integration/chain-integration.md b/main/guides/integration/chain-integration.md
new file mode 100644
index 000000000..22920a106
--- /dev/null
+++ b/main/guides/integration/chain-integration.md
@@ -0,0 +1,50 @@
+# Integrating with Agoric Network
+
+The Agoric network builds a blockchain for smart contracts in JavaScript using the `cosmos-sdk`. Cosmos-sdk is software that provides the widely-used Tendermint/CometBFT consensus and best-in-class support for chain operations like staking and governance. For simplicity of chain integration, the Agoric Network works identically to the Cosmos Hub, except using different parameters (e.g., `ubld` instead of `uatom`). 
+
+
+## TL;DR for Cosmos-experienced
+
+This section points at relevant reference documentation for the underlying `cosmos-sdk` and CometBFT/Tendermint consensus engine, and summarizes the differences.
+
+The Agoric Network currently uses `cosmos-sdk` v0.45. The general Cosmos documentation for this version can be [found here](https://docs.cosmos.network/v0.45/), including structure and`golang` documentation, and REST API documentation. 
+
+Use the [v0.45.1 version of the  REST API](https://v1.cosmos.network/rpc/v0.45.1) for accessing the chain. To use the "Try it out" functionality, change the Base URL to `agoric-api.polkachu.com`:
+
+
+| ![Alt name of image](./assets/cosmos-api.png) |
+|-|
+
+The chain can also be accessed via JavaScript using the [`cosmjs` library](https://github.com/cosmos/cosmjs) (and [associated tutorials](https://tutorials.cosmos.network/tutorials/7-cosmjs/1-cosmjs-intro.html)), or using [CosmosKit](https://cosmoskit.com/).
+
+## Chain resources
+
+- The base network entry points for the Agoric chain are specified in the [network config](https://main.agoric.net/network-config). 
+- Additional chain information, including tokens and their logos, gas fee information for wallets, additional entry points, and explorers is maintained in the Cosmos [Chain Registry](https://github.com/cosmos/chain-registry/tree/master/agoric).
+- The source code for the Agoric Network runtime and contracts is in [the Agoric open source repository](https://github.com/Agoric/agoric-sdk) on GitHub. 
+- The base unit for staking is `ubld` (corresponding to `uatom` for Cosmos Hub)
+- The command utility of the agoric chain is `agd` (corresponding to [`simd` for the Cosmos Hub](https://docs.cosmos.network/v0.45/run-node/interact-node.html)). 
+---
+# Tools
+## Building `agd`
+
+The `agd` command line tool can be built as described in the Agoric [getting-started documentation](https://docs.agoric.com/guides/getting-started#build-the-cosmic-swingset-package). The linked step builds `agd`. To confirm that `agd` is in your `$PATH`, execute
+```
+agd version --long
+```
+
+# FAQ
+
+- How are transactions encoded?
+https://docs.cosmos.network/v0.45/core/encoding.html
+- What data is needed to create a transaction (last block hash, nonce, sender public key, etc.)?
+https://docs.cosmos.network/v0.45/core/transactions.html#transaction-generation
+- What data is signed and how is that data obtained (for example truncated SHA256 of transaction data)?
+https://docs.cosmos.network/v0.45/core/transactions.html#transaction-generation
+- Do transactions expire?
+Transaction do not expire unless you specify --timeout-height: https://docs.cosmos.network/v0.45/core/transactions.html#transaction-generation
+However they do have a sequence number and may be invalidated if another transaction with the same sequence number is processed by the chain
+- How are addresses generated?
+https://docs.cosmos.network/v0.45/basics/accounts.html
+- How is the blockchain queried?
+JSON-RPC, gRPC, REST  https://docs.cosmos.network/v0.45/run-node/interact-node.html
\ No newline at end of file
diff --git a/main/guides/js-programming/eventual-send.md b/main/guides/js-programming/eventual-send.md
index 2b58b1af6..6ace9cb3c 100644
--- a/main/guides/js-programming/eventual-send.md
+++ b/main/guides/js-programming/eventual-send.md
@@ -1,8 +1,7 @@
 # Eventual Send with E()
 
 In web browsers, a common pattern of remote communication is using the
-[asynchronous fetch API with promises](
-https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous/Introducing#promises):
+[asynchronous fetch API with promises](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous/Introducing#promises):
 
 <<< @/snippets/test-distributed-programming.js#asyncFetch
 
@@ -12,7 +11,7 @@ a [deploy script](../getting-started/deploying.md) may want to use the
 [Zoe Service API](/reference/zoe-api/zoe.md) to install a contract on a blockchain.
 But the deploy script cannot call `zoe.install(bundle)`, because it does not have local
 access to the `zoe` object. However, the deploy
-script is given a `zoe` *remote presence*. To call methods on the
+script is given a `zoe` _remote presence_. To call methods on the
 actual Zoe object, the deploy script can do:
 
 ```js
@@ -32,16 +31,16 @@ use too much compute time or heap space. The smart contracts also run in separat
 
 What happens when we call `E(zoe).install(bundle)` is an _eventual send_:
 
- 1. A message consisting of the method name `install`
+1.  A message consisting of the method name `install`
     with the `bundle` argument [marshaled](./far.md)
     to a flat string and queued for delivery to
     the vat that `zoe` comes from.
- 2. `E(zoe).install(bundle)` returns a promise for the result.
- 3. The `then` and `catch` methods queue callbacks for when the promise
+2.  `E(zoe).install(bundle)` returns a promise for the result.
+3.  The `then` and `catch` methods queue callbacks for when the promise
     is resolved or rejected.
     Execution continues until the stack is empty and thus this
     turn through the event loop completes.
- 4. _Eventually_ `zoe` responds, which results in a new message
+4.  _Eventually_ `zoe` responds, which results in a new message
     in this vat's message queue and a new turn through the event loop.
     The message is de-serialized and the results are passed to the relevant callback.
 
@@ -51,9 +50,9 @@ must be _asynchronous_.
 
 The `E()` wrapper works with:
 
-  - Remote presences (local proxies for objects in remote vats).
-  - Local objects (in the same vat).
-  - Promises for remote presences or local objects.
+- Remote presences (local proxies for objects in remote vats).
+- Local objects (in the same vat).
+- Promises for remote presences or local objects.
 
 In all cases, `E(x).method(...args)` returns a promise.
 
@@ -68,13 +67,61 @@ round trip suffices for both method calls.
 The `E()` function creates a
 forwarder that doesn't know what methods the remote object has.
 If you misspell or incorrectly capitalize the method name,
-the local environment can't tell you've done so. You'll only find out at runtime when the 
+the local environment can't tell you've done so. You'll only find out at runtime when the
 remote object complains that it doesn't know that method.
 
 If an ordinary synchronous call (`obj.method()`) fails because the method doesn't exist, the `obj` may be remote, in which case `E(obj).method()` might work.
 :::
 
+## E() and Marshal: A Closer Look
+
+::: tip Watch: Office Hours Discussion of Marshal
+
+- [Office Hours: ... marshalling w/board ids, ... \#8069](https://github.com/Agoric/agoric-sdk/discussions/8069) July 2023
+
+:::
+
+If you just want to use the SDK to write smart contracts, **feel
+free to skip this section**. But in case you're working
+on something that requires more detailed understanding,
+let's take a look at how `E(x).method(...args)` is marshalled.
+
+In [@endo/marshal](https://github.com/endojs/endo/tree/master/packages/marshal#readme) docs, we see:
+
+> The `marshal` module helps with conversion of "capability-bearing data", in
+> which some portion of the structured input represents "pass-by-proxy" or
+> "pass-by-presence" objects that should be serialized into values referencing
+> special "slot identifiers". The `toCapData()` function returns a "CapData"
+> structure: an object with a `body` containing a serialization of the input data,
+> and a `slots` array holding the slot identifiers. `fromCapData()` takes this
+> CapData structure and returns the object graph. There is no generic way to
+> convert between pass-by-presence objects and slot identifiers, so the marshaller
+> is parameterized with a pair of functions to create the slot identifiers and turn
+> them back into proxies/presences.
+
+For example, we can marshal a remotable counter using the slot identifier `c1`:
+
+<<< @/snippets/test-marshal.js#marshal-remotable
+
+Each end of a connection between vats typically keeps
+a table to translate slots to capabilities and back:
+
+<<< @/snippets/test-marshal.js#marshal-table
+
+Each call to `E(rx)` makes a proxy for the reciver `rx`;
+each `E(rx).p` property reference invokes the `get` proxy trap.
+From the `get` trap, `E` returns a function that queues
+`rx`, `p`, and its arguments (in marshalled form) and returns a promise:
+
+<<< @/snippets/test-marshal.js#marshal-messages-e
+
+Now we can see the result in some detail. Note the way the promise from
+`E(zoe).install()` is passed to `E(zoe).startInstance()`.
+
+<<< @/snippets/test-marshal.js#marshal-messages
+
 ::: tip Watch: How Agoric Solves Reentrancy Hazards (November 2020)
 for more on eventual send and remote communication
+
 <iframe width="560" height="315" src="https://www.youtube.com/embed/38oTyVv_D9I" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
 :::
diff --git a/main/guides/js-programming/far.md b/main/guides/js-programming/far.md
index 916d75ea8..39d3cb813 100644
--- a/main/guides/js-programming/far.md
+++ b/main/guides/js-programming/far.md
@@ -1,33 +1,38 @@
-
 # Far(), Remotable, and Marshaling
 
-To export objects such as from the [Example Secure JavaScript Code](./hardened-js.md#example-hardened-javascript-code)
-to make them available to other vats, mark them as _remotable_ using [Far](#far-api):
+Let's look more closely at an [eventual send](./eventual-send.md) between vats:
+
+![counter remote presence](../assets/remote-presence-fig.svg)
+
+In the exporting vat, we'll take the `makeCounter` [Hardened JavaScript example](./hardened-js.md#example-hardened-javascript-code) and refine it to make _remotable_ counters
+by marking them with [Far](#far-api):
 
-<<< @/snippets/test-distributed-programming.js#importFar
 <<< @/snippets/test-distributed-programming.js#makeFarCounter
 
 ## Marshaling by Copy or by Presence
 
 Recall that the first step in an [eventual send](./eventual-send.md#eventual-send) is
-to _marshal_ the method name and arguments (i.e., to make them into a single string).
-This is like [JSON.stringify](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify), but it can handle values such as `undefined` and `BigInt`s.
-Also, while many forms of data are copied between vats,
-remotables are marshalled so that they become remote _presences_ when unmarshaled:
+to _marshal_ the method name and arguments. [Marshalling](https://en.wikipedia.org/wiki/Marshalling_%28computer_science%29) is transforming a data structure into a format suitable for storage or transmission.
+The [@endo/marshal](https://github.com/endojs/endo/tree/master/packages/marshal#readme) package uses [JSON](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON), but it can handle
+Javascript values that cannot be expressed directly as JSON,
+such as `undefined` and `BigInt`s.
 
-![counter remote presence](../assets/remote-presence-fig.svg)
+<<< @/snippets/test-marshal.js#marshal-json-steroids
 
+Also, while many forms of data are copied between vats,
+remotables are marshalled so that they become remote _presences_ when unmarshaled.
 Another vat can then make and use the exported counters:
 
 <<< @/snippets/test-distributed-programming.js#useFarCounter
 
 ## Pass Styles and harden
 
-Calls to remote presences must only contain *passable* arguments and return *passable* results.
+Calls to remote presences must only contain _passable_ arguments and return _passable_ results.
 There are three kinds of passables:
-   * Remotables: objects with methods that can be called using `E()` eventual send notation.
-   * Pass-by-copy data, such as numbers or hardened structures.
-   * Promises for passables.
+
+- Remotables: objects with methods that can be called using `E()` eventual send notation.
+- Pass-by-copy data, such as numbers or hardened structures.
+- Promises for passables.
 
 Every object exported from a smart contract, such as `publicFacet` or
 `creatorFacet`, must be passable. All objects used in your contract's external API must
@@ -47,39 +52,47 @@ is `20n` in the local vat but `10n` in the remote vat. (Worse: the remote vat
 might be the same as the local vat.) Requiring `harden()` for pass-by-copy
 data leads to behavior across vats that is straightforward to reason about.
 
-### passStyleOf API
+## passStyleOf API
+
+<<< @/snippets/test-distributed-programming.js#import-pass-style
 
 `passStyleOf(passable)`
- - `passable` `{Passable}`
- - Returns: `{PassStyle}`
+
+- `passable` `{Passable}`
+- Returns: `{PassStyle}`
 
 A Passable is a hardened value that may be marshalled.
 It is classified as one of the following `PassStyle` values:
-   * Atomic pass-by-copy primitives (`"undefined" | "null" |
-     "boolean" | "number" | "bigint" | "string" | "symbol"`).
-   * Pass-by-copy containers that contain other Passables (`"copyArray" | "copyRecord"`).
-   * Special cases, which also contain other Passables (`"error"`).
-   * So-called `PassableCap` leafs (`"remotable" | "promise"`).
+
+- Atomic pass-by-copy primitives (`"undefined" | "null" | "boolean" | "number" | "bigint" | "string" | "symbol"`).
+- Pass-by-copy containers that contain other Passables (`"copyArray" | "copyRecord"`).
+- Special cases, which also contain other Passables (`"error"`).
+- So-called `PassableCap` leafs (`"remotable" | "promise"`).
 
 ::: tip Check `passStyleOf` when handling untrusted structured data
 Just as you would use `typeof` to check that an argument is
 a string or number, use `passStyleOf` when you expect, say, a `copyRecord`;
 this prevents malicious clients from playing tricks with cyclic data etc.
 :::
+
 ## Far() API
 
+<<< @/snippets/test-distributed-programming.js#importFar
+
 `Far(farName, object-with-methods)`
+
 - `farName` `{ String }`
-- `object-with-methods` ` { Object }` `[remotable={}]`
--  Returns: A `Remotable` object.
+- `object-with-methods` `{ Object }` `[remotable={}]`
+- Returns: A `Remotable` object.
 
-The `farName` parameter gives the `Remotable` an *interface name* for debugging purposes, which only shows
-up when logged through the `console`, for example with `console.log`. 
+The `farName` parameter gives the `Remotable` an _interface name_ for debugging purposes, which only shows
+up when logged through the `console`, for example with `console.log`.
 
-The `object-with-methods` parameter should be an object whose properties are the functions serving 
+The `object-with-methods` parameter should be an object whose properties are the functions serving
 as the object's methods.
 
 The `Far()` function marks an object as remotable. `Far()` also:
+
 - Hardens the object.
 - Checks that all property values are functions and throws an error otherwise.
   - Accessors (i.e., `get()` and `set()`) are not allowed.
diff --git a/main/guides/js-programming/hardened-js.md b/main/guides/js-programming/hardened-js.md
index de617d7d9..b8dce5b31 100644
--- a/main/guides/js-programming/hardened-js.md
+++ b/main/guides/js-programming/hardened-js.md
@@ -254,11 +254,13 @@ calls for limiting globals to immutable data and deterministic functions
 (eliminating "ambient authority" in the diagram above).
 
 Hardened JavaScript includes a `Compartment` API for enforcing OCap discipline.
-Only the [standard, built-in objects](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects)
-such as `Object`, `Array`, and `Promise` are globally available by default
-(with an option for carefully controlled exceptions such as `console.log`).
-With the default `Compartment` options, the non-deterministic `Math.random`
-is not available and `Date.now()` always returns `NaN`.
+Only the [standard, built-in
+objects](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects)
+such as `Object`, `Array`, and `Promise` are globally available by default (with
+an option for carefully controlled exceptions such as `console.log`).  With the
+default `Compartment` options, the non-deterministic `Math.random` and
+`Date.now()` are not available.  (Earlier versions of Hardened JavaScript
+provided `Compartment` with a `Date.now()` that always returned `NaN`.)
 
 Almost all existing JS code was written to run under Node.js or inside a browser,
 so it's easy to conflate the environment features with JavaScript itself. For
diff --git a/main/guides/zoe/actual-contracts/README.md b/main/guides/zoe/actual-contracts/README.md
index 5c4ee2894..27474b48a 100644
--- a/main/guides/zoe/actual-contracts/README.md
+++ b/main/guides/zoe/actual-contracts/README.md
@@ -2,9 +2,21 @@
 
 <Zoe-Version/>
 
-The following Zoe contracts are automatically deployed on-chain:
-
+In the [mainnet-1B release of agoric-sdk](https://github.com/Agoric/agoric-sdk/releases/tag/mainnet1B-rc3), the chain is configured to automatically deploy the following Zoe contracts. A [community post on Inter Protocol Vaults Contract Implementations](https://community.agoric.com/t/inter-protocol-vaults-contract-implementations/261) has a high level description.
 
 | Contract | Description |
 | --- | --- |
+| centralSupply | used to initialize the vbank IST purse balance based on supply reported from the cosmos x/bank module |
+| mintHolder | use to hold mints for BLD as well as inter-chain assets such as ATOM, USDC, and USDT |
+| committee | represents the Economic Committee that governs Inter Protocol parameters |
+| binaryVoteCounter | instantiated once for each question that a committee votes on |
+| econCommitteeCharter | controls what questions can be put to the economic committee |
+| contractGovernor | each governed contract is started by starting its governor |
 | [PSM](./PSM.md) | The Parity Stability Module (PSM) supports efficiently minting and burning Inter Stable Tokens (ISTs) in exchange for approved external stable tokens. |
+| vaultFactory| allows users to mint IST backed by collateral such as ATOM; hands off vaults to auctioneer when value of collateral in a vault falls below a governed threshold |
+| auctioneer | auctions collateral from liquidated vaults |
+| fluxAggregator | aggregates prices from oracle oeprators |
+| scaledPriceAuthoriy | provides prices for tradeable assets such as ATOM in terms of idealized "oracle ATOM" prices from oracle operators |
+| feeDistributor | collects fees from Inter Protocol contracts and distributes to reserve and/or stakers |
+| assetReserve | holds assets in reserve to back IST |
+| walletFactory | executes Zoe offers on behalf of users |
diff --git a/main/reference/zoe-api/zoe-data-types.md b/main/reference/zoe-api/zoe-data-types.md
index e6f93f2f1..80308ab16 100644
--- a/main/reference/zoe-api/zoe-data-types.md
+++ b/main/reference/zoe-api/zoe-data-types.md
@@ -83,7 +83,10 @@ is exclusively yours and no one else has access to it.
 
 ## Keyword
 
-An ASCII identifier string that must begin with an upper case letter.
+An ASCII identifier string that must begin with an upper case letter
+in order to avoid collisions with JavaScript properties such as `toString`.
+(For more detail, see [Why do Zoe keywords have to start with a capital letter? #8241](https://github.com/Agoric/agoric-sdk/discussions/8241).)
+`NaN` and `Infinity` are also not allowed as keywords.
 
 ## MutableQuote
 
@@ -161,4 +164,4 @@ can be created using the helper functions
 Of course, as with any JavaScript datatype, you can also manually create **TransferParts**.
 If you manually create a **TransferPart** and don't include the *fromSeat*, *toSeat*, and/or
 *fromAmounts* fields, you'll need to set the missing fields to **undefined**. (Note that if you don't
-include the *toAmounts* field, there's no need to set it to **undefined**; you can simply omit it.)
\ No newline at end of file
+include the *toAmounts* field, there's no need to set it to **undefined**; you can simply omit it.)
diff --git a/package.json b/package.json
index b9b4f637e..311a1738f 100644
--- a/package.json
+++ b/package.json
@@ -37,7 +37,10 @@
   "homepage": "https://github.com/Agoric/documentation#readme",
   "dependencies": {
     "@agoric/zoe": "beta",
-    "@endo/marshal": "^0.6.3",
+    "@endo/far": "^0.2.19",
+    "@endo/marshal": "^0.8.6",
+    "@endo/patterns": "^0.2.3",
+    "@endo/pass-style": "^0.1.6",
     "typescript": "^4.0.3"
   },
   "devDependencies": {
@@ -46,6 +49,7 @@
     "@agoric/ertp": "beta",
     "@agoric/notifier": "beta",
     "@agoric/solo": "beta",
+    "@agoric/vats": "beta",
     "@endo/bundle-source": "^2.1.1",
     "@endo/eventual-send": "^0.14.8",
     "@endo/init": "^0.5.43",
@@ -62,7 +66,7 @@
     "eslint-plugin-prettier": "^3.4.0",
     "import-meta-resolve": "^1.1.1",
     "prettier": "^1.19.1",
-    "ses": "^0.16.0",
+    "ses": "^0.16.1",
     "vuepress": "^1.8.2",
     "vuepress-plugin-check-md": "0.0.2"
   },
diff --git a/snippets/test-distributed-programming.js b/snippets/test-distributed-programming.js
index 4a6f8ab2e..a14d10823 100644
--- a/snippets/test-distributed-programming.js
+++ b/snippets/test-distributed-programming.js
@@ -4,8 +4,11 @@ import { test } from './prepare-test-env-ava.js';
 
 import { E } from '@endo/eventual-send';
 // #region importFar
-import { Far, passStyleOf } from '@endo/marshal';
+import { Far } from '@endo/far';
 // #endregion importFar
+// #region import-pass-style
+import { passStyleOf } from '@endo/pass-style';
+// #endregion import-pass-style
 
 test('remote counter', async t => {
   const assert = cond => t.true(cond);
diff --git a/snippets/test-hardened-js.js b/snippets/test-hardened-js.js
index dbbf1359f..d7162be77 100644
--- a/snippets/test-hardened-js.js
+++ b/snippets/test-hardened-js.js
@@ -57,9 +57,15 @@ test('assign to frozen property fails', t => {
   );
 });
 
-test('Date.now() always returns NaN', t => {
+test('Date.now() is not available or returns NaN', t => {
   const c1 = new Compartment();
-  t.is(c1.evaluate(`Date.now()`), NaN);
+  try {
+    t.is(c1.evaluate(`Date.now()`), NaN, 'legacy Date.now() is NaN');
+  } catch (e) {
+    // New API: throws instead of NaN.
+    t.throws(() => c1.evaluate(`Date.now()`), { message: /^secure mode\b/ });
+    t.throws(() => c1.evaluate(`new Date()`), { message: /^secure mode\b/ });
+  }
 });
 
 test('Math.random is not available', t => {
diff --git a/snippets/test-marshal.js b/snippets/test-marshal.js
new file mode 100644
index 000000000..15657e79b
--- /dev/null
+++ b/snippets/test-marshal.js
@@ -0,0 +1,486 @@
+// @ts-check
+/* eslint-disable import/order -- https://github.com/endojs/endo/issues/1235 */
+import { test } from './prepare-test-env-ava.js';
+
+import { E, Far } from '@endo/far';
+import { passStyleOf } from '@endo/pass-style';
+import { makeCopyBag } from '@endo/patterns';
+
+import { makeFakeBoard } from '@agoric/vats/tools/board-utils.js';
+
+// #region marshal-import
+import { makeMarshal } from '@endo/marshal';
+import { AmountMath } from '@agoric/ertp';
+
+/** @type {import('@endo/marshal').MakeMarshalOptions} */
+const smallCaps = { serializeBodyFormat: 'smallcaps' };
+// #endregion marshal-import
+
+const { Fail } = assert;
+
+test.serial('marshal.toCapData is like JSON.stringify on steroids', async t => {
+  // #region marshal-json-steroids
+  const m = makeMarshal(undefined, undefined, smallCaps);
+
+  const stuff = harden([1, 2, 3n, undefined, NaN]);
+  const capData = m.toCapData(stuff);
+  t.deepEqual(m.fromCapData(capData), stuff);
+  // #endregion marshal-json-steroids
+  t.deepEqual(capData, {
+    body: '#[1,2,"+3","#undefined","#NaN"]',
+    slots: [],
+  });
+
+  t.deepEqual(
+    capData.body.replace(/^#/, ''),
+    JSON.stringify([1, 2, '+3', '#undefined', '#NaN']),
+  );
+
+  t.log(capData.body);
+});
+
+/**
+ * "The marshal module helps with conversion of "capability-bearing data",
+ * in which some portion of the structured input represents
+ * "pass-by-proxy" or "pass-by-presence" objects.
+ * These should be serialized into markers that
+ * refer to special "reference identifiers".
+ * These identifiers are collected in an array,
+ * and the serialize() function returns a two-element structure
+ * known as "CapData": a body that contains the usual string,
+ * and a new slots array that holds the reference identifiers.
+ * unserialize() takes this CapData structure and
+ * returns the object graph.
+ * The marshaller must be taught (with a pair of callbacks)
+ * how to create the presence markers,
+ * and how to turn these markers back into proxies/presences."
+ * -- https://github.com/endojs/endo/tree/master/packages/marshal#readme
+ */
+test.serial(
+  'remotables are passed between vats using reference identifiers',
+  async t => {
+    // #region marshal-remotable
+    const makeCounter = () => {
+      let count = 0;
+      return Far('counter', {
+        incr: () => (count += 1),
+        decr: () => (count -= 1),
+      });
+    };
+
+    const counter1 = makeCounter();
+    t.is(passStyleOf(counter1), 'remotable');
+
+    const valToSlot = new Map([[counter1, 'c1']]);
+    const slotToVal = new Map([['c1', counter1]]);
+    const convertValToSlot = v => valToSlot.get(v);
+    const convertSlotToVal = (slot, _iface) => slotToVal.get(slot);
+    const m = makeMarshal(convertValToSlot, convertSlotToVal, smallCaps);
+
+    const capData = m.toCapData(counter1);
+    t.deepEqual(capData, {
+      body: '#"$0.Alleged: counter"',
+      slots: ['c1'],
+    });
+    t.deepEqual(m.fromCapData(capData), counter1);
+    // #endregion marshal-remotable
+    t.log(capData);
+  },
+);
+
+// #region marshal-table
+const makeSlot1 = (val, serial) => {
+  const prefix = Promise.resolve(val) === val ? 'promise' : 'object';
+  return `${prefix}${serial}`;
+};
+
+const makeTranslationTable = (makeSlot, makeVal) => {
+  const valToSlot = new Map();
+  const slotToVal = new Map();
+
+  const convertValToSlot = val => {
+    if (valToSlot.has(val)) return valToSlot.get(val);
+    const slot = makeSlot(val, valToSlot.size);
+    valToSlot.set(val, slot);
+    slotToVal.set(slot, val);
+    return slot;
+  };
+
+  const convertSlotToVal = (slot, iface) => {
+    if (slotToVal.has(slot)) return slotToVal.get(slot);
+    if (makeVal) {
+      const val = makeVal(slot, iface);
+      valToSlot.set(val, slot);
+      slotToVal.set(slot, val);
+      return val;
+    }
+    throw Error(`no such ${iface}: ${slot}`);
+  };
+
+  return harden({ convertValToSlot, convertSlotToVal });
+};
+// #endregion marshal-table
+
+/**
+ * Marshal is an important part of [how eventual send works][1].
+ *
+ * "What happens when we call `E(zoe).install(bundle)` is an _eventual send_:
+ * 1. A message consisting of the method name `install`
+ *    with the `bundle` argument is marshaled..."
+ *
+ * [1]: https://docs.agoric.com/guides/js-programming/eventual-send.html#eventual-send
+ */
+test.serial(
+  'marshal messages from E(zoe).install(), E(zoe).startInstance()',
+  async t => {
+    // #region marshal-messages-e
+    const { convertValToSlot, convertSlotToVal } = makeTranslationTable(
+      makeSlot1,
+    );
+    const m = makeMarshal(convertValToSlot, convertSlotToVal, smallCaps);
+
+    const outgoingMessageQueue = [];
+    // E work-alike for illustration
+    const E2 = obj =>
+      new Proxy(obj, {
+        get: (target, method) => (...args) => {
+          const msg = harden([target, [method, args]]);
+          outgoingMessageQueue.push(m.toCapData(msg));
+          return new Promise(_resolve => {});
+        },
+      });
+    // #endregion marshal-messages-e
+
+    // #region marshal-messages
+    const zoe = Far('ZoeService', {});
+    const bundle = { bundleFormat: 'xyz' };
+    const installationP = E2(zoe).install(bundle);
+    const startP = E2(zoe).startInstance(installationP);
+    harden(startP); // suppress usage lint
+    t.deepEqual(outgoingMessageQueue, [
+      {
+        body:
+          '#["$0.Alleged: ZoeService",["install",[{"bundleFormat":"xyz"}]]]',
+        slots: ['object0'],
+      },
+      {
+        body: '#["$0.Alleged: ZoeService",["startInstance",["&1"]]]',
+        slots: ['object0', 'promise1'],
+      },
+    ]);
+    // #endregion marshal-messages
+    t.log(outgoingMessageQueue[1]);
+  },
+);
+
+/** @typedef {import('@endo/pass-style').Remotable} Brand */
+
+/**
+ * The Agoric Board is a well-known name service that issues
+ * plain string identifiers for object identities.
+ *
+ * The board supports using its table of identifiers as a marshal
+ * translation table. (Promises and Errors are not supported. Only
+ * passable _keys_.)
+ *
+ * Data published to vstorage is typically marshalled using a board marshaler.
+ */
+test.serial(
+  'game "contract" publishes data using board translation table',
+  async t => {
+    const vstorage = new Map();
+    const makeVstorageNode = key => {
+      return harden({
+        setValue: val => vstorage.set(key, val),
+        makeChildNode: name => makeVstorageNode(`${key}.${name}`),
+      });
+    };
+
+    // NOTE: this test mock passes {body, slots} to .setValue()
+    // The real vstorage .setValue() only takes a string.
+    // So currently, we JSON.stringify({body, slots}) again.
+    /**
+     * @param {StorageNode} parent
+     * @param {string} name
+     * @param {Marshaller} m
+     */
+    const makeRecorder = (parent, name, m) => {
+      const node = parent.makeChildNode(name);
+      return harden({
+        write: async val => node.setValue(await E(m).toCapData(val)),
+      });
+    };
+
+    const theBoard = makeFakeBoard();
+
+    const asset = {
+      gold: { brand: Far('Gold Brand', {}) },
+      victory: { brand: Far('Victory Brand', {}) },
+    };
+
+    // #region boardMarshal
+    /** @type {Record<string, Brand>} */
+    const brands = {
+      gold: asset.gold.brand,
+      victory: asset.victory.brand,
+    };
+
+    // explicitly register brand using the board API
+    const victoryBrandBoardId = await E(theBoard).getId(brands.victory);
+    t.is(victoryBrandBoardId, 'board0371');
+
+    // When the publishing marshaler needs a reference marker for something
+    // such as the gold brand, it issues a new board id.
+    const pubm = E(theBoard).getPublishingMarshaller();
+    const brandData = await E(pubm).toCapData(brands);
+    t.deepEqual(brandData, {
+      body: `#${JSON.stringify({
+        gold: '$0.Alleged: Gold Brand',
+        victory: '$1.Alleged: Victory Brand',
+      })}`,
+      slots: ['board0592', 'board0371'],
+    });
+    // #endregion boardMarshal
+
+    const contract1 = async (node, rom) => {
+      const treasure = Far('Treasure', {});
+
+      const { add, make } = AmountMath;
+      const mkSemi = (brand, entries) => make(brand, makeCopyBag(entries));
+      let victories = mkSemi(brands.victory, []);
+
+      // Use the read-only marshaler to avoid publishing sensitive things such as treasure.
+      const statusTopic = makeRecorder(node, 'status', rom);
+      await statusTopic.write({ victories });
+
+      let rng = 5;
+      const doBattle = async enemy => {
+        await null;
+        rng = (rng * rng) % 7;
+        if (rng > 3) {
+          victories = add(victories, mkSemi(brands.victory, [[enemy, 1n]]));
+          // oops! we didn't mean to publish treasure!
+          await statusTopic.write({ treasure, victories });
+        }
+      };
+
+      return harden({ publicFacet: { doBattle } });
+    };
+
+    // The board provides a read-only marshaler to avoid accidentally publishing
+    // sensitive things.
+    const rom = E(theBoard).getReadonlyMarshaller();
+
+    const node1 = makeVstorageNode('player1');
+    const game1 = await contract1(node1, rom);
+    await E(game1.publicFacet).doBattle('troll');
+    await E(game1.publicFacet).doBattle('witch');
+    await E(game1.publicFacet).doBattle('giant');
+    await E(game1.publicFacet).doBattle('troll');
+    await E(game1.publicFacet).doBattle('giant');
+
+    t.log(vstorage.get('player1.status'));
+
+    t.deepEqual(
+      [...vstorage.entries()],
+      [
+        [
+          'player1.status',
+          {
+            body: `#${JSON.stringify({
+              treasure: '$0.Alleged: Treasure',
+              victories: {
+                brand: '$1.Alleged: Victory Brand',
+                value: {
+                  '#tag': 'copyBag',
+                  payload: [
+                    ['troll', '+1'],
+                    ['giant', '+2'],
+                  ],
+                },
+              },
+            })}`,
+            // Note the read-only marshaler emits a `null` slot
+            // for unpublished remotables.
+            slots: [null, 'board0371'],
+          },
+        ],
+      ],
+    );
+  },
+);
+
+/**
+ * Off-chain clients can mirror the on-chain board translation table
+ * by synthesizing a remotable for each reference marker received.
+ */
+// #region makeBoardContext
+const makeBoardContext = () => {
+  const synthesizeRemotable = (_slot, iface) =>
+    Far(iface.replace(/^Alleged: /, ''), {});
+
+  const { convertValToSlot, convertSlotToVal } = makeTranslationTable(
+    slot => Fail`unknown id: ${slot}`,
+    synthesizeRemotable,
+  );
+  const marshaller = makeMarshal(convertValToSlot, convertSlotToVal, smallCaps);
+
+  /** Read-only board work-alike. */
+  const board = harden({
+    getId: convertValToSlot,
+    getValue: convertSlotToVal,
+  });
+
+  return harden({
+    board,
+    marshaller,
+    /**
+     * Unmarshall capData, synthesizing a Remotable for each boardID slot.
+     *
+     * @type {(cd: import("@endo/marshal").CapData<string>) => unknown }
+     */
+    ingest: marshaller.fromCapData,
+  });
+};
+// #endregion makeBoardContext
+
+test.serial('ingest data from vstorage', async t => {
+  // From vstorage, we might get brand info such as:
+  const brandData = {
+    body: `#${JSON.stringify({
+      gold: '$0.Alleged: Gold Brand',
+      victory: '$1.Alleged: Victory Brand',
+    })}`,
+    slots: ['board0592', 'board0371'],
+  };
+
+  // We can unmarshal it, using a translation table that we keep around:
+  const clientContext = makeBoardContext();
+  const brands = clientContext.ingest(brandData);
+
+  // The values of the object will be fresh object identities,
+  // but we know what the keys look like.
+  t.deepEqual(Object.keys(brands), ['gold', 'victory']);
+
+  // The we might get player status:
+  const playerStatus = {
+    body: `#${JSON.stringify({
+      treasure: '$0.Alleged: Treasure',
+      victories: {
+        brand: '$1.Alleged: Victory Brand',
+        value: {
+          '#tag': 'copyBag',
+          payload: [
+            ['troll', '+1'],
+            ['giant', '+2'],
+          ],
+        },
+      },
+    })}`,
+    // Note the read-only marshaler emits a `null` slot
+    // for unpublished remotables.
+    slots: [null, 'board0371'],
+  };
+
+  // We don't get a stable object identity for the treasure,
+  // but let's look at the rest:
+  const { treasure: _null, ...rest } = clientContext.ingest(playerStatus);
+  t.log(rest);
+
+  // Now we can treat the unmarshalled data as ordinary passable data,
+  // including object identities such as brands.victory:
+  t.deepEqual(rest, {
+    victories: {
+      brand: brands.victory,
+      value: makeCopyBag([
+        ['troll', 1n],
+        ['giant', 2n],
+      ]),
+    },
+  });
+});
+
+test.serial('assemble an offer spend action', async t => {
+  const instanceQueryResult = {
+    body: `#${JSON.stringify({
+      game1: '$0.Alleged: Instance',
+    })}`,
+    slots: ['board123'],
+  };
+  // #region useBoardContext
+  const clientContext = makeBoardContext();
+
+  const brandQueryResult = {
+    body: `#${JSON.stringify({
+      gold: '$1.Alleged: Gold Brand',
+      victory: '$0.Alleged: Victory Brand',
+    })}`,
+    slots: ['board0371', 'board32342'],
+  };
+  const brands = clientContext.ingest(brandQueryResult);
+  const { game1: instance } = clientContext.ingest(instanceQueryResult);
+  // #endregion useBoardContext
+
+  t.log('reference info from vstorage', { instance, brands });
+
+  // #region exInvitationSpec
+  /** @type {import('@agoric/smart-wallet').InvitationSpec} */
+  const invitationSpec = {
+    source: 'contract',
+    instance,
+    publicInvitationMaker: 'makeBattleInvitation',
+    invitationArgs: ['troll'],
+  };
+  // #endregion exInvitationSpec
+
+  // #region exBridgeAction
+  /** @type {import('@agoric/smart-wallet').BridgeAction} */
+  const action = harden({
+    method: 'executeOffer',
+    offer: {
+      id: 'battle7651',
+      invitationSpec,
+      proposal: {
+        give: { Gold: AmountMath.make(brands.gold, 100n) },
+      },
+    },
+  });
+  // #endregion exBridgeAction
+
+  // #region exBridgeActionEq
+  t.deepEqual(clientContext.marshaller.toCapData(action), {
+    body: `#${JSON.stringify({
+      method: 'executeOffer',
+      offer: {
+        id: 'battle7651',
+        invitationSpec: {
+          instance: '$0.Alleged: Instance',
+          invitationArgs: ['troll'],
+          publicInvitationMaker: 'makeBattleInvitation',
+          source: 'contract',
+        },
+        proposal: {
+          give: {
+            Gold: { brand: '$1.Alleged: Gold Brand', value: '+100' },
+          },
+        },
+      },
+    })}`,
+    slots: ['board123', 'board32342'],
+  });
+  // #endregion exBridgeActionEq
+  t.log(action.offer);
+
+  // #region exSpendAction
+  const spendAction = JSON.stringify(
+    clientContext.marshaller.toCapData(action),
+  );
+  // #endregion exSpendAction
+
+  // #region exSpendActionCk
+  t.regex(spendAction, /^{"body":"#.*","slots":\["board123","board32342"\]}$/);
+  const goldStuff =
+    '\\"brand\\":\\"$1.Alleged: Gold Brand\\",\\"value\\":\\"+100\\"';
+  t.true(spendAction.includes(goldStuff));
+  // #endregion exSpendActionCk
+});
diff --git a/yarn.lock b/yarn.lock
index ec5eadaf7..83e58369f 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -10,11 +10,35 @@
     "@agoric/assert" "^0.3.15"
     n-readlines "^1.0.0"
 
+"@agoric/access-token@^0.4.21":
+  version "0.4.21"
+  resolved "https://registry.yarnpkg.com/@agoric/access-token/-/access-token-0.4.21.tgz#508101390377b05301d2c1657790a4ad8dc499e9"
+  integrity sha512-wnsH3K7psw+kHCNf5vSYdBpz2uqLVnLxBsEtq5mnCrTc8pO5O/653x1mGM02k6QNi02K9QjFnWsdCgXPaRgEuQ==
+  dependencies:
+    "@agoric/assert" "^0.6.0"
+    n-readlines "^1.0.0"
+    tmp "^0.2.1"
+
 "@agoric/assert@^0.3.15", "@agoric/assert@beta":
   version "0.3.15"
   resolved "https://registry.yarnpkg.com/@agoric/assert/-/assert-0.3.15.tgz#149d120790b76bb79ca9a02f265d8e7a8a904a87"
   integrity sha512-6Kb0mtRoAd3O3VwnEXnGpy+ldqD+nB4OSZdgfKZkGn+apN9nLQP4OStEZKeG+jWsgBIzpNE61LrXv6HnBMCX+Q==
 
+"@agoric/assert@^0.4.0":
+  version "0.4.0"
+  resolved "https://registry.yarnpkg.com/@agoric/assert/-/assert-0.4.0.tgz#144b0c93290bec2fb2c87da37d755d0e7d1a256e"
+  integrity sha512-KVAuDJPZ5B49S8LUGFgbsFEbr8KhR0REiqvxRUrlAJB1CVLbsIF/ywnz6XG1Bf8FSdFdxKtvlv8sK1aeM1B0jw==
+
+"@agoric/assert@^0.5.1":
+  version "0.5.1"
+  resolved "https://registry.yarnpkg.com/@agoric/assert/-/assert-0.5.1.tgz#f118129c3d091108528dec08a31f5f65c26de0c6"
+  integrity sha512-1BOAJ9rMgZejm3s/LEd5CDzSdTeF5TCV+5xZctjfkVsbmGpZ/+B0ip1COYGZQ+XrVnkJuux60L3Ux9LwPIZgRg==
+
+"@agoric/assert@^0.6.0":
+  version "0.6.0"
+  resolved "https://registry.yarnpkg.com/@agoric/assert/-/assert-0.6.0.tgz#43ede53cf0943f3e9038f597f776e52500446e41"
+  integrity sha512-bpY9ul5egbVlmdf9RtDfxh1WQaDSOCzqcAxyqE771rbkv+QYs46oZc4oUVHi7wt3g5LVXj/JsKgLkJEKpEl1BA==
+
 "@agoric/babel-generator@^7.17.4", "@agoric/babel-generator@^7.17.6":
   version "7.17.6"
   resolved "https://registry.yarnpkg.com/@agoric/babel-generator/-/babel-generator-7.17.6.tgz#75ff4629468a481d670b4154bcfade11af6de674"
@@ -46,6 +70,18 @@
     rollup "^2.47.0"
     source-map "^0.7.3"
 
+"@agoric/cache@^0.3.2":
+  version "0.3.2"
+  resolved "https://registry.yarnpkg.com/@agoric/cache/-/cache-0.3.2.tgz#19c3576b72084c3b2409fa4b2fd8f534531c0788"
+  integrity sha512-cFLMiY9OI2Xp7aOAlAmZF/4H6rwaxhtzCfOJ8UiMIKE+4JXkhMLO2FtvGBUWFw40/Q9JsWRWziPs7otuFVQ6Ng==
+  dependencies:
+    "@agoric/internal" "^0.3.2"
+    "@agoric/notifier" "^0.6.2"
+    "@agoric/store" "^0.9.2"
+    "@agoric/vat-data" "^0.5.2"
+    "@endo/far" "^0.2.18"
+    "@endo/marshal" "^0.8.5"
+
 "@agoric/captp@^1.10.8":
   version "1.10.8"
   resolved "https://registry.yarnpkg.com/@agoric/captp/-/captp-1.10.8.tgz#c823f4edbe4c3acd80b6cfd87dbb42a5bf463138"
@@ -57,6 +93,33 @@
     "@agoric/nat" "^4.1.0"
     "@agoric/promise-kit" "^0.2.29"
 
+"@agoric/casting@^0.4.2":
+  version "0.4.2"
+  resolved "https://registry.yarnpkg.com/@agoric/casting/-/casting-0.4.2.tgz#2d89cd3fcb312ed56ba67ca3e301dc043ff224d5"
+  integrity sha512-TiCG7hIg9Wp8Ud0PF7XSrTlqQWdczDac7QdSUWuBDodrlk3qw/5Ktcb5BoD0vFyARNZsB9PZq0cBRNYtjHj/Bg==
+  dependencies:
+    "@agoric/internal" "^0.3.2"
+    "@agoric/notifier" "^0.6.2"
+    "@agoric/spawner" "^0.6.8"
+    "@agoric/store" "^0.9.2"
+    "@cosmjs/encoding" "^0.30.1"
+    "@cosmjs/proto-signing" "^0.30.1"
+    "@cosmjs/stargate" "^0.30.1"
+    "@cosmjs/tendermint-rpc" "^0.30.1"
+    "@endo/far" "^0.2.18"
+    "@endo/init" "^0.5.56"
+    "@endo/lockdown" "^0.1.28"
+    "@endo/marshal" "^0.8.5"
+    "@endo/promise-kit" "^0.2.56"
+    node-fetch "^2.6.0"
+
+"@agoric/cosmic-proto@^0.3.0":
+  version "0.3.0"
+  resolved "https://registry.yarnpkg.com/@agoric/cosmic-proto/-/cosmic-proto-0.3.0.tgz#c9d31d3946c91fbb1630f89d8ba63a662bcdacc5"
+  integrity sha512-cIunby6gs53sGkHx3ALraREbfVQXvsIcObMjQQ0/tZt5HVqwoS7Y1Qj1Xl0ZZvqE8B1Zyk7QMDj829mbTII+9g==
+  dependencies:
+    protobufjs "^7.0.0"
+
 "@agoric/cosmic-swingset@^0.34.4", "@agoric/cosmic-swingset@beta":
   version "0.34.4"
   resolved "https://registry.yarnpkg.com/@agoric/cosmic-swingset/-/cosmic-swingset-0.34.4.tgz#606c67803a25cb194474da1294212c5705a574e7"
@@ -123,6 +186,37 @@
     "@agoric/same-structure" "^0.1.29"
     "@agoric/store" "^0.6.8"
 
+"@agoric/ertp@^0.14.2":
+  version "0.14.2"
+  resolved "https://registry.yarnpkg.com/@agoric/ertp/-/ertp-0.14.2.tgz#7c1df4efa402eda4ec8286cf6b659129e5b91aaa"
+  integrity sha512-0/6rW5mT952+MmL+9p+wdvtF3GkHMokQ7S0e+qOtzIDhdfM+5Yn7F5PsUMGnRHMyWEeL9MBSfDBUFJ4Z0sELow==
+  dependencies:
+    "@agoric/assert" "^0.4.0"
+    "@agoric/nat" "^4.1.0"
+    "@agoric/notifier" "^0.4.0"
+    "@agoric/store" "^0.7.2"
+    "@agoric/swingset-vat" "^0.28.0"
+    "@agoric/vat-data" "^0.3.1"
+    "@endo/eventual-send" "^0.15.3"
+    "@endo/marshal" "^0.6.7"
+    "@endo/promise-kit" "^0.2.41"
+
+"@agoric/ertp@^0.16.2":
+  version "0.16.2"
+  resolved "https://registry.yarnpkg.com/@agoric/ertp/-/ertp-0.16.2.tgz#0e41ffb80a635af9729c65cbcd6158abbf16b83e"
+  integrity sha512-4+CbrkWw2dCYlVAYH+31jFMlwWqw29bak+Rg6qkMuCAp5BpxyBc4DthdovOjwwOBqkBd3QBKrnvkoD9Ltc3YHQ==
+  dependencies:
+    "@agoric/assert" "^0.6.0"
+    "@agoric/notifier" "^0.6.2"
+    "@agoric/store" "^0.9.2"
+    "@agoric/swingset-vat" "^0.32.2"
+    "@agoric/vat-data" "^0.5.2"
+    "@endo/eventual-send" "^0.17.2"
+    "@endo/far" "^0.2.18"
+    "@endo/marshal" "^0.8.5"
+    "@endo/nat" "^4.1.27"
+    "@endo/promise-kit" "^0.2.56"
+
 "@agoric/eventual-send@^0.14.0":
   version "0.14.0"
   resolved "https://registry.yarnpkg.com/@agoric/eventual-send/-/eventual-send-0.14.0.tgz#72412cc5d84dcac78077f92a43d5bd58401e3938"
@@ -136,6 +230,28 @@
     "@agoric/eventual-send" "^0.14.0"
     "@agoric/marshal" "^0.5.0"
 
+"@agoric/governance@^0.10.3":
+  version "0.10.3"
+  resolved "https://registry.yarnpkg.com/@agoric/governance/-/governance-0.10.3.tgz#d930b3da8c8e6362ddcbd8c7ac2ec3f090c57f1d"
+  integrity sha512-DmaZAJ7u5Tpsh3GscqLkxkZfVl5qg6fD905gdKx/b5xahzF65KIcOz48qUVFqZm/l4N4n1TzIazeAApsLpD7Pw==
+  dependencies:
+    "@agoric/assert" "^0.6.0"
+    "@agoric/ertp" "^0.16.2"
+    "@agoric/internal" "^0.3.2"
+    "@agoric/notifier" "^0.6.2"
+    "@agoric/store" "^0.9.2"
+    "@agoric/swingset-vat" "^0.32.2"
+    "@agoric/time" "^0.3.2"
+    "@agoric/vat-data" "^0.5.2"
+    "@agoric/vats" "^0.15.1"
+    "@agoric/zoe" "^0.26.2"
+    "@endo/captp" "^3.1.1"
+    "@endo/eventual-send" "^0.17.2"
+    "@endo/far" "^0.2.18"
+    "@endo/marshal" "^0.8.5"
+    "@endo/nat" "^4.1.27"
+    "@endo/promise-kit" "^0.2.56"
+
 "@agoric/governance@^0.4.1":
   version "0.4.1"
   resolved "https://registry.yarnpkg.com/@agoric/governance/-/governance-0.4.1.tgz#439fa45c205103bedf5ca1bd97e6ddcb34f23b3f"
@@ -153,6 +269,23 @@
     "@agoric/store" "^0.6.8"
     "@agoric/zoe" "^0.21.1"
 
+"@agoric/governance@^0.7.0":
+  version "0.7.0"
+  resolved "https://registry.yarnpkg.com/@agoric/governance/-/governance-0.7.0.tgz#15ee226b4ee27a3dbf4f9b02c4b5fe74aca1d902"
+  integrity sha512-46lMphbXPl47CNwFqgLXFyI9L716dbl0IvdufxixUYv5K308iVydiZhaFOgGgRQY+oRJ7oTHekPDO78GVlPOCw==
+  dependencies:
+    "@agoric/assert" "^0.4.0"
+    "@agoric/ertp" "^0.14.2"
+    "@agoric/nat" "^4.1.0"
+    "@agoric/notifier" "^0.4.0"
+    "@agoric/store" "^0.7.2"
+    "@agoric/zoe" "^0.24.0"
+    "@endo/captp" "^2.0.7"
+    "@endo/eventual-send" "^0.15.3"
+    "@endo/far" "^0.2.3"
+    "@endo/marshal" "^0.6.7"
+    "@endo/promise-kit" "^0.2.41"
+
 "@agoric/import-bundle@^0.2.33":
   version "0.2.33"
   resolved "https://registry.yarnpkg.com/@agoric/import-bundle/-/import-bundle-0.2.33.tgz#beb5b086842275c7da88321cb836cbd898ca4011"
@@ -172,6 +305,43 @@
   resolved "https://registry.yarnpkg.com/@agoric/install-ses/-/install-ses-0.5.29.tgz#605b599cc47c6a3f33a0f9bfeece3e6c04e7e8c4"
   integrity sha512-l7feHQQyYz4YAakuf4KnAmGoDIVPXUncDwHckhMlvu5850I1sbBMjibuKuz4ypAf91FX7eK5flVolgWYA7V2eg==
 
+"@agoric/inter-protocol@^0.16.1":
+  version "0.16.1"
+  resolved "https://registry.yarnpkg.com/@agoric/inter-protocol/-/inter-protocol-0.16.1.tgz#ace188e046bb63b0afd2d79065671d26dab53868"
+  integrity sha512-1SJLBpeLsgXdJEK4CjzQ2QgLgCJg+OJv8M3dKy9MDMK+ajhQRCB2ySQtGbS9KXgwdpj4FFudKb0/+QaGhgfukg==
+  dependencies:
+    "@agoric/assert" "^0.6.0"
+    "@agoric/ertp" "^0.16.2"
+    "@agoric/governance" "^0.10.3"
+    "@agoric/internal" "^0.3.2"
+    "@agoric/notifier" "^0.6.2"
+    "@agoric/store" "^0.9.2"
+    "@agoric/time" "^0.3.2"
+    "@agoric/vat-data" "^0.5.2"
+    "@agoric/vats" "^0.15.1"
+    "@agoric/zoe" "^0.26.2"
+    "@endo/captp" "^3.1.1"
+    "@endo/eventual-send" "^0.17.2"
+    "@endo/far" "^0.2.18"
+    "@endo/marshal" "^0.8.5"
+    "@endo/nat" "^4.1.27"
+    agoric "^0.21.1"
+    jessie.js "^0.3.2"
+
+"@agoric/internal@^0.3.2":
+  version "0.3.2"
+  resolved "https://registry.yarnpkg.com/@agoric/internal/-/internal-0.3.2.tgz#a1242947083ab46cbd34613add8bacbd0c9dc443"
+  integrity sha512-iCgZE2NabhDKBJ+EfTeVqWUcoNvgxNfnw/dMF57yKnRn3E9iOqt7Iyx+DloTGBu5a1ZyywdQo4G2cFWrMX3Q7g==
+  dependencies:
+    "@agoric/zone" "^0.2.2"
+    "@endo/far" "^0.2.18"
+    "@endo/marshal" "^0.8.5"
+    "@endo/patterns" "^0.2.2"
+    "@endo/promise-kit" "^0.2.56"
+    "@endo/stream" "^0.3.25"
+    anylogger "^0.21.0"
+    jessie.js "^0.3.2"
+
 "@agoric/marshal@^0.5.0":
   version "0.5.0"
   resolved "https://registry.yarnpkg.com/@agoric/marshal/-/marshal-0.5.0.tgz#f3beb3d53b99c0198cd8df4b5cd97a4ba2c468c3"
@@ -197,6 +367,31 @@
     "@agoric/marshal" "^0.5.0"
     "@agoric/promise-kit" "^0.2.29"
 
+"@agoric/notifier@^0.4.0":
+  version "0.4.0"
+  resolved "https://registry.yarnpkg.com/@agoric/notifier/-/notifier-0.4.0.tgz#1958f7fe105d95c0a338ed5a3ad25e891e6f37b6"
+  integrity sha512-4FtawDGpUhifczOwG4+z+yg3R5HfupLgUS8G+T8a5efe42y/z9CzaOeSn/1vvD9CX1M7Y/RKsZB21MLlee3+Cw==
+  dependencies:
+    "@agoric/assert" "^0.4.0"
+    "@endo/eventual-send" "^0.15.3"
+    "@endo/marshal" "^0.6.7"
+    "@endo/promise-kit" "^0.2.41"
+
+"@agoric/notifier@^0.6.2":
+  version "0.6.2"
+  resolved "https://registry.yarnpkg.com/@agoric/notifier/-/notifier-0.6.2.tgz#d32404671a042267321ef5df7cf5ce0f16d3e777"
+  integrity sha512-2Hi8u2TXtsk9Ix0L8xfRMGut1c+w7jiM8Wt4Ys2bgfI/ybdJ4FtDIBvHF1hFU0rSbhUicuKAN85Sok+MkDNcug==
+  dependencies:
+    "@agoric/assert" "^0.6.0"
+    "@agoric/internal" "^0.3.2"
+    "@agoric/store" "^0.9.2"
+    "@agoric/swing-store" "^0.9.1"
+    "@agoric/swingset-vat" "^0.32.2"
+    "@agoric/vat-data" "^0.5.2"
+    "@endo/far" "^0.2.18"
+    "@endo/marshal" "^0.8.5"
+    "@endo/promise-kit" "^0.2.56"
+
 "@agoric/pegasus@^0.5.1":
   version "0.5.1"
   resolved "https://registry.yarnpkg.com/@agoric/pegasus/-/pegasus-0.5.1.tgz#38b8bbd27cc1eef237a387a1e524e543618a156c"
@@ -218,6 +413,26 @@
     "@agoric/vats" "^0.5.1"
     "@agoric/zoe" "^0.21.1"
 
+"@agoric/pegasus@^0.7.2":
+  version "0.7.12"
+  resolved "https://registry.yarnpkg.com/@agoric/pegasus/-/pegasus-0.7.12.tgz#277cea70db3f4896639c72e7e622fbacda62c0c3"
+  integrity sha512-yjAvr12tYff26CUOD8zX9r320eiTLMR83JQZBM7BGP4TG5I3Nt75Zqo0OmC2wweESdzPiG4C3bUdk0SldwnJFg==
+  dependencies:
+    "@agoric/assert" "^0.6.0"
+    "@agoric/ertp" "^0.16.2"
+    "@agoric/internal" "^0.3.2"
+    "@agoric/notifier" "^0.6.2"
+    "@agoric/store" "^0.9.2"
+    "@agoric/swingset-vat" "^0.32.2"
+    "@agoric/vats" "^0.15.1"
+    "@agoric/zoe" "^0.26.2"
+    "@endo/bundle-source" "^2.5.1"
+    "@endo/captp" "^3.1.1"
+    "@endo/far" "^0.2.18"
+    "@endo/init" "^0.5.56"
+    "@endo/nat" "^4.1.27"
+    "@endo/promise-kit" "^0.2.56"
+
 "@agoric/promise-kit@^0.2.29":
   version "0.2.29"
   resolved "https://registry.yarnpkg.com/@agoric/promise-kit/-/promise-kit-0.2.29.tgz#fcbbf68835808e613bf356b38ea21421eb309701"
@@ -225,6 +440,29 @@
   dependencies:
     "@agoric/eventual-send" "^0.14.0"
 
+"@agoric/run-protocol@^0.11.0":
+  version "0.11.0"
+  resolved "https://registry.yarnpkg.com/@agoric/run-protocol/-/run-protocol-0.11.0.tgz#936891969731461ce2b7d8fbf1b9a2abd5244a94"
+  integrity sha512-ouTg18F/LX4NEyDFtLzDHY8s99wXQb4ae9RrfHhqFzTZp6PtFe7AvKnr81lnH8wFaOtWP+lRflhA04sWkxRKCw==
+  dependencies:
+    "@agoric/assert" "^0.4.0"
+    "@agoric/ertp" "^0.14.2"
+    "@agoric/governance" "^0.7.0"
+    "@agoric/nat" "^4.1.0"
+    "@agoric/notifier" "^0.4.0"
+    "@agoric/store" "^0.7.2"
+    "@agoric/swingset-vat" "^0.28.0"
+    "@agoric/vat-data" "^0.3.1"
+    "@agoric/vats" "^0.10.0"
+    "@agoric/zoe" "^0.24.0"
+    "@endo/bundle-source" "^2.2.0"
+    "@endo/captp" "^2.0.7"
+    "@endo/eventual-send" "^0.15.3"
+    "@endo/far" "^0.2.3"
+    "@endo/marshal" "^0.6.7"
+    "@endo/nat" "^4.1.12"
+    "@endo/promise-kit" "^0.2.41"
+
 "@agoric/same-structure@^0.1.29":
   version "0.1.29"
   resolved "https://registry.yarnpkg.com/@agoric/same-structure/-/same-structure-0.1.29.tgz#1b2a86aadb93ba4ef0f0bc05f014198783e9854f"
@@ -241,6 +479,35 @@
     "@agoric/assert" "^0.3.15"
     "@agoric/marshal" "^0.5.0"
 
+"@agoric/sharing-service@^0.2.11", "@agoric/sharing-service@^0.2.2":
+  version "0.2.11"
+  resolved "https://registry.yarnpkg.com/@agoric/sharing-service/-/sharing-service-0.2.11.tgz#ff7714f10bb7038e8ebfc51c06ffe0472f2caaa1"
+  integrity sha512-xYLxjjDcd7T0zN5Bu67JvC0WiL7CIoEKm4NAvYS5RjwCqkDjhi+QoVjnq8EskhzWU+BOnjJdtmhjNAlptSnk4Q==
+  dependencies:
+    "@agoric/assert" "^0.6.0"
+    "@endo/marshal" "^0.8.5"
+
+"@agoric/smart-wallet@^0.5.3":
+  version "0.5.3"
+  resolved "https://registry.yarnpkg.com/@agoric/smart-wallet/-/smart-wallet-0.5.3.tgz#a58f31d71e547bdb6d8944162d455f5ce6b16b1e"
+  integrity sha512-2L7sHmUL/BINuuHv+6A1kYLjidqCNJ2V3GqXm3R6oTeFtzscSzOo3LeOoQ2uPridkZ+fTXxinNfpJ/gRu2pl7g==
+  dependencies:
+    "@agoric/assert" "^0.6.0"
+    "@agoric/casting" "^0.4.2"
+    "@agoric/ertp" "^0.16.2"
+    "@agoric/internal" "^0.3.2"
+    "@agoric/notifier" "^0.6.2"
+    "@agoric/store" "^0.9.2"
+    "@agoric/swingset-vat" "^0.32.2"
+    "@agoric/vat-data" "^0.5.2"
+    "@agoric/vats" "^0.15.1"
+    "@agoric/zoe" "^0.26.2"
+    "@endo/eventual-send" "^0.17.2"
+    "@endo/far" "^0.2.18"
+    "@endo/marshal" "^0.8.5"
+    "@endo/nat" "^4.1.27"
+    "@endo/promise-kit" "^0.2.56"
+
 "@agoric/solo@beta":
   version "0.5.4"
   resolved "https://registry.yarnpkg.com/@agoric/solo/-/solo-0.5.4.tgz#a774b063b2fe631b3c6b452b684a3eeb02267cfe"
@@ -291,6 +558,16 @@
     "@agoric/import-bundle" "^0.2.33"
     "@agoric/marshal" "^0.5.0"
 
+"@agoric/spawner@^0.6.8":
+  version "0.6.8"
+  resolved "https://registry.yarnpkg.com/@agoric/spawner/-/spawner-0.6.8.tgz#81acb8120c58bbf9df61353a24835e143c3cef77"
+  integrity sha512-n/vjSr2cU3qyla8dJlCYVqkPnVsRHZE2h6dYy8yG0UZm2AUZju5m4bwj5gm8y+g8zO8Dzmfk0GGIyy9hamS7Uw==
+  dependencies:
+    "@agoric/assert" "^0.6.0"
+    "@endo/eventual-send" "^0.17.2"
+    "@endo/import-bundle" "^0.3.4"
+    "@endo/marshal" "^0.8.5"
+
 "@agoric/store@^0.6.8":
   version "0.6.8"
   resolved "https://registry.yarnpkg.com/@agoric/store/-/store-0.6.8.tgz#c92d59c725253dff1ef4aacec29b8b32d7fb9302"
@@ -299,6 +576,32 @@
     "@agoric/assert" "^0.3.15"
     "@agoric/marshal" "^0.5.0"
 
+"@agoric/store@^0.7.2":
+  version "0.7.2"
+  resolved "https://registry.yarnpkg.com/@agoric/store/-/store-0.7.2.tgz#528b00ec766e27785cb0013ba1aefcc9a5191ca3"
+  integrity sha512-38NIoQ3HOFgagAt1SNLThkcwH4XlcFZ0VOWGA9TgqcWGDgPF8UtC0OLJZM6Qf1aHiSkSYQaXEbrosymWA4n+JA==
+  dependencies:
+    "@agoric/assert" "^0.4.0"
+    "@endo/eventual-send" "^0.15.3"
+    "@endo/marshal" "^0.6.7"
+    "@endo/promise-kit" "^0.2.41"
+
+"@agoric/store@^0.9.2":
+  version "0.9.2"
+  resolved "https://registry.yarnpkg.com/@agoric/store/-/store-0.9.2.tgz#0973e57b8811a70923c141fccfb002bbad8fed4b"
+  integrity sha512-9YtBlQG1cO7COfprPqBUYDW1Jg805Ick1RHm8Etj5VyfkhF8emhv/OqJKi4FMlA3XDVL3Yvbptrjvdo1WjCvjg==
+  dependencies:
+    "@agoric/assert" "^0.6.0"
+    "@agoric/internal" "^0.3.2"
+    "@endo/eventual-send" "^0.17.2"
+    "@endo/exo" "^0.2.2"
+    "@endo/far" "^0.2.18"
+    "@endo/marshal" "^0.8.5"
+    "@endo/pass-style" "^0.1.3"
+    "@endo/patterns" "^0.2.2"
+    "@endo/promise-kit" "^0.2.56"
+    "@fast-check/ava" "^1.1.3"
+
 "@agoric/swing-store@^0.6.3":
   version "0.6.3"
   resolved "https://registry.yarnpkg.com/@agoric/swing-store/-/swing-store-0.6.3.tgz#6f9e6b3a43f27b8ff10f22c10a56a1cf9dd58dd9"
@@ -309,6 +612,47 @@
     node-lmdb "^0.9.5"
     tmp "^0.2.1"
 
+"@agoric/swing-store@^0.7.0":
+  version "0.7.0"
+  resolved "https://registry.yarnpkg.com/@agoric/swing-store/-/swing-store-0.7.0.tgz#8029d41d6f3eb56b9900bca0c2a1c9266a630e17"
+  integrity sha512-DNlC7CGeIHBZI3XGuVxo2PHmFNCFXTyIpFCvO6HFkCKEN3BsGxxlFlEnMuC6MQ3PcFjoaaeyl2judrEkDzlgew==
+  dependencies:
+    "@agoric/assert" "^0.4.0"
+    better-sqlite3 "^7.5.0"
+    node-lmdb "^0.9.5"
+    tmp "^0.2.1"
+
+"@agoric/swing-store@^0.9.1":
+  version "0.9.1"
+  resolved "https://registry.yarnpkg.com/@agoric/swing-store/-/swing-store-0.9.1.tgz#0ed85beac7a7cd2e8e7507ea58e50eecb08a203e"
+  integrity sha512-GRgXOJwEnFSX3gY2sOhHs1yO503ltUVjslSeSWFHd8bmrPs11igIYRES7Vx4lOSQuNmGe5mKFhgfDnoHPmKxjQ==
+  dependencies:
+    "@agoric/assert" "^0.6.0"
+    "@agoric/internal" "^0.3.2"
+    "@endo/base64" "^0.2.31"
+    "@endo/bundle-source" "^2.5.1"
+    "@endo/check-bundle" "^0.2.18"
+    "@endo/nat" "^4.1.27"
+    better-sqlite3 "^8.2.0"
+
+"@agoric/swingset-liveslots@^0.10.2":
+  version "0.10.2"
+  resolved "https://registry.yarnpkg.com/@agoric/swingset-liveslots/-/swingset-liveslots-0.10.2.tgz#a8d18f32ff7a611b9945f4ff920b00b9e2801e08"
+  integrity sha512-jp05WNHEUH5K8MgiIoHhNrWu7ozKqStyIe0Ex6ejSInFFo/NhJLVL7QLyUgRjD74RbUSuvbR8v8PaQ/pslVI0Q==
+  dependencies:
+    "@agoric/assert" "^0.6.0"
+    "@agoric/internal" "^0.3.2"
+    "@agoric/store" "^0.9.2"
+    "@agoric/vat-data" "^0.5.2"
+    "@endo/eventual-send" "^0.17.2"
+    "@endo/exo" "^0.2.2"
+    "@endo/init" "^0.5.56"
+    "@endo/marshal" "^0.8.5"
+    "@endo/nat" "^4.1.27"
+    "@endo/pass-style" "^0.1.3"
+    "@endo/patterns" "^0.2.2"
+    "@endo/promise-kit" "^0.2.56"
+
 "@agoric/swingset-vat@^0.24.1":
   version "0.24.1"
   resolved "https://registry.yarnpkg.com/@agoric/swingset-vat/-/swingset-vat-0.24.1.tgz#38975bc4b8d161b47ba7946c5282ea47e1247530"
@@ -333,6 +677,82 @@
     node-lmdb "^0.9.5"
     semver "^6.3.0"
 
+"@agoric/swingset-vat@^0.28.0":
+  version "0.28.0"
+  resolved "https://registry.yarnpkg.com/@agoric/swingset-vat/-/swingset-vat-0.28.0.tgz#fc53271c93acb64d9d791f66af1a3dbd5c4ebdb7"
+  integrity sha512-Wfs3iQYvy7VFPcwti1SxuI5Upb815uOrJBAP+CH7vTMGbTU6T+1FlZbBICdBcV9qc7NjhCggiGLt6Mmwuk+AUA==
+  dependencies:
+    "@agoric/assert" "^0.4.0"
+    "@agoric/nat" "^4.1.0"
+    "@agoric/notifier" "^0.4.0"
+    "@agoric/store" "^0.7.2"
+    "@agoric/swing-store" "^0.7.0"
+    "@agoric/xsnap" "^0.13.0"
+    "@endo/base64" "^0.2.25"
+    "@endo/bundle-source" "^2.2.0"
+    "@endo/captp" "^2.0.7"
+    "@endo/check-bundle" "^0.2.3"
+    "@endo/compartment-mapper" "^0.7.5"
+    "@endo/eventual-send" "^0.15.3"
+    "@endo/import-bundle" "^0.2.45"
+    "@endo/init" "^0.5.41"
+    "@endo/marshal" "^0.6.7"
+    "@endo/promise-kit" "^0.2.41"
+    "@endo/zip" "^0.2.25"
+    anylogger "^0.21.0"
+    import-meta-resolve "^1.1.1"
+    node-lmdb "^0.9.5"
+    semver "^6.3.0"
+
+"@agoric/swingset-vat@^0.32.2":
+  version "0.32.2"
+  resolved "https://registry.yarnpkg.com/@agoric/swingset-vat/-/swingset-vat-0.32.2.tgz#5228855132ab2701223316d86eeaef410ec6b4b6"
+  integrity sha512-aYIhyYCuI7Oi47DBqn8wqMFnQOeOxSB7GU69wOQcQIoJVWRhOECDuFzoEqdV6G8xwGIsGpX/fMtXT9A1YAy6ZA==
+  dependencies:
+    "@agoric/assert" "^0.6.0"
+    "@agoric/internal" "^0.3.2"
+    "@agoric/store" "^0.9.2"
+    "@agoric/swing-store" "^0.9.1"
+    "@agoric/swingset-liveslots" "^0.10.2"
+    "@agoric/swingset-xsnap-supervisor" "^0.10.2"
+    "@agoric/time" "^0.3.2"
+    "@agoric/vat-data" "^0.5.2"
+    "@agoric/xsnap" "^0.14.2"
+    "@agoric/xsnap-lockdown" "^0.14.0"
+    "@endo/base64" "^0.2.31"
+    "@endo/bundle-source" "^2.5.1"
+    "@endo/captp" "^3.1.1"
+    "@endo/check-bundle" "^0.2.18"
+    "@endo/compartment-mapper" "^0.8.4"
+    "@endo/eventual-send" "^0.17.2"
+    "@endo/far" "^0.2.18"
+    "@endo/import-bundle" "^0.3.4"
+    "@endo/init" "^0.5.56"
+    "@endo/marshal" "^0.8.5"
+    "@endo/nat" "^4.1.27"
+    "@endo/promise-kit" "^0.2.56"
+    "@endo/zip" "^0.2.31"
+    ansi-styles "^6.2.1"
+    anylogger "^0.21.0"
+    import-meta-resolve "^2.2.1"
+    microtime "^3.1.0"
+    semver "^6.3.0"
+    tmp "^0.2.1"
+
+"@agoric/swingset-xsnap-supervisor@^0.10.2":
+  version "0.10.2"
+  resolved "https://registry.yarnpkg.com/@agoric/swingset-xsnap-supervisor/-/swingset-xsnap-supervisor-0.10.2.tgz#09f067695b0ea6ebfeb6ea200cc7f1675f0f8939"
+  integrity sha512-3PB15aiNHfjTYmtUz9Rxmm6qSHnoO5w5dygRzjx2ytk8yoNn/ZOpxlIOLonhD8kwOaEli5D7btY9OA3jf+Sm6w==
+
+"@agoric/time@^0.3.2":
+  version "0.3.2"
+  resolved "https://registry.yarnpkg.com/@agoric/time/-/time-0.3.2.tgz#9231eec197e10b52a9f416ec2afe929b67f7165c"
+  integrity sha512-qRgvfD/gQJNQaWk0uQqPhq0IGbIABz1z6oFtAhGkylU6zNO/no6VpJG4gw5YwEO8mIAJVOM5HE3qL53AaENYkw==
+  dependencies:
+    "@agoric/assert" "^0.6.0"
+    "@agoric/store" "^0.9.2"
+    "@endo/nat" "^4.1.27"
+
 "@agoric/treasury@^0.7.1":
   version "0.7.1"
   resolved "https://registry.yarnpkg.com/@agoric/treasury/-/treasury-0.7.1.tgz#8c12b7fb1fb92d6dbc253459f76e28f9a9c619f9"
@@ -355,6 +775,72 @@
     "@agoric/swingset-vat" "^0.24.1"
     "@agoric/zoe" "^0.21.1"
 
+"@agoric/vat-data@^0.3.1":
+  version "0.3.1"
+  resolved "https://registry.yarnpkg.com/@agoric/vat-data/-/vat-data-0.3.1.tgz#b551f50fbd9cfef6f1d6fc28eeb807ced99fe870"
+  integrity sha512-ZStdlpQUPFc4nGFjJ3saODtY1W7qgQmeaSXu1EIS05Bh6cD+25so3XB4pvB5fPyQWnD6xeMvCOlLcVgxjo3HgQ==
+  dependencies:
+    "@agoric/assert" "^0.4.0"
+    "@agoric/store" "^0.7.2"
+
+"@agoric/vat-data@^0.5.2":
+  version "0.5.2"
+  resolved "https://registry.yarnpkg.com/@agoric/vat-data/-/vat-data-0.5.2.tgz#abafab83279552466cf4ca946faa175a0a1423dc"
+  integrity sha512-j71bSl7oPcWikR4bP15KMu67D3BLGLhEOcqgewC1cArcE99rhxDU19ALN0OITD0F0KkNCahRNifoIr73n/fBng==
+  dependencies:
+    "@agoric/assert" "^0.6.0"
+    "@agoric/internal" "^0.3.2"
+    "@agoric/store" "^0.9.2"
+
+"@agoric/vats@^0.10.0", "@agoric/vats@beta":
+  version "0.10.0"
+  resolved "https://registry.yarnpkg.com/@agoric/vats/-/vats-0.10.0.tgz#c6d031e2c9f99e5867ba1387b1d385f54bc3b6fc"
+  integrity sha512-KBaHiFaDBO4coFOYaTEEqKSCmpSUNZ8c4vNMokEx9WeYNkdHKFgdcmYLvFKuKBL7Rzp5w2m0kcAv7S2GMeY12Q==
+  dependencies:
+    "@agoric/assert" "^0.4.0"
+    "@agoric/ertp" "^0.14.2"
+    "@agoric/governance" "^0.7.0"
+    "@agoric/nat" "^4.1.0"
+    "@agoric/notifier" "^0.4.0"
+    "@agoric/pegasus" "^0.7.2"
+    "@agoric/run-protocol" "^0.11.0"
+    "@agoric/sharing-service" "^0.2.2"
+    "@agoric/store" "^0.7.2"
+    "@agoric/swingset-vat" "^0.28.0"
+    "@agoric/wallet-backend" "^0.12.1"
+    "@agoric/zoe" "^0.24.0"
+    "@endo/far" "^0.2.3"
+    "@endo/import-bundle" "^0.2.45"
+    "@endo/init" "^0.5.41"
+    "@endo/marshal" "^0.6.7"
+    "@endo/promise-kit" "^0.2.41"
+
+"@agoric/vats@^0.15.1":
+  version "0.15.1"
+  resolved "https://registry.yarnpkg.com/@agoric/vats/-/vats-0.15.1.tgz#95d43742d5375b2c0718b5f899fb7eb87aaa3b7b"
+  integrity sha512-uYV+f3+RJ/KM9O5+7HcsGqLfvhtj9V1e7u1y8TZeTs2zJXVRVuGi/xQaMSGwf3CBBgBtyj8hFUCCYCeHxB1qRQ==
+  dependencies:
+    "@agoric/assert" "^0.6.0"
+    "@agoric/ertp" "^0.16.2"
+    "@agoric/governance" "^0.10.3"
+    "@agoric/inter-protocol" "^0.16.1"
+    "@agoric/internal" "^0.3.2"
+    "@agoric/notifier" "^0.6.2"
+    "@agoric/sharing-service" "^0.2.11"
+    "@agoric/store" "^0.9.2"
+    "@agoric/swingset-vat" "^0.32.2"
+    "@agoric/time" "^0.3.2"
+    "@agoric/vat-data" "^0.5.2"
+    "@agoric/zoe" "^0.26.2"
+    "@agoric/zone" "^0.2.2"
+    "@endo/far" "^0.2.18"
+    "@endo/import-bundle" "^0.3.4"
+    "@endo/init" "^0.5.56"
+    "@endo/marshal" "^0.8.5"
+    "@endo/nat" "^4.1.27"
+    "@endo/promise-kit" "^0.2.56"
+    jessie.js "^0.3.2"
+
 "@agoric/vats@^0.5.1":
   version "0.5.1"
   resolved "https://registry.yarnpkg.com/@agoric/vats/-/vats-0.5.1.tgz#780e768b08e0365b075df58943de6b02d8505d17"
@@ -394,6 +880,23 @@
     "@agoric/zoe" "^0.21.1"
     import-meta-resolve "^1.1.1"
 
+"@agoric/wallet-backend@^0.12.1":
+  version "0.12.1"
+  resolved "https://registry.yarnpkg.com/@agoric/wallet-backend/-/wallet-backend-0.12.1.tgz#c89b02cb9f2796f92a9466039649381efccad9d5"
+  integrity sha512-B9B4n1pibPxduGX2sUpzPMQlTFk/5BPO+yRLoWqJfhzIZCEy0ICGWs7kNas7iktsfCioKl7+cGi9iGwEk+LLLQ==
+  dependencies:
+    "@agoric/assert" "^0.4.0"
+    "@agoric/ertp" "^0.14.2"
+    "@agoric/nat" "^4.1.0"
+    "@agoric/notifier" "^0.4.0"
+    "@agoric/run-protocol" "^0.11.0"
+    "@agoric/store" "^0.7.2"
+    "@agoric/zoe" "^0.24.0"
+    "@endo/eventual-send" "^0.15.3"
+    "@endo/marshal" "^0.6.7"
+    "@endo/promise-kit" "^0.2.41"
+    import-meta-resolve "^1.1.1"
+
 "@agoric/wallet@^0.11.7":
   version "0.11.7"
   resolved "https://registry.yarnpkg.com/@agoric/wallet/-/wallet-0.11.7.tgz#902d90ae1a6aa4d09160b2683a548a6d72b5a4e7"
@@ -404,6 +907,11 @@
     eslint-plugin-eslint-comments "^3.1.2"
     import-meta-resolve "^1.1.1"
 
+"@agoric/xsnap-lockdown@^0.14.0":
+  version "0.14.0"
+  resolved "https://registry.yarnpkg.com/@agoric/xsnap-lockdown/-/xsnap-lockdown-0.14.0.tgz#0c605bbd08e6ccf1954a615dbce7d4c0fe578a32"
+  integrity sha512-T8kYrW1baTDQTkQJ9mDp1ME2Ive3RNNRFU7PXuu60Pu9A/tWliYKiJWwqcGhYAQOkHxxFz0BVwk9Jf8HErzgRA==
+
 "@agoric/xsnap@^0.11.0":
   version "0.11.0"
   resolved "https://registry.yarnpkg.com/@agoric/xsnap/-/xsnap-0.11.0.tgz#6b07b3d6ce2a3e3ed4cd4e00af1b957d614077d5"
@@ -417,6 +925,40 @@
     "@endo/netstring" "^0.2.8"
     glob "^7.1.6"
 
+"@agoric/xsnap@^0.13.0":
+  version "0.13.3"
+  resolved "https://registry.yarnpkg.com/@agoric/xsnap/-/xsnap-0.13.3.tgz#a6d97728b02a4981ac89920dba0dd2a3ab4a9e83"
+  integrity sha512-Fpq5vP3JLDCeIrstTjl/Yp3hPzW37KpQw3cE+ma3LEe2z2sepc71cMgSTX09nps527lHbQusjitDb4xbn4QGjw==
+  dependencies:
+    "@agoric/assert" "^0.5.1"
+    "@endo/bundle-source" "^2.3.1"
+    "@endo/eventual-send" "^0.16.5"
+    "@endo/init" "^0.5.49"
+    "@endo/netstring" "^0.3.19"
+    "@endo/promise-kit" "^0.2.49"
+    "@endo/stream" "^0.3.18"
+    "@endo/stream-node" "^0.2.19"
+    glob "^7.1.6"
+    rollup-plugin-string "^3.0.0"
+
+"@agoric/xsnap@^0.14.2":
+  version "0.14.2"
+  resolved "https://registry.yarnpkg.com/@agoric/xsnap/-/xsnap-0.14.2.tgz#0685b1c85af986edc3e5f226fd4e96c44df32bf0"
+  integrity sha512-bA4IZJixw8uCcDBqA9KUKEnxjB65pdkWb5xL0a4XM//QvIzYmB6EGJ80U+pbMOrjGtomUqo0Oxdc5X/PhAniSg==
+  dependencies:
+    "@agoric/assert" "^0.6.0"
+    "@agoric/internal" "^0.3.2"
+    "@agoric/xsnap-lockdown" "^0.14.0"
+    "@endo/bundle-source" "^2.5.1"
+    "@endo/eventual-send" "^0.17.2"
+    "@endo/init" "^0.5.56"
+    "@endo/netstring" "^0.3.26"
+    "@endo/promise-kit" "^0.2.56"
+    "@endo/stream" "^0.3.25"
+    "@endo/stream-node" "^0.2.26"
+    glob "^7.1.6"
+    tmp "^0.2.1"
+
 "@agoric/zoe@^0.21.1", "@agoric/zoe@beta":
   version "0.21.1"
   resolved "https://registry.yarnpkg.com/@agoric/zoe/-/zoe-0.21.1.tgz#f778e8659069e42c376281b1f203689ed7ba5763"
@@ -437,6 +979,57 @@
     "@agoric/store" "^0.6.8"
     "@agoric/swingset-vat" "^0.24.1"
 
+"@agoric/zoe@^0.24.0":
+  version "0.24.0"
+  resolved "https://registry.yarnpkg.com/@agoric/zoe/-/zoe-0.24.0.tgz#383695c6a70dc6ef77b12bbd858567ed2f6bce6a"
+  integrity sha512-kT7cDDn2Tvfd1P0Pk+FIcrg2BdzLF9VnQ0hfxHIAQrCN68tHIAPrt9wW3R8T8H1HA6t9bC0CqQGQEo8BrDKblw==
+  dependencies:
+    "@agoric/assert" "^0.4.0"
+    "@agoric/ertp" "^0.14.2"
+    "@agoric/nat" "^4.1.0"
+    "@agoric/notifier" "^0.4.0"
+    "@agoric/store" "^0.7.2"
+    "@agoric/swingset-vat" "^0.28.0"
+    "@agoric/vat-data" "^0.3.1"
+    "@endo/bundle-source" "^2.2.0"
+    "@endo/eventual-send" "^0.15.3"
+    "@endo/far" "^0.2.3"
+    "@endo/import-bundle" "^0.2.45"
+    "@endo/marshal" "^0.6.7"
+    "@endo/promise-kit" "^0.2.41"
+
+"@agoric/zoe@^0.26.2":
+  version "0.26.2"
+  resolved "https://registry.yarnpkg.com/@agoric/zoe/-/zoe-0.26.2.tgz#c6cd260171a4c0307e160b93ae9f6ce29a675d70"
+  integrity sha512-xFZQ0Rz4UmHNWCUeLWFqtGgKNBPVvfb5IEmh+nSnbgJK45Y4Kcci77XkciO//e6xQo8dacrNhTELke3iAEISAA==
+  dependencies:
+    "@agoric/assert" "^0.6.0"
+    "@agoric/ertp" "^0.16.2"
+    "@agoric/internal" "^0.3.2"
+    "@agoric/notifier" "^0.6.2"
+    "@agoric/store" "^0.9.2"
+    "@agoric/swingset-vat" "^0.32.2"
+    "@agoric/time" "^0.3.2"
+    "@agoric/vat-data" "^0.5.2"
+    "@endo/bundle-source" "^2.5.1"
+    "@endo/captp" "^3.1.1"
+    "@endo/eventual-send" "^0.17.2"
+    "@endo/far" "^0.2.18"
+    "@endo/import-bundle" "^0.3.4"
+    "@endo/marshal" "^0.8.5"
+    "@endo/nat" "^4.1.27"
+    "@endo/patterns" "^0.2.2"
+    "@endo/promise-kit" "^0.2.56"
+
+"@agoric/zone@^0.2.2":
+  version "0.2.2"
+  resolved "https://registry.yarnpkg.com/@agoric/zone/-/zone-0.2.2.tgz#df5cc091d4a83842b87888e74159a723a424a82e"
+  integrity sha512-joVRnwH55xOeaoO2xYd1TWXXLPQ9pAeNsaiwTjO3FufYb/q55rv9mpYdUdhEy+zYQuFpPH87+6w/o3f/0AXrDQ==
+  dependencies:
+    "@agoric/store" "^0.9.2"
+    "@agoric/vat-data" "^0.5.2"
+    "@endo/far" "^0.2.18"
+
 "@babel/code-frame@7.12.11":
   version "7.12.11"
   resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
@@ -1358,11 +1951,251 @@
   resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
   integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
 
+"@colors/colors@1.5.0":
+  version "1.5.0"
+  resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9"
+  integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==
+
+"@confio/ics23@^0.6.8":
+  version "0.6.8"
+  resolved "https://registry.yarnpkg.com/@confio/ics23/-/ics23-0.6.8.tgz#2a6b4f1f2b7b20a35d9a0745bb5a446e72930b3d"
+  integrity sha512-wB6uo+3A50m0sW/EWcU64xpV/8wShZ6bMTa7pF8eYsTrSkQA7oLUIJcs/wb8g4y2Oyq701BaGiO6n/ak5WXO1w==
+  dependencies:
+    "@noble/hashes" "^1.0.0"
+    protobufjs "^6.8.8"
+
+"@confio/relayer@^0.9.0":
+  version "0.9.0"
+  resolved "https://registry.yarnpkg.com/@confio/relayer/-/relayer-0.9.0.tgz#d0f9917f2a1b02e15d33dacb3e044d358022a9a9"
+  integrity sha512-YfoPMCH72BM/bYQ58+F75zYsZ2vEPocY0CaQLE6PPDtBOKrdXM3LTj5zUdZSbHDQSrDDmRrKcuZVufpdrRimQw==
+  dependencies:
+    "@cosmjs/cosmwasm-stargate" "^0.30.0"
+    "@cosmjs/crypto" "^0.30.0"
+    "@cosmjs/encoding" "^0.30.0"
+    "@cosmjs/faucet-client" "^0.30.0"
+    "@cosmjs/math" "^0.30.0"
+    "@cosmjs/proto-signing" "^0.30.0"
+    "@cosmjs/stargate" "^0.30.0"
+    "@cosmjs/stream" "^0.30.0"
+    "@cosmjs/tendermint-rpc" "^0.30.0"
+    "@cosmjs/utils" "^0.30.0"
+    ajv "7.1.1"
+    axios "0.21.4"
+    commander "7.1.0"
+    cosmjs-types "^0.7.1"
+    fast-safe-stringify "2.0.4"
+    js-yaml "4.0.0"
+    lodash "4.17.21"
+    prom-client "13.1.0"
+    protobufjs "^6.10.3"
+    table "^6.7.1"
+    triple-beam "1.3.0"
+    winston "3.3.3"
+
+"@cosmjs/amino@^0.30.1":
+  version "0.30.1"
+  resolved "https://registry.yarnpkg.com/@cosmjs/amino/-/amino-0.30.1.tgz#7c18c14627361ba6c88e3495700ceea1f76baace"
+  integrity sha512-yNHnzmvAlkETDYIpeCTdVqgvrdt1qgkOXwuRVi8s27UKI5hfqyE9fJ/fuunXE6ZZPnKkjIecDznmuUOMrMvw4w==
+  dependencies:
+    "@cosmjs/crypto" "^0.30.1"
+    "@cosmjs/encoding" "^0.30.1"
+    "@cosmjs/math" "^0.30.1"
+    "@cosmjs/utils" "^0.30.1"
+
+"@cosmjs/cosmwasm-stargate@^0.30.0":
+  version "0.30.1"
+  resolved "https://registry.yarnpkg.com/@cosmjs/cosmwasm-stargate/-/cosmwasm-stargate-0.30.1.tgz#6f9ca310f75433a3e30d683bc6aa24eadb345d79"
+  integrity sha512-W/6SLUCJAJGBN+sJLXouLZikVgmqDd9LCdlMzQaxczcCHTWeJAmRvOiZGSZaSy3shw/JN1qc6g6PKpvTVgj10A==
+  dependencies:
+    "@cosmjs/amino" "^0.30.1"
+    "@cosmjs/crypto" "^0.30.1"
+    "@cosmjs/encoding" "^0.30.1"
+    "@cosmjs/math" "^0.30.1"
+    "@cosmjs/proto-signing" "^0.30.1"
+    "@cosmjs/stargate" "^0.30.1"
+    "@cosmjs/tendermint-rpc" "^0.30.1"
+    "@cosmjs/utils" "^0.30.1"
+    cosmjs-types "^0.7.1"
+    long "^4.0.0"
+    pako "^2.0.2"
+
+"@cosmjs/crypto@^0.30.0", "@cosmjs/crypto@^0.30.1":
+  version "0.30.1"
+  resolved "https://registry.yarnpkg.com/@cosmjs/crypto/-/crypto-0.30.1.tgz#21e94d5ca8f8ded16eee1389d2639cb5c43c3eb5"
+  integrity sha512-rAljUlake3MSXs9xAm87mu34GfBLN0h/1uPPV6jEwClWjNkAMotzjC0ab9MARy5FFAvYHL3lWb57bhkbt2GtzQ==
+  dependencies:
+    "@cosmjs/encoding" "^0.30.1"
+    "@cosmjs/math" "^0.30.1"
+    "@cosmjs/utils" "^0.30.1"
+    "@noble/hashes" "^1"
+    bn.js "^5.2.0"
+    elliptic "^6.5.4"
+    libsodium-wrappers "^0.7.6"
+
+"@cosmjs/encoding@^0.30.0", "@cosmjs/encoding@^0.30.1":
+  version "0.30.1"
+  resolved "https://registry.yarnpkg.com/@cosmjs/encoding/-/encoding-0.30.1.tgz#b5c4e0ef7ceb1f2753688eb96400ed70f35c6058"
+  integrity sha512-rXmrTbgqwihORwJ3xYhIgQFfMSrwLu1s43RIK9I8EBudPx3KmnmyAKzMOVsRDo9edLFNuZ9GIvysUCwQfq3WlQ==
+  dependencies:
+    base64-js "^1.3.0"
+    bech32 "^1.1.4"
+    readonly-date "^1.0.0"
+
+"@cosmjs/faucet-client@^0.30.0":
+  version "0.30.1"
+  resolved "https://registry.yarnpkg.com/@cosmjs/faucet-client/-/faucet-client-0.30.1.tgz#81406128830ba47ae824a912144a28a7fe70300d"
+  integrity sha512-uOYIjouOCjncfthDzeygcWtEpShiNN0u9tORSingufOAO/kmlHwM53M5I1a8ak1EktkEEa+Mxdj3kRfV87DOcw==
+  dependencies:
+    axios "^0.21.2"
+
+"@cosmjs/json-rpc@^0.30.1":
+  version "0.30.1"
+  resolved "https://registry.yarnpkg.com/@cosmjs/json-rpc/-/json-rpc-0.30.1.tgz#16f21305fc167598c8a23a45549b85106b2372bc"
+  integrity sha512-pitfC/2YN9t+kXZCbNuyrZ6M8abnCC2n62m+JtU9vQUfaEtVsgy+1Fk4TRQ175+pIWSdBMFi2wT8FWVEE4RhxQ==
+  dependencies:
+    "@cosmjs/stream" "^0.30.1"
+    xstream "^11.14.0"
+
+"@cosmjs/math@^0.30.0", "@cosmjs/math@^0.30.1":
+  version "0.30.1"
+  resolved "https://registry.yarnpkg.com/@cosmjs/math/-/math-0.30.1.tgz#8b816ef4de5d3afa66cb9fdfb5df2357a7845b8a"
+  integrity sha512-yaoeI23pin9ZiPHIisa6qqLngfnBR/25tSaWpkTm8Cy10MX70UF5oN4+/t1heLaM6SSmRrhk3psRkV4+7mH51Q==
+  dependencies:
+    bn.js "^5.2.0"
+
+"@cosmjs/proto-signing@^0.30.0", "@cosmjs/proto-signing@^0.30.1":
+  version "0.30.1"
+  resolved "https://registry.yarnpkg.com/@cosmjs/proto-signing/-/proto-signing-0.30.1.tgz#f0dda372488df9cd2677150b89b3e9c72b3cb713"
+  integrity sha512-tXh8pPYXV4aiJVhTKHGyeZekjj+K9s2KKojMB93Gcob2DxUjfKapFYBMJSgfKPuWUPEmyr8Q9km2hplI38ILgQ==
+  dependencies:
+    "@cosmjs/amino" "^0.30.1"
+    "@cosmjs/crypto" "^0.30.1"
+    "@cosmjs/encoding" "^0.30.1"
+    "@cosmjs/math" "^0.30.1"
+    "@cosmjs/utils" "^0.30.1"
+    cosmjs-types "^0.7.1"
+    long "^4.0.0"
+
+"@cosmjs/socket@^0.30.1":
+  version "0.30.1"
+  resolved "https://registry.yarnpkg.com/@cosmjs/socket/-/socket-0.30.1.tgz#00b22f4b5e2ab01f4d82ccdb7b2e59536bfe5ce0"
+  integrity sha512-r6MpDL+9N+qOS/D5VaxnPaMJ3flwQ36G+vPvYJsXArj93BjgyFB7BwWwXCQDzZ+23cfChPUfhbINOenr8N2Kow==
+  dependencies:
+    "@cosmjs/stream" "^0.30.1"
+    isomorphic-ws "^4.0.1"
+    ws "^7"
+    xstream "^11.14.0"
+
+"@cosmjs/stargate@^0.30.0", "@cosmjs/stargate@^0.30.1":
+  version "0.30.1"
+  resolved "https://registry.yarnpkg.com/@cosmjs/stargate/-/stargate-0.30.1.tgz#e1b22e1226cffc6e93914a410755f1f61057ba04"
+  integrity sha512-RdbYKZCGOH8gWebO7r6WvNnQMxHrNXInY/gPHPzMjbQF6UatA6fNM2G2tdgS5j5u7FTqlCI10stNXrknaNdzog==
+  dependencies:
+    "@confio/ics23" "^0.6.8"
+    "@cosmjs/amino" "^0.30.1"
+    "@cosmjs/encoding" "^0.30.1"
+    "@cosmjs/math" "^0.30.1"
+    "@cosmjs/proto-signing" "^0.30.1"
+    "@cosmjs/stream" "^0.30.1"
+    "@cosmjs/tendermint-rpc" "^0.30.1"
+    "@cosmjs/utils" "^0.30.1"
+    cosmjs-types "^0.7.1"
+    long "^4.0.0"
+    protobufjs "~6.11.3"
+    xstream "^11.14.0"
+
+"@cosmjs/stream@^0.30.0", "@cosmjs/stream@^0.30.1":
+  version "0.30.1"
+  resolved "https://registry.yarnpkg.com/@cosmjs/stream/-/stream-0.30.1.tgz#ba038a2aaf41343696b1e6e759d8e03a9516ec1a"
+  integrity sha512-Fg0pWz1zXQdoxQZpdHRMGvUH5RqS6tPv+j9Eh7Q953UjMlrwZVo0YFLC8OTf/HKVf10E4i0u6aM8D69Q6cNkgQ==
+  dependencies:
+    xstream "^11.14.0"
+
+"@cosmjs/tendermint-rpc@^0.30.0", "@cosmjs/tendermint-rpc@^0.30.1":
+  version "0.30.1"
+  resolved "https://registry.yarnpkg.com/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.30.1.tgz#c16378892ba1ac63f72803fdf7567eab9d4f0aa0"
+  integrity sha512-Z3nCwhXSbPZJ++v85zHObeUggrEHVfm1u18ZRwXxFE9ZMl5mXTybnwYhczuYOl7KRskgwlB+rID0WYACxj4wdQ==
+  dependencies:
+    "@cosmjs/crypto" "^0.30.1"
+    "@cosmjs/encoding" "^0.30.1"
+    "@cosmjs/json-rpc" "^0.30.1"
+    "@cosmjs/math" "^0.30.1"
+    "@cosmjs/socket" "^0.30.1"
+    "@cosmjs/stream" "^0.30.1"
+    "@cosmjs/utils" "^0.30.1"
+    axios "^0.21.2"
+    readonly-date "^1.0.0"
+    xstream "^11.14.0"
+
+"@cosmjs/utils@^0.30.0", "@cosmjs/utils@^0.30.1":
+  version "0.30.1"
+  resolved "https://registry.yarnpkg.com/@cosmjs/utils/-/utils-0.30.1.tgz#6d92582341be3c2ec8d82090253cfa4b7f959edb"
+  integrity sha512-KvvX58MGMWh7xA+N+deCfunkA/ZNDvFLw4YbOmX3f/XBIkqrVY7qlotfy2aNb1kgp6h4B6Yc8YawJPDTfvWX7g==
+
+"@dabh/diagnostics@^2.0.2":
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.3.tgz#7f7e97ee9a725dffc7808d93668cc984e1dc477a"
+  integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==
+  dependencies:
+    colorspace "1.1.x"
+    enabled "2.0.x"
+    kuler "^2.0.0"
+
+"@datadog/native-appsec@^3.2.0":
+  version "3.2.0"
+  resolved "https://registry.yarnpkg.com/@datadog/native-appsec/-/native-appsec-3.2.0.tgz#ddeca06cbaba9c6905903d09d18013f81eedc8c3"
+  integrity sha512-biAa7EFfuavjSWgSQaCit9CqGzr6Af5nhzfNNGJ38Y/Y387hDvLivAR374kK1z6XoxGZEOa+XPbVogmV/2Bcjw==
+  dependencies:
+    node-gyp-build "^3.9.0"
+
+"@datadog/native-iast-rewriter@2.0.1":
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/@datadog/native-iast-rewriter/-/native-iast-rewriter-2.0.1.tgz#dc4a23796870f2d840053ae879c61547eda6bb89"
+  integrity sha512-Mm+FG3XxEbPrAfJQPOMHts7iZZXRvg9gnGeeFRGkyirmRcQcOpZO4wFe/8K61DUVa5pXpgAJQ2ZkBGYF1O9STg==
+  dependencies:
+    node-gyp-build "^4.5.0"
+
+"@datadog/native-iast-taint-tracking@1.5.0":
+  version "1.5.0"
+  resolved "https://registry.yarnpkg.com/@datadog/native-iast-taint-tracking/-/native-iast-taint-tracking-1.5.0.tgz#1a55eca6692079ac6167696682acb972aa0b0181"
+  integrity sha512-SOWIk1M6PZH0osNB191Voz2rKBPoF5hISWVSK9GiJPrD40+xjib1Z/bFDV7EkDn3kjOyordSBdNPG5zOqZJdyg==
+  dependencies:
+    node-gyp-build "^3.9.0"
+
+"@datadog/native-metrics@^2.0.0":
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/@datadog/native-metrics/-/native-metrics-2.0.0.tgz#65bf03313ee419956361e097551db36173e85712"
+  integrity sha512-YklGVwUtmKGYqFf1MNZuOHvTYdKuR4+Af1XkWcMD8BwOAjxmd9Z+97328rCOY8TFUJzlGUPaXzB8j2qgG/BMwA==
+  dependencies:
+    node-addon-api "^6.1.0"
+    node-gyp-build "^3.9.0"
+
+"@datadog/pprof@3.1.0":
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/@datadog/pprof/-/pprof-3.1.0.tgz#d58aac33985dbb71f77d85a41023a35f1ad55290"
+  integrity sha512-Bg8O8yrHeL2KKHXhLoAAT33ZfzLnZ6rWfOjy8PkcNhUJy3UwNVLbUoApf+99EyLjqpzpk/kZXrIAMBzMMB8ilg==
+  dependencies:
+    delay "^5.0.0"
+    node-gyp-build "<4.0"
+    p-limit "^3.1.0"
+    pprof-format "^2.0.7"
+    source-map "^0.7.4"
+
+"@datadog/sketches-js@^2.1.0":
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/@datadog/sketches-js/-/sketches-js-2.1.0.tgz#8c7e8028a5fc22ad102fa542b0a446c956830455"
+  integrity sha512-smLocSfrt3s53H/XSVP3/1kP42oqvrkjUPtyaFd1F79ux24oE31BKt+q0c6lsa6hOYrFzsIwyc5GXAI5JmfOew==
+
 "@endo/base64@^0.2.21", "@endo/base64@^0.2.8":
   version "0.2.21"
   resolved "https://registry.yarnpkg.com/@endo/base64/-/base64-0.2.21.tgz#e58fc38891fda25d57f1ed90274210c8781b2f22"
   integrity sha512-Q7L3Ns1xoWma0qisXPUukuS/imugvE17HrwrXypfQlx5k0nh9zrhfboVs59EWfYtBllF27ZmxLZW2C88IUreFQ==
 
+"@endo/base64@^0.2.25", "@endo/base64@^0.2.31", "@endo/base64@^0.2.32", "@endo/base64@^0.2.34":
+  version "0.2.34"
+  resolved "https://registry.yarnpkg.com/@endo/base64/-/base64-0.2.34.tgz#3de6f121d079a6d9055ac1a6c38243860aa1b6ee"
+  integrity sha512-UXfNd3fVqjOMwHW81g0pfhzMPUbmr2X0+1oBYVuYCco5k+GDwzO6smRzfef0MGtxLVIXvf86Npb5eDuegQKGHA==
+
 "@endo/base64@^0.2.27":
   version "0.2.27"
   resolved "https://registry.yarnpkg.com/@endo/base64/-/base64-0.2.27.tgz#6c68fe83092c621e2d46f77523e0e898e7f7fa68"
@@ -1384,11 +2217,64 @@
     rollup "^2.47.0"
     source-map "^0.7.3"
 
+"@endo/bundle-source@^2.2.0", "@endo/bundle-source@^2.3.1", "@endo/bundle-source@^2.5.1":
+  version "2.7.0"
+  resolved "https://registry.yarnpkg.com/@endo/bundle-source/-/bundle-source-2.7.0.tgz#10a398128b8968bdd89420fab4390b10ae258336"
+  integrity sha512-IT/TCxjvcJj6IU22bnIpouPJuZG+ANJrbWKihnlNyQppS25YEYjvf31iGIRBhcJWaWDDyDIfIDsSgxmrFBWnyw==
+  dependencies:
+    "@agoric/babel-generator" "^7.17.4"
+    "@babel/parser" "^7.17.3"
+    "@babel/traverse" "^7.17.3"
+    "@endo/base64" "^0.2.34"
+    "@endo/compartment-mapper" "^0.9.1"
+    "@endo/init" "^0.5.59"
+    "@endo/promise-kit" "^0.2.59"
+    "@endo/where" "^0.3.4"
+    "@rollup/plugin-commonjs" "^19.0.0"
+    "@rollup/plugin-node-resolve" "^13.0.0"
+    acorn "^8.2.4"
+    jessie.js "^0.3.2"
+    rollup endojs/endo#rollup-2.7.1-patch-1
+    source-map "^0.7.3"
+
+"@endo/captp@^2.0.7":
+  version "2.0.19"
+  resolved "https://registry.yarnpkg.com/@endo/captp/-/captp-2.0.19.tgz#d1e878271eb24fc4d85b67586a4b9891180ab0ba"
+  integrity sha512-vkJzBvYD9mgdKJuiunvaQ6HcvnNmu1bJBx1yIkRDcvbfSoX0FqYQMNP/t9lF/h6HqddGXjJdKDPpyfwQnRCc+A==
+  dependencies:
+    "@endo/eventual-send" "^0.16.9"
+    "@endo/marshal" "^0.8.2"
+    "@endo/nat" "^4.1.24"
+    "@endo/promise-kit" "^0.2.53"
+
+"@endo/captp@^3.1.1":
+  version "3.1.4"
+  resolved "https://registry.yarnpkg.com/@endo/captp/-/captp-3.1.4.tgz#7f6f4d304d2387f16c6080134701e202374361d1"
+  integrity sha512-fSrbTcFEYZGy26s4qio7KQBivI/Wb0+zV8YMRpls/eDMHIR1Cz+LTn7qD6hcLPpk4fLFjOpDCcbcoSGeP/YMRw==
+  dependencies:
+    "@endo/eventual-send" "^0.17.5"
+    "@endo/marshal" "^0.8.8"
+    "@endo/nat" "^4.1.30"
+    "@endo/promise-kit" "^0.2.59"
+
+"@endo/check-bundle@^0.2.18", "@endo/check-bundle@^0.2.3":
+  version "0.2.21"
+  resolved "https://registry.yarnpkg.com/@endo/check-bundle/-/check-bundle-0.2.21.tgz#fe6947f6648a49ecf47b9d48860f4e9db3ef810a"
+  integrity sha512-kv36nzyLMJrvuRXKxMvPxknnxEisADLoMPKcmSN6WTVRuUV7wRlXiptvU3hu2LF/c3mKsoDEfGdhv9oaCMAmEg==
+  dependencies:
+    "@endo/base64" "^0.2.34"
+    "@endo/compartment-mapper" "^0.9.1"
+
 "@endo/cjs-module-analyzer@^0.2.11", "@endo/cjs-module-analyzer@^0.2.21":
   version "0.2.21"
   resolved "https://registry.yarnpkg.com/@endo/cjs-module-analyzer/-/cjs-module-analyzer-0.2.21.tgz#e6b6f65d9378d1e56a62caa69948f9e2e442dd17"
   integrity sha512-nmRVyuqVWTVzewn/4Iy28XGPXcxwdR0475V8E0151Iy221Xyi4q+EcsB4lLbu8dIimkps8pR1eoY4oCWsedbTw==
 
+"@endo/cjs-module-analyzer@^0.2.27", "@endo/cjs-module-analyzer@^0.2.32", "@endo/cjs-module-analyzer@^0.2.34":
+  version "0.2.34"
+  resolved "https://registry.yarnpkg.com/@endo/cjs-module-analyzer/-/cjs-module-analyzer-0.2.34.tgz#bef0196fb01477f199159e097a4d6b1c1f0c9591"
+  integrity sha512-Ik5Q0NDFMLx4wXlP0JCzpPt6yqNGsRrFqhe/DBhsU+3GXDMhpabUZk7xzN6Tthr6MTG06P8p2sOVwwyvNLrlvw==
+
 "@endo/compartment-mapper@^0.5.3":
   version "0.5.6"
   resolved "https://registry.yarnpkg.com/@endo/compartment-mapper/-/compartment-mapper-0.5.6.tgz#1c2a9e91c062a24a856e725e7d36a3ee5c46b73c"
@@ -1409,16 +2295,107 @@
     "@endo/zip" "^0.2.21"
     ses "^0.15.11"
 
+"@endo/compartment-mapper@^0.7.15", "@endo/compartment-mapper@^0.7.5":
+  version "0.7.15"
+  resolved "https://registry.yarnpkg.com/@endo/compartment-mapper/-/compartment-mapper-0.7.15.tgz#fb6c03925c6544dbb699520f100d5088770b5194"
+  integrity sha512-gZyPrpwyCKX19JrEu/U2QeVVoORoFv0KGpAclB4tSMEj0AMVixLieHtoOSBXZ3z2UCAVBDPeVTj7hp40lRccKA==
+  dependencies:
+    "@endo/cjs-module-analyzer" "^0.2.27"
+    "@endo/static-module-record" "^0.7.14"
+    "@endo/zip" "^0.2.27"
+    ses "^0.17.0"
+
+"@endo/compartment-mapper@^0.8.4", "@endo/compartment-mapper@^0.8.5":
+  version "0.8.5"
+  resolved "https://registry.yarnpkg.com/@endo/compartment-mapper/-/compartment-mapper-0.8.5.tgz#6910d2be41754fde90190671d2fc5dc48d6fb787"
+  integrity sha512-PKJ1WgYRBkSEJTYOXZTOf9tYQLEkuGTfhAPoKm22loAuaXWI1ortJ7UdRAPLWt95Cd71KGrmfd1FpemGvmr3lQ==
+  dependencies:
+    "@endo/cjs-module-analyzer" "^0.2.32"
+    "@endo/static-module-record" "^0.7.20"
+    "@endo/zip" "^0.2.32"
+    ses "^0.18.5"
+
+"@endo/compartment-mapper@^0.9.1":
+  version "0.9.1"
+  resolved "https://registry.yarnpkg.com/@endo/compartment-mapper/-/compartment-mapper-0.9.1.tgz#e5935ade7bb6280acb8b545ad84e289122bac544"
+  integrity sha512-uqVFo597bqjWaaPQnqMumkAgk6KVQbQm+hPtoARB2R2VNbBLD8ED/53HrxtvA/+Iw1PQrvJEcZkIGCvbzFKeuA==
+  dependencies:
+    "@endo/cjs-module-analyzer" "^0.2.34"
+    "@endo/static-module-record" "^0.8.1"
+    "@endo/zip" "^0.2.34"
+    ses "^0.18.7"
+
+"@endo/env-options@^0.1.3":
+  version "0.1.3"
+  resolved "https://registry.yarnpkg.com/@endo/env-options/-/env-options-0.1.3.tgz#430133977de48fb64125535d54f75e0eb0682260"
+  integrity sha512-ljs5E0+Fhe5IQsciCn6jL5bsi1PYysPm4NhrPmNByw136AcjUbfZhOBmOzeXwOhxaL93cI/jTStNdWEA80Q+nQ==
+
 "@endo/eventual-send@^0.14.8":
   version "0.14.8"
   resolved "https://registry.yarnpkg.com/@endo/eventual-send/-/eventual-send-0.14.8.tgz#0d95b5cd7e420219cdd84c43683bfbd0b6cd2ff6"
   integrity sha512-JIbzzIk1/Z+44O7+IuF5HfMzGu1txOvW5IJKu91syk//MIWU1+XQyPhwQKuWiZ2KX+ADdSPyNZTZjAN2IAE8gQ==
 
-"@endo/eventual-send@^0.15.5":
+"@endo/eventual-send@^0.15.3", "@endo/eventual-send@^0.15.5":
   version "0.15.5"
   resolved "https://registry.yarnpkg.com/@endo/eventual-send/-/eventual-send-0.15.5.tgz#116233ad86beac385604ee8fe12dc0ff4c5c13cd"
   integrity sha512-/xc8g2pbZ/IBRps5TQ4YwyxwUKmX7DY1jsj79mAypVkhXzk5jWQ9eRzGmR+j/uYgS6rRwi0DLdtVUTKRaaH5BA==
 
+"@endo/eventual-send@^0.16.5", "@endo/eventual-send@^0.16.9":
+  version "0.16.9"
+  resolved "https://registry.yarnpkg.com/@endo/eventual-send/-/eventual-send-0.16.9.tgz#d0f81510a6cc3b7e160e27335f03de89a367b8d8"
+  integrity sha512-2ahhtCKpT1f/KDcD7aOhSQfBzzO8cL8m5I8baeXln20QM8mEtBIavlj8d36Pop2VSCoK2uoqAKUNAzgF/hTaIg==
+
+"@endo/eventual-send@^0.17.2", "@endo/eventual-send@^0.17.5":
+  version "0.17.5"
+  resolved "https://registry.yarnpkg.com/@endo/eventual-send/-/eventual-send-0.17.5.tgz#2f5390eda82a1c4dcd4c1c9c748ddd96d043d0ba"
+  integrity sha512-GpDSU2+Hcn99mff3dt62/ZDiZkG20spawZcNgRNB5oZe+kW6pP26ugDI2jRXML5yoQbUBtSit26HDD8GX2p/HQ==
+  dependencies:
+    "@endo/env-options" "^0.1.3"
+
+"@endo/exo@^0.2.2":
+  version "0.2.5"
+  resolved "https://registry.yarnpkg.com/@endo/exo/-/exo-0.2.5.tgz#2bc9c742e43eea544153132c6632f371637c5345"
+  integrity sha512-5shiclRqU/55/SZbf2EVLyhY8UeAIbsGYvScsrmdforL+dDVjD2q3fdV7oLEVb/jlLKHZwmpa2XTYwpR/15ogg==
+  dependencies:
+    "@endo/env-options" "^0.1.3"
+    "@endo/far" "^0.2.21"
+    "@endo/pass-style" "^0.1.6"
+    "@endo/patterns" "^0.2.5"
+
+"@endo/far@^0.2.18", "@endo/far@^0.2.19", "@endo/far@^0.2.21", "@endo/far@^0.2.3":
+  version "0.2.21"
+  resolved "https://registry.yarnpkg.com/@endo/far/-/far-0.2.21.tgz#f61fae564486d7b7ab77c95c4bd2b3bf710e6a81"
+  integrity sha512-PTY6PrHAusAnU70oTRPk+tRQ4Nac8isg3nXXoe6y5F6rHrAZsSIYINk9bOfRo3MqW3e++qU0+AVd3niYydk3OQ==
+  dependencies:
+    "@endo/eventual-send" "^0.17.5"
+    "@endo/pass-style" "^0.1.6"
+
+"@endo/import-bundle@^0.2.45":
+  version "0.2.55"
+  resolved "https://registry.yarnpkg.com/@endo/import-bundle/-/import-bundle-0.2.55.tgz#4ad1012d15a2027992b2fc2a3848cbaa5bb5ff90"
+  integrity sha512-1t3AbhBSpb090+jSmta/2/PmkdSjXU3s0Pcdx/IQp2qcTqsrQDiCCZTdbZ24moxBGllAuTnPYTeA3jiu6/vdXA==
+  dependencies:
+    "@endo/base64" "^0.2.27"
+    "@endo/compartment-mapper" "^0.7.15"
+
+"@endo/import-bundle@^0.3.4":
+  version "0.3.5"
+  resolved "https://registry.yarnpkg.com/@endo/import-bundle/-/import-bundle-0.3.5.tgz#b2b21f58c9fd077857754ccb7e9d0a91868de88d"
+  integrity sha512-jYBXGnvWhw4w/N8ZPGar+sftNg/wgI5mCCE0ooUYMUBvM5ulPHI+/KYW3FD9pSwU8h7d5Nvs3bvA4w6dN7b67A==
+  dependencies:
+    "@endo/base64" "^0.2.32"
+    "@endo/compartment-mapper" "^0.8.5"
+
+"@endo/init@^0.5.41", "@endo/init@^0.5.49", "@endo/init@^0.5.56", "@endo/init@^0.5.59":
+  version "0.5.59"
+  resolved "https://registry.yarnpkg.com/@endo/init/-/init-0.5.59.tgz#b4e5433f1d0e9cb49de3db48585642e946ed6299"
+  integrity sha512-F6+b1xUapQcsL4ALZTrM1fQJcbT+nbDLVq//6rH7ZVQGrXLOJK09ImOQVBm0YflVkfhu8UB6fk2YZQx+uaPwxw==
+  dependencies:
+    "@endo/base64" "^0.2.34"
+    "@endo/eventual-send" "^0.17.5"
+    "@endo/lockdown" "^0.1.31"
+    "@endo/promise-kit" "^0.2.59"
+
 "@endo/init@^0.5.43":
   version "0.5.43"
   resolved "https://registry.yarnpkg.com/@endo/init/-/init-0.5.43.tgz#bf951ab5a7355661a0084a0e59cdc2d3bb0e3354"
@@ -1436,25 +2413,68 @@
   dependencies:
     ses "^0.15.17"
 
-"@endo/marshal@^0.6.3":
-  version "0.6.3"
-  resolved "https://registry.yarnpkg.com/@endo/marshal/-/marshal-0.6.3.tgz#9a22b77acb3371f8fb7f33958c7781c792617e9b"
-  integrity sha512-3TxX93F/hIWGU4h+dR/I5dskH7iDhMhRFfWIrmGj8yMMq6rW9CtgdOy59GfaHBJ1YB70ZH4ULwb1Iir5Z2EcLw==
+"@endo/lockdown@^0.1.28", "@endo/lockdown@^0.1.31":
+  version "0.1.31"
+  resolved "https://registry.yarnpkg.com/@endo/lockdown/-/lockdown-0.1.31.tgz#8921730896a3fdd8e079bf225f4cbf8751cd74a0"
+  integrity sha512-6pGdxCEF8+MOVX2weML+RMkzEwIv3hATa2CMZy8B7P2pakfIama6PoopraSzt9OB/S+o39GW3VLqwRWlGN/J+Q==
+  dependencies:
+    ses "^0.18.7"
+
+"@endo/marshal@^0.6.7":
+  version "0.6.9"
+  resolved "https://registry.yarnpkg.com/@endo/marshal/-/marshal-0.6.9.tgz#a30a323c86100512aba2c2c1f8ca2c7cf432c621"
+  integrity sha512-FH+Z76Hv+yoRmpoo3SZOTLfsqdMBhbqqUHD/UQ+38G91NN9g/NVRNObq25CkR/oU5EOlzdCxghL5L3H7tkXDCA==
+  dependencies:
+    "@endo/eventual-send" "^0.15.5"
+    "@endo/nat" "^4.1.14"
+    "@endo/promise-kit" "^0.2.43"
+
+"@endo/marshal@^0.8.2", "@endo/marshal@^0.8.5", "@endo/marshal@^0.8.6", "@endo/marshal@^0.8.8":
+  version "0.8.8"
+  resolved "https://registry.yarnpkg.com/@endo/marshal/-/marshal-0.8.8.tgz#d6e51a5c1c4c97f3904a8ee93bb352706391baa7"
+  integrity sha512-uoGF5Hwmne9y8eT73474YTLjfcvgWQD+9Iq5PrJSy+Ymek4VbOGNv12j5wvA0TTylbHlrakFv0fs7q10OV9B+Q==
   dependencies:
-    "@endo/eventual-send" "^0.14.8"
-    "@endo/nat" "^4.1.8"
-    "@endo/promise-kit" "^0.2.37"
+    "@endo/eventual-send" "^0.17.5"
+    "@endo/nat" "^4.1.30"
+    "@endo/pass-style" "^0.1.6"
+    "@endo/promise-kit" "^0.2.59"
 
-"@endo/nat@^4.1.8":
-  version "4.1.8"
-  resolved "https://registry.yarnpkg.com/@endo/nat/-/nat-4.1.8.tgz#2c761c64f124cb610a63bded0c78a306678d6304"
-  integrity sha512-KwNkmw2tS8rDs0V3Q/cgje6JNg2AarSjFimT/hchcxz4BMBHS5mI486/W9QC3yQcxkidqX7GX3sYcD18xu5tBA==
+"@endo/nat@^4.1.12", "@endo/nat@^4.1.14", "@endo/nat@^4.1.24", "@endo/nat@^4.1.27", "@endo/nat@^4.1.30":
+  version "4.1.30"
+  resolved "https://registry.yarnpkg.com/@endo/nat/-/nat-4.1.30.tgz#a52137e4d9dc159dc01f146a3506e7de3cb912f2"
+  integrity sha512-UN8obyLCGrG4vvEX+LV8ZOQMfwVDDA6z6mnvBRyZXbl+GwAs8QXa7vi9NiscidyCTvxad7jjfuf7IIqlIZUTQg==
 
 "@endo/netstring@^0.2.8":
   version "0.2.13"
   resolved "https://registry.yarnpkg.com/@endo/netstring/-/netstring-0.2.13.tgz#de0742010998eb373a4ab0a011f1c7a769838075"
   integrity sha512-+Q0pAg+3oA2ZlKth3k7BD+bhKMmVHfcHSWcBiCVg7LFVzrOIiltI9bEk7TJaGSWHTarUoR+vAPZwL/GULan15g==
 
+"@endo/netstring@^0.3.19", "@endo/netstring@^0.3.26":
+  version "0.3.29"
+  resolved "https://registry.yarnpkg.com/@endo/netstring/-/netstring-0.3.29.tgz#7519e1e410aa3af7f866260813b410dd2982f8a2"
+  integrity sha512-KD4gWQdCTPcSb2QWKl4QPfXcvACGbpuJsAT0rUg5u0S5qBzihFkECF0Oghmfwqs7Mbms4SmVDWL2Rxtkl66t9Q==
+  dependencies:
+    "@endo/init" "^0.5.59"
+    "@endo/stream" "^0.3.28"
+    ses "^0.18.7"
+
+"@endo/pass-style@^0.1.3", "@endo/pass-style@^0.1.6":
+  version "0.1.6"
+  resolved "https://registry.yarnpkg.com/@endo/pass-style/-/pass-style-0.1.6.tgz#eb554b6c1b4ff3a4e55a8f3c612866bf27e91b76"
+  integrity sha512-SkRFW0FqBjjVagBDyhlGr7GmDFtVqZYhH4rN+YBtIjciFugmMT5p8gdnTnns3AUnurBSHH55MjKXIOzJNL+Txw==
+  dependencies:
+    "@endo/promise-kit" "^0.2.59"
+    "@fast-check/ava" "^1.1.5"
+
+"@endo/patterns@^0.2.2", "@endo/patterns@^0.2.3", "@endo/patterns@^0.2.5":
+  version "0.2.5"
+  resolved "https://registry.yarnpkg.com/@endo/patterns/-/patterns-0.2.5.tgz#84fae7cd78ea641b2c20549a19b101ad04ef2bde"
+  integrity sha512-oJATZDCNPR2FzbzrRM1GlH1E8dZe6j5zAVdhQPCcaVmlyZd66YVEnm4VaoI6EV+LGPclAoMFq2uHn9/npysxdQ==
+  dependencies:
+    "@endo/eventual-send" "^0.17.5"
+    "@endo/marshal" "^0.8.8"
+    "@endo/promise-kit" "^0.2.59"
+
 "@endo/promise-kit@^0.2.37":
   version "0.2.37"
   resolved "https://registry.yarnpkg.com/@endo/promise-kit/-/promise-kit-0.2.37.tgz#ef1506a953bbbb02793a33c7f22a6ac07783bea6"
@@ -1462,6 +2482,13 @@
   dependencies:
     ses "^0.15.11"
 
+"@endo/promise-kit@^0.2.41", "@endo/promise-kit@^0.2.49", "@endo/promise-kit@^0.2.53", "@endo/promise-kit@^0.2.56", "@endo/promise-kit@^0.2.59":
+  version "0.2.59"
+  resolved "https://registry.yarnpkg.com/@endo/promise-kit/-/promise-kit-0.2.59.tgz#93f61a709660252c541e9ecaf7c138f1cf279f9a"
+  integrity sha512-l4KK3CE4gb0cqPA2u9Agh+7yIbsExO10eJbnWKDgN9FC6b1oaZPL9NdXf3kOhSjH1OFCPHtc+whH9uMNV9e+KQ==
+  dependencies:
+    ses "^0.18.7"
+
 "@endo/promise-kit@^0.2.43":
   version "0.2.43"
   resolved "https://registry.yarnpkg.com/@endo/promise-kit/-/promise-kit-0.2.43.tgz#d4c563124c3ce35843492cbbf7fe7568a7693b1f"
@@ -1498,11 +2525,61 @@
     "@babel/types" "^7.17.0"
     ses "^0.15.11"
 
+"@endo/static-module-record@^0.7.14", "@endo/static-module-record@^0.7.20":
+  version "0.7.20"
+  resolved "https://registry.yarnpkg.com/@endo/static-module-record/-/static-module-record-0.7.20.tgz#5d9583aaa8042b8a6de58c72f765e5a28e880489"
+  integrity sha512-qpow712L7Bh7F3olFW9e15PcDWnC2eSY4xPdhpZoYTzedsyjCETRgxFWY6+DdT193lNlyKIn0On1O1Go+5WmBA==
+  dependencies:
+    "@agoric/babel-generator" "^7.17.6"
+    "@babel/parser" "^7.17.3"
+    "@babel/traverse" "^7.17.3"
+    "@babel/types" "^7.17.0"
+    ses "^0.18.5"
+
+"@endo/static-module-record@^0.8.1":
+  version "0.8.1"
+  resolved "https://registry.yarnpkg.com/@endo/static-module-record/-/static-module-record-0.8.1.tgz#cf1900b66a92aa0a46584486e778351483102153"
+  integrity sha512-F2x+jALc286VQ7xfd0LXYyo+PwHR46dolmuMLOC7MkpPHVT323jH6n29U6unIEFTqknhVB6gHXIwuwGD4mzSWQ==
+  dependencies:
+    "@agoric/babel-generator" "^7.17.6"
+    "@babel/parser" "^7.17.3"
+    "@babel/traverse" "^7.17.3"
+    "@babel/types" "^7.17.0"
+    ses "^0.18.7"
+
+"@endo/stream-node@^0.2.19", "@endo/stream-node@^0.2.26":
+  version "0.2.29"
+  resolved "https://registry.yarnpkg.com/@endo/stream-node/-/stream-node-0.2.29.tgz#b006afd648f5ae079e6d333b9679edb13c11d8be"
+  integrity sha512-wL8io8Y106f15CsV/cBdlgZjkK7a8NFlR+o0jalwILHErFg7foTKPGqK5lb+tuNue6vaheC/QXNGG5/nWx4u7g==
+  dependencies:
+    "@endo/init" "^0.5.59"
+    "@endo/stream" "^0.3.28"
+    ses "^0.18.7"
+
+"@endo/stream@^0.3.18", "@endo/stream@^0.3.25", "@endo/stream@^0.3.28":
+  version "0.3.28"
+  resolved "https://registry.yarnpkg.com/@endo/stream/-/stream-0.3.28.tgz#755bbdbf1fd8d31a9ad80a8b5fcc20ba37535c64"
+  integrity sha512-zlSm7KlMxVDal2Ob6pazjZ7vRTFgQxwSSiAeLJMM7tlBPL28G28MJfcPAMFKtcN+jknW1MXcHDmjzMo4kJuUiA==
+  dependencies:
+    "@endo/eventual-send" "^0.17.5"
+    "@endo/promise-kit" "^0.2.59"
+    ses "^0.18.7"
+
+"@endo/where@^0.3.4":
+  version "0.3.4"
+  resolved "https://registry.yarnpkg.com/@endo/where/-/where-0.3.4.tgz#af8f5cd8140e376a881e08e522359aa18ab162e5"
+  integrity sha512-v4jTUPJwjYY2EUBG1hzwhzFywsTejMPr1hDSQevCVVzK8HnSzHch0AeUciBSo+/2+iM8JTstF1TLlLq0n5YQmw==
+
 "@endo/zip@^0.2.11", "@endo/zip@^0.2.21":
   version "0.2.21"
   resolved "https://registry.yarnpkg.com/@endo/zip/-/zip-0.2.21.tgz#98ac48439ebb8bb146b7c4488633d975a42fda2d"
   integrity sha512-YtvksxnEAQjh+7IrwZS87n5oNiY5tv2W9W56AOCBAazlG+yPmwITVm8zQYuXlc3P1Nl2BqKzC4Xw4SfbbCtzzw==
 
+"@endo/zip@^0.2.25", "@endo/zip@^0.2.27", "@endo/zip@^0.2.31", "@endo/zip@^0.2.32", "@endo/zip@^0.2.34":
+  version "0.2.34"
+  resolved "https://registry.yarnpkg.com/@endo/zip/-/zip-0.2.34.tgz#d5571ef91019a647f64e69b003a0e3fb23de827d"
+  integrity sha512-ty6zqDLF3HZyc5Icq0/d93snpNBJsdqIeb8GcbDWxwHBhczmJoTPu0YOnWPtNgkE8bqi+2zhibmdS9kdn7M1Ew==
+
 "@es-joy/jsdoccomment@^0.8.0-alpha.2":
   version "0.8.0-alpha.2"
   resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.8.0-alpha.2.tgz#78585147d8e6231270374dae528fe5b7b5587b5a"
@@ -1527,6 +2604,13 @@
     minimatch "^3.0.4"
     strip-json-comments "^3.1.1"
 
+"@fast-check/ava@^1.1.3", "@fast-check/ava@^1.1.5":
+  version "1.1.5"
+  resolved "https://registry.yarnpkg.com/@fast-check/ava/-/ava-1.1.5.tgz#b471ce5252a3d62eb9bc316f1b7b0a79a7c8341f"
+  integrity sha512-OopAjw8v6r3sEqR02O61r2yGoE4B1nWDRXAkB4tuK/v7qemkf86Fz+GRgBgAkSFql85VAeUq+wlx0F3Y7wJzzA==
+  dependencies:
+    fast-check "^3.0.0"
+
 "@iarna/toml@^2.2.3":
   version "2.2.5"
   resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.5.tgz#b32366c89b43c6f8cefbdefac778b9c828e3ba8c"
@@ -1545,6 +2629,11 @@
     call-me-maybe "^1.0.1"
     glob-to-regexp "^0.3.0"
 
+"@noble/hashes@^1", "@noble/hashes@^1.0.0":
+  version "1.3.1"
+  resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9"
+  integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==
+
 "@nodelib/fs.scandir@2.1.5":
   version "2.1.5"
   resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
@@ -1585,6 +2674,11 @@
   dependencies:
     "@opentelemetry/context-base" "^0.16.0"
 
+"@opentelemetry/api@^1.0.0":
+  version "1.4.1"
+  resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.4.1.tgz#ff22eb2e5d476fbc2450a196e40dd243cc20c28f"
+  integrity sha512-O2yRJce1GOc6PAy3QxFM4NzFiWzvScDC1/5ihYBL6BUEVdq0XMWN01sppE+H6bBXbaFYipjwFLEWLg5PaSOThA==
+
 "@opentelemetry/context-base@^0.16.0":
   version "0.16.0"
   resolved "https://registry.yarnpkg.com/@opentelemetry/context-base/-/context-base-0.16.0.tgz#f41ca27221f31247e8bccfdde87a5cbfd9b57679"
@@ -1599,6 +2693,13 @@
     "@opentelemetry/context-base" "^0.16.0"
     semver "^7.1.3"
 
+"@opentelemetry/core@^1.14.0":
+  version "1.15.2"
+  resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.15.2.tgz#5b170bf223a2333884bbc2d29d95812cdbda7c9f"
+  integrity sha512-+gBv15ta96WqkHZaPpcDHiaz0utiiHZVfm2YOYSqFGrUaJpPkMoSuLBB58YFQGi6Rsb9EHos84X6X5+9JspmLw==
+  dependencies:
+    "@opentelemetry/semantic-conventions" "1.15.2"
+
 "@opentelemetry/exporter-prometheus@^0.16.0":
   version "0.16.0"
   resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.16.0.tgz#2623568ba520975d9441b5047f9c48554005efb6"
@@ -1628,6 +2729,64 @@
     "@opentelemetry/api" "^0.16.0"
     "@opentelemetry/core" "^0.16.0"
 
+"@opentelemetry/semantic-conventions@1.15.2":
+  version "1.15.2"
+  resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.15.2.tgz#3bafb5de3e20e841dff6cb3c66f4d6e9694c4241"
+  integrity sha512-CjbOKwk2s+3xPIMcd5UNYQzsf+v94RczbdNix9/kQh38WiQkM90sUOi3if8eyHFgiBjBjhwXrA7W3ydiSQP9mw==
+
+"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2":
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf"
+  integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==
+
+"@protobufjs/base64@^1.1.2":
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735"
+  integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==
+
+"@protobufjs/codegen@^2.0.4":
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb"
+  integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==
+
+"@protobufjs/eventemitter@^1.1.0":
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70"
+  integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==
+
+"@protobufjs/fetch@^1.1.0":
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45"
+  integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==
+  dependencies:
+    "@protobufjs/aspromise" "^1.1.1"
+    "@protobufjs/inquire" "^1.1.0"
+
+"@protobufjs/float@^1.0.2":
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1"
+  integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==
+
+"@protobufjs/inquire@^1.1.0":
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089"
+  integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==
+
+"@protobufjs/path@^1.1.2":
+  version "1.1.2"
+  resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d"
+  integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==
+
+"@protobufjs/pool@^1.1.0":
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54"
+  integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==
+
+"@protobufjs/utf8@^1.1.0":
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
+  integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==
+
 "@rollup/plugin-commonjs@^19.0.0":
   version "19.0.2"
   resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-19.0.2.tgz#1ccc3d63878d1bc9846f8969f09dd3b3e4ecc244"
@@ -1715,6 +2874,11 @@
   resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee"
   integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4=
 
+"@types/long@^4.0.1":
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a"
+  integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==
+
 "@types/minimatch@*":
   version "3.0.4"
   resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.4.tgz#f0ec25dbf2f0e4b18647313ac031134ca5b24b21"
@@ -1725,6 +2889,11 @@
   resolved "https://registry.yarnpkg.com/@types/node/-/node-15.12.1.tgz#9b60797dee1895383a725f828a869c86c6caa5c2"
   integrity sha512-zyxJM8I1c9q5sRMtVF+zdd13Jt6RU4r4qfhTd7lQubyThvLfx6yYekWSQjGCGV2Tkecgxnlpl/DNlb6Hg+dmEw==
 
+"@types/node@>=13.7.0":
+  version "20.5.1"
+  resolved "https://registry.yarnpkg.com/@types/node/-/node-20.5.1.tgz#178d58ee7e4834152b0e8b4d30cbfab578b9bb30"
+  integrity sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==
+
 "@types/q@^1.5.1":
   version "1.5.4"
   resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24"
@@ -1737,6 +2906,11 @@
   dependencies:
     "@types/node" "*"
 
+"@types/triple-beam@^1.3.2":
+  version "1.3.2"
+  resolved "https://registry.yarnpkg.com/@types/triple-beam/-/triple-beam-1.3.2.tgz#38ecb64f01aa0d02b7c8f4222d7c38af6316fef8"
+  integrity sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g==
+
 "@typescript-eslint/parser@^4.26.0":
   version "4.26.0"
   resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.26.0.tgz#31b6b732c9454f757b020dab9b6754112aa5eeaf"
@@ -2224,6 +3398,11 @@ accepts@~1.3.8:
     mime-types "~2.1.34"
     negotiator "0.6.3"
 
+acorn-import-assertions@^1.9.0:
+  version "1.9.0"
+  resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac"
+  integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==
+
 acorn-jsx@^5.3.1:
   version "5.3.1"
   resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b"
@@ -2254,6 +3433,11 @@ acorn@^8.7.1:
   resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8"
   integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==
 
+acorn@^8.8.2:
+  version "8.10.0"
+  resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5"
+  integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==
+
 agentkeepalive@^2.2.0:
   version "2.2.0"
   resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-2.2.0.tgz#c5d1bd4b129008f1163f236f86e5faea2026e2ef"
@@ -2298,6 +3482,52 @@ agoric@^0.13.21:
     opener "^1.5.2"
     ws "^7.2.0"
 
+agoric@^0.21.1:
+  version "0.21.1"
+  resolved "https://registry.yarnpkg.com/agoric/-/agoric-0.21.1.tgz#dbe04757c6deba83dd45cbd39e10eeaa26e8c7de"
+  integrity sha512-couQBRaYLY9S5cXm0uUmf/022+Zy6EHH9tbZLOFYGzdFQeTMZCvYbxdklKGVzLWcoe8CHc/YMemnpaBghkPG4A==
+  dependencies:
+    "@agoric/access-token" "^0.4.21"
+    "@agoric/assert" "^0.6.0"
+    "@agoric/cache" "^0.3.2"
+    "@agoric/casting" "^0.4.2"
+    "@agoric/cosmic-proto" "^0.3.0"
+    "@agoric/ertp" "^0.16.2"
+    "@agoric/inter-protocol" "^0.16.1"
+    "@agoric/internal" "^0.3.2"
+    "@agoric/smart-wallet" "^0.5.3"
+    "@agoric/store" "^0.9.2"
+    "@agoric/swingset-vat" "^0.32.2"
+    "@agoric/vats" "^0.15.1"
+    "@agoric/zoe" "^0.26.2"
+    "@agoric/zone" "^0.2.2"
+    "@confio/relayer" "^0.9.0"
+    "@cosmjs/crypto" "^0.30.1"
+    "@cosmjs/encoding" "^0.30.1"
+    "@cosmjs/math" "^0.30.1"
+    "@cosmjs/proto-signing" "^0.30.1"
+    "@cosmjs/stargate" "^0.30.1"
+    "@cosmjs/tendermint-rpc" "^0.30.1"
+    "@endo/bundle-source" "^2.5.1"
+    "@endo/captp" "^3.1.1"
+    "@endo/compartment-mapper" "^0.8.4"
+    "@endo/far" "^0.2.18"
+    "@endo/init" "^0.5.56"
+    "@endo/marshal" "^0.8.5"
+    "@endo/nat" "^4.1.27"
+    "@endo/promise-kit" "^0.2.56"
+    "@iarna/toml" "^2.2.3"
+    anylogger "^0.21.0"
+    chalk "^5.2.0"
+    commander "^10.0.0"
+    dd-trace "^3.3.0"
+    deterministic-json "^1.0.5"
+    esm agoric-labs/esm#Agoric-built
+    inquirer "^8.2.2"
+    opener "^1.5.2"
+    tmp "^0.2.1"
+    ws "^7.2.0"
+
 ajv-errors@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d"
@@ -2308,6 +3538,16 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1, ajv-keywords@^3.5.2:
   resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
   integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
 
+ajv@7.1.1:
+  version "7.1.1"
+  resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.1.1.tgz#1e6b37a454021fa9941713f38b952fc1c8d32a84"
+  integrity sha512-ga/aqDYnUy/o7vbsRTFhhTsNeXiYb5JWDIcRIeZfwRNCefwjNTVYCGdGSUrEmiu3yDK3vFvNbgJxvrQW4JXrYQ==
+  dependencies:
+    fast-deep-equal "^3.1.1"
+    json-schema-traverse "^1.0.0"
+    require-from-string "^2.0.2"
+    uri-js "^4.2.2"
+
 ajv@^6.1.0, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4:
   version "6.12.6"
   resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
@@ -2376,7 +3616,7 @@ ansi-escapes@^3.2.0:
   resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b"
   integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==
 
-ansi-escapes@^4.1.0:
+ansi-escapes@^4.1.0, ansi-escapes@^4.2.1:
   version "4.3.2"
   resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e"
   integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==
@@ -2442,6 +3682,11 @@ ansi-styles@^6.0.0, ansi-styles@^6.1.0:
   resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.1.0.tgz#87313c102b8118abd57371afab34618bf7350ed3"
   integrity sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ==
 
+ansi-styles@^6.2.1:
+  version "6.2.1"
+  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5"
+  integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
+
 anylogger@^0.21.0:
   version "0.21.0"
   resolved "https://registry.yarnpkg.com/anylogger/-/anylogger-0.21.0.tgz#b6cbea631cd5e1c884e5c0fa007d80bde1b22bd4"
@@ -2483,6 +3728,11 @@ argparse@^1.0.7:
   dependencies:
     sprintf-js "~1.0.2"
 
+argparse@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
+  integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
+
 arr-diff@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
@@ -2629,6 +3879,11 @@ async@^2.6.2:
   dependencies:
     lodash "^4.17.14"
 
+async@^3.1.0:
+  version "3.2.4"
+  resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c"
+  integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==
+
 asynckit@^0.4.0:
   version "0.4.0"
   resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
@@ -2720,6 +3975,13 @@ aws4@^1.8.0:
   resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59"
   integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==
 
+axios@0.21.4, axios@^0.21.2:
+  version "0.21.4"
+  resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575"
+  integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==
+  dependencies:
+    follow-redirects "^1.14.0"
+
 babel-eslint@^10.0.3:
   version "10.1.0"
   resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232"
@@ -2778,7 +4040,7 @@ balanced-match@^1.0.0:
   resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
   integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
 
-base64-js@^1.0.2, base64-js@^1.3.1:
+base64-js@^1.0.2, base64-js@^1.3.0, base64-js@^1.3.1:
   version "1.5.1"
   resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
   integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
@@ -2815,6 +4077,11 @@ bcrypt-pbkdf@^1.0.0:
   dependencies:
     tweetnacl "^0.14.3"
 
+bech32@^1.1.4:
+  version "1.1.4"
+  resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9"
+  integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==
+
 better-sqlite3@^7.4.1:
   version "7.5.0"
   resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-7.5.0.tgz#2a91cb616453f002096743b0e5b66a7021cd1c63"
@@ -2823,6 +4090,22 @@ better-sqlite3@^7.4.1:
     bindings "^1.5.0"
     prebuild-install "^7.0.0"
 
+better-sqlite3@^7.5.0:
+  version "7.6.2"
+  resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-7.6.2.tgz#47cd8cad5b9573cace535f950ac321166bc31384"
+  integrity sha512-S5zIU1Hink2AH4xPsN0W43T1/AJ5jrPh7Oy07ocuW/AKYYY02GWzz9NH0nbSMn/gw6fDZ5jZ1QsHt1BXAwJ6Lg==
+  dependencies:
+    bindings "^1.5.0"
+    prebuild-install "^7.1.0"
+
+better-sqlite3@^8.2.0:
+  version "8.5.1"
+  resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-8.5.1.tgz#984f7645303afa76289569804ee56e211d8ffa66"
+  integrity sha512-aDfC67xfll6bugnOqRJhdUWioQZnkhLkrwZ+oo6yZbNMtyktbwkDO4SfBcCVWbm4BlsCjCNTJchlHaBt+vB4Iw==
+  dependencies:
+    bindings "^1.5.0"
+    prebuild-install "^7.1.0"
+
 big.js@^3.1.3:
   version "3.2.0"
   resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e"
@@ -2850,7 +4133,12 @@ bindings@^1.2.1, bindings@^1.5.0:
   dependencies:
     file-uri-to-path "1.0.0"
 
-bl@^4.0.3:
+bintrees@1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/bintrees/-/bintrees-1.0.2.tgz#49f896d6e858a4a499df85c38fb399b9aff840f8"
+  integrity sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw==
+
+bl@^4.0.3, bl@^4.1.0:
   version "4.1.0"
   resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a"
   integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
@@ -2879,6 +4167,11 @@ bn.js@^5.0.0, bn.js@^5.1.1:
   resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002"
   integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==
 
+bn.js@^5.2.0:
+  version "5.2.1"
+  resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70"
+  integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==
+
 body-parser@1.20.1:
   version "1.20.1"
   resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668"
@@ -3307,11 +4600,24 @@ chalk@^4.0.0:
     ansi-styles "^4.1.0"
     supports-color "^7.1.0"
 
+chalk@^4.1.0, chalk@^4.1.1:
+  version "4.1.2"
+  resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
+  integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+  dependencies:
+    ansi-styles "^4.1.0"
+    supports-color "^7.1.0"
+
 chalk@^5.0.1:
   version "5.0.1"
   resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.0.1.tgz#ca57d71e82bb534a296df63bbacc4a1c22b2a4b6"
   integrity sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==
 
+chalk@^5.2.0:
+  version "5.3.0"
+  resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385"
+  integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==
+
 chardet@^0.7.0:
   version "0.7.0"
   resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
@@ -3420,6 +4726,11 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
     inherits "^2.0.1"
     safe-buffer "^5.0.1"
 
+cjs-module-lexer@^1.2.2:
+  version "1.2.3"
+  resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107"
+  integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==
+
 class-utils@^0.3.5:
   version "0.3.6"
   resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
@@ -3466,6 +4777,18 @@ cli-cursor@^2.1.0:
   dependencies:
     restore-cursor "^2.0.0"
 
+cli-cursor@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307"
+  integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
+  dependencies:
+    restore-cursor "^3.1.0"
+
+cli-spinners@^2.5.0:
+  version "2.9.0"
+  resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.0.tgz#5881d0ad96381e117bbe07ad91f2008fe6ffd8db"
+  integrity sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==
+
 cli-truncate@^3.1.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-3.1.0.tgz#3f23ab12535e3d73e839bb43e73c9de487db1389"
@@ -3479,6 +4802,11 @@ cli-width@^2.0.0:
   resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48"
   integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==
 
+cli-width@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6"
+  integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==
+
 cliui@^5.0.0:
   version "5.0.0"
   resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5"
@@ -3504,6 +4832,11 @@ clone-response@^1.0.2:
   dependencies:
     mimic-response "^1.0.0"
 
+clone@^1.0.2:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
+  integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==
+
 coa@^2.0.2:
   version "2.0.2"
   resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3"
@@ -3533,7 +4866,7 @@ collection-visit@^1.0.0:
     map-visit "^1.0.0"
     object-visit "^1.0.0"
 
-color-convert@^1.9.0, color-convert@^1.9.1:
+color-convert@^1.9.0, color-convert@^1.9.1, color-convert@^1.9.3:
   version "1.9.3"
   resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
   integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
@@ -3565,6 +4898,14 @@ color-string@^1.5.4:
     color-name "^1.0.0"
     simple-swizzle "^0.2.2"
 
+color-string@^1.6.0:
+  version "1.9.1"
+  resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4"
+  integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==
+  dependencies:
+    color-name "^1.0.0"
+    simple-swizzle "^0.2.2"
+
 color@^3.0.0:
   version "3.1.3"
   resolved "https://registry.yarnpkg.com/color/-/color-3.1.3.tgz#ca67fb4e7b97d611dcde39eceed422067d91596e"
@@ -3573,11 +4914,27 @@ color@^3.0.0:
     color-convert "^1.9.1"
     color-string "^1.5.4"
 
+color@^3.1.3:
+  version "3.2.1"
+  resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164"
+  integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==
+  dependencies:
+    color-convert "^1.9.3"
+    color-string "^1.6.0"
+
 colorette@^1.2.1, colorette@^1.2.2:
   version "1.2.2"
   resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94"
   integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==
 
+colorspace@1.1.x:
+  version "1.1.4"
+  resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.4.tgz#8d442d1186152f60453bf8070cd66eb364e59243"
+  integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==
+  dependencies:
+    color "^3.1.3"
+    text-hex "1.0.x"
+
 combined-stream@^1.0.6, combined-stream@~1.0.6:
   version "1.0.8"
   resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
@@ -3590,6 +4947,16 @@ commander@2.17.x:
   resolved "https://registry.yarnpkg.com/commander/-/commander-2.17.1.tgz#bd77ab7de6de94205ceacc72f1716d29f20a77bf"
   integrity sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==
 
+commander@7.1.0:
+  version "7.1.0"
+  resolved "https://registry.yarnpkg.com/commander/-/commander-7.1.0.tgz#f2eaecf131f10e36e07d894698226e36ae0eb5ff"
+  integrity sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==
+
+commander@^10.0.0:
+  version "10.0.1"
+  resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06"
+  integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==
+
 commander@^2.19.0, commander@^2.20.0:
   version "2.20.3"
   resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
@@ -3820,6 +5187,14 @@ cosmiconfig@^5.0.0:
     js-yaml "^3.13.1"
     parse-json "^4.0.0"
 
+cosmjs-types@^0.7.1:
+  version "0.7.2"
+  resolved "https://registry.yarnpkg.com/cosmjs-types/-/cosmjs-types-0.7.2.tgz#a757371abd340949c5bd5d49c6f8379ae1ffd7e2"
+  integrity sha512-vf2uLyktjr/XVAgEq0DjMxeAWh1yYREe7AMHDKd7EiHVqxBPCaBS+qEEQUkXbR9ndnckqr1sUG8BQhazh4X5lA==
+  dependencies:
+    long "^4.0.0"
+    protobufjs "~6.11.2"
+
 create-ecdh@^4.0.0:
   version "4.0.4"
   resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e"
@@ -3893,6 +5268,11 @@ crypto-random-string@^2.0.0:
   resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"
   integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==
 
+crypto-randomuuid@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/crypto-randomuuid/-/crypto-randomuuid-1.0.0.tgz#acf583e5e085e867ae23e107ff70279024f9e9e7"
+  integrity sha512-/RC5F4l1SCqD/jazwUF6+t34Cd8zTSAGZ7rvvZu1whZUhD2a5MOGKjSGowoGcpj/cbVZk1ZODIooJEQQq3nNAA==
+
 css-color-names@0.0.4, css-color-names@^0.0.4:
   version "0.0.4"
   resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
@@ -4082,6 +5462,43 @@ date-time@^3.1.0:
   dependencies:
     time-zone "^1.0.0"
 
+dd-trace@^3.3.0:
+  version "3.33.0"
+  resolved "https://registry.yarnpkg.com/dd-trace/-/dd-trace-3.33.0.tgz#d541cdae130cacbe6730d0100d91043e60aa84c4"
+  integrity sha512-ed7XMiWVAfF51V6dGwPA6TlhTIPUMxE62arc4U2SzS6n0B41tZHpc0n53NnfdaBnDp19epIgbtHdCm3sT00SJg==
+  dependencies:
+    "@datadog/native-appsec" "^3.2.0"
+    "@datadog/native-iast-rewriter" "2.0.1"
+    "@datadog/native-iast-taint-tracking" "1.5.0"
+    "@datadog/native-metrics" "^2.0.0"
+    "@datadog/pprof" "3.1.0"
+    "@datadog/sketches-js" "^2.1.0"
+    "@opentelemetry/api" "^1.0.0"
+    "@opentelemetry/core" "^1.14.0"
+    crypto-randomuuid "^1.0.0"
+    diagnostics_channel "^1.1.0"
+    ignore "^5.2.4"
+    import-in-the-middle "^1.4.2"
+    int64-buffer "^0.1.9"
+    ipaddr.js "^2.1.0"
+    istanbul-lib-coverage "3.2.0"
+    koalas "^1.0.2"
+    limiter "^1.1.4"
+    lodash.kebabcase "^4.1.1"
+    lodash.pick "^4.4.0"
+    lodash.sortby "^4.7.0"
+    lodash.uniq "^4.5.0"
+    lru-cache "^7.14.0"
+    methods "^1.1.2"
+    module-details-from-path "^1.0.3"
+    msgpack-lite "^0.1.26"
+    node-abort-controller "^3.1.1"
+    opentracing ">=0.12.1"
+    path-to-regexp "^0.1.2"
+    protobufjs "^7.2.4"
+    retry "^0.13.1"
+    semver "^7.5.4"
+
 de-indent@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d"
@@ -4186,6 +5603,13 @@ default-gateway@^4.2.0:
     execa "^1.0.0"
     ip-regex "^2.1.0"
 
+defaults@^1.0.3:
+  version "1.0.4"
+  resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a"
+  integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==
+  dependencies:
+    clone "^1.0.2"
+
 defer-to-connect@^1.0.1:
   version "1.1.3"
   resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591"
@@ -4255,6 +5679,11 @@ del@^6.1.1:
     rimraf "^3.0.2"
     slash "^3.0.0"
 
+delay@^5.0.0:
+  version "5.0.0"
+  resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d"
+  integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==
+
 delayed-stream@~1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
@@ -4293,6 +5722,11 @@ detect-libc@^1.0.3:
   resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
   integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=
 
+detect-libc@^2.0.0:
+  version "2.0.2"
+  resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d"
+  integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==
+
 detect-node@^2.0.4:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1"
@@ -4310,6 +5744,11 @@ diacritics@^1.3.0:
   resolved "https://registry.yarnpkg.com/diacritics/-/diacritics-1.3.0.tgz#3efa87323ebb863e6696cebb0082d48ff3d6f7a1"
   integrity sha1-PvqHMj67hj5mls67AILUj/PW96E=
 
+diagnostics_channel@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/diagnostics_channel/-/diagnostics_channel-1.1.0.tgz#bd66c49124ce3bac697dff57466464487f57cea5"
+  integrity sha512-OE1ngLDjSBPG6Tx0YATELzYzy3RKHC+7veQ8gLa8yS7AAgw65mFbVdcsu3501abqOZCEZqZyAIemB0zXlqDSuw==
+
 diffie-hellman@^5.0.0:
   version "5.0.3"
   resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
@@ -4475,7 +5914,7 @@ electron-to-chromium@^1.3.723:
   resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.749.tgz#0ecebc529ceb49dd2a7c838ae425236644c3439a"
   integrity sha512-F+v2zxZgw/fMwPz/VUGIggG4ZndDsYy0vlpthi3tjmDZlcfbhN5mYW0evXUsBr2sUtuDANFtle410A9u/sd/4A==
 
-elliptic@^6.5.3:
+elliptic@^6.5.3, elliptic@^6.5.4:
   version "6.5.4"
   resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb"
   integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==
@@ -4518,6 +5957,11 @@ emojis-list@^3.0.0:
   resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
   integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
 
+enabled@2.0.x:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2"
+  integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==
+
 encodeurl@~1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
@@ -4894,6 +6338,11 @@ estraverse@^5.1.0, estraverse@^5.2.0:
   resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880"
   integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==
 
+estree-walker@^0.6.1:
+  version "0.6.1"
+  resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362"
+  integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==
+
 estree-walker@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
@@ -4914,6 +6363,11 @@ etag@~1.8.1:
   resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
   integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
 
+event-lite@^0.1.1:
+  version "0.1.3"
+  resolved "https://registry.yarnpkg.com/event-lite/-/event-lite-0.1.3.tgz#3dfe01144e808ac46448f0c19b4ab68e403a901d"
+  integrity sha512-8qz9nOz5VeD2z96elrEKD2U433+L3DWdUdDkOINLGOJvx1GsMBbMn0aCeu28y8/e85A6mCigBiFlYMnTBEGlSw==
+
 eventemitter3@^4.0.0:
   version "4.0.7"
   resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
@@ -5063,6 +6517,13 @@ extsprintf@^1.2.0:
   resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
   integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
 
+fast-check@^3.0.0:
+  version "3.12.0"
+  resolved "https://registry.yarnpkg.com/fast-check/-/fast-check-3.12.0.tgz#440949277387a053f7f82cd532fa3fcf67346ba1"
+  integrity sha512-SqahE9mlL3+lhjJ39joMLwcj6F+24hfZdf/tchlNO8sHcTdrUUdA5P/ZbSFZM9Xpzs36XaneGwE0FWepm/zyOA==
+  dependencies:
+    pure-rand "^6.0.0"
+
 fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
   version "3.1.3"
   resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
@@ -5118,6 +6579,11 @@ fast-levenshtein@^2.0.6:
   resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
   integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=
 
+fast-safe-stringify@2.0.4:
+  version "2.0.4"
+  resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.4.tgz#4fe828718aa61dbcf9119c3c24e79cc4dea973b2"
+  integrity sha512-mNlGUdKOeGNleyrmgbKYtbnCr9KZkZXU7eM89JRo8vY10f7Ul1Fbj07hUBW3N4fC0xM+fmfFfa2zM7mIizhpNQ==
+
 fastq@^1.6.0:
   version "1.11.0"
   resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858"
@@ -5132,6 +6598,11 @@ faye-websocket@^0.11.3:
   dependencies:
     websocket-driver ">=0.5.1"
 
+fecha@^4.2.0:
+  version "4.2.3"
+  resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.3.tgz#4d9ccdbc61e8629b259fdca67e65891448d569fd"
+  integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==
+
 figgy-pudding@^3.5.1:
   version "3.5.2"
   resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e"
@@ -5286,11 +6757,21 @@ flush-write-stream@^1.0.0:
     inherits "^2.0.3"
     readable-stream "^2.3.6"
 
+fn.name@1.x.x:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc"
+  integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==
+
 follow-redirects@^1.0.0:
   version "1.15.1"
   resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5"
   integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==
 
+follow-redirects@^1.14.0:
+  version "1.15.2"
+  resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13"
+  integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
+
 for-in@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
@@ -5555,6 +7036,13 @@ globals@^13.6.0, globals@^13.9.0:
   dependencies:
     type-fest "^0.20.2"
 
+globalthis@^1.0.1:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf"
+  integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==
+  dependencies:
+    define-properties "^1.1.3"
+
 globby@^11.0.1, globby@^11.0.3:
   version "11.0.3"
   resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.3.tgz#9b1f0cb523e171dd1ad8c7b2a9fb4b644b9593cb"
@@ -5966,7 +7454,7 @@ icss-utils@^4.1.0:
   dependencies:
     postcss "^7.0.14"
 
-ieee754@^1.1.13, ieee754@^1.1.4:
+ieee754@^1.1.13, ieee754@^1.1.4, ieee754@^1.1.8:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
   integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
@@ -5996,6 +7484,11 @@ ignore@^5.0.5, ignore@^5.1.4, ignore@^5.2.0:
   resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
   integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
 
+ignore@^5.2.4:
+  version "5.2.4"
+  resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
+  integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
+
 immediate@^3.2.3:
   version "3.3.0"
   resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266"
@@ -6031,6 +7524,16 @@ import-from@^2.1.0:
   dependencies:
     resolve-from "^3.0.0"
 
+import-in-the-middle@^1.4.2:
+  version "1.4.2"
+  resolved "https://registry.yarnpkg.com/import-in-the-middle/-/import-in-the-middle-1.4.2.tgz#2a266676e3495e72c04bbaa5ec14756ba168391b"
+  integrity sha512-9WOz1Yh/cvO/p69sxRmhyQwrIGGSp7EIdcb+fFNVi7CzQGQB8U1/1XrKVSbEd/GNOAeM0peJtmi7+qphe7NvAw==
+  dependencies:
+    acorn "^8.8.2"
+    acorn-import-assertions "^1.9.0"
+    cjs-module-lexer "^1.2.2"
+    module-details-from-path "^1.0.3"
+
 import-lazy@^2.1.0:
   version "2.1.0"
   resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43"
@@ -6051,6 +7554,11 @@ import-meta-resolve@^1.1.1:
   dependencies:
     builtins "^4.0.0"
 
+import-meta-resolve@^2.2.1:
+  version "2.2.2"
+  resolved "https://registry.yarnpkg.com/import-meta-resolve/-/import-meta-resolve-2.2.2.tgz#75237301e72d1f0fbd74dbc6cca9324b164c2cc9"
+  integrity sha512-f8KcQ1D80V7RnqVm+/lirO9zkOxjGxhaTC1IPrBGd3MEfNgmNG67tSUO9gTi2F3Blr2Az6g1vocaxzkVnWl9MA==
+
 imurmurhash@^0.1.4:
   version "0.1.4"
   resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
@@ -6128,6 +7636,32 @@ inquirer@^6.3.1:
     strip-ansi "^5.1.0"
     through "^2.3.6"
 
+inquirer@^8.2.2:
+  version "8.2.6"
+  resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.6.tgz#733b74888195d8d400a67ac332011b5fae5ea562"
+  integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==
+  dependencies:
+    ansi-escapes "^4.2.1"
+    chalk "^4.1.1"
+    cli-cursor "^3.1.0"
+    cli-width "^3.0.0"
+    external-editor "^3.0.3"
+    figures "^3.0.0"
+    lodash "^4.17.21"
+    mute-stream "0.0.8"
+    ora "^5.4.1"
+    run-async "^2.4.0"
+    rxjs "^7.5.5"
+    string-width "^4.1.0"
+    strip-ansi "^6.0.0"
+    through "^2.3.6"
+    wrap-ansi "^6.0.1"
+
+int64-buffer@^0.1.9:
+  version "0.1.10"
+  resolved "https://registry.yarnpkg.com/int64-buffer/-/int64-buffer-0.1.10.tgz#277b228a87d95ad777d07c13832022406a473423"
+  integrity sha512-v7cSY1J8ydZ0GyjUHqF+1bshJ6cnEVLo9EnjB8p+4HDRPZc9N5jjmvUV7NvEsqQOKyH0pmIBFWXVQbiS0+OBbA==
+
 internal-ip@^4.3.0:
   version "4.3.0"
   resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907"
@@ -6160,6 +7694,11 @@ ipaddr.js@1.9.1, ipaddr.js@^1.9.0:
   resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
   integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
 
+ipaddr.js@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.1.0.tgz#2119bc447ff8c257753b196fc5f1ce08a4cdf39f"
+  integrity sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==
+
 irregular-plurals@^3.3.0:
   version "3.3.0"
   resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-3.3.0.tgz#67d0715d4361a60d9fd9ee80af3881c631a31ee2"
@@ -6395,6 +7934,11 @@ is-installed-globally@^0.3.1:
     global-dirs "^2.0.1"
     is-path-inside "^3.0.1"
 
+is-interactive@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e"
+  integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==
+
 is-module@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
@@ -6523,6 +8067,11 @@ is-stream@^1.1.0:
   resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
   integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ=
 
+is-stream@^2.0.0:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
+  integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
+
 is-string@^1.0.5, is-string@^1.0.6:
   version "1.0.6"
   resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f"
@@ -6547,6 +8096,11 @@ is-typedarray@^1.0.0, is-typedarray@~1.0.0:
   resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
   integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
 
+is-unicode-supported@^0.1.0:
+  version "0.1.0"
+  resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
+  integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
+
 is-unicode-supported@^1.2.0:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-1.2.0.tgz#f4f54f34d8ebc84a46b93559a036763b6d3e1014"
@@ -6601,12 +8155,17 @@ isobject@^3.0.0, isobject@^3.0.1:
   resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
   integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
 
+isomorphic-ws@^4.0.1:
+  version "4.0.1"
+  resolved "https://registry.yarnpkg.com/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz#55fd4cd6c5e6491e76dc125938dd863f5cd4f2dc"
+  integrity sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==
+
 isstream@~0.1.2:
   version "0.1.2"
   resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
   integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
 
-istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.0.1:
+istanbul-lib-coverage@3.2.0, istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.0.1:
   version "3.2.0"
   resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3"
   integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==
@@ -6638,6 +8197,13 @@ javascript-stringify@^2.0.1:
   resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz#27c76539be14d8bd128219a2d731b09337904e79"
   integrity sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==
 
+jessie.js@^0.3.2:
+  version "0.3.3"
+  resolved "https://registry.yarnpkg.com/jessie.js/-/jessie.js-0.3.3.tgz#c79a8b1f105b41f4e5a278f8dc67339c273b5900"
+  integrity sha512-qtm2JSB/ZeH9xNNPjVkeTFH+Hoq9BxAzakgf6WK1PLarIoXJ9roSi+Z5UF65K47rT7QteWrP8b6RPBVquvIwsg==
+  dependencies:
+    "@endo/far" "^0.2.3"
+
 js-string-escape@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef"
@@ -6648,6 +8214,13 @@ js-tokens@^4.0.0:
   resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
   integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
 
+js-yaml@4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.0.0.tgz#f426bc0ff4b4051926cd588c71113183409a121f"
+  integrity sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==
+  dependencies:
+    argparse "^2.0.1"
+
 js-yaml@^3.13.1, js-yaml@^3.14.1:
   version "3.14.1"
   resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
@@ -6805,6 +8378,16 @@ kind-of@^6.0.0, kind-of@^6.0.2:
   resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
   integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
 
+koalas@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/koalas/-/koalas-1.0.2.tgz#318433f074235db78fae5661a02a8ca53ee295cd"
+  integrity sha512-RYhBbYaTTTHId3l6fnMZc3eGQNW6FVCqMG6AMwA5I1Mafr6AflaXeoi6x3xQuATRotGYRLk6+1ELZH4dstFNOA==
+
+kuler@^2.0.0:
+  version "2.0.0"
+  resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3"
+  integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==
+
 last-call-webpack-plugin@^3.0.0:
   version "3.0.0"
   resolved "https://registry.yarnpkg.com/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz#9742df0e10e3cf46e5c0381c2de90d3a7a2d7555"
@@ -6828,6 +8411,23 @@ levn@^0.4.1:
     prelude-ls "^1.2.1"
     type-check "~0.4.0"
 
+libsodium-wrappers@^0.7.6:
+  version "0.7.11"
+  resolved "https://registry.yarnpkg.com/libsodium-wrappers/-/libsodium-wrappers-0.7.11.tgz#53bd20606dffcc54ea2122133c7da38218f575f7"
+  integrity sha512-SrcLtXj7BM19vUKtQuyQKiQCRJPgbpauzl3s0rSwD+60wtHqSUuqcoawlMDheCJga85nKOQwxNYQxf/CKAvs6Q==
+  dependencies:
+    libsodium "^0.7.11"
+
+libsodium@^0.7.11:
+  version "0.7.11"
+  resolved "https://registry.yarnpkg.com/libsodium/-/libsodium-0.7.11.tgz#cd10aae7bcc34a300cc6ad0ac88fcca674cfbc2e"
+  integrity sha512-WPfJ7sS53I2s4iM58QxY3Inb83/6mjlYgcmZs7DJsvDlnmVUwNinBCi5vBT43P6bHRy01O4zsMU2CoVR6xJ40A==
+
+limiter@^1.1.4:
+  version "1.1.5"
+  resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.5.tgz#8f92a25b3b16c6131293a0cc834b4a838a2aa7c2"
+  integrity sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==
+
 linkify-it@^2.0.0:
   version "2.2.0"
   resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.2.0.tgz#e3b54697e78bf915c70a38acd78fd09e0058b1cf"
@@ -6941,6 +8541,16 @@ lodash.merge@^4.6.2:
   resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
   integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
 
+lodash.pick@^4.4.0:
+  version "4.4.0"
+  resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3"
+  integrity sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==
+
+lodash.sortby@^4.7.0:
+  version "4.7.0"
+  resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
+  integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==
+
 lodash.template@^4.5.0:
   version "4.5.0"
   resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab"
@@ -6966,16 +8576,46 @@ lodash.uniq@^4.5.0:
   resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
   integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=
 
-lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.17.5:
+lodash@4.17.21, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.17.5:
   version "4.17.21"
   resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
   integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
 
+log-symbols@^4.1.0:
+  version "4.1.0"
+  resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503"
+  integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==
+  dependencies:
+    chalk "^4.1.0"
+    is-unicode-supported "^0.1.0"
+
+logform@^2.2.0, logform@^2.3.2:
+  version "2.5.1"
+  resolved "https://registry.yarnpkg.com/logform/-/logform-2.5.1.tgz#44c77c34becd71b3a42a3970c77929e52c6ed48b"
+  integrity sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==
+  dependencies:
+    "@colors/colors" "1.5.0"
+    "@types/triple-beam" "^1.3.2"
+    fecha "^4.2.0"
+    ms "^2.1.1"
+    safe-stable-stringify "^2.3.1"
+    triple-beam "^1.3.0"
+
 loglevel@^1.6.8:
   version "1.7.1"
   resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197"
   integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==
 
+long@^4.0.0:
+  version "4.0.0"
+  resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28"
+  integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==
+
+long@^5.0.0:
+  version "5.2.3"
+  resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1"
+  integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==
+
 lower-case@^1.1.1:
   version "1.1.4"
   resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
@@ -7013,6 +8653,11 @@ lru-cache@^6.0.0:
   dependencies:
     yallist "^4.0.0"
 
+lru-cache@^7.14.0:
+  version "7.18.3"
+  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89"
+  integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==
+
 magic-string@^0.25.7:
   version "0.25.7"
   resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
@@ -7176,7 +8821,7 @@ merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1:
   resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
   integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
 
-methods@~1.1.2:
+methods@^1.1.2, methods@~1.1.2:
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
   integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
@@ -7216,6 +8861,14 @@ micromatch@^4.0.4:
     braces "^3.0.2"
     picomatch "^2.3.1"
 
+microtime@^3.1.0:
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/microtime/-/microtime-3.1.1.tgz#f3ce12f4091c55fb2982c87205e2e7698afdcd0c"
+  integrity sha512-to1r7o24cDsud9IhN6/8wGmMx5R2kT0w2Xwm5okbYI3d1dk6Xv0m+Z+jg2vS9pt+ocgQHTCtgs/YuyJhySzxNg==
+  dependencies:
+    node-addon-api "^5.0.0"
+    node-gyp-build "^4.4.0"
+
 miller-rabin@^4.0.0:
   version "4.0.1"
   resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
@@ -7263,6 +8916,11 @@ mimic-fn@^1.0.0:
   resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
   integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==
 
+mimic-fn@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
+  integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
+
 mimic-fn@^4.0.0:
   version "4.0.0"
   resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc"
@@ -7363,6 +9021,11 @@ mkdirp@~1.0.4:
   resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
   integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
 
+module-details-from-path@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/module-details-from-path/-/module-details-from-path-1.0.3.tgz#114c949673e2a8a35e9d35788527aa37b679da2b"
+  integrity sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==
+
 morgan@^1.9.1:
   version "1.10.0"
   resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.10.0.tgz#091778abc1fc47cd3509824653dae1faab6b17d7"
@@ -7401,6 +9064,16 @@ ms@2.1.3, ms@^2.1.1, ms@^2.1.3:
   resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
   integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
 
+msgpack-lite@^0.1.26:
+  version "0.1.26"
+  resolved "https://registry.yarnpkg.com/msgpack-lite/-/msgpack-lite-0.1.26.tgz#dd3c50b26f059f25e7edee3644418358e2a9ad89"
+  integrity sha512-SZ2IxeqZ1oRFGo0xFGbvBJWMp3yLIY9rlIJyxy8CGrwZn1f0ZK4r6jV/AM1r0FZMDUkWkglOk/eeKIL9g77Nxw==
+  dependencies:
+    event-lite "^0.1.1"
+    ieee754 "^1.1.8"
+    int64-buffer "^0.1.9"
+    isarray "^1.0.0"
+
 multicast-dns-service-types@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
@@ -7419,6 +9092,11 @@ mute-stream@0.0.7:
   resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab"
   integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=
 
+mute-stream@0.0.8:
+  version "0.0.8"
+  resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
+  integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
+
 n-readlines@^1.0.0:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/n-readlines/-/n-readlines-1.0.1.tgz#bbb7364d38bc31a170a199f986fcacfa76b95f6e"
@@ -7490,6 +9168,21 @@ node-abi@^3.3.0:
   dependencies:
     semver "^7.3.5"
 
+node-abort-controller@^3.1.1:
+  version "3.1.1"
+  resolved "https://registry.yarnpkg.com/node-abort-controller/-/node-abort-controller-3.1.1.tgz#a94377e964a9a37ac3976d848cb5c765833b8548"
+  integrity sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==
+
+node-addon-api@^5.0.0:
+  version "5.1.0"
+  resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.1.0.tgz#49da1ca055e109a23d537e9de43c09cca21eb762"
+  integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==
+
+node-addon-api@^6.1.0:
+  version "6.1.0"
+  resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76"
+  integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==
+
 node-fetch@^2.6.0:
   version "2.6.7"
   resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
@@ -7502,11 +9195,21 @@ node-forge@^0.10.0:
   resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3"
   integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==
 
+node-gyp-build@<4.0, node-gyp-build@^3.9.0:
+  version "3.9.0"
+  resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-3.9.0.tgz#53a350187dd4d5276750da21605d1cb681d09e25"
+  integrity sha512-zLcTg6P4AbcHPq465ZMFNXx7XpKKJh+7kkN699NiQWisR2uWYOWNWqRHAmbnmKiL4e9aLSlmy5U7rEMUXV59+A==
+
 node-gyp-build@^4.2.3:
   version "4.3.0"
   resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3"
   integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==
 
+node-gyp-build@^4.4.0, node-gyp-build@^4.5.0:
+  version "4.6.0"
+  resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055"
+  integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==
+
 node-libs-browser@^2.2.1:
   version "2.2.1"
   resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425"
@@ -7769,6 +9472,13 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0:
   dependencies:
     wrappy "1"
 
+one-time@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45"
+  integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==
+  dependencies:
+    fn.name "1.x.x"
+
 onetime@^2.0.0:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
@@ -7776,6 +9486,13 @@ onetime@^2.0.0:
   dependencies:
     mimic-fn "^1.0.0"
 
+onetime@^5.1.0:
+  version "5.1.2"
+  resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
+  integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
+  dependencies:
+    mimic-fn "^2.1.0"
+
 opencollective-postinstall@^2.0.2:
   version "2.0.3"
   resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259"
@@ -7786,6 +9503,11 @@ opener@^1.5.2:
   resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598"
   integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==
 
+opentracing@>=0.12.1:
+  version "0.14.7"
+  resolved "https://registry.yarnpkg.com/opentracing/-/opentracing-0.14.7.tgz#25d472bd0296dc0b64d7b94cbc995219031428f5"
+  integrity sha512-vz9iS7MJ5+Bp1URw8Khvdyw1H/hGvzHWlKQ7eRrQojSCDL1/SrWfrY9QebLw97n2deyRtzHRC3MkQfVNUCo91Q==
+
 opn@^5.5.0:
   version "5.5.0"
   resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc"
@@ -7813,6 +9535,21 @@ optionator@^0.9.1:
     type-check "^0.4.0"
     word-wrap "^1.2.3"
 
+ora@^5.4.1:
+  version "5.4.1"
+  resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18"
+  integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==
+  dependencies:
+    bl "^4.1.0"
+    chalk "^4.1.0"
+    cli-cursor "^3.1.0"
+    cli-spinners "^2.5.0"
+    is-interactive "^1.0.0"
+    is-unicode-supported "^0.1.0"
+    log-symbols "^4.1.0"
+    strip-ansi "^6.0.0"
+    wcwidth "^1.0.1"
+
 os-browserify@^0.3.0:
   version "0.3.0"
   resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
@@ -7859,7 +9596,7 @@ p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1:
   dependencies:
     p-try "^2.0.0"
 
-p-limit@^3.0.2:
+p-limit@^3.0.2, p-limit@^3.1.0:
   version "3.1.0"
   resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
   integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
@@ -7959,6 +9696,11 @@ package-json@^6.3.0:
     registry-url "^5.0.0"
     semver "^6.2.0"
 
+pako@^2.0.2:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86"
+  integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==
+
 pako@~1.0.5:
   version "1.0.11"
   resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
@@ -8071,7 +9813,7 @@ path-parse@^1.0.7:
   resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
   integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
 
-path-to-regexp@0.1.7:
+path-to-regexp@0.1.7, path-to-regexp@^0.1.2:
   version "0.1.7"
   resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
   integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
@@ -8523,6 +10265,11 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.26, postcss@^7.0.2
     source-map "^0.6.1"
     supports-color "^6.1.0"
 
+pprof-format@^2.0.7:
+  version "2.0.7"
+  resolved "https://registry.yarnpkg.com/pprof-format/-/pprof-format-2.0.7.tgz#526e4361f8b37d16b2ec4bb0696b5292de5046a4"
+  integrity sha512-1qWaGAzwMpaXJP9opRa23nPnt2Egi7RMNoNBptEE/XwHbcn4fC2b/4U4bKc5arkGkIh2ZabpF2bEb+c5GNHEKA==
+
 prebuild-install@^7.0.0:
   version "7.0.0"
   resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.0.0.tgz#3c5ce3902f1cb9d6de5ae94ca53575e4af0c1574"
@@ -8542,6 +10289,24 @@ prebuild-install@^7.0.0:
     tar-fs "^2.0.0"
     tunnel-agent "^0.6.0"
 
+prebuild-install@^7.1.0:
+  version "7.1.1"
+  resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.1.tgz#de97d5b34a70a0c81334fd24641f2a1702352e45"
+  integrity sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==
+  dependencies:
+    detect-libc "^2.0.0"
+    expand-template "^2.0.3"
+    github-from-package "0.0.0"
+    minimist "^1.2.3"
+    mkdirp-classic "^0.5.3"
+    napi-build-utils "^1.0.1"
+    node-abi "^3.3.0"
+    pump "^3.0.0"
+    rc "^1.2.7"
+    simple-get "^4.0.0"
+    tar-fs "^2.0.0"
+    tunnel-agent "^0.6.0"
+
 prelude-ls@^1.2.1:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
@@ -8604,11 +10369,55 @@ progress@^2.0.0:
   resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
   integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
 
+prom-client@13.1.0:
+  version "13.1.0"
+  resolved "https://registry.yarnpkg.com/prom-client/-/prom-client-13.1.0.tgz#1185caffd8691e28d32e373972e662964e3dba45"
+  integrity sha512-jT9VccZCWrJWXdyEtQddCDszYsiuWj5T0ekrPszi/WEegj3IZy6Mm09iOOVM86A4IKMWq8hZkT2dD9MaSe+sng==
+  dependencies:
+    tdigest "^0.1.1"
+
 promise-inflight@^1.0.1:
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
   integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM=
 
+protobufjs@^6.10.3, protobufjs@^6.8.8, protobufjs@~6.11.2, protobufjs@~6.11.3:
+  version "6.11.4"
+  resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.11.4.tgz#29a412c38bf70d89e537b6d02d904a6f448173aa"
+  integrity sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==
+  dependencies:
+    "@protobufjs/aspromise" "^1.1.2"
+    "@protobufjs/base64" "^1.1.2"
+    "@protobufjs/codegen" "^2.0.4"
+    "@protobufjs/eventemitter" "^1.1.0"
+    "@protobufjs/fetch" "^1.1.0"
+    "@protobufjs/float" "^1.0.2"
+    "@protobufjs/inquire" "^1.1.0"
+    "@protobufjs/path" "^1.1.2"
+    "@protobufjs/pool" "^1.1.0"
+    "@protobufjs/utf8" "^1.1.0"
+    "@types/long" "^4.0.1"
+    "@types/node" ">=13.7.0"
+    long "^4.0.0"
+
+protobufjs@^7.0.0, protobufjs@^7.2.4:
+  version "7.2.4"
+  resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.4.tgz#3fc1ec0cdc89dd91aef9ba6037ba07408485c3ae"
+  integrity sha512-AT+RJgD2sH8phPmCf7OUZR8xGdcJRga4+1cOaXJ64hvcSkVhNcRHOwIxUatPH15+nj59WAGTDv3LSGZPEQbJaQ==
+  dependencies:
+    "@protobufjs/aspromise" "^1.1.2"
+    "@protobufjs/base64" "^1.1.2"
+    "@protobufjs/codegen" "^2.0.4"
+    "@protobufjs/eventemitter" "^1.1.0"
+    "@protobufjs/fetch" "^1.1.0"
+    "@protobufjs/float" "^1.0.2"
+    "@protobufjs/inquire" "^1.1.0"
+    "@protobufjs/path" "^1.1.2"
+    "@protobufjs/pool" "^1.1.0"
+    "@protobufjs/utf8" "^1.1.0"
+    "@types/node" ">=13.7.0"
+    long "^5.0.0"
+
 proxy-addr@~2.0.7:
   version "2.0.7"
   resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
@@ -8691,6 +10500,11 @@ pupa@^2.0.1:
   dependencies:
     escape-goat "^2.0.0"
 
+pure-rand@^6.0.0:
+  version "6.0.2"
+  resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.0.2.tgz#a9c2ddcae9b68d736a8163036f088a2781c8b306"
+  integrity sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==
+
 q@^1.1.2:
   version "1.5.1"
   resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
@@ -8822,6 +10636,11 @@ readdirp@~3.6.0:
   dependencies:
     picomatch "^2.2.1"
 
+readonly-date@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/readonly-date/-/readonly-date-1.0.0.tgz#5af785464d8c7d7c40b9d738cbde8c646f97dcd9"
+  integrity sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ==
+
 recast@agoric-labs/recast#Agoric-built:
   version "0.20.5"
   resolved "https://codeload.github.com/agoric-labs/recast/tar.gz/879398a55cd50a53ade179de203706a25c53fb49"
@@ -9079,6 +10898,14 @@ restore-cursor@^2.0.0:
     onetime "^2.0.0"
     signal-exit "^3.0.2"
 
+restore-cursor@^3.1.0:
+  version "3.1.0"
+  resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
+  integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==
+  dependencies:
+    onetime "^5.1.0"
+    signal-exit "^3.0.2"
+
 ret@~0.1.10:
   version "0.1.15"
   resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
@@ -9089,6 +10916,11 @@ retry@^0.12.0:
   resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b"
   integrity sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=
 
+retry@^0.13.1:
+  version "0.13.1"
+  resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658"
+  integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==
+
 reusify@^1.0.4:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
@@ -9133,6 +10965,20 @@ ripemd160@^2.0.0, ripemd160@^2.0.1:
     hash-base "^3.0.0"
     inherits "^2.0.1"
 
+rollup-plugin-string@^3.0.0:
+  version "3.0.0"
+  resolved "https://registry.yarnpkg.com/rollup-plugin-string/-/rollup-plugin-string-3.0.0.tgz#fed2d6301fae1e59eb610957df757ef13fada3f0"
+  integrity sha512-vqyzgn9QefAgeKi+Y4A7jETeIAU1zQmS6VotH6bzm/zmUQEnYkpIGRaOBPY41oiWYV4JyBoGAaBjYMYuv+6wVw==
+  dependencies:
+    rollup-pluginutils "^2.4.1"
+
+rollup-pluginutils@^2.4.1:
+  version "2.8.2"
+  resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e"
+  integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==
+  dependencies:
+    estree-walker "^0.6.1"
+
 rollup@^2.47.0:
   version "2.64.0"
   resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.64.0.tgz#f0f59774e21fbb56de438a37d06a2189632b207a"
@@ -9140,7 +10986,14 @@ rollup@^2.47.0:
   optionalDependencies:
     fsevents "~2.3.2"
 
-run-async@^2.2.0:
+rollup@endojs/endo#rollup-2.7.1-patch-1:
+  version "2.70.1-endo.1"
+  uid "54060e784a4dbe77b6692f17344f4d84a198530d"
+  resolved "https://codeload.github.com/endojs/endo/tar.gz/54060e784a4dbe77b6692f17344f4d84a198530d"
+  optionalDependencies:
+    fsevents "~2.3.2"
+
+run-async@^2.2.0, run-async@^2.4.0:
   version "2.4.1"
   resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
   integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==
@@ -9166,6 +11019,13 @@ rxjs@^6.4.0:
   dependencies:
     tslib "^1.9.0"
 
+rxjs@^7.5.5:
+  version "7.8.1"
+  resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543"
+  integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==
+  dependencies:
+    tslib "^2.1.0"
+
 safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
   version "5.1.2"
   resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
@@ -9183,6 +11043,11 @@ safe-regex@^1.1.0:
   dependencies:
     ret "~0.1.10"
 
+safe-stable-stringify@^2.3.1:
+  version "2.4.3"
+  resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886"
+  integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==
+
 "safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@^2.1.2, safer-buffer@~2.1.0:
   version "2.1.2"
   resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
@@ -9253,7 +11118,7 @@ semver@^6.0.0, semver@^6.1.0, semver@^6.1.1, semver@^6.1.2, semver@^6.2.0, semve
   resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
   integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
 
-semver@^7.0.0, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.5:
+semver@^7.0.0, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.5, semver@^7.5.4:
   version "7.5.4"
   resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
   integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
@@ -9328,10 +11193,22 @@ ses@^0.15.1, ses@^0.15.11, ses@^0.15.17, ses@^0.15.9:
   resolved "https://registry.yarnpkg.com/ses/-/ses-0.15.17.tgz#84e20cd08fb294989c6499942d220bd6604e1884"
   integrity sha512-T8XKsR5LGV57ilyqE4InFJKWVniEEFGai0CjuVJPju9LvnjYPXvZ7V8jP7sGtJ500ApRVgNBCu+5ZcSUhiuXig==
 
-ses@^0.16.0:
-  version "0.16.0"
-  resolved "https://registry.yarnpkg.com/ses/-/ses-0.16.0.tgz#d405fff49daa8e19b1b04344e2a752c9268afa72"
-  integrity sha512-2oKCzl3W24aNqBifLWWEh3OGd+78+SY1GVKWP5ogrqBOjs3X1trwE2akx5pX4M1MFExqXoJGav1CmCq2KBMqOg==
+ses@^0.16.1:
+  version "0.16.1"
+  resolved "https://registry.yarnpkg.com/ses/-/ses-0.16.1.tgz#b447aa8a6f7f5826e2ba8ff66a566f1e1a74cca6"
+  integrity sha512-yLgBL+IC7cfMz7DWlTAbZaZUVavO3U14G8gqKPE0jqQgxkvN1KDx3c1UW9q/YgU3UpxuhxnjUMOfyAfEF9pNxA==
+
+ses@^0.17.0:
+  version "0.17.1"
+  resolved "https://registry.yarnpkg.com/ses/-/ses-0.17.1.tgz#acdbdbe21e2dc2531e99f432ba5cccd074d6ca05"
+  integrity sha512-8tNyKyDMCoMCYxkRIv6ZrBrBbYejrwpqOD3frAbZaim8JbI3D+x88mPfi32QeV3s3xQAdSsONCv0Ickrk/a2Cg==
+
+ses@^0.18.5, ses@^0.18.7:
+  version "0.18.7"
+  resolved "https://registry.yarnpkg.com/ses/-/ses-0.18.7.tgz#8abeb65732845642c2d1a284e415ef11957fb489"
+  integrity sha512-bcQ3CY8jh+UnumfdDZCPDgRA9hWk6acpL1d7ecQLMOdMkqKkP0yv2b6Sd9AVxuxbu4cXMt158epbpwkV/5sIfw==
+  dependencies:
+    "@endo/env-options" "^0.1.3"
 
 set-blocking@^2.0.0, set-blocking@~2.0.0:
   version "2.0.0"
@@ -9584,6 +11461,11 @@ source-map@^0.7.3:
   resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383"
   integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==
 
+source-map@^0.7.4:
+  version "0.7.4"
+  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656"
+  integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==
+
 sourcemap-codec@^1.4.4:
   version "1.4.8"
   resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
@@ -9669,6 +11551,11 @@ stable@^0.1.8:
   resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
   integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
 
+stack-trace@0.0.x:
+  version "0.0.10"
+  resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0"
+  integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==
+
 stack-utils@^1.0.1:
   version "1.0.5"
   resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.5.tgz#a19b0b01947e0029c8e451d5d61a498f5bb1471b"
@@ -10010,6 +11897,11 @@ svgo@^1.0.0:
     unquote "~1.1.1"
     util.promisify "~1.0.0"
 
+symbol-observable@^2.0.3:
+  version "2.0.3"
+  resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-2.0.3.tgz#5b521d3d07a43c351055fa43b8355b62d33fd16a"
+  integrity sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==
+
 table@^6.0.9:
   version "6.7.1"
   resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2"
@@ -10022,6 +11914,17 @@ table@^6.0.9:
     string-width "^4.2.0"
     strip-ansi "^6.0.0"
 
+table@^6.7.1:
+  version "6.8.1"
+  resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf"
+  integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==
+  dependencies:
+    ajv "^8.0.1"
+    lodash.truncate "^4.4.2"
+    slice-ansi "^4.0.0"
+    string-width "^4.2.3"
+    strip-ansi "^6.0.1"
+
 tapable@^1.0.0, tapable@^1.1.3:
   version "1.1.3"
   resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
@@ -10048,6 +11951,13 @@ tar-stream@^2.1.4:
     inherits "^2.0.3"
     readable-stream "^3.1.1"
 
+tdigest@^0.1.1:
+  version "0.1.2"
+  resolved "https://registry.yarnpkg.com/tdigest/-/tdigest-0.1.2.tgz#96c64bac4ff10746b910b0e23b515794e12faced"
+  integrity sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA==
+  dependencies:
+    bintrees "1.0.2"
+
 temp-dir@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e"
@@ -10099,6 +12009,11 @@ test-exclude@^6.0.0:
     glob "^7.1.4"
     minimatch "^3.0.4"
 
+text-hex@1.0.x:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5"
+  integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==
+
 text-table@^0.2.0:
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
@@ -10233,6 +12148,16 @@ tr46@~0.0.3:
   resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
   integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
 
+triple-beam@1.3.0:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9"
+  integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==
+
+triple-beam@^1.3.0:
+  version "1.4.1"
+  resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.4.1.tgz#6fde70271dc6e5d73ca0c3b24e2d92afb7441984"
+  integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==
+
 tsconfig-paths@^3.14.1:
   version "3.14.1"
   resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a"
@@ -10253,6 +12178,11 @@ tslib@^2.0.1:
   resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01"
   integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==
 
+tslib@^2.1.0:
+  version "2.6.2"
+  resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
+  integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
+
 tsutils@^3.21.0:
   version "3.21.0"
   resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623"
@@ -10750,6 +12680,13 @@ wbuf@^1.1.0, wbuf@^1.7.3:
   dependencies:
     minimalistic-assert "^1.0.0"
 
+wcwidth@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8"
+  integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==
+  dependencies:
+    defaults "^1.0.3"
+
 webidl-conversions@^3.0.0:
   version "3.0.1"
   resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
@@ -10963,6 +12900,30 @@ widest-line@^3.1.0:
   dependencies:
     string-width "^4.0.0"
 
+winston-transport@^4.4.0:
+  version "4.5.0"
+  resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.5.0.tgz#6e7b0dd04d393171ed5e4e4905db265f7ab384fa"
+  integrity sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==
+  dependencies:
+    logform "^2.3.2"
+    readable-stream "^3.6.0"
+    triple-beam "^1.3.0"
+
+winston@3.3.3:
+  version "3.3.3"
+  resolved "https://registry.yarnpkg.com/winston/-/winston-3.3.3.tgz#ae6172042cafb29786afa3d09c8ff833ab7c9170"
+  integrity sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw==
+  dependencies:
+    "@dabh/diagnostics" "^2.0.2"
+    async "^3.1.0"
+    is-stream "^2.0.0"
+    logform "^2.2.0"
+    one-time "^1.0.0"
+    readable-stream "^3.4.0"
+    stack-trace "0.0.x"
+    triple-beam "^1.3.0"
+    winston-transport "^4.4.0"
+
 word-wrap@^1.2.3:
   version "1.2.4"
   resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f"
@@ -10984,6 +12945,15 @@ wrap-ansi@^5.1.0:
     string-width "^3.0.0"
     strip-ansi "^5.0.0"
 
+wrap-ansi@^6.0.1:
+  version "6.2.0"
+  resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53"
+  integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
+  dependencies:
+    ansi-styles "^4.0.0"
+    string-width "^4.1.0"
+    strip-ansi "^6.0.0"
+
 wrap-ansi@^7.0.0:
   version "7.0.0"
   resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
@@ -11023,6 +12993,11 @@ ws@^6.2.1:
   dependencies:
     async-limiter "~1.0.0"
 
+ws@^7:
+  version "7.5.9"
+  resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591"
+  integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==
+
 ws@^7.2.0:
   version "7.5.6"
   resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.6.tgz#e59fc509fb15ddfb65487ee9765c5a51dec5fe7b"
@@ -11033,6 +13008,14 @@ xdg-basedir@^4.0.0:
   resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13"
   integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==
 
+xstream@^11.14.0:
+  version "11.14.0"
+  resolved "https://registry.yarnpkg.com/xstream/-/xstream-11.14.0.tgz#2c071d26b18310523b6877e86b4e54df068a9ae5"
+  integrity sha512-1bLb+kKKtKPbgTK6i/BaoAn03g47PpFstlbe1BA+y3pNS/LfvcaghS5BFf9+EE1J+KwSQsEpfJvFN5GqFtiNmw==
+  dependencies:
+    globalthis "^1.0.1"
+    symbol-observable "^2.0.3"
+
 xtend@^4.0.0, xtend@~4.0.1:
   version "4.0.2"
   resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"