1b2441318SGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0
2c57ec52fSDavid S. Miller /*
3c57ec52fSDavid S. Miller * Procedures for drawing on the screen early on in the boot process.
4c57ec52fSDavid S. Miller *
5c57ec52fSDavid S. Miller * Benjamin Herrenschmidt <benh@kernel.crashing.org>
6c57ec52fSDavid S. Miller */
7c57ec52fSDavid S. Miller #include <linux/kernel.h>
8c57ec52fSDavid S. Miller #include <linux/string.h>
9c57ec52fSDavid S. Miller #include <linux/init.h>
10c57ec52fSDavid S. Miller #include <linux/console.h>
11c57ec52fSDavid S. Miller
12c57ec52fSDavid S. Miller #include <asm/btext.h>
13c57ec52fSDavid S. Miller #include <asm/oplib.h>
14c57ec52fSDavid S. Miller #include <asm/io.h>
15c57ec52fSDavid S. Miller
16c57ec52fSDavid S. Miller #define NO_SCROLL
17c57ec52fSDavid S. Miller
18c57ec52fSDavid S. Miller #ifndef NO_SCROLL
19c57ec52fSDavid S. Miller static void scrollscreen(void);
20c57ec52fSDavid S. Miller #endif
21c57ec52fSDavid S. Miller
22c57ec52fSDavid S. Miller static void draw_byte(unsigned char c, long locX, long locY);
23c57ec52fSDavid S. Miller static void draw_byte_32(unsigned char *bits, unsigned int *base, int rb);
24c57ec52fSDavid S. Miller static void draw_byte_16(unsigned char *bits, unsigned int *base, int rb);
25c57ec52fSDavid S. Miller static void draw_byte_8(unsigned char *bits, unsigned int *base, int rb);
26c57ec52fSDavid S. Miller
27*33def849SJoe Perches #define __force_data __section(".data")
28c57ec52fSDavid S. Miller
29c57ec52fSDavid S. Miller static int g_loc_X __force_data;
30c57ec52fSDavid S. Miller static int g_loc_Y __force_data;
31c57ec52fSDavid S. Miller static int g_max_loc_X __force_data;
32c57ec52fSDavid S. Miller static int g_max_loc_Y __force_data;
33c57ec52fSDavid S. Miller
34c57ec52fSDavid S. Miller static int dispDeviceRowBytes __force_data;
35c57ec52fSDavid S. Miller static int dispDeviceDepth __force_data;
36c57ec52fSDavid S. Miller static int dispDeviceRect[4] __force_data;
37c57ec52fSDavid S. Miller static unsigned char *dispDeviceBase __force_data;
38c57ec52fSDavid S. Miller
39c57ec52fSDavid S. Miller #define cmapsz (16*256)
40c57ec52fSDavid S. Miller
41c57ec52fSDavid S. Miller static unsigned char vga_font[cmapsz];
42c57ec52fSDavid S. Miller
btext_initialize(phandle node)438d125562SAndres Salomon static int __init btext_initialize(phandle node)
44c57ec52fSDavid S. Miller {
45c57ec52fSDavid S. Miller unsigned int width, height, depth, pitch;
46c57ec52fSDavid S. Miller unsigned long address = 0;
47c57ec52fSDavid S. Miller u32 prop;
48c57ec52fSDavid S. Miller
49c57ec52fSDavid S. Miller if (prom_getproperty(node, "width", (char *)&width, 4) < 0)
50c57ec52fSDavid S. Miller return -EINVAL;
51c57ec52fSDavid S. Miller if (prom_getproperty(node, "height", (char *)&height, 4) < 0)
52c57ec52fSDavid S. Miller return -EINVAL;
53c57ec52fSDavid S. Miller if (prom_getproperty(node, "depth", (char *)&depth, 4) < 0)
54c57ec52fSDavid S. Miller return -EINVAL;
55c57ec52fSDavid S. Miller pitch = width * ((depth + 7) / 8);
56c57ec52fSDavid S. Miller
57c57ec52fSDavid S. Miller if (prom_getproperty(node, "linebytes", (char *)&prop, 4) >= 0 &&
58c57ec52fSDavid S. Miller prop != 0xffffffffu)
59c57ec52fSDavid S. Miller pitch = prop;
60c57ec52fSDavid S. Miller
61c57ec52fSDavid S. Miller if (pitch == 1)
62c57ec52fSDavid S. Miller pitch = 0x1000;
63c57ec52fSDavid S. Miller
64c57ec52fSDavid S. Miller if (prom_getproperty(node, "address", (char *)&prop, 4) >= 0)
65c57ec52fSDavid S. Miller address = prop;
66c57ec52fSDavid S. Miller
67c57ec52fSDavid S. Miller /* FIXME: Add support for PCI reg properties. Right now, only
68c57ec52fSDavid S. Miller * reliable on macs
69c57ec52fSDavid S. Miller */
70c57ec52fSDavid S. Miller if (address == 0)
71c57ec52fSDavid S. Miller return -EINVAL;
72c57ec52fSDavid S. Miller
73c57ec52fSDavid S. Miller g_loc_X = 0;
74c57ec52fSDavid S. Miller g_loc_Y = 0;
75c57ec52fSDavid S. Miller g_max_loc_X = width / 8;
76c57ec52fSDavid S. Miller g_max_loc_Y = height / 16;
77c57ec52fSDavid S. Miller dispDeviceBase = (unsigned char *)address;
78c57ec52fSDavid S. Miller dispDeviceRowBytes = pitch;
79c57ec52fSDavid S. Miller dispDeviceDepth = depth == 15 ? 16 : depth;
80c57ec52fSDavid S. Miller dispDeviceRect[0] = dispDeviceRect[1] = 0;
81c57ec52fSDavid S. Miller dispDeviceRect[2] = width;
82c57ec52fSDavid S. Miller dispDeviceRect[3] = height;
83c57ec52fSDavid S. Miller
84c57ec52fSDavid S. Miller return 0;
85c57ec52fSDavid S. Miller }
86c57ec52fSDavid S. Miller
87c57ec52fSDavid S. Miller /* Calc the base address of a given point (x,y) */
calc_base(int x,int y)88c57ec52fSDavid S. Miller static unsigned char * calc_base(int x, int y)
89c57ec52fSDavid S. Miller {
90c57ec52fSDavid S. Miller unsigned char *base = dispDeviceBase;
91c57ec52fSDavid S. Miller
92c57ec52fSDavid S. Miller base += (x + dispDeviceRect[0]) * (dispDeviceDepth >> 3);
93c57ec52fSDavid S. Miller base += (y + dispDeviceRect[1]) * dispDeviceRowBytes;
94c57ec52fSDavid S. Miller return base;
95c57ec52fSDavid S. Miller }
96c57ec52fSDavid S. Miller
btext_clearscreen(void)97c57ec52fSDavid S. Miller static void btext_clearscreen(void)
98c57ec52fSDavid S. Miller {
99c57ec52fSDavid S. Miller unsigned int *base = (unsigned int *)calc_base(0, 0);
100c57ec52fSDavid S. Miller unsigned long width = ((dispDeviceRect[2] - dispDeviceRect[0]) *
101c57ec52fSDavid S. Miller (dispDeviceDepth >> 3)) >> 2;
102c57ec52fSDavid S. Miller int i,j;
103c57ec52fSDavid S. Miller
104c57ec52fSDavid S. Miller for (i=0; i<(dispDeviceRect[3] - dispDeviceRect[1]); i++)
105c57ec52fSDavid S. Miller {
106c57ec52fSDavid S. Miller unsigned int *ptr = base;
107c57ec52fSDavid S. Miller for(j=width; j; --j)
108c57ec52fSDavid S. Miller *(ptr++) = 0;
109c57ec52fSDavid S. Miller base += (dispDeviceRowBytes >> 2);
110c57ec52fSDavid S. Miller }
111c57ec52fSDavid S. Miller }
112c57ec52fSDavid S. Miller
113c57ec52fSDavid S. Miller #ifndef NO_SCROLL
scrollscreen(void)114c57ec52fSDavid S. Miller static void scrollscreen(void)
115c57ec52fSDavid S. Miller {
116c57ec52fSDavid S. Miller unsigned int *src = (unsigned int *)calc_base(0,16);
117c57ec52fSDavid S. Miller unsigned int *dst = (unsigned int *)calc_base(0,0);
118c57ec52fSDavid S. Miller unsigned long width = ((dispDeviceRect[2] - dispDeviceRect[0]) *
119c57ec52fSDavid S. Miller (dispDeviceDepth >> 3)) >> 2;
120c57ec52fSDavid S. Miller int i,j;
121c57ec52fSDavid S. Miller
122c57ec52fSDavid S. Miller for (i=0; i<(dispDeviceRect[3] - dispDeviceRect[1] - 16); i++)
123c57ec52fSDavid S. Miller {
124c57ec52fSDavid S. Miller unsigned int *src_ptr = src;
125c57ec52fSDavid S. Miller unsigned int *dst_ptr = dst;
126c57ec52fSDavid S. Miller for(j=width; j; --j)
127c57ec52fSDavid S. Miller *(dst_ptr++) = *(src_ptr++);
128c57ec52fSDavid S. Miller src += (dispDeviceRowBytes >> 2);
129c57ec52fSDavid S. Miller dst += (dispDeviceRowBytes >> 2);
130c57ec52fSDavid S. Miller }
131c57ec52fSDavid S. Miller for (i=0; i<16; i++)
132c57ec52fSDavid S. Miller {
133c57ec52fSDavid S. Miller unsigned int *dst_ptr = dst;
134c57ec52fSDavid S. Miller for(j=width; j; --j)
135c57ec52fSDavid S. Miller *(dst_ptr++) = 0;
136c57ec52fSDavid S. Miller dst += (dispDeviceRowBytes >> 2);
137c57ec52fSDavid S. Miller }
138c57ec52fSDavid S. Miller }
139c57ec52fSDavid S. Miller #endif /* ndef NO_SCROLL */
140c57ec52fSDavid S. Miller
btext_drawchar(char c)141f1eabec5SSam Ravnborg static void btext_drawchar(char c)
142c57ec52fSDavid S. Miller {
143c57ec52fSDavid S. Miller int cline = 0;
144c57ec52fSDavid S. Miller #ifdef NO_SCROLL
145c57ec52fSDavid S. Miller int x;
146c57ec52fSDavid S. Miller #endif
147c57ec52fSDavid S. Miller switch (c) {
148c57ec52fSDavid S. Miller case '\b':
149c57ec52fSDavid S. Miller if (g_loc_X > 0)
150c57ec52fSDavid S. Miller --g_loc_X;
151c57ec52fSDavid S. Miller break;
152c57ec52fSDavid S. Miller case '\t':
153c57ec52fSDavid S. Miller g_loc_X = (g_loc_X & -8) + 8;
154c57ec52fSDavid S. Miller break;
155c57ec52fSDavid S. Miller case '\r':
156c57ec52fSDavid S. Miller g_loc_X = 0;
157c57ec52fSDavid S. Miller break;
158c57ec52fSDavid S. Miller case '\n':
159c57ec52fSDavid S. Miller g_loc_X = 0;
160c57ec52fSDavid S. Miller g_loc_Y++;
161c57ec52fSDavid S. Miller cline = 1;
162c57ec52fSDavid S. Miller break;
163c57ec52fSDavid S. Miller default:
164c57ec52fSDavid S. Miller draw_byte(c, g_loc_X++, g_loc_Y);
165c57ec52fSDavid S. Miller }
166c57ec52fSDavid S. Miller if (g_loc_X >= g_max_loc_X) {
167c57ec52fSDavid S. Miller g_loc_X = 0;
168c57ec52fSDavid S. Miller g_loc_Y++;
169c57ec52fSDavid S. Miller cline = 1;
170c57ec52fSDavid S. Miller }
171c57ec52fSDavid S. Miller #ifndef NO_SCROLL
172c57ec52fSDavid S. Miller while (g_loc_Y >= g_max_loc_Y) {
173c57ec52fSDavid S. Miller scrollscreen();
174c57ec52fSDavid S. Miller g_loc_Y--;
175c57ec52fSDavid S. Miller }
176c57ec52fSDavid S. Miller #else
177c57ec52fSDavid S. Miller /* wrap around from bottom to top of screen so we don't
178c57ec52fSDavid S. Miller waste time scrolling each line. -- paulus. */
179c57ec52fSDavid S. Miller if (g_loc_Y >= g_max_loc_Y)
180c57ec52fSDavid S. Miller g_loc_Y = 0;
181c57ec52fSDavid S. Miller if (cline) {
182c57ec52fSDavid S. Miller for (x = 0; x < g_max_loc_X; ++x)
183c57ec52fSDavid S. Miller draw_byte(' ', x, g_loc_Y);
184c57ec52fSDavid S. Miller }
185c57ec52fSDavid S. Miller #endif
186c57ec52fSDavid S. Miller }
187c57ec52fSDavid S. Miller
btext_drawtext(const char * c,unsigned int len)188c57ec52fSDavid S. Miller static void btext_drawtext(const char *c, unsigned int len)
189c57ec52fSDavid S. Miller {
190c57ec52fSDavid S. Miller while (len--)
191c57ec52fSDavid S. Miller btext_drawchar(*c++);
192c57ec52fSDavid S. Miller }
193c57ec52fSDavid S. Miller
draw_byte(unsigned char c,long locX,long locY)194c57ec52fSDavid S. Miller static void draw_byte(unsigned char c, long locX, long locY)
195c57ec52fSDavid S. Miller {
196c57ec52fSDavid S. Miller unsigned char *base = calc_base(locX << 3, locY << 4);
197c57ec52fSDavid S. Miller unsigned char *font = &vga_font[((unsigned int)c) * 16];
198c57ec52fSDavid S. Miller int rb = dispDeviceRowBytes;
199c57ec52fSDavid S. Miller
200c57ec52fSDavid S. Miller switch(dispDeviceDepth) {
201c57ec52fSDavid S. Miller case 24:
202c57ec52fSDavid S. Miller case 32:
203c57ec52fSDavid S. Miller draw_byte_32(font, (unsigned int *)base, rb);
204c57ec52fSDavid S. Miller break;
205c57ec52fSDavid S. Miller case 15:
206c57ec52fSDavid S. Miller case 16:
207c57ec52fSDavid S. Miller draw_byte_16(font, (unsigned int *)base, rb);
208c57ec52fSDavid S. Miller break;
209c57ec52fSDavid S. Miller case 8:
210c57ec52fSDavid S. Miller draw_byte_8(font, (unsigned int *)base, rb);
211c57ec52fSDavid S. Miller break;
212c57ec52fSDavid S. Miller }
213c57ec52fSDavid S. Miller }
214c57ec52fSDavid S. Miller
215c57ec52fSDavid S. Miller static unsigned int expand_bits_8[16] = {
216c57ec52fSDavid S. Miller 0x00000000,
217c57ec52fSDavid S. Miller 0x000000ff,
218c57ec52fSDavid S. Miller 0x0000ff00,
219c57ec52fSDavid S. Miller 0x0000ffff,
220c57ec52fSDavid S. Miller 0x00ff0000,
221c57ec52fSDavid S. Miller 0x00ff00ff,
222c57ec52fSDavid S. Miller 0x00ffff00,
223c57ec52fSDavid S. Miller 0x00ffffff,
224c57ec52fSDavid S. Miller 0xff000000,
225c57ec52fSDavid S. Miller 0xff0000ff,
226c57ec52fSDavid S. Miller 0xff00ff00,
227c57ec52fSDavid S. Miller 0xff00ffff,
228c57ec52fSDavid S. Miller 0xffff0000,
229c57ec52fSDavid S. Miller 0xffff00ff,
230c57ec52fSDavid S. Miller 0xffffff00,
231c57ec52fSDavid S. Miller 0xffffffff
232c57ec52fSDavid S. Miller };
233c57ec52fSDavid S. Miller
234c57ec52fSDavid S. Miller static unsigned int expand_bits_16[4] = {
235c57ec52fSDavid S. Miller 0x00000000,
236c57ec52fSDavid S. Miller 0x0000ffff,
237c57ec52fSDavid S. Miller 0xffff0000,
238c57ec52fSDavid S. Miller 0xffffffff
239c57ec52fSDavid S. Miller };
240c57ec52fSDavid S. Miller
241c57ec52fSDavid S. Miller
draw_byte_32(unsigned char * font,unsigned int * base,int rb)242c57ec52fSDavid S. Miller static void draw_byte_32(unsigned char *font, unsigned int *base, int rb)
243c57ec52fSDavid S. Miller {
244c57ec52fSDavid S. Miller int l, bits;
245c57ec52fSDavid S. Miller int fg = 0xFFFFFFFFUL;
246c57ec52fSDavid S. Miller int bg = 0x00000000UL;
247c57ec52fSDavid S. Miller
248c57ec52fSDavid S. Miller for (l = 0; l < 16; ++l)
249c57ec52fSDavid S. Miller {
250c57ec52fSDavid S. Miller bits = *font++;
251c57ec52fSDavid S. Miller base[0] = (-(bits >> 7) & fg) ^ bg;
252c57ec52fSDavid S. Miller base[1] = (-((bits >> 6) & 1) & fg) ^ bg;
253c57ec52fSDavid S. Miller base[2] = (-((bits >> 5) & 1) & fg) ^ bg;
254c57ec52fSDavid S. Miller base[3] = (-((bits >> 4) & 1) & fg) ^ bg;
255c57ec52fSDavid S. Miller base[4] = (-((bits >> 3) & 1) & fg) ^ bg;
256c57ec52fSDavid S. Miller base[5] = (-((bits >> 2) & 1) & fg) ^ bg;
257c57ec52fSDavid S. Miller base[6] = (-((bits >> 1) & 1) & fg) ^ bg;
258c57ec52fSDavid S. Miller base[7] = (-(bits & 1) & fg) ^ bg;
259c57ec52fSDavid S. Miller base = (unsigned int *) ((char *)base + rb);
260c57ec52fSDavid S. Miller }
261c57ec52fSDavid S. Miller }
262c57ec52fSDavid S. Miller
draw_byte_16(unsigned char * font,unsigned int * base,int rb)263c57ec52fSDavid S. Miller static void draw_byte_16(unsigned char *font, unsigned int *base, int rb)
264c57ec52fSDavid S. Miller {
265c57ec52fSDavid S. Miller int l, bits;
266c57ec52fSDavid S. Miller int fg = 0xFFFFFFFFUL;
267c57ec52fSDavid S. Miller int bg = 0x00000000UL;
268c57ec52fSDavid S. Miller unsigned int *eb = (int *)expand_bits_16;
269c57ec52fSDavid S. Miller
270c57ec52fSDavid S. Miller for (l = 0; l < 16; ++l)
271c57ec52fSDavid S. Miller {
272c57ec52fSDavid S. Miller bits = *font++;
273c57ec52fSDavid S. Miller base[0] = (eb[bits >> 6] & fg) ^ bg;
274c57ec52fSDavid S. Miller base[1] = (eb[(bits >> 4) & 3] & fg) ^ bg;
275c57ec52fSDavid S. Miller base[2] = (eb[(bits >> 2) & 3] & fg) ^ bg;
276c57ec52fSDavid S. Miller base[3] = (eb[bits & 3] & fg) ^ bg;
277c57ec52fSDavid S. Miller base = (unsigned int *) ((char *)base + rb);
278c57ec52fSDavid S. Miller }
279c57ec52fSDavid S. Miller }
280c57ec52fSDavid S. Miller
draw_byte_8(unsigned char * font,unsigned int * base,int rb)281c57ec52fSDavid S. Miller static void draw_byte_8(unsigned char *font, unsigned int *base, int rb)
282c57ec52fSDavid S. Miller {
283c57ec52fSDavid S. Miller int l, bits;
284c57ec52fSDavid S. Miller int fg = 0x0F0F0F0FUL;
285c57ec52fSDavid S. Miller int bg = 0x00000000UL;
286c57ec52fSDavid S. Miller unsigned int *eb = (int *)expand_bits_8;
287c57ec52fSDavid S. Miller
288c57ec52fSDavid S. Miller for (l = 0; l < 16; ++l)
289c57ec52fSDavid S. Miller {
290c57ec52fSDavid S. Miller bits = *font++;
291c57ec52fSDavid S. Miller base[0] = (eb[bits >> 4] & fg) ^ bg;
292c57ec52fSDavid S. Miller base[1] = (eb[bits & 0xf] & fg) ^ bg;
293c57ec52fSDavid S. Miller base = (unsigned int *) ((char *)base + rb);
294c57ec52fSDavid S. Miller }
295c57ec52fSDavid S. Miller }
296c57ec52fSDavid S. Miller
btext_console_write(struct console * con,const char * s,unsigned int n)297c57ec52fSDavid S. Miller static void btext_console_write(struct console *con, const char *s,
298c57ec52fSDavid S. Miller unsigned int n)
299c57ec52fSDavid S. Miller {
300c57ec52fSDavid S. Miller btext_drawtext(s, n);
301c57ec52fSDavid S. Miller }
302c57ec52fSDavid S. Miller
303c57ec52fSDavid S. Miller static struct console btext_console = {
304c57ec52fSDavid S. Miller .name = "btext",
305c57ec52fSDavid S. Miller .write = btext_console_write,
306c57ec52fSDavid S. Miller .flags = CON_PRINTBUFFER | CON_ENABLED | CON_BOOT | CON_ANYTIME,
307c57ec52fSDavid S. Miller .index = 0,
308c57ec52fSDavid S. Miller };
309c57ec52fSDavid S. Miller
btext_find_display(void)310c57ec52fSDavid S. Miller int __init btext_find_display(void)
311c57ec52fSDavid S. Miller {
3128d125562SAndres Salomon phandle node;
313c57ec52fSDavid S. Miller char type[32];
314c57ec52fSDavid S. Miller int ret;
315c57ec52fSDavid S. Miller
316c57ec52fSDavid S. Miller node = prom_inst2pkg(prom_stdout);
317c57ec52fSDavid S. Miller if (prom_getproperty(node, "device_type", type, 32) < 0)
318c57ec52fSDavid S. Miller return -ENODEV;
319c57ec52fSDavid S. Miller if (strcmp(type, "display"))
320c57ec52fSDavid S. Miller return -ENODEV;
321c57ec52fSDavid S. Miller
322c57ec52fSDavid S. Miller ret = btext_initialize(node);
323c57ec52fSDavid S. Miller if (!ret) {
324c57ec52fSDavid S. Miller btext_clearscreen();
325c57ec52fSDavid S. Miller register_console(&btext_console);
326c57ec52fSDavid S. Miller }
327c57ec52fSDavid S. Miller return ret;
328c57ec52fSDavid S. Miller }
329c57ec52fSDavid S. Miller
330c57ec52fSDavid S. Miller static unsigned char vga_font[cmapsz] = {
331c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
332c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x81, 0xa5, 0x81, 0x81, 0xbd,
333c57ec52fSDavid S. Miller 0x99, 0x81, 0x81, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xff,
334c57ec52fSDavid S. Miller 0xdb, 0xff, 0xff, 0xc3, 0xe7, 0xff, 0xff, 0x7e, 0x00, 0x00, 0x00, 0x00,
335c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x6c, 0xfe, 0xfe, 0xfe, 0xfe, 0x7c, 0x38, 0x10,
336c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x7c, 0xfe,
337c57ec52fSDavid S. Miller 0x7c, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
338c57ec52fSDavid S. Miller 0x3c, 0x3c, 0xe7, 0xe7, 0xe7, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
339c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x18, 0x3c, 0x7e, 0xff, 0xff, 0x7e, 0x18, 0x18, 0x3c,
340c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c,
341c57ec52fSDavid S. Miller 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
342c57ec52fSDavid S. Miller 0xff, 0xff, 0xe7, 0xc3, 0xc3, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
343c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x42, 0x42, 0x66, 0x3c, 0x00,
344c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc3, 0x99, 0xbd,
345c57ec52fSDavid S. Miller 0xbd, 0x99, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x1e, 0x0e,
346c57ec52fSDavid S. Miller 0x1a, 0x32, 0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00,
347c57ec52fSDavid S. Miller 0x00, 0x00, 0x3c, 0x66, 0x66, 0x66, 0x66, 0x3c, 0x18, 0x7e, 0x18, 0x18,
348c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x33, 0x3f, 0x30, 0x30, 0x30,
349c57ec52fSDavid S. Miller 0x30, 0x70, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x63,
350c57ec52fSDavid S. Miller 0x7f, 0x63, 0x63, 0x63, 0x63, 0x67, 0xe7, 0xe6, 0xc0, 0x00, 0x00, 0x00,
351c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x18, 0x18, 0xdb, 0x3c, 0xe7, 0x3c, 0xdb, 0x18, 0x18,
352c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfe, 0xf8,
353c57ec52fSDavid S. Miller 0xf0, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x0e,
354c57ec52fSDavid S. Miller 0x1e, 0x3e, 0xfe, 0x3e, 0x1e, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00,
355c57ec52fSDavid S. Miller 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x00,
356c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66,
357c57ec52fSDavid S. Miller 0x66, 0x00, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xdb,
358c57ec52fSDavid S. Miller 0xdb, 0xdb, 0x7b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x00, 0x00, 0x00, 0x00,
359c57ec52fSDavid S. Miller 0x00, 0x7c, 0xc6, 0x60, 0x38, 0x6c, 0xc6, 0xc6, 0x6c, 0x38, 0x0c, 0xc6,
360c57ec52fSDavid S. Miller 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
361c57ec52fSDavid S. Miller 0xfe, 0xfe, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c,
362c57ec52fSDavid S. Miller 0x7e, 0x18, 0x18, 0x18, 0x7e, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00,
363c57ec52fSDavid S. Miller 0x00, 0x00, 0x18, 0x3c, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
364c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
365c57ec52fSDavid S. Miller 0x18, 0x7e, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
366c57ec52fSDavid S. Miller 0x00, 0x18, 0x0c, 0xfe, 0x0c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
367c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x60, 0xfe, 0x60, 0x30, 0x00, 0x00,
368c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0,
369c57ec52fSDavid S. Miller 0xc0, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
370c57ec52fSDavid S. Miller 0x00, 0x24, 0x66, 0xff, 0x66, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
371c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x38, 0x7c, 0x7c, 0xfe, 0xfe, 0x00,
372c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x7c, 0x7c,
373c57ec52fSDavid S. Miller 0x38, 0x38, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
374c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
375c57ec52fSDavid S. Miller 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18,
376c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x24, 0x00, 0x00, 0x00,
377c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c,
378c57ec52fSDavid S. Miller 0x6c, 0xfe, 0x6c, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00,
379c57ec52fSDavid S. Miller 0x18, 0x18, 0x7c, 0xc6, 0xc2, 0xc0, 0x7c, 0x06, 0x06, 0x86, 0xc6, 0x7c,
380c57ec52fSDavid S. Miller 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0xc6, 0x0c, 0x18,
381c57ec52fSDavid S. Miller 0x30, 0x60, 0xc6, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x6c,
382c57ec52fSDavid S. Miller 0x6c, 0x38, 0x76, 0xdc, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
383c57ec52fSDavid S. Miller 0x00, 0x30, 0x30, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
384c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30,
385c57ec52fSDavid S. Miller 0x30, 0x30, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x18,
386c57ec52fSDavid S. Miller 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00,
387c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x3c, 0xff, 0x3c, 0x66, 0x00, 0x00,
388c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e,
389c57ec52fSDavid S. Miller 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
390c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00,
391c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00,
392c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
393c57ec52fSDavid S. Miller 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
394c57ec52fSDavid S. Miller 0x02, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00,
395c57ec52fSDavid S. Miller 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xce, 0xde, 0xf6, 0xe6, 0xc6, 0xc6, 0x7c,
396c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x38, 0x78, 0x18, 0x18, 0x18,
397c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6,
398c57ec52fSDavid S. Miller 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00,
399c57ec52fSDavid S. Miller 0x00, 0x00, 0x7c, 0xc6, 0x06, 0x06, 0x3c, 0x06, 0x06, 0x06, 0xc6, 0x7c,
400c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x1c, 0x3c, 0x6c, 0xcc, 0xfe,
401c57ec52fSDavid S. Miller 0x0c, 0x0c, 0x0c, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc0,
402c57ec52fSDavid S. Miller 0xc0, 0xc0, 0xfc, 0x06, 0x06, 0x06, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
403c57ec52fSDavid S. Miller 0x00, 0x00, 0x38, 0x60, 0xc0, 0xc0, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c,
404c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc6, 0x06, 0x06, 0x0c, 0x18,
405c57ec52fSDavid S. Miller 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6,
406c57ec52fSDavid S. Miller 0xc6, 0xc6, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
407c57ec52fSDavid S. Miller 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x06, 0x06, 0x0c, 0x78,
408c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00,
409c57ec52fSDavid S. Miller 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
410c57ec52fSDavid S. Miller 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00,
411c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0c, 0x06,
412c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00,
413c57ec52fSDavid S. Miller 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
414c57ec52fSDavid S. Miller 0x30, 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00,
415c57ec52fSDavid S. Miller 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0x0c, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18,
416c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xde, 0xde,
417c57ec52fSDavid S. Miller 0xde, 0xdc, 0xc0, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38,
418c57ec52fSDavid S. Miller 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
419c57ec52fSDavid S. Miller 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x66, 0x66, 0x66, 0x66, 0xfc,
420c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0xc2, 0xc0, 0xc0, 0xc0,
421c57ec52fSDavid S. Miller 0xc0, 0xc2, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x6c,
422c57ec52fSDavid S. Miller 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6c, 0xf8, 0x00, 0x00, 0x00, 0x00,
423c57ec52fSDavid S. Miller 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xfe,
424c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x66, 0x62, 0x68, 0x78, 0x68,
425c57ec52fSDavid S. Miller 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66,
426c57ec52fSDavid S. Miller 0xc2, 0xc0, 0xc0, 0xde, 0xc6, 0xc6, 0x66, 0x3a, 0x00, 0x00, 0x00, 0x00,
427c57ec52fSDavid S. Miller 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
428c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x18,
429c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x0c,
430c57ec52fSDavid S. Miller 0x0c, 0x0c, 0x0c, 0x0c, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00, 0x00,
431c57ec52fSDavid S. Miller 0x00, 0x00, 0xe6, 0x66, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0x66, 0xe6,
432c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x60, 0x60, 0x60, 0x60, 0x60,
433c57ec52fSDavid S. Miller 0x60, 0x62, 0x66, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xe7,
434c57ec52fSDavid S. Miller 0xff, 0xff, 0xdb, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00,
435c57ec52fSDavid S. Miller 0x00, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6, 0xc6,
436c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
437c57ec52fSDavid S. Miller 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x66,
438c57ec52fSDavid S. Miller 0x66, 0x66, 0x7c, 0x60, 0x60, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00,
439c57ec52fSDavid S. Miller 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xd6, 0xde, 0x7c,
440c57ec52fSDavid S. Miller 0x0c, 0x0e, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x66, 0x66, 0x66, 0x7c, 0x6c,
441c57ec52fSDavid S. Miller 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6,
442c57ec52fSDavid S. Miller 0xc6, 0x60, 0x38, 0x0c, 0x06, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
443c57ec52fSDavid S. Miller 0x00, 0x00, 0xff, 0xdb, 0x99, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c,
444c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
445c57ec52fSDavid S. Miller 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3,
446c57ec52fSDavid S. Miller 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x66, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00,
447c57ec52fSDavid S. Miller 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xdb, 0xdb, 0xff, 0x66, 0x66,
448c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3, 0x66, 0x3c, 0x18, 0x18,
449c57ec52fSDavid S. Miller 0x3c, 0x66, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3,
450c57ec52fSDavid S. Miller 0xc3, 0x66, 0x3c, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
451c57ec52fSDavid S. Miller 0x00, 0x00, 0xff, 0xc3, 0x86, 0x0c, 0x18, 0x30, 0x60, 0xc1, 0xc3, 0xff,
452c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x30,
453c57ec52fSDavid S. Miller 0x30, 0x30, 0x30, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
454c57ec52fSDavid S. Miller 0xc0, 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00,
455c57ec52fSDavid S. Miller 0x00, 0x00, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c,
456c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00, 0x00,
457c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
458c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
459c57ec52fSDavid S. Miller 0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
460c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0c, 0x7c,
461c57ec52fSDavid S. Miller 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x60,
462c57ec52fSDavid S. Miller 0x60, 0x78, 0x6c, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x00, 0x00, 0x00, 0x00,
463c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc0, 0xc0, 0xc0, 0xc6, 0x7c,
464c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0c, 0x0c, 0x3c, 0x6c, 0xcc,
465c57ec52fSDavid S. Miller 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
466c57ec52fSDavid S. Miller 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
467c57ec52fSDavid S. Miller 0x00, 0x00, 0x38, 0x6c, 0x64, 0x60, 0xf0, 0x60, 0x60, 0x60, 0x60, 0xf0,
468c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xcc, 0xcc,
469c57ec52fSDavid S. Miller 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0xcc, 0x78, 0x00, 0x00, 0x00, 0xe0, 0x60,
470c57ec52fSDavid S. Miller 0x60, 0x6c, 0x76, 0x66, 0x66, 0x66, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00,
471c57ec52fSDavid S. Miller 0x00, 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c,
472c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x00, 0x0e, 0x06, 0x06,
473c57ec52fSDavid S. Miller 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0xe0, 0x60,
474c57ec52fSDavid S. Miller 0x60, 0x66, 0x6c, 0x78, 0x78, 0x6c, 0x66, 0xe6, 0x00, 0x00, 0x00, 0x00,
475c57ec52fSDavid S. Miller 0x00, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c,
476c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe6, 0xff, 0xdb,
477c57ec52fSDavid S. Miller 0xdb, 0xdb, 0xdb, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
478c57ec52fSDavid S. Miller 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00,
479c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c,
480c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x66, 0x66,
481c57ec52fSDavid S. Miller 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
482c57ec52fSDavid S. Miller 0x00, 0x76, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0c, 0x1e, 0x00,
483c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x76, 0x66, 0x60, 0x60, 0x60, 0xf0,
484c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xc6, 0x60,
485c57ec52fSDavid S. Miller 0x38, 0x0c, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30,
486c57ec52fSDavid S. Miller 0x30, 0xfc, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1c, 0x00, 0x00, 0x00, 0x00,
487c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76,
488c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3, 0xc3,
489c57ec52fSDavid S. Miller 0xc3, 0x66, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
490c57ec52fSDavid S. Miller 0x00, 0xc3, 0xc3, 0xc3, 0xdb, 0xdb, 0xff, 0x66, 0x00, 0x00, 0x00, 0x00,
491c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x66, 0x3c, 0x18, 0x3c, 0x66, 0xc3,
492c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0xc6, 0xc6,
493c57ec52fSDavid S. Miller 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00,
494c57ec52fSDavid S. Miller 0x00, 0xfe, 0xcc, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00,
495c57ec52fSDavid S. Miller 0x00, 0x00, 0x0e, 0x18, 0x18, 0x18, 0x70, 0x18, 0x18, 0x18, 0x18, 0x0e,
496c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x00, 0x18,
497c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x18,
498c57ec52fSDavid S. Miller 0x18, 0x18, 0x0e, 0x18, 0x18, 0x18, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00,
499c57ec52fSDavid S. Miller 0x00, 0x00, 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
500c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0xc6,
501c57ec52fSDavid S. Miller 0xc6, 0xc6, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66,
502c57ec52fSDavid S. Miller 0xc2, 0xc0, 0xc0, 0xc0, 0xc2, 0x66, 0x3c, 0x0c, 0x06, 0x7c, 0x00, 0x00,
503c57ec52fSDavid S. Miller 0x00, 0x00, 0xcc, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76,
504c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x00, 0x7c, 0xc6, 0xfe,
505c57ec52fSDavid S. Miller 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c,
506c57ec52fSDavid S. Miller 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
507c57ec52fSDavid S. Miller 0x00, 0x00, 0xcc, 0x00, 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76,
508c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x00, 0x78, 0x0c, 0x7c,
509c57ec52fSDavid S. Miller 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x6c, 0x38,
510c57ec52fSDavid S. Miller 0x00, 0x78, 0x0c, 0x7c, 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00,
511c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x3c, 0x66, 0x60, 0x60, 0x66, 0x3c, 0x0c, 0x06,
512c57ec52fSDavid S. Miller 0x3c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xfe,
513c57ec52fSDavid S. Miller 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00,
514c57ec52fSDavid S. Miller 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
515c57ec52fSDavid S. Miller 0x00, 0x60, 0x30, 0x18, 0x00, 0x7c, 0xc6, 0xfe, 0xc0, 0xc0, 0xc6, 0x7c,
516c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x38, 0x18, 0x18,
517c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x66,
518c57ec52fSDavid S. Miller 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
519c57ec52fSDavid S. Miller 0x00, 0x60, 0x30, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c,
520c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x10, 0x38, 0x6c, 0xc6, 0xc6,
521c57ec52fSDavid S. Miller 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x38, 0x6c, 0x38, 0x00,
522c57ec52fSDavid S. Miller 0x38, 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
523c57ec52fSDavid S. Miller 0x18, 0x30, 0x60, 0x00, 0xfe, 0x66, 0x60, 0x7c, 0x60, 0x60, 0x66, 0xfe,
524c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6e, 0x3b, 0x1b,
525c57ec52fSDavid S. Miller 0x7e, 0xd8, 0xdc, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x6c,
526c57ec52fSDavid S. Miller 0xcc, 0xcc, 0xfe, 0xcc, 0xcc, 0xcc, 0xcc, 0xce, 0x00, 0x00, 0x00, 0x00,
527c57ec52fSDavid S. Miller 0x00, 0x10, 0x38, 0x6c, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c,
528c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0x00, 0x7c, 0xc6, 0xc6,
529c57ec52fSDavid S. Miller 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x30, 0x18,
530c57ec52fSDavid S. Miller 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00,
531c57ec52fSDavid S. Miller 0x00, 0x30, 0x78, 0xcc, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x76,
532c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x30, 0x18, 0x00, 0xcc, 0xcc, 0xcc,
533c57ec52fSDavid S. Miller 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00,
534c57ec52fSDavid S. Miller 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0x78, 0x00,
535c57ec52fSDavid S. Miller 0x00, 0xc6, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c,
536c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
537c57ec52fSDavid S. Miller 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e,
538c57ec52fSDavid S. Miller 0xc3, 0xc0, 0xc0, 0xc0, 0xc3, 0x7e, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00,
539c57ec52fSDavid S. Miller 0x00, 0x38, 0x6c, 0x64, 0x60, 0xf0, 0x60, 0x60, 0x60, 0x60, 0xe6, 0xfc,
540c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x66, 0x3c, 0x18, 0xff, 0x18,
541c57ec52fSDavid S. Miller 0xff, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x66, 0x66,
542c57ec52fSDavid S. Miller 0x7c, 0x62, 0x66, 0x6f, 0x66, 0x66, 0x66, 0xf3, 0x00, 0x00, 0x00, 0x00,
543c57ec52fSDavid S. Miller 0x00, 0x0e, 0x1b, 0x18, 0x18, 0x18, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18,
544c57ec52fSDavid S. Miller 0xd8, 0x70, 0x00, 0x00, 0x00, 0x18, 0x30, 0x60, 0x00, 0x78, 0x0c, 0x7c,
545c57ec52fSDavid S. Miller 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30,
546c57ec52fSDavid S. Miller 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, 0x00, 0x00, 0x00,
547c57ec52fSDavid S. Miller 0x00, 0x18, 0x30, 0x60, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c,
548c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x30, 0x60, 0x00, 0xcc, 0xcc, 0xcc,
549c57ec52fSDavid S. Miller 0xcc, 0xcc, 0xcc, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc,
550c57ec52fSDavid S. Miller 0x00, 0xdc, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00,
551c57ec52fSDavid S. Miller 0x76, 0xdc, 0x00, 0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0xc6, 0xc6,
552c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x6c, 0x6c, 0x3e, 0x00, 0x7e, 0x00,
553c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x6c, 0x6c,
554c57ec52fSDavid S. Miller 0x38, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
555c57ec52fSDavid S. Miller 0x00, 0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x60, 0xc0, 0xc6, 0xc6, 0x7c,
556c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc0,
557c57ec52fSDavid S. Miller 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
558c57ec52fSDavid S. Miller 0x00, 0x00, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
559c57ec52fSDavid S. Miller 0x00, 0xc0, 0xc0, 0xc2, 0xc6, 0xcc, 0x18, 0x30, 0x60, 0xce, 0x9b, 0x06,
560c57ec52fSDavid S. Miller 0x0c, 0x1f, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc2, 0xc6, 0xcc, 0x18, 0x30,
561c57ec52fSDavid S. Miller 0x66, 0xce, 0x96, 0x3e, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18,
562c57ec52fSDavid S. Miller 0x00, 0x18, 0x18, 0x18, 0x3c, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x00,
563c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x6c, 0xd8, 0x6c, 0x36, 0x00, 0x00,
564c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x6c, 0x36,
565c57ec52fSDavid S. Miller 0x6c, 0xd8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x44, 0x11, 0x44,
566c57ec52fSDavid S. Miller 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44, 0x11, 0x44,
567c57ec52fSDavid S. Miller 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa,
568c57ec52fSDavid S. Miller 0x55, 0xaa, 0x55, 0xaa, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77,
569c57ec52fSDavid S. Miller 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0xdd, 0x77, 0x18, 0x18, 0x18, 0x18,
570c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
571c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0x18, 0x18, 0x18,
572c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8,
573c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x36, 0x36, 0x36, 0x36,
574c57ec52fSDavid S. Miller 0x36, 0x36, 0x36, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
575c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x36, 0x36, 0x36, 0x36,
576c57ec52fSDavid S. Miller 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x18, 0xf8,
577c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x36, 0x36, 0x36, 0x36,
578c57ec52fSDavid S. Miller 0x36, 0xf6, 0x06, 0xf6, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
579c57ec52fSDavid S. Miller 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
580c57ec52fSDavid S. Miller 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06, 0xf6,
581c57ec52fSDavid S. Miller 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
582c57ec52fSDavid S. Miller 0x36, 0xf6, 0x06, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
583c57ec52fSDavid S. Miller 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xfe, 0x00, 0x00, 0x00, 0x00,
584c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8, 0x18, 0xf8,
585c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
586c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0xf8, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
587c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00,
588c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff,
589c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
590c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
591c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18,
592c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
593c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18,
594c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
595c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x18, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18,
596c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x37,
597c57ec52fSDavid S. Miller 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
598c57ec52fSDavid S. Miller 0x36, 0x37, 0x30, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
599c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36,
600c57ec52fSDavid S. Miller 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xf7, 0x00, 0xff,
601c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
602c57ec52fSDavid S. Miller 0x00, 0xff, 0x00, 0xf7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
603c57ec52fSDavid S. Miller 0x36, 0x36, 0x36, 0x36, 0x36, 0x37, 0x30, 0x37, 0x36, 0x36, 0x36, 0x36,
604c57ec52fSDavid S. Miller 0x36, 0x36, 0x36, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff,
605c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x36, 0x36, 0x36,
606c57ec52fSDavid S. Miller 0x36, 0xf7, 0x00, 0xf7, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
607c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00,
608c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0xff,
609c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
610c57ec52fSDavid S. Miller 0x00, 0xff, 0x00, 0xff, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
611c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x36, 0x36, 0x36, 0x36,
612c57ec52fSDavid S. Miller 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x3f,
613c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18,
614c57ec52fSDavid S. Miller 0x18, 0x1f, 0x18, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
615c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x18, 0x1f, 0x18, 0x18, 0x18, 0x18,
616c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f,
617c57ec52fSDavid S. Miller 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
618c57ec52fSDavid S. Miller 0x36, 0x36, 0x36, 0xff, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
619c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x18, 0xff, 0x18, 0xff, 0x18, 0x18, 0x18, 0x18,
620c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xf8,
621c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
622c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x1f, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
623c57ec52fSDavid S. Miller 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
624c57ec52fSDavid S. Miller 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
625c57ec52fSDavid S. Miller 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0,
626c57ec52fSDavid S. Miller 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
627c57ec52fSDavid S. Miller 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f,
628c57ec52fSDavid S. Miller 0x0f, 0x0f, 0x0f, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00,
629c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
630c57ec52fSDavid S. Miller 0x00, 0x76, 0xdc, 0xd8, 0xd8, 0xd8, 0xdc, 0x76, 0x00, 0x00, 0x00, 0x00,
631c57ec52fSDavid S. Miller 0x00, 0x00, 0x78, 0xcc, 0xcc, 0xcc, 0xd8, 0xcc, 0xc6, 0xc6, 0xc6, 0xcc,
632c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xc6, 0xc6, 0xc0, 0xc0, 0xc0,
633c57ec52fSDavid S. Miller 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
634c57ec52fSDavid S. Miller 0xfe, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00,
635c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0xfe, 0xc6, 0x60, 0x30, 0x18, 0x30, 0x60, 0xc6, 0xfe,
636c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0xd8, 0xd8,
637c57ec52fSDavid S. Miller 0xd8, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
638c57ec52fSDavid S. Miller 0x66, 0x66, 0x66, 0x66, 0x66, 0x7c, 0x60, 0x60, 0xc0, 0x00, 0x00, 0x00,
639c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
640c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x18, 0x3c, 0x66, 0x66,
641c57ec52fSDavid S. Miller 0x66, 0x3c, 0x18, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38,
642c57ec52fSDavid S. Miller 0x6c, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x6c, 0x38, 0x00, 0x00, 0x00, 0x00,
643c57ec52fSDavid S. Miller 0x00, 0x00, 0x38, 0x6c, 0xc6, 0xc6, 0xc6, 0x6c, 0x6c, 0x6c, 0x6c, 0xee,
644c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x30, 0x18, 0x0c, 0x3e, 0x66,
645c57ec52fSDavid S. Miller 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
646c57ec52fSDavid S. Miller 0x00, 0x7e, 0xdb, 0xdb, 0xdb, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
647c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x03, 0x06, 0x7e, 0xdb, 0xdb, 0xf3, 0x7e, 0x60, 0xc0,
648c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x30, 0x60, 0x60, 0x7c, 0x60,
649c57ec52fSDavid S. Miller 0x60, 0x60, 0x30, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c,
650c57ec52fSDavid S. Miller 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00,
651c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, 0x00, 0x00, 0xfe, 0x00,
652c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x7e, 0x18,
653c57ec52fSDavid S. Miller 0x18, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30,
654c57ec52fSDavid S. Miller 0x18, 0x0c, 0x06, 0x0c, 0x18, 0x30, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00,
655c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x0c, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0c, 0x00, 0x7e,
656c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x1b, 0x1b, 0x1b, 0x18, 0x18,
657c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
658c57ec52fSDavid S. Miller 0x18, 0x18, 0x18, 0x18, 0xd8, 0xd8, 0xd8, 0x70, 0x00, 0x00, 0x00, 0x00,
659c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x7e, 0x00, 0x18, 0x18, 0x00,
660c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x00,
661c57ec52fSDavid S. Miller 0x76, 0xdc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x6c, 0x6c,
662c57ec52fSDavid S. Miller 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
663c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00,
664c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
665c57ec52fSDavid S. Miller 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0c, 0x0c,
666c57ec52fSDavid S. Miller 0x0c, 0x0c, 0x0c, 0xec, 0x6c, 0x6c, 0x3c, 0x1c, 0x00, 0x00, 0x00, 0x00,
667c57ec52fSDavid S. Miller 0x00, 0xd8, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00,
668c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xd8, 0x30, 0x60, 0xc8, 0xf8, 0x00,
669c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
670c57ec52fSDavid S. Miller 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00,
671c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
672c57ec52fSDavid S. Miller 0x00, 0x00, 0x00, 0x00,
673c57ec52fSDavid S. Miller };
674