The HTTP scan found `+(n.agent&&n.agent.webmcp&&n.agent.webmcp.found?`a source marker`:`no source marker`)+`. Browser Run runtime discovery is a separate observation.
`+t(e.detail||`No runtime WebMCP tools were observed.`)+`
`,a+=`
Use node tools/lens-webmcp.ts `+t(n.finalUrl||n.url)+` on the current machine for a Chrome-beta lab probe.
`;return i(`Runtime WebMCP`,r,`What a browser session can discover after the page runs.`,a)}function l(e,t){return t?Math.min(100,Math.round(e/t*100)):null}function u(e,t){var n=[];return e.jsonld!=null&&n.push([e.jsonld,`JSON-LD block`]),e.headings!=null&&n.push([e.headings,`heading`]),e.links!=null&&n.push([e.links,`link`]),n.map(e=>e[0]+` `+e[1]+(e[0]===1?``:`s`)).join(` · `)}function d(e,r){var i=r&&r.anatomy;if(!i||i.rawBytes==null)return``;var a=(e.content||``).length,o=i.wordCount||0,s=e.tally;if(!s){if(e.contentTruncated)return`
HTTP vs rendered: `+t(n(i.rawBytes))+` → ≥`+t(n(a))+` (the rendered body hit the capture cap). A word-level comparison needs the full body, so Lens leaves it uncounted.
`;s={words:(e.content||``).replace(/<(script|style|noscript|template|svg)[\s\S]*?<\/\1>/gi,` `).replace(/<[^>]+>/g,` `).split(/\s+/).filter(Boolean).length}}var c=s.words||0,d=l(o,c),f=d===null?`The render returned no readable text, so there is nothing to compare against the HTTP fetch.`:Math.abs(c-o)<=Math.max(10,o*.15)?`A crawler that never runs JavaScript sees essentially all of this page.`:c`+d+`% of this page: `+o+` of the `+c+` words a browser ends up with.`,p=u(s,i);return`
`}var f=[{id:`expand`,label:`Open collapsed sections`,claim:`Opens every disclosure widget, then re-reads the page.`},{id:`consent`,label:`Remove the consent overlay`,claim:`Removes large fixed overlays worded like a consent or newsletter wall. Presses nothing.`}];function p(e,n,r){var i=e.interaction;if(!i)return``;var a;if(i.note===`no-receipt`){var o=r&&r.headers&&(r.headers[`content-security-policy`]||r.headers[`Content-Security-Policy`])||``;a=/script-src/i.test(o)?`The injected script never ran. This page's Content-Security-Policy refuses inline script, so Lens could not interact with it — which is itself something a machine learns about this page.`:`The injected script did not run, and the HTTP response carried no policy that explains it. Lens does not know why.`}else if(i.note===`forged-receipt`)a=`This page returned a forged result marker for a script Lens did not run. Lens discarded it. That is worth knowing on its own.`;else if(i.note===`threw`)a=`The script ran and threw inside this page, so Lens is not claiming it changed anything.`;else if(!i.acted)a=`Nothing to do here. Lens examined `+(i.scanned||0)+` candidate`+(i.scanned===1?``:`s`)+` and none matched.`;else{var s=i.acted,c=s+` element`+(s===1?``:`s`),l=e.tally&&e.tally.words||0,u=n&&n.tally?n.tally.words:i.before?i.before.words:null;if(u==null)a=``+c+` changed. Lens has no plain snapshot to measure this against, so it is not claiming a delta.`;else if(l<=u)a=``+c+` changed and the page did not grow. The wall was cosmetic — the text was already there for a machine.`;else{var d=Math.min(100,Math.round((l-u)/l*100));a=``+c+` changed, and the page went from `+u+` to `+l+` words: `+d+`% of what a machine can now read was behind something it cannot click.`}}var f=[];return i.scanned&&f.push(i.scanned+` candidate`+(i.scanned===1?``:`s`)+` examined`),e.engine&&f.push(`engine: `+t(e.engine)),f.push(e.fromCache?`KV cache`:`fresh Browser Run`),`
After “`+t(i.label)+`”: `+a+`
`+f.join(` · `)+`
`+(i.id===`consent`&&i.acted?`
Lens removed the overlay from its own copy of the page. It did not accept, refuse, or record any consent choice. If this was a paywall, you are looking at a page the publisher did not intend to show you, and Lens will not fetch anything further.
`}function m(e,n){return!e||!e.screenshot||!n.screenshot?``:i(`Before and after`,{text:`PNG`,kind:`ok`},`The same page, rendered twice: once as delivered, once after the script ran.`,`
`+t(/rate-limit|budget/i.test(s)?`No rendered snapshot right now: the shared Browser Run budget is spent. Everything below came from the HTTP fetch and is unaffected.`:`Browser Run could not render this URL: `+s)+`
`;if(!o)return c;var l=o.anatomy||{},u=o.structured||{},d=o.cost&&o.cost.tiers&&o.cost.tiers[0];return c+=i(`What a render would add`,{text:`not run`,kind:`warn`},`Rendered HTML after the page's JavaScript, a screenshot, the browser's own Markdown, and its accessibility tree. The gap between that and the HTTP response is this pane's whole point, and measuring it needs the render.`,``),c+=i(`What the HTTP fetch already got`,{text:`observed`,kind:`ok`},`None of this needed a browser. It is the same response every machine lens on this page is reading.`,a({status:o.status==null?`unknown`:o.status,title:u.title||`(untitled)`,"final URL":o.finalUrl||o.url,"content type":o.contentType||`(none)`,"HTTP payload":n(l.rawBytes)+(o.truncated?` (capped)`:``),"readable text":l.wordCount==null?n((l.text||``).length):l.wordCount+` words`,headings:l.headings?l.headings.length:0,"links in head":u.relLinks?u.relLinks.length:0,"cost to read":d?`~`+r(d.tokens)+` tokens of `+d.label:`not modelled`})),c}function g(e,r){var l=e.accessibilityTree,u={status:e.status==null?`unknown`:e.status,title:e.title||`(untitled)`,"final URL":e.finalUrl||e.url,"rendered HTML":n((e.content||``).length)+(e.contentTruncated?` (capped)`:``),"rendered Markdown":n((e.markdown||``).length),"accessibility nodes":l?s(l):`not returned`,observation:e.fromCache?`KV cache`:`fresh Browser Run`,elapsed:(e.elapsedMs||0)+` ms`},f=d(e,r);return f+=i(`Browser facts`,{text:e.status==null?`rendered`:String(e.status),kind:`ok`},`A rendered observation after page JavaScript. It is not folded into the AadharshBot HTTP readiness score.`,a(u)),e.screenshot?f+=i(`Rendered screenshot`,{text:`PNG`,kind:`ok`},`The viewport after the Browser Run page load.`,``):e.screenshotDropped&&(f+=i(`Rendered screenshot`,{text:`too large`,kind:`warn`},`Browser Run captured the page, and the full-page PNG came back at `+n(e.screenshotDropped)+` — past what this endpoint will return inline, so it was dropped. The rest of the snapshot is unaffected.`,``)),f+=c(e.webmcp,r),f+=i(`Rendered HTML`,{text:n((e.content||``).length)},`The DOM returned after Browser Run executed the page. This is source evidence, shown escaped.`,o(e.content||`(no content)`)),f+=i(`Rendered Markdown`,{text:n((e.markdown||``).length)},`The browser's clean text representation, separate from Lens's dependency-free HTTP reconstruction.`,o(e.markdown||`(no Markdown)`)),l&&(f+=i(`Accessibility tree`,{text:s(l)+` nodes`,kind:`ok`},`The browser's structured view of roles, names, states, and hierarchy.`,o(JSON.stringify(l,null,2)))),f}function _(e,t){for(var n=e.querySelectorAll(`.lx-do-chip`),r=0;r{e.addEventListener(`click`,()=>{t(e.getAttribute(`data-do`))})})(n[r])}function v(e,n,r,i,a){if(!n)e.innerHTML=`
Paste a URL above, then ask Browser Run to render it here.
`;else if(r)e.innerHTML=(a?p(a,r,n):``)+`
After interaction:
Lens runs one fixed, published script in its own copy of the page, then re-reads it. Each click spends one of your three renders a minute.
`+f.map(e=>``).join(``)+`
`+(a?m(r,a):``)+g(r,n),_(e,i);else{e.innerHTML=`
Third surface: the rendered browser. This is separate from the HTTP Machine view and the Human view in your own browser.
It runs page JavaScript and returns rendered HTML, a screenshot, Markdown, an accessibility tree, and a runtime WebMCP result when the browser exposes one. It does not execute site tools.
Cloudflare Browser Run is opening a rendered session`+(a?` and running the published script`:``)+`…
`,fetch(`/lens/browser?url=`+encodeURIComponent(t.finalUrl||t.url)+(a?`&do=`+encodeURIComponent(a):``)).then(e=>e.text().then(t=>{var n=null;try{n=JSON.parse(t)}catch{}if(!n)throw Error(`the server answered with `+(e.headers.get(`content-type`)||`an unknown body`)+` instead of a snapshot (HTTP `+e.status+`). That is the edge or the runtime failing the route, not the target page.`);if(!e.ok||!n.ok)throw Error(n.error||`Browser Run returned `+e.status);return n})).then(n).catch(n=>{if(r(n)!==!1){e.innerHTML=h(n,t);var a=document.getElementById(`lx-browser-run`);a&&a.addEventListener(`click`,i)}})}window.LensBrowser={mount:v,run:y}})();
\ No newline at end of file
diff --git a/src/dict/a-dict/lens.ca30caef.js b/src/dict/a-dict/lens.ca30caef.js
new file mode 100644
index 000000000..a9766a356
--- /dev/null
+++ b/src/dict/a-dict/lens.ca30caef.js
@@ -0,0 +1,33 @@
+/*! minified at deploy - readable source: /lens.src.js */
+(()=>{"use strict";function e(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function t(e){return typeof e==`string`&&e!==``?e:null}var n=document.getElementById(`lx-form`);if(!n)return;var r=document.getElementById(`lx-url`),i=document.getElementById(`lx-panes`),a=document.getElementById(`lx-human-body`),o=document.getElementById(`lx-machine-body`),s=document.getElementById(`lx-machine-top`),c=document.getElementById(`lx-machine-scroll`),l=document.getElementById(`lx-browser-body`),u=document.getElementById(`lx-machine-h`),d=document.getElementById(`lx-human-h`),f=document.getElementById(`lx-mode-note`),p=document.getElementById(`lx-status`),m=document.getElementById(`lx-toolbar`),h=document.getElementById(`lx-addr-vs`),g=document.getElementById(`lx-url-vs`),_=document.getElementById(`lx-vs-toggle`),v=document.getElementById(`lx-vs-close`),y=document.getElementById(`lx-vs`),b=null,x=null,S=null,C=`both`,w=`anatomy`,T={markdown:!1,semantic:!1,contract:!1,authority:!1,receipt:!1,dictionary:!1,ech:!1},E=!1,D=!1,O=!1,k=!1,A=null,ee=null,te={readiness:`Agent-ready?`,anatomy:`Raw response`,reader:`Reader's guess`,wire:`What it costs`,structured:`What it claims`,ai:`Model cost`,terms:`Who's allowed`,discovery:`Agent doors`,tools:`What it accepts`,nlweb:`What it answers`,markdown:`What agents get`},j=null,M=!1,N=null,P=!1,ne=null,F=!1,re=null,I=!1,ie=``,ae=null,L=!1,R=null,z=!1;function B(e){return String(e??``).replace(/&/g,`&`).replace(//g,`>`).replace(/"/g,`"`)}var oe=(()=>{try{return JSON.parse(document.getElementById(`lx-glossary`).textContent)}catch{return{}}})(),se=[];Object.keys(oe).forEach(e=>{[oe[e].label].concat(oe[e].alt||[]).forEach(t=>{se.push([e,t])})}),se.sort((e,t)=>t[1].length-e[1].length);var ce=!1;function le(e,t){var n=oe[e];return n?``+B(t)+``:B(t)}function V(e,t){for(var n=String(e),r={},i=``,a=0;;){for(var o=null,s=0;s`+o.text+``,a=o.at+o.text.length}return i+n.slice(a)}window.matchMedia&&(matchMedia(`(hover: none)`).matches||matchMedia(`(pointer: coarse)`).matches)||import(`/a/hoist.77651846.js`).then(e=>{var t=document.getElementById(`lx-tip`);if(t){e.createHoist({node:t,anchorName:`--lx-tip`,findTarget:e=>e&&e.closest?e.closest(`.lx-term`):null,contentFor:e=>{var t=oe[e.getAttribute(`data-t`)];return t?``+B(t.label)+``+B(t.plain)+(t.more?``+B(t.more)+``:``):``}}),ce=!0;for(var n=document.querySelectorAll(`.lx-term[title]`),r=0;r{});function H(e){return e==null?`?`:e<1024?e+` B`:e<1048576?(e/1024).toFixed(1)+` KB`:(e/1048576).toFixed(2)+` MB`}function U(e){return e>=1e6?(e/1e6).toFixed(1)+`M`:e>=1e3?(e/1e3).toFixed(1)+`k`:String(e)}function W(e){return e>=.1?`$`+e.toFixed(2):e>=5e-4?`$`+e.toFixed(4):e>0?`<$0.0005`:`$0`}function ue(t){return e(t)!==null&&Object.keys(t).length>0}function de(){var e=b&&b.cost,t=b&&b.readiness,n=t&&t.field,r=n&&n.overall!=null?``:``;if(!e||!e.tiers||e.tiers.length<2)return r?`
`+r+`Lens observed `+B(n.overall)+`/100 field access. The independent Cloudflare and Readability inputs sit under Agent-ready?.
`:``;var i=e.rates&&e.rates[0]||{usdPerMtok:3},a=e.tiers[0],o=e.tiers.filter(e=>e.key===`markdown`)[0]||e.tiers.filter(e=>e.key===`text`)[0]||e.tiers[e.tiers.length-1],s=a.tokens/1e6*i.usdPerMtok,c=s*1e3,l=o&&o.tokens&&o!==a?Math.round(a.tokens/o.tokens):0,u=`A person reads this page for free. A machine pays `+W(s)+` for the same words, because it chews through `+U(a.tokens)+` `+le(`token`,`tokens`)+` of raw HTML`+(l>1?`. As clean text it would cost ×`+l+` less`:``)+`. At 1,000 reads that is `+W(c)+` of inference, and the publisher collects $0.00.`;return`
`+r+u+`
`}var fe={markdownNegotiation:`Read mostly by coding agents; answer engines still scrape HTML.`,robotsTxtAiRules:`Honored by the major AI crawlers that identify themselves.`,contentSignals:`~3.8M domains publish it; Google says it changes nothing.`,webBotAuth:`Required for pay-per-crawl; almost no verifiers exist yet.`,dnsAid:`A 2026 Linux Foundation proposal; near-zero deployment.`,mcpServerCard:`MCP is the one surface here with a real consumer ecosystem.`,a2aAgentCard:`A2A discovery is early: 50+ orgs, nowhere near MCP's scale.`,apiCatalog:`An IETF linkset standard; discovery clients stay thin.`,llmsTxt:`~6% of top sites publish it; Google won't read it.`};function pe(){var e=document.getElementById(`lx-initial-data`);if(!e)return null;try{return JSON.parse(e.textContent||`null`)}catch{return null}}var me=pe(),he={both:`Compare puts Human, HTTP Machine, and Browser Run side by side. Predict the machine pane; the miss is the lesson.`,human:`Human is the page as a person receives it. Every other view subtracts the person.`,machine:`Machine is an evidence-first briefing. Read claims first, then check each against its evidence.`,browser:`Browser Run renders after JavaScript beside HTTP. Disagreement reveals a JS dependency.`,delta:`Delta toggles hypothetical infrastructure. Predict, flip, check.`};function ge(){var e=new URLSearchParams(location.search),t=[`both`,`human`,`machine`,`browser`,`delta`],n=Object.keys(te),r={markdown:!1,semantic:!1,contract:!1,authority:!1,receipt:!1,dictionary:!1,ech:!1};return(e.get(`cf`)||``).split(`,`).forEach(e=>{Object.prototype.hasOwnProperty.call(r,e)&&(r[e]=!0)}),{url:e.get(`url`)||``,vs:e.get(`vs`)||``,view:t.indexOf(e.get(`view`))>=0?e.get(`view`):`both`,lens:n.indexOf(e.get(`lens`))>=0?e.get(`lens`):`anatomy`,counterfactuals:r}}function _e(e){var t;try{t=new URL(location.href)}catch{return}t.pathname=`/lens`,[`url`,`vs`,`view`,`lens`,`cf`].forEach(e=>{t.searchParams.delete(e)});var n=r.value.trim();if(n&&t.searchParams.set(`url`,n),O&&g&&g.value.trim())t.searchParams.set(`vs`,g.value.trim());else{C!==`both`&&t.searchParams.set(`view`,C),w!==`anatomy`&&t.searchParams.set(`lens`,w);var i=Object.keys(T).filter(e=>T[e]);i.length&&t.searchParams.set(`cf`,i.join(`,`))}var a=t.pathname+(t.search||``)+(t.hash||``);if(a!==location.pathname+location.search+location.hash)try{(e?history.pushState:history.replaceState).call(history,null,``,a)}catch{}}function ve(){var e=document.getElementById(`lx-sow-dialog`);if(e&&!e.open&&e.showModal)try{e.showModal()}catch{}}function ye(){x=null,S=null,j=null,R=null,N=null,ne=null,re=null,ae=null,D=!1,M=!1,z=!1,P=!1,F=!1,I=!1,L=!1}function be(e){var t=e&&e.error||`Something went wrong.`;b=null,ye(),o.innerHTML=`
`,p.innerHTML=`Network error.`})}}}var Se=[[`llms`,`llms.txt`],[`markdown`,`markdown negotiation`],[`mcp`,`MCP`],[`agentCard`,`an agent card`],[`apiCatalog`,`an API catalog`]];function Ce(e){try{return new URL(e).hostname.replace(/^www\./,``)}catch{return String(e||``)}}function we(e,t){var n=Ce(e.finalUrl||e.url),r=e.level>=5?`ok`:e.level>=3?``:`warn`,i=t===`deferred`||!!(e.phases&&e.phases.discoveryDeferred),a=!i&&t!==`none`&&!(e.phases&&e.phases.discovery===!1),o=Se.filter(t=>e.surfaces&&e.surfaces[t[0]]).map(e=>``+B(e[1])+``).join(``)||(a&&e.surfaces?`no machine surfaces published`:`not measured in this comparison`+(i?`, deferred to stay under the subrequest cap; compare again to fill it in`:``)+``);(t===`refused`||e.phases&&e.phases.subrequestCap)&&(o+=`
The subrequest cap refused some of this side's probes, so those checks read as unknown rather than absent.
`);var s=e.cost?`~`+U(e.cost.tokens)+` `+le(`token`,`tokens`)+` · `+W(e.cost.usdPerRead)+`/read`:`no cost model (non-HTML)`,c=[[`response`,B((e.status==null?`?`:e.status)+` `+Dt(e.status||0))],[`terms`,B(a?e.tier||`unknown`:`not measured`)],[`agent doors`,B(a&&e.doors!=null?String(e.doors):`not measured`)],[`one model read`,s],[`payload`,B(H(e.bytes))],[`words`,B(String(e.wordCount||0))]].map(e=>`
`+(a.readiness===o.readiness?``+B(a.readiness)+` apiece. Same score, one rubric.`:``+B(Ce(a.finalUrl||a.url))+` `+B(a.readiness)+`, `+B(Ce(o.finalUrl||o.url))+` `+B(o.readiness)+`.`)+(s.length?` The gap is published surfaces: `+B(s.join(`, `))+`.`:` Both publish the same surfaces; the gap sits in the individual checks.`)+`
`}y.innerHTML=`
Two sites, one rubric, same evidence rules. Every number here links back to a full scan.
`,p.innerHTML=`Comparing `+B(Ce(e))+` and `+B(Ce(t))+` server-side…`,fetch(`/lens/compare.json?left=`+encodeURIComponent(e)+`&right=`+encodeURIComponent(t)).then(e=>e.json()).then(n=>{k=!1,A=n,Te(n),p.innerHTML=n&&n.ok?`Head-to-head`+B(Ce(e))+` vs `+B(Ce(t))+`both fetched server-side as AadharshBot`:`Comparison failed:`+B(n&&n.error||`unknown error`)+``}).catch(e=>{k=!1,y.innerHTML=`
Network error: `+B(e&&e.message||e)+`
`,p.innerHTML=`Network error.`})))}function Oe(e){g&&(g.value=``),Ee(!1),e!==!1&&_e(!0),b?Z():p.innerHTML=`Idle. Nothing is fetched until you ask, and then just once, server-side, with no logging.`}function ke(e,t){var n=document.getElementById(`lx-human-h`);n&&(n.innerHTML=`Human view `+B(e)+``+B(t)+``)}function Ae(e){a.classList.toggle(`is-bleed`,!!e)}function je(){b.framable?(Ae(!0),ke(`Live`,`loaded by your browser, like a real tab`),a.innerHTML=``):Ne()}function Me(e,t){return e&&e.reason===`budget_spent`||t===429?null:e&&e.error&&!/^Browser Run (returned|request failed)/.test(e.error)?e.error:`A rendered snapshot needs a real headless Chrome, and this one did not come back (upstream said `+(t||`no status`)+`)`}function Ne(){var e=b.finalUrl;Ie(null,`Asking for a rendered snapshot as well`),fetch(`/lens/shot?url=`+encodeURIComponent(e)).then(t=>{var n=t.headers.get(`content-type`)||``;return t.ok&&n.indexOf(`image/`)===0?!b||(b.finalUrl||b.url)!==e?void 0:(Ae(!0),ke(`Refused`,(b.frameReason?`framing refused (`+b.frameReason+`)`:`this site refuses to be framed`)+`; a machine's render stands in`),t.blob().then(t=>{if(b&&(b.finalUrl||b.url)===e){ee&&=(URL.revokeObjectURL(ee),null);var n=URL.createObjectURL(t);ee=n;var r=new Image;r.className=`lx-shot`,r.alt=`Rendered snapshot of `+e,r.onload=()=>{ee===n&&(URL.revokeObjectURL(n),ee=null)},r.src=n,a.innerHTML=``,a.appendChild(r)}})):t.json().then(e=>{Ie(Me(e,t.status)||e&&e.error||`snapshot failed (`+t.status+`)`)}).catch(()=>{Ie(Me(null,t.status)||`snapshot failed (`+t.status+`)`)})}).catch(()=>{Ie(`The snapshot request did not go through`)})}function G(){if(!b)l.innerHTML=`
Scan a URL first.Then this pane fetches it with a real Chrome, so the site's JavaScript runs. Many pages look empty until it does.
Browser Run: rendered HTML, screenshot, Markdown, and accessibility tree.
`;var e=document.getElementById(`lx-browser-run`);e&&e.addEventListener(`click`,Fe)}}function Pe(){if(!(x||D||!b)&&(C===`both`||C===`browser`)){try{if(matchMedia(`(hover: none)`).matches||matchMedia(`(pointer: coarse)`).matches)return}catch{}Fe()}}function Fe(e){if(D||!b)return;t(e)===null&&(e=``),D=!0;var n=b.finalUrl||b.url,r=()=>!b||(b.finalUrl||b.url)!==n;function i(){window.LensBrowser?window.LensBrowser.run(l,b,t=>{r()||(D=!1,e?S=t:x=t,G(),Z())},e=>!r()&&(D=!1,!0),Fe,e):(D=!1,G())}if(window.LensBrowser)i();else{var a=document.createElement(`script`);a.src=`/a/lens-browser.1eb8d350.js`,a.onload=i,a.onerror=()=>{D=!1,G()},document.head.appendChild(a)}}function Ie(e,t){Ae(!1),ke(`Reader`,t?`embedding blocked, so here is the readable text while a snapshot is fetched`:`embedding blocked, no snapshot, so here is the readable text`);var n=b.anatomy,r=``;if(t?r=`
`+B(t)+`…
`:e&&(r=`
`+B(String(e).replace(/\.\s*$/,``))+`. Showing the readable text instead.
`}function ze(){var e=b.anatomy||{},t=b.structured||{},n=b.agent||{},r=n.strategy||{},i=b.discovery||{},a=b.terms||{},o=t.jsonld?t.jsonld.length:0,s=t.microdata&&t.microdata.itemtypes?t.microdata.itemtypes.length:0,c=t.rdfa&&t.rdfa.typeof?t.rdfa.typeof.length:0,l=t.microformats?t.microformats.length:0,u=[];(t.jsonld||[]).forEach(e=>{(e.types||[]).forEach(e=>{u.indexOf(e)<0&&u.push(e)})});var d,f,p,m,h=``;if(w===`readiness`){var g=b.readiness||{},_=g.field||{},v=g.nextActions&&g.nextActions[0];d=`Field evidence focus`,f={text:_.overall==null?`unknown`:_.overall+`/100`,kind:_.overall>=75?`ok`:`warn`},p=`This is what Lens observed itself; external standards and Readability recovery join it only in Agent-ready?.`,m={"identified fetch":b.status==null?`unknown`:b.status,"bot samples":g.botViews?g.botViews.length:0,"machine door":b.agent&&b.agent.strategy?b.agent.strategy.verdict:`unknown`,"next standards gap":v?Ye(v).label:`none observed`}}else if(w===`anatomy`){var y=e.imgTotal?e.imgTotal-e.imgNoAlt+` / `+e.imgTotal+` images have alt`:`no images found`;d=`Anatomy focus`,f={text:b.status+` `+Dt(b.status),kind:b.status>=200&&b.status<400?`ok`:`warn`},p=`Can a machine get a usable reading surface before it knows what the page means?`,m={response:(b.contentType||`(none)`)+` · `+H(e.rawBytes),shape:(e.headings?e.headings.length:0)+` headings · `+(e.wordCount||0)+` words`,accessibility:y,headers:Object.keys(b.headers||{}).length+` received`}}else if(w===`reader`){var x=j,S=x&&x.ok&&x.dropped?x.dropped.pct:null;d=`Reader focus`,f={text:x==null?`not run`:x.ok?S==null?`n/a`:S+`% dropped`:`failed`,kind:x==null?``:x.ok?S>=50?`warn`:`ok`:`warn`},p=`How much of this page survives a reader-mode extractor, and how much of what survives is not prose.`,m=x&&x.ok?{"as served":(x.source?x.source.words:`?`)+` words`,"extractor kept":(x.kept?x.kept.words:`?`)+` words`,"control labels kept":x.controls?x.controls.kept+` of `+x.controls.total:`not counted`,extractor:x.extractor?x.extractor.name+` `+x.extractor.version:`readability`}:{status:x==null?`not run — this lens costs a second fetch`:`extraction failed`,"what it is":`a third-party extractor's opinion, not the served bytes`,engine:`readability (Apache-2.0), in its own Worker`}}else if(w===`wire`){var C=N,T=C&&C.ok?C.thirdParty.bytesPct:null;d=`Wire focus`,f={text:C==null?`not run`:C.ok?T+`% third-party`:`failed`,kind:C==null?``:C.ok?T>=60?`warn`:T>=30?``:`ok`:`warn`},p=`What loading this page actually spends, and how much of it goes to somebody who wrote none of it.`,m=C&&C.ok?{requests:C.requests+` to `+C.hostTotal+` host`+(C.hostTotal===1?``:`s`),transferred:H(C.bytes),"third-party":C.thirdParty.requests+` requests · `+H(C.thirdParty.bytes),load:C.loadFired?C.navMs+` ms`:`load event never fired`}:{status:C==null?`not run — this lens costs a whole browser instance`:`the trace failed`,"what it is":`one cold load recorded over CDP, as a declared bot`,"why it is opt-in":`ten browser-minutes a day, shared with every other browser lens`}}else if(w===`structured`)d=`Structured focus`,f={text:o||s||c||l?`signals found`:`mostly untyped`,kind:o||s||c||l?`ok`:`off`},p=`What entities and relationships can be lifted from the markup without guessing?`,m={title:t.title||`(untitled)`,schema:o+` JSON-LD · `+s+` microdata · `+c+` RDFa`,microformats:l+` class signal`+(l===1?``:`s`),preview:ue(t.og)?`Open Graph card present`:`no Open Graph card`},u.length&&(h=Le(u.slice(0,18)));else if(w===`ai`){var E=n.mdNegotiation&&n.mdNegotiation.supported?`negotiated text/markdown`:`HTML only`,D=(b.cost&&b.cost.tiers||[]).filter(e=>e.key===`markdown`)[0],O=b.ai&&b.ai.directives||{};d=`AI view focus`,f={text:D?`~`+U(D.tokens)+` tok`:E,kind:D?`ok`:`warn`},p=`What a model can ingest, how much context it costs, and whether the site offers a cleaner representation.`,m={representation:E+` · `+H((b.ai&&b.ai.markdown||``).length),directives:O.metaRobots||O.xRobotsTag||O.namesAiCrawlers?`crawler signals published`:`no AI-specific signal`,curation:b.ai&&b.ai.llmsTxtPresent?`llms.txt present`:`no llms.txt`,"cheapest shortcut":D?`markdown is the selected compact read`:`none observed`}}else if(w===`terms`){var k=a.spectrum&&a.spectrum.tier||`unknown`,A=(a.scoreboard||[]).filter(e=>e.verdict===`block`).length,ee=a.enforcement&&(a.enforcement.challenged?`bot challenge`:a.enforcement.blocked?`fetch refused`:`fetch passed`);d=`Terms focus`,f={text:k,kind:k===`open`?`ok`:`warn`},p=`Is reading open, merely requested, actively enforced, or priced? Published policy and observed behavior stay separate.`,m={spectrum:k,robots:a.robotsUnknown?`unknown / unreachable`:a.robotsPresent?A+` of `+(a.scoreboard||[]).length+` bots blocked`:`no robots.txt`,enforcement:ee||`not observed`,price:a.paid&&a.paid.http402?`402 Payment Required`:`no payment signal`}}else{var te=[n.mcp,n.nlweb,n.webmcp,n.agentCard,n.openapi,n.apiCatalog].filter(e=>e&&(e.verdict===`yes`||e.verdict===`likely`||e.verdict===`maybe`||e.present||e.found)).length,M=(i.llmsTxt&&i.llmsTxt.ok?1:0)+(i.sitemapXml&&i.sitemapXml.ok?1:0);d=`Discovery focus`,f={text:r.verdict||`unknown`,kind:r.verdict===`agent-native`?`ok`:r.verdict===`agent-readable`?``:`warn`},p=`What can an agent discover before it has to drive the human page?`,m={strategy:r.note||r.verdict||`unknown`,"site maps":M+` of 2 found · llms.txt / sitemap.xml`,"agent doors":te+` declared or probable`,feeds:(i.feeds||[]).length+` advertised`}}return`
`+K(d,f,p,q(m)+h)+`
`}function Be(){var e=b.anatomy||{},t=b.structured||{},n=b.discovery||{},r=b.agent||{},i=r.strategy||{},a=b.cost&&b.cost.tiers&&b.cost.tiers[0],o=b.cost&&b.cost.rates&&b.cost.rates[0]||{usdPerMtok:3},s=[];function c(e,t){s.push({kind:e,text:t})}var l=a?` (~`+U(a.tokens)+` tok, `+W(a.tokens/1e6*o.usdPerMtok)+` at `+(o.model||`Sonnet`)+` rates)`:``;c(`ok`,`GET `+(b.finalUrl||b.url)+` as an agent → `+b.status+` `+B(Dt(b.status))+`, `+(b.contentType||`?`)+`, `+H(e.rawBytes)+l+`.`);var u=r.mdNegotiation;u&&u.supported?c(`ok`,`Asked for text/markdown → the site served a clean machine copy. No HTML tax.`):c(`warn`,`Asked for text/markdown → still HTML. Paying the token tax to read markup meant for a browser.`);var d=(t.jsonld||[]).length;if(d){var f=[];(t.jsonld||[]).forEach(e=>{(e.types||[]).forEach(e=>{f.indexOf(e)<0&&f.push(e)})}),c(`ok`,`Parsed structured data → `+d+` JSON-LD block`+(d===1?``:`s`)+(f.length?` (`+f.slice(0,4).join(`, `)+`)`:``)+`. Entities without guessing.`)}else c(`warn`,`Looked for a typed entity graph → none. Any structure must be inferred from the prose.`);var p=i.action&&i.action.length;p?c(`ok`,`Probed for an action surface → `+i.action.join(`, `)+`. It can call, not just read.`):c(`warn`,`Probed for a callable contract (MCP, OpenAPI, agent-card)`+(n.agentsMd&&n.agentsMd.present?` (an AGENTS.md exists, but that's instructions, not a callable endpoint)`:``)+` → none. To do anything it must drive the human page and guess at side effects.`);var m=n.oauthProtectedResource&&n.oauthProtectedResource.ok||n.oauthDiscovery&&(n.oauthDiscovery.openidConfiguration&&n.oauthDiscovery.openidConfiguration.ok||n.oauthDiscovery.oauthAuthorizationServer&&n.oauthDiscovery.oauthAuthorizationServer.ok),h=!m&&b.readiness&&b.readiness.keyless;m?c(`ok`,`Checked for a delegated-authority boundary → OAuth discovery present. A user could grant scoped access.`):h?c(`ok`,`Checked for a consent boundary → not applicable: `+h+`, so there is no credential to delegate.`):c(`warn`,`Checked for a consent boundary → none. No scoped, revocable way to act on a user's behalf.`);var g,_;p&&m?(g=`ACT: this site was built for agents. A task with side effects can run against a real contract.`,_=`ok`):p&&h?(g=`ACT: this site was built for agents. Its contract needs no credential, so an agent calls it as itself.`,_=`ok`):p?(g=`ACT (unsafe): an action surface exists, but with no consent boundary an agent acts without scoped permission.`,_=`warn`):(g=`BLOCKED: a task needing action can't complete. An agent can read this page, but not do anything here without a human driving a browser.`,_=`no`),c(_,`task verdict → `+g);var v=s.map(e=>{var t=e.kind===`ok`?`✓`:e.kind===`no`?`✗`:`•`;return`
`+t+``+V(B(e.text).replace(/×/g,`×`))+`
`}).join(``);return K(`Agent trace`,{text:`what an agent would do`,kind:_===`no`?`warn`:_},`One agent's attempt at a task on this URL, narrated only from evidence Lens already gathered. No model was called.`,`
Machine briefing. This is a reconstruction from the response and the probes Lens actually ran. It describes available evidence; it does not claim that a site has agreed to a new interface.
`;m+=K(`Observed document`,{text:`observed`,kind:`ok`},`The minimum contract a machine can recover from this response.`,q(p)),m+=K(`Machine affordances`,{text:i.verdict||`unknown`,kind:i.verdict===`agent-native`?`ok`:i.verdict===`agent-readable`?``:`warn`},`A readable page, a declared action surface, and permission are separate signals.`,Re([[`read`,(b.contentType||`response`)+`, `+H(e.rawBytes),`observed`,`ok`],[`structure`,o+` JSON-LD, `+s+` microdata, `+c+` RDFa type(s)`,o||s||c?`found`:`absent`,o||s||c?`ok`:`off`],[`discover`,(n.llmsTxt&&n.llmsTxt.ok?`llms.txt`:``)+(n.sitemapXml&&n.sitemapXml.ok?` + sitemap`:``)||`site files not found`,n.llmsTxt&&n.llmsTxt.ok||n.sitemapXml&&n.sitemapXml.ok?`found`:`absent`,n.llmsTxt&&n.llmsTxt.ok||n.sitemapXml&&n.sitemapXml.ok?`ok`:`off`],[`action`,i.action&&i.action.length?i.action.join(`, `):`no declared action surface`,i.action&&i.action.length?`found`:`absent`,i.action&&i.action.length?`ok`:`off`],[`policy`,d+`; spectrum: `+f,d===`robots.txt answered`?`observed`:`unknown`,d===`robots.txt answered`?``:`warn`],[`markdown`,r.mdNegotiation&&r.mdNegotiation.supported?`same URL serves text/markdown`:`HTML response stays HTML`,r.mdNegotiation&&r.mdNegotiation.supported?`supported`:`absent`,r.mdNegotiation&&r.mdNegotiation.supported?`ok`:`off`]]));var h=`# observed
+url `+b.finalUrl+`
+title `+u+`
+response `+b.status+` `+Dt(b.status)+`
+read `+(b.contentType||`unknown`)+` · `+H(e.rawBytes)+`
+structure `+o+` JSON-LD · `+s+` microdata · `+c+` RDFa
+action `+(i.action&&i.action.length?i.action.join(`, `):`none observed`)+`
+
+# boundaries
+identity `+(b.fetchedBy||`identified fetch`)+`
+policy `+d+` · `+f+`
+sidefx Lens inspected; it submitted no forms or tools`;return m+=K(`Copyable machine brief`,{text:`plain text`},`The compact representation an agent could carry forward without the browser chrome.`,J(h,!0)),m+=K(`Boundaries`,{text:`explicit`,kind:`warn`},`These limits keep the reconstruction honest.`,`
Lens fetched as `+B(b.fetchedBy||`an identified bot`)+`; no other bot identity was tested.
Robots policy describes a request; the enforcement result appears separately in the Terms lens.
Reading a page does not grant permission to act on a user's behalf.
`),m}var He={markdown:{checks:[`markdownNegotiation`]},contract:{checks:[`apiCatalog`]},authority:{checks:[`oauthProtectedResource`,`oauthDiscovery`,`authMd`]}};function Ue(e,t){var n=He[e];return t||={},!!(n&&n.checks.some(e=>t[e]&&t[e].status===`pass`))}function We(e,t){var n=He[e];return t||={},!!(n&&n.checks.every(e=>t[e]&&t[e].notApplicable))}function Ge(e,t){var n=He[e];return t||={},!!(n&&!Ue(e,t)&&n.checks.some(e=>t[e]&&t[e].status===`unknown`))}function Ke(){var e=b.structured||{},t=b.discovery||{},n=(b.agent||{}).strategy||{},r=b.readiness&&b.readiness.checks||{},i=e.jsonld&&e.jsonld.length>0||e.microdata&&e.microdata.itemtypes&&e.microdata.itemtypes.length||e.rdfa&&e.rdfa.typeof&&e.rdfa.typeof.length,a=n.action&&n.action.length>0,o=b.anatomy||{},s=Number.isFinite(o.wordCount)?o.wordCount:null,c=b.status>=200&&b.status<400&&!b.bodyUnreadable,l=[{key:`markdown`,label:`Clean machine text`,stage:`Read`,observed:!!(c&&s>=40),signal:Ue(`markdown`,r),detail:`Serve a deliberate text/markdown representation from the same URL.`},{key:`semantic`,label:`Entity schema`,stage:`Understand`,observed:!!i,detail:`Publish stable entities and properties a parser can validate.`},{key:`contract`,label:`Action contract`,stage:`Act`,observed:Ue(`contract`,r),unknown:Ge(`contract`,r),detail:`Describe callable operations, their parameters, and side effects. In 2026 this contract is landing as MCP servers and agent CLIs, not the OpenAPI files that mostly never shipped.`},{key:`authority`,label:`Delegated authority`,stage:`Authorize`,observed:Ue(`authority`,r),na:We(`authority`,r),unknown:Ge(`authority`,r),detail:`Add a consent boundary with scopes and an explicit user approval.`},{key:`receipt`,label:`A result receipt`,stage:`Confirm`,observed:!1,detail:`Return a durable result with origin, time, and provenance. No probe measures this surface yet, so it is always shown as a projection, never as observed.`}],u=`
`+l.map(e=>{var t=!!T[e.key];return`
`+B(e.label)+`
`+B(e.detail)+`
`}).join(``)+`
`,d=!0,f=null,p=null,m=l.map(e=>{var t=e.signal==null?e.observed:e.signal,n=e.observed||!!e.na||!!T[e.key],r,i;return d?e.observed?(r={text:`observed`,kind:`ok`},i=e.key===`markdown`?s+` words reached an identified bot.`+(t?` The same URL also answers text/markdown.`:` There is no deliberate machine text; the switch adds one.`):`published signal found`):e.na?(r={text:`not applicable`,kind:`ok`},i=`The site declares every operation keyless, so there is no authority to delegate.`):T[e.key]?(r={text:`counterfactual`,kind:`warn`},i=e.detail):e.unknown?(r={text:`unknown`,kind:`warn`},i=`The probe for this surface did not answer, so Lens cannot say whether it is published.`):(r={text:`missing`,kind:`off`},i=e.key===`markdown`?c?s===null?`The response body was never parsed.`:`Only `+s+` words survived the fetch.`:`The identified fetch returned no readable response.`:`no matching surface observed`):(r={text:`unreached`,kind:`off`},i=t?`This surface is published. Nothing upstream carries a machine to it.`:`Nothing upstream carries a machine this far.`),d&&(n?f=e.stage:(d=!1,p=e.stage)),`
`+B(e.stage)+`
`+Y(r.text,r.kind)+B(i)+`
`}).join(``),h=`
Counterfactual lab. Turn on one piece of web infrastructure and watch the route change. The stages compound: a machine that cannot read this page never gets as far as understanding it, so the route stops where the chain breaks. Green means Lens observed a signal. Amber means this page is simulating the addition locally, or that a probe never answered.
`,g=`
Current evidence: `+B((t.llmsTxt&&t.llmsTxt.ok?`llms.txt is present. `:t.llmsTxt&&t.llmsTxt.error?`The llms.txt probe did not answer. `:`No llms.txt observed. `)+(a?`An action surface answered. `:`No action surface answered. `)+(i?`Structured data exists.`:`Structured entity data is absent.`))+`
`,_=l.filter(e=>T[e.key]).map(e=>`+ `+e.stage.toLowerCase()+` · `+e.label).join(`
+`),v=b.wire||{},y=v.dictionary||{},x=v.ech||{},S=[{key:`dictionary`,label:`Shared compression dictionary`,observed:!!y.observed,state:y.observed?{text:`advertised`,kind:`ok`}:T.dictionary?{text:`counterfactual`,kind:`warn`}:{text:`not offered`,kind:`off`},detail:`Advertise a compression dictionary so a returning agent fetches a small delta against the copy it already holds, in place of the whole page. The trade: Available-Dictionary names the exact copy a client holds, so the origin (or a CDN managing dictionaries for it) learns cache state as the price of the byte win.`},{key:`ech`,label:`Encrypted Client Hello`,observed:!!x.observed,state:x.observed?{text:`configured`,kind:`ok`}:x.recordPresent&&!x.parsed?{text:`record unread`,kind:`warn`}:T.ech?{text:`counterfactual`,kind:`warn`}:{text:`not configured`,kind:`off`},detail:`Encrypt the TLS handshake server name so an on-path observer cannot see which site the fetch is for.`}],C=`
`+S.map(e=>{var t=!!T[e.key];return`
`+B(e.label)+` `+Y(e.state.text,e.state.kind)+`
`+B(e.detail)+`
`}).join(``)+`
`,w=`
On the wire: `+B((y.observed?`This site advertises a compression dictionary, so a returning fetch can be a delta against the copy the client already holds. `:`This site ships full responses, so a returning fetch re-transfers the whole page. `)+(x.observed?`ECH is configured in DNS, so the handshake hides which site the fetch is for.`:x.recordPresent?`An HTTPS record is published but carries no ECH, so the destination name travels in the clear.`:`No ECH in DNS, so the destination name travels in the clear.`))+`
`,E=`A dictionary was worth 87-97% fewer bytes on the aadhar.sh shell (measured 2026-07); the token win follows for an agent that re-reads only the delta. ECH changes what a network observer learns, leaving the byte count alone.`,D=[_,S.filter(e=>!!T[e.key]).map(e=>`+ wire · `+e.label).join(`
+`)].filter(Boolean).join(`
+`),O=`reaches `+(f?f.toLowerCase():`nothing`)+(p?`, stops at `+p.toLowerCase():`, complete`);return h+K(`Infrastructure switches`,null,`Each switch adds one piece of infrastructure at one stage. A later stage becomes reachable only once every stage above it holds.`,u)+K(`The route`,{text:`no score`},`A task path is more useful here than a readiness number. Each stage depends on the one above it, so the route stops at the first stage nothing satisfies.`,`
`+m+`
`+g)+K(`The wire`,{text:`transport`},`Two knobs under the same task path: what the wire carries, and what it hides. Folks rarely turn either on.`,C+w+`
`+B(E)+`
`)+K(`What this proves`,{text:`local simulation`,kind:`warn`},`Counterfactuals clarify a missing contract; they do not create a real endpoint on the scanned site.`,J(`# route
+`+O+`
+
+# delta
+`+(D||`(no switches on)`),!0))+`
`}function qe(){[].forEach.call(o.querySelectorAll(`.lx-cf-toggle`),e=>{e.addEventListener(`click`,()=>{var t=e.getAttribute(`data-cf`);Object.prototype.hasOwnProperty.call(T,t)&&(T[t]=!T[t],_e(!0),X())})})}var Je={robotsTxt:`Publish a valid /robots.txt with explicit User-agent rules and a Sitemap directive.`,sitemap:`Publish /sitemap.xml and reference it from robots.txt.`,linkHeaders:`Add RFC 8288 Link relations for your sitemap, docs, API catalog, or alternate machine representation.`,dnsAid:`Publish a DNSSEC-signed _index._agents. SVCB/HTTPS record for machine discovery.`,markdownNegotiation:`Return text/markdown when a client sends Accept: text/markdown, while keeping HTML for browsers.`,robotsTxtAiRules:`Declare explicit GPTBot, ClaudeBot, CCBot, and other AI crawler rules in robots.txt.`,contentSignals:`Add Content-Signal directives for ai-train, ai-input, and search to robots.txt.`,webBotAuth:`Publish a valid JWKS at /.well-known/http-message-signatures-directory.`,apiCatalog:`Publish /.well-known/api-catalog as application/linkset+json with service-desc and service-doc links.`,oauthDiscovery:`Publish OAuth/OIDC discovery metadata with issuer and token endpoints.`,oauthProtectedResource:`Publish /.well-known/oauth-protected-resource with authorization_servers and scopes_supported.`,authMd:`Publish /auth.md with agent registration instructions and link it to your OAuth metadata.`,mcpServerCard:`Publish /.well-known/mcp/server-card.json with serverInfo, transport, and capabilities.`,a2aAgentCard:`Publish /.well-known/agent-card.json describing the agent's interfaces, capabilities, and skills.`,agentSkills:`Publish /.well-known/agent-skills/index.json with skills, URLs, and digests.`,webMcp:`Expose safe browser actions with document.modelContext and JSON Schemas.`,x402:`Return a machine-readable HTTP 402 payment requirement for payable routes.`,mpp:`Describe payable OpenAPI operations with x-payment-info and MPP settlement metadata.`,ucp:`Publish /.well-known/ucp with protocol version, services, capabilities, and endpoints.`,acp:`Publish /.well-known/acp.json so agents can discover commerce services and transports.`,ap2:`Publish the AP2 discovery metadata when your commerce flow supports it.`};function Ye(e){var n=t(e)===null?e&&e.key:e;return{label:e&&e.label||n||`check`,fix:Je[n]||`Inspect this surface and publish the expected machine-readable contract.`}}function Xe(e){return e.status===`pass`?{text:`pass`,kind:`ok`}:e.notApplicable?{text:`n/a`,kind:`off`}:e.status===`neutral`?{text:`optional`,kind:`off`}:e.status===`unknown`?{text:`unknown`,kind:`warn`}:{text:`fix`,kind:`warn`}}function Ze(e){return(b.terms&&b.terms.scoreboard||[]).filter(t=>t.ua===e.key)[0]||null}function Qe(e){return e.error?{text:`unknown`,kind:`warn`}:e.challenge?{text:e.wall&&e.wall.p!=null?`wall (Clef `+e.wall.p.toFixed(2)+`)`:`challenge`,kind:`warn`}:e.blocked?{text:(e.status||`blocked`)+` blocked`,kind:`warn`}:e.status>=200&&e.status<400?{text:e.status+` `+(e.contentType||`readable`),kind:`ok`}:{text:e.status||`unknown`,kind:`warn`}}function $e(e){var t=e.checks||{},n=[{key:`markdown`,label:`Clean machine text`},{key:`contract`,label:`Action contract`},{key:`authority`,label:`Delegated authority`}].filter(e=>T[e.key]&&!Ue(e.key,t)&&!We(e.key,t));if(!n.length)return null;var r=e.passed,i=e.counted;return n.forEach(e=>{var n=t[He[e.key].checks[0]];n&&n.countInScore&&r++}),{score:i?Math.round(r/i*100):e.overall,labels:n.map(e=>e.label)}}function et(e,t){var n=()=>{if(t){var e=t.textContent;t.textContent=`Copied`,setTimeout(()=>{t.textContent=e},1400)}};if(navigator.clipboard&&navigator.clipboard.writeText)navigator.clipboard.writeText(e).then(n).catch(()=>{});else{var r=document.createElement(`textarea`);r.value=e,r.style.position=`fixed`,r.style.opacity=`0`,document.body.appendChild(r),r.select();try{document.execCommand(`copy`),n()}catch{}r.remove()}}function tt(){[].forEach.call(o.querySelectorAll(`.lx-copy-fix`),e=>{e.addEventListener(`click`,()=>{et(e.getAttribute(`data-fix`)||``,e)})});var e=o.querySelector(`.lx-copy-all`);e&&e.addEventListener(`click`,()=>{var t=[].map.call(o.querySelectorAll(`.lx-readiness-check[data-status='fail']`),e=>`- `+e.getAttribute(`data-label`)+`: `+e.getAttribute(`data-fix`));et(`Lens readiness fixes for `+(b.finalUrl||b.url)+`
+
+`+t.join(`
+`),e)})}function nt(e,t,n,r,i,a){return`
0`+e+``+t+``+n+`
`+r+`
`+(i&&i.length?`
`+i.map(e=>`
`+e+`
`).join(``)+`
`:``)+`
`}function rt(e){var t=e.field||{},n=Number.isFinite(t.overall)?t.overall:null,r=R&&R.available&&Number.isFinite(R.score)?R.score:null,i=j&&j.ok&&j.recovery,a=i&&Number.isFinite(i.overall)?i.overall:null,o=r!=null&&n!=null&&a!=null,s=o?Math.round((r+n+a)/3):null,c=z?`checking…`:r==null?`—`:B(r)+`/100`,l=z?`Asking Cloudflare's public scanner for its independent standards level.`:r==null?B(R&&R.error||`Cloudflare's independent score is unavailable.`):`Cloudflare Agent Readiness · Level `+B(R.level)+`/5`+(R.levelName?` · `+B(R.levelName):``),u=(t.components||[]).map(e=>``+B(e.label)+`: `+(Number.isFinite(e.score)?B(e.score)+`/100`:`unknown`)),d=i?(i.checks||[]).map(e=>(e.pass?`✓ `:`✕ `)+B(e.label)):[],f=`
`+nt(1,`Cloudflare standards`,c,l,[],z?`is-waiting`:r==null?`is-missing`:`is-ready`)+nt(2,`Lens field evidence`,n==null?`—`:B(n)+`/100`,`Observed here: an identified fetch, six named bot samples, a usable body, and a machine door.`,u,n==null?`is-missing`:`is-ready`)+nt(3,`Readability content recovery`,M?`extracting…`:a==null?`—`:B(a)+`/100`,M?`Readability is re-reading the page in the separate Reader Worker.`:a==null?B(j&&j.error||`The extraction result is unavailable.`):`Lens’s transparent checks over Readability output; Readability does not publish this score.`,d,M?`is-waiting`:a==null?`is-missing`:`is-ready`)+`
`+(e.overall==null?`—`:B(e.overall))+`/100need-weighted, after `+B(e.source.name)+` (checked `+B(e.source.checked)+`)
`;return K(`What this site needs`,{text:e.surfaces.filter(e=>e.applies).length+` surfaces`},e.scoringNote,u+o+s+n(r.checks.concat(i.checks)))+K(`Past need`,{text:c.length+` items`},`Doors this site lacks and has no reason to build, and doors it built that buy little. Build each one for a reader you can name.`,l)}function at(){var e=b.readiness;if(!e)return`
Readiness checks were unavailable for this origin.
No control identity got a readable response, so every row below reports this origin refusing us rather than refusing a crawler by name. Read them as unmeasured.
`:``)+`
identity
robots policy
sampled GET
what this enables
`+s.map(e=>{var t=e.role===`control`,n=t?null:Ze(e),r=Qe(e),i=t?e.blocked?`Control refused. This origin turns away more than crawlers.`:`Control admitted. A refusal below is about the name it was given.`:e.blocked?`This identity may not retrieve the route.`:n&&n.verdict===`block`?`Robots asks it not to read; the sampled response is not enforcement.`:e.status>=200&&e.status<400?`It can retrieve this response; parsing and action are separate.`:`Access is uncertain from this sample.`;return`
`,d=[],f=e.checks||{};f.markdownNegotiation&&f.markdownNegotiation.status!==`pass`&&d.push(`Agents pay the HTML/token tax because this URL does not negotiate a clean machine representation.`),b.structured&&!(b.structured.jsonld||[]).length&&f.apiCatalog&&f.apiCatalog.status!==`pass`&&d.push(`A machine can read the page, but it has no stable entity graph or declared action catalog to validate.`),b.agent&&b.agent.strategy&&!b.agent.strategy.action.length&&d.push(`Reading is possible; acting is not declared. An agent must drive the human page and guess at side effects.`),d.length||d.push(`The main access surfaces are published. Inspect the individual checks for the remaining edge cases and bot-specific policy.`);var p=`
Local standards projection: `+B(r.score+`/100 if you add `+r.labels.join(`, `)+`.`)+` illustrative; the origin has not changed.
`),i+it(e.need)+K(`Local standards mirror`,null,`The detailed checklist mirrors Cloudflare's public rubric for inspection and fixes. It is not counted again in the composite.`,_)+K(`The access gap`,{text:`human vs bot`},`A browser can render a page even when an agent cannot establish what it may read or do.`,p)+K(`Bot views`,{text:s.length+` sampled`},`Read-only GETs, one per identity, reporting what each one is served. The control rows are a browser and curl: a crawler 403 is not user-agent policy until a control proves the door opens at all. Robots policy and enforcement stay deliberately separate.`,u)+K(`Checks and fixes`,null,`Every failed check has a concrete next move. Copy the complete implementation brief into your coding agent.`,``+h+o)}function X(){if(u.innerHTML=C===`delta`?`Delta view · What changes`:`Machine view`,Ot(),s&&(s.innerHTML=b&&C===`machine`?de()+Be()+Ve():``),b){var e=Object.create(null);e.readiness=at,e.anatomy=yt,e.reader=ot,e.wire=ct,e.structured=bt,e.ai=St,e.terms=Ct,e.discovery=Tt,e.tools=dt,e.nlweb=pt,e.markdown=ht;var t=Object.prototype.hasOwnProperty.call(e,w)?e[w]:null,n=typeof t==`function`?t:yt,r=C===`machine`?ze()+n():C===`delta`?Ke():n();C!==`delta`&&C!==`machine`&&(r=de()+r),o.innerHTML=r,c&&(c.scrollTop=0),C===`delta`&&qe(),w===`readiness`&&tt();var i=o.querySelector(`#lx-reader-run`);i&&i.addEventListener(`click`,st);var a=o.querySelector(`#lx-wire-run`);a&&a.addEventListener(`click`,lt);var l=o.querySelector(`#lx-tools-run`);l&&l.addEventListener(`click`,ft);var d=o.querySelector(`#lx-nlweb-run`);d&&d.addEventListener(`click`,mt);var f=o.querySelector(`#lx-md-run`);f&&f.addEventListener(`click`,gt),w===`tools`&&window.LensTools&&window.LensTools.bind(o,ne,X),w===`nlweb`&&window.LensNlweb&&window.LensNlweb.bind(o),w===`markdown`&&window.LensMarkdown&&window.LensMarkdown.bind(o);var p=o.querySelector(`.lx-verdict-score`)||s&&s.querySelector(`.lx-verdict-score`);p&&p.addEventListener(`click`,()=>{jt(`readiness`)}),w===`readiness`&&C!==`delta`&&setTimeout(vt,0)}}function ot(){return window.LensReader?window.LensReader.mount(j,M,b):K(`Reader's guess`,{text:`not run`},`A third-party extractor's opinion of this page, from its own Worker.`,`
Readability (Apache-2.0, mozilla/readability) guesses which part of the document is the article and throws the rest away. The Raw response tab is what the server actually sent. The interesting number is the gap.
`)}function st(){if(M||!b)return;var e=b.finalUrl||b.url;M=!0,X();function t(){b&&(b.finalUrl||b.url)===e&&(window.LensReader?window.LensReader.run(b,t=>{b&&(b.finalUrl||b.url)===e&&(M=!1,j=t,X(),Z())},()=>{b&&(b.finalUrl||b.url)===e&&(M=!1,X())}):(M=!1,X()))}if(window.LensReader)t();else{var n=document.createElement(`script`);n.src=`/a/lens-reader.7566e60b.js`,n.onload=t,n.onerror=()=>{b&&(b.finalUrl||b.url)===e&&(M=!1,X())},document.head.appendChild(n)}}function ct(){return window.LensWire?window.LensWire.mount(N,P,b):K(`What it costs`,{text:`not run`},`Every request the page actually makes, and who receives them.`,`
Every other lens reads the document. This one records the load: each request the page fires, its bytes on the wire, and which host got it.
`)}function lt(){if(P||!b)return;var e=b.finalUrl||b.url;P=!0,X();function t(){b&&(b.finalUrl||b.url)===e&&(window.LensWire?window.LensWire.run(b,t=>{b&&(b.finalUrl||b.url)===e&&(P=!1,N=t,X(),Z())},()=>{b&&(b.finalUrl||b.url)===e&&(P=!1,X())}):(P=!1,X()))}if(window.LensWire)t();else{var n=document.createElement(`script`);n.src=`/a/lens-wire.03ea55c5.js`,n.onload=t,n.onerror=()=>{b&&(b.finalUrl||b.url)===e&&(P=!1,X())},document.head.appendChild(n)}}function ut(){var e=N&&N.webmcp,t=`Tools the PAGE registers`;if(!N)return K(t,{text:`not read`},`Browser-local tools only exist once the page has run.`,`
A site can hand an agent tools that live in the document rather than on the server. Reading them means rendering the page, so this fills in when you run What it costs.
`);if(e&&e.supported===!1)return K(t,{text:`unmeasurable`},`The rendering engine has no WebMCP, so no catalogue could be read.`,`
This says nothing about whether the site registers tools. The render happened in `+B(e.engine||`an engine that does not implement it`)+`, which has no document.modelContext to ask.
`);if(!e||e.present===null)return K(t,{text:`unreadable`},`The render happened; the catalogue could not be read.`,`
`+(e&&e.error?B(e.error):`The probe did not return a catalogue.`)+` This says nothing about whether the site has tools.
`);if(!e.present)return K(t,{text:`none`},`The page ran and registered no browser-local tools.`,`
Its agent surface, if any, is whatever the server publishes above.
`);var n=`
`+e.count+` tool`+(e.count===1?``:`s`)+` registered into document.modelContext · `+(e.read||0)+` read · `+(e.write||0)+` write`+(e.unstated?` · `+e.unstated+` unstated`:``)+(e.truncated?` (list truncated)`:``)+` Chrome keeps only readOnlyHint across registration, so read-versus-write is the whole safety story a page can tell your agent. `+(e.unstated?`An unstated tool has not claimed to be safe; it has said nothing.`:`Every tool here stated one.`)+`
`}).join(``);return K(t,{text:e.count+` live`},`Read from the page itself, in a real browser. Never called.`,n+r)}function dt(){return window.LensTools?window.LensTools.render(F?{pending:!0}:ne)+ut():K(`What it accepts`,{text:`not run`},`Reads this origin's MCP catalogue and draws a form for every tool, from the argument schema the server publishes.`,`
An MCP tool list is an ABI. A block explorer turns one into a form you can fill in, and inputSchema is the same artefact under another name.
`)+ut()}function ft(){if(F||!b)return;var e=b.finalUrl||b.url;F=!0,X();function t(){b&&(b.finalUrl||b.url)===e&&(window.LensTools?window.LensTools.run(e,t=>{b&&(b.finalUrl||b.url)===e&&(F=!1,ne=t,X())},()=>{b&&(b.finalUrl||b.url)===e&&(F=!1,ne={ok:!1,unreadable:!0,error:`the catalogue request did not complete`},X())}):(F=!1,X()))}if(window.LensTools)t();else{var n=document.createElement(`script`);n.src=`/a/lens-tools.a9d33d0a.js`,n.onload=t,n.onerror=()=>{b&&(b.finalUrl||b.url)===e&&(F=!1,X())},document.head.appendChild(n)}}function pt(){return window.LensNlweb?window.LensNlweb.render(I?{pending:!0}:re):K(`What it answers`,{text:`not run`},`Asks this origin's /ask endpoint one real question and grades the answer against NLWeb's result contract.`,`
Agent doors knocks. This walks through. A door that answers 200 can still answer with nothing an agent can use.
`)}function mt(){if(I||!b)return;var e=b.finalUrl||b.url;window.LensNlweb&&window.LensNlweb._question&&(ie=window.LensNlweb._question(o)||ie);var t=ie;I=!0,X();function n(){b&&(b.finalUrl||b.url)===e&&(window.LensNlweb?window.LensNlweb.run(e,t,n=>{b&&(b.finalUrl||b.url)===e&&t===ie&&(I=!1,re=n,X())},()=>{b&&(b.finalUrl||b.url)===e&&t===ie&&(I=!1,re={ok:!1,unreadable:!0,error:`the /ask request did not complete`},X())}):(I=!1,X()))}if(window.LensNlweb)n();else{var r=document.createElement(`script`);r.src=`/a/lens-nlweb.24f5384c.js`,r.onload=n,r.onerror=()=>{b&&(b.finalUrl||b.url)===e&&(I=!1,X())},document.head.appendChild(r)}}function ht(){return window.LensMarkdown?window.LensMarkdown.render(L?{pending:!0}:ae):K(`What agents get`,{text:`not run`},`Replays the Accept header seven named agent clients actually send, and reports what each one got back.`,`
Agent doors knocks. This walks through. An origin can flip its content-type for a bare text/markdown and still hand the client you use HTML.
`)}function gt(){if(L||!b)return;var e=b.finalUrl||b.url;L=!0,X();function t(){b&&(b.finalUrl||b.url)===e&&(window.LensMarkdown?window.LensMarkdown.run(e,t=>{b&&(b.finalUrl||b.url)===e&&(L=!1,ae=t,X())},()=>{b&&(b.finalUrl||b.url)===e&&(L=!1,ae={ok:!1,unreadable:!0,error:`the Markdown check did not complete`},X())}):(L=!1,X()))}if(window.LensMarkdown)t();else{var n=document.createElement(`script`);n.src=`/a/lens-markdown.60325d46.js`,n.onload=t,n.onerror=()=>{b&&(b.finalUrl||b.url)===e&&(L=!1,X())},document.head.appendChild(n)}}function _t(){if(!z&&b){var e=b.finalUrl||b.url;z=!0,X(),fetch(`/lens/fetch?mode=cloudflare&url=`+encodeURIComponent(e)).then(e=>e.json()).then(t=>{b&&(b.finalUrl||b.url)===e&&(z=!1,R=t&&t.ok?t:{available:!1,error:t&&t.error||`Cloudflare's scanner is unavailable.`},X())}).catch(()=>{b&&(b.finalUrl||b.url)===e&&(z=!1,R={available:!1,error:`Cloudflare's scanner is unavailable.`},X())})}}function vt(){b&&w===`readiness`&&C!==`delta`&&(!z&&!R&&_t(),!M&&!j&&st())}function yt(){var e=b.anatomy,t=``,n={status:b.status,"content-type":b.contentType||`(none)`,size:H(e?e.rawBytes:0)+(b.truncated?` (capped)`:``),words:e?e.wordCount:0,"img alt coverage":e?e.imgTotal?e.imgTotal-e.imgNoAlt+` / `+e.imgTotal+` have alt text`:`no images`:`?`};if(C===`both`){var r=b.cost&&b.cost.tiers&&b.cost.tiers[0],i=b.cost&&b.cost.rates&&b.cost.rates[0]||{usdPerMtok:3};r&&(n[`model read`]=`~`+U(r.tokens)+` tok · `+W(r.tokens/1e6*i.usdPerMtok)),t+=K(`What the bot received`,{text:b.status+` `+Dt(b.status),kind:b.status>=200&&b.status<400?`ok`:`warn`},`The response before any browser touched it.`,q(n));var a=b.ai&&b.ai.markdown||``;return a?t+=K(`The scraper's diet`,{text:H(a.length)},`The first slice of the markdown a basic LLM scraper ingests.`,J(a.slice(0,1400)+(a.length>1400?`
+
+[… `+H(a.length)+` total]`:``),!0)):e&&e.rawHtml&&(t+=K(`Raw body, first slice`,{text:H(e.rawBytes)},`Served as-is; already machine-shaped.`,J(e.rawHtml.slice(0,1400)+(e.rawBytes>1400?`
+
+[… `+H(e.rawBytes)+` total]`:``),!0))),t+=`
Headers and the full raw source: the Machine segment, same tab, full width.
`,t}return t+=K(`Response`,null,`What the server actually sent back, before a browser touched it.`,q(n)),t+=K(`HTTP headers`,{text:Object.keys(b.headers||{}).length+` headers`},`The envelope metadata: caching, content type, security, crawler hints.`,q(b.headers||{})),e&&e.rawHtml&&(t+=K(`Raw HTML source`,{text:H(e.rawBytes)},`The literal markup. View Source, basically.`,J(e.rawHtml+(e.rawBytes>e.rawHtml.length?`
+
+[... truncated, `+H(e.rawBytes)+` total]`:``)))),t}function bt(){var e=b.structured;if(!e)return`
No HTML to parse for structured data.
`;var t=``,n=[`description`,`keywords`,`robots`,`author`,`generator`,`viewport`,`theme-color`,`application-name`];if(t+=K(`Meta tags`,null,`The original machine-readable layer (1995). description + keywords were the first SEO surface.`,q(e.meta||{},n.concat(Object.keys(e.meta||{}).filter(e=>n.indexOf(e)<0)))),ue(e.og)){var r=`
`,t+=K(`Open Graph`,{text:`og:`,kind:`ok`},`Facebook, 2010. What every link-preview bot reads to build a card.`,r)}else t+=K(`Open Graph`,{text:`absent`,kind:`off`},`Facebook, 2010. What link-preview bots read.`,`
`+B(e.error)+J(e.raw,!0)).join(``);t+=K(`JSON-LD`,{text:e.jsonld.length+` block`+(e.jsonld.length>1?`s`:``),kind:`ok`},`Schema.org as JSON, 2011 onward. The structured data Google reads for rich results, and the cleanest signal for any agent.`,i)}else t+=K(`JSON-LD`,{text:`absent`,kind:`off`},`Schema.org as JSON, 2011 onward. Google's rich-results format.`,`
`),t+=K(`RDFa`,e.rdfa&&e.rdfa.typeof.length?{text:e.rdfa.typeof.length+` types`}:{text:`absent`,kind:`off`},`RDFa, 2008 W3C. The semantic-web vision of embedding RDF triples in any tag.`,e.rdfa&&(e.rdfa.typeof.length||e.rdfa.properties.length)?Le(e.rdfa.typeof)+(e.rdfa.properties.length?``+Le(e.rdfa.properties.slice(0,40)):``):`
none
`),t+=K(`Microformats`,e.microformats&&e.microformats.length?{text:e.microformats.length+` classes`}:{text:`absent`,kind:`off`},`microformats, 2005 IndieWeb. People and posts marked up in plain class names (h-card, h-entry).`,Le(e.microformats)),t}function xt(){var e=b.cost;if(!e||!e.tiers||!e.tiers.length)return``;var t=e.rates&&e.rates[0]||{model:`reference`,usdPerMtok:3},n=e.tiers[0],r=`
`+(o>1?`A naive read pays ×`+o+` what the `+B(a.label)+` costs. The semantic web asked publishers to do this work up front; models just pay the difference on every read. `:``)+`1,000 naive reads of this page ≈ `+s+` of inference; the publisher collects $0.00 (the ledger).
`}var c=(e.rates||[]).slice(1).map(e=>e.model+` $`+e.usdPerMtok).join(`, `);return K(`Context economics`,{text:`~`+U(n.tokens)+` tok`},`What reading this page costs a machine. Priced at `+t.model+` input, $`+t.usdPerMtok+`/Mtok (`+c+` — checked `+(e.checked||``)+`); tokens are `+e.tokenizer+`.`,`
`+r+`
`+i)}function St(){var e=xt(),t=b.ai&&b.ai.directives||{},n={"llms.txt":b.ai&&b.ai.llmsTxtPresent?`present at /llms.txt`:`not found`,"meta robots":t.metaRobots||`(none)`,"X-Robots-Tag":t.xRobotsTag||`(none)`,"robots.txt names AI crawlers":t.namesAiCrawlers?`yes (GPTBot / ClaudeBot / etc.)`:`no`};e+=K(`Crawler & model directives`,null,`Today's frontier: llms.txt (2024) plus the AI-crawler controls sites are bolting onto robots rules.`,q(n));var r=b.ai&&b.ai.markdown?b.ai.markdown:`(no markdown — non-HTML or empty body)`;return e+=K(`Markdown rendering`,{text:H(r.length)},`Best-effort HTML to Markdown, roughly what a basic LLM scraper ingests. The clean signal under the markup.`,J(r,!0)),e}function Ct(){var e=b.terms;if(!e)return`
No terms to read (the origin never answered the probes).
`;var t=``,n=`
`+[{k:`open`,label:`Open`,sub:`no terms set`},{k:`signaled`,label:`Signaled`,sub:`asks, via robots`},{k:`enforced`,label:`Enforced`,sub:`blocks at the edge`},{k:`paid`,label:`Paid`,sub:`charges for access`}].map(t=>`
`+t.label+``+t.sub+`
`).join(``)+`
`,r=`
`+(e.spectrum.reasons||[]).map(e=>`
`+B(e)+`
`).join(``)+`
`;t+=K(`Where this site sits`,{text:e.spectrum.tier,kind:e.spectrum.tier===`open`?`ok`:e.spectrum.tier===`signaled`?``:`warn`},`Open to any bot, gated behind payment, or anywhere in between. The agentic web's actual terms of service.`,n+r);var i={search:`Search engines`,train:`AI training crawlers`,answers:`AI answer engines (live retrieval)`},a=(e.scoreboard||[]).filter(e=>e.verdict===`block`).length,o=`
`,s=t.kind);var n,r;e.robotsUnknown?(n=`unknown`,r=`robots.txt unreachable: `+(e.robotsError||`no answer`)):e.robotsPresent?t.verdict===`block`?(n=`blocked`,r=(t.rule||``)+` (as `+t.matchedUa+`)`):t.matchedUa&&t.matchedUa!==`*`?(n=`allowed`,r=(t.rule||`no matching rule`)+` (named as `+t.matchedUa+`)`):t.matchedUa===`*`?(n=`allowed`,r=(t.rule||`no matching rule`)+` (under *)`):(n=`unmentioned`,r=`no group matches, so allowed by default`):(n=`no robots.txt`,r=`nothing to obey`),o+=`
`+B(t.ua)+`
`+B(t.owner)+` `+B(t.note)+`
`+n+`
`+B(r)+`
`});var c=e.robotsUnknown?{text:`unknown`,kind:`warn`}:e.robotsPresent?a?{text:a+` blocked`,kind:`warn`}:{text:`all allowed`,kind:`ok`}:{text:`no robots.txt`,kind:`off`};t+=K(`The bot scoreboard`,c,`robots.txt evaluated per crawler (RFC 9309 longest-match) for `+e.path+`. This is policy, not enforcement — obeying it is voluntary.`,`
`;t+=K(`Content Signals`,{text:e.signals&&e.signals.length?`declared`:`absent`,kind:e.signals&&e.signals.length?`ok`:`off`},`contentsignals.org, 2025 (Cloudflare). Three consent bits a site can attach to a robots group: search, ai-input (grounding answers), ai-train.`,l);var u=e.paid||{},d=``;u.http402&&(d+=`
This URL answered 402 Payment Required`+(u.x402?` with an x402 envelope — a machine-readable invoice.`:`.`)+`
Our fetch hit a bot challenge (the "verify you are human" wall). The policy above is backed by active enforcement.
`:f.blocked?`
Our identified fetch was refused with HTTP `+f.status+`. Policy here is enforced, at least against bots that announce themselves.
`:`
our identified fetch went through (HTTP `+f.status+`) — no wall between the policy and the content
`;p+=`
Honesty note: this enforcement verdict reports only what happened to AadharshBot's own signed fetch. The Readiness lens does send six representative crawler user-agents for read-only GET sampling (to observe response differences), but Lens never impersonates a bot to defeat a wall, and the scoreboard above reports published policy, not spoofed probes.
`,t+=K(`Enforcement`,{text:f.challenged?`challenge`:f.blocked?`blocked`:`none seen`,kind:f.challenged||f.blocked?`warn`:`off`},`robots.txt is a request. Edges like Cloudflare can make it a wall.`,p);var m=e.tdmrep||{},h,g;if(!m.present)h={text:`absent`,kind:`off`},g=`
not present`+(m.invalid?` (something answered at the path, but `+B(m.invalid)+`)`:``)+`
`;else{var _=m.location?`, by the rule at `+B(m.location):``;if(m.reserved===!1)h={text:`not reserved`,kind:`ok`},g=`
TDM rights not reserved (mining permitted)`+_+`.
`;else if(m.reserved===!0){var v=m.policy&&/^https?:\/\//i.test(m.policy)?`, with a TDM policy`:m.policy?`, with a TDM policy: `+B(m.policy):``;h={text:`reserved`,kind:`warn`},g=`
TDM rights reserved for this path`+_+v+`.
`}else h={text:`unset`,kind:`off`},g=`
A manifest is published, with no rule for this path, so TDM reservation is unset.
`;g+=J(m.body,!0)}return t+=K(`TDM Reservation Protocol`,h,`W3C community spec: the EU text-and-data-mining opt-out, at /.well-known/tdmrep.json.`,g),t}function wt(){var e=b.agent;if(!e)return``;var t=``;function n(e,n,r,i,a){t+=`
`+B(e)+`
`+B(n)+`
`+B(r)+`
`+B(a||``)+`
`}var r=e.mcp||{};n(`/mcp`,`MCP endpoint (2024) — tools for models, at run time`,r.verdict===`yes`?`found`:r.verdict===`likely`?`likely`:r.verdict===`maybe`?`maybe`:r.verdict===`unknown`?`no answer`:`absent`,r.verdict===`yes`||r.verdict===`likely`?`ok`:r.verdict===`maybe`||r.verdict===`unknown`?`warn`:`off`,r.detail);var i=e.nlweb||{};n(`/ask`,`NLWeb (Microsoft, 2025) — the site as a natural-language endpoint`,i.verdict===`likely`?`likely`:i.verdict===`maybe`?`NLWeb-shaped`:i.verdict===`unknown`?`no answer`:`absent`,i.verdict===`likely`?`ok`:i.verdict===`maybe`||i.verdict===`unknown`?`warn`:`off`,i.detail);var a=e.webmcp||{};n(`WebMCP`,`in-page tools for browser agents (Chrome/W3C draft)`,a.found?a.kind===`bridge`?`CDN bridge`:`markers found`:`absent`,a.found?`ok`:`off`,a.kind===`bridge`?`an injected loader proxies this origin's MCP server into the page — `+a.marker:a.marker);var o=e.agentCard||{};n(`.well-known/agent-card.json`,`A2A agent card — who this agent is, what it offers`,o.present?`found`:o.unknown?`no answer`:`absent`,o.present?`ok`:o.unknown?`warn`:`off`,o.detail||o.note);var s=e.mdNegotiation||{};n(`Accept: text/markdown`,`content negotiation — the same URL, re-served for machines`,s.supported?`supported`:s.error?`no answer`:`no`,s.supported?`ok`:s.error?`warn`:`off`,s.supported?`content-type flips to `+s.contentType:s.note||(s.contentType?`stays `+s.contentType:``));var c=e.openapi||{};n(`/openapi.json`,`OpenAPI — the build-time API contract`,c.present?`found`:c.unknown?`no answer`:`absent`,c.present?`ok`:c.unknown?`warn`:`off`,c.detail||c.note);var l=e.apiCatalog||{};n(`.well-known/api-catalog`,`RFC 9264 linkset — a catalog of the site's APIs`,l.present?`found`:l.unknown?`no answer`:`absent`,l.present?`ok`:l.unknown?`warn`:`off`,l.detail||l.note),e.aiPlugin&&e.aiPlugin.present&&n(`.well-known/ai-plugin.json`,`OpenAI plugin manifest (2023, retired) — the fossil record`,`found`,`ok`,e.aiPlugin.detail);var u=e.strategy||{};return K(`Agent doors`,u.verdict===`agent-native`?{text:`agent-native`,kind:`ok`}:u.verdict===`agent-readable`?{text:`agent-readable`,kind:``}:{text:`human-only`,kind:`warn`},`Does this site publish surfaces for agents, or must they drive the human page? The semantic web's open question, asked live.`,`
`)}var r=``;if(e.sitemapXml&&e.sitemapXml.ok){var i=(e.sitemapXml.body.match(//gi)||[]).length,a=/`+i+(a?` child sitemaps`:` URLs`)+` listed.`}t+=n(`robots.txt`,e.robotsTxt,`1994. The oldest crawler contract: who may fetch what.`),t+=n(`sitemap.xml`,e.sitemapXml,`2005, Google/Yahoo/Microsoft. The XML list of every URL worth crawling.`,r),t+=n(`llms.txt`,e.llmsTxt,`2024. A curated map of a site written for language models.`),e.llmsFullTxt&&e.llmsFullTxt.ok&&(t+=n(`llms-full.txt`,e.llmsFullTxt,`2024. The expanded llms.txt: full text inlined for models.`));var o=e.agentsMd||{},s=`2025. Plain-Markdown instructions for an agent working with this service — the CLI era's answer to “where's the contract.”`;o.present?t+=K(`AGENTS.md`,{text:`found`+(o.variant?` (`+o.variant+`)`:``),kind:`ok`},s,J((o.body||``).slice(0,12e3)+(o.truncated?`
+
+[... truncated]`:``),!0)):t+=K(`AGENTS.md`,{text:`absent`,kind:`off`},s,`
`+B(o.note||`no /agents.md or /AGENTS.md found`)+`
`),e.aiTxt&&e.aiTxt.ok&&(t+=n(`ai.txt`,e.aiTxt,`AI-training opt-out manifest, a Spawning.ai convention.`)),e.securityTxt&&e.securityTxt.ok&&(t+=n(`.well-known/security.txt`,e.securityTxt,`RFC 9116. Where to report vulnerabilities.`));var c=e.feeds||[],l=c.length?`
`;return t+=K(`Feeds (RSS / Atom)`,c.length?{text:c.length,kind:`ok`}:{text:`none`,kind:`off`},`The 2000s syndication web. Declared via .`,l),t}function Z(){var e=[];e.push(``+b.status+` `+B(Dt(b.status))+``),e.push(``+B(C===`both`?`Compare`:C.charAt(0).toUpperCase()+C.slice(1))+``),e.push(``+B(b.contentType||`?`)+``),b.anatomy&&e.push(``+H(b.anatomy.rawBytes)+``),b.cost&&b.cost.tiers&&b.cost.tiers.length&&e.push(`~`+U(b.cost.tiers[0].tokens)+` tok`),e.push(``+b.elapsedMs+` ms`),b.redirected&&e.push(`→ `+B(b.finalUrl)+``),x&&e.push(`Browser Run: `+(x.fromCache?`cached`:`fresh`)+``),e.push(`fetched as `+B(b.fetchedBy)+``),p.innerHTML=e.join(``)}function Et(){var e={readiness:{title:`Readiness`,note:`Three opinions, kept separate until the arithmetic: standards, observed access, and recovered content.`,rows:[`Cloudflare's independent Agent Readiness level`,`Lens field evidence from an identified fetch and six named bot samples`,`Lens's transparent content-recovery checks over Readability output`]},anatomy:{title:`Anatomy`,note:`The response surface a machine can read without interpreting the page.`,rows:[`status, content type, and payload size`,`headings, links, images, and readable text`,`headers and accessibility clues`]},reader:{title:`Reader's guess`,note:`What a reader-mode extractor thinks this page is, and how much of it that costs.`,rows:[`Readability's extraction, from its own Worker`,`the gap: words as served against words kept`,`control labels that survived, which read as prose to an agent`]},wire:{title:`What it costs`,note:`Every request the page makes, and how much of the weight belongs to somebody else.`,rows:[`the third-party share of transfer bytes`,`every host that received a request`,`the load in order, recorded over CDP`]},structured:{title:`Structured`,note:`The entities and relationships a parser can lift from the markup.`,rows:[`JSON-LD and Schema.org entities`,`RDFa, microdata, and microformats`,`Open Graph and Twitter preview fields`]},ai:{title:`AI view`,note:`The compact representation and crawler signals available to a model.`,rows:[`best-effort Markdown rendering`,`robots and AI-specific directives`,`token cost and a cleaner alternate surface`]},terms:{title:`Terms`,note:`What a site asks of crawlers, what it enforces, and whether access is priced.`,rows:[`per-bot robots.txt verdicts`,`Content-Signal and TDM reservations`,`the observed AadharshBot fetch and any wall`]},discovery:{title:`Discovery`,note:`The doors an agent can find before it has to drive the human page.`,rows:[`robots.txt, sitemap.xml, and llms.txt`,`feeds and API/action descriptions`,`MCP, NLWeb, WebMCP, and agent-card hints`]},tools:{title:`What it accepts`,note:`The MCP tools this origin lists, read and never called.`,rows:[`each tool's name and inputSchema`,`a form built from that schema`,`the JSON-RPC call an agent would send`]},nlweb:{title:`What it answers`,note:`One real question to the origin's NLWeb /ask door, graded against NLWeb's result contract.`,rows:[`the answer the door sends back`,`whether its results are ones an agent can use`,`a door that answers 200 with nothing usable`]},markdown:{title:`What agents get`,note:`The Accept header seven named agent clients send, replayed, and what each one got back.`,rows:[`who gets Markdown and who gets HTML`,`a bare text/markdown request against real clients' headers`,`the content type each reply claims`]}},t=e[w]||e.anatomy;s&&(s.innerHTML=``),o.innerHTML=`
Selected machine lens
`+B(te[w]||t.title)+`
`+V(B(t.note))+`
`+t.rows.map(e=>`
`+V(B(e))+`
`).join(``)+`
Choose an example above or paste a URL, then press Go to replace this primer with observed evidence.
Paste any URL above.You get the page a person sees, the raw file a machine gets instead, and what that difference costs.
`,o.innerHTML=`
What the machine actually receives.The raw file, the rules it is handed, and the bill for reading them.
`,s&&(s.innerHTML=``),G(),p.innerHTML=`Idle. Nothing is fetched until you ask, and then just once, server-side, with no logging.`),At(C,!0,!1),jt(w,!1,!1)))});try{var Vt=new URLSearchParams(location.search).get(`url`);zt.vs&&zt.url?Ee(!0):me?(r.value=Vt||me.finalUrl||me.url||``,me.ok?(b=me,je(),X(),G(),Z(),Pe()):be(me)):Vt&&(document.prerendering?document.addEventListener(`prerenderingchange`,()=>{xe(Vt)},{once:!0}):xe(Vt))}catch{}var Ht=window.LensWebMcp;if(!Ht)return;var Ut=Ht.views,Wt=Ht.optIn,Gt=Ht.switches,Kt={reader:st,wire:lt,tools:ft,nlweb:mt,markdown:gt};function qt(e){return{content:[{type:`text`,text:JSON.stringify(e,null,1)}],structuredContent:e}}function $(e){return{content:[{type:`text`,text:e}],isError:!0}}function Jt(e,t){return new Promise((n,r)=>{var i=Date.now();(function a(){if(!e())return n(null);if(Date.now()-i>t)return r(Error(`Timed out after `+Math.round(t/1e3)+`s; the pane is still working.`));setTimeout(a,120)})()})}function Yt(){var e=b&&b.readiness&&b.readiness.field;return{scanned:b&&(b.finalUrl||b.url)||null,httpStatus:b&&b.status!=null?b.status:null,contentType:b&&b.contentType||null,pane:C,machineTab:w,machineTabAnswers:te[w]||w,agentReadyScore:e&&e.overall!=null?e.overall:null,comparing:O?{left:r.value||null,right:g?g.value:null,loaded:!!A}:null,deltaSwitchesOn:Object.keys(T).filter(e=>T[e]),tabsWithData:{reader:!!j,wire:!!N,tools:!!ne,nlweb:!!re,markdown:!!ae,browser:!!x,cloudflare:!!R},busy:E||k}}var Xt=Object.keys(te);Ht.installHandlers({lens_scan:e=>{var t=String(e&&e.url||``).trim();if(!t)return $(`A url is required.`);if(E||k)return $(`The Lens window is already fetching. Call lens_read_screen to see what it is doing.`);var n=b;return xe(t),E?Jt(()=>E,6e4).then(()=>!b||b===n?$(`The scan did not complete. Lens reported: `+(p.textContent||`no reason given`).replace(/\s+/g,` `).trim()):qt(Yt())):$(`Lens refused that URL. It has to be an absolute http(s) address.`)},lens_compare_onscreen:e=>{var t=String(e&&e.left||``).trim(),n=String(e&&e.right||``).trim();return!t||!n?$(`Both left and right are required.`):E||k?$(`The Lens window is already fetching.`):(De(t,n),k?Jt(()=>k,6e4).then(()=>!A||!A.ok?$(`The comparison did not complete. Lens reported: `+(A&&A.error||p.textContent||`no reason given`).replace(/\s+/g,` `).trim()):qt({screen:Yt(),comparison:A})):$(`Lens refused that pair. Both have to be absolute http(s) addresses.`))},lens_show:e=>{var t=e&&e.pane?String(e.pane):``,n=e&&e.tab?String(e.tab):``;return!t&&!n?$(`Give a pane, a tab, or both.`):t&&Ut.indexOf(t)<0?$(`Unknown pane `+t+`. Try one of: `+Ut.join(`, `)+`.`):n&&Xt.indexOf(n)<0?$(`Unknown tab `+n+`. Try one of: `+Xt.join(`, `)+`.`):(t&&At(t),n&&(C===`delta`&&!t&&At(`both`),jt(n)),qt(Yt()))},lens_run_tab:e=>{var t=String(e&&e.tab||``),n=Object.prototype.hasOwnProperty.call(Kt,t)?Kt[t]:null;if(!n||Wt.indexOf(t)<0)return $(`Unknown tab `+t+`. Try one of: `+Wt.join(`, `)+`.`);if(!b)return $(`Nothing is on screen yet. Call lens_scan first.`);if(t===`nlweb`&&e&&e.query){ie=String(e.query).slice(0,200);var r=o.querySelector(`#lx-nlweb-q`);r&&(r.value=ie)}jt(t),n();var i={reader:()=>M,wire:()=>P,tools:()=>F,nlweb:()=>I,markdown:()=>L}[t];return Jt(i,9e4).then(()=>{var e={reader:j,wire:N,tools:ne,nlweb:re,markdown:ae}[t];return e?qt({screen:Yt(),tab:t,result:e}):$(`The `+t+` pane came back empty. Lens reported: `+(p.textContent||`no reason given`).replace(/\s+/g,` `).trim())})},lens_read_screen:()=>qt(Yt()),lens_delta:e=>{var t=String(e&&e.switch||``);if(Gt.indexOf(t)<0||!Object.prototype.hasOwnProperty.call(T,t))return $(`Unknown switch `+t+`. Try one of: `+Gt.join(`, `)+`.`);if(!b)return $(`Nothing is on screen yet. Call lens_scan first.`);var n=e?e.on:void 0;return T[t]=n===!0||n===!1?n:!T[t],Ot(),_e(!0),X(),qt(Yt())}})})();
\ No newline at end of file
diff --git a/src/dict/a-dict/nav-run.397c44cb.js b/src/dict/a-dict/nav-run.397c44cb.js
new file mode 100644
index 000000000..25b09158f
--- /dev/null
+++ b/src/dict/a-dict/nav-run.397c44cb.js
@@ -0,0 +1,2 @@
+/*! minified at deploy - readable source: /nav-run.src.js */
+export function createRun(e){var t=document,n=e.kbd,r=e.sound,i=e.loadPhotos,a=e.loadWriting,o=e.front,s=e.inset||(()=>0),c,l,u,d=[],f=-1,p=null,m={q:``,items:[]},h=null,g=null,_=null,v=!1,y=null,b=null;function x(e){var n=t.createElement(`template`);n.innerHTML=e.trim();var r=n.content.firstElementChild;if(!(r instanceof HTMLElement))throw Error(`Run island template must produce an element`);return r}function S(e){return String(e).replace(/[&<>"]/g,e=>({"&":`&`,"<":`<`,">":`>`,'"':`"`})[e])}function C(e,t){return t.kind=e,t}var w=[{label:`Home`,path:`/`,hint:`aadhar.sh`},{label:`photos`,path:`/photos`,hint:`every photo, Explorer Thumbnails view — the archive the old /images/ listing became`},{label:`whoareyou`,path:`/whoareyou`,hint:`system properties · what one request reveals · for agents + the curious`},{label:`security center`,path:`/security`,hint:`the site's security posture, XP-style: firewall, updates, threat protection`},{label:`windows update`,path:`/updates`,hint:`what shipped lately: the deploy changelog as installed updates`},{label:`system restore`,path:`/restore`,hint:`scrub the site back through its real deploy history, backed by Cloudflare D1`},{label:`around`,path:`/around`,hint:`the VC neighborhood`},{label:`garage`,path:`/garage`,hint:`prototypes + experiments`},{label:`serendipity`,path:`/serendipity`,hint:`events worth going to`},{label:`music`,path:`/rn`,hint:`what I'm listening to right now`},{label:`coffee`,path:`/coffee`,hint:`book a coffee / bagel`},{label:`writing`,path:`/writing`,hint:`notes, in flux — an editable notepad`},{label:`inbox`,path:`/inbox`,hint:`who linked here — webmentions from the open web, rendered as Outlook Express mail`},{label:`guestbook`,path:`/guestbook`,hint:`agents sign in and say why they came`},{label:`reading`,path:`/reading`,hint:`what I've been reading — saved to Curius, mirrored here`},{label:`lens`,path:`/lens`,hint:`the other web: see any URL the way a machine does — raw HTML, JSON-LD, llms.txt`},{label:`finger`,path:`/finger`,hint:`who runs this host — drivable by keypress`},{label:`radar`,path:`/radar`,hint:`signal readings in, a terminal instrument out`},{label:`dict`,path:`/dict`,hint:`compression dictionary lint — will a browser ever use it?`},{label:`cache`,path:`/cache`,hint:`behavioral revalidation lint — does your ETag ever 304?`},{label:`encode`,path:`/encode`,hint:`what did your encoder actually do?`},{label:`agent ready`,path:`/agent-ready`,hint:`the scorecard, pointed at anyone including us`},{label:`pixel peeper`,path:`/pixel-peeper`,hint:`whose eye do you have? a compression vision test — pick the best encode, blind`},{label:`dotfiles`,path:`/dotfiles`,hint:`folder options for a mac: tick the defaults you want, get the script that sets them`},{label:`learning with errors`,path:`/lwe`,hint:`chat-style explainers + live demos`},{label:`lwe · fhe`,path:`/lwe/fhe`,hint:`fully homomorphic encryption, explained`},{label:`lwe · mpc`,path:`/lwe/mpc`,hint:`multi-party computation, honest majority and traitors`},{label:`lwe · tee`,path:`/lwe/tee`,hint:`trusted execution environments and side-channels`},{label:`lwe · utf-8`,path:`/lwe/utf8`,hint:`text encoding, ascii, utf-32, utf-8, live byte demos`},{label:`lwe · vigenère`,path:`/lwe/vigenere`,hint:`the Vigenère cipher and Kryptos: keystream workbench, cipher stats`},{label:`lwe · encoding`,path:`/lwe/encoding`,hint:`image encoding: avif, jpeg, jpegli, bytes-per-pixel`},{label:`lwe · programmable crypto`,path:`/lwe/pcrypto`,hint:`programmable cryptography: zk, mpc, fhe as one toolkit`},{label:`lwe · dac`,path:`/lwe/dac`,hint:`digital-to-analog: multibit R-2R vs delta-sigma noise shaping`},{label:`lwe · drivers`,path:`/lwe/drivers`,hint:`headphone drivers: planar magnetic vs dynamic, force and breakup`},{label:`lwe · knots`,path:`/lwe/knots`,hint:`knots: granny vs square, the Ian knot, why laces come undone`},{label:`lwe · lean`,path:`/lwe/lean`,hint:`lean, formal verification, specs, verified compilers, kernel soundness, openai ten-proofs`},{label:`lwe · efuses`,path:`/lwe/fuse`,hint:`efuses, anti-rollback, and why a phone refuses old firmware`},{label:`lwe · smoothing`,path:`/lwe/smoothing`,hint:`macOS font smoothing: AppleFontSmoothing, subpixel vs greyscale, ClearType`},{label:`garage · blueprint`,path:`/garage/blueprint`,hint:`the repo, blueprinted by Fable 5`},{label:`garage · chunks`,path:`/garage/chunks`,hint:`content-addressed chunking`},{label:`garage · cloudflare`,path:`/garage/cloudflare`,hint:`free Cloudflare features`},{label:`garage · encoding`,path:`/garage/encoding`,hint:`thumbnail encoding study`},{label:`garage · ig-prep`,path:`/garage/ig-prep`,hint:`hand Instagram pixels it has no reason to resample`},{label:`garage · resample`,path:`/garage/resample`,hint:`a checkerboard, and six instruments that could not see the defect`},{label:`garage · compression`,path:`/garage/compression`,hint:`brotli q11 + dcz deltas`},{label:`garage · 5.6 sol`,path:`/garage/gpt56`,hint:`the performance pass outlined with 5.6 Sol`},{label:`garage · horizon`,path:`/garage/horizon`,hint:`web-platform horizon`},{label:`garage · iroh`,path:`/garage/iroh`,hint:`dial a machine by its public key`},{label:`garage · masonry`,path:`/garage/masonry`,hint:`Grid Lanes masonry photo grid (with fixed-square fallback)`},{label:`garage · dyno`,path:`/garage/dyno`,hint:`what this site weighs on the wire, one pull a night`},{label:`garage · octane`,path:`/garage/octane`,hint:`what a framework's floor costs against no framework`},{label:`garage · pretext`,path:`/garage/pretext`,hint:`DOM-free text measurement`},{label:`garage · pqc`,path:`/garage/pqc`,hint:`what a PQ signature costs in bytes and milliseconds`},{label:`garage · user-agent`,path:`/garage/useragent`,hint:`what a crawler name is worth when nothing verifies it`},{label:`garage · typed config`,path:`/garage/typed-config`,hint:`what a config that is a program buys, and what it loses`},{label:`garage · hidden flags`,path:`/garage/hidden-flags`,hint:`how to tell an ignored option from an honoured one`},{label:`garage · htmx`,path:`/garage/htmx`,hint:`what a hypermedia library costs a site with nothing to swap`},{label:`garage · safari 27`,path:`/garage/safari27`,hint:`WWDC26 Safari 27 features, through this site's lens`},{label:`garage · scroll`,path:`/garage/scroll`,hint:`XP scroll chrome`},{label:`garage · teardown`,path:`/garage/teardown`,hint:`what a multi-agent audit found + fixed`},{label:`garage · tooltips`,path:`/garage/tooltips`,hint:`tooltip experiments`},{label:`garage · wire`,path:`/garage/wire`,hint:`the first build step + the brotli rabbit hole`},{label:`garage · workers`,path:`/garage/workers`,hint:`off Pages, onto Workers`},{label:`garage · dictionary`,path:`/garage/dictionary`,hint:`runtime dcz deltas, and the workerd fix they wait on`},{label:`garage · av2`,path:`/garage/av2`,hint:`AV2 stills vs shipped AVIF, and the picture fallback trap`},{label:`garage · round-trip`,path:`/garage/round-trip`,hint:`a parser for the twins, and the five bugs it found`},{label:`garage · ranges`,path:`/garage/ranges`,hint:`origin range requests, chunk sizes, and the photo route's R2 ranges`},{label:`confetti 🎉`,path:`raycast://extensions/raycast/raycast/confetti`,hint:`fire Raycast confetti — needs Raycast installed`,kind:`raycast`},{label:`toggle bounce`,path:`raycast://extensions/raycast/raycast/toggle-bounce-animation`,hint:`toggle Raycast's window bounce — needs Raycast`,kind:`raycast`}],T=[{label:`GitHub`,url:`https://github.com/oddharsh`},{label:`Twitter`,url:`https://x.com/oddhash`},{label:`Photos`,icon:`Instagram`,hint:`Instagram`,url:`https://www.instagram.com/aadharsh.hif`},{label:`Curius`,url:`https://curius.app/aadharsh-pannirselvam`},{label:`Beli`,url:`https://beliapp.com/users/aadharsh`},{label:`Music`,icon:`Spotify`,hint:`Spotify`,url:`https://open.spotify.com/user/aadharsh2010`}];w.forEach(e=>{e.kind||C(`page`,e)}),T.forEach(e=>{e.path=e.url,C(`profile`,e)});function E(){c=x(``),t.body.appendChild(c),g=x(``),t.body.appendChild(g),c.addEventListener(`click`,e=>{e.target===c&&G()}),c.addEventListener(`cancel`,()=>{_&&_.hide()}),c.addEventListener(`close`,()=>{r.play(`close`),_&&_.hide();var e=t.getElementById(`axp-start`);e&&e.setAttribute(`aria-expanded`,`false`)}),l=c.querySelector(`#axp-run-in`),u=c.querySelector(`#axp-run-list`),c.querySelector(`.x`).addEventListener(`click`,G),c.querySelector(`[data-act=cancel]`).addEventListener(`click`,G),c.querySelector(`[data-act=ok]`).addEventListener(`click`,()=>{L(d[f]||d[0])}),l.addEventListener(`input`,O),l.addEventListener(`keydown`,j),u.addEventListener(`click`,e=>{var t=e.target.closest(`.opt`);t&&(t.hasAttribute(`href`)&&(e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.button!==0)||(e.preventDefault(),L(d[+t.dataset.i])))}),u.addEventListener(`mouseover`,e=>{var t=e.target.closest(`.opt`);t&&N(+t.dataset.i)})}function D(e,t){var n=e.label.toLowerCase(),r=(e.hint||``).toLowerCase(),i=(e.path||``).toLowerCase();return n===t?100:n.indexOf(t)===0?80:i.indexOf(t)>-1?60:n.indexOf(t)>-1?50:r.indexOf(t)>-1?30:-1}function O(){var e=l.value.trim().toLowerCase(),t=w.concat(z,B,b||[],T,y||[]);if(t=e?t.map(t=>({it:t,s:D(t,e)})).filter(e=>e.s>=0).sort((e,t)=>t.s-e.s).map(e=>e.it).slice(0,40):w.concat(z,B,b||[],T,(y||[]).slice(0,8)),e&&e.length>=3){if(m.q===e){var n={};t.forEach(e=>{n[e.path]=1}),t=m.items.filter(e=>!n[e.path]).concat(t)}else k(l.value.trim())}var r=e===p&&f>=0&&d[f]?d[f]:null;if(d=t,r){f=-1;for(var i=0;i{var n=e.kind||`page`;a[n]||(a[n]=[],o.push(n),s[n]=n),a[n].push({it:e,i:t})});var c=``;o.forEach(e=>{a[e].length&&(c+=`
No match. Try a page name, a photo stem, or a profile — or browse all photos.
`,N(f)}function k(e){clearTimeout(h),h=setTimeout(()=>{A(e)},240)}function A(e){var t=e.trim().toLowerCase();t.length<3||fetch(`/lwe/ask/search`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({query:e})}).then(e=>e.ok?e.json():{results:[]}).then(e=>{m={q:t,items:(e.results||[]).map(e=>({kind:`search`,label:e.title,hint:e.snippet,path:e.url}))},l&&l.value.trim().toLowerCase()===t&&c&&c.open&&O()}).catch(()=>{})}function j(e){e.key===`ArrowDown`?(e.preventDefault(),M(1)):e.key===`ArrowUp`?(e.preventDefault(),M(-1)):e.key===`Enter`?(e.preventDefault(),L(d[f]||d[0])):e.key===`Escape`&&(e.preventDefault(),G())}function M(e){d.length&&N(Math.max(0,Math.min(d.length-1,f+e)))}function N(e){f=e;var t=null;[].forEach.call(u.querySelectorAll(`.opt`),e=>{var n=+e.dataset.i===f;e.setAttribute(`aria-selected`,n),n&&(t=e)}),I(),P(t)}function P(e){_&&(e&&e.dataset&&e.dataset.thumb?_.showAnchored(e):_.hide())}function F(){_||v||!g||(v=!0,import(`/a/hoist.77651846.js`).then(e=>{_=e.createHoist({node:g,followPointer:!1,anchorName:`--axp-run-preview`,contentFor:e=>{if(!(e instanceof HTMLElement))return``;var t=e.dataset.thumb;return t?``:``}}),P(u.querySelector(`.opt[aria-selected=true]`))}).catch(()=>{}))}function I(){var e=u.querySelector(`.opt[aria-selected=true]`);e&&e.scrollIntoView({block:`nearest`})}function L(t){t&&(G(),t.kind===`accessory`&&t.accId===`tips`?e.tips&&e.tips():t.kind===`accessory`?H(t.accId):t.kind===`saver`?e.saver&&e.saver():t.kind===`raycast`?location.href=t.path:t.kind===`profile`?window.open(t.url,`_blank`,`noopener`):location.assign(t.path))}var R={},z=[{label:`Clock`,hint:`the current time, ticking`,kind:`accessory`,accId:`clock`,path:``,icon:`🕐`,build:U},{label:`Tip of the Day`,hint:`did you know · a new tip each day`,kind:`accessory`,accId:`tips`,path:``}],B=[{label:`3D Pipes`,hint:`screen saver · sspipes.scr`,kind:`saver`,path:``}];function V(e){o(e)}function H(e){var n=z.filter(t=>t.accId===e)[0];if(!n)return;if(R[e]){V(R[e].win);return}r.play(`open`);var i=Object.keys(R).length,a=x(`
`+n.icon+``+n.label+`
`);a.style.left=Math.max(8,Math.min(innerWidth-200,86+i*24))+`px`,a.style.top=Math.max(8,64+s(`sa-t`)+i*24)+`px`,t.body.appendChild(a);var o=a.querySelector(`.bd`);if(!o)throw Error(`Accessory window is missing its body`);try{n.build(o)}catch{}V(a);var c=x(``),l=t.getElementById(`axp-taskbar`),u=t.getElementById(`axp-spacer`);l&&u&&l.insertBefore(c,u),c.addEventListener(`click`,()=>{V(a)}),R[e]={win:a,btn:c},a.addEventListener(`pointerdown`,()=>{V(a)});var d=a.querySelector(`.x`);function f(){var n=a.contains(t.activeElement);o._iv&&clearTimeout(o._iv),a.remove(),c.remove(),delete R[e];var r=t.getElementById(`axp-start`);n&&r&&r.focus()}d.addEventListener(`click`,e=>{e.stopPropagation(),f()}),a.addEventListener(`keydown`,e=>{e.key===`Escape`&&(e.preventDefault(),f())}),d.focus();var p=a.querySelector(`.tb`);if(!(p instanceof HTMLElement))throw Error(`Accessory window is missing its title bar`);p.addEventListener(`pointerdown`,e=>{if(e.target instanceof Element&&e.target.closest(`.x`))return;V(a);var t=a.getBoundingClientRect(),n=e.clientX,r=e.clientY,i=t.left,o=t.top,c=i,l=o,u=s(`sa-t`),d=innerHeight-36-s(`sa-b`);try{p.setPointerCapture(e.pointerId)}catch{}a.classList.add(`axp-dragging`);function f(e){c=Math.max(0,Math.min(innerWidth-40,i+e.clientX-n)),l=Math.max(u,Math.min(d,o+e.clientY-r)),a.style.transform=`translate(`+(c-i)+`px,`+(l-o)+`px)`}function m(){a.style.left=c+`px`,a.style.top=l+`px`,a.style.transform=``,a.classList.remove(`axp-dragging`),p.removeEventListener(`pointermove`,f),p.removeEventListener(`pointerup`,m),p.removeEventListener(`pointercancel`,m)}p.addEventListener(`pointermove`,f),p.addEventListener(`pointerup`,m),p.addEventListener(`pointercancel`,m)})}function U(e){e.innerHTML=`
--:--:--
`;var t=e.querySelector(`.clk-t`),n=e.querySelector(`.clk-d`),r=new Intl.DateTimeFormat(`en-US`,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`,hourCycle:`h23`}),i=new Intl.DateTimeFormat(void 0,{weekday:`long`,year:`numeric`,month:`long`,day:`numeric`});function a(){var o=new Date;t.textContent=r.format(o);var s=i.format(o);n.textContent!==s&&(n.textContent=s),e._iv=setTimeout(a,1e3-o.getMilliseconds()+5)}a()}function W(e){if(c||E(),!c.open){y||i().then(e=>{y=e,c.open&&O()}),b||a().then(e=>{b=e,c.open&&O()}),F(),c.showModal(),r.play(`open`);var n=t.getElementById(`axp-start`);n&&n.setAttribute(`aria-expanded`,`true`),l.value=``,O(),l.focus({focusVisible:!!e})}}function G(){_&&_.hide(),c&&c.open&&c.close()}return{open:W,close:G,isOpen:()=>!!(c&&c.open)}}
\ No newline at end of file
diff --git a/src/dict/a-dict/nav.5a0d76ed.js b/src/dict/a-dict/nav.5a0d76ed.js
new file mode 100644
index 000000000..8358c7bd9
--- /dev/null
+++ b/src/dict/a-dict/nav.5a0d76ed.js
@@ -0,0 +1,2 @@
+/*! minified at deploy - readable source: /nav.src.js */
+(()=>{"use strict";var e=window;if(e.__axpNav)return;e.__axpNav=!0;var t=document,n=()=>{try{fetch(`/ledger/prefetch?via=client&p=`+encodeURIComponent(location.pathname),{method:`HEAD`,keepalive:!0,credentials:`omit`}).catch(()=>{})}catch{}};if(t.prerendering)t.addEventListener(`prerenderingchange`,n,{once:!0});else{var r=performance.getEntriesByType(`navigation`)[0];r&&r.deliveryType===`navigational-prefetch`&&n()}var i=navigator.userAgentData,a=/Mac|iPhone|iPad|iPod/i.test(i&&i.platform||navigator.platform||navigator.userAgent||``)?`⌘K`:`Ctrl K`,o=null,s=null,c=null;function l(e,t){return t.kind=e,t}function u(){return s||(s=Promise.all([fetch(`/images/manifest.json`).then(e=>e.ok?e.json():null).catch(()=>null),fetch(`/images/alt.json`).then(e=>e.ok?e.json():{}).catch(()=>({}))]).then(e=>{var t=e[0],n=e[1]||{};return(t&&t.photos||[]).map(e=>l(`photo`,{label:e.stem,path:`/images/full/`+encodeURI(e.full),hint:n[e.stem]||`full-resolution photo`,thumb:e.thumb_small||e.thumb_avif||``}))}),s)}function d(){return c||(c=fetch(`/writing/posts.json`).then(e=>e.ok?e.json():[]).catch(()=>[]).then(e=>(o=(e||[]).map(e=>l(`writing`,{label:e.title||e.slug,path:`/writing/`+e.slug,hint:e.date?`note · `+e.date:`note`})),o)),c)}function f(){if(!(t.querySelector(`link[href*="luna."]`)||t.getElementById(`axp-css`))){var e=t.createElement(`link`);e.rel=`stylesheet`,e.href=`/luna.css`,(t.head||t.documentElement).appendChild(e)}}var p=null,m=null,h=null,g=null,_=null,v=40;function y(e){var n=t.createElement(`template`);n.innerHTML=e.trim();var r=n.content.firstElementChild;if(!(r instanceof HTMLElement))throw Error(`Shell template must produce an element`);return r}var b=(()=>{var t=null,n=!1;try{n=localStorage.getItem(`axp-sound`)===`on`}catch{}function r(){if(!t)try{var n=e.AudioContext||e.webkitAudioContext;if(!n)return null;t=new n}catch{return null}return t.state===`suspended`&&t.resume&&t.resume(),t}function i(e,t,n,r,i,a){var o=e.createOscillator(),s=e.createGain();o.type=a||`sine`,o.frequency.value=t,o.connect(s),s.connect(e.destination),s.gain.setValueAtTime(1e-4,n),s.gain.exponentialRampToValueAtTime(i||.1,n+.004),s.gain.exponentialRampToValueAtTime(1e-4,n+r),o.start(n),o.stop(n+r+.02)}function a(e,t,n,r,a){i(e,t,n,r,a,`sine`),i(e,t*2.01,n,r*.7,a*.5,`sine`),i(e,t*2.76,n,r*.5,a*.3,`sine`),i(e,t*5.18,n,r*.28,a*.12,`triangle`)}var o={open:(e,t)=>{a(e,784,t,.45,.07),a(e,1047,t+.045,.6,.085)},close:(e,t)=>{a(e,659,t,.4,.06),a(e,494,t+.05,.5,.05)},error:(e,t)=>{i(e,196,t,.3,.075,`sine`),i(e,207,t,.32,.05,`triangle`),i(e,98,t,.34,.05,`sine`)},tada:(e,t)=>{[523,659,784].forEach((n,r)=>{a(e,n,t+r*.09,.32,.07)}),a(e,1047,t+.27,.85,.09)}};return{on:()=>n,set:e=>{n=!!e;try{localStorage.setItem(`axp-sound`,n?`on`:`off`)}catch{}},play:e=>{if(n){var t=r();t&&o[e]&&o[e](t,t.currentTime)}}}})();function x(e){e.style.zIndex=++v}function S(e){var n=parseFloat(getComputedStyle(t.documentElement).getPropertyValue(`--`+e));return n>0?n:0}function C(){return S(`taskbar-h`)||30}function ee(){t.addEventListener(`pointerdown`,e=>{var t=e.target instanceof Element&&e.target.closest(`.window,.np-window,.axp-acc`);t instanceof HTMLElement&&String(t.style.zIndex)!==String(v)&&x(t)},!0)}var w={"nav-run":`/a/nav-run.8d46bcc6.css`,"nav-tray":`/a/nav-tray.a1c8a63b.css`,infotip:`/a/infotip.962f5074.css`},T=Object.create(null);function E(e){return T[e]||(T[e]=new Promise((n,r)=>{var i=t.createElement(`link`);i.rel=`stylesheet`,i.href=w[e],i.onload=n,i.onerror=()=>{delete T[e],i.remove(),r(Error(e+` styles failed`))},(t.head||t.documentElement).appendChild(i)})),T[e]}function D(){return p||=Promise.all([E(`nav-run`),import(`/a/nav-run.397c44cb.js`)]).then(e=>(m=e[1].createRun({kbd:a,sound:b,loadPhotos:u,loadWriting:d,front:x,inset:S,saver:G,tips:()=>{Y(!1).catch(()=>{})}}),m)),p}function O(e){return m?(m.isOpen()?m.close():m.open(e),Promise.resolve()):D().then(t=>{t.open(e)})}function k(e){var n=t.getElementById(`axp-start`);if(n instanceof HTMLAnchorElement){var r=n.href;n.title=`Run — navigate the site (`+a+`)`,[].forEach.call(n.querySelectorAll(`.axp-kbd`),e=>{e.textContent=a}),n.addEventListener(`click`,e=>{e.preventDefault(),O(e.detail===0).catch(()=>{location.assign(r)})}),n.addEventListener(`pointerover`,e=>{e.pointerType!==`touch`&&D().catch(()=>{p=null})},{passive:!0})}var i=`/`+(location.pathname.split(`/`)[1]||``);[].forEach.call(e.querySelectorAll(`.axp-pin`),e=>{var t=`/`+((e.getAttribute(`href`)||``).split(`/`)[1]||``),n=i!==`/`&&t===i;e.classList.toggle(`cur`,n),n?e.setAttribute(`aria-current`,`page`):e.removeAttribute(`aria-current`)});var o=t.getElementById(`axp-sound`);o&&(o.hidden=!1);function s(){var e=b.on();o.className=e?``:`muted`,o.title=e?`Sounds on (click to mute)`:`Sounds off (click to unmute)`,o.setAttribute(`aria-label`,o.title),o.setAttribute(`aria-pressed`,String(!e)),o.innerHTML=``}o&&(o.addEventListener(`click`,()=>{var e=!b.on();b.set(e),s(),e&&b.play(`tada`)}),s()),[].forEach.call(e.querySelectorAll(`.axp-trayico`),e=>{e.setAttribute(`aria-haspopup`,`dialog`),e.setAttribute(`aria-expanded`,`false`),e.addEventListener(`click`,t=>{t.metaKey||t.ctrlKey||t.shiftKey||(t.preventDefault(),ne(e.getAttribute(`data-kind`),e).catch(()=>{location.assign(e.href)}))}),e.addEventListener(`pointerover`,e=>{e.pointerType!==`touch`&&L().catch(()=>{_=null})},{passive:!0})}),M(),t.addEventListener(`visibilitychange`,()=>{t.hidden||M()})}try{localStorage.removeItem(`axp-icons-pos`)}catch{}function te(){var e=t.getElementById(`axp-icons`);if(!e)return;var n=null,r=0,i=0,a=0,o=0,s=0,c=0,l=0,u=!1;function d(e){if(n){var t=e.clientX-r,d=e.clientY-i;!u&&Math.abs(t)+Math.abs(d)<4||(u=!0,n.classList.add(`axp-dragging`),s=Math.max(0,Math.min(a+t,innerWidth-76)),c=Math.max(0,Math.min(o+d,l)),n.style.transform=`translate(`+(s-a)+`px,`+(c-o)+`px)`)}}function f(){t.removeEventListener(`pointermove`,d),n&&u&&(n.style.left=s+`px`,n.style.top=c+`px`,n.style.transform=``,n.classList.remove(`axp-dragging`)),n=null}e.addEventListener(`pointerdown`,e=>{if(e.pointerType!==`mouse`||e.button===0){var s=e.target instanceof Element&&e.target.closest(`.axp-ico`);if(s instanceof HTMLElement){n=s,u=!1,r=e.clientX,i=e.clientY,l=e.currentTarget.clientHeight-C()-72,a=parseFloat(s.style.left)||0,o=parseFloat(s.style.top)||0;try{s.setPointerCapture(e.pointerId)}catch{}t.addEventListener(`pointermove`,d),t.addEventListener(`pointerup`,f,{once:!0}),t.addEventListener(`pointercancel`,f,{once:!0})}}}),e.addEventListener(`click`,e=>{u&&=(e.preventDefault(),e.stopPropagation(),!1)},!0)}var A=null,j=0;function M(){var n=t.getElementById(`axp-clock`);if(n){A||=new Intl.DateTimeFormat(`en-US`,{hour:`numeric`,minute:`2-digit`});var r=new Date;n.textContent=A.format(r).replace(/\s/g,` `),clearTimeout(j),j=e.setTimeout(M,6e4-r.getSeconds()*1e3-r.getMilliseconds()+20)}}function N(e){h?e(h):fetch(`/whoareyou.json`,{headers:{accept:`application/json`}}).then(e=>e.ok?e.json():null).then(t=>{t&&t.groups&&(h=t),e(h)}).catch(()=>{e(null)})}function P(e){g?e(g):fetch(`/updates.json`,{headers:{accept:`application/json`}}).then(e=>e.ok?e.json():null).then(t=>{t&&t.items&&(g=t),e(g)}).catch(()=>{e(null)})}function F(){return!!(t.modelContext||navigator.modelContext)}function I(e){F()?import(`/a/webmcp.0fb8bb06.js`).then(t=>{e(t.summary())},()=>{e(null)}):e(null)}function L(){return _||=Promise.all([E(`nav-tray`),import(`/a/nav-tray.42757eca.js`)]).then(e=>e[1].createTray({sound:b,loadSys:N,loadUpd:P,loadWebmcp:I})),_}function ne(e,t){return L().then(n=>{n.toggle(e,t)})}var R=6e4,z=0,B=0,V=!1,H=null;function U(){z=performance.now()}function W(t){clearTimeout(B),B=e.setTimeout(re,Math.max(1e3,t))}function re(){if(!V){var e=z+R-performance.now();e>0?W(e):t.hidden?(U(),W(R)):G()}}function G(){V||(V=!0,H||=import(`/a/nav-pipes.0290bba6.js`).catch(e=>{throw H=null,e}),H.then(e=>{e.startPipes({onExit:()=>{V=!1,U(),W(R)}})}).catch(()=>{V=!1,U(),W(R)}))}function K(){[`pointermove`,`pointerdown`,`keydown`,`wheel`,`touchstart`].forEach(t=>{e.addEventListener(t,U,{capture:!0,passive:!0})}),t.addEventListener(`scroll`,U,{capture:!0,passive:!0}),t.addEventListener(`visibilitychange`,U),U(),W(R)}var q=`axp-tips`,J=null;function Y(e){return J||=Promise.all([E(`nav-tray`),import(`/a/nav-tips.2e087c54.js`)]).then(e=>e[1].createTips({key:q,kbd:a,sound:b})).catch(e=>{throw J=null,e}),J.then(t=>{t.open(e)})}function ie(){var e=null;try{e=localStorage.getItem(q)}catch{return}if(!(e===`off`||e===new Date().toDateString()||navigator.webdriver)){var n=()=>{if(t.prerendering||t.hidden)t.addEventListener(`visibilitychange`,n,{once:!0});else{var e=()=>{t.querySelector(`dialog:modal`)||Y(!0).catch(()=>{})};`requestIdleCallback`in window?requestIdleCallback(e,{timeout:3e3}):setTimeout(e,1500)}};n()}}t.addEventListener(`keydown`,e=>{(e.metaKey||e.ctrlKey)&&(e.key===`k`||e.key===`K`)&&(e.preventDefault(),O(!0).catch(()=>{location.assign(`/run`)}))});function ae(){var e=null,n=0,r=0,i=``,a=null,o=!1,s=8,c=30;function l(t){if(e&&a){var l=t.clientX-n,d=t.clientY-r,f=innerWidth,p=innerHeight,m=p-c-24-a.top;o&&(m=Math.min(m,p-c-a.bottom)),d=Math.max(s-a.top,Math.min(d,m)),l=Math.max(60-a.width-a.left,Math.min(l,f-60-a.left)),l=u(a.left+l)-a.left,d=u(a.top+d)-a.top,e.style.transform=i+`translate(`+l+`px,`+d+`px)`}}function u(e){var t=devicePixelRatio||1;return Math.round(e*t)/t}function d(){e&&=(e.classList.remove(`axp-dragging`),t.removeEventListener(`pointermove`,l),null)}t.addEventListener(`pointerdown`,u=>{if(u.pointerType!==`touch`&&(u.pointerType!==`mouse`||u.button===0)){var f=u.target instanceof Element&&u.target.closest(`.title-bar,.np-titlebar,#axp-run .tb`);if(!(!f||u.target instanceof Element&&u.target.closest(`a,button,.controls,.np-controls,.x`))){var p=f.closest(`.window,.np-window,#axp-run`);if(p&&!p.classList.contains(`axp-max`)){var m=getComputedStyle(p).transform;i=m&&m!==`none`?m+` `:``,a=p.getBoundingClientRect(),o=p.matches(`:popover-open`),s=8+S(`sa-t`),c=C(),p.classList.add(`axp-dragging`),e=p,n=u.clientX,r=u.clientY;try{f.setPointerCapture(u.pointerId)}catch{}u.preventDefault(),t.addEventListener(`pointermove`,l),t.addEventListener(`pointerup`,d,{once:!0}),t.addEventListener(`pointercancel`,d,{once:!0})}}}})}function oe(){var e=t.querySelector(`body > .window > .body > .content`)||t.querySelector(`body > .window > .content, body > .window > .body`);if(!e){var n=t.querySelector(`body > .np-window`);n&&(e=n.querySelector(`.np-text`))}e&&se(e)}function se(e){var t=`axp-scroll:`+location.pathname,n=()=>{try{sessionStorage.setItem(t,String(e.scrollTop))}catch{}},r=performance.getEntriesByType&&performance.getEntriesByType(`navigation`)[0];if(r&&r.type===`reload`){var i=parseInt(sessionStorage.getItem(t),10);if(i>0){var a=!1,o=()=>{a||(e.scrollTop=i,e.scrollTop>0&&(a=!0))};requestAnimationFrame(o),addEventListener(`load`,o,{once:!0})}}if(`onscrollend`in e)e.addEventListener(`scrollend`,n,{passive:!0});else{var s;e.addEventListener(`scroll`,()=>{clearTimeout(s),s=setTimeout(n,200)},{passive:!0})}addEventListener(`pagehide`,n)}function ce(){[].forEach.call(t.querySelectorAll(`.window,.np-window`),e=>{e.classList.contains(`np-folder`)||e.querySelector(`:scope > .axp-resize`)||(getComputedStyle(e).position===`static`&&(e.style.position=`relative`),e.appendChild(y(``)),e.addEventListener(`pointerdown`,t=>{if(!e.classList.contains(`axp-max`)){var n=e.getBoundingClientRect();n.right-t.clientX<20&&n.bottom-t.clientY<20&&(e.style.maxWidth=`none`,e.matches(`:popover-open`)?e.style.setProperty(`max-height`,Math.max(120,innerHeight-C()-n.top)+`px`,`important`):e.style.maxHeight=`none`)}}))})}function X(){var e=location.origin+`/`,n=history.length;function r(){if(window.navigation&&navigation.entries&&navigation.currentEntry){var r=navigation.currentEntry.index;if(r<1)return!1;var i=navigation.entries()[r-1];return!!i&&i.url===e}return t.referrer===e&&history.length===n}t.addEventListener(`click`,e=>{e.defaultPrevented||e.button!==0||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||!(e.target instanceof Element&&e.target.closest(`a.close`))||history.length<=1||!r()||(e.preventDefault(),history.back())})}function le(){var e=t.querySelector(`body > .window, body > .np-window`);if(e){var n=e.querySelector(`:scope > .title-bar, :scope > .np-titlebar`);if(n){if((location.pathname.replace(/\/+$/,``)||`/`)!==`/`){var r=n.querySelector(`a.close`);r instanceof HTMLAnchorElement&&(r.setAttribute(`href`,`/`),r.title=`close to aadhar.sh`,r.setAttribute(`aria-label`,`close to aadhar.sh`))}var i=n.querySelector(`:scope > .axp-histnav`);if(!i&&!e.hasAttribute(`data-no-histnav`)&&(i=y(``),n.insertBefore(i,n.firstChild)),i){var a=i.querySelector(`.axp-back`),o=i.querySelector(`.axp-fwd`);if(!(a instanceof HTMLButtonElement)||!(o instanceof HTMLButtonElement))return;var s=a,c=o,l=location.pathname.replace(/\/+$/,``).replace(/[^/]+$/,``)||`/`,u=(location.pathname.replace(/\/+$/,``)||`/`)===`/`,d=window.navigation&&typeof navigation.canGoBack==`boolean`?navigation:null,f=()=>d?d.canGoBack:history.length>1;s.addEventListener(`click`,()=>{f()?history.back():u||(location.href=l)}),c.addEventListener(`click`,()=>{history.forward()});var p=()=>{if(d){var e=d.canGoBack;s.disabled=!e&&u,s.title=e||u?`Back`:`Back to `+l,s.setAttribute(`aria-label`,s.title),c.disabled=!d.canGoForward}};p(),d&&typeof d.addEventListener==`function`&&d.addEventListener(`currententrychange`,p),addEventListener(`pageshow`,p)}var m=n.querySelector(`.max`);if(m instanceof HTMLButtonElement&&!m.dataset.axpWired){var h=m;h.dataset.axpWired=`1`,h.setAttribute(`aria-label`,`Maximize`),h.title=`Maximize`,h.addEventListener(`click`,()=>{var t=e.classList.toggle(`axp-max`);h.setAttribute(`aria-label`,t?`Restore`:`Maximize`),h.title=t?`Restore`:`Maximize`})}}}}var ue=`#axp-start,.axp-pin,.axp-trayico,#axp-sound,#axp-clock,.axp-ico,[data-tip],[title]`,de=`.lx-term,.photos a,.np-list li,.np-artist-link,.car-link,.ev[data-cover],iframe`;function fe(){if(!window.matchMedia||matchMedia(`(hover: none)`).matches||matchMedia(`(pointer: coarse)`).matches)return;var e=null,n=null,r=e=>{var t=e&&e.closest?e.closest(ue):null;return t&&!t.closest(de)?t:null},i=()=>{e||=(import(`/a/hoist.77651846.js`).catch(()=>{}),Promise.all([E(`infotip`),import(`/a/infotip.11592be2.js`)]).then(e=>{e[1].start({find:r,initial:n,kbd:a,load:{sys:N,upd:P,writing:d}}),n=null,t.removeEventListener(`pointerover`,o),t.removeEventListener(`pointerout`,s),t.removeEventListener(`focusin`,c)}).catch(()=>{e=null,n=null}))};function o(e){var t=r(e.target);t&&(n={target:t,clientX:e.clientX,clientY:e.clientY,at:Date.now()},i())}function s(e){n&&r(e.target)===n.target&&r(e.relatedTarget)!==n.target&&(n=null)}function c(e){var t=r(e.target);if(t){try{if(!t.matches(`:focus-visible`))return}catch{}n={target:t,focus:!0},i()}}t.addEventListener(`pointerover`,o,{passive:!0}),t.addEventListener(`pointerout`,s,{passive:!0}),t.addEventListener(`focusin`,c)}function pe(){var e=!1,n=!1,r=null,i=e=>{for(var t=e.querySelectorAll?e.querySelectorAll(`data[value]`):[],r=0;r{if(a!==e){if(e=a,a&&(n=!1),t.documentElement.classList.toggle(`exact`,a),a)i(t),r=new MutationObserver(e=>{e.forEach(e=>e.addedNodes.forEach(e=>{e.nodeType===1&&i(e)}))}),r.observe(t.body,{childList:!0,subtree:!0});else{r&&=(r.disconnect(),null);for(var o=t.querySelectorAll(`data[data-shown]`),s=0;s{t.key===`Alt`&&!t.repeat&&!t.ctrlKey&&!t.metaKey&&!t.shiftKey?a(!0):e&&t.key!==`Alt`&&a(!1)}),t.addEventListener(`keyup`,t=>{if(t.key===`Alt`&&e){var r=n;a(!1),r&&t.preventDefault()}}),addEventListener(`blur`,()=>a(!1))}function Z(){var e=t.getElementById(`axp-taskbar`);e&&t.getElementById(`axp-desktop`)&&(f(),k(e),ae(),ee(),te(),oe(),ce(),X(),le(),fe(),K(),ie(),pe())}function Q(){if(t.prerendering)return Z();requestAnimationFrame(()=>requestAnimationFrame(Z))}function $(){F()&&import(`/a/webmcp.0fb8bb06.js`).then(e=>{var n=t.getElementById(`axp-webmcp`),r=null;function i(){var i=e.summary();n&&i.registered&&(n.hidden=!1,r||(E(`nav-tray`).catch(()=>{}),r=t.createElement(`span`),r.className=`axp-traybadge`,n.appendChild(r)),r.hidden=!i.calls,r.textContent=String(i.calls),r.classList.toggle(`no`,i.refused>0),n.setAttribute(`title`,i.calls?`Agent activity · `+i.calls+` tool call`+(i.calls===1?``:`s`)+` this visit`:`Agent activity · `+i.registered+` tools an agent can use here`))}return e.onActivity(i),e.boot().then(i,i)}).catch(()=>{})}`requestIdleCallback`in window?requestIdleCallback($,{timeout:2e3}):setTimeout($,1200),t.readyState===`loading`?t.addEventListener(`DOMContentLoaded`,Q):Q()})();
\ No newline at end of file
diff --git a/src/dict/p-dict/about.bc4f4bc0a5b3ec6b.html.br b/src/dict/p-dict/about.bc4f4bc0a5b3ec6b.html.br
new file mode 100644
index 000000000..3928f5281
Binary files /dev/null and b/src/dict/p-dict/about.bc4f4bc0a5b3ec6b.html.br differ
diff --git a/src/dict/p-dict/access__index.41e880db8e032145.html.br b/src/dict/p-dict/access__index.41e880db8e032145.html.br
new file mode 100644
index 000000000..d93f24771
Binary files /dev/null and b/src/dict/p-dict/access__index.41e880db8e032145.html.br differ
diff --git a/src/dict/p-dict/around.78a724ca525aa044.html.br b/src/dict/p-dict/around.78a724ca525aa044.html.br
new file mode 100644
index 000000000..2dacdb279
Binary files /dev/null and b/src/dict/p-dict/around.78a724ca525aa044.html.br differ
diff --git a/src/dict/p-dict/bot.865d644e2dafe21a.html.br b/src/dict/p-dict/bot.865d644e2dafe21a.html.br
new file mode 100644
index 000000000..0f57fd4a3
Binary files /dev/null and b/src/dict/p-dict/bot.865d644e2dafe21a.html.br differ
diff --git a/src/dict/p-dict/coffee.7ea9a5837ea5efbc.html.br b/src/dict/p-dict/coffee.7ea9a5837ea5efbc.html.br
new file mode 100644
index 000000000..bbb09d2a0
Binary files /dev/null and b/src/dict/p-dict/coffee.7ea9a5837ea5efbc.html.br differ
diff --git a/src/dict/p-dict/contact.7e3bc52bc4da87b0.html.br b/src/dict/p-dict/contact.7e3bc52bc4da87b0.html.br
new file mode 100644
index 000000000..68e8ca9ed
Binary files /dev/null and b/src/dict/p-dict/contact.7e3bc52bc4da87b0.html.br differ
diff --git a/src/dict/p-dict/developers.cdcbba68e2ab09d7.html.br b/src/dict/p-dict/developers.cdcbba68e2ab09d7.html.br
new file mode 100644
index 000000000..34594376c
Binary files /dev/null and b/src/dict/p-dict/developers.cdcbba68e2ab09d7.html.br differ
diff --git a/src/dict/p-dict/dotfiles__index.ee51888864b4a8b4.html.br b/src/dict/p-dict/dotfiles__index.ee51888864b4a8b4.html.br
new file mode 100644
index 000000000..2e0fa5b19
Binary files /dev/null and b/src/dict/p-dict/dotfiles__index.ee51888864b4a8b4.html.br differ
diff --git a/src/dict/p-dict/garage__av2.1b2fc6324716f2b8.html.br b/src/dict/p-dict/garage__av2.1b2fc6324716f2b8.html.br
new file mode 100644
index 000000000..44e972a47
Binary files /dev/null and b/src/dict/p-dict/garage__av2.1b2fc6324716f2b8.html.br differ
diff --git a/src/dict/p-dict/garage__blueprint.369c016ae83ccad7.html.br b/src/dict/p-dict/garage__blueprint.369c016ae83ccad7.html.br
new file mode 100644
index 000000000..7fbc80fdf
Binary files /dev/null and b/src/dict/p-dict/garage__blueprint.369c016ae83ccad7.html.br differ
diff --git a/src/dict/p-dict/garage__chunks.372d9ff7c0ebfd58.html.br b/src/dict/p-dict/garage__chunks.372d9ff7c0ebfd58.html.br
new file mode 100644
index 000000000..7a4d02d3e
Binary files /dev/null and b/src/dict/p-dict/garage__chunks.372d9ff7c0ebfd58.html.br differ
diff --git a/src/dict/p-dict/garage__cloudflare.2f8ca6d4c8dfb493.html.br b/src/dict/p-dict/garage__cloudflare.2f8ca6d4c8dfb493.html.br
new file mode 100644
index 000000000..bc6bcf6f8
Binary files /dev/null and b/src/dict/p-dict/garage__cloudflare.2f8ca6d4c8dfb493.html.br differ
diff --git a/src/dict/p-dict/garage__compression.6b6c13bcdbb41f94.html.br b/src/dict/p-dict/garage__compression.6b6c13bcdbb41f94.html.br
new file mode 100644
index 000000000..eccaa09ea
Binary files /dev/null and b/src/dict/p-dict/garage__compression.6b6c13bcdbb41f94.html.br differ
diff --git a/src/dict/p-dict/garage__dictionary.e2f26dd2f040ef0a.html.br b/src/dict/p-dict/garage__dictionary.e2f26dd2f040ef0a.html.br
new file mode 100644
index 000000000..91214c32e
Binary files /dev/null and b/src/dict/p-dict/garage__dictionary.e2f26dd2f040ef0a.html.br differ
diff --git a/src/dict/p-dict/garage__dyno.b66c368f3ef6b2eb.html.br b/src/dict/p-dict/garage__dyno.b66c368f3ef6b2eb.html.br
new file mode 100644
index 000000000..b13e472cf
Binary files /dev/null and b/src/dict/p-dict/garage__dyno.b66c368f3ef6b2eb.html.br differ
diff --git a/src/dict/p-dict/garage__encoding.168010ee6b6b94f1.html.br b/src/dict/p-dict/garage__encoding.168010ee6b6b94f1.html.br
new file mode 100644
index 000000000..49541d125
Binary files /dev/null and b/src/dict/p-dict/garage__encoding.168010ee6b6b94f1.html.br differ
diff --git a/src/dict/p-dict/garage__gpt56.05af5f53c58c6a09.html.br b/src/dict/p-dict/garage__gpt56.05af5f53c58c6a09.html.br
new file mode 100644
index 000000000..d0f3a1869
Binary files /dev/null and b/src/dict/p-dict/garage__gpt56.05af5f53c58c6a09.html.br differ
diff --git a/src/dict/p-dict/garage__hidden-flags.91575677fe6888f1.html.br b/src/dict/p-dict/garage__hidden-flags.91575677fe6888f1.html.br
new file mode 100644
index 000000000..3b2b9d87f
Binary files /dev/null and b/src/dict/p-dict/garage__hidden-flags.91575677fe6888f1.html.br differ
diff --git a/src/dict/p-dict/garage__horizon.3b1747a30916ed97.html.br b/src/dict/p-dict/garage__horizon.3b1747a30916ed97.html.br
new file mode 100644
index 000000000..f2bc479bc
Binary files /dev/null and b/src/dict/p-dict/garage__horizon.3b1747a30916ed97.html.br differ
diff --git a/src/dict/p-dict/garage__htmx.7b7e93c038614ad6.html.br b/src/dict/p-dict/garage__htmx.7b7e93c038614ad6.html.br
new file mode 100644
index 000000000..54a279df3
Binary files /dev/null and b/src/dict/p-dict/garage__htmx.7b7e93c038614ad6.html.br differ
diff --git a/src/dict/p-dict/garage__ig-prep.403d2078a9172d83.html.br b/src/dict/p-dict/garage__ig-prep.403d2078a9172d83.html.br
new file mode 100644
index 000000000..7018f2687
Binary files /dev/null and b/src/dict/p-dict/garage__ig-prep.403d2078a9172d83.html.br differ
diff --git a/src/dict/p-dict/garage__index.a118a90602a32492.html.br b/src/dict/p-dict/garage__index.a118a90602a32492.html.br
new file mode 100644
index 000000000..90f0879de
Binary files /dev/null and b/src/dict/p-dict/garage__index.a118a90602a32492.html.br differ
diff --git a/src/dict/p-dict/garage__iroh.964c732bea881d80.html.br b/src/dict/p-dict/garage__iroh.964c732bea881d80.html.br
new file mode 100644
index 000000000..b8bfca41d
Binary files /dev/null and b/src/dict/p-dict/garage__iroh.964c732bea881d80.html.br differ
diff --git a/src/dict/p-dict/garage__masonry.1f136fb305dbb09f.html.br b/src/dict/p-dict/garage__masonry.1f136fb305dbb09f.html.br
new file mode 100644
index 000000000..cb4ee2b68
Binary files /dev/null and b/src/dict/p-dict/garage__masonry.1f136fb305dbb09f.html.br differ
diff --git a/src/dict/p-dict/garage__octane.2ba851efe5f036f1.html.br b/src/dict/p-dict/garage__octane.2ba851efe5f036f1.html.br
new file mode 100644
index 000000000..1d403f662
Binary files /dev/null and b/src/dict/p-dict/garage__octane.2ba851efe5f036f1.html.br differ
diff --git a/src/dict/p-dict/garage__pqc.ba360f5f5c9ea509.html.br b/src/dict/p-dict/garage__pqc.ba360f5f5c9ea509.html.br
new file mode 100644
index 000000000..0fe551c0f
Binary files /dev/null and b/src/dict/p-dict/garage__pqc.ba360f5f5c9ea509.html.br differ
diff --git a/src/dict/p-dict/garage__pretext.bde68424722bcd83.html.br b/src/dict/p-dict/garage__pretext.bde68424722bcd83.html.br
new file mode 100644
index 000000000..bb7c2ce0e
Binary files /dev/null and b/src/dict/p-dict/garage__pretext.bde68424722bcd83.html.br differ
diff --git a/src/dict/p-dict/garage__ranges.2610e09503c37cff.html.br b/src/dict/p-dict/garage__ranges.2610e09503c37cff.html.br
new file mode 100644
index 000000000..3cd8e2eb7
Binary files /dev/null and b/src/dict/p-dict/garage__ranges.2610e09503c37cff.html.br differ
diff --git a/src/dict/p-dict/garage__resample.3a42c8d366873bb6.html.br b/src/dict/p-dict/garage__resample.3a42c8d366873bb6.html.br
new file mode 100644
index 000000000..a5d921bc4
Binary files /dev/null and b/src/dict/p-dict/garage__resample.3a42c8d366873bb6.html.br differ
diff --git a/src/dict/p-dict/garage__round-trip.9c291194eafbd493.html.br b/src/dict/p-dict/garage__round-trip.9c291194eafbd493.html.br
new file mode 100644
index 000000000..0f991637e
Binary files /dev/null and b/src/dict/p-dict/garage__round-trip.9c291194eafbd493.html.br differ
diff --git a/src/dict/p-dict/garage__safari27.2c301fb58dba3558.html.br b/src/dict/p-dict/garage__safari27.2c301fb58dba3558.html.br
new file mode 100644
index 000000000..46f5c6af6
Binary files /dev/null and b/src/dict/p-dict/garage__safari27.2c301fb58dba3558.html.br differ
diff --git a/src/dict/p-dict/garage__scroll.0ee8baf2de28840c.html.br b/src/dict/p-dict/garage__scroll.0ee8baf2de28840c.html.br
new file mode 100644
index 000000000..07e262743
Binary files /dev/null and b/src/dict/p-dict/garage__scroll.0ee8baf2de28840c.html.br differ
diff --git a/src/dict/p-dict/garage__teardown.feb24dd3199a7970.html.br b/src/dict/p-dict/garage__teardown.feb24dd3199a7970.html.br
new file mode 100644
index 000000000..234f0e982
Binary files /dev/null and b/src/dict/p-dict/garage__teardown.feb24dd3199a7970.html.br differ
diff --git a/src/dict/p-dict/garage__tooltips.b358f2c5e2071217.html.br b/src/dict/p-dict/garage__tooltips.b358f2c5e2071217.html.br
new file mode 100644
index 000000000..104a4c49e
Binary files /dev/null and b/src/dict/p-dict/garage__tooltips.b358f2c5e2071217.html.br differ
diff --git a/src/dict/p-dict/garage__typed-config.2eb77e92e4c007dc.html.br b/src/dict/p-dict/garage__typed-config.2eb77e92e4c007dc.html.br
new file mode 100644
index 000000000..fd08daf75
Binary files /dev/null and b/src/dict/p-dict/garage__typed-config.2eb77e92e4c007dc.html.br differ
diff --git a/src/dict/p-dict/garage__useragent.96afc074638a5397.html.br b/src/dict/p-dict/garage__useragent.96afc074638a5397.html.br
new file mode 100644
index 000000000..c2823b2d5
Binary files /dev/null and b/src/dict/p-dict/garage__useragent.96afc074638a5397.html.br differ
diff --git a/src/dict/p-dict/garage__wire.48783f385c7c723e.html.br b/src/dict/p-dict/garage__wire.48783f385c7c723e.html.br
new file mode 100644
index 000000000..9ff7c6469
Binary files /dev/null and b/src/dict/p-dict/garage__wire.48783f385c7c723e.html.br differ
diff --git a/src/dict/p-dict/garage__workers.bfbf140754012935.html.br b/src/dict/p-dict/garage__workers.bfbf140754012935.html.br
new file mode 100644
index 000000000..1fdc36259
Binary files /dev/null and b/src/dict/p-dict/garage__workers.bfbf140754012935.html.br differ
diff --git a/src/dict/p-dict/guestbook.91a72b96637f941b.html.br b/src/dict/p-dict/guestbook.91a72b96637f941b.html.br
new file mode 100644
index 000000000..1778bef32
Binary files /dev/null and b/src/dict/p-dict/guestbook.91a72b96637f941b.html.br differ
diff --git a/src/dict/p-dict/inbox.9420623de3892c6e.html.br b/src/dict/p-dict/inbox.9420623de3892c6e.html.br
new file mode 100644
index 000000000..10be1aba7
Binary files /dev/null and b/src/dict/p-dict/inbox.9420623de3892c6e.html.br differ
diff --git a/src/dict/p-dict/index.bf19dcc55a09b514.html.br b/src/dict/p-dict/index.bf19dcc55a09b514.html.br
new file mode 100644
index 000000000..33d07711c
Binary files /dev/null and b/src/dict/p-dict/index.bf19dcc55a09b514.html.br differ
diff --git a/src/dict/p-dict/ledger.ec205701afded308.html.br b/src/dict/p-dict/ledger.ec205701afded308.html.br
new file mode 100644
index 000000000..58bed4da6
Binary files /dev/null and b/src/dict/p-dict/ledger.ec205701afded308.html.br differ
diff --git a/src/dict/p-dict/lens.027e1f0d99cf64a9.html.br b/src/dict/p-dict/lens.027e1f0d99cf64a9.html.br
new file mode 100644
index 000000000..4532f9d7c
Binary files /dev/null and b/src/dict/p-dict/lens.027e1f0d99cf64a9.html.br differ
diff --git a/src/dict/p-dict/lens__census.6758e600fa29f206.html.br b/src/dict/p-dict/lens__census.6758e600fa29f206.html.br
new file mode 100644
index 000000000..494717e2d
Binary files /dev/null and b/src/dict/p-dict/lens__census.6758e600fa29f206.html.br differ
diff --git a/src/dict/p-dict/lwe__dac.68f06f46f5a4e968.html.br b/src/dict/p-dict/lwe__dac.68f06f46f5a4e968.html.br
new file mode 100644
index 000000000..789a1b0fd
Binary files /dev/null and b/src/dict/p-dict/lwe__dac.68f06f46f5a4e968.html.br differ
diff --git a/src/dict/p-dict/lwe__drivers.03c2c47b2fa9e1b9.html.br b/src/dict/p-dict/lwe__drivers.03c2c47b2fa9e1b9.html.br
new file mode 100644
index 000000000..b152c8b73
Binary files /dev/null and b/src/dict/p-dict/lwe__drivers.03c2c47b2fa9e1b9.html.br differ
diff --git a/src/dict/p-dict/lwe__encoding.abe906755fcfd006.html.br b/src/dict/p-dict/lwe__encoding.abe906755fcfd006.html.br
new file mode 100644
index 000000000..dde133a3d
Binary files /dev/null and b/src/dict/p-dict/lwe__encoding.abe906755fcfd006.html.br differ
diff --git a/src/dict/p-dict/lwe__fhe.43cfc58c74e519cc.html.br b/src/dict/p-dict/lwe__fhe.43cfc58c74e519cc.html.br
new file mode 100644
index 000000000..6ddd3673a
Binary files /dev/null and b/src/dict/p-dict/lwe__fhe.43cfc58c74e519cc.html.br differ
diff --git a/src/dict/p-dict/lwe__fuse.bd52feff8ccf0ce7.html.br b/src/dict/p-dict/lwe__fuse.bd52feff8ccf0ce7.html.br
new file mode 100644
index 000000000..a5467e8f1
Binary files /dev/null and b/src/dict/p-dict/lwe__fuse.bd52feff8ccf0ce7.html.br differ
diff --git a/src/dict/p-dict/lwe__index.b148a9ae69194863.html.br b/src/dict/p-dict/lwe__index.b148a9ae69194863.html.br
new file mode 100644
index 000000000..7338feeac
Binary files /dev/null and b/src/dict/p-dict/lwe__index.b148a9ae69194863.html.br differ
diff --git a/src/dict/p-dict/lwe__knots.c4e623a60bda9eeb.html.br b/src/dict/p-dict/lwe__knots.c4e623a60bda9eeb.html.br
new file mode 100644
index 000000000..3e4c9b9dd
Binary files /dev/null and b/src/dict/p-dict/lwe__knots.c4e623a60bda9eeb.html.br differ
diff --git a/src/dict/p-dict/lwe__lean.7eb895ff6c5f8394.html.br b/src/dict/p-dict/lwe__lean.7eb895ff6c5f8394.html.br
new file mode 100644
index 000000000..5ecd42889
Binary files /dev/null and b/src/dict/p-dict/lwe__lean.7eb895ff6c5f8394.html.br differ
diff --git a/src/dict/p-dict/lwe__mpc.134f526b897cd624.html.br b/src/dict/p-dict/lwe__mpc.134f526b897cd624.html.br
new file mode 100644
index 000000000..3f1d461fa
Binary files /dev/null and b/src/dict/p-dict/lwe__mpc.134f526b897cd624.html.br differ
diff --git a/src/dict/p-dict/lwe__pcrypto.3f3e75997547d5d8.html.br b/src/dict/p-dict/lwe__pcrypto.3f3e75997547d5d8.html.br
new file mode 100644
index 000000000..dede29c2b
Binary files /dev/null and b/src/dict/p-dict/lwe__pcrypto.3f3e75997547d5d8.html.br differ
diff --git a/src/dict/p-dict/lwe__smoothing.0961d98a8ed1e7ca.html.br b/src/dict/p-dict/lwe__smoothing.0961d98a8ed1e7ca.html.br
new file mode 100644
index 000000000..ba5f2ea67
Binary files /dev/null and b/src/dict/p-dict/lwe__smoothing.0961d98a8ed1e7ca.html.br differ
diff --git a/src/dict/p-dict/lwe__tee.d37dd655ae20b429.html.br b/src/dict/p-dict/lwe__tee.d37dd655ae20b429.html.br
new file mode 100644
index 000000000..d6ee3e4c2
Binary files /dev/null and b/src/dict/p-dict/lwe__tee.d37dd655ae20b429.html.br differ
diff --git a/src/dict/p-dict/lwe__utf8.dca6aa6bfdf37c95.html.br b/src/dict/p-dict/lwe__utf8.dca6aa6bfdf37c95.html.br
new file mode 100644
index 000000000..6a83ae3fd
Binary files /dev/null and b/src/dict/p-dict/lwe__utf8.dca6aa6bfdf37c95.html.br differ
diff --git a/src/dict/p-dict/lwe__vigenere.9c36f4b3fe90347d.html.br b/src/dict/p-dict/lwe__vigenere.9c36f4b3fe90347d.html.br
new file mode 100644
index 000000000..30df8139b
Binary files /dev/null and b/src/dict/p-dict/lwe__vigenere.9c36f4b3fe90347d.html.br differ
diff --git a/src/dict/p-dict/photos.b74f5a3bd66fd0bf.html.br b/src/dict/p-dict/photos.b74f5a3bd66fd0bf.html.br
new file mode 100644
index 000000000..93c80869d
Binary files /dev/null and b/src/dict/p-dict/photos.b74f5a3bd66fd0bf.html.br differ
diff --git a/src/dict/p-dict/pixel-peeper__index.da164682294fb83a.html.br b/src/dict/p-dict/pixel-peeper__index.da164682294fb83a.html.br
new file mode 100644
index 000000000..a645780a2
Binary files /dev/null and b/src/dict/p-dict/pixel-peeper__index.da164682294fb83a.html.br differ
diff --git a/src/dict/p-dict/privacy.6fe11b58e61e337a.html.br b/src/dict/p-dict/privacy.6fe11b58e61e337a.html.br
new file mode 100644
index 000000000..cced15740
Binary files /dev/null and b/src/dict/p-dict/privacy.6fe11b58e61e337a.html.br differ
diff --git a/src/dict/p-dict/reading.f31af8dd1f235b9a.html.br b/src/dict/p-dict/reading.f31af8dd1f235b9a.html.br
new file mode 100644
index 000000000..a1d6bc37b
Binary files /dev/null and b/src/dict/p-dict/reading.f31af8dd1f235b9a.html.br differ
diff --git a/src/dict/p-dict/restore.a15c513afd0d42fa.html.br b/src/dict/p-dict/restore.a15c513afd0d42fa.html.br
new file mode 100644
index 000000000..b207e755c
Binary files /dev/null and b/src/dict/p-dict/restore.a15c513afd0d42fa.html.br differ
diff --git a/src/dict/p-dict/run.89f41aeb845fb174.html.br b/src/dict/p-dict/run.89f41aeb845fb174.html.br
new file mode 100644
index 000000000..2540ad3a2
Binary files /dev/null and b/src/dict/p-dict/run.89f41aeb845fb174.html.br differ
diff --git a/src/dict/p-dict/search.933eda7d461170a4.html.br b/src/dict/p-dict/search.933eda7d461170a4.html.br
new file mode 100644
index 000000000..17c8fa8c8
Binary files /dev/null and b/src/dict/p-dict/search.933eda7d461170a4.html.br differ
diff --git a/src/dict/p-dict/security.847d4d5755f398c0.html.br b/src/dict/p-dict/security.847d4d5755f398c0.html.br
new file mode 100644
index 000000000..a72a81916
Binary files /dev/null and b/src/dict/p-dict/security.847d4d5755f398c0.html.br differ
diff --git a/src/dict/p-dict/serendipity.7efead1cfdbf6d62.html.br b/src/dict/p-dict/serendipity.7efead1cfdbf6d62.html.br
new file mode 100644
index 000000000..af47ab50a
Binary files /dev/null and b/src/dict/p-dict/serendipity.7efead1cfdbf6d62.html.br differ
diff --git a/src/dict/p-dict/serendipity__mcp-info.d461bfe5da03bd33.html.br b/src/dict/p-dict/serendipity__mcp-info.d461bfe5da03bd33.html.br
new file mode 100644
index 000000000..47581f87a
Binary files /dev/null and b/src/dict/p-dict/serendipity__mcp-info.d461bfe5da03bd33.html.br differ
diff --git a/src/dict/p-dict/updates.776d95ec44e18c24.html.br b/src/dict/p-dict/updates.776d95ec44e18c24.html.br
new file mode 100644
index 000000000..444110596
Binary files /dev/null and b/src/dict/p-dict/updates.776d95ec44e18c24.html.br differ
diff --git a/src/dict/p-dict/whoareyou.645f4dbf376ccc53.html.br b/src/dict/p-dict/whoareyou.645f4dbf376ccc53.html.br
new file mode 100644
index 000000000..a3f7198e4
Binary files /dev/null and b/src/dict/p-dict/whoareyou.645f4dbf376ccc53.html.br differ
diff --git a/src/dict/p-dict/writing__big-screens-and-small-screens.b84622735e0e9988.html.br b/src/dict/p-dict/writing__big-screens-and-small-screens.b84622735e0e9988.html.br
new file mode 100644
index 000000000..69db6700b
Binary files /dev/null and b/src/dict/p-dict/writing__big-screens-and-small-screens.b84622735e0e9988.html.br differ
diff --git a/src/dict/p-dict/writing__colophon.be317dd44d3fca78.html.br b/src/dict/p-dict/writing__colophon.be317dd44d3fca78.html.br
new file mode 100644
index 000000000..3081253ef
Binary files /dev/null and b/src/dict/p-dict/writing__colophon.be317dd44d3fca78.html.br differ
diff --git a/src/dict/p-dict/writing__education-in-tech.7e644777f52d71a8.html.br b/src/dict/p-dict/writing__education-in-tech.7e644777f52d71a8.html.br
new file mode 100644
index 000000000..f67727eb9
Binary files /dev/null and b/src/dict/p-dict/writing__education-in-tech.7e644777f52d71a8.html.br differ
diff --git a/src/dict/p-dict/writing__in-flux.335b26b167bfad94.html.br b/src/dict/p-dict/writing__in-flux.335b26b167bfad94.html.br
new file mode 100644
index 000000000..e2d37370d
Binary files /dev/null and b/src/dict/p-dict/writing__in-flux.335b26b167bfad94.html.br differ
diff --git a/src/dict/p-dict/writing__index.5d926a5403c2eee8.html.br b/src/dict/p-dict/writing__index.5d926a5403c2eee8.html.br
new file mode 100644
index 000000000..e4af8e393
Binary files /dev/null and b/src/dict/p-dict/writing__index.5d926a5403c2eee8.html.br differ