1/*- 2 * SPDX-License-Identifier: BSD-3-Clause 3 * 4 * Copyright (c) 1980, 1993, 1994 5 * The Regents of the University of California. All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 3. Neither the name of the University nor the names of its contributors 16 * may be used to endorse or promote products derived from this software 17 * without specific prior written permission. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 23 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29 * SUCH DAMAGE. 30 */ 31 32/* 33 * banner - prints large signs 34 * banner [-w#] [-d] [-t] message ... 35 */ 36 37#include <err.h> 38#include <stdio.h> 39#include <stdlib.h> 40#include <string.h> 41#include <unistd.h> 42 43#define MAXMSG 1024 44#define DWIDTH 132 45#define NCHARS 128 46#define NBYTES 9271 47 48/* Pointers into data_table for each ASCII char */ 49static const int asc_ptr[NCHARS] = { 50/* ^@ */ 0, 0, 0, 0, 0, 0, 0, 0, 51/* ^H */ 0, 0, 0, 0, 0, 0, 0, 0, 52/* ^P */ 0, 0, 0, 0, 0, 0, 0, 0, 53/* ^X */ 0, 0, 0, 0, 0, 0, 0, 0, 54/* */ 1, 3, 50, 81, 104, 281, 483, 590, 55/* ( */ 621, 685, 749, 851, 862, 893, 898, 921, 56/* 0 */1019, 1150, 1200, 1419, 1599, 1744, 1934, 2111, 57/* 8 */2235, 2445, 2622, 2659, 0, 2708, 0, 2715, 58/* @ */2857, 3072, 3273, 3403, 3560, 3662, 3730, 3785, 59/* H */3965, 4000, 4015, 4115, 4281, 4314, 4432, 4548, 60/* P */4709, 4790, 4999, 5188, 5397, 5448, 5576, 5710, 61/* X */5892, 6106, 6257, 0, 0, 0, 0, 0, 62/* ` */ 50, 6503, 6642, 6733, 6837, 6930, 7073, 7157, 63/* h */7380, 7452, 7499, 7584, 7689, 7702, 7797, 7869, 64/* p */7978, 8069, 8160, 8222, 8381, 8442, 8508, 8605, 65/* x */8732, 8888, 9016, 0, 0, 0, 0, 0 66}; 67 68/* 69 * Table of stuff to print. Format: 70 * 128+n -> print current line n times. 71 * 64+n -> this is last byte of char. 72 * else, put m chars at position n (where m 73 * is the next elt in array) and goto second 74 * next element in array. 75 */ 76static const unsigned char data_table[NBYTES] = { 77/* 0 1 2 3 4 5 6 7 8 9 */ 78/* 0 */ 129, 227, 130, 34, 6, 90, 19, 129, 32, 10, 79/* 10 */ 74, 40, 129, 31, 12, 64, 53, 129, 30, 14, 80/* 20 */ 54, 65, 129, 30, 14, 53, 67, 129, 30, 14, 81/* 30 */ 54, 65, 129, 31, 12, 64, 53, 129, 32, 10, 82/* 40 */ 74, 40, 129, 34, 6, 90, 19, 129, 194, 130, 83/* 50 */ 99, 9, 129, 97, 14, 129, 96, 18, 129, 95, 84/* 60 */ 22, 129, 95, 16, 117, 2, 129, 95, 14, 129, 85/* 70 */ 96, 11, 129, 97, 9, 129, 99, 6, 129, 194, 86/* 80 */ 129, 87, 4, 101, 4, 131, 82, 28, 131, 87, 87/* 90 */ 4, 101, 4, 133, 82, 28, 131, 87, 4, 101, 88/* 100 */ 4, 131, 193, 129, 39, 1, 84, 27, 129, 38, 89/* 110 */ 3, 81, 32, 129, 37, 5, 79, 35, 129, 36, 90/* 120 */ 5, 77, 38, 129, 35, 5, 76, 40, 129, 34, 91/* 130 */ 5, 75, 21, 103, 14, 129, 33, 5, 74, 19, 92/* 140 */ 107, 11, 129, 32, 5, 73, 17, 110, 9, 129, 93/* 150 */ 32, 4, 73, 16, 112, 7, 129, 31, 4, 72, 94/* 160 */ 15, 114, 6, 129, 31, 4, 72, 14, 115, 5, 95/* 170 */ 129, 30, 4, 71, 15, 116, 5, 129, 27, 97, 96/* 180 */ 131, 30, 4, 69, 14, 117, 4, 129, 30, 4, 97/* 190 */ 68, 15, 117, 4, 132, 30, 4, 68, 14, 117, 98/* 200 */ 4, 129, 27, 97, 131, 30, 5, 65, 15, 116, 99/* 210 */ 5, 129, 31, 4, 65, 14, 116, 4, 129, 31, 100/* 220 */ 6, 64, 15, 116, 4, 129, 32, 7, 62, 16, 101/* 230 */ 115, 4, 129, 32, 9, 61, 17, 114, 5, 129, 102/* 240 */ 33, 11, 58, 19, 113, 5, 129, 34, 14, 55, 103/* 250 */ 21, 112, 5, 129, 35, 40, 111, 5, 129, 36, 104/* 260 */ 38, 110, 5, 129, 37, 35, 109, 5, 129, 38, 105/* 270 */ 32, 110, 3, 129, 40, 27, 111, 1, 129, 193, 106/* 280 */ 129, 30, 4, 103, 9, 129, 30, 7, 100, 15, 107/* 290 */ 129, 30, 10, 99, 17, 129, 33, 10, 97, 6, 108/* 300 */ 112, 6, 129, 36, 10, 96, 5, 114, 5, 129, 109/* 310 */ 39, 10, 96, 4, 115, 4, 129, 42, 10, 95, 110/* 320 */ 4, 116, 4, 129, 45, 10, 95, 3, 117, 3, 111/* 330 */ 129, 48, 10, 95, 3, 117, 3, 129, 51, 10, 112/* 340 */ 95, 4, 116, 4, 129, 54, 10, 96, 4, 115, 113/* 350 */ 4, 129, 57, 10, 96, 5, 114, 5, 129, 60, 114/* 360 */ 10, 97, 6, 112, 6, 129, 63, 10, 99, 17, 115/* 370 */ 129, 66, 10, 100, 15, 129, 69, 10, 103, 9, 116/* 380 */ 129, 39, 9, 72, 10, 129, 36, 15, 75, 10, 117/* 390 */ 129, 35, 17, 78, 10, 129, 33, 6, 48, 6, 118/* 400 */ 81, 10, 129, 32, 5, 50, 5, 84, 10, 129, 119/* 410 */ 32, 4, 51, 4, 87, 10, 129, 31, 4, 52, 120/* 420 */ 4, 90, 10, 129, 31, 3, 53, 3, 93, 10, 121/* 430 */ 129, 31, 3, 53, 3, 96, 10, 129, 31, 4, 122/* 440 */ 52, 4, 99, 10, 129, 32, 4, 51, 4, 102, 123/* 450 */ 10, 129, 32, 5, 50, 5, 105, 10, 129, 33, 124/* 460 */ 6, 48, 6, 108, 10, 129, 35, 17, 111, 10, 125/* 470 */ 129, 36, 15, 114, 7, 129, 40, 9, 118, 4, 126/* 480 */ 129, 193, 129, 48, 18, 129, 43, 28, 129, 41, 127/* 490 */ 32, 129, 39, 36, 129, 37, 40, 129, 35, 44, 128/* 500 */ 129, 34, 46, 129, 33, 13, 68, 13, 129, 32, 129/* 510 */ 9, 73, 9, 129, 32, 7, 75, 7, 129, 31, 130/* 520 */ 6, 77, 6, 129, 31, 5, 78, 5, 129, 30, 131/* 530 */ 5, 79, 5, 129, 20, 74, 132, 30, 4, 80, 132/* 540 */ 4, 129, 31, 3, 79, 4, 129, 31, 4, 79, 133/* 550 */ 4, 129, 32, 3, 78, 4, 129, 32, 4, 76, 134/* 560 */ 6, 129, 33, 4, 74, 7, 129, 34, 4, 72, 135/* 570 */ 8, 129, 35, 5, 72, 7, 129, 37, 5, 73, 136/* 580 */ 4, 129, 39, 4, 74, 1, 129, 129, 193, 130, 137/* 590 */ 111, 6, 129, 109, 10, 129, 108, 12, 129, 107, 138/* 600 */ 14, 129, 97, 2, 105, 16, 129, 99, 22, 129, 139/* 610 */ 102, 18, 129, 105, 14, 129, 108, 9, 129, 194, 140/* 620 */ 130, 63, 25, 129, 57, 37, 129, 52, 47, 129, 141/* 630 */ 48, 55, 129, 44, 63, 129, 41, 69, 129, 38, 142/* 640 */ 75, 129, 36, 79, 129, 34, 83, 129, 33, 28, 143/* 650 */ 90, 28, 129, 32, 23, 96, 23, 129, 32, 17, 144/* 660 */ 102, 17, 129, 31, 13, 107, 13, 129, 30, 9, 145/* 670 */ 112, 9, 129, 30, 5, 116, 5, 129, 30, 1, 146/* 680 */ 120, 1, 129, 194, 130, 30, 1, 120, 1, 129, 147/* 690 */ 30, 5, 116, 5, 129, 30, 9, 112, 9, 129, 148/* 700 */ 31, 13, 107, 13, 129, 32, 17, 102, 17, 129, 149/* 710 */ 32, 23, 96, 23, 129, 33, 28, 90, 28, 129, 150/* 720 */ 34, 83, 129, 36, 79, 129, 38, 75, 129, 41, 151/* 730 */ 69, 129, 44, 63, 129, 48, 55, 129, 52, 47, 152/* 740 */ 129, 57, 37, 129, 63, 25, 129, 194, 129, 80, 153/* 750 */ 4, 130, 80, 4, 129, 68, 2, 80, 4, 94, 154/* 760 */ 2, 129, 66, 6, 80, 4, 92, 6, 129, 67, 155/* 770 */ 7, 80, 4, 90, 7, 129, 69, 7, 80, 4, 156/* 780 */ 88, 7, 129, 71, 6, 80, 4, 87, 6, 129, 157/* 790 */ 72, 20, 129, 74, 16, 129, 76, 12, 129, 62, 158/* 800 */ 40, 131, 76, 12, 129, 74, 16, 129, 72, 20, 159/* 810 */ 129, 71, 6, 80, 4, 87, 6, 129, 69, 7, 160/* 820 */ 80, 4, 88, 7, 129, 67, 7, 80, 4, 90, 161/* 830 */ 7, 129, 66, 6, 80, 4, 92, 6, 129, 68, 162/* 840 */ 2, 80, 4, 94, 2, 129, 80, 4, 130, 193, 163/* 850 */ 129, 60, 4, 139, 41, 42, 131, 60, 4, 139, 164/* 860 */ 193, 130, 34, 6, 129, 32, 10, 129, 31, 12, 165/* 870 */ 129, 30, 14, 129, 20, 2, 28, 16, 129, 22, 166/* 880 */ 22, 129, 24, 19, 129, 27, 15, 129, 31, 9, 167/* 890 */ 129, 194, 129, 60, 4, 152, 193, 130, 34, 6, 168/* 900 */ 129, 32, 10, 129, 31, 12, 129, 30, 14, 131, 169/* 910 */ 31, 12, 129, 32, 10, 129, 34, 6, 129, 194, 170/* 920 */ 129, 30, 4, 129, 30, 7, 129, 30, 10, 129, 171/* 930 */ 33, 10, 129, 36, 10, 129, 39, 10, 129, 42, 172/* 940 */ 10, 129, 45, 10, 129, 48, 10, 129, 51, 10, 173/* 950 */ 129, 54, 10, 129, 57, 10, 129, 60, 10, 129, 174/* 960 */ 63, 10, 129, 66, 10, 129, 69, 10, 129, 72, 175/* 970 */ 10, 129, 75, 10, 129, 78, 10, 129, 81, 10, 176/* 980 */ 129, 84, 10, 129, 87, 10, 129, 90, 10, 129, 177/* 990 */ 93, 10, 129, 96, 10, 129, 99, 10, 129, 102, 178/* 1000 */ 10, 129, 105, 10, 129, 108, 10, 129, 111, 10, 179/* 1010 */ 129, 114, 7, 129, 117, 4, 129, 193, 129, 60, 180/* 1020 */ 31, 129, 53, 45, 129, 49, 53, 129, 46, 59, 181/* 1030 */ 129, 43, 65, 129, 41, 69, 129, 39, 73, 129, 182/* 1040 */ 37, 77, 129, 36, 79, 129, 35, 15, 101, 15, 183/* 1050 */ 129, 34, 11, 106, 11, 129, 33, 9, 109, 9, 184/* 1060 */ 129, 32, 7, 112, 7, 129, 31, 6, 114, 6, 185/* 1070 */ 129, 31, 5, 115, 5, 129, 30, 5, 116, 5, 186/* 1080 */ 129, 30, 4, 117, 4, 132, 30, 5, 116, 5, 187/* 1090 */ 129, 31, 5, 115, 5, 129, 31, 6, 114, 6, 188/* 1100 */ 129, 32, 7, 112, 7, 129, 33, 9, 109, 9, 189/* 1110 */ 129, 34, 11, 106, 11, 129, 35, 15, 101, 15, 190/* 1120 */ 129, 36, 79, 129, 37, 77, 129, 39, 73, 129, 191/* 1130 */ 41, 69, 129, 43, 65, 129, 46, 59, 129, 49, 192/* 1140 */ 53, 129, 53, 45, 129, 60, 31, 129, 193, 129, 193/* 1150 */ 30, 4, 129, 30, 4, 100, 1, 129, 30, 4, 194/* 1160 */ 100, 3, 129, 30, 4, 100, 5, 129, 30, 76, 195/* 1170 */ 129, 30, 78, 129, 30, 80, 129, 30, 82, 129, 196/* 1180 */ 30, 83, 129, 30, 85, 129, 30, 87, 129, 30, 197/* 1190 */ 89, 129, 30, 91, 129, 30, 4, 132, 193, 129, 198/* 1200 */ 30, 3, 129, 30, 7, 129, 30, 10, 112, 1, 199/* 1210 */ 129, 30, 13, 112, 2, 129, 30, 16, 112, 3, 200/* 1220 */ 129, 30, 18, 111, 5, 129, 30, 21, 111, 6, 201/* 1230 */ 129, 30, 23, 112, 6, 129, 30, 14, 47, 8, 202/* 1240 */ 113, 6, 129, 30, 14, 49, 8, 114, 5, 129, 203/* 1250 */ 30, 14, 51, 8, 115, 5, 129, 30, 14, 53, 204/* 1260 */ 8, 116, 4, 129, 30, 14, 55, 8, 116, 5, 205/* 1270 */ 129, 30, 14, 56, 9, 117, 4, 129, 30, 14, 206/* 1280 */ 57, 9, 117, 4, 129, 30, 14, 58, 10, 117, 207/* 1290 */ 4, 129, 30, 14, 59, 10, 117, 4, 129, 30, 208/* 1300 */ 14, 60, 11, 117, 4, 129, 30, 14, 61, 11, 209/* 1310 */ 116, 5, 129, 30, 14, 62, 11, 116, 5, 129, 210/* 1320 */ 30, 14, 63, 12, 115, 6, 129, 30, 14, 64, 211/* 1330 */ 13, 114, 7, 129, 30, 14, 65, 13, 113, 8, 212/* 1340 */ 129, 30, 14, 65, 15, 111, 9, 129, 30, 14, 213/* 1350 */ 66, 16, 109, 11, 129, 30, 14, 67, 17, 107, 214/* 1360 */ 12, 129, 30, 14, 68, 20, 103, 16, 129, 30, 215/* 1370 */ 14, 69, 49, 129, 30, 14, 70, 47, 129, 30, 216/* 1380 */ 14, 71, 45, 129, 30, 14, 73, 42, 129, 30, 217/* 1390 */ 15, 75, 38, 129, 33, 12, 77, 34, 129, 36, 218/* 1400 */ 10, 79, 30, 129, 40, 6, 82, 23, 129, 44, 219/* 1410 */ 3, 86, 15, 129, 47, 1, 129, 193, 129, 129, 220/* 1420 */ 38, 3, 129, 37, 5, 111, 1, 129, 36, 7, 221/* 1430 */ 111, 2, 129, 35, 9, 110, 5, 129, 34, 8, 222/* 1440 */ 110, 6, 129, 33, 7, 109, 8, 129, 32, 7, 223/* 1450 */ 110, 8, 129, 32, 6, 112, 7, 129, 31, 6, 224/* 1460 */ 113, 6, 129, 31, 5, 114, 6, 129, 30, 5, 225/* 1470 */ 115, 5, 129, 30, 5, 116, 4, 129, 30, 4, 226/* 1480 */ 117, 4, 131, 30, 4, 117, 4, 129, 30, 4, 227/* 1490 */ 79, 2, 117, 4, 129, 30, 5, 78, 4, 117, 228/* 1500 */ 4, 129, 30, 5, 77, 6, 116, 5, 129, 30, 229/* 1510 */ 6, 76, 8, 115, 6, 129, 30, 7, 75, 11, 230/* 1520 */ 114, 6, 129, 30, 8, 73, 15, 112, 8, 129, 231/* 1530 */ 31, 9, 71, 19, 110, 9, 129, 31, 11, 68, 232/* 1540 */ 26, 107, 12, 129, 32, 13, 65, 14, 82, 36, 233/* 1550 */ 129, 32, 16, 61, 17, 83, 34, 129, 33, 44, 234/* 1560 */ 84, 32, 129, 34, 42, 85, 30, 129, 35, 40, 235/* 1570 */ 87, 27, 129, 36, 38, 89, 23, 129, 38, 34, 236/* 1580 */ 92, 17, 129, 40, 30, 95, 11, 129, 42, 26, 237/* 1590 */ 129, 45, 20, 129, 49, 11, 129, 193, 129, 49, 238/* 1600 */ 1, 129, 49, 4, 129, 49, 6, 129, 49, 8, 239/* 1610 */ 129, 49, 10, 129, 49, 12, 129, 49, 14, 129, 240/* 1620 */ 49, 17, 129, 49, 19, 129, 49, 21, 129, 49, 241/* 1630 */ 23, 129, 49, 14, 65, 9, 129, 49, 14, 67, 242/* 1640 */ 9, 129, 49, 14, 69, 9, 129, 49, 14, 71, 243/* 1650 */ 10, 129, 49, 14, 74, 9, 129, 49, 14, 76, 244/* 1660 */ 9, 129, 49, 14, 78, 9, 129, 49, 14, 80, 245/* 1670 */ 9, 129, 49, 14, 82, 9, 129, 49, 14, 84, 246/* 1680 */ 9, 129, 30, 4, 49, 14, 86, 10, 129, 30, 247/* 1690 */ 4, 49, 14, 89, 9, 129, 30, 4, 49, 14, 248/* 1700 */ 91, 9, 129, 30, 4, 49, 14, 93, 9, 129, 249/* 1710 */ 30, 74, 129, 30, 76, 129, 30, 78, 129, 30, 250/* 1720 */ 81, 129, 30, 83, 129, 30, 85, 129, 30, 87, 251/* 1730 */ 129, 30, 89, 129, 30, 91, 129, 30, 4, 49, 252/* 1740 */ 14, 132, 193, 129, 37, 1, 129, 36, 3, 77, 253/* 1750 */ 3, 129, 35, 5, 78, 11, 129, 34, 7, 78, 254/* 1760 */ 21, 129, 33, 7, 79, 29, 129, 32, 7, 79, 255/* 1770 */ 38, 129, 32, 6, 80, 4, 92, 29, 129, 31, 256/* 1780 */ 6, 80, 5, 102, 19, 129, 31, 5, 80, 6, 257/* 1790 */ 107, 14, 129, 31, 4, 81, 5, 107, 14, 129, 258/* 1800 */ 30, 5, 81, 6, 107, 14, 129, 30, 4, 81, 259/* 1810 */ 6, 107, 14, 130, 30, 4, 81, 7, 107, 14, 260/* 1820 */ 129, 30, 4, 80, 8, 107, 14, 130, 30, 5, 261/* 1830 */ 80, 8, 107, 14, 129, 30, 5, 79, 9, 107, 262/* 1840 */ 14, 129, 31, 5, 79, 9, 107, 14, 129, 31, 263/* 1850 */ 6, 78, 10, 107, 14, 129, 32, 6, 76, 11, 264/* 1860 */ 107, 14, 129, 32, 8, 74, 13, 107, 14, 129, 265/* 1870 */ 33, 10, 71, 16, 107, 14, 129, 33, 15, 67, 266/* 1880 */ 19, 107, 14, 129, 34, 51, 107, 14, 129, 35, 267/* 1890 */ 49, 107, 14, 129, 36, 47, 107, 14, 129, 37, 268/* 1900 */ 45, 107, 14, 129, 39, 41, 107, 14, 129, 41, 269/* 1910 */ 37, 107, 14, 129, 44, 32, 107, 14, 129, 47, 270/* 1920 */ 25, 111, 10, 129, 51, 16, 115, 6, 129, 119, 271/* 1930 */ 2, 129, 193, 129, 56, 39, 129, 51, 49, 129, 272/* 1940 */ 47, 57, 129, 44, 63, 129, 42, 67, 129, 40, 273/* 1950 */ 71, 129, 38, 75, 129, 37, 77, 129, 35, 81, 274/* 1960 */ 129, 34, 16, 74, 5, 101, 16, 129, 33, 11, 275/* 1970 */ 76, 5, 107, 11, 129, 32, 9, 77, 5, 110, 276/* 1980 */ 9, 129, 32, 7, 79, 4, 112, 7, 129, 31, 277/* 1990 */ 6, 80, 4, 114, 6, 129, 31, 5, 81, 4, 278/* 2000 */ 115, 5, 129, 30, 5, 82, 4, 116, 5, 129, 279/* 2010 */ 30, 4, 82, 4, 116, 5, 129, 30, 4, 82, 280/* 2020 */ 5, 117, 4, 131, 30, 5, 82, 5, 117, 4, 281/* 2030 */ 129, 31, 5, 81, 6, 117, 4, 129, 31, 6, 282/* 2040 */ 80, 7, 117, 4, 129, 32, 7, 79, 8, 117, 283/* 2050 */ 4, 129, 32, 9, 77, 9, 116, 5, 129, 33, 284/* 2060 */ 11, 75, 11, 116, 4, 129, 34, 16, 69, 16, 285/* 2070 */ 115, 5, 129, 35, 49, 114, 5, 129, 37, 46, 286/* 2080 */ 113, 5, 129, 38, 44, 112, 6, 129, 40, 41, 287/* 2090 */ 112, 5, 129, 42, 37, 113, 3, 129, 44, 33, 288/* 2100 */ 114, 1, 129, 47, 27, 129, 51, 17, 129, 193, 289/* 2110 */ 129, 103, 2, 129, 103, 6, 129, 104, 9, 129, 290/* 2120 */ 105, 12, 129, 106, 15, 129, 107, 14, 135, 30, 291/* 2130 */ 10, 107, 14, 129, 30, 17, 107, 14, 129, 30, 292/* 2140 */ 25, 107, 14, 129, 30, 31, 107, 14, 129, 30, 293/* 2150 */ 37, 107, 14, 129, 30, 42, 107, 14, 129, 30, 294/* 2160 */ 46, 107, 14, 129, 30, 50, 107, 14, 129, 30, 295/* 2170 */ 54, 107, 14, 129, 30, 58, 107, 14, 129, 59, 296/* 2180 */ 32, 107, 14, 129, 64, 30, 107, 14, 129, 74, 297/* 2190 */ 23, 107, 14, 129, 81, 18, 107, 14, 129, 86, 298/* 2200 */ 16, 107, 14, 129, 91, 14, 107, 14, 129, 96, 299/* 2210 */ 25, 129, 100, 21, 129, 104, 17, 129, 107, 14, 300/* 2220 */ 129, 111, 10, 129, 114, 7, 129, 117, 4, 129, 301/* 2230 */ 120, 1, 129, 193, 129, 48, 13, 129, 44, 21, 302/* 2240 */ 129, 42, 26, 129, 40, 30, 92, 12, 129, 38, 303/* 2250 */ 34, 88, 20, 129, 36, 37, 86, 25, 129, 35, 304/* 2260 */ 39, 84, 29, 129, 34, 13, 63, 12, 82, 33, 305/* 2270 */ 129, 33, 11, 67, 9, 80, 36, 129, 32, 9, 306/* 2280 */ 70, 7, 79, 38, 129, 31, 8, 72, 46, 129, 307/* 2290 */ 30, 7, 74, 22, 108, 11, 129, 30, 6, 75, 308/* 2300 */ 19, 111, 9, 129, 30, 5, 75, 17, 113, 7, 309/* 2310 */ 129, 30, 5, 74, 16, 114, 6, 129, 30, 4, 310/* 2320 */ 73, 16, 115, 6, 129, 30, 4, 72, 16, 116, 311/* 2330 */ 5, 129, 30, 4, 72, 15, 117, 4, 129, 30, 312/* 2340 */ 4, 71, 16, 117, 4, 129, 30, 5, 70, 16, 313/* 2350 */ 117, 4, 129, 30, 5, 70, 15, 117, 4, 129, 314/* 2360 */ 30, 6, 69, 15, 116, 5, 129, 30, 7, 68, 315/* 2370 */ 17, 115, 5, 129, 30, 9, 67, 19, 114, 6, 316/* 2380 */ 129, 30, 10, 65, 22, 113, 6, 129, 31, 12, 317/* 2390 */ 63, 27, 110, 9, 129, 32, 14, 60, 21, 84, 318/* 2400 */ 9, 106, 12, 129, 33, 47, 85, 32, 129, 34, 319/* 2410 */ 45, 86, 30, 129, 35, 43, 88, 26, 129, 36, 320/* 2420 */ 40, 90, 22, 129, 38, 36, 93, 17, 129, 40, 321/* 2430 */ 32, 96, 10, 129, 42, 28, 129, 44, 23, 129, 322/* 2440 */ 48, 15, 129, 193, 129, 83, 17, 129, 77, 27, 323/* 2450 */ 129, 36, 1, 74, 33, 129, 35, 3, 72, 37, 324/* 2460 */ 129, 34, 5, 70, 41, 129, 33, 6, 69, 44, 325/* 2470 */ 129, 33, 5, 68, 46, 129, 32, 5, 67, 49, 326/* 2480 */ 129, 31, 5, 66, 17, 101, 16, 129, 31, 5, 327/* 2490 */ 66, 11, 108, 10, 129, 30, 4, 65, 9, 110, 328/* 2500 */ 9, 129, 30, 4, 64, 8, 112, 7, 129, 30, 329/* 2510 */ 4, 64, 7, 114, 6, 129, 30, 4, 64, 6, 330/* 2520 */ 115, 5, 129, 30, 4, 64, 5, 116, 5, 129, 331/* 2530 */ 30, 4, 64, 5, 117, 4, 131, 30, 4, 65, 332/* 2540 */ 4, 117, 4, 129, 30, 5, 65, 4, 116, 5, 333/* 2550 */ 129, 31, 5, 66, 4, 115, 5, 129, 31, 6, 334/* 2560 */ 67, 4, 114, 6, 129, 32, 7, 68, 4, 112, 335/* 2570 */ 7, 129, 32, 9, 69, 5, 110, 9, 129, 33, 336/* 2580 */ 11, 70, 5, 107, 11, 129, 34, 16, 72, 5, 337/* 2590 */ 101, 16, 129, 35, 81, 129, 37, 77, 129, 38, 338/* 2600 */ 75, 129, 40, 71, 129, 42, 67, 129, 44, 63, 339/* 2610 */ 129, 47, 57, 129, 51, 49, 129, 56, 39, 129, 340/* 2620 */ 193, 130, 34, 6, 74, 6, 129, 32, 10, 72, 341/* 2630 */ 10, 129, 31, 12, 71, 12, 129, 30, 14, 70, 342/* 2640 */ 14, 131, 31, 12, 71, 12, 129, 32, 10, 72, 343/* 2650 */ 10, 129, 34, 6, 74, 6, 129, 194, 130, 34, 344/* 2660 */ 6, 74, 6, 129, 32, 10, 72, 10, 129, 31, 345/* 2670 */ 12, 71, 12, 129, 30, 14, 70, 14, 129, 20, 346/* 2680 */ 2, 28, 16, 70, 14, 129, 22, 22, 70, 14, 347/* 2690 */ 129, 24, 19, 71, 12, 129, 27, 15, 72, 10, 348/* 2700 */ 129, 31, 9, 74, 6, 129, 194, 129, 53, 4, 349/* 2710 */ 63, 4, 152, 193, 130, 99, 7, 129, 97, 13, 350/* 2720 */ 129, 96, 16, 129, 96, 18, 129, 96, 19, 129, 351/* 2730 */ 97, 19, 129, 99, 6, 110, 7, 129, 112, 6, 352/* 2740 */ 129, 114, 5, 129, 34, 6, 57, 5, 115, 4, 353/* 2750 */ 129, 32, 10, 54, 12, 116, 4, 129, 31, 12, 354/* 2760 */ 53, 16, 117, 3, 129, 30, 14, 52, 20, 117, 355/* 2770 */ 4, 129, 30, 14, 52, 23, 117, 4, 129, 30, 356/* 2780 */ 14, 52, 25, 117, 4, 129, 31, 12, 52, 27, 357/* 2790 */ 117, 4, 129, 32, 10, 53, 10, 70, 11, 116, 358/* 2800 */ 5, 129, 34, 6, 55, 5, 73, 10, 115, 6, 359/* 2810 */ 129, 74, 11, 114, 7, 129, 75, 12, 112, 9, 360/* 2820 */ 129, 76, 13, 110, 10, 129, 77, 16, 106, 14, 361/* 2830 */ 129, 78, 41, 129, 80, 38, 129, 81, 36, 129, 362/* 2840 */ 82, 34, 129, 84, 30, 129, 86, 26, 129, 88, 363/* 2850 */ 22, 129, 92, 14, 129, 194, 129, 55, 15, 129, 364/* 2860 */ 50, 25, 129, 47, 32, 129, 45, 13, 70, 12, 365/* 2870 */ 129, 43, 9, 76, 10, 129, 42, 6, 79, 8, 366/* 2880 */ 129, 41, 5, 81, 7, 129, 40, 4, 84, 6, 367/* 2890 */ 129, 39, 4, 59, 12, 85, 6, 129, 38, 4, 368/* 2900 */ 55, 19, 87, 5, 129, 37, 4, 53, 23, 88, 369/* 2910 */ 4, 129, 36, 4, 51, 8, 71, 6, 89, 4, 370/* 2920 */ 129, 36, 4, 51, 6, 73, 4, 89, 4, 129, 371/* 2930 */ 36, 4, 50, 6, 74, 4, 90, 3, 129, 35, 372/* 2940 */ 4, 50, 5, 75, 3, 90, 4, 129, 35, 4, 373/* 2950 */ 50, 4, 75, 4, 90, 4, 131, 35, 4, 50, 374/* 2960 */ 5, 75, 4, 90, 4, 129, 36, 4, 51, 5, 375/* 2970 */ 75, 4, 90, 4, 129, 36, 4, 51, 6, 75, 376/* 2980 */ 4, 90, 4, 129, 36, 4, 53, 26, 90, 4, 377/* 2990 */ 129, 37, 4, 54, 25, 90, 4, 129, 37, 4, 378/* 3000 */ 52, 27, 90, 3, 129, 38, 4, 52, 4, 89, 379/* 3010 */ 4, 129, 39, 4, 51, 4, 88, 4, 129, 40, 380/* 3020 */ 4, 50, 4, 87, 5, 129, 41, 4, 50, 4, 381/* 3030 */ 86, 5, 129, 42, 4, 50, 4, 85, 5, 129, 382/* 3040 */ 43, 3, 50, 4, 83, 6, 129, 44, 2, 51, 383/* 3050 */ 5, 80, 7, 129, 46, 1, 52, 6, 76, 9, 384/* 3060 */ 129, 54, 28, 129, 56, 23, 129, 60, 16, 129, 385/* 3070 */ 193, 129, 30, 4, 132, 30, 5, 129, 30, 8, 386/* 3080 */ 129, 30, 12, 129, 30, 16, 129, 30, 4, 37, 387/* 3090 */ 12, 129, 30, 4, 41, 12, 129, 30, 4, 44, 388/* 3100 */ 13, 129, 30, 4, 48, 13, 129, 52, 13, 129, 389/* 3110 */ 56, 12, 129, 58, 14, 129, 58, 4, 64, 12, 390/* 3120 */ 129, 58, 4, 68, 12, 129, 58, 4, 72, 12, 391/* 3130 */ 129, 58, 4, 75, 13, 129, 58, 4, 79, 13, 392/* 3140 */ 129, 58, 4, 83, 13, 129, 58, 4, 87, 13, 393/* 3150 */ 129, 58, 4, 91, 12, 129, 58, 4, 95, 12, 394/* 3160 */ 129, 58, 4, 96, 15, 129, 58, 4, 93, 22, 395/* 3170 */ 129, 58, 4, 89, 30, 129, 58, 4, 85, 36, 396/* 3180 */ 129, 58, 4, 81, 38, 129, 58, 4, 77, 38, 397/* 3190 */ 129, 58, 4, 73, 38, 129, 58, 4, 70, 37, 398/* 3200 */ 129, 58, 4, 66, 37, 129, 58, 41, 129, 58, 399/* 3210 */ 37, 129, 54, 38, 129, 30, 4, 50, 38, 129, 400/* 3220 */ 30, 4, 46, 38, 129, 30, 4, 42, 38, 129, 401/* 3230 */ 30, 4, 38, 39, 129, 30, 43, 129, 30, 39, 402/* 3240 */ 129, 30, 35, 129, 30, 31, 129, 30, 27, 129, 403/* 3250 */ 30, 24, 129, 30, 20, 129, 30, 16, 129, 30, 404/* 3260 */ 12, 129, 30, 8, 129, 30, 5, 129, 30, 4, 405/* 3270 */ 132, 193, 129, 30, 4, 117, 4, 132, 30, 91, 406/* 3280 */ 137, 30, 4, 80, 4, 117, 4, 138, 30, 4, 407/* 3290 */ 80, 5, 116, 5, 129, 30, 5, 79, 6, 116, 408/* 3300 */ 5, 130, 30, 6, 78, 8, 115, 6, 129, 31, 409/* 3310 */ 6, 77, 9, 115, 6, 129, 31, 7, 76, 11, 410/* 3320 */ 114, 6, 129, 31, 8, 75, 14, 112, 8, 129, 411/* 3330 */ 32, 8, 74, 16, 111, 9, 129, 32, 9, 73, 412/* 3340 */ 19, 109, 10, 129, 33, 10, 71, 24, 106, 13, 413/* 3350 */ 129, 33, 13, 68, 12, 83, 35, 129, 34, 16, 414/* 3360 */ 64, 15, 84, 33, 129, 35, 43, 85, 31, 129, 415/* 3370 */ 36, 41, 86, 29, 129, 37, 39, 88, 25, 129, 416/* 3380 */ 38, 37, 90, 21, 129, 40, 33, 93, 15, 129, 417/* 3390 */ 42, 29, 96, 9, 129, 45, 24, 129, 49, 16, 418/* 3400 */ 129, 193, 129, 63, 25, 129, 57, 37, 129, 53, 419/* 3410 */ 45, 129, 50, 51, 129, 47, 57, 129, 45, 61, 420/* 3420 */ 129, 43, 65, 129, 41, 69, 129, 39, 73, 129, 421/* 3430 */ 38, 25, 92, 21, 129, 36, 21, 97, 18, 129, 422/* 3440 */ 35, 18, 102, 14, 129, 34, 16, 106, 11, 129, 423/* 3450 */ 33, 14, 108, 10, 129, 32, 12, 111, 8, 129, 424/* 3460 */ 32, 10, 113, 6, 129, 31, 10, 114, 6, 129, 425/* 3470 */ 31, 8, 115, 5, 129, 30, 8, 116, 5, 129, 426/* 3480 */ 30, 7, 116, 5, 129, 30, 6, 117, 4, 130, 427/* 3490 */ 30, 5, 117, 4, 131, 31, 4, 116, 5, 129, 428/* 3500 */ 32, 4, 116, 4, 129, 32, 5, 115, 5, 129, 429/* 3510 */ 33, 4, 114, 5, 129, 34, 4, 112, 6, 129, 430/* 3520 */ 35, 4, 110, 7, 129, 37, 4, 107, 9, 129, 431/* 3530 */ 39, 4, 103, 12, 129, 41, 4, 103, 18, 129, 432/* 3540 */ 43, 4, 103, 18, 129, 45, 5, 103, 18, 129, 433/* 3550 */ 48, 5, 103, 18, 129, 51, 1, 129, 193, 129, 434/* 3560 */ 30, 4, 117, 4, 132, 30, 91, 137, 30, 4, 435/* 3570 */ 117, 4, 135, 30, 5, 116, 5, 130, 30, 6, 436/* 3580 */ 115, 6, 130, 31, 6, 114, 6, 129, 31, 7, 437/* 3590 */ 113, 7, 129, 32, 7, 112, 7, 129, 32, 8, 438/* 3600 */ 111, 8, 129, 33, 9, 109, 9, 129, 33, 12, 439/* 3610 */ 106, 12, 129, 34, 13, 104, 13, 129, 35, 15, 440/* 3620 */ 101, 15, 129, 36, 19, 96, 19, 129, 37, 24, 441/* 3630 */ 90, 24, 129, 39, 73, 129, 40, 71, 129, 42, 442/* 3640 */ 67, 129, 44, 63, 129, 46, 59, 129, 49, 53, 443/* 3650 */ 129, 52, 47, 129, 56, 39, 129, 61, 29, 129, 444/* 3660 */ 193, 129, 30, 4, 117, 4, 132, 30, 91, 137, 445/* 3670 */ 30, 4, 80, 4, 117, 4, 140, 30, 4, 79, 446/* 3680 */ 6, 117, 4, 129, 30, 4, 77, 10, 117, 4, 447/* 3690 */ 129, 30, 4, 73, 18, 117, 4, 132, 30, 4, 448/* 3700 */ 117, 4, 130, 30, 5, 116, 5, 130, 30, 7, 449/* 3710 */ 114, 7, 129, 30, 8, 113, 8, 129, 30, 11, 450/* 3720 */ 110, 11, 129, 30, 18, 103, 18, 132, 193, 129, 451/* 3730 */ 30, 4, 117, 4, 132, 30, 91, 137, 30, 4, 452/* 3740 */ 80, 4, 117, 4, 132, 80, 4, 117, 4, 136, 453/* 3750 */ 79, 6, 117, 4, 129, 77, 10, 117, 4, 129, 454/* 3760 */ 73, 18, 117, 4, 132, 117, 4, 130, 116, 5, 455/* 3770 */ 130, 114, 7, 129, 113, 8, 129, 110, 11, 129, 456/* 3780 */ 103, 18, 132, 193, 129, 63, 25, 129, 57, 37, 457/* 3790 */ 129, 53, 45, 129, 50, 51, 129, 47, 57, 129, 458/* 3800 */ 45, 61, 129, 43, 65, 129, 41, 69, 129, 39, 459/* 3810 */ 73, 129, 38, 25, 92, 21, 129, 36, 21, 97, 460/* 3820 */ 18, 129, 35, 18, 102, 14, 129, 34, 16, 106, 461/* 3830 */ 11, 129, 33, 14, 108, 10, 129, 32, 12, 111, 462/* 3840 */ 8, 129, 32, 10, 113, 6, 129, 31, 10, 114, 463/* 3850 */ 6, 129, 31, 8, 115, 5, 129, 30, 8, 116, 464/* 3860 */ 5, 129, 30, 7, 116, 5, 129, 30, 6, 117, 465/* 3870 */ 4, 130, 30, 5, 117, 4, 131, 30, 5, 75, 466/* 3880 */ 4, 116, 5, 129, 31, 5, 75, 4, 116, 4, 467/* 3890 */ 129, 31, 6, 75, 4, 115, 5, 129, 32, 7, 468/* 3900 */ 75, 4, 114, 5, 129, 32, 9, 75, 4, 112, 469/* 3910 */ 6, 129, 33, 11, 75, 4, 110, 7, 129, 34, 470/* 3920 */ 15, 75, 4, 107, 9, 129, 35, 44, 103, 12, 471/* 3930 */ 129, 36, 43, 103, 18, 129, 38, 41, 103, 18, 472/* 3940 */ 129, 39, 40, 103, 18, 129, 41, 38, 103, 18, 473/* 3950 */ 129, 44, 35, 129, 48, 31, 129, 52, 27, 129, 474/* 3960 */ 61, 18, 129, 193, 129, 30, 4, 117, 4, 132, 475/* 3970 */ 30, 91, 137, 30, 4, 80, 4, 117, 4, 132, 476/* 3980 */ 80, 4, 140, 30, 4, 80, 4, 117, 4, 132, 477/* 3990 */ 30, 91, 137, 30, 4, 117, 4, 132, 193, 129, 478/* 4000 */ 30, 4, 117, 4, 132, 30, 91, 137, 30, 4, 479/* 4010 */ 117, 4, 132, 193, 129, 44, 7, 129, 40, 13, 480/* 4020 */ 129, 37, 17, 129, 35, 20, 129, 34, 22, 129, 481/* 4030 */ 33, 23, 129, 32, 24, 129, 32, 23, 129, 31, 482/* 4040 */ 6, 41, 13, 129, 31, 5, 42, 11, 129, 30, 483/* 4050 */ 5, 44, 7, 129, 30, 4, 132, 30, 5, 130, 484/* 4060 */ 31, 5, 129, 31, 6, 117, 4, 129, 31, 8, 485/* 4070 */ 117, 4, 129, 32, 9, 117, 4, 129, 33, 11, 486/* 4080 */ 117, 4, 129, 34, 87, 129, 35, 86, 129, 36, 487/* 4090 */ 85, 129, 37, 84, 129, 38, 83, 129, 40, 81, 488/* 4100 */ 129, 42, 79, 129, 45, 76, 129, 50, 71, 129, 489/* 4110 */ 117, 4, 132, 193, 129, 30, 4, 117, 4, 132, 490/* 4120 */ 30, 91, 137, 30, 4, 76, 8, 117, 4, 129, 491/* 4130 */ 30, 4, 73, 13, 117, 4, 129, 30, 4, 70, 492/* 4140 */ 18, 117, 4, 129, 30, 4, 67, 23, 117, 4, 493/* 4150 */ 129, 65, 26, 129, 62, 31, 129, 59, 35, 129, 494/* 4160 */ 56, 29, 89, 7, 129, 53, 29, 91, 7, 129, 495/* 4170 */ 50, 29, 93, 7, 129, 47, 29, 95, 6, 129, 496/* 4180 */ 30, 4, 45, 29, 96, 7, 129, 30, 4, 42, 497/* 4190 */ 29, 98, 7, 129, 30, 4, 39, 30, 100, 6, 498/* 4200 */ 129, 30, 4, 36, 30, 101, 7, 129, 30, 33, 499/* 4210 */ 103, 7, 117, 4, 129, 30, 30, 105, 6, 117, 500/* 4220 */ 4, 129, 30, 27, 106, 7, 117, 4, 129, 30, 501/* 4230 */ 25, 108, 7, 117, 4, 129, 30, 22, 110, 11, 502/* 4240 */ 129, 30, 19, 111, 10, 129, 30, 16, 113, 8, 503/* 4250 */ 129, 30, 13, 115, 6, 129, 30, 11, 116, 5, 504/* 4260 */ 129, 30, 8, 117, 4, 129, 30, 5, 117, 4, 505/* 4270 */ 129, 30, 4, 117, 4, 130, 30, 4, 130, 193, 506/* 4280 */ 129, 30, 4, 117, 4, 132, 30, 91, 137, 30, 507/* 4290 */ 4, 117, 4, 132, 30, 4, 144, 30, 5, 130, 508/* 4300 */ 30, 7, 129, 30, 8, 129, 30, 11, 129, 30, 509/* 4310 */ 18, 132, 193, 129, 30, 4, 117, 4, 132, 30, 510/* 4320 */ 91, 132, 30, 4, 103, 18, 129, 30, 4, 97, 511/* 4330 */ 24, 129, 30, 4, 92, 29, 129, 30, 4, 87, 512/* 4340 */ 34, 129, 81, 40, 129, 76, 45, 129, 70, 49, 513/* 4350 */ 129, 65, 49, 129, 60, 49, 129, 55, 49, 129, 514/* 4360 */ 50, 48, 129, 44, 49, 129, 39, 48, 129, 33, 515/* 4370 */ 49, 129, 30, 47, 129, 34, 37, 129, 40, 26, 516/* 4380 */ 129, 46, 19, 129, 52, 19, 129, 58, 19, 129, 517/* 4390 */ 64, 19, 129, 70, 19, 129, 76, 19, 129, 82, 518/* 4400 */ 19, 129, 30, 4, 88, 18, 129, 30, 4, 94, 519/* 4410 */ 18, 129, 30, 4, 100, 18, 129, 30, 4, 106, 520/* 4420 */ 15, 129, 30, 91, 137, 30, 4, 117, 4, 132, 521/* 4430 */ 193, 129, 30, 4, 117, 4, 132, 30, 91, 132, 522/* 4440 */ 30, 4, 107, 14, 129, 30, 4, 104, 17, 129, 523/* 4450 */ 30, 4, 101, 20, 129, 30, 4, 99, 22, 129, 524/* 4460 */ 96, 25, 129, 93, 28, 129, 91, 28, 129, 88, 525/* 4470 */ 29, 129, 85, 29, 129, 82, 29, 129, 79, 29, 526/* 4480 */ 129, 76, 29, 129, 74, 29, 129, 71, 29, 129, 527/* 4490 */ 68, 29, 129, 65, 29, 129, 62, 29, 129, 60, 528/* 4500 */ 29, 129, 57, 29, 129, 54, 29, 129, 51, 29, 529/* 4510 */ 129, 49, 28, 129, 46, 29, 129, 43, 29, 129, 530/* 4520 */ 40, 29, 117, 4, 129, 37, 29, 117, 4, 129, 531/* 4530 */ 35, 29, 117, 4, 129, 32, 29, 117, 4, 129, 532/* 4540 */ 30, 91, 132, 117, 4, 132, 193, 129, 63, 25, 533/* 4550 */ 129, 57, 37, 129, 53, 45, 129, 50, 51, 129, 534/* 4560 */ 47, 57, 129, 45, 61, 129, 43, 65, 129, 41, 535/* 4570 */ 69, 129, 39, 73, 129, 38, 21, 92, 21, 129, 536/* 4580 */ 36, 18, 97, 18, 129, 35, 14, 102, 14, 129, 537/* 4590 */ 34, 11, 106, 11, 129, 33, 10, 108, 10, 129, 538/* 4600 */ 32, 8, 111, 8, 129, 32, 6, 113, 6, 129, 539/* 4610 */ 31, 6, 114, 6, 129, 31, 5, 115, 5, 129, 540/* 4620 */ 30, 5, 116, 5, 130, 30, 4, 117, 4, 132, 541/* 4630 */ 30, 5, 116, 5, 130, 31, 5, 115, 5, 129, 542/* 4640 */ 31, 6, 114, 6, 129, 32, 6, 113, 6, 129, 543/* 4650 */ 32, 8, 111, 8, 129, 33, 10, 108, 10, 129, 544/* 4660 */ 34, 11, 106, 11, 129, 35, 14, 102, 14, 129, 545/* 4670 */ 36, 18, 97, 18, 129, 38, 21, 92, 21, 129, 546/* 4680 */ 39, 73, 129, 41, 69, 129, 43, 65, 129, 45, 547/* 4690 */ 61, 129, 47, 57, 129, 50, 51, 129, 53, 45, 548/* 4700 */ 129, 57, 37, 129, 63, 25, 129, 193, 129, 30, 549/* 4710 */ 4, 117, 4, 132, 30, 91, 137, 30, 4, 80, 550/* 4720 */ 4, 117, 4, 132, 80, 4, 117, 4, 134, 80, 551/* 4730 */ 5, 116, 5, 131, 80, 6, 115, 6, 130, 81, 552/* 4740 */ 6, 114, 6, 129, 81, 8, 112, 8, 129, 81, 553/* 4750 */ 9, 111, 9, 129, 82, 10, 109, 10, 129, 82, 554/* 4760 */ 13, 106, 13, 129, 83, 35, 129, 84, 33, 129, 555/* 4770 */ 85, 31, 129, 86, 29, 129, 88, 25, 129, 90, 556/* 4780 */ 21, 129, 93, 15, 129, 96, 9, 129, 193, 129, 557/* 4790 */ 63, 25, 129, 57, 37, 129, 53, 45, 129, 50, 558/* 4800 */ 51, 129, 47, 57, 129, 45, 61, 129, 43, 65, 559/* 4810 */ 129, 41, 69, 129, 39, 73, 129, 38, 21, 92, 560/* 4820 */ 21, 129, 36, 18, 97, 18, 129, 35, 14, 102, 561/* 4830 */ 14, 129, 34, 11, 106, 11, 129, 33, 10, 108, 562/* 4840 */ 10, 129, 32, 8, 111, 8, 129, 32, 6, 113, 563/* 4850 */ 6, 129, 31, 6, 114, 6, 129, 31, 5, 115, 564/* 4860 */ 5, 129, 30, 5, 116, 5, 130, 30, 4, 39, 565/* 4870 */ 2, 117, 4, 129, 30, 4, 40, 4, 117, 4, 566/* 4880 */ 129, 30, 4, 41, 5, 117, 4, 129, 30, 4, 567/* 4890 */ 41, 6, 117, 4, 129, 30, 5, 40, 8, 116, 568/* 4900 */ 5, 129, 30, 5, 39, 10, 116, 5, 129, 31, 569/* 4910 */ 5, 38, 11, 115, 5, 129, 31, 18, 114, 6, 570/* 4920 */ 129, 32, 17, 113, 6, 129, 32, 16, 111, 8, 571/* 4930 */ 129, 33, 15, 108, 10, 129, 33, 14, 106, 11, 572/* 4940 */ 129, 32, 17, 102, 14, 129, 31, 23, 97, 18, 573/* 4950 */ 129, 31, 28, 92, 21, 129, 30, 82, 129, 30, 574/* 4960 */ 80, 129, 30, 11, 43, 65, 129, 30, 10, 45, 575/* 4970 */ 61, 129, 31, 8, 47, 57, 129, 32, 6, 50, 576/* 4980 */ 51, 129, 33, 5, 53, 45, 129, 35, 4, 57, 577/* 4990 */ 37, 129, 38, 2, 63, 25, 129, 193, 129, 30, 578/* 5000 */ 4, 117, 4, 132, 30, 91, 137, 30, 4, 76, 579/* 5010 */ 8, 117, 4, 129, 30, 4, 73, 11, 117, 4, 580/* 5020 */ 129, 30, 4, 70, 14, 117, 4, 129, 30, 4, 581/* 5030 */ 67, 17, 117, 4, 129, 65, 19, 117, 4, 129, 582/* 5040 */ 62, 22, 117, 4, 129, 59, 25, 117, 4, 129, 583/* 5050 */ 56, 28, 117, 4, 129, 53, 31, 117, 4, 129, 584/* 5060 */ 50, 34, 117, 4, 129, 47, 29, 80, 5, 116, 585/* 5070 */ 5, 129, 30, 4, 45, 29, 80, 5, 116, 5, 586/* 5080 */ 129, 30, 4, 42, 29, 80, 5, 116, 5, 129, 587/* 5090 */ 30, 4, 39, 30, 80, 6, 115, 6, 129, 30, 588/* 5100 */ 4, 36, 30, 80, 6, 115, 6, 129, 30, 33, 589/* 5110 */ 81, 6, 114, 6, 129, 30, 30, 81, 8, 112, 590/* 5120 */ 8, 129, 30, 27, 81, 9, 111, 9, 129, 30, 591/* 5130 */ 25, 82, 10, 109, 10, 129, 30, 22, 82, 13, 592/* 5140 */ 106, 13, 129, 30, 19, 83, 35, 129, 30, 16, 593/* 5150 */ 84, 33, 129, 30, 13, 85, 31, 129, 30, 11, 594/* 5160 */ 86, 29, 129, 30, 8, 88, 25, 129, 30, 5, 595/* 5170 */ 90, 21, 129, 30, 4, 93, 15, 129, 30, 4, 596/* 5180 */ 96, 9, 129, 30, 4, 130, 193, 129, 30, 18, 597/* 5190 */ 130, 30, 18, 89, 15, 129, 30, 18, 85, 23, 598/* 5200 */ 129, 34, 11, 83, 27, 129, 34, 9, 81, 31, 599/* 5210 */ 129, 33, 8, 79, 35, 129, 33, 6, 78, 16, 600/* 5220 */ 106, 9, 129, 32, 6, 77, 15, 109, 7, 129, 601/* 5230 */ 32, 5, 76, 14, 111, 6, 129, 31, 5, 75, 602/* 5240 */ 14, 113, 5, 129, 31, 4, 74, 15, 114, 5, 603/* 5250 */ 129, 31, 4, 74, 14, 115, 4, 129, 30, 4, 604/* 5260 */ 73, 15, 116, 4, 129, 30, 4, 73, 14, 116, 605/* 5270 */ 4, 129, 30, 4, 73, 14, 117, 4, 129, 30, 606/* 5280 */ 4, 72, 15, 117, 4, 130, 30, 4, 71, 15, 607/* 5290 */ 117, 4, 130, 30, 4, 70, 15, 117, 4, 129, 608/* 5300 */ 30, 5, 70, 15, 117, 4, 129, 30, 5, 69, 609/* 5310 */ 15, 116, 5, 129, 30, 6, 68, 16, 115, 5, 610/* 5320 */ 129, 31, 6, 67, 16, 114, 6, 129, 31, 7, 611/* 5330 */ 66, 17, 113, 6, 129, 32, 7, 64, 18, 111, 612/* 5340 */ 8, 129, 32, 8, 62, 19, 109, 9, 129, 33, 613/* 5350 */ 9, 60, 20, 107, 10, 129, 34, 11, 57, 22, 614/* 5360 */ 103, 13, 129, 35, 43, 103, 18, 129, 36, 41, 615/* 5370 */ 103, 18, 129, 38, 38, 103, 18, 129, 39, 35, 616/* 5380 */ 103, 18, 129, 41, 31, 129, 43, 27, 129, 46, 617/* 5390 */ 22, 129, 49, 14, 129, 193, 129, 103, 18, 132, 618/* 5400 */ 110, 11, 129, 113, 8, 129, 114, 7, 129, 116, 619/* 5410 */ 5, 130, 117, 4, 132, 30, 4, 117, 4, 132, 620/* 5420 */ 30, 91, 137, 30, 4, 117, 4, 132, 117, 4, 621/* 5430 */ 132, 116, 5, 130, 114, 7, 129, 113, 8, 129, 622/* 5440 */ 110, 11, 129, 103, 18, 132, 193, 129, 117, 4, 623/* 5450 */ 132, 56, 65, 129, 50, 71, 129, 46, 75, 129, 624/* 5460 */ 44, 77, 129, 42, 79, 129, 40, 81, 129, 38, 625/* 5470 */ 83, 129, 36, 85, 129, 35, 86, 129, 34, 20, 626/* 5480 */ 117, 4, 129, 33, 17, 117, 4, 129, 32, 15, 627/* 5490 */ 117, 4, 129, 32, 13, 117, 4, 129, 31, 12, 628/* 5500 */ 129, 31, 10, 129, 31, 9, 129, 30, 9, 129, 629/* 5510 */ 30, 8, 130, 30, 7, 132, 31, 6, 130, 31, 630/* 5520 */ 7, 129, 32, 6, 129, 32, 7, 129, 33, 7, 631/* 5530 */ 129, 34, 7, 129, 35, 8, 129, 36, 9, 117, 632/* 5540 */ 4, 129, 38, 9, 117, 4, 129, 40, 10, 117, 633/* 5550 */ 4, 129, 42, 12, 117, 4, 129, 44, 77, 129, 634/* 5560 */ 46, 75, 129, 50, 71, 129, 56, 43, 100, 21, 635/* 5570 */ 129, 117, 4, 132, 193, 129, 117, 4, 132, 115, 636/* 5580 */ 6, 129, 110, 11, 129, 105, 16, 129, 101, 20, 637/* 5590 */ 129, 96, 25, 129, 92, 29, 129, 87, 34, 129, 638/* 5600 */ 83, 38, 129, 78, 43, 129, 74, 47, 129, 70, 639/* 5610 */ 42, 117, 4, 129, 65, 42, 117, 4, 129, 60, 640/* 5620 */ 43, 117, 4, 129, 56, 42, 129, 51, 42, 129, 641/* 5630 */ 46, 43, 129, 42, 43, 129, 37, 44, 129, 33, 642/* 5640 */ 43, 129, 30, 42, 129, 33, 34, 129, 38, 25, 643/* 5650 */ 129, 42, 16, 129, 47, 15, 129, 52, 15, 129, 644/* 5660 */ 57, 15, 129, 61, 16, 129, 66, 16, 129, 71, 645/* 5670 */ 16, 129, 76, 16, 129, 80, 16, 129, 85, 16, 646/* 5680 */ 117, 4, 129, 90, 16, 117, 4, 129, 95, 16, 647/* 5690 */ 117, 4, 129, 100, 21, 129, 105, 16, 129, 110, 648/* 5700 */ 11, 129, 114, 7, 129, 117, 4, 132, 193, 129, 649/* 5710 */ 117, 4, 132, 115, 6, 129, 110, 11, 129, 105, 650/* 5720 */ 16, 129, 101, 20, 129, 96, 25, 129, 92, 29, 651/* 5730 */ 129, 87, 34, 129, 83, 38, 129, 78, 43, 129, 652/* 5740 */ 74, 47, 129, 70, 42, 117, 4, 129, 65, 42, 653/* 5750 */ 117, 4, 129, 60, 43, 117, 4, 129, 56, 42, 654/* 5760 */ 129, 51, 42, 129, 46, 43, 129, 42, 43, 129, 655/* 5770 */ 37, 44, 129, 33, 43, 129, 30, 42, 129, 33, 656/* 5780 */ 34, 129, 38, 25, 129, 42, 16, 129, 47, 15, 657/* 5790 */ 129, 52, 15, 129, 57, 15, 129, 61, 16, 129, 658/* 5800 */ 65, 17, 129, 60, 27, 129, 56, 36, 129, 51, 659/* 5810 */ 42, 129, 46, 43, 129, 42, 43, 129, 37, 44, 660/* 5820 */ 129, 33, 43, 129, 30, 42, 129, 33, 34, 129, 661/* 5830 */ 38, 25, 129, 42, 16, 129, 47, 15, 129, 52, 662/* 5840 */ 15, 129, 57, 15, 129, 61, 16, 129, 66, 16, 663/* 5850 */ 129, 71, 16, 129, 76, 16, 129, 80, 16, 129, 664/* 5860 */ 85, 16, 117, 4, 129, 90, 16, 117, 4, 129, 665/* 5870 */ 95, 16, 117, 4, 129, 100, 21, 129, 105, 16, 666/* 5880 */ 129, 110, 11, 129, 114, 7, 129, 117, 4, 132, 667/* 5890 */ 193, 129, 30, 4, 117, 4, 132, 30, 4, 115, 668/* 5900 */ 6, 129, 30, 4, 112, 9, 129, 30, 6, 109, 669/* 5910 */ 12, 129, 30, 9, 106, 15, 129, 30, 11, 103, 670/* 5920 */ 18, 129, 30, 14, 100, 21, 129, 30, 4, 38, 671/* 5930 */ 9, 98, 23, 129, 30, 4, 40, 10, 95, 26, 672/* 5940 */ 129, 30, 4, 43, 9, 92, 29, 129, 46, 9, 673/* 5950 */ 89, 32, 129, 49, 8, 86, 28, 117, 4, 129, 674/* 5960 */ 51, 9, 83, 28, 117, 4, 129, 54, 9, 80, 675/* 5970 */ 28, 117, 4, 129, 57, 8, 77, 28, 117, 4, 676/* 5980 */ 129, 59, 9, 74, 28, 129, 62, 37, 129, 64, 677/* 5990 */ 33, 129, 66, 28, 129, 63, 28, 129, 60, 28, 678/* 6000 */ 129, 57, 28, 129, 54, 33, 129, 51, 39, 129, 679/* 6010 */ 48, 29, 83, 9, 129, 30, 4, 45, 29, 86, 680/* 6020 */ 9, 129, 30, 4, 42, 29, 89, 9, 129, 30, 681/* 6030 */ 4, 39, 29, 92, 8, 129, 30, 4, 36, 29, 682/* 6040 */ 94, 9, 129, 30, 32, 97, 9, 129, 30, 29, 683/* 6050 */ 100, 8, 117, 4, 129, 30, 26, 103, 8, 117, 684/* 6060 */ 4, 129, 30, 23, 105, 9, 117, 4, 129, 30, 685/* 6070 */ 20, 108, 13, 129, 30, 18, 111, 10, 129, 30, 686/* 6080 */ 15, 113, 8, 129, 30, 12, 116, 5, 129, 30, 687/* 6090 */ 9, 117, 4, 129, 30, 6, 117, 4, 129, 30, 688/* 6100 */ 4, 117, 4, 132, 193, 129, 117, 4, 132, 114, 689/* 6110 */ 7, 129, 111, 10, 129, 108, 13, 129, 105, 16, 690/* 6120 */ 129, 102, 19, 129, 100, 21, 129, 96, 25, 129, 691/* 6130 */ 93, 28, 129, 90, 31, 129, 87, 34, 129, 84, 692/* 6140 */ 30, 117, 4, 129, 30, 4, 81, 30, 117, 4, 693/* 6150 */ 129, 30, 4, 78, 30, 117, 4, 129, 30, 4, 694/* 6160 */ 75, 30, 117, 4, 129, 30, 4, 72, 30, 129, 695/* 6170 */ 30, 69, 129, 30, 66, 129, 30, 63, 129, 30, 696/* 6180 */ 60, 129, 30, 57, 129, 30, 54, 129, 30, 51, 697/* 6190 */ 129, 30, 48, 129, 30, 51, 129, 30, 4, 73, 698/* 6200 */ 12, 129, 30, 4, 76, 12, 129, 30, 4, 80, 699/* 6210 */ 12, 129, 30, 4, 83, 12, 129, 87, 12, 129, 700/* 6220 */ 90, 12, 117, 4, 129, 94, 11, 117, 4, 129, 701/* 6230 */ 97, 12, 117, 4, 129, 101, 12, 117, 4, 129, 702/* 6240 */ 104, 17, 129, 108, 13, 129, 111, 10, 129, 115, 703/* 6250 */ 6, 129, 117, 4, 134, 193, 129, 30, 1, 103, 704/* 6260 */ 18, 129, 30, 4, 103, 18, 129, 30, 7, 103, 705/* 6270 */ 18, 129, 30, 9, 103, 18, 129, 30, 12, 110, 706/* 6280 */ 11, 129, 30, 15, 113, 8, 129, 30, 18, 114, 707/* 6290 */ 7, 129, 30, 21, 116, 5, 129, 30, 24, 116, 708/* 6300 */ 5, 129, 30, 27, 117, 4, 129, 30, 30, 117, 709/* 6310 */ 4, 129, 30, 33, 117, 4, 129, 30, 4, 37, 710/* 6320 */ 28, 117, 4, 129, 30, 4, 40, 28, 117, 4, 711/* 6330 */ 129, 30, 4, 42, 29, 117, 4, 129, 30, 4, 712/* 6340 */ 45, 29, 117, 4, 129, 30, 4, 48, 29, 117, 713/* 6350 */ 4, 129, 30, 4, 51, 29, 117, 4, 129, 30, 714/* 6360 */ 4, 54, 29, 117, 4, 129, 30, 4, 57, 29, 715/* 6370 */ 117, 4, 129, 30, 4, 59, 30, 117, 4, 129, 716/* 6380 */ 30, 4, 62, 30, 117, 4, 129, 30, 4, 65, 717/* 6390 */ 30, 117, 4, 129, 30, 4, 68, 30, 117, 4, 718/* 6400 */ 129, 30, 4, 71, 30, 117, 4, 129, 30, 4, 719/* 6410 */ 74, 30, 117, 4, 129, 30, 4, 77, 30, 117, 720/* 6420 */ 4, 129, 30, 4, 80, 30, 117, 4, 129, 30, 721/* 6430 */ 4, 83, 30, 117, 4, 129, 30, 4, 86, 35, 722/* 6440 */ 129, 30, 4, 89, 32, 129, 30, 4, 91, 30, 723/* 6450 */ 129, 30, 4, 94, 27, 129, 30, 5, 97, 24, 724/* 6460 */ 129, 30, 5, 100, 21, 129, 30, 7, 103, 18, 725/* 6470 */ 129, 30, 8, 106, 15, 129, 30, 11, 109, 12, 726/* 6480 */ 129, 30, 18, 112, 9, 129, 30, 18, 115, 6, 727/* 6490 */ 129, 30, 18, 117, 4, 129, 30, 18, 120, 1, 728/* 6500 */ 129, 193, 129, 42, 8, 129, 38, 16, 129, 36, 729/* 6510 */ 20, 129, 34, 24, 71, 5, 129, 33, 26, 69, 730/* 6520 */ 10, 129, 32, 28, 68, 13, 129, 31, 30, 68, 731/* 6530 */ 14, 129, 31, 9, 52, 9, 68, 15, 129, 30, 732/* 6540 */ 8, 54, 8, 69, 14, 129, 30, 7, 55, 7, 733/* 6550 */ 71, 4, 78, 6, 129, 30, 6, 56, 6, 79, 734/* 6560 */ 5, 129, 30, 6, 56, 6, 80, 4, 130, 31, 735/* 6570 */ 5, 56, 5, 80, 4, 129, 31, 5, 56, 5, 736/* 6580 */ 79, 5, 129, 32, 5, 55, 5, 78, 6, 129, 737/* 6590 */ 33, 5, 54, 5, 77, 7, 129, 34, 6, 52, 738/* 6600 */ 6, 74, 9, 129, 35, 48, 129, 33, 49, 129, 739/* 6610 */ 32, 49, 129, 31, 49, 129, 30, 49, 129, 30, 740/* 6620 */ 47, 129, 30, 45, 129, 30, 41, 129, 30, 6, 741/* 6630 */ 129, 30, 4, 129, 30, 3, 129, 30, 2, 129, 742/* 6640 */ 193, 129, 30, 4, 117, 4, 130, 31, 90, 136, 743/* 6650 */ 37, 5, 72, 5, 129, 35, 5, 74, 5, 129, 744/* 6660 */ 33, 5, 76, 5, 129, 32, 5, 77, 5, 129, 745/* 6670 */ 31, 5, 78, 5, 129, 31, 4, 79, 4, 129, 746/* 6680 */ 30, 5, 79, 5, 131, 30, 6, 78, 6, 129, 747/* 6690 */ 30, 7, 77, 7, 129, 31, 8, 75, 8, 129, 748/* 6700 */ 31, 11, 72, 11, 129, 32, 15, 67, 15, 129, 749/* 6710 */ 33, 48, 129, 34, 46, 129, 35, 44, 129, 37, 750/* 6720 */ 40, 129, 39, 36, 129, 42, 30, 129, 46, 22, 751/* 6730 */ 129, 193, 129, 48, 18, 129, 43, 28, 129, 41, 752/* 6740 */ 32, 129, 39, 36, 129, 37, 40, 129, 35, 44, 753/* 6750 */ 129, 34, 46, 129, 33, 13, 68, 13, 129, 32, 754/* 6760 */ 9, 73, 9, 129, 32, 7, 75, 7, 129, 31, 755/* 6770 */ 6, 77, 6, 129, 31, 5, 78, 5, 129, 30, 756/* 6780 */ 5, 79, 5, 129, 30, 4, 80, 4, 133, 31, 757/* 6790 */ 3, 79, 4, 129, 31, 4, 79, 4, 129, 32, 758/* 6800 */ 3, 78, 4, 129, 32, 4, 76, 6, 129, 33, 759/* 6810 */ 4, 74, 7, 129, 34, 4, 72, 8, 129, 35, 760/* 6820 */ 5, 72, 7, 129, 37, 5, 73, 4, 129, 39, 761/* 6830 */ 4, 74, 1, 129, 129, 193, 129, 46, 22, 129, 762/* 6840 */ 42, 30, 129, 39, 36, 129, 37, 40, 129, 35, 763/* 6850 */ 44, 129, 34, 46, 129, 33, 48, 129, 32, 15, 764/* 6860 */ 67, 15, 129, 31, 11, 72, 11, 129, 31, 8, 765/* 6870 */ 75, 8, 129, 30, 7, 77, 7, 129, 30, 6, 766/* 6880 */ 78, 6, 129, 30, 5, 79, 5, 131, 31, 4, 767/* 6890 */ 79, 4, 129, 31, 5, 78, 5, 129, 32, 5, 768/* 6900 */ 77, 5, 129, 33, 5, 76, 5, 129, 35, 5, 769/* 6910 */ 74, 5, 117, 4, 129, 37, 5, 72, 5, 117, 770/* 6920 */ 4, 129, 30, 91, 136, 30, 4, 130, 193, 129, 771/* 6930 */ 48, 18, 129, 43, 28, 129, 41, 32, 129, 39, 772/* 6940 */ 36, 129, 37, 40, 129, 35, 44, 129, 34, 46, 773/* 6950 */ 129, 33, 13, 55, 4, 68, 13, 129, 32, 9, 774/* 6960 */ 55, 4, 73, 9, 129, 32, 7, 55, 4, 75, 775/* 6970 */ 7, 129, 31, 6, 55, 4, 77, 6, 129, 31, 776/* 6980 */ 5, 55, 4, 78, 5, 129, 30, 5, 55, 4, 777/* 6990 */ 79, 5, 129, 30, 4, 55, 4, 80, 4, 132, 778/* 7000 */ 30, 4, 55, 4, 79, 5, 129, 31, 3, 55, 779/* 7010 */ 4, 78, 5, 129, 31, 4, 55, 4, 77, 6, 780/* 7020 */ 129, 32, 3, 55, 4, 75, 7, 129, 32, 4, 781/* 7030 */ 55, 4, 73, 9, 129, 33, 4, 55, 4, 68, 782/* 7040 */ 13, 129, 34, 4, 55, 25, 129, 35, 5, 55, 783/* 7050 */ 24, 129, 37, 5, 55, 22, 129, 39, 4, 55, 784/* 7060 */ 20, 129, 55, 18, 129, 55, 16, 129, 55, 11, 785/* 7070 */ 129, 193, 129, 80, 4, 129, 30, 4, 80, 4, 786/* 7080 */ 130, 30, 78, 129, 30, 82, 129, 30, 85, 129, 787/* 7090 */ 30, 87, 129, 30, 88, 129, 30, 89, 129, 30, 788/* 7100 */ 90, 130, 30, 4, 80, 4, 115, 6, 129, 30, 789/* 7110 */ 4, 80, 4, 117, 4, 129, 80, 4, 105, 6, 790/* 7120 */ 117, 4, 129, 80, 4, 103, 10, 116, 5, 129, 791/* 7130 */ 80, 4, 102, 19, 129, 80, 4, 101, 19, 129, 792/* 7140 */ 101, 19, 129, 101, 18, 129, 102, 16, 129, 103, 793/* 7150 */ 12, 129, 105, 6, 129, 193, 129, 12, 10, 59, 794/* 7160 */ 11, 129, 9, 16, 55, 19, 129, 7, 20, 53, 795/* 7170 */ 23, 129, 6, 7, 23, 5, 32, 6, 51, 27, 796/* 7180 */ 129, 4, 7, 25, 16, 50, 29, 129, 3, 6, 797/* 7190 */ 27, 16, 49, 31, 129, 2, 6, 28, 16, 48, 798/* 7200 */ 33, 129, 1, 6, 27, 18, 47, 35, 129, 1, 799/* 7210 */ 6, 27, 31, 71, 12, 129, 1, 5, 26, 15, 800/* 7220 */ 44, 10, 75, 8, 129, 1, 5, 25, 14, 45, 801/* 7230 */ 7, 77, 7, 129, 1, 5, 25, 13, 45, 5, 802/* 7240 */ 79, 5, 129, 1, 5, 24, 14, 45, 4, 80, 803/* 7250 */ 4, 129, 1, 5, 24, 13, 45, 4, 80, 4, 804/* 7260 */ 129, 1, 5, 23, 14, 45, 4, 80, 4, 129, 805/* 7270 */ 1, 5, 23, 13, 45, 4, 80, 4, 129, 1, 806/* 7280 */ 6, 22, 13, 45, 5, 79, 5, 129, 1, 6, 807/* 7290 */ 21, 14, 45, 7, 77, 7, 129, 1, 7, 21, 808/* 7300 */ 13, 46, 8, 75, 8, 129, 1, 8, 20, 13, 809/* 7310 */ 46, 12, 71, 12, 129, 1, 10, 18, 15, 47, 810/* 7320 */ 35, 129, 2, 30, 48, 33, 129, 3, 29, 49, 811/* 7330 */ 32, 129, 4, 27, 50, 31, 129, 5, 25, 51, 812/* 7340 */ 27, 80, 2, 86, 4, 129, 7, 21, 53, 23, 813/* 7350 */ 80, 3, 85, 6, 129, 9, 17, 55, 19, 80, 814/* 7360 */ 12, 129, 12, 12, 59, 11, 81, 11, 129, 82, 815/* 7370 */ 10, 129, 84, 7, 129, 86, 4, 129, 193, 129, 816/* 7380 */ 30, 4, 117, 4, 130, 30, 91, 136, 30, 4, 817/* 7390 */ 72, 5, 129, 30, 4, 74, 5, 129, 75, 5, 818/* 7400 */ 129, 76, 5, 129, 76, 6, 129, 77, 6, 130, 819/* 7410 */ 77, 7, 130, 76, 8, 129, 30, 4, 75, 9, 820/* 7420 */ 129, 30, 4, 72, 12, 129, 30, 54, 129, 30, 821/* 7430 */ 53, 130, 30, 52, 129, 30, 51, 129, 30, 49, 822/* 7440 */ 129, 30, 46, 129, 30, 42, 129, 30, 4, 130, 823/* 7450 */ 193, 129, 30, 4, 80, 4, 129, 30, 4, 80, 824/* 7460 */ 4, 100, 6, 129, 30, 54, 98, 10, 129, 30, 825/* 7470 */ 54, 97, 12, 129, 30, 54, 96, 14, 131, 30, 826/* 7480 */ 54, 97, 12, 129, 30, 54, 98, 10, 129, 30, 827/* 7490 */ 54, 100, 6, 129, 30, 4, 130, 193, 129, 7, 828/* 7500 */ 6, 129, 4, 11, 129, 3, 13, 129, 2, 14, 829/* 7510 */ 129, 1, 15, 130, 1, 3, 6, 9, 129, 1, 830/* 7520 */ 3, 7, 6, 129, 1, 3, 130, 1, 4, 129, 831/* 7530 */ 1, 5, 80, 4, 129, 1, 7, 80, 4, 100, 832/* 7540 */ 6, 129, 2, 82, 98, 10, 129, 3, 81, 97, 833/* 7550 */ 12, 129, 4, 80, 96, 14, 129, 5, 79, 96, 834/* 7560 */ 14, 129, 7, 77, 96, 14, 129, 10, 74, 97, 835/* 7570 */ 12, 129, 14, 70, 98, 10, 129, 19, 65, 100, 836/* 7580 */ 6, 129, 193, 129, 30, 4, 117, 4, 130, 30, 837/* 7590 */ 91, 136, 30, 4, 57, 9, 129, 30, 4, 55, 838/* 7600 */ 12, 129, 52, 17, 129, 50, 20, 129, 48, 24, 839/* 7610 */ 129, 46, 27, 129, 44, 21, 69, 6, 129, 41, 840/* 7620 */ 22, 70, 6, 80, 4, 129, 30, 4, 39, 21, 841/* 7630 */ 72, 6, 80, 4, 129, 30, 4, 36, 22, 73, 842/* 7640 */ 11, 129, 30, 26, 75, 9, 129, 30, 23, 76, 843/* 7650 */ 8, 129, 30, 21, 78, 6, 129, 30, 19, 79, 844/* 7660 */ 5, 129, 30, 16, 80, 4, 129, 30, 14, 80, 845/* 7670 */ 4, 129, 30, 12, 129, 30, 10, 129, 30, 7, 846/* 7680 */ 129, 30, 5, 129, 30, 4, 130, 193, 129, 30, 847/* 7690 */ 4, 117, 4, 130, 30, 91, 136, 30, 4, 130, 848/* 7700 */ 193, 129, 30, 4, 80, 4, 130, 30, 54, 136, 849/* 7710 */ 30, 4, 72, 5, 129, 30, 4, 74, 5, 129, 850/* 7720 */ 75, 5, 129, 76, 5, 129, 30, 4, 75, 7, 851/* 7730 */ 129, 30, 4, 74, 9, 129, 30, 54, 132, 30, 852/* 7740 */ 53, 129, 30, 52, 129, 30, 51, 129, 30, 48, 853/* 7750 */ 129, 30, 4, 72, 5, 129, 30, 4, 74, 5, 854/* 7760 */ 129, 75, 5, 129, 76, 5, 129, 30, 4, 75, 855/* 7770 */ 7, 129, 30, 4, 74, 9, 129, 30, 54, 132, 856/* 7780 */ 30, 53, 129, 30, 52, 129, 30, 51, 129, 30, 857/* 7790 */ 48, 129, 30, 4, 130, 193, 129, 30, 4, 80, 858/* 7800 */ 4, 130, 30, 54, 136, 30, 4, 72, 5, 129, 859/* 7810 */ 30, 4, 74, 5, 129, 75, 5, 129, 76, 5, 860/* 7820 */ 129, 76, 6, 129, 77, 6, 130, 77, 7, 130, 861/* 7830 */ 76, 8, 129, 30, 4, 75, 9, 129, 30, 4, 862/* 7840 */ 72, 12, 129, 30, 54, 129, 30, 53, 130, 30, 863/* 7850 */ 52, 129, 30, 51, 129, 30, 49, 129, 30, 46, 864/* 7860 */ 129, 30, 42, 129, 30, 4, 130, 193, 129, 48, 865/* 7870 */ 18, 129, 43, 28, 129, 41, 32, 129, 39, 36, 866/* 7880 */ 129, 37, 40, 129, 35, 44, 129, 34, 46, 129, 867/* 7890 */ 33, 13, 68, 13, 129, 32, 9, 73, 9, 129, 868/* 7900 */ 32, 7, 75, 7, 129, 31, 6, 77, 6, 129, 869/* 7910 */ 31, 5, 78, 5, 129, 30, 5, 79, 5, 129, 870/* 7920 */ 30, 4, 80, 4, 132, 30, 5, 79, 5, 130, 871/* 7930 */ 31, 5, 78, 5, 129, 31, 6, 77, 6, 129, 872/* 7940 */ 32, 7, 75, 7, 129, 32, 9, 73, 9, 129, 873/* 7950 */ 33, 13, 68, 13, 129, 34, 46, 129, 35, 44, 874/* 7960 */ 129, 37, 40, 129, 39, 36, 129, 41, 32, 129, 875/* 7970 */ 43, 28, 129, 48, 18, 129, 193, 129, 1, 3, 876/* 7980 */ 80, 4, 130, 1, 83, 137, 37, 5, 72, 5, 877/* 7990 */ 129, 35, 5, 74, 5, 129, 33, 5, 76, 5, 878/* 8000 */ 129, 32, 5, 77, 5, 129, 31, 5, 78, 5, 879/* 8010 */ 129, 31, 4, 79, 4, 129, 30, 5, 79, 5, 880/* 8020 */ 131, 30, 6, 78, 6, 129, 30, 7, 77, 7, 881/* 8030 */ 129, 31, 8, 75, 8, 129, 31, 11, 72, 11, 882/* 8040 */ 129, 32, 15, 67, 15, 129, 33, 48, 129, 34, 883/* 8050 */ 46, 129, 35, 44, 129, 37, 40, 129, 39, 36, 884/* 8060 */ 129, 42, 30, 129, 46, 22, 129, 193, 129, 46, 885/* 8070 */ 22, 129, 42, 30, 129, 39, 36, 129, 37, 40, 886/* 8080 */ 129, 35, 44, 129, 34, 46, 129, 33, 48, 129, 887/* 8090 */ 32, 15, 67, 15, 129, 31, 11, 72, 11, 129, 888/* 8100 */ 31, 8, 75, 8, 129, 30, 7, 77, 7, 129, 889/* 8110 */ 30, 6, 78, 6, 129, 30, 5, 79, 5, 131, 890/* 8120 */ 31, 4, 79, 4, 129, 31, 5, 78, 5, 129, 891/* 8130 */ 32, 5, 77, 5, 129, 33, 5, 76, 5, 129, 892/* 8140 */ 35, 5, 74, 5, 129, 37, 5, 72, 5, 129, 893/* 8150 */ 1, 83, 136, 1, 3, 80, 4, 130, 193, 129, 894/* 8160 */ 30, 4, 80, 4, 130, 30, 54, 136, 30, 4, 895/* 8170 */ 68, 6, 129, 30, 4, 70, 6, 129, 71, 7, 896/* 8180 */ 129, 72, 7, 129, 73, 7, 129, 74, 7, 129, 897/* 8190 */ 74, 8, 129, 75, 8, 130, 69, 15, 129, 67, 898/* 8200 */ 17, 129, 66, 18, 129, 65, 19, 130, 65, 18, 899/* 8210 */ 130, 66, 16, 129, 67, 13, 129, 69, 8, 129, 900/* 8220 */ 193, 129, 30, 13, 64, 8, 129, 30, 13, 61, 901/* 8230 */ 14, 129, 30, 13, 59, 18, 129, 30, 13, 57, 902/* 8240 */ 22, 129, 33, 8, 56, 24, 129, 32, 7, 55, 903/* 8250 */ 26, 129, 32, 6, 54, 28, 129, 31, 6, 53, 904/* 8260 */ 16, 77, 6, 129, 31, 5, 53, 14, 79, 4, 905/* 8270 */ 129, 30, 5, 52, 14, 80, 4, 129, 30, 5, 906/* 8280 */ 52, 13, 80, 4, 129, 30, 4, 52, 13, 80, 907/* 8290 */ 4, 129, 30, 4, 52, 12, 80, 4, 129, 30, 908/* 8300 */ 4, 51, 13, 80, 4, 130, 30, 4, 50, 13, 909/* 8310 */ 79, 5, 129, 30, 4, 50, 13, 78, 5, 129, 910/* 8320 */ 30, 5, 49, 14, 77, 6, 129, 31, 4, 49, 911/* 8330 */ 13, 76, 6, 129, 31, 5, 48, 14, 75, 7, 912/* 8340 */ 129, 32, 5, 47, 14, 73, 8, 129, 32, 6, 913/* 8350 */ 45, 16, 71, 13, 129, 33, 27, 71, 13, 129, 914/* 8360 */ 34, 26, 71, 13, 129, 35, 24, 71, 13, 129, 915/* 8370 */ 37, 20, 129, 39, 16, 129, 43, 9, 129, 193, 916/* 8380 */ 129, 80, 4, 131, 41, 56, 129, 37, 60, 129, 917/* 8390 */ 35, 62, 129, 33, 64, 129, 32, 65, 129, 31, 918/* 8400 */ 66, 129, 30, 67, 130, 30, 11, 80, 4, 129, 919/* 8410 */ 30, 9, 80, 4, 129, 30, 8, 80, 4, 129, 920/* 8420 */ 31, 7, 80, 4, 129, 31, 6, 129, 32, 5, 921/* 8430 */ 129, 33, 5, 129, 35, 4, 129, 38, 3, 129, 922/* 8440 */ 193, 129, 80, 4, 130, 42, 42, 129, 38, 46, 923/* 8450 */ 129, 35, 49, 129, 33, 51, 129, 32, 52, 129, 924/* 8460 */ 31, 53, 130, 30, 54, 129, 30, 12, 129, 30, 925/* 8470 */ 9, 129, 30, 8, 129, 30, 7, 130, 31, 6, 926/* 8480 */ 130, 32, 6, 129, 33, 5, 129, 34, 5, 129, 927/* 8490 */ 35, 5, 80, 4, 129, 37, 5, 80, 4, 129, 928/* 8500 */ 30, 54, 136, 30, 4, 130, 193, 129, 80, 4, 929/* 8510 */ 130, 77, 7, 129, 74, 10, 129, 70, 14, 129, 930/* 8520 */ 66, 18, 129, 62, 22, 129, 59, 25, 129, 55, 931/* 8530 */ 29, 129, 51, 33, 129, 47, 37, 129, 44, 32, 932/* 8540 */ 80, 4, 129, 40, 32, 80, 4, 129, 36, 32, 933/* 8550 */ 129, 32, 33, 129, 30, 31, 129, 33, 24, 129, 934/* 8560 */ 36, 17, 129, 40, 12, 129, 44, 12, 129, 48, 935/* 8570 */ 12, 129, 51, 13, 129, 55, 13, 129, 59, 13, 936/* 8580 */ 80, 4, 129, 63, 13, 80, 4, 129, 67, 17, 937/* 8590 */ 129, 71, 13, 129, 74, 10, 129, 78, 6, 129, 938/* 8600 */ 80, 4, 131, 193, 129, 80, 4, 130, 77, 7, 939/* 8610 */ 129, 74, 10, 129, 70, 14, 129, 66, 18, 129, 940/* 8620 */ 62, 22, 129, 59, 25, 129, 55, 29, 129, 51, 941/* 8630 */ 33, 129, 47, 37, 129, 44, 32, 80, 4, 129, 942/* 8640 */ 40, 32, 80, 4, 129, 36, 32, 129, 32, 33, 943/* 8650 */ 129, 30, 31, 129, 33, 24, 129, 36, 17, 129, 944/* 8660 */ 40, 12, 129, 44, 12, 129, 47, 13, 129, 44, 945/* 8670 */ 20, 129, 40, 28, 129, 36, 31, 129, 32, 32, 946/* 8680 */ 129, 30, 30, 129, 33, 24, 129, 36, 17, 129, 947/* 8690 */ 40, 12, 129, 44, 12, 129, 48, 12, 129, 51, 948/* 8700 */ 13, 129, 55, 13, 129, 59, 13, 80, 4, 129, 949/* 8710 */ 63, 13, 80, 4, 129, 67, 17, 129, 71, 13, 950/* 8720 */ 129, 74, 10, 129, 78, 6, 129, 80, 4, 131, 951/* 8730 */ 193, 129, 30, 4, 80, 4, 130, 30, 4, 79, 952/* 8740 */ 5, 129, 30, 5, 77, 7, 129, 30, 6, 74, 953/* 8750 */ 10, 129, 30, 8, 72, 12, 129, 30, 11, 69, 954/* 8760 */ 15, 129, 30, 13, 67, 17, 129, 30, 4, 37, 955/* 8770 */ 8, 64, 20, 129, 30, 4, 39, 8, 62, 22, 956/* 8780 */ 129, 41, 8, 59, 25, 129, 43, 8, 57, 27, 957/* 8790 */ 129, 45, 8, 55, 22, 80, 4, 129, 47, 27, 958/* 8800 */ 80, 4, 129, 49, 23, 129, 47, 22, 129, 44, 959/* 8810 */ 23, 129, 42, 22, 129, 30, 4, 39, 27, 129, 960/* 8820 */ 30, 4, 37, 31, 129, 30, 27, 62, 8, 129, 961/* 8830 */ 30, 25, 64, 8, 129, 30, 22, 66, 8, 80, 962/* 8840 */ 4, 129, 30, 20, 68, 8, 80, 4, 129, 30, 963/* 8850 */ 17, 70, 8, 80, 4, 129, 30, 15, 73, 11, 964/* 8860 */ 129, 30, 12, 75, 9, 129, 30, 10, 77, 7, 965/* 8870 */ 129, 30, 7, 79, 5, 129, 30, 5, 80, 4, 966/* 8880 */ 129, 30, 4, 80, 4, 130, 193, 129, 4, 5, 967/* 8890 */ 80, 4, 129, 2, 9, 80, 4, 129, 1, 11, 968/* 8900 */ 77, 7, 129, 1, 12, 74, 10, 129, 1, 12, 969/* 8910 */ 70, 14, 129, 1, 12, 66, 18, 129, 1, 11, 970/* 8920 */ 62, 22, 129, 2, 9, 59, 25, 129, 4, 11, 971/* 8930 */ 55, 29, 129, 7, 12, 51, 33, 129, 10, 12, 972/* 8940 */ 47, 37, 129, 14, 12, 44, 32, 80, 4, 129, 973/* 8950 */ 17, 13, 40, 32, 80, 4, 129, 21, 13, 36, 974/* 8960 */ 32, 129, 25, 40, 129, 29, 32, 129, 33, 24, 975/* 8970 */ 129, 36, 17, 129, 40, 12, 129, 44, 12, 129, 976/* 8980 */ 48, 12, 129, 51, 13, 129, 55, 13, 129, 59, 977/* 8990 */ 13, 80, 4, 129, 63, 13, 80, 4, 129, 67, 978/* 9000 */ 17, 129, 71, 13, 129, 74, 10, 129, 78, 6, 979/* 9010 */ 129, 80, 4, 131, 193, 129, 30, 1, 71, 13, 980/* 9020 */ 129, 30, 3, 71, 13, 129, 30, 6, 71, 13, 981/* 9030 */ 129, 30, 9, 75, 9, 129, 30, 11, 77, 7, 982/* 9040 */ 129, 30, 14, 79, 5, 129, 30, 17, 79, 5, 983/* 9050 */ 129, 30, 19, 80, 4, 129, 30, 22, 80, 4, 984/* 9060 */ 129, 30, 25, 80, 4, 129, 30, 27, 80, 4, 985/* 9070 */ 129, 30, 4, 36, 24, 80, 4, 129, 30, 4, 986/* 9080 */ 38, 25, 80, 4, 129, 30, 4, 41, 24, 80, 987/* 9090 */ 4, 129, 30, 4, 44, 24, 80, 4, 129, 30, 988/* 9100 */ 4, 46, 25, 80, 4, 129, 30, 4, 49, 25, 989/* 9110 */ 80, 4, 129, 30, 4, 52, 24, 80, 4, 129, 990/* 9120 */ 30, 4, 54, 30, 129, 30, 4, 57, 27, 129, 991/* 9130 */ 30, 4, 59, 25, 129, 30, 4, 62, 22, 129, 992/* 9140 */ 30, 4, 65, 19, 129, 30, 5, 67, 17, 129, 993/* 9150 */ 30, 5, 70, 14, 129, 30, 7, 73, 11, 129, 994/* 9160 */ 30, 9, 76, 8, 129, 30, 13, 78, 6, 129, 995/* 9170 */ 30, 13, 81, 3, 129, 30, 13, 129, 193, 2, 996/* 9180 */ 9, 59, 25, 129, 4, 11, 55, 29, 129, 7, 997/* 9190 */ 12, 51, 33, 129, 10, 12, 47, 37, 129, 14, 998/* 9200 */ 12, 44, 32, 80, 4, 129, 17, 13, 40, 32, 999/* 9210 */ 80, 4, 129, 21, 13, 36, 32, 129, 25, 40, 1000/* 9220 */ 129, 29, 32, 129, 33, 24, 129, 36, 17, 129, 1001/* 9230 */ 40, 12, 129, 44, 12, 129, 48, 12, 129, 51, 1002/* 9240 */ 13, 129, 55, 13, 129, 59, 13, 80, 4, 129, 1003/* 9250 */ 63, 13, 80, 4, 129, 67, 17, 129, 71, 13, 1004/* 9260 */ 129, 74, 10, 129, 78, 6, 129, 80, 4, 131, 1005/* 9270 */ 193 1006}; 1007 1008static char line[DWIDTH]; 1009static char *message; 1010static char print[DWIDTH]; 1011static int debug, i, j, linen, max, nchars, pc, term, trace, x, y; 1012static int width = DWIDTH; /* -w option: scrunch letters to 80 columns */ 1013 1014static void usage(void) __dead2; 1015 1016int 1017main(int argc, char *argv[]) 1018{ 1019 int ch; 1020 1021 while ((ch = getopt(argc, argv, "w:td")) != -1) 1022 switch (ch) { 1023 case 'd': 1024 debug = 1; 1025 break; 1026 case 't': 1027 trace = 1; 1028 break; 1029 case 'w': 1030 width = atoi(optarg); 1031 if (width <= 0 || width > DWIDTH) 1032 errx(1, "illegal argument for -w option"); 1033 break; 1034 case '?': 1035 default: 1036 usage(); 1037 } 1038 argc -= optind; 1039 argv += optind; 1040 1041 for (i = 0; i < width; i++) { 1042 j = i * DWIDTH / width; 1043 print[j] = 1; 1044 } 1045 1046 /* Have now read in the data. Next get the message to be printed. */ 1047 if (*argv) { 1048 for(i=0, j=0; i < argc; i++) 1049 j += strlen(argv[i]) + 1; 1050 if ((message = malloc((size_t)j)) == NULL) 1051 err(1, "malloc"); 1052 strlcpy(message, *argv, j); 1053 while (*++argv) { 1054 strlcat(message, " ", j); 1055 strlcat(message, *argv, j); 1056 } 1057 nchars = strlen(message); 1058 } else { 1059 if ((message = malloc((size_t)MAXMSG)) == NULL) 1060 err(1, "malloc"); 1061 fprintf(stderr,"Message: "); 1062 if (fgets(message, MAXMSG, stdin) == NULL) { 1063 nchars = 0; 1064 message[0] = '\0'; 1065 } else { 1066 nchars = strlen(message); 1067 1068 /* Get rid of newline. */ 1069 if (message[nchars - 1] == '\n') 1070 message[--nchars] = '\0'; 1071 } 1072 } 1073 1074 /* some debugging print statements */ 1075 if (debug) { 1076 printf("const int asc_ptr[NCHARS] = {\n"); 1077 for (i = 0; i < 128; i++) { 1078 printf("%4d, ",asc_ptr[i]); 1079 if ((i+1) % 8 == 0) 1080 printf("\n"); 1081 } 1082 printf("};\nconst unsigned char data_table[NBYTES] = {\n"); 1083 printf("/* "); 1084 for (i = 0; i < 10; i++) printf(" %3d ",i); 1085 printf("*/\n"); 1086 for (i = 0; i < NBYTES; i += 10) { 1087 printf("/* %4d */ ",i); 1088 for (j = i; j < i+10; j++) { 1089 x = data_table[j] & 0377; 1090 printf(" %3d, ",x); 1091 } 1092 putchar('\n'); 1093 } 1094 printf("};\n"); 1095 } 1096 1097 /* check message to make sure it's legal */ 1098 j = 0; 1099 for (i = 0; i < nchars; i++) 1100 if ((u_char) message[i] >= NCHARS || 1101 asc_ptr[(u_char) message[i]] == 0) { 1102 warnx("the character '%c' is not in my character set", 1103 message[i]); 1104 j++; 1105 } 1106 if (j) 1107 exit(1); 1108 1109 if (trace) 1110 printf("Message '%s' is OK\n",message); 1111 /* Now have message. Print it one character at a time. */ 1112 1113 for (i = 0; i < nchars; i++) { 1114 if (trace) 1115 printf("Char #%d: %c\n", i, message[i]); 1116 for (j = 0; j < DWIDTH; j++) line[j] = ' '; 1117 pc = asc_ptr[(u_char) message[i]]; 1118 term = 0; 1119 max = 0; 1120 linen = 0; 1121 while (!term) { 1122 if (pc < 0 || pc > NBYTES) { 1123 printf("bad pc: %d\n",pc); 1124 exit(1); 1125 } 1126 x = data_table[pc] & 0377; 1127 if (trace) 1128 printf("pc=%d, term=%d, max=%d, linen=%d, x=%d\n",pc,term,max,linen,x); 1129 if (x >= 128) { 1130 if (x>192) term++; 1131 x = x & 63; 1132 while (x--) { 1133 if (print[linen++]) { 1134 for (j=0; j <= max; j++) 1135 if (print[j]) 1136 putchar(line[j]); 1137 putchar('\n'); 1138 } 1139 } 1140 for (j = 0; j < DWIDTH; j++) line[j] = ' '; 1141 pc++; 1142 } 1143 else { 1144 y = data_table[pc+1]; 1145 /* compensate for narrow teminals */ 1146#ifdef notdef 1147 x = (x*width + (DWIDTH/2)) / DWIDTH; 1148 y = (y*width + (DWIDTH/2)) / DWIDTH; 1149#endif 1150 max = x+y; 1151 while (x < max) line[x++] = '#'; 1152 pc += 2; 1153 if (trace) 1154 printf("x=%d, y=%d, max=%d\n",x,y,max); 1155 } 1156 } 1157 } 1158 1159 free(message); 1160 exit(0); 1161} 1162 1163static void 1164usage(void) 1165{ 1166 fprintf(stderr, "usage: banner [-d] [-t] [-w width] message ...\n"); 1167 exit(1); 1168} 1169