robopark 3.1.2 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -5
- package/dist/robopark/frontend-service.js +80 -0
- package/dist/robopark/serve.js +2 -2
- package/dist/robopark/standalone.js +30 -8
- package/package.json +34 -3
- package/ui/ROBOVOICE_BUILD.json +9 -0
- package/ui/standalone/.next/BUILD_ID +1 -0
- package/ui/standalone/.next/app-build-manifest.json +391 -0
- package/ui/standalone/.next/app-path-routes-manifest.json +55 -0
- package/ui/standalone/.next/build-manifest.json +33 -0
- package/ui/standalone/.next/package.json +1 -0
- package/ui/standalone/.next/prerender-manifest.json +41 -0
- package/ui/standalone/.next/react-loadable-manifest.json +14 -0
- package/ui/standalone/.next/required-server-files.json +362 -0
- package/ui/standalone/.next/routes-manifest.json +246 -0
- package/ui/standalone/.next/server/app/(app)/opengraph-image-xg4ifa/route.js +1 -0
- package/ui/standalone/.next/server/app/(app)/opengraph-image-xg4ifa/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/(app)/opengraph-image-xg4ifa/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/(app)/page.js +2 -0
- package/ui/standalone/.next/server/app/(app)/page.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/(app)/page_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/(app)/voice/page.js +12 -0
- package/ui/standalone/.next/server/app/(app)/voice/page.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/(app)/voice/page_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/_not-found/page.js +12 -0
- package/ui/standalone/.next/server/app/_not-found/page.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/connection-details/route.js +1 -0
- package/ui/standalone/.next/server/app/api/connection-details/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/connection-details/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/device-character/route.js +1 -0
- package/ui/standalone/.next/server/app/api/device-character/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/device-character/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/download-piper-model/route.js +1 -0
- package/ui/standalone/.next/server/app/api/download-piper-model/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/download-piper-model/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/model-status/route.js +1 -0
- package/ui/standalone/.next/server/app/api/model-status/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/model-status/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/models/route.js +1 -0
- package/ui/standalone/.next/server/app/api/models/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/models/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/prewarm/route.js +1 -0
- package/ui/standalone/.next/server/app/api/prewarm/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/prewarm/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/prompt/route.js +1 -0
- package/ui/standalone/.next/server/app/api/prompt/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/prompt/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/reload-tools/route.js +1 -0
- package/ui/standalone/.next/server/app/api/reload-tools/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/reload-tools/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/camera-token/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/camera-token/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/camera-token/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/character-ai/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/character-ai/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/character-ai/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/device-access/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/device-access/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/device-access/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/devices/[deviceId]/control/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/devices/[deviceId]/control/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/devices/[deviceId]/control/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/live-rooms/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/live-rooms/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/live-rooms/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/monitor-token/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/monitor-token/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/monitor-token/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/robots/[robotId]/operations/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/robots/[robotId]/operations/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/robots/[robotId]/operations/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/robots/[robotId]/voice-engine/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/robots/[robotId]/voice-engine/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/robots/[robotId]/voice-engine/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/robots/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/robots/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/robots/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/servers/[serverId]/metrics/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/servers/[serverId]/metrics/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/servers/[serverId]/metrics/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/servers/[serverId]/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/servers/[serverId]/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/servers/[serverId]/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/servers/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/servers/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/servers/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/sessions/[sessionId]/end/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/sessions/[sessionId]/end/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/sessions/[sessionId]/end/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/sessions/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/sessions/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/sessions/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/transcripts/[sessionId]/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/transcripts/[sessionId]/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/transcripts/[sessionId]/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/transcripts/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robopark/transcripts/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robopark/transcripts/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/robovoice/robots/[robotId]/media-health/route.js +1 -0
- package/ui/standalone/.next/server/app/api/robovoice/robots/[robotId]/media-health/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/robovoice/robots/[robotId]/media-health/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/settings/route.js +1 -0
- package/ui/standalone/.next/server/app/api/settings/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/setup/complete/route.js +1 -0
- package/ui/standalone/.next/server/app/api/setup/complete/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/setup/complete/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/setup/status/route.js +1 -0
- package/ui/standalone/.next/server/app/api/setup/status/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/setup/status/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/setup/test-groq/route.js +1 -0
- package/ui/standalone/.next/server/app/api/setup/test-groq/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/setup/test-groq/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/setup/test-hass/route.js +1 -0
- package/ui/standalone/.next/server/app/api/setup/test-hass/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/setup/test-hass/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/setup/test-n8n/route.js +1 -0
- package/ui/standalone/.next/server/app/api/setup/test-n8n/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/setup/test-n8n/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/setup/test-ollama/route.js +1 -0
- package/ui/standalone/.next/server/app/api/setup/test-ollama/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/setup/test-ollama/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/test-tts/route.js +1 -0
- package/ui/standalone/.next/server/app/api/test-tts/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/test-tts/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/turn-credentials/route.js +1 -0
- package/ui/standalone/.next/server/app/api/turn-credentials/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/turn-credentials/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/voices/route.js +1 -0
- package/ui/standalone/.next/server/app/api/voices/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/voices/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/wake/route.js +1 -0
- package/ui/standalone/.next/server/app/api/wake/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/wake/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/wake-word/models/route.js +1 -0
- package/ui/standalone/.next/server/app/api/wake-word/models/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/wake-word/models/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/wake-word/status/route.js +1 -0
- package/ui/standalone/.next/server/app/api/wake-word/status/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/wake-word/status/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/api/wake-word/upload/route.js +1 -0
- package/ui/standalone/.next/server/app/api/wake-word/upload/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/api/wake-word/upload/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/favicon.ico/route.js +1 -0
- package/ui/standalone/.next/server/app/favicon.ico/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/favicon.ico.body +0 -0
- package/ui/standalone/.next/server/app/favicon.ico.meta +1 -0
- package/ui/standalone/.next/server/app/fed/[...path]/route.js +4 -0
- package/ui/standalone/.next/server/app/fed/[...path]/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/fed/[...path]/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/fed/media/robots/[robotId]/video_feed/route.js +1 -0
- package/ui/standalone/.next/server/app/fed/media/robots/[robotId]/video_feed/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/fed/media/robots/[robotId]/video_feed/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/robopark/[...path]/route.js +1 -0
- package/ui/standalone/.next/server/app/robopark/[...path]/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/robopark/[...path]/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/robopark/api/[...path]/route.js +1 -0
- package/ui/standalone/.next/server/app/robopark/api/[...path]/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/robopark/api/[...path]/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/robopark/api/robots/[robotId]/stream/route.js +1 -0
- package/ui/standalone/.next/server/app/robopark/api/robots/[robotId]/stream/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/robopark/api/robots/[robotId]/stream/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/robopark/page.js +2 -0
- package/ui/standalone/.next/server/app/robopark/page.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/robopark/page_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/tailnet/route.js +1 -0
- package/ui/standalone/.next/server/app/tailnet/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/tailnet/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/vendor/livekit-client.umd.js/route.js +1 -0
- package/ui/standalone/.next/server/app/vendor/livekit-client.umd.js/route.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/vendor/livekit-client.umd.js/route_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app/voice-tester/page.js +2 -0
- package/ui/standalone/.next/server/app/voice-tester/page.js.nft.json +1 -0
- package/ui/standalone/.next/server/app/voice-tester/page_client-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/app-paths-manifest.json +55 -0
- package/ui/standalone/.next/server/chunks/1428.js +1 -0
- package/ui/standalone/.next/server/chunks/1692.js +1 -0
- package/ui/standalone/.next/server/chunks/37.js +1 -0
- package/ui/standalone/.next/server/chunks/4876.js +1 -0
- package/ui/standalone/.next/server/chunks/5232.js +9 -0
- package/ui/standalone/.next/server/chunks/5455.js +11 -0
- package/ui/standalone/.next/server/chunks/5611.js +6 -0
- package/ui/standalone/.next/server/chunks/5873.js +22 -0
- package/ui/standalone/.next/server/chunks/6018.js +1 -0
- package/ui/standalone/.next/server/chunks/8755.js +1 -0
- package/ui/standalone/.next/server/chunks/9077.js +11 -0
- package/ui/standalone/.next/server/functions-config-manifest.json +9 -0
- package/ui/standalone/.next/server/middleware-build-manifest.js +1 -0
- package/ui/standalone/.next/server/middleware-manifest.json +6 -0
- package/ui/standalone/.next/server/middleware-react-loadable-manifest.js +1 -0
- package/ui/standalone/.next/server/next-font-manifest.js +1 -0
- package/ui/standalone/.next/server/next-font-manifest.json +1 -0
- package/ui/standalone/.next/server/pages/500.html +1 -0
- package/ui/standalone/.next/server/pages/_app.js +1 -0
- package/ui/standalone/.next/server/pages/_app.js.nft.json +1 -0
- package/ui/standalone/.next/server/pages/_document.js +1 -0
- package/ui/standalone/.next/server/pages/_document.js.nft.json +1 -0
- package/ui/standalone/.next/server/pages/_error.js +19 -0
- package/ui/standalone/.next/server/pages/_error.js.nft.json +1 -0
- package/ui/standalone/.next/server/pages-manifest.json +5 -0
- package/ui/standalone/.next/server/server-reference-manifest.js +1 -0
- package/ui/standalone/.next/server/server-reference-manifest.json +1 -0
- package/ui/standalone/.next/server/webpack-runtime.js +1 -0
- package/ui/standalone/.next/static/T3eGaQUuZNb6rhEStcouc/_buildManifest.js +1 -0
- package/ui/standalone/.next/static/T3eGaQUuZNb6rhEStcouc/_ssgManifest.js +1 -0
- package/ui/standalone/.next/static/chunks/1255-404bb8de49c90395.js +1 -0
- package/ui/standalone/.next/static/chunks/144d3bae-bd5d150c0cab972e.js +1 -0
- package/ui/standalone/.next/static/chunks/1646.9123ee47220ed70b.js +1 -0
- package/ui/standalone/.next/static/chunks/2333-43c39acb531f7d4e.js +3 -0
- package/ui/standalone/.next/static/chunks/4bd1b696-f785427dddbba9fb.js +1 -0
- package/ui/standalone/.next/static/chunks/5139.c5e46d26064a85db.js +1 -0
- package/ui/standalone/.next/static/chunks/76e8f37e-2ae0e3fe7b44d874.js +1 -0
- package/ui/standalone/.next/static/chunks/9880-53262785284464cc.js +1 -0
- package/ui/standalone/.next/static/chunks/adfb71a7-625c1b5ebd039b6a.js +1 -0
- package/ui/standalone/.next/static/chunks/app/(app)/layout-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/(app)/opengraph-image-xg4ifa/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/(app)/page-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/(app)/voice/page-72d72d9a70d9c1d4.js +1 -0
- package/ui/standalone/.next/static/chunks/app/_not-found/page-cfd7daa82d71540c.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/connection-details/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/device-character/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/download-piper-model/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/model-status/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/models/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/prewarm/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/prompt/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/reload-tools/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/camera-token/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/character-ai/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/device-access/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/devices/[deviceId]/control/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/live-rooms/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/monitor-token/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/robots/[robotId]/operations/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/robots/[robotId]/voice-engine/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/robots/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/servers/[serverId]/metrics/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/servers/[serverId]/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/servers/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/sessions/[sessionId]/end/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/sessions/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/transcripts/[sessionId]/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robopark/transcripts/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/robovoice/robots/[robotId]/media-health/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/settings/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/setup/complete/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/setup/status/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/setup/test-groq/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/setup/test-hass/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/setup/test-n8n/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/setup/test-ollama/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/test-tts/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/turn-credentials/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/voices/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/wake/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/wake-word/models/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/wake-word/status/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/api/wake-word/upload/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/fed/[...path]/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/fed/media/robots/[robotId]/video_feed/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/layout-fcce963da1d8220f.js +1 -0
- package/ui/standalone/.next/static/chunks/app/robopark/[...path]/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/robopark/api/[...path]/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/robopark/api/robots/[robotId]/stream/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/robopark/page-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/tailnet/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/vendor/livekit-client.umd.js/route-5f312b128a0caf75.js +1 -0
- package/ui/standalone/.next/static/chunks/app/voice-tester/page-ae699e048e0eb834.js +1 -0
- package/ui/standalone/.next/static/chunks/framework-e60c938074ff7136.js +1 -0
- package/ui/standalone/.next/static/chunks/main-9e24e8708ff075fc.js +1 -0
- package/ui/standalone/.next/static/chunks/main-app-a1f59168303c7f84.js +1 -0
- package/ui/standalone/.next/static/chunks/pages/_app-131c90850aef965b.js +1 -0
- package/ui/standalone/.next/static/chunks/pages/_error-e4ba546eb376bdf4.js +1 -0
- package/ui/standalone/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- package/ui/standalone/.next/static/chunks/webpack-5252e5254da079b5.js +1 -0
- package/ui/standalone/.next/static/css/3f478a573f9be82e.css +1 -0
- package/ui/standalone/.next/static/css/51560c4af1d5a21f.css +1 -0
- package/ui/standalone/.next/static/media/27fe93087559d480-s.p.otf +0 -0
- package/ui/standalone/.next/static/media/4d3869dd8a56345a-s.p.otf +0 -0
- package/ui/standalone/.next/static/media/63f3bb9ce29e22d5-s.p.otf +0 -0
- package/ui/standalone/.next/static/media/79e1c5d0f2fe9f68-s.p.otf +0 -0
- package/ui/standalone/.next/static/media/8bf7b2ceda89477b-s.p.woff2 +0 -0
- package/ui/standalone/.next/static/media/98baa4a7809fbf72-s.woff2 +0 -0
- package/ui/standalone/.next/static/media/f7650dfaa438c37c-s.woff2 +0 -0
- package/ui/standalone/package.json +57 -0
- package/ui/standalone/public/caal-logo.svg +3 -0
- package/ui/standalone/public/commit-mono-400-regular.woff +0 -0
- package/ui/standalone/public/cwl-logo-round.png +0 -0
- package/ui/standalone/public/everett-light.woff +0 -0
- package/ui/standalone/public/hey_cal.ppn +0 -0
- package/ui/standalone/public/install-robot-kiosk.sh +242 -0
- package/ui/standalone/public/lk-logo-dark.svg +18 -0
- package/ui/standalone/public/lk-logo.svg +18 -0
- package/ui/standalone/public/lk-wordmark.svg +12 -0
- package/ui/standalone/public/opengraph-image-bg.png +0 -0
- package/ui/standalone/public/porcupine_params.pv +0 -0
- package/ui/standalone/public/robopark-control.html +9200 -0
- package/ui/standalone/public/static/robopark/barracuda.png +0 -0
- package/ui/standalone/public/static/robopark/bmw.png +0 -0
- package/ui/standalone/public/static/robopark/jaguar.png +0 -0
- package/ui/standalone/public/static/robopark/magnus.jpg +0 -0
- package/ui/standalone/public/static/robopark/panda.png +0 -0
- package/ui/standalone/public/static/robopark/tesla.png +0 -0
- package/ui/standalone/public/static/robopark/titan.jpg +0 -0
- package/ui/standalone/public/static/robopark/volt.png +0 -0
- package/ui/standalone/public/tailnet/index.html +8995 -0
- package/ui/standalone/public/transcript-analytics.html +72 -0
- package/ui/standalone/public/vendor/elevenlabs-client.iife.js +24200 -0
- package/ui/standalone/public/vendor/livekit-client.umd.js +2 -0
- package/ui/standalone/public/voice-join.html +89 -0
- package/ui/standalone/server.js +38 -0
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# Serialize installs/restarts for this user. Re-running the curl command while a
|
|
5
|
+
# previous verification loop is active used to launch a second kiosk publisher.
|
|
6
|
+
lock_dir="${XDG_RUNTIME_DIR:-/tmp}/robopark-kiosk-${UID}.lock"
|
|
7
|
+
if ! mkdir "$lock_dir" 2>/dev/null; then
|
|
8
|
+
echo "Another RoboPark kiosk install/restart is already running. Wait for it to finish, or stop that shell with Ctrl-C." >&2
|
|
9
|
+
exit 5
|
|
10
|
+
fi
|
|
11
|
+
trap 'rmdir "$lock_dir" 2>/dev/null || true' EXIT
|
|
12
|
+
|
|
13
|
+
device_id="${1:-}"
|
|
14
|
+
origin="${2:-https://robo2.tail45774e.ts.net:3543}"
|
|
15
|
+
origin="${origin%/}"
|
|
16
|
+
|
|
17
|
+
if [[ ! "$device_id" =~ ^[a-f0-9]{32}$ ]]; then
|
|
18
|
+
echo "Missing or invalid robot device ID" >&2
|
|
19
|
+
exit 2
|
|
20
|
+
fi
|
|
21
|
+
|
|
22
|
+
if [[ ! "$origin" =~ ^https://[A-Za-z0-9.-]+(:[0-9]+)?$ ]]; then
|
|
23
|
+
echo "Invalid HTTPS production origin: $origin" >&2
|
|
24
|
+
exit 2
|
|
25
|
+
fi
|
|
26
|
+
|
|
27
|
+
firefox_bin="$(command -v firefox || true)"
|
|
28
|
+
if [[ -z "$firefox_bin" ]]; then
|
|
29
|
+
echo "Firefox is not installed" >&2
|
|
30
|
+
exit 1
|
|
31
|
+
fi
|
|
32
|
+
|
|
33
|
+
echo "Preflight: validating $device_id against $origin"
|
|
34
|
+
registry="$(curl -fsSL --connect-timeout 5 --max-time 12 "$origin/robopark/api/devices")"
|
|
35
|
+
if ! printf '%s' "$registry" | grep -q "\"$device_id\""; then
|
|
36
|
+
echo "Device ID is not registered on the V2 control center; production was not changed" >&2
|
|
37
|
+
exit 3
|
|
38
|
+
fi
|
|
39
|
+
|
|
40
|
+
distribution_dir="$(dirname "$(readlink -f "$firefox_bin")")/distribution"
|
|
41
|
+
system_policy_dir="/etc/firefox/policies"
|
|
42
|
+
tmp_policy="$(mktemp)"
|
|
43
|
+
backup_dir="$HOME/.robopark-kiosk-backup"
|
|
44
|
+
mkdir -p "$backup_dir"
|
|
45
|
+
policy_path="$system_policy_dir/policies.json"
|
|
46
|
+
service_path="$HOME/.config/systemd/user/robopark-kiosk.service"
|
|
47
|
+
recovery_path="$HOME/.local/bin/robopark-media-recovery"
|
|
48
|
+
recovery_service_path="$HOME/.config/systemd/user/robopark-media-recovery.service"
|
|
49
|
+
[[ -f "$policy_path" ]] && sudo cp -f "$policy_path" "$backup_dir/policies.json" || true
|
|
50
|
+
[[ -f "$service_path" ]] && cp -f "$service_path" "$backup_dir/robopark-kiosk.service" || true
|
|
51
|
+
|
|
52
|
+
rollback() {
|
|
53
|
+
echo "V2 verification failed; restoring the previous production kiosk" >&2
|
|
54
|
+
if [[ -f "$backup_dir/policies.json" ]]; then sudo install -m 0644 "$backup_dir/policies.json" "$policy_path"; fi
|
|
55
|
+
if [[ -f "$backup_dir/robopark-kiosk.service" ]]; then cp -f "$backup_dir/robopark-kiosk.service" "$service_path"; fi
|
|
56
|
+
systemctl --user daemon-reload 2>/dev/null || true
|
|
57
|
+
systemctl --user restart robopark-kiosk.service 2>/dev/null || true
|
|
58
|
+
}
|
|
59
|
+
trap 'rm -f "$tmp_policy"; rmdir "$lock_dir" 2>/dev/null || true' EXIT
|
|
60
|
+
|
|
61
|
+
cat >"$tmp_policy" <<JSON
|
|
62
|
+
{
|
|
63
|
+
"policies": {
|
|
64
|
+
"Permissions": {
|
|
65
|
+
"Camera": { "Allow": ["$origin"], "BlockNewRequests": false, "Locked": true },
|
|
66
|
+
"Microphone": { "Allow": ["$origin"], "BlockNewRequests": false, "Locked": true },
|
|
67
|
+
"Autoplay": { "Allow": ["$origin"], "Default": "block-audio-video", "Locked": true }
|
|
68
|
+
},
|
|
69
|
+
"Preferences": {
|
|
70
|
+
"media.autoplay.default": { "Value": 0, "Status": "locked" },
|
|
71
|
+
"media.autoplay.blocking_policy": { "Value": 0, "Status": "locked" }
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
JSON
|
|
76
|
+
|
|
77
|
+
sudo install -d -m 0755 "$system_policy_dir"
|
|
78
|
+
sudo install -m 0644 "$tmp_policy" "$system_policy_dir/policies.json"
|
|
79
|
+
# Traditional distro Firefox also reads its adjacent distribution directory.
|
|
80
|
+
# Snap packages are read-only there, so failure is deliberately non-fatal.
|
|
81
|
+
if sudo install -d -m 0755 "$distribution_dir" 2>/dev/null; then
|
|
82
|
+
sudo install -m 0644 "$tmp_policy" "$distribution_dir/policies.json" 2>/dev/null || true
|
|
83
|
+
fi
|
|
84
|
+
|
|
85
|
+
join_url="$origin/?device_id=$device_id&autostart=1&hardware_autobind=1"
|
|
86
|
+
export DISPLAY="${DISPLAY:-:0}"
|
|
87
|
+
export XAUTHORITY="${XAUTHORITY:-$HOME/.Xauthority}"
|
|
88
|
+
|
|
89
|
+
# Bind playback at the PipeWire/Pulse layer. Browser setSinkId is retained as
|
|
90
|
+
# a second guard, but unattended Firefox cannot reliably repair a stale HDMI
|
|
91
|
+
# default on every Raspberry Pi image.
|
|
92
|
+
if command -v pactl >/dev/null 2>&1; then
|
|
93
|
+
usb_sink="$(pactl list short sinks 2>/dev/null | awk 'BEGIN{IGNORECASE=1} /usb/{print $2; exit}')"
|
|
94
|
+
[[ -z "$usb_sink" ]] && usb_sink="$(pactl list short sinks 2>/dev/null | awk 'NR==1{print $2}')"
|
|
95
|
+
if [[ -n "$usb_sink" ]]; then
|
|
96
|
+
pactl set-default-sink "$usb_sink" || true
|
|
97
|
+
pactl set-sink-mute "$usb_sink" 0 || true
|
|
98
|
+
pactl set-sink-volume "$usb_sink" 100% || true
|
|
99
|
+
echo "Audio output bound through PulseAudio: $usb_sink"
|
|
100
|
+
fi
|
|
101
|
+
elif command -v wpctl >/dev/null 2>&1; then
|
|
102
|
+
usb_sink_id="$(wpctl status -n 2>/dev/null | awk 'BEGIN{IGNORECASE=1; sinks=0} /Sinks:/{sinks=1;next} /Sources:/{sinks=0} sinks && /usb/{line=$0; sub(/^.*[[:space:]]/,"",line); if(match($0,/[0-9]+\./)){id=substr($0,RSTART,RLENGTH-1); print id; exit}}')"
|
|
103
|
+
if [[ -n "$usb_sink_id" ]]; then
|
|
104
|
+
wpctl set-default "$usb_sink_id" || true
|
|
105
|
+
wpctl set-mute "$usb_sink_id" 0 || true
|
|
106
|
+
wpctl set-volume "$usb_sink_id" 1.0 || true
|
|
107
|
+
echo "Audio output bound through PipeWire: $usb_sink_id"
|
|
108
|
+
fi
|
|
109
|
+
fi
|
|
110
|
+
|
|
111
|
+
mkdir -p "$HOME/.config/systemd/user"
|
|
112
|
+
cat >"$HOME/.config/systemd/user/robopark-kiosk.service" <<UNIT
|
|
113
|
+
[Unit]
|
|
114
|
+
Description=RoboPark production kiosk
|
|
115
|
+
After=graphical-session.target network-online.target
|
|
116
|
+
Wants=network-online.target
|
|
117
|
+
|
|
118
|
+
[Service]
|
|
119
|
+
Environment=DISPLAY=${DISPLAY}
|
|
120
|
+
Environment=XAUTHORITY=${XAUTHORITY}
|
|
121
|
+
ExecStart=${firefox_bin} --kiosk ${join_url}
|
|
122
|
+
Restart=always
|
|
123
|
+
RestartSec=5
|
|
124
|
+
|
|
125
|
+
[Install]
|
|
126
|
+
WantedBy=default.target
|
|
127
|
+
UNIT
|
|
128
|
+
|
|
129
|
+
# A small unprivileged control worker lets the central UI release media devices
|
|
130
|
+
# held by duplicate browser/test processes. It deliberately never terminates
|
|
131
|
+
# PipeWire, WirePlumber, PulseAudio, SSH, or unrelated system services.
|
|
132
|
+
mkdir -p "$HOME/.local/bin" "$HOME/.local/state/robopark"
|
|
133
|
+
cat >"$recovery_path" <<'RECOVERY'
|
|
134
|
+
#!/usr/bin/env bash
|
|
135
|
+
set -u
|
|
136
|
+
device_id="$1"
|
|
137
|
+
origin="${2%/}"
|
|
138
|
+
state="$HOME/.local/state/robopark/kill-media-revision"
|
|
139
|
+
while sleep 2; do
|
|
140
|
+
payload="$(curl -fsSL --connect-timeout 3 --max-time 6 "$origin/api/robopark/devices/$device_id/control" 2>/dev/null || true)"
|
|
141
|
+
revision="$(printf '%s' "$payload" | sed -n 's/.*"kill_competitors_revision"[[:space:]]*:[[:space:]]*\([0-9][0-9]*\).*/\1/p')"
|
|
142
|
+
[[ -z "$revision" ]] && continue
|
|
143
|
+
if [[ ! -f "$state" ]]; then printf '%s\n' "$revision" >"$state"; continue; fi
|
|
144
|
+
previous="$(cat "$state" 2>/dev/null || printf 0)"
|
|
145
|
+
[[ "$revision" -le "$previous" ]] && continue
|
|
146
|
+
printf '%s\n' "$revision" >"$state"
|
|
147
|
+
systemctl --user stop robopark-kiosk.service 2>/dev/null || true
|
|
148
|
+
systemctl --user kill --kill-who=all robopark-kiosk.service 2>/dev/null || true
|
|
149
|
+
pkill -TERM -f 'firefox[^ ]*.*robo2\.tail45774e\.ts\.net:(3443|3543)' 2>/dev/null || true
|
|
150
|
+
for name in firefox firefox-esr firefox-bin chromium chromium-browser ffmpeg gst-launch-1.0 cheese guvcview libcamera-vid libcamera-still rpicam-vid rpicam-still arecord speaker-test; do
|
|
151
|
+
pkill -TERM -x "$name" 2>/dev/null || true
|
|
152
|
+
done
|
|
153
|
+
sleep 2
|
|
154
|
+
for node in /dev/video0 /dev/video1; do
|
|
155
|
+
[[ -e "$node" ]] && fuser -k "$node" 2>/dev/null || true
|
|
156
|
+
done
|
|
157
|
+
systemctl --user start robopark-kiosk.service 2>/dev/null || true
|
|
158
|
+
done
|
|
159
|
+
RECOVERY
|
|
160
|
+
chmod 0755 "$recovery_path"
|
|
161
|
+
cat >"$recovery_service_path" <<UNIT
|
|
162
|
+
[Unit]
|
|
163
|
+
Description=RoboPark guarded media recovery worker
|
|
164
|
+
After=network-online.target
|
|
165
|
+
Wants=network-online.target
|
|
166
|
+
|
|
167
|
+
[Service]
|
|
168
|
+
ExecStart=${recovery_path} ${device_id} ${origin}
|
|
169
|
+
Restart=always
|
|
170
|
+
RestartSec=3
|
|
171
|
+
|
|
172
|
+
[Install]
|
|
173
|
+
WantedBy=default.target
|
|
174
|
+
UNIT
|
|
175
|
+
systemctl --user daemon-reload || true
|
|
176
|
+
systemctl --user enable robopark-kiosk.service || true
|
|
177
|
+
systemctl --user enable --now robopark-media-recovery.service || true
|
|
178
|
+
|
|
179
|
+
# Stop the managed cgroup first, then close only Firefox-family processes that
|
|
180
|
+
# are attached to this RoboPark origin. `pkill -x firefox` misses firefox-esr
|
|
181
|
+
# and firefox-bin on some Pi images, leaving duplicate LiveKit publishers.
|
|
182
|
+
systemctl --user stop robopark-kiosk.service 2>/dev/null || true
|
|
183
|
+
systemctl --user kill --kill-who=all robopark-kiosk.service 2>/dev/null || true
|
|
184
|
+
pkill -TERM -f 'firefox[^ ]*.*robo2\.tail45774e\.ts\.net:3543' 2>/dev/null || true
|
|
185
|
+
pkill -TERM -x firefox 2>/dev/null || true
|
|
186
|
+
pkill -TERM -x firefox-esr 2>/dev/null || true
|
|
187
|
+
pkill -TERM -x firefox-bin 2>/dev/null || true
|
|
188
|
+
# Release stale user-level capture/playback clients before Firefox asks
|
|
189
|
+
# PipeWire for the production devices. Never terminate PipeWire,
|
|
190
|
+
# WirePlumber, PulseAudio, SSH, or unrelated services.
|
|
191
|
+
for name in chromium chromium-browser ffmpeg gst-launch-1.0 cheese guvcview libcamera-vid libcamera-still rpicam-vid rpicam-still arecord speaker-test; do
|
|
192
|
+
pkill -TERM -x "$name" 2>/dev/null || true
|
|
193
|
+
done
|
|
194
|
+
for _ in 1 2 3 4 5; do
|
|
195
|
+
pgrep -u "$UID" -f 'firefox|firefox-esr|firefox-bin' >/dev/null || break
|
|
196
|
+
sleep 1
|
|
197
|
+
done
|
|
198
|
+
# Escalate only for this user's remaining Firefox family after the graceful
|
|
199
|
+
# wait. A stale browser otherwise keeps the microphone/camera and LiveKit room.
|
|
200
|
+
if pgrep -u "$UID" -f 'firefox|firefox-esr|firefox-bin' >/dev/null; then
|
|
201
|
+
pkill -KILL -u "$UID" -f 'firefox|firefox-esr|firefox-bin' 2>/dev/null || true
|
|
202
|
+
sleep 1
|
|
203
|
+
fi
|
|
204
|
+
# A crashed camera client can survive under a different executable name. Free
|
|
205
|
+
# only the two conventional USB-camera nodes after graceful process cleanup;
|
|
206
|
+
# do not touch /dev/snd because PipeWire legitimately owns those handles.
|
|
207
|
+
if command -v fuser >/dev/null 2>&1; then
|
|
208
|
+
for node in /dev/video0 /dev/video1; do
|
|
209
|
+
[[ -e "$node" ]] && fuser -k "$node" 2>/dev/null || true
|
|
210
|
+
done
|
|
211
|
+
sleep 1
|
|
212
|
+
fi
|
|
213
|
+
|
|
214
|
+
if systemctl --user restart robopark-kiosk.service 2>/dev/null; then
|
|
215
|
+
echo "Persistent kiosk service started"
|
|
216
|
+
else
|
|
217
|
+
nohup "$firefox_bin" --kiosk "$join_url" >"$HOME/robovoice-kiosk.log" 2>&1 &
|
|
218
|
+
fi
|
|
219
|
+
|
|
220
|
+
echo "Verifying V2 room join (allowing up to 120 seconds for Pi media initialization)..."
|
|
221
|
+
verified=0
|
|
222
|
+
for attempt in $(seq 1 60); do
|
|
223
|
+
robots="$(curl -fsSL --connect-timeout 3 --max-time 6 "$origin/robopark/api/robots" 2>/dev/null || true)"
|
|
224
|
+
# `status` may legitimately be `degraded` while audio and the voice worker
|
|
225
|
+
# are live (for example, a camera-less/blocked Vixen). Migration success is
|
|
226
|
+
# the physical kiosk connection, represented by connection_status=online.
|
|
227
|
+
if printf '%s' "$robots" | grep -q "\"id\":\"$device_id\"[^}]*\"connection_status\":\"online\""; then verified=1; break; fi
|
|
228
|
+
if (( attempt % 10 == 0 )); then
|
|
229
|
+
echo "Still waiting for $device_id ($((attempt * 2))s): Firefox may be completing microphone/camera initialization..."
|
|
230
|
+
fi
|
|
231
|
+
sleep 2
|
|
232
|
+
done
|
|
233
|
+
if [[ "$verified" != 1 ]]; then
|
|
234
|
+
echo "V2 did not observe the registered device after 120 seconds." >&2
|
|
235
|
+
systemctl --user status robopark-kiosk.service --no-pager -l >&2 || true
|
|
236
|
+
journalctl --user -u robopark-kiosk.service -n 40 --no-pager >&2 || true
|
|
237
|
+
rollback
|
|
238
|
+
exit 4
|
|
239
|
+
fi
|
|
240
|
+
|
|
241
|
+
echo "V2 migration verified: $join_url"
|
|
242
|
+
echo "Rollback snapshot: $backup_dir"
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g clip-path="url(#clip0_646_420)">
|
|
3
|
+
<path d="M14.4004 9.59961H9.59962V14.4004H14.4004V9.59961Z" fill="#1fd5f9" />
|
|
4
|
+
<path d="M19.2011 4.80078H14.4004V9.60153H19.2011V4.80078Z" fill="#1fd5f9" />
|
|
5
|
+
<path d="M19.2011 14.4004H14.4004V19.2011H19.2011V14.4004Z" fill="#1fd5f9" />
|
|
6
|
+
<path d="M24 0H19.1992V4.80075H24V0Z" fill="#1fd5f9" />
|
|
7
|
+
<path d="M24 19.1992H19.1992V24H24V19.1992Z" fill="#1fd5f9" />
|
|
8
|
+
<path
|
|
9
|
+
d="M4.80075 19.1992V14.4004V9.59962V4.80075V0H0V4.80075V9.59962V14.4004V19.1992V24H4.80075H9.59963H14.4004V19.1992H9.59963H4.80075Z"
|
|
10
|
+
fill="white" />
|
|
11
|
+
</g>
|
|
12
|
+
<defs>
|
|
13
|
+
<clipPath id="clip0_646_420">
|
|
14
|
+
<rect width="24" height="24" fill="white" />
|
|
15
|
+
</clipPath>
|
|
16
|
+
</defs>
|
|
17
|
+
</svg>
|
|
18
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g clip-path="url(#clip0_646_420)">
|
|
3
|
+
<path d="M14.4004 9.59961H9.59962V14.4004H14.4004V9.59961Z" fill="#002cf2" />
|
|
4
|
+
<path d="M19.2011 4.80078H14.4004V9.60153H19.2011V4.80078Z" fill="#002cf2" />
|
|
5
|
+
<path d="M19.2011 14.4004H14.4004V19.2011H19.2011V14.4004Z" fill="#002cf2" />
|
|
6
|
+
<path d="M24 0H19.1992V4.80075H24V0Z" fill="#002cf2" />
|
|
7
|
+
<path d="M24 19.1992H19.1992V24H24V19.1992Z" fill="#002cf2" />
|
|
8
|
+
<path
|
|
9
|
+
d="M4.80075 19.1992V14.4004V9.59962V4.80075V0H0V4.80075V9.59962V14.4004V19.1992V24H4.80075H9.59963H14.4004V19.1992H9.59963H4.80075Z"
|
|
10
|
+
fill="black" />
|
|
11
|
+
</g>
|
|
12
|
+
<defs>
|
|
13
|
+
<clipPath id="clip0_646_420">
|
|
14
|
+
<rect width="24" height="24" fill="white" />
|
|
15
|
+
</clipPath>
|
|
16
|
+
</defs>
|
|
17
|
+
</svg>
|
|
18
|
+
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<svg width="143" height="33" viewBox="0 0 143 33" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M5.47344 0.5H0.000244141V32.1311H19.8555V27.5113H5.47344V0.5Z" fill="white"/>
|
|
3
|
+
<path d="M28.89 14.8997H23.5867V32.1294H28.89V14.8997Z" fill="white"/>
|
|
4
|
+
<path d="M44.5022 31.5056L37.7567 9.69678H32.4534L39.5387 32.1303H49.4657L56.5511 9.69678H51.205L44.5022 31.5056Z" fill="white"/>
|
|
5
|
+
<path d="M69.7073 9.19946C62.8334 9.19946 58.4639 14.0279 58.4639 20.8946C58.4639 27.7206 62.7063 32.6317 69.7073 32.6317C75.0521 32.6317 78.9132 30.3008 80.3554 25.5144H74.9627C74.1573 27.6786 72.671 28.9712 69.7438 28.9712C66.5195 28.9712 64.2718 26.765 63.8477 22.4378H80.7329C80.8136 21.8862 80.8557 21.3297 80.8588 20.7724C80.8601 13.7773 76.4478 9.19946 69.7073 9.19946ZM63.8892 18.8131C64.4417 14.7773 66.6051 12.8625 69.7073 12.8625C72.9731 12.8625 75.1792 15.2341 75.4347 18.8131H63.8892Z" fill="white"/>
|
|
6
|
+
<path d="M111.871 0.5H104.998L91.6771 14.9841V0.5H86.2039V32.1311H91.6771V16.1495L106.356 32.1311H113.356L97.9985 15.4828L111.871 0.5Z" fill="white"/>
|
|
7
|
+
<path d="M121.032 9.69678H115.729V26.9265H121.032V9.69678Z" fill="white"/>
|
|
8
|
+
<path d="M23.5872 9.69678H18.2839V14.8993H23.5872V9.69678Z" fill="white"/>
|
|
9
|
+
<path d="M126.337 26.9282H121.033V32.1307H126.337V26.9282Z" fill="white"/>
|
|
10
|
+
<path d="M142.183 26.9282H136.88V32.1307H142.183V26.9282Z" fill="white"/>
|
|
11
|
+
<path d="M142.182 14.9001V9.69759H136.879V0.5H131.576V9.69759H126.272V14.9001H131.576V26.9286H136.879V14.9001H142.182Z" fill="white"/>
|
|
12
|
+
</svg>
|
|
Binary file
|
|
Binary file
|