molecule
Steven's Nameplate: three revisions
Public Made by Adomby adom
A USB-C desk nameplate for Steven Moss (Astera Institute), built three ways and published as open experiments: a 3x5 LED board, a 5x7 LED board, and a laser-ablated silkscreen plate. Source, fab files, negative results, reproduce steps.
← Commit history
Rev 2 write-up as an HTML sub-readme so the live 3D viewer embeds inline
1 file changed
+517
rev2/README.htmladded+517@@ -0,0 +1,517 @@+<!doctype html><html><head><meta charset="utf-8"><meta name="readme-max-height" content="60000"><meta name="viewport" content="width=device-width, initial-scale=1"><style>+ /* No @font-face here: the wiki renders README.html in a null-origin iframe,+ so adom.inc's font files fail CORS on every load and only add console+ noise. Fall back to the system stack, which the wiki chrome matches. */+ :root { --bg:#0d1117; --surface:#161b22; --elev:#1c2128; --border:#30363d;+ --text:#e6edf3; --body:#c9d1d9; --muted:#8b949e; --accent:#00b8b1; --purple:#8C6BF7; }+ * { box-sizing:border-box; margin:0; padding:0; }+ html,body { background:var(--bg); color:var(--body);+ font:15px/1.65 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;+ scrollbar-width:none; }+ html::-webkit-scrollbar, body::-webkit-scrollbar { width:0; height:0; display:none; }+ #wrap { max-width:900px; margin:0 auto; padding:34px 22px 60px; }+ h1 { color:var(--text); font-size:40px; line-height:1.1; letter-spacing:-.02em; margin:0 0 10px; }+ h2 { color:var(--text); font-size:21px; letter-spacing:-.01em;+ margin:38px 0 12px; padding-bottom:7px; border-bottom:1px solid var(--border); }+ h3 { color:var(--text); font-size:16px; margin:22px 0 8px; }+ p { margin:0 0 13px; }+ .lede { font-size:17.5px; color:var(--text); margin-bottom:20px; }+ a { color:var(--accent); }+ code { font:13px/1.5 ui-monospace,"SF Mono",Menlo,Consolas,monospace;+ background:var(--elev); border:1px solid var(--border);+ border-radius:5px; padding:1px 5px; color:var(--text); }+ pre { background:var(--elev); border:1px solid var(--border); border-radius:10px;+ padding:14px 16px; overflow-x:auto; margin:0 0 16px; }+ pre code { background:none; border:0; padding:0; font-size:12.5px; line-height:1.6; }+ ul,ol { margin:0 0 14px; padding-left:22px; }+ li { margin:0 0 6px; }+ table { width:100%; border-collapse:collapse; margin:0 0 18px; font-size:13.5px; }+ th,td { text-align:left; padding:8px 11px; border-bottom:1px solid var(--border); vertical-align:top; }+ th { color:var(--muted); font-weight:600; white-space:nowrap; }+ td:first-child { color:var(--text); white-space:nowrap; }+ .viewer { border:1px solid var(--border); border-radius:12px; overflow:hidden;+ background:var(--surface); margin:22px 0 8px;+ box-shadow:0 12px 40px rgba(0,0,0,.45); }+ .viewer iframe { display:block; width:100%; height:620px; border:0; }+ .poster { display:block; width:100%; padding:0; border:0; background:none;+ cursor:pointer; position:relative; font:inherit; color:inherit; }+ .poster img { display:block; width:100%; height:auto; opacity:.55; transition:opacity .18s; }+ .poster:hover img { opacity:.75; }+ .play { position:absolute; inset:0; display:flex; flex-direction:column;+ align-items:center; justify-content:center; gap:6px; text-align:center; }+ .play b { background:var(--accent); color:#04120f; padding:10px 20px;+ border-radius:999px; font-size:15px; font-weight:700; }+ .play i { color:var(--text); font-style:normal; font-size:12.5px; opacity:.85; }+ .cap { color:var(--muted); font-size:13px; margin:0 0 26px; }+ .cap a { color:var(--accent); text-decoration:none; }+ .call { background:var(--surface); border:1px solid var(--border);+ border-left:3px solid var(--accent); border-radius:0 10px 10px 0;+ padding:14px 18px; margin:0 0 22px; color:var(--body); }+ .call b { color:var(--text); }+ .warn { border-left-color:var(--purple); }+ figure { margin:0 0 20px; }+ figure img { display:block; width:100%; height:auto; border-radius:10px;+ border:1px solid var(--border); background:#000; }+ figcaption { color:var(--muted); font-size:12.5px; margin-top:7px; }+ .grid2 { display:grid; grid-template-columns:1fr 1fr; gap:16px; }+ @media (max-width:680px) { .grid2 { grid-template-columns:1fr; } }+ .muted { color:var(--muted); }++ iframe.live { display:block; width:100%; height:600px; border:1px solid var(--border); border-radius:12px;+ background:var(--surface); margin:8px 0 10px; box-shadow:0 12px 40px rgba(0,0,0,.45); }+ img { max-width:100%; height:auto; border-radius:10px; border:1px solid var(--border); margin:6px 0 14px; }+ table { display:block; overflow-x:auto; }+ blockquote { border-left:3px solid var(--accent); padding:4px 14px; margin:0 0 14px; color:var(--muted); }+</style></head>+</head><body><div id="wrap"><h1>Rev 2: 5 x 7 LED dot matrix</h1>+<p>Same idea as Rev 1, rebuilt around the one thing Rev 1 got wrong: legibility. Every letter is now+a 5 x 7 bitmap, so the N has a real diagonal. Along the way every part got a real manufacturer+part number from Adom's stocked reels, and the current came down under the USB-C default limit.</p>+<p><img src="https://wiki.adom.inc/adom/steven-led-nameplate/render/docs/img/steven-v2-hero.jpg" alt="Rev 2, 3D render of the assembled board" /></p>+<table>+<thead>+<tr>+<th></th>+<th></th>+</tr>+</thead>+<tbody>+<tr>+<td>Status</td>+<td>Designed and verified in software. <strong>Not fabricated yet.</strong></td>+</tr>+<tr>+<td>Date</td>+<td>2026-09-23</td>+</tr>+<tr>+<td>Board</td>+<td>136.4 x 44.4 mm, 2 layer FR4, Adom molecule <code>136x44 absolute</code>, medium machine pins</td>+</tr>+<tr>+<td>Letters</td>+<td>94 white 0603 LEDs, 5 x 7 pixel font, 3 mm pitch, 3 mm letter gap, 105 mm of text</td>+</tr>+<tr>+<td>Power</td>+<td>USB-C on the east edge, 5 V, about 400 mA with every LED lit</td>+</tr>+<tr>+<td>Result</td>+<td>0 DRC errors, 98 of 98 nets connected, USB-C geometry on the guide's reference numbers</td>+</tr>+<tr>+<td>Parts</td>+<td>every line an <a href="https://wiki.adom.inc/adom/adom-basic-parts" target="_blank">Adom Basic Part</a> with an MPN</td>+</tr>+</tbody>+</table>+<h2>The board, live</h2>+<iframe class="live" loading="lazy" allow="fullscreen" src="https://wiki.adom.inc/adom/steven-led-nameplate/render/rev2/viewer/index.html" width="100%" height="560" title="Steven nameplate Rev 2, interactive 3D"></iframe>+<p>Orbit, zoom, hover any part for its refdes and net, x-ray the copper with the Nets panel, or run+the guided walkthrough. The PCB, Schematic and Parts tabs across the top are live too.+<a href="https://wiki.adom.inc/adom/steven-led-nameplate/render/rev2/viewer/index.html" target="_blank">Open full screen</a>.</p>+<h2>The question this revision asked</h2>+<p>Rev 1 showed that a 3 x 5 font cannot draw an N. Does a 5 x 7 font fix it, and can the same+AI pipeline still route a board with 60% more LEDs packed at a tighter pitch?</p>+<p>The request, verbatim, from John Lauer on 2026-09-23 after seeing Rev 1:</p>+<blockquote>+<p>can you make teh N for steven look more like an N? meaning the diagonal line in an N doesn't+come through very well in that board you made</p>+</blockquote>+<p>and on keeping Rev 1 rather than overwriting it:</p>+<blockquote>+<p>do a new one and keep the old one so steven can see the progression of ideas of his board+cuz they're all about running experiments and seeing evidence of each experiment</p>+</blockquote>+<h2>Method</h2>+<ol>+<li>+<p><strong>Font.</strong> A 5 x 7 bitmap per letter, taken from Adom's <code>evan-led-nameplate</code>, which had+already found that three columns cannot hold an N. The N diagonal walks column 1 to 2 to 3.+S, T, E and V were drawn the same way.</p>+<p><img src="https://wiki.adom.inc/adom/steven-led-nameplate/render/docs/img/n-glyph-rev1-vs-rev2.png" alt="3 x 5 N and H next to the 5 x 7 N" /></p>+</li>+<li>+<p><strong>Parts.</strong> White LED <code>IN-S63BT5UW</code> (Inolux), 470 ohm <code>CR0402-FX-4700GLF</code> per LED, 4.7 kohm+<code>CR0402-FX-4701GLF</code> CC pulldowns, 10 uF <code>CL21A106KOQNNNG</code> bulk and 100 nF <code>0402B104J160CT</code>+high-frequency decoupling, USB-C <code>TYPE-C-31-M-12</code> (LCSC C165948). All are stocked on Adom's+pick-and-place reels.</p>+</li>+<li>+<p><strong>Current budget.</strong> 94 LEDs at 330 ohm would draw about 560 mA, over the 500 mA a USB-C source+gives without negotiation. At 470 ohm each LED runs about 4.3 mA ((5 V - 3.0 V) / 470), so the+board draws about 400 mA.</p>+</li>+<li>+<p><strong>Board size.</strong> The code derives the board from the text: <code>BOARD_W = ceil((text + 30) / 2) * 2</code>,+so 105 mm of text gives a 136 mm board with 20 mm reserved for the USB-C zone. Changing the+name is a one-line edit (<code>TEXT</code>).</p>+</li>+<li>+<p><strong>USB-C placement.</strong> The guide's <code>W/2 - 4</code> assumes a nominal-size molecule. This board is+<em>absolute</em> sized, which puts the real edge 1 mm further out (W/2 + 0.2 mm wing). The first+build at <code>W/2 - 4</code> measured a 3.29 mm overhang and only 0.83 mm of board around the anchor+hole, so the connector moved to <code>W/2 - 5</code>.</p>+</li>+<li>+<p><strong>Schematic.</strong> Every symbol has explicit coordinates (LED and resistor pairs on a 10-column+grid) so the schematic is readable. The USB-C wrapper was extended only to forward <code>schX</code> and+<code>schY</code>, which the adom-usbc guide allows. Its footprint and 3D offsets are untouched.</p>+</li>+</ol>+<h2>Results</h2>+<h3>Negative results: routing a dense 5 x 7 grid</h3>+<p>At 3 mm pitch the resistor lives between two LED rows, which leaves the router very little room.</p>+<p>On tscircuit 0.0.1753 (the Rev 1 toolchain):</p>+<table>+<thead>+<tr>+<th>Layout</th>+<th>DRC errors</th>+<th>Nets split</th>+</tr>+</thead>+<tbody>+<tr>+<td>resistor 1.6 mm below, rotated 180 degrees</td>+<td>15</td>+<td>2</td>+</tr>+<tr>+<td>1.65 mm below, not rotated</td>+<td>1 (router ran out of iterations, 0 traces)</td>+<td>98</td>+</tr>+<tr>+<td>1.5 mm below, rotated</td>+<td>19</td>+<td>2</td>+</tr>+<tr>+<td>1.75 mm below, rotated</td>+<td>12</td>+<td>2</td>+</tr>+<tr>+<td>1.65 mm below, rotated</td>+<td>17</td>+<td>2</td>+</tr>+</tbody>+</table>+<p>None of these produced a working board, so the toolchain moved to tscircuit 0.0.2375, the version+<code>evan-led-nameplate</code> routed cleanly with. That router connected every net on the first try but+dropped a via inside a USB-C VBUS pad. Moving the four support parts (CC resistors and+decoupling) 1 mm left cleared it. Moving the USB-C for the edge fix then changed the routing+again, and a second sweep of the support-part position found the shipped layout:</p>+<table>+<thead>+<tr>+<th>Support parts at</th>+<th>DRC errors</th>+<th>Nets split</th>+</tr>+</thead>+<tbody>+<tr>+<td><code>USB_X - 9</code></td>+<td><strong>0</strong></td>+<td><strong>0</strong> (shipped)</td>+</tr>+<tr>+<td><code>USB_X - 11</code></td>+<td>0</td>+<td>1</td>+</tr>+<tr>+<td><code>USB_X - 10</code>, resistor 1.65 mm below</td>+<td>4</td>+<td>0</td>+</tr>+<tr>+<td><code>USB_X - 12</code></td>+<td>0</td>+<td>0</td>+</tr>+</tbody>+</table>+<p>The lesson worth keeping: tscircuit's DRC and <code>adom-tsci lint</code> never flagged a split net. Every+one of the "0 errors, 1 split" rows would have shipped a board with dark LEDs if the only check+had been DRC.</p>+<h3>Final numbers</h3>+<table>+<thead>+<tr>+<th>Check</th>+<th>Value</th>+</tr>+</thead>+<tbody>+<tr>+<td>Components</td>+<td>197: 94 LEDs, 96 resistors, 2 capacitors, 1 USB-C, 4 machine pins</td>+</tr>+<tr>+<td>Routing</td>+<td>292 routed traces for 294 declared (the 2 are the merged same-net USB-C tabs), 92 vias</td>+</tr>+<tr>+<td>DRC errors in <code>circuit.json</code></td>+<td>0</td>+</tr>+<tr>+<td>Connectivity</td>+<td>98 of 98 nets, each one island</td>+</tr>+<tr>+<td>USB-C pad gap to edge</td>+<td>7.00 mm (guide reference 7.35, window 5 to 8)</td>+</tr>+<tr>+<td>USB-C anchor hole gap to edge</td>+<td>1.83 mm (guide reference 1.83)</td>+</tr>+<tr>+<td>USB-C mouth overhang</td>+<td>2.29 mm (guide reference 2.31)</td>+</tr>+<tr>+<td>USB-C pads / holes</td>+<td>12 / 6</td>+</tr>+<tr>+<td><code>adom-tsci lint</code></td>+<td>4 of 5 pass. The fifth is the four machine-pin symbols stacking in the schematic, a known limit of the molecule library that no board file can fix</td>+</tr>+</tbody>+</table>+<p><img src="https://wiki.adom.inc/adom/steven-led-nameplate/render/docs/img/steven-v2-top.jpg" alt="Rev 2 top view" /></p>+<h3>A viewer bug found along the way</h3>+<p>The adom-tsci preview re-bakes the 3D model at a higher texture resolution. With the newer+tscircuit's <code>circuit-json-to-gltf</code> the re-bake dropped the USB-C body (0 vertices), so the+connector showed as a flat white box. The board was fine. The fix was to serve the GLB that+<code>tsci export --format glb</code> produces, which carries the full 46,644-vertex receptacle, at the+cost of a 1024 px board texture instead of 2048.</p>+<h2>Reproduce this experiment</h2>+<h3>Tools used</h3>+<table>+<thead>+<tr>+<th>Tool</th>+<th>Version</th>+<th>What it did here</th>+<th>Get it</th>+</tr>+</thead>+<tbody>+<tr>+<td>Claude Code, in Adom's Hydrogen desktop</td>+<td>Claude Opus 5.5</td>+<td>The AI that wrote the board, ran every build and check, and wrote this page</td>+<td>Adom Hydrogen</td>+</tr>+<tr>+<td>bun</td>+<td>1.4.0</td>+<td>JavaScript runtime that runs tscircuit</td>+<td><code>curl -fsSL https://bun.sh/install | bash</code></td>+</tr>+<tr>+<td>tscircuit, @tscircuit/cli</td>+<td>0.0.2375 / 0.1.2134</td>+<td>Board description in TSX, autorouter, DRC, gerber and GLB export</td>+<td><code>bun install --frozen-lockfile</code> (pinned in <code>bun.lock</code>)</td>+</tr>+<tr>+<td>@tsci/adom-inc.molecule, @tsci/adom-inc.library</td>+<td>1.1.15 / 1.2.6</td>+<td>Adom molecule outline and corner machine pins</td>+<td>same, through the <code>.npmrc</code> registry <code>npm.tscircuit.com</code></td>+</tr>+<tr>+<td>adom-tsci</td>+<td>1.4.24</td>+<td>Live 3D / PCB / schematic preview, <code>lint</code>, gerber export, walkthrough, the viewer embedded on this page</td>+<td><code>adom-wiki pkg install adom/adom-tsci</code></td>+</tr>+<tr>+<td>adom-usbc guide</td>+<td>ships with adom-tsci</td>+<td>The USB-C wrapper (copied verbatim) and the edge checks</td>+<td><code>~/.claude/skills/adom-tsci/guides/adom-usbc.md</code></td>+</tr>+<tr>+<td><code>scripts/check-connectivity.py</code></td>+<td>this page</td>+<td>Geometric pad-trace-via connectivity per net; catches opens DRC misses</td>+<td>Python 3 standard library</td>+</tr>+<tr>+<td><code>scripts/sweep.sh</code></td>+<td>this page</td>+<td>Parallel layout sweep, reports DRC errors and split nets per variant</td>+<td>bash + bun</td>+</tr>+<tr>+<td><code>scripts/make-bom.py</code></td>+<td>this page</td>+<td>Real BOM and pick-and-place spliced into the gerber zip</td>+<td>Python 3 standard library</td>+</tr>+<tr>+<td>glb-datauri-textures.mjs, glb-make-zup.mjs</td>+<td>adom-tsci page</td>+<td>Makes the 3D models load in the wiki's sandbox and lie flat</td>+<td><code>https://wiki.adom.inc/adom/adom-tsci/render/scripts/</code></td>+</tr>+<tr>+<td>pup (Adom Bridge)</td>+<td></td>+<td>The renders on this page, shot in a background browser</td>+<td><code>adom-bridge pup_open_window</code></td>+</tr>+<tr>+<td>adom-wiki</td>+<td></td>+<td>Publishing this page</td>+<td>preinstalled on Adom containers</td>+</tr>+</tbody>+</table>+<h3>What actually ran, in order</h3>+<ol>+<li>Took the 5 x 7 font from <code>evan-led-nameplate</code> and wrote one parameterized <code>lib/index.tsx</code>+(name, board size, USB-C position and support parts all derived from <code>TEXT</code>).</li>+<li>Built on tscircuit 0.0.1753; swept four layouts; none connected every net.</li>+<li>Installed tscircuit 0.0.2375 in a scratch copy (with the <code>@tsci</code> registry in <code>.npmrc</code>),+rebuilt: every net connected, one via inside a USB-C pad. Swept the support-part position.</li>+<li>Ran <code>adom-tsci lint</code>; fixed the schematic by giving every symbol explicit <code>schX</code>/<code>schY</code>.</li>+<li>Ran the adom-usbc edge check; overhang was 3.29 mm because the board is absolute sized; moved+the connector 1 mm in and swept again (<code>scripts/sweep.sh</code>).</li>+<li><code>bunx tsci build lib/index.tsx --svgs --pcb-png --3d-png</code> and+<code>bunx tsci export lib/index.tsx --format glb</code> for the 3D model.</li>+<li><code>adom-tsci start</code>; found the preview's re-baked GLB had a 0-vertex USB-C; served the+tscircuit-exported GLB instead and confirmed the console had no placeholder.</li>+<li><code>adom-tsci export --format gerbers</code>, then <code>scripts/make-bom.py</code>.</li>+<li>Renders shot in a background pup window; this page built and published with <code>adom-wiki</code>.</li>+</ol>+<h3>Rebuild it yourself</h3>+<pre><code class="language-bash">adom-wiki repo download adom/steven-led-nameplate --extract ./steven+cd steven/rev2/source+bun install --frozen-lockfile # pins tscircuit 0.0.2375, @tscircuit/cli 0.1.2134+bunx tsci build lib/index.tsx --svgs --pcb-png+bunx tsci export lib/index.tsx --format glb --output ../dist/lib/index/3d.glb+python3 scripts/check-connectivity.py # expect: 98 nets checked, 0 split+</code></pre>+<p>Expected: 0 <code>*_error</code> entries in <code>dist/lib/index/circuit.json</code> and 292 routed traces. On a newer+tscircuit the router will route differently; rerun the connectivity check before trusting it.</p>+<p>To make one for someone else, change <code>TEXT</code> in <code>lib/index.tsx</code> and add any missing letters to+<code>FONT</code>. The board resizes itself. Rerun the build, the connectivity check and <code>adom-tsci lint</code>,+and sweep <code>PARTS_X</code> and <code>R_OFFSET</code> if a net splits. That is exactly how+<a href="https://wiki.adom.inc/adom/ellaine-led-nameplate" target="_blank">Ellaine's board</a> was made.</p>+<p>Live 3D: <a href="https://wiki.adom.inc/adom/steven-led-nameplate/render/rev2/viewer/index.html" target="_blank">the Rev 2 viewer</a>,+or the 3D Model view at the top of this page.</p>+<p>To fabricate: upload <code>rev2/fab/gerbers.zip</code> to a board house. The zip's+<code>bom.csv</code> and <code>pick_and_place.csv</code> carry real part numbers, replacing the empty stubs tscircuit+writes. Specify 1.6 mm FR4, 2 layers, any mask color.</p>+<h2>Outputs</h2>+<table>+<thead>+<tr>+<th>File</th>+<th>What it is</th>+<th>License</th>+</tr>+</thead>+<tbody>+<tr>+<td><code>rev2/source/lib/index.tsx</code></td>+<td>The board, as tscircuit TSX, parameterized by <code>TEXT</code></td>+<td>MIT</td>+</tr>+<tr>+<td><code>rev2/source/lib/UsbCReceptacle.tsx</code></td>+<td>USB-C wrapper from the adom-usbc guide, plus schematic forwarding</td>+<td>MIT</td>+</tr>+<tr>+<td><code>rev2/source/scripts/check-connectivity.py</code></td>+<td>Geometric net connectivity check</td>+<td>MIT</td>+</tr>+<tr>+<td><code>rev2/source/package.json</code>, <code>bun.lock</code>, <code>.npmrc</code></td>+<td>Exact dependency pins</td>+<td>MIT</td>+</tr>+<tr>+<td><code>rev2/viewer/circuit.json</code></td>+<td>Complete circuit description</td>+<td>CC0</td>+</tr>+<tr>+<td><code>rev2/viewer/3d.glb</code>, <code>board.glb</code></td>+<td>3D models (Y-up for the viewer, Z-up for the wiki)</td>+<td>CC0</td>+</tr>+<tr>+<td><code>rev2/fab/gerbers.zip</code></td>+<td>Fabrication files with populated BOM and pick-and-place</td>+<td>CC0</td>+</tr>+<tr>+<td><code>rev2/fab/pcb.svg</code>, <code>schematic.svg</code></td>+<td>Layout and schematic drawings</td>+<td>CC0</td>+</tr>+<tr>+<td>this document</td>+<td>Method, results, negative results</td>+<td>CC BY 4.0</td>+</tr>+</tbody>+</table>+<h2>Provenance</h2>+<table>+<thead>+<tr>+<th></th>+<th></th>+</tr>+</thead>+<tbody>+<tr>+<td>Requested by</td>+<td>John Lauer, Adom Industries</td>+</tr>+<tr>+<td>Designed by</td>+<td>Claude Opus 5.5 (Anthropic), in Claude Code inside Adom's Hydrogen desktop</td>+</tr>+<tr>+<td>Toolchain</td>+<td>tscircuit 0.0.2375, @tscircuit/cli 0.1.2134, @tsci/adom-inc.molecule 1.1.15, @tsci/adom-inc.library 1.2.6, adom-tsci 1.4.24, bun 1.4.0</td>+</tr>+<tr>+<td>Built on</td>+<td>Rev 1 of this page, and the 5 x 7 font from Adom's <code>evan-led-nameplate</code></td>+</tr>+<tr>+<td>Human review</td>+<td>John Lauer, 2026-09-23</td>+</tr>+</tbody>+</table>+<p>Contributor roles (<a href="https://credit.niso.org/" target="_blank">CRediT</a>): John Lauer, conceptualization and+supervision. Claude (AI), design, software, validation, writing.</p>+<h2>Funding</h2>+<p>The node is funded by the U.S. National Science Foundation PCL Test Bed program+(<a href="https://ror.org/021nxhr62" target="_blank">ROR 021nxhr62</a>). Made as a worked example of open publishing for the+Astera Institute (<a href="https://ror.org/00ydx1s47" target="_blank">ROR 00ydx1s47</a>); Astera did not fund it.</p>+</div><script>+(function(){var w=document.getElementById('wrap'),last=0;function post(){var h=w.offsetHeight+24;if(h!==last){last=h;parent.postMessage({type:'readme-height',height:h},'*');}}+post();addEventListener('load',post);addEventListener('resize',post);+document.querySelectorAll('img,iframe').forEach(function(e){e.addEventListener('load',post)});+if(window.ResizeObserver)new ResizeObserver(post).observe(w);[100,400,1200,3000].forEach(function(t){setTimeout(post,t)});})();+</script></body></html>