73 lines
No EOL
74 KiB
HTML
73 lines
No EOL
74 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Pulsing Teal Flow Forms — exploration</title>
|
|
<style>
|
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
body { background: #0a0a0f; color: #3a3a4a; font-family: ui-monospace, monospace; overflow: hidden; }
|
|
#grid { padding: 20px; font-size: 12px; line-height: 1.4; white-space: pre; }
|
|
.c { display: inline-block; transition: all 0.3s; }
|
|
.c.active { color: #fde68a; text-shadow: 0 0 6px rgba(253,230,138,0.5); }
|
|
.c.strong { color: #34d399; text-shadow: 0 0 10px rgba(52,211,153,0.6); font-weight: bold; }
|
|
.c.dead { color: #1a1a2a; }
|
|
#info { position: fixed; bottom: 10px; left: 20px; color: #3a3a4a; font-size: 11px; }
|
|
#controls { position: fixed; top: 10px; right: 20px; color: #666; font-size: 11px; }
|
|
#controls span { cursor: pointer; margin-left: 12px; color: #fde68a; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div id="grid"></div>
|
|
<div id="info">neurameba · physarum exploration</div>
|
|
<div id="controls"><span id="play-btn">play</span><span id="reset-btn">reset</span></div>
|
|
<script>
|
|
const text = "# API Reference\n\nmotd is API-first. Every feature is an endpoint. Build clients, bots, integrations — whatever you want.\n\n## Base URL\n\n```\nhttps://motd.social/api\n```\n\nLocal dev: `http://localhost:3006/api`\n\n## Response Format\n\nEvery endpoint returns the same envelope:\n\n**Success:**\n```json\n{ \"ok\": true, \"data\": { ... } }\n```\n\n**Error:**\n```json\n{ \"ok\": false, \"error\": \"Something went wrong.\" }\n```\n\nHTTP status codes are standard: 200 success, 400 bad request, 401 unauthorized, 404 not found, 409 conflict.\n\n## Authentication\n\nMost endpoints require authentication. Get a token by registering or logging in, then send it as a Bearer token or let the browser handle it via cookies.\n\n**Header auth (for scripts and clients):**\n```\nAuthorization: Bearer <token>\n```\n\n**Cookie auth (for the web client):**\nThe login endpoints set an `motd_session` httpOnly cookie automatically.\n\nSessions expire after 7 days. Use `/login-permanently` in the web client to persist across tabs (stored in localStorage instead of sessionStorage — the token is the same).\n\n---\n\n## Auth\n\n### POST /api/auth/register\n\nCreate a new account.\n\n**Auth:** none\n\n**Body:**\n```json\n{ \"username\": \"alice\", \"password\": \"hunter2pwd\" }\n```\n\n**Rules:**\n- Username: 3-20 characters, letters, numbers, underscore only\n- Password: minimum 8 characters\n\n**Response:**\n```json\n{\n \"ok\": true,\n \"data\": {\n \"token\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n \"user\": {\n \"username\": \"alice\",\n \"display_name\": \"alice\"\n }\n }\n}\n```\n\n**Errors:**\n- `400` — username or password missing, invalid format\n- `409` — username taken\n\n**Example:**\n```bash\ncurl -X POST http://localhost:3006/api/auth/register \\\n -H \"Content-Type: application/json\" \\\n -d '{\"username\":\"alice\",\"password\":\"hunter2pwd\"}'\n```\n\n### POST /api/auth/login\n\nLog in to an existing account.\n\n**Auth:** none\n\n**Body:**\n```json\n{ \"username\": \"alice\", \"password\": \"hunter2pwd\" }\n```\n\n**Response:**\n```json\n{\n \"ok\": true,\n \"data\": {\n \"token\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n \"user\": {\n \"username\": \"alice\",\n \"display_name\": \"Alice\"\n }\n }\n}\n```\n\n**Errors:**\n- `400` — missing fields\n- `401` — invalid username or password\n\n**Example:**\n```bash\ncurl -X POST http://localhost:3006/api/auth/login \\\n -H \"Content-Type: application/json\" \\\n -d '{\"username\":\"alice\",\"password\":\"hunter2pwd\"}'\n```\n\n### GET /api/auth/me\n\nGet the current authenticated user.\n\n**Auth:** required\n\n**Response:**\n```json\n{\n \"ok\": true,\n \"data\": {\n \"user\": {\n \"username\": \"alice\",\n \"display_name\": \"Alice\",\n \"bio\": \"building things\",\n \"created_at\": \"2026-03-15T10:30:00.000Z\"\n }\n }\n}\n```\n\n**Example:**\n```bash\ncurl http://localhost:3006/api/auth/me \\\n -H \"Authorization: Bearer YOUR_TOKEN\"\n```\n\n### POST /api/auth/logout\n\nEnd the current session.\n\n**Auth:** required\n\n**Response:**\n```json\n{ \"ok\": true, \"data\": { \"message\": \"Logged out.\" } }\n```\n\n**Example:**\n```bash\ncurl -X POST http://localhost:3006/api/auth/logout \\\n -H \"Authorization: Bearer YOUR_TOKEN\"\n```\n\n---\n\n## Profile\n\n### GET /api/profile/:username\n\nView a user's profile.\n\n**Auth:** none\n\n**Response:**\n```json\n{\n \"ok\": true,\n \"data\": {\n \"username\": \"alice\",\n \"display_name\": \"Alice\",\n \"bio\": \"building things\",\n \"created_at\": \"2026-03-15T10:30:00.000Z\",\n \"posts\": 42,\n \"avatar\": [\n \"████ ████\",\n \" ████████ \",\n \"████████████\",\n \" ████████ \",\n \"██ ████ ██\"\n ]\n }\n}\n```\n\n**Errors:**\n- `404` — user not found\n\n**Example:**\n```bash\ncurl http://localhost:3006/api/profile/alice\n```\n\n### PUT /api/profile\n\nUpdate your display name and/or bio.\n\n**Auth:** required\n\n**Body:**\n```json\n{ \"display_name\": \"Alice W.\", \"bio\": \"shipping code\" }\n```\n\nBoth fields are optional. Send only what you want to change.\n\n**Response:**\n```json\n{\n \"ok\": true,\n \"data\": {\n \"username\": \"alice\",\n \"display_name\": \"Alice W.\",\n \"bio\": \"shipping code\",\n \"created_at\": \"2026-03-15T10:30:00.000Z\"\n }\n}\n```\n\n**Errors:**\n- `400` — nothing to update\n\n**Example:**\n```bash\ncurl -X PUT http://localhost:3006/api/profile \\\n -H \"Authorization: Bearer YOUR_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"bio\":\"shipping code\"}'\n```\n\n### GET /api/profile/search?q=\n\nSearch users by username or display name.\n\n**Auth:** none\n\n**Params:**\n- `q` — search query (required, min 1 character)\n\n**Response:**\n```json\n{\n \"ok\": true,\n \"data\": {\n \"users\": [\n { \"username\": \"alice\", \"display_name\": \"Alice\", \"bio\": \"building things\" },\n { \"username\": \"alice2\", \"display_name\": \"Alice Too\", \"bio\": null }\n ]\n }\n}\n```\n\n**Example:**\n```bash\ncurl \"http://localhost:3006/api/profile/search?q=alice\"\n```\n\n---\n\n## Posts\n\n### POST /api/posts\n\nPublish a post.\n\n**Auth:** required\n\n**Body:**\n```json\n{ \"content\": \"just shipped the wasm compiler [rust] [wasm]\" }\n```\n\n**Optional fields:**\n- `reply_to` — post ID to reply to\n\n**Inline commands:**\n- `/attach <media_id>` — attach previously uploaded media to the post. The `/attach` command is stripped from the displayed content.\n\n**Rules:**\n- Content: 1-500 characters\n- Tags use [brackets]: `[rust]`, `[music]`, `[coding]`\n- Tags are auto-extracted and stored\n- New tags are auto-assigned to the \"general\" category\n\n**Response:**\n```json\n{\n \"ok\": true,\n \"data\": {\n \"id\": \"a3kf9x\",\n \"content\": \"just shipped the wasm compiler [rust] [wasm]\",\n \"reply_to\": null,\n \"tags\": [\"rust\", \"wasm\"],\n \"media_id\": null,\n \"username\": \"alice\",\n \"display_name\": \"Alice\",\n \"created_at\": \"2026-03-22T14:00:00.000Z\"\n }\n}\n```\n\n**Errors:**\n- `400` — empty content, too long, media not found/not yours\n- `404` — reply_to post not found\n\n**Examples:**\n\nSimple post:\n```bash\ncurl -X POST http://localhost:3006/api/posts \\\n -H \"Authorization: Bearer YOUR_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"content\":\"just shipped the wasm compiler [rust] [wasm]\"}'\n```\n\nReply to a post:\n```bash\ncurl -X POST http://localhost:3006/api/posts \\\n -H \"Authorization: Bearer YOUR_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"content\":\"nice work!\",\"reply_to\":\"a3kf9x\"}'\n```\n\nPost with media attachment:\n```bash\ncurl -X POST http://localhost:3006/api/posts \\\n -H \"Authorization: Bearer YOUR_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"content\":\"screenshot of the new UI /attach x7km2p [showcase]\"}'\n```\n\n### GET /api/posts/feed\n\nGet the chronological feed. Public — works without auth. Authenticated users get kill-filtered results; guests get unfiltered posts (still subject to system-level filter_score suppression).\n\n**Auth:** optional\n\n**Params:**\n- `limit` — max posts to return (default 50, max 100)\n- `offset` — pagination offset (default 0)\n\n**Response:**\n```json\n{\n \"ok\": true,\n \"data\": {\n \"posts\": [\n {\n \"id\": \"a3kf9x\",\n \"content\": \"just shipped the wasm compiler [rust] [wasm]\",\n \"reply_to\": null,\n \"tags\": [\"rust\", \"wasm\"],\n \"media_id\": null,\n \"username\": \"alice\",\n \"display_name\": \"Alice\",\n \"created_at\": \"2026-03-22T14:00:00.000Z\"\n }\n ]\n }\n}\n```\n\n**Examples:**\n```bash\n# Guest (unfiltered)\ncurl \"http://localhost:3006/api/posts/feed?limit=20\"\n\n# Authenticated (kill-filtered)\ncurl \"http://localhost:3006/api/posts/feed?limit=20\" \\\n -H \"Authorization: Bearer YOUR_TOKEN\"\n```\n\n### GET /api/posts/:id\n\nGet a single post by ID.\n\n**Auth:** none\n\n**Response:**\n```json\n{\n \"ok\": true,\n \"data\": {\n \"id\": \"a3kf9x\",\n \"content\": \"just shipped the wasm compiler [rust] [wasm]\",\n \"reply_to\": null,\n \"tags\": [\"rust\", \"wasm\"],\n \"media_id\": null,\n \"username\": \"alice\",\n \"display_name\": \"Alice\",\n \"created_at\": \"2026-03-22T14:00:00.000Z\"\n }\n}\n```\n\n**Example:**\n```bash\ncurl http://localhost:3006/api/posts/a3kf9x\n```\n\n### GET /api/posts/:id/thread\n\nGet a post and all its replies.\n\n**Auth:** none\n\n**Response:**\n```json\n{\n \"ok\": true,\n \"data\": {\n \"post\": {\n \"id\": \"a3kf9x\",\n \"content\": \"just shipped the wasm compiler [rust] [wasm]\",\n \"reply_to\": null,\n \"tags\": [\"rust\", \"wasm\"],\n \"username\": \"alice\",\n \"display_name\": \"Alice\",\n \"created_at\": \"2026-03-22T14:00:00.000Z\"\n },\n \"replies\": [\n {\n \"id\": \"b7xm2k\",\n \"content\": \"nice work!\",\n \"reply_to\": \"a3kf9x\",\n \"tags\": [],\n \"username\": \"bob\",\n \"display_name\": \"Bob\",\n \"created_at\": \"2026-03-22T14:05:00.000Z\"\n }\n ]\n }\n}\n```\n\n**Example:**\n```bash\ncurl http://localhost:3006/api/posts/a3kf9x/thread\n```\n\n### GET /api/posts/search\n\nSearch posts by content. Searches active posts by default, or archived posts with the `archive` flag.\n\n**Auth:** none\n\n**Params:**\n- `q` — search query (required)\n- `archive` — set to `true` to search archived posts instead\n\n**Response (active):**\n```json\n{\n \"ok\": true,\n \"data\": {\n \"posts\": [\n {\n \"id\": \"a3kf9x\",\n \"content\": \"just shipped the wasm compiler [rust] [wasm]\",\n \"tags\": [\"rust\", \"wasm\"],\n \"media_id\": null,\n \"username\": \"alice\",\n \"display_name\": \"Alice\",\n \"created_at\": \"2026-03-22T14:00:00.000Z\",\n \"archived\": false\n }\n ]\n }\n}\n```\n\n**Response (archive):**\n```json\n{\n \"ok\": true,\n \"data\": {\n \"posts\": [\n {\n \"id\": \"b7xm2k\",\n \"content\": \"old post about [rust]\",\n \"tags\": [\"rust\"],\n \"username\": \"alice\",\n \"display_name\": \"Alice\",\n \"created_at\": \"2025-12-01T08:00:00.000Z\",\n \"archived\": true\n }\n ]\n }\n}\n```\n\n**Examples:**\n```bash\n# Search active posts\ncurl \"http://localhost:3006/api/posts/search?q=rust\"\n\n# Search archived posts\ncurl \"http://localhost:3006/api/posts/search?q=rust&archive=true\"\n```\n\n---\n\n## Filter (Kill)\n\nThe `/kill` command maps to the filter API. The word \"kill\" never appears in the database or API.\n\n### POST /api/filter\n\nAdd a filter. Hides a user or post from your feed.\n\n**Auth:** required\n\n**Body:**\n```json\n{ \"target_type\": \"user\", \"target_id\": \"bob\" }\n```\n\n- `target_type` — `\"user\"` or `\"post\"`\n- `target_id` — username (for users) or post ID (for posts)\n\nFiltering a user also increments their hidden `filter_score`. Users filtered by enough people get suppressed from everyone's feed silently (threshold: ~5 active filters, with 7-day half-life decay).\n\n**Response:**\n```json\n{ \"ok\": true, \"data\": { \"message\": \"Filtered.\" } }\n```\n\n**Errors:**\n- `400` — missing fields, invalid type, can't filter yourself\n- `404` — user not found\n\n**Example:**\n```bash\ncurl -X POST http://localhost:3006/api/filter \\\n -H \"Authorization: Bearer YOUR_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"target_type\":\"user\",\"target_id\":\"spammer\"}'\n```\n\n### GET /api/filter\n\nGet your current filter list.\n\n**Auth:** required\n\n**Response:**\n```json\n{\n \"ok\": true,\n \"data\": {\n \"filters\": [\n { \"type\": \"user\", \"id\": \"uuid-of-filtered-user\" },\n { \"type\": \"post\", \"id\": \"b7xm2k\" }\n ]\n }\n}\n```\n\n**Example:**\n```bash\ncurl http://localhost:3006/api/filter \\\n -H \"Authorization: Bearer YOUR_TOKEN\"\n```\n\n---\n\n## Media\n\nSupported formats: PNG (max 5MB), MP3 (max 10MB), MP4 (max 25MB).\n\nPNG uploads are processed into multiple variants: original (downscaled to max 1MB), thumbnail (80px wide), large (800px wide), and ASCII art.\n\n### POST /api/media/upload\n\nUpload a file.\n\n**Auth:** required\n\n**Body:** multipart/form-data with `file` field\n\n**Response:**\n```json\n{\n \"ok\": true,\n \"data\": {\n \"media_id\": \"x7km2p\",\n \"type\": \"png\"\n }\n}\n```\n\n**Errors:**\n- `400` — no file, unsupported type, file too large\n\n**Example:**\n```bash\ncurl -X POST http://localhost:3006/api/media/upload \\\n -H \"Authorization: Bearer YOUR_TOKEN\" \\\n -F \"file=@screenshot.png\"\n```\n\n### GET /api/media/:id\n\nServe the original file.\n\n**Auth:** none\n\n**Response:** raw file with appropriate Content-Type header (`image/png`, `audio/mpeg`, `video/mp4`)\n\n**Example:**\n```bash\ncurl http://localhost:3006/api/media/x7km2p -o image.png\n```\n\n### GET /api/media/:id/thumb\n\nServe the thumbnail (PNG only, max 80px wide).\n\n**Auth:** none\n\n**Example:**\n```bash\ncurl http://localhost:3006/api/media/x7km2p/thumb -o thumb.png\n```\n\n### GET /api/media/:id/large\n\nServe the large version (PNG only, max 800px wide).\n\n**Auth:** none\n\n**Example:**\n```bash\ncurl http://localhost:3006/api/media/x7km2p/large -o large.png\n```\n\n### GET /api/media/:id/ascii\n\nGet the ASCII art representation (PNG only).\n\n**Auth:** none\n\n**Response:**\n```json\n{\n \"ok\": true,\n \"data\": {\n \"ascii\": \" @@@@ \\n @ @ \\n @ @ \\n @@@@ \\n\"\n }\n}\n```\n\n**Example:**\n```bash\ncurl http://localhost:3006/api/media/x7km2p/ascii\n```\n\n---\n\n## Avatar\n\n### POST /api/avatar\n\nUpload a profile picture. PNG only, max 5MB. Processes into thumb, large, and ASCII art versions. Sets as your avatar immediately.\n\n**Auth:** required\n\n**Body:** multipart/form-data with `file` field\n\n**Response:**\n```json\n{ \"ok\": true, \"data\": { \"avatar_id\": \"x7km2p\" } }\n```\n\n**Example:**\n```bash\ncurl -X POST http://localhost:3006/api/avatar \\\n -H \"Authorization: Bearer YOUR_TOKEN\" \\\n -F \"file=@photo.png\"\n```\n\n### GET /api/avatar/:username\n\nGet a user's avatar image (large version, 800px max).\n\n**Auth:** none\n\n**Response:** raw PNG with `Content-Type: image/png`\n\n**Example:**\n```bash\ncurl http://localhost:3006/api/avatar/alice -o avatar.png\n```\n\nReturns 404 if the user has no uploaded avatar.\n\n---\n\n## Bookmarks\n\nBookmarks are private. Nobody sees your bookmarks. No counts, no notifications. One concept for everything: users, tags, posts, docs.\n\n### POST /api/bookmarks\n\nAdd a bookmark.\n\n**Auth:** required\n\n**Body:**\n```json\n{ \"target_type\": \"user\", \"target_id\": \"alice\" }\n```\n\n- `target_type` — `\"user\"`, `\"tag\"`, `\"post\"`, or `\"doc\"`\n- `target_id` — username, tag name, post ID, or doc name\n\nBookmarking the same thing twice is a no-op, not an error.\n\n**Response:**\n```json\n{ \"ok\": true, \"data\": { \"message\": \"Bookmarked.\" } }\n```\n\n**Errors:**\n- `400` — missing fields, invalid type\n\n**Example:**\n```bash\n# Bookmark a user\ncurl -X POST http://localhost:3006/api/bookmarks \\\n -H \"Authorization: Bearer YOUR_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"target_type\":\"user\",\"target_id\":\"alice\"}'\n\n# Bookmark a tag\ncurl -X POST http://localhost:3006/api/bookmarks \\\n -H \"Authorization: Bearer YOUR_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"target_type\":\"tag\",\"target_id\":\"rust\"}'\n\n# Bookmark a post\ncurl -X POST http://localhost:3006/api/bookmarks \\\n -H \"Authorization: Bearer YOUR_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"target_type\":\"post\",\"target_id\":\"a3kf9x\"}'\n\n# Bookmark a doc\ncurl -X POST http://localhost:3006/api/bookmarks \\\n -H \"Authorization: Bearer YOUR_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"target_type\":\"doc\",\"target_id\":\"api\"}'\n```\n\n### DELETE /api/bookmarks\n\nRemove a bookmark.\n\n**Auth:** required\n\n**Body:**\n```json\n{ \"target_type\": \"user\", \"target_id\": \"alice\" }\n```\n\n**Response:**\n```json\n{ \"ok\": true, \"data\": { \"message\": \"Unbookmarked.\" } }\n```\n\n**Example:**\n```bash\ncurl -X DELETE http://localhost:3006/api/bookmarks \\\n -H \"Authorization: Bearer YOUR_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"target_type\":\"user\",\"target_id\":\"alice\"}'\n```\n\n### GET /api/bookmarks\n\nList your bookmarks. Optionally filter by type.\n\n**Auth:** required\n\n**Params:**\n- `type` — optional: `user`, `tag`, `post`, or `doc`\n\n**Response:**\n```json\n{\n \"ok\": true,\n \"data\": {\n \"bookmarks\": [\n { \"type\": \"user\", \"id\": \"alice\" },\n { \"type\": \"tag\", \"id\": \"rust\" },\n {\n \"type\": \"post\",\n \"id\": \"a3kf9x\",\n \"preview\": \"just shipped the wasm compiler...\",\n \"username\": \"alice\"\n },\n {\n \"type\": \"post\",\n \"id\": \"old123\",\n \"preview\": \"this was archived...\",\n \"archived\": true\n },\n {\n \"type\": \"post\",\n \"id\": \"gone99\",\n \"expired\": true\n },\n { \"type\": \"doc\", \"id\": \"api\" }\n ]\n }\n}\n```\n\nPost bookmarks are enriched with a content preview (60 chars), the author's username, and status flags (`archived`, `expired`) when applicable.\n\n**Examples:**\n```bash\n# All bookmarks\ncurl http://localhost:3006/api/bookmarks \\\n -H \"Authorization: Bearer YOUR_TOKEN\"\n\n# Only bookmarked tags\ncurl \"http://localhost:3006/api/bookmarks?type=tag\" \\\n -H \"Authorization: Bearer YOUR_TOKEN\"\n```\n\n---\n\n## Docs\n\n### GET /api/docs\n\nList all available documentation files.\n\n**Auth:** none\n\n**Response:**\n```json\n{\n \"ok\": true,\n \"data\": {\n \"docs\": [\n { \"name\": \"about\", \"path\": \"docs/about.md\" },\n { \"name\": \"api\", \"path\": \"docs/api.md\" },\n { \"name\": \"commands\", \"path\": \"docs/commands.md\" },\n { \"name\": \"changelog\", \"path\": \"docs/changelog.md\" }\n ]\n }\n}\n```\n\n**Example:**\n```bash\ncurl http://localhost:3006/api/docs\n```\n\n### GET /api/docs/:name\n\nGet the contents of a specific document. The `.md` extension is optional.\n\n**Auth:** none\n\n**Response:**\n```json\n{\n \"ok\": true,\n \"data\": {\n \"name\": \"api\",\n \"content\": \"# API Reference\\n\\n...\"\n }\n}\n```\n\n**Errors:**\n- `400` — path traversal attempt\n- `404` — document not found\n\n**Example:**\n```bash\ncurl http://localhost:3006/api/docs/api\n```\n\n---\n\n## Categories\n\n### GET /api/categories\n\nGet the category tree with tags. Used by `/tree -cat` in the client.\n\n**Auth:** none\n\n**Response:**\n```json\n{\n \"ok\": true,\n \"data\": {\n \"categories\": [\n {\n \"id\": \"coding\",\n \"name\": \"coding\",\n \"tags\": [\"rust\", \"python\", \"wasm\", \"js\", \"frontend\", \"backend\"]\n },\n {\n \"id\": \"creative\",\n \"name\": \"creative\",\n \"tags\": [\"music\", \"art\", \"writing\", \"gamedev\"]\n },\n {\n \"id\": \"meta\",\n \"name\": \"meta\",\n \"tags\": [\"motd\", \"bugs\", \"ideas\", \"feedback\"]\n },\n {\n \"id\": \"general\",\n \"name\": \"general\",\n \"tags\": [\"offtopic\", \"introductions\", \"showcase\"]\n }\n ]\n }\n}\n```\n\n**Example:**\n```bash\ncurl http://localhost:3006/api/categories\n```\n\n---\n\n## Commands\n\n### GET /api/commands\n\nGet the full command list grouped by category. Used by `/help` and `/menu` in the client.\n\n**Auth:** none\n\n**Response:**\n```json\n{\n \"ok\": true,\n \"data\": {\n \"categories\": [\n {\n \"name\": \"General\",\n \"commands\": [\n { \"command\": \"/help\", \"description\": \"Show all available commands\" },\n { \"command\": \"/menu\", \"description\": \"Toggle the command menu\" },\n { \"command\": \"/clear\", \"description\": \"Clear the terminal\" },\n { \"command\": \"/read [path]\", \"description\": \"Read a document\" },\n { \"command\": \"/tree -cat\", \"description\": \"Browse categories and tags\" },\n { \"command\": \"/link [target]\", \"description\": \"Navigate to user, tag, post, or doc\" }\n ]\n }\n ]\n }\n}\n```\n\n**Example:**\n```bash\ncurl http://localhost:3006/api/commands\n```\n\n---\n\n## Telegram Connect\n\n### POST /api/connect/telegram\n\nGenerate a Telegram deep link to connect your account.\n\n**Auth:** required\n\n**Response:**\n```json\n{\n \"ok\": true,\n \"data\": {\n \"link\": \"https://t.me/motdsocial_bot?start=alice_a8f3k2\",\n \"expires_in\": 600\n }\n}\n```\n\nIf already connected:\n```json\n{\n \"ok\": true,\n \"data\": {\n \"already_connected\": true,\n \"message\": \"Telegram already connected.\"\n }\n}\n```\n\n**Example:**\n```bash\ncurl -X POST http://localhost:3006/api/connect/telegram \\\n -H \"Authorization: Bearer YOUR_TOKEN\"\n```\n\n### DELETE /api/connect/telegram\n\nDisconnect your Telegram account.\n\n**Auth:** required\n\n**Response:**\n```json\n{ \"ok\": true, \"data\": { \"message\": \"Telegram disconnected.\" } }\n```\n\n**Example:**\n```bash\ncurl -X DELETE http://localhost:3006/api/connect/telegram \\\n -H \"Authorization: Bearer YOUR_TOKEN\"\n```\n\n### POST /api/connect/email\n\nSend a verification email to connect your email address.\n\n**Auth:** required\n\n**Body:**\n```json\n{ \"email\": \"you@gmail.com\" }\n```\n\n**Response:**\n```json\n{\n \"ok\": true,\n \"data\": {\n \"message\": \"Verification email sent to you@gmail.com\",\n \"tip\": \"Tip: add noreply@motd.social to your contacts so notifications don't go to spam.\"\n }\n}\n```\n\n**Example:**\n```bash\ncurl -X POST http://localhost:3006/api/connect/email \\\n -H \"Authorization: Bearer YOUR_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"email\":\"you@gmail.com\"}'\n```\n\n### GET /api/connect/email/verify\n\nVerify email address from link in verification email.\n\n**Auth:** none (link from email)\n\n**Params:**\n- `code` — verification code from the email link\n\nReturns an HTML confirmation page on success.\n\n### DELETE /api/connect/email\n\nDisconnect your email address.\n\n**Auth:** required\n\n**Response:**\n```json\n{ \"ok\": true, \"data\": { \"message\": \"Email disconnected.\" } }\n```\n\n**Example:**\n```bash\ncurl -X DELETE http://localhost:3006/api/connect/email \\\n -H \"Authorization: Bearer YOUR_TOKEN\"\n```\n\n### GET /api/connect/status\n\nCheck your Telegram and email connection status and notification settings.\n\n**Auth:** required\n\n**Response:**\n```json\n{\n \"ok\": true,\n \"data\": {\n \"telegram\": {\n \"connected\": true,\n \"username\": \"alice_tg\",\n \"notify\": true,\n \"notify_bookmarks\": true,\n \"notify_mentions\": true\n },\n \"email\": {\n \"connected\": true,\n \"address\": \"alice@gmail.com\",\n \"notify\": true,\n \"notify_bookmarks\": true,\n \"notify_mentions\": true\n }\n }\n}\n```\n\n**Example:**\n```bash\ncurl http://localhost:3006/api/connect/status \\\n -H \"Authorization: Bearer YOUR_TOKEN\"\n```\n\n---\n\n## Account\n\n### DELETE /api/account\n\nPermanently delete your account. This is irreversible. Deletes all posts, media, sessions, and user data.\n\n**Auth:** required\n\n**Body:**\n```json\n{ \"confirm_username\": \"alice\" }\n```\n\nThe `confirm_username` must match your actual username.\n\n**Response:**\n```json\n{ \"ok\": true, \"data\": { \"message\": \"Account terminated.\" } }\n```\n\n**Errors:**\n- `400` — username confirmation doesn't match\n\n**Example:**\n```bash\ncurl -X DELETE http://localhost:3006/api/account \\\n -H \"Authorization: Bearer YOUR_TOKEN\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"confirm_username\":\"alice\"}'\n```\n";
|
|
const passes = [{"t":0,"r":933,"c":2,"a":"hold","s":0.2733664383010083,"ps":9,"e":100.83693150640806,"pr":1.1},{"t":0,"r":1068,"c":36,"a":"extend","s":0.42489483628409375,"ps":9,"e":71.43441108319092,"pr":1.1},{"t":0,"r":167,"c":0,"a":"died","s":0,"ps":8,"e":100,"pr":1},{"t":0,"r":796,"c":15,"a":"extend","s":0.4112392266642943,"ps":9,"e":71.35793966932003,"pr":1.1},{"t":1,"r":933,"c":2,"a":"hold","s":0.21563229701224823,"ps":9,"e":101.21198988250605,"pr":1.1},{"t":1,"r":1068,"c":36,"a":"extend","s":0.42260577188165505,"ps":8,"e":51.53068008077091,"pr":1.05},{"t":1,"r":796,"c":15,"a":"extend","s":0.3853685519986065,"ps":9,"e":51.16362165971622,"pr":1.1},{"t":1,"r":1068,"c":35,"a":"hold","s":0.09141530358572171,"ps":5,"e":30.5960700357676,"pr":1.2000000000000002},{"t":1,"r":796,"c":14,"a":"hold","s":0.14998290719198637,"ps":5,"e":31.031837401530193,"pr":1.2000000000000002},{"t":2,"r":933,"c":2,"a":"retracted","s":0.21563229701224823,"ps":8,"e":101.73704825860403,"pr":1.05},{"t":2,"r":1068,"c":36,"a":"extend","s":0.42489483628409375,"ps":7,"e":37.71588713973056,"pr":1},{"t":2,"r":796,"c":15,"a":"extend","s":0.3853685519986065,"ps":8,"e":37.13259905299355,"pr":1.05},{"t":2,"r":1068,"c":35,"a":"hold","s":0.1437832401162882,"ps":5,"e":30.996335956697905,"pr":1.2000000000000002},{"t":2,"r":796,"c":14,"a":"hold","s":0.14407649092049987,"ps":5,"e":31.434449328894193,"pr":1.2000000000000002},{"t":3,"r":1068,"c":36,"a":"extend","s":0.401124774909063,"ps":7,"e":27.912419737302145,"pr":1},{"t":3,"r":796,"c":15,"a":"extend","s":0.4112392266642943,"ps":8,"e":27.45575900641553,"pr":1.05},{"t":3,"r":1068,"c":35,"a":"retracted","s":0.1437832401162882,"ps":4,"e":31.54660187762821,"pr":1.1500000000000001},{"t":3,"r":796,"c":14,"a":"retracted","s":0.14407649092049987,"ps":4,"e":31.98706125625819,"pr":1.1500000000000001},{"t":3,"r":1068,"c":37,"a":"hold","s":0.20861195234489618,"ps":5,"e":17.082847250072266,"pr":1.1},{"t":3,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":5,"e":13.111093770601155,"pr":1.1500000000000001},{"t":4,"r":1068,"c":36,"a":"extend","s":0.401124774909063,"ps":6,"e":21.154992555602252,"pr":0.95},{"t":4,"r":796,"c":15,"a":"extend","s":0.4112392266642943,"ps":7,"e":20.78697097381092,"pr":1},{"t":4,"r":1068,"c":37,"a":"hold","s":0.17255884564995277,"ps":4,"e":17.86331801527189,"pr":1.05},{"t":4,"r":796,"c":16,"a":"extend","s":0.45468046226452974,"ps":4,"e":11.303976228102174,"pr":1.1},{"t":5,"r":1068,"c":36,"a":"hold","s":0.3474974071802458,"ps":6,"e":23.03497181304422,"pr":0.95},{"t":5,"r":796,"c":15,"a":"hold","s":0.3724162490009937,"ps":6,"e":22.86630096581887,"pr":0.95},{"t":5,"r":1068,"c":37,"a":"retracted","s":0.20861195234489618,"ps":4,"e":18.932213634031058,"pr":1},{"t":5,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":9.989097414374612,"pr":1.05},{"t":5,"r":1068,"c":35,"a":"hold","s":0.22639904161314178,"ps":5,"e":10.127617713877529,"pr":1.05},{"t":5,"r":796,"c":14,"a":"hold","s":0.22423568743898642,"ps":5,"e":9.952587345430857,"pr":1.1},{"t":5,"r":796,"c":17,"a":"hold","s":0.2840584095293159,"ps":5,"e":6.367028516849745,"pr":1.2000000000000002},{"t":6,"r":1068,"c":36,"a":"hold","s":0.3474974071802458,"ps":5,"e":25.064951070486185,"pr":0.8999999999999999},{"t":6,"r":796,"c":15,"a":"hold","s":0.36986727091982174,"ps":5,"e":25.075239133177444,"pr":0.8999999999999999},{"t":6,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":9.06868224476532,"pr":1},{"t":6,"r":1068,"c":35,"a":"hold","s":0.24601360792873608,"ps":5,"e":11.345726577307417,"pr":1.05},{"t":6,"r":796,"c":14,"a":"hold","s":0.23511271538329356,"ps":5,"e":11.083489068497204,"pr":1.1},{"t":6,"r":796,"c":17,"a":"hold","s":0.34131935996170415,"ps":5,"e":8.347583396543378,"pr":1.2000000000000002},{"t":7,"r":1068,"c":36,"a":"retracted","s":0.3205297295326896,"ps":5,"e":26.8791889067477,"pr":0.8999999999999999},{"t":7,"r":796,"c":15,"a":"retracted","s":0.31748121747648533,"ps":5,"e":26.865088872989325,"pr":0.8999999999999999},{"t":7,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":8.424391626038815,"pr":0.95},{"t":7,"r":1068,"c":35,"a":"retracted","s":0.24601360792873608,"ps":4,"e":12.713835440737306,"pr":1},{"t":7,"r":796,"c":14,"a":"retracted","s":0.23511271538329356,"ps":4,"e":12.364390791563553,"pr":1.05},{"t":7,"r":796,"c":17,"a":"retracted","s":0.34131935996170415,"ps":4,"e":10.478138276237011,"pr":1.1500000000000001},{"t":8,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":7.973388192930263,"pr":0.8999999999999999},{"t":9,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":7.657685789754275,"pr":0.8499999999999999},{"t":9,"r":796,"c":17,"a":"hold","s":0.17925696299022936,"ps":5,"e":4.101222072320519,"pr":0.9999999999999999},{"t":10,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":7.436694107531085,"pr":0.7999999999999998},{"t":10,"r":796,"c":17,"a":"hold","s":0.3080088919082424,"ps":6,"e":5.665293207586458,"pr":1.0999999999999999},{"t":12,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":7.173714005685487,"pr":0.6999999999999997},{"t":12,"r":796,"c":18,"a":"hold","s":0.2386326750664236,"ps":5,"e":3.4636338073900754,"pr":1.2},{"t":14,"r":796,"c":17,"a":"extend","s":0.3080088919082424,"ps":4,"e":4.732319648895312,"pr":0.9999999999999998},{"t":14,"r":796,"c":18,"a":"extend","s":0.29697802577556737,"ps":4,"e":3.7369113710045374,"pr":1.15},{"t":16,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.981712233328017,"pr":0.4999999999999996},{"t":17,"r":796,"c":18,"a":"extend","s":0.2386326750664236,"ps":4,"e":3.2885517272691747,"pr":1.0499999999999998},{"t":18,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.950772887325984,"pr":0.39999999999999963},{"t":19,"r":796,"c":18,"a":"hold","s":0.2386326750664236,"ps":4,"e":4.527390589991784,"pr":0.9499999999999997},{"t":19,"r":796,"c":15,"a":"retracted","s":0.16890664741625835,"ps":4,"e":5.54148825890609,"pr":0.4999999999999995},{"t":23,"r":796,"c":15,"a":"retracted","s":0.30386346772838707,"ps":4,"e":7.722172775054443,"pr":0.35000000000000003},{"t":23,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":5,"e":4.2598562053376865,"pr":0.4},{"t":25,"r":796,"c":15,"a":"hold","s":0.17488665684505492,"ps":5,"e":3.616755006628485,"pr":0.4},{"t":26,"r":796,"c":18,"a":"retracted","s":0.12627012599603232,"ps":4,"e":3.1186182178712225,"pr":0.45},{"t":28,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.032726558897135,"pr":0.3},{"t":30,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921458295643981,"pr":0.3},{"t":30,"r":796,"c":18,"a":"retracted","s":0.2714565123814484,"ps":4,"e":7.938741452785363,"pr":0.35000000000000003},{"t":35,"r":796,"c":15,"a":"extend","s":0.33591850243187554,"ps":5,"e":3.7773729737812123,"pr":0.45},{"t":36,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921095255295311,"pr":0.3},{"t":36,"r":796,"c":19,"a":"extend","s":0.4914299279521771,"ps":5,"e":4.424819901520034,"pr":0.5},{"t":37,"r":796,"c":19,"a":"extend","s":0.4914299279521771,"ps":4,"e":5.429381527596216,"pr":0.45},{"t":38,"r":796,"c":18,"a":"extend","s":0.2748095834448852,"ps":5,"e":3.1907876643099167,"pr":0.5},{"t":38,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":6.064102030441069,"pr":0.45},{"t":39,"r":796,"c":18,"a":"extend","s":0.381013438953633,"ps":5,"e":3.842226623157286,"pr":0.5},{"t":41,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921054984654626,"pr":0.3},{"t":42,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921052543961329,"pr":0.3},{"t":42,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.189524954035277,"pr":0.3},{"t":42,"r":796,"c":14,"a":"extend","s":0.32455404608562116,"ps":5,"e":2.5187241068109922,"pr":0.4},{"t":43,"r":796,"c":20,"a":"extend","s":0.355896221084044,"ps":4,"e":4.282451379356778,"pr":0.45},{"t":43,"r":796,"c":14,"a":"hold","s":0.331077316287882,"ps":5,"e":4.417342637114048,"pr":0.4},{"t":44,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921049639536307,"pr":0.3},{"t":44,"r":796,"c":15,"a":"retracted","s":0.2998368554971367,"ps":4,"e":9.483489361036328,"pr":0.3},{"t":44,"r":796,"c":21,"a":"extend","s":0.3864614696457253,"ps":4,"e":4.729667677596757,"pr":0.44999999999999996},{"t":45,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.619967327053308,"pr":0.3},{"t":45,"r":796,"c":21,"a":"extend","s":0.3864614696457253,"ps":4,"e":5.054951604333792,"pr":0.39999999999999997},{"t":46,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921048216368046,"pr":0.3},{"t":46,"r":796,"c":20,"a":"retracted","s":0.355896221084044,"ps":4,"e":11.023960685373835,"pr":0.30000000000000004},{"t":47,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.485352259716891,"pr":0.3},{"t":48,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921047519015599,"pr":0.3},{"t":48,"r":796,"c":21,"a":"retracted","s":0.3864614696457253,"ps":4,"e":12.5300268758312,"pr":0.3},{"t":48,"r":796,"c":18,"a":"extend","s":0.39937170035926006,"ps":4,"e":6.676347848205673,"pr":0.35000000000000003},{"t":48,"r":796,"c":15,"a":"hold","s":0.3409102180752423,"ps":4,"e":6.785324774958927,"pr":0.35000000000000003},{"t":49,"r":796,"c":15,"a":"retracted","s":0.3052349386320497,"ps":4,"e":8.627204284015324,"pr":0.30000000000000004},{"t":52,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.535071954982799,"pr":0.3},{"t":52,"r":796,"c":15,"a":"extend","s":0.3662712178372755,"ps":5,"e":4.434284999544519,"pr":0.4},{"t":53,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046961618094,"pr":0.3},{"t":53,"r":796,"c":20,"a":"hold","s":0.25923599861119545,"ps":4,"e":6.016819887979855,"pr":0.35000000000000003},{"t":54,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046927835757,"pr":0.3},{"t":55,"r":796,"c":15,"a":"extend","s":0.24229500472534027,"ps":4,"e":5.188286876622745,"pr":0.30000000000000004},{"t":59,"r":796,"c":18,"a":"extend","s":0.3819163703100806,"ps":4,"e":5.062674157574315,"pr":0.4},{"t":60,"r":796,"c":15,"a":"extend","s":0.24229500472534027,"ps":4,"e":3.4699797299354938,"pr":0.3},{"t":60,"r":796,"c":14,"a":"hold","s":0.12789747972039658,"ps":4,"e":3.6382091425609224,"pr":0.30000000000000004},{"t":61,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.544711201960666,"pr":0.3},{"t":61,"r":796,"c":20,"a":"extend","s":0.25818253377462197,"ps":4,"e":3.5691429641379284,"pr":0.3},{"t":61,"r":796,"c":14,"a":"retracted","s":0.12789747972039658,"ps":4,"e":4.061388980324095,"pr":0.3},{"t":63,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046852191198,"pr":0.3},{"t":63,"r":796,"c":18,"a":"extend","s":0.37896981888350173,"ps":4,"e":5.29822986441959,"pr":0.45},{"t":64,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.544977507133451,"pr":0.3},{"t":64,"r":796,"c":18,"a":"extend","s":0.37896981888350173,"ps":4,"e":5.410991890841323,"pr":0.4},{"t":65,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545019216117133,"pr":0.3},{"t":67,"r":796,"c":21,"a":"retracted","s":0.34010006925085406,"ps":4,"e":11.234475016939975,"pr":0.3},{"t":69,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.621336351319444,"pr":0.3},{"t":70,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.621336430018329,"pr":0.3},{"t":70,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545100180344988,"pr":0.3},{"t":71,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849193678,"pr":0.3},{"t":71,"r":796,"c":15,"a":"hold","s":0.16085774703965838,"ps":5,"e":4.497156516444527,"pr":0.4},{"t":72,"r":796,"c":15,"a":"retracted","s":0.16085774703965838,"ps":4,"e":5.184018492761794,"pr":0.35000000000000003},{"t":72,"r":796,"c":20,"a":"hold","s":0.20603052364929725,"ps":4,"e":5.341694529449152,"pr":0.35000000000000003},{"t":73,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849100158,"pr":0.3},{"t":73,"r":796,"c":20,"a":"retracted","s":0.22622949715622231,"ps":4,"e":6.55153050669893,"pr":0.30000000000000004},{"t":74,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.9210468490732024,"pr":0.3},{"t":74,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.621336569559318,"pr":0.3},{"t":74,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545112609827208,"pr":0.3},{"t":74,"r":796,"c":15,"a":"hold","s":0.17558752314536605,"ps":5,"e":3.6208631204915678,"pr":0.4},{"t":76,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545114612725652,"pr":0.3},{"t":76,"r":796,"c":15,"a":"retracted","s":0.17558752314536605,"ps":4,"e":5.367370193306092,"pr":0.30000000000000004},{"t":76,"r":796,"c":20,"a":"extend","s":0.32026100630235244,"ps":5,"e":3.5319957716940027,"pr":0.4},{"t":77,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.621336598526277,"pr":0.3},{"t":77,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545115190031674,"pr":0.3},{"t":78,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.080688617594802,"pr":0.3},{"t":79,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.54511587702584,"pr":0.3},{"t":80,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366084619425,"pr":0.3},{"t":82,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366111073695,"pr":0.3},{"t":83,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.256902373237386,"pr":0.3},{"t":83,"r":796,"c":20,"a":"extend","s":0.32026100630235244,"ps":4,"e":4.500398379207662,"pr":0.3},{"t":84,"r":796,"c":20,"a":"extend","s":0.32026100630235244,"ps":4,"e":4.523740500738537,"pr":0.3},{"t":85,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.621336612777259,"pr":0.3},{"t":85,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.27505808996179,"pr":0.3},{"t":86,"r":796,"c":20,"a":"hold","s":0.32026100630235244,"ps":4,"e":8.447916601576175,"pr":0.3},{"t":87,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010915,"pr":0.3},{"t":87,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116499028303,"pr":0.3},{"t":87,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.039268841599472,"pr":0.3},{"t":89,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.16226258715984,"pr":0.3},{"t":91,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.22252952248442,"pr":0.3},{"t":92,"r":796,"c":15,"a":"hold","s":0.2531268269659234,"ps":5,"e":4.24117755101758,"pr":0.4},{"t":93,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010376,"pr":0.3},{"t":93,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366135988005,"pr":0.3},{"t":93,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116532602425,"pr":0.3},{"t":94,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116533945415,"pr":0.3},{"t":94,"r":796,"c":22,"a":"hold","s":0.1036805520916564,"ps":5,"e":2.7588988399304504,"pr":0.4},{"t":95,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.5451165348855085,"pr":0.3},{"t":95,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292009075658722,"pr":0.3},{"t":96,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116535543574,"pr":0.3},{"t":97,"r":796,"c":20,"a":"extend","s":0.30760508694498623,"ps":4,"e":4.6458838332428325,"pr":0.30000000000000004},{"t":98,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.621336613640611,"pr":0.3},{"t":98,"r":796,"c":20,"a":"extend","s":0.30760508694498623,"ps":4,"e":4.5547071701619055,"pr":0.3},{"t":99,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010314,"pr":0.3},{"t":99,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.29238351040811,"pr":0.3},{"t":99,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.277095025529158,"pr":0.3},{"t":100,"r":796,"c":15,"a":"extend","s":0.3043683448220957,"ps":4,"e":4.062224705067637,"pr":0.30000000000000004},{"t":101,"r":796,"c":15,"a":"extend","s":0.3043683448220957,"ps":4,"e":4.128020024551081,"pr":0.3},{"t":102,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.621336613647028,"pr":0.3},{"t":102,"r":796,"c":14,"a":"retracted","s":0.16623821631428096,"ps":4,"e":5.076590146667536,"pr":0.35000000000000003},{"t":103,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":103,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116536952605,"pr":0.3},{"t":103,"r":796,"c":20,"a":"extend","s":0.30760508694498623,"ps":4,"e":4.377717767089101,"pr":0.3},{"t":105,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":105,"r":796,"c":20,"a":"hold","s":0.30760508694498623,"ps":4,"e":6.227831619414182,"pr":0.3},{"t":106,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537035685,"pr":0.3},{"t":107,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.621336613648715,"pr":0.3},{"t":108,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.621336613648817,"pr":0.3},{"t":110,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.621336613648939,"pr":0.3},{"t":110,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292499478471438,"pr":0.3},{"t":110,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280367044958102,"pr":0.3},{"t":110,"r":796,"c":15,"a":"hold","s":0.20482036102949258,"ps":5,"e":3.854725823526072,"pr":0.4},{"t":111,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":111,"r":796,"c":22,"a":"retracted","s":0.18644652843850368,"ps":4,"e":4.932147312329371,"pr":0.35000000000000003},{"t":112,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292500671526476,"pr":0.3},{"t":113,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.621336613649016,"pr":0.3},{"t":113,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280410409338074,"pr":0.3},{"t":113,"r":796,"c":22,"a":"hold","s":0.11865178325738894,"ps":5,"e":2.890814568975784,"pr":0.4},{"t":114,"r":796,"c":20,"a":"hold","s":0.31606286757516755,"ps":5,"e":5.0121243136336915,"pr":0.4},{"t":115,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.621336613649037,"pr":0.3},{"t":115,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501424624922,"pr":0.3},{"t":117,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501625141682,"pr":0.3},{"t":118,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280429243603097,"pr":0.3},{"t":118,"r":796,"c":22,"a":"hold","s":0.06991706416305672,"ps":5,"e":2.5009483474037935,"pr":0.4},{"t":119,"r":796,"c":22,"a":"hold","s":0.09483180831419828,"ps":5,"e":2.50960281391738,"pr":0.4},{"t":120,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.621336613649055,"pr":0.3},{"t":121,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537078853,"pr":0.3},{"t":121,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280431743473307,"pr":0.3},{"t":121,"r":796,"c":20,"a":"extend","s":0.31606286757516755,"ps":4,"e":4.540707819248007,"pr":0.3},{"t":122,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280432135005491,"pr":0.3},{"t":123,"r":796,"c":15,"a":"extend","s":0.2579949757375555,"ps":5,"e":2.9960859188334026,"pr":0.4},{"t":124,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.5451165370789886,"pr":0.3},{"t":124,"r":796,"c":15,"a":"hold","s":0.23008343505612722,"ps":4,"e":4.236753399282421,"pr":0.35000000000000003},{"t":125,"r":796,"c":20,"a":"extend","s":0.31606286757516755,"ps":4,"e":4.509652511381682,"pr":0.3},{"t":128,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":128,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":128,"r":796,"c":13,"a":"retracted","s":0.23931603067157456,"ps":4,"e":4.923860182303757,"pr":0.5},{"t":129,"r":796,"c":20,"a":"retracted","s":0.31606286757516755,"ps":4,"e":10.292217638192136,"pr":0.3},{"t":130,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":132,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.28043302277435,"pr":0.3},{"t":133,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433030516221,"pr":0.3},{"t":134,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817346869,"pr":0.3},{"t":134,"r":796,"c":20,"a":"hold","s":0.258110473998867,"ps":5,"e":4.548505165024817,"pr":0.4},{"t":135,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.29250181748132,"pr":0.3},{"t":135,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433039729047,"pr":0.3},{"t":136,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":136,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":136,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433042384509,"pr":0.3},{"t":138,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433045544508,"pr":0.3},{"t":139,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":139,"r":796,"c":20,"a":"extend","s":0.35284158112862135,"ps":4,"e":4.1010895318057985,"pr":0.35000000000000003},{"t":140,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":140,"r":796,"c":15,"a":"hold","s":0.11133497071312842,"ps":5,"e":3.1068427009951587,"pr":0.4},{"t":142,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.2804330478516235,"pr":0.3},{"t":143,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":143,"r":796,"c":22,"a":"hold","s":0.16150675012022453,"ps":4,"e":3.938435925955042,"pr":0.35000000000000003},{"t":144,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":144,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817782378,"pr":0.3},{"t":144,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.2804330482233945,"pr":0.3},{"t":144,"r":796,"c":22,"a":"retracted","s":0.16309597022026937,"ps":4,"e":4.643203687717197,"pr":0.30000000000000004},{"t":145,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817786176,"pr":0.3},{"t":146,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":147,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817790697,"pr":0.3},{"t":148,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817792,"pr":0.3},{"t":148,"r":796,"c":20,"a":"hold","s":0.33882709303543795,"ps":4,"e":6.987905469197327,"pr":0.3},{"t":148,"r":796,"c":22,"a":"hold","s":0.09891481338664877,"ps":4,"e":2.9198004586998536,"pr":0.35000000000000003},{"t":149,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":149,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.2804330485205515,"pr":0.3},{"t":149,"r":796,"c":22,"a":"retracted","s":0.09835847350053496,"ps":4,"e":3.1066682467041336,"pr":0.30000000000000004},{"t":150,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048538562,"pr":0.3},{"t":150,"r":796,"c":20,"a":"retracted","s":0.33882709303543795,"ps":4,"e":11.209138957764335,"pr":0.3},{"t":151,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.28043304855117,"pr":0.3},{"t":152,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":152,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048559994,"pr":0.3},{"t":152,"r":796,"c":22,"a":"hold","s":0.20782158371230472,"ps":5,"e":3.604186833363225,"pr":0.4},{"t":153,"r":796,"c":22,"a":"hold","s":0.22245026527654926,"ps":5,"e":4.6337889555756195,"pr":0.4},{"t":154,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":154,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817794681,"pr":0.3},{"t":155,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":155,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":155,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":155,"r":796,"c":15,"a":"hold","s":0.25467912932799086,"ps":5,"e":4.253595969914058,"pr":0.4},{"t":156,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":156,"r":796,"c":15,"a":"hold","s":0.3034115114133746,"ps":4,"e":6.080888061221055,"pr":0.35000000000000003},{"t":156,"r":796,"c":20,"a":"extend","s":0.38643790619469054,"ps":4,"e":4.522886149313158,"pr":0.35000000000000003},{"t":158,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":159,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":159,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.28043304857889,"pr":0.3},{"t":159,"r":796,"c":20,"a":"extend","s":0.39843352087660444,"ps":4,"e":5.517938649245089,"pr":0.3},{"t":159,"r":796,"c":22,"a":"retracted","s":0.20471488606056298,"ps":4,"e":5.132346513501707,"pr":0.35000000000000003},{"t":160,"r":796,"c":20,"a":"extend","s":0.39843352087660444,"ps":4,"e":5.6737847713805465,"pr":0.3},{"t":161,"r":796,"c":22,"a":"hold","s":0.1639055442395536,"ps":5,"e":3.252858517593314,"pr":0.4},{"t":162,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817795019,"pr":0.3},{"t":163,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580178,"pr":0.3},{"t":163,"r":796,"c":20,"a":"extend","s":0.39843352087660444,"ps":4,"e":5.912696876614204,"pr":0.3},{"t":163,"r":796,"c":15,"a":"hold","s":0.13030247365083003,"ps":5,"e":3.2585827244967716,"pr":0.4},{"t":164,"r":796,"c":15,"a":"hold","s":0.14034293267489953,"ps":4,"e":3.781326185895968,"pr":0.35000000000000003},{"t":165,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":165,"r":796,"c":22,"a":"hold","s":0.1639055442395536,"ps":4,"e":4.8099900583357105,"pr":0.30000000000000004},{"t":165,"r":796,"c":15,"a":"retracted","s":0.13030247365083003,"ps":4,"e":4.2237459751026085,"pr":0.30000000000000004},{"t":165,"r":796,"c":23,"a":"hold","s":0.17911962147740582,"ps":4,"e":3.4152177997135995,"pr":0.45},{"t":166,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":166,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817795035,"pr":0.3},{"t":166,"r":796,"c":24,"a":"hold","s":0.16257273448031814,"ps":4,"e":2.6122170697855225,"pr":0.5499999999999999},{"t":167,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":167,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":167,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817795037,"pr":0.3},{"t":167,"r":796,"c":20,"a":"extend","s":0.39843352087660444,"ps":4,"e":6.007478327005528,"pr":0.3},{"t":168,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580517,"pr":0.3},{"t":169,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":170,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":170,"r":796,"c":22,"a":"retracted","s":0.18140651681552997,"ps":4,"e":5.149942209768563,"pr":0.30000000000000004},{"t":172,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":172,"r":796,"c":20,"a":"extend","s":0.39843352087660444,"ps":4,"e":6.032392464180124,"pr":0.3},{"t":173,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580575,"pr":0.3},{"t":174,"r":796,"c":22,"a":"retracted","s":0.12048085471460669,"ps":4,"e":3.680547229584322,"pr":0.30000000000000004},{"t":175,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":175,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":176,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":177,"r":796,"c":22,"a":"hold","s":0.1438412480675184,"ps":6,"e":3.066520525923338,"pr":0.5},{"t":178,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":178,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817795037,"pr":0.3},{"t":178,"r":796,"c":20,"a":"extend","s":0.39843352087660444,"ps":4,"e":6.471455558044906,"pr":0.3},{"t":179,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":179,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":179,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580584,"pr":0.3},{"t":180,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":180,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817795037,"pr":0.3},{"t":180,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580584,"pr":0.3},{"t":181,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817795037,"pr":0.3},{"t":181,"r":796,"c":20,"a":"extend","s":0.39843352087660444,"ps":4,"e":6.18629795644008,"pr":0.3},{"t":182,"r":796,"c":13,"a":"hold","s":0.1526478886206385,"ps":5,"e":2.1646762062059075,"pr":0.4},{"t":183,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":184,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":184,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":184,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580584,"pr":0.3},{"t":184,"r":796,"c":15,"a":"extend","s":0.3411897009569614,"ps":4,"e":5.132950151619526,"pr":0.3},{"t":185,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":185,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817795037,"pr":0.3},{"t":185,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580584,"pr":0.3},{"t":187,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":187,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817795037,"pr":0.3},{"t":187,"r":796,"c":13,"a":"hold","s":0.23954655626481766,"ps":5,"e":3.602546577964284,"pr":0.4},{"t":188,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580584,"pr":0.3},{"t":189,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":189,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817795037,"pr":0.3},{"t":190,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":190,"r":796,"c":15,"a":"hold","s":0.3411897009569614,"ps":4,"e":7.125968234091382,"pr":0.3},{"t":191,"r":796,"c":22,"a":"retracted","s":0.230158631311926,"ps":4,"e":5.842377702693577,"pr":0.35000000000000003},{"t":192,"r":796,"c":15,"a":"retracted","s":0.3411897009569614,"ps":4,"e":11.385003449402765,"pr":0.3},{"t":193,"r":796,"c":20,"a":"extend","s":0.39843352087660444,"ps":4,"e":6.039486306368833,"pr":0.3},{"t":194,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":194,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817795037,"pr":0.3},{"t":194,"r":796,"c":22,"a":"hold","s":0.18763106211460961,"ps":5,"e":3.4426626605942703,"pr":0.4},{"t":195,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817795037,"pr":0.3},{"t":195,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580584,"pr":0.3},{"t":195,"r":796,"c":20,"a":"extend","s":0.39843352087660444,"ps":4,"e":7.850095848276151,"pr":0.3},{"t":196,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":197,"r":796,"c":20,"a":"extend","s":0.39843352087660444,"ps":4,"e":6.9256340844005875,"pr":0.3},{"t":198,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":198,"r":796,"c":22,"a":"hold","s":0.09068417023817117,"ps":5,"e":2.6670875255827626,"pr":0.4},{"t":199,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":199,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580584,"pr":0.3},{"t":200,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":200,"r":796,"c":20,"a":"extend","s":0.39843352087660444,"ps":4,"e":6.342081190980077,"pr":0.3},{"t":200,"r":796,"c":15,"a":"extend","s":0.29881504653401086,"ps":4,"e":8.218080071390947,"pr":0.3},{"t":200,"r":796,"c":22,"a":"retracted","s":0.10309913944810827,"ps":4,"e":2.966673756752495,"pr":0.35000000000000003},{"t":201,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":201,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817795037,"pr":0.3},{"t":202,"r":796,"c":20,"a":"extend","s":0.39843352087660444,"ps":4,"e":6.186706902325512,"pr":0.3},{"t":204,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":204,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580584,"pr":0.3},{"t":205,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":205,"r":796,"c":15,"a":"extend","s":0.29881504653401086,"ps":4,"e":4.856917148642082,"pr":0.3},{"t":206,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817795037,"pr":0.3},{"t":208,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":208,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580584,"pr":0.3},{"t":209,"r":796,"c":14,"a":"extend","s":0.35325130773288393,"ps":4,"e":4.414616595547794,"pr":0.3},{"t":210,"r":796,"c":14,"a":"extend","s":0.35325130773288393,"ps":4,"e":4.648438940187606,"pr":0.3},{"t":211,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":211,"r":796,"c":15,"a":"hold","s":0.29881504653401086,"ps":4,"e":7.921958224008773,"pr":0.3},{"t":212,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":212,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580584,"pr":0.3},{"t":212,"r":796,"c":20,"a":"extend","s":0.39843352087660444,"ps":4,"e":6.041642546859202,"pr":0.3},{"t":212,"r":796,"c":14,"a":"hold","s":0.35325130773288393,"ps":4,"e":7.038125043298546,"pr":0.3},{"t":212,"r":796,"c":13,"a":"hold","s":0.08809579085230371,"ps":4,"e":1.834654455617192,"pr":0.35000000000000003},{"t":213,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":213,"r":796,"c":13,"a":"retracted","s":0.060962501446937815,"ps":4,"e":1.7223544671926945,"pr":0.30000000000000004},{"t":214,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":215,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580584,"pr":0.3},{"t":216,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":216,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":216,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580584,"pr":0.3},{"t":217,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":217,"r":796,"c":22,"a":"retracted","s":0.17024027532334046,"ps":4,"e":4.39589162189768,"pr":0.35000000000000003},{"t":218,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580584,"pr":0.3},{"t":219,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":220,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":220,"r":796,"c":22,"a":"hold","s":0.1356484622335979,"ps":4,"e":3.5052234256655685,"pr":0.35000000000000003},{"t":221,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":223,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":223,"r":796,"c":20,"a":"extend","s":0.39843352087660444,"ps":4,"e":6.186707228632701,"pr":0.3},{"t":224,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":224,"r":796,"c":22,"a":"extend","s":0.21516897855912556,"ps":6,"e":2.4755871930705724,"pr":0.5},{"t":225,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":225,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":226,"r":796,"c":15,"a":"extend","s":0.20793251842306376,"ps":4,"e":3.4051859207972783,"pr":0.35000000000000003},{"t":226,"r":796,"c":23,"a":"extend","s":0.3443076071411979,"ps":5,"e":2.072162552683101,"pr":0.6},{"t":227,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":227,"r":796,"c":24,"a":"extend","s":0.25396905670133996,"ps":5,"e":1.518875483332434,"pr":0.7},{"t":228,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":228,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817795037,"pr":0.3},{"t":229,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":229,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580584,"pr":0.3},{"t":230,"r":796,"c":20,"a":"extend","s":0.39843352087660444,"ps":4,"e":6.049719696926808,"pr":0.3},{"t":230,"r":796,"c":23,"a":"extend","s":0.3443076071411979,"ps":4,"e":3.9924547456913944,"pr":0.49999999999999994},{"t":230,"r":796,"c":24,"a":"hold","s":0.25396905670133996,"ps":4,"e":4.822266973605775,"pr":0.6499999999999999},{"t":231,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":232,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":232,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":233,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817795037,"pr":0.3},{"t":233,"r":796,"c":15,"a":"hold","s":0.23262363032045116,"ps":4,"e":5.677777908039797,"pr":0.35000000000000003},{"t":234,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":235,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580584,"pr":0.3},{"t":235,"r":796,"c":20,"a":"extend","s":0.39843352087660444,"ps":4,"e":6.039491971222794,"pr":0.3},{"t":236,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":237,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580584,"pr":0.3},{"t":239,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580584,"pr":0.3},{"t":239,"r":796,"c":20,"a":"extend","s":0.39843352087660444,"ps":4,"e":6.9256360274454964,"pr":0.3},{"t":240,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817795037,"pr":0.3},{"t":240,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580584,"pr":0.3},{"t":241,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":241,"r":796,"c":15,"a":"extend","s":0.34275672668548623,"ps":4,"e":4.682298322349703,"pr":0.35000000000000003},{"t":242,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817795037,"pr":0.3},{"t":243,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580584,"pr":0.3},{"t":243,"r":796,"c":14,"a":"extend","s":0.49215880338381474,"ps":6,"e":4.480456034268723,"pr":0.55},{"t":245,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817795037,"pr":0.3},{"t":246,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":246,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580584,"pr":0.3},{"t":246,"r":796,"c":15,"a":"extend","s":0.2859271545948241,"ps":4,"e":4.062517596515991,"pr":0.3},{"t":247,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":248,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":248,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580584,"pr":0.3},{"t":249,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":249,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":249,"r":796,"c":20,"a":"extend","s":0.39843352087660444,"ps":4,"e":6.062515465720364,"pr":0.3},{"t":249,"r":796,"c":22,"a":"hold","s":0.16121611253246212,"ps":5,"e":3.23134306393709,"pr":0.4},{"t":250,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":250,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":250,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580584,"pr":0.3},{"t":252,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":253,"r":796,"c":15,"a":"retracted","s":0.2859271545948241,"ps":4,"e":9.029621687695927,"pr":0.3},{"t":255,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":255,"r":796,"c":22,"a":"retracted","s":0.09862081493038406,"ps":4,"e":3.1283704821786342,"pr":0.35000000000000003},{"t":256,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":257,"r":796,"c":20,"a":"hold","s":0.39843352087660444,"ps":4,"e":11.215313840193403,"pr":0.3},{"t":258,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817795037,"pr":0.3},{"t":258,"r":796,"c":20,"a":"extend","s":0.39843352087660444,"ps":4,"e":9.661947405044366,"pr":0.3},{"t":259,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":259,"r":796,"c":20,"a":"extend","s":0.39843352087660444,"ps":4,"e":8.57459090044004,"pr":0.3},{"t":260,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":261,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":261,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817795037,"pr":0.3},{"t":262,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":262,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":262,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817795037,"pr":0.3},{"t":262,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580584,"pr":0.3},{"t":262,"r":796,"c":15,"a":"extend","s":0.2942192078552943,"ps":5,"e":3.1989416186927397,"pr":0.4},{"t":265,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580584,"pr":0.3},{"t":265,"r":796,"c":20,"a":"extend","s":0.39843352087660444,"ps":4,"e":6.335920668987067,"pr":0.3},{"t":266,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":266,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817795037,"pr":0.3},{"t":267,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":267,"r":796,"c":14,"a":"extend","s":0.3215726124167962,"ps":4,"e":3.934094466752338,"pr":0.4},{"t":267,"r":796,"c":22,"a":"retracted","s":0.0879787209162004,"ps":4,"e":2.4314006611945547,"pr":0.35000000000000003},{"t":267,"r":796,"c":13,"a":"hold","s":0.10619003015782222,"ps":5,"e":1.6627576926207082,"pr":0.55},{"t":268,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":269,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":269,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817795037,"pr":0.3},{"t":269,"r":796,"c":14,"a":"extend","s":0.3215726124167962,"ps":4,"e":4.275077558916545,"pr":0.30000000000000004},{"t":269,"r":796,"c":13,"a":"retracted","s":0.10619003015782222,"ps":4,"e":2.2400965603112573,"pr":0.45},{"t":270,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580584,"pr":0.3},{"t":270,"r":796,"c":14,"a":"extend","s":0.3215726124167962,"ps":4,"e":4.37336092077564,"pr":0.3},{"t":271,"r":796,"c":14,"a":"extend","s":0.3215726124167962,"ps":4,"e":4.442159274077006,"pr":0.3},{"t":272,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":273,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":273,"r":796,"c":15,"a":"hold","s":0.2942192078552943,"ps":4,"e":5.844837770746745,"pr":0.3},{"t":273,"r":796,"c":14,"a":"hold","s":0.3215726124167962,"ps":4,"e":6.462899020722332,"pr":0.3},{"t":274,"r":796,"c":15,"a":"hold","s":0.2942192078552943,"ps":4,"e":7.5985914335891,"pr":0.3},{"t":274,"r":796,"c":14,"a":"hold","s":0.3215726124167962,"ps":4,"e":8.4354799200567,"pr":0.3},{"t":275,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":275,"r":796,"c":22,"a":"hold","s":0.11165716413659928,"ps":5,"e":2.8348714767701875,"pr":0.4},{"t":278,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":279,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":279,"r":796,"c":20,"a":"extend","s":0.39843352087660444,"ps":4,"e":9.664012711122956,"pr":0.3},{"t":280,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580584,"pr":0.3},{"t":280,"r":796,"c":22,"a":"hold","s":0.1766297629258272,"ps":5,"e":3.5136221541669306,"pr":0.4},{"t":281,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817795037,"pr":0.3},{"t":282,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":282,"r":796,"c":20,"a":"extend","s":0.39843352087660444,"ps":4,"e":7.281345059945848,"pr":0.3},{"t":283,"r":796,"c":15,"a":"retracted","s":0.2626394916076488,"ps":4,"e":6.909649477060614,"pr":0.35000000000000003},{"t":284,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":285,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":286,"r":796,"c":20,"a":"extend","s":0.39843352087660444,"ps":4,"e":6.336090755823456,"pr":0.3},{"t":289,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":290,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817795037,"pr":0.3},{"t":290,"r":796,"c":20,"a":"extend","s":0.39843352087660444,"ps":4,"e":6.109135197403669,"pr":0.3},{"t":291,"r":796,"c":20,"a":"extend","s":0.39843352087660444,"ps":4,"e":6.087622355091552,"pr":0.3},{"t":292,"r":796,"c":16,"a":"extend","s":0.4457703669112664,"ps":4,"e":6.921046849010306,"pr":0.3},{"t":293,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817795037,"pr":0.3},{"t":293,"r":796,"c":14,"a":"extend","s":0.30538869747023323,"ps":4,"e":4.179186479432814,"pr":0.4},{"t":294,"r":796,"c":17,"a":"extend","s":0.48328589001691385,"ps":4,"e":7.6213366136490555,"pr":0.3},{"t":294,"r":796,"c":13,"a":"hold","s":0.1334127344490935,"ps":5,"e":2.1083817953496684,"pr":0.5},{"t":295,"r":796,"c":18,"a":"extend","s":0.5192411688104487,"ps":4,"e":8.292501817795037,"pr":0.3},{"t":295,"r":796,"c":21,"a":"extend","s":0.4114517704596743,"ps":4,"e":6.280433048580584,"pr":0.3},{"t":295,"r":796,"c":20,"a":"extend","s":0.39843352087660444,"ps":4,"e":6.049477934387939,"pr":0.3},{"t":296,"r":796,"c":13,"a":"retracted","s":0.19338513820936862,"ps":4,"e":3.8525440066995666,"pr":0.45},{"t":298,"r":796,"c":19,"a":"extend","s":0.4792026716292354,"ps":4,"e":7.545116537079058,"pr":0.3},{"t":298,"r":796,"c":15,"a":"hold","s":0.15375255461384268,"ps":5,"e":4.10943554525651,"pr":0.4},{"t":299,"r":796,"c":22,"a":"retracted","s":0.13586866518132523,"ps":4,"e":3.540715411065098,"pr":0.35000000000000003}];
|
|
const lines = text.split('\n');
|
|
const gridEl = document.getElementById('grid');
|
|
const charEls = [];
|
|
for (let r = 0; r < lines.length; r++) {
|
|
const row = [];
|
|
for (let c = 0; c < lines[r].length; c++) {
|
|
const s = document.createElement('span');
|
|
s.className = 'c';
|
|
s.textContent = lines[r][c];
|
|
row.push(s);
|
|
gridEl.appendChild(s);
|
|
}
|
|
charEls.push(row);
|
|
gridEl.appendChild(document.createTextNode('\n'));
|
|
}
|
|
let tick = -1, playing = false, iv;
|
|
function apply(t) {
|
|
for (const r of charEls) for (const e of r) e.className = 'c';
|
|
const active = new Map();
|
|
for (const p of passes) {
|
|
if (p.t > t) break;
|
|
const k = p.r+','+p.c;
|
|
if (p.a === 'died' || p.a === 'retracted') active.set(k, 'dead');
|
|
else if (p.ps > 16) active.set(k, 'strong');
|
|
else active.set(k, 'active');
|
|
}
|
|
for (const [k, cls] of active) {
|
|
const [r, c] = k.split(',').map(Number);
|
|
if (charEls[r]?.[c]) charEls[r][c].className = 'c ' + cls;
|
|
}
|
|
document.getElementById('info').textContent = 'tick ' + t + ' · ' + [...active.values()].filter(v=>v!=='dead').length + ' alive';
|
|
}
|
|
function play() {
|
|
if (playing) return;
|
|
playing = true;
|
|
document.getElementById('play-btn').textContent = 'pause';
|
|
const max = passes.length > 0 ? passes[passes.length-1].t : 0;
|
|
iv = setInterval(() => { tick++; if (tick > max) { pause(); return; } apply(tick); }, 900);
|
|
}
|
|
function pause() { playing = false; clearInterval(iv); document.getElementById('play-btn').textContent = 'play'; }
|
|
function reset() { pause(); tick = -1; for (const r of charEls) for (const e of r) e.className = 'c'; document.getElementById('info').textContent = 'neurameba'; }
|
|
document.getElementById('play-btn').addEventListener('click', () => playing ? pause() : play());
|
|
document.getElementById('reset-btn').addEventListener('click', reset);
|
|
setTimeout(play, 1000);
|
|
</script>
|
|
</body>
|
|
</html> |