xref: /openbsd/games/banner/banner.c (revision 4cfece93)
1 /*	$OpenBSD: banner.c,v 1.23 2018/10/16 20:06:42 tb Exp $	*/
2 /*	$NetBSD: banner.c,v 1.4 1995/04/22 11:55:15 cgd Exp $	*/
3 
4 /*
5  * Copyright (c) 1980, 1993, 1994
6  *	The Regents of the University of California.  All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  * 1. Redistributions of source code must retain the above copyright
12  *    notice, this list of conditions and the following disclaimer.
13  * 2. Redistributions in binary form must reproduce the above copyright
14  *    notice, this list of conditions and the following disclaimer in the
15  *    documentation and/or other materials provided with the distribution.
16  * 3. Neither the name of the University nor the names of its contributors
17  *    may be used to endorse or promote products derived from this software
18  *    without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30  * SUCH DAMAGE.
31  */
32 
33 /*
34  * banner - prints large signs
35  * banner [-w width] [-d] [-t] message ...
36  */
37 
38 #include <err.h>
39 #include <stdio.h>
40 #include <stdlib.h>
41 #include <string.h>
42 #include <unistd.h>
43 
44 #define MAXMSG 1024
45 #define DWIDTH 132
46 #define NCHARS 128
47 #define NBYTES 9085
48 
49 /* Pointers into data_table for each ASCII char */
50 const int asc_ptr[NCHARS] = {
51 /* '\x00' */	   0,      0,      0,      0,      0,      0,      0,      0,
52 /* '\x08' */	   0,      0,      0,      0,      0,      0,      0,      0,
53 /* '\x10' */	   0,      0,      0,      0,      0,      0,      0,      0,
54 /* '\x18' */	   0,      0,      0,      0,      0,      0,      0,      0,
55 /*    ' ' */	   1,      2,     48,     78,    100,    276,    477,    582,
56 /*    '(' */	 612,    675,    738,    836,    846,    876,    880,    902,
57 /*    '0' */	 999,   1129,   1178,   1396,   1570,   1714,   1903,   2079,
58 /*    '8' */	2202,   2411,   2587,   2623,      0,   2671,      0,   2677,
59 /*    '@' */	2818,   3032,   3232,   3361,   3517,   3618,   3685,   3739,
60 /*    'H' */	3918,   3952,   3966,   4065,   4230,   4262,   4379,   4494,
61 /*    'P' */	4654,   4734,   4942,   5130,   5338,   5388,   5513,   5646,
62 /*    'X' */	5827,   6040,   6190,      0,      0,      0,      0,      0,
63 /*    '`' */	  48,   6435,   6573,   6663,   6765,   6857,   6999,   7082,
64 /*    'h' */	7304,   7375,   7421,   7505,   7609,   7621,   7715,   7786,
65 /*    'p' */	7894,   7984,   8074,   8135,   8293,   8353,   8418,   8514,
66 /*    'x' */	8640,   8795,   8922,      0,      0,      0,      0,      0,
67 };
68 
69 /*
70  * Table of stuff to print. Format:
71  * 128+n -> print current line n times.
72  * 192+n -> print current line n times, and this is last byte of char.
73  * else, put m chars at position n (where m
74  * is the next elt in array) and goto second
75  * next element in array.
76  */
77 const char data_table[NBYTES] = {
78 	129,
79 /*    1 ' ' */
80 	227,
81 /*    2 '!' */
82 	 34,    6,   90,   19,  129,   32,   10,   74,   40,  129,
83 	 31,   12,   64,   53,  129,   30,   14,   54,   65,  129,
84 	 30,   14,   53,   67,  129,   30,   14,   54,   65,  129,
85 	 31,   12,   64,   53,  129,   32,   10,   74,   40,  129,
86 	 34,    6,   90,   19,  129,  194,
87 /*   48 '"' '`' */
88 	 99,    9,  129,   97,   14,  129,   96,   18,  129,   95,
89 	 22,  129,   95,   16,  117,    2,  129,   95,   14,  129,
90 	 96,   11,  129,   97,    9,  129,   99,    6,  129,  194,
91 /*   78 '#' */
92 	 87,    4,  101,    4,  131,   82,   28,  131,   87,    4,
93 	101,    4,  133,   82,   28,  131,   87,    4,  101,    4,
94 	131,  193,
95 /*  100 '$' */
96 	 39,    1,   84,   27,  129,   38,    3,   81,   32,  129,
97 	 37,    5,   79,   35,  129,   36,    5,   77,   38,  129,
98 	 35,    5,   76,   40,  129,   34,    5,   75,   21,  103,
99 	 14,  129,   33,    5,   74,   19,  107,   11,  129,   32,
100 	  5,   73,   17,  110,    9,  129,   32,    4,   73,   16,
101 	112,    7,  129,   31,    4,   72,   15,  114,    6,  129,
102 	 31,    4,   72,   14,  115,    5,  129,   30,    4,   71,
103 	 15,  116,    5,  129,   27,   97,  131,   30,    4,   69,
104 	 14,  117,    4,  129,   30,    4,   68,   15,  117,    4,
105 	132,   30,    4,   68,   14,  117,    4,  129,   27,   97,
106 	131,   30,    5,   65,   15,  116,    5,  129,   31,    4,
107 	 65,   14,  116,    4,  129,   31,    6,   64,   15,  116,
108 	  4,  129,   32,    7,   62,   16,  115,    4,  129,   32,
109 	  9,   61,   17,  114,    5,  129,   33,   11,   58,   19,
110 	113,    5,  129,   34,   14,   55,   21,  112,    5,  129,
111 	 35,   40,  111,    5,  129,   36,   38,  110,    5,  129,
112 	 37,   35,  109,    5,  129,   38,   32,  110,    3,  129,
113 	 40,   27,  111,    1,  129,  193,
114 /*  276 '%' */
115 	 30,    4,  103,    9,  129,   30,    7,  100,   15,  129,
116 	 30,   10,   99,   17,  129,   33,   10,   97,    6,  112,
117 	  6,  129,   36,   10,   96,    5,  114,    5,  129,   39,
118 	 10,   96,    4,  115,    4,  129,   42,   10,   95,    4,
119 	116,    4,  129,   45,   10,   95,    3,  117,    3,  129,
120 	 48,   10,   95,    3,  117,    3,  129,   51,   10,   95,
121 	  4,  116,    4,  129,   54,   10,   96,    4,  115,    4,
122 	129,   57,   10,   96,    5,  114,    5,  129,   60,   10,
123 	 97,    6,  112,    6,  129,   63,   10,   99,   17,  129,
124 	 66,   10,  100,   15,  129,   69,   10,  103,    9,  129,
125 	 39,    9,   72,   10,  129,   36,   15,   75,   10,  129,
126 	 35,   17,   78,   10,  129,   33,    6,   48,    6,   81,
127 	 10,  129,   32,    5,   50,    5,   84,   10,  129,   32,
128 	  4,   51,    4,   87,   10,  129,   31,    4,   52,    4,
129 	 90,   10,  129,   31,    3,   53,    3,   93,   10,  129,
130 	 31,    3,   53,    3,   96,   10,  129,   31,    4,   52,
131 	  4,   99,   10,  129,   32,    4,   51,    4,  102,   10,
132 	129,   32,    5,   50,    5,  105,   10,  129,   33,    6,
133 	 48,    6,  108,   10,  129,   35,   17,  111,   10,  129,
134 	 36,   15,  114,    7,  129,   40,    9,  118,    4,  129,
135 	193,
136 /*  477 '&' */
137 	 48,   18,  129,   43,   28,  129,   41,   32,  129,   39,
138 	 36,  129,   37,   40,  129,   35,   44,  129,   34,   46,
139 	129,   33,   13,   68,   13,  129,   32,    9,   73,    9,
140 	129,   32,    7,   75,    7,  129,   31,    6,   77,    6,
141 	129,   31,    5,   78,    5,  129,   30,    5,   79,    5,
142 	129,   20,   74,  132,   30,    4,   80,    4,  129,   31,
143 	  3,   79,    4,  129,   31,    4,   79,    4,  129,   32,
144 	  3,   78,    4,  129,   32,    4,   76,    6,  129,   33,
145 	  4,   74,    7,  129,   34,    4,   72,    8,  129,   35,
146 	  5,   72,    7,  129,   37,    5,   73,    4,  129,   39,
147 	  4,   74,    1,  129,  194,
148 /*  582 "'" */
149 	111,    6,  129,  109,   10,  129,  108,   12,  129,  107,
150 	 14,  129,   97,    2,  105,   16,  129,   99,   22,  129,
151 	102,   18,  129,  105,   14,  129,  108,    9,  129,  194,
152 /*  612 '(' */
153 	 63,   25,  129,   57,   37,  129,   52,   47,  129,   48,
154 	 55,  129,   44,   63,  129,   41,   69,  129,   38,   75,
155 	129,   36,   79,  129,   34,   83,  129,   33,   28,   90,
156 	 28,  129,   32,   23,   96,   23,  129,   32,   17,  102,
157 	 17,  129,   31,   13,  107,   13,  129,   30,    9,  112,
158 	  9,  129,   30,    5,  116,    5,  129,   30,    1,  120,
159 	  1,  129,  194,
160 /*  675 ')' */
161 	 30,    1,  120,    1,  129,   30,    5,  116,    5,  129,
162 	 30,    9,  112,    9,  129,   31,   13,  107,   13,  129,
163 	 32,   17,  102,   17,  129,   32,   23,   96,   23,  129,
164 	 33,   28,   90,   28,  129,   34,   83,  129,   36,   79,
165 	129,   38,   75,  129,   41,   69,  129,   44,   63,  129,
166 	 48,   55,  129,   52,   47,  129,   57,   37,  129,   63,
167 	 25,  129,  194,
168 /*  738 '*' */
169 	 80,    4,  131,   68,    2,   80,    4,   94,    2,  129,
170 	 66,    6,   80,    4,   92,    6,  129,   67,    7,   80,
171 	  4,   90,    7,  129,   69,    7,   80,    4,   88,    7,
172 	129,   71,    6,   80,    4,   87,    6,  129,   72,   20,
173 	129,   74,   16,  129,   76,   12,  129,   62,   40,  131,
174 	 76,   12,  129,   74,   16,  129,   72,   20,  129,   71,
175 	  6,   80,    4,   87,    6,  129,   69,    7,   80,    4,
176 	 88,    7,  129,   67,    7,   80,    4,   90,    7,  129,
177 	 66,    6,   80,    4,   92,    6,  129,   68,    2,   80,
178 	  4,   94,    2,  129,   80,    4,  130,  193,
179 /*  836 '+' */
180 	 60,    4,  139,   41,   42,  131,   60,    4,  139,  193,
181 /*  846 ',' */
182 	 34,    6,  129,   32,   10,  129,   31,   12,  129,   30,
183 	 14,  129,   20,    2,   28,   16,  129,   22,   22,  129,
184 	 24,   19,  129,   27,   15,  129,   31,    9,  129,  194,
185 /*  876 '-' */
186 	 60,    4,  152,  193,
187 /*  880 '.' */
188 	 34,    6,  129,   32,   10,  129,   31,   12,  129,   30,
189 	 14,  131,   31,   12,  129,   32,   10,  129,   34,    6,
190 	129,  194,
191 /*  902 '/' */
192 	 30,    4,  129,   30,    7,  129,   30,   10,  129,   33,
193 	 10,  129,   36,   10,  129,   39,   10,  129,   42,   10,
194 	129,   45,   10,  129,   48,   10,  129,   51,   10,  129,
195 	 54,   10,  129,   57,   10,  129,   60,   10,  129,   63,
196 	 10,  129,   66,   10,  129,   69,   10,  129,   72,   10,
197 	129,   75,   10,  129,   78,   10,  129,   81,   10,  129,
198 	 84,   10,  129,   87,   10,  129,   90,   10,  129,   93,
199 	 10,  129,   96,   10,  129,   99,   10,  129,  102,   10,
200 	129,  105,   10,  129,  108,   10,  129,  111,   10,  129,
201 	114,    7,  129,  117,    4,  129,  193,
202 /*  999 '0' */
203 	 60,   31,  129,   53,   45,  129,   49,   53,  129,   46,
204 	 59,  129,   43,   65,  129,   41,   69,  129,   39,   73,
205 	129,   37,   77,  129,   36,   79,  129,   35,   15,  101,
206 	 15,  129,   34,   11,  106,   11,  129,   33,    9,  109,
207 	  9,  129,   32,    7,  112,    7,  129,   31,    6,  114,
208 	  6,  129,   31,    5,  115,    5,  129,   30,    5,  116,
209 	  5,  129,   30,    4,  117,    4,  132,   30,    5,  116,
210 	  5,  129,   31,    5,  115,    5,  129,   31,    6,  114,
211 	  6,  129,   32,    7,  112,    7,  129,   33,    9,  109,
212 	  9,  129,   34,   11,  106,   11,  129,   35,   15,  101,
213 	 15,  129,   36,   79,  129,   37,   77,  129,   39,   73,
214 	129,   41,   69,  129,   43,   65,  129,   46,   59,  129,
215 	 49,   53,  129,   53,   45,  129,   60,   31,  129,  193,
216 /* 1129 '1' */
217 	 30,    4,  129,   30,    4,  100,    1,  129,   30,    4,
218 	100,    3,  129,   30,    4,  100,    5,  129,   30,   76,
219 	129,   30,   78,  129,   30,   80,  129,   30,   82,  129,
220 	 30,   83,  129,   30,   85,  129,   30,   87,  129,   30,
221 	 89,  129,   30,   91,  129,   30,    4,  132,  193,
222 /* 1178 '2' */
223 	 30,    3,  129,   30,    7,  129,   30,   10,  112,    1,
224 	129,   30,   13,  112,    2,  129,   30,   16,  112,    3,
225 	129,   30,   18,  111,    5,  129,   30,   21,  111,    6,
226 	129,   30,   23,  112,    6,  129,   30,   14,   47,    8,
227 	113,    6,  129,   30,   14,   49,    8,  114,    5,  129,
228 	 30,   14,   51,    8,  115,    5,  129,   30,   14,   53,
229 	  8,  116,    4,  129,   30,   14,   55,    8,  116,    5,
230 	129,   30,   14,   56,    9,  117,    4,  129,   30,   14,
231 	 57,    9,  117,    4,  129,   30,   14,   58,   10,  117,
232 	  4,  129,   30,   14,   59,   10,  117,    4,  129,   30,
233 	 14,   60,   11,  117,    4,  129,   30,   14,   61,   11,
234 	116,    5,  129,   30,   14,   62,   11,  116,    5,  129,
235 	 30,   14,   63,   12,  115,    6,  129,   30,   14,   64,
236 	 13,  114,    7,  129,   30,   14,   65,   13,  113,    8,
237 	129,   30,   14,   65,   15,  111,    9,  129,   30,   14,
238 	 66,   16,  109,   11,  129,   30,   14,   67,   17,  107,
239 	 12,  129,   30,   14,   68,   20,  103,   16,  129,   30,
240 	 14,   69,   49,  129,   30,   14,   70,   47,  129,   30,
241 	 14,   71,   45,  129,   30,   14,   73,   42,  129,   30,
242 	 15,   75,   38,  129,   33,   12,   77,   34,  129,   36,
243 	 10,   79,   30,  129,   40,    6,   82,   23,  129,   44,
244 	  3,   86,   15,  129,   47,    1,  129,  193,
245 /* 1396 '3' */
246 	129,   38,    3,  129,   37,    5,  111,    1,  129,   36,
247 	  7,  111,    2,  129,   35,    9,  110,    5,  129,   34,
248 	  8,  110,    6,  129,   33,    7,  109,    8,  129,   32,
249 	  7,  110,    8,  129,   32,    6,  112,    7,  129,   31,
250 	  6,  113,    6,  129,   31,    5,  114,    6,  129,   30,
251 	  5,  115,    5,  129,   30,    5,  116,    4,  129,   30,
252 	  4,  117,    4,  132,   30,    4,   79,    2,  117,    4,
253 	129,   30,    5,   78,    4,  117,    4,  129,   30,    5,
254 	 77,    6,  116,    5,  129,   30,    6,   76,    8,  115,
255 	  6,  129,   30,    7,   75,   11,  114,    6,  129,   30,
256 	  8,   73,   15,  112,    8,  129,   31,    9,   71,   19,
257 	110,    9,  129,   31,   11,   68,   26,  107,   12,  129,
258 	 32,   13,   65,   14,   82,   36,  129,   32,   16,   61,
259 	 17,   83,   34,  129,   33,   44,   84,   32,  129,   34,
260 	 42,   85,   30,  129,   35,   40,   87,   27,  129,   36,
261 	 38,   89,   23,  129,   38,   34,   92,   17,  129,   40,
262 	 30,   95,   11,  129,   42,   26,  129,   45,   20,  129,
263 	 49,   11,  129,  193,
264 /* 1570 '4' */
265 	 49,    1,  129,   49,    4,  129,   49,    6,  129,   49,
266 	  8,  129,   49,   10,  129,   49,   12,  129,   49,   14,
267 	129,   49,   17,  129,   49,   19,  129,   49,   21,  129,
268 	 49,   23,  129,   49,   14,   65,    9,  129,   49,   14,
269 	 67,    9,  129,   49,   14,   69,    9,  129,   49,   14,
270 	 71,   10,  129,   49,   14,   74,    9,  129,   49,   14,
271 	 76,    9,  129,   49,   14,   78,    9,  129,   49,   14,
272 	 80,    9,  129,   49,   14,   82,    9,  129,   49,   14,
273 	 84,    9,  129,   30,    4,   49,   14,   86,   10,  129,
274 	 30,    4,   49,   14,   89,    9,  129,   30,    4,   49,
275 	 14,   91,    9,  129,   30,    4,   49,   14,   93,    9,
276 	129,   30,   74,  129,   30,   76,  129,   30,   78,  129,
277 	 30,   81,  129,   30,   83,  129,   30,   85,  129,   30,
278 	 87,  129,   30,   89,  129,   30,   91,  129,   30,    4,
279 	 49,   14,  132,  193,
280 /* 1714 '5' */
281 	 37,    1,  129,   36,    3,   77,    3,  129,   35,    5,
282 	 78,   11,  129,   34,    7,   78,   21,  129,   33,    7,
283 	 79,   29,  129,   32,    7,   79,   38,  129,   32,    6,
284 	 80,    4,   92,   29,  129,   31,    6,   80,    5,  102,
285 	 19,  129,   31,    5,   80,    6,  107,   14,  129,   31,
286 	  4,   81,    5,  107,   14,  129,   30,    5,   81,    6,
287 	107,   14,  129,   30,    4,   81,    6,  107,   14,  130,
288 	 30,    4,   81,    7,  107,   14,  129,   30,    4,   80,
289 	  8,  107,   14,  130,   30,    5,   80,    8,  107,   14,
290 	129,   30,    5,   79,    9,  107,   14,  129,   31,    5,
291 	 79,    9,  107,   14,  129,   31,    6,   78,   10,  107,
292 	 14,  129,   32,    6,   76,   11,  107,   14,  129,   32,
293 	  8,   74,   13,  107,   14,  129,   33,   10,   71,   16,
294 	107,   14,  129,   33,   15,   67,   19,  107,   14,  129,
295 	 34,   51,  107,   14,  129,   35,   49,  107,   14,  129,
296 	 36,   47,  107,   14,  129,   37,   45,  107,   14,  129,
297 	 39,   41,  107,   14,  129,   41,   37,  107,   14,  129,
298 	 44,   32,  107,   14,  129,   47,   25,  111,   10,  129,
299 	 51,   16,  115,    6,  129,  119,    2,  129,  193,
300 /* 1903 '6' */
301 	 56,   39,  129,   51,   49,  129,   47,   57,  129,   44,
302 	 63,  129,   42,   67,  129,   40,   71,  129,   38,   75,
303 	129,   37,   77,  129,   35,   81,  129,   34,   16,   74,
304 	  5,  101,   16,  129,   33,   11,   76,    5,  107,   11,
305 	129,   32,    9,   77,    5,  110,    9,  129,   32,    7,
306 	 79,    4,  112,    7,  129,   31,    6,   80,    4,  114,
307 	  6,  129,   31,    5,   81,    4,  115,    5,  129,   30,
308 	  5,   82,    4,  116,    5,  129,   30,    4,   82,    4,
309 	116,    5,  129,   30,    4,   82,    5,  117,    4,  131,
310 	 30,    5,   82,    5,  117,    4,  129,   31,    5,   81,
311 	  6,  117,    4,  129,   31,    6,   80,    7,  117,    4,
312 	129,   32,    7,   79,    8,  117,    4,  129,   32,    9,
313 	 77,    9,  116,    5,  129,   33,   11,   75,   11,  116,
314 	  4,  129,   34,   16,   69,   16,  115,    5,  129,   35,
315 	 49,  114,    5,  129,   37,   46,  113,    5,  129,   38,
316 	 44,  112,    6,  129,   40,   41,  112,    5,  129,   42,
317 	 37,  113,    3,  129,   44,   33,  114,    1,  129,   47,
318 	 27,  129,   51,   17,  129,  193,
319 /* 2079 '7' */
320 	103,    2,  129,  103,    6,  129,  104,    9,  129,  105,
321 	 12,  129,  106,   15,  129,  107,   14,  135,   30,   10,
322 	107,   14,  129,   30,   17,  107,   14,  129,   30,   25,
323 	107,   14,  129,   30,   31,  107,   14,  129,   30,   37,
324 	107,   14,  129,   30,   42,  107,   14,  129,   30,   46,
325 	107,   14,  129,   30,   50,  107,   14,  129,   30,   54,
326 	107,   14,  129,   30,   58,  107,   14,  129,   59,   32,
327 	107,   14,  129,   64,   30,  107,   14,  129,   74,   23,
328 	107,   14,  129,   81,   18,  107,   14,  129,   86,   16,
329 	107,   14,  129,   91,   14,  107,   14,  129,   96,   25,
330 	129,  100,   21,  129,  104,   17,  129,  107,   14,  129,
331 	111,   10,  129,  114,    7,  129,  117,    4,  129,  120,
332 	  1,  129,  193,
333 /* 2202 '8' */
334 	 48,   13,  129,   44,   21,  129,   42,   26,  129,   40,
335 	 30,   92,   12,  129,   38,   34,   88,   20,  129,   36,
336 	 37,   86,   25,  129,   35,   39,   84,   29,  129,   34,
337 	 13,   63,   12,   82,   33,  129,   33,   11,   67,    9,
338 	 80,   36,  129,   32,    9,   70,    7,   79,   38,  129,
339 	 31,    8,   72,   46,  129,   30,    7,   74,   22,  108,
340 	 11,  129,   30,    6,   75,   19,  111,    9,  129,   30,
341 	  5,   75,   17,  113,    7,  129,   30,    5,   74,   16,
342 	114,    6,  129,   30,    4,   73,   16,  115,    6,  129,
343 	 30,    4,   72,   16,  116,    5,  129,   30,    4,   72,
344 	 15,  117,    4,  129,   30,    4,   71,   16,  117,    4,
345 	129,   30,    5,   70,   16,  117,    4,  129,   30,    5,
346 	 70,   15,  117,    4,  129,   30,    6,   69,   15,  116,
347 	  5,  129,   30,    7,   68,   17,  115,    5,  129,   30,
348 	  9,   67,   19,  114,    6,  129,   30,   10,   65,   22,
349 	113,    6,  129,   31,   12,   63,   27,  110,    9,  129,
350 	 32,   14,   60,   21,   84,    9,  106,   12,  129,   33,
351 	 47,   85,   32,  129,   34,   45,   86,   30,  129,   35,
352 	 43,   88,   26,  129,   36,   40,   90,   22,  129,   38,
353 	 36,   93,   17,  129,   40,   32,   96,   10,  129,   42,
354 	 28,  129,   44,   23,  129,   48,   15,  129,  193,
355 /* 2411 '9' */
356 	 83,   17,  129,   77,   27,  129,   36,    1,   74,   33,
357 	129,   35,    3,   72,   37,  129,   34,    5,   70,   41,
358 	129,   33,    6,   69,   44,  129,   33,    5,   68,   46,
359 	129,   32,    5,   67,   49,  129,   31,    5,   66,   17,
360 	101,   16,  129,   31,    5,   66,   11,  108,   10,  129,
361 	 30,    4,   65,    9,  110,    9,  129,   30,    4,   64,
362 	  8,  112,    7,  129,   30,    4,   64,    7,  114,    6,
363 	129,   30,    4,   64,    6,  115,    5,  129,   30,    4,
364 	 64,    5,  116,    5,  129,   30,    4,   64,    5,  117,
365 	  4,  131,   30,    4,   65,    4,  117,    4,  129,   30,
366 	  5,   65,    4,  116,    5,  129,   31,    5,   66,    4,
367 	115,    5,  129,   31,    6,   67,    4,  114,    6,  129,
368 	 32,    7,   68,    4,  112,    7,  129,   32,    9,   69,
369 	  5,  110,    9,  129,   33,   11,   70,    5,  107,   11,
370 	129,   34,   16,   72,    5,  101,   16,  129,   35,   81,
371 	129,   37,   77,  129,   38,   75,  129,   40,   71,  129,
372 	 42,   67,  129,   44,   63,  129,   47,   57,  129,   51,
373 	 49,  129,   56,   39,  129,  193,
374 /* 2587 ':' */
375 	 34,    6,   74,    6,  129,   32,   10,   72,   10,  129,
376 	 31,   12,   71,   12,  129,   30,   14,   70,   14,  131,
377 	 31,   12,   71,   12,  129,   32,   10,   72,   10,  129,
378 	 34,    6,   74,    6,  129,  194,
379 /* 2623 ';' */
380 	 34,    6,   74,    6,  129,   32,   10,   72,   10,  129,
381 	 31,   12,   71,   12,  129,   30,   14,   70,   14,  129,
382 	 20,    2,   28,   16,   70,   14,  129,   22,   22,   70,
383 	 14,  129,   24,   19,   71,   12,  129,   27,   15,   72,
384 	 10,  129,   31,    9,   74,    6,  129,  194,
385 /* 2671 '=' */
386 	 53,    4,   63,    4,  152,  193,
387 /* 2677 '?' */
388 	 99,    7,  129,   97,   13,  129,   96,   16,  129,   96,
389 	 18,  129,   96,   19,  129,   97,   19,  129,   99,    6,
390 	110,    7,  129,  112,    6,  129,  114,    5,  129,   34,
391 	  6,   57,    5,  115,    4,  129,   32,   10,   54,   12,
392 	116,    4,  129,   31,   12,   53,   16,  117,    3,  129,
393 	 30,   14,   52,   20,  117,    4,  129,   30,   14,   52,
394 	 23,  117,    4,  129,   30,   14,   52,   25,  117,    4,
395 	129,   31,   12,   52,   27,  117,    4,  129,   32,   10,
396 	 53,   10,   70,   11,  116,    5,  129,   34,    6,   55,
397 	  5,   73,   10,  115,    6,  129,   74,   11,  114,    7,
398 	129,   75,   12,  112,    9,  129,   76,   13,  110,   10,
399 	129,   77,   16,  106,   14,  129,   78,   41,  129,   80,
400 	 38,  129,   81,   36,  129,   82,   34,  129,   84,   30,
401 	129,   86,   26,  129,   88,   22,  129,   92,   14,  129,
402 	194,
403 /* 2818 '@' */
404 	 55,   15,  129,   50,   25,  129,   47,   32,  129,   45,
405 	 13,   70,   12,  129,   43,    9,   76,   10,  129,   42,
406 	  6,   79,    8,  129,   41,    5,   81,    7,  129,   40,
407 	  4,   84,    6,  129,   39,    4,   59,   12,   85,    6,
408 	129,   38,    4,   55,   19,   87,    5,  129,   37,    4,
409 	 53,   23,   88,    4,  129,   36,    4,   51,    8,   71,
410 	  6,   89,    4,  129,   36,    4,   51,    6,   73,    4,
411 	 89,    4,  129,   36,    4,   50,    6,   74,    4,   90,
412 	  3,  129,   35,    4,   50,    5,   75,    3,   90,    4,
413 	129,   35,    4,   50,    4,   75,    4,   90,    4,  131,
414 	 35,    4,   50,    5,   75,    4,   90,    4,  129,   36,
415 	  4,   51,    5,   75,    4,   90,    4,  129,   36,    4,
416 	 51,    6,   75,    4,   90,    4,  129,   36,    4,   53,
417 	 26,   90,    4,  129,   37,    4,   54,   25,   90,    4,
418 	129,   37,    4,   52,   27,   90,    3,  129,   38,    4,
419 	 52,    4,   89,    4,  129,   39,    4,   51,    4,   88,
420 	  4,  129,   40,    4,   50,    4,   87,    5,  129,   41,
421 	  4,   50,    4,   86,    5,  129,   42,    4,   50,    4,
422 	 85,    5,  129,   43,    3,   50,    4,   83,    6,  129,
423 	 44,    2,   51,    5,   80,    7,  129,   46,    1,   52,
424 	  6,   76,    9,  129,   54,   28,  129,   56,   23,  129,
425 	 60,   16,  129,  193,
426 /* 3032 'A' */
427 	 30,    4,  132,   30,    5,  129,   30,    8,  129,   30,
428 	 12,  129,   30,   16,  129,   30,    4,   37,   12,  129,
429 	 30,    4,   41,   12,  129,   30,    4,   44,   13,  129,
430 	 30,    4,   48,   13,  129,   52,   13,  129,   56,   12,
431 	129,   58,   14,  129,   58,    4,   64,   12,  129,   58,
432 	  4,   68,   12,  129,   58,    4,   72,   12,  129,   58,
433 	  4,   75,   13,  129,   58,    4,   79,   13,  129,   58,
434 	  4,   83,   13,  129,   58,    4,   87,   13,  129,   58,
435 	  4,   91,   12,  129,   58,    4,   95,   12,  129,   58,
436 	  4,   96,   15,  129,   58,    4,   93,   22,  129,   58,
437 	  4,   89,   30,  129,   58,    4,   85,   36,  129,   58,
438 	  4,   81,   38,  129,   58,    4,   77,   38,  129,   58,
439 	  4,   73,   38,  129,   58,    4,   70,   37,  129,   58,
440 	  4,   66,   37,  129,   58,   41,  129,   58,   37,  129,
441 	 54,   38,  129,   30,    4,   50,   38,  129,   30,    4,
442 	 46,   38,  129,   30,    4,   42,   38,  129,   30,    4,
443 	 38,   39,  129,   30,   43,  129,   30,   39,  129,   30,
444 	 35,  129,   30,   31,  129,   30,   27,  129,   30,   24,
445 	129,   30,   20,  129,   30,   16,  129,   30,   12,  129,
446 	 30,    8,  129,   30,    5,  129,   30,    4,  132,  193,
447 /* 3232 'B' */
448 	 30,    4,  117,    4,  132,   30,   91,  137,   30,    4,
449 	 80,    4,  117,    4,  138,   30,    4,   80,    5,  116,
450 	  5,  129,   30,    5,   79,    6,  116,    5,  130,   30,
451 	  6,   78,    8,  115,    6,  129,   31,    6,   77,    9,
452 	115,    6,  129,   31,    7,   76,   11,  114,    6,  129,
453 	 31,    8,   75,   14,  112,    8,  129,   32,    8,   74,
454 	 16,  111,    9,  129,   32,    9,   73,   19,  109,   10,
455 	129,   33,   10,   71,   24,  106,   13,  129,   33,   13,
456 	 68,   12,   83,   35,  129,   34,   16,   64,   15,   84,
457 	 33,  129,   35,   43,   85,   31,  129,   36,   41,   86,
458 	 29,  129,   37,   39,   88,   25,  129,   38,   37,   90,
459 	 21,  129,   40,   33,   93,   15,  129,   42,   29,   96,
460 	  9,  129,   45,   24,  129,   49,   16,  129,  193,
461 /* 3361 'C' */
462 	 63,   25,  129,   57,   37,  129,   53,   45,  129,   50,
463 	 51,  129,   47,   57,  129,   45,   61,  129,   43,   65,
464 	129,   41,   69,  129,   39,   73,  129,   38,   25,   92,
465 	 21,  129,   36,   21,   97,   18,  129,   35,   18,  102,
466 	 14,  129,   34,   16,  106,   11,  129,   33,   14,  108,
467 	 10,  129,   32,   12,  111,    8,  129,   32,   10,  113,
468 	  6,  129,   31,   10,  114,    6,  129,   31,    8,  115,
469 	  5,  129,   30,    8,  116,    5,  129,   30,    7,  116,
470 	  5,  129,   30,    6,  117,    4,  130,   30,    5,  117,
471 	  4,  131,   31,    4,  116,    5,  129,   32,    4,  116,
472 	  4,  129,   32,    5,  115,    5,  129,   33,    4,  114,
473 	  5,  129,   34,    4,  112,    6,  129,   35,    4,  110,
474 	  7,  129,   37,    4,  107,    9,  129,   39,    4,  103,
475 	 12,  129,   41,    4,  103,   18,  129,   43,    4,  103,
476 	 18,  129,   45,    5,  103,   18,  129,   48,    5,  103,
477 	 18,  129,   51,    1,  129,  193,
478 /* 3517 'D' */
479 	 30,    4,  117,    4,  132,   30,   91,  137,   30,    4,
480 	117,    4,  135,   30,    5,  116,    5,  130,   30,    6,
481 	115,    6,  130,   31,    6,  114,    6,  129,   31,    7,
482 	113,    7,  129,   32,    7,  112,    7,  129,   32,    8,
483 	111,    8,  129,   33,    9,  109,    9,  129,   33,   12,
484 	106,   12,  129,   34,   13,  104,   13,  129,   35,   15,
485 	101,   15,  129,   36,   19,   96,   19,  129,   37,   24,
486 	 90,   24,  129,   39,   73,  129,   40,   71,  129,   42,
487 	 67,  129,   44,   63,  129,   46,   59,  129,   49,   53,
488 	129,   52,   47,  129,   56,   39,  129,   61,   29,  129,
489 	193,
490 /* 3618 'E' */
491 	 30,    4,  117,    4,  132,   30,   91,  137,   30,    4,
492 	 80,    4,  117,    4,  140,   30,    4,   79,    6,  117,
493 	  4,  129,   30,    4,   77,   10,  117,    4,  129,   30,
494 	  4,   73,   18,  117,    4,  132,   30,    4,  117,    4,
495 	130,   30,    5,  116,    5,  130,   30,    7,  114,    7,
496 	129,   30,    8,  113,    8,  129,   30,   11,  110,   11,
497 	129,   30,   18,  103,   18,  132,  193,
498 /* 3685 'F' */
499 	 30,    4,  117,    4,  132,   30,   91,  137,   30,    4,
500 	 80,    4,  117,    4,  132,   80,    4,  117,    4,  136,
501 	 79,    6,  117,    4,  129,   77,   10,  117,    4,  129,
502 	 73,   18,  117,    4,  132,  117,    4,  130,  116,    5,
503 	130,  114,    7,  129,  113,    8,  129,  110,   11,  129,
504 	103,   18,  132,  193,
505 /* 3739 'G' */
506 	 63,   25,  129,   57,   37,  129,   53,   45,  129,   50,
507 	 51,  129,   47,   57,  129,   45,   61,  129,   43,   65,
508 	129,   41,   69,  129,   39,   73,  129,   38,   25,   92,
509 	 21,  129,   36,   21,   97,   18,  129,   35,   18,  102,
510 	 14,  129,   34,   16,  106,   11,  129,   33,   14,  108,
511 	 10,  129,   32,   12,  111,    8,  129,   32,   10,  113,
512 	  6,  129,   31,   10,  114,    6,  129,   31,    8,  115,
513 	  5,  129,   30,    8,  116,    5,  129,   30,    7,  116,
514 	  5,  129,   30,    6,  117,    4,  130,   30,    5,  117,
515 	  4,  131,   30,    5,   75,    4,  116,    5,  129,   31,
516 	  5,   75,    4,  116,    4,  129,   31,    6,   75,    4,
517 	115,    5,  129,   32,    7,   75,    4,  114,    5,  129,
518 	 32,    9,   75,    4,  112,    6,  129,   33,   11,   75,
519 	  4,  110,    7,  129,   34,   15,   75,    4,  107,    9,
520 	129,   35,   44,  103,   12,  129,   36,   43,  103,   18,
521 	129,   38,   41,  103,   18,  129,   39,   40,  103,   18,
522 	129,   41,   38,  103,   18,  129,   44,   35,  129,   48,
523 	 31,  129,   52,   27,  129,   61,   18,  129,  193,
524 /* 3918 'H' */
525 	 30,    4,  117,    4,  132,   30,   91,  137,   30,    4,
526 	 80,    4,  117,    4,  132,   80,    4,  140,   30,    4,
527 	 80,    4,  117,    4,  132,   30,   91,  137,   30,    4,
528 	117,    4,  132,  193,
529 /* 3952 'I' */
530 	 30,    4,  117,    4,  132,   30,   91,  137,   30,    4,
531 	117,    4,  132,  193,
532 /* 3966 'J' */
533 	 44,    7,  129,   40,   13,  129,   37,   17,  129,   35,
534 	 20,  129,   34,   22,  129,   33,   23,  129,   32,   24,
535 	129,   32,   23,  129,   31,    6,   41,   13,  129,   31,
536 	  5,   42,   11,  129,   30,    5,   44,    7,  129,   30,
537 	  4,  132,   30,    5,  130,   31,    5,  129,   31,    6,
538 	117,    4,  129,   31,    8,  117,    4,  129,   32,    9,
539 	117,    4,  129,   33,   11,  117,    4,  129,   34,   87,
540 	129,   35,   86,  129,   36,   85,  129,   37,   84,  129,
541 	 38,   83,  129,   40,   81,  129,   42,   79,  129,   45,
542 	 76,  129,   50,   71,  129,  117,    4,  132,  193,
543 /* 4065 'K' */
544 	 30,    4,  117,    4,  132,   30,   91,  137,   30,    4,
545 	 76,    8,  117,    4,  129,   30,    4,   73,   13,  117,
546 	  4,  129,   30,    4,   70,   18,  117,    4,  129,   30,
547 	  4,   67,   23,  117,    4,  129,   65,   26,  129,   62,
548 	 31,  129,   59,   35,  129,   56,   29,   89,    7,  129,
549 	 53,   29,   91,    7,  129,   50,   29,   93,    7,  129,
550 	 47,   29,   95,    6,  129,   30,    4,   45,   29,   96,
551 	  7,  129,   30,    4,   42,   29,   98,    7,  129,   30,
552 	  4,   39,   30,  100,    6,  129,   30,    4,   36,   30,
553 	101,    7,  129,   30,   33,  103,    7,  117,    4,  129,
554 	 30,   30,  105,    6,  117,    4,  129,   30,   27,  106,
555 	  7,  117,    4,  129,   30,   25,  108,    7,  117,    4,
556 	129,   30,   22,  110,   11,  129,   30,   19,  111,   10,
557 	129,   30,   16,  113,    8,  129,   30,   13,  115,    6,
558 	129,   30,   11,  116,    5,  129,   30,    8,  117,    4,
559 	129,   30,    5,  117,    4,  129,   30,    4,  117,    4,
560 	130,   30,    4,  130,  193,
561 /* 4230 'L' */
562 	 30,    4,  117,    4,  132,   30,   91,  137,   30,    4,
563 	117,    4,  132,   30,    4,  144,   30,    5,  130,   30,
564 	  7,  129,   30,    8,  129,   30,   11,  129,   30,   18,
565 	132,  193,
566 /* 4262 'M' */
567 	 30,    4,  117,    4,  132,   30,   91,  132,   30,    4,
568 	103,   18,  129,   30,    4,   97,   24,  129,   30,    4,
569 	 92,   29,  129,   30,    4,   87,   34,  129,   81,   40,
570 	129,   76,   45,  129,   70,   49,  129,   65,   49,  129,
571 	 60,   49,  129,   55,   49,  129,   50,   48,  129,   44,
572 	 49,  129,   39,   48,  129,   33,   49,  129,   30,   47,
573 	129,   34,   37,  129,   40,   26,  129,   46,   19,  129,
574 	 52,   19,  129,   58,   19,  129,   64,   19,  129,   70,
575 	 19,  129,   76,   19,  129,   82,   19,  129,   30,    4,
576 	 88,   18,  129,   30,    4,   94,   18,  129,   30,    4,
577 	100,   18,  129,   30,    4,  106,   15,  129,   30,   91,
578 	137,   30,    4,  117,    4,  132,  193,
579 /* 4379 'N' */
580 	 30,    4,  117,    4,  132,   30,   91,  132,   30,    4,
581 	107,   14,  129,   30,    4,  104,   17,  129,   30,    4,
582 	101,   20,  129,   30,    4,   99,   22,  129,   96,   25,
583 	129,   93,   28,  129,   91,   28,  129,   88,   29,  129,
584 	 85,   29,  129,   82,   29,  129,   79,   29,  129,   76,
585 	 29,  129,   74,   29,  129,   71,   29,  129,   68,   29,
586 	129,   65,   29,  129,   62,   29,  129,   60,   29,  129,
587 	 57,   29,  129,   54,   29,  129,   51,   29,  129,   49,
588 	 28,  129,   46,   29,  129,   43,   29,  129,   40,   29,
589 	117,    4,  129,   37,   29,  117,    4,  129,   35,   29,
590 	117,    4,  129,   32,   29,  117,    4,  129,   30,   91,
591 	132,  117,    4,  132,  193,
592 /* 4494 'O' */
593 	 63,   25,  129,   57,   37,  129,   53,   45,  129,   50,
594 	 51,  129,   47,   57,  129,   45,   61,  129,   43,   65,
595 	129,   41,   69,  129,   39,   73,  129,   38,   21,   92,
596 	 21,  129,   36,   18,   97,   18,  129,   35,   14,  102,
597 	 14,  129,   34,   11,  106,   11,  129,   33,   10,  108,
598 	 10,  129,   32,    8,  111,    8,  129,   32,    6,  113,
599 	  6,  129,   31,    6,  114,    6,  129,   31,    5,  115,
600 	  5,  129,   30,    5,  116,    5,  130,   30,    4,  117,
601 	  4,  132,   30,    5,  116,    5,  130,   31,    5,  115,
602 	  5,  129,   31,    6,  114,    6,  129,   32,    6,  113,
603 	  6,  129,   32,    8,  111,    8,  129,   33,   10,  108,
604 	 10,  129,   34,   11,  106,   11,  129,   35,   14,  102,
605 	 14,  129,   36,   18,   97,   18,  129,   38,   21,   92,
606 	 21,  129,   39,   73,  129,   41,   69,  129,   43,   65,
607 	129,   45,   61,  129,   47,   57,  129,   50,   51,  129,
608 	 53,   45,  129,   57,   37,  129,   63,   25,  129,  193,
609 /* 4654 'P' */
610 	 30,    4,  117,    4,  132,   30,   91,  137,   30,    4,
611 	 80,    4,  117,    4,  132,   80,    4,  117,    4,  134,
612 	 80,    5,  116,    5,  131,   80,    6,  115,    6,  130,
613 	 81,    6,  114,    6,  129,   81,    8,  112,    8,  129,
614 	 81,    9,  111,    9,  129,   82,   10,  109,   10,  129,
615 	 82,   13,  106,   13,  129,   83,   35,  129,   84,   33,
616 	129,   85,   31,  129,   86,   29,  129,   88,   25,  129,
617 	 90,   21,  129,   93,   15,  129,   96,    9,  129,  193,
618 /* 4734 'Q' */
619 	 63,   25,  129,   57,   37,  129,   53,   45,  129,   50,
620 	 51,  129,   47,   57,  129,   45,   61,  129,   43,   65,
621 	129,   41,   69,  129,   39,   73,  129,   38,   21,   92,
622 	 21,  129,   36,   18,   97,   18,  129,   35,   14,  102,
623 	 14,  129,   34,   11,  106,   11,  129,   33,   10,  108,
624 	 10,  129,   32,    8,  111,    8,  129,   32,    6,  113,
625 	  6,  129,   31,    6,  114,    6,  129,   31,    5,  115,
626 	  5,  129,   30,    5,  116,    5,  130,   30,    4,   39,
627 	  2,  117,    4,  129,   30,    4,   40,    4,  117,    4,
628 	129,   30,    4,   41,    5,  117,    4,  129,   30,    4,
629 	 41,    6,  117,    4,  129,   30,    5,   40,    8,  116,
630 	  5,  129,   30,    5,   39,   10,  116,    5,  129,   31,
631 	  5,   38,   11,  115,    5,  129,   31,   18,  114,    6,
632 	129,   32,   17,  113,    6,  129,   32,   16,  111,    8,
633 	129,   33,   15,  108,   10,  129,   33,   14,  106,   11,
634 	129,   32,   17,  102,   14,  129,   31,   23,   97,   18,
635 	129,   31,   28,   92,   21,  129,   30,   82,  129,   30,
636 	 80,  129,   30,   11,   43,   65,  129,   30,   10,   45,
637 	 61,  129,   31,    8,   47,   57,  129,   32,    6,   50,
638 	 51,  129,   33,    5,   53,   45,  129,   35,    4,   57,
639 	 37,  129,   38,    2,   63,   25,  129,  193,
640 /* 4942 'R' */
641 	 30,    4,  117,    4,  132,   30,   91,  137,   30,    4,
642 	 76,    8,  117,    4,  129,   30,    4,   73,   11,  117,
643 	  4,  129,   30,    4,   70,   14,  117,    4,  129,   30,
644 	  4,   67,   17,  117,    4,  129,   65,   19,  117,    4,
645 	129,   62,   22,  117,    4,  129,   59,   25,  117,    4,
646 	129,   56,   28,  117,    4,  129,   53,   31,  117,    4,
647 	129,   50,   34,  117,    4,  129,   47,   29,   80,    5,
648 	116,    5,  129,   30,    4,   45,   29,   80,    5,  116,
649 	  5,  129,   30,    4,   42,   29,   80,    5,  116,    5,
650 	129,   30,    4,   39,   30,   80,    6,  115,    6,  129,
651 	 30,    4,   36,   30,   80,    6,  115,    6,  129,   30,
652 	 33,   81,    6,  114,    6,  129,   30,   30,   81,    8,
653 	112,    8,  129,   30,   27,   81,    9,  111,    9,  129,
654 	 30,   25,   82,   10,  109,   10,  129,   30,   22,   82,
655 	 13,  106,   13,  129,   30,   19,   83,   35,  129,   30,
656 	 16,   84,   33,  129,   30,   13,   85,   31,  129,   30,
657 	 11,   86,   29,  129,   30,    8,   88,   25,  129,   30,
658 	  5,   90,   21,  129,   30,    4,   93,   15,  129,   30,
659 	  4,   96,    9,  129,   30,    4,  130,  193,
660 /* 5130 'S' */
661 	 30,   18,  130,   30,   18,   89,   15,  129,   30,   18,
662 	 85,   23,  129,   34,   11,   83,   27,  129,   34,    9,
663 	 81,   31,  129,   33,    8,   79,   35,  129,   33,    6,
664 	 78,   16,  106,    9,  129,   32,    6,   77,   15,  109,
665 	  7,  129,   32,    5,   76,   14,  111,    6,  129,   31,
666 	  5,   75,   14,  113,    5,  129,   31,    4,   74,   15,
667 	114,    5,  129,   31,    4,   74,   14,  115,    4,  129,
668 	 30,    4,   73,   15,  116,    4,  129,   30,    4,   73,
669 	 14,  116,    4,  129,   30,    4,   73,   14,  117,    4,
670 	129,   30,    4,   72,   15,  117,    4,  130,   30,    4,
671 	 71,   15,  117,    4,  130,   30,    4,   70,   15,  117,
672 	  4,  129,   30,    5,   70,   15,  117,    4,  129,   30,
673 	  5,   69,   15,  116,    5,  129,   30,    6,   68,   16,
674 	115,    5,  129,   31,    6,   67,   16,  114,    6,  129,
675 	 31,    7,   66,   17,  113,    6,  129,   32,    7,   64,
676 	 18,  111,    8,  129,   32,    8,   62,   19,  109,    9,
677 	129,   33,    9,   60,   20,  107,   10,  129,   34,   11,
678 	 57,   22,  103,   13,  129,   35,   43,  103,   18,  129,
679 	 36,   41,  103,   18,  129,   38,   38,  103,   18,  129,
680 	 39,   35,  103,   18,  129,   41,   31,  129,   43,   27,
681 	129,   46,   22,  129,   49,   14,  129,  193,
682 /* 5338 'T' */
683 	103,   18,  132,  110,   11,  129,  113,    8,  129,  114,
684 	  7,  129,  116,    5,  130,  117,    4,  132,   30,    4,
685 	117,    4,  132,   30,   91,  137,   30,    4,  117,    4,
686 	132,  117,    4,  132,  116,    5,  130,  114,    7,  129,
687 	113,    8,  129,  110,   11,  129,  103,   18,  132,  193,
688 /* 5388 'U' */
689 	117,    4,  132,   56,   65,  129,   50,   71,  129,   46,
690 	 75,  129,   44,   77,  129,   42,   79,  129,   40,   81,
691 	129,   38,   83,  129,   36,   85,  129,   35,   86,  129,
692 	 34,   20,  117,    4,  129,   33,   17,  117,    4,  129,
693 	 32,   15,  117,    4,  129,   32,   13,  117,    4,  129,
694 	 31,   12,  129,   31,   10,  129,   31,    9,  129,   30,
695 	  9,  129,   30,    8,  130,   30,    7,  132,   31,    6,
696 	130,   31,    7,  129,   32,    6,  129,   32,    7,  129,
697 	 33,    7,  129,   34,    7,  129,   35,    8,  129,   36,
698 	  9,  117,    4,  129,   38,    9,  117,    4,  129,   40,
699 	 10,  117,    4,  129,   42,   12,  117,    4,  129,   44,
700 	 77,  129,   46,   75,  129,   50,   71,  129,   56,   65,
701 	129,  117,    4,  132,  193,
702 /* 5513 'V' */
703 	117,    4,  132,  115,    6,  129,  110,   11,  129,  105,
704 	 16,  129,  101,   20,  129,   96,   25,  129,   92,   29,
705 	129,   87,   34,  129,   83,   38,  129,   78,   43,  129,
706 	 74,   47,  129,   70,   42,  117,    4,  129,   65,   42,
707 	117,    4,  129,   60,   43,  117,    4,  129,   56,   42,
708 	129,   51,   42,  129,   46,   43,  129,   42,   43,  129,
709 	 37,   44,  129,   33,   43,  129,   30,   42,  129,   33,
710 	 34,  129,   38,   25,  129,   42,   16,  129,   47,   15,
711 	129,   52,   15,  129,   57,   15,  129,   61,   16,  129,
712 	 66,   16,  129,   71,   16,  129,   76,   16,  129,   80,
713 	 16,  129,   85,   16,  117,    4,  129,   90,   16,  117,
714 	  4,  129,   95,   16,  117,    4,  129,  100,   21,  129,
715 	105,   16,  129,  110,   11,  129,  114,    7,  129,  117,
716 	  4,  132,  193,
717 /* 5646 'W' */
718 	117,    4,  132,  115,    6,  129,  110,   11,  129,  105,
719 	 16,  129,  101,   20,  129,   96,   25,  129,   92,   29,
720 	129,   87,   34,  129,   83,   38,  129,   78,   43,  129,
721 	 74,   47,  129,   70,   42,  117,    4,  129,   65,   42,
722 	117,    4,  129,   60,   43,  117,    4,  129,   56,   42,
723 	129,   51,   42,  129,   46,   43,  129,   42,   43,  129,
724 	 37,   44,  129,   33,   43,  129,   30,   42,  129,   33,
725 	 34,  129,   38,   25,  129,   42,   16,  129,   47,   15,
726 	129,   52,   15,  129,   57,   15,  129,   61,   16,  129,
727 	 65,   17,  129,   60,   27,  129,   56,   36,  129,   51,
728 	 42,  129,   46,   43,  129,   42,   43,  129,   37,   44,
729 	129,   33,   43,  129,   30,   42,  129,   33,   34,  129,
730 	 38,   25,  129,   42,   16,  129,   47,   15,  129,   52,
731 	 15,  129,   57,   15,  129,   61,   16,  129,   66,   16,
732 	129,   71,   16,  129,   76,   16,  129,   80,   16,  129,
733 	 85,   16,  117,    4,  129,   90,   16,  117,    4,  129,
734 	 95,   16,  117,    4,  129,  100,   21,  129,  105,   16,
735 	129,  110,   11,  129,  114,    7,  129,  117,    4,  132,
736 	193,
737 /* 5827 'X' */
738 	 30,    4,  117,    4,  132,   30,    4,  115,    6,  129,
739 	 30,    4,  112,    9,  129,   30,    6,  109,   12,  129,
740 	 30,    9,  106,   15,  129,   30,   11,  103,   18,  129,
741 	 30,   14,  100,   21,  129,   30,    4,   38,    9,   98,
742 	 23,  129,   30,    4,   40,   10,   95,   26,  129,   30,
743 	  4,   43,    9,   92,   29,  129,   46,    9,   89,   32,
744 	129,   49,    8,   86,   28,  117,    4,  129,   51,    9,
745 	 83,   28,  117,    4,  129,   54,    9,   80,   28,  117,
746 	  4,  129,   57,    8,   77,   28,  117,    4,  129,   59,
747 	  9,   74,   28,  129,   62,   37,  129,   64,   33,  129,
748 	 66,   28,  129,   63,   28,  129,   60,   28,  129,   57,
749 	 28,  129,   54,   33,  129,   51,   39,  129,   48,   29,
750 	 83,    9,  129,   30,    4,   45,   29,   86,    9,  129,
751 	 30,    4,   42,   29,   89,    9,  129,   30,    4,   39,
752 	 29,   92,    8,  129,   30,    4,   36,   29,   94,    9,
753 	129,   30,   32,   97,    9,  129,   30,   29,  100,    8,
754 	117,    4,  129,   30,   26,  103,    8,  117,    4,  129,
755 	 30,   23,  105,    9,  117,    4,  129,   30,   20,  108,
756 	 13,  129,   30,   18,  111,   10,  129,   30,   15,  113,
757 	  8,  129,   30,   12,  116,    5,  129,   30,    9,  117,
758 	  4,  129,   30,    6,  117,    4,  129,   30,    4,  117,
759 	  4,  132,  193,
760 /* 6040 'Y' */
761 	117,    4,  132,  114,    7,  129,  111,   10,  129,  108,
762 	 13,  129,  105,   16,  129,  102,   19,  129,  100,   21,
763 	129,   96,   25,  129,   93,   28,  129,   90,   31,  129,
764 	 87,   34,  129,   84,   30,  117,    4,  129,   30,    4,
765 	 81,   30,  117,    4,  129,   30,    4,   78,   30,  117,
766 	  4,  129,   30,    4,   75,   30,  117,    4,  129,   30,
767 	  4,   72,   30,  129,   30,   69,  129,   30,   66,  129,
768 	 30,   63,  129,   30,   60,  129,   30,   57,  129,   30,
769 	 54,  129,   30,   51,  129,   30,   48,  129,   30,   51,
770 	129,   30,    4,   73,   12,  129,   30,    4,   76,   12,
771 	129,   30,    4,   80,   12,  129,   30,    4,   83,   12,
772 	129,   87,   12,  129,   90,   12,  117,    4,  129,   94,
773 	 11,  117,    4,  129,   97,   12,  117,    4,  129,  101,
774 	 12,  117,    4,  129,  104,   17,  129,  108,   13,  129,
775 	111,   10,  129,  115,    6,  129,  117,    4,  134,  193,
776 /* 6190 'Z' */
777 	 30,    1,  103,   18,  129,   30,    4,  103,   18,  129,
778 	 30,    7,  103,   18,  129,   30,    9,  103,   18,  129,
779 	 30,   12,  110,   11,  129,   30,   15,  113,    8,  129,
780 	 30,   18,  114,    7,  129,   30,   21,  116,    5,  129,
781 	 30,   24,  116,    5,  129,   30,   27,  117,    4,  129,
782 	 30,   30,  117,    4,  129,   30,   33,  117,    4,  129,
783 	 30,    4,   37,   28,  117,    4,  129,   30,    4,   40,
784 	 28,  117,    4,  129,   30,    4,   42,   29,  117,    4,
785 	129,   30,    4,   45,   29,  117,    4,  129,   30,    4,
786 	 48,   29,  117,    4,  129,   30,    4,   51,   29,  117,
787 	  4,  129,   30,    4,   54,   29,  117,    4,  129,   30,
788 	  4,   57,   29,  117,    4,  129,   30,    4,   59,   30,
789 	117,    4,  129,   30,    4,   62,   30,  117,    4,  129,
790 	 30,    4,   65,   30,  117,    4,  129,   30,    4,   68,
791 	 30,  117,    4,  129,   30,    4,   71,   30,  117,    4,
792 	129,   30,    4,   74,   30,  117,    4,  129,   30,    4,
793 	 77,   30,  117,    4,  129,   30,    4,   80,   30,  117,
794 	  4,  129,   30,    4,   83,   30,  117,    4,  129,   30,
795 	  4,   86,   35,  129,   30,    4,   89,   32,  129,   30,
796 	  4,   91,   30,  129,   30,    4,   94,   27,  129,   30,
797 	  5,   97,   24,  129,   30,    5,  100,   21,  129,   30,
798 	  7,  103,   18,  129,   30,    8,  106,   15,  129,   30,
799 	 11,  109,   12,  129,   30,   18,  112,    9,  129,   30,
800 	 18,  115,    6,  129,   30,   18,  117,    4,  129,   30,
801 	 18,  120,    1,  129,  193,
802 /* 6435 'a' */
803 	 42,    8,  129,   38,   16,  129,   36,   20,  129,   34,
804 	 24,   71,    5,  129,   33,   26,   69,   10,  129,   32,
805 	 28,   68,   13,  129,   31,   30,   68,   14,  129,   31,
806 	  9,   52,    9,   68,   15,  129,   30,    8,   54,    8,
807 	 69,   14,  129,   30,    7,   55,    7,   71,    4,   78,
808 	  6,  129,   30,    6,   56,    6,   79,    5,  129,   30,
809 	  6,   56,    6,   80,    4,  130,   31,    5,   56,    5,
810 	 80,    4,  129,   31,    5,   56,    5,   79,    5,  129,
811 	 32,    5,   55,    5,   78,    6,  129,   33,    5,   54,
812 	  5,   77,    7,  129,   34,    6,   52,    6,   74,    9,
813 	129,   35,   48,  129,   33,   49,  129,   32,   49,  129,
814 	 31,   49,  129,   30,   49,  129,   30,   47,  129,   30,
815 	 45,  129,   30,   41,  129,   30,    6,  129,   30,    4,
816 	129,   30,    3,  129,   30,    2,  129,  193,
817 /* 6573 'b' */
818 	 30,    4,  117,    4,  130,   30,   91,  136,   37,    5,
819 	 72,    5,  129,   35,    5,   74,    5,  129,   33,    5,
820 	 76,    5,  129,   32,    5,   77,    5,  129,   31,    5,
821 	 78,    5,  129,   31,    4,   79,    4,  129,   30,    5,
822 	 79,    5,  131,   30,    6,   78,    6,  129,   30,    7,
823 	 77,    7,  129,   31,    8,   75,    8,  129,   31,   11,
824 	 72,   11,  129,   32,   15,   67,   15,  129,   33,   48,
825 	129,   34,   46,  129,   35,   44,  129,   37,   40,  129,
826 	 39,   36,  129,   42,   30,  129,   46,   22,  129,  193,
827 /* 6663 'c' */
828 	 48,   18,  129,   43,   28,  129,   41,   32,  129,   39,
829 	 36,  129,   37,   40,  129,   35,   44,  129,   34,   46,
830 	129,   33,   13,   68,   13,  129,   32,    9,   73,    9,
831 	129,   32,    7,   75,    7,  129,   31,    6,   77,    6,
832 	129,   31,    5,   78,    5,  129,   30,    5,   79,    5,
833 	129,   30,    4,   80,    4,  133,   31,    3,   79,    4,
834 	129,   31,    4,   79,    4,  129,   32,    3,   78,    4,
835 	129,   32,    4,   76,    6,  129,   33,    4,   74,    7,
836 	129,   34,    4,   72,    8,  129,   35,    5,   72,    7,
837 	129,   37,    5,   73,    4,  129,   39,    4,   74,    1,
838 	129,  194,
839 /* 6765 'd' */
840 	 46,   22,  129,   42,   30,  129,   39,   36,  129,   37,
841 	 40,  129,   35,   44,  129,   34,   46,  129,   33,   48,
842 	129,   32,   15,   67,   15,  129,   31,   11,   72,   11,
843 	129,   31,    8,   75,    8,  129,   30,    7,   77,    7,
844 	129,   30,    6,   78,    6,  129,   30,    5,   79,    5,
845 	131,   31,    4,   79,    4,  129,   31,    5,   78,    5,
846 	129,   32,    5,   77,    5,  129,   33,    5,   76,    5,
847 	129,   35,    5,   74,    5,  117,    4,  129,   37,    5,
848 	 72,    5,  117,    4,  129,   30,   91,  136,   30,    4,
849 	130,  193,
850 /* 6857 'e' */
851 	 48,   18,  129,   43,   28,  129,   41,   32,  129,   39,
852 	 36,  129,   37,   40,  129,   35,   44,  129,   34,   46,
853 	129,   33,   13,   55,    4,   68,   13,  129,   32,    9,
854 	 55,    4,   73,    9,  129,   32,    7,   55,    4,   75,
855 	  7,  129,   31,    6,   55,    4,   77,    6,  129,   31,
856 	  5,   55,    4,   78,    5,  129,   30,    5,   55,    4,
857 	 79,    5,  129,   30,    4,   55,    4,   80,    4,  132,
858 	 30,    4,   55,    4,   79,    5,  129,   31,    3,   55,
859 	  4,   78,    5,  129,   31,    4,   55,    4,   77,    6,
860 	129,   32,    3,   55,    4,   75,    7,  129,   32,    4,
861 	 55,    4,   73,    9,  129,   33,    4,   55,    4,   68,
862 	 13,  129,   34,    4,   55,   25,  129,   35,    5,   55,
863 	 24,  129,   37,    5,   55,   22,  129,   39,    4,   55,
864 	 20,  129,   55,   18,  129,   55,   16,  129,   55,   11,
865 	129,  193,
866 /* 6999 'f' */
867 	 80,    4,  129,   30,    4,   80,    4,  130,   30,   78,
868 	129,   30,   82,  129,   30,   85,  129,   30,   87,  129,
869 	 30,   88,  129,   30,   89,  129,   30,   90,  130,   30,
870 	  4,   80,    4,  115,    6,  129,   30,    4,   80,    4,
871 	117,    4,  129,   80,    4,  105,    6,  117,    4,  129,
872 	 80,    4,  103,   10,  116,    5,  129,   80,    4,  102,
873 	 19,  129,   80,    4,  101,   19,  129,  101,   19,  129,
874 	101,   18,  129,  102,   16,  129,  103,   12,  129,  105,
875 	  6,  129,  193,
876 /* 7082 'g' */
877 	 12,   10,   59,   11,  129,    9,   16,   55,   19,  129,
878 	  7,   20,   53,   23,  129,    6,    7,   23,    5,   32,
879 	  6,   51,   27,  129,    4,    7,   25,   16,   50,   29,
880 	129,    3,    6,   27,   16,   49,   31,  129,    2,    6,
881 	 28,   16,   48,   33,  129,    1,    6,   27,   18,   47,
882 	 35,  129,    1,    6,   27,   31,   71,   12,  129,    1,
883 	  5,   26,   15,   44,   10,   75,    8,  129,    1,    5,
884 	 25,   14,   45,    7,   77,    7,  129,    1,    5,   25,
885 	 13,   45,    5,   79,    5,  129,    1,    5,   24,   14,
886 	 45,    4,   80,    4,  129,    1,    5,   24,   13,   45,
887 	  4,   80,    4,  129,    1,    5,   23,   14,   45,    4,
888 	 80,    4,  129,    1,    5,   23,   13,   45,    4,   80,
889 	  4,  129,    1,    6,   22,   13,   45,    5,   79,    5,
890 	129,    1,    6,   21,   14,   45,    7,   77,    7,  129,
891 	  1,    7,   21,   13,   46,    8,   75,    8,  129,    1,
892 	  8,   20,   13,   46,   12,   71,   12,  129,    1,   10,
893 	 18,   15,   47,   35,  129,    2,   30,   48,   33,  129,
894 	  3,   29,   49,   32,  129,    4,   27,   50,   31,  129,
895 	  5,   25,   51,   27,   80,    2,   86,    4,  129,    7,
896 	 21,   53,   23,   80,    3,   85,    6,  129,    9,   17,
897 	 55,   19,   80,   12,  129,   12,   12,   59,   11,   81,
898 	 11,  129,   82,   10,  129,   84,    7,  129,   86,    4,
899 	129,  193,
900 /* 7304 'h' */
901 	 30,    4,  117,    4,  130,   30,   91,  136,   30,    4,
902 	 72,    5,  129,   30,    4,   74,    5,  129,   75,    5,
903 	129,   76,    5,  129,   76,    6,  129,   77,    6,  130,
904 	 77,    7,  130,   76,    8,  129,   30,    4,   75,    9,
905 	129,   30,    4,   72,   12,  129,   30,   54,  129,   30,
906 	 53,  130,   30,   52,  129,   30,   51,  129,   30,   49,
907 	129,   30,   46,  129,   30,   42,  129,   30,    4,  130,
908 	193,
909 /* 7375 'i' */
910 	 30,    4,   80,    4,  129,   30,    4,   80,    4,  100,
911 	  6,  129,   30,   54,   98,   10,  129,   30,   54,   97,
912 	 12,  129,   30,   54,   96,   14,  131,   30,   54,   97,
913 	 12,  129,   30,   54,   98,   10,  129,   30,   54,  100,
914 	  6,  129,   30,    4,  130,  193,
915 /* 7421 'j' */
916 	  7,    6,  129,    4,   11,  129,    3,   13,  129,    2,
917 	 14,  129,    1,   15,  130,    1,    3,    6,    9,  129,
918 	  1,    3,    7,    6,  129,    1,    3,  130,    1,    4,
919 	129,    1,    5,   80,    4,  129,    1,    7,   80,    4,
920 	100,    6,  129,    2,   82,   98,   10,  129,    3,   81,
921 	 97,   12,  129,    4,   80,   96,   14,  129,    5,   79,
922 	 96,   14,  129,    7,   77,   96,   14,  129,   10,   74,
923 	 97,   12,  129,   14,   70,   98,   10,  129,   19,   65,
924 	100,    6,  129,  193,
925 /* 7505 'k' */
926 	 30,    4,  117,    4,  130,   30,   91,  136,   30,    4,
927 	 57,    9,  129,   30,    4,   55,   12,  129,   52,   17,
928 	129,   50,   20,  129,   48,   24,  129,   46,   27,  129,
929 	 44,   21,   69,    6,  129,   41,   22,   70,    6,   80,
930 	  4,  129,   30,    4,   39,   21,   72,    6,   80,    4,
931 	129,   30,    4,   36,   22,   73,   11,  129,   30,   26,
932 	 75,    9,  129,   30,   23,   76,    8,  129,   30,   21,
933 	 78,    6,  129,   30,   19,   79,    5,  129,   30,   16,
934 	 80,    4,  129,   30,   14,   80,    4,  129,   30,   12,
935 	129,   30,   10,  129,   30,    7,  129,   30,    5,  129,
936 	 30,    4,  130,  193,
937 /* 7609 'l' */
938 	 30,    4,  117,    4,  130,   30,   91,  136,   30,    4,
939 	130,  193,
940 /* 7621 'm' */
941 	 30,    4,   80,    4,  130,   30,   54,  136,   30,    4,
942 	 72,    5,  129,   30,    4,   74,    5,  129,   75,    5,
943 	129,   76,    5,  129,   30,    4,   75,    7,  129,   30,
944 	  4,   74,    9,  129,   30,   54,  132,   30,   53,  129,
945 	 30,   52,  129,   30,   51,  129,   30,   48,  129,   30,
946 	  4,   72,    5,  129,   30,    4,   74,    5,  129,   75,
947 	  5,  129,   76,    5,  129,   30,    4,   75,    7,  129,
948 	 30,    4,   74,    9,  129,   30,   54,  132,   30,   53,
949 	129,   30,   52,  129,   30,   51,  129,   30,   48,  129,
950 	 30,    4,  130,  193,
951 /* 7715 'n' */
952 	 30,    4,   80,    4,  130,   30,   54,  136,   30,    4,
953 	 72,    5,  129,   30,    4,   74,    5,  129,   75,    5,
954 	129,   76,    5,  129,   76,    6,  129,   77,    6,  130,
955 	 77,    7,  130,   76,    8,  129,   30,    4,   75,    9,
956 	129,   30,    4,   72,   12,  129,   30,   54,  129,   30,
957 	 53,  130,   30,   52,  129,   30,   51,  129,   30,   49,
958 	129,   30,   46,  129,   30,   42,  129,   30,    4,  130,
959 	193,
960 /* 7786 'o' */
961 	 48,   18,  129,   43,   28,  129,   41,   32,  129,   39,
962 	 36,  129,   37,   40,  129,   35,   44,  129,   34,   46,
963 	129,   33,   13,   68,   13,  129,   32,    9,   73,    9,
964 	129,   32,    7,   75,    7,  129,   31,    6,   77,    6,
965 	129,   31,    5,   78,    5,  129,   30,    5,   79,    5,
966 	129,   30,    4,   80,    4,  132,   30,    5,   79,    5,
967 	130,   31,    5,   78,    5,  129,   31,    6,   77,    6,
968 	129,   32,    7,   75,    7,  129,   32,    9,   73,    9,
969 	129,   33,   13,   68,   13,  129,   34,   46,  129,   35,
970 	 44,  129,   37,   40,  129,   39,   36,  129,   41,   32,
971 	129,   43,   28,  129,   48,   18,  129,  193,
972 /* 7894 'p' */
973 	  1,    3,   80,    4,  130,    1,   83,  137,   37,    5,
974 	 72,    5,  129,   35,    5,   74,    5,  129,   33,    5,
975 	 76,    5,  129,   32,    5,   77,    5,  129,   31,    5,
976 	 78,    5,  129,   31,    4,   79,    4,  129,   30,    5,
977 	 79,    5,  131,   30,    6,   78,    6,  129,   30,    7,
978 	 77,    7,  129,   31,    8,   75,    8,  129,   31,   11,
979 	 72,   11,  129,   32,   15,   67,   15,  129,   33,   48,
980 	129,   34,   46,  129,   35,   44,  129,   37,   40,  129,
981 	 39,   36,  129,   42,   30,  129,   46,   22,  129,  193,
982 /* 7984 'q' */
983 	 46,   22,  129,   42,   30,  129,   39,   36,  129,   37,
984 	 40,  129,   35,   44,  129,   34,   46,  129,   33,   48,
985 	129,   32,   15,   67,   15,  129,   31,   11,   72,   11,
986 	129,   31,    8,   75,    8,  129,   30,    7,   77,    7,
987 	129,   30,    6,   78,    6,  129,   30,    5,   79,    5,
988 	131,   31,    4,   79,    4,  129,   31,    5,   78,    5,
989 	129,   32,    5,   77,    5,  129,   33,    5,   76,    5,
990 	129,   35,    5,   74,    5,  129,   37,    5,   72,    5,
991 	129,    1,   83,  136,    1,    3,   80,    4,  130,  193,
992 /* 8074 'r' */
993 	 30,    4,   80,    4,  130,   30,   54,  136,   30,    4,
994 	 68,    6,  129,   30,    4,   70,    6,  129,   71,    7,
995 	129,   72,    7,  129,   73,    7,  129,   74,    7,  129,
996 	 74,    8,  129,   75,    8,  130,   69,   15,  129,   67,
997 	 17,  129,   66,   18,  129,   65,   19,  130,   65,   18,
998 	130,   66,   16,  129,   67,   13,  129,   69,    8,  129,
999 	193,
1000 /* 8135 's' */
1001 	 30,   13,   64,    8,  129,   30,   13,   61,   14,  129,
1002 	 30,   13,   59,   18,  129,   30,   13,   57,   22,  129,
1003 	 33,    8,   56,   24,  129,   32,    7,   55,   26,  129,
1004 	 32,    6,   54,   28,  129,   31,    6,   53,   16,   77,
1005 	  6,  129,   31,    5,   53,   14,   79,    4,  129,   30,
1006 	  5,   52,   14,   80,    4,  129,   30,    5,   52,   13,
1007 	 80,    4,  129,   30,    4,   52,   13,   80,    4,  129,
1008 	 30,    4,   52,   12,   80,    4,  129,   30,    4,   51,
1009 	 13,   80,    4,  130,   30,    4,   50,   13,   79,    5,
1010 	129,   30,    4,   50,   13,   78,    5,  129,   30,    5,
1011 	 49,   14,   77,    6,  129,   31,    4,   49,   13,   76,
1012 	  6,  129,   31,    5,   48,   14,   75,    7,  129,   32,
1013 	  5,   47,   14,   73,    8,  129,   32,    6,   45,   16,
1014 	 71,   13,  129,   33,   27,   71,   13,  129,   34,   26,
1015 	 71,   13,  129,   35,   24,   71,   13,  129,   37,   20,
1016 	129,   39,   16,  129,   43,    9,  129,  193,
1017 /* 8293 't' */
1018 	 80,    4,  131,   41,   56,  129,   37,   60,  129,   35,
1019 	 62,  129,   33,   64,  129,   32,   65,  129,   31,   66,
1020 	129,   30,   67,  130,   30,   11,   80,    4,  129,   30,
1021 	  9,   80,    4,  129,   30,    8,   80,    4,  129,   31,
1022 	  7,   80,    4,  129,   31,    6,  129,   32,    5,  129,
1023 	 33,    5,  129,   35,    4,  129,   38,    3,  129,  193,
1024 /* 8353 'u' */
1025 	 80,    4,  130,   42,   42,  129,   38,   46,  129,   35,
1026 	 49,  129,   33,   51,  129,   32,   52,  129,   31,   53,
1027 	130,   30,   54,  129,   30,   12,  129,   30,    9,  129,
1028 	 30,    8,  129,   30,    7,  130,   31,    6,  130,   32,
1029 	  6,  129,   33,    5,  129,   34,    5,  129,   35,    5,
1030 	 80,    4,  129,   37,    5,   80,    4,  129,   30,   54,
1031 	136,   30,    4,  130,  193,
1032 /* 8418 'v' */
1033 	 80,    4,  130,   77,    7,  129,   74,   10,  129,   70,
1034 	 14,  129,   66,   18,  129,   62,   22,  129,   59,   25,
1035 	129,   55,   29,  129,   51,   33,  129,   47,   37,  129,
1036 	 44,   32,   80,    4,  129,   40,   32,   80,    4,  129,
1037 	 36,   32,  129,   32,   33,  129,   30,   31,  129,   33,
1038 	 24,  129,   36,   17,  129,   40,   12,  129,   44,   12,
1039 	129,   48,   12,  129,   51,   13,  129,   55,   13,  129,
1040 	 59,   13,   80,    4,  129,   63,   13,   80,    4,  129,
1041 	 67,   17,  129,   71,   13,  129,   74,   10,  129,   78,
1042 	  6,  129,   80,    4,  131,  193,
1043 /* 8514 'w' */
1044 	 80,    4,  130,   77,    7,  129,   74,   10,  129,   70,
1045 	 14,  129,   66,   18,  129,   62,   22,  129,   59,   25,
1046 	129,   55,   29,  129,   51,   33,  129,   47,   37,  129,
1047 	 44,   32,   80,    4,  129,   40,   32,   80,    4,  129,
1048 	 36,   32,  129,   32,   33,  129,   30,   31,  129,   33,
1049 	 24,  129,   36,   17,  129,   40,   12,  129,   44,   12,
1050 	129,   47,   13,  129,   44,   20,  129,   40,   28,  129,
1051 	 36,   31,  129,   32,   32,  129,   30,   30,  129,   33,
1052 	 24,  129,   36,   17,  129,   40,   12,  129,   44,   12,
1053 	129,   48,   12,  129,   51,   13,  129,   55,   13,  129,
1054 	 59,   13,   80,    4,  129,   63,   13,   80,    4,  129,
1055 	 67,   17,  129,   71,   13,  129,   74,   10,  129,   78,
1056 	  6,  129,   80,    4,  131,  193,
1057 /* 8640 'x' */
1058 	 30,    4,   80,    4,  130,   30,    4,   79,    5,  129,
1059 	 30,    5,   77,    7,  129,   30,    6,   74,   10,  129,
1060 	 30,    8,   72,   12,  129,   30,   11,   69,   15,  129,
1061 	 30,   13,   67,   17,  129,   30,    4,   37,    8,   64,
1062 	 20,  129,   30,    4,   39,    8,   62,   22,  129,   41,
1063 	  8,   59,   25,  129,   43,    8,   57,   27,  129,   45,
1064 	  8,   55,   22,   80,    4,  129,   47,   27,   80,    4,
1065 	129,   49,   23,  129,   47,   22,  129,   44,   23,  129,
1066 	 42,   22,  129,   30,    4,   39,   27,  129,   30,    4,
1067 	 37,   31,  129,   30,   27,   62,    8,  129,   30,   25,
1068 	 64,    8,  129,   30,   22,   66,    8,   80,    4,  129,
1069 	 30,   20,   68,    8,   80,    4,  129,   30,   17,   70,
1070 	  8,   80,    4,  129,   30,   15,   73,   11,  129,   30,
1071 	 12,   75,    9,  129,   30,   10,   77,    7,  129,   30,
1072 	  7,   79,    5,  129,   30,    5,   80,    4,  129,   30,
1073 	  4,   80,    4,  130,  193,
1074 /* 8795 'y' */
1075 	  4,    5,   80,    4,  129,    2,    9,   80,    4,  129,
1076 	  1,   11,   77,    7,  129,    1,   12,   74,   10,  129,
1077 	  1,   12,   70,   14,  129,    1,   12,   66,   18,  129,
1078 	  1,   11,   62,   22,  129,    2,    9,   59,   25,  129,
1079 	  4,   11,   55,   29,  129,    7,   12,   51,   33,  129,
1080 	 10,   12,   47,   37,  129,   14,   12,   44,   32,   80,
1081 	  4,  129,   17,   13,   40,   32,   80,    4,  129,   21,
1082 	 13,   36,   32,  129,   25,   40,  129,   29,   32,  129,
1083 	 33,   24,  129,   36,   17,  129,   40,   12,  129,   44,
1084 	 12,  129,   48,   12,  129,   51,   13,  129,   55,   13,
1085 	129,   59,   13,   80,    4,  129,   63,   13,   80,    4,
1086 	129,   67,   17,  129,   71,   13,  129,   74,   10,  129,
1087 	 78,    6,  129,   80,    4,  131,  193,
1088 /* 8922 'z' */
1089 	 30,    1,   71,   13,  129,   30,    3,   71,   13,  129,
1090 	 30,    6,   71,   13,  129,   30,    9,   75,    9,  129,
1091 	 30,   11,   77,    7,  129,   30,   14,   79,    5,  129,
1092 	 30,   17,   79,    5,  129,   30,   19,   80,    4,  129,
1093 	 30,   22,   80,    4,  129,   30,   25,   80,    4,  129,
1094 	 30,   27,   80,    4,  129,   30,    4,   36,   24,   80,
1095 	  4,  129,   30,    4,   38,   25,   80,    4,  129,   30,
1096 	  4,   41,   24,   80,    4,  129,   30,    4,   44,   24,
1097 	 80,    4,  129,   30,    4,   46,   25,   80,    4,  129,
1098 	 30,    4,   49,   25,   80,    4,  129,   30,    4,   52,
1099 	 24,   80,    4,  129,   30,    4,   54,   30,  129,   30,
1100 	  4,   57,   27,  129,   30,    4,   59,   25,  129,   30,
1101 	  4,   62,   22,  129,   30,    4,   65,   19,  129,   30,
1102 	  5,   67,   17,  129,   30,    5,   70,   14,  129,   30,
1103 	  7,   73,   11,  129,   30,    9,   76,    8,  129,   30,
1104 	 13,   78,    6,  129,   30,   13,   81,    3,  129,   30,
1105 	 13,  129,  193,
1106 };
1107 
1108 char	line[DWIDTH];
1109 char	message[MAXMSG];
1110 char	print[DWIDTH];
1111 int	debug, i, j, linen, max, nchars, pc, term, trace, x, y;
1112 int	width = DWIDTH;	/* -w option: scrunch letters to 80 columns */
1113 
1114 int
1115 main(int argc, char *argv[])
1116 {
1117 	int ch;
1118 	const char *errstr;
1119 
1120 	if (pledge("stdio", NULL) == -1)
1121 		err(1, "pledge");
1122 
1123 	while ((ch = getopt(argc, argv, "w:tdh")) != -1)
1124 		switch (ch) {
1125 		case 'd':
1126 			debug = 1;
1127 			break;
1128 		case 't':
1129 			trace = 1;
1130 			break;
1131 		case 'w':
1132 			width = strtonum(optarg, 1, DWIDTH, &errstr);
1133 			if (errstr)
1134 				errx(1, "width is %s: %s", errstr, optarg);
1135 			break;
1136 		case 'h':
1137 		default:
1138 			(void)fprintf(stderr,
1139 			    "usage: %s [-w width] message ...\n",
1140 			    getprogname());
1141 			return 1;
1142 		}
1143 	argc -= optind;
1144 	argv += optind;
1145 
1146 	for (i = 0; i < width; i++) {
1147 		j = i * DWIDTH / width;
1148 		print[j] = 1;
1149 	}
1150 
1151 	/* Have now read in the data. Next get the message to be printed. */
1152 	if (*argv) {
1153 		strlcpy(message, *argv, sizeof message);
1154 		while (*++argv) {
1155 			strlcat(message, " ", sizeof message);
1156 			strlcat(message, *argv, sizeof message);
1157 		}
1158 	} else {
1159 		if (isatty(fileno(stdin)))
1160 			fprintf(stderr,"Message: ");
1161 		if (fgets(message, sizeof(message), stdin) == NULL)
1162 			errx(1, "error reading message");
1163 		/* get rid of newline */
1164 		message[strcspn(message, "\n")] = '\0';
1165 	}
1166 	nchars = strlen(message);
1167 
1168 	/* some debugging print statements */
1169 	if (debug) {
1170 		printf("int asc_ptr[128] = {\n");
1171 		for (i = 0; i < 128; i++) {
1172 			printf("%4d,   ",asc_ptr[i]);
1173 			if ((i+1) % 8 == 0)
1174 				printf("\n");
1175 		}
1176 		printf("};\nchar data_table[NBYTES] = {\n");
1177 		printf("  /*   ");
1178 		for (i = 0; i < 10; i++) printf(" %3d  ",i);
1179 		printf("   */\n");
1180 		for (i = 0; i < NBYTES; i += 10) {
1181 			printf("/* %4d */  ",i);
1182 			for (j = i; j < i+10; j++) {
1183 				x = data_table[j] & 0377;
1184 				printf(" %3d, ",x);
1185 			}
1186 			putchar('\n');
1187 		}
1188 		printf("};\n");
1189 	}
1190 
1191 	/* check message to make sure it's legal */
1192 	j = 0;
1193 	for (i = 0; i < nchars; i++)
1194 		if ((u_char) message[i] >= NCHARS ||
1195 		    asc_ptr[(u_char) message[i]] == 0) {
1196 			warnx("The character '%c' is not in my character set",
1197 			    message[i]);
1198 			j++;
1199 		}
1200 	if (j)
1201 		return 1;
1202 
1203 	if (trace)
1204 		printf("Message '%s' is OK\n",message);
1205 	/* Now have message. Print it one character at a time.  */
1206 
1207 	for (i = 0; i < nchars; i++) {
1208 		if (trace)
1209 			printf("Char #%d: %c\n", i, message[i]);
1210 		for (j = 0; j < DWIDTH; j++) line[j] = ' ';
1211 		pc = asc_ptr[(u_char) message[i]];
1212 		term = 0;
1213 		max = 0;
1214 		linen = 0;
1215 		while (!term) {
1216 			if (pc < 0 || pc >= NBYTES) {
1217 				printf("bad pc: %d\n",pc);
1218 				return 1;
1219 			}
1220 			x = data_table[pc] & 0377;
1221 			if (trace)
1222 				printf("pc=%d, term=%d, max=%d, linen=%d, x=%d\n",pc,term,max,linen,x);
1223 			if (x >= 128) {
1224 				if (x>192) term++;
1225 				x = x & 63;
1226 				while (x--) {
1227 					if (print[(unsigned int) linen++ % DWIDTH]) {
1228 						for (j=0; j < max && j < DWIDTH; j++)
1229 							if (print[j])
1230 								putchar(line[j]);
1231 						putchar('\n');
1232 					}
1233 				}
1234 				for (j = 0; j < DWIDTH; j++) line[j] = ' ';
1235 				pc++;
1236 				max = 0;
1237 			}
1238 			else {
1239 				if (pc+1 < 0 || pc+1 >= NBYTES) {
1240 					printf("bad pc: %d\n",pc+1);
1241 					return 1;
1242 				}
1243 				y = data_table[pc+1];
1244 				/* compensate for narrow teminals */
1245 #ifdef notdef
1246 				x = (x*width + (DWIDTH/2)) / DWIDTH;
1247 				y = (y*width + (DWIDTH/2)) / DWIDTH;
1248 #endif
1249 				max = x+y;
1250 				while (x < max && x < DWIDTH)
1251 					line[x++] = '#';
1252 				pc += 2;
1253 				if (trace)
1254 					printf("x=%d, y=%d, max=%d\n",x,y,max);
1255 			}
1256 		}
1257 	}
1258 
1259 	return 0;
1260 }
1261