deploy(nvsim): publish dashboard to /nvsim/ [ADR-092]

Vite + Lit dashboard for the nvsim NV-diamond magnetometer simulator.
WASM-backed deterministic pipeline (Proof::EXPECTED_WITNESS_HEX matches
across browsers and machines). PWA-enabled with service worker and
manifest scoped to /RuView/nvsim/.

Live: https://ruvnet.github.io/RuView/nvsim/

Preserves all sibling demos:
 - / (Observatory)
 - /pose-fusion/ (Pose Fusion)
 - /ui/ (legacy UI)

Source: feat/nvsim-pipeline-simulator @ 5846c3d6d

Co-Authored-By: claude-flow <ruv@ruv.net>
This commit is contained in:
ruv 2026-04-26 20:10:23 -04:00
parent 05f2d2d7ca
commit 43f853d61a
18 changed files with 1474 additions and 0 deletions

View File

@ -0,0 +1 @@
:root{--bg-0: #07090d;--bg-1: #0d1117;--bg-2: #131a23;--bg-3: #1a232f;--line: #1f2a38;--line-2: #2a3848;--ink: #e6edf3;--ink-2: #b8c2cc;--ink-3: #7c8694;--ink-4: #4a5462;--accent: oklch(.78 .14 70);--accent-2: oklch(.78 .12 195);--accent-3: oklch(.72 .18 330);--accent-4: oklch(.78 .14 145);--warn: oklch(.7 .18 35);--ok: oklch(.78 .14 145);--bad: oklch(.65 .22 25);--grid: rgba(255, 255, 255, .04);--shadow: 0 20px 60px -20px rgba(0, 0, 0, .6), 0 4px 12px -4px rgba(0, 0, 0, .4);--radius: 12px;--radius-sm: 8px;--mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--sans: "Inter", system-ui, -apple-system, sans-serif}[data-theme=light]{--bg-0: #f4f5f7;--bg-1: #fbfbfc;--bg-2: #ffffff;--bg-3: #f0f2f5;--line: #e3e7ec;--line-2: #d1d7de;--ink: #11161d;--ink-2: #38424f;--ink-3: #6b7684;--ink-4: #9ba4b0;--grid: rgba(0, 0, 0, .05);--shadow: 0 12px 40px -16px rgba(15, 30, 55, .18), 0 2px 8px -2px rgba(15, 30, 55, .08)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--sans);background:var(--bg-0);color:var(--ink);font-size:14px;line-height:1.45;overflow:hidden;height:100vh;-webkit-font-smoothing:antialiased;letter-spacing:-.005em}button{font-family:inherit;color:inherit;cursor:pointer}input,select{font-family:inherit;color:inherit}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--ink-4)}@keyframes pulse{50%{opacity:.5}}@keyframes dash{to{stroke-dashoffset:-200}}@keyframes float-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes diamond-spin{0%{transform:rotateY(0) rotateX(8deg)}to{transform:rotateY(360deg) rotateX(8deg)}}@keyframes spin{to{transform:rotate(360deg)}}body.reduce-motion *,body.reduce-motion *:before,body.reduce-motion *:after{animation:none!important;transition:none!important}body.density-comfy{font-size:15px}body.density-default{font-size:14px}body.density-compact{font-size:13px}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
var U=Symbol.for("preact-signals");function l(){if(e>1)e--;else{var t,i=!1;for(function(){var s=a;for(a=void 0;s!==void 0;)s.S.v===s.v&&(s.S.i=s.i),s=s.o}();u!==void 0;){var o=u;for(u=void 0,d++;o!==void 0;){var n=o.u;if(o.u=void 0,o.f&=-3,!(8&o.f)&&x(o))try{o.c()}catch(s){i||(t=s,i=!0)}o=n}}if(d=0,e--,i)throw t}}var r=void 0;function S(t){var i=r;r=void 0;try{return t()}finally{r=i}}var u=void 0,e=0,d=0,y=0,a=void 0,c=0;function w(t){if(r!==void 0){var i=t.n;if(i===void 0||i.t!==r)return i={i:0,S:t,p:r.s,n:void 0,t:r,e:void 0,x:void 0,r:i},r.s!==void 0&&(r.s.n=i),r.s=i,t.n=i,32&r.f&&t.S(i),i;if(i.i===-1)return i.i=0,i.n!==void 0&&(i.n.p=i.p,i.p!==void 0&&(i.p.n=i.n),i.p=r.s,i.n=void 0,r.s.n=i,r.s=i),i}}function f(t,i){this.v=t,this.i=0,this.n=void 0,this.t=void 0,this.l=0,this.W=i?.watched,this.Z=i?.unwatched,this.name=i?.name}f.prototype.brand=U;f.prototype.h=function(){return!0};f.prototype.S=function(t){var i=this,o=this.t;o!==t&&t.e===void 0&&(t.x=o,this.t=t,o!==void 0?o.e=t:S(function(){var n;(n=i.W)==null||n.call(i)}))};f.prototype.U=function(t){var i=this;if(this.t!==void 0){var o=t.e,n=t.x;o!==void 0&&(o.x=n,t.e=void 0),n!==void 0&&(n.e=o,t.x=void 0),t===this.t&&(this.t=n,n===void 0&&S(function(){var s;(s=i.Z)==null||s.call(i)}))}};f.prototype.subscribe=function(t){var i=this;return N(function(){var o=i.value,n=r;r=void 0;try{t(o)}finally{r=n}},{name:"sub"})};f.prototype.valueOf=function(){return this.value};f.prototype.toString=function(){return this.value+""};f.prototype.toJSON=function(){return this.value};f.prototype.peek=function(){var t=r;r=void 0;try{return this.value}finally{r=t}};Object.defineProperty(f.prototype,"value",{get:function(){var t=w(this);return t!==void 0&&(t.i=this.i),this.v},set:function(t){if(t!==this.v){if(d>100)throw new Error("Cycle detected");(function(o){e!==0&&d===0&&o.l!==y&&(o.l=y,a={S:o,v:o.v,i:o.i,o:a})})(this),this.v=t,this.i++,c++,e++;try{for(var i=this.t;i!==void 0;i=i.x)i.t.N()}finally{l()}}}});function O(t,i){return new f(t,i)}function x(t){for(var i=t.s;i!==void 0;i=i.n)if(i.S.i!==i.i||!i.S.h()||i.S.i!==i.i)return!0;return!1}function m(t){for(var i=t.s;i!==void 0;i=i.n){var o=i.S.n;if(o!==void 0&&(i.r=o),i.S.n=i,i.i=-1,i.n===void 0){t.s=i;break}}}function b(t){for(var i=t.s,o=void 0;i!==void 0;){var n=i.p;i.i===-1?(i.S.U(i),n!==void 0&&(n.n=i.n),i.n!==void 0&&(i.n.p=n)):o=i,i.S.n=i.r,i.r!==void 0&&(i.r=void 0),i=n}t.s=o}function h(t,i){f.call(this,void 0),this.x=t,this.s=void 0,this.g=c-1,this.f=4,this.W=i?.watched,this.Z=i?.unwatched,this.name=i?.name}h.prototype=new f;h.prototype.h=function(){if(this.f&=-3,1&this.f)return!1;if((36&this.f)==32||(this.f&=-5,this.g===c))return!0;if(this.g=c,this.f|=1,this.i>0&&!x(this))return this.f&=-2,!0;var t=r;try{m(this),r=this;var i=this.x();(16&this.f||this.v!==i||this.i===0)&&(this.v=i,this.f&=-17,this.i++)}catch(o){this.v=o,this.f|=16,this.i++}return r=t,b(this),this.f&=-2,!0};h.prototype.S=function(t){if(this.t===void 0){this.f|=36;for(var i=this.s;i!==void 0;i=i.n)i.S.S(i)}f.prototype.S.call(this,t)};h.prototype.U=function(t){if(this.t!==void 0&&(f.prototype.U.call(this,t),this.t===void 0)){this.f&=-33;for(var i=this.s;i!==void 0;i=i.n)i.S.U(i)}};h.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(var t=this.t;t!==void 0;t=t.x)t.t.N()}};Object.defineProperty(h.prototype,"value",{get:function(){if(1&this.f)throw new Error("Cycle detected");var t=w(this);if(this.h(),t!==void 0&&(t.i=this.i),16&this.f)throw this.v;return this.v}});function j(t,i){return new h(t,i)}function g(t){var i=t.m;if(t.m=void 0,typeof i=="function"){e++;var o=r;r=void 0;try{i()}catch(n){throw t.f&=-2,t.f|=8,p(t),n}finally{r=o,l()}}}function p(t){for(var i=t.s;i!==void 0;i=i.n)i.S.U(i);t.x=void 0,t.s=void 0,g(t)}function E(t){if(r!==this)throw new Error("Out-of-order effect");b(this),r=t,this.f&=-2,8&this.f&&p(this),l()}function v(t,i){this.x=t,this.m=void 0,this.s=void 0,this.u=void 0,this.f=32,this.name=i?.name}v.prototype.c=function(){var t=this.S();try{if(8&this.f||this.x===void 0)return;var i=this.x();typeof i=="function"&&(this.m=i)}finally{t()}};v.prototype.S=function(){if(1&this.f)throw new Error("Cycle detected");this.f|=1,this.f&=-9,g(this),m(this),e++;var t=r;return r=this,E.bind(this,t)};v.prototype.N=function(){2&this.f||(this.f|=2,this.u=u,u=this)};v.prototype.d=function(){this.f|=8,1&this.f||p(this)};v.prototype.dispose=function(){this.d()};function N(t,i){var o=new v(t,i);try{o.c()}catch(s){throw o.d(),s}var n=o.d.bind(o);return n[Symbol.dispose]=n,n}export{j as g,N as j,O as y};
//# sourceMappingURL=signals-SG45zFCj.js.map

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
const d=self;let o,_,x,g,W;async function S(){const r=`${d.location.origin}/`,t=await import(new URL("nvsim-pkg/nvsim.js",r).href);await t.default(),o=t.WasmPipeline,_=t.referenceSceneJson,x=t.expectedReferenceWitnessHex,g=t.hexWitness,W=t.referenceWitness}let a=null,p="",m="",F=BigInt(3405691582),b=!1,l=null,i=0,w=0;function f(){m||(m=_()),p||(p=JSON.stringify({digitiser:{f_s_hz:1e4,f_mod_hz:1e3},sensor:{gamma_fwhm_hz:1e6,t1_s:.005,t2_s:1e-6,t2_star_s:2e-7,contrast:.03,n_spins:1e12,shot_noise_disabled:!1},dt_s:null})),a?.free?.(),a=new o(m,p,Number(F&0xFFFFFFFFn))}function s(r,e=[]){d.postMessage(r,e)}function B(){if(l!==null)return;w=performance.now(),i=0;const r=()=>{if(!b||!a)return;const e=32,t=a.run(e);i+=e;const n=(performance.now()-w)/1e3,c=n>0?i/n:0;s({type:"frames",batch:t.buffer,count:e,fps:c,framesEmitted:i},[t.buffer]),l=d.setTimeout(r,16)};l=d.setTimeout(r,0)}function h(){l!==null&&(d.clearTimeout(l),l=null)}d.addEventListener("message",async r=>{const e=r.data;try{switch(e.type){case"boot":{await S(),f(),s({type:"booted",id:e.id,buildVersion:o.buildVersion(),frameMagic:o.frameMagic(),frameBytes:o.frameBytes(),expectedWitnessHex:x()});break}case"setScene":{m=e.json,f(),s({type:"ack",id:e.id});break}case"setConfig":{p=e.json,f(),s({type:"ack",id:e.id});break}case"setSeed":{F=BigInt(e.seed),f(),s({type:"ack",id:e.id});break}case"reset":{h(),b=!1,f(),i=0,s({type:"ack",id:e.id}),s({type:"state",running:!1,framesEmitted:i});break}case"run":{a||f(),b=!0,B(),s({type:"ack",id:e.id}),s({type:"state",running:!0,framesEmitted:i});break}case"pause":{b=!1,h(),s({type:"ack",id:e.id}),s({type:"state",running:!1,framesEmitted:i});break}case"step":{a||f();const t=a.run(1);i+=1,s({type:"frames",batch:t.buffer,count:1,fps:0,framesEmitted:i},[t.buffer]),s({type:"ack",id:e.id});break}case"witnessGenerate":{a||f();const t=e.samples??256,n=a.runWithWitness(t),c=g(n.witness);s({type:"witness",id:e.id,witness:n.witness.buffer,hex:c,frameCount:n.frameCount},[n.witness.buffer]);break}case"witnessVerify":{const t=e.expected,n=new Uint8Array(t),c=W();let y=c.length===n.length;if(y){for(let u=0;u<n.length;u++)if(c[u]!==n[u]){y=!1;break}}const k=c.slice().buffer;s({type:"verify",id:e.id,ok:y,actual:k,actualHex:g(c)},[k]);break}case"buildId":{s({type:"buildId",id:e.id,buildId:`nvsim@${o.buildVersion()}`});break}default:s({type:"err",id:e.id,msg:`unknown op ${e.type}`})}}catch(t){s({type:"err",id:e.id,msg:t.message??String(t)})}});s({type:"ready"});
//# sourceMappingURL=worker-DBavH9su.js.map

File diff suppressed because one or more lines are too long

4
nvsim/icon-192.svg Normal file
View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 192 192" width="192" height="192">
<rect width="192" height="192" rx="36" fill="#e6a86b"/>
<text x="96" y="124" text-anchor="middle" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-weight="700" font-size="80" fill="#1a0f00">NV</text>
</svg>

After

Width:  |  Height:  |  Size: 313 B

10
nvsim/icon-512.svg Normal file
View File

@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="512" height="512">
<defs>
<linearGradient id="g" x1="0" x2="1" y1="0" y2="1">
<stop offset="0" stop-color="#e6a86b"/>
<stop offset="1" stop-color="#a4633a"/>
</linearGradient>
</defs>
<rect width="512" height="512" rx="96" fill="url(#g)"/>
<text x="256" y="332" text-anchor="middle" font-family="ui-monospace,SFMono-Regular,Menlo,monospace" font-weight="700" font-size="220" fill="#1a0f00">NV</text>
</svg>

After

Width:  |  Height:  |  Size: 504 B

21
nvsim/index.html Normal file
View File

@ -0,0 +1,21 @@
<!doctype html>
<html lang="en" data-theme="dark">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<title>RuView · nvsim — NV-Diamond Magnetometer Simulator</title>
<meta name="description" content="Deterministic forward simulator for NV-diamond magnetometry. WASM-backed CW-ODMR pipeline with witness-grade SHA-256 proofs." />
<meta name="theme-color" content="#0d1117" />
<link rel="icon" type="image/svg+xml" href="data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><rect width='32' height='32' rx='6' fill='%23e6a86b'/><text x='16' y='22' text-anchor='middle' font-family='monospace' font-weight='700' font-size='14' fill='%231a0f00'>NV</text></svg>" />
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
<script type="module" crossorigin src="/RuView/nvsim/assets/index-DGciMM9K.js"></script>
<link rel="modulepreload" crossorigin href="/RuView/nvsim/assets/lit-BS7WqYd5.js">
<link rel="modulepreload" crossorigin href="/RuView/nvsim/assets/signals-SG45zFCj.js">
<link rel="stylesheet" crossorigin href="/RuView/nvsim/assets/index-CyUCBwRA.css">
<link rel="manifest" href="/RuView/nvsim/manifest.webmanifest"><script id="vite-plugin-pwa:register-sw" src="/RuView/nvsim/registerSW.js"></script></head>
<body>
<nv-app></nv-app>
</body>
</html>

View File

@ -0,0 +1 @@
{"name":"nvsim — NV-Diamond Magnetometer Simulator","short_name":"nvsim","description":"Deterministic forward simulator for NV-diamond magnetometry. WASM-backed CW-ODMR pipeline with witness-grade SHA-256 proofs.","start_url":"/RuView/nvsim/","display":"standalone","background_color":"#0d1117","theme_color":"#0d1117","lang":"en","scope":"/RuView/nvsim/","icons":[{"src":"icon-192.svg","sizes":"192x192","type":"image/svg+xml","purpose":"any maskable"},{"src":"icon-512.svg","sizes":"512x512","type":"image/svg+xml","purpose":"any maskable"}]}

1
nvsim/registerSW.js Normal file
View File

@ -0,0 +1 @@
if('serviceWorker' in navigator) {window.addEventListener('load', () => {navigator.serviceWorker.register('/RuView/nvsim/sw.js', { scope: '/RuView/nvsim/' })})}

2
nvsim/sw.js Normal file
View File

@ -0,0 +1,2 @@
if(!self.define){let s,e={};const i=(i,n)=>(i=new URL(i+".js",n).href,e[i]||new Promise(e=>{if("document"in self){const s=document.createElement("script");s.src=i,s.onload=e,document.head.appendChild(s)}else s=i,importScripts(i),e()}).then(()=>{let s=e[i];if(!s)throw new Error(`Module ${i} didnt register its module`);return s}));self.define=(n,r)=>{const c=s||("document"in self?document.currentScript.src:"")||location.href;if(e[c])return;let o={};const d=s=>i(s,c),l={module:{uri:c},exports:o,require:d};e[c]=Promise.all(n.map(s=>l[s]||d(s))).then(s=>(r(...s),o))}}define(["./workbox-8c29f6e4"],function(s){"use strict";self.skipWaiting(),s.clientsClaim(),s.precacheAndRoute([{url:"registerSW.js",revision:"4bcaa063d693b37532f242f566232490"},{url:"index.html",revision:"ba18af5bc33b9d818c44811be202cfb2"},{url:"icon-512.svg",revision:"98fc1c8102c279bf1c0dd52559821ddc"},{url:"icon-192.svg",revision:"e73b6aa9016dca426a59e0f8ff4f1b04"},{url:"nvsim-pkg/nvsim_bg.wasm",revision:"b510b70684796cc95dd7fb5bb0d23df7"},{url:"nvsim-pkg/nvsim.js",revision:"ec3b99fbf8131dc1b3d86dc2ae0cf7b8"},{url:"assets/worker-DBavH9su.js",revision:null},{url:"assets/signals-SG45zFCj.js",revision:null},{url:"assets/lit-BS7WqYd5.js",revision:null},{url:"assets/index-DGciMM9K.js",revision:null},{url:"assets/index-CyUCBwRA.css",revision:null},{url:"icon-192.svg",revision:"e73b6aa9016dca426a59e0f8ff4f1b04"},{url:"icon-512.svg",revision:"98fc1c8102c279bf1c0dd52559821ddc"},{url:"nvsim-pkg/nvsim.js",revision:"ec3b99fbf8131dc1b3d86dc2ae0cf7b8"},{url:"nvsim-pkg/nvsim_bg.wasm",revision:"b510b70684796cc95dd7fb5bb0d23df7"},{url:"manifest.webmanifest",revision:"e8c97968cae19a0ed3b64c1303a27a90"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html")))});
//# sourceMappingURL=sw.js.map

1
nvsim/sw.js.map Normal file
View File

@ -0,0 +1 @@
{"version":3,"file":"sw.js","sources":["../../../AppData/Local/Temp/5b6adf3e7ea80877384706b047a2786e/sw.js"],"sourcesContent":["import {clientsClaim as workbox_core_clientsClaim} from 'C:/Users/ruv/Projects/wifi-densepose/dashboard/node_modules/workbox-core/clientsClaim.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from 'C:/Users/ruv/Projects/wifi-densepose/dashboard/node_modules/workbox-precaching/precacheAndRoute.mjs';\nimport {cleanupOutdatedCaches as workbox_precaching_cleanupOutdatedCaches} from 'C:/Users/ruv/Projects/wifi-densepose/dashboard/node_modules/workbox-precaching/cleanupOutdatedCaches.mjs';\nimport {registerRoute as workbox_routing_registerRoute} from 'C:/Users/ruv/Projects/wifi-densepose/dashboard/node_modules/workbox-routing/registerRoute.mjs';\nimport {NavigationRoute as workbox_routing_NavigationRoute} from 'C:/Users/ruv/Projects/wifi-densepose/dashboard/node_modules/workbox-routing/NavigationRoute.mjs';\nimport {createHandlerBoundToURL as workbox_precaching_createHandlerBoundToURL} from 'C:/Users/ruv/Projects/wifi-densepose/dashboard/node_modules/workbox-precaching/createHandlerBoundToURL.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.skipWaiting();\n\nworkbox_core_clientsClaim();\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"registerSW.js\",\n \"revision\": \"4bcaa063d693b37532f242f566232490\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"ba18af5bc33b9d818c44811be202cfb2\"\n },\n {\n \"url\": \"icon-512.svg\",\n \"revision\": \"98fc1c8102c279bf1c0dd52559821ddc\"\n },\n {\n \"url\": \"icon-192.svg\",\n \"revision\": \"e73b6aa9016dca426a59e0f8ff4f1b04\"\n },\n {\n \"url\": \"nvsim-pkg/nvsim_bg.wasm\",\n \"revision\": \"b510b70684796cc95dd7fb5bb0d23df7\"\n },\n {\n \"url\": \"nvsim-pkg/nvsim.js\",\n \"revision\": \"ec3b99fbf8131dc1b3d86dc2ae0cf7b8\"\n },\n {\n \"url\": \"assets/worker-DBavH9su.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/signals-SG45zFCj.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/lit-BS7WqYd5.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-DGciMM9K.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-CyUCBwRA.css\",\n \"revision\": null\n },\n {\n \"url\": \"icon-192.svg\",\n \"revision\": \"e73b6aa9016dca426a59e0f8ff4f1b04\"\n },\n {\n \"url\": \"icon-512.svg\",\n \"revision\": \"98fc1c8102c279bf1c0dd52559821ddc\"\n },\n {\n \"url\": \"nvsim-pkg/nvsim.js\",\n \"revision\": \"ec3b99fbf8131dc1b3d86dc2ae0cf7b8\"\n },\n {\n \"url\": \"nvsim-pkg/nvsim_bg.wasm\",\n \"revision\": \"b510b70684796cc95dd7fb5bb0d23df7\"\n },\n {\n \"url\": \"manifest.webmanifest\",\n \"revision\": \"e8c97968cae19a0ed3b64c1303a27a90\"\n }\n], {});\nworkbox_precaching_cleanupOutdatedCaches();\nworkbox_routing_registerRoute(new workbox_routing_NavigationRoute(workbox_precaching_createHandlerBoundToURL(\"index.html\")));\n\n\n\n\n\n\n"],"names":["self","skipWaiting","workbox_core_clientsClaim","workbox_precaching_precacheAndRoute","url","revision","workbox_precaching_cleanupOutdatedCaches","workbox","registerRoute","workbox_routing_NavigationRoute","NavigationRoute","workbox_precaching_createHandlerBoundToURL"],"mappings":"inBAwBAA,KAAKC,cAELC,EAAAA,eAQAC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,eACPC,SAAY,oCAEd,CACED,IAAO,eACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,eACPC,SAAY,oCAEd,CACED,IAAO,eACPC,SAAY,oCAEd,CACED,IAAO,qBACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,qCAEb,CAAE,GACLC,EAAAA,wBAC6BC,EAAAC,cAAC,IAAIC,EAA+BC,gBAACC,0BAA2C"}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long