diff options
author | Aram Drevekenin <aram@poor.dev> | 2023-03-09 16:58:15 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-09 16:58:15 +0100 |
commit | 263f5cbfd2d71ee18721e3273cd795af135f5749 (patch) | |
tree | c4e1395d3455a754395b06ce143b24ef093f8155 /zellij-server | |
parent | aa17374d131980786427ca6c4bdf2db365745919 (diff) |
fix(ansi): pad line end when erasing characters (#2259)
Diffstat (limited to 'zellij-server')
8 files changed, 85 insertions, 77 deletions
diff --git a/zellij-server/src/panes/grid.rs b/zellij-server/src/panes/grid.rs index 8046c53d8..16ed8aa66 100644 --- a/zellij-server/src/panes/grid.rs +++ b/zellij-server/src/panes/grid.rs @@ -1616,10 +1616,17 @@ impl Grid { } self.output_buffer.update_line(self.cursor.y); } - pub fn erase_characters(&mut self, count: usize, empty_char_style: CharacterStyles) { + fn erase_characters(&mut self, count: usize, empty_char_style: CharacterStyles) { let mut empty_character = EMPTY_TERMINAL_CHARACTER; empty_character.styles = empty_char_style; let current_row = self.viewport.get_mut(self.cursor.y).unwrap(); + + // pad row if needed + if current_row.width_cached() < self.width { + let padding_count = self.width - current_row.width_cached(); + let mut columns_padding = VecDeque::from(vec![EMPTY_TERMINAL_CHARACTER; padding_count]); + current_row.columns.append(&mut columns_padding); + } for _ in 0..count { let deleted_character = current_row.delete_and_return_character(self.cursor.x); let excess_width = deleted_character @@ -1629,6 +1636,7 @@ impl Grid { for _ in 0..excess_width { current_row.insert_character_at(empty_character, self.cursor.x); } + current_row.push(empty_character); } self.output_buffer.update_line(self.cursor.y); } diff --git a/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__delete_char_in_middle_of_line_with_multiple_widechars.snap b/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__delete_char_in_middle_of_line_with_multiple_widechars.snap index 240d5fd50..ece6f3de3 100644 --- a/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__delete_char_in_middle_of_line_with_multiple_widechars.snap +++ b/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__delete_char_in_middle_of_line_with_multiple_widechars.snap @@ -1,9 +1,9 @@ --- source: zellij-server/src/panes/./unit/grid_tests.rs -assertion_line: 831 +assertion_line: 833 expression: "format!(\"{:?}\", grid)" --- -00 (C): [aram@green zellij]$ 🏠🏠🏠 +00 (C): [aram@green zellij]$ 🏠🏠🏠 01 (C): 02 (C): 03 (C): diff --git a/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__delete_char_in_middle_of_line_with_widechar.snap b/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__delete_char_in_middle_of_line_with_widechar.snap index d90531b48..8cc6e3ef8 100644 --- a/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__delete_char_in_middle_of_line_with_widechar.snap +++ b/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__delete_char_in_middle_of_line_with_widechar.snap @@ -1,9 +1,9 @@ --- source: zellij-server/src/panes/./unit/grid_tests.rs -assertion_line: 809 +assertion_line: 811 expression: "format!(\"{:?}\", grid)" --- -00 (C): [aram@green zellij]$ 🏠 def abc +00 (C): [aram@green zellij]$ 🏠 def abc 01 (C): 02 (C): 03 (C): diff --git a/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__delete_wide_character_under_cursor.snap b/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__delete_wide_character_under_cursor.snap index 5606cd37a..57d60cff9 100644 --- a/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__delete_wide_character_under_cursor.snap +++ b/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__delete_wide_character_under_cursor.snap @@ -1,9 +1,9 @@ --- source: zellij-server/src/panes/./unit/grid_tests.rs -assertion_line: 941 +assertion_line: 943 expression: "format!(\"{:?}\", grid)" --- -00 (C): 12 4 +00 (C): 12 4 01 (C): 02 (C): 03 (C): diff --git a/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__htop_right_scrolling.snap b/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__htop_right_scrolling.snap index aca29e3ea..937f21651 100644 --- a/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__htop_right_scrolling.snap +++ b/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__htop_right_scrolling.snap @@ -1,7 +1,7 @@ --- source: zellij-server/src/panes/./unit/grid_tests.rs +assertion_line: 1432 expression: "format!(\"{:?}\", grid)" - --- 00 (C): 01 (C): 1 [|||||||||| 16.9%] Tasks: 110, 512 thr; 1 running @@ -11,24 +11,24 @@ expression: "format!(\"{:?}\", grid)" 05 (C): Mem[|||||||||||||||||||||||||||||||||||||8.80G/15.3G] 06 (C): Swp[| 2.82M/16.0G] 07 (C): -08 (C): PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command +08 (C): PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command 09 (C): 20 0 8576 4508 3356 R 1.3 0.0 0:00.11 htop -10 (C): 20 0 171M 10868 7804 S 0.0 0.1 2:08.38 /sbin/init -11 (C): 20 0 107M 29364 28092 S 0.0 0.2 0:03.42 /usr/lib/systemd/systemd-journald -12 (C): 20 0 32648 9568 6616 S 0.0 0.1 0:01.87 /usr/lib/systemd/systemd-udevd -13 (C): 20 0 78060 992 856 S 0.0 0.0 0:00.00 /usr/bin/lvmetad -f +10 (C): 20 0 171M 10868 7804 S 0.0 0.1 2:08.38 /sbin/init +11 (C): 20 0 107M 29364 28092 S 0.0 0.2 0:03.42 /usr/lib/systemd/systemd-journald +12 (C): 20 0 32648 9568 6616 S 0.0 0.1 0:01.87 /usr/lib/systemd/systemd-udevd +13 (C): 20 0 78060 992 856 S 0.0 0.0 0:00.00 /usr/bin/lvmetad -f 14 (C): 20 0 6952 4356 3492 S 0.0 0.0 0:57.67 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidf -15 (C): 20 0 14824 7552 5984 S 0.0 0.0 0:12.93 /usr/bin/connmand -n --nodnsproxy -16 (C): 20 0 17696 7940 6696 S 0.0 0.0 0:01.25 /usr/lib/systemd/systemd-logind -17 (C): 20 0 1635M 56148 20460 S 0.0 0.3 1:27.24 /usr/bin/dockerd -H fd:// -18 (C): 20 0 1635M 56148 20460 S 0.0 0.3 0:38.37 /usr/bin/dockerd -H fd:// -19 (C): 20 0 1635M 56148 20460 S 0.0 0.3 0:00.01 /usr/bin/dockerd -H fd:// -20 (C): 20 0 1635M 56148 20460 S 0.0 0.3 0:00.00 /usr/bin/dockerd -H fd:// -21 (C): 20 0 1635M 56148 20460 S 0.0 0.3 0:00.00 /usr/bin/dockerd -H fd:// -22 (C): 20 0 1635M 56148 20460 S 0.0 0.3 0:00.00 /usr/bin/dockerd -H fd:// -23 (C): 20 0 1635M 56148 20460 S 0.0 0.3 1:47.55 /usr/bin/dockerd -H fd:// -24 (C): 20 0 1635M 56148 20460 S 0.0 0.3 1:26.19 /usr/bin/dockerd -H fd:// -25 (C): 20 0 1635M 56148 20460 S 0.0 0.3 1:40.77 /usr/bin/dockerd -H fd:// -26 (C): 20 0 1635M 56148 20460 S 0.0 0.3 1:47.26 /usr/bin/dockerd -H fd:// +15 (C): 20 0 14824 7552 5984 S 0.0 0.0 0:12.93 /usr/bin/connmand -n --nodnsproxy +16 (C): 20 0 17696 7940 6696 S 0.0 0.0 0:01.25 /usr/lib/systemd/systemd-logind +17 (C): 20 0 1635M 56148 20460 S 0.0 0.3 1:27.24 /usr/bin/dockerd -H fd:// +18 (C): 20 0 1635M 56148 20460 S 0.0 0.3 0:38.37 /usr/bin/dockerd -H fd:// +19 (C): 20 0 1635M 56148 20460 S 0.0 0.3 0:00.01 /usr/bin/dockerd -H fd:// +20 (C): 20 0 1635M 56148 20460 S 0.0 0.3 0:00.00 /usr/bin/dockerd -H fd:// +21 (C): 20 0 1635M 56148 20460 S 0.0 0.3 0:00.00 /usr/bin/dockerd -H fd:// +22 (C): 20 0 1635M 56148 20460 S 0.0 0.3 0:00.00 /usr/bin/dockerd -H fd:// +23 (C): 20 0 1635M 56148 20460 S 0.0 0.3 1:47.55 /usr/bin/dockerd -H fd:// +24 (C): 20 0 1635M 56148 20460 S 0.0 0.3 1:26.19 /usr/bin/dockerd -H fd:// +25 (C): 20 0 1635M 56148 20460 S 0.0 0.3 1:40.77 /usr/bin/dockerd -H fd:// +26 (C): 20 0 1635M 56148 20460 S 0.0 0.3 1:47.26 /usr/bin/dockerd -H fd:// 27 (C): F1Help F2Setup F3SearchF4FilterF5Tree F6SortByF7Nice -F8Nice +F9Kill F10Quit diff --git a/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__vttest8_2.snap b/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__vttest8_2.snap index f319d10b3..df3e150f1 100644 --- a/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__vttest8_2.snap +++ b/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__vttest8_2.snap @@ -1,9 +1,9 @@ --- source: zellij-server/src/panes/./unit/grid_tests.rs -assertion_line: 465 +assertion_line: 569 expression: "format!(\"{:?}\", grid)" --- -00 (C): ABAAAAAAAAAAAAAAAAA +00 (C): ABAAAAAAAAAAAAAAAAA 01 (C): 02 (C): 03 (C): Test of 'Delete Character'. The top line should be 'AB'. Push <RETURN> diff --git a/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__vttest8_3.snap b/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__vttest8_3.snap index e9dc19a61..b70fb2272 100644 --- a/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__vttest8_3.snap +++ b/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__vttest8_3.snap @@ -1,32 +1,32 @@ --- source: zellij-server/src/panes/./unit/grid_tests.rs +assertion_line: 591 expression: "format!(\"{:?}\", grid)" - --- -00 (C): AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -01 (C): BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB -02 (C): CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -03 (C): The right column should be staggered DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD -04 (C): by one. Push <RETURN>EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE -05 (C): FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -06 (C): GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG -07 (C): HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH -08 (C): IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII -09 (C): JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ -10 (C): KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK -11 (C): LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL -12 (C): MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM -13 (C): NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN -14 (C): OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO -15 (C): PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP -16 (C): QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ -17 (C): RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR -18 (C): SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS -19 (C): TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT -20 (C): UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU -21 (C): VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV -22 (C): WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW -23 (C): XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +00 (C): AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +01 (C): BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB +02 (C): CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +03 (C): The right column should be staggered DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +04 (C): by one. Push <RETURN>EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +05 (C): FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +06 (C): GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG +07 (C): HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +08 (C): IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +09 (C): JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ +10 (C): KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK +11 (C): LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL +12 (C): MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM +13 (C): NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN +14 (C): OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO +15 (C): PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP +16 (C): QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ +17 (C): RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR +18 (C): SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS +19 (C): TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT +20 (C): UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU +21 (C): VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV +22 (C): WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW +23 (C): XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 24 (C): 25 (C): 26 (C): diff --git a/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__vttest8_4.snap b/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__vttest8_4.snap index ae820f6ac..eadce65d4 100644 --- a/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__vttest8_4.snap +++ b/zellij-server/src/panes/unit/snapshots/zellij_server__panes__grid__grid_tests__vttest8_4.snap @@ -1,32 +1,32 @@ --- source: zellij-server/src/panes/./unit/grid_tests.rs +assertion_line: 613 expression: "format!(\"{:?}\", grid)" - --- -00 (C): AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -01 (C): BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB -02 (C): CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -03 (C): The right column should be staggered -04 (C): by one. Push <RETURN>EEEEEEEEEEEEE -05 (C): FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -06 (C): GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG -07 (C): HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH -08 (C): IIIIIIIIIIIIIIIIIIIIIIIIIIIIIII -09 (C): JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ -10 (C): KKKKKKKKKKKKKKKKKKKKKKKKKKKKK -11 (C): LLLLLLLLLLLLLLLLLLLLLLLLLLLL -12 (C): MMMMMMMMMMMMMMMMMMMMMMMMMMM -13 (C): NNNNNNNNNNNNNNNNNNNNNNNNNN -14 (C): OOOOOOOOOOOOOOOOOOOOOOOOO -15 (C): PPPPPPPPPPPPPPPPPPPPPPPP -16 (C): QQQQQQQQQQQQQQQQQQQQQQQ -17 (C): RRRRRRRRRRRRRRRRRRRRRR -18 (C): SSSSSSSSSSSSSSSSSSSSS -19 (C): TTTTTTTTTTTTTTTTTTTT -20 (C): UUUUUUUUUUUUUUUUUUU -21 (C): VVVVVVVVVVVVVVVVVV -22 (C): WWWWWWWWWWWWWWWWW -23 (C): XXXXXXXXXXXXXXXX +00 (C): AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +01 (C): BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB +02 (C): CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +03 (C): The right column should be staggered +04 (C): by one. Push <RETURN>EEEEEEEEEEEEE +05 (C): FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +06 (C): GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG +07 (C): HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +08 (C): IIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +09 (C): JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ +10 (C): KKKKKKKKKKKKKKKKKKKKKKKKKKKKK +11 (C): LLLLLLLLLLLLLLLLLLLLLLLLLLLL +12 (C): MMMMMMMMMMMMMMMMMMMMMMMMMMM +13 (C): NNNNNNNNNNNNNNNNNNNNNNNNNN +14 (C): OOOOOOOOOOOOOOOOOOOOOOOOO +15 (C): PPPPPPPPPPPPPPPPPPPPPPPP +16 (C): QQQQQQQQQQQQQQQQQQQQQQQ +17 (C): RRRRRRRRRRRRRRRRRRRRRR +18 (C): SSSSSSSSSSSSSSSSSSSSS +19 (C): TTTTTTTTTTTTTTTTTTTT +20 (C): UUUUUUUUUUUUUUUUUUU +21 (C): VVVVVVVVVVVVVVVVVV +22 (C): WWWWWWWWWWWWWWWWW +23 (C): XXXXXXXXXXXXXXXX 24 (C): 25 (C): 26 (C): |