From fbf449f9e04fd67075db952c856cfecbfcf2a004 Mon Sep 17 00:00:00 2001 From: "claude@clouddev1" Date: Wed, 10 Jun 2026 12:59:50 +0000 Subject: [PATCH] feat(website): asciinema cast pipeline + landing quickstart demo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Settle the cast toolchain (STYLE.md #9) and build the demo pipeline end to end. Driver: autocast, chosen by spike — its !Interactive feeds keys to the running TUI and captures the redraw, the right model for a full-screen crossterm app. asciinema-automation was rejected (assumes shell echo/\n Enter; produced a garbled cast against the TUI). - add asciinema-player; Cast.astro (player island) + Demo.astro (the WASM-swap seam, ADR-website-001 §3) - casts-src/: human-readable command-lists (casts.mjs) + generate.mjs, exposed as `pnpm casts`; expands steps to autocast YAML and records to public/casts/. Command-lists are the durable source; .cast files are regenerable (final re-record sweep due once the app is locked). - quickstart.cast (create -> add columns -> insert -> show data) embedded on the landing page above the feature cards. Verified: pnpm build clean (25 pages); player + cast bundled and served; landing HTML references the cast. Visual playback check pending (no headless browser here — verify via dev server over the tunnel). --- website/STYLE.md | 37 +++- website/casts-src/casts.mjs | 39 ++++ website/casts-src/generate.mjs | 121 ++++++++++++ website/package.json | 2 + website/pnpm-lock.yaml | 88 +++++++++ website/public/casts/quickstart.cast | 269 +++++++++++++++++++++++++++ website/src/components/Cast.astro | 72 +++++++ website/src/components/Demo.astro | 35 ++++ website/src/content/docs/index.mdx | 3 + 9 files changed, 658 insertions(+), 8 deletions(-) create mode 100644 website/casts-src/casts.mjs create mode 100644 website/casts-src/generate.mjs create mode 100644 website/public/casts/quickstart.cast create mode 100644 website/src/components/Cast.astro create mode 100644 website/src/components/Demo.astro diff --git a/website/STYLE.md b/website/STYLE.md index 2612101..a7d22a3 100644 --- a/website/STYLE.md +++ b/website/STYLE.md @@ -131,15 +131,31 @@ Relationships: `books.author_id → authors.author_id` (1:n); `loans` joins `books` and `members` (the m:n bridge). Show `shortid` on the Types page via a small standalone example, not by complicating this schema. -## asciinema casts [DECIDED, details OPEN] +## asciinema casts [DECIDED] - Casts show *flow/motion*; static code blocks show *exact input/output*. Prefer a code block when a still example suffices. - Pair a hero/landing cast with a text transcript or the equivalent docs snippet (accessibility + SEO). -- Recorded via a scripted-input driver for paced, re-recordable sessions - (ADR-website-001 §2; recipe in `README.md`). **[OPEN]**: cast file naming, - fixed terminal size, light/dark theme handling. +- **Driver: `autocast`** (ADR-website-001 §2; chosen by the 2026-06-10 + spike). `autocast`'s `!Interactive` feeds keys to the running TUI and + captures the redraw — the correct model for a full-screen crossterm app. + `asciinema-automation` was rejected: it assumes *shell* semantics (Enter as + `\n`, and an `expect()` echo-check per keystroke), which a redrawing TUI + breaks — it produced a garbled cast. +- **Authoring workflow.** Source command-lists live in `casts-src/casts.mjs` + (human-readable steps: `type` / `wait` / `key`). `pnpm casts` runs + `casts-src/generate.mjs`, which expands them to autocast YAML (one key per + character; Enter = `^M`) and records to `public/casts/.cast`. The + command-lists are the durable source; **`.cast` files are regenerable** — + re-run `pnpm casts` to re-record as the app evolves (a final sweep is due + once the app is locked). Needs a `cargo build` binary at `../target/debug`. +- **Embedding.** `Demo.astro` (the WASM-swap seam, ADR-website-001 §3) wraps + `Cast.astro` (asciinema-player island). Call sites use `Demo`. +- **Conventions.** Terminal geometry per cast (default 90×26); file name = + cast `name`; player theme `asciinema` for now. **[OPEN]**: light/dark player + theme sync with the Starlight theme toggle (player theme is currently fixed; + refine in Phase B). ## Formatting [DECIDED, refine] @@ -156,6 +172,13 @@ a small standalone example, not by complicating this schema. Decide these as we write; record the outcome (and escalate to an ADR if significant). +**Resolved (2026-06-10):** +9. ~~Cast scripting toolchain~~ → **`autocast`**, proven by spike over + `asciinema-automation` (which can't drive a full-screen TUI). Source + command-lists in `casts-src/`, `pnpm casts` to record. See the *asciinema + casts* section above. (Remaining sub-item: light/dark player theme sync — + folded into #8 / Phase B.) + **Resolved (2026-06-05):** 1. ~~Depth / organising spine~~ → **Pragmatic** four-section split (see Structure above). @@ -172,7 +195,5 @@ significant). 7. **Versioning.** Version selectors at/after v1, or single-version for launch? (Leaning single-version for launch.) 8. **SEO/meta conventions.** Title/description patterns, Open Graph — settle - with Phase B (landing) and the `site` URL. -9. **Cast scripting toolchain.** Confirm the scripted-input driver - (`asciinema-automation`/autocast vs alternative) via a test run; define - the `.cast` script format + storage location. (Execution task, in flight.) + with Phase B (landing) and the `site` URL. Also: light/dark player-theme + sync for embedded casts. diff --git a/website/casts-src/casts.mjs b/website/casts-src/casts.mjs new file mode 100644 index 0000000..0b8849e --- /dev/null +++ b/website/casts-src/casts.mjs @@ -0,0 +1,39 @@ +/** + * Cast source definitions — the durable, human-readable source for the + * asciinema demos (ADR-website-001 §2). `pnpm casts` runs `generate.mjs`, + * which turns each definition into an autocast YAML and records it to + * `public/casts/.cast`. Edit these and re-run to re-record as the app + * evolves; the `.cast` files are regenerable artifacts. + * + * Step kinds: + * { wait: ms } — pause (shown in the recording) + * { type: 'text', after: ms } — type the text + press Enter, then pause + * { type: 'text', enter: false } — type without pressing Enter + * { key: 'Tab'|'Enter', after: ms } — press a single named key + * + * Every cast must end by quitting the app (a `quit` step) so the driver + * returns to the shell prompt. + */ + +/** The shared library narrative, trimmed per cast. */ +export const casts = [ + { + name: 'quickstart', + title: 'RDBMS Playground — first table to first query', + width: 90, + height: 26, + typeSpeed: '45ms', + steps: [ + { wait: 1100 }, + { type: 'create table authors with pk', after: 1000 }, + { type: 'add column to authors: name (text)', after: 850 }, + { type: 'add column to authors: birth_year (int)', after: 900 }, + { + type: "insert into authors (name, birth_year) values ('Ursula K. Le Guin', 1929)", + after: 1300, + }, + { type: 'show data authors', after: 1800 }, + { type: 'quit', after: 500 }, + ], + }, +]; diff --git a/website/casts-src/generate.mjs b/website/casts-src/generate.mjs new file mode 100644 index 0000000..679b70d --- /dev/null +++ b/website/casts-src/generate.mjs @@ -0,0 +1,121 @@ +#!/usr/bin/env node +/** + * generate.mjs — turn the cast definitions in `casts.mjs` into asciinema + * `.cast` recordings under `public/casts/`, using autocast (ADR-website-001 + * §2; driver chosen by the 2026-06-10 spike — autocast drives the full-screen + * TUI correctly, asciinema-automation does not). + * + * Usage: + * pnpm casts # regenerate every cast + * pnpm casts quickstart # regenerate just one + * + * Requires `autocast` on PATH (cargo install autocast) and a built + * `rdbms-playground` binary at ../target/debug (run `cargo build` at the repo + * root first). The binary's dir is added to PATH for the autocast child so the + * recording shows a clean `$ rdbms-playground` launch line. + */ +import { spawnSync } from 'node:child_process'; +import { mkdirSync, writeFileSync, rmSync } from 'node:fs'; +import { dirname, resolve } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import os from 'node:os'; +import { casts } from './casts.mjs'; + +const here = dirname(fileURLToPath(import.meta.url)); +const websiteRoot = resolve(here, '..'); +const repoRoot = resolve(websiteRoot, '..'); +const binDir = resolve(repoRoot, 'target', 'debug'); +const outDir = resolve(websiteRoot, 'public', 'casts'); +const cargoBin = resolve(os.homedir(), '.cargo', 'bin'); + +/** YAML-escape a single character for a double-quoted scalar. */ +function charKey(ch) { + if (ch === '\\') return '"\\\\"'; + if (ch === '"') return '"\\""'; + return `"${ch}"`; +} + +/** Named single keys → autocast control codes. */ +const NAMED_KEYS = { + Enter: '^M', + Tab: '^I', +}; + +/** Build the autocast `keys:` list (one entry per line) for a cast's steps. */ +function keysFor(steps) { + const keys = []; + for (const step of steps) { + if (step.wait != null) { + keys.push(`${step.wait}ms`); + continue; + } + if (step.key != null) { + const code = NAMED_KEYS[step.key]; + if (!code) throw new Error(`unknown key: ${step.key}`); + keys.push(code); + if (step.after != null) keys.push(`${step.after}ms`); + continue; + } + if (step.type != null) { + for (const ch of step.type) keys.push(charKey(ch)); + if (step.enter !== false) keys.push('^M'); // Enter = CR (the TUI submits on \r) + if (step.after != null) keys.push(`${step.after}ms`); + continue; + } + throw new Error(`unrecognised step: ${JSON.stringify(step)}`); + } + return keys; +} + +function yamlFor(cast) { + const keys = keysFor(cast.steps) + .map((k) => ` - ${k}`) + .join('\n'); + return [ + 'settings:', + ` width: ${cast.width ?? 90}`, + ` height: ${cast.height ?? 26}`, + ` title: ${JSON.stringify(cast.title ?? cast.name)}`, + ` type_speed: ${cast.typeSpeed ?? '45ms'}`, + ' timeout: 90s', + ' prompt: "$ "', + 'instructions:', + ' - !Interactive', + ' command: rdbms-playground', + ' keys:', + keys, + '', + ].join('\n'); +} + +const only = process.argv[2]; +const selected = only ? casts.filter((c) => c.name === only) : casts; +if (only && selected.length === 0) { + console.error(`no cast named "${only}". Known: ${casts.map((c) => c.name).join(', ')}`); + process.exit(1); +} + +mkdirSync(outDir, { recursive: true }); +const env = { ...process.env, PATH: `${binDir}:${cargoBin}:${process.env.PATH}` }; + +let failures = 0; +for (const cast of selected) { + const yamlPath = resolve(os.tmpdir(), `autocast-${cast.name}.yaml`); + const outPath = resolve(outDir, `${cast.name}.cast`); + writeFileSync(yamlPath, yamlFor(cast)); + console.log(`▶ recording ${cast.name} → public/casts/${cast.name}.cast`); + const res = spawnSync('autocast', ['--overwrite', yamlPath, outPath], { + env, + stdio: 'inherit', + }); + rmSync(yamlPath, { force: true }); + if (res.status !== 0) { + console.error(`✗ ${cast.name} failed (autocast exit ${res.status})`); + failures += 1; + } else { + console.log(`✓ ${cast.name}`); + } +} + +if (failures) process.exit(1); +console.log(`Done — ${selected.length} cast(s).`); diff --git a/website/package.json b/website/package.json index 5bf02c3..47aba27 100644 --- a/website/package.json +++ b/website/package.json @@ -8,12 +8,14 @@ "start": "astro dev", "build": "astro build", "preview": "astro preview", + "casts": "node casts-src/generate.mjs", "astro": "astro" }, "dependencies": { "@astrojs/starlight": "^0.39.3", "@astrojs/starlight-tailwind": "^5.0.0", "@tailwindcss/vite": "^4.3.0", + "asciinema-player": "^3.15.1", "astro": "^6.3.1", "sharp": "^0.34.5", "tailwindcss": "^4.3.0" diff --git a/website/pnpm-lock.yaml b/website/pnpm-lock.yaml index 5854f7c..7a1ebb1 100644 --- a/website/pnpm-lock.yaml +++ b/website/pnpm-lock.yaml @@ -17,6 +17,9 @@ importers: '@tailwindcss/vite': specifier: ^4.3.0 version: 4.3.0(vite@7.3.5(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)) + asciinema-player: + specifier: ^3.15.1 + version: 3.15.1 astro: specifier: ^6.3.1 version: 6.4.4(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.61.1) @@ -85,6 +88,10 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/runtime@7.29.7': + resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} + engines: {node: '>=6.9.0'} + '@babel/types@7.29.7': resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} engines: {node: '>=6.9.0'} @@ -667,6 +674,21 @@ packages: '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} + '@solid-primitives/refs@1.1.3': + resolution: {integrity: sha512-aam02fjNKpBteewF/UliPSQCVJsIIGOLEWQOh+ll6R/QePzBOOBMcC4G+5jTaO75JuUS1d/14Q1YXT3X0Ow6iA==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/transition-group@1.1.2': + resolution: {integrity: sha512-gnHS0OmcdjeoHN9n7Khu8KNrOlRc8a2weETDt2YT6o1zeW/XtUC6Db3Q9pkMU/9cCKdEmN4b0a/41MKAHRhzWA==} + peerDependencies: + solid-js: ^1.6.12 + + '@solid-primitives/utils@6.4.0': + resolution: {integrity: sha512-AeGTBg8Wtkh/0s+evyLtP8piQoS4wyqqQaAFs2HJcFMMjYAtUgo+ZPduRXLjPlqKVc2ejeR544oeqpbn8Egn8A==} + peerDependencies: + solid-js: ^1.6.12 + '@tailwindcss/node@4.3.0': resolution: {integrity: sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g==} @@ -830,6 +852,9 @@ packages: array-iterate@2.0.1: resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} + asciinema-player@3.15.1: + resolution: {integrity: sha512-agVYeNlPxthLyAb92l9AS7ypW0uhesqOuQzyR58Q4Sj+MvesQztZBgx86lHqNJkB8rQ6EP0LeA9czGytQUBpYw==} + astring@1.9.0: resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} hasBin: true @@ -938,6 +963,9 @@ packages: resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + debug@4.4.3: resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} engines: {node: '>=6.0'} @@ -1716,6 +1744,16 @@ packages: engines: {node: '>=10'} hasBin: true + seroval-plugins@1.5.4: + resolution: {integrity: sha512-S0xQPhUTefAhNvNWFg0c1J8qJArHt5KdtJ/cFAofo06KD1MVSeFWyl4iiu+ApDIuw0WhjpOfCdgConOfAnLgkw==} + engines: {node: '>=10'} + peerDependencies: + seroval: ^1.0 + + seroval@1.5.4: + resolution: {integrity: sha512-46uFvgrXTVxZcUorgSSRZ4y+ieqLLQRMlG4bnCZKW3qI6BZm7Rg4ntMW4p1mILEEBZWrFlcpp0AyIIlM6jD9iw==} + engines: {node: '>=10'} + sharp@0.34.5: resolution: {integrity: sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==} engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0} @@ -1736,6 +1774,15 @@ packages: resolution: {integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==} engines: {node: '>= 18'} + solid-js@1.9.13: + resolution: {integrity: sha512-6hJeJMOcEX8ktqjpDoJZEmld3ijvcvWBDtiXBm7f4332SiFN66QeAQI1REQshvyUoISsSeJ4PHDauKYbwao9JQ==} + + solid-transition-group@0.2.3: + resolution: {integrity: sha512-iB72c9N5Kz9ykRqIXl0lQohOau4t0dhel9kjwFvx81UZJbVwaChMuBuyhiZmK24b8aKEK0w3uFM96ZxzcyZGdg==} + engines: {node: '>=18.0.0', pnpm: '>=8.6.0'} + peerDependencies: + solid-js: ^1.6.12 + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} @@ -2141,6 +2188,8 @@ snapshots: dependencies: '@babel/types': 7.29.7 + '@babel/runtime@7.29.7': {} + '@babel/types@7.29.7': dependencies: '@babel/helper-string-parser': 7.29.7 @@ -2565,6 +2614,19 @@ snapshots: '@shikijs/vscode-textmate@10.0.2': {} + '@solid-primitives/refs@1.1.3(solid-js@1.9.13)': + dependencies: + '@solid-primitives/utils': 6.4.0(solid-js@1.9.13) + solid-js: 1.9.13 + + '@solid-primitives/transition-group@1.1.2(solid-js@1.9.13)': + dependencies: + solid-js: 1.9.13 + + '@solid-primitives/utils@6.4.0(solid-js@1.9.13)': + dependencies: + solid-js: 1.9.13 + '@tailwindcss/node@4.3.0': dependencies: '@jridgewell/remapping': 2.3.5 @@ -2694,6 +2756,12 @@ snapshots: array-iterate@2.0.1: {} + asciinema-player@3.15.1: + dependencies: + '@babel/runtime': 7.29.7 + solid-js: 1.9.13 + solid-transition-group: 0.2.3(solid-js@1.9.13) + astring@1.9.0: {} astro-expressive-code@0.42.0(astro@6.4.4(@types/node@24.13.0)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.61.1)): @@ -2870,6 +2938,8 @@ snapshots: dependencies: css-tree: 2.2.1 + csstype@3.2.3: {} + debug@4.4.3: dependencies: ms: 2.1.3 @@ -4149,6 +4219,12 @@ snapshots: semver@7.8.2: {} + seroval-plugins@1.5.4(seroval@1.5.4): + dependencies: + seroval: 1.5.4 + + seroval@1.5.4: {} + sharp@0.34.5: dependencies: '@img/colour': 1.1.0 @@ -4202,6 +4278,18 @@ snapshots: smol-toml@1.6.1: {} + solid-js@1.9.13: + dependencies: + csstype: 3.2.3 + seroval: 1.5.4 + seroval-plugins: 1.5.4(seroval@1.5.4) + + solid-transition-group@0.2.3(solid-js@1.9.13): + dependencies: + '@solid-primitives/refs': 1.1.3(solid-js@1.9.13) + '@solid-primitives/transition-group': 1.1.2(solid-js@1.9.13) + solid-js: 1.9.13 + source-map-js@1.2.1: {} source-map@0.7.6: {} diff --git a/website/public/casts/quickstart.cast b/website/public/casts/quickstart.cast new file mode 100644 index 0000000..bc11cf7 --- /dev/null +++ b/website/public/casts/quickstart.cast @@ -0,0 +1,269 @@ +{"version": 2, "width": 90, "height": 26, "timestamp": 1781095925, "duration": 17.187911, "title": "RDBMS Playground — first table to first query", "env": {"SHELL": "/usr/bin/bash", "TERM": "tmux-256color"}} +[0.000000, "o", "$ "] +[0.045000, "o", "r"] +[0.090000, "o", "d"] +[0.135000, "o", "b"] +[0.180000, "o", "m"] +[0.225000, "o", "s"] +[0.270000, "o", "-"] +[0.315000, "o", "p"] +[0.360000, "o", "l"] +[0.405000, "o", "a"] +[0.450000, "o", "y"] +[0.495000, "o", "g"] +[0.540000, "o", "r"] +[0.585000, "o", "o"] +[0.630000, "o", "u"] +[0.675000, "o", "n"] +[0.720000, "o", "d"] +[0.765000, "o", "\r\n"] +[0.800807, "o", "\u001b[?1049h"] +[0.807141, "o", "\u001b[1;1H\u001b[38;2;74;82;101;48;2;24;27;34m╭\u001b[1m\u001b[38;2;230;230;230;48;2;24;27;34m Tables \u001b[22m\u001b[38;2;74;82;101;48;2;24;27;34m──────────────────╮╭\u001b[1m\u001b[38;2;230;230;230;48;2;24;27;34m Output \u001b[22m\u001b[38;2;74;82;101;48;2;24;27;34m────────────────────────────────────────────────────╮\u001b[2;1H│\u001b[3m\u001b[38;2;139;144;154;48;2;24;27;34m(none yet)\u001b[23m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m││\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[3;1H│\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m││\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[4;1H│\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;"] +[0.807239, "o", "34m││\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[5;1H│\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m││\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[6;1H│\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m││\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[7;1H│\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m││\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[8;1H│\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m││\u001b[38;2;230;230;230;48;2;24;27;34m "] +[0.807334, "o", " \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[9;1H│\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m││\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[10;1H│\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m││\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[11;1H│\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m││\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[12;1H│\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m││\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[13;1H│\u001b[38;2;230;230;230;48;2;24;27;34m "] +[0.807436, "o", " \u001b[38;2;74;82;101;48;2;24;27;34m││\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[14;1H│\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m││\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[15;1H│\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m││\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[16;1H│\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m││\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[17;1H│\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m││\u001b[38;2;230;230;230;48;2;24;27;34m "] +[0.807568, "o", " \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[18;1H│\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│╰────────────────────────────────────────────────────────────╯\u001b[19;1H│\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│╭ \u001b[1m\u001b[38;2;110;196;255;48;2;24;27;34mSIMPLE\u001b[22m\u001b[38;2;74;82;101;48;2;24;27;34m ────────────────────────────────────────────────────╮\u001b[20;1H│\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m││\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[27m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[21;1H│\u001b[38;2;230;230;230;48;2;24;27;34m "] +[0.807645, "o", " \u001b[38;2;74;82;101;48;2;24;27;34m│╰────────────────────────────────────────────────────────────╯\u001b[22;1H│\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│╭\u001b[1m\u001b[38;2;230;230;230;48;2;24;27;34m Hint \u001b[22m\u001b[38;2;74;82;101;48;2;24;27;34m──────────────────────────────────────────────────────╮\u001b[23;1H│\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m││\u001b[38;2;139;144;154;48;2;24;27;34mType a command — press Tab for options, `help` for a list\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[24;1H╰──────────────────────────╯╰───────────────────────────"] +[0.807746, "o", "─────────────────────────────────╯\u001b[25;1H\u001b[38;2;139;144;154;48;2;24;27;34mProject: \u001b[1m[TEMP] \u001b[38;2;230;230;230;48;2;24;27;34mRowing Pavilion Lagoon\u001b[22m\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[26;1H\u001b[1m\u001b[38;2;230;230;230;48;2;24;27;34mEnter\u001b[22m\u001b[38;2;139;144;154;48;2;24;27;34m submit · \u001b[1m\u001b[38;2;230;230;230;48;2;24;27;34m:\u001b[22m\u001b[38;2;139;144;154;48;2;24;27;34m advanced once · \u001b[1m\u001b[38;2;230;230;230;48;2;24;27;34mmode advanced\u001b[22m\u001b[38;2;139;144;154;48;2;24;27;34m switch · \u001b[1m\u001b[38;2;230;230;230;48;2;24;27;34mCtrl-C\u001b[22m\u001b[38;2;139;144;154;48;2;24;27;34m quit \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[0.810221, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[0.812240, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[1.958024, "o", "\u001b[20;30H\u001b[38;2;255;107;107;48;2;24;27;34mc\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;30H\u001b[27m\u001b[38;2;199;146;234;48;2;24;27;34mcopy\u001b[23;35Hchange\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mcreate\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[2.003030, "o", "\u001b[20;31H\u001b[38;2;255;107;107;48;2;24;27;34mr\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;31H\u001b[27m\u001b[38;2;199;146;234;48;2;24;27;34mreate\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[2.049640, "o", "\u001b[20;32H\u001b[38;2;255;107;107;48;2;24;27;34me\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[2.093386, "o", "\u001b[20;33H\u001b[38;2;255;107;107;48;2;24;27;34ma\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[2.137816, "o", "\u001b[20;34H\u001b[38;2;255;107;107;48;2;24;27;34mt\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[2.182991, "o", "\u001b[20;30H\u001b[38;2;199;146;234;48;2;24;27;34mcreate\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[2.227476, "o", "\u001b[20;36H\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[7m \u001b[23;30H\u001b[27m\u001b[38;2;199;146;234;48;2;24;27;34mtable\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[2.272879, "o", "\u001b[20;37H\u001b[38;2;255;107;107;48;2;24;27;34mt\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[2.317777, "o", "\u001b[20;38H\u001b[38;2;255;107;107;48;2;24;27;34ma\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[2.362753, "o", "\u001b[20;39H\u001b[38;2;255;107;107;48;2;24;27;34mb\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[2.407763, "o", "\u001b[20;40H\u001b[38;2;255;107;107;48;2;24;27;34ml\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[2.452787, "o", "\u001b[20;37H\u001b[38;2;199;146;234;48;2;24;27;34mtable\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[2.497985, "o", "\u001b[20;42H\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[7m \u001b[23;30H\u001b[27m\u001b[38;2;139;144;154;48;2;24;27;34mType a name\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[2.543834, "o", "\u001b[20;43H\u001b[38;2;86;182;194;48;2;24;27;34ma\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[2.587734, "o", "\u001b[20;44H\u001b[38;2;86;182;194;48;2;24;27;34mu\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[2.633232, "o", "\u001b[20;45H\u001b[38;2;86;182;194;48;2;24;27;34mt\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[2.678108, "o", "\u001b[20;46H\u001b[38;2;86;182;194;48;2;24;27;34mh\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[2.722930, "o", "\u001b[20;47H\u001b[38;2;86;182;194;48;2;24;27;34mo\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[2.767734, "o", "\u001b[20;48H\u001b[38;2;86;182;194;48;2;24;27;34mr\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[2.812808, "o", "\u001b[20;49H\u001b[38;2;86;182;194;48;2;24;27;34ms\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[2.858529, "o", "\u001b[20;50H\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[7m \u001b[23;30H\u001b[27m\u001b[38;2;199;146;234;48;2;24;27;34mwith\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[2.903471, "o", "\u001b[20;51H\u001b[38;2;255;107;107;48;2;24;27;34mw\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[2.948018, "o", "\u001b[20;52H\u001b[38;2;255;107;107;48;2;24;27;34mi\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[2.994081, "o", "\u001b[20;53H\u001b[38;2;255;107;107;48;2;24;27;34mt\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[3.038148, "o", "\u001b[20;51H\u001b[38;2;199;146;234;48;2;24;27;34mwith\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[3.083036, "o", "\u001b[20;55H\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[7m \u001b[23;30H\u001b[27m\u001b[38;2;199;146;234;48;2;24;27;34mpk\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[3.128202, "o", "\u001b[20;56H\u001b[38;2;255;107;107;48;2;24;27;34mp\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[3.172498, "o", "\u001b[20;56H\u001b[38;2;199;146;234;48;2;24;27;34mpk\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;30H\u001b[27m\u001b[38;2;139;144;154;48;2;24;27;34mSubmit with Enter\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[3.219942, "o", "\u001b[2;30H\u001b[38;2;110;196;255;48;2;24;27;34m[simple] \u001b[38;2;230;230;230;48;2;24;27;34mrunning:\u001b[2;48H\u001b[38;2;199;146;234;48;2;24;27;34mcreate\u001b[2;55Htable\u001b[2;61H\u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[2;69H\u001b[38;2;199;146;234;48;2;24;27;34mwith\u001b[2;74Hpk\u001b[20;30H\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[27m \u001b[20;37H \u001b[20;43H \u001b[20;51H \u001b[20;56H \u001b[23;30H\u001b[38;2;139;144;154;48;2;24;27;34mType a\u001b[23;37Hcommand — press Tab for options, `help` for a list\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[3.241423, "o", "\u001b[2;39H\u001b[38;2;199;146;234;48;2;24;27;34mcreate\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mtabl\u001b[2;51H\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mwith\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mpk\u001b[38;2;159;216;145;48;2;24;27;34m ✓\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[2;74H \u001b[3;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34mauthors\u001b[4;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m┌──────┬────────┬─────────────┐\u001b[5;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m│\u001b[5;41HName\u001b[5;46H│\u001b[5;48HType\u001b[5;55H│\u001b[5;57HConstraints\u001b[5;69H│\u001b[6;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m├──────┼────────┼─────────────┤\u001b[7;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m│\u001b[7;41Hid\u001b[7;46H│\u001b[7;48Hserial\u001b[7;55H│\u001b[7;57HPK\u001b[7;69H│\u001b[8;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m└──────┴────────┴─────────────┘\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[3.243731, "o", "\u001b[2;2H\u001b[1m\u001b[38;2;230;230;230;48;2;24;27;34mauthors\u001b[22m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[3.246147, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[4.250464, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[4.307797, "o", "\u001b[20;30H\u001b[38;2;255;107;107;48;2;24;27;34ma\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;30H\u001b[27m\u001b[38;2;199;146;234;48;2;24;27;34madd\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[4.352811, "o", "\u001b[20;31H\u001b[38;2;255;107;107;48;2;24;27;34md\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[4.398657, "o", "\u001b[20;30H\u001b[38;2;199;146;234;48;2;24;27;34madd\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[4.442902, "o", "\u001b[20;33H\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[7m \u001b[23;30H\u001b[27m\u001b[38;2;199;146;234;48;2;24;27;34mcolumn\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mindex\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mconstraint\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34m1:n\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[4.488292, "o", "\u001b[20;34H\u001b[38;2;255;107;107;48;2;24;27;34mc\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;37H\u001b[27m\u001b[38;2;199;146;234;48;2;24;27;34mconstrai\u001b[23;46Ht\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[4.534026, "o", "\u001b[20;35H\u001b[38;2;255;107;107;48;2;24;27;34mo\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[4.578310, "o", "\u001b[20;36H\u001b[38;2;255;107;107;48;2;24;27;34ml\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;36H\u001b[27m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[4.623182, "o", "\u001b[20;37H\u001b[38;2;255;107;107;48;2;24;27;34mu\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[4.668046, "o", "\u001b[20;38H\u001b[38;2;255;107;107;48;2;24;27;34mm\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[4.712789, "o", "\u001b[20;34H\u001b[38;2;199;146;234;48;2;24;27;34mcolumn\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[4.758270, "o", "\u001b[20;40H\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[7m \u001b[23;30H\u001b[27m\u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mto\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mtable\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[4.803202, "o", "\u001b[20;41H\u001b[38;2;255;107;107;48;2;24;27;34mt\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;30H\u001b[27m\u001b[38;2;199;146;234;48;2;24;27;34mto\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mtable\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[4.847916, "o", "\u001b[20;42H\u001b[38;2;255;107;107;48;2;24;27;34mo\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;32H\u001b[27m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[4.893221, "o", "\u001b[20;41H\u001b[38;2;199;146;234;48;2;24;27;34mto\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[7m \u001b[23;30H\u001b[27m\u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mtable\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[4.938012, "o", "\u001b[20;44H\u001b[38;2;86;182;194;48;2;24;27;34ma\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;37H\u001b[27m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[4.983050, "o", "\u001b[20;45H\u001b[38;2;86;182;194;48;2;24;27;34mu\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[5.028690, "o", "\u001b[20;46H\u001b[38;2;86;182;194;48;2;24;27;34mt\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[5.073095, "o", "\u001b[20;47H\u001b[38;2;86;182;194;48;2;24;27;34mh\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[5.118285, "o", "\u001b[20;48H\u001b[38;2;86;182;194;48;2;24;27;34mo\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[5.163314, "o", "\u001b[20;49H\u001b[38;2;86;182;194;48;2;24;27;34mr\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[5.208005, "o", "\u001b[20;50H\u001b[38;2;86;182;194;48;2;24;27;34ms\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[5.253500, "o", "\u001b[20;51H\u001b[38;2;139;144;154;48;2;24;27;34m:\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;30H\u001b[27m\u001b[38;2;139;144;154;48;2;24;27;34mType a name, then `(`\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[5.298454, "o", "\u001b[20;52H\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[7m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[5.343024, "o", "\u001b[20;53H\u001b[38;2;86;182;194;48;2;24;27;34mn\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[5.388279, "o", "\u001b[20;54H\u001b[38;2;86;182;194;48;2;24;27;34ma\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[5.433136, "o", "\u001b[20;55H\u001b[38;2;86;182;194;48;2;24;27;34mm\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[5.477959, "o", "\u001b[20;56H\u001b[38;2;86;182;194;48;2;24;27;34me\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[5.523152, "o", "\u001b[20;57H\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[7m \u001b[23;30H\u001b[27m\u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[5.568084, "o", "\u001b[20;58H\u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;30H\u001b[27m\u001b[38;2;199;146;234;48;2;24;27;34mtext\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mint\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mreal\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mdecimal\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mbool\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mdate\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mdatetime\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mblob\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mserial\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mshortid\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[5.613635, "o", "\u001b[20;59H\u001b[38;2;86;182;194;48;2;24;27;34mt\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;34H\u001b[27m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[5.658594, "o", "\u001b[20;60H\u001b[38;2;86;182;194;48;2;24;27;34me\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[5.703713, "o", "\u001b[20;61H\u001b[38;2;86;182;194;48;2;24;27;34mx\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[5.748570, "o", "\u001b[20;59H\u001b[38;2;240;143;192;48;2;24;27;34mtext\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[5.792700, "o", "\u001b[20;63H\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;30H\u001b[27m\u001b[38;2;199;146;234;48;2;24;27;34mnot\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34munique\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mdefault\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mcheck\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[5.838142, "o", "\u001b[9;30H\u001b[38;2;110;196;255;48;2;24;27;34m[simple] \u001b[38;2;230;230;230;48;2;24;27;34mrunning:\u001b[9;48H\u001b[38;2;199;146;234;48;2;24;27;34madd\u001b[9;52Hcolumn\u001b[9;59Hto\u001b[9;62H\u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;139;144;154;48;2;24;27;34m:\u001b[9;71H\u001b[38;2;86;182;194;48;2;24;27;34mname\u001b[9;76H\u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;240;143;192;48;2;24;27;34mtext\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[20;30H\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[27m \u001b[20;34H \u001b[20;41H \u001b[20;44H \u001b[20;53H \u001b[20;58H \u001b[23;30H\u001b[38;2;139;144;154;48;2;24;27;34mType a command — press Tab for options, `help` for a list\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[5.851539, "o", "\u001b[9;39H\u001b[38;2;199;146;234;48;2;24;27;34madd\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mcolumn\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mto\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;139;144;154;48;2;24;27;34m:\u001b[9;62H\u001b[38;2;86;182;194;48;2;24;27;34mname\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;240;143;192;48;2;24;27;34mtext\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[38;2;159;216;145;48;2;24;27;34m ✓\u001b[9;76H\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[10;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34mauthors\u001b[11;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m┌──────┬────────┬─────────────┐\u001b[12;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m│\u001b[12;41HName\u001b[12;46H│\u001b[12;48HType\u001b[12;55H│\u001b[12;57HConstraints\u001b[12;69H│\u001b[13;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m├──────┼────────┼─────────────┤\u001b[14;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m│\u001b[14;41Hid\u001b[14;46H│\u001b[14;48Hserial\u001b[14;55H│\u001b[14;57HPK\u001b[14;69H│\u001b[15;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m│\u001b[15;41Hname\u001b[15;46H│\u001b[15;48Htext\u001b[15;55H│\u001b[15;69H│\u001b[16;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m└──────┴────────┴─────────────┘\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[5.854123, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[5.856631, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[6.778086, "o", "\u001b[20;30H\u001b[38;2;255;107;107;48;2;24;27;34ma\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;30H\u001b[27m\u001b[38;2;199;146;234;48;2;24;27;34madd\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[6.823731, "o", "\u001b[20;31H\u001b[38;2;255;107;107;48;2;24;27;34md\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[6.868701, "o", "\u001b[20;30H\u001b[38;2;199;146;234;48;2;24;27;34madd\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[6.913203, "o", "\u001b[20;33H\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[7m \u001b[23;30H\u001b[27m\u001b[38;2;199;146;234;48;2;24;27;34mcolumn\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mindex\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mconstraint\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34m1:n\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[6.958681, "o", "\u001b[20;34H\u001b[38;2;255;107;107;48;2;24;27;34mc\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;37H\u001b[27m\u001b[38;2;199;146;234;48;2;24;27;34mconstrai\u001b[23;46Ht\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[7.003969, "o", "\u001b[20;35H\u001b[38;2;255;107;107;48;2;24;27;34mo\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[7.048555, "o", "\u001b[20;36H\u001b[38;2;255;107;107;48;2;24;27;34ml\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;36H\u001b[27m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[7.093663, "o", "\u001b[20;37H\u001b[38;2;255;107;107;48;2;24;27;34mu\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[7.138664, "o", "\u001b[20;38H\u001b[38;2;255;107;107;48;2;24;27;34mm\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[7.183394, "o", "\u001b[20;34H\u001b[38;2;199;146;234;48;2;24;27;34mcolumn\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[7.229556, "o", "\u001b[20;40H\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[7m \u001b[23;30H\u001b[27m\u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mto\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mtable\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[7.276382, "o", "\u001b[20;41H\u001b[38;2;255;107;107;48;2;24;27;34mt\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;30H\u001b[27m\u001b[38;2;199;146;234;48;2;24;27;34mto\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mtable\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[7.320114, "o", "\u001b[20;42H\u001b[38;2;255;107;107;48;2;24;27;34mo\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;32H\u001b[27m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[7.366765, "o", "\u001b[20;41H\u001b[38;2;199;146;234;48;2;24;27;34mto\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[7m \u001b[23;30H\u001b[27m\u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mtable\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[7.408611, "o", "\u001b[20;44H\u001b[38;2;86;182;194;48;2;24;27;34ma\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;37H\u001b[27m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[7.454524, "o", "\u001b[20;45H\u001b[38;2;86;182;194;48;2;24;27;34mu\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[7.499452, "o", "\u001b[20;46H\u001b[38;2;86;182;194;48;2;24;27;34mt\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[7.543408, "o", "\u001b[20;47H\u001b[38;2;86;182;194;48;2;24;27;34mh\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[7.588484, "o", "\u001b[20;48H\u001b[38;2;86;182;194;48;2;24;27;34mo\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[7.633363, "o", "\u001b[20;49H\u001b[38;2;86;182;194;48;2;24;27;34mr\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[7.678381, "o", "\u001b[20;50H\u001b[38;2;86;182;194;48;2;24;27;34ms\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[7.723976, "o", "\u001b[20;51H\u001b[38;2;139;144;154;48;2;24;27;34m:\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;30H\u001b[27m\u001b[38;2;139;144;154;48;2;24;27;34mType a name, then `(`\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[7.768981, "o", "\u001b[20;52H\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[7m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[7.813003, "o", "\u001b[20;53H\u001b[38;2;86;182;194;48;2;24;27;34mb\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[7.858840, "o", "\u001b[20;54H\u001b[38;2;86;182;194;48;2;24;27;34mi\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[7.903857, "o", "\u001b[20;55H\u001b[38;2;86;182;194;48;2;24;27;34mr\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[7.947881, "o", "\u001b[20;56H\u001b[38;2;86;182;194;48;2;24;27;34mt\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[7.993783, "o", "\u001b[20;57H\u001b[38;2;86;182;194;48;2;24;27;34mh\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[8.038774, "o", "\u001b[20;58H\u001b[38;2;86;182;194;48;2;24;27;34m_\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[8.083926, "o", "\u001b[20;59H\u001b[38;2;86;182;194;48;2;24;27;34my\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[8.128144, "o", "\u001b[20;60H\u001b[38;2;86;182;194;48;2;24;27;34me\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[8.173570, "o", "\u001b[20;61H\u001b[38;2;86;182;194;48;2;24;27;34ma\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[8.218581, "o", "\u001b[20;62H\u001b[38;2;86;182;194;48;2;24;27;34mr\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[8.262997, "o", "\u001b[20;63H\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[7m \u001b[23;30H\u001b[27m\u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[8.308563, "o", "\u001b[20;64H\u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;30H\u001b[27m\u001b[38;2;199;146;234;48;2;24;27;34mtext\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mint\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mreal\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mdecimal\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mbool\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mdate\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mdatetime\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mblob\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mserial\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mshortid\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[8.355029, "o", "\u001b[20;65H\u001b[38;2;86;182;194;48;2;24;27;34mi\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;30H\u001b[27m\u001b[38;2;199;146;234;48;2;24;27;34mint\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[8.398845, "o", "\u001b[20;66H\u001b[38;2;86;182;194;48;2;24;27;34mn\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[8.443386, "o", "\u001b[20;65H\u001b[38;2;240;143;192;48;2;24;27;34mint\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[8.489017, "o", "\u001b[20;68H\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;30H\u001b[27m\u001b[38;2;199;146;234;48;2;24;27;34mno\u001b[23;33H\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34munique\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mdefault\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mcheck\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[8.533473, "o", "\u001b[17;30H\u001b[38;2;110;196;255;48;2;24;27;34m[simple] \u001b[38;2;230;230;230;48;2;24;27;34mrunning:\u001b[17;48H\u001b[38;2;199;146;234;48;2;24;27;34madd\u001b[17;52Hcolumn\u001b[17;59Hto\u001b[17;62H\u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;139;144;154;48;2;24;27;34m:\u001b[17;71H\u001b[38;2;86;182;194;48;2;24;27;34mbirth_year\u001b[17;82H\u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;240;143;192;48;2;24;27;34mint\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[20;30H\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[27m \u001b[20;34H \u001b[20;41H \u001b[20;44H \u001b[20;53H \u001b[20;64H \u001b[23;30H\u001b[38;2;139;144;154;48;2;24;27;34mType a command — press Tab for options, `help` for a list\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[8.546936, "o", "\u001b[2;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34mauthors \u001b[2;52H \u001b[2;60H \u001b[2;65H \u001b[3;39H┌──────┬────────┬─────────────┐\u001b[4;39H│ Name │ Type │ Constraints │\u001b[5;39H├──────┼────────┼─────────────┤\u001b[6;39H│ id │ serial │ PK │\u001b[7;41Hname\u001b[7;48Ht\u001b[7;50Hxt \u001b[7;57H \u001b[9;62H\u001b[38;2;86;182;194;48;2;24;27;34mbirth_year\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;240;143;192;48;2;24;27;34mint\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[38;2;159;216;145;48;2;24;27;34m ✓\u001b[11;46H\u001b[38;2;230;230;230;48;2;24;27;34m─\u001b[11;52H┬\u001b[11;55H─\u001b[11;61H┬\u001b[11;69H──────┐\u001b[12;46H \u001b[12;48H │\u001b[12;54HType │ Co\u001b[12;66Hstraints\u001b[12;75H│\u001b[13;46H─\u001b[13;52H┼\u001b[13;55H─\u001b[13;61H┼\u001b[13;69H──────┤\u001b[14;46H \u001b[14;48H │ serial\u001b[14;61H│\u001b[14;63HPK\u001b[14;69H \u001b[14;75H│\u001b[15;46H \u001b[15;48H │\u001b[15;54Htext\u001b[15;61H│\u001b[15;69H \u001b[15;75H│\u001b[16;39H│ birth_year │ int │ \u001b[16;75H│\u001b[17;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m└────────────┴────────┴─────────────┘ \u001b[17;82H \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[8.549949, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[8.552760, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[9.523900, "o", "\u001b[20;30H\u001b[38;2;255;107;107;48;2;24;27;34mi\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;30H\u001b[27m\u001b[38;2;199;146;234;48;2;24;27;34mimport\u001b[23;37Hinsert\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[9.569233, "o", "\u001b[20;31H\u001b[38;2;255;107;107;48;2;24;27;34mn\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;31H\u001b[27m\u001b[38;2;199;146;234;48;2;24;27;34mnse\u001b[23;36H\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[9.614629, "o", "\u001b[20;32H\u001b[38;2;255;107;107;48;2;24;27;34ms\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[9.658487, "o", "\u001b[20;33H\u001b[38;2;255;107;107;48;2;24;27;34me\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[9.704645, "o", "\u001b[20;34H\u001b[38;2;255;107;107;48;2;24;27;34mr\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[9.752369, "o", "\u001b[20;30H\u001b[38;2;199;146;234;48;2;24;27;34minsert\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[9.797032, "o", "\u001b[20;36H\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[7m \u001b[23;32H\u001b[27m\u001b[38;2;199;146;234;48;2;24;27;34mto\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[9.842026, "o", "\u001b[20;37H\u001b[38;2;255;107;107;48;2;24;27;34mi\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[9.883269, "o", "\u001b[20;38H\u001b[38;2;255;107;107;48;2;24;27;34mn\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[9.931311, "o", "\u001b[20;39H\u001b[38;2;255;107;107;48;2;24;27;34mt\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[9.975962, "o", "\u001b[20;37H\u001b[38;2;199;146;234;48;2;24;27;34minto\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[10.021484, "o", "\u001b[20;41H\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[7m \u001b[23;30H\u001b[27m\u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[10.064049, "o", "\u001b[20;42H\u001b[38;2;86;182;194;48;2;24;27;34ma\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[10.109730, "o", "\u001b[20;43H\u001b[38;2;86;182;194;48;2;24;27;34mu\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[10.154400, "o", "\u001b[20;44H\u001b[38;2;86;182;194;48;2;24;27;34mt\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[10.199266, "o", "\u001b[20;45H\u001b[38;2;86;182;194;48;2;24;27;34mh\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[10.246306, "o", "\u001b[20;46H\u001b[38;2;86;182;194;48;2;24;27;34mo\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[10.290507, "o", "\u001b[20;47H\u001b[38;2;86;182;194;48;2;24;27;34mr\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[10.334102, "o", "\u001b[20;48H\u001b[38;2;86;182;194;48;2;24;27;34ms\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[10.378723, "o", "\u001b[20;49H\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[7m \u001b[23;30H\u001b[27m\u001b[38;2;199;146;234;48;2;24;27;34mvalues\u001b[38;2;139;144;154;48;2;24;27;34m (\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[10.424410, "o", "\u001b[20;50H\u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;30H\u001b[27m\u001b[38;2;86;182;194;48;2;24;27;34mbirth_year\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mid\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mname\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[10.469363, "o", "\u001b[20;51H\u001b[38;2;86;182;194;48;2;24;27;34mn\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;30H\u001b[27m\u001b[38;2;86;182;194;48;2;24;27;34mname\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[10.513462, "o", "\u001b[20;52H\u001b[38;2;86;182;194;48;2;24;27;34ma\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[10.561137, "o", "\u001b[20;53H\u001b[38;2;86;182;194;48;2;24;27;34mm\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[10.606946, "o", "\u001b[20;54H\u001b[38;2;86;182;194;48;2;24;27;34me\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[10.649101, "o", "\u001b[20;55H\u001b[38;2;139;144;154;48;2;24;27;34m,\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;30H\u001b[27m\u001b[38;2;86;182;194;48;2;24;27;34mbirth_year\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mid\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mname\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[10.695529, "o", "\u001b[20;56H\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[7m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[10.739059, "o", "\u001b[20;57H\u001b[38;2;86;182;194;48;2;24;27;34mb\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;40H\u001b[27m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[10.785172, "o", "\u001b[20;58H\u001b[38;2;86;182;194;48;2;24;27;34mi\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[10.830497, "o", "\u001b[20;59H\u001b[38;2;86;182;194;48;2;24;27;34mr\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[10.874107, "o", "\u001b[20;60H\u001b[38;2;86;182;194;48;2;24;27;34mt\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[10.920039, "o", "\u001b[20;61H\u001b[38;2;86;182;194;48;2;24;27;34mh\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[10.965089, "o", "\u001b[20;62H\u001b[38;2;86;182;194;48;2;24;27;34m_\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[11.010509, "o", "\u001b[20;63H\u001b[38;2;86;182;194;48;2;24;27;34my\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[11.054176, "o", "\u001b[20;64H\u001b[38;2;86;182;194;48;2;24;27;34me\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[11.098997, "o", "\u001b[20;65H\u001b[38;2;86;182;194;48;2;24;27;34ma\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[11.144002, "o", "\u001b[20;66H\u001b[38;2;86;182;194;48;2;24;27;34mr\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[11.189886, "o", "\u001b[20;67H\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;30H\u001b[27m\u001b[38;2;199;146;234;48;2;24;27;34mvalues\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[11.234027, "o", "\u001b[20;68H\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[7m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[11.280151, "o", "\u001b[20;69H\u001b[38;2;255;107;107;48;2;24;27;34mv\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[11.324239, "o", "\u001b[20;70H\u001b[38;2;255;107;107;48;2;24;27;34ma\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[11.369004, "o", "\u001b[20;71H\u001b[38;2;255;107;107;48;2;24;27;34ml\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[11.413422, "o", "\u001b[20;72H\u001b[38;2;255;107;107;48;2;24;27;34mu\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[11.462416, "o", "\u001b[20;73H\u001b[38;2;255;107;107;48;2;24;27;34me\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[11.506547, "o", "\u001b[20;69H\u001b[38;2;199;146;234;48;2;24;27;34mvalues\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[11.552003, "o", "\u001b[20;75H\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[7m \u001b[23;30H\u001b[27m\u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[11.598047, "o", "\u001b[20;76H\u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;30H\u001b[27m\u001b[38;2;139;144;154;48;2;24;27;34mfor `name`: Type a quoted string (e.g. 'Alice') or null\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[11.641790, "o", "\u001b[20;77H\u001b[38;2;255;107;107;48;2;24;27;34m'\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[11.687680, "o", "\u001b[2;39H\u001b[38;2;230;230;230;48;2;24;27;34m│ Name │\u001b[2;48HType\u001b[2;55H│\u001b[2;57HConstraints\u001b[2;69H│\u001b[3;39H├\u001b[3;46H┼\u001b[3;55H┼\u001b[3;69H┤\u001b[4;41Hid \u001b[4;48Hserial\u001b[4;57HPK \u001b[5;39H│ name │ text │ │\u001b[6;39H└──────┴────────┴─────────────┘\u001b[7;30H\u001b[38;2;110;196;255;48;2;24;27;34m[simple] \u001b[38;2;199;146;234;48;2;24;27;34madd\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mcolumn\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mto\u001b[7;53H\u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;139;144;154;48;2;24;27;34m:\u001b[7;62H\u001b[38;2;86;182;194;48;2;24;27;34mbirth_year\u001b[7;73H\u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;240;143;192;48;2;24;27;34mint\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[38;2;159;216;145;48;2;24;27;34m ✓\u001b[8;39H\u001b[38;2;230;230;230;48;2;24;27;34mauthors \u001b[9;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m┌────────────┬────────┬─────────────┐ \u001b[10;39H│ Name \u001b[10;52H│\u001b[10;54HType\u001b[10;61H│\u001b[10;63HConstraints\u001b[10;75H│\u001b[11;39H├\u001b[11;52H┼\u001b[11;61H┼\u001b[11;75H┤\u001b[12;41Hid \u001b[12;54Hserial\u001b[12;63HPK \u001b[13;39H│ name │ text │ │\u001b[14;41Hbirth_year\u001b[14;54Hint \u001b[14;63H \u001b[15;39H└────────────┴────────┴─────────────┘\u001b[16;29H\u001b[38;2;74;82;101;48;2;24;27;34m╰────────────────────────────────────────────────────────────╯\u001b[17;29H╭ \u001b[1m\u001b[38;2;110;196;255;48;2;24;27;34mSIMPLE\u001b[22m\u001b[38;2;74;82;101;48;2;24;27;34m ────────────────────────────────────────────────────╮\u001b[18;29H│\u001b[38;2;199;146;234;48;2;24;27;34minsert\u001b[38;2;230;230;230;48;2;24;27;34m "] +[11.687732, "o", "\u001b[38;2;199;146;234;48;2;24;27;34minto\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;86;182;194;48;2;24;27;34mname\u001b[38;2;139;144;154;48;2;24;27;34m,\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mbirth_year\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mvalues\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;255;107;107;48;2;24;27;34m'U\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[27m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[19;29H╰────────\u001b[19;90H╯\u001b[20;29H╭\u001b[1m\u001b[38;2;230;230;230;48;2;24;27;34m Hint \u001b[22m\u001b[38;2;74;82;101;48;2;24;27;34m──────────────────────────────────────────────────────╮\u001b[21;29H│\u001b[38;2;139;144;154;48;2;24;27;34mafter `insert into authors (name, birth_year) values (`,\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[22;29H│\u001b[38;2;139;144;154;48;2;24;27;34mexpected string literal or `null` — usage: insert into\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[23;30H\u001b[38;2;139;144;154;48;2;24;27;34m [([, ...])] [values] ([, ...])\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[11.728630, "o", "\u001b[18;79H\u001b[38;2;255;107;107;48;2;24;27;34mr\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[11.774286, "o", "\u001b[18;80H\u001b[38;2;255;107;107;48;2;24;27;34ms\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[11.824258, "o", "\u001b[18;81H\u001b[38;2;255;107;107;48;2;24;27;34mu\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[11.864683, "o", "\u001b[18;82H\u001b[38;2;255;107;107;48;2;24;27;34ml\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[11.910311, "o", "\u001b[18;83H\u001b[38;2;255;107;107;48;2;24;27;34ma\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[11.954859, "o", "\u001b[2;39H\u001b[38;2;230;230;230;48;2;24;27;34mauthors \u001b[2;48H \u001b[2;55H \u001b[2;57H \u001b[2;69H \u001b[3;39H┌\u001b[3;46H┬\u001b[3;55H┬\u001b[3;69H┐\u001b[4;41HName\u001b[4;48HType \u001b[4;57HConstraints\u001b[5;39H├──────┼────────┼─────────────┤\u001b[6;39H│ id │ serial │ PK │\u001b[7;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m│ name │ text\u001b[7;53H │ \u001b[7;62H │ \u001b[7;73H \u001b[8;39H└──────┴────────┴─────────────┘\u001b[9;30H\u001b[38;2;110;196;255;48;2;24;27;34m[simple] \u001b[38;2;199;146;234;48;2;24;27;34madd\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mcolumn\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mto\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;139;144;154;48;2;24;27;34m:\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mbirth_year\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;139"] +[11.955026, "o", ";144;154;48;2;24;27;34m(\u001b[38;2;240;143;192;48;2;24;27;34mint\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[38;2;159;216;145;48;2;24;27;34m ✓\u001b[10;39H\u001b[38;2;230;230;230;48;2;24;27;34mauthors\u001b[10;52H \u001b[10;54H \u001b[10;61H \u001b[10;63H \u001b[10;75H \u001b[11;39H┌\u001b[11;52H┬\u001b[11;61H┬\u001b[11;75H┐\u001b[12;41HName\u001b[12;54HType \u001b[12;63HConstraints\u001b[13;39H├────────────┼────────┼─────────────┤\u001b[14;41Hid \u001b[14;54Hserial\u001b[14;63HPK\u001b[15;39H│ name │ text │ │\u001b[16;29H\u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m│ birth_year │ int │ │ \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[17;29H│\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m└────────────┴────────┴─────────────┘ \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[18;29H╰──────"] +[11.955111, "o", "──────────────────────────────────────────────────────╯\u001b[19;29H╭ \u001b[1m\u001b[38;2;110;196;255;48;2;24;27;34mSIMPLE\u001b[22m\u001b[38;2;74;82;101;48;2;24;27;34m \u001b[19;90H╮\u001b[20;29H│\u001b[38;2;199;146;234;48;2;24;27;34minsert\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34minto\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;86;182;194;48;2;24;27;34mname\u001b[38;2;139;144;154;48;2;24;27;34m,\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mbirth_year\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mvalues\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;255;107;107;48;2;24;27;34m'Ursula\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[21;29H╰────────────────"] +[11.955208, "o", "────────────────────────────────────────────╯\u001b[22;29H╭\u001b[1m\u001b[38;2;230;230;230;48;2;24;27;34m Hint \u001b[22m\u001b[38;2;74;82;101;48;2;24;27;34m──────────────────────────────────────────────────────╮\u001b[23;30H\u001b[38;2;139;144;154;48;2;24;27;34mfor `name`: Type a quoted string (e.g. 'Alice') or null\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[11.999315, "o", "\u001b[2;39H\u001b[38;2;230;230;230;48;2;24;27;34m│ Name │\u001b[2;48HType\u001b[2;55H│\u001b[2;57HConstraints\u001b[2;69H│\u001b[3;39H├\u001b[3;46H┼\u001b[3;55H┼\u001b[3;69H┤\u001b[4;41Hid \u001b[4;48Hserial\u001b[4;57HPK \u001b[5;39H│ name │ text │ │\u001b[6;39H└──────┴────────┴─────────────┘\u001b[7;30H\u001b[38;2;110;196;255;48;2;24;27;34m[simple] \u001b[38;2;199;146;234;48;2;24;27;34madd\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mcolumn\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mto\u001b[7;53H\u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;139;144;154;48;2;24;27;34m:\u001b[7;62H\u001b[38;2;86;182;194;48;2;24;27;34mbirth_year\u001b[7;73H\u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;240;143;192;48;2;24;27;34mint\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[38;2;159;216;145;48;2;24;27;34m ✓\u001b[8;39H\u001b[38;2;230;230;230;48;2;24;27;34mauthors \u001b[9;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m┌───────────"] +[11.999385, "o", "─┬────────┬─────────────┐ \u001b[10;39H│ Name \u001b[10;52H│\u001b[10;54HType\u001b[10;61H│\u001b[10;63HConstraints\u001b[10;75H│\u001b[11;39H├\u001b[11;52H┼\u001b[11;61H┼\u001b[11;75H┤\u001b[12;41Hid \u001b[12;54Hserial\u001b[12;63HPK \u001b[13;39H│ name │ text │ │\u001b[14;41Hbirth_year\u001b[14;54Hint \u001b[14;63H \u001b[15;39H└────────────┴────────┴─────────────┘\u001b[16;29H\u001b[38;2;74;82;101;48;2;24;27;34m╰────────────────────────────────────────────────────────────╯\u001b[17;29H╭ \u001b[1m\u001b[38;2;110;196;255;48;2;24;27;34mSIMPLE\u001b[22m\u001b[38;2;74;82;101;48;2;24;27;34m ────────────────────────────────────────────────────╮\u001b[18;29H│\u001b[38;2;199;146;234;48;2;24;27;34minsert\u001b[38;2;230;230;230;48;2;24;27;34m "] +[11.999403, "o", "\u001b[38;2;199;146;234;48;2;24;27;34minto\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;86;182;194;48;2;24;27;34mname\u001b[38;2;139;144;154;48;2;24;27;34m,\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mbirth_year\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mvalues\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;255;107;107;48;2;24;27;34m'Ursula\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[19;29H╰────────\u001b[19;90H╯\u001b[20;29H╭\u001b[1m\u001b[38;2;230;230;230;48;2;24;27;34m Hint \u001b[22m\u001b[38;2;74;82;101;48;2;24;27;34m──────────────────────────────────────────────────────╮\u001b[21;29H│\u001b[38;2;139;144;154;48;2;24;27;34mafter `insert into authors (name, birth_year) values (`,\u001b[38;2;230;"] +[11.999453, "o", "230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[22;29H│\u001b[38;2;139;144;154;48;2;24;27;34mexpected string literal or `null` — usage: insert into\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[23;30H\u001b[38;2;139;144;154;48;2;24;27;34m
[([, ...])] [values] ([, ...])\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[12.047848, "o", "\u001b[2;39H\u001b[38;2;230;230;230;48;2;24;27;34mauthors \u001b[2;48H \u001b[2;55H \u001b[2;57H \u001b[2;69H \u001b[3;39H┌\u001b[3;46H┬\u001b[3;55H┬\u001b[3;69H┐\u001b[4;41HName\u001b[4;48HType \u001b[4;57HConstraints\u001b[5;39H├──────┼────────┼─────────────┤\u001b[6;39H│ id │ serial │ PK │\u001b[7;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m│ name │ text\u001b[7;53H │ \u001b[7;62H │ \u001b[7;73H \u001b[8;39H└──────┴────────┴─────────────┘\u001b[9;30H\u001b[38;2;110;196;255;48;2;24;27;34m[simple] \u001b[38;2;199;146;234;48;2;24;27;34madd\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mcolumn\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mto\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;139;144;154;48;2;24;27;34m:\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mbirth_year\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;139"] +[12.048035, "o", ";144;154;48;2;24;27;34m(\u001b[38;2;240;143;192;48;2;24;27;34mint\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[38;2;159;216;145;48;2;24;27;34m ✓\u001b[10;39H\u001b[38;2;230;230;230;48;2;24;27;34mauthors\u001b[10;52H \u001b[10;54H \u001b[10;61H \u001b[10;63H \u001b[10;75H \u001b[11;39H┌\u001b[11;52H┬\u001b[11;61H┬\u001b[11;75H┐\u001b[12;41HName\u001b[12;54HType \u001b[12;63HConstraints\u001b[13;39H├────────────┼────────┼─────────────┤\u001b[14;41Hid \u001b[14;54Hserial\u001b[14;63HPK\u001b[15;39H│ name │ text │ │\u001b[16;29H\u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m│ birth_year │ int │ │ \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[17;29H│\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m└────────────┴────────┴─────────────┘ \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[18;29H╰──────"] +[12.048169, "o", "──────────────────────────────────────────────────────╯\u001b[19;29H╭ \u001b[1m\u001b[38;2;110;196;255;48;2;24;27;34mSIMPLE\u001b[22m\u001b[38;2;74;82;101;48;2;24;27;34m \u001b[19;90H╮\u001b[20;29H│\u001b[38;2;199;146;234;48;2;24;27;34minsert\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34minto\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;86;182;194;48;2;24;27;34mname\u001b[38;2;139;144;154;48;2;24;27;34m,\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mbirth_year\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mvalues\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;255;107;107;48;2;24;27;34m'Ursula\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[21;29H╰────────────────"] +[12.048307, "o", "────────────────────────────────────────────╯\u001b[22;29H╭\u001b[1m\u001b[38;2;230;230;230;48;2;24;27;34m Hint \u001b[22m\u001b[38;2;74;82;101;48;2;24;27;34m──────────────────────────────────────────────────────╮\u001b[23;30H\u001b[38;2;139;144;154;48;2;24;27;34mfor `name`: Type a quoted string (e.g. 'Alice') or null\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[12.096502, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[12.140144, "o", "\u001b[2;39H\u001b[38;2;230;230;230;48;2;24;27;34m│ Name │\u001b[2;48HType\u001b[2;55H│\u001b[2;57HConstraints\u001b[2;69H│\u001b[3;39H├\u001b[3;46H┼\u001b[3;55H┼\u001b[3;69H┤\u001b[4;41Hid \u001b[4;48Hserial\u001b[4;57HPK \u001b[5;39H│ name │ text │ │\u001b[6;39H└──────┴────────┴─────────────┘\u001b[7;30H\u001b[38;2;110;196;255;48;2;24;27;34m[simple] \u001b[38;2;199;146;234;48;2;24;27;34madd\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mcolumn\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mto\u001b[7;53H\u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;139;144;154;48;2;24;27;34m:\u001b[7;62H\u001b[38;2;86;182;194;48;2;24;27;34mbirth_year\u001b[7;73H\u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;240;143;192;48;2;24;27;34mint\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[38;2;159;216;145;48;2;24;27;34m ✓\u001b[8;39H\u001b[38;2;230;230;230;48;2;24;27;34mauthors \u001b[9;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m┌────────────┬────────┬─────────────┐ \u001b[10;39H│ Name \u001b[10;52H│\u001b[10;54HType\u001b[10;61H│\u001b[10;63HConstraints\u001b[10;75H│\u001b[11;39H├\u001b[11;52H┼\u001b[11;61H┼\u001b[11;75H┤\u001b[12;41Hid \u001b[12;54Hserial\u001b[12;63HPK \u001b[13;39H│ name │ text │ │\u001b[14;41Hbirth_year\u001b[14;54Hint \u001b[14;63H \u001b[15;39H└────────────┴────────┴─────────────┘\u001b[16;29H\u001b[38;2;74;82;101;48;2;24;27;34m╰────────────────────────────────────────────────────────────╯\u001b[17;29H╭ \u001b[1m\u001b[38;2;110;196;255;48;2;24;27;34mSIMPLE\u001b[22m\u001b[38;2;74;82;101;48;2;24;27;34m ────────────────────────────────────────────────────╮\u001b[18;29H│\u001b[38;2;199;146;234;48;2;24;27;34minsert\u001b[38;2;230;230;230;48;2;24;27;34m "] +[12.140291, "o", "\u001b[38;2;199;146;234;48;2;24;27;34minto\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;86;182;194;48;2;24;27;34mname\u001b[38;2;139;144;154;48;2;24;27;34m,\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mbirth_year\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mvalues\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;255;107;107;48;2;24;27;34m'Ursula\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[19;29H╰────────\u001b[19;90H╯\u001b[20;29H╭\u001b[1m\u001b[38;2;230;230;230;48;2;24;27;34m Hint \u001b[22m\u001b[38;2;74;82;101;48;2;24;27;34m──────────────────────────────────────────────────────╮\u001b[21;29H│\u001b[38;2;139;144;154;48;2;24;27;34mafter `insert into authors (name, birth_year) values (`,\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[22;29H│\u001b[38;2;139;144;154;48;2;24;27;34mexpected string literal or `null` — usage: insert into\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[23;30H\u001b[38;2;139;144;154;48;2;24;27;34m
[([, ...])] [values] ([, ...])\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[12.179799, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[12.225079, "o", "\u001b[2;39H\u001b[38;2;230;230;230;48;2;24;27;34mauthors \u001b[2;48H \u001b[2;55H \u001b[2;57H \u001b[2;69H \u001b[3;39H┌\u001b[3;46H┬\u001b[3;55H┬\u001b[3;69H┐\u001b[4;41HName\u001b[4;48HType \u001b[4;57HConstraints\u001b[5;39H├──────┼────────┼─────────────┤\u001b[6;39H│ id │ serial │ PK │\u001b[7;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m│ name │ text\u001b[7;53H │ \u001b[7;62H │ \u001b[7;73H \u001b[8;39H└──────┴────────┴─────────────┘\u001b[9;30H\u001b[38;2;110;196;255;48;2;24;27;34m[simple] \u001b[38;2;199;146;234;48;2;24;27;34madd\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mcolumn\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mto\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;139;144;154;48;2;24;27;34m:\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mbirth_year\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;240;143;192;48;2;24;27;34mint\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[38;2;159;216;145;48;2;24;27;34m ✓\u001b[10;39H\u001b[38;2;230;230;230;48;2;24;27;34mauthors\u001b[10;52H \u001b[10;54H \u001b[10;61H \u001b[10;63H \u001b[10;75H \u001b[11;39H┌\u001b[11;52H┬\u001b[11;61H┬\u001b[11;75H┐\u001b[12;41HName\u001b[12;54HType \u001b[12;63HConstraints\u001b[13;39H├────────────┼────────┼─────────────┤\u001b[14;41Hid \u001b[14;54Hserial\u001b[14;63HPK\u001b[15;39H│ name │ text │ │\u001b[16;29H\u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m│ birth_year │ int │ │ \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[17;29H│\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m└────────────┴────────┴─────────────┘ \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[18;29H╰──────"] +[12.225121, "o", "──────────────────────────────────────────────────────╯\u001b[19;29H╭ \u001b[1m\u001b[38;2;110;196;255;48;2;24;27;34mSIMPLE\u001b[22m\u001b[38;2;74;82;101;48;2;24;27;34m \u001b[19;90H╮\u001b[20;29H│\u001b[38;2;199;146;234;48;2;24;27;34minsert\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34minto\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;86;182;194;48;2;24;27;34mname\u001b[38;2;139;144;154;48;2;24;27;34m,\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mbirth_year\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mvalues\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;255;107;107;48;2;24;27;34m'Ursula\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[21;29H╰────────────────"] +[12.225232, "o", "────────────────────────────────────────────╯\u001b[22;29H╭\u001b[1m\u001b[38;2;230;230;230;48;2;24;27;34m Hint \u001b[22m\u001b[38;2;74;82;101;48;2;24;27;34m──────────────────────────────────────────────────────╮\u001b[23;30H\u001b[38;2;139;144;154;48;2;24;27;34mfor `name`: Type a quoted string (e.g. 'Alice') or null\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[12.272052, "o", "\u001b[2;39H\u001b[38;2;230;230;230;48;2;24;27;34m│ Name │\u001b[2;48HType\u001b[2;55H│\u001b[2;57HConstraints\u001b[2;69H│\u001b[3;39H├\u001b[3;46H┼\u001b[3;55H┼\u001b[3;69H┤\u001b[4;41Hid \u001b[4;48Hserial\u001b[4;57HPK \u001b[5;39H│ name │ text │ │\u001b[6;39H└──────┴────────┴─────────────┘\u001b[7;30H\u001b[38;2;110;196;255;48;2;24;27;34m[simple] \u001b[38;2;199;146;234;48;2;24;27;34madd\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mcolumn\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mto\u001b[7;53H\u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;139;144;154;48;2;24;27;34m:\u001b[7;62H\u001b[38;2;86;182;194;48;2;24;27;34mbirth_year\u001b[7;73H\u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;240;143;192;48;2;24;27;34mint\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[38;2;159;216;145;48;2;24;27;34m ✓\u001b[8;39H\u001b[38;2;230;230;230;48;2;24;27;34mauthors \u001b[9;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m┌───────────"] +[12.272141, "o", "─┬────────┬─────────────┐ \u001b[10;39H│ Name \u001b[10;52H│\u001b[10;54HType\u001b[10;61H│\u001b[10;63HConstraints\u001b[10;75H│\u001b[11;39H├\u001b[11;52H┼\u001b[11;61H┼\u001b[11;75H┤\u001b[12;41Hid \u001b[12;54Hserial\u001b[12;63HPK \u001b[13;39H│ name │ text │ │\u001b[14;41Hbirth_year\u001b[14;54Hint \u001b[14;63H \u001b[15;39H└────────────┴────────┴─────────────┘\u001b[16;29H\u001b[38;2;74;82;101;48;2;24;27;34m╰────────────────────────────────────────────────────────────╯\u001b[17;29H╭ \u001b[1m\u001b[38;2;110;196;255;48;2;24;27;34mSIMPLE\u001b[22m\u001b[38;2;74;82;101;48;2;24;27;34m ────────────────────────────────────────────────────╮\u001b[18;29H│\u001b[38;2;199;146;234;48;2;24;27;34minsert\u001b[38;2;230;230;230;48;2;24;27;34m "] +[12.272314, "o", "\u001b[38;2;199;146;234;48;2;24;27;34minto\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;86;182;194;48;2;24;27;34mname\u001b[38;2;139;144;154;48;2;24;27;34m,\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mbirth_year\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mvalues\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;255;107;107;48;2;24;27;34m'Ursula\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[19;29H╰────────\u001b[19;90H╯\u001b[20;29H╭\u001b[1m\u001b[38;2;230;230;230;48;2;24;27;34m Hint \u001b[22m\u001b[38;2;74;82;101;48;2;24;27;34m──────────────────────────────────────────────────────╮\u001b[21;29H│\u001b[38;2;139;144;154;48;2;24;27;34mafter `insert into authors (name, birth_year) values (`,\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[22;29H│\u001b[38;2;139;144;154;48;2;24;27;34mexpected string literal or `null` — usage: insert into\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[23;30H\u001b[38;2;139;144;154;48;2;24;27;34m
[([, ...])] [values] ([, ...])\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[12.314538, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[12.359967, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[12.404625, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[12.451080, "o", "\u001b[2;39H\u001b[38;2;230;230;230;48;2;24;27;34mauthors \u001b[2;48H \u001b[2;55H \u001b[2;57H \u001b[2;69H \u001b[3;39H┌\u001b[3;46H┬\u001b[3;55H┬\u001b[3;69H┐\u001b[4;41HName\u001b[4;48HType \u001b[4;57HConstraints\u001b[5;39H├──────┼────────┼─────────────┤\u001b[6;39H│ id │ serial │ PK │\u001b[7;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m│ name │ text\u001b[7;53H │ \u001b[7;62H │ \u001b[7;73H \u001b[8;39H└──────┴────────┴─────────────┘\u001b[9;30H\u001b[38;2;110;196;255;48;2;24;27;34m[simple] \u001b[38;2;199;146;234;48;2;24;27;34madd\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mcolumn\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mto\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;139;144;154;48;2;24;27;34m:\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mbirth_year\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;139"] +[12.451259, "o", ";144;154;48;2;24;27;34m(\u001b[38;2;240;143;192;48;2;24;27;34mint\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[38;2;159;216;145;48;2;24;27;34m ✓\u001b[10;39H\u001b[38;2;230;230;230;48;2;24;27;34mauthors\u001b[10;52H \u001b[10;54H \u001b[10;61H \u001b[10;63H \u001b[10;75H \u001b[11;39H┌\u001b[11;52H┬\u001b[11;61H┬\u001b[11;75H┐\u001b[12;41HName\u001b[12;54HType \u001b[12;63HConstraints\u001b[13;39H├────────────┼────────┼─────────────┤\u001b[14;41Hid \u001b[14;54Hserial\u001b[14;63HPK\u001b[15;39H│ name │ text │ │\u001b[16;29H\u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m│ birth_year │ int │ │ \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[17;29H│\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m└────────────┴────────┴─────────────┘ \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[18;29H╰────────────────────────────────────────────────────────────╯\u001b[19;29H╭ \u001b[1m\u001b[38;2;110;196;255;48;2;24;27;34mSIMPLE\u001b[22m\u001b[38;2;74;82;101;48;2;24;27;34m \u001b[19;90H╮\u001b[20;29H│\u001b[38;2;199;146;234;48;2;24;27;34minsert\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34minto\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;86;182;194;48;2;24;27;34mname\u001b[38;2;139;144;154;48;2;24;27;34m,\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mbirth_year\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mvalues\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;195;232;141;48;2;24;27;34m'Ursula\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;74;82;101;48;2;24;27;34m│\u001b[21;29H╰────────────────────────────────────────────────────────────╯\u001b[22;29H╭\u001b[1m\u001b[38;2;230;230;230;48;2;24;27;34m Hint \u001b[22m\u001b[38;2;74;82;101;48;2;24;27;34m──────────────────────────────────────────────────────╮\u001b[23;30H\u001b[38;2;139;144;154;48;2;24;27;34mNext: `,`\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[12.494530, "o", "\u001b[23;30H\u001b[38;2;139;144;154;48;2;24;27;34mfor `birth_year`: Type an integer (e.g. 42, -7) or null\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[12.539581, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[12.584444, "o", "\u001b[23;30H\u001b[38;2;139;144;154;48;2;24;27;34mNext: `)`\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[12.629292, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[12.674792, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[12.719034, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[12.764269, "o", "\u001b[23;30H\u001b[38;2;139;144;154;48;2;24;27;34mSubmit with Enter\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[12.809135, "o", "\u001b[2;39H\u001b[38;2;230;230;230;48;2;24;27;34m│ Name │\u001b[2;48HType\u001b[2;55H│\u001b[2;57HConstraints\u001b[2;69H│\u001b[3;39H├\u001b[3;46H┼\u001b[3;55H┼\u001b[3;69H┤\u001b[4;41Hid \u001b[4;48Hserial\u001b[4;57HPK \u001b[5;39H│ name │ text │ │\u001b[6;39H└──────┴────────┴─────────────┘\u001b[7;30H\u001b[38;2;110;196;255;48;2;24;27;34m[simple] \u001b[38;2;199;146;234;48;2;24;27;34madd\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mcolumn\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mto\u001b[7;53H\u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;139;144;154;48;2;24;27;34m:\u001b[7;62H\u001b[38;2;86;182;194;48;2;24;27;34mbirth_year\u001b[7;73H\u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;240;143;192;48;2;24;27;34mint\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[38;2;159;216;145;48;2;24;27;34m ✓\u001b[8;39H\u001b[38;2;230;230;230;48;2;24;27;34mauthors \u001b[9;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m┌────────────┬────────┬─────────────┐ \u001b[10;39H│ Name \u001b[10;52H│\u001b[10;54HType\u001b[10;61H│\u001b[10;63HConstraints\u001b[10;75H│\u001b[11;39H├\u001b[11;52H┼\u001b[11;61H┼\u001b[11;75H┤\u001b[12;41Hid \u001b[12;54Hserial\u001b[12;63HPK \u001b[13;39H│ name │ text │ │\u001b[14;41Hbirth_year\u001b[14;54Hint \u001b[14;63H \u001b[15;39H└────────────┴────────┴─────────────┘\u001b[16;30H\u001b[38;2;110;196;255;48;2;24;27;34m[simple] \u001b[38;2;230;230;230;48;2;24;27;34mrunning: \u001b[38;2;199;146;234;48;2;24;27;34minsert\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34minto\u001b[16;60H\u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[16;68H\u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;86;182;194;48;2;24;27;34mname\u001b[38;2;139;144;154;48;2;24;27;34m,\u001b[16;75H\u001b[38;2;86;182;194;48;2;24;27;34mbirth_year\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[17;30H\u001b[38;2;199;146;234;48;2;24;27;34mvalues\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;195;232;141;48;2;24;27;34m'Ursula K. Le Guin'\u001b[38;2;139;144;154;48;2;24;27;34m,\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;247;140;108;48;2;24;27;34m1929\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[20;30H\u001b[7m \u001b[27m \u001b[20;37H \u001b[20;42H \u001b[20;50H \u001b[20;57H \u001b[20;69H \u001b[20;76H \u001b[23;30H\u001b[38;2;139;144;154;48;2;24;27;34mType a\u001b[23;37Hcommand — press Tab for options, `help` for a list\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[12.823446, "o", "\u001b[2;39H\u001b[38;2;230;230;230;48;2;24;27;34mauthors \u001b[2;48H \u001b[2;55H \u001b[2;57H \u001b[2;69H \u001b[3;39H┌\u001b[3;46H─\u001b[3;52H┬\u001b[3;55H─\u001b[3;61H┬\u001b[3;69H──────┐\u001b[4;41HName\u001b[4;46H \u001b[4;48H │ Type \u001b[4;61H│\u001b[4;63HConstraints\u001b[4;75H│\u001b[5;39H├────────────┼────────┼─────────────┤\u001b[6;39H│ id │ serial │ PK \u001b[6;75H│\u001b[7;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m│ name \u001b[7;50H │ text │ \u001b[7;73H │ \u001b[8;39H│ birth_year\u001b[8;52H│\u001b[8;54Hint\u001b[8;61H│\u001b[8;75H│\u001b[9;39H└\u001b[9;52H┴\u001b[9;61H┴\u001b[9;75H┘\u001b[10;30H\u001b[38;2;110;196;255;48;2;24;27;34m[simple] \u001b[38;2;199;146;234;48;2;24;27;34minsert\u001b[10;46Hinto\u001b[10;51H\u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[10;59H\u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;86;182;194;48;2;24;27;34mname\u001b[38;2;139;144;154;48;2;24;27;34m,\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mbirth_year\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[10;78H\u001b[38;2;199;146;234;48;2;24;27;34mvalues\u001b[11;30H\u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;195;232;141;48;2;24;27;34m'Ursula K. Le Guin'\u001b[38;2;139;144;154;48;2;24;27;34m,\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;247;140;108;48;2;24;27;34m1929\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[38;2;159;216;145;48;2;24;27;34m ✓\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[12;39H \u001b[12;41H1 row(s)\u001b[12;50Hinserted \u001b[12;61H \u001b[12;63H \u001b[12;75H \u001b[13;39H┌────┬───────────────────┬────────────┐\u001b[14;41Hid │ name \u001b[14;52H \u001b[14;54H \u001b[14;61H \u001b[14;64H│\u001b[14;66Hbirth_year\u001b[14;77H│\u001b[15;39H├\u001b[15;44H┼\u001b[15;52H─\u001b[15;61H─\u001b[15;64H┼\u001b[15;75H──┤\u001b[16;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m│ 1 │ Ursula K. Le Guin │ \u001b[16;68H 1929 │ \u001b[17;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m└────┴───────────────────┴────────────┘\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[12.826762, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[12.830549, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[13.834857, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[14.199839, "o", "\u001b[20;30H\u001b[38;2;255;107;107;48;2;24;27;34ms\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;30H\u001b[27m\u001b[38;2;199;146;234;48;2;24;27;34msave\u001b[23;35Hshow\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[14.244471, "o", "\u001b[20;31H\u001b[38;2;255;107;107;48;2;24;27;34mh\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;31H\u001b[27m\u001b[38;2;199;146;234;48;2;24;27;34mhow\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[14.289484, "o", "\u001b[20;32H\u001b[38;2;255;107;107;48;2;24;27;34mo\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[14.334430, "o", "\u001b[20;30H\u001b[38;2;199;146;234;48;2;24;27;34mshow\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[14.380139, "o", "\u001b[20;34H\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[7m \u001b[23;30H\u001b[27m\u001b[38;2;199;146;234;48;2;24;27;34mdata\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mtable\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mtables\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mrelationships\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mindexes\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mrelationship\u001b[38;2;139;144;154;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mindex\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[14.424442, "o", "\u001b[20;35H\u001b[38;2;255;107;107;48;2;24;27;34md\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;34H\u001b[27m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[14.469205, "o", "\u001b[20;36H\u001b[38;2;255;107;107;48;2;24;27;34ma\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[14.514130, "o", "\u001b[20;37H\u001b[38;2;255;107;107;48;2;24;27;34mt\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[14.559254, "o", "\u001b[20;35H\u001b[38;2;199;146;234;48;2;24;27;34mdata\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[14.604142, "o", "\u001b[20;39H\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[7m \u001b[23;30H\u001b[27m\u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[14.649333, "o", "\u001b[20;40H\u001b[38;2;255;107;107;48;2;24;27;34ma\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[14.694124, "o", "\u001b[20;41H\u001b[38;2;255;107;107;48;2;24;27;34mu\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[14.739404, "o", "\u001b[20;42H\u001b[38;2;255;107;107;48;2;24;27;34mt\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[14.784126, "o", "\u001b[20;43H\u001b[38;2;255;107;107;48;2;24;27;34mh\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[14.830038, "o", "\u001b[20;44H\u001b[38;2;255;107;107;48;2;24;27;34mo\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[14.874067, "o", "\u001b[20;45H\u001b[38;2;255;107;107;48;2;24;27;34mr\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[14.919289, "o", "\u001b[20;40H\u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;30H\u001b[27m\u001b[38;2;139;144;154;48;2;24;27;34mSubmit with Enter\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[14.964618, "o", "\u001b[2;39H\u001b[38;2;230;230;230;48;2;24;27;34m┌────────────┬────────┬─────────────┐\u001b[3;39H│ Name │ Type │ Constraints │\u001b[4;39H├────────────┼────────┼─────────────┤\u001b[5;39H│ id │ serial │ PK │\u001b[6;41Hname\u001b[6;54Ht\u001b[6;56Hxt \u001b[6;63H \u001b[7;41Hbirth_year\u001b[7;54Hint \u001b[8;39H└────────────┴────────┴─────────────┘\u001b[9;30H\u001b[38;2;110;196;255;48;2;24;27;34m[simple] \u001b[38;2;199;146;234;48;2;24;27;34minsert\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34minto\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;86;182;194;48;2;24;27;34mname\u001b[38;2;139;144;154;48;2;24;27;34m,\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mbirth_year\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[9;78H\u001b[38;2;199;146;234;48;2;24;27;34mvalues\u001b[10;30H\u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;195;232;141;48;2;24;27;34m'Ursula K. Le Guin'\u001b[38;2;139;144;154;48;2;24;27;34m,\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;247;140;108;48;2;24;27;34m1929\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[38;2;159;216;145;48;2;24;27;34m ✓\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[10;66H \u001b[10;78H \u001b[11;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m 1 row(s) inserted \u001b[12;39H┌────┬───────────────────┬────────────┐\u001b[13;39H│ id │ name │ birth_year │\u001b[14;39H├────┼───────────────────┼────────────┤\u001b[15;39H│ 1 │ Ursula K. Le Guin │ 1929 │\u001b[16;39H└────┴───────────────────┴────────────┘\u001b[17;30H\u001b[38;2;110;196;255;48;2;24;27;34m[simple] \u001b[38;2;230;230;230;48;2;24;27;34mrunning: \u001b[38;2;199;146;234;48;2;24;27;34mshow\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mdata\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[20;30H\u001b[7m \u001b[27m \u001b[20;35H \u001b[20;40H \u001b[23;30H\u001b[38;2;139;144;154;48;2;24;27;34mType a\u001b[23;37Hcommand — press Tab for options, `help` for a list\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[14.968284, "o", "\u001b[2;39H\u001b[38;2;230;230;230;48;2;24;27;34m│ birth_year │ int │ │\u001b[3;39H└────────────┴────────┴─────────────┘\u001b[4;30H\u001b[38;2;110;196;255;48;2;24;27;34m[simple] \u001b[38;2;199;146;234;48;2;24;27;34minsert\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34minto\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;86;182;194;48;2;24;27;34mname\u001b[38;2;139;144;154;48;2;24;27;34m,\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mbirth_year\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[4;78H\u001b[38;2;199;146;234;48;2;24;27;34mvalues\u001b[5;30H\u001b[38;2;139;144;154;48;2;24;27;34m(\u001b[38;2;195;232;141;48;2;24;27;34m'Ursula K. Le Guin'\u001b[38;2;139;144;154;48;2;24;27;34m,\u001b[5;52H\u001b[38;2;247;140;108;48;2;24;27;34m1929\u001b[38;2;139;144;154;48;2;24;27;34m)\u001b[38;2;159;216;145;48;2;24;27;34m ✓\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[5;61H \u001b[5;63H \u001b["] +[14.968327, "o", "5;75H \u001b[6;39H \u001b[6;41H1 row(s)\u001b[6;50Hinserted\u001b[6;61H \u001b[6;75H \u001b[7;39H┌────┬───────────────────┬────────────┐\u001b[8;39H│ id │ name │ birth_year\u001b[8;77H│\u001b[9;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m├────┼───────────────────┼────────────┤ \u001b[10;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m│ 1 │ Ursula K. Le Guin\u001b[10;64H│\u001b[10;72H1929\u001b[10;77H│\u001b[11;39H└────┴───────────────────┴────────────┘\u001b[12;30H\u001b[38;2;110;196;255;48;2;24;27;34m[simple] \u001b[38;2;199;146;234;48;2;24;27;34mshow\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;199;146;234;48;2;24;27;34mdata\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[38;2;86;182;194;48;2;24;27;34mauthors\u001b[38;2;159;216;145;48;2;24;27;34m ✓\u001b[38;2;230;230;230;48;2;24;27;34m "] +[14.968376, "o", " \u001b[13;39H┌────┬───────────────────┬────────────┐\u001b[14;39H│ id │ name │ birth_year │\u001b[15;39H├────┼───────────────────┼────────────┤\u001b[16;39H│ 1 │ Ursula K. Le Guin │ 1929 │\u001b[17;30H\u001b[38;2;159;216;145;48;2;24;27;34m[system] \u001b[38;2;230;230;230;48;2;24;27;34m└────┴───────────────────┴────────────┘\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[14.971924, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[14.975318, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[15.980462, "o", "\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[16.855455, "o", "\u001b[20;30H\u001b[38;2;255;107;107;48;2;24;27;34mq\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;30H\u001b[27m\u001b[38;2;199;146;234;48;2;24;27;34mquit\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[16.900429, "o", "\u001b[20;31H\u001b[38;2;255;107;107;48;2;24;27;34mu\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[16.945441, "o", "\u001b[20;32H\u001b[38;2;255;107;107;48;2;24;27;34mi\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[16.992461, "o", "\u001b[20;30H\u001b[38;2;199;146;234;48;2;24;27;34mquit\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[23;30H\u001b[27m\u001b[38;2;139;144;154;48;2;24;27;34mSubmit with Enter\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[17.036780, "o", "\u001b[20;30H\u001b[7m\u001b[38;2;230;230;230;48;2;24;27;34m \u001b[27m \u001b[23;30H\u001b[38;2;139;144;154;48;2;24;27;34mType a\u001b[23;37Hcommand — press Tab for options, `help` for a list\u001b[39m\u001b[49m\u001b[59m\u001b[0m\u001b[?25l"] +[17.140085, "o", "\u001b[?1049l\u001b[?25h"] +[17.142911, "o", "$ "] +[17.187911, "o", "\r\n"] diff --git a/website/src/components/Cast.astro b/website/src/components/Cast.astro new file mode 100644 index 0000000..62f346b --- /dev/null +++ b/website/src/components/Cast.astro @@ -0,0 +1,72 @@ +--- +/** + * Cast.astro — embeds an asciinema `.cast` recording via asciinema-player + * (ADR-website-001 §2). Client-side island: the player script is bundled and + * initialises every `.asciinema-cast` element on the page from its data + * attributes, so multiple casts on one page work without per-instance scripts. + * + * `.cast` files live in `public/casts/` and are generated from the sources in + * `casts-src/` (run `pnpm casts`). Recordings are regenerable artifacts — the + * source command-lists are the durable thing (re-run, re-record as the app + * evolves). + */ +import 'asciinema-player/dist/bundle/asciinema-player.css'; + +interface Props { + /** Path to the cast, e.g. `/casts/quickstart.cast`. */ + src: string; + autoPlay?: boolean; + loop?: boolean; + /** Skip idle gaps longer than this many seconds (keeps demos snappy). */ + idleTimeLimit?: number; + /** Poster frame shown before play, e.g. `npt:0:2` (the frame at 2s). */ + poster?: string; + cols?: number; + rows?: number; + theme?: string; +} + +const { + src, + autoPlay = false, + loop = false, + idleTimeLimit = 2, + poster = 'npt:0:2', + cols, + rows, + theme = 'asciinema', +} = Astro.props; + +// Serialise options for the client script; nulls are dropped there. +const opts = JSON.stringify({ + autoPlay, + loop, + idleTimeLimit, + poster, + cols, + rows, + theme, + fit: 'width', + controls: true, +}); +--- + +
+ + diff --git a/website/src/components/Demo.astro b/website/src/components/Demo.astro new file mode 100644 index 0000000..121a5bb --- /dev/null +++ b/website/src/components/Demo.astro @@ -0,0 +1,35 @@ +--- +/** + * Demo.astro — the stable demo seam (ADR-website-001 §3). Call sites use this, + * not Cast directly, so a future in-page WASM playground island can replace + * the asciinema player behind the same `{ src, title, autoplay }` contract + * with no change to the pages that embed it. + */ +import Cast from './Cast.astro'; + +interface Props { + /** Path to the cast, e.g. `/casts/quickstart.cast`. */ + src: string; + /** Optional caption shown above the demo. */ + title?: string; + autoplay?: boolean; +} + +const { src, title, autoplay = false } = Astro.props; +--- + +
+ {title &&
{title}
} + +
+ + diff --git a/website/src/content/docs/index.mdx b/website/src/content/docs/index.mdx index 3fd8352..a9a4b90 100644 --- a/website/src/content/docs/index.mdx +++ b/website/src/content/docs/index.mdx @@ -14,6 +14,7 @@ hero: --- import { Card, CardGrid, LinkCard } from '@astrojs/starlight/components'; +import Demo from '../../components/Demo.astro'; RDBMS Playground is a cross-platform terminal app that gives you a safe sandbox for exploring relational database concepts: tables, columns, @@ -21,6 +22,8 @@ primary and foreign keys, relationships, indexes, queries, and query plans. It is built for learning — from your first table to writing raw SQL. + + Start in **simple mode** — a friendly, keyword-based command language —