u_01988F7FbXzBKTb2DC9rYoLy","toolUseID":"toolu_01988F7FbXzBKTb2DC9rYoLy","timestamp":"2026-03-05T22:01:35.108Z","uuid":"b0d19cb1-36c2-4948-86c9-8a3626695590"}
{"parentUuid":"715957e5-2d84-48ed-9f67-85a344621a7c","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01988F7FbXzBKTb2DC9rYoLy","type":"tool_result","content":"/home/josie/development/irc-now/crates/bot-landing/Cargo.toml\n/home/josie/development/irc-now/crates/bot-landing/src/main.rs\n/home/josie/development/irc-now/crates/bot-landing/Containerfile\n/home/josie/development/irc-now/crates/bot-landing/static/style.css\n/home/josie/development/irc-now/crates/bot-landing/static/favicon.ico\n/home/josie/development/irc-now/crates/bot-landing/static/apple-touch-icon.png\n/home/josie/development/irc-now/crates/bot-landing/static/favicon.svg\n/home/josie/development/irc-now/crates/bot-landing/static/index.html\n/home/josie/development/irc-now/crates/bot-landing/static/og.png"}]},"uuid":"8f5005be-6dc8-416e-a32a-870c384491b7","timestamp":"2026-03-05T22:01:35.106Z","sourceToolAssistantUUID":"715957e5-2d84-48ed-9f67-85a344621a7c"}
{"parentUuid":"8f5005be-6dc8-416e-a32a-870c384491b7","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","message":{"model":"claude-haiku-4-5-20251001","id":"msg_01Fix2rZuv4s9Xo7mfCUWEy1","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01Cb16KQELKYGfUJDj6rYkLT","name":"Glob","input":{"pattern":"/home/josie/development/irc-now/docs/**/*bot*"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":3,"cache_creation_input_tokens":4024,"cache_read_input_tokens":52680,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":4024},"output_tokens":1,"service_tier":"standard","inference_geo":"not_available"}},"requestId":"req_011CYkgnswfD9sChE6Xq1rX8","type":"assistant","uuid":"8f5bc1aa-fa5d-4c59-b9a7-c6342e8e3769","timestamp":"2026-03-05T22:01:35.213Z"}
{"parentUuid":"8f5bc1aa-fa5d-4c59-b9a7-c6342e8e3769","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PreToolUse","hookName":"PreToolUse:Glob","command":"python3 ${CLAUDE_PLUGIN_ROOT}/hooks/pretooluse.py"},"toolUseID":"toolu_01Cb16KQELKYGfUJDj6rYkLT","parentToolUseID":"toolu_01Cb16KQELKYGfUJDj6rYkLT","uuid":"c759a3c1-fe72-4f51-8983-a34f1f049a8e","timestamp":"2026-03-05T22:01:35.215Z"}
{"parentUuid":"c759a3c1-fe72-4f51-8983-a34f1f049a8e","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PostToolUse","hookName":"PostToolUse:Glob","command":"python3 ${CLAUDE_PLUGIN_ROOT}/hooks/posttooluse.py"},"parentToolUseID":"toolu_01Cb16KQELKYGfUJDj6rYkLT","toolUseID":"toolu_01Cb16KQELKYGfUJDj6rYkLT","timestamp":"2026-03-05T22:01:35.356Z","uuid":"1eee774d-4dfc-4b47-b6e1-63f0df83395d"}
{"parentUuid":"1eee774d-4dfc-4b47-b6e1-63f0df83395d","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PostToolUse","hookName":"PostToolUse:Glob","command":"callback"},"parentToolUseID":"toolu_01Cb16KQELKYGfUJDj6rYkLT","toolUseID":"toolu_01Cb16KQELKYGfUJDj6rYkLT","timestamp":"2026-03-05T22:01:35.356Z","uuid":"d4a5b344-61cc-4470-8f5d-7d1003478f54"}
{"parentUuid":"8f5bc1aa-fa5d-4c59-b9a7-c6342e8e3769","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01Cb16KQELKYGfUJDj6rYkLT","type":"tool_result","content":"No files found"}]},"uuid":"e293b560-60de-4abd-9d0d-45245930a5ac","timestamp":"2026-03-05T22:01:35.354Z","sourceToolAssistantUUID":"8f5bc1aa-fa5d-4c59-b9a7-c6342e8e3769"}
{"parentUuid":"e293b560-60de-4abd-9d0d-45245930a5ac","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","message":{"model":"claude-haiku-4-5-20251001","id":"msg_01Fix2rZuv4s9Xo7mfCUWEy1","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01WKFoUg9ybmWkgqCxrcaudb","name":"Glob","input":{"pattern":"/home/josie/development/irc-now/notes/**/*bot*"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":3,"cache_creation_input_tokens":4024,"cache_read_input_tokens":52680,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":4024},"output_tokens":1,"service_tier":"standard","inference_geo":"not_available"}},"requestId":"req_011CYkgnswfD9sChE6Xq1rX8","type":"assistant","uuid":"f3bf926e-5db7-4018-b1d0-2de593529750","timestamp":"2026-03-05T22:01:35.488Z"}
{"parentUuid":"f3bf926e-5db7-4018-b1d0-2de593529750","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PreToolUse","hookName":"PreToolUse:Glob","command":"python3 ${CLAUDE_PLUGIN_ROOT}/hooks/pretooluse.py"},"toolUseID":"toolu_01WKFoUg9ybmWkgqCxrcaudb","parentToolUseID":"toolu_01WKFoUg9ybmWkgqCxrcaudb","uuid":"4b12e798-8d56-421e-b5b5-7cde1a1829cf","timestamp":"2026-03-05T22:01:35.490Z"}
{"parentUuid":"4b12e798-8d56-421e-b5b5-7cde1a1829cf","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","message":{"model":"claude-haiku-4-5-20251001","id":"msg_01Fix2rZuv4s9Xo7mfCUWEy1","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01AP9TYyuPZBpaBQzLniifAK","name":"Glob","input":{"pattern":"/home/josie/development/irc-now/deploy/**/*bot*"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":3,"cache_creation_input_tokens":4024,"cache_read_input_tokens":52680,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":4024},"output_tokens":1,"service_tier":"standard","inference_geo":"not_available"}},"requestId":"req_011CYkgnswfD9sChE6Xq1rX8","type":"assistant","uuid":"2e25d244-df6c-4b38-9b2b-a56b5f9c7d02","timestamp":"2026-03-05T22:01:35.502Z"}
{"parentUuid":"2e25d244-df6c-4b38-9b2b-a56b5f9c7d02","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PreToolUse","hookName":"PreToolUse:Glob","command":"python3 ${CLAUDE_PLUGIN_ROOT}/hooks/pretooluse.py"},"toolUseID":"toolu_01AP9TYyuPZBpaBQzLniifAK","parentToolUseID":"toolu_01AP9TYyuPZBpaBQzLniifAK","uuid":"361deab9-4c45-498f-9b7c-f83b7a301a81","timestamp":"2026-03-05T22:01:35.503Z"}
{"parentUuid":"361deab9-4c45-498f-9b7c-f83b7a301a81","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PostToolUse","hookName":"PostToolUse:Glob","command":"python3 ${CLAUDE_PLUGIN_ROOT}/hooks/posttooluse.py"},"parentToolUseID":"toolu_01WKFoUg9ybmWkgqCxrcaudb","toolUseID":"toolu_01WKFoUg9ybmWkgqCxrcaudb","timestamp":"2026-03-05T22:01:35.641Z","uuid":"4d366703-cc83-4fbc-81e6-44ab2f37931d"}
{"parentUuid":"4d366703-cc83-4fbc-81e6-44ab2f37931d","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PostToolUse","hookName":"PostToolUse:Glob","command":"callback"},"parentToolUseID":"toolu_01WKFoUg9ybmWkgqCxrcaudb","toolUseID":"toolu_01WKFoUg9ybmWkgqCxrcaudb","timestamp":"2026-03-05T22:01:35.641Z","uuid":"b0c097ad-8b66-4b1a-931b-c83c2f52bb41"}
{"parentUuid":"f3bf926e-5db7-4018-b1d0-2de593529750","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01WKFoUg9ybmWkgqCxrcaudb","type":"tool_result","content":"No files found"}]},"uuid":"77d16618-c528-4bd6-8063-0ea81fe7a761","timestamp":"2026-03-05T22:01:35.639Z","sourceToolAssistantUUID":"f3bf926e-5db7-4018-b1d0-2de593529750"}
{"parentUuid":"77d16618-c528-4bd6-8063-0ea81fe7a761","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PostToolUse","hookName":"PostToolUse:Glob","command":"python3 ${CLAUDE_PLUGIN_ROOT}/hooks/posttooluse.py"},"parentToolUseID":"toolu_01AP9TYyuPZBpaBQzLniifAK","toolUseID":"toolu_01AP9TYyuPZBpaBQzLniifAK","timestamp":"2026-03-05T22:01:35.650Z","uuid":"27383b29-7b61-4a0b-bbfc-f477f02783cd"}
{"parentUuid":"27383b29-7b61-4a0b-bbfc-f477f02783cd","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PostToolUse","hookName":"PostToolUse:Glob","command":"callback"},"parentToolUseID":"toolu_01AP9TYyuPZBpaBQzLniifAK","toolUseID":"toolu_01AP9TYyuPZBpaBQzLniifAK","timestamp":"2026-03-05T22:01:35.650Z","uuid":"0f57daa6-f071-4121-bb64-d83e3918ed2d"}
{"parentUuid":"2e25d244-df6c-4b38-9b2b-a56b5f9c7d02","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01AP9TYyuPZBpaBQzLniifAK","type":"tool_result","content":"/home/josie/development/irc-now/deploy/instances/bot-landing.yaml"}]},"uuid":"59f6fef1-edae-4496-a2f8-eb301766dca3","timestamp":"2026-03-05T22:01:35.648Z","sourceToolAssistantUUID":"2e25d244-df6c-4b38-9b2b-a56b5f9c7d02"}
{"parentUuid":"59f6fef1-edae-4496-a2f8-eb301766dca3","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PostToolUse","hookName":"PostToolUse:Read","command":"python3 ${CLAUDE_PLUGIN_ROOT}/hooks/posttooluse.py"},"parentToolUseID":"toolu_01U1hhrYb5gwGSkTZK4nLXiW","toolUseID":"toolu_01U1hhrYb5gwGSkTZK4nLXiW","timestamp":"2026-03-05T22:02:01.351Z","uuid":"ca8ea68d-27aa-4dc6-82c8-a37c74e3b2a3"}
{"parentUuid":"ca8ea68d-27aa-4dc6-82c8-a37c74e3b2a3","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PostToolUse","hookName":"PostToolUse:Read","command":"callback"},"parentToolUseID":"toolu_01U1hhrYb5gwGSkTZK4nLXiW","toolUseID":"toolu_01U1hhrYb5gwGSkTZK4nLXiW","timestamp":"2026-03-05T22:02:01.351Z","uuid":"f1900410-c4d6-4154-bbab-72583bdceb06"}
{"parentUuid":"f7577246-6096-42d9-b8cc-0dc0306eec0d","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01U1hhrYb5gwGSkTZK4nLXiW","type":"tool_result","content":"     1→--- backlog ---\n     2→migration tool for irc cloud users\n     3→custom domains cname endpoint (proxy, not default router fqdn)\n     4→\n     5→email sending infra for tx emails etc.\n     6→\n     7→irc bot operator\n     8→meta operator\n     9→\n    10→trust + safety for user content\n    11→\n    12→set up stripe\n    13→\n    14→faster builds\n    15→\n    16→blog\n    17→\n    18→support email\n    19→\n    20→opensource operators + pastebin + pics\n    21→\n    22→portal to manage boouncers + networks\n    23→\n    24→add tests like enforcing limits for user levels etc\n    25→\n    26→mTLS/secure connections service to service\n    27→\n    28→security audit\n    29→\n    30→favicon should just be the green dot logo mark\n    31→\n    32→2fa sso\n    33→\n    34→chat operator\n    35→\n    36→migration tool irccloud\n    37→\n    38→figure out how much config should be exposed\n    39→\n    40→fix text contrast dark grey on black\n    41→\n    42→--- business/marketing (non-code) ---\n    43→imprint magickly llp uk\n    44→sticker ideas\n    45→merch shop (print-on-demand, stickers + apparel)\n    46→legal stuff\n    47→"}]},"uuid":"36e63088-b27e-4906-81c6-ca7eefeb7d5a","timestamp":"2026-03-05T22:02:01.350Z","sourceToolAssistantUUID":"f7577246-6096-42d9-b8cc-0dc0306eec0d"}
{"parentUuid":"36e63088-b27e-4906-81c6-ca7eefeb7d5a","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PostToolUse","hookName":"PostToolUse:Read","command":"python3 ${CLAUDE_PLUGIN_ROOT}/hooks/posttooluse.py"},"parentToolUseID":"toolu_01Fj1ZQv1BpGGEMnit9uyS2a","toolUseID":"toolu_01Fj1ZQv1BpGGEMnit9uyS2a","timestamp":"2026-03-05T22:02:01.350Z","uuid":"9682581b-e0d6-453c-b562-d759e3d06682"}
{"parentUuid":"9682581b-e0d6-453c-b562-d759e3d06682","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PostToolUse","hookName":"PostToolUse:Read","command":"callback"},"parentToolUseID":"toolu_01Fj1ZQv1BpGGEMnit9uyS2a","toolUseID":"toolu_01Fj1ZQv1BpGGEMnit9uyS2a","timestamp":"2026-03-05T22:02:01.350Z","uuid":"4a38b1ca-e243-4f42-b103-3592eb110f96"}
{"parentUuid":"6ade01e5-b679-4c45-bbbf-ef9168df40e1","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01Fj1ZQv1BpGGEMnit9uyS2a","type":"tool_result","content":"     1→[workspace]\n     2→resolver = \"3\"\n     3→members = [\n     4→    \"crates/bot-landing\",\n     5→    \"crates/common\",\n     6→    \"crates/ergo-operator\",\n     7→    \"crates/soju-operator\",\n     8→    \"crates/web-api\",\n     9→    \"crates/web-landing\",\n    10→    \"crates/txt\",\n    11→    \"crates/pics\",\n    12→    \"crates/platform-operator\",\n    13→]\n    14→\n    15→[workspace.package]\n    16→edition = \"2024\"\n    17→license = \"MIT\"\n    18→\n    19→[workspace.dependencies]\n    20→axum = \"0.8\"\n    21→tokio = { version = \"1\", features = [\"macros\", \"rt-multi-thread\"] }\n    22→serde = { version = \"1\", features = [\"derive\"] }\n    23→serde_json = \"1\"\n    24→sqlx = { version = \"0.8\", features = [\"runtime-tokio\", \"postgres\"] }\n    25→tracing = \"0.1\"\n    26→tracing-subscriber = { version = \"0.3\", features = [\"env-filter\"] }\n    27→thiserror = \"2\"\n    28→anyhow = \"1\"\n    29→nanoid = \"0.4\"\n    30→time = { version = \"0.3\", features = [\"serde\"] }\n    31→"}]},"uuid":"770dcc47-0850-4a0d-8f67-8340544b7514","timestamp":"2026-03-05T22:02:01.349Z","sourceToolAssistantUUID":"6ade01e5-b679-4c45-bbbf-ef9168df40e1"}
{"parentUuid":"770dcc47-0850-4a0d-8f67-8340544b7514","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","message":{"model":"claude-haiku-4-5-20251001","id":"msg_01A2yAFgfLnfYirXmySYB4um","type":"message","role":"assistant","content":[{"type":"text","text":"Now let me read the bot-landing crate source and related files:"}],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":740,"cache_creation_input_tokens":1040,"cache_read_input_tokens":56704,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":1040},"output_tokens":1,"service_tier":"standard","inference_geo":"not_available"}},"requestId":"req_011CYkgpy2ZKJjuBhRQNcSKi","type":"assistant","uuid":"685dc8c1-a4f7-4564-8d1a-2ae5c88fc0f0","timestamp":"2026-03-05T22:02:02.948Z"}
{"parentUuid":"685dc8c1-a4f7-4564-8d1a-2ae5c88fc0f0","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","message":{"model":"claude-haiku-4-5-20251001","id":"msg_01A2yAFgfLnfYirXmySYB4um","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01KAGMKJUbctsZwmafuP3TW2","name":"Read","input":{"file_path":"/home/josie/development/irc-now/crates/bot-landing/Cargo.toml"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":740,"cache_creation_input_tokens":1040,"cache_read_input_tokens":56704,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":1040},"output_tokens":1,"service_tier":"standard","inference_geo":"not_available"}},"requestId":"req_011CYkgpy2ZKJjuBhRQNcSKi","type":"assistant","uuid":"2bcdd6e4-d26e-47d4-9673-e8e390821742","timestamp":"2026-03-05T22:02:03.236Z"}
{"parentUuid":"2bcdd6e4-d26e-47d4-9673-e8e390821742","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PreToolUse","hookName":"PreToolUse:Read","command":"python3 ${CLAUDE_PLUGIN_ROOT}/hooks/pretooluse.py"},"toolUseID":"toolu_01KAGMKJUbctsZwmafuP3TW2","parentToolUseID":"toolu_01KAGMKJUbctsZwmafuP3TW2","uuid":"0ddefbb9-36d1-4f86-a26b-11f548a64b22","timestamp":"2026-03-05T22:02:03.238Z"}
{"parentUuid":"0ddefbb9-36d1-4f86-a26b-11f548a64b22","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PostToolUse","hookName":"PostToolUse:Read","command":"python3 ${CLAUDE_PLUGIN_ROOT}/hooks/posttooluse.py"},"parentToolUseID":"toolu_01KAGMKJUbctsZwmafuP3TW2","toolUseID":"toolu_01KAGMKJUbctsZwmafuP3TW2","timestamp":"2026-03-05T22:02:03.282Z","uuid":"189e5dc7-30d3-4144-9bbe-79ade30e48b1"}
{"parentUuid":"189e5dc7-30d3-4144-9bbe-79ade30e48b1","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PostToolUse","hookName":"PostToolUse:Read","command":"callback"},"parentToolUseID":"toolu_01KAGMKJUbctsZwmafuP3TW2","toolUseID":"toolu_01KAGMKJUbctsZwmafuP3TW2","timestamp":"2026-03-05T22:02:03.282Z","uuid":"0cceede0-49b7-4531-9bc9-fc55b2015583"}
{"parentUuid":"2bcdd6e4-d26e-47d4-9673-e8e390821742","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01KAGMKJUbctsZwmafuP3TW2","type":"tool_result","content":"     1→[package]\n     2→name = \"irc-now-bot-landing\"\n     3→version = \"0.1.0\"\n     4→edition.workspace = true\n     5→\n     6→[dependencies]\n     7→axum.workspace = true\n     8→tokio.workspace = true\n     9→tracing.workspace = true\n    10→tracing-subscriber.workspace = true\n    11→tower-http = { version = \"0.6\", features = [\"fs\"] }\n    12→"}]},"uuid":"e442087f-6f1f-483b-a113-92bafa4e04ce","timestamp":"2026-03-05T22:02:03.281Z","sourceToolAssistantUUID":"2bcdd6e4-d26e-47d4-9673-e8e390821742"}
{"parentUuid":"e442087f-6f1f-483b-a113-92bafa4e04ce","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","message":{"model":"claude-haiku-4-5-20251001","id":"msg_01A2yAFgfLnfYirXmySYB4um","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01BuRpUukCZvX6NxzR4Pqfz3","name":"Read","input":{"file_path":"/home/josie/development/irc-now/crates/bot-landing/src/main.rs"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":740,"cache_creation_input_tokens":1040,"cache_read_input_tokens":56704,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":1040},"output_tokens":1,"service_tier":"standard","inference_geo":"not_available"}},"requestId":"req_011CYkgpy2ZKJjuBhRQNcSKi","type":"assistant","uuid":"3f4cf524-368e-469c-adbd-688827a3db34","timestamp":"2026-03-05T22:02:03.372Z"}
{"parentUuid":"3f4cf524-368e-469c-adbd-688827a3db34","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PreToolUse","hookName":"PreToolUse:Read","command":"python3 ${CLAUDE_PLUGIN_ROOT}/hooks/pretooluse.py"},"toolUseID":"toolu_01BuRpUukCZvX6NxzR4Pqfz3","parentToolUseID":"toolu_01BuRpUukCZvX6NxzR4Pqfz3","uuid":"769a0b77-9bff-4d80-8c17-b5d7a0c27bc1","timestamp":"2026-03-05T22:02:03.375Z"}
{"parentUuid":"769a0b77-9bff-4d80-8c17-b5d7a0c27bc1","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PostToolUse","hookName":"PostToolUse:Read","command":"python3 ${CLAUDE_PLUGIN_ROOT}/hooks/posttooluse.py"},"parentToolUseID":"toolu_01BuRpUukCZvX6NxzR4Pqfz3","toolUseID":"toolu_01BuRpUukCZvX6NxzR4Pqfz3","timestamp":"2026-03-05T22:02:03.433Z","uuid":"a89dbbb8-19e5-4925-a153-f146b5e86c6f"}
{"parentUuid":"a89dbbb8-19e5-4925-a153-f146b5e86c6f","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PostToolUse","hookName":"PostToolUse:Read","command":"callback"},"parentToolUseID":"toolu_01BuRpUukCZvX6NxzR4Pqfz3","toolUseID":"toolu_01BuRpUukCZvX6NxzR4Pqfz3","timestamp":"2026-03-05T22:02:03.433Z","uuid":"df103616-9859-4d07-bf7e-f6fb9f69a4c8"}
{"parentUuid":"3f4cf524-368e-469c-adbd-688827a3db34","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01BuRpUukCZvX6NxzR4Pqfz3","type":"tool_result","content":"     1→use axum::Router;\n     2→use tower_http::services::ServeDir;\n     3→\n     4→#[tokio::main]\n     5→async fn main() {\n     6→    tracing_subscriber::fmt()\n     7→        .with_env_filter(tracing_subscriber::EnvFilter::from_default_env())\n     8→        .init();\n     9→\n    10→    let app = Router::new().fallback_service(ServeDir::new(\"static\"));\n    11→\n    12→    let listener = tokio::net::TcpListener::bind(\"0.0.0.0:8080\").await.unwrap();\n    13→    tracing::info!(\"listening on {}\", listener.local_addr().unwrap());\n    14→    axum::serve(listener, app).await.unwrap();\n    15→}\n    16→"}]},"uuid":"bf616832-3ddf-41f7-81d3-0108b60bedbd","timestamp":"2026-03-05T22:02:03.432Z","sourceToolAssistantUUID":"3f4cf524-368e-469c-adbd-688827a3db34"}
{"parentUuid":"bf616832-3ddf-41f7-81d3-0108b60bedbd","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","message":{"model":"claude-haiku-4-5-20251001","id":"msg_01A2yAFgfLnfYirXmySYB4um","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01EM773apiQ7r9vPLPNJRVwb","name":"Read","input":{"file_path":"/home/josie/development/irc-now/crates/bot-landing/Containerfile"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":740,"cache_creation_input_tokens":1040,"cache_read_input_tokens":56704,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":1040},"output_tokens":1,"service_tier":"standard","inference_geo":"not_available"}},"requestId":"req_011CYkgpy2ZKJjuBhRQNcSKi","type":"assistant","uuid":"8c617072-6e20-4cd5-8e0b-ba6547363792","timestamp":"2026-03-05T22:02:03.613Z"}
{"parentUuid":"8c617072-6e20-4cd5-8e0b-ba6547363792","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PreToolUse","hookName":"PreToolUse:Read","command":"python3 ${CLAUDE_PLUGIN_ROOT}/hooks/pretooluse.py"},"toolUseID":"toolu_01EM773apiQ7r9vPLPNJRVwb","parentToolUseID":"toolu_01EM773apiQ7r9vPLPNJRVwb","uuid":"9e3cf145-00de-4423-9cea-5cfe9769eeee","timestamp":"2026-03-05T22:02:03.615Z"}
{"parentUuid":"9e3cf145-00de-4423-9cea-5cfe9769eeee","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PostToolUse","hookName":"PostToolUse:Read","command":"python3 ${CLAUDE_PLUGIN_ROOT}/hooks/posttooluse.py"},"parentToolUseID":"toolu_01EM773apiQ7r9vPLPNJRVwb","toolUseID":"toolu_01EM773apiQ7r9vPLPNJRVwb","timestamp":"2026-03-05T22:02:03.676Z","uuid":"a27aac90-853e-45aa-9a09-edc70c420be2"}
{"parentUuid":"a27aac90-853e-45aa-9a09-edc70c420be2","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PostToolUse","hookName":"PostToolUse:Read","command":"callback"},"parentToolUseID":"toolu_01EM773apiQ7r9vPLPNJRVwb","toolUseID":"toolu_01EM773apiQ7r9vPLPNJRVwb","timestamp":"2026-03-05T22:02:03.676Z","uuid":"5bcd998e-6d73-4031-af37-081e2c809b31"}
{"parentUuid":"8c617072-6e20-4cd5-8e0b-ba6547363792","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01EM773apiQ7r9vPLPNJRVwb","type":"tool_result","content":"     1→FROM rust:1.88 AS build\n     2→WORKDIR /src\n     3→COPY Cargo.toml Cargo.lock ./\n     4→COPY crates/ crates/\n     5→RUN cargo build --release -p irc-now-bot-landing\n     6→\n     7→FROM registry.access.redhat.com/ubi9-minimal\n     8→COPY --from=build /src/target/release/irc-now-bot-landing /usr/local/bin/\n     9→COPY crates/bot-landing/static/ /app/static/\n    10→WORKDIR /app\n    11→EXPOSE 8080\n    12→CMD [\"irc-now-bot-landing\"]\n    13→"}]},"uuid":"f1ff8041-d815-46ba-a08e-895db747fe73","timestamp":"2026-03-05T22:02:03.674Z","sourceToolAssistantUUID":"8c617072-6e20-4cd5-8e0b-ba6547363792"}
{"parentUuid":"f1ff8041-d815-46ba-a08e-895db747fe73","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","message":{"model":"claude-haiku-4-5-20251001","id":"msg_01A2yAFgfLnfYirXmySYB4um","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01GWacJ52WoJ1ZhKmwHh1ztr","name":"Read","input":{"file_path":"/home/josie/development/irc-now/crates/bot-landing/static/index.html"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":740,"cache_creation_input_tokens":1040,"cache_read_input_tokens":56704,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":1040},"output_tokens":1,"service_tier":"standard","inference_geo":"not_available"}},"requestId":"req_011CYkgpy2ZKJjuBhRQNcSKi","type":"assistant","uuid":"0432c76b-3825-4dba-bbf0-25e91b622d3b","timestamp":"2026-03-05T22:02:03.813Z"}
{"parentUuid":"0432c76b-3825-4dba-bbf0-25e91b622d3b","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PreToolUse","hookName":"PreToolUse:Read","command":"python3 ${CLAUDE_PLUGIN_ROOT}/hooks/pretooluse.py"},"toolUseID":"toolu_01GWacJ52WoJ1ZhKmwHh1ztr","parentToolUseID":"toolu_01GWacJ52WoJ1ZhKmwHh1ztr","uuid":"0d1cc6d1-37c4-44e7-8591-df0e9bcf501a","timestamp":"2026-03-05T22:02:03.821Z"}
{"parentUuid":"0d1cc6d1-37c4-44e7-8591-df0e9bcf501a","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PostToolUse","hookName":"PostToolUse:Read","command":"python3 ${CLAUDE_PLUGIN_ROOT}/hooks/posttooluse.py"},"parentToolUseID":"toolu_01GWacJ52WoJ1ZhKmwHh1ztr","toolUseID":"toolu_01GWacJ52WoJ1ZhKmwHh1ztr","timestamp":"2026-03-05T22:02:03.893Z","uuid":"d196453b-b925-4f90-8d21-5f9488f8ccd2"}
{"parentUuid":"d196453b-b925-4f90-8d21-5f9488f8ccd2","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PostToolUse","hookName":"PostToolUse:Read","command":"callback"},"parentToolUseID":"toolu_01GWacJ52WoJ1ZhKmwHh1ztr","toolUseID":"toolu_01GWacJ52WoJ1ZhKmwHh1ztr","timestamp":"2026-03-05T22:02:03.893Z","uuid":"63881b97-d938-4cb2-8e01-9a62a2419372"}
{"parentUuid":"0432c76b-3825-4dba-bbf0-25e91b622d3b","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01GWacJ52WoJ1ZhKmwHh1ztr","type":"tool_result","content":"     1→<!DOCTYPE html>\n     2→<html lang=\"en\" data-theme=\"dark\">\n     3→<head>\n     4→  <meta charset=\"UTF-8\">\n     5→  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n     6→  <title>irc.bot</title>\n     7→  <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n     8→  <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n     9→  <link href=\"https://fonts.googleapis.com/css2?family=Newsreader:ital,opsz,wght@0,6..72,400;0,6..72,500;0,6..72,600;1,6..72,400;1,6..72,500&family=Outfit:wght@300;400;500;600&family=JetBrains+Mono:ital,wght@0,400;0,500;1,400&display=swap\" rel=\"stylesheet\">\n    10→  <link rel=\"stylesheet\" href=\"/style.css\">\n    11→  <link rel=\"icon\" href=\"/favicon.svg\" type=\"image/svg+xml\">\n    12→  <link rel=\"icon\" href=\"/favicon.ico\" sizes=\"32x32\">\n    13→  <link rel=\"apple-touch-icon\" href=\"/apple-touch-icon.png\">\n    14→  <meta property=\"og:title\" content=\"irc.bot\">\n    15→  <meta property=\"og:description\" content=\"run irc bots on our infrastructure. deploy your own code or pick one from the marketplace.\">\n    16→  <meta property=\"og:image\" content=\"https://irc.bot/og.png\">\n    17→  <meta property=\"og:type\" content=\"website\">\n    18→  <meta name=\"twitter:card\" content=\"summary_large_image\">\n    19→</head>\n    20→<body>\n    21→<div class=\"page\">\n    22→\n    23→  <nav class=\"nav\">\n    24→    <a href=\"/\" class=\"mark\">irc<span class=\"dot\"></span>bot</a>\n    25→    <div class=\"nav-r\">\n    26→      <a href=\"/docs\" class=\"desk\">docs</a>\n    27→      <a href=\"/marketplace\" class=\"desk\">marketplace</a>\n    28→      <a href=\"#pricing\" class=\"desk\">pricing</a>\n    29→      <button class=\"theme-btn\" onclick=\"document.documentElement.setAttribute('data-theme',document.documentElement.getAttribute('data-theme')==='light'?'dark':'light')\">&#9685;</button>\n    30→      <a href=\"/login\" class=\"nav-cta\">log in</a>\n    31→    </div>\n    32→  </nav>\n    33→\n    34→  <section class=\"hero reveal\">\n    35→    <h1>bots without<br><em>babysitting</em></h1>\n    36→    <p class=\"hero-sub\">irc.bot runs your bots on our infrastructure. deploy your own code or pick one from the marketplace. they stay connected and restart if they crash.</p>\n    37→    <div class=\"hero-links\">\n    38→      <a href=\"/signup\" class=\"btn-fill\">deploy a bot</a>\n    39→      <a href=\"/marketplace\" class=\"btn-text\">marketplace</a>\n    40→      <a href=\"#pricing\" class=\"btn-text\">pricing</a>\n    41→      <a href=\"/docs\" class=\"btn-text\">docs</a>\n    42→    </div>\n    43→  </section>\n    44→\n    45→  <section class=\"panel-section reveal\">\n    46→    <div class=\"section-label\">dashboard</div>\n    47→    <div class=\"panel\">\n    48→      <div class=\"pn-chrome\">\n    49→        <div class=\"pn-chrome-left\">\n    50→          <div class=\"pn-dots\"><span></span><span></span><span></span></div>\n    51→          <span><b>watchdog</b> &mdash; #lobby on libera.chat</span>\n    52→        </div>\n    53→        <div class=\"pn-tabs\">\n    54→          <span class=\"pn-tab active\">activity</span>\n    55→          <span class=\"pn-tab\">config</span>\n    56→          <span class=\"pn-tab\">logs</span>\n    57→        </div>\n    58→      </div>\n    59→      <div class=\"pn-body\">\n    60→        <div class=\"pn-sidebar\">\n    61→          <div class=\"pn-sb-bot active\" data-bot=\"watchdog\">\n    62→            <span class=\"pn-sb-dot on\"></span>\n    63→            watchdog\n    64→            <span class=\"pn-sb-net\">libera</span>\n    65→          </div>\n    66→          <div class=\"pn-sb-bot\" data-bot=\"logbot\">\n    67→            <span class=\"pn-sb-dot on\"></span>\n    68→            logbot\n    69→            <span class=\"pn-sb-net\">libera</span>\n    70→          </div>\n    71→          <div class=\"pn-sb-bot\" data-bot=\"linkbot\">\n    72→            <span class=\"pn-sb-dot on\"></span>\n    73→            linkbot\n    74→            <span class=\"pn-sb-net\">oftc</span>\n    75→          </div>\n    76→          <div class=\"pn-sb-bot\" data-bot=\"quizzer\">\n    77→            <span class=\"pn-sb-dot off\"></span>\n    78→            quizzer\n    79→            <span class=\"pn-sb-net\">rizon</span>\n    80→          </div>\n    81→          <div class=\"pn-sb-sep\"></div>\n    82→          <a href=\"/signup\" class=\"pn-sb-add\">+ new bot</a>\n    83→        </div>\n    84→        <div class=\"pn-main\">\n    85→          <div class=\"pn-info\">\n    86→            <div class=\"pn-info-cell\">\n    87→              <span class=\"pn-info-k\">status</span>\n    88→              <span class=\"pn-info-v accent\">running</span>\n    89→            </div>\n    90→            <div class=\"pn-info-cell\">\n    91→              <span class=\"pn-info-k\">uptime</span>\n    92→              <span class=\"pn-info-v\">14d 3h</span>\n    93→            </div>\n    94→            <div class=\"pn-info-cell\">\n    95→              <span class=\"pn-info-k\">channels</span>\n    96→              <span class=\"pn-info-v\">3</span>\n    97→            </div>\n    98→            <div class=\"pn-info-cell\">\n    99→              <span class=\"pn-info-k\">hostname</span>\n   100→              <span class=\"pn-info-v\">watchdog@bots.your.domain</span>\n   101→            </div>\n   102→          </div>\n   103→          <div class=\"pn-log\">\n   104→            <div class=\"pn-log-line sys\">\n   105→              <span class=\"pn-log-time\">14:01</span>\n   106→              <span class=\"pn-log-nick\"></span>\n   107→              <span class=\"pn-log-text\">&mdash; watchdog connected to #lobby, #dev, #offtopic</span>\n   108→            </div>\n   109→            <div class=\"pn-log-line\">\n   110→              <span class=\"pn-log-time\">14:03</span>\n   111→              <span class=\"pn-log-nick\" style=\"color:var(--nb)\">reed</span>\n   112→              <span class=\"pn-log-text\">has anyone looked at the mass join thing from earlier</span>\n   113→            </div>\n   114→            <div class=\"pn-log-line\">\n   115→              <span class=\"pn-log-time\">14:03</span>\n   116→              <span class=\"pn-log-nick\" style=\"color:var(--nc)\">hako</span>\n   117→              <span class=\"pn-log-text\">yeah it was drones. already handled</span>\n   118→            </div>\n   119→            <div class=\"pn-log-line\">\n   120→              <span class=\"pn-log-time\">14:04</span>\n   121→              <span class=\"pn-log-nick\" style=\"color:var(--na)\">moth</span>\n   122→              <span class=\"pn-log-text\"><span class=\"pn-log-cmd\">!warn</span> xflood</span>\n   123→            </div>\n   124→            <div class=\"pn-log-line bot\">\n   125→              <span class=\"pn-log-time\">14:04</span>\n   126→              <span class=\"pn-log-nick\">watchdog</span>\n   127→              <span class=\"pn-log-text\">xflood: warning 1/3</span>\n   128→            </div>\n   129→            <div class=\"pn-log-line\">\n   130→              <span class=\"pn-log-time\">14:05</span>\n   131→              <span class=\"pn-log-nick\" style=\"color:var(--nd)\">juno</span>\n   132→              <span class=\"pn-log-text\">persistent one</span>\n   133→            </div>\n   134→            <div class=\"pn-log-line\">\n   135→              <span class=\"pn-log-time\">14:07</span>\n   136→              <span class=\"pn-log-nick\" style=\"color:var(--ne)\">sol</span>\n   137→              <span class=\"pn-log-text\">unrelated but does anyone have a good vps in .se</span>\n   138→            </div>\n   139→            <div class=\"pn-log-line\">\n   140→              <span class=\"pn-log-time\">14:08</span>\n   141→              <span class=\"pn-log-nick\" style=\"color:var(--nb)\">reed</span>\n   142→              <span class=\"pn-log-text\">njalla maybe</span>\n   143→            </div>\n   144→            <div class=\"pn-log-line\">\n   145→              <span class=\"pn-log-time\">14:08</span>\n   146→              <span class=\"pn-log-nick\" style=\"color:var(--nc)\">hako</span>\n   147→              <span class=\"pn-log-text\">sol: bahnhof</span>\n   148→            </div>\n   149→            <div class=\"pn-log-line\">\n   150→              <span class=\"pn-log-time\">14:09</span>\n   151→              <span class=\"pn-log-nick\" style=\"color:var(--ne)\">sol</span>\n   152→              <span class=\"pn-log-text\">oh bahnhof is good actually. thanks</span>\n   153→            </div>\n   154→          </div>\n   155→        </div>\n   156→      </div>\n   157→      <div class=\"pn-statusbar\">\n   158→        <div class=\"pn-statusbar-live\">\n   159→          <span class=\"pn-pulse\"></span>\n   160→          connected &middot; 4 bots across 3 networks\n   161→        </div>\n   162→        <span>last restart: never</span>\n   163→      </div>\n   164→    </div>\n   165→  </section>\n   166→\n   167→  <section class=\"features reveal\">\n   168→    <div class=\"feat\">\n   169→      <div class=\"feat-label\">uptime</div>\n   170→      <div class=\"feat-body\">\n   171→        <h3>your bot stays in the channel</h3>\n   172→        <p>we keep the process running and the connection open. you don't need a server, a screen session, or a laptop that never sleeps.</p>\n   173→      </div>\n   174→    </div>\n   175→    <div class=\"feat\">\n   176→      <div class=\"feat-label\">deploy</div>\n   177→      <div class=\"feat-body\">\n   178→        <h3>push code, bot goes live</h3>\n   179→        <p>point us at a git repo and we build on push. or upload a script. either way it's running in seconds.</p>\n   180→      </div>\n   181→    </div>\n   182→    <div class=\"feat\">\n   183→      <div class=\"feat-label\">networks</div>\n   184→      <div class=\"feat-body\">\n   185→        <h3>any network</h3>\n   186→        <p>libera, oftc, rizon, your own ircd, whatever. run bots on multiple networks from one account.</p>\n   187→      </div>\n   188→    </div>\n   189→    <div class=\"feat\">\n   190→      <div class=\"feat-label\">hostname</div>\n   191→      <div class=\"feat-body\">\n   192→        <h3>watchdog@bots.your.domain</h3>\n   193→        <p>on pro, your bots mask with a hostname you control. <code>/whois</code> shows your name, not ours.</p>\n   194→      </div>\n   195→    </div>\n   196→    <div class=\"feat\">\n   197→      <div class=\"feat-label\">recovery</div>\n   198→      <div class=\"feat-body\">\n   199→        <h3>it comes back on its own</h3>\n   200→        <p>if your bot crashes, we restart it with backoff. every plan, including free. logs are there when you want to see what happened.</p>\n   201→      </div>\n   202→    </div>\n   203→  </section>\n   204→\n   205→  <section class=\"marketplace reveal\">\n   206→    <div class=\"section-label\">marketplace</div>\n   207→    <div class=\"mp-grid\">\n   208→      <a href=\"/marketplace/linkbot\" class=\"mp-card\">\n   209→        <div class=\"mp-card-head\">\n   210→          <span class=\"mp-card-name\">linkbot</span>\n   211→          <span class=\"mp-card-tag\">free</span>\n   212→        </div>\n   213→        <p class=\"mp-card-desc\">fetches page titles for URLs posted in channel</p>\n   214→        <div class=\"mp-card-meta\">\n   215→          <span>1.2k deploys</span>\n   216→          <span>by irc.bot</span>\n   217→        </div>\n   218→      </a>\n   219→      <a href=\"/marketplace/rsswatch\" class=\"mp-card\">\n   220→        <div class=\"mp-card-head\">\n   221→          <span class=\"mp-card-name\">rsswatch</span>\n   222→          <span class=\"mp-card-tag\">free</span>\n   223→        </div>\n   224→        <p class=\"mp-card-desc\">posts new RSS/Atom items to a channel on a schedule</p>\n   225→        <div class=\"mp-card-meta\">\n   226→          <span>840 deploys</span>\n   227→          <span>by irc.bot</span>\n   228→        </div>\n   229→      </a>\n   230→      <a href=\"/marketplace/sed\" class=\"mp-card\">\n   231→        <div class=\"mp-card-head\">\n   232→          <span class=\"mp-card-name\">sed</span>\n   233→          <span class=\"mp-card-tag\">free</span>\n   234→        </div>\n   235→        <p class=\"mp-card-desc\">s/typo/fix/ &mdash; regex corrections for messages</p>\n   236→        <div class=\"mp-card-meta\">\n   237→          <span>2.1k deploys</span>\n   238→          <span>by community</span>\n   239→        </div>\n   240→      </a>\n   241→      <a href=\"/marketplace/watchdog\" class=\"mp-card\">\n   242→        <div class=\"mp-card-head\">\n   243→          <span class=\"mp-card-name\">watchdog</span>\n   244→          <span class=\"mp-card-tag\">free</span>\n   245→        </div>\n   246→        <p class=\"mp-card-desc\">moderation bot with warnings, kicks, and stats</p>\n   247→        <div class=\"mp-card-meta\">\n   248→          <span>680 deploys</span>\n   249→          <span>by irc.bot</span>\n   250→        </div>\n   251→      </a>\n   252→    </div>\n   253→  </section>\n   254→\n   255→  <section class=\"setup reveal\">\n   256→    <div class=\"section-label\">deploy</div>\n   257→    <div class=\"terminal\">\n   258→      <div class=\"terminal-chrome\">\n   259→        <div class=\"dots\"><span></span><span></span><span></span></div>\n   260→        <span>terminal</span>\n   261→      </div>\n   262→      <div class=\"terminal-body\">\n   263→        <span class=\"cm\"># from a git repo</span><br>\n   264→        <span class=\"pr\">$</span> ircbot deploy --repo git@github.com:you/mybot.git<br>\n   265→        <span class=\"gap\"></span>\n   266→        <span class=\"cm\"># or a single script</span><br>\n   267→        <span class=\"pr\">$</span> ircbot deploy --file bot.py --network libera<br>\n   268→        <span class=\"gap\"></span>\n   269→        <span class=\"cm\"># check status</span><br>\n   270→        <span class=\"pr\">$</span> ircbot status<br>\n   271→        <span style=\"color:var(--g)\">&#9679;</span> mybot &nbsp;libera.chat &nbsp;uptime 2d 11h<br>\n   272→        <span class=\"gap\"></span>\n   273→        <span class=\"cm\"># done</span>\n   274→      </div>\n   275→    </div>\n   276→  </section>\n   277→\n   278→  <section class=\"pricing reveal\" id=\"pricing\">\n   279→    <div class=\"section-label\">pricing</div>\n   280→    <div class=\"price-table\">\n   281→      <div class=\"pt-row pt-head\">\n   282→        <div class=\"pt-cell\"></div>\n   283→        <div class=\"pt-cell\">\n   284→          <span class=\"plan-name\">free</span>\n   285→          <span class=\"plan-price\">$0</span>\n   286→        </div>\n   287→        <div class=\"pt-cell\">\n   288→          <span class=\"plan-name\">pro</span>\n   289→          <span class=\"plan-price\">$6 <span>/mo</span></span>\n   290→        </div>\n   291→        <div class=\"pt-cell\">\n   292→          <span class=\"plan-name\">team</span>\n   293→          <span class=\"plan-price\">$18 <span>/mo</span></span>\n   294→        </div>\n   295→      </div>\n   296→      <div class=\"pt-row\">\n   297→        <div class=\"pt-cell\">bots</div>\n   298→        <div class=\"pt-cell\">1</div>\n   299→        <div class=\"pt-cell\">5</div>\n   300→        <div class=\"pt-cell\">unlimited</div>\n   301→      </div>\n   302→      <div class=\"pt-row\">\n   303→        <div class=\"pt-cell\">networks</div>\n   304→        <div class=\"pt-cell\">1</div>\n   305→        <div class=\"pt-cell\">unlimited</div>\n   306→        <div class=\"pt-cell\">unlimited</div>\n   307→      </div>\n   308→      <div class=\"pt-row\">\n   309→        <div class=\"pt-cell\">deploy</div>\n   310→        <div class=\"pt-cell\">upload</div>\n   311→        <div class=\"pt-cell\">git + upload</div>\n   312→        <div class=\"pt-cell\">git + upload</div>\n   313→      </div>\n   314→      <div class=\"pt-row\">\n   315→        <div class=\"pt-cell\">marketplace</div>\n   316→        <div class=\"pt-cell pt-dim\">&mdash;</div>\n   317→        <div class=\"pt-cell\">full access</div>\n   318→        <div class=\"pt-cell\">full access</div>\n   319→      </div>\n   320→      <div class=\"pt-row\">\n   321→        <div class=\"pt-cell\">hostname</div>\n   322→        <div class=\"pt-cell pt-dim\">&mdash;</div>\n   323→        <div class=\"pt-cell\">custom</div>\n   324→        <div class=\"pt-cell\">custom</div>\n   325→      </div>\n   326→      <div class=\"pt-row\">\n   327→        <div class=\"pt-cell\">restart</div>\n   328→        <div class=\"pt-cell\">auto</div>\n   329→        <div class=\"pt-cell\">auto</div>\n   330→        <div class=\"pt-cell\">auto</div>\n   331→      </div>\n   332→      <div class=\"pt-row\">\n   333→        <div class=\"pt-cell\">support</div>\n   334→        <div class=\"pt-cell pt-dim\">&mdash;</div>\n   335→        <div class=\"pt-cell\">irc</div>\n   336→        <div class=\"pt-cell\">irc</div>\n   337→      </div>\n   338→      <div class=\"pt-row\">\n   339→        <div class=\"pt-cell\">members</div>\n   340→        <div class=\"pt-cell pt-dim\">&mdash;</div>\n   341→        <div class=\"pt-cell pt-dim\">&mdash;</div>\n   342→        <div class=\"pt-cell\">up to 10</div>\n   343→      </div>\n   344→      <div class=\"pt-actions\">\n   345→        <div class=\"pt-cell\"></div>\n   346→        <div class=\"pt-cell\"><a href=\"/signup\" class=\"pt-btn pt-btn-o\">start free</a></div>\n   347→        <div class=\"pt-cell\"><a href=\"/signup?plan=pro\" class=\"pt-btn pt-btn-f\">go pro</a></div>\n   348→        <div class=\"pt-cell\"><a href=\"/signup?plan=team\" class=\"pt-btn pt-btn-f\">go team</a></div>\n   349→      </div>\n   350→    </div>\n   351→  </section>\n   352→\n   353→  <footer class=\"footer\">\n   354→    <span class=\"mark\">irc<span class=\"dot\"></span>bot</span>\n   355→    <div class=\"footer-links\">\n   356→      <a href=\"/docs\">docs</a>\n   357→      <a href=\"/status\">status</a>\n   358→      <a href=\"/marketplace\">marketplace</a>\n   359→      <a href=\"/faq\">faq</a>\n   360→      <a href=\"/cli\">cli</a>\n   361→      <a href=\"https://github.com/ircbot\">github</a>\n   362→      <a href=\"mailto:hi@irc.bot\">hi@irc.bot</a>\n   363→    </div>\n   364→  </footer>\n   365→\n   366→</div>\n   367→<script>\n   368→document.addEventListener('DOMContentLoaded',()=>{\n   369→  // reveal animation\n   370→  const obs=new IntersectionObserver(es=>{es.forEach(e=>{if(e.isIntersecting){e.target.classList.add('in');obs.unobserve(e.target)}})},{threshold:.1});\n   371→  document.querySelectorAll('.reveal').forEach(el=>obs.observe(el));\n   372→\n   373→  // bot data\n   374→  const bots={\n   375→    watchdog:{\n   376→      chrome:'<b>watchdog</b> &mdash; #lobby on libera.chat',\n   377→      info:[\n   378→        {k:'status',v:'running',accent:true},\n   379→        {k:'uptime',v:'14d 3h'},\n   380→        {k:'channels',v:'3'},\n   381→        {k:'hostname',v:'watchdog@bots.your.domain'}\n   382→      ],\n   383→      log:[\n   384→        {sys:true,time:'14:01',text:'&mdash; watchdog connected to #lobby, #dev, #offtopic'},\n   385→        {time:'14:03',nick:'reed',color:'var(--nb)',text:'has anyone looked at the mass join thing from earlier'},\n   386→        {time:'14:03',nick:'hako',color:'var(--nc)',text:'yeah it was drones. already handled'},\n   387→        {time:'14:04',nick:'moth',color:'var(--na)',text:'<span class=\"pn-log-cmd\">!warn</span> xflood'},\n   388→        {bot:true,time:'14:04',nick:'watchdog',text:'xflood: warning 1/3'},\n   389→        {time:'14:05',nick:'juno',color:'var(--nd)',text:'persistent one'},\n   390→        {time:'14:07',nick:'sol',color:'var(--ne)',text:'unrelated but does anyone have a good vps in .se'},\n   391→        {time:'14:08',nick:'reed',color:'var(--nb)',text:'njalla maybe'},\n   392→        {time:'14:08',nick:'hako',color:'var(--nc)',text:'sol: bahnhof'},\n   393→        {time:'14:09',nick:'sol',color:'var(--ne)',text:'oh bahnhof is good actually. thanks'}\n   394→      ]\n   395→    },\n   396→    logbot:{\n   397→      chrome:'<b>logbot</b> &mdash; #dev on libera.chat',\n   398→      info:[\n   399→        {k:'status',v:'running',accent:true},\n   400→        {k:'uptime',v:'31d 18h'},\n   401→        {k:'channels',v:'2'},\n   402→        {k:'hostname',v:'logbot@bots.your.domain'}\n   403→      ],\n   404→      log:[\n   405→        {sys:true,time:'09:00',text:'&mdash; logbot connected to #dev, #ops'},\n   406→        {time:'09:14',nick:'reed',color:'var(--nb)',text:'pushed the null fix btw'},\n   407→        {time:'09:15',nick:'moth',color:'var(--na)',text:'the one from yesterday?'},\n   408→        {time:'09:15',nick:'reed',color:'var(--nb)',text:'yeah'},\n   409→        {time:'09:18',nick:'juno',color:'var(--nd)',text:'reed: did you rebase or merge'},\n   410→        {time:'09:19',nick:'reed',color:'var(--nb)',text:'rebase. was clean'},\n   411→        {time:'09:22',nick:'sol',color:'var(--ne)',text:'anyone in the config loader rn'},\n   412→        {time:'09:22',nick:'hako',color:'var(--nc)',text:'no go ahead'},\n   413→        {time:'09:25',nick:'sol',color:'var(--ne)',text:'i made mass today btw'},\n   414→        {time:'09:25',nick:'moth',color:'var(--na)',text:'nice. what kind'}\n   415→      ]\n   416→    },\n   417→    linkbot:{\n   418→      chrome:'<b>linkbot</b> &mdash; #general on oftc',\n   419→      info:[\n   420→        {k:'status',v:'running',accent:true},\n   421→        {k:'uptime',v:'8d 22h'},\n   422→        {k:'channels',v:'1'},\n   423→        {k:'hostname',v:'linkbot@bots.your.domain'}\n   424→      ],\n   425→      log:[\n   426→        {sys:true,time:'11:00',text:'&mdash; linkbot connected to #general'},\n   427→        {time:'11:04',nick:'moth',color:'var(--na)',text:'https://openresty.org/en/changelog-1025003.html'},\n   428→        {bot:true,time:'11:04',nick:'linkbot',text:'^ OpenResty 1.25.3.1 Changelog'},\n   429→        {time:'11:05',nick:'juno',color:'var(--nd)',text:'oh finally'},\n   430→        {time:'11:06',nick:'moth',color:'var(--na)',text:'took them long enough'},\n   431→        {time:'11:09',nick:'sol',color:'var(--ne)',text:'https://www.phoronix.com/news/Linux-6.13-Released'},\n   432→        {bot:true,time:'11:09',nick:'linkbot',text:'^ Linux 6.13 Released - Phoronix'},\n   433→        {time:'11:10',nick:'reed',color:'var(--nb)',text:'anyone running it'},\n   434→        {time:'11:11',nick:'moth',color:'var(--na)',text:'since rc4. solid so far'},\n   435→        {time:'11:12',nick:'hako',color:'var(--nc)',text:'i should update. still on 6.11'}\n   436→      ]\n   437→    },\n   438→    quizzer:{\n   439→      chrome:'<b>quizzer</b> &mdash; #trivia on rizon',\n   440→      info:[\n   441→        {k:'status',v:'stopped'},\n   442→        {k:'uptime',v:'&mdash;'},\n   443→        {k:'channels',v:'1'},\n   444→        {k:'hostname',v:'quizzer@bots.your.domain'}\n   445→      ],\n   446→      log:[\n   447→        {sys:true,time:'20:00',text:'&mdash; quizzer connected to #trivia'},\n   448→        {bot:true,time:'20:31',nick:'quizzer',text:'Q12: first compiled programming language?'},\n   449→        {time:'20:32',nick:'hako',color:'var(--nc)',text:'uhhh'},\n   450→        {time:'20:32',nick:'sol',color:'var(--ne)',text:'fortran'},\n   451→        {bot:true,time:'20:32',nick:'quizzer',text:'correct! sol: 8 pts'},\n   452→        {time:'20:33',nick:'moth',color:'var(--na)',text:'every single time'},\n   453→        {time:'20:33',nick:'juno',color:'var(--nd)',text:'sol do you just have these memorized'},\n   454→        {time:'20:34',nick:'sol',color:'var(--ne)',text:'maybe'},\n   455→        {sys:true,time:'20:35',text:'&mdash; round ended. sol wins with 8 points'},\n   456→        {sys:true,time:'20:41',text:'&mdash; quizzer disconnected (manual stop)'}\n   457→      ]\n   458→    }\n   459→  };\n   460→\n   461→  function renderInfo(info){\n   462→    return info.map(c=>`<div class=\"pn-info-cell\"><span class=\"pn-info-k\">${c.k}</span><span class=\"pn-info-v${c.accent?' accent':''}\">${c.v}</span></div>`).join('');\n   463→  }\n   464→\n   465→  function renderLog(log){\n   466→    return log.map(l=>{\n   467→      const cls=l.sys?'pn-log-line sys':l.bot?'pn-log-line bot':'pn-log-line';\n   468→      const nick=l.sys?'':l.bot?l.nick:`<span style=\"color:${l.color}\">${l.nick}</span>`;\n   469→      return `<div class=\"${cls}\"><span class=\"pn-log-time\">${l.time}</span><span class=\"pn-log-nick\">${nick}</span><span class=\"pn-log-text\">${l.text}</span></div>`;\n   470→    }).join('');\n   471→  }\n   472→\n   473→  const chromeLabel=document.querySelector('.pn-chrome-left span:last-child');\n   474→  const infoStrip=document.querySelector('.pn-info');\n   475→  const logArea=document.querySelector('.pn-log');\n   476→  const sbItems=document.querySelectorAll('.pn-sb-bot[data-bot]');\n   477→\n   478→  sbItems.forEach(item=>{\n   479→    item.addEventListener('click',()=>{\n   480→      const id=item.dataset.bot;\n   481→      const bot=bots[id];\n   482→      if(!bot)return;\n   483→      sbItems.forEach(s=>s.classList.remove('active'));\n   484→      item.classList.add('active');\n   485→      chromeLabel.innerHTML=bot.chrome;\n   486→      infoStrip.innerHTML=renderInfo(bot.info);\n   487→      logArea.innerHTML=renderLog(bot.log);\n   488→    });\n   489→  });\n   490→});\n   491→</script>\n   492→</body>\n   493→</html>\n   494→"}]},"uuid":"f7e47228-fd2c-4ef5-996b-a1f757f3bee0","timestamp":"2026-03-05T22:02:03.892Z","sourceToolAssistantUUID":"0432c76b-3825-4dba-bbf0-25e91b622d3b"}
{"parentUuid":"f7e47228-fd2c-4ef5-996b-a1f757f3bee0","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","message":{"model":"claude-haiku-4-5-20251001","id":"msg_01A2yAFgfLnfYirXmySYB4um","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_01Bi85sSw1fZbqFmL5Q7oHWv","name":"Read","input":{"file_path":"/home/josie/development/irc-now/deploy/instances/bot-landing.yaml"},"caller":{"type":"direct"}}],"stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":740,"cache_creation_input_tokens":1040,"cache_read_input_tokens":56704,"cache_creation":{"ephemeral_5m_input_tokens":0,"ephemeral_1h_input_tokens":1040},"output_tokens":1,"service_tier":"standard","inference_geo":"not_available"}},"requestId":"req_011CYkgpy2ZKJjuBhRQNcSKi","type":"assistant","uuid":"0a8c7681-6cba-41ed-b5c1-0dc659506fe7","timestamp":"2026-03-05T22:02:04.034Z"}
{"parentUuid":"0a8c7681-6cba-41ed-b5c1-0dc659506fe7","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PreToolUse","hookName":"PreToolUse:Read","command":"python3 ${CLAUDE_PLUGIN_ROOT}/hooks/pretooluse.py"},"toolUseID":"toolu_01Bi85sSw1fZbqFmL5Q7oHWv","parentToolUseID":"toolu_01Bi85sSw1fZbqFmL5Q7oHWv","uuid":"b47605a7-78b1-4cfd-80eb-241e396ed4cd","timestamp":"2026-03-05T22:02:04.036Z"}
{"parentUuid":"b47605a7-78b1-4cfd-80eb-241e396ed4cd","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PostToolUse","hookName":"PostToolUse:Read","command":"python3 ${CLAUDE_PLUGIN_ROOT}/hooks/posttooluse.py"},"parentToolUseID":"toolu_01Bi85sSw1fZbqFmL5Q7oHWv","toolUseID":"toolu_01Bi85sSw1fZbqFmL5Q7oHWv","timestamp":"2026-03-05T22:02:04.086Z","uuid":"65e224bb-5909-44a3-ab36-ebe22369ed38"}
{"parentUuid":"65e224bb-5909-44a3-ab36-ebe22369ed38","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PostToolUse","hookName":"PostToolUse:Read","command":"callback"},"parentToolUseID":"toolu_01Bi85sSw1fZbqFmL5Q7oHWv","toolUseID":"toolu_01Bi85sSw1fZbqFmL5Q7oHWv","timestamp":"2026-03-05T22:02:04.086Z","uuid":"eac11a38-38dc-49fc-8a62-1d489882cd1c"}
{"parentUuid":"0a8c7681-6cba-41ed-b5c1-0dc659506fe7","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_01Bi85sSw1fZbqFmL5Q7oHWv","type":"tool_result","content":"     1→apiVersion: irc.now/v1alpha1\n     2→kind: WebService\n     3→metadata:\n     4→  name: bot-landing\n     5→  namespace: irc-josie-cloud\n     6→spec:\n     7→  image: image-registry.openshift-image-registry.svc:5000/irc-josie-cloud/bot-landing:latest\n     8→  host: irc.bot\n     9→  tls:\n    10→    issuerRef:\n    11→      name: letsencrypt-prod\n    12→      kind: ClusterIssuer\n    13→    dnsNames:\n    14→      - irc.bot\n    15→  resources:\n    16→    requests:\n    17→      memory: \"32Mi\"\n    18→      cpu: \"25m\"\n    19→    limits:\n    20→      memory: \"128Mi\"\n    21→      cpu: \"250m\"\n    22→"}]},"uuid":"56317b5e-f719-4746-a891-4d2b4a90f612","timestamp":"2026-03-05T22:02:04.085Z","sourceToolAssistantUUID":"0a8c7681-6cba-41ed-b5c1-0dc659506fe7"}
{"parentUuid":"56317b5e-f719-4746-a891-4d2b4a90f612","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","message":{"model":"claude-haiku-4-5-20251001","id":"msg_01A2yAFgfLnfYirXmySYB4um","type":"message","role":"assistant","content":[{"type":"tool_use","id":"toolu_014fR8BMvDutkvHA7sdkQSxs","name":"Glob","input":{"pattern":"/home/josie/development/irc-now/docs/plans/**"},"caller":{"type":"direct"}}],"stop_reason":"tool_use","stop_sequence":null,"usage":{"input_tokens":740,"cache_creation_input_tokens":1040,"cache_read_input_tokens":56704,"output_tokens":379,"server_tool_use":{"web_search_requests":0,"web_fetch_requests":0},"service_tier":"standard","cache_creation":{"ephemeral_1h_input_tokens":1040,"ephemeral_5m_input_tokens":0},"inference_geo":"","iterations":[],"speed":"standard"}},"requestId":"req_011CYkgpy2ZKJjuBhRQNcSKi","type":"assistant","uuid":"bf2c8243-2afc-4bb3-8553-1a6f703e1f67","timestamp":"2026-03-05T22:02:04.203Z"}
{"parentUuid":"bf2c8243-2afc-4bb3-8553-1a6f703e1f67","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PreToolUse","hookName":"PreToolUse:Glob","command":"python3 ${CLAUDE_PLUGIN_ROOT}/hooks/pretooluse.py"},"toolUseID":"toolu_014fR8BMvDutkvHA7sdkQSxs","parentToolUseID":"toolu_014fR8BMvDutkvHA7sdkQSxs","uuid":"30b773ee-6d71-46e3-9a08-9fd6b0c6d9fa","timestamp":"2026-03-05T22:02:04.205Z"}
{"parentUuid":"30b773ee-6d71-46e3-9a08-9fd6b0c6d9fa","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PostToolUse","hookName":"PostToolUse:Glob","command":"python3 ${CLAUDE_PLUGIN_ROOT}/hooks/posttooluse.py"},"parentToolUseID":"toolu_014fR8BMvDutkvHA7sdkQSxs","toolUseID":"toolu_014fR8BMvDutkvHA7sdkQSxs","timestamp":"2026-03-05T22:02:04.346Z","uuid":"fba162d8-53f6-4840-a9c6-d09773816ec1"}
{"parentUuid":"fba162d8-53f6-4840-a9c6-d09773816ec1","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"progress","data":{"type":"hook_progress","hookEvent":"PostToolUse","hookName":"PostToolUse:Glob","command":"callback"},"parentToolUseID":"toolu_014fR8BMvDutkvHA7sdkQSxs","toolUseID":"toolu_014fR8BMvDutkvHA7sdkQSxs","timestamp":"2026-03-05T22:02:04.346Z","uuid":"75c81f6a-075a-476c-a6d9-864834778e28"}
{"parentUuid":"bf2c8243-2afc-4bb3-8553-1a6f703e1f67","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","type":"user","message":{"role":"user","content":[{"tool_use_id":"toolu_014fR8BMvDutkvHA7sdkQSxs","type":"tool_result","content":"/home/josie/development/irc-now/docs/plans/2026-03-03-irc-now-platform-design.md\n/home/josie/development/irc-now/docs/plans/2026-03-03-irc-now-phase1-plan.md\n/home/josie/development/irc-now/docs/plans/2026-03-03-irc-now-roadmap.md\n/home/josie/development/irc-now/docs/plans/2026-03-05-whois-hostname-cloaking-design.md\n/home/josie/development/irc-now/docs/plans/2026-03-05-whois-hostname-cloaking-plan.md\n/home/josie/development/irc-now/docs/plans/2026-03-05-irc-now-network-design.md\n/home/josie/development/irc-now/docs/plans/2026-03-05-irc-now-network-plan.md"}]},"uuid":"b8bd0160-e17a-4102-ab52-f692e7c7c429","timestamp":"2026-03-05T22:02:04.344Z","sourceToolAssistantUUID":"bf2c8243-2afc-4bb3-8553-1a6f703e1f67"}
{"parentUuid":"b8bd0160-e17a-4102-ab52-f692e7c7c429","isSidechain":true,"userType":"external","cwd":"/home/josie/development/irc-now/notes","sessionId":"bbadb0e1-643e-43a3-a3cc-f1211ba38948","version":"2.1.63","gitBranch":"master","agentId":"a2f898c49e0a35956","slug":"keen-riding-sketch","message":{"model":"claude-haiku-4-5-20251001","id":"msg_01YKJJ2KMv45a3vdJxu3yw6o","type":"message","role":"assistant","content":[{"type":"text","text":"Let me cr a=eC.getStreamFromFD(e),o=((e,r,t,n)=>{for(var a=0,o=0;o<t;o++){var i=f[r>>2],s=f[r+4>>2];r+=8;var l=eF.write(e,u,i,s,n);if(l<0)return -1;if(a+=l,l<s)break;void 0!==n&&(n+=l)}return a})(a,r,t);return f[n>>2]=o,0}catch(e){if(void 0===eF||"ErrnoError"!==e.name)throw e;return e.errno}}var eK=[],webglGetExtensions=()=>{var e=getEmscriptenSupportedExtensions(b);return e.concat(e.map(e=>"GL_"+e))},emscriptenWebGLGet=(e,r,t)=>{if(!r)return void eX.recordError(1281);var n=void 0;switch(e){case 36346:n=1;break;case 36344:0!=t&&1!=t&&eX.recordError(1280);return;case 34814:case 36345:n=0;break;case 34466:var a=b.getParameter(34467);n=a?a.length:0;break;case 33309:if(eX.currentContext.version<2)return void eX.recordError(1282);n=webglGetExtensions().length;break;case 33307:case 33308:if(eX.currentContext.version<2)return void eX.recordError(1280);n=3*(33307==e)}if(void 0===n){var o=b.getParameter(e);switch(typeof o){case"number":n=o;break;case"boolean":n=+!!o;break;case"string":eX.recordError(1280);return;case"object":if(null===o)switch(e){case 34964:case 35725:case 34965:case 36006:case 36007:case 32873:case 34229:case 36662:case 36663:case 35053:case 35055:case 36010:case 35097:case 35869:case 32874:case 36389:case 35983:case 35368:case 34068:n=0;break;default:return void eX.recordError(1280)}else if(o instanceof Float32Array||o instanceof Uint32Array||o instanceof Int32Array||o instanceof Array){for(var i=0;i<o.length;++i)switch(t){case 0:m[r+4*i>>2]=o[i];break;case 2:p[r+4*i>>2]=o[i];break;case 4:u[r+i]=+!!o[i]}return}else try{n=0|o.name}catch(r){eX.recordError(1280),ec(`GL_INVALID_ENUM in glGet${t}v: Unknown object returned from WebGL getParameter(${e})! (error: ${r})`);return}break;default:eX.recordError(1280),ec(`GL_INVALID_ENUM in glGet${t}v: Native code calling glGet${t}v(${e}) and it returns ${o} of type ${typeof o}!`);return}}switch(t){case 1:writeI53ToI64(r,n);break;case 0:m[r>>2]=n;break;case 2:p[r>>2]=n;break;case 4:u[r]=+!!n}},webglGetLeftBracePos=e=>"]"==e.slice(-1)&&e.lastIndexOf("["),heapObjectForWebGLType=e=>0==(e-=5120)?u:1==e?l:2==e?c:4==e?m:6==e?p:5==e||28922==e||28520==e||30779==e||30782==e?f:d,toTypedArrayIndex=(e,r)=>e>>>31-Math.clz32(r.BYTES_PER_ELEMENT),emscriptenWebGLGetTexPixelData=(e,r,t,n,a,o)=>{var i,s,u=heapObjectForWebGLType(e),l=({5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4}[r-6402]||1)*u.BYTES_PER_ELEMENT,c=n*(i=(eX.unpackRowLength||t)*l,i+(s=eX.unpackAlignment)-1&-s);return u.subarray(toTypedArrayIndex(a,u),toTypedArrayIndex(a+c,u))},webglGetUniformLocation=e=>{var r=b.currentProgram;if(r){var t=r.uniformLocsById[e];return"number"==typeof t&&(r.uniformLocsById[e]=t=b.getUniformLocation(r,r.uniformArrayNamesById[e]+(t>0?`[${t}]`:""))),t}eX.recordError(1282)},eZ=[],e0=[];function _mediapipe_find_canvas_event_target(e){let t=findCanvasEventTarget(e);return r&&!t&&(t=r.canvasWebGpu),eD(t)}function _mediapipe_webgl_tex_image_drawable(e){let r=ej(e);b.texImage2D(b.TEXTURE_2D,0,b.RGBA,b.RGBA,b.UNSIGNED_BYTE,r)}function _random_get(e,r){try{return randomFill(l.subarray(e,e+r)),0}catch(e){if(void 0===eF||"ErrnoError"!==e.name)throw e;return e.errno}}function _wgpuQueueWriteBuffer(e,r,t,n,a,o){var i=convertI32PairToI53Checked(t,n),s=eY.getJsObject(e),u=eY.getJsObject(r),c=l.subarray(a,a+o);s.writeBuffer(u,i,c,0,o)}eF.createPreloadedFile=(e,r,t,n,a,o,i,s,u,l)=>{FS_preloadFile(e,r,t,n,a,s,u,l).then(o).catch(i)},eF.preloadFile=FS_preloadFile,eF.staticInit(),"u">typeof MainLoop&&MainLoop.preMainLoop.push(()=>eX.newRenderingFrameStarted());for(let e=0;e<32;++e)eK.push(Array(e));for(var e2=new Float32Array(288),e1=0;e1<=288;++e1)eZ[e1]=e2.subarray(0,e1);for(var e4=new Int32Array(288),e1=0;e1<=288;++e1)e0[e1]=e4.subarray(0,e1);if(r.preloadPlugins&&(ef=r.preloadPlugins),r.noExitRuntime&&(eh=r.noExitRuntime),r.print&&(el=r.print),r.printErr&&(ec=r.printErr),r.wasmBinary&&(a=r.wasmBinary),r.arguments&&r.arguments,r.thisProgram&&(ei=r.thisProgram),r.preInit)for("function"==typeof r.preInit&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.shift()();r.addRunDependency=addRunDependency,r.removeRunDependency=removeRunDependency,r.ccall=(e,t,n,a,o)=>{var i,s={string:e=>{var r=0;return null!=e&&0!==e&&(r=stringToUTF8OnStack(e)),r},array:e=>{let r;var t=(r=e.length,K(r));return u.set(e,t),t}};function convertReturnValue(e){return"string"===t?UTF8ToString(e):"boolean"===t?!!e:e}var l=r["_"+e],c=[],d=0;if(a)for(var m=0;m<a.length;m++){var f=s[n[m]];f?(0===d&&(d=stackSave()),c[m]=f(a[m])):c[m]=a[m]}var p=l(...c);return i=p,0!==d&&Q(d),p=convertReturnValue(i)},r.stringToNewUTF8=stringToNewUTF8,r.FS_preloadFile=FS_preloadFile,r.FS_unlink=(...e)=>eF.unlink(...e),r.FS_createPath=(...e)=>eF.createPath(...e),r.FS_createDevice=(...e)=>eF.createDevice(...e),r.FS_createDataFile=FS_createDataFile,r.FS_createLazyFile=(...e)=>eF.createLazyFile(...e);var e3={1486195:e=>{let r=ej(e).getContext("webgpu");return eY.importJsTexture(r.getCurrentTexture())},1486338:(e,r,t,n,a)=>{let o=ej(e),i=eY.getJsObject(r),s=eY.getJsObject(t);i.queue.copyExternalImageToTexture({source:o},{texture:s},[n,a])},1486597:(e,r,t,n)=>{let a=ej(e),o=eY.getJsObject(r),i=eY.getJsObject(t),s=eY.getJsObject(n),u=o.createBindGroup({layout:s,entries:[{binding:0,resource:i},{binding:1,resource:a}]});return eY.importJsBindGroup(u)},1486967:(e,r)=>{let t=ej(e),n=ej(r);n.getContext("2d").drawImage(t,0,0,n.width,n.height)},1487132:(e,r)=>{let t=ej(e),n=ej(r),a=n.getContext("2d"),o=new ImageData(t,n.width,n.height);a.putImageData(o,0,0)},1487356:(e,r)=>{let t=ej(e),n=ej(r),a=t.getContext("2d").getImageData(0,0,t.width,t.height);n.set(a.data)},1487560:()=>"u">typeof HTMLCanvasElement,1487615:()=>!!r.preinitializedWebGPUDevice,1487666:()=>{e$["#canvas"]=r.canvas}};function BeginGlQueryTiming(e,t){let n=r.canvas.getContext("webgl2"),a=n.createQuery();r.WEBGL_SHADER_CALC_METRICS=r.WEBGL_SHADER_CALC_METRICS||{},r.WEBGL_SHADER_CALC_METRICS[UTF8ToString(e)]={query:a,repetitions:t},r.WEBGL_QUERY_TIMER_EXT=r.WEBGL_QUERY_TIMER_EXT||n.getExtension("EXT_disjoint_timer_query_webgl2"),n.beginQuery(r.WEBGL_QUERY_TIMER_EXT.TIME_ELAPSED_EXT,a)}function EndGlQueryTiming(e){r.canvas.getContext("webgl2").endQuery(r.WEBGL_QUERY_TIMER_EXT.TIME_ELAPSED_EXT,r.WEBGL_SHADER_CALC_METRICS[UTF8ToString(e)].query)}function JsWrapImageConverter(){r._imageConverter||(r._imageConverter=(e,t,n,a,o,i,s)=>({data:new s(i?r.HEAPU8.slice(e,e+t).buffer:r.HEAPU8.buffer,e,n*a*o),width:n,height:a}))}function JsOnUint8ArrayImageListener(e,t,n,a,o,i,s,u){let l=r._imageConverter(t,n,a,o,i,s,Uint8Array);r._wrapSimpleListenerOutput(e,l,u)}function JsOnFloat32ArrayImageListener(e,t,n,a,o,i,s,u){let l=r._imageConverter(t,n,a,o,i,s,Float32Array);r._wrapSimpleListenerOutput(e,l,u)}function JsOnWebGLTextureListener(e,t,n,a,o){r._wrapSimpleListenerOutput(e,{data:eX.textures[t],width:n,height:a},o)}function JsOnUint8ArrayImageVectorListener(e,t,n,a,o,i,s,u){let l=r._imageConverter(t,n,a,o,i,s,Uint8Array);r._wrapSimpleListenerOutput(e,l,!1,u)}function JsOnFloat32ArrayImageVectorListener(e,t,n,a,o,i,s,u){let l=r._imageConverter(t,n,a,o,i,s,Float32Array);r._wrapSimpleListenerOutput(e,l,!1,u)}function JsOnWebGLTextureVectorListener(e,t,n,a,o){r._wrapSimpleListenerOutput(e,{data:eX.textures[t],width:n,height:a},!1,o)}function JsOnEmptyPacketListener(e,t){r._wrapEmptyPacketListenerOutput(e,t)}function JsOnVectorFinishedListener(e,t){r._wrapSimpleListenerOutput(e,void 0,!0,t)}function JsOnSimpleListenerBool(e,t,n){r._wrapSimpleListenerOutput(e,t,n)}function JsOnVectorListenerBool(e,t,n){r._wrapSimpleListenerOutput(e,t,!1,n)}function JsOnSimpleListenerInt(e,t,n){r._wrapSimpleListenerOutput(e,t,n)}function JsOnVectorListenerInt(e,t,n){r._wrapSimpleListenerOutput(e,t,!1,n)}function JsOnSimpleListenerUint(e,t,n){r._wrapSimpleListenerOutput(e,t,n)}function JsOnVectorListenerUint(e,t,n){r._wrapSimpleListenerOutput(e,t,!1,n)}function JsOnSimpleListenerDouble(e,t,n){r._wrapSimpleListenerOutput(e,t,n)}function JsOnVectorListenerDouble(e,t,n){r._wrapSimpleListenerOutput(e,t,!1,n)}function JsOnSimpleListenerFloat(e,t,n){r._wrapSimpleListenerOutput(e,t,n)}function JsOnVectorListenerFloat(e,t,n){r._wrapSimpleListenerOutput(e,t,!1,n)}function JsOnSimpleListenerString(e,t,n){r._wrapSimpleListenerOutput(e,UTF8ToString(t),n)}function JsOnVectorListenerString(e,t,n){r._wrapSimpleListenerOutput(e,UTF8ToString(t),!1,n)}function JsOnVectorListenerProto(e,t,n,a,o){let i=a?r.HEAPU8.slice(t,t+n):new Uint8Array(r.HEAPU8.buffer,t,n);r._wrapSimpleListenerOutput(e,i,!1,o)}function JsWrapSimpleListeners(){r._wrapSimpleListenerOutput||(r._wrapSimpleListenerOutput=(e,...t)=>{if(r.simpleListeners){let n=UTF8ToString(e);r.simpleListeners[n]&&r.simpleListeners[n](...t)}}),r._wrapEmptyPacketListenerOutput||(r._wrapEmptyPacketListenerOutput=(e,t)=>{if(r.emptyPacketListeners){let n=UTF8ToString(e);r.emptyPacketListeners[n]&&r.emptyPacketListeners[n](t)}})}function JsOnSimpleListenerBinaryArray(e,t,n,a,o){let i=a?r.HEAPU8.slice(t,t+n):new Uint8Array(r.HEAPU8.buffer,t,n);r._wrapSimpleListenerOutput(e,i,o)}function mediapipe_import_external_texture(e,r){let t=eY.getJsObject(e),n=ej(r);return eD(t.importExternalTexture({source:n}))}function mediapipe_create_utility_canvas2d(){let e;return"u">typeof HTMLCanvasElement?(e=document.createElement("canvas")).style.display="none":e=new OffscreenCanvas(0,0),eD(e)}function GetAdapterArchitecture(){let e=r.preinitializedWebGPUDevice;return stringToNewUTF8(e.adapterInfo?e.adapterInfo.architecture:"Unknown")}function GetAdapterDescription(){let e=r.preinitializedWebGPUDevice;return stringToNewUTF8(e.adapterInfo?e.adapterInfo.description:"Unknown")}function GetAdapterDeviceName(){let e=r.preinitializedWebGPUDevice;return stringToNewUTF8(e.adapterInfo?e.adapterInfo.device:"Unknown")}function GetAdapterVendor(){let e=r.preinitializedWebGPUDevice;return stringToNewUTF8(e.adapterInfo?e.adapterInfo.vendor:"Unknown")}function __asyncjs__mediapipe_map_buffer_jspi(e,r){return Asyncify.handleAsync(async()=>{let t=eY.getJsObject(e);"mapSync"in t?t.mapSync(GPUMapMode.READ):await t.mapAsync(GPUMapMode.READ);let n=t.getMappedRange();l.set(new Uint8Array(n),r),t.unmap()})}function hardware_concurrency(){var e=1;try{e=self.navigator.hardwareConcurrency}catch{}return e}function JsWrapErrorListener(e,t){if(r.errorListener){let n=UTF8ToString(t);r.errorListener(e,n)}}function UseBottomLeftGpuOrigin(){return r&&r.gpuOriginForWebTexturesIsBottomLeft}function custom_emscripten_dbgn(e,r){if("u">typeof dbg)dbg(UTF8ToString(e,r));else{if(void 0===custom_dbg)function custom_dbg(e){console.warn.apply(console,arguments)}custom_dbg(UTF8ToString(e,r))}}function assignWasmExports(e){_=r._free=e.ld,w=r._malloc=e.md,x=e.nd,r._addBoundTextureAsImageToStream=e.od,r._attachImageListener=e.pd,r._attachImageVectorListener=e.qd,r._registerModelResourcesGraphService=e.rd,r._bindTextureToStream=e.sd,r._addBoundTextureToStream=e.td,r._addDoubleToInputStream=e.ud,r._addFloatToInputStream=e.vd,r._addBoolToInputStream=e.wd,r._addIntToInputStream=e.xd,r._addUintToInputStream=e.yd,r._addStringToInputStream=e.zd,r._addRawDataSpanToInputStream=e.Ad,r._allocateBoolVector=e.Bd,r._allocateFloatVector=e.Cd,r._allocateDoubleVector=e.Dd,r._allocateIntVector=e.Ed,r._allocateUintVector=e.Fd,r._allocateStringVector=e.Gd,r._addBoolVectorEntry=e.Hd,r._addFloatVectorEntry=e.Id,r._addDoubleVectorEntry=e.Jd,r._addIntVectorEntry=e.Kd,r._addUintVectorEntry=e.Ld,r._addStringVectorEntry=e.Md,r._addBoolVectorToInputStream=e.Nd,r._addFloatVectorToInputStream=e.Od,r._addDoubleVectorToInputStream=e.Pd,r._addIntVectorToInputStream=e.Qd,r._addUintVectorToInputStream=e.Rd,r._addStringVectorToInputStream=e.Sd,r._addFlatHashMapToInputStream=e.Td,r._addProtoToInputStream=e.Ud,r._addEmptyPacketToInputStream=e.Vd,r._addBoolToInputSidePacket=e.Wd,r._addDoubleToInputSidePacket=e.Xd,r._addFloatToInputSidePacket=e.Yd,r._addIntToInputSidePacket=e.Zd,r._addUintToInputSidePacket=e._d,r._addStringToInputSidePacket=e.$d,r._addRawDataSpanToInputSidePacket=e.ae,r._addProtoToInputSidePacket=e.be,r._addBoolVectorToInputSidePacket=e.ce,r._addDoubleVectorToInputSidePacket=e.de,r._addFloatVectorToInputSidePacket=e.ee,r._addIntVectorToInputSidePacket=e.fe,r._addUintVectorToInputSidePacket=e.ge,r._addStringVectorToInputSidePacket=e.he,r._attachBoolListener=e.ie,r._attachBoolVectorListener=e.je,r._attachDoubleListener=e.ke,r._attachDoubleVectorListener=e.le,r._attachFloatListener=e.me,r._attachFloatVectorListener=e.ne,r._attachIntListener=e.oe,r._attachIntVectorListener=e.pe,r._attachUintListener=e.qe,r._attachUintVectorListener=e.re,r._attachStringListener=e.se,r._attachStringVectorListener=e.te,r._attachProtoListener=e.ue,r._attachProtoVectorListener=e.ve,r._getGraphConfig=e.we,S=e.xe,E=e.ye,T=e.ze,k=e.Ae,L=e.Be,F=e.Ce,C=e.De,B=e.Ee,I=e.Fe,O=e.Ge,A=e.He,P=e.Ie,U=e.Je,j=e.Ke,D=e.Le,V=e.Me,M=e.Ne,G=e.Oe,R=e.Pe,z=e.Qe,J=e.Re,W=e.Se,N=e.Te,X=e.Ue,q=e.Ve,r._clearSubgraphs=e.We,r._pushBinarySubgraph=e.Xe,r._pushTextSubgraph=e.Ye,r._changeBinaryGraph=e.Ze,r._changeTextGraph=e._e,r._processGl=e.$e,r._process=e.af,r._bindTextureToCanvas=e.bf,r._requestShaderRefreshOnGraphChange=e.cf,r._waitUntilIdle=e.df,r._closeGraph=e.ef,r._setAutoRenderToScreen=e.ff,$=e.gf,H=e.hf,Y=e.jf,Q=e.kf,K=e.lf,Z=e.mf,e.dynCall_ji,e.dynCall_jii,e.dynCall_iiiijij,e.dynCall_viiji,e.dynCall_viji,e.dynCall_iiiji,e.dynCall_jjj,e.dynCall_iiiijj,e.dynCall_viijj,e.dynCall_viiijjj,e.dynCall_vij,e.dynCall_viijii,e.dynCall_viiiji,e.dynCall_vijjj,e.dynCall_vj,e.dynCall_viij,e.dynCall_jiji,e.dynCall_iiiiij,e.dynCall_iiiiijj,e.dynCall_iiiiiijj,ee=e.id,er=e.kd}r._kVersionStampBuildChangelistStr=1024,r._kVersionStampCitcSnapshotStr=1056,r._kVersionStampCitcWorkspaceIdStr=1088,r._kVersionStampSourceUriStr=1600,r._kVersionStampBuildClientStr=2112,r._kVersionStampBuildClientMintStatusStr=2624,r._kVersionStampBuildCompilerStr=2656,r._kVersionStampBuildDateTimePstStr=3168,r._kVersionStampBuildDepotPathStr=3200,r._kVersionStampBuildIdStr=3712,r._kVersionStampBuildInfoStr=4224,r._kVersionStampBuildLabelStr=4736,r._kVersionStampBuildTargetStr=5248,r._kVersionStampBuildTimestampStr=5760,r._kVersionStampBuildToolStr=5792,r._kVersionStampG3BuildTargetStr=6304,r._kVersionStampVerifiableStr=6816,r._kVersionStampBuildFdoTypeStr=6848,r._kVersionStampBuildBaselineChangelistStr=6880,r._kVersionStampBuildLtoTypeStr=6912,r._kVersionStampBuildPropellerTypeStr=6944,r._kVersionStampBuildPghoTypeStr=6976,r._kVersionStampBuildUsernameStr=7008,r._kVersionStampBuildHostnameStr=7520,r._kVersionStampBuildDirectoryStr=8032,r._kVersionStampBuildChangelistInt=8544,r._kVersionStampCitcSnapshotInt=8552,r._kVersionStampBuildClientMintStatusInt=8556,r._kVersionStampBuildTimestampInt=8560,r._kVersionStampVerifiableInt=8568,r._kVersionStampBuildCoverageEnabledInt=8572,r._kVersionStampBuildBaselineChangelistInt=8576,r._kVersionStampPrecookedTimestampStr=8592,r._kVersionStampPrecookedClientInfoStr=9104;var e8={hd:BeginGlQueryTiming,gd:EndGlQueryTiming,fd:GetAdapterArchitecture,ed:GetAdapterDescription,dd:GetAdapterDeviceName,cd:GetAdapterVendor,bd:JsOnEmptyPacketListener,ad:JsOnFloat32ArrayImageListener,$c:JsOnFloat32ArrayImageVectorListener,pb:JsOnSimpleListenerBinaryArray,_c:JsOnSimpleListenerBool,Zc:JsOnSimpleListenerDouble,Yc:JsOnSimpleListenerFloat,Xc:JsOnSimpleListenerInt,Wc:JsOnSimpleListenerString,Vc:JsOnSimpleListenerUint,Uc:JsOnUint8ArrayImageListener,Tc:JsOnUint8ArrayImageVectorListener,O:JsOnVectorFinishedListener,Sc:JsOnVectorListenerBool,Rc:JsOnVectorListenerDouble,Qc:JsOnVectorListenerFloat,Pc:JsOnVectorListenerInt,Oc:JsOnVectorListenerProto,Nc:JsOnVectorListenerString,Mc:JsOnVectorListenerUint,Lc:JsOnWebGLTextureListener,Kc:JsOnWebGLTextureVectorListener,Pa:JsWrapErrorListener,ob:JsWrapImageConverter,u:JsWrapSimpleListeners,nb:UseBottomLeftGpuOrigin,yb:__asyncjs__mediapipe_map_buffer_jspi,o:(e,r,t)=>{throw new ExceptionInfo(e).init(r,t),ey=e,eb++,ey},Jc:___syscall_dup,Ic:___syscall_faccessat,mb:___syscall_fcntl64,Hc:___syscall_fstat64,Mb:___syscall_ftruncate64,Gc:___syscall_ioctl,Fc:___syscall_lstat64,Ec:___syscall_newfstatat,lb:___syscall_openat,Dc:___syscall_stat64,yc:()=>abort(""),Jb:(e,r,t,n,a)=>{},xc:(e,r,t,n)=>{registerType(e,{name:r=AsciiToString(r),fromWireType:function(e){return!!e},toWireType:function(e,r){return r?t:n},readValueFromPointer:function(e){return this.fromWireType(l[e])},destructorFunction:null})},wc:e=>registerType(e,eV),jb:(e,r,t)=>{registerType(e,{name:r=AsciiToString(r),fromWireType:e=>e,toWireType:(e,r)=>r,readValueFromPointer:((e,r)=>{switch(r){case 4:return function(e){return this.fromWireType(p[e>>2])};case 8:return function(e){return this.fromWireType(g[e>>3])};default:throw TypeError(`invalid float width (${r}): ${e}`)}})(r,t),destructorFunction:null})},I:(e,r,t,n,a)=>{r=AsciiToString(r);let fromWireType=e=>e;if(0===n){var o=32-8*t;a=(fromWireType=e=>e<<o>>>o)(a)}registerType(e,{name:r,fromWireType,toWireType:(e,r)=>r,readValueFromPointer:((e,r,t)=>{switch(r){case 1:return t?e=>u[e]:e=>l[e];case 2:return t?e=>c[e>>1]:e=>d[e>>1];case 4:return t?e=>m[e>>2]:e=>f[e>>2];default:throw TypeError(`invalid integer width (${r}): ${e}`)}})(r,t,0!==n),destructorFunction:null})},r:(e,r,t)=>{var n=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][r];function decodeMemoryView(e){var r=f[e>>2],t=f[e+4>>2];return new n(u.buffer,t,r)}registerType(e,{name:t=AsciiToString(t),fromWireType:decodeMemoryView,readValueFromPointer:decodeMemoryView},{ignoreDuplicateRegistrations:!0})},vc:(e,r)=>{registerType(e,{name:r=AsciiToString(r),fromWireType(e){var r,t=f[e>>2];return r=UTF8ToString(e+4,t,!0),_(e),r},toWireType(e,r){r instanceof ArrayBuffer&&(r=new Uint8Array(r));var t,n="string"==typeof r;n||ArrayBuffer.isView(r)&&1==r.BYTES_PER_ELEMENT||throwBindingError("Cannot pass non-string to std::string"),t=n?lengthBytesUTF8(r):r.length;var a=w(4+t+1),o=a+4;if(f[a>>2]=t,n)if(0)for(var i=0;i<t;++i){var s=r.charCodeAt(i);s>255&&(_(a),throwBindingError("String has UTF-16 code units that do not fit in 8 bits")),l[o+i]=s}else stringToUTF8(r,o,t+1);else l.set(r,o);return null!==e&&e.push(_,a),a},readValueFromPointer:readPointer,destructorFunction(e){_(e)}})},Ma:(e,r,t)=>{var n,a,o;t=AsciiToString(t),2===r?(n=UTF16ToString,a=stringToUTF16,o=lengthBytesUTF16):(n=UTF32ToString,a=stringToUTF32,o=lengthBytesUTF32),registerType(e,{name:t,fromWireType:e=>{var t=f[e>>2],a=n(e+4,t*r,!0);return _(e),a},toWireType:(e,n)=>{"string"!=typeof n&&throwBindingError(`Cannot pass non-string to C++ string type ${t}`);var i=o(n),s=w(4+i+r);return f[s>>2]=i/r,a(n,s+4,i+r),null!==e&&e.push(_,s),s},readValueFromPointer:readPointer,destructorFunction(e){_(e)}})},uc:(e,r)=>{registerType(e,{isVoid:!0,name:r=AsciiToString(r),fromWireType:()=>void 0,toWireType:(e,r)=>void 0})},$:(e,r,t)=>{var n,a,[o,...i]=((e,r)=>{for(var t=Array(e),n=0;n<e;++n)t[n]=requireRegisteredType(f[r+4*n>>2],`parameter ${n}`);return t})(e,r),s=o.toWireType.bind(o),u=i.map(e=>e.readValueFromPointer.bind(e)),l=Array(--e);return n=Object.defineProperty((r,n,a,o)=>{for(var i,c,d,m=0,p=0;p<e;++p)l[p]=u[p](o+m),m+=8;switch(t){case 0:d=ej(r).apply(null,l);break;case 2:d=Reflect.construct(ej(r),l);break;case 3:d=l[0];break;case 1:d=ej(r)[getStringOrSymbol(n)](...l)}return c=s(i=[],d),i.length&&(f[a>>2]=eD(i)),c},"name",{value:`methodCaller<(${i.map(e=>e.name)}) => ${o.name}>`}),a=eG.length,eG.push(n),a},q:__emval_decref,La:e=>e?(e=getStringOrSymbol(e),eD(globalThis[e])):eD(globalThis),ib:(e,r)=>(e=ej(e),eD(e[r=ej(r)])),ja:e=>{e>9&&(eU[e+1]+=1)},Ka:(e,r)=>(e=ej(e))instanceof(r=ej(r)),_:(e,r,t,n,a)=>eG[e](r,t,n,a),ua:e=>eD(getStringOrSymbol(e)),Z:e=>{for(var r=ej(e);r.length;){var t=r.pop();r.pop()(t)}__emval_decref(e)},hb:(e,r,t)=>{e=ej(e),r=ej(r),t=ej(t),e[r]=t},tc:e=>eD(typeof(e=ej(e))),Ib:__gmtime_js,Hb:__localtime_js,Gb:function(e){let r;var t=(()=>{var r=new Date(m[e+20>>2]+1900,m[e+16>>2],m[e+12>>2],m[e+8>>2],m[e+4>>2],m[e>>2],0),t=m[e+32>>2],n=r.getTimezoneOffset(),a=new Date(r.getFullYear(),0,1),o=new Date(r.getFullYear(),6,1).getTimezoneOffset(),i=a.getTimezoneOffset(),s=Math.min(i,o);if(t<0)m[e+32>>2]=Number(o!=i&&s==n);else if(t>0!=(s==n)){var u=Math.max(i,o);r.setTime(r.getTime()+((t>0?s:u)-n)*6e4)}m[e+24>>2]=r.getDay();var l=0|ydayFromDate(r);m[e+28>>2]=l,m[e>>2]=r.getSeconds(),m[e+4>>2]=r.getMinutes(),m[e+8>>2]=r.getHours(),m[e+12>>2]=r.getDate(),m[e+16>>2]=r.getMonth(),m[e+20>>2]=r.getYear();var c=r.getTime();return isNaN(c)?-1:c/1e3})();return r=+Math.abs(h=t)>=1?h>0?Math.floor(h/0x100000000)>>>0:~~Math.ceil((h-(~~h>>>0))/0x100000000)>>>0:0,Y(r),t>>>0},Fb:__mmap_js,Eb:__munmap_js,sc:(e,r,t,n)=>{var a=(new Date).getFullYear(),o=new Date(a,0,1),i=new Date(a,6,1),s=o.getTimezoneOffset(),u=i.getTimezoneOffset(),l=Math.max(s,u);f[e>>2]=60*l,m[r>>2]=Number(s!=u);var extractZone=e=>{var r=Math.abs(e),t=String(Math.floor(r/60)).padStart(2,"0"),n=String(r%60).padStart(2,"0");return`UTC${e>=0?"-":"+"}${t}${n}`},c=extractZone(s),d=extractZone(u);u<s?(stringToUTF8(c,t,17),stringToUTF8(d,n,17)):(stringToUTF8(c,n,17),stringToUTF8(d,t,17))},Lb:_clock_time_get,rc:custom_emscripten_dbgn,Y:(e,r,t)=>runEmAsmFunction(e,r,t),gb:(e,r,t)=>runEmAsmFunction(e,r,t),Ja:(e,r)=>ec(UTF8ToString(e,r)),qc:()=>0x80000000,y:_emscripten_get_now,ia:()=>0,pc:(e,r)=>el(UTF8ToString(e,r)),oc:_emscripten_pc_get_function,nc:e=>{var r=l.length;if((e>>>=0)>0x80000000)return!1;for(var t=1;t<=4;t*=2){var n=r*(1+.2/t);if(n=Math.min(n,e+0x6000000),growMemory(Math.min(0x80000000,alignMemory(Math.max(e,n),65536))))return!0}return!1},fb:()=>{var e=jsStackTrace().split(`
`);return"Error"==e[0]&&e.shift(),saveInUnwindCache(e),eN.last_addr=convertFrameToPC(e[3]),eN.last_stack=e,eN.last_addr},mc:(e,r,t)=>{eN.last_addr==e?n=eN.last_stack:("Error"==(n=jsStackTrace().split(`
`))[0]&&n.shift(),saveInUnwindCache(n));for(var n,a=3;n[a]&&convertFrameToPC(n[a])!=e;)++a;for(var o=0;o<t&&n[o+a];++o)m[r+4*o>>2]=convertFrameToPC(n[o+a]);return o},lc:(e,r)=>{var t=r>>2,n=m[t+2],a={alpha:!!u[r+0],depth:!!u[r+1],stencil:!!u[r+2],antialias:!!u[r+3],premultipliedAlpha:!!u[r+4],preserveDrawingBuffer:!!u[r+5],powerPreference:eq[n],failIfMajorPerformanceCaveat:!!u[r+12],majorVersion:m[t+4],minorVersion:m[t+5],enableExtensionsByDefault:u[r+24],explicitSwapControl:u[r+25],proxyContextToMainThread:m[t+7],renderViaOffscreenBackBuffer:u[r+32]},o=findCanvasEventTarget(e);return!o||a.explicitSwapControl?0:eX.createContext(o,a)},kc:e=>{eX.currentContext==e&&(eX.currentContext=0),eX.deleteContext(e)},jc:(e,r)=>{if(!r)return -5;if(!(e=eX.contexts[e]))return -3;var t=e.GLctx?.getContextAttributes();if(!t)return -3;u[r]=t.alpha,u[r+1]=t.depth,u[r+2]=t.stencil,u[r+3]=t.antialias,u[r+4]=t.premultipliedAlpha,u[r+5]=t.preserveDrawingBuffer;var n=t.powerPreference&&eq.indexOf(t.powerPreference);return m[r+8>>2]=n,u[r+12]=t.failIfMajorPerformanceCaveat,m[r+16>>2]=e.version,m[r+20>>2]=0,u[r+24]=e.attributes.enableExtensionsByDefault,0},ha:()=>eX.currentContext?eX.currentContext.handle:0,ic:e=>eX.makeContextCurrent(e)?0:-5,Q:()=>(void 0===eY.preinitializedDeviceId&&(eY.preinitializedDeviceId=eY.importJsDevice(r.preinitializedWebGPUDevice),x(eY.preinitializedDeviceId)),x(eY.preinitializedDeviceId),eY.preinitializedDeviceId),hc:e=>{var r=eY.getJsObject(e),t=eY.Internals.bufferOnUnmaps[e];if(t){for(var n=0;n<t.length;++n)t[n]();delete eY.Internals.bufferOnUnmaps[e]}r.destroy()},gc:(e,r,t)=>{var n,a=eY.getJsObject(e);-1==t&&(t=void 0);try{n=a.getMappedRange(r,t)}catch{return 0}var o=H(16,n.byteLength);return l.fill(0,o,n.byteLength),eY.Internals.bufferOnUnmaps[e].push(()=>{new Uint8Array(n).set(l.subarray(o,o+n.byteLength)),_(o)}),o},fc:e=>{var r=eY.getJsObject(e),t=eY.Internals.bufferOnUnmaps[e];if(t){for(var n=0;n<t.length;++n)t[n]();delete eY.Internals.bufferOnUnmaps[e],r.unmap()}},x:e=>{delete eY.Internals.jsObjects[e]},ec:(e,r,t)=>{var n,a=!!f[r+32>>2],o={label:eY.makeStringFromOptionalStringView(r+4),usage:f[r+16>>2],size:readI53FromI64(r+24),mappedAtCreation:a},i=eY.getJsObject(e);try{n=i.createBuffer(o)}catch{return!1}return eY.Internals.jsObjectInsert(t,n),a&&(eY.Internals.bufferOnUnmaps[t]=[]),!0},Db:function(e,r,t,n,a){var o=convertI32PairToI53Checked(r,t),i=eY.makeComputePipelineDesc(n),s=eY.getJsObject(e);eY.Internals.futureInsert(o,s.createComputePipelineAsync(i).then(e=>{callUserCallback(()=>{eY.Internals.jsObjectInsert(a,e),X(o,1,a,0)})},e=>{callUserCallback(()=>{var r=stackSave(),t=stringToUTF8OnStack(e.message),n="validation"===e.reason?3:4*("internal"===e.reason);X(o,n,a,t),Q(r)})}))},Cb:function(e,r,t,n,a){var o=convertI32PairToI53Checked(r,t),i=eY.makeRenderPipelineDesc(n),s=eY.getJsObject(e);eY.Internals.futureInsert(o,s.createRenderPipelineAsync(i).then(e=>{callUserCallback(()=>{eY.Internals.jsObjectInsert(a,e),q(o,1,a,0)})},e=>{callUserCallback(()=>{var r=stackSave(),t=stringToUTF8OnStack(e.message),n="validation"===e.reason?3:4*("internal"===e.reason);q(o,n,a,t),Q(r)})}))},dc:(e,r,t)=>{var n=f[r>>2],a=m[n+4>>2],o={label:eY.makeStringFromOptionalStringView(r+4),code:""};2===a&&(o.code=eY.makeStringFromStringView(n+8));var i=eY.getJsObject(e);eY.Internals.jsObjectInsert(t,i.createShaderModule(o))},cc:e=>{let r=eY.getJsObject(e);r.onuncapturederror=null,r.destroy()},bc:(e,r,t)=>{abort("TODO: Implement asyncify-free WaitAny for timeout=0")},Cc:(e,r)=>{var t=0,n=0;for(var a of getEnvStrings()){var o=r+t;f[e+n>>2]=o,t+=stringToUTF8(a,o,1/0)+1,n+=4}return 0},Bc:(e,r)=>{var t=getEnvStrings();f[e>>2]=t.length;var n=0;for(var a of t)n+=lengthBytesUTF8(a)+1;return f[r>>2]=n,0},eb:_exit,Oa:_fd_close,kb:_fd_read,Kb:_fd_seek,Na:_fd_write,b:e=>b.activeTexture(e),ta:(e,r)=>{b.attachShader(eX.programs[e],eX.shaders[r])},ac:(e,r,t)=>{b.bindAttribLocation(eX.programs[e],r,UTF8ToString(t))},c:(e,r)=>{if(r&&!eX.buffers[r]){var t=b.createBuffer();t.name=r,eX.buffers[r]=t}34962==e?b.currentArrayBufferBinding=r:34963==e&&(b.currentElementArrayBufferBinding=r),35051==e?b.currentPixelPackBufferBinding=r:35052==e&&(b.currentPixelUnpackBufferBinding=r),b.bindBuffer(e,eX.buffers[r])},db:(e,r,t)=>{b.bindBufferBase(e,r,eX.buffers[t])},t:(e,r)=>{b.bindFramebuffer(e,eX.framebuffers[r])},a:(e,r)=>{b.bindTexture(e,eX.textures[r])},m:e=>{b.bindVertexArray(eX.vaos[e]);var r=b.getParameter(34965);b.currentElementArrayBufferBinding=r?0|r.name:0},cb:e=>b.blendEquation(e),$b:(e,r)=>b.blendFunc(e,r),j:(e,r,t,n)=>{eX.currentContext.version>=2?t&&r?b.bufferData(e,l,n,t,r):b.bufferData(e,r,n):b.bufferData(e,t?l.subarray(t,t+r):r,n)},H:e=>b.clear(e),X:(e,r,t,n)=>b.clearColor(e,r,t,n),da:(e,r,t,n)=>b.clientWaitSync(eX.syncs[e],r,(t>>>0)+0x100000000*n),ga:(e,r,t,n)=>{b.colorMask(!!e,!!r,!!t,!!n)},bb:e=>{b.compileShader(eX.shaders[e])},ab:()=>{var e=eX.getNewId(eX.programs),r=b.createProgram();return r.name=e,r.maxUniformLength=r.maxAttributeLength=r.maxUniformBlockNameLength=0,r.uniformIdCounter=1,eX.programs[e]=r,e},$a:e=>{var r=eX.getNewId(eX.shaders);return eX.shaders[r]=b.createShader(e),r},p:(e,r)=>{for(var t=0;t<e;t++){var n=m[r+4*t>>2],a=eX.buffers[n];a&&(b.deleteBuffer(a),a.name=0,eX.buffers[n]=null,n==b.currentArrayBufferBinding&&(b.currentArrayBufferBinding=0),n==b.currentElementArrayBufferBinding&&(b.currentElementArrayBufferBinding=0),n==b.currentPixelPackBufferBinding&&(b.currentPixelPackBufferBinding=0),n==b.currentPixelUnpackBufferBinding&&(b.currentPixelUnpackBufferBinding=0))}},P:(e,r)=>{for(var t=0;t<e;++t){var n=m[r+4*t>>2],a=eX.framebuffers[n];a&&(b.deleteFramebuffer(a),a.name=0,eX.framebuffers[n]=null)}},h:e=>{if(e){var r=eX.programs[e];if(!r)return void eX.recordError(1281);b.deleteProgram(r),r.name=0,eX.programs[e]=null}},sa:e=>{if(e){var r=eX.shaders[e];if(!r)return void eX.recordError(1281);b.deleteShader(r),eX.shaders[e]=null}},ra:e=>{if(e){var r=eX.syncs[e];if(!r)return void eX.recordError(1281);b.deleteSync(r),r.name=0,eX.syncs[e]=null}},D:(e,r)=>{for(var t=0;t<e;t++){var n=m[r+4*t>>2],a=eX.textures[n];a&&(b.deleteTexture(a),a.name=0,eX.textures[n]=null)}},A:(e,r)=>{for(var t=0;t<e;t++){var n=m[r+4*t>>2];b.deleteVertexArray(eX.vaos[n]),eX.vaos[n]=null}},_a:(e,r)=>{b.detachShader(eX.programs[e],eX.shaders[r])},G:e=>b.disable(e),n:e=>{eX.currentContext.clientBuffers[e].enabled=!1,b.disableVertexAttribArray(e)},i:(e,r,t)=>{eX.preDrawHandleClientVertexAttribBindings(r+t),b.drawArrays(e,r,t),eX.postDrawHandleClientVertexAttribBindings()},fa:(e,r)=>{for(var t=eK[e],n=0;n<e;n++)t[n]=m[r+4*n>>2];b.drawBuffers(t)},_b:e=>b.enable(e),l:e=>{eX.currentContext.clientBuffers[e].enabled=!0,b.enableVertexAttribArray(e)},Za:(e,r)=>{var t=b.fenceSync(e,r);if(t){var n=eX.getNewId(eX.syncs);return t.name=n,eX.syncs[n]=t,n}return 0},qa:()=>b.finish(),v:()=>b.flush(),C:(e,r,t,n,a)=>{b.framebufferTexture2D(e,r,t,eX.textures[n],a)},Ya:(e,r,t,n,a)=>{b.framebufferTextureLayer(e,r,eX.textures[t],n,a)},s:(e,r)=>{eX.genObject(e,r,"createBuffer",eX.buffers)},W:(e,r)=>{eX.genObject(e,r,"createFramebuffer",eX.framebuffers)},F:(e,r)=>{eX.genObject(e,r,"createTexture",eX.textures)},B:(e,r)=>{eX.genObject(e,r,"createVertexArray",eX.vaos)},Xa:(e,r)=>b.getAttribLocation(eX.programs[e],UTF8ToString(r)),ea:()=>{var e=b.getError()||eX.lastError;return eX.lastError=0,e},Zb:(e,r)=>emscriptenWebGLGet(e,r,2),w:(e,r)=>emscriptenWebGLGet(e,r,0),Yb:(e,r,t)=>{if(!t||e>=eX.counter)return void eX.recordError(1281);if(e=eX.programs[e],35716==r){var n=b.getProgramInfoLog(e);null===n&&(n="(unknown error)"),m[t>>2]=n.length+1}else if(35719==r){if(!e.maxUniformLength)for(var a=b.getProgramParameter(e,35718),o=0;o<a;++o)e.maxUniformLength=Math.max(e.maxUniformLength,b.getActiveUniform(e,o).name.length+1);m[t>>2]=e.maxUniformLength}else if(35722==r){if(!e.maxAttributeLength)for(var i=b.getProgramParameter(e,35721),o=0;o<i;++o)e.maxAttributeLength=Math.max(e.maxAttributeLength,b.getActiveAttrib(e,o).name.length+1);m[t>>2]=e.maxAttributeLength}else if(35381==r){if(!e.maxUniformBlockNameLength)for(var s=b.getProgramParameter(e,35382),o=0;o<s;++o)e.maxUniformBlockNameLength=Math.max(e.maxUniformBlockNameLength,b.getActiveUniformBlockName(e,o).length+1);m[t>>2]=e.maxUniformBlockNameLength}else m[t>>2]=b.getProgramParameter(e,r)},Xb:(e,r,t,n)=>{var a=b.getShaderInfoLog(eX.shaders[e]);null===a&&(a="(unknown error)");var o=r>0&&n?stringToUTF8(a,n,r):0;t&&(m[t>>2]=o)},Wb:(e,r,t)=>{if(!t)return void eX.recordError(1281);if(35716==r){var n=b.getShaderInfoLog(eX.shaders[e]);null===n&&(n="(unknown error)");var a=n?n.length+1:0;m[t>>2]=a}else if(35720==r){var o=b.getShaderSource(eX.shaders[e]),i=o?o.length+1:0;m[t>>2]=i}else m[t>>2]=b.getShaderParameter(eX.shaders[e],r)},N:e=>{var r=eX.stringCache[e];if(!r){switch(e){case 7939:r=stringToNewUTF8(webglGetExtensions().join(" "));break;case 7936:case 7937:case 37445:case 37446:var t=b.getParameter(e);t||eX.recordError(1280),r=t?stringToNewUTF8(t):0;break;case 7938:var n=b.getParameter(7938),a=`OpenGL ES 2.0 (${n})`;eX.currentContext.version>=2&&(a=`OpenGL ES 3.0 (${n})`),r=stringToNewUTF8(a);break;case 35724:var o=b.getParameter(35724),i=o.match(/^WebGL GLSL ES ([0-9]\.[0-9][0-9]?)(?:$| .*)/);null!==i&&(3==i[1].length&&(i[1]=i[1]+"0"),o=`OpenGL ES GLSL ES ${i[1]} (${o})`),r=stringToNewUTF8(o);break;default:eX.recordError(1280)}eX.stringCache[e]=r}return r},Vb:(e,r)=>b.getUniformBlockIndex(eX.programs[e],UTF8ToString(r)),d:(e,r)=>{if(r=UTF8ToString(r),e=eX.programs[e]){(e=>{var r,t,n=e.uniformLocsById,a=e.uniformSizeAndIdsByName;if(!n){e.uniformLocsById=n={},e.uniformArrayNamesById={};var o=b.getProgramParameter(e,35718);for(r=0;r<o;++r){var i=b.getActiveUniform(e,r),s=i.name,u=i.size,l=webglGetLeftBracePos(s),c=l>0?s.slice(0,l):s,d=e.uniformIdCounter;for(e.uniformIdCounter+=u,a[c]=[u,d],t=0;t<u;++t)n[d]=t,e.uniformArrayNamesById[d++]=c}}})(e);var t=e.uniformLocsById,n=0,a=r,o=webglGetLeftBracePos(r);o>0&&(n=parseInt(r.slice(o+1))>>>0,a=r.slice(0,o));var i=e.uniformSizeAndIdsByName[a];if(i&&n<i[0]&&(t[n+=i[1]]=t[n]||b.getUniformLocation(e,r)))return n}else eX.recordError(1281);return -1},Ub:e=>b.lineWidth(e),Wa:e=>{e=eX.programs[e],b.linkProgram(e),e.uniformLocsById=0,e.uniformSizeAndIdsByName={}},pa:(e,r)=>{3317==e?eX.unpackAlignment=r:3314==e&&(eX.unpackRowLength=r),b.pixelStorei(e,r)},oa:(e,r,t,n,a,o,i)=>{if(eX.currentContext.version>=2){if(b.currentPixelPackBufferBinding)return void b.readPixels(e,r,t,n,a,o,i);var s=heapObjectForWebGLType(o),u=toTypedArrayIndex(i,s);return void b.readPixels(e,r,t,n,a,o,s,u)}var l=emscriptenWebGLGetTexPixelData(o,a,t,n,i,a);l?b.readPixels(e,r,t,n,a,o,l):eX.recordError(1280)},Va:(e,r,t,n)=>{var a=eX.getSource(e,r,t,n);b.shaderSource(eX.shaders[e],a)},E:(e,r,t,n,a,o,i,s,u)=>{if(eX.currentContext.version>=2){if(b.currentPixelUnpackBufferBinding)return void b.texImage2D(e,r,t,n,a,o,i,s,u);if(u){var l=heapObjectForWebGLType(s),c=toTypedArrayIndex(u,l);b.texImage2D(e,r,t,n,a,o,i,s,l,c);return}}var d=u?emscriptenWebGLGetTexPixelData(s,i,n,a,u,t):null;b.texImage2D(e,r,t,n,a,o,i,s,d)},na:(e,r,t)=>b.texParameterf(e,r,t),Ua:(e,r,t)=>{var n=p[t>>2];b.texParameterf(e,r,n)},f:(e,r,t)=>b.texParameteri(e,r,t),ma:(e,r,t,n,a)=>b.texStorage2D(e,r,t,n,a),Tb:(e,r,t,n,a,o)=>b.texStorage3D(e,r,t,n,a,o),V:(e,r,t,n,a,o,i,s,u)=>{if(eX.currentContext.version>=2){if(b.currentPixelUnpackBufferBinding)return void b.texSubImage2D(e,r,t,n,a,o,i,s,u);if(u){var l=heapObjectForWebGLType(s);b.texSubImage2D(e,r,t,n,a,o,i,s,l,toTypedArrayIndex(u,l));return}}var c=u?emscriptenWebGLGetTexPixelData(s,i,a,o,u,0):null;b.texSubImage2D(e,r,t,n,a,o,i,s,c)},Sb:(e,r,t,n,a,o,i,s,u,l,c)=>{if(b.currentPixelUnpackBufferBinding)b.texSubImage3D(e,r,t,n,a,o,i,s,u,l,c);else if(c){var d=heapObjectForWebGLType(l);b.texSubImage3D(e,r,t,n,a,o,i,s,u,l,d,toTypedArrayIndex(c,d))}else b.texSubImage3D(e,r,t,n,a,o,i,s,u,l,null)},M:(e,r)=>{b.uniform1f(webglGetUniformLocation(e),r)},la:(e,r,t)=>{if(eX.currentContext.version>=2){r&&b.uniform1fv(webglGetUniformLocation(e),p,t>>2,r);return}if(r<=288)for(var n=eZ[r],a=0;a<r;++a)n[a]=p[t+4*a>>2];else var n=p.subarray(t>>2,t+4*r>>2);b.uniform1fv(webglGetUniformLocation(e),n)},e:(e,r)=>{b.uniform1i(webglGetUniformLocation(e),r)},U:(e,r,t)=>{b.uniform2f(webglGetUniformLocation(e),r,t)},Rb:(e,r,t)=>{if(eX.currentContext.version>=2){r&&b.uniform2fv(webglGetUniformLocation(e),p,t>>2,2*r);return}if(r<=144)for(var n=eZ[r*=2],a=0;a<r;a+=2)n[a]=p[t+4*a>>2],n[a+1]=p[t+(4*a+4)>>2];else var n=p.subarray(t>>2,t+8*r>>2);b.uniform2fv(webglGetUniformLocation(e),n)},Ia:(e,r,t,n)=>{b.uniform3f(webglGetUniformLocation(e),r,t,n)},Ta:(e,r,t,n,a)=>{b.uniform4f(webglGetUniformLocation(e),r,t,n,a)},T:(e,r,t)=>{if(eX.currentContext.version>=2){r&&b.uniform4fv(webglGetUniformLocation(e),p,t>>2,4*r);return}if(r<=72){var n=eZ[4*r],a=p;t>>=2,r*=4;for(var o=0;o<r;o+=4){var i=t+o;n[o]=a[i],n[o+1]=a[i+1],n[o+2]=a[i+2],n[o+3]=a[i+3]}}else var n=p.subarray(t>>2,t+16*r>>2);b.uniform4fv(webglGetUniformLocation(e),n)},Qb:(e,r,t)=>{if(eX.currentContext.version>=2){r&&b.uniform4iv(webglGetUniformLocation(e),m,t>>2,4*r);return}if(r<=72)for(var n=e0[r*=4],a=0;a<r;a+=4)n[a]=m[t+4*a>>2],n[a+1]=m[t+(4*a+4)>>2],n[a+2]=m[t+(4*a+8)>>2],n[a+3]=m[t+(4*a+12)>>2];else var n=m.subarray(t>>2,t+16*r>>2);b.uniform4iv(webglGetUniformLocation(e),n)},Pb:(e,r,t)=>{e=eX.programs[e],b.uniformBlockBinding(e,r,t)},Ob:(e,r,t,n)=>{if(eX.currentContext.version>=2){r&&b.uniformMatrix2fv(webglGetUniformLocation(e),!!t,p,n>>2,4*r);return}if(r<=72)for(var a=eZ[r*=4],o=0;o<r;o+=4)a[o]=p[n+4*o>>2],a[o+1]=p[n+(4*o+4)>>2],a[o+2]=p[n+(4*o+8)>>2],a[o+3]=p[n+(4*o+12)>>2];else var a=p.subarray(n>>2,n+16*r>>2);b.uniformMatrix2fv(webglGetUniformLocation(e),!!t,a)},Nb:(e,r,t,n)=>{if(eX.currentContext.version>=2){r&&b.uniformMatrix3fv(webglGetUniformLocation(e),!!t,p,n>>2,9*r);return}if(r<=32)for(var a=eZ[r*=9],o=0;o<r;o+=9)a[o]=p[n+4*o>>2],a[o+1]=p[n+(4*o+4)>>2],a[o+2]=p[n+(4*o+8)>>2],a[o+3]=p[n+(4*o+12)>>2],a[o+4]=p[n+(4*o+16)>>2],a[o+5]=p[n+(4*o+20)>>2],a[o+6]=p[n+(4*o+24)>>2],a[o+7]=p[n+(4*o+28)>>2],a[o+8]=p[n+(4*o+32)>>2];else var a=p.subarray(n>>2,n+36*r>>2);b.uniformMatrix3fv(webglGetUniformLocation(e),!!t,a)},Ha:(e,r,t,n)=>{if(eX.currentContext.version>=2){r&&b.uniformMatrix4fv(webglGetUniformLocation(e),!!t,p,n>>2,16*r);return}if(r<=18){var a=eZ[16*r],o=p;n>>=2,r*=16;for(var i=0;i<r;i+=16){var s=n+i;a[i]=o[s],a[i+1]=o[s+1],a[i+2]=o[s+2],a[i+3]=o[s+3],a[i+4]=o[s+4],a[i+5]=o[s+5],a[i+6]=o[s+6],a[i+7]=o[s+7],a[i+8]=o[s+8],a[i+9]=o[s+9],a[i+10]=o[s+10],a[i+11]=o[s+11],a[i+12]=o[s+12],a[i+13]=o[s+13],a[i+14]=o[s+14],a[i+15]=o[s+15]}}else var a=p.subarray(n>>2,n+64*r>>2);b.uniformMatrix4fv(webglGetUniformLocation(e),!!t,a)},g:e=>{e=eX.programs[e],b.useProgram(e),b.currentProgram=e},k:(e,r,t,n,a,o)=>{var i=eX.currentContext.clientBuffers[e];if(!b.currentArrayBufferBinding){i.size=r,i.type=t,i.normalized=n,i.stride=a,i.ptr=o,i.clientside=!0,i.vertexAttribPointerAdaptor=function(e,r,t,n,a,o){this.vertexAttribPointer(e,r,t,n,a,o)};return}i.clientside=!1,b.vertexAttribPointer(e,r,t,!!n,a,o)},S:(e,r,t,n)=>b.viewport(e,r,t,n),Ga:hardware_concurrency,Bb:mediapipe_create_utility_canvas2d,Ab:_mediapipe_find_canvas_event_target,zb:mediapipe_import_external_texture,xb:_mediapipe_webgl_tex_image_drawable,Ac:_proc_exit,zc:_random_get,Fa:(e,r)=>{r&&(t={label:eY.makeStringFromOptionalStringView(r+4),timestampWrites:eY.makePassTimestampWrites(f[r+12>>2])});var t,n=eY.getJsObject(e),a=F(0);return eY.Internals.jsObjectInsert(a,n.beginComputePass(t)),a},Ea:(e,r)=>{function makeColorAttachment(e){var r=f[e+4>>2];if(0!==r){var t=f[e+8>>2];return 0xffffffff==t&&(t=void 0),{view:eY.getJsObject(r),depthSlice:t,resolveTarget:eY.getJsObject(f[e+12>>2]),clearValue:eY.makeColor(e+24),loadOp:eY.LoadOp[m[e+16>>2]],storeOp:eY.StoreOp[m[e+20>>2]]}}}function makeColorAttachments(e,r){for(var t=[],n=0;n<e;++n)t.push(makeColorAttachment(r+56*n));return t}function makeDepthStencilAttachment(e){if(0!==e)return{view:eY.getJsObject(f[e+4>>2]),depthClearValue:p[e+16>>2],depthLoadOp:eY.LoadOp[m[e+8>>2]],depthStoreOp:eY.StoreOp[m[e+12>>2]],depthReadOnly:!!f[e+20>>2],stencilClearValue:f[e+32>>2],stencilLoadOp:eY.LoadOp[m[e+24>>2]],stencilStoreOp:eY.StoreOp[m[e+28>>2]],stencilReadOnly:!!f[e+36>>2]}}var t,n,a,o=(n=f[(t=r)>>2],a=void 0,0!==n&&(m[n+4>>2],a=readI53FromI64(n+8)),{label:eY.makeStringFromOptionalStringView(t+4),colorAttachments:makeColorAttachments(f[t+12>>2],f[t+16>>2]),depthStencilAttachment:makeDepthStencilAttachment(f[t+20>>2]),occlusionQuerySet:eY.getJsObject(f[t+24>>2]),timestampWrites:eY.makePassTimestampWrites(f[t+28>>2]),maxDrawCount:a}),i=eY.getJsObject(e),s=U(0);return eY.Internals.jsObjectInsert(s,i.beginRenderPass(o)),s},wb:(e,r,t,n)=>{var a=eY.getJsObject(e),o=eY.makeExtent3D(n);a.copyBufferToTexture(eY.makeTexelCopyBufferInfo(r),eY.makeTexelCopyTextureInfo(t),o)},vb:(e,r,t,n)=>{var a=eY.getJsObject(e),o=eY.makeExtent3D(n);a.copyTextureToBuffer(eY.makeTexelCopyTextureInfo(r),eY.makeTexelCopyBufferInfo(t),o)},ub:(e,r,t,n)=>{var a=eY.getJsObject(e),o=eY.makeExtent3D(n);a.copyTextureToTexture(eY.makeTexelCopyTextureInfo(r),eY.makeTexelCopyTextureInfo(t),o)},L:(e,r)=>{var t=eY.getJsObject(e),n=k(0);return eY.Internals.jsObjectInsert(n,t.finish()),n},Da:(e,r,t,n)=>{eY.getJsObject(e).dispatchWorkgroups(r,t,n)},Ca:e=>{eY.getJsObject(e).end()},Ba:(e,r,t,n,a)=>{var o=eY.getJsObject(e),i=eY.getJsObject(t);0==n?o.setBindGroup(r,i):o.setBindGroup(r,i,f,a>>2,n)},Aa:(e,r)=>{var t=eY.getJsObject(e),n=eY.getJsObject(r);t.setPipeline(n)},za:(e,r)=>{var t=eY.getJsObject(e),n=T(0);return eY.Internals.jsObjectInsert(n,t.getBindGroupLayout(r)),n},ca:(e,r)=>{function makeEntry(e){var r,t=f[e+8>>2],n=f[e+32>>2],a=f[e+36>>2],o=0;if(eY.iterateExtensions(e,{327681:e=>{o=f[e+8>>2]}}),t){var i=readI53FromI64(e+24);-1==i&&(i=void 0),r={buffer:eY.getJsObject(t),offset:readI53FromI64(e+16),size:i}}else r=eY.getJsObject(n||a||o);return{binding:f[e+4>>2],resource:r}}function makeEntries(e,r){for(var t=[],n=0;n<e;++n)t.push(makeEntry(r+40*n));return t}var t={label:eY.makeStringFromOptionalStringView(r+4),layout:eY.getJsObject(f[r+12>>2]),entries:makeEntries(f[r+16>>2],f[r+20>>2])},n=eY.getJsObject(e),a=E(0);return eY.Internals.jsObjectInsert(a,n.createBindGroup(t)),a},tb:(e,r)=>{function makeBufferEntry(e){var r=f[e+4>>2];if(r)return{type:eY.BufferBindingType[r],hasDynamicOffset:!!f[e+8>>2],minBindingSize:readI53FromI64(e+16)}}function makeSamplerEntry(e){var r=f[e+4>>2];if(r)return{type:eY.SamplerBindingType[r]}}function makeTextureEntry(e){var r=f[e+4>>2];if(r)return{sampleType:eY.TextureSampleType[r],viewDimension:eY.TextureViewDimension[m[e+8>>2]],multisampled:!!f[e+12>>2]}}function makeStorageTextureEntry(e){var r=f[e+4>>2];if(r)return{access:eY.StorageTextureAccess[r],format:eY.TextureFormat[m[e+8>>2]],viewDimension:eY.TextureViewDimension[m[e+12>>2]]}}function makeEntry(e){var r={binding:f[e+4>>2],visibility:f[e+8>>2],buffer:makeBufferEntry(e+24),sampler:makeSamplerEntry(e+48),texture:makeTextureEntry(e+56),storageTexture:makeStorageTextureEntry(e+72)};return eY.iterateExtensions(e,{327682:e=>{r.externalTexture={}}}),r}function makeEntries(e,r){for(var t=[],n=0;n<e;++n)t.push(makeEntry(r+88*n));return t}var t={label:eY.makeStringFromOptionalStringView(r+4),entries:makeEntries(f[r+12>>2],f[r+16>>2])},n=eY.getJsObject(e),a=T(0);return eY.Internals.jsObjectInsert(a,n.createBindGroupLayout(t)),a},K:(e,r)=>{r&&(t={label:eY.makeStringFromOptionalStringView(r+4)});var t,n=eY.getJsObject(e),a=L(0);return eY.Internals.jsObjectInsert(a,n.createCommandEncoder(t)),a},sb:(e,r)=>{var t=eY.makeComputePipelineDesc(r),n=eY.getJsObject(e),a=C(0);return eY.Internals.jsObjectInsert(a,n.createComputePipeline(t)),a},rb:(e,r)=>{for(var t=f[r+12>>2],n=f[r+16>>2],a=[],o=0;o<t;++o)a.push(eY.getJsObject(f[n+4*o>>2]));var i={label:eY.makeStringFromOptionalStringView(r+4),bindGroupLayouts:a},s=eY.getJsObject(e),u=I(0);return eY.Internals.jsObjectInsert(u,s.createPipelineLayout(i)),u},Sa:(e,r)=>{var t=eY.makeRenderPipelineDesc(r),n=eY.getJsObject(e),a=j(0);return eY.Internals.jsObjectInsert(a,n.createRenderPipeline(t)),a},R:(e,r)=>{r&&(t={label:eY.makeStringFromOptionalStringView(r+4),addressModeU:eY.AddressMode[m[r+12>>2]],addressModeV:eY.AddressMode[m[r+16>>2]],addressModeW:eY.AddressMode[m[r+20>>2]],magFilter:eY.FilterMode[m[r+24>>2]],minFilter:eY.FilterMode[m[r+28>>2]],mipmapFilter:eY.MipmapFilterMode[m[r+32>>2]],lodMinClamp:p[r+36>>2],lodMaxClamp:p[r+40>>2],compare:eY.CompareFunction[m[r+44>>2]],maxAnisotropy:d[r+48>>1]});var t,n=eY.getJsObject(e),a=D(0);return eY.Internals.jsObjectInsert(a,n.createSampler(t)),a},ba:(e,r)=>{var t={label:eY.makeStringFromOptionalStringView(r+4),size:eY.makeExtent3D(r+28),mipLevelCount:f[r+44>>2],sampleCount:f[r+48>>2],dimension:eY.TextureDimension[m[r+24>>2]],format:eY.TextureFormat[m[r+40>>2]],usage:f[r+16>>2]},n=f[r+52>>2];if(n){var a=f[r+56>>2];t.viewFormats=Array.from(m.subarray(a>>2,a+4*n>>2),e=>eY.TextureFormat[e])}var o=eY.getJsObject(e),i=M(0);return eY.Internals.jsObjectInsert(i,o.createTexture(t)),i},J:(e,r,t)=>{var n=eY.getJsObject(e),a=Array.from(m.subarray(t>>2,t+4*r>>2),e=>eY.getJsObject(e));n.submit(a)},ka:_wgpuQueueWriteBuffer,qb:(e,r,t,n,a,o)=>{var i=eY.getJsObject(e),s=eY.makeTexelCopyTextureInfo(r),u=eY.makeTexelCopyBufferLayout(a),c=eY.makeExtent3D(o),d=l.subarray(t,t+n);i.writeTexture(s,d,u,c)},ya:(e,r,t,n,a)=>{n>>>=0,a>>>=0,eY.getJsObject(e).draw(r,t,n,a)},xa:e=>{eY.getJsObject(e).end()},wa:(e,r,t,n,a)=>{var o=eY.getJsObject(e),i=eY.getJsObject(t);0==n?o.setBindGroup(r,i):o.setBindGroup(r,i,f,a>>2,n)},va:(e,r)=>{var t=eY.getJsObject(e),n=eY.getJsObject(r);t.setPipeline(n)},Ra:(e,r)=>{var t=eY.getJsObject(e),n=T(0);return eY.Internals.jsObjectInsert(n,t.getBindGroupLayout(r)),n},z:(e,r)=>{if(r){var t,n,a=f[r>>2];if(0!==a){m[a+4>>2];var o=a+8,i=eY.ComponentSwizzle[m[o>>2]]||"r",s=eY.ComponentSwizzle[m[o+4>>2]]||"g",u=eY.ComponentSwizzle[m[o+8>>2]]||"b",l=eY.ComponentSwizzle[m[o+12>>2]]||"a";n=`${i}${s}${u}${l}`}var c=f[r+24>>2],d=f[r+32>>2];t={label:eY.makeStringFromOptionalStringView(r+4),format:eY.TextureFormat[m[r+12>>2]],dimension:eY.TextureViewDimension[m[r+16>>2]],baseMipLevel:f[r+20>>2],mipLevelCount:0xffffffff===c?void 0:c,baseArrayLayer:f[r+28>>2],arrayLayerCount:0xffffffff===d?void 0:d,aspect:eY.TextureAspect[m[r+36>>2]],swizzle:n}}var p=eY.getJsObject(e),g=G(0);return eY.Internals.jsObjectInsert(g,p.createView(t)),g},Qa:e=>{eY.getJsObject(e).destroy()},aa:e=>{var r=eY.getJsObject(e);return eY.TextureFormat.indexOf(r.format)}};function run(){if(ek>0||(preRun(),ek>0)){eL=run;return}function doRun(){r.calledRun=!0,ed||(initRuntime(),i?.(r),r.onRuntimeInitialized?.(),postRun())}r.setStatus?(r.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>r.setStatus(""),1),doRun()},1)):doRun()}return et=await createWasm(),run(),em?r:new Promise((e,r)=>{i=e,s=r})}})();"object"==typeof exports&&"object"==typeof module?(module.exports=ModuleFactory,module.exports.default=ModuleFactory):"function"==typeof define&&define.amd&&define([],()=>ModuleFactory);�A
�Eo��