This file is a merged representation of a subset of the codebase, containing files not matching ignore patterns, combined into a single document by Repomix.

================================================================
File Summary
================================================================

Purpose:
--------
This file contains a packed representation of the entire repository's contents.
It is designed to be easily consumable by AI systems for analysis, code review,
or other automated processes.

File Format:
------------
The content is organized as follows:
1. This summary section
2. Repository information
3. Directory structure
4. Multiple file entries, each consisting of:
  a. A separator line (================)
  b. The file path (File: path/to/file)
  c. Another separator line
  d. The full contents of the file
  e. A blank line

Usage Guidelines:
-----------------
- This file should be treated as read-only. Any changes should be made to the
  original repository files, not this packed version.
- When processing this file, use the file path to distinguish
  between different files in the repository.
- Be aware that this file may contain sensitive information. Handle it with
  the same level of security as you would the original repository.

Notes:
------
- Some files may have been excluded based on .gitignore rules and Repomix's configuration
- Binary files are not included in this packed representation. Please refer to the Repository Structure section for a complete list of file paths, including binary files
- Files matching these patterns are excluded: target/
- Files matching patterns in .gitignore are excluded
- Files matching default ignore patterns are excluded

Additional Info:
----------------

================================================================
Directory Structure
================================================================
better_demo.cast
better_demo.svg
decoding.tape
first_run.tape
lemmeknow.cast
lemmeknow.svg
main_demo.cast
main_demo.svg
README.md

================================================================
Files
================================================================

================
File: better_demo.cast
================
{"version": 2, "width": 123, "height": 45, "timestamp": 1672151013, "env": {"SHELL": "/bin/zsh", "TERM": "xterm-256color"}}
[0.106523, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\u001b[01;32m➜  \u001b[36m~\u001b[00m \u001b[K"]
[0.106621, "o", "\u001b[?1h\u001b=\u001b[?2004h"]
[1.029272, "o", "\u001b[7mecho 'ciphey supports file input, and regular expressions. If you know a part of the plaintext you can use regex as a cr\u001b[7mi\u001b[7mb'\u001b[27m\u001b[K"]
[1.70544, "o", "\u001b[A\u001b[2C\u001b[27me\u001b[27mc\u001b[27mh\u001b[27mo\u001b[27m \u001b[27m'\u001b[27mA\u001b[27mr\u001b[27me\u001b[27ms\u001b[27m \u001b[27ms\u001b[27mu\u001b[27mp\u001b[27mp\u001b[27mo\u001b[27mr\u001b[27mt\u001b[27ms\u001b[27m \u001b[27mf\u001b[27mi\u001b[27ml\u001b[27me\u001b[27m \u001b[27mi\u001b[27mn\u001b[27mp\u001b[27mu\u001b[27mt\u001b[27m,\u001b[27m \u001b[27ma\u001b[27mn\u001b[27md\u001b[27m \u001b[27mr\u001b[27me\u001b[27mg\u001b[27mu\u001b[27ml\u001b[27ma\u001b[27mr\u001b[27m \u001b[27me\u001b[27mx\u001b[27mp\u001b[27mr\u001b[27me\u001b[27ms\u001b[27ms\u001b[27mi\u001b[27mo\u001b[27mn\u001b[27ms\u001b[27m.\u001b[27m \u001b[27mI\u001b[27mf\u001b[27m \u001b[27my\u001b[27mo\u001b[27mu\u001b[27m \u001b[27mk\u001b[27mn\u001b[27mo\u001b[27mw\u001b[27m \u001b[27ma\u001b[27m \u001b[27mp\u001b[27ma\u001b[27mr\u001b[27mt\u001b[27m \u001b[27mo\u001b[27mf\u001b[27m \u001b[27mt\u001b[27mh\u001b[27me\u001b[27m \u001b[27mp\u001b[27ml\u001b[27ma\u001b[27mi\u001b[27mn\u001b[27mt\u001b[27me\u001b[27mx\u001b[27mt\u001b[27m \u001b[27my\u001b[27mo\u001b[27mu\u001b[27m \u001b[27mc\u001b[27ma\u001b[27mn\u001b[27m \u001b[27mu\u001b[27ms\u001b[27me\u001b[27m \u001b[27mr\u001b[27me\u001b[27mg\u001b[27me\u001b[27mx\u001b[27m \u001b[27ma\u001b[27ms\u001b[27m \u001b[27ma\u001b[27m \u001b[27mc\u001b[27mri\u001b[27mb\u001b[27m'"]
[1.705862, "o", "\u001b[?1l\u001b>\u001b[?2004l\r\r\n"]
[1.707432, "o", "\u001b]2;echo \u0007\u001b]1;echo\u0007"]
[1.707476, "o", "ciphey supports file input, and regular expressions. If you know a part of the plaintext you can use regex as a crib\r\n"]
[1.729224, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\u001b[01;32m➜  \u001b[36m~\u001b[00m \u001b[K"]
[1.729396, "o", "\u001b[?1h\u001b=\u001b[?2004h"]
[8.159895, "o", "\u001b[7mciphey -f crack.txt -r hello\u001b[27m"]
[8.972236, "o", "\u001b[26D\u001b[27ma\u001b[27mr\u001b[27me\u001b[27ms\u001b[27m \u001b[27m-\u001b[27mf\u001b[27m \u001b[27mc\u001b[27mr\u001b[27ma\u001b[27mc\u001b[27mk\u001b[27m.\u001b[27mt\u001b[27mx\u001b[27mt\u001b[27m \u001b[27m-\u001b[27mr\u001b[27m \u001b[27mh\u001b[27me\u001b[27ml\u001b[27ml\u001b[27mo"]
[8.972428, "o", "\u001b[?1l\u001b>"]
[8.972445, "o", "\u001b[?2004l\r\r\n"]
[8.976107, "o", "\u001b]2;ciphey -f crack.txt -r hello\u0007\u001b]1;ciphey\u0007"]
[9.574511, "o", "🕵️ I think the plaintext is \u001b[1;33mRegex matched: hello\u001b[0m.\r\nPossible plaintext: '\u001b[1;33mhello, world!\u001b[0m' (y/N): \r\n"]
[10.491995, "o", "y"]
[10.946224, "o", "\r\n"]
[10.952582, "o", "\r\n🥳 ciphey has decoded 205 times times.\r\nIf you would have used Ciphey, it would have taken you 41 seconds\r\n\r\n"]
[10.956232, "o", "The plaintext is: \r\n\u001b[1;33mhello, world!\u001b[0m\r\nand the decoders used are \u001b[1;33mAtbash → Caesar Cipher → Base64 → Caesar Cipher\u001b[0m\r\n"]
[10.956748, "o", "\u001b]2;autumnskerritt@autumns-MacBook-Air:~\u0007\u001b]1;~\u0007"]
[10.964685, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\u001b[01;32m➜  \u001b[36m~\u001b[00m \u001b[K"]
[10.964745, "o", "\u001b[?1h\u001b="]
[10.964783, "o", "\u001b[?2004h"]
[17.953008, "o", "\u001b[?2004l\r\r\n"]

================
File: better_demo.svg
================
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="840" height="537.62"><rect width="840" height="537.62" rx="5" ry="5" class="a"/><svg y="0%" x="0%"><circle cx="20" cy="20" r="6" fill="#ff5f58"/><circle cx="40" cy="20" r="6" fill="#ffbd2e"/><circle cx="60" cy="20" r="6" fill="#18c132"/></svg><svg height="477.62" viewBox="0 0 80 47.762" width="800" x="15" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="50"><style>@keyframes n{0%{transform:translateX(0)}.59%{transform:translateX(-160px)}5.73%{transform:translateX(-240px)}9.5%{transform:translateX(-400px)}9.51%{transform:translateX(-560px)}9.63%{transform:translateX(-720px)}45.45%{transform:translateX(-800px)}49.98%{transform:translateX(-1040px)}50%{transform:translateX(-1120px)}53.33%{transform:translateX(-1200px)}58.44%{transform:translateX(-1280px)}60.97%{transform:translateX(-1360px)}61.01%{transform:translateX(-1440px)}61.03%{transform:translateX(-1600px)}61.07%{transform:translateX(-1840px)}to{transform:translateX(-1920px)}}.a{fill:#282d35}.f,.g{fill:#a8cc8c;font-weight:700;white-space:pre}.g{fill:#66c2cd}.h{fill:#b9c0cb}.i,.j,.k{fill:#282d35;white-space:pre}.j,.k{fill:#b9c0cb}.k{fill:#dbab79;font-weight:700}</style><g font-family="Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace" font-size="1.67"><defs><symbol id="1"><text y="1.67" class="f">➜</text><text x="3.006" y="1.67" class="g">~</text></symbol><symbol id="2"><text y="1.67" class="f">➜</text><text x="3.006" y="1.67" class="g">~</text><path class="h" d="M5.01 0h43v2.171h-43z"/><text x="5.01" y="1.67" class="i">echo &apos;ciphey supports file input, and regular</text><text x="48.096" y="1.67" class="j">echo</text><text x="53.106" y="1.67" class="j">&apos;ciphey</text><text x="59.118" y="1.67" class="j">supports</text><text x="68.136" y="1.67" class="j">file</text><text x="73.146" y="1.67" class="j">input,</text></symbol><symbol id="3"><text y="1.67" class="j">and</text><text x="4.008" y="1.67" class="j">regular</text><text x="12.024" y="1.67" class="j">expressions.</text><text x="25.05" y="1.67" class="j">If</text><text x="28.056" y="1.67" class="j">you</text><text x="32.064" y="1.67" class="j">know</text><text x="37.074" y="1.67" class="j">a</text><text x="39.078" y="1.67" class="j">part</text><text x="44.088" y="1.67" class="j">of</text><text x="47.094" y="1.67" class="j">the</text><text x="51.102" y="1.67" class="j">plaintext</text><text x="61.122" y="1.67" class="j">you</text><text x="65.13" y="1.67" class="j">can</text><text x="69.138" y="1.67" class="j">use</text><text x="73.146" y="1.67" class="j">regex</text><text x="79.158" y="1.67" class="j">a</text></symbol><symbol id="4"><text y="1.67" class="j">s</text><text x="2.004" y="1.67" class="j">a</text><text x="4.008" y="1.67" class="j">crib&apos;</text></symbol><symbol id="5"><text y="1.67" class="j">ciphey</text><text x="5.01" y="1.67" class="j">supports</text><text x="14.028" y="1.67" class="j">file</text><text x="19.038" y="1.67" class="j">input,</text><text x="26.052" y="1.67" class="j">and</text><text x="30.06" y="1.67" class="j">regular</text><text x="38.076" y="1.67" class="j">expressions.</text><text x="51.102" y="1.67" class="j">If</text><text x="54.108" y="1.67" class="j">you</text><text x="58.116" y="1.67" class="j">know</text><text x="63.126" y="1.67" class="j">a</text><text x="65.13" y="1.67" class="j">part</text><text x="70.14" y="1.67" class="j">of</text><text x="73.146" y="1.67" class="j">the</text><text x="77.154" y="1.67" class="j">pla</text></symbol><symbol id="6"><text y="1.67" class="j">intext</text><text x="7.014" y="1.67" class="j">you</text><text x="11.022" y="1.67" class="j">can</text><text x="15.03" y="1.67" class="j">use</text><text x="19.038" y="1.67" class="j">regex</text><text x="25.05" y="1.67" class="j">as</text><text x="28.056" y="1.67" class="j">a</text><text x="30.06" y="1.67" class="j">crib</text></symbol><symbol id="7"><text y="1.67" class="f">➜</text><text x="3.006" y="1.67" class="g">~</text><text x="5.01" y="1.67" class="j">ciphey</text><text x="10.02" y="1.67" class="j">-f</text><text x="13.026" y="1.67" class="j">crack.txt</text><text x="23.046" y="1.67" class="j">-r</text><text x="26.052" y="1.67" class="j">hello</text></symbol><symbol id="8"><text y="1.67" class="j">🕵️</text><text x="4.008" y="1.67" class="j">I</text><text x="6.012" y="1.67" class="j">think</text><text x="12.024" y="1.67" class="j">the</text><text x="16.032" y="1.67" class="j">plaintext</text><text x="26.052" y="1.67" class="j">is</text><text x="29.058" y="1.67" class="k">Regex</text><text x="35.07" y="1.67" class="k">matched:</text><text x="44.088" y="1.67" class="k">hello</text><text x="49.098" y="1.67" class="j">.</text></symbol><symbol id="9"><text y="1.67" class="j">Possible</text><text x="9.018" y="1.67" class="j">plaintext:</text><text x="20.04" y="1.67" class="j">&apos;</text><text x="21.042" y="1.67" class="k">hello,</text><text x="28.056" y="1.67" class="k">world!</text><text x="34.068" y="1.67" class="j">&apos;</text><text x="36.072" y="1.67" class="j">(y/N):</text></symbol><symbol id="10"><text y="1.67" class="j">y</text></symbol><symbol id="11"><text y="1.67" class="j">🥳</text><text x="3.006" y="1.67" class="j">ciphey</text><text x="8.016" y="1.67" class="j">has</text><text x="12.024" y="1.67" class="j">decoded</text><text x="20.04" y="1.67" class="j">205</text><text x="24.048" y="1.67" class="j">times</text><text x="30.06" y="1.67" class="j">times.</text></symbol><symbol id="12"><text y="1.67" class="j">If</text><text x="3.006" y="1.67" class="j">you</text><text x="7.014" y="1.67" class="j">would</text><text x="13.026" y="1.67" class="j">have</text><text x="18.036" y="1.67" class="j">used</text><text x="23.046" y="1.67" class="j">Ciphey,</text><text x="31.062" y="1.67" class="j">it</text><text x="34.068" y="1.67" class="j">would</text><text x="40.08" y="1.67" class="j">have</text><text x="45.09" y="1.67" class="j">taken</text><text x="51.102" y="1.67" class="j">you</text><text x="55.11" y="1.67" class="j">41</text><text x="58.116" y="1.67" class="j">seconds</text></symbol><symbol id="13"><text y="1.67" class="j">The</text><text x="4.008" y="1.67" class="j">plaintext</text><text x="14.028" y="1.67" class="j">is:</text></symbol><symbol id="14"><text y="1.67" class="k">hello,</text><text x="7.014" y="1.67" class="k">world!</text></symbol><symbol id="15"><text y="1.67" class="j">and</text><text x="4.008" y="1.67" class="j">the</text><text x="8.016" y="1.67" class="j">decoders</text><text x="17.034" y="1.67" class="j">used</text><text x="22.044" y="1.67" class="j">are</text><text x="26.052" y="1.67" class="k">Atbash</text><text x="33.066" y="1.67" class="k">→</text><text x="35.07" y="1.67" class="k">Caesar</text><text x="42.084" y="1.67" class="k">Cipher</text><text x="49.098" y="1.67" class="k">→</text><text x="51.102" y="1.67" class="k">Base64</text><text x="58.116" y="1.67" class="k">→</text><text x="60.12" y="1.67" class="k">Caesar</text><text x="67.134" y="1.67" class="k">Cipher</text></symbol><symbol id="a"><path fill="transparent" d="M0 0h80v23H0z"/></symbol><symbol id="b"><path fill="#6f7683" d="M0 0h1.102v2.171H0z"/></symbol></defs><path class="a" d="M0 0h80v47.762H0z"/><g style="animation-duration:17.953008s;animation-iteration-count:infinite;animation-name:n;animation-timing-function:steps(1,end)"><svg width="2000"><svg><use xlink:href="#a"/><use xlink:href="#b" x="-.004"/></svg><svg x="80"><use xlink:href="#a"/><use xlink:href="#b" x="4.996"/><use xlink:href="#1"/></svg><svg x="160"><use xlink:href="#a"/><use xlink:href="#b" x="4.996"/><use xlink:href="#1"/></svg><svg x="240"><use xlink:href="#a"/><use xlink:href="#b" x="45.996" y="2.146"/><text y="1.67" class="f">➜</text><text x="3.006" y="1.67" class="g">~</text><path class="h" d="M5.01 0h75v2.171h-75z"/><text x="5.01" y="1.67" class="i">echo &apos;ciphey supports file input, and regular expressions. If you know a part</text><path class="h" d="M0 2.171h46v2.171H0z"/><text y="3.841" class="i">of the plaintext you can use regex as a crib&apos;</text></svg><svg x="320"><use xlink:href="#a"/><use xlink:href="#b" x="8.996" y="4.317"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/></svg><svg x="400"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="6.488"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/></svg><svg x="480"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="6.488"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/></svg><svg x="560"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="10.83"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/></svg><svg x="640"><use xlink:href="#a"/><use xlink:href="#b" x="4.996" y="10.83"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#1" y="10.855"/></svg><svg x="720"><use xlink:href="#a"/><use xlink:href="#b" x="4.996" y="10.83"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#1" y="10.855"/></svg><svg x="800"><use xlink:href="#a"/><use xlink:href="#b" x="30.996" y="10.83"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><text y="12.525" class="f">➜</text><text x="3.006" y="12.525" class="g">~</text><path class="h" d="M5.01 10.855h26v2.171h-26z"/><text x="5.01" y="12.525" class="i">ciphey -f crack.txt -r hello</text></svg><svg x="880"><use xlink:href="#a"/><use xlink:href="#b" x="30.996" y="10.83"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/></svg><svg x="960"><use xlink:href="#a"/><use xlink:href="#b" x="30.996" y="10.83"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/></svg><svg x="1040"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="13.001"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/></svg><svg x="1120"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="13.001"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/></svg><svg x="1200"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="17.343"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/><use xlink:href="#8" y="13.026"/><use xlink:href="#9" y="15.197"/></svg><svg x="1280"><use xlink:href="#a"/><use xlink:href="#b" x=".996" y="17.343"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/><use xlink:href="#8" y="13.026"/><use xlink:href="#9" y="15.197"/><use xlink:href="#10" y="17.368"/></svg><svg x="1360"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="19.514"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/><use xlink:href="#8" y="13.026"/><use xlink:href="#9" y="15.197"/><use xlink:href="#10" y="17.368"/></svg><svg x="1440"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="28.198"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/><use xlink:href="#8" y="13.026"/><use xlink:href="#9" y="15.197"/><use xlink:href="#10" y="17.368"/><use xlink:href="#11" y="21.71"/><use xlink:href="#12" y="23.881"/></svg><svg x="1520"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="34.711"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/><use xlink:href="#8" y="13.026"/><use xlink:href="#9" y="15.197"/><use xlink:href="#10" y="17.368"/><use xlink:href="#11" y="21.71"/><use xlink:href="#12" y="23.881"/><use xlink:href="#13" y="28.223"/><use xlink:href="#14" y="30.394"/><use xlink:href="#15" y="32.565"/></svg><svg x="1600"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="34.711"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/><use xlink:href="#8" y="13.026"/><use xlink:href="#9" y="15.197"/><use xlink:href="#10" y="17.368"/><use xlink:href="#11" y="21.71"/><use xlink:href="#12" y="23.881"/><use xlink:href="#13" y="28.223"/><use xlink:href="#14" y="30.394"/><use xlink:href="#15" y="32.565"/></svg><svg x="1680"><use xlink:href="#a"/><use xlink:href="#b" x="4.996" y="34.711"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/><use xlink:href="#8" y="13.026"/><use xlink:href="#9" y="15.197"/><use xlink:href="#10" y="17.368"/><use xlink:href="#11" y="21.71"/><use xlink:href="#12" y="23.881"/><use xlink:href="#13" y="28.223"/><use xlink:href="#14" y="30.394"/><use xlink:href="#15" y="32.565"/><use xlink:href="#1" y="34.736"/></svg><svg x="1760"><use xlink:href="#a"/><use xlink:href="#b" x="4.996" y="34.711"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/><use xlink:href="#8" y="13.026"/><use xlink:href="#9" y="15.197"/><use xlink:href="#10" y="17.368"/><use xlink:href="#11" y="21.71"/><use xlink:href="#12" y="23.881"/><use xlink:href="#13" y="28.223"/><use xlink:href="#14" y="30.394"/><use xlink:href="#15" y="32.565"/><use xlink:href="#1" y="34.736"/></svg><svg x="1840"><use xlink:href="#a"/><use xlink:href="#b" x="4.996" y="34.711"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/><use xlink:href="#8" y="13.026"/><use xlink:href="#9" y="15.197"/><use xlink:href="#10" y="17.368"/><use xlink:href="#11" y="21.71"/><use xlink:href="#12" y="23.881"/><use xlink:href="#13" y="28.223"/><use xlink:href="#14" y="30.394"/><use xlink:href="#15" y="32.565"/><use xlink:href="#1" y="34.736"/></svg><svg x="1920"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="36.882"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/><use xlink:href="#8" y="13.026"/><use xlink:href="#9" y="15.197"/><use xlink:href="#10" y="17.368"/><use xlink:href="#11" y="21.71"/><use xlink:href="#12" y="23.881"/><use xlink:href="#13" y="28.223"/><use xlink:href="#14" y="30.394"/><use xlink:href="#15" y="32.565"/><use xlink:href="#1" y="34.736"/></svg></svg></g></g></svg></svg>

================
File: decoding.tape
================
# VHS documentation
#
# Output:
#   Output <path>.gif               Create a GIF output at the given <path>
#   Output <path>.mp4               Create an MP4 output at the given <path>
#   Output <path>.webm              Create a WebM output at the given <path>
#
# Require:
#   Require <string>                Ensure a program is on the $PATH to proceed
#
# Settings:
#   Set FontSize <number>           Set the font size of the terminal
#   Set FontFamily <string>         Set the font family of the terminal
#   Set Height <number>             Set the height of the terminal
#   Set Width <number>              Set the width of the terminal
#   Set LetterSpacing <float>       Set the font letter spacing (tracking)
#   Set LineHeight <float>          Set the font line height
#   Set LoopOffset <float>%         Set the starting frame offset for the GIF loop
#   Set Theme <json|string>         Set the theme of the terminal
#   Set Padding <number>            Set the padding of the terminal
#   Set Framerate <number>          Set the framerate of the recording
#   Set PlaybackSpeed <float>       Set the playback speed of the recording
#   Set MarginFill <file|#000000>   Set the file or color the margin will be filled with.
#   Set Margin <number>             Set the size of the margin. Has no effect if MarginFill isn't set.
#   Set BorderRadius <number>       Set terminal border radius, in pixels.
#   Set WindowBar <string>          Set window bar type. (one of: Rings, RingsRight, Colorful, ColorfulRight)
#   Set WindowBarSize <number>      Set window bar size, in pixels. Default is 40.
#   Set TypingSpeed <time>          Set the typing speed of the terminal. Default is 50ms.
#
# Sleep:
#   Sleep <time>                    Sleep for a set amount of <time> in seconds
#
# Type:
#   Type[@<time>] "<characters>"    Type <characters> into the terminal with a
#                                   <time> delay between each character
#
# Keys:
#   Escape[@<time>] [number]        Press the Escape key
#   Backspace[@<time>] [number]     Press the Backspace key
#   Delete[@<time>] [number]        Press the Delete key
#   Insert[@<time>] [number]        Press the Insert key
#   Down[@<time>] [number]          Press the Down key
#   Enter[@<time>] [number]         Press the Enter key
#   Space[@<time>] [number]         Press the Space key
#   Tab[@<time>] [number]           Press the Tab key
#   Left[@<time>] [number]          Press the Left Arrow key
#   Right[@<time>] [number]         Press the Right Arrow key
#   Up[@<time>] [number]            Press the Up Arrow key
#   Down[@<time>] [number]          Press the Down Arrow key
#   PageUp[@<time>] [number]        Press the Page Up key
#   PageDown[@<time>] [number]      Press the Page Down key
#   Ctrl+<key>                      Press the Control key + <key> (e.g. Ctrl+C)
#
# Display:
#   Hide                            Hide the subsequent commands from the output
#   Show                            Show the subsequent commands in the output

Output decoding.gif

Require echo

Set Shell "bash"
Set FontSize 32
Set Width 1200
Set Height 600

Type "echo 'Welcome to VHS!'" Sleep 500ms  Enter

Sleep 5s

================
File: first_run.tape
================
# VHS documentation
#
# Output:
#   Output <path>.gif               Create a GIF output at the given <path>
#   Output <path>.mp4               Create an MP4 output at the given <path>
#   Output <path>.webm              Create a WebM output at the given <path>
#
# Require:
#   Require <string>                Ensure a program is on the $PATH to proceed
#
# Settings:
#   Set FontSize <number>           Set the font size of the terminal
#   Set FontFamily <string>         Set the font family of the terminal
#   Set Height <number>             Set the height of the terminal
#   Set Width <number>              Set the width of the terminal
#   Set LetterSpacing <float>       Set the font letter spacing (tracking)
#   Set LineHeight <float>          Set the font line height
#   Set LoopOffset <float>%         Set the starting frame offset for the GIF loop
#   Set Theme <json|string>         Set the theme of the terminal
#   Set Padding <number>            Set the padding of the terminal
#   Set Framerate <number>          Set the framerate of the recording
#   Set PlaybackSpeed <float>       Set the playback speed of the recording
#   Set MarginFill <file|#000000>   Set the file or color the margin will be filled with.
#   Set Margin <number>             Set the size of the margin. Has no effect if MarginFill isn't set.
#   Set BorderRadius <number>       Set terminal border radius, in pixels.
#   Set WindowBar <string>          Set window bar type. (one of: Rings, RingsRight, Colorful, ColorfulRight)
#   Set WindowBarSize <number>      Set window bar size, in pixels. Default is 40.
#   Set TypingSpeed <time>          Set the typing speed of the terminal. Default is 50ms.
#
# Sleep:
#   Sleep <time>                    Sleep for a set amount of <time> in seconds
#
# Type:
#   Type[@<time>] "<characters>"    Type <characters> into the terminal with a
#                                   <time> delay between each character
#
# Keys:
#   Escape[@<time>] [number]        Press the Escape key
#   Backspace[@<time>] [number]     Press the Backspace key
#   Delete[@<time>] [number]        Press the Delete key
#   Insert[@<time>] [number]        Press the Insert key
#   Down[@<time>] [number]          Press the Down key
#   Enter[@<time>] [number]         Press the Enter key
#   Space[@<time>] [number]         Press the Space key
#   Tab[@<time>] [number]           Press the Tab key
#   Left[@<time>] [number]          Press the Left Arrow key
#   Right[@<time>] [number]         Press the Right Arrow key
#   Up[@<time>] [number]            Press the Up Arrow key
#   Down[@<time>] [number]          Press the Down Arrow key
#   PageUp[@<time>] [number]        Press the Page Up key
#   PageDown[@<time>] [number]      Press the Page Down key
#   Ctrl+<key>                      Press the Control key + <key> (e.g. Ctrl+C)
#
# Display:
#   Hide                            Hide the subsequent commands from the output
#   Show                            Show the subsequent commands in the output

Output first_run.gif

Require ciphey

Set Shell "fish"
Set FontSize 32
Set Width 1200
Set Height 600

Type "ciphey -t 'K5XXOIJAKRUGC5BAO5QXGIDBEBRW633MEBRW63TGNFTXK4TBORUW63RB"
Enter

# Do you want a tutorial?
Type "n" Enter

# Do you want a custom colour scheme?
Type "y" Enter
Sleep 1s
# GirlyPop
Type "3" Enter

# What sounds better to you?
Sleep 2s
Type "1" Enter

# Wordlist or not?
Sleep 1s
Enter

# Enhanced Plaintext
Sleep 4s
Enter

# Cute cat
Sleep 500ms
Type "y" Enter

Sleep 500ms

Type "y" Enter

Sleep 5s

================
File: lemmeknow.cast
================
{"version": 2, "width": 123, "height": 45, "timestamp": 1672151368, "env": {"SHELL": "/bin/zsh", "TERM": "xterm-256color"}}
[0.108416, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\u001b[01;32m➜  \u001b[36m~\u001b[00m \u001b[K"]
[0.108493, "o", "\u001b[?1h\u001b=\u001b[?2004h"]
[3.342422, "o", "\u001b[7mecho 'ciphey uses LemmeKnow to identify 300+ different types of plaintext include API keys, IP addresses, and URLs. This\u001b[7m \u001b[7mis 3300% faster than PyWhat written in Python for Ciphey'\u001b[27m\u001b[K"]
[3.696046, "o", "\u001b[A\u001b[53D\u001b[27me\u001b[27mc\u001b[27mh\u001b[27mo\u001b[27m \u001b[27m'\u001b[27mA\u001b[27mr\u001b[27me\u001b[27ms\u001b[27m \u001b[27mu\u001b[27ms\u001b[27me\u001b[27ms\u001b[27m \u001b[27mL\u001b[27me\u001b[27mm\u001b[27mm\u001b[27me\u001b[27mK\u001b[27mn\u001b[27mo\u001b[27mw\u001b[27m \u001b[27mt\u001b[27mo\u001b[27m \u001b[27mi\u001b[27md\u001b[27me\u001b[27mn\u001b[27mt\u001b[27mi\u001b[27mf\u001b[27my\u001b[27m \u001b[27m3\u001b[27m0\u001b[27m0\u001b[27m+\u001b[27m \u001b[27md\u001b[27mi\u001b[27mf\u001b[27mf\u001b[27me\u001b[27mr\u001b[27me\u001b[27mn\u001b[27mt\u001b[27m \u001b[27mt\u001b[27my\u001b[27mp\u001b[27me\u001b[27ms\u001b[27m \u001b[27mo\u001b[27mf\u001b[27m \u001b[27mp\u001b[27ml\u001b[27ma\u001b[27mi\u001b[27mn\u001b[27mt\u001b[27me\u001b[27mx\u001b[27mt\u001b[27m \u001b[27mi\u001b[27mn\u001b[27mc\u001b[27ml\u001b[27mu\u001b[27md\u001b[27me\u001b[27m \u001b[27mA\u001b[27mP\u001b[27mI\u001b[27m \u001b[27mk\u001b[27me\u001b[27my\u001b[27ms\u001b[27m,\u001b[27m \u001b[27mI\u001b[27mP\u001b[27m \u001b[27ma\u001b[27md\u001b[27md\u001b[27mr\u001b[27me\u001b[27ms\u001b[27ms\u001b[27me\u001b[27ms\u001b[27m,\u001b[27m \u001b[27ma\u001b[27mn\u001b[27md\u001b[27m \u001b[27mU\u001b[27mR\u001b[27mL\u001b[27ms\u001b[27m.\u001b[27m \u001b[27mT\u001b[27mh\u001b[27mi\u001b[27ms \u001b[27mi\u001b[27ms\u001b[27m \u001b[27m3\u001b[27m3\u001b[27m0\u001b[27m0\u001b[27m%\u001b[27m \u001b[27mf\u001b[27ma\u001b[27ms\u001b[27mt\u001b[27me\u001b[27mr\u001b[27m \u001b[27mt\u001b[27mh\u001b[27ma\u001b[27mn\u001b[27m \u001b[27mP\u001b[27my\u001b[27mW\u001b[27mh\u001b[27ma\u001b[27mt\u001b[27m \u001b[27mw\u001b[27mr\u001b[27mi\u001b[27mt\u001b[27mt\u001b[27me\u001b[27mn\u001b[27m \u001b[27mi\u001b[27mn\u001b[27m \u001b[27mP\u001b[27my\u001b[27mt\u001b[27mh\u001b[27mo\u001b[27mn\u001b[27m \u001b[27mf\u001b[27mo\u001b[27mr\u001b[27m \u001b[27mC\u001b"]
[3.696275, "o", "[27mi\u001b[27mp\u001b[27mh\u001b[27me\u001b[27my\u001b[27m'"]
[3.696297, "o", "\u001b[?1l\u001b>"]
[3.69645, "o", "\u001b[?2004l\r\r\n"]
[3.69795, "o", "\u001b]2;echo \u0007\u001b]1;echo\u0007"]
[3.697977, "o", "ciphey uses LemmeKnow to identify 300+ different types of plaintext include API keys, IP addresses, and URLs. This is 3300% faster than PyWhat written in Python for Ciphey\r\n"]
[3.6981, "o", "\u001b]2;autumnskerritt@autumns-MacBook-Air:~\u0007\u001b]1;~\u0007"]
[3.718559, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\u001b[01;32m➜  \u001b[36m~\u001b[00m \u001b[K"]
[3.718714, "o", "\u001b[?1h\u001b=\u001b[?2004h"]
[8.78795, "o", "\u001b[7mciphey -t '7Vqt2YuAvPvTXQTHVLjPvp4BM2ZJpZWYL'\u001b[27m"]
[9.29994, "o", "\u001b[43D\u001b[27ma\u001b[27mr\u001b[27me\u001b[27ms\u001b[27m \u001b[27m-\u001b[27mt\u001b[27m \u001b[27m'\u001b[27m7\u001b[27mV\u001b[27mq\u001b[27mt\u001b[27m2\u001b[27mY\u001b[27mu\u001b[27mA\u001b[27mv\u001b[27mP\u001b[27mv\u001b[27mT\u001b[27mX\u001b[27mQ\u001b[27mT\u001b[27mH\u001b[27mV\u001b[27mL\u001b[27mj\u001b[27mP\u001b[27mv\u001b[27mp\u001b[27m4\u001b[27mB\u001b[27mM\u001b[27m2\u001b[27mZ\u001b[27mJ\u001b[27mp\u001b[27mZ\u001b[27mW\u001b[27mY\u001b[27mL\u001b[27m'"]
[9.300166, "o", "\u001b[?1l\u001b>\u001b[?2004l"]
[9.300189, "o", "\r\r\n"]
[9.303124, "o", "\u001b]2;ciphey -t '7Vqt2YuAvPvTXQTHVLjPvp4BM2ZJpZWYL'\u0007\u001b]1;ciphey\u0007"]
[9.400731, "o", "🕵️ I think the plaintext is \u001b[1;33mInternet Protocol (IP) Address Version 4\u001b[0m.\r\nPossible plaintext: '\u001b[1;33m192.168.0.1\u001b[0m' (y/N): \r\n"]
[11.126176, "o", "y"]
[12.293594, "o", "\r\n"]
[12.293858, "o", "\r\n🥳 ciphey has decoded 123 times times.\r\nIf you would have used Ciphey, it would have taken you 24 seconds\r\n\r\nThe plaintext is: \r\n\u001b[1;33m192.168.0.1\u001b[0m\r\nand the decoders used are \u001b[1;33mBase58 Bitcoin → Base32\u001b[0m\r\n"]
[12.296495, "o", "\u001b]2;autumnskerritt@autumns-MacBook-Air:~\u0007\u001b]1;~\u0007"]
[12.303612, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\u001b[01;32m➜  \u001b[36m~\u001b[00m \u001b[K"]
[12.303662, "o", "\u001b[?1h\u001b="]
[12.303701, "o", "\u001b[?2004h"]
[15.847661, "o", "\u001b[?2004l\r\r\n"]

================
File: lemmeknow.svg
================
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="840" height="537.62"><rect width="840" height="537.62" rx="5" ry="5" class="a"/><svg y="0%" x="0%"><circle cx="20" cy="20" r="6" fill="#ff5f58"/><circle cx="40" cy="20" r="6" fill="#ffbd2e"/><circle cx="60" cy="20" r="6" fill="#18c132"/></svg><svg height="477.62" viewBox="0 0 80 47.762" width="800" x="15" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="50"><style>@keyframes n{0%{transform:translateX(0)}.7%{transform:translateX(-160px)}21.1%{transform:translateX(-240px)}23.3%{transform:translateX(-800px)}23.5%{transform:translateX(-960px)}55.5%{transform:translateX(-1040px)}58.7%{transform:translateX(-1360px)}59.3%{transform:translateX(-1440px)}70.2%{transform:translateX(-1520px)}77.6%{transform:translateX(-2000px)}to{transform:translateX(-2080px)}}.a{fill:#282d35}.f,.g{fill:#a8cc8c;font-weight:700;white-space:pre}.g{fill:#66c2cd}.h{fill:#b9c0cb}.i,.j,.k{fill:#282d35;white-space:pre}.j,.k{fill:#b9c0cb}.k{fill:#dbab79;font-weight:700}</style><g font-family="Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace" font-size="1.67"><defs><symbol id="1"><text y="1.67" class="f">➜</text><text x="3.006" y="1.67" class="g">~</text></symbol><symbol id="2"><text y="1.67" class="f">➜</text><text x="3.006" y="1.67" class="g">~</text><path class="h" d="M5.01 0h75v2.171h-75z"/><text x="5.01" y="1.67" class="i">echo &apos;ciphey uses LemmeKnow to identify 300+ different types of plaintext inc</text></symbol><symbol id="3"><text y="1.67" class="j">echo</text><text x="5.01" y="1.67" class="j">&apos;ciphey</text><text x="11.022" y="1.67" class="j">uses</text><text x="16.032" y="1.67" class="j">LemmeKnow</text><text x="26.052" y="1.67" class="j">to</text><text x="29.058" y="1.67" class="j">identify</text><text x="38.076" y="1.67" class="j">300+</text><text x="43.086" y="1.67" class="j">different</text><text x="53.106" y="1.67" class="j">types</text><text x="59.118" y="1.67" class="j">of</text><text x="62.124" y="1.67" class="j">plaintext</text><text x="72.144" y="1.67" class="j">include</text></symbol><symbol id="4"><text y="1.67" class="j">API</text><text x="4.008" y="1.67" class="j">keys,</text><text x="10.02" y="1.67" class="j">IP</text><text x="13.026" y="1.67" class="j">addresses,</text><text x="24.048" y="1.67" class="j">and</text><text x="28.056" y="1.67" class="j">URLs.</text><text x="34.068" y="1.67" class="j">This</text><text x="39.078" y="1.67" class="j">is</text><text x="42.084" y="1.67" class="j">3300%</text><text x="48.096" y="1.67" class="j">faster</text><text x="55.11" y="1.67" class="j">than</text><text x="60.12" y="1.67" class="j">PyWhat</text><text x="67.134" y="1.67" class="j">written</text><text x="75.15" y="1.67" class="j">in</text><text x="78.156" y="1.67" class="j">Py</text></symbol><symbol id="5"><text y="1.67" class="j">thon</text><text x="5.01" y="1.67" class="j">for</text><text x="9.018" y="1.67" class="j">Ciphey&apos;</text></symbol><symbol id="6"><text y="1.67" class="j">ciphey</text><text x="5.01" y="1.67" class="j">uses</text><text x="10.02" y="1.67" class="j">LemmeKnow</text><text x="20.04" y="1.67" class="j">to</text><text x="23.046" y="1.67" class="j">identify</text><text x="32.064" y="1.67" class="j">300+</text><text x="37.074" y="1.67" class="j">different</text><text x="47.094" y="1.67" class="j">types</text><text x="53.106" y="1.67" class="j">of</text><text x="56.112" y="1.67" class="j">plaintext</text><text x="66.132" y="1.67" class="j">include</text><text x="74.148" y="1.67" class="j">API</text><text x="78.156" y="1.67" class="j">ke</text></symbol><symbol id="7"><text y="1.67" class="j">ys,</text><text x="4.008" y="1.67" class="j">IP</text><text x="7.014" y="1.67" class="j">addresses,</text><text x="18.036" y="1.67" class="j">and</text><text x="22.044" y="1.67" class="j">URLs.</text><text x="28.056" y="1.67" class="j">This</text><text x="33.066" y="1.67" class="j">is</text><text x="36.072" y="1.67" class="j">3300%</text><text x="42.084" y="1.67" class="j">faster</text><text x="49.098" y="1.67" class="j">than</text><text x="54.108" y="1.67" class="j">PyWhat</text><text x="61.122" y="1.67" class="j">written</text><text x="69.138" y="1.67" class="j">in</text><text x="72.144" y="1.67" class="j">Python</text><text x="79.158" y="1.67" class="j">f</text></symbol><symbol id="8"><text y="1.67" class="j">or</text><text x="3.006" y="1.67" class="j">Ciphey</text></symbol><symbol id="9"><text y="1.67" class="f">➜</text><text x="3.006" y="1.67" class="g">~</text><text x="5.01" y="1.67" class="j">ciphey</text><text x="10.02" y="1.67" class="j">-t</text><text x="13.026" y="1.67" class="j">&apos;7Vqt2YuAvPvTXQTHVLjPvp4BM2ZJpZWYL&apos;</text></symbol><symbol id="10"><text y="1.67" class="j">🕵️</text><text x="4.008" y="1.67" class="j">I</text><text x="6.012" y="1.67" class="j">think</text><text x="12.024" y="1.67" class="j">the</text><text x="16.032" y="1.67" class="j">plaintext</text><text x="26.052" y="1.67" class="j">is</text><text x="29.058" y="1.67" class="k">Internet</text><text x="38.076" y="1.67" class="k">Protocol</text><text x="47.094" y="1.67" class="k">(IP)</text><text x="52.104" y="1.67" class="k">Address</text><text x="60.12" y="1.67" class="k">Version</text><text x="68.136" y="1.67" class="k">4</text><text x="69.138" y="1.67" class="j">.</text></symbol><symbol id="11"><text y="1.67" class="j">Possible</text><text x="9.018" y="1.67" class="j">plaintext:</text><text x="20.04" y="1.67" class="j">&apos;</text><text x="21.042" y="1.67" class="k">192.168.0.1</text><text x="32.064" y="1.67" class="j">&apos;</text><text x="34.068" y="1.67" class="j">(y/N):</text></symbol><symbol id="12"><text y="1.67" class="j">y</text></symbol><symbol id="13"><text y="1.67" class="j">🥳</text><text x="3.006" y="1.67" class="j">ciphey</text><text x="8.016" y="1.67" class="j">has</text><text x="12.024" y="1.67" class="j">decoded</text><text x="20.04" y="1.67" class="j">123</text><text x="24.048" y="1.67" class="j">times</text><text x="30.06" y="1.67" class="j">times.</text></symbol><symbol id="14"><text y="1.67" class="j">If</text><text x="3.006" y="1.67" class="j">you</text><text x="7.014" y="1.67" class="j">would</text><text x="13.026" y="1.67" class="j">have</text><text x="18.036" y="1.67" class="j">used</text><text x="23.046" y="1.67" class="j">Ciphey,</text><text x="31.062" y="1.67" class="j">it</text><text x="34.068" y="1.67" class="j">would</text><text x="40.08" y="1.67" class="j">have</text><text x="45.09" y="1.67" class="j">taken</text><text x="51.102" y="1.67" class="j">you</text><text x="55.11" y="1.67" class="j">24</text><text x="58.116" y="1.67" class="j">seconds</text></symbol><symbol id="15"><text y="1.67" class="j">The</text><text x="4.008" y="1.67" class="j">plaintext</text><text x="14.028" y="1.67" class="j">is:</text></symbol><symbol id="16"><text y="1.67" class="k">192.168.0.1</text></symbol><symbol id="17"><text y="1.67" class="j">and</text><text x="4.008" y="1.67" class="j">the</text><text x="8.016" y="1.67" class="j">decoders</text><text x="17.034" y="1.67" class="j">used</text><text x="22.044" y="1.67" class="j">are</text><text x="26.052" y="1.67" class="k">Base58</text><text x="33.066" y="1.67" class="k">Bitcoin</text><text x="41.082" y="1.67" class="k">→</text><text x="43.086" y="1.67" class="k">Base32</text></symbol><symbol id="a"><path fill="transparent" d="M0 0h80v23H0z"/></symbol><symbol id="b"><path fill="#6f7683" d="M0 0h1.102v2.171H0z"/></symbol></defs><path class="a" d="M0 0h80v47.762H0z"/><g style="animation-duration:15.847661s;animation-iteration-count:infinite;animation-name:n;animation-timing-function:steps(1,end)"><svg width="2160"><svg><use xlink:href="#a"/><use xlink:href="#b" x="-.004"/></svg><svg x="80"><use xlink:href="#a"/><use xlink:href="#b" x="4.996"/><use xlink:href="#1"/></svg><svg x="160"><use xlink:href="#a"/><use xlink:href="#b" x="4.996"/><use xlink:href="#1"/></svg><svg x="240"><use xlink:href="#a"/><use xlink:href="#b" x="20.996" y="4.317"/><use xlink:href="#2"/><path class="h" d="M0 2.171h80v2.171H0z"/><text y="3.841" class="i">lude API keys, IP addresses, and URLs. This is 3300% faster than PyWhat written</text><path class="h" d="M0 4.342h21v2.171H0z"/><text y="6.012" class="i">in Python for Ciphey&apos;</text></svg><svg x="320"><use xlink:href="#a"/><use xlink:href="#b" x="9.996" y="6.488"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><text y="8.183" class="j">thon</text><text x="5.01" y="8.183" class="j">for</text><text x="9.018" y="8.183" class="j">C</text></svg><svg x="400"><use xlink:href="#a"/><use xlink:href="#b" x="15.996" y="6.488"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/></svg><svg x="480"><use xlink:href="#a"/><use xlink:href="#b" x="15.996" y="6.488"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/></svg><svg x="560"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/></svg><svg x="640"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/></svg><svg x="720"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/><use xlink:href="#8" y="13.026"/></svg><svg x="800"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="15.172"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/><use xlink:href="#8" y="13.026"/></svg><svg x="880"><use xlink:href="#a"/><use xlink:href="#b" x="4.996" y="15.172"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/><use xlink:href="#8" y="13.026"/><use xlink:href="#1" y="15.197"/></svg><svg x="960"><use xlink:href="#a"/><use xlink:href="#b" x="4.996" y="15.172"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/><use xlink:href="#8" y="13.026"/><use xlink:href="#1" y="15.197"/></svg><svg x="1040"><use xlink:href="#a"/><use xlink:href="#b" x="47.996" y="15.172"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/><use xlink:href="#8" y="13.026"/><text y="16.867" class="f">➜</text><text x="3.006" y="16.867" class="g">~</text><path class="h" d="M5.01 15.197h43v2.171h-43z"/><text x="5.01" y="16.867" class="i">ciphey -t &apos;7Vqt2YuAvPvTXQTHVLjPvp4BM2ZJpZWYL&apos;</text></svg><svg x="1120"><use xlink:href="#a"/><use xlink:href="#b" x="47.996" y="15.172"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/><use xlink:href="#8" y="13.026"/><use xlink:href="#9" y="15.197"/></svg><svg x="1200"><use xlink:href="#a"/><use xlink:href="#b" x="47.996" y="15.172"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/><use xlink:href="#8" y="13.026"/><use xlink:href="#9" y="15.197"/></svg><svg x="1280"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="17.343"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/><use xlink:href="#8" y="13.026"/><use xlink:href="#9" y="15.197"/></svg><svg x="1360"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="17.343"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/><use xlink:href="#8" y="13.026"/><use xlink:href="#9" y="15.197"/></svg><svg x="1440"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="21.685"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/><use xlink:href="#8" y="13.026"/><use xlink:href="#9" y="15.197"/><use xlink:href="#10" y="17.368"/><use xlink:href="#11" y="19.539"/></svg><svg x="1520"><use xlink:href="#a"/><use xlink:href="#b" x=".996" y="21.685"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/><use xlink:href="#8" y="13.026"/><use xlink:href="#9" y="15.197"/><use xlink:href="#10" y="17.368"/><use xlink:href="#11" y="19.539"/><use xlink:href="#12" y="21.71"/></svg><svg x="1600"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="23.856"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/><use xlink:href="#8" y="13.026"/><use xlink:href="#9" y="15.197"/><use xlink:href="#10" y="17.368"/><use xlink:href="#11" y="19.539"/><use xlink:href="#12" y="21.71"/></svg><svg x="1680"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="39.053"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/><use xlink:href="#8" y="13.026"/><use xlink:href="#9" y="15.197"/><use xlink:href="#10" y="17.368"/><use xlink:href="#11" y="19.539"/><use xlink:href="#12" y="21.71"/><use xlink:href="#13" y="26.052"/><use xlink:href="#14" y="28.223"/><use xlink:href="#15" y="32.565"/><use xlink:href="#16" y="34.736"/><use xlink:href="#17" y="36.907"/></svg><svg x="1760"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="39.053"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/><use xlink:href="#8" y="13.026"/><use xlink:href="#9" y="15.197"/><use xlink:href="#10" y="17.368"/><use xlink:href="#11" y="19.539"/><use xlink:href="#12" y="21.71"/><use xlink:href="#13" y="26.052"/><use xlink:href="#14" y="28.223"/><use xlink:href="#15" y="32.565"/><use xlink:href="#16" y="34.736"/><use xlink:href="#17" y="36.907"/></svg><svg x="1840"><use xlink:href="#a"/><use xlink:href="#b" x="4.996" y="39.053"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/><use xlink:href="#8" y="13.026"/><use xlink:href="#9" y="15.197"/><use xlink:href="#10" y="17.368"/><use xlink:href="#11" y="19.539"/><use xlink:href="#12" y="21.71"/><use xlink:href="#13" y="26.052"/><use xlink:href="#14" y="28.223"/><use xlink:href="#15" y="32.565"/><use xlink:href="#16" y="34.736"/><use xlink:href="#17" y="36.907"/><use xlink:href="#1" y="39.078"/></svg><svg x="1920"><use xlink:href="#a"/><use xlink:href="#b" x="4.996" y="39.053"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/><use xlink:href="#8" y="13.026"/><use xlink:href="#9" y="15.197"/><use xlink:href="#10" y="17.368"/><use xlink:href="#11" y="19.539"/><use xlink:href="#12" y="21.71"/><use xlink:href="#13" y="26.052"/><use xlink:href="#14" y="28.223"/><use xlink:href="#15" y="32.565"/><use xlink:href="#16" y="34.736"/><use xlink:href="#17" y="36.907"/><use xlink:href="#1" y="39.078"/></svg><svg x="2000"><use xlink:href="#a"/><use xlink:href="#b" x="4.996" y="39.053"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/><use xlink:href="#8" y="13.026"/><use xlink:href="#9" y="15.197"/><use xlink:href="#10" y="17.368"/><use xlink:href="#11" y="19.539"/><use xlink:href="#12" y="21.71"/><use xlink:href="#13" y="26.052"/><use xlink:href="#14" y="28.223"/><use xlink:href="#15" y="32.565"/><use xlink:href="#16" y="34.736"/><use xlink:href="#17" y="36.907"/><use xlink:href="#1" y="39.078"/></svg><svg x="2080"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="41.224"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="8.684"/><use xlink:href="#7" y="10.855"/><use xlink:href="#8" y="13.026"/><use xlink:href="#9" y="15.197"/><use xlink:href="#10" y="17.368"/><use xlink:href="#11" y="19.539"/><use xlink:href="#12" y="21.71"/><use xlink:href="#13" y="26.052"/><use xlink:href="#14" y="28.223"/><use xlink:href="#15" y="32.565"/><use xlink:href="#16" y="34.736"/><use xlink:href="#17" y="36.907"/><use xlink:href="#1" y="39.078"/></svg></svg></g></g></svg></svg>

================
File: main_demo.cast
================
{"version": 2, "width": 123, "height": 45, "timestamp": 1672149835, "env": {"SHELL": "/bin/zsh", "TERM": "xterm-256color"}}
[0.111327, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\u001b[01;32m➜  \u001b[36m~\u001b[00m \u001b[K"]
[0.111394, "o", "\u001b[?1h\u001b=\u001b[?2004h"]
[0.940616, "o", "\u001b[7mciphey -t 'LJIVE222KFJGUWSRJZ2FUUKSNNNFCTTLLJIVE5C2KFJGWWSRKJVVUUKOORNFCUTLLJIVE222KFHHIWSRKJVVUUKSNNNEOUTULJIU4222KFJGW\u001b[7mW\u001b[7mSRJZ2FUUKONNNFCTTKLJIU45C2KFJGWWSHJZVVUR2SORNFCUTLLJIVE222I5JHIWSRKJVVUR2ONJNEOTTULJIVE222KFJGWWSRJZ2FUUKSNNNFCTTLLJIU45C2\u001b[7mK\u001b[7mFHGWWSRJZVFUUKSHU======' -d\u001b[27m\u001b[K"]
[1.697765, "o", "\r\r\n"]
[2.213287, "o", "\r\n🥳 ciphey has decoded 205 times times.\r\nIf you would have used Ciphey, it would have taken you 41 seconds\r\n\r\n"]
[2.225368, "o", "The plaintext is: \r\n\u001b[1;33mhello, world!\u001b[0m\r\nand the decoders used are \u001b[1;33mBase32 → Caesar Cipher → Base64 → Binary\u001b[0m\r\n"]
[2.237779, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\u001b[01;32m➜  \u001b[36m~\u001b[00m \u001b[K"]
[2.237852, "o", "\u001b[?1h\u001b="]
[2.237875, "o", "\u001b[?2004h"]
[5.440228, "o", "\u001b[?2004l\r\r\n"]

================
File: main_demo.svg
================
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="840" height="537.62"><rect width="840" height="537.62" rx="5" ry="5" class="a"/><svg y="0%" x="0%"><circle cx="20" cy="20" r="6" fill="#ff5f58"/><circle cx="40" cy="20" r="6" fill="#ffbd2e"/><circle cx="60" cy="20" r="6" fill="#18c132"/></svg><svg height="477.62" viewBox="0 0 80 47.762" width="800" x="15" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" y="50"><style>@keyframes n{0%{transform:translateX(0)}2%{transform:translateX(-160px)}17.3%{transform:translateX(-240px)}31.2%{transform:translateX(-320px)}40.7%{transform:translateX(-400px)}40.9%{transform:translateX(-480px)}41.1%{transform:translateX(-720px)}to{transform:translateX(-800px)}}.a{fill:#282d35}.f,.g{fill:#a8cc8c;font-weight:700;white-space:pre}.g{fill:#66c2cd}.h{fill:#b9c0cb}.i,.j,.k{fill:#282d35;white-space:pre}.j,.k{fill:#b9c0cb}.k{fill:#dbab79;font-weight:700}</style><g font-family="Monaco,Consolas,Menlo,'Bitstream Vera Sans Mono','Powerline Symbols',monospace" font-size="1.67"><defs><symbol id="1"><text y="1.67" class="f">➜</text><text x="3.006" y="1.67" class="g">~</text></symbol><symbol id="2"><text y="1.67" class="f">➜</text><text x="3.006" y="1.67" class="g">~</text><path class="h" d="M5.01 0h75v2.171h-75z"/><text x="5.01" y="1.67" class="i">ciphey -t &apos;LJIVE222KFJGUWSRJZ2FUUKSNNNFCTTLLJIVE5C2KFJGWWSRKJVVUUKOORNFCUTLLJ</text></symbol><symbol id="3"><path class="h" d="M0 0h80v2.171H0z"/><text y="1.67" class="i">IVE222KFHHIWSRKJVVUUKSNNNEOUTULJIU4222KFJGWWSRJZ2FUUKONNNFCTTKLJIU45C2KFJGWWSHJZ</text></symbol><symbol id="4"><path class="h" d="M0 0h80v2.171H0z"/><text y="1.67" class="i">VVUR2SORNFCUTLLJIVE222I5JHIWSRKJVVUR2ONJNEOTTULJIVE222KFJGWWSRJZ2FUUKSNNNFCTTLLJ</text></symbol><symbol id="5"><path class="h" d="M0 0h34v2.171H0z"/><text y="1.67" class="i">IU45C2KFHGWWSRJZVFUUKSHU======&apos; -d</text></symbol><symbol id="6"><text y="1.67" class="j">🥳</text><text x="3.006" y="1.67" class="j">ciphey</text><text x="8.016" y="1.67" class="j">has</text><text x="12.024" y="1.67" class="j">decoded</text><text x="20.04" y="1.67" class="j">205</text><text x="24.048" y="1.67" class="j">times</text><text x="30.06" y="1.67" class="j">times.</text></symbol><symbol id="7"><text y="1.67" class="j">If</text><text x="3.006" y="1.67" class="j">you</text><text x="7.014" y="1.67" class="j">would</text><text x="13.026" y="1.67" class="j">have</text><text x="18.036" y="1.67" class="j">used</text><text x="23.046" y="1.67" class="j">Ciphey,</text><text x="31.062" y="1.67" class="j">it</text><text x="34.068" y="1.67" class="j">would</text><text x="40.08" y="1.67" class="j">have</text><text x="45.09" y="1.67" class="j">taken</text><text x="51.102" y="1.67" class="j">you</text><text x="55.11" y="1.67" class="j">41</text><text x="58.116" y="1.67" class="j">seconds</text></symbol><symbol id="8"><text y="1.67" class="j">The</text><text x="4.008" y="1.67" class="j">plaintext</text><text x="14.028" y="1.67" class="j">is:</text></symbol><symbol id="9"><text y="1.67" class="k">hello,</text><text x="7.014" y="1.67" class="k">world!</text></symbol><symbol id="10"><text y="1.67" class="j">and</text><text x="4.008" y="1.67" class="j">the</text><text x="8.016" y="1.67" class="j">decoders</text><text x="17.034" y="1.67" class="j">used</text><text x="22.044" y="1.67" class="j">are</text><text x="26.052" y="1.67" class="k">Base32</text><text x="33.066" y="1.67" class="k">→</text><text x="35.07" y="1.67" class="k">Caesar</text><text x="42.084" y="1.67" class="k">Cipher</text><text x="49.098" y="1.67" class="k">→</text><text x="51.102" y="1.67" class="k">Base64</text><text x="58.116" y="1.67" class="k">→</text><text x="60.12" y="1.67" class="k">Binary</text></symbol><symbol id="a"><path fill="transparent" d="M0 0h80v23H0z"/></symbol><symbol id="b"><path fill="#6f7683" d="M0 0h1.102v2.171H0z"/></symbol></defs><path class="a" d="M0 0h80v47.762H0z"/><g style="animation-duration:5.440228s;animation-iteration-count:infinite;animation-name:n;animation-timing-function:steps(1,end)"><svg width="880"><svg><use xlink:href="#a"/><use xlink:href="#b" x="-.004"/></svg><svg x="80"><use xlink:href="#a"/><use xlink:href="#b" x="4.996"/><use xlink:href="#1"/></svg><svg x="160"><use xlink:href="#a"/><use xlink:href="#b" x="4.996"/><use xlink:href="#1"/></svg><svg x="240"><use xlink:href="#a"/><use xlink:href="#b" x="33.996" y="6.488"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/></svg><svg x="320"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="8.659"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/></svg><svg x="400"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="17.343"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="10.855"/><use xlink:href="#7" y="13.026"/></svg><svg x="480"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="23.856"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="10.855"/><use xlink:href="#7" y="13.026"/><use xlink:href="#8" y="17.368"/><use xlink:href="#9" y="19.539"/><use xlink:href="#10" y="21.71"/></svg><svg x="560"><use xlink:href="#a"/><use xlink:href="#b" x="4.996" y="23.856"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="10.855"/><use xlink:href="#7" y="13.026"/><use xlink:href="#8" y="17.368"/><use xlink:href="#9" y="19.539"/><use xlink:href="#10" y="21.71"/><use xlink:href="#1" y="23.881"/></svg><svg x="640"><use xlink:href="#a"/><use xlink:href="#b" x="4.996" y="23.856"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="10.855"/><use xlink:href="#7" y="13.026"/><use xlink:href="#8" y="17.368"/><use xlink:href="#9" y="19.539"/><use xlink:href="#10" y="21.71"/><use xlink:href="#1" y="23.881"/></svg><svg x="720"><use xlink:href="#a"/><use xlink:href="#b" x="4.996" y="23.856"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="10.855"/><use xlink:href="#7" y="13.026"/><use xlink:href="#8" y="17.368"/><use xlink:href="#9" y="19.539"/><use xlink:href="#10" y="21.71"/><use xlink:href="#1" y="23.881"/></svg><svg x="800"><use xlink:href="#a"/><use xlink:href="#b" x="-.004" y="26.027"/><use xlink:href="#2"/><use xlink:href="#3" y="2.171"/><use xlink:href="#4" y="4.342"/><use xlink:href="#5" y="6.513"/><use xlink:href="#6" y="10.855"/><use xlink:href="#7" y="13.026"/><use xlink:href="#8" y="17.368"/><use xlink:href="#9" y="19.539"/><use xlink:href="#10" y="21.71"/><use xlink:href="#1" y="23.881"/></svg></svg></g></g></svg></svg>

================
File: README.md
================
# Steps to make the gifs

Install asciinema and svg-term-cli.

Record with asciinema:

asciinema rec demo.cast

This records the session in the asciicast v2 plaintext file format (newline-delimited JSON with an initial header object followed by a timestamped event stream of stdin and stdout).

Convert the .cast file to .svg with svg-term-cli:

svg-term --in demo.cast --out demo.svg --window --width 80 --height 22 --no-optimize

You probably want to play around with width and height
window adds a fake OS window around the terminal session
I found that no-optimize fixed some weird font rendering issues on my macOS – not sure why



================================================================
End of Codebase
================================================================
