From 5bf8d6dd077517270377e5d8551108ecf252374f Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Fri, 31 Jul 2026 05:04:26 -0300 Subject: multiple cursors, regex selection, and Ctrl-c comments MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The primary cursor stays exactly where it was — cur_row/cur_col plus vsel — and sels[] holds helix's OTHER ranges. That split is why nothing moved at one cursor: with nsel == 0 not one line of the existing motion, operator, render or mouse code takes a different branch, which is what protects 800 differential cases and 67 goldens. paneRanges/setPaneRanges are the whole list; setPaneRanges IS helix's Selection::new (min width 1, sorted, overlaps merged, primary follows its range through a merge). An ordinary key runs the single-selection handler once per range, visited last-first so an edit never disturbs a range still waiting, and each finished pass is remembered as a distance from the END of the text, which an earlier edit cannot move — helix's change mapping without a change map. pushUndo fires once per keystroke, yanks accumulate, and a builtin acts from the primary and stops the replay, which also closes the use-after-free window if it frees the pane. s and S reuse the / prompt wholesale rather than growing a second one: the pattern is typed into the tag tail, and every keystroke re-runs the match from the selection the prompt opened on, so the preview is live and Esc is just the empty pattern. mvzr does runtime patterns — a bytecode VM in a fixed-size struct with no allocator — with 64 ops and 8 char classes per pattern, no case-insensitive flag (helix's smart case is done by folding a scratch copy), no captures, no multi-line anchors. The last two are the two waivers. Ctrl-c is a whole-list key and not a per-cursor replay, because helix decides comment-vs-uncomment ONCE for the whole selection; replaying it would take that decision n times. Comment tokens are a table in config.zig keyed on the same extension syntax.zig picks grammars by. Found and fixed a pre-existing single-cursor bug on the way: la left the cursor one cell before where the append began. helix's restore_cursor can never walk past the origin; ours backed up unconditionally. hxdiff was green before AND after — the old one-selection contract could not see it. hxdiff 360 -> 481 cases, hxparity 440 -> 561, all goldens from real helix; the harness contract now reports every range and its primary, omitted when there is one, so 359 of the 360 old goldens are byte-identical. The one that moved is o-count: helix's 2o really does leave two cursors and could not say so before. --- test/snapshots/multicursor.golden | 217 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 217 insertions(+) create mode 100644 test/snapshots/multicursor.golden (limited to 'test/snapshots/multicursor.golden') diff --git a/test/snapshots/multicursor.golden b/test/snapshots/multicursor.golden new file mode 100644 index 00000000..2be37dc2 --- /dev/null +++ b/test/snapshots/multicursor.golden @@ -0,0 +1,217 @@ +== snap three-cursors grid=150x30 cursor=7,4 +|Kill Newcol Tutor Debug NextColor Dump Find Grep Help +| NOR /tmp/pardes-snap/multicursor/cwd/f.txt Save NOR /tmp/pardes-snap/multicursor/cwd Del NOR /tmp/pardes-snap/multicursor/cwd Del +| 1 line 1 +| 2 line 2 f.txt f.txt +| 3 line 3 +| 4 line 4 +| 5 line 5 +| 6 line 6 f.txt +| 7 line 7 +| 8 line 8 +| 9 line 9 +| 10 line 10 +| 11 line 11 +| 12 line 12 +| 13 +| +| NOR /tmp/pardes-snap/multicursor/cwd Del +| +| f.txt +| +| +| +| +| +| +| +| +| +| +| +== style three-cursors +|0: 0-52 #949494,#121212, 53-149 d,#121212, +|1: 0-1 d,#626262, 2-49 #949494,#121212, 50-51 d,#262626, 52-91 #949494,#121212, 92-99 d,#121212, 100-101 d,#262626, 102-141 #949494,#121212, 142-149 d,#121212, +|2: 0-1 d,#444444, 2-6 #626262,#080808, 7-7 #4a3a1e,#d8c8a8, 8-12 #bdbdbd,#080808, 13-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|3: 0-1 d,#444444, 2-6 #626262,#080808, 7-7 #4a3a1e,#d8c8a8, 8-12 #bdbdbd,#080808, 13-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|4: 0-1 d,#444444, 2-6 #949494,#121212, 7-12 #bdbdbd,#080808, 13-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|5: 0-1 d,#444444, 2-6 #626262,#080808, 7-12 #bdbdbd,#080808, 13-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|6: 0-1 d,#444444, 2-6 #626262,#080808, 7-12 #bdbdbd,#080808, 13-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|7: 0-1 d,#444444, 2-6 #626262,#080808, 7-12 #bdbdbd,#080808, 13-49 d,#080808, 50-51 d,#444444, 52-58 #bdbdbd,#080808, 59-99 d,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|8: 0-1 d,#444444, 2-6 #626262,#080808, 7-12 #bdbdbd,#080808, 13-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|9: 0-1 d,#444444, 2-6 #626262,#080808, 7-12 #bdbdbd,#080808, 13-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|10: 0-1 d,#444444, 2-6 #626262,#080808, 7-12 #bdbdbd,#080808, 13-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|11: 0-1 d,#444444, 2-6 #626262,#080808, 7-13 #bdbdbd,#080808, 14-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|12: 0-1 d,#444444, 2-6 #626262,#080808, 7-13 #bdbdbd,#080808, 14-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|13: 0-1 d,#444444, 2-6 #626262,#080808, 7-13 #bdbdbd,#080808, 14-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|14: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|15: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|16: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#262626, 52-91 #949494,#121212, 92-99 d,#121212, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|17: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|18: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|19: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|20: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|21: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|22: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|23: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|24: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|25: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|26: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|27: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|28: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|29: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +== snap edited-at-three grid=150x30 cursor=9,4 +|Kill Newcol Tutor Debug NextColor Dump Find Grep Help +| NOR /tmp/pardes-snap/multicursor/cwd/f.txt Save NOR /tmp/pardes-snap/multicursor/cwd Del NOR /tmp/pardes-snap/multicursor/cwd Del +| 1 >>line 1 +| 2 >>line 2 f.txt f.txt +| 3 >>line 3 +| 4 line 4 +| 5 line 5 +| 6 line 6 f.txt +| 7 line 7 +| 8 line 8 +| 9 line 9 +| 10 line 10 +| 11 line 11 +| 12 line 12 +| 13 +| +| NOR /tmp/pardes-snap/multicursor/cwd Del +| +| f.txt +| +| +| +| +| +| +| +| +| +| +| +== snap three-selections grid=150x30 cursor=8,4 +|Kill Newcol Tutor Debug NextColor Dump Find Grep Help +| NOR /tmp/pardes-snap/multicursor/cwd/f.txt Save NOR /tmp/pardes-snap/multicursor/cwd Del NOR /tmp/pardes-snap/multicursor/cwd Del +| 1 >>line 1 +| 2 >>line 2 f.txt f.txt +| 3 >>line 3 +| 4 line 4 +| 5 line 5 +| 6 line 6 f.txt +| 7 line 7 +| 8 line 8 +| 9 line 9 +| 10 line 10 +| 11 line 11 +| 12 line 12 +| 13 +| +| NOR /tmp/pardes-snap/multicursor/cwd Del +| +| f.txt +| +| +| +| +| +| +| +| +| +| +| +== style three-selections +|0: 0-52 #949494,#121212, 53-149 d,#121212, +|1: 0-1 d,#626262, 2-49 #949494,#121212, 50-51 d,#262626, 52-91 #949494,#121212, 92-99 d,#121212, 100-101 d,#262626, 102-141 #949494,#121212, 142-149 d,#121212, +|2: 0-1 d,#444444, 2-6 #626262,#080808, 7-7 #a89c84,#2e2616, 8-8 #4a3a1e,#d8c8a8, 9-14 #bdbdbd,#080808, 15-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|3: 0-1 d,#444444, 2-6 #626262,#080808, 7-7 #a89c84,#2e2616, 8-8 #4a3a1e,#d8c8a8, 9-14 #bdbdbd,#080808, 15-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|4: 0-1 d,#444444, 2-6 #949494,#121212, 7-8 #d8c8a8,#4a3a1e, 9-14 #bdbdbd,#080808, 15-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|5: 0-1 d,#444444, 2-6 #626262,#080808, 7-12 #bdbdbd,#080808, 13-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|6: 0-1 d,#444444, 2-6 #626262,#080808, 7-12 #bdbdbd,#080808, 13-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|7: 0-1 d,#444444, 2-6 #626262,#080808, 7-12 #bdbdbd,#080808, 13-49 d,#080808, 50-51 d,#444444, 52-58 #bdbdbd,#080808, 59-99 d,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|8: 0-1 d,#444444, 2-6 #626262,#080808, 7-12 #bdbdbd,#080808, 13-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|9: 0-1 d,#444444, 2-6 #626262,#080808, 7-12 #bdbdbd,#080808, 13-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|10: 0-1 d,#444444, 2-6 #626262,#080808, 7-12 #bdbdbd,#080808, 13-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|11: 0-1 d,#444444, 2-6 #626262,#080808, 7-13 #bdbdbd,#080808, 14-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|12: 0-1 d,#444444, 2-6 #626262,#080808, 7-13 #bdbdbd,#080808, 14-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|13: 0-1 d,#444444, 2-6 #626262,#080808, 7-13 #bdbdbd,#080808, 14-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|14: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|15: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|16: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#262626, 52-91 #949494,#121212, 92-99 d,#121212, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|17: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|18: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|19: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|20: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|21: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|22: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|23: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|24: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|25: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|26: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|27: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|28: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|29: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +== snap keep-primary grid=150x30 cursor=8,4 +|Kill Newcol Tutor Debug NextColor Dump Find Grep Help +| NOR /tmp/pardes-snap/multicursor/cwd/f.txt Save NOR /tmp/pardes-snap/multicursor/cwd Del NOR /tmp/pardes-snap/multicursor/cwd Del +| 1 >>line 1 +| 2 >>line 2 f.txt f.txt +| 3 >>line 3 +| 4 line 4 +| 5 line 5 +| 6 line 6 f.txt +| 7 line 7 +| 8 line 8 +| 9 line 9 +| 10 line 10 +| 11 line 11 +| 12 line 12 +| 13 +| +| NOR /tmp/pardes-snap/multicursor/cwd Del +| +| f.txt +| +| +| +| +| +| +| +| +| +| +| +== style keep-primary +|0: 0-52 #949494,#121212, 53-149 d,#121212, +|1: 0-1 d,#626262, 2-49 #949494,#121212, 50-51 d,#262626, 52-91 #949494,#121212, 92-99 d,#121212, 100-101 d,#262626, 102-141 #949494,#121212, 142-149 d,#121212, +|2: 0-1 d,#444444, 2-6 #626262,#080808, 7-14 #bdbdbd,#080808, 15-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|3: 0-1 d,#444444, 2-6 #626262,#080808, 7-14 #bdbdbd,#080808, 15-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|4: 0-1 d,#444444, 2-6 #949494,#121212, 7-8 #d8c8a8,#4a3a1e, 9-14 #bdbdbd,#080808, 15-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|5: 0-1 d,#444444, 2-6 #626262,#080808, 7-12 #bdbdbd,#080808, 13-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|6: 0-1 d,#444444, 2-6 #626262,#080808, 7-12 #bdbdbd,#080808, 13-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|7: 0-1 d,#444444, 2-6 #626262,#080808, 7-12 #bdbdbd,#080808, 13-49 d,#080808, 50-51 d,#444444, 52-58 #bdbdbd,#080808, 59-99 d,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|8: 0-1 d,#444444, 2-6 #626262,#080808, 7-12 #bdbdbd,#080808, 13-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|9: 0-1 d,#444444, 2-6 #626262,#080808, 7-12 #bdbdbd,#080808, 13-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|10: 0-1 d,#444444, 2-6 #626262,#080808, 7-12 #bdbdbd,#080808, 13-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|11: 0-1 d,#444444, 2-6 #626262,#080808, 7-13 #bdbdbd,#080808, 14-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|12: 0-1 d,#444444, 2-6 #626262,#080808, 7-13 #bdbdbd,#080808, 14-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|13: 0-1 d,#444444, 2-6 #626262,#080808, 7-13 #bdbdbd,#080808, 14-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|14: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|15: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|16: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#262626, 52-91 #949494,#121212, 92-99 d,#121212, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|17: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|18: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|19: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|20: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|21: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|22: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|23: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|24: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|25: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|26: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|27: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|28: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, +|29: 0-1 d,#444444, 2-6 #626262,#080808, 7-49 d,#080808, 50-51 d,#444444, 52-99 #bdbdbd,#080808, 100-101 d,#444444, 102-149 #bdbdbd,#080808, -- cgit v1.3