@neuralnomads/codenomad-dev 0.20.0-dev-20260923-baf674fc → 0.20.0-dev-20260924-70aae0b1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api-types.js.map +1 -1
- package/dist/opencode-update/npm-runtime.js +22 -0
- package/dist/opencode-update/npm-runtime.js.map +1 -0
- package/dist/opencode-update/retired-installation.js +41 -0
- package/dist/opencode-update/retired-installation.js.map +1 -0
- package/dist/opencode-update/retired-installation.test.js +39 -0
- package/dist/opencode-update/retired-installation.test.js.map +1 -0
- package/dist/opencode-update/service.js +4 -3
- package/dist/opencode-update/service.js.map +1 -1
- package/dist/opencode-update/service.test.js +2 -2
- package/dist/opencode-update/service.test.js.map +1 -1
- package/dist/opencode-update/shared-installation.js +8 -5
- package/dist/opencode-update/shared-installation.js.map +1 -1
- package/dist/opencode-update/shared-installation.test.js +4 -2
- package/dist/opencode-update/shared-installation.test.js.map +1 -1
- package/dist/settings/binaries.js +3 -2
- package/dist/settings/binaries.js.map +1 -1
- package/dist/workspaces/spawn.js +7 -2
- package/dist/workspaces/spawn.js.map +1 -1
- package/package.json +1 -1
- package/public/assets/{App-DHe1TgnC.js → App-DXfroBn-.js} +7 -7
- package/public/assets/{App-DHe1TgnC.js.map → App-DXfroBn-.js.map} +1 -1
- package/public/assets/{FilesTab-D8Ik74MT.js → FilesTab-JN0c2Op2.js} +2 -2
- package/public/assets/{FilesTab-D8Ik74MT.js.map → FilesTab-JN0c2Op2.js.map} +1 -1
- package/public/assets/{GitChangesTab-CYn01GSK.js → GitChangesTab-8MxRVYHz.js} +2 -2
- package/public/assets/{GitChangesTab-CYn01GSK.js.map → GitChangesTab-8MxRVYHz.js.map} +1 -1
- package/public/assets/{SplitFilePanel-DxTSWUXW.js → SplitFilePanel-VXkE7jgT.js} +2 -2
- package/public/assets/{SplitFilePanel-DxTSWUXW.js.map → SplitFilePanel-VXkE7jgT.js.map} +1 -1
- package/public/assets/{StatusTab-CLJHjaqS.js → StatusTab-DljyzM07.js} +2 -2
- package/public/assets/{StatusTab-CLJHjaqS.js.map → StatusTab-DljyzM07.js.map} +1 -1
- package/public/assets/{align-justify-DYu1Iipu.js → align-justify-BMi4r2XK.js} +2 -2
- package/public/assets/{align-justify-DYu1Iipu.js.map → align-justify-BMi4r2XK.js.map} +1 -1
- package/public/assets/{bundle-full-DbjjKxlx.js → bundle-full-LgLNZmib.js} +2 -2
- package/public/assets/{bundle-full-DbjjKxlx.js.map → bundle-full-LgLNZmib.js.map} +1 -1
- package/public/assets/{client-state-LGeRE6k3.js → client-state-DTQzqBPJ.js} +2 -2
- package/public/assets/{client-state-LGeRE6k3.js.map → client-state-DTQzqBPJ.js.map} +1 -1
- package/public/assets/{diff-viewer-D_koHVvF.js → diff-viewer-Dxjea-rB.js} +2 -2
- package/public/assets/{diff-viewer-D_koHVvF.js.map → diff-viewer-Dxjea-rB.js.map} +1 -1
- package/public/assets/index-9bba6B1A.js +2 -0
- package/public/assets/index-9bba6B1A.js.map +1 -0
- package/public/assets/index-C5i7ut9u.js +2 -0
- package/public/assets/index-C5i7ut9u.js.map +1 -0
- package/public/assets/index-CLtLzsWy.js +2 -0
- package/public/assets/index-CLtLzsWy.js.map +1 -0
- package/public/assets/index-CTVIWXHZ.js +2 -0
- package/public/assets/index-CTVIWXHZ.js.map +1 -0
- package/public/assets/{index-CXyTJ12Z.js → index-Cgp1TEtC.js} +2 -2
- package/public/assets/{index-CXyTJ12Z.js.map → index-Cgp1TEtC.js.map} +1 -1
- package/public/assets/index-Cqd_P8c4.js +2 -0
- package/public/assets/index-Cqd_P8c4.js.map +1 -0
- package/public/assets/{index-CHztP7Qx.js → index-DTGOXoDH.js} +2 -2
- package/public/assets/{index-CHztP7Qx.js.map → index-DTGOXoDH.js.map} +1 -1
- package/public/assets/index-D_H_gYdX.js +2 -0
- package/public/assets/index-D_H_gYdX.js.map +1 -0
- package/public/assets/index-Dsd7n295.js +2 -0
- package/public/assets/index-Dsd7n295.js.map +1 -0
- package/public/assets/index-DwKq8v48.js +3 -0
- package/public/assets/index-DwKq8v48.js.map +1 -0
- package/public/assets/index-TnTncRlr.js +2 -0
- package/public/assets/index-TnTncRlr.js.map +1 -0
- package/public/assets/index-eb2qu-xk.js +2 -0
- package/public/assets/index-eb2qu-xk.js.map +1 -0
- package/public/assets/{loading-1PhCNPTJ.js → loading-j5J_ghLL.js} +2 -2
- package/public/assets/{loading-1PhCNPTJ.js.map → loading-j5J_ghLL.js.map} +1 -1
- package/public/assets/{main-UjL26F9i.js → main-Cv7E0c7r.js} +7 -7
- package/public/assets/{main-UjL26F9i.js.map → main-Cv7E0c7r.js.map} +1 -1
- package/public/assets/{markdown-BFEzPV6Z.js → markdown-Cg65SCwC.js} +4 -4
- package/public/assets/{markdown-BFEzPV6Z.js.map → markdown-Cg65SCwC.js.map} +1 -1
- package/public/assets/{startup-state-settings-card-X1QA2uNM.js → startup-state-settings-card-DMFtdRoa.js} +2 -2
- package/public/assets/{startup-state-settings-card-X1QA2uNM.js.map → startup-state-settings-card-DMFtdRoa.js.map} +1 -1
- package/public/assets/{terminal-square-BkG0S2-Z.js → terminal-square-DCn_Ac2k.js} +2 -2
- package/public/assets/{terminal-square-BkG0S2-Z.js.map → terminal-square-DCn_Ac2k.js.map} +1 -1
- package/public/assets/{todo-DKme4PqO.js → todo-DyaFCX9E.js} +2 -2
- package/public/assets/{todo-DKme4PqO.js.map → todo-DyaFCX9E.js.map} +1 -1
- package/public/assets/{tool-call-DZIN0BAW.js → tool-call-DlJUX9AW.js} +4 -4
- package/public/assets/{tool-call-DZIN0BAW.js.map → tool-call-DlJUX9AW.js.map} +1 -1
- package/public/assets/{unified-picker-Ml-4x3ux.js → unified-picker-CrW1bp1Y.js} +2 -2
- package/public/assets/{unified-picker-Ml-4x3ux.js.map → unified-picker-CrW1bp1Y.js.map} +1 -1
- package/public/assets/{wrap-text-B_W6fnE7.js → wrap-text-DLR5jp4s.js} +2 -2
- package/public/assets/{wrap-text-B_W6fnE7.js.map → wrap-text-DLR5jp4s.js.map} +1 -1
- package/public/index.html +2 -2
- package/public/loading.html +2 -2
- package/public/sw.js +1 -1
- package/public/sw.js.map +1 -1
- package/dist/opencode-update/managed-installation.js +0 -102
- package/dist/opencode-update/managed-installation.js.map +0 -1
- package/dist/opencode-update/managed-installation.test.js +0 -102
- package/dist/opencode-update/managed-installation.test.js.map +0 -1
- package/public/assets/index-Bme8jj6C.js +0 -2
- package/public/assets/index-Bme8jj6C.js.map +0 -1
- package/public/assets/index-BxPI94Ww.js +0 -2
- package/public/assets/index-BxPI94Ww.js.map +0 -1
- package/public/assets/index-Cm6Bv3OW.js +0 -2
- package/public/assets/index-Cm6Bv3OW.js.map +0 -1
- package/public/assets/index-Cn9xpv8K.js +0 -2
- package/public/assets/index-Cn9xpv8K.js.map +0 -1
- package/public/assets/index-CooBjdE-.js +0 -2
- package/public/assets/index-CooBjdE-.js.map +0 -1
- package/public/assets/index-CvWB7Vfc.js +0 -2
- package/public/assets/index-CvWB7Vfc.js.map +0 -1
- package/public/assets/index-DFCjhysu.js +0 -3
- package/public/assets/index-DFCjhysu.js.map +0 -1
- package/public/assets/index-DR8ddwAP.js +0 -2
- package/public/assets/index-DR8ddwAP.js.map +0 -1
- package/public/assets/index-THD8itHb.js +0 -2
- package/public/assets/index-THD8itHb.js.map +0 -1
- package/public/assets/index-_bmTx26k.js +0 -2
- package/public/assets/index-_bmTx26k.js.map +0 -1
package/public/sw.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sw.js","sources":["../../../../../../../tmp/c8c868e20066dc7b2be88357a4340545/sw.js"],"sourcesContent":["import {registerRoute as workbox_routing_registerRoute} from '/home/runner/work/CodeNomad/CodeNomad/node_modules/workbox-routing/registerRoute.mjs';\nimport {ExpirationPlugin as workbox_expiration_ExpirationPlugin} from '/home/runner/work/CodeNomad/CodeNomad/node_modules/workbox-expiration/ExpirationPlugin.mjs';\nimport {CacheableResponsePlugin as workbox_cacheable_response_CacheableResponsePlugin} from '/home/runner/work/CodeNomad/CodeNomad/node_modules/workbox-cacheable-response/CacheableResponsePlugin.mjs';\nimport {CacheFirst as workbox_strategies_CacheFirst} from '/home/runner/work/CodeNomad/CodeNomad/node_modules/workbox-strategies/CacheFirst.mjs';\nimport {clientsClaim as workbox_core_clientsClaim} from '/home/runner/work/CodeNomad/CodeNomad/node_modules/workbox-core/clientsClaim.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/home/runner/work/CodeNomad/CodeNomad/node_modules/workbox-precaching/precacheAndRoute.mjs';\nimport {cleanupOutdatedCaches as workbox_precaching_cleanupOutdatedCaches} from '/home/runner/work/CodeNomad/CodeNomad/node_modules/workbox-precaching/cleanupOutdatedCaches.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.skipWaiting();\n\nworkbox_core_clientsClaim();\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"ui-version.json\",\n \"revision\": \"d0b7dde94c847511c6aa1deba233604a\"\n },\n {\n \"url\": \"registerSW.js\",\n \"revision\": \"1872c500de691dce40960bb85481de07\"\n },\n {\n \"url\": \"pwa-64x64.png\",\n \"revision\": \"55fc93ef82eddd32757c324c67f4d8f1\"\n },\n {\n \"url\": \"pwa-512x512.png\",\n \"revision\": \"d8a4783526b318a4a52001e9c9211042\"\n },\n {\n \"url\": \"pwa-192x192.png\",\n \"revision\": \"7d5867127ea8948a52f4eb886da6fca9\"\n },\n {\n \"url\": \"monaco.worker.js\",\n \"revision\": \"47d7f51fe40cc40367130f6c0e059886\"\n },\n {\n \"url\": \"maskable-icon-512x512.png\",\n \"revision\": \"976548c7ab2d6651e02451cffe3439ec\"\n },\n {\n \"url\": \"manifest.webmanifest\",\n \"revision\": \"3587c37712635a9f01cc4906c536d9a9\"\n },\n {\n \"url\": \"logo.png\",\n \"revision\": \"c88fc77a366f290821abc617e67e6674\"\n },\n {\n \"url\": \"favicon.ico\",\n \"revision\": \"62e8e3f28a97401e2932f62503cbdd6b\"\n },\n {\n \"url\": \"apple-touch-icon-180x180.png\",\n \"revision\": \"8252a341f68ec24937e6aaa5d422f87e\"\n },\n {\n \"url\": \"assets/zig-VOosw3JB.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/zenscript-DVFEvuxE.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/yaml-Buea-lGh.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/xsl-CtQFsRM5.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/xml-sdJ4AIDG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wrap-text-B_W6fnE7.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wolfram-lXgVvXCa.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wit-5i3qLPDT.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wikitext-BhOHFoWU.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wgsl-Dx-B1_4e.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wenyan-BV7otONQ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wasm-MzD3tlZU.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wasm-CG6Dc4jp.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vyper-CDx5xZoG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vue-vine-_Ih-lPRR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vue-html-DAAvJJDi.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vue-CCoi5OLL.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vitesse-light-CVO1_9PV.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vitesse-dark-D0r3Knsf.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vitesse-black-Bkuqu6BP.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/viml-CJc9bBzg.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vhdl-CeAyd5Ju.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vesper-DU1UobuO.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/verilog-BQ8w6xss.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vb-D17OF-Vu.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vala-CsfeWuGM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/v-BcVCzyr7.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/unified-picker-Ml-4x3ux.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/typst-DHCkPAjA.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/typespec-Df68jz8_.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/typescript-BPQ3VLAy.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/twig-CO9l9SDP.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/turtle-BsS91CYL.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/tsx-COt5Ahok.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/tsv-B_m7g4N7.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ts-tags-zn1MmPIZ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/tool-call-DZIN0BAW.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/toml-vGWfd6FD.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/tokyo-night-hegEt444.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/todo-DKme4PqO.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/tex-Cppo0RY3.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/terraform-BETggiCN.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/terminal-square-BkG0S2-Z.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/templ-W15q3VgB.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/tcl-dwOrl1Do.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/tasl-QIJgUcNo.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/talonscript-CkByrt1z.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/systemd-4A_iFExJ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/system-verilog-CnnmHF94.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/synthwave-84-CbfX1IO0.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/swift-Dg5xB15N.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/svelte-3Dk4HxPD.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/stylus-BEDo0Tqx.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/stata-BH5u7GGu.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/startup-state-settings-card-X1QA2uNM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ssh-config-_ykCGR6B.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sql-BLtJtn59.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/splunk-BtCnVYZw.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sparql-rVzFXLq3.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/soy-Brmx7dQM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/solidity-BbcW6ACK.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/solarized-light-L9t79GZl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/solarized-dark-DXbdFlpD.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/snazzy-light-Bw305WKR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/smalltalk-BERRCDM3.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/slack-ochin-DqwNpetd.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/slack-dark-BthQWCQV.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/shellsession-BADoaaVG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/shellscript-Yzrsuije.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/shaderlab-Dg9Lc6iA.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sdbl-DVxCFoDh.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/scss-OYdSNvt2.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/scheme-C98Dy4si.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/scala-C151Ov-r.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sass-Cj5Yp3dK.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sas-cz2c8ADy.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/rust-B1yitclQ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ruby-BvKwtOVI.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/rst-B0xPkSld.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/rosmsg-BJDFO7_C.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/rose-pine-moon-NleAzG8P.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/rose-pine-dawn-CnK8MTSM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/rose-pine-BHrmToEH.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/riscv-BM1_JUlF.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/rel-C3B-1QV4.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/regexp-CDVJQ6XC.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/reg-C-SQnVFl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/red-bN70gL4F.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/razor-WgofotgN.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/raku-DXvB9xmW.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/racket-BqYA7rlc.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/r-DiinP2Uv.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/qss-IeuSbFQv.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/qmldir-C8lEn-DE.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/qml-3beO22l8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/python-B6aJPvgy.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/purescript-CklMAg4u.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/puppet-BMWR74SV.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/pug-CGlum2m_.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/proto-DyJlTyXw.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/prolog-CbFg5uaA.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/prisma-Dd19v3D-.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/powershell-Dpen1YoG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/powerquery-CEu0bR-o.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/postcss-CXtECtnM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/polar-C0HS_06l.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/poimandres-CS3Unz2-.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/po-BTJTHyun.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/plsql-ChMvpjG-.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/plastic-3e1v2bzS.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/pkl-u5AG7uiY.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/php-CDn_0X-4.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/perl-C0TMdlhV.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/pascal-D93ZcfNL.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/one-light-PoHY5YXO.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/one-dark-pro-DVMEJ2y_.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ocaml-C0hk2d4L.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/objective-cpp-CLxacb5B.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/objective-c-DXmwc3jG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/nushell-C-sUppwS.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/nord-Ddv68eIx.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/nix-BbRYJGeE.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/nim-CVrawwO9.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/night-owl-C39BiMTA.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/nginx-DknmC5AR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/nextflow-CUEJCptM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/narrat-DRg8JJMk.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/move-Bu9oaDYs.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/monokai-D4h5O-jR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/monaco-viewer-BtzCmjFO.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/mojo-1DNp92w6.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/mipsasm-CKIfxQSi.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/min-light-CTRr51gU.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/min-dark-CafNBF8u.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/mermaid-DKYwYmdq.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/mdx-Cmh6b_Ma.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/mdc-DUICxH0z.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/matlab-D7o27uSR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/material-theme-palenight-Csfq5Kiy.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/material-theme-ocean-CyktbL80.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/material-theme-lighter-B0m2ddpp.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/material-theme-darker-BfHTSMKl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/material-theme-D5KoaKCx.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/marko-CPi9NSCl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/markdown-Cvjx9yec.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/markdown-BFEzPV6Z.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/make-CHLpvVh8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/main-UjL26F9i.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/luau-CXu1NL6O.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/lua-BbnMAYS6.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/logo-BtOb2qkB.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/log-2UxHyX5q.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/loading-CdhHiSED.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/loading-1PhCNPTJ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/llvm-BtvRca6l.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/liquid-DYVedYrR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/light-plus-B7mTdjB0.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/less-B1dDrJ26.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/lean-DP1Csr6i.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/latex-BUKiar2Z.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/laserwave-DUszq2jm.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/kusto-BvAqAH-y.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/kotlin-BdnUsdx6.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/kdl-DV7GczEv.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/kanagawa-wave-DWedfzmr.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/kanagawa-lotus-CfQXZHmo.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/kanagawa-dragon-CkXjmgJE.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/julia-C8NyazO9.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/jsx-g9-lgVsj.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/jssm-C2t-YnRu.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/jsonnet-DFQXde-d.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/jsonl-DcaNXYhu.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/jsonc-Des-eS-w.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/json5-C9tS-k6U.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/json-Cp-IABpG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/jison-wvAkD_A8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/jinja-4LBKfQ-Z.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/javascript-wDzz0qaB.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/java-CylS5w8V.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ini-BEwlwnbL.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-_bmTx26k.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-THD8itHb.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-DR8ddwAP.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-DFCjhysu.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-CvWB7Vfc.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-CooBjdE-.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-Cn9xpv8K.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-Cm6Bv3OW.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-CXyTJ12Z.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-CHztP7Qx.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-BxPI94Ww.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-Bme8jj6C.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-4mzZPz2j.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/imba-DGztddWO.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/hy-DFXneXwc.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/hxml-Bvhsp5Yf.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/hurl-irOxFIW8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/http-jrhK8wxY.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/html-derivative-BFtXZ54Q.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/html-GMplVEZG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/houston-DnULxvSX.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/hlsl-D3lLCCz7.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/hjson-D5-asLiD.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/highlight-vendor-8FKMu9os.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/hcl-BWvSN4gD.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/haxe-CzTSHFRz.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/haskell-Df6bDoY_.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/handlebars-BL8al0AC.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/haml-B8DHNrY2.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/hack-CaT9iCJl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gruvbox-light-soft-hJgmCMqR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gruvbox-light-medium-DRw_LuNl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gruvbox-light-hard-CH1njM8p.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gruvbox-dark-soft-CVdnzihN.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gruvbox-dark-medium-GsRaNv29.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gruvbox-dark-hard-CFHQjOhq.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/groovy-gcz8RCvz.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/graphql-ChdNCCLP.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/go-Dn2_MT6a.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gnuplot-DdkO51Og.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/glsl-DplSGwfg.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/glimmer-ts-U6CK756n.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/glimmer-js-Rg0-pVw9.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gleam-BspZqrRM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/github-light-high-contrast-BfjtVDDH.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/github-light-default-D7oLnXFd.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/github-light-DAi9KRSo.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/github-dark-high-contrast-E3gJ1_iC.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/github-dark-dimmed-DH5Ifo-i.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/github-dark-default-Cuk6v7N8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/github-dark-DHJKELXO.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/git-rebase-r7XF79zn.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/git-diff-vendor-HAZkIolJ.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/git-diff-vendor-CT8HfOQw.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/git-commit-F4YmCXRG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gherkin-DyxjwDmM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/genie-D0YGMca9.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gdshader-DkwncUOv.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gdscript-DTMYz4Jt.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gdresource-B7Tvp0Sc.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/fsharp-CXgrBDvD.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/fortran-free-form-D22FLkUw.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/fortran-fixed-form-BZjJHVRy.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/fluent-C4IJs8-o.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/fish-BvzEVeQv.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/fennel-BYunw83y.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/fast-diff-vendor-DgdwVvTQ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/everforest-light-C8M2exoo.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/everforest-dark-BgDCqdQA.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/erlang-DsQrWhSR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/erb-BOJIQeun.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/emacs-lisp-C9XAeP06.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/elm-DbKCFpqz.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/elixir-CDX3lj18.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/edge-BkV0erSs.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dream-maker-BtqSS_iP.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dracula-soft-BXkSAIEj.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dracula-BzJJZx-M.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dotenv-Da5cRb03.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/docker-BcOcwvcX.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/diff-viewer-D_koHVvF.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/diff-D97Zzqfu.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/desktop-BmXAJ9_W.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dax-CEL-wOlO.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dart-CF10PKvl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dark-plus-eOWES_5F.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/d-85-TOEBH.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/cypher-COkxafJQ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/cue-D82EKSYY.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/csv-fuZLfV_i.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/css-DPfMkruS.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/csharp-CX12Zw3r.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/crystal-tKQVLTB8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/cpp-CofmeUqb.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/coq-DkFqJrB1.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/common-lisp-Cg-RD9OK.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/coffee-Ch7k5sss.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/codeql-DsOJ9woJ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/codeowners-Bp6g37R7.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/cobol-nwyudZeR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/cmake-D1j8_8rp.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/clojure-P80f7IUj.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/client-state-LGeRE6k3.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/clarity-D53aC0YG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/catppuccin-mocha-D87Tk5Gz.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/catppuccin-macchiato-DQyhUUbL.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/catppuccin-latte-C9dUb6Cb.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/catppuccin-frappe-DFWUc33u.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/cairo-KRGpt6FW.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/cadence-Bv_4Rxtq.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/c-BIGW1oBm.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/bundle-full-DbjjKxlx.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/bsl-BO_Y6i37.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/blade-DVc8C-J4.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/bicep-Bmn6On1c.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/bibtex-CHM0blh-.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/berry-D08WgyRC.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/beancount-k_qm7-4y.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/bat-BkioyH1T.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ballerina-BFfxhgS-.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ayu-dark-Cv9koXgw.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/awk-DMzUqQB5.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/aurora-x-D-2ljcwZ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/astro-CbQHKStN.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/asm-D_Q5rh1f.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/asciidoc-Dv7Oe6Be.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ara-BRHolxvo.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/applescript-Co6uUVPk.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/apl-dKokRX4l.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/apex-DhZLUxFE.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/apache-Pmp26Uib.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/angular-ts-BwZT4LLn.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/angular-html-CU67Zn6k.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/andromeeda-C-Jbm3Hp.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/align-justify-DYu1Iipu.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ada-bCR0ucgS.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/actionscript-3-CfeIJUat.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/abap-BdImnpbu.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/StatusTab-CLJHjaqS.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/SplitFilePanel-DxTSWUXW.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size4-Regular-DWFBv043.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size4-Regular-BF-4gkZK.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size3-Regular-DgpXs0kz.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size3-Regular-CTq5MqoE.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size2-Regular-oD1tc_U0.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size2-Regular-Dy4dx90m.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size2-Regular-B7gKUWhC.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size1-Regular-mCD8mA8B.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size1-Regular-Dbsnue_I.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size1-Regular-C195tn64.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Script-Regular-D5yQViql.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Script-Regular-D3wIWfF6.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Script-Regular-C5JkGWo-.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Italic-DN2j7dab.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Math-Italic-t53AETM-.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Math-Italic-flOr_0UB.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Math-Italic-DA0__PXp.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Regular-ypZvNtVU.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Regular-Dr94JaBh.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Regular-B22Nviop.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Italic-NWA7e6Wa.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Italic-BMLOBm91.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Italic-3WenGoN9.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-BoldItalic-SpSLRI95.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Bold-waoOVXN0.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Bold-Jm3AIy58.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Bold-Cx986IdX.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Fraktur-Regular-CB_wures.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Fraktur-Bold-BsDP51OF.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_AMS-Regular-DRggAlZN.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_AMS-Regular-DMm9YOAa.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_AMS-Regular-BQhdFMY1.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/GitChangesTab-CYn01GSK.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/FilesTab-D8Ik74MT.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/CodeNomad-Icon-bmTWNPXy.png\",\n \"revision\": null\n },\n {\n \"url\": \"assets/App-DHe1TgnC.js\",\n \"revision\": null\n },\n {\n \"url\": \"manifest.webmanifest\",\n \"revision\": \"4f4aaad9542bc67e284999ba91ccc883\"\n }\n], {});\nworkbox_precaching_cleanupOutdatedCaches();\n\n\n\nworkbox_routing_registerRoute(({ url, request }) => {\n if (url.pathname.startsWith(\"/api/\")) return false;\n if (request.destination === \"document\") return false;\n return [\"script\", \"style\", \"image\", \"font\"].includes(request.destination);\n }, new workbox_strategies_CacheFirst({ \"cacheName\":\"asset-cache\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 200, maxAgeSeconds: 2592000 }), new workbox_cacheable_response_CacheableResponsePlugin({ statuses: [ 0, 200 ] })] }), 'GET');\n\n\n\n\n"],"names":["self","skipWaiting","workbox_core_clientsClaim","workbox_precaching_precacheAndRoute","url","revision","workbox_precaching_cleanupOutdatedCaches","workbox_routing_registerRoute","request","pathname","startsWith","destination","includes","workbox_strategies_CacheFirst","cacheName","plugins","workbox_expiration_ExpirationPlugin","maxEntries","maxAgeSeconds","workbox_cacheable_response_CacheableResponsePlugin","statuses"],"mappings":"inBAyBAA,KAAKC,cAELC,EAAAA,eAQAC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,WACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,wBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,uBACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,iDACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,uBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,wBACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,8CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,wBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,wBACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,gDACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,+CACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,uBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,uBACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,+CACPC,SAAY,MAEd,CACED,IAAO,iDACPC,SAAY,MAEd,CACED,IAAO,gDACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,gDACPC,SAAY,MAEd,CACED,IAAO,+CACPC,SAAY,MAEd,CACED,IAAO,8CACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,8CACPC,SAAY,MAEd,CACED,IAAO,+CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,8CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,8CACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,8CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,gDACPC,SAAY,MAEd,CACED,IAAO,kDACPC,SAAY,MAEd,CACED,IAAO,iDACPC,SAAY,MAEd,CACED,IAAO,+CACPC,SAAY,MAEd,CACED,IAAO,8CACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,uBACPC,SAAY,qCAEb,CAAE,GACLC,EAAAA,wBAIAC,EAAAA,cAA8B,EAAGH,MAAKI,cACpBJ,EAAIK,SAASC,WAAW,WACA,aAAxBF,EAAQG,aACL,CAAC,SAAU,QAAS,QAAS,QAAQC,SAASJ,EAAQG,cAC5D,IAAIE,EAAAA,WAA8B,CAAEC,UAAY,cAAeC,QAAS,CAAC,IAAIC,mBAAoC,CAAEC,WAAY,IAAKC,cAAe,SAAY,IAAIC,EAAAA,wBAAmD,CAAEC,SAAU,CAAE,EAAG,UAAc"}
|
|
1
|
+
{"version":3,"file":"sw.js","sources":["../../../../../../../tmp/81e114d36e62b6278d26287fc1586816/sw.js"],"sourcesContent":["import {registerRoute as workbox_routing_registerRoute} from '/home/runner/work/CodeNomad/CodeNomad/node_modules/workbox-routing/registerRoute.mjs';\nimport {ExpirationPlugin as workbox_expiration_ExpirationPlugin} from '/home/runner/work/CodeNomad/CodeNomad/node_modules/workbox-expiration/ExpirationPlugin.mjs';\nimport {CacheableResponsePlugin as workbox_cacheable_response_CacheableResponsePlugin} from '/home/runner/work/CodeNomad/CodeNomad/node_modules/workbox-cacheable-response/CacheableResponsePlugin.mjs';\nimport {CacheFirst as workbox_strategies_CacheFirst} from '/home/runner/work/CodeNomad/CodeNomad/node_modules/workbox-strategies/CacheFirst.mjs';\nimport {clientsClaim as workbox_core_clientsClaim} from '/home/runner/work/CodeNomad/CodeNomad/node_modules/workbox-core/clientsClaim.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/home/runner/work/CodeNomad/CodeNomad/node_modules/workbox-precaching/precacheAndRoute.mjs';\nimport {cleanupOutdatedCaches as workbox_precaching_cleanupOutdatedCaches} from '/home/runner/work/CodeNomad/CodeNomad/node_modules/workbox-precaching/cleanupOutdatedCaches.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.skipWaiting();\n\nworkbox_core_clientsClaim();\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"ui-version.json\",\n \"revision\": \"d0b7dde94c847511c6aa1deba233604a\"\n },\n {\n \"url\": \"registerSW.js\",\n \"revision\": \"1872c500de691dce40960bb85481de07\"\n },\n {\n \"url\": \"pwa-64x64.png\",\n \"revision\": \"55fc93ef82eddd32757c324c67f4d8f1\"\n },\n {\n \"url\": \"pwa-512x512.png\",\n \"revision\": \"d8a4783526b318a4a52001e9c9211042\"\n },\n {\n \"url\": \"pwa-192x192.png\",\n \"revision\": \"7d5867127ea8948a52f4eb886da6fca9\"\n },\n {\n \"url\": \"monaco.worker.js\",\n \"revision\": \"47d7f51fe40cc40367130f6c0e059886\"\n },\n {\n \"url\": \"maskable-icon-512x512.png\",\n \"revision\": \"976548c7ab2d6651e02451cffe3439ec\"\n },\n {\n \"url\": \"manifest.webmanifest\",\n \"revision\": \"3587c37712635a9f01cc4906c536d9a9\"\n },\n {\n \"url\": \"logo.png\",\n \"revision\": \"c88fc77a366f290821abc617e67e6674\"\n },\n {\n \"url\": \"favicon.ico\",\n \"revision\": \"62e8e3f28a97401e2932f62503cbdd6b\"\n },\n {\n \"url\": \"apple-touch-icon-180x180.png\",\n \"revision\": \"8252a341f68ec24937e6aaa5d422f87e\"\n },\n {\n \"url\": \"assets/zig-VOosw3JB.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/zenscript-DVFEvuxE.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/yaml-Buea-lGh.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/xsl-CtQFsRM5.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/xml-sdJ4AIDG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wrap-text-DLR5jp4s.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wolfram-lXgVvXCa.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wit-5i3qLPDT.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wikitext-BhOHFoWU.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wgsl-Dx-B1_4e.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wenyan-BV7otONQ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wasm-MzD3tlZU.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wasm-CG6Dc4jp.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vyper-CDx5xZoG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vue-vine-_Ih-lPRR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vue-html-DAAvJJDi.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vue-CCoi5OLL.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vitesse-light-CVO1_9PV.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vitesse-dark-D0r3Knsf.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vitesse-black-Bkuqu6BP.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/viml-CJc9bBzg.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vhdl-CeAyd5Ju.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vesper-DU1UobuO.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/verilog-BQ8w6xss.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vb-D17OF-Vu.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vala-CsfeWuGM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/v-BcVCzyr7.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/unified-picker-CrW1bp1Y.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/typst-DHCkPAjA.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/typespec-Df68jz8_.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/typescript-BPQ3VLAy.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/twig-CO9l9SDP.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/turtle-BsS91CYL.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/tsx-COt5Ahok.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/tsv-B_m7g4N7.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ts-tags-zn1MmPIZ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/tool-call-DlJUX9AW.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/toml-vGWfd6FD.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/tokyo-night-hegEt444.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/todo-DyaFCX9E.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/tex-Cppo0RY3.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/terraform-BETggiCN.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/terminal-square-DCn_Ac2k.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/templ-W15q3VgB.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/tcl-dwOrl1Do.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/tasl-QIJgUcNo.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/talonscript-CkByrt1z.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/systemd-4A_iFExJ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/system-verilog-CnnmHF94.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/synthwave-84-CbfX1IO0.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/swift-Dg5xB15N.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/svelte-3Dk4HxPD.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/stylus-BEDo0Tqx.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/stata-BH5u7GGu.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/startup-state-settings-card-DMFtdRoa.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ssh-config-_ykCGR6B.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sql-BLtJtn59.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/splunk-BtCnVYZw.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sparql-rVzFXLq3.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/soy-Brmx7dQM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/solidity-BbcW6ACK.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/solarized-light-L9t79GZl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/solarized-dark-DXbdFlpD.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/snazzy-light-Bw305WKR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/smalltalk-BERRCDM3.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/slack-ochin-DqwNpetd.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/slack-dark-BthQWCQV.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/shellsession-BADoaaVG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/shellscript-Yzrsuije.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/shaderlab-Dg9Lc6iA.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sdbl-DVxCFoDh.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/scss-OYdSNvt2.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/scheme-C98Dy4si.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/scala-C151Ov-r.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sass-Cj5Yp3dK.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sas-cz2c8ADy.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/rust-B1yitclQ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ruby-BvKwtOVI.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/rst-B0xPkSld.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/rosmsg-BJDFO7_C.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/rose-pine-moon-NleAzG8P.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/rose-pine-dawn-CnK8MTSM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/rose-pine-BHrmToEH.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/riscv-BM1_JUlF.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/rel-C3B-1QV4.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/regexp-CDVJQ6XC.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/reg-C-SQnVFl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/red-bN70gL4F.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/razor-WgofotgN.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/raku-DXvB9xmW.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/racket-BqYA7rlc.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/r-DiinP2Uv.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/qss-IeuSbFQv.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/qmldir-C8lEn-DE.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/qml-3beO22l8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/python-B6aJPvgy.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/purescript-CklMAg4u.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/puppet-BMWR74SV.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/pug-CGlum2m_.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/proto-DyJlTyXw.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/prolog-CbFg5uaA.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/prisma-Dd19v3D-.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/powershell-Dpen1YoG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/powerquery-CEu0bR-o.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/postcss-CXtECtnM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/polar-C0HS_06l.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/poimandres-CS3Unz2-.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/po-BTJTHyun.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/plsql-ChMvpjG-.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/plastic-3e1v2bzS.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/pkl-u5AG7uiY.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/php-CDn_0X-4.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/perl-C0TMdlhV.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/pascal-D93ZcfNL.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/one-light-PoHY5YXO.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/one-dark-pro-DVMEJ2y_.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ocaml-C0hk2d4L.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/objective-cpp-CLxacb5B.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/objective-c-DXmwc3jG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/nushell-C-sUppwS.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/nord-Ddv68eIx.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/nix-BbRYJGeE.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/nim-CVrawwO9.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/night-owl-C39BiMTA.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/nginx-DknmC5AR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/nextflow-CUEJCptM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/narrat-DRg8JJMk.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/move-Bu9oaDYs.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/monokai-D4h5O-jR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/monaco-viewer-BtzCmjFO.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/mojo-1DNp92w6.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/mipsasm-CKIfxQSi.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/min-light-CTRr51gU.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/min-dark-CafNBF8u.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/mermaid-DKYwYmdq.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/mdx-Cmh6b_Ma.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/mdc-DUICxH0z.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/matlab-D7o27uSR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/material-theme-palenight-Csfq5Kiy.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/material-theme-ocean-CyktbL80.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/material-theme-lighter-B0m2ddpp.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/material-theme-darker-BfHTSMKl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/material-theme-D5KoaKCx.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/marko-CPi9NSCl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/markdown-Cvjx9yec.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/markdown-Cg65SCwC.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/make-CHLpvVh8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/main-Cv7E0c7r.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/luau-CXu1NL6O.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/lua-BbnMAYS6.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/logo-BtOb2qkB.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/log-2UxHyX5q.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/loading-j5J_ghLL.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/loading-CdhHiSED.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/llvm-BtvRca6l.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/liquid-DYVedYrR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/light-plus-B7mTdjB0.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/less-B1dDrJ26.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/lean-DP1Csr6i.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/latex-BUKiar2Z.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/laserwave-DUszq2jm.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/kusto-BvAqAH-y.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/kotlin-BdnUsdx6.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/kdl-DV7GczEv.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/kanagawa-wave-DWedfzmr.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/kanagawa-lotus-CfQXZHmo.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/kanagawa-dragon-CkXjmgJE.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/julia-C8NyazO9.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/jsx-g9-lgVsj.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/jssm-C2t-YnRu.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/jsonnet-DFQXde-d.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/jsonl-DcaNXYhu.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/jsonc-Des-eS-w.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/json5-C9tS-k6U.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/json-Cp-IABpG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/jison-wvAkD_A8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/jinja-4LBKfQ-Z.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/javascript-wDzz0qaB.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/java-CylS5w8V.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ini-BEwlwnbL.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-eb2qu-xk.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-TnTncRlr.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-DwKq8v48.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-Dsd7n295.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-D_H_gYdX.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-DTGOXoDH.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-Cqd_P8c4.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-Cgp1TEtC.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-CTVIWXHZ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-CLtLzsWy.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-C5i7ut9u.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-9bba6B1A.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-4mzZPz2j.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/imba-DGztddWO.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/hy-DFXneXwc.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/hxml-Bvhsp5Yf.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/hurl-irOxFIW8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/http-jrhK8wxY.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/html-derivative-BFtXZ54Q.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/html-GMplVEZG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/houston-DnULxvSX.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/hlsl-D3lLCCz7.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/hjson-D5-asLiD.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/highlight-vendor-8FKMu9os.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/hcl-BWvSN4gD.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/haxe-CzTSHFRz.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/haskell-Df6bDoY_.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/handlebars-BL8al0AC.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/haml-B8DHNrY2.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/hack-CaT9iCJl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gruvbox-light-soft-hJgmCMqR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gruvbox-light-medium-DRw_LuNl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gruvbox-light-hard-CH1njM8p.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gruvbox-dark-soft-CVdnzihN.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gruvbox-dark-medium-GsRaNv29.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gruvbox-dark-hard-CFHQjOhq.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/groovy-gcz8RCvz.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/graphql-ChdNCCLP.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/go-Dn2_MT6a.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gnuplot-DdkO51Og.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/glsl-DplSGwfg.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/glimmer-ts-U6CK756n.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/glimmer-js-Rg0-pVw9.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gleam-BspZqrRM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/github-light-high-contrast-BfjtVDDH.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/github-light-default-D7oLnXFd.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/github-light-DAi9KRSo.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/github-dark-high-contrast-E3gJ1_iC.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/github-dark-dimmed-DH5Ifo-i.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/github-dark-default-Cuk6v7N8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/github-dark-DHJKELXO.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/git-rebase-r7XF79zn.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/git-diff-vendor-HAZkIolJ.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/git-diff-vendor-CT8HfOQw.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/git-commit-F4YmCXRG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gherkin-DyxjwDmM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/genie-D0YGMca9.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gdshader-DkwncUOv.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gdscript-DTMYz4Jt.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gdresource-B7Tvp0Sc.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/fsharp-CXgrBDvD.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/fortran-free-form-D22FLkUw.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/fortran-fixed-form-BZjJHVRy.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/fluent-C4IJs8-o.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/fish-BvzEVeQv.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/fennel-BYunw83y.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/fast-diff-vendor-DgdwVvTQ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/everforest-light-C8M2exoo.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/everforest-dark-BgDCqdQA.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/erlang-DsQrWhSR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/erb-BOJIQeun.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/emacs-lisp-C9XAeP06.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/elm-DbKCFpqz.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/elixir-CDX3lj18.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/edge-BkV0erSs.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dream-maker-BtqSS_iP.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dracula-soft-BXkSAIEj.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dracula-BzJJZx-M.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dotenv-Da5cRb03.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/docker-BcOcwvcX.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/diff-viewer-Dxjea-rB.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/diff-D97Zzqfu.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/desktop-BmXAJ9_W.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dax-CEL-wOlO.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dart-CF10PKvl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dark-plus-eOWES_5F.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/d-85-TOEBH.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/cypher-COkxafJQ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/cue-D82EKSYY.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/csv-fuZLfV_i.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/css-DPfMkruS.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/csharp-CX12Zw3r.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/crystal-tKQVLTB8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/cpp-CofmeUqb.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/coq-DkFqJrB1.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/common-lisp-Cg-RD9OK.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/coffee-Ch7k5sss.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/codeql-DsOJ9woJ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/codeowners-Bp6g37R7.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/cobol-nwyudZeR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/cmake-D1j8_8rp.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/clojure-P80f7IUj.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/client-state-DTQzqBPJ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/clarity-D53aC0YG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/catppuccin-mocha-D87Tk5Gz.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/catppuccin-macchiato-DQyhUUbL.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/catppuccin-latte-C9dUb6Cb.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/catppuccin-frappe-DFWUc33u.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/cairo-KRGpt6FW.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/cadence-Bv_4Rxtq.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/c-BIGW1oBm.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/bundle-full-LgLNZmib.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/bsl-BO_Y6i37.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/blade-DVc8C-J4.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/bicep-Bmn6On1c.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/bibtex-CHM0blh-.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/berry-D08WgyRC.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/beancount-k_qm7-4y.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/bat-BkioyH1T.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ballerina-BFfxhgS-.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ayu-dark-Cv9koXgw.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/awk-DMzUqQB5.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/aurora-x-D-2ljcwZ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/astro-CbQHKStN.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/asm-D_Q5rh1f.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/asciidoc-Dv7Oe6Be.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ara-BRHolxvo.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/applescript-Co6uUVPk.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/apl-dKokRX4l.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/apex-DhZLUxFE.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/apache-Pmp26Uib.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/angular-ts-BwZT4LLn.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/angular-html-CU67Zn6k.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/andromeeda-C-Jbm3Hp.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/align-justify-BMi4r2XK.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ada-bCR0ucgS.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/actionscript-3-CfeIJUat.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/abap-BdImnpbu.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/StatusTab-DljyzM07.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/SplitFilePanel-VXkE7jgT.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size4-Regular-DWFBv043.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size4-Regular-BF-4gkZK.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size3-Regular-DgpXs0kz.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size3-Regular-CTq5MqoE.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size2-Regular-oD1tc_U0.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size2-Regular-Dy4dx90m.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size2-Regular-B7gKUWhC.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size1-Regular-mCD8mA8B.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size1-Regular-Dbsnue_I.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size1-Regular-C195tn64.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Script-Regular-D5yQViql.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Script-Regular-D3wIWfF6.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Script-Regular-C5JkGWo-.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Italic-DN2j7dab.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Math-Italic-t53AETM-.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Math-Italic-flOr_0UB.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Math-Italic-DA0__PXp.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Regular-ypZvNtVU.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Regular-Dr94JaBh.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Regular-B22Nviop.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Italic-NWA7e6Wa.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Italic-BMLOBm91.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Italic-3WenGoN9.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-BoldItalic-SpSLRI95.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Bold-waoOVXN0.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Bold-Jm3AIy58.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Bold-Cx986IdX.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Fraktur-Regular-CB_wures.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Fraktur-Bold-BsDP51OF.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_AMS-Regular-DRggAlZN.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_AMS-Regular-DMm9YOAa.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_AMS-Regular-BQhdFMY1.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/GitChangesTab-8MxRVYHz.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/FilesTab-JN0c2Op2.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/CodeNomad-Icon-bmTWNPXy.png\",\n \"revision\": null\n },\n {\n \"url\": \"assets/App-DXfroBn-.js\",\n \"revision\": null\n },\n {\n \"url\": \"manifest.webmanifest\",\n \"revision\": \"4f4aaad9542bc67e284999ba91ccc883\"\n }\n], {});\nworkbox_precaching_cleanupOutdatedCaches();\n\n\n\nworkbox_routing_registerRoute(({ url, request }) => {\n if (url.pathname.startsWith(\"/api/\")) return false;\n if (request.destination === \"document\") return false;\n return [\"script\", \"style\", \"image\", \"font\"].includes(request.destination);\n }, new workbox_strategies_CacheFirst({ \"cacheName\":\"asset-cache\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 200, maxAgeSeconds: 2592000 }), new workbox_cacheable_response_CacheableResponsePlugin({ statuses: [ 0, 200 ] })] }), 'GET');\n\n\n\n\n"],"names":["self","skipWaiting","workbox_core_clientsClaim","workbox_precaching_precacheAndRoute","url","revision","workbox_precaching_cleanupOutdatedCaches","workbox_routing_registerRoute","request","pathname","startsWith","destination","includes","workbox_strategies_CacheFirst","cacheName","plugins","workbox_expiration_ExpirationPlugin","maxEntries","maxAgeSeconds","workbox_cacheable_response_CacheableResponsePlugin","statuses"],"mappings":"inBAyBAA,KAAKC,cAELC,EAAAA,eAQAC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,WACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,wBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,uBACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,iDACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,uBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,wBACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,8CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,wBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,wBACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,gDACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,+CACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,uBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,uBACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,+CACPC,SAAY,MAEd,CACED,IAAO,iDACPC,SAAY,MAEd,CACED,IAAO,gDACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,gDACPC,SAAY,MAEd,CACED,IAAO,+CACPC,SAAY,MAEd,CACED,IAAO,8CACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,8CACPC,SAAY,MAEd,CACED,IAAO,+CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,8CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,8CACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,8CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,gDACPC,SAAY,MAEd,CACED,IAAO,kDACPC,SAAY,MAEd,CACED,IAAO,iDACPC,SAAY,MAEd,CACED,IAAO,+CACPC,SAAY,MAEd,CACED,IAAO,8CACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,uBACPC,SAAY,qCAEb,CAAE,GACLC,EAAAA,wBAIAC,EAAAA,cAA8B,EAAGH,MAAKI,cACpBJ,EAAIK,SAASC,WAAW,WACA,aAAxBF,EAAQG,aACL,CAAC,SAAU,QAAS,QAAS,QAAQC,SAASJ,EAAQG,cAC5D,IAAIE,EAAAA,WAA8B,CAAEC,UAAY,cAAeC,QAAS,CAAC,IAAIC,mBAAoC,CAAEC,WAAY,IAAKC,cAAe,SAAY,IAAIC,EAAAA,wBAAmD,CAAEC,SAAU,CAAE,EAAG,UAAc"}
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { execFile } from "node:child_process";
|
|
2
|
-
import { existsSync, readFileSync, readdirSync } from "node:fs";
|
|
3
|
-
import { mkdir, rename, rm, open } from "node:fs/promises";
|
|
4
|
-
import os from "node:os";
|
|
5
|
-
import path from "node:path";
|
|
6
|
-
import { randomUUID } from "node:crypto";
|
|
7
|
-
import { assertSupportedOpenCode } from "../opencode/runtime-support";
|
|
8
|
-
import { probeBinaryVersion } from "../workspaces/spawn";
|
|
9
|
-
import { compareVersionStrings } from "../releases/release-monitor";
|
|
10
|
-
// Never place changing installations in OpenCode's recursively watched config.
|
|
11
|
-
export function managedInstallRoot() {
|
|
12
|
-
return path.join(os.homedir(), ".local", "share", "codenomad", "opencode");
|
|
13
|
-
}
|
|
14
|
-
export function managedExecutable(root, version) {
|
|
15
|
-
return path.join(root, version, "node_modules", "@opencode", "cli", "bin", "opencode.exe");
|
|
16
|
-
}
|
|
17
|
-
export function readManagedExecutable(root = managedInstallRoot()) {
|
|
18
|
-
// Immutable receipts make selection monotonic across backends/processes.
|
|
19
|
-
// A slower older install can publish its receipt but cannot replace a newer
|
|
20
|
-
// selection. Unfinished staging/version directories never count as receipts.
|
|
21
|
-
let versions = [];
|
|
22
|
-
try {
|
|
23
|
-
versions = readdirSync(path.join(root, "selected"));
|
|
24
|
-
}
|
|
25
|
-
catch { /* First installation. */ }
|
|
26
|
-
try {
|
|
27
|
-
versions.push(readFileSync(path.join(root, "current"), "utf8").trim());
|
|
28
|
-
}
|
|
29
|
-
catch { /* Previous marker format is optional. */ }
|
|
30
|
-
return versions.filter(version => /^\d+\.\d+\.\d+$/.test(version))
|
|
31
|
-
.sort((a, b) => compareVersionStrings(b, a))
|
|
32
|
-
.map(version => managedExecutable(root, version)).find(binary => existsSync(binary));
|
|
33
|
-
}
|
|
34
|
-
/** npm from the official Node archive, beside the backend runtime on both hosts. */
|
|
35
|
-
export function bundledNpm(execPath = process.execPath) {
|
|
36
|
-
const directory = path.dirname(execPath);
|
|
37
|
-
const candidates = [path.join(directory, "node_modules", "npm", "bin", "npm-cli.js"),
|
|
38
|
-
path.join(directory, "..", "lib", "node_modules", "npm", "bin", "npm-cli.js")];
|
|
39
|
-
return candidates.find(candidate => existsSync(candidate));
|
|
40
|
-
}
|
|
41
|
-
export function executeInstaller(file, args, env) {
|
|
42
|
-
return new Promise((resolve, reject) => {
|
|
43
|
-
execFile(file, args, { env, windowsHide: true, timeout: 300_000, maxBuffer: 1024 * 1024 }, error => {
|
|
44
|
-
// Do not return npm's environment/config diagnostics to the browser.
|
|
45
|
-
if (error)
|
|
46
|
-
reject(new Error(`OpenCode installation failed (${error.killed ? "timeout" : error.code ?? "execution"})`));
|
|
47
|
-
else
|
|
48
|
-
resolve();
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
export async function installManagedOpenCode(version, options = {}) {
|
|
53
|
-
// An exact stable npm spec is an installation constraint, not runtime policy.
|
|
54
|
-
if (!/^\d+\.\d+\.\d+$/.test(version))
|
|
55
|
-
throw new Error("Installation requires an exact stable OpenCode version");
|
|
56
|
-
assertSupportedOpenCode(version);
|
|
57
|
-
const root = options.root ?? managedInstallRoot();
|
|
58
|
-
const node = options.node ?? process.execPath;
|
|
59
|
-
const npm = options.npm ?? bundledNpm(node);
|
|
60
|
-
if (!npm)
|
|
61
|
-
throw new Error("npm is unavailable beside the CodeNomad Node runtime");
|
|
62
|
-
const destination = path.join(root, version);
|
|
63
|
-
const staging = path.join(root, `.install-${randomUUID()}`);
|
|
64
|
-
const probe = options.probe ?? probeBinaryVersion;
|
|
65
|
-
await mkdir(root, { recursive: true });
|
|
66
|
-
try {
|
|
67
|
-
// Never overwrite the executable used by a running Windows daemon.
|
|
68
|
-
const existing = probe(managedExecutable(root, version));
|
|
69
|
-
if (!existing.valid || existing.version !== version) {
|
|
70
|
-
await mkdir(staging);
|
|
71
|
-
const env = { ...(options.env ?? process.env) };
|
|
72
|
-
const pathKey = Object.keys(env).find(key => key.toLowerCase() === "path") ?? "PATH";
|
|
73
|
-
env[pathKey] = `${path.dirname(node)}${path.delimiter}${env[pathKey] ?? ""}`;
|
|
74
|
-
await (options.execute ?? executeInstaller)(node, [npm, "install", "--prefix", staging,
|
|
75
|
-
"--no-audit", "--no-fund", "--registry=https://registry.npmjs.org", `@opencode/cli@${version}`], env);
|
|
76
|
-
const stagedBinary = path.join(staging, "node_modules", "@opencode", "cli", "bin", "opencode.exe");
|
|
77
|
-
const result = probe(stagedBinary);
|
|
78
|
-
if (!result.valid || result.version !== version)
|
|
79
|
-
throw new Error("Installed OpenCode version verification failed");
|
|
80
|
-
await rename(staging, destination).catch(error => {
|
|
81
|
-
// A second backend can finish the same exact version first. Accept only
|
|
82
|
-
// a verified winner; never remove or overwrite an existing executable.
|
|
83
|
-
const installed = probe(managedExecutable(root, version));
|
|
84
|
-
if (!installed.valid || installed.version !== version)
|
|
85
|
-
throw error;
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
const selections = path.join(root, "selected");
|
|
89
|
-
await mkdir(selections, { recursive: true });
|
|
90
|
-
// The filename is the entire receipt. Exclusive creation publishes it in
|
|
91
|
-
// one operation and never replaces an existing same-version receipt.
|
|
92
|
-
await open(path.join(selections, version), "wx").then(file => file.close()).catch(error => {
|
|
93
|
-
if (error.code !== "EEXIST")
|
|
94
|
-
throw error;
|
|
95
|
-
});
|
|
96
|
-
return readManagedExecutable(root);
|
|
97
|
-
}
|
|
98
|
-
finally {
|
|
99
|
-
await rm(staging, { recursive: true, force: true });
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
//# sourceMappingURL=managed-installation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"managed-installation.js","sourceRoot":"","sources":["../../src/opencode-update/managed-installation.ts"],"names":[],"mappings":"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","sourcesContent":["import { execFile } from \"node:child_process\"\nimport { existsSync, readFileSync, readdirSync } from \"node:fs\"\nimport { mkdir, rename, rm, open } from \"node:fs/promises\"\nimport os from \"node:os\"\nimport path from \"node:path\"\nimport { randomUUID } from \"node:crypto\"\nimport { assertSupportedOpenCode } from \"../opencode/runtime-support\"\nimport { probeBinaryVersion } from \"../workspaces/spawn\"\nimport { compareVersionStrings } from \"../releases/release-monitor\"\n\n// Never place changing installations in OpenCode's recursively watched config.\nexport function managedInstallRoot(): string {\n return path.join(os.homedir(), \".local\", \"share\", \"codenomad\", \"opencode\")\n}\n\nexport function managedExecutable(root: string, version: string): string {\n return path.join(root, version, \"node_modules\", \"@opencode\", \"cli\", \"bin\", \"opencode.exe\")\n}\n\nexport function readManagedExecutable(root = managedInstallRoot()): string | undefined {\n // Immutable receipts make selection monotonic across backends/processes.\n // A slower older install can publish its receipt but cannot replace a newer\n // selection. Unfinished staging/version directories never count as receipts.\n let versions: string[] = []\n try { versions = readdirSync(path.join(root, \"selected\")) } catch { /* First installation. */ }\n try { versions.push(readFileSync(path.join(root, \"current\"), \"utf8\").trim()) } catch { /* Previous marker format is optional. */ }\n return versions.filter(version => /^\\d+\\.\\d+\\.\\d+$/.test(version))\n .sort((a, b) => compareVersionStrings(b, a))\n .map(version => managedExecutable(root, version)).find(binary => existsSync(binary))\n}\n\n/** npm from the official Node archive, beside the backend runtime on both hosts. */\nexport function bundledNpm(execPath = process.execPath): string | undefined {\n const directory = path.dirname(execPath)\n const candidates = [path.join(directory, \"node_modules\", \"npm\", \"bin\", \"npm-cli.js\"),\n path.join(directory, \"..\", \"lib\", \"node_modules\", \"npm\", \"bin\", \"npm-cli.js\")]\n return candidates.find(candidate => existsSync(candidate))\n}\n\nexport function executeInstaller(file: string, args: string[], env: NodeJS.ProcessEnv): Promise<void> {\n return new Promise((resolve, reject) => {\n execFile(file, args, { env, windowsHide: true, timeout: 300_000, maxBuffer: 1024 * 1024 }, error => {\n // Do not return npm's environment/config diagnostics to the browser.\n if (error) reject(new Error(`OpenCode installation failed (${error.killed ? \"timeout\" : error.code ?? \"execution\"})`))\n else resolve()\n })\n })\n}\n\nexport async function installManagedOpenCode(version: string, options: {\n root?: string; node?: string; npm?: string\n execute?: typeof executeInstaller\n probe?: typeof probeBinaryVersion\n env?: NodeJS.ProcessEnv\n} = {}): Promise<string> {\n // An exact stable npm spec is an installation constraint, not runtime policy.\n if (!/^\\d+\\.\\d+\\.\\d+$/.test(version)) throw new Error(\"Installation requires an exact stable OpenCode version\")\n assertSupportedOpenCode(version)\n const root = options.root ?? managedInstallRoot()\n const node = options.node ?? process.execPath\n const npm = options.npm ?? bundledNpm(node)\n if (!npm) throw new Error(\"npm is unavailable beside the CodeNomad Node runtime\")\n const destination = path.join(root, version)\n const staging = path.join(root, `.install-${randomUUID()}`)\n const probe = options.probe ?? probeBinaryVersion\n await mkdir(root, { recursive: true })\n try {\n // Never overwrite the executable used by a running Windows daemon.\n const existing = probe(managedExecutable(root, version))\n if (!existing.valid || existing.version !== version) {\n await mkdir(staging)\n const env = { ...(options.env ?? process.env) }\n const pathKey = Object.keys(env).find(key => key.toLowerCase() === \"path\") ?? \"PATH\"\n env[pathKey] = `${path.dirname(node)}${path.delimiter}${env[pathKey] ?? \"\"}`\n await (options.execute ?? executeInstaller)(node, [npm, \"install\", \"--prefix\", staging,\n \"--no-audit\", \"--no-fund\", \"--registry=https://registry.npmjs.org\", `@opencode/cli@${version}`], env)\n const stagedBinary = path.join(staging, \"node_modules\", \"@opencode\", \"cli\", \"bin\", \"opencode.exe\")\n const result = probe(stagedBinary)\n if (!result.valid || result.version !== version) throw new Error(\"Installed OpenCode version verification failed\")\n await rename(staging, destination).catch(error => {\n // A second backend can finish the same exact version first. Accept only\n // a verified winner; never remove or overwrite an existing executable.\n const installed = probe(managedExecutable(root, version))\n if (!installed.valid || installed.version !== version) throw error\n })\n }\n const selections = path.join(root, \"selected\")\n await mkdir(selections, { recursive: true })\n // The filename is the entire receipt. Exclusive creation publishes it in\n // one operation and never replaces an existing same-version receipt.\n await open(path.join(selections, version), \"wx\").then(file => file.close()).catch(error => {\n if (error.code !== \"EEXIST\") throw error\n })\n return readManagedExecutable(root)!\n } finally {\n await rm(staging, { recursive: true, force: true })\n }\n}\n"]}
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import assert from "node:assert/strict";
|
|
2
|
-
import test from "node:test";
|
|
3
|
-
import { mkdtemp, mkdir, writeFile, rm } from "node:fs/promises";
|
|
4
|
-
import os from "node:os";
|
|
5
|
-
import path from "node:path";
|
|
6
|
-
import { readFileSync } from "node:fs";
|
|
7
|
-
import { installManagedOpenCode, readManagedExecutable } from "./managed-installation";
|
|
8
|
-
test("failed install never changes the selected version; verified install publishes atomically", async () => {
|
|
9
|
-
const root = await mkdtemp(path.join(os.tmpdir(), "codenomad-installer-"));
|
|
10
|
-
try {
|
|
11
|
-
let correct = false;
|
|
12
|
-
const options = { root, node: process.execPath, npm: "fixture-npm.js",
|
|
13
|
-
execute: async (file, args, env) => {
|
|
14
|
-
assert.equal(file, process.execPath);
|
|
15
|
-
assert.ok(args.includes("@opencode/cli@2.0.11"));
|
|
16
|
-
assert.ok(Object.entries(env).some(([key, value]) => key.toLowerCase() === "path" && value?.startsWith(path.dirname(process.execPath))));
|
|
17
|
-
const staging = args[args.indexOf("--prefix") + 1];
|
|
18
|
-
await mkdir(path.join(staging, "node_modules/@opencode/cli/bin"), { recursive: true });
|
|
19
|
-
await writeFile(path.join(staging, "node_modules/@opencode/cli/bin/opencode.exe"), "fixture");
|
|
20
|
-
},
|
|
21
|
-
probe: (file) => ({ valid: correct && file.includes(".install-"), version: correct && file.includes(".install-") ? "2.0.11" : undefined }),
|
|
22
|
-
};
|
|
23
|
-
await assert.rejects(installManagedOpenCode("2.0.11", options), /verification failed/);
|
|
24
|
-
assert.equal(readManagedExecutable(root), undefined);
|
|
25
|
-
correct = true;
|
|
26
|
-
const binary = await installManagedOpenCode("2.0.11", options);
|
|
27
|
-
assert.equal(readManagedExecutable(root), binary);
|
|
28
|
-
await assert.rejects(installManagedOpenCode("2.0.6", options), /opencode_update_required/);
|
|
29
|
-
for (const version of ["../outside", "3.0.0-dev.1", "custom-build"]) {
|
|
30
|
-
await assert.rejects(installManagedOpenCode(version, options), /exact stable/);
|
|
31
|
-
}
|
|
32
|
-
assert.equal(readManagedExecutable(root), binary);
|
|
33
|
-
}
|
|
34
|
-
finally {
|
|
35
|
-
await rm(root, { recursive: true, force: true });
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
test("immutable publication cannot select an older installer finishing after a newer one", async () => {
|
|
39
|
-
const root = await mkdtemp(path.join(os.tmpdir(), "codenomad-install-race-"));
|
|
40
|
-
let release;
|
|
41
|
-
const gate = new Promise(resolve => { release = resolve; });
|
|
42
|
-
const options = { root, node: process.execPath, npm: "fixture-npm.js",
|
|
43
|
-
execute: async (_file, args) => {
|
|
44
|
-
const version = args.at(-1).split("@").at(-1);
|
|
45
|
-
const staging = args[args.indexOf("--prefix") + 1];
|
|
46
|
-
if (version === "2.0.11")
|
|
47
|
-
await gate;
|
|
48
|
-
await mkdir(path.join(staging, "node_modules/@opencode/cli/bin"), { recursive: true });
|
|
49
|
-
await writeFile(path.join(staging, "node_modules/@opencode/cli/bin/opencode.exe"), version);
|
|
50
|
-
},
|
|
51
|
-
probe: (file) => {
|
|
52
|
-
try {
|
|
53
|
-
return { valid: true, version: readFileSync(file, "utf8") };
|
|
54
|
-
}
|
|
55
|
-
catch {
|
|
56
|
-
return { valid: false };
|
|
57
|
-
}
|
|
58
|
-
},
|
|
59
|
-
};
|
|
60
|
-
try {
|
|
61
|
-
const older = installManagedOpenCode("2.0.11", options);
|
|
62
|
-
const newer = await installManagedOpenCode("2.0.12", options);
|
|
63
|
-
release();
|
|
64
|
-
assert.equal(await older, newer);
|
|
65
|
-
assert.equal(readManagedExecutable(root), newer);
|
|
66
|
-
await writeFile(path.join(root, "current"), "2.0.11");
|
|
67
|
-
assert.equal(readManagedExecutable(root), newer, "old marker writers cannot downgrade receipt selection");
|
|
68
|
-
}
|
|
69
|
-
finally {
|
|
70
|
-
release();
|
|
71
|
-
await rm(root, { recursive: true, force: true });
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
test("same-version concurrent publishers all succeed without replacing Windows receipts", async () => {
|
|
75
|
-
const root = await mkdtemp(path.join(os.tmpdir(), "codenomad-same-version-install-"));
|
|
76
|
-
const options = { root, node: process.execPath, npm: "fixture-npm.js",
|
|
77
|
-
execute: async (_file, args) => {
|
|
78
|
-
const staging = args[args.indexOf("--prefix") + 1];
|
|
79
|
-
await mkdir(path.join(staging, "node_modules/@opencode/cli/bin"), { recursive: true });
|
|
80
|
-
await writeFile(path.join(staging, "node_modules/@opencode/cli/bin/opencode.exe"), "2.0.12");
|
|
81
|
-
},
|
|
82
|
-
probe: (file) => {
|
|
83
|
-
try {
|
|
84
|
-
return { valid: true, version: readFileSync(file, "utf8") };
|
|
85
|
-
}
|
|
86
|
-
catch {
|
|
87
|
-
return { valid: false };
|
|
88
|
-
}
|
|
89
|
-
},
|
|
90
|
-
};
|
|
91
|
-
try {
|
|
92
|
-
for (let batch = 0; batch < 6; batch++) {
|
|
93
|
-
const results = await Promise.all(Array.from({ length: 20 }, () => installManagedOpenCode("2.0.12", options)));
|
|
94
|
-
assert.equal(new Set(results).size, 1);
|
|
95
|
-
assert.equal(readManagedExecutable(root), results[0]);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
finally {
|
|
99
|
-
await rm(root, { recursive: true, force: true });
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
//# sourceMappingURL=managed-installation.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"managed-installation.test.js","sourceRoot":"","sources":["../../src/opencode-update/managed-installation.test.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from \"node:assert/strict\"\nimport test from \"node:test\"\nimport { mkdtemp, mkdir, writeFile, rm } from \"node:fs/promises\"\nimport os from \"node:os\"\nimport path from \"node:path\"\nimport { readFileSync } from \"node:fs\"\nimport { installManagedOpenCode, readManagedExecutable } from \"./managed-installation\"\n\ntest(\"failed install never changes the selected version; verified install publishes atomically\", async () => {\n const root = await mkdtemp(path.join(os.tmpdir(), \"codenomad-installer-\"))\n try {\n let correct = false\n const options = { root, node: process.execPath, npm: \"fixture-npm.js\",\n execute: async (file: string, args: string[], env: NodeJS.ProcessEnv) => {\n assert.equal(file, process.execPath)\n assert.ok(args.includes(\"@opencode/cli@2.0.11\"))\n assert.ok(Object.entries(env).some(([key, value]) => key.toLowerCase() === \"path\" && value?.startsWith(path.dirname(process.execPath))))\n const staging = args[args.indexOf(\"--prefix\") + 1]!\n await mkdir(path.join(staging, \"node_modules/@opencode/cli/bin\"), { recursive: true })\n await writeFile(path.join(staging, \"node_modules/@opencode/cli/bin/opencode.exe\"), \"fixture\")\n },\n probe: (file: string) => ({ valid: correct && file.includes(\".install-\"), version: correct && file.includes(\".install-\") ? \"2.0.11\" : undefined }),\n }\n await assert.rejects(installManagedOpenCode(\"2.0.11\", options), /verification failed/)\n assert.equal(readManagedExecutable(root), undefined)\n correct = true\n const binary = await installManagedOpenCode(\"2.0.11\", options)\n assert.equal(readManagedExecutable(root), binary)\n await assert.rejects(installManagedOpenCode(\"2.0.6\", options), /opencode_update_required/)\n for (const version of [\"../outside\", \"3.0.0-dev.1\", \"custom-build\"]) {\n await assert.rejects(installManagedOpenCode(version, options), /exact stable/)\n }\n assert.equal(readManagedExecutable(root), binary)\n } finally { await rm(root, { recursive: true, force: true }) }\n})\n\ntest(\"immutable publication cannot select an older installer finishing after a newer one\", async () => {\n const root = await mkdtemp(path.join(os.tmpdir(), \"codenomad-install-race-\"))\n let release!: () => void\n const gate = new Promise<void>(resolve => { release = resolve })\n const options = { root, node: process.execPath, npm: \"fixture-npm.js\",\n execute: async (_file: string, args: string[]) => {\n const version = args.at(-1)!.split(\"@\").at(-1)!\n const staging = args[args.indexOf(\"--prefix\") + 1]!\n if (version === \"2.0.11\") await gate\n await mkdir(path.join(staging, \"node_modules/@opencode/cli/bin\"), { recursive: true })\n await writeFile(path.join(staging, \"node_modules/@opencode/cli/bin/opencode.exe\"), version)\n },\n probe: (file: string) => {\n try { return { valid: true, version: readFileSync(file, \"utf8\") } }\n catch { return { valid: false } }\n },\n }\n try {\n const older = installManagedOpenCode(\"2.0.11\", options)\n const newer = await installManagedOpenCode(\"2.0.12\", options)\n release()\n assert.equal(await older, newer)\n assert.equal(readManagedExecutable(root), newer)\n await writeFile(path.join(root, \"current\"), \"2.0.11\")\n assert.equal(readManagedExecutable(root), newer, \"old marker writers cannot downgrade receipt selection\")\n } finally { release(); await rm(root, { recursive: true, force: true }) }\n})\n\ntest(\"same-version concurrent publishers all succeed without replacing Windows receipts\", async () => {\n const root = await mkdtemp(path.join(os.tmpdir(), \"codenomad-same-version-install-\"))\n const options = { root, node: process.execPath, npm: \"fixture-npm.js\",\n execute: async (_file: string, args: string[]) => {\n const staging = args[args.indexOf(\"--prefix\") + 1]!\n await mkdir(path.join(staging, \"node_modules/@opencode/cli/bin\"), { recursive: true })\n await writeFile(path.join(staging, \"node_modules/@opencode/cli/bin/opencode.exe\"), \"2.0.12\")\n },\n probe: (file: string) => {\n try { return { valid: true, version: readFileSync(file, \"utf8\") } }\n catch { return { valid: false } }\n },\n }\n try {\n for (let batch = 0; batch < 6; batch++) {\n const results = await Promise.all(Array.from({ length: 20 }, () => installManagedOpenCode(\"2.0.12\", options)))\n assert.equal(new Set(results).size, 1)\n assert.equal(readManagedExecutable(root), results[0])\n }\n } finally { await rm(root, { recursive: true, force: true }) }\n})\n"]}
|