1 /*
2  * Topro TP6800/6810 webcam driver.
3  *
4  * Copyright (C) 2011 Jean-François Moine (http://moinejf.free.fr)
5  * Copyright (C) 2009 Anders Blomdell (anders.blomdell@control.lth.se)
6  * Copyright (C) 2008 Thomas Champagne (lafeuil@gmail.com)
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; If not, see <http://www.gnu.org/licenses/>.
20  */
21 
22 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
23 
24 #include "gspca.h"
25 
26 MODULE_DESCRIPTION("Topro TP6800/6810 gspca webcam driver");
27 MODULE_AUTHOR("Jean-Francois Moine <http://moinejf.free.fr>, "
28 		"Anders Blomdell <anders.blomdell@control.lth.se>");
29 MODULE_LICENSE("GPL");
30 
31 static int force_sensor = -1;
32 
33 /* JPEG header */
34 static const u8 jpeg_head[] = {
35 	0xff, 0xd8,			/* jpeg */
36 
37 /* quantization table quality 50% */
38 	0xff, 0xdb, 0x00, 0x84,		/* DQT */
39 0,
40 #define JPEG_QT0_OFFSET 7
41 	0x10, 0x0b, 0x0c, 0x0e, 0x0c, 0x0a, 0x10, 0x0e,
42 	0x0d, 0x0e, 0x12, 0x11, 0x10, 0x13, 0x18, 0x28,
43 	0x1a, 0x18, 0x16, 0x16, 0x18, 0x31, 0x23, 0x25,
44 	0x1d, 0x28, 0x3a, 0x33, 0x3d, 0x3c, 0x39, 0x33,
45 	0x38, 0x37, 0x40, 0x48, 0x5c, 0x4e, 0x40, 0x44,
46 	0x57, 0x45, 0x37, 0x38, 0x50, 0x6d, 0x51, 0x57,
47 	0x5f, 0x62, 0x67, 0x68, 0x67, 0x3e, 0x4d, 0x71,
48 	0x79, 0x70, 0x64, 0x78, 0x5c, 0x65, 0x67, 0x63,
49 1,
50 #define JPEG_QT1_OFFSET 72
51 	0x11, 0x12, 0x12, 0x18, 0x15, 0x18, 0x2f, 0x1a,
52 	0x1a, 0x2f, 0x63, 0x42, 0x38, 0x42, 0x63, 0x63,
53 	0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
54 	0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
55 	0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
56 	0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
57 	0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
58 	0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
59 
60 	/* Define Huffman table (thanks to Thomas Kaiser) */
61 	0xff, 0xc4, 0x01, 0x5e,
62 	0x00, 0x00, 0x02, 0x03,
63 	0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
64 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02,
65 	0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10,
66 	0x00, 0x02, 0x01, 0x02, 0x04, 0x04, 0x03, 0x04,
67 	0x07, 0x05, 0x04, 0x06, 0x01, 0x00, 0x00, 0x57,
68 	0x01, 0x02, 0x03, 0x00, 0x11, 0x04, 0x12, 0x21,
69 	0x31, 0x13, 0x41, 0x51, 0x61, 0x05, 0x22, 0x32,
70 	0x14, 0x71, 0x81, 0x91, 0x15, 0x23, 0x42, 0x52,
71 	0x62, 0xa1, 0xb1, 0x06, 0x33, 0x72, 0xc1, 0xd1,
72 	0x24, 0x43, 0x53, 0x82, 0x16, 0x34, 0x92, 0xa2,
73 	0xe1, 0xf1, 0xf0, 0x07, 0x08, 0x17, 0x18, 0x25,
74 	0x26, 0x27, 0x28, 0x35, 0x36, 0x37, 0x38, 0x44,
75 	0x45, 0x46, 0x47, 0x48, 0x54, 0x55, 0x56, 0x57,
76 	0x58, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x73,
77 	0x74, 0x75, 0x76, 0x77, 0x78, 0x83, 0x84, 0x85,
78 	0x86, 0x87, 0x88, 0x93, 0x94, 0x95, 0x96, 0x97,
79 	0x98, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xb2,
80 	0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xc2, 0xc3,
81 	0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xd2, 0xd3, 0xd4,
82 	0xd5, 0xd6, 0xd7, 0xd8, 0xe2, 0xe3, 0xe4, 0xe5,
83 	0xe6, 0xe7, 0xe8, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6,
84 	0xf7, 0xf8, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
85 	0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
86 	0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04,
87 	0x05, 0x06, 0x07, 0x08, 0x09, 0x11, 0x00, 0x02,
88 	0x01, 0x02, 0x04, 0x04, 0x03, 0x04, 0x07, 0x05,
89 	0x04, 0x06, 0x01, 0x00, 0x00, 0x57, 0x00, 0x01,
90 	0x11, 0x02, 0x21, 0x03, 0x12, 0x31, 0x41, 0x13,
91 	0x22, 0x51, 0x61, 0x04, 0x32, 0x71, 0x05, 0x14,
92 	0x23, 0x42, 0x33, 0x52, 0x81, 0x91, 0xa1, 0xb1,
93 	0xf0, 0x06, 0x15, 0xc1, 0xd1, 0xe1, 0x24, 0x43,
94 	0x62, 0xf1, 0x16, 0x25, 0x34, 0x53, 0x72, 0x82,
95 	0x92, 0x07, 0x08, 0x17, 0x18, 0x26, 0x27, 0x28,
96 	0x35, 0x36, 0x37, 0x38, 0x44, 0x45, 0x46, 0x47,
97 	0x48, 0x54, 0x55, 0x56, 0x57, 0x58, 0x63, 0x64,
98 	0x65, 0x66, 0x67, 0x68, 0x73, 0x74, 0x75, 0x76,
99 	0x77, 0x78, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88,
100 	0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0xa2, 0xa3,
101 	0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xb2, 0xb3, 0xb4,
102 	0xb5, 0xb6, 0xb7, 0xb8, 0xc2, 0xc3, 0xc4, 0xc5,
103 	0xc6, 0xc7, 0xc8, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
104 	0xd7, 0xd8, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
105 	0xe8, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
106 	0xff, 0xc0, 0x00, 0x11,		/* SOF0 (start of frame 0 */
107 	0x08,				/* data precision */
108 #define JPEG_HEIGHT_OFFSET 493
109 	0x01, 0xe0,			/* height */
110 	0x02, 0x80,			/* width */
111 	0x03,				/* component number */
112 		0x01,
113 			0x21,		/* samples Y = jpeg 422 */
114 			0x00,		/* quant Y */
115 		0x02, 0x11, 0x01,	/* samples CbCr - quant CbCr */
116 		0x03, 0x11, 0x01,
117 
118 	0xff, 0xda, 0x00, 0x0c,		/* SOS (start of scan) */
119 	0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3f, 0x00
120 #define JPEG_HDR_SZ 521
121 };
122 
123 enum e_ctrl {
124 	EXPOSURE,
125 	QUALITY,
126 	SHARPNESS,
127 	RGAIN,
128 	GAIN,
129 	BGAIN,
130 	GAMMA,
131 	AUTOGAIN,
132 	NCTRLS		/* number of controls */
133 };
134 
135 #define AUTOGAIN_DEF 1
136 
137 struct sd {
138 	struct gspca_dev gspca_dev;	/* !! must be the first item */
139 
140 	struct gspca_ctrl ctrls[NCTRLS];
141 
142 	u8 framerate;
143 	u8 quality;		/* webcam current JPEG quality (0..16) */
144 	s8 ag_cnt;		/* autogain / start counter for tp6810 */
145 #define AG_CNT_START 13		/* check gain every N frames */
146 
147 	u8 bridge;
148 	u8 sensor;
149 
150 	u8 jpeg_hdr[JPEG_HDR_SZ];
151 };
152 
153 enum bridges {
154 	BRIDGE_TP6800,
155 	BRIDGE_TP6810,
156 };
157 
158 enum sensors {
159 	SENSOR_CX0342,
160 	SENSOR_SOI763A,		/* ~= ov7630 / ov7648 */
161 	NSENSORS
162 };
163 
164 static const struct v4l2_pix_format vga_mode[] = {
165 	{320, 240, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
166 		.bytesperline = 320,
167 		.sizeimage = 320 * 240 * 4 / 8 + 590,
168 		.colorspace = V4L2_COLORSPACE_JPEG},
169 	{640, 480, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
170 		.bytesperline = 640,
171 		.sizeimage = 640 * 480 * 3 / 8 + 590,
172 		.colorspace = V4L2_COLORSPACE_JPEG}
173 };
174 
175 /*
176  * JPEG quality
177  * index: webcam compression
178  * value: JPEG quality in %
179  */
180 static const u8 jpeg_q[17] = {
181 	88, 77, 67, 57, 55, 55, 45, 45, 36, 36, 30, 30, 26, 26, 22, 22, 94
182 };
183 
184 #define BULK_OUT_SIZE		0x20
185 #if BULK_OUT_SIZE > USB_BUF_SZ
186 #error "USB buffer too small"
187 #endif
188 
189 static const u8 rates[] = {30, 20, 15, 10, 7, 5};
190 static const struct framerates framerates[] = {
191 	{
192 		.rates = rates,
193 		.nrates = ARRAY_SIZE(rates)
194 	},
195 	{
196 		.rates = rates,
197 		.nrates = ARRAY_SIZE(rates)
198 	}
199 };
200 static const u8 rates_6810[] = {30, 15, 10, 7, 5};
201 static const struct framerates framerates_6810[] = {
202 	{
203 		.rates = rates_6810,
204 		.nrates = ARRAY_SIZE(rates_6810)
205 	},
206 	{
207 		.rates = rates_6810,
208 		.nrates = ARRAY_SIZE(rates_6810)
209 	}
210 };
211 
212 /*
213  * webcam quality in %
214  * the last value is the ultra fine quality
215  */
216 
217 /* TP6800 register offsets */
218 #define TP6800_R10_SIF_TYPE		0x10
219 #define TP6800_R11_SIF_CONTROL		0x11
220 #define TP6800_R12_SIF_ADDR_S		0x12
221 #define TP6800_R13_SIF_TX_DATA		0x13
222 #define TP6800_R14_SIF_RX_DATA		0x14
223 #define TP6800_R15_GPIO_PU		0x15
224 #define TP6800_R16_GPIO_PD		0x16
225 #define TP6800_R17_GPIO_IO		0x17
226 #define TP6800_R18_GPIO_DATA		0x18
227 #define TP6800_R19_SIF_ADDR_S2		0x19
228 #define TP6800_R1A_SIF_TX_DATA2		0x1a
229 #define TP6800_R1B_SIF_RX_DATA2		0x1b
230 #define TP6800_R21_ENDP_1_CTL		0x21
231 #define TP6800_R2F_TIMING_CFG		0x2f
232 #define TP6800_R30_SENSOR_CFG		0x30
233 #define TP6800_R31_PIXEL_START		0x31
234 #define TP6800_R32_PIXEL_END_L		0x32
235 #define TP6800_R33_PIXEL_END_H		0x33
236 #define TP6800_R34_LINE_START		0x34
237 #define TP6800_R35_LINE_END_L		0x35
238 #define TP6800_R36_LINE_END_H		0x36
239 #define TP6800_R37_FRONT_DARK_ST	0x37
240 #define TP6800_R38_FRONT_DARK_END	0x38
241 #define TP6800_R39_REAR_DARK_ST_L	0x39
242 #define TP6800_R3A_REAR_DARK_ST_H	0x3a
243 #define TP6800_R3B_REAR_DARK_END_L	0x3b
244 #define TP6800_R3C_REAR_DARK_END_H	0x3c
245 #define TP6800_R3D_HORIZ_DARK_LINE_L	0x3d
246 #define TP6800_R3E_HORIZ_DARK_LINE_H	0x3e
247 #define TP6800_R3F_FRAME_RATE		0x3f
248 #define TP6800_R50			0x50
249 #define TP6800_R51			0x51
250 #define TP6800_R52			0x52
251 #define TP6800_R53			0x53
252 #define TP6800_R54_DARK_CFG		0x54
253 #define TP6800_R55_GAMMA_R		0x55
254 #define TP6800_R56_GAMMA_G		0x56
255 #define TP6800_R57_GAMMA_B		0x57
256 #define TP6800_R5C_EDGE_THRLD		0x5c
257 #define TP6800_R5D_DEMOSAIC_CFG		0x5d
258 #define TP6800_R78_FORMAT		0x78
259 #define TP6800_R79_QUALITY		0x79
260 #define TP6800_R7A_BLK_THRLD		0x7a
261 
262 /* CX0342 register offsets */
263 
264 #define CX0342_SENSOR_ID		0x00
265 #define CX0342_VERSION_NO		0x01
266 #define CX0342_ORG_X_L			0x02
267 #define CX0342_ORG_X_H			0x03
268 #define CX0342_ORG_Y_L			0x04
269 #define CX0342_ORG_Y_H			0x05
270 #define CX0342_STOP_X_L			0x06
271 #define CX0342_STOP_X_H			0x07
272 #define CX0342_STOP_Y_L			0x08
273 #define CX0342_STOP_Y_H			0x09
274 #define CX0342_FRAME_WIDTH_L		0x0a
275 #define CX0342_FRAME_WIDTH_H		0x0b
276 #define CX0342_FRAME_HEIGH_L		0x0c
277 #define CX0342_FRAME_HEIGH_H		0x0d
278 #define CX0342_EXPO_LINE_L		0x10
279 #define CX0342_EXPO_LINE_H		0x11
280 #define CX0342_EXPO_CLK_L		0x12
281 #define CX0342_EXPO_CLK_H		0x13
282 #define CX0342_RAW_GRGAIN_L		0x14
283 #define CX0342_RAW_GRGAIN_H		0x15
284 #define CX0342_RAW_GBGAIN_L		0x16
285 #define CX0342_RAW_GBGAIN_H		0x17
286 #define CX0342_RAW_RGAIN_L		0x18
287 #define CX0342_RAW_RGAIN_H		0x19
288 #define CX0342_RAW_BGAIN_L		0x1a
289 #define CX0342_RAW_BGAIN_H		0x1b
290 #define CX0342_GLOBAL_GAIN		0x1c
291 #define CX0342_SYS_CTRL_0		0x20
292 #define CX0342_SYS_CTRL_1		0x21
293 #define CX0342_SYS_CTRL_2		0x22
294 #define CX0342_BYPASS_MODE		0x23
295 #define CX0342_SYS_CTRL_3		0x24
296 #define CX0342_TIMING_EN		0x25
297 #define CX0342_OUTPUT_CTRL		0x26
298 #define CX0342_AUTO_ADC_CALIB		0x27
299 #define CX0342_SYS_CTRL_4		0x28
300 #define CX0342_ADCGN			0x30
301 #define CX0342_SLPCR			0x31
302 #define CX0342_SLPFN_LO			0x32
303 #define CX0342_ADC_CTL			0x33
304 #define CX0342_LVRST_BLBIAS		0x34
305 #define CX0342_VTHSEL			0x35
306 #define CX0342_RAMP_RIV			0x36
307 #define CX0342_LDOSEL			0x37
308 #define CX0342_CLOCK_GEN		0x40
309 #define CX0342_SOFT_RESET		0x41
310 #define CX0342_PLL			0x42
311 #define CX0342_DR_ENH_PULSE_OFFSET_L	0x43
312 #define CX0342_DR_ENH_PULSE_OFFSET_H	0x44
313 #define CX0342_DR_ENH_PULSE_POS_L	0x45
314 #define CX0342_DR_ENH_PULSE_POS_H	0x46
315 #define CX0342_DR_ENH_PULSE_WIDTH	0x47
316 #define CX0342_AS_CURRENT_CNT_L		0x48
317 #define CX0342_AS_CURRENT_CNT_H		0x49
318 #define CX0342_AS_PREVIOUS_CNT_L	0x4a
319 #define CX0342_AS_PREVIOUS_CNT_H	0x4b
320 #define CX0342_SPV_VALUE_L		0x4c
321 #define CX0342_SPV_VALUE_H		0x4d
322 #define CX0342_GPXLTHD_L		0x50
323 #define CX0342_GPXLTHD_H		0x51
324 #define CX0342_RBPXLTHD_L		0x52
325 #define CX0342_RBPXLTHD_H		0x53
326 #define CX0342_PLANETHD_L		0x54
327 #define CX0342_PLANETHD_H		0x55
328 #define CX0342_ROWDARK_TH		0x56
329 #define CX0342_ROWDARK_TOL		0x57
330 #define CX0342_RB_GAP_L			0x58
331 #define CX0342_RB_GAP_H			0x59
332 #define CX0342_G_GAP_L			0x5a
333 #define CX0342_G_GAP_H			0x5b
334 #define CX0342_AUTO_ROW_DARK		0x60
335 #define CX0342_MANUAL_DARK_VALUE	0x61
336 #define CX0342_GB_DARK_OFFSET		0x62
337 #define CX0342_GR_DARK_OFFSET		0x63
338 #define CX0342_RED_DARK_OFFSET		0x64
339 #define CX0342_BLUE_DARK_OFFSET		0x65
340 #define CX0342_DATA_SCALING_MULTI	0x66
341 #define CX0342_AUTOD_Q_FRAME		0x67
342 #define CX0342_AUTOD_ALLOW_VARI		0x68
343 #define CX0342_AUTO_DARK_VALUE_L	0x69
344 #define CX0342_AUTO_DARK_VALUE_H	0x6a
345 #define CX0342_IO_CTRL_0		0x70
346 #define CX0342_IO_CTRL_1		0x71
347 #define CX0342_IO_CTRL_2		0x72
348 #define CX0342_IDLE_CTRL		0x73
349 #define CX0342_TEST_MODE		0x74
350 #define CX0342_FRAME_FIX_DATA_TEST	0x75
351 #define CX0342_FRAME_CNT_TEST		0x76
352 #define CX0342_RST_OVERFLOW_L		0x80
353 #define CX0342_RST_OVERFLOW_H		0x81
354 #define CX0342_RST_UNDERFLOW_L		0x82
355 #define CX0342_RST_UNDERFLOW_H		0x83
356 #define CX0342_DATA_OVERFLOW_L		0x84
357 #define CX0342_DATA_OVERFLOW_H		0x85
358 #define CX0342_DATA_UNDERFLOW_L		0x86
359 #define CX0342_DATA_UNDERFLOW_H		0x87
360 #define CX0342_CHANNEL_0_0_L_irst	0x90
361 #define CX0342_CHANNEL_0_0_H_irst	0x91
362 #define CX0342_CHANNEL_0_1_L_irst	0x92
363 #define CX0342_CHANNEL_0_1_H_irst	0x93
364 #define CX0342_CHANNEL_0_2_L_irst	0x94
365 #define CX0342_CHANNEL_0_2_H_irst	0x95
366 #define CX0342_CHANNEL_0_3_L_irst	0x96
367 #define CX0342_CHANNEL_0_3_H_irst	0x97
368 #define CX0342_CHANNEL_0_4_L_irst	0x98
369 #define CX0342_CHANNEL_0_4_H_irst	0x99
370 #define CX0342_CHANNEL_0_5_L_irst	0x9a
371 #define CX0342_CHANNEL_0_5_H_irst	0x9b
372 #define CX0342_CHANNEL_0_6_L_irst	0x9c
373 #define CX0342_CHANNEL_0_6_H_irst	0x9d
374 #define CX0342_CHANNEL_0_7_L_irst	0x9e
375 #define CX0342_CHANNEL_0_7_H_irst	0x9f
376 #define CX0342_CHANNEL_1_0_L_itx	0xa0
377 #define CX0342_CHANNEL_1_0_H_itx	0xa1
378 #define CX0342_CHANNEL_1_1_L_itx	0xa2
379 #define CX0342_CHANNEL_1_1_H_itx	0xa3
380 #define CX0342_CHANNEL_1_2_L_itx	0xa4
381 #define CX0342_CHANNEL_1_2_H_itx	0xa5
382 #define CX0342_CHANNEL_1_3_L_itx	0xa6
383 #define CX0342_CHANNEL_1_3_H_itx	0xa7
384 #define CX0342_CHANNEL_1_4_L_itx	0xa8
385 #define CX0342_CHANNEL_1_4_H_itx	0xa9
386 #define CX0342_CHANNEL_1_5_L_itx	0xaa
387 #define CX0342_CHANNEL_1_5_H_itx	0xab
388 #define CX0342_CHANNEL_1_6_L_itx	0xac
389 #define CX0342_CHANNEL_1_6_H_itx	0xad
390 #define CX0342_CHANNEL_1_7_L_itx	0xae
391 #define CX0342_CHANNEL_1_7_H_itx	0xaf
392 #define CX0342_CHANNEL_2_0_L_iwl	0xb0
393 #define CX0342_CHANNEL_2_0_H_iwl	0xb1
394 #define CX0342_CHANNEL_2_1_L_iwl	0xb2
395 #define CX0342_CHANNEL_2_1_H_iwl	0xb3
396 #define CX0342_CHANNEL_2_2_L_iwl	0xb4
397 #define CX0342_CHANNEL_2_2_H_iwl	0xb5
398 #define CX0342_CHANNEL_2_3_L_iwl	0xb6
399 #define CX0342_CHANNEL_2_3_H_iwl	0xb7
400 #define CX0342_CHANNEL_2_4_L_iwl	0xb8
401 #define CX0342_CHANNEL_2_4_H_iwl	0xb9
402 #define CX0342_CHANNEL_2_5_L_iwl	0xba
403 #define CX0342_CHANNEL_2_5_H_iwl	0xbb
404 #define CX0342_CHANNEL_2_6_L_iwl	0xbc
405 #define CX0342_CHANNEL_2_6_H_iwl	0xbd
406 #define CX0342_CHANNEL_2_7_L_iwl	0xbe
407 #define CX0342_CHANNEL_2_7_H_iwl	0xbf
408 #define CX0342_CHANNEL_3_0_L_ensp	0xc0
409 #define CX0342_CHANNEL_3_0_H_ensp	0xc1
410 #define CX0342_CHANNEL_3_1_L_ensp	0xc2
411 #define CX0342_CHANNEL_3_1_H_ensp	0xc3
412 #define CX0342_CHANNEL_3_2_L_ensp	0xc4
413 #define CX0342_CHANNEL_3_2_H_ensp	0xc5
414 #define CX0342_CHANNEL_3_3_L_ensp	0xc6
415 #define CX0342_CHANNEL_3_3_H_ensp	0xc7
416 #define CX0342_CHANNEL_3_4_L_ensp	0xc8
417 #define CX0342_CHANNEL_3_4_H_ensp	0xc9
418 #define CX0342_CHANNEL_3_5_L_ensp	0xca
419 #define CX0342_CHANNEL_3_5_H_ensp	0xcb
420 #define CX0342_CHANNEL_3_6_L_ensp	0xcc
421 #define CX0342_CHANNEL_3_6_H_ensp	0xcd
422 #define CX0342_CHANNEL_3_7_L_ensp	0xce
423 #define CX0342_CHANNEL_3_7_H_ensp	0xcf
424 #define CX0342_CHANNEL_4_0_L_sela	0xd0
425 #define CX0342_CHANNEL_4_0_H_sela	0xd1
426 #define CX0342_CHANNEL_4_1_L_sela	0xd2
427 #define CX0342_CHANNEL_4_1_H_sela	0xd3
428 #define CX0342_CHANNEL_5_0_L_intla	0xe0
429 #define CX0342_CHANNEL_5_0_H_intla	0xe1
430 #define CX0342_CHANNEL_5_1_L_intla	0xe2
431 #define CX0342_CHANNEL_5_1_H_intla	0xe3
432 #define CX0342_CHANNEL_5_2_L_intla	0xe4
433 #define CX0342_CHANNEL_5_2_H_intla	0xe5
434 #define CX0342_CHANNEL_5_3_L_intla	0xe6
435 #define CX0342_CHANNEL_5_3_H_intla	0xe7
436 #define CX0342_CHANNEL_6_0_L_xa_sel_pos 0xf0
437 #define CX0342_CHANNEL_6_0_H_xa_sel_pos 0xf1
438 #define CX0342_CHANNEL_7_1_L_cds_pos	0xf2
439 #define CX0342_CHANNEL_7_1_H_cds_pos	0xf3
440 #define CX0342_SENSOR_HEIGHT_L		0xfb
441 #define CX0342_SENSOR_HEIGHT_H		0xfc
442 #define CX0342_SENSOR_WIDTH_L		0xfd
443 #define CX0342_SENSOR_WIDTH_H		0xfe
444 #define CX0342_VSYNC_HSYNC_READ		0xff
445 
446 struct cmd {
447 	u8 reg;
448 	u8 val;
449 };
450 
451 static const u8 DQT[17][130] = {
452 	/* Define quantization table (thanks to Thomas Kaiser) */
453 	{			/* Quality 0 */
454 	 0x00,
455 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
456 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
457 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
458 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
459 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
460 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
461 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
462 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
463 	 0x01,
464 	 0x04, 0x04, 0x04, 0x06, 0x05, 0x06, 0x0b, 0x06,
465 	 0x06, 0x0b, 0x18, 0x10, 0x0e, 0x10, 0x18, 0x18,
466 	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
467 	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
468 	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
469 	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
470 	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
471 	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
472 	 },
473 	{			/* Quality 1 */
474 	 0x00,
475 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
476 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
477 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
478 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
479 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
480 	 0x04, 0x04, 0x04, 0x09, 0x09, 0x09, 0x09, 0x09,
481 	 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
482 	 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
483 	 0x01,
484 	 0x08, 0x09, 0x09, 0x0c, 0x0a, 0x0c, 0x17, 0x0d,
485 	 0x0d, 0x17, 0x31, 0x21, 0x1c, 0x21, 0x31, 0x31,
486 	 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
487 	 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
488 	 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
489 	 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
490 	 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
491 	 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
492 	 },
493 	{			/* Quality 2 */
494 	 0x00,
495 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
496 	 0x04, 0x04, 0x06, 0x06, 0x06, 0x04, 0x04, 0x04,
497 	 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
498 	 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
499 	 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
500 	 0x06, 0x06, 0x06, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
501 	 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
502 	 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
503 	 0x01,
504 	 0x0c, 0x0d, 0x0d, 0x12, 0x0f, 0x12, 0x23, 0x13,
505 	 0x13, 0x23, 0x4a, 0x31, 0x2a, 0x31, 0x4a, 0x4a,
506 	 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
507 	 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
508 	 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
509 	 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
510 	 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
511 	 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
512 	 },
513 	{			/* Quality 3 */
514 	 0x00,
515 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
516 	 0x04, 0x04, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04,
517 	 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
518 	 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
519 	 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
520 	 0x08, 0x08, 0x08, 0x13, 0x13, 0x13, 0x13, 0x13,
521 	 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
522 	 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
523 	 0x01,
524 	 0x11, 0x12, 0x12, 0x18, 0x15, 0x18, 0x2f, 0x1a,
525 	 0x1a, 0x2f, 0x63, 0x42, 0x38, 0x42, 0x63, 0x63,
526 	 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
527 	 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
528 	 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
529 	 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
530 	 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
531 	 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
532 	 },
533 	{			/* Quality 4 */
534 	 0x00,
535 	 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
536 	 0x05, 0x05, 0x0a, 0x0a, 0x0a, 0x05, 0x05, 0x05,
537 	 0x05, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
538 	 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
539 	 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
540 	 0x0a, 0x0a, 0x0a, 0x17, 0x17, 0x17, 0x17, 0x17,
541 	 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
542 	 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
543 	 0x01,
544 	 0x11, 0x16, 0x16, 0x1e, 0x1a, 0x1e, 0x3a, 0x20,
545 	 0x20, 0x3a, 0x7b, 0x52, 0x46, 0x52, 0x7b, 0x7b,
546 	 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
547 	 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
548 	 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
549 	 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
550 	 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
551 	 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
552 	 },
553 	{			/* Quality 5 */
554 	 0x00,
555 	 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
556 	 0x06, 0x06, 0x0c, 0x0c, 0x0c, 0x06, 0x06, 0x06,
557 	 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
558 	 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
559 	 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
560 	 0x0c, 0x0c, 0x0c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
561 	 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
562 	 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
563 	 0x01,
564 	 0x11, 0x1b, 0x1b, 0x24, 0x1f, 0x24, 0x46, 0x27,
565 	 0x27, 0x46, 0x94, 0x63, 0x54, 0x63, 0x94, 0x94,
566 	 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
567 	 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
568 	 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
569 	 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
570 	 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
571 	 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
572 	 },
573 	{			/* Quality 6 */
574 	 0x00,
575 	 0x05, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
576 	 0x07, 0x07, 0x0e, 0x0e, 0x0e, 0x07, 0x07, 0x07,
577 	 0x07, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
578 	 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
579 	 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
580 	 0x0e, 0x0e, 0x0e, 0x21, 0x21, 0x21, 0x21, 0x21,
581 	 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
582 	 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
583 	 0x01,
584 	 0x15, 0x1f, 0x1f, 0x2a, 0x24, 0x2a, 0x52, 0x2d,
585 	 0x2d, 0x52, 0xad, 0x73, 0x62, 0x73, 0xad, 0xad,
586 	 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
587 	 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
588 	 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
589 	 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
590 	 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
591 	 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
592 	 },
593 	{			/* Quality 7 */
594 	 0x00,
595 	 0x05, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
596 	 0x08, 0x08, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08,
597 	 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
598 	 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
599 	 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
600 	 0x10, 0x10, 0x10, 0x26, 0x26, 0x26, 0x26, 0x26,
601 	 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,
602 	 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,
603 	 0x01,
604 	 0x15, 0x24, 0x24, 0x30, 0x2a, 0x30, 0x5e, 0x34,
605 	 0x34, 0x5e, 0xc6, 0x84, 0x70, 0x84, 0xc6, 0xc6,
606 	 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
607 	 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
608 	 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
609 	 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
610 	 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
611 	 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
612 	 },
613 	{			/* Quality 8 */
614 	 0x00,
615 	 0x06, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
616 	 0x0a, 0x0a, 0x14, 0x14, 0x14, 0x0a, 0x0a, 0x0a,
617 	 0x0a, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
618 	 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
619 	 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
620 	 0x14, 0x14, 0x14, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f,
621 	 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f,
622 	 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f,
623 	 0x01,
624 	 0x19, 0x2d, 0x2d, 0x3c, 0x34, 0x3c, 0x75, 0x41,
625 	 0x41, 0x75, 0xf7, 0xa5, 0x8c, 0xa5, 0xf7, 0xf7,
626 	 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
627 	 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
628 	 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
629 	 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
630 	 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
631 	 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
632 	 },
633 	{			/* Quality 9 */
634 	 0x00,
635 	 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
636 	 0x0c, 0x0c, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x0c,
637 	 0x0c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
638 	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
639 	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
640 	 0x18, 0x18, 0x18, 0x39, 0x39, 0x39, 0x39, 0x39,
641 	 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39,
642 	 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39,
643 	 0x01,
644 	 0x19, 0x36, 0x36, 0x48, 0x3f, 0x48, 0x8d, 0x4e,
645 	 0x4e, 0x8d, 0xff, 0xc6, 0xa8, 0xc6, 0xff, 0xff,
646 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
647 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
648 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
649 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
650 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
651 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
652 	 },
653 	{			/* Quality 10 */
654 	 0x00,
655 	 0x07, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
656 	 0x0e, 0x0e, 0x1c, 0x1c, 0x1c, 0x0e, 0x0e, 0x0e,
657 	 0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
658 	 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
659 	 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
660 	 0x1c, 0x1c, 0x1c, 0x42, 0x42, 0x42, 0x42, 0x42,
661 	 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
662 	 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
663 	 0x01,
664 	 0x1d, 0x3f, 0x3f, 0x54, 0x49, 0x54, 0xa4, 0x5b,
665 	 0x5b, 0xa4, 0xff, 0xe7, 0xc4, 0xe7, 0xff, 0xff,
666 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
667 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
668 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
669 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
670 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
671 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
672 	 },
673 	{			/* Quality 11 */
674 	 0x00,
675 	 0x07, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
676 	 0x10, 0x10, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10,
677 	 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
678 	 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
679 	 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
680 	 0x20, 0x20, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
681 	 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
682 	 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
683 	 0x01,
684 	 0x1d, 0x48, 0x48, 0x60, 0x54, 0x60, 0xbc, 0x68,
685 	 0x68, 0xbc, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xff,
686 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
687 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
688 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
689 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
690 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
691 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
692 	 },
693 	{			/* Quality 12 */
694 	 0x00,
695 	 0x08, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
696 	 0x14, 0x14, 0x28, 0x28, 0x28, 0x14, 0x14, 0x14,
697 	 0x14, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
698 	 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
699 	 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
700 	 0x28, 0x28, 0x28, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f,
701 	 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f,
702 	 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f,
703 	 0x01,
704 	 0x22, 0x5a, 0x5a, 0x78, 0x69, 0x78, 0xeb, 0x82,
705 	 0x82, 0xeb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
706 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
707 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
708 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
709 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
710 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
711 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
712 	 },
713 	{			/* Quality 13 */
714 	 0x00,
715 	 0x08, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
716 	 0x18, 0x18, 0x30, 0x30, 0x30, 0x18, 0x18, 0x18,
717 	 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
718 	 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
719 	 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
720 	 0x30, 0x30, 0x30, 0x72, 0x72, 0x72, 0x72, 0x72,
721 	 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72,
722 	 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72,
723 	 0x01,
724 	 0x22, 0x6c, 0x6c, 0x90, 0x7e, 0x90, 0xff, 0x9c,
725 	 0x9c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
726 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
727 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
728 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
729 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
730 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
731 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
732 	 },
733 	{			/* Quality 14 */
734 	 0x00,
735 	 0x0a, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
736 	 0x1c, 0x1c, 0x38, 0x38, 0x38, 0x1c, 0x1c, 0x1c,
737 	 0x1c, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
738 	 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
739 	 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
740 	 0x38, 0x38, 0x38, 0x85, 0x85, 0x85, 0x85, 0x85,
741 	 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
742 	 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
743 	 0x01,
744 	 0x2a, 0x7e, 0x7e, 0xa8, 0x93, 0xa8, 0xff, 0xb6,
745 	 0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
746 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
747 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
748 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
749 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
750 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
751 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
752 	 },
753 	{			/* Quality 15 */
754 	 0x00,
755 	 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
756 	 0x20, 0x20, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20,
757 	 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
758 	 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
759 	 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
760 	 0x40, 0x40, 0x40, 0x98, 0x98, 0x98, 0x98, 0x98,
761 	 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
762 	 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
763 	 0x01,
764 	 0x2a, 0x90, 0x90, 0xc0, 0xa8, 0xc0, 0xff, 0xd0,
765 	 0xd0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
766 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
767 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
768 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
769 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
770 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
771 	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
772 	 },
773 	{			/* Quality 16-31 */
774 	 0x00,
775 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
776 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
777 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
778 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
779 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
780 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
781 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
782 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
783 	 0x01,
784 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
785 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
786 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
787 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
788 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
789 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
790 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
791 	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
792 	 }
793 };
794 
795 static const struct cmd tp6810_cx_init_common[] = {
796 	{0x1c, 0x00},
797 	{TP6800_R10_SIF_TYPE, 0x00},
798 	{0x4e, 0x00},
799 	{0x4f, 0x00},
800 	{TP6800_R50, 0xff},
801 	{TP6800_R51, 0x03},
802 	{0x00, 0x07},
803 	{TP6800_R79_QUALITY, 0x03},
804 	{TP6800_R2F_TIMING_CFG, 0x37},
805 	{TP6800_R30_SENSOR_CFG, 0x10},
806 	{TP6800_R21_ENDP_1_CTL, 0x00},
807 	{TP6800_R52, 0x40},
808 	{TP6800_R53, 0x40},
809 	{TP6800_R54_DARK_CFG, 0x40},
810 	{TP6800_R30_SENSOR_CFG, 0x18},
811 	{0x4b, 0x00},
812 	{TP6800_R3F_FRAME_RATE, 0x83},
813 	{TP6800_R79_QUALITY, 0x05},
814 	{TP6800_R21_ENDP_1_CTL, 0x00},
815 	{0x7c, 0x04},
816 	{0x25, 0x14},
817 	{0x26, 0x0f},
818 	{0x7b, 0x10},
819 };
820 
821 static const struct cmd tp6810_ov_init_common[] = {
822 	{0x1c, 0x00},
823 	{TP6800_R10_SIF_TYPE, 0x00},
824 	{0x4e, 0x00},
825 	{0x4f, 0x00},
826 	{TP6800_R50, 0xff},
827 	{TP6800_R51, 0x03},
828 	{0x00, 0x07},
829 	{TP6800_R52, 0x40},
830 	{TP6800_R53, 0x40},
831 	{TP6800_R54_DARK_CFG, 0x40},
832 	{TP6800_R79_QUALITY, 0x03},
833 	{TP6800_R2F_TIMING_CFG, 0x17},
834 	{TP6800_R30_SENSOR_CFG, 0x18},
835 	{TP6800_R21_ENDP_1_CTL, 0x00},
836 	{TP6800_R3F_FRAME_RATE, 0x86},
837 	{0x25, 0x18},
838 	{0x26, 0x0f},
839 	{0x7b, 0x90},
840 };
841 
842 static const struct cmd tp6810_bridge_start[] = {
843 	{0x59, 0x88},
844 	{0x5a, 0x0f},
845 	{0x5b, 0x4e},
846 	{TP6800_R5C_EDGE_THRLD, 0x63},
847 	{TP6800_R5D_DEMOSAIC_CFG, 0x00},
848 	{0x03, 0x7f},
849 	{0x04, 0x80},
850 	{0x06, 0x00},
851 	{0x00, 0x00},
852 };
853 
854 static const struct cmd tp6810_late_start[] = {
855 	{0x7d, 0x01},
856 	{0xb0, 0x04},
857 	{0xb1, 0x04},
858 	{0xb2, 0x04},
859 	{0xb3, 0x04},
860 	{0xb4, 0x04},
861 	{0xb5, 0x04},
862 	{0xb6, 0x08},
863 	{0xb7, 0x08},
864 	{0xb8, 0x04},
865 	{0xb9, 0x04},
866 	{0xba, 0x04},
867 	{0xbb, 0x04},
868 	{0xbc, 0x04},
869 	{0xbd, 0x08},
870 	{0xbe, 0x08},
871 	{0xbf, 0x08},
872 	{0xc0, 0x04},
873 	{0xc1, 0x04},
874 	{0xc2, 0x08},
875 	{0xc3, 0x08},
876 	{0xc4, 0x08},
877 	{0xc5, 0x08},
878 	{0xc6, 0x08},
879 	{0xc7, 0x13},
880 	{0xc8, 0x04},
881 	{0xc9, 0x08},
882 	{0xca, 0x08},
883 	{0xcb, 0x08},
884 	{0xcc, 0x08},
885 	{0xcd, 0x08},
886 	{0xce, 0x13},
887 	{0xcf, 0x13},
888 	{0xd0, 0x08},
889 	{0xd1, 0x08},
890 	{0xd2, 0x08},
891 	{0xd3, 0x08},
892 	{0xd4, 0x08},
893 	{0xd5, 0x13},
894 	{0xd6, 0x13},
895 	{0xd7, 0x13},
896 	{0xd8, 0x08},
897 	{0xd9, 0x08},
898 	{0xda, 0x08},
899 	{0xdb, 0x08},
900 	{0xdc, 0x13},
901 	{0xdd, 0x13},
902 	{0xde, 0x13},
903 	{0xdf, 0x13},
904 	{0xe0, 0x08},
905 	{0xe1, 0x08},
906 	{0xe2, 0x08},
907 	{0xe3, 0x13},
908 	{0xe4, 0x13},
909 	{0xe5, 0x13},
910 	{0xe6, 0x13},
911 	{0xe7, 0x13},
912 	{0xe8, 0x08},
913 	{0xe9, 0x08},
914 	{0xea, 0x13},
915 	{0xeb, 0x13},
916 	{0xec, 0x13},
917 	{0xed, 0x13},
918 	{0xee, 0x13},
919 	{0xef, 0x13},
920 	{0x7d, 0x02},
921 
922 	/* later after isoc start */
923 	{0x7d, 0x08},
924 	{0x7d, 0x00},
925 };
926 
927 static const struct cmd cx0342_timing_seq[] = {
928 	{CX0342_CHANNEL_0_1_L_irst, 0x20},
929 	{CX0342_CHANNEL_0_2_L_irst, 0x24},
930 	{CX0342_CHANNEL_0_2_H_irst, 0x00},
931 	{CX0342_CHANNEL_0_3_L_irst, 0x2f},
932 	{CX0342_CHANNEL_0_3_H_irst, 0x00},
933 	{CX0342_CHANNEL_1_0_L_itx, 0x02},
934 	{CX0342_CHANNEL_1_0_H_itx, 0x00},
935 	{CX0342_CHANNEL_1_1_L_itx, 0x20},
936 	{CX0342_CHANNEL_1_1_H_itx, 0x00},
937 	{CX0342_CHANNEL_1_2_L_itx, 0xe4},
938 	{CX0342_CHANNEL_1_2_H_itx, 0x00},
939 	{CX0342_CHANNEL_1_3_L_itx, 0xee},
940 	{CX0342_CHANNEL_1_3_H_itx, 0x00},
941 	{CX0342_CHANNEL_2_0_L_iwl, 0x30},
942 	{CX0342_CHANNEL_2_0_H_iwl, 0x00},
943 	{CX0342_CHANNEL_3_0_L_ensp, 0x34},
944 	{CX0342_CHANNEL_3_1_L_ensp, 0xe2},
945 	{CX0342_CHANNEL_3_1_H_ensp, 0x00},
946 	{CX0342_CHANNEL_3_2_L_ensp, 0xf6},
947 	{CX0342_CHANNEL_3_2_H_ensp, 0x00},
948 	{CX0342_CHANNEL_3_3_L_ensp, 0xf4},
949 	{CX0342_CHANNEL_3_3_H_ensp, 0x02},
950 	{CX0342_CHANNEL_4_0_L_sela, 0x26},
951 	{CX0342_CHANNEL_4_0_H_sela, 0x00},
952 	{CX0342_CHANNEL_4_1_L_sela, 0xe2},
953 	{CX0342_CHANNEL_4_1_H_sela, 0x00},
954 	{CX0342_CHANNEL_5_0_L_intla, 0x26},
955 	{CX0342_CHANNEL_5_1_L_intla, 0x29},
956 	{CX0342_CHANNEL_5_2_L_intla, 0xf0},
957 	{CX0342_CHANNEL_5_2_H_intla, 0x00},
958 	{CX0342_CHANNEL_5_3_L_intla, 0xf3},
959 	{CX0342_CHANNEL_5_3_H_intla, 0x00},
960 	{CX0342_CHANNEL_6_0_L_xa_sel_pos, 0x24},
961 	{CX0342_CHANNEL_7_1_L_cds_pos, 0x02},
962 	{CX0342_TIMING_EN, 0x01},
963 };
964 
965 /* define the JPEG header */
jpeg_define(u8 * jpeg_hdr,int height,int width)966 static void jpeg_define(u8 *jpeg_hdr,
967 			int height,
968 			int width)
969 {
970 	memcpy(jpeg_hdr, jpeg_head, sizeof jpeg_head);
971 	jpeg_hdr[JPEG_HEIGHT_OFFSET + 0] = height >> 8;
972 	jpeg_hdr[JPEG_HEIGHT_OFFSET + 1] = height;
973 	jpeg_hdr[JPEG_HEIGHT_OFFSET + 2] = width >> 8;
974 	jpeg_hdr[JPEG_HEIGHT_OFFSET + 3] = width;
975 }
976 
977 /* set the JPEG quality for sensor soi763a */
jpeg_set_qual(u8 * jpeg_hdr,int quality)978 static void jpeg_set_qual(u8 *jpeg_hdr,
979 			  int quality)
980 {
981 	int i, sc;
982 
983 	if (quality < 50)
984 		sc = 5000 / quality;
985 	else
986 		sc = 200 - quality * 2;
987 	for (i = 0; i < 64; i++) {
988 		jpeg_hdr[JPEG_QT0_OFFSET + i] =
989 			(jpeg_head[JPEG_QT0_OFFSET + i] * sc + 50) / 100;
990 		jpeg_hdr[JPEG_QT1_OFFSET + i] =
991 			(jpeg_head[JPEG_QT1_OFFSET + i] * sc + 50) / 100;
992 	}
993 }
994 
reg_w(struct gspca_dev * gspca_dev,u8 index,u8 value)995 static void reg_w(struct gspca_dev *gspca_dev, u8 index, u8 value)
996 {
997 	struct usb_device *dev = gspca_dev->dev;
998 	int ret;
999 
1000 	if (gspca_dev->usb_err < 0)
1001 		return;
1002 	ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
1003 			0x0e,
1004 			USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
1005 			value, index, NULL, 0, 500);
1006 	if (ret < 0) {
1007 		pr_err("reg_w err %d\n", ret);
1008 		gspca_dev->usb_err = ret;
1009 	}
1010 }
1011 
1012 /* the returned value is in gspca_dev->usb_buf */
reg_r(struct gspca_dev * gspca_dev,u8 index)1013 static void reg_r(struct gspca_dev *gspca_dev, u8 index)
1014 {
1015 	struct usb_device *dev = gspca_dev->dev;
1016 	int ret;
1017 
1018 	if (gspca_dev->usb_err < 0)
1019 		return;
1020 	ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
1021 			0x0d,
1022 			USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
1023 			0, index, gspca_dev->usb_buf, 1, 500);
1024 	if (ret < 0) {
1025 		pr_err("reg_r err %d\n", ret);
1026 		gspca_dev->usb_err = ret;
1027 	}
1028 }
1029 
reg_w_buf(struct gspca_dev * gspca_dev,const struct cmd * p,int l)1030 static void reg_w_buf(struct gspca_dev *gspca_dev,
1031 			const struct cmd *p, int l)
1032 {
1033 	do {
1034 		reg_w(gspca_dev, p->reg, p->val);
1035 		p++;
1036 	} while (--l > 0);
1037 }
1038 
i2c_w(struct gspca_dev * gspca_dev,u8 index,u8 value)1039 static int i2c_w(struct gspca_dev *gspca_dev, u8 index, u8 value)
1040 {
1041 	struct sd *sd = (struct sd *) gspca_dev;
1042 
1043 	reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00);
1044 	reg_w(gspca_dev, TP6800_R19_SIF_ADDR_S2, index);
1045 	reg_w(gspca_dev, TP6800_R13_SIF_TX_DATA, value);
1046 	reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x01);
1047 	if (sd->bridge == BRIDGE_TP6800)
1048 		return 0;
1049 	msleep(5);
1050 	reg_r(gspca_dev, TP6800_R11_SIF_CONTROL);
1051 	if (gspca_dev->usb_buf[0] == 0)
1052 		return 0;
1053 	reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00);
1054 	return -1;				/* error */
1055 }
1056 
i2c_w_buf(struct gspca_dev * gspca_dev,const struct cmd * p,int l)1057 static void i2c_w_buf(struct gspca_dev *gspca_dev,
1058 			const struct cmd *p, int l)
1059 {
1060 	do {
1061 		i2c_w(gspca_dev, p->reg, p->val);
1062 		p++;
1063 	} while (--l > 0);
1064 }
1065 
i2c_r(struct gspca_dev * gspca_dev,u8 index,int len)1066 static int i2c_r(struct gspca_dev *gspca_dev, u8 index, int len)
1067 {
1068 	struct sd *sd = (struct sd *) gspca_dev;
1069 	int v;
1070 
1071 	reg_w(gspca_dev, TP6800_R19_SIF_ADDR_S2, index);
1072 	reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x02);
1073 	msleep(5);
1074 	reg_r(gspca_dev, TP6800_R14_SIF_RX_DATA);
1075 	v = gspca_dev->usb_buf[0];
1076 	if (sd->bridge == BRIDGE_TP6800)
1077 		return v;
1078 	if (len > 1) {
1079 		reg_r(gspca_dev, TP6800_R1B_SIF_RX_DATA2);
1080 		v |= (gspca_dev->usb_buf[0] << 8);
1081 	}
1082 	reg_r(gspca_dev, TP6800_R11_SIF_CONTROL);
1083 	if (gspca_dev->usb_buf[0] == 0)
1084 		return v;
1085 	reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00);
1086 	return -1;
1087 }
1088 
bulk_w(struct gspca_dev * gspca_dev,u8 tag,const u8 * data,int length)1089 static void bulk_w(struct gspca_dev *gspca_dev,
1090 		  u8 tag,
1091 		  const u8 *data,
1092 		  int length)
1093 {
1094 	struct usb_device *dev = gspca_dev->dev;
1095 	int count, actual_count, ret;
1096 
1097 	if (gspca_dev->usb_err < 0)
1098 		return;
1099 	for (;;) {
1100 		count = length > BULK_OUT_SIZE - 1
1101 				? BULK_OUT_SIZE - 1 : length;
1102 		gspca_dev->usb_buf[0] = tag;
1103 		memcpy(&gspca_dev->usb_buf[1], data, count);
1104 		ret = usb_bulk_msg(dev,
1105 				   usb_sndbulkpipe(dev, 3),
1106 				   gspca_dev->usb_buf, count + 1,
1107 				   &actual_count, 500);
1108 		if (ret < 0) {
1109 			pr_err("bulk write error %d tag=%02x\n",
1110 				ret, tag);
1111 			gspca_dev->usb_err = ret;
1112 			return;
1113 		}
1114 		length -= count;
1115 		if (length <= 0)
1116 			break;
1117 		data += count;
1118 	}
1119 }
1120 
probe_6810(struct gspca_dev * gspca_dev)1121 static int probe_6810(struct gspca_dev *gspca_dev)
1122 {
1123 	u8 gpio;
1124 	int ret;
1125 
1126 	reg_r(gspca_dev, TP6800_R18_GPIO_DATA);
1127 	gpio = gspca_dev->usb_buf[0];
1128 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1129 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1130 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1131 	reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x04);	/* i2c 16 bits */
1132 	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x21);	/* ov??? */
1133 	reg_w(gspca_dev, TP6800_R1A_SIF_TX_DATA2, 0x00);
1134 	if (i2c_w(gspca_dev, 0x00, 0x00) >= 0)
1135 		return SENSOR_SOI763A;
1136 
1137 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1138 	reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00);	/* i2c 8 bits */
1139 	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x7f);	/* (unknown i2c) */
1140 	if (i2c_w(gspca_dev, 0x00, 0x00) >= 0)
1141 		return -2;
1142 
1143 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1144 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1145 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1146 	reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00);	/* i2c 8 bits */
1147 	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x11);	/* tas??? / hv??? */
1148 	ret = i2c_r(gspca_dev, 0x00, 1);
1149 	if (ret > 0)
1150 		return -3;
1151 
1152 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1153 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1154 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1155 	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x6e);	/* po??? */
1156 	ret = i2c_r(gspca_dev, 0x00, 1);
1157 	if (ret > 0)
1158 		return -4;
1159 
1160 	ret = i2c_r(gspca_dev, 0x01, 1);
1161 	if (ret > 0)
1162 		return -5;
1163 
1164 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1165 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1166 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1167 	reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x04);	/* i2c 16 bits */
1168 	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x5d);	/* mi/mt??? */
1169 	ret = i2c_r(gspca_dev, 0x00, 2);
1170 	if (ret > 0)
1171 		return -6;
1172 
1173 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1174 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1175 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1176 	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x5c);	/* mi/mt??? */
1177 	ret = i2c_r(gspca_dev, 0x36, 2);
1178 	if (ret > 0)
1179 		return -7;
1180 
1181 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1182 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1183 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1184 	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x61);	/* (unknown i2c) */
1185 	reg_w(gspca_dev, TP6800_R1A_SIF_TX_DATA2, 0x10);
1186 	if (i2c_w(gspca_dev, 0xff, 0x00) >= 0)
1187 		return -8;
1188 
1189 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1190 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1191 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1192 	reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00);	/* i2c 8 bits */
1193 	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20);	/* cx0342 */
1194 	ret = i2c_r(gspca_dev, 0x00, 1);
1195 	if (ret > 0)
1196 		return SENSOR_CX0342;
1197 	return -9;
1198 }
1199 
cx0342_6810_init(struct gspca_dev * gspca_dev)1200 static void cx0342_6810_init(struct gspca_dev *gspca_dev)
1201 {
1202 	static const struct cmd reg_init_1[] = {
1203 		{TP6800_R2F_TIMING_CFG, 0x2f},
1204 		{0x25, 0x02},
1205 		{TP6800_R21_ENDP_1_CTL, 0x00},
1206 		{TP6800_R3F_FRAME_RATE, 0x80},
1207 		{TP6800_R2F_TIMING_CFG, 0x2f},
1208 		{TP6800_R18_GPIO_DATA, 0xe1},
1209 		{TP6800_R18_GPIO_DATA, 0xc1},
1210 		{TP6800_R18_GPIO_DATA, 0xe1},
1211 		{TP6800_R11_SIF_CONTROL, 0x00},
1212 	};
1213 	static const struct cmd reg_init_2[] = {
1214 		{TP6800_R78_FORMAT, 0x48},
1215 		{TP6800_R11_SIF_CONTROL, 0x00},
1216 	};
1217 	static const struct cmd sensor_init[] = {
1218 		{CX0342_OUTPUT_CTRL, 0x07},
1219 		{CX0342_BYPASS_MODE, 0x58},
1220 		{CX0342_GPXLTHD_L, 0x28},
1221 		{CX0342_RBPXLTHD_L, 0x28},
1222 		{CX0342_PLANETHD_L, 0x50},
1223 		{CX0342_PLANETHD_H, 0x03},
1224 		{CX0342_RB_GAP_L, 0xff},
1225 		{CX0342_RB_GAP_H, 0x07},
1226 		{CX0342_G_GAP_L, 0xff},
1227 		{CX0342_G_GAP_H, 0x07},
1228 		{CX0342_RST_OVERFLOW_L, 0x5c},
1229 		{CX0342_RST_OVERFLOW_H, 0x01},
1230 		{CX0342_DATA_OVERFLOW_L, 0xfc},
1231 		{CX0342_DATA_OVERFLOW_H, 0x03},
1232 		{CX0342_DATA_UNDERFLOW_L, 0x00},
1233 		{CX0342_DATA_UNDERFLOW_H, 0x00},
1234 		{CX0342_SYS_CTRL_0, 0x40},
1235 		{CX0342_GLOBAL_GAIN, 0x01},
1236 		{CX0342_CLOCK_GEN, 0x00},
1237 		{CX0342_SYS_CTRL_0, 0x02},
1238 		{CX0342_IDLE_CTRL, 0x05},
1239 		{CX0342_ADCGN, 0x00},
1240 		{CX0342_ADC_CTL, 0x00},
1241 		{CX0342_LVRST_BLBIAS, 0x01},
1242 		{CX0342_VTHSEL, 0x0b},
1243 		{CX0342_RAMP_RIV, 0x0b},
1244 		{CX0342_LDOSEL, 0x07},
1245 		{CX0342_SPV_VALUE_L, 0x40},
1246 		{CX0342_SPV_VALUE_H, 0x02},
1247 
1248 		{CX0342_AUTO_ADC_CALIB, 0x81},
1249 		{CX0342_TIMING_EN, 0x01},
1250 	};
1251 
1252 	reg_w_buf(gspca_dev, reg_init_1, ARRAY_SIZE(reg_init_1));
1253 	reg_w_buf(gspca_dev, tp6810_cx_init_common,
1254 			ARRAY_SIZE(tp6810_cx_init_common));
1255 	reg_w_buf(gspca_dev, reg_init_2, ARRAY_SIZE(reg_init_2));
1256 
1257 	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20);	/* cx0342 I2C addr */
1258 	i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init));
1259 	i2c_w_buf(gspca_dev, cx0342_timing_seq, ARRAY_SIZE(cx0342_timing_seq));
1260 }
1261 
soi763a_6810_init(struct gspca_dev * gspca_dev)1262 static void soi763a_6810_init(struct gspca_dev *gspca_dev)
1263 {
1264 	static const struct cmd reg_init_1[] = {
1265 		{TP6800_R2F_TIMING_CFG, 0x2f},
1266 		{TP6800_R18_GPIO_DATA, 0xe1},
1267 		{0x25, 0x02},
1268 		{TP6800_R21_ENDP_1_CTL, 0x00},
1269 		{TP6800_R3F_FRAME_RATE, 0x80},
1270 		{TP6800_R2F_TIMING_CFG, 0x2f},
1271 		{TP6800_R18_GPIO_DATA, 0xc1},
1272 	};
1273 	static const struct cmd reg_init_2[] = {
1274 		{TP6800_R78_FORMAT, 0x54},
1275 	};
1276 	static const struct cmd sensor_init[] = {
1277 		{0x00, 0x00},
1278 		{0x01, 0x80},
1279 		{0x02, 0x80},
1280 		{0x03, 0x90},
1281 		{0x04, 0x20},
1282 		{0x05, 0x20},
1283 		{0x06, 0x80},
1284 		{0x07, 0x00},
1285 		{0x08, 0xff},
1286 		{0x09, 0xff},
1287 		{0x0a, 0x76},		/* 7630 = soi673a */
1288 		{0x0b, 0x30},
1289 		{0x0c, 0x20},
1290 		{0x0d, 0x20},
1291 		{0x0e, 0xff},
1292 		{0x0f, 0xff},
1293 		{0x10, 0x41},
1294 		{0x15, 0x14},
1295 		{0x11, 0x40},
1296 		{0x12, 0x48},
1297 		{0x13, 0x80},
1298 		{0x14, 0x80},
1299 		{0x16, 0x03},
1300 		{0x28, 0xb0},
1301 		{0x71, 0x20},
1302 		{0x75, 0x8e},
1303 		{0x17, 0x1b},
1304 		{0x18, 0xbd},
1305 		{0x19, 0x05},
1306 		{0x1a, 0xf6},
1307 		{0x1b, 0x04},
1308 		{0x1c, 0x7f},		/* omnivision */
1309 		{0x1d, 0xa2},
1310 		{0x1e, 0x00},
1311 		{0x1f, 0x00},
1312 		{0x20, 0x45},
1313 		{0x21, 0x80},
1314 		{0x22, 0x80},
1315 		{0x23, 0xee},
1316 		{0x24, 0x50},
1317 		{0x25, 0x7a},
1318 		{0x26, 0xa0},
1319 		{0x27, 0x9a},
1320 		{0x29, 0x30},
1321 		{0x2a, 0x80},
1322 		{0x2b, 0x00},
1323 		{0x2c, 0xac},
1324 		{0x2d, 0x05},
1325 		{0x2e, 0x80},
1326 		{0x2f, 0x3c},
1327 		{0x30, 0x22},
1328 		{0x31, 0x00},
1329 		{0x32, 0x86},
1330 		{0x33, 0x08},
1331 		{0x34, 0xff},
1332 		{0x35, 0xff},
1333 		{0x36, 0xff},
1334 		{0x37, 0xff},
1335 		{0x38, 0xff},
1336 		{0x39, 0xff},
1337 		{0x3a, 0xfe},
1338 		{0x3b, 0xfe},
1339 		{0x3c, 0xfe},
1340 		{0x3d, 0xfe},
1341 		{0x3e, 0xfe},
1342 		{0x3f, 0x71},
1343 		{0x40, 0xff},
1344 		{0x41, 0xff},
1345 		{0x42, 0xff},
1346 		{0x43, 0xff},
1347 		{0x44, 0xff},
1348 		{0x45, 0xff},
1349 		{0x46, 0xff},
1350 		{0x47, 0xff},
1351 		{0x48, 0xff},
1352 		{0x49, 0xff},
1353 		{0x4a, 0xfe},
1354 		{0x4b, 0xff},
1355 		{0x4c, 0x00},
1356 		{0x4d, 0x00},
1357 		{0x4e, 0xff},
1358 		{0x4f, 0xff},
1359 		{0x50, 0xff},
1360 		{0x51, 0xff},
1361 		{0x52, 0xff},
1362 		{0x53, 0xff},
1363 		{0x54, 0xff},
1364 		{0x55, 0xff},
1365 		{0x56, 0xff},
1366 		{0x57, 0xff},
1367 		{0x58, 0xff},
1368 		{0x59, 0xff},
1369 		{0x5a, 0xff},
1370 		{0x5b, 0xfe},
1371 		{0x5c, 0xff},
1372 		{0x5d, 0x8f},
1373 		{0x5e, 0xff},
1374 		{0x5f, 0x8f},
1375 		{0x60, 0xa2},
1376 		{0x61, 0x4a},
1377 		{0x62, 0xf3},
1378 		{0x63, 0x75},
1379 		{0x64, 0xf0},
1380 		{0x65, 0x00},
1381 		{0x66, 0x55},
1382 		{0x67, 0x92},
1383 		{0x68, 0xa0},
1384 		{0x69, 0x4a},
1385 		{0x6a, 0x22},
1386 		{0x6b, 0x00},
1387 		{0x6c, 0x33},
1388 		{0x6d, 0x44},
1389 		{0x6e, 0x22},
1390 		{0x6f, 0x84},
1391 		{0x70, 0x0b},
1392 		{0x72, 0x10},
1393 		{0x73, 0x50},
1394 		{0x74, 0x21},
1395 		{0x76, 0x00},
1396 		{0x77, 0xa5},
1397 		{0x78, 0x80},
1398 		{0x79, 0x80},
1399 		{0x7a, 0x80},
1400 		{0x7b, 0xe2},
1401 		{0x7c, 0x00},
1402 		{0x7d, 0xf7},
1403 		{0x7e, 0x00},
1404 		{0x7f, 0x00},
1405 	};
1406 
1407 	reg_w_buf(gspca_dev, reg_init_1, ARRAY_SIZE(reg_init_1));
1408 	reg_w_buf(gspca_dev, tp6810_ov_init_common,
1409 			ARRAY_SIZE(tp6810_ov_init_common));
1410 	reg_w_buf(gspca_dev, reg_init_2, ARRAY_SIZE(reg_init_2));
1411 
1412 	i2c_w(gspca_dev, 0x12, 0x80);		/* sensor reset */
1413 	msleep(10);
1414 	i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init));
1415 }
1416 
1417 /* set the gain and exposure */
setexposure(struct gspca_dev * gspca_dev)1418 static void setexposure(struct gspca_dev *gspca_dev)
1419 {
1420 	struct sd *sd = (struct sd *) gspca_dev;
1421 
1422 	if (sd->sensor == SENSOR_CX0342) {
1423 		int expo;
1424 
1425 		expo = (sd->ctrls[EXPOSURE].val << 2) - 1;
1426 		i2c_w(gspca_dev, CX0342_EXPO_LINE_L, expo);
1427 		i2c_w(gspca_dev, CX0342_EXPO_LINE_H, expo >> 8);
1428 		if (sd->bridge == BRIDGE_TP6800)
1429 			i2c_w(gspca_dev, CX0342_RAW_GBGAIN_H,
1430 						sd->ctrls[GAIN].val >> 8);
1431 		i2c_w(gspca_dev, CX0342_RAW_GBGAIN_L, sd->ctrls[GAIN].val);
1432 		if (sd->bridge == BRIDGE_TP6800)
1433 			i2c_w(gspca_dev, CX0342_RAW_GRGAIN_H,
1434 						sd->ctrls[GAIN].val >> 8);
1435 		i2c_w(gspca_dev, CX0342_RAW_GRGAIN_L, sd->ctrls[GAIN].val);
1436 		if (sd->bridge == BRIDGE_TP6800)
1437 			i2c_w(gspca_dev, CX0342_RAW_BGAIN_H,
1438 						sd->ctrls[BGAIN].val >> 8);
1439 		i2c_w(gspca_dev, CX0342_RAW_BGAIN_L, sd->ctrls[BGAIN].val);
1440 		if (sd->bridge == BRIDGE_TP6800)
1441 			i2c_w(gspca_dev, CX0342_RAW_RGAIN_H,
1442 						sd->ctrls[RGAIN].val >> 8);
1443 		i2c_w(gspca_dev, CX0342_RAW_RGAIN_L, sd->ctrls[RGAIN].val);
1444 		i2c_w(gspca_dev, CX0342_SYS_CTRL_0,
1445 				sd->bridge == BRIDGE_TP6800 ? 0x80 : 0x81);
1446 		return;
1447 	}
1448 
1449 	/* soi763a */
1450 	i2c_w(gspca_dev, 0x10,		/* AEC_H (exposure time) */
1451 			 sd->ctrls[EXPOSURE].val);
1452 /*	i2c_w(gspca_dev, 0x76, 0x02);	 * AEC_L ([1:0] */
1453 	i2c_w(gspca_dev, 0x00,		/* gain */
1454 			 sd->ctrls[GAIN].val);
1455 }
1456 
1457 /* set the JPEG quantization tables */
set_dqt(struct gspca_dev * gspca_dev,u8 q)1458 static void set_dqt(struct gspca_dev *gspca_dev, u8 q)
1459 {
1460 	struct sd *sd = (struct sd *) gspca_dev;
1461 
1462 	/* update the jpeg quantization tables */
1463 	PDEBUG(D_STREAM, "q %d -> %d", sd->quality, q);
1464 	sd->quality = q;
1465 	if (q > 16)
1466 		q = 16;
1467 	if (sd->sensor == SENSOR_SOI763A)
1468 		jpeg_set_qual(sd->jpeg_hdr, jpeg_q[q]);
1469 	else
1470 		memcpy(&sd->jpeg_hdr[JPEG_QT0_OFFSET - 1],
1471 			DQT[q], sizeof DQT[0]);
1472 }
1473 
1474 /* set the JPEG compression quality factor */
setquality(struct gspca_dev * gspca_dev)1475 static void setquality(struct gspca_dev *gspca_dev)
1476 {
1477 	struct sd *sd = (struct sd *) gspca_dev;
1478 	u16 q;
1479 
1480 	q = sd->ctrls[QUALITY].val;
1481 	if (q != 16)
1482 		q = 15 - q;
1483 
1484 	reg_w(gspca_dev, TP6800_R7A_BLK_THRLD, 0x00);
1485 	reg_w(gspca_dev, TP6800_R79_QUALITY, 0x04);
1486 	reg_w(gspca_dev, TP6800_R79_QUALITY, q);
1487 
1488 	/* auto quality */
1489 	if (q == 15 && sd->bridge == BRIDGE_TP6810) {
1490 		msleep(4);
1491 		reg_w(gspca_dev, TP6800_R7A_BLK_THRLD, 0x19);
1492 	}
1493 }
1494 
1495 static const u8 color_null[18] = {
1496 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1497 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1498 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1499 };
1500 static const u8 color_gain[NSENSORS][18] = {
1501 [SENSOR_CX0342] =
1502 	{0x4c, 0x00, 0xa9, 0x00, 0x31, 0x00,	/* Y R/G/B (LE values) */
1503 	 0xb6, 0x03, 0x6c, 0x03, 0xe0, 0x00,	/* U R/G/B */
1504 	 0xdf, 0x00, 0x46, 0x03, 0xdc, 0x03},	/* V R/G/B */
1505 [SENSOR_SOI763A] =
1506 	{0x4c, 0x00, 0x95, 0x00, 0x1d, 0x00,	/* Y R/G/B (LE values) */
1507 	 0xb6, 0x03, 0x6c, 0x03, 0xd7, 0x00,	/* U R/G/B */
1508 	 0xd5, 0x00, 0x46, 0x03, 0xdc, 0x03},	/* V R/G/B */
1509 };
1510 
setgamma(struct gspca_dev * gspca_dev)1511 static void setgamma(struct gspca_dev *gspca_dev)
1512 {
1513 	struct sd *sd = (struct sd *) gspca_dev;
1514 	int gamma;
1515 #define NGAMMA 6
1516 	static const u8 gamma_tb[NGAMMA][3][1024] = {
1517 	    {				/* gamma 0 - from tp6800 + soi763a */
1518 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1519 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1520 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1521 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
1522 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1523 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1524 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1525 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02,
1526 		 0x02, 0x03, 0x05, 0x07, 0x07, 0x08, 0x09, 0x09,
1527 		 0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, 0x10, 0x11,
1528 		 0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17,
1529 		 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e,
1530 		 0x1e, 0x1f, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x23,
1531 		 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28,
1532 		 0x29, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f,
1533 		 0x2f, 0x30, 0x30, 0x31, 0x31, 0x33, 0x33, 0x34,
1534 		 0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x38, 0x38,
1535 		 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c,
1536 		 0x3c, 0x3d, 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x40,
1537 		 0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x44, 0x45,
1538 		 0x45, 0x47, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49,
1539 		 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c,
1540 		 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 0x50,
1541 		 0x52, 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x54,
1542 		 0x55, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 0x58,
1543 		 0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b,
1544 		 0x5b, 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5e, 0x5f,
1545 		 0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61,
1546 		 0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x65, 0x65,
1547 		 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68,
1548 		 0x68, 0x68, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a,
1549 		 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
1550 		 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70,
1551 		 0x70, 0x71, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73,
1552 		 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77,
1553 		 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79,
1554 		 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b,
1555 		 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d,
1556 		 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80,
1557 		 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82,
1558 		 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86,
1559 		 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89,
1560 		 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b,
1561 		 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e,
1562 		 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90,
1563 		 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
1564 		 0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93,
1565 		 0x94, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96,
1566 		 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
1567 		 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
1568 		 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
1569 		 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e,
1570 		 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0,
1571 		 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2,
1572 		 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
1573 		 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6,
1574 		 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
1575 		 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab,
1576 		 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
1577 		 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xae,
1578 		 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
1579 		 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
1580 		 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
1581 		 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6,
1582 		 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8,
1583 		 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
1584 		 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc,
1585 		 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
1586 		 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
1587 		 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2,
1588 		 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3,
1589 		 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
1590 		 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
1591 		 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9,
1592 		 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
1593 		 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc,
1594 		 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
1595 		 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
1596 		 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1,
1597 		 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
1598 		 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6,
1599 		 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
1600 		 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
1601 		 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
1602 		 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
1603 		 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf,
1604 		 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
1605 		 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
1606 		 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
1607 		 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
1608 		 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7,
1609 		 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8,
1610 		 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
1611 		 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed,
1612 		 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
1613 		 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0,
1614 		 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
1615 		 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
1616 		 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
1617 		 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
1618 		 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
1619 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
1620 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1621 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1622 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1623 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1624 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1625 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1626 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1627 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1628 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1629 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1630 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1631 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1632 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1633 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1634 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1635 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1636 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1637 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1638 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1639 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1640 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1641 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1642 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1643 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1644 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1645 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
1646 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1647 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1648 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1649 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
1650 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1651 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1652 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1653 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02,
1654 		 0x02, 0x03, 0x05, 0x07, 0x07, 0x08, 0x09, 0x09,
1655 		 0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, 0x10, 0x11,
1656 		 0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17,
1657 		 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e,
1658 		 0x1e, 0x1f, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x23,
1659 		 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28,
1660 		 0x29, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f,
1661 		 0x2f, 0x30, 0x30, 0x31, 0x31, 0x33, 0x33, 0x34,
1662 		 0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x38, 0x38,
1663 		 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c,
1664 		 0x3c, 0x3d, 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x40,
1665 		 0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x44, 0x45,
1666 		 0x45, 0x47, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49,
1667 		 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c,
1668 		 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 0x50,
1669 		 0x52, 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x54,
1670 		 0x55, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 0x58,
1671 		 0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b,
1672 		 0x5b, 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5e, 0x5f,
1673 		 0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61,
1674 		 0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x65, 0x65,
1675 		 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68,
1676 		 0x68, 0x68, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a,
1677 		 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
1678 		 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70,
1679 		 0x70, 0x71, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73,
1680 		 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77,
1681 		 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79,
1682 		 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b,
1683 		 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d,
1684 		 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80,
1685 		 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82,
1686 		 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86,
1687 		 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89,
1688 		 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b,
1689 		 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e,
1690 		 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90,
1691 		 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
1692 		 0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93,
1693 		 0x94, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96,
1694 		 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
1695 		 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
1696 		 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
1697 		 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e,
1698 		 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0,
1699 		 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2,
1700 		 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
1701 		 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6,
1702 		 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
1703 		 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab,
1704 		 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
1705 		 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xae,
1706 		 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
1707 		 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
1708 		 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
1709 		 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6,
1710 		 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8,
1711 		 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
1712 		 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc,
1713 		 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
1714 		 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
1715 		 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2,
1716 		 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3,
1717 		 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
1718 		 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
1719 		 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9,
1720 		 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
1721 		 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc,
1722 		 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
1723 		 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
1724 		 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1,
1725 		 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
1726 		 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6,
1727 		 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
1728 		 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
1729 		 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
1730 		 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
1731 		 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf,
1732 		 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
1733 		 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
1734 		 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
1735 		 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
1736 		 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7,
1737 		 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8,
1738 		 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
1739 		 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed,
1740 		 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
1741 		 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0,
1742 		 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
1743 		 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
1744 		 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
1745 		 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
1746 		 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
1747 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
1748 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1749 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1750 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1751 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1752 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1753 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1754 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1755 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1756 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1757 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1758 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1759 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1760 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1761 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1762 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1763 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1764 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1765 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1766 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1767 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1768 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1769 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1770 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1771 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1772 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1773 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
1774 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1775 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1776 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1777 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
1778 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1779 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1780 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1781 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02,
1782 		 0x02, 0x03, 0x05, 0x07, 0x07, 0x08, 0x09, 0x09,
1783 		 0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, 0x10, 0x11,
1784 		 0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17,
1785 		 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e,
1786 		 0x1e, 0x1f, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x23,
1787 		 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28,
1788 		 0x29, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f,
1789 		 0x2f, 0x30, 0x30, 0x31, 0x31, 0x33, 0x33, 0x34,
1790 		 0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x38, 0x38,
1791 		 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c,
1792 		 0x3c, 0x3d, 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x40,
1793 		 0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x44, 0x45,
1794 		 0x45, 0x47, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49,
1795 		 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c,
1796 		 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 0x50,
1797 		 0x52, 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x54,
1798 		 0x55, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 0x58,
1799 		 0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b,
1800 		 0x5b, 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5e, 0x5f,
1801 		 0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61,
1802 		 0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x65, 0x65,
1803 		 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68,
1804 		 0x68, 0x68, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a,
1805 		 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
1806 		 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70,
1807 		 0x70, 0x71, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73,
1808 		 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x76,
1809 		 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79,
1810 		 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b,
1811 		 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d,
1812 		 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80,
1813 		 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82,
1814 		 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86,
1815 		 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89,
1816 		 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b,
1817 		 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e,
1818 		 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90,
1819 		 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
1820 		 0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93,
1821 		 0x94, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96,
1822 		 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
1823 		 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
1824 		 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
1825 		 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e,
1826 		 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0,
1827 		 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2,
1828 		 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
1829 		 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6,
1830 		 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
1831 		 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab,
1832 		 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
1833 		 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xae,
1834 		 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
1835 		 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
1836 		 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
1837 		 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6,
1838 		 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8,
1839 		 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
1840 		 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc,
1841 		 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
1842 		 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
1843 		 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2,
1844 		 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3,
1845 		 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
1846 		 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
1847 		 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9,
1848 		 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
1849 		 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc,
1850 		 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
1851 		 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
1852 		 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1,
1853 		 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
1854 		 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6,
1855 		 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
1856 		 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
1857 		 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
1858 		 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
1859 		 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf,
1860 		 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
1861 		 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
1862 		 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
1863 		 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
1864 		 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7,
1865 		 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8,
1866 		 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
1867 		 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed,
1868 		 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
1869 		 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0,
1870 		 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
1871 		 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
1872 		 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
1873 		 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
1874 		 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
1875 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
1876 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1877 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1878 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1879 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1880 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1881 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1882 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1883 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1884 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1885 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1886 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1887 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1888 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1889 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1890 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1891 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1892 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1893 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1894 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1895 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1896 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1897 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1898 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1899 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1900 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1901 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}
1902 	    },
1903 	    {				/* gamma 1 - from tp6810 + soi763a */
1904 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1905 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1906 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1907 		 0x01, 0x02, 0x03, 0x05, 0x07, 0x08, 0x09, 0x0a,
1908 		 0x0c, 0x0d, 0x0e, 0x10, 0x11, 0x12, 0x14, 0x15,
1909 		 0x16, 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1c, 0x1e,
1910 		 0x1f, 0x20, 0x22, 0x22, 0x23, 0x25, 0x26, 0x27,
1911 		 0x27, 0x28, 0x29, 0x2b, 0x2b, 0x2c, 0x2d, 0x2f,
1912 		 0x2f, 0x30, 0x31, 0x33, 0x33, 0x34, 0x35, 0x35,
1913 		 0x37, 0x38, 0x38, 0x39, 0x3a, 0x3a, 0x3b, 0x3c,
1914 		 0x3c, 0x3d, 0x3f, 0x3f, 0x40, 0x42, 0x42, 0x43,
1915 		 0x43, 0x44, 0x45, 0x45, 0x47, 0x47, 0x48, 0x49,
1916 		 0x49, 0x4a, 0x4a, 0x4b, 0x4b, 0x4c, 0x4d, 0x4d,
1917 		 0x4f, 0x4f, 0x50, 0x50, 0x52, 0x52, 0x53, 0x53,
1918 		 0x54, 0x54, 0x55, 0x56, 0x56, 0x58, 0x58, 0x59,
1919 		 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 0x5e,
1920 		 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61, 0x61,
1921 		 0x62, 0x62, 0x63, 0x63, 0x65, 0x65, 0x65, 0x66,
1922 		 0x66, 0x67, 0x67, 0x68, 0x68, 0x69, 0x69, 0x69,
1923 		 0x6a, 0x6a, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
1924 		 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71,
1925 		 0x73, 0x73, 0x73, 0x74, 0x74, 0x74, 0x75, 0x75,
1926 		 0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x79,
1927 		 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c,
1928 		 0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 0x80, 0x80, 0x80,
1929 		 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x84, 0x84,
1930 		 0x84, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x88,
1931 		 0x88, 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a,
1932 		 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e,
1933 		 0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x91,
1934 		 0x91, 0x91, 0x92, 0x92, 0x92, 0x92, 0x93, 0x93,
1935 		 0x93, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x97,
1936 		 0x97, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99,
1937 		 0x99, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b,
1938 		 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9e,
1939 		 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1,
1940 		 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3,
1941 		 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5,
1942 		 0xa5, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
1943 		 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xab,
1944 		 0xac, 0xac, 0xac, 0xad, 0xad, 0xad, 0xad, 0xae,
1945 		 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0,
1946 		 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
1947 		 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4,
1948 		 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7,
1949 		 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8,
1950 		 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba,
1951 		 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd,
1952 		 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
1953 		 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2,
1954 		 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4,
1955 		 0xc4, 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6,
1956 		 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7,
1957 		 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca,
1958 		 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc,
1959 		 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
1960 		 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
1961 		 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1,
1962 		 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4,
1963 		 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
1964 		 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
1965 		 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda,
1966 		 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb,
1967 		 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
1968 		 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0,
1969 		 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1,
1970 		 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3,
1971 		 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
1972 		 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
1973 		 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8,
1974 		 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9,
1975 		 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec,
1976 		 0xec, 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed,
1977 		 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef,
1978 		 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
1979 		 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3,
1980 		 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5,
1981 		 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6,
1982 		 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
1983 		 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9,
1984 		 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
1985 		 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1986 		 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
1987 		 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe,
1988 		 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff,
1989 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1990 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1991 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1992 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1993 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1994 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1995 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1996 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1997 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1998 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1999 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2000 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2001 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2002 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2003 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2004 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2005 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2006 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2007 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2008 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2009 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2010 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2011 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2012 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2013 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2014 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2015 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2016 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2017 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2018 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2019 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2020 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2021 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2022 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2023 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2024 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2025 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2026 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2027 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2028 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2029 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2030 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2031 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
2032 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2033 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2034 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2035 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03,
2036 		 0x05, 0x07, 0x07, 0x08, 0x09, 0x0a, 0x0c, 0x0d,
2037 		 0x0e, 0x10, 0x10, 0x11, 0x12, 0x14, 0x15, 0x15,
2038 		 0x16, 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1c, 0x1e,
2039 		 0x1e, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x25, 0x25,
2040 		 0x26, 0x27, 0x27, 0x28, 0x29, 0x29, 0x2b, 0x2c,
2041 		 0x2c, 0x2d, 0x2d, 0x2f, 0x30, 0x30, 0x31, 0x31,
2042 		 0x33, 0x34, 0x34, 0x35, 0x35, 0x37, 0x38, 0x38,
2043 		 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d,
2044 		 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x42, 0x42, 0x43,
2045 		 0x43, 0x44, 0x44, 0x45, 0x45, 0x47, 0x47, 0x48,
2046 		 0x48, 0x49, 0x49, 0x4a, 0x4a, 0x4b, 0x4b, 0x4c,
2047 		 0x4c, 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50,
2048 		 0x52, 0x52, 0x53, 0x53, 0x53, 0x54, 0x54, 0x55,
2049 		 0x55, 0x56, 0x56, 0x56, 0x58, 0x58, 0x59, 0x59,
2050 		 0x5a, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 0x5c,
2051 		 0x5e, 0x5e, 0x5f, 0x5f, 0x5f, 0x60, 0x60, 0x60,
2052 		 0x61, 0x61, 0x62, 0x62, 0x62, 0x63, 0x63, 0x65,
2053 		 0x65, 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67,
2054 		 0x68, 0x68, 0x69, 0x69, 0x69, 0x6a, 0x6a, 0x6a,
2055 		 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e,
2056 		 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x70, 0x71,
2057 		 0x71, 0x71, 0x73, 0x73, 0x73, 0x74, 0x74, 0x74,
2058 		 0x75, 0x75, 0x75, 0x77, 0x77, 0x77, 0x78, 0x78,
2059 		 0x78, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a,
2060 		 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d,
2061 		 0x7d, 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80,
2062 		 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82,
2063 		 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86,
2064 		 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89, 0x89,
2065 		 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b,
2066 		 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e,
2067 		 0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90,
2068 		 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92,
2069 		 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94,
2070 		 0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x97,
2071 		 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99,
2072 		 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b,
2073 		 0x9b, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d,
2074 		 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0,
2075 		 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2,
2076 		 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4,
2077 		 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5,
2078 		 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8,
2079 		 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab,
2080 		 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
2081 		 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae,
2082 		 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
2083 		 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
2084 		 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
2085 		 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6,
2086 		 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8,
2087 		 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
2088 		 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc,
2089 		 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
2090 		 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf,
2091 		 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
2092 		 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3,
2093 		 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5,
2094 		 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6,
2095 		 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9,
2096 		 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca,
2097 		 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc,
2098 		 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd,
2099 		 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xce, 0xcf,
2100 		 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0,
2101 		 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1,
2102 		 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4,
2103 		 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
2104 		 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8,
2105 		 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9,
2106 		 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb,
2107 		 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
2108 		 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf,
2109 		 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
2110 		 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2,
2111 		 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3,
2112 		 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
2113 		 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
2114 		 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
2115 		 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9,
2116 		 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb,
2117 		 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed,
2118 		 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
2119 		 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
2120 		 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1,
2121 		 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4,
2122 		 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5,
2123 		 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7,
2124 		 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8,
2125 		 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
2126 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2127 		 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc,
2128 		 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
2129 		 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe,
2130 		 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
2131 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2132 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2133 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2134 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2135 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2136 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2137 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2138 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2139 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2140 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2141 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2142 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2143 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2144 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2145 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2146 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2147 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2148 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2149 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2150 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2151 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2152 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2153 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2154 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2155 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2156 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2157 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2158 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2159 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
2160 		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2161 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2162 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2163 		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2164 		 0x00, 0x00, 0x01, 0x02, 0x03, 0x05, 0x05, 0x07,
2165 		 0x08, 0x09, 0x0a, 0x0a, 0x0c, 0x0d, 0x0e, 0x0e,
2166 		 0x10, 0x11, 0x12, 0x12, 0x14, 0x15, 0x16, 0x16,
2167 		 0x17, 0x18, 0x18, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e,
2168 		 0x1e, 0x1f, 0x1f, 0x20, 0x22, 0x22, 0x23, 0x23,
2169 		 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x29, 0x29,
2170 		 0x2b, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f, 0x30,
2171 		 0x30, 0x31, 0x31, 0x33, 0x33, 0x34, 0x34, 0x35,
2172 		 0x35, 0x37, 0x37, 0x38, 0x38, 0x39, 0x39, 0x3a,
2173 		 0x3a, 0x3b, 0x3b, 0x3b, 0x3c, 0x3c, 0x3d, 0x3d,
2174 		 0x3f, 0x3f, 0x40, 0x40, 0x42, 0x42, 0x42, 0x43,
2175 		 0x43, 0x44, 0x44, 0x45, 0x45, 0x47, 0x47, 0x47,
2176 		 0x48, 0x48, 0x49, 0x49, 0x49, 0x4a, 0x4a, 0x4b,
2177 		 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4d, 0x4d, 0x4f,
2178 		 0x4f, 0x50, 0x50, 0x50, 0x52, 0x52, 0x52, 0x53,
2179 		 0x53, 0x54, 0x54, 0x54, 0x55, 0x55, 0x55, 0x56,
2180 		 0x56, 0x58, 0x58, 0x58, 0x59, 0x59, 0x59, 0x5a,
2181 		 0x5a, 0x5a, 0x5b, 0x5b, 0x5b, 0x5c, 0x5c, 0x5c,
2182 		 0x5e, 0x5e, 0x5e, 0x5f, 0x5f, 0x5f, 0x60, 0x60,
2183 		 0x60, 0x61, 0x61, 0x61, 0x62, 0x62, 0x62, 0x63,
2184 		 0x63, 0x63, 0x65, 0x65, 0x65, 0x66, 0x66, 0x66,
2185 		 0x66, 0x67, 0x67, 0x67, 0x68, 0x68, 0x68, 0x69,
2186 		 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6a, 0x6c, 0x6c,
2187 		 0x6c, 0x6d, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6e,
2188 		 0x6f, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x70, 0x71,
2189 		 0x71, 0x71, 0x71, 0x73, 0x73, 0x73, 0x74, 0x74,
2190 		 0x74, 0x74, 0x75, 0x75, 0x75, 0x75, 0x77, 0x77,
2191 		 0x77, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79,
2192 		 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b,
2193 		 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d,
2194 		 0x7d, 0x7f, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80,
2195 		 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82,
2196 		 0x82, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85,
2197 		 0x85, 0x86, 0x86, 0x86, 0x86, 0x88, 0x88, 0x88,
2198 		 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, 0x8a, 0x8a,
2199 		 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8d,
2200 		 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
2201 		 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90,
2202 		 0x90, 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92,
2203 		 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x94, 0x94,
2204 		 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96, 0x96,
2205 		 0x97, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
2206 		 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
2207 		 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b,
2208 		 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d,
2209 		 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xa0,
2210 		 0xa0, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1,
2211 		 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3,
2212 		 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4,
2213 		 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6,
2214 		 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
2215 		 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab,
2216 		 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac,
2217 		 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xae, 0xae,
2218 		 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf,
2219 		 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1,
2220 		 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb2,
2221 		 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4,
2222 		 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6,
2223 		 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7,
2224 		 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9,
2225 		 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba,
2226 		 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd,
2227 		 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe,
2228 		 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf,
2229 		 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2,
2230 		 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3,
2231 		 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5,
2232 		 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6,
2233 		 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
2234 		 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2235 		 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb,
2236 		 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
2237 		 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce,
2238 		 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
2239 		 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0,
2240 		 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3,
2241 		 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4,
2242 		 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7,
2243 		 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
2244 		 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9,
2245 		 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
2246 		 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
2247 		 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde,
2248 		 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0,
2249 		 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1,
2250 		 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3,
2251 		 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4,
2252 		 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5,
2253 		 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7,
2254 		 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8,
2255 		 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb,
2256 		 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
2257 		 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xee,
2258 		 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef, 0xef,
2259 		 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1,
2260 		 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3,
2261 		 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5,
2262 		 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6,
2263 		 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8,
2264 		 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
2265 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2266 		 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, 0xfc,
2267 		 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd,
2268 		 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
2269 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2270 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2271 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2272 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2273 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2274 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2275 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2276 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2277 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2278 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2279 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2280 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2281 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2282 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2283 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2284 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2285 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2286 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2287 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
2288 	    },
2289 	    {							/* gamma 2 */
2290 		{0x00, 0x01, 0x02, 0x05, 0x07, 0x08, 0x0a, 0x0c,
2291 		 0x0d, 0x0e, 0x10, 0x12, 0x14, 0x15, 0x16, 0x17,
2292 		 0x18, 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x22,
2293 		 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2c,
2294 		 0x2d, 0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34, 0x34,
2295 		 0x35, 0x37, 0x38, 0x38, 0x39, 0x3a, 0x3b, 0x3b,
2296 		 0x3c, 0x3d, 0x3f, 0x3f, 0x40, 0x42, 0x42, 0x43,
2297 		 0x44, 0x44, 0x45, 0x47, 0x47, 0x48, 0x49, 0x49,
2298 		 0x4a, 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4f, 0x4f,
2299 		 0x50, 0x50, 0x52, 0x53, 0x53, 0x54, 0x54, 0x55,
2300 		 0x55, 0x56, 0x56, 0x58, 0x58, 0x59, 0x5a, 0x5a,
2301 		 0x5b, 0x5b, 0x5c, 0x5c, 0x5e, 0x5e, 0x5f, 0x5f,
2302 		 0x60, 0x60, 0x61, 0x61, 0x62, 0x62, 0x63, 0x63,
2303 		 0x65, 0x65, 0x65, 0x66, 0x66, 0x67, 0x67, 0x68,
2304 		 0x68, 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6c, 0x6c,
2305 		 0x6d, 0x6d, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x70,
2306 		 0x70, 0x70, 0x71, 0x71, 0x73, 0x73, 0x73, 0x74,
2307 		 0x74, 0x75, 0x75, 0x75, 0x77, 0x77, 0x78, 0x78,
2308 		 0x78, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b,
2309 		 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7f, 0x7f,
2310 		 0x7f, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82,
2311 		 0x82, 0x82, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85,
2312 		 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x89, 0x89,
2313 		 0x89, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8d,
2314 		 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f,
2315 		 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
2316 		 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x94,
2317 		 0x94, 0x94, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97,
2318 		 0x97, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99,
2319 		 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b,
2320 		 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e,
2321 		 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0, 0xa1,
2322 		 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3,
2323 		 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5,
2324 		 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8,
2325 		 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab,
2326 		 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xad,
2327 		 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae,
2328 		 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0,
2329 		 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2,
2330 		 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb4,
2331 		 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7,
2332 		 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8,
2333 		 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba,
2334 		 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd,
2335 		 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe,
2336 		 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0,
2337 		 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3,
2338 		 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4,
2339 		 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6,
2340 		 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7,
2341 		 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2342 		 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb,
2343 		 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
2344 		 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xce,
2345 		 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0,
2346 		 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1,
2347 		 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4,
2348 		 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6,
2349 		 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8,
2350 		 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
2351 		 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda,
2352 		 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd,
2353 		 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde,
2354 		 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0,
2355 		 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1,
2356 		 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
2357 		 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4,
2358 		 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5,
2359 		 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6,
2360 		 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8,
2361 		 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9,
2362 		 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb,
2363 		 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed, 0xed,
2364 		 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
2365 		 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
2366 		 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1,
2367 		 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3,
2368 		 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5,
2369 		 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
2370 		 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
2371 		 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9,
2372 		 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa,
2373 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2374 		 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2375 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2376 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2377 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2378 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2379 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2380 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2381 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2382 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2383 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2384 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2385 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2386 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2387 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2388 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2389 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2390 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2391 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2392 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2393 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2394 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2395 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2396 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2397 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2398 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2399 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2400 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2401 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2402 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2403 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2404 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2405 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2406 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2407 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2408 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2409 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2410 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2411 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2412 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2413 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2414 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2415 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2416 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2417 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
2418 		{0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x05,
2419 		 0x07, 0x08, 0x09, 0x0a, 0x0d, 0x0e, 0x10, 0x11,
2420 		 0x12, 0x14, 0x15, 0x16, 0x16, 0x17, 0x18, 0x1a,
2421 		 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x20, 0x22, 0x23,
2422 		 0x25, 0x26, 0x26, 0x27, 0x28, 0x29, 0x29, 0x2b,
2423 		 0x2c, 0x2d, 0x2d, 0x2f, 0x30, 0x30, 0x31, 0x33,
2424 		 0x33, 0x34, 0x35, 0x35, 0x37, 0x38, 0x38, 0x39,
2425 		 0x3a, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 0x3d, 0x3f,
2426 		 0x3f, 0x40, 0x42, 0x42, 0x43, 0x43, 0x44, 0x44,
2427 		 0x45, 0x45, 0x47, 0x47, 0x48, 0x48, 0x49, 0x4a,
2428 		 0x4a, 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4d, 0x4d,
2429 		 0x4f, 0x4f, 0x50, 0x50, 0x52, 0x52, 0x53, 0x53,
2430 		 0x54, 0x54, 0x55, 0x55, 0x56, 0x56, 0x56, 0x58,
2431 		 0x58, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b,
2432 		 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 0x5f,
2433 		 0x60, 0x60, 0x61, 0x61, 0x61, 0x62, 0x62, 0x63,
2434 		 0x63, 0x63, 0x65, 0x65, 0x65, 0x66, 0x66, 0x67,
2435 		 0x67, 0x67, 0x68, 0x68, 0x68, 0x69, 0x69, 0x69,
2436 		 0x6a, 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d,
2437 		 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70,
2438 		 0x70, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73, 0x73,
2439 		 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77, 0x77,
2440 		 0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79,
2441 		 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c,
2442 		 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7f, 0x7f,
2443 		 0x7f, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81,
2444 		 0x82, 0x82, 0x82, 0x82, 0x84, 0x84, 0x84, 0x84,
2445 		 0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x88,
2446 		 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, 0x8a,
2447 		 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8d,
2448 		 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8f,
2449 		 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90, 0x91,
2450 		 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92,
2451 		 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94,
2452 		 0x94, 0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97,
2453 		 0x97, 0x98, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99,
2454 		 0x99, 0x99, 0x99, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b,
2455 		 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9c,
2456 		 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e,
2457 		 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa1,
2458 		 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2,
2459 		 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
2460 		 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
2461 		 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8,
2462 		 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab,
2463 		 0xab, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac,
2464 		 0xac, 0xac, 0xad, 0xad, 0xad, 0xad, 0xad, 0xae,
2465 		 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf,
2466 		 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1,
2467 		 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2,
2468 		 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3,
2469 		 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6,
2470 		 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7,
2471 		 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9,
2472 		 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba,
2473 		 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc,
2474 		 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe,
2475 		 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf,
2476 		 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
2477 		 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3,
2478 		 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4,
2479 		 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5,
2480 		 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7,
2481 		 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9,
2482 		 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
2483 		 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc,
2484 		 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
2485 		 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce,
2486 		 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf,
2487 		 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1,
2488 		 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3,
2489 		 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4,
2490 		 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
2491 		 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8,
2492 		 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9,
2493 		 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda,
2494 		 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb,
2495 		 0xdb, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
2496 		 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf,
2497 		 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0,
2498 		 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1,
2499 		 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
2500 		 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4,
2501 		 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
2502 		 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6,
2503 		 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
2504 		 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9,
2505 		 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
2506 		 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
2507 		 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed,
2508 		 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xef,
2509 		 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
2510 		 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1,
2511 		 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4,
2512 		 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5,
2513 		 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6,
2514 		 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
2515 		 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9,
2516 		 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa,
2517 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb,
2518 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2519 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2520 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2521 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2522 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2523 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2524 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2525 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2526 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2527 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2528 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2529 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2530 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2531 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2532 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2533 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2534 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2535 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2536 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2537 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2538 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2539 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2540 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2541 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2542 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2543 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2544 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2545 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
2546 		{0x00, 0x00, 0x00, 0x01, 0x02, 0x05, 0x07, 0x08,
2547 		 0x09, 0x0a, 0x0c, 0x0e, 0x10, 0x11, 0x12, 0x14,
2548 		 0x15, 0x16, 0x17, 0x18, 0x1a, 0x1b, 0x1c, 0x1e,
2549 		 0x1f, 0x20, 0x20, 0x22, 0x23, 0x25, 0x26, 0x27,
2550 		 0x28, 0x28, 0x29, 0x2b, 0x2c, 0x2d, 0x2d, 0x2f,
2551 		 0x30, 0x31, 0x31, 0x33, 0x34, 0x35, 0x35, 0x37,
2552 		 0x38, 0x38, 0x39, 0x3a, 0x3a, 0x3b, 0x3c, 0x3c,
2553 		 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x42, 0x43, 0x43,
2554 		 0x44, 0x44, 0x45, 0x47, 0x47, 0x48, 0x48, 0x49,
2555 		 0x4a, 0x4a, 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4d,
2556 		 0x4f, 0x4f, 0x50, 0x50, 0x52, 0x52, 0x53, 0x53,
2557 		 0x54, 0x54, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58,
2558 		 0x59, 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c,
2559 		 0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61,
2560 		 0x61, 0x61, 0x62, 0x62, 0x63, 0x63, 0x65, 0x65,
2561 		 0x65, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68, 0x68,
2562 		 0x69, 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6c, 0x6c,
2563 		 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f,
2564 		 0x70, 0x70, 0x70, 0x71, 0x71, 0x71, 0x73, 0x73,
2565 		 0x73, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77,
2566 		 0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x7a,
2567 		 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c,
2568 		 0x7c, 0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 0x7f, 0x80,
2569 		 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82,
2570 		 0x82, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85,
2571 		 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89,
2572 		 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b,
2573 		 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e,
2574 		 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90,
2575 		 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92,
2576 		 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94,
2577 		 0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x97,
2578 		 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99,
2579 		 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b,
2580 		 0x9b, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d,
2581 		 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0,
2582 		 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2,
2583 		 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4,
2584 		 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5,
2585 		 0xa5, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8,
2586 		 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab,
2587 		 0xab, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac,
2588 		 0xad, 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae,
2589 		 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0,
2590 		 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1,
2591 		 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3,
2592 		 0xb3, 0xb3, 0xb3, 0xb4, 0xb3, 0xb4, 0xb4, 0xb4,
2593 		 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
2594 		 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8,
2595 		 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba,
2596 		 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc,
2597 		 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe,
2598 		 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf,
2599 		 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2,
2600 		 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3,
2601 		 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5,
2602 		 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6,
2603 		 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
2604 		 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2605 		 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb,
2606 		 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
2607 		 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce,
2608 		 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
2609 		 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0,
2610 		 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3,
2611 		 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4,
2612 		 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
2613 		 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8,
2614 		 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9,
2615 		 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda,
2616 		 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd,
2617 		 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
2618 		 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf,
2619 		 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
2620 		 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
2621 		 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3,
2622 		 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
2623 		 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6,
2624 		 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7,
2625 		 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8,
2626 		 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9,
2627 		 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec,
2628 		 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed, 0xed,
2629 		 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
2630 		 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
2631 		 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1,
2632 		 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3,
2633 		 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4,
2634 		 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6,
2635 		 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7,
2636 		 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
2637 		 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
2638 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2639 		 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2640 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2641 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2642 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2643 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2644 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2645 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2646 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2647 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2648 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2649 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2650 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2651 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2652 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2653 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2654 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2655 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2656 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2657 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2658 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2659 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2660 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2661 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2662 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2663 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2664 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2665 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2666 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2667 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2668 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2669 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2670 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2671 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2672 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2673 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}
2674 	    },
2675 	    {				/* gamma 3 - from tp6810 + cx0342 */
2676 		{0x08, 0x09, 0x0c, 0x0d, 0x10, 0x11, 0x14, 0x15,
2677 		 0x17, 0x18, 0x1a, 0x1c, 0x1e, 0x1f, 0x20, 0x23,
2678 		 0x25, 0x26, 0x27, 0x28, 0x2b, 0x2c, 0x2d, 0x2f,
2679 		 0x30, 0x31, 0x33, 0x34, 0x35, 0x37, 0x38, 0x39,
2680 		 0x3a, 0x3b, 0x3c, 0x3d, 0x3f, 0x40, 0x42, 0x43,
2681 		 0x44, 0x45, 0x47, 0x48, 0x48, 0x49, 0x4a, 0x4b,
2682 		 0x4c, 0x4d, 0x4d, 0x4f, 0x50, 0x52, 0x53, 0x53,
2683 		 0x54, 0x55, 0x56, 0x56, 0x58, 0x59, 0x5a, 0x5a,
2684 		 0x5b, 0x5c, 0x5c, 0x5e, 0x5f, 0x5f, 0x60, 0x61,
2685 		 0x61, 0x62, 0x63, 0x63, 0x65, 0x66, 0x66, 0x67,
2686 		 0x68, 0x68, 0x69, 0x69, 0x6a, 0x6c, 0x6c, 0x6d,
2687 		 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x73,
2688 		 0x73, 0x74, 0x74, 0x75, 0x75, 0x77, 0x77, 0x78,
2689 		 0x78, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c,
2690 		 0x7d, 0x7d, 0x7f, 0x7f, 0x80, 0x80, 0x81, 0x81,
2691 		 0x82, 0x82, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86,
2692 		 0x86, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b,
2693 		 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8f, 0x8f,
2694 		 0x90, 0x90, 0x91, 0x91, 0x91, 0x92, 0x92, 0x93,
2695 		 0x93, 0x93, 0x94, 0x94, 0x96, 0x96, 0x97, 0x97,
2696 		 0x97, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a,
2697 		 0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d,
2698 		 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1,
2699 		 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
2700 		 0xa4, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa8, 0xa8,
2701 		 0xa8, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xac,
2702 		 0xac, 0xac, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae,
2703 		 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1,
2704 		 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3,
2705 		 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
2706 		 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9,
2707 		 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd,
2708 		 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf,
2709 		 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2,
2710 		 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc5,
2711 		 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7,
2712 		 0xc7, 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2713 		 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc,
2714 		 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce,
2715 		 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0,
2716 		 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3,
2717 		 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6,
2718 		 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
2719 		 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda,
2720 		 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd,
2721 		 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf,
2722 		 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1,
2723 		 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
2724 		 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4,
2725 		 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
2726 		 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8,
2727 		 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb,
2728 		 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
2729 		 0xed, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee,
2730 		 0xee, 0xee, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0,
2731 		 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1,
2732 		 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4,
2733 		 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6,
2734 		 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
2735 		 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9,
2736 		 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2737 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb,
2738 		 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
2739 		 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd,
2740 		 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff,
2741 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2742 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2743 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2744 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2745 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2746 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2747 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2748 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2749 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2750 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2751 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2752 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2753 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2754 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2755 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2756 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2757 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2758 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2759 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2760 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2761 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2762 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2763 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2764 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2765 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2766 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2767 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2768 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2769 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2770 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2771 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2772 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2773 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2774 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2775 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2776 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2777 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2778 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2779 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2780 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2781 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2782 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2783 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2784 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2785 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2786 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2787 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2788 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2789 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2790 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2791 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2792 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2793 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2794 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2795 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2796 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2797 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2798 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2799 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2800 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2801 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2802 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2803 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
2804 		{0x03, 0x05, 0x07, 0x09, 0x0a, 0x0c, 0x0d, 0x10,
2805 		 0x11, 0x12, 0x14, 0x15, 0x17, 0x18, 0x1a, 0x1b,
2806 		 0x1c, 0x1e, 0x1f, 0x20, 0x22, 0x23, 0x25, 0x26,
2807 		 0x27, 0x28, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2f,
2808 		 0x30, 0x31, 0x33, 0x33, 0x34, 0x35, 0x37, 0x38,
2809 		 0x38, 0x39, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 0x3f,
2810 		 0x3f, 0x40, 0x42, 0x42, 0x43, 0x44, 0x45, 0x45,
2811 		 0x47, 0x47, 0x48, 0x49, 0x49, 0x4a, 0x4b, 0x4b,
2812 		 0x4c, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x52, 0x52,
2813 		 0x53, 0x53, 0x54, 0x54, 0x55, 0x55, 0x56, 0x58,
2814 		 0x58, 0x59, 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c,
2815 		 0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61,
2816 		 0x61, 0x62, 0x62, 0x63, 0x63, 0x65, 0x65, 0x66,
2817 		 0x66, 0x67, 0x67, 0x67, 0x68, 0x68, 0x69, 0x69,
2818 		 0x6a, 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e,
2819 		 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71,
2820 		 0x71, 0x73, 0x73, 0x74, 0x74, 0x74, 0x75, 0x75,
2821 		 0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x79,
2822 		 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c,
2823 		 0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80,
2824 		 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x84,
2825 		 0x84, 0x84, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86,
2826 		 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a,
2827 		 0x8a, 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e,
2828 		 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90,
2829 		 0x90, 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92,
2830 		 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x96,
2831 		 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x98, 0x98,
2832 		 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a, 0x9a,
2833 		 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c,
2834 		 0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e,
2835 		 0xa0, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1,
2836 		 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3,
2837 		 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5,
2838 		 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
2839 		 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab,
2840 		 0xab, 0xac, 0xac, 0xac, 0xac, 0xad, 0xad, 0xad,
2841 		 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf,
2842 		 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1,
2843 		 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2,
2844 		 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb4, 0xb4,
2845 		 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
2846 		 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9,
2847 		 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba,
2848 		 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd,
2849 		 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
2850 		 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0,
2851 		 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3,
2852 		 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4,
2853 		 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6,
2854 		 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
2855 		 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2856 		 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb,
2857 		 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
2858 		 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce,
2859 		 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0,
2860 		 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1,
2861 		 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4,
2862 		 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6,
2863 		 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
2864 		 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9,
2865 		 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda,
2866 		 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd,
2867 		 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
2868 		 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf,
2869 		 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1,
2870 		 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2,
2871 		 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
2872 		 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5,
2873 		 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
2874 		 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
2875 		 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9,
2876 		 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
2877 		 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec,
2878 		 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xee,
2879 		 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef,
2880 		 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
2881 		 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
2882 		 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4,
2883 		 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5,
2884 		 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6,
2885 		 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
2886 		 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9,
2887 		 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2888 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb,
2889 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc,
2890 		 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
2891 		 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe,
2892 		 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff,
2893 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2894 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2895 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2896 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2897 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2898 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2899 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2900 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2901 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2902 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2903 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2904 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2905 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2906 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2907 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2908 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2909 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2910 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2911 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2912 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2913 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2914 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2915 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2916 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2917 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2918 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2919 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2920 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2921 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2922 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2923 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2924 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2925 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2926 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2927 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2928 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2929 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2930 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2931 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
2932 		{0x07, 0x08, 0x0a, 0x0c, 0x0e, 0x10, 0x12, 0x14,
2933 		 0x16, 0x17, 0x18, 0x1b, 0x1c, 0x1e, 0x1f, 0x20,
2934 		 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2d,
2935 		 0x2f, 0x30, 0x31, 0x33, 0x34, 0x35, 0x37, 0x38,
2936 		 0x39, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 0x3f, 0x40,
2937 		 0x42, 0x43, 0x44, 0x44, 0x45, 0x47, 0x48, 0x49,
2938 		 0x4a, 0x4a, 0x4b, 0x4c, 0x4d, 0x4d, 0x4f, 0x50,
2939 		 0x52, 0x52, 0x53, 0x54, 0x55, 0x55, 0x56, 0x58,
2940 		 0x58, 0x59, 0x5a, 0x5b, 0x5b, 0x5c, 0x5e, 0x5e,
2941 		 0x5f, 0x5f, 0x60, 0x61, 0x61, 0x62, 0x63, 0x63,
2942 		 0x65, 0x65, 0x66, 0x67, 0x67, 0x68, 0x68, 0x69,
2943 		 0x6a, 0x6a, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e, 0x6e,
2944 		 0x6f, 0x70, 0x70, 0x71, 0x71, 0x73, 0x73, 0x74,
2945 		 0x74, 0x75, 0x75, 0x77, 0x77, 0x78, 0x78, 0x79,
2946 		 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d,
2947 		 0x7d, 0x7f, 0x7f, 0x80, 0x80, 0x81, 0x81, 0x81,
2948 		 0x82, 0x82, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86,
2949 		 0x88, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b,
2950 		 0x8b, 0x8b, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f,
2951 		 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x92, 0x92,
2952 		 0x92, 0x93, 0x93, 0x94, 0x94, 0x94, 0x96, 0x96,
2953 		 0x96, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99,
2954 		 0x99, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
2955 		 0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0xa0,
2956 		 0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa3,
2957 		 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5,
2958 		 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 0xa9,
2959 		 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac,
2960 		 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xaf, 0xaf,
2961 		 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1,
2962 		 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb4,
2963 		 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
2964 		 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9,
2965 		 0xb9, 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc,
2966 		 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbf,
2967 		 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2,
2968 		 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc4,
2969 		 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6,
2970 		 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9,
2971 		 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb,
2972 		 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
2973 		 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xcf,
2974 		 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1,
2975 		 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3,
2976 		 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6,
2977 		 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
2978 		 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda,
2979 		 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd,
2980 		 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde,
2981 		 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
2982 		 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
2983 		 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4,
2984 		 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5,
2985 		 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7,
2986 		 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9,
2987 		 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb,
2988 		 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed,
2989 		 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
2990 		 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
2991 		 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
2992 		 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
2993 		 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6,
2994 		 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
2995 		 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9,
2996 		 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2997 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb,
2998 		 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
2999 		 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd,
3000 		 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff,
3001 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3002 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3003 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3004 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3005 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3006 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3007 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3008 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3009 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3010 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3011 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3012 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3013 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3014 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3015 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3016 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3017 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3018 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3019 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3020 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3021 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3022 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3023 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3024 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3025 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3026 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3027 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3028 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3029 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3030 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3031 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3032 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3033 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3034 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3035 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3036 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3037 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3038 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3039 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3040 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3041 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3042 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3043 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3044 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3045 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3046 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3047 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3048 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3049 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3050 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3051 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3052 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3053 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3054 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3055 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3056 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3057 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3058 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3059 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
3060 	    },
3061 	    {				/* gamma 4 - from tp6800 + soi763a */
3062 		{0x11, 0x14, 0x15, 0x17, 0x1a, 0x1b, 0x1e, 0x1f,
3063 		 0x22, 0x23, 0x25, 0x27, 0x28, 0x2b, 0x2c, 0x2d,
3064 		 0x2f, 0x31, 0x33, 0x34, 0x35, 0x38, 0x39, 0x3a,
3065 		 0x3b, 0x3c, 0x3d, 0x40, 0x42, 0x43, 0x44, 0x45,
3066 		 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4f,
3067 		 0x50, 0x52, 0x53, 0x53, 0x54, 0x55, 0x56, 0x58,
3068 		 0x59, 0x5a, 0x5b, 0x5b, 0x5c, 0x5e, 0x5f, 0x60,
3069 		 0x61, 0x61, 0x62, 0x63, 0x65, 0x65, 0x66, 0x67,
3070 		 0x68, 0x68, 0x69, 0x6a, 0x6c, 0x6c, 0x6d, 0x6e,
3071 		 0x6f, 0x6f, 0x70, 0x71, 0x71, 0x73, 0x74, 0x74,
3072 		 0x75, 0x77, 0x77, 0x78, 0x79, 0x79, 0x7a, 0x7a,
3073 		 0x7b, 0x7c, 0x7c, 0x7d, 0x7f, 0x7f, 0x80, 0x80,
3074 		 0x81, 0x81, 0x82, 0x84, 0x84, 0x85, 0x85, 0x86,
3075 		 0x86, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b, 0x8b,
3076 		 0x8d, 0x8d, 0x8e, 0x8e, 0x8f, 0x90, 0x90, 0x91,
3077 		 0x91, 0x92, 0x92, 0x93, 0x93, 0x94, 0x94, 0x96,
3078 		 0x96, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99,
3079 		 0x9a, 0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9d, 0x9d,
3080 		 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa2,
3081 		 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa5, 0xa5,
3082 		 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa9, 0xa9, 0xab,
3083 		 0xab, 0xab, 0xac, 0xac, 0xad, 0xad, 0xad, 0xae,
3084 		 0xae, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb1, 0xb1,
3085 		 0xb1, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb4, 0xb4,
3086 		 0xb4, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb8, 0xb8,
3087 		 0xb8, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xbc,
3088 		 0xbc, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbf,
3089 		 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2,
3090 		 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3091 		 0xc5, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc9,
3092 		 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb,
3093 		 0xcb, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xce,
3094 		 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0,
3095 		 0xd0, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
3096 		 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7,
3097 		 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
3098 		 0xd9, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb,
3099 		 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xdf,
3100 		 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1,
3101 		 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3,
3102 		 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
3103 		 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7,
3104 		 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9,
3105 		 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec,
3106 		 0xec, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee,
3107 		 0xee, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
3108 		 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3,
3109 		 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5,
3110 		 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7,
3111 		 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9,
3112 		 0xf9, 0xf9, 0xfa, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa,
3113 		 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3114 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3115 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3116 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3117 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3118 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3119 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3120 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3121 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3122 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3123 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3124 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3125 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3126 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3127 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3128 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3129 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3130 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3131 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3132 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3133 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3134 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3135 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3136 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3137 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3138 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3139 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3140 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3141 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3142 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3143 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3144 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3145 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3146 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3147 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3148 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3149 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3150 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3151 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3152 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3153 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3154 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3155 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3156 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3157 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3158 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3159 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3160 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3161 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3162 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3163 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3164 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3165 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3166 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3167 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3168 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3169 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3170 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3171 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3172 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3173 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3174 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3175 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3176 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3177 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3178 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3179 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3180 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3181 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3182 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3183 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3184 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3185 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3186 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3187 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3188 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3189 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
3190 		{0x08, 0x0a, 0x0c, 0x0e, 0x10, 0x11, 0x14, 0x15,
3191 		 0x16, 0x17, 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20,
3192 		 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2c,
3193 		 0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34, 0x34, 0x35,
3194 		 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3c, 0x3d,
3195 		 0x3f, 0x40, 0x42, 0x42, 0x43, 0x44, 0x45, 0x45,
3196 		 0x47, 0x48, 0x49, 0x49, 0x4a, 0x4b, 0x4b, 0x4c,
3197 		 0x4d, 0x4f, 0x4f, 0x50, 0x52, 0x52, 0x53, 0x54,
3198 		 0x54, 0x55, 0x55, 0x56, 0x58, 0x58, 0x59, 0x5a,
3199 		 0x5a, 0x5b, 0x5b, 0x5c, 0x5e, 0x5e, 0x5f, 0x5f,
3200 		 0x60, 0x60, 0x61, 0x61, 0x62, 0x63, 0x63, 0x65,
3201 		 0x65, 0x66, 0x66, 0x67, 0x67, 0x68, 0x68, 0x69,
3202 		 0x69, 0x6a, 0x6a, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e,
3203 		 0x6e, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71, 0x73,
3204 		 0x73, 0x74, 0x74, 0x74, 0x75, 0x75, 0x77, 0x77,
3205 		 0x78, 0x78, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b,
3206 		 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7f, 0x7f,
3207 		 0x7f, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82,
3208 		 0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86, 0x86,
3209 		 0x88, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8a,
3210 		 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e,
3211 		 0x8e, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91,
3212 		 0x91, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x94,
3213 		 0x94, 0x94, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97,
3214 		 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a,
3215 		 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c,
3216 		 0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0xa0,
3217 		 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2,
3218 		 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa4,
3219 		 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6, 0xa6,
3220 		 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab,
3221 		 0xaa, 0xab, 0xab, 0xac, 0xac, 0xac, 0xad, 0xad,
3222 		 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf,
3223 		 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1,
3224 		 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3,
3225 		 0xb3, 0xb3, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6,
3226 		 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8,
3227 		 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba,
3228 		 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd,
3229 		 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
3230 		 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0,
3231 		 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3,
3232 		 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3233 		 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7,
3234 		 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9, 0xc9,
3235 		 0xca, 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb,
3236 		 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd,
3237 		 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce,
3238 		 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0,
3239 		 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3,
3240 		 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4,
3241 		 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7,
3242 		 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8,
3243 		 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda,
3244 		 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb,
3245 		 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
3246 		 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf,
3247 		 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1,
3248 		 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
3249 		 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4,
3250 		 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5,
3251 		 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7,
3252 		 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8,
3253 		 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb,
3254 		 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
3255 		 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed,
3256 		 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef,
3257 		 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
3258 		 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
3259 		 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
3260 		 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5,
3261 		 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7,
3262 		 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
3263 		 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
3264 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
3265 		 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3266 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3267 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3268 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3269 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3270 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3271 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3272 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3273 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3274 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3275 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3276 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3277 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3278 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3279 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3280 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3281 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3282 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3283 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3284 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3285 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3286 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3287 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3288 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3289 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3290 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3291 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3292 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3293 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3294 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3295 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3296 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3297 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3298 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3299 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3300 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3301 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3302 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3303 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3304 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3305 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3306 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3307 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3308 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3309 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3310 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3311 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3312 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3313 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3314 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3315 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3316 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3317 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
3318 		{0x0d, 0x10, 0x11, 0x14, 0x15, 0x17, 0x18, 0x1b,
3319 		 0x1c, 0x1e, 0x20, 0x22, 0x23, 0x26, 0x27, 0x28,
3320 		 0x29, 0x2b, 0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34,
3321 		 0x35, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d,
3322 		 0x3f, 0x40, 0x42, 0x43, 0x44, 0x45, 0x47, 0x48,
3323 		 0x49, 0x4a, 0x4b, 0x4b, 0x4c, 0x4d, 0x4f, 0x50,
3324 		 0x52, 0x52, 0x53, 0x54, 0x55, 0x56, 0x56, 0x58,
3325 		 0x59, 0x5a, 0x5a, 0x5b, 0x5c, 0x5e, 0x5e, 0x5f,
3326 		 0x60, 0x60, 0x61, 0x62, 0x62, 0x63, 0x65, 0x65,
3327 		 0x66, 0x67, 0x67, 0x68, 0x69, 0x69, 0x6a, 0x6c,
3328 		 0x6c, 0x6d, 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x70,
3329 		 0x71, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x77,
3330 		 0x78, 0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b,
3331 		 0x7c, 0x7c, 0x7d, 0x7d, 0x7f, 0x7f, 0x80, 0x80,
3332 		 0x81, 0x81, 0x82, 0x82, 0x84, 0x84, 0x85, 0x85,
3333 		 0x86, 0x86, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a,
3334 		 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8f,
3335 		 0x8f, 0x90, 0x90, 0x91, 0x91, 0x91, 0x92, 0x92,
3336 		 0x93, 0x93, 0x94, 0x94, 0x94, 0x96, 0x96, 0x97,
3337 		 0x97, 0x98, 0x98, 0x98, 0x99, 0x99, 0x9a, 0x9a,
3338 		 0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d,
3339 		 0x9d, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1,
3340 		 0xa1, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
3341 		 0xa4, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa8, 0xa8,
3342 		 0xa8, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xac,
3343 		 0xac, 0xac, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae,
3344 		 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1,
3345 		 0xb1, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb4,
3346 		 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
3347 		 0xb7, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xba,
3348 		 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd,
3349 		 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
3350 		 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 0xc3,
3351 		 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3352 		 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7,
3353 		 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca,
3354 		 0xca, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc,
3355 		 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce,
3356 		 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0,
3357 		 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
3358 		 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6,
3359 		 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8,
3360 		 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda,
3361 		 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
3362 		 0xdd, 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf,
3363 		 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1,
3364 		 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3,
3365 		 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5,
3366 		 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6,
3367 		 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8,
3368 		 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb,
3369 		 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed,
3370 		 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
3371 		 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
3372 		 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
3373 		 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4,
3374 		 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
3375 		 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8,
3376 		 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9,
3377 		 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
3378 		 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3379 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3380 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3381 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3382 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3383 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3384 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3385 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3386 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3387 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3388 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3389 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3390 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3391 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3392 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3393 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3394 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3395 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3396 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3397 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3398 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3399 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3400 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3401 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3402 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3403 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3404 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3405 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3406 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3407 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3408 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3409 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3410 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3411 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3412 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3413 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3414 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3415 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3416 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3417 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3418 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3419 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3420 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3421 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3422 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3423 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3424 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3425 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3426 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3427 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3428 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3429 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3430 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3431 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3432 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3433 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3434 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3435 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3436 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3437 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3438 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3439 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3440 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3441 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3442 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3443 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3444 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3445 		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}
3446 	    },
3447 	    {							/* gamma 5 */
3448 		{0x16, 0x18, 0x19, 0x1b, 0x1d, 0x1e, 0x20, 0x21,
3449 		 0x23, 0x24, 0x25, 0x27, 0x28, 0x2a, 0x2b, 0x2c,
3450 		 0x2d, 0x2f, 0x30, 0x31, 0x32, 0x34, 0x35, 0x36,
3451 		 0x37, 0x38, 0x39, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
3452 		 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
3453 		 0x48, 0x49, 0x4a, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e,
3454 		 0x4f, 0x50, 0x51, 0x51, 0x52, 0x53, 0x54, 0x55,
3455 		 0x56, 0x56, 0x57, 0x58, 0x59, 0x59, 0x5a, 0x5b,
3456 		 0x5c, 0x5c, 0x5d, 0x5e, 0x5f, 0x5f, 0x60, 0x61,
3457 		 0x62, 0x62, 0x63, 0x64, 0x64, 0x65, 0x66, 0x66,
3458 		 0x67, 0x68, 0x68, 0x69, 0x6a, 0x6a, 0x6b, 0x6b,
3459 		 0x6c, 0x6d, 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x70,
3460 		 0x71, 0x71, 0x72, 0x73, 0x73, 0x74, 0x74, 0x75,
3461 		 0x75, 0x76, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79,
3462 		 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e,
3463 		 0x7e, 0x7f, 0x7f, 0x80, 0x80, 0x81, 0x81, 0x82,
3464 		 0x82, 0x83, 0x83, 0x84, 0x84, 0x84, 0x85, 0x85,
3465 		 0x86, 0x86, 0x87, 0x87, 0x88, 0x88, 0x89, 0x89,
3466 		 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8d,
3467 		 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x90, 0x90,
3468 		 0x91, 0x91, 0x91, 0x92, 0x92, 0x93, 0x93, 0x94,
3469 		 0x94, 0x94, 0x95, 0x95, 0x96, 0x96, 0x96, 0x97,
3470 		 0x97, 0x98, 0x98, 0x98, 0x99, 0x99, 0x9a, 0x9a,
3471 		 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9d, 0x9d,
3472 		 0x9d, 0x9e, 0x9e, 0x9e, 0x9f, 0x9f, 0xa0, 0xa0,
3473 		 0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa3,
3474 		 0xa3, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa6,
3475 		 0xa6, 0xa6, 0xa7, 0xa7, 0xa7, 0xa8, 0xa8, 0xa8,
3476 		 0xa9, 0xa9, 0xa9, 0xaa, 0xaa, 0xaa, 0xab, 0xab,
3477 		 0xab, 0xac, 0xac, 0xac, 0xad, 0xad, 0xad, 0xae,
3478 		 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
3479 		 0xb0, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb3,
3480 		 0xb3, 0xb3, 0xb4, 0xb4, 0xb4, 0xb4, 0xb5, 0xb5,
3481 		 0xb5, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7,
3482 		 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xba, 0xba,
3483 		 0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbc, 0xbc, 0xbc,
3484 		 0xbc, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe,
3485 		 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1,
3486 		 0xc1, 0xc1, 0xc1, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3,
3487 		 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3488 		 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7,
3489 		 0xc7, 0xc8, 0xc8, 0xc8, 0xc8, 0xc9, 0xc9, 0xc9,
3490 		 0xc9, 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb,
3491 		 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd,
3492 		 0xcd, 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf,
3493 		 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1,
3494 		 0xd1, 0xd2, 0xd2, 0xd2, 0xd2, 0xd3, 0xd3, 0xd3,
3495 		 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd5, 0xd5, 0xd5,
3496 		 0xd5, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7,
3497 		 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9,
3498 		 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
3499 		 0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdc, 0xdd,
3500 		 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde,
3501 		 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0,
3502 		 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
3503 		 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4,
3504 		 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5,
3505 		 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7,
3506 		 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9,
3507 		 0xe9, 0xe9, 0xea, 0xea, 0xea, 0xea, 0xea, 0xeb,
3508 		 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
3509 		 0xed, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee,
3510 		 0xee, 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
3511 		 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1,
3512 		 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf3, 0xf3, 0xf3,
3513 		 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5,
3514 		 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6,
3515 		 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8,
3516 		 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
3517 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb,
3518 		 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd,
3519 		 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
3520 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3521 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3522 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3523 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3524 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3525 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3526 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3527 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3528 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3529 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3530 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3531 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3532 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3533 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3534 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3535 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3536 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3537 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3538 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3539 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3540 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3541 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3542 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3543 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3544 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3545 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3546 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3547 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3548 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3549 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3550 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3551 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3552 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3553 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3554 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3555 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3556 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3557 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3558 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3559 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3560 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3561 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3562 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3563 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3564 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3565 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3566 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3567 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3568 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3569 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3570 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3571 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3572 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3573 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3574 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3575 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
3576 		{0x0f, 0x11, 0x12, 0x14, 0x15, 0x16, 0x18, 0x19,
3577 		 0x1a, 0x1b, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22,
3578 		 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b,
3579 		 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x31, 0x32,
3580 		 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x38, 0x39,
3581 		 0x3a, 0x3b, 0x3c, 0x3c, 0x3d, 0x3e, 0x3f, 0x3f,
3582 		 0x40, 0x41, 0x42, 0x42, 0x43, 0x44, 0x44, 0x45,
3583 		 0x46, 0x47, 0x47, 0x48, 0x49, 0x49, 0x4a, 0x4b,
3584 		 0x4b, 0x4c, 0x4c, 0x4d, 0x4e, 0x4e, 0x4f, 0x50,
3585 		 0x50, 0x51, 0x51, 0x52, 0x53, 0x53, 0x54, 0x54,
3586 		 0x55, 0x55, 0x56, 0x56, 0x57, 0x58, 0x58, 0x59,
3587 		 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 0x5d,
3588 		 0x5d, 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61,
3589 		 0x61, 0x62, 0x62, 0x63, 0x63, 0x64, 0x64, 0x65,
3590 		 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x68, 0x68,
3591 		 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6b, 0x6b, 0x6c,
3592 		 0x6c, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6f, 0x6f,
3593 		 0x6f, 0x70, 0x70, 0x71, 0x71, 0x71, 0x72, 0x72,
3594 		 0x73, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x75,
3595 		 0x76, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78, 0x78,
3596 		 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b,
3597 		 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e,
3598 		 0x7e, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x81,
3599 		 0x81, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83,
3600 		 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x86,
3601 		 0x86, 0x86, 0x87, 0x87, 0x87, 0x88, 0x88, 0x88,
3602 		 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8b,
3603 		 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8d, 0x8d,
3604 		 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f,
3605 		 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
3606 		 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x94,
3607 		 0x94, 0x94, 0x94, 0x95, 0x95, 0x95, 0x96, 0x96,
3608 		 0x96, 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98,
3609 		 0x98, 0x98, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
3610 		 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
3611 		 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e,
3612 		 0x9e, 0x9e, 0x9f, 0x9f, 0x9f, 0x9f, 0xa0, 0xa0,
3613 		 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2,
3614 		 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4,
3615 		 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
3616 		 0xa6, 0xa6, 0xa6, 0xa6, 0xa7, 0xa7, 0xa7, 0xa7,
3617 		 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9,
3618 		 0xa9, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xab, 0xab,
3619 		 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
3620 		 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae,
3621 		 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
3622 		 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
3623 		 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
3624 		 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb5, 0xb5, 0xb5,
3625 		 0xb5, 0xb5, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7,
3626 		 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8,
3627 		 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba,
3628 		 0xba, 0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,
3629 		 0xbb, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd,
3630 		 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
3631 		 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0,
3632 		 0xc0, 0xc0, 0xc0, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1,
3633 		 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3,
3634 		 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4,
3635 		 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6,
3636 		 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
3637 		 0xc7, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc9, 0xc9,
3638 		 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca,
3639 		 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc,
3640 		 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd,
3641 		 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce,
3642 		 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0,
3643 		 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1,
3644 		 0xd1, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd3,
3645 		 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4,
3646 		 0xd4, 0xd4, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5,
3647 		 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7,
3648 		 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8,
3649 		 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda,
3650 		 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb,
3651 		 0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc,
3652 		 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde,
3653 		 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf,
3654 		 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
3655 		 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
3656 		 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3,
3657 		 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5,
3658 		 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
3659 		 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
3660 		 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9,
3661 		 0xe9, 0xe9, 0xe9, 0xe9, 0xea, 0xea, 0xea, 0xea,
3662 		 0xea, 0xea, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb,
3663 		 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed,
3664 		 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
3665 		 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
3666 		 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1,
3667 		 0xf1, 0xf1, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2,
3668 		 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4,
3669 		 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5,
3670 		 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7,
3671 		 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
3672 		 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa,
3673 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb,
3674 		 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd,
3675 		 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
3676 		 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3677 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3678 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3679 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3680 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3681 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3682 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3683 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3684 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3685 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3686 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3687 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3688 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3689 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3690 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3691 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3692 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3693 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3694 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3695 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3696 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3697 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3698 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3699 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3700 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3701 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3702 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3703 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
3704 		{0x13, 0x15, 0x16, 0x18, 0x19, 0x1b, 0x1c, 0x1e,
3705 		 0x1f, 0x20, 0x22, 0x23, 0x24, 0x26, 0x27, 0x28,
3706 		 0x29, 0x2a, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31,
3707 		 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
3708 		 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41,
3709 		 0x42, 0x43, 0x44, 0x44, 0x45, 0x46, 0x47, 0x48,
3710 		 0x49, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4d, 0x4e,
3711 		 0x4f, 0x50, 0x50, 0x51, 0x52, 0x53, 0x53, 0x54,
3712 		 0x55, 0x55, 0x56, 0x57, 0x57, 0x58, 0x59, 0x59,
3713 		 0x5a, 0x5b, 0x5b, 0x5c, 0x5d, 0x5d, 0x5e, 0x5f,
3714 		 0x5f, 0x60, 0x60, 0x61, 0x62, 0x62, 0x63, 0x63,
3715 		 0x64, 0x65, 0x65, 0x66, 0x66, 0x67, 0x67, 0x68,
3716 		 0x69, 0x69, 0x6a, 0x6a, 0x6b, 0x6b, 0x6c, 0x6c,
3717 		 0x6d, 0x6d, 0x6e, 0x6e, 0x6f, 0x6f, 0x70, 0x70,
3718 		 0x71, 0x71, 0x72, 0x72, 0x73, 0x73, 0x74, 0x74,
3719 		 0x75, 0x75, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78,
3720 		 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c,
3721 		 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f,
3722 		 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x83,
3723 		 0x83, 0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86,
3724 		 0x86, 0x87, 0x87, 0x88, 0x88, 0x88, 0x89, 0x89,
3725 		 0x89, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c,
3726 		 0x8c, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f,
3727 		 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x92, 0x92,
3728 		 0x92, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x95,
3729 		 0x95, 0x95, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97,
3730 		 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a,
3731 		 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d,
3732 		 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9f, 0x9f,
3733 		 0x9f, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa2,
3734 		 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
3735 		 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6,
3736 		 0xa7, 0xa7, 0xa7, 0xa7, 0xa8, 0xa8, 0xa8, 0xa9,
3737 		 0xa9, 0xa9, 0xa9, 0xaa, 0xaa, 0xaa, 0xab, 0xab,
3738 		 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xad, 0xad,
3739 		 0xad, 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf,
3740 		 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1,
3741 		 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
3742 		 0xb4, 0xb4, 0xb4, 0xb4, 0xb5, 0xb5, 0xb5, 0xb5,
3743 		 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7,
3744 		 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
3745 		 0xba, 0xba, 0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbb,
3746 		 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd,
3747 		 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf,
3748 		 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1, 0xc1, 0xc1,
3749 		 0xc1, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3,
3750 		 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3751 		 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7,
3752 		 0xc7, 0xc7, 0xc7, 0xc7, 0xc8, 0xc8, 0xc8, 0xc8,
3753 		 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca,
3754 		 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc,
3755 		 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
3756 		 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
3757 		 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1,
3758 		 0xd1, 0xd1, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd3,
3759 		 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4,
3760 		 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd6, 0xd6, 0xd6,
3761 		 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8,
3762 		 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9,
3763 		 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb,
3764 		 0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc,
3765 		 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
3766 		 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0,
3767 		 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1,
3768 		 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3,
3769 		 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
3770 		 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6,
3771 		 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
3772 		 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9,
3773 		 0xe9, 0xe9, 0xe9, 0xea, 0xea, 0xea, 0xea, 0xea,
3774 		 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec,
3775 		 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed,
3776 		 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef,
3777 		 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
3778 		 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf2, 0xf2, 0xf2,
3779 		 0xf2, 0xf2, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3,
3780 		 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5,
3781 		 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6,
3782 		 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8,
3783 		 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
3784 		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb,
3785 		 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
3786 		 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe,
3787 		 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3788 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3789 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3790 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3791 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3792 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3793 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3794 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3795 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3796 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3797 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3798 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3799 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3800 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3801 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3802 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3803 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3804 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3805 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3806 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3807 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3808 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3809 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3810 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3811 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3812 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3813 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3814 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3815 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3816 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3817 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3818 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3819 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3820 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3821 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3822 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3823 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3824 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3825 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3826 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3827 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3828 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3829 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3830 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3831 		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
3832 	    },
3833 	};
3834 
3835 	reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00);
3836 	if (sd->bridge == BRIDGE_TP6810)
3837 		reg_w(gspca_dev, 0x02, 0x28);
3838 /*	msleep(50); */
3839 	gamma = sd->ctrls[GAMMA].val;
3840 	bulk_w(gspca_dev, 0x00, gamma_tb[gamma][0], 1024);
3841 	bulk_w(gspca_dev, 0x01, gamma_tb[gamma][1], 1024);
3842 	bulk_w(gspca_dev, 0x02, gamma_tb[gamma][2], 1024);
3843 	if (sd->bridge == BRIDGE_TP6810) {
3844 		int i;
3845 
3846 		reg_w(gspca_dev, 0x02, 0x2b);
3847 		reg_w(gspca_dev, 0x02, 0x28);
3848 		for (i = 0; i < 6; i++)
3849 			reg_w(gspca_dev, TP6800_R55_GAMMA_R,
3850 				gamma_tb[gamma][0][i]);
3851 		reg_w(gspca_dev, 0x02, 0x2b);
3852 		reg_w(gspca_dev, 0x02, 0x28);
3853 		for (i = 0; i < 6; i++)
3854 			reg_w(gspca_dev, TP6800_R56_GAMMA_G,
3855 				gamma_tb[gamma][1][i]);
3856 		reg_w(gspca_dev, 0x02, 0x2b);
3857 		reg_w(gspca_dev, 0x02, 0x28);
3858 		for (i = 0; i < 6; i++)
3859 			reg_w(gspca_dev, TP6800_R57_GAMMA_B,
3860 				gamma_tb[gamma][2][i]);
3861 		reg_w(gspca_dev, 0x02, 0x28);
3862 	}
3863 	reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03);
3864 /*	msleep(50); */
3865 }
3866 
setsharpness(struct gspca_dev * gspca_dev)3867 static void setsharpness(struct gspca_dev *gspca_dev)
3868 {
3869 	struct sd *sd = (struct sd *) gspca_dev;
3870 	u8 val;
3871 
3872 	if (sd->bridge == BRIDGE_TP6800) {
3873 		val = sd->ctrls[SHARPNESS].val
3874 				| 0x08;		/* grid compensation enable */
3875 		if (gspca_dev->width == 640)
3876 			reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00); /* vga */
3877 		else
3878 			val |= 0x04;		/* scaling down enable */
3879 		reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, val);
3880 	} else {
3881 		val = (sd->ctrls[SHARPNESS].val << 5) | 0x08;
3882 		reg_w(gspca_dev, 0x59, val);
3883 	}
3884 }
3885 
setautogain(struct gspca_dev * gspca_dev)3886 static void setautogain(struct gspca_dev *gspca_dev)
3887 {
3888 	struct sd *sd = (struct sd *) gspca_dev;
3889 
3890 	if (gspca_dev->ctrl_dis & (1 << AUTOGAIN))
3891 		return;
3892 	if (sd->ctrls[AUTOGAIN].val) {
3893 		sd->ag_cnt = AG_CNT_START;
3894 		gspca_dev->ctrl_inac |= (1 << EXPOSURE) | (1 << GAIN);
3895 	} else {
3896 		sd->ag_cnt = -1;
3897 		gspca_dev->ctrl_inac &= ~((1 << EXPOSURE) | (1 << GAIN));
3898 	}
3899 }
3900 
3901 /* set the resolution for sensor cx0342 */
set_resolution(struct gspca_dev * gspca_dev)3902 static void set_resolution(struct gspca_dev *gspca_dev)
3903 {
3904 	reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00);
3905 	if (gspca_dev->width == 320) {
3906 		reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x06);
3907 		msleep(100);
3908 		i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01);
3909 		msleep(100);
3910 		reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03);
3911 		reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01);	/* qvga */
3912 		reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, 0x0d);
3913 		i2c_w(gspca_dev, CX0342_EXPO_LINE_L, 0x37);
3914 		i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x01);
3915 	} else {
3916 		reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x05);
3917 		msleep(100);
3918 		i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01);
3919 		msleep(100);
3920 		reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03);
3921 		reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00);	/* vga */
3922 		reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, 0x09);
3923 		i2c_w(gspca_dev, CX0342_EXPO_LINE_L, 0xcf);
3924 		i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x00);
3925 	}
3926 	i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x01);
3927 	bulk_w(gspca_dev, 0x03, color_gain[SENSOR_CX0342],
3928 				ARRAY_SIZE(color_gain[0]));
3929 	setgamma(gspca_dev);
3930 	setquality(gspca_dev);
3931 }
3932 
3933 /* convert the frame rate to a tp68x0 value */
get_fr_idx(struct gspca_dev * gspca_dev)3934 static int get_fr_idx(struct gspca_dev *gspca_dev)
3935 {
3936 	struct sd *sd = (struct sd *) gspca_dev;
3937 	int i;
3938 
3939 	if (sd->bridge == BRIDGE_TP6800) {
3940 		for (i = 0; i < ARRAY_SIZE(rates) - 1; i++) {
3941 			if (sd->framerate >= rates[i])
3942 				break;
3943 		}
3944 		i = 6 - i;		/* 1 = 5fps .. 6 = 30fps */
3945 
3946 		/* 640x480 * 30 fps does not work */
3947 		if (i == 6			/* if 30 fps */
3948 		 && gspca_dev->width == 640)
3949 			i = 0x05;		/* 15 fps */
3950 	} else {
3951 		for (i = 0; i < ARRAY_SIZE(rates_6810) - 1; i++) {
3952 			if (sd->framerate >= rates_6810[i])
3953 				break;
3954 		}
3955 		i = 7 - i;		/* 3 = 5fps .. 7 = 30fps */
3956 
3957 		/* 640x480 * 30 fps does not work */
3958 		if (i == 7			/* if 30 fps */
3959 		 && gspca_dev->width == 640)
3960 			i = 6;			/* 15 fps */
3961 		i |= 0x80;			/* clock * 1 */
3962 	}
3963 	return i;
3964 }
3965 
setframerate(struct gspca_dev * gspca_dev)3966 static void setframerate(struct gspca_dev *gspca_dev)
3967 {
3968 	struct sd *sd = (struct sd *) gspca_dev;
3969 	u8 fr_idx;
3970 
3971 	fr_idx = get_fr_idx(gspca_dev);
3972 
3973 	if (sd->bridge == BRIDGE_TP6810) {
3974 		reg_r(gspca_dev, 0x7b);
3975 		reg_w(gspca_dev, 0x7b,
3976 			sd->sensor == SENSOR_CX0342 ? 0x10 : 0x90);
3977 		if (sd->ctrls[EXPOSURE].val >= 128)
3978 			fr_idx = 0xf0;		/* lower frame rate */
3979 	}
3980 
3981 	reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, fr_idx);
3982 
3983 	if (sd->sensor == SENSOR_CX0342)
3984 		i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01);
3985 }
3986 
setrgain(struct gspca_dev * gspca_dev)3987 static void setrgain(struct gspca_dev *gspca_dev)
3988 {
3989 	struct sd *sd = (struct sd *) gspca_dev;
3990 	int rgain;
3991 
3992 	rgain = sd->ctrls[RGAIN].val;
3993 	i2c_w(gspca_dev, CX0342_RAW_RGAIN_H, rgain >> 8);
3994 	i2c_w(gspca_dev, CX0342_RAW_RGAIN_L, rgain);
3995 	i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x80);
3996 }
3997 
sd_setgain(struct gspca_dev * gspca_dev,__s32 val)3998 static int sd_setgain(struct gspca_dev *gspca_dev, __s32 val)
3999 {
4000 	struct sd *sd = (struct sd *) gspca_dev;
4001 
4002 	if (sd->sensor == SENSOR_CX0342) {
4003 		sd->ctrls[BGAIN].val = sd->ctrls[BGAIN].val
4004 					* val / sd->ctrls[GAIN].val;
4005 		if (sd->ctrls[BGAIN].val > 4095)
4006 			sd->ctrls[BGAIN].val = 4095;
4007 		sd->ctrls[RGAIN].val = sd->ctrls[RGAIN].val
4008 					* val / sd->ctrls[GAIN].val;
4009 		if (sd->ctrls[RGAIN].val > 4095)
4010 			sd->ctrls[RGAIN].val = 4095;
4011 	}
4012 	sd->ctrls[GAIN].val = val;
4013 	if (gspca_dev->streaming)
4014 		setexposure(gspca_dev);
4015 	return gspca_dev->usb_err;
4016 }
4017 
setbgain(struct gspca_dev * gspca_dev)4018 static void setbgain(struct gspca_dev *gspca_dev)
4019 {
4020 	struct sd *sd = (struct sd *) gspca_dev;
4021 	int bgain;
4022 
4023 	bgain = sd->ctrls[BGAIN].val;
4024 	i2c_w(gspca_dev, CX0342_RAW_BGAIN_H, bgain >> 8);
4025 	i2c_w(gspca_dev, CX0342_RAW_BGAIN_L, bgain);
4026 	i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x80);
4027 }
4028 
4029 /* this function is called at probe time */
sd_config(struct gspca_dev * gspca_dev,const struct usb_device_id * id)4030 static int sd_config(struct gspca_dev *gspca_dev,
4031 		     const struct usb_device_id *id)
4032 {
4033 	struct sd *sd = (struct sd *) gspca_dev;
4034 
4035 	sd->bridge = id->driver_info;
4036 
4037 	gspca_dev->cam.cam_mode = vga_mode;
4038 	gspca_dev->cam.nmodes = ARRAY_SIZE(vga_mode);
4039 	gspca_dev->cam.mode_framerates = sd->bridge == BRIDGE_TP6800 ?
4040 			framerates : framerates_6810;
4041 
4042 	sd->framerate = 30;		/* default: 30 fps */
4043 	gspca_dev->cam.ctrls = sd->ctrls;
4044 	return 0;
4045 }
4046 
4047 /* this function is called at probe and resume time */
sd_init(struct gspca_dev * gspca_dev)4048 static int sd_init(struct gspca_dev *gspca_dev)
4049 {
4050 	struct sd *sd = (struct sd *) gspca_dev;
4051 	static const struct cmd tp6800_preinit[] = {
4052 		{TP6800_R10_SIF_TYPE, 0x01},	/* sif */
4053 		{TP6800_R11_SIF_CONTROL, 0x01},
4054 		{TP6800_R15_GPIO_PU, 0x9f},
4055 		{TP6800_R16_GPIO_PD, 0x9f},
4056 		{TP6800_R17_GPIO_IO, 0x80},
4057 		{TP6800_R18_GPIO_DATA, 0x40},	/* LED off */
4058 	};
4059 	static const struct cmd tp6810_preinit[] = {
4060 		{TP6800_R2F_TIMING_CFG, 0x2f},
4061 		{TP6800_R15_GPIO_PU, 0x6f},
4062 		{TP6800_R16_GPIO_PD, 0x40},
4063 		{TP6800_R17_GPIO_IO, 0x9f},
4064 		{TP6800_R18_GPIO_DATA, 0xc1},	/* LED off */
4065 	};
4066 
4067 	if (sd->bridge == BRIDGE_TP6800)
4068 		reg_w_buf(gspca_dev, tp6800_preinit,
4069 				ARRAY_SIZE(tp6800_preinit));
4070 	else
4071 		reg_w_buf(gspca_dev, tp6810_preinit,
4072 				ARRAY_SIZE(tp6810_preinit));
4073 	msleep(15);
4074 	reg_r(gspca_dev, TP6800_R18_GPIO_DATA);
4075 	PDEBUG(D_PROBE, "gpio: %02x", gspca_dev->usb_buf[0]);
4076 /* values:
4077  *	0x80: snapshot button
4078  *	0x40: LED
4079  *	0x20: (bridge / sensor) reset for tp6810 ?
4080  *	0x07: sensor type ?
4081  */
4082 
4083 	/* guess the sensor type */
4084 	if (force_sensor >= 0) {
4085 		sd->sensor = force_sensor;
4086 	} else {
4087 		if (sd->bridge == BRIDGE_TP6800) {
4088 /*fixme: not sure this is working*/
4089 			switch (gspca_dev->usb_buf[0] & 0x07) {
4090 			case 0:
4091 				sd->sensor = SENSOR_SOI763A;
4092 				break;
4093 			case 1:
4094 				sd->sensor = SENSOR_CX0342;
4095 				break;
4096 			}
4097 		} else {
4098 			int sensor;
4099 
4100 			sensor = probe_6810(gspca_dev);
4101 			if (sensor < 0) {
4102 				pr_warn("Unknown sensor %d - forced to soi763a\n",
4103 					-sensor);
4104 				sensor = SENSOR_SOI763A;
4105 			}
4106 			sd->sensor = sensor;
4107 		}
4108 	}
4109 	if (sd->sensor == SENSOR_SOI763A) {
4110 		pr_info("Sensor soi763a\n");
4111 		sd->ctrls[GAMMA].def = sd->bridge == BRIDGE_TP6800 ? 0 : 1;
4112 		sd->ctrls[GAIN].max = 15;
4113 		sd->ctrls[GAIN].def = 3;
4114 		gspca_dev->ctrl_dis = (1 << RGAIN) | (1 << BGAIN);
4115 		if (sd->bridge == BRIDGE_TP6810) {
4116 			soi763a_6810_init(gspca_dev);
4117 #if AUTOGAIN_DEF
4118 			gspca_dev->ctrl_inac |= (1 << EXPOSURE) | (1 << GAIN);
4119 #endif
4120 		} else {
4121 			gspca_dev->ctrl_dis |= (1 << AUTOGAIN);
4122 		}
4123 	} else {
4124 		pr_info("Sensor cx0342\n");
4125 		if (sd->bridge == BRIDGE_TP6810) {
4126 			cx0342_6810_init(gspca_dev);
4127 #if AUTOGAIN_DEF
4128 			gspca_dev->ctrl_inac |= (1 << EXPOSURE) | (1 << GAIN);
4129 #endif
4130 		} else {
4131 			gspca_dev->ctrl_dis |= (1 << AUTOGAIN);
4132 		}
4133 	}
4134 
4135 	if (sd->bridge == BRIDGE_TP6810)
4136 		sd->ctrls[QUALITY].def = 0;	/* auto quality */
4137 	set_dqt(gspca_dev, 0);
4138 	return 0;
4139 }
4140 
4141 /* This function is called before choosing the alt setting */
sd_isoc_init(struct gspca_dev * gspca_dev)4142 static int sd_isoc_init(struct gspca_dev *gspca_dev)
4143 {
4144 	struct sd *sd = (struct sd *) gspca_dev;
4145 	static const struct cmd cx_sensor_init[] = {
4146 		{CX0342_AUTO_ADC_CALIB, 0x81},
4147 		{CX0342_EXPO_LINE_L, 0x37},
4148 		{CX0342_EXPO_LINE_H, 0x01},
4149 		{CX0342_RAW_GRGAIN_L, 0x00},
4150 		{CX0342_RAW_GBGAIN_L, 0x00},
4151 		{CX0342_RAW_RGAIN_L, 0x00},
4152 		{CX0342_RAW_BGAIN_L, 0x00},
4153 		{CX0342_SYS_CTRL_0, 0x81},
4154 	};
4155 	static const struct cmd cx_bridge_init[] = {
4156 		{0x4d, 0x00},
4157 		{0x4c, 0xff},
4158 		{0x4e, 0xff},
4159 		{0x4f, 0x00},
4160 	};
4161 	static const struct cmd ov_sensor_init[] = {
4162 		{0x10, 0x75},		/* exposure */
4163 		{0x76, 0x03},
4164 		{0x00, 0x00},		/* gain */
4165 	};
4166 	static const struct cmd ov_bridge_init[] = {
4167 		{0x7b, 0x90},
4168 		{TP6800_R3F_FRAME_RATE, 0x87},
4169 	};
4170 
4171 	if (sd->bridge == BRIDGE_TP6800)
4172 		return 0;
4173 	if (sd->sensor == SENSOR_CX0342) {
4174 		reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20);
4175 		reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x87);
4176 		i2c_w_buf(gspca_dev, cx_sensor_init,
4177 				ARRAY_SIZE(cx_sensor_init));
4178 		reg_w_buf(gspca_dev, cx_bridge_init,
4179 				ARRAY_SIZE(cx_bridge_init));
4180 		bulk_w(gspca_dev, 0x03, color_null, sizeof color_null);
4181 		reg_w(gspca_dev, 0x59, 0x40);
4182 	} else {
4183 		reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x21);
4184 		i2c_w_buf(gspca_dev, ov_sensor_init,
4185 				ARRAY_SIZE(ov_sensor_init));
4186 		reg_r(gspca_dev, 0x7b);
4187 		reg_w_buf(gspca_dev, ov_bridge_init,
4188 				ARRAY_SIZE(ov_bridge_init));
4189 	}
4190 	reg_w(gspca_dev, TP6800_R78_FORMAT,
4191 			gspca_dev->curr_mode ? 0x00 : 0x01);
4192 	return gspca_dev->usb_err;
4193 }
4194 
set_led(struct gspca_dev * gspca_dev,int on)4195 static void set_led(struct gspca_dev *gspca_dev, int on)
4196 {
4197 	u8 data;
4198 
4199 	reg_r(gspca_dev, TP6800_R18_GPIO_DATA);
4200 	data = gspca_dev->usb_buf[0];
4201 	if (on)
4202 		data &= ~0x40;
4203 	else
4204 		data |= 0x40;
4205 	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, data);
4206 }
4207 
cx0342_6800_start(struct gspca_dev * gspca_dev)4208 static void cx0342_6800_start(struct gspca_dev *gspca_dev)
4209 {
4210 	static const struct cmd reg_init[] = {
4211 /*fixme: is this usefull?*/
4212 		{TP6800_R17_GPIO_IO, 0x9f},
4213 		{TP6800_R16_GPIO_PD, 0x40},
4214 		{TP6800_R10_SIF_TYPE, 0x00},	/* i2c 8 bits */
4215 		{TP6800_R50, 0x00},
4216 		{TP6800_R51, 0x00},
4217 		{TP6800_R52, 0xff},
4218 		{TP6800_R53, 0x03},
4219 		{TP6800_R54_DARK_CFG, 0x07},
4220 		{TP6800_R5C_EDGE_THRLD, 0x40},
4221 		{TP6800_R7A_BLK_THRLD, 0x40},
4222 		{TP6800_R2F_TIMING_CFG, 0x17},
4223 		{TP6800_R30_SENSOR_CFG, 0x18},	/* G1B..RG0 */
4224 		{TP6800_R37_FRONT_DARK_ST, 0x00},
4225 		{TP6800_R38_FRONT_DARK_END, 0x00},
4226 		{TP6800_R39_REAR_DARK_ST_L, 0x00},
4227 		{TP6800_R3A_REAR_DARK_ST_H, 0x00},
4228 		{TP6800_R3B_REAR_DARK_END_L, 0x00},
4229 		{TP6800_R3C_REAR_DARK_END_H, 0x00},
4230 		{TP6800_R3D_HORIZ_DARK_LINE_L, 0x00},
4231 		{TP6800_R3E_HORIZ_DARK_LINE_H, 0x00},
4232 		{TP6800_R21_ENDP_1_CTL, 0x03},
4233 
4234 		{TP6800_R31_PIXEL_START, 0x0b},
4235 		{TP6800_R32_PIXEL_END_L, 0x8a},
4236 		{TP6800_R33_PIXEL_END_H, 0x02},
4237 		{TP6800_R34_LINE_START, 0x0e},
4238 		{TP6800_R35_LINE_END_L, 0xf4},
4239 		{TP6800_R36_LINE_END_H, 0x01},
4240 		{TP6800_R78_FORMAT, 0x00},
4241 		{TP6800_R12_SIF_ADDR_S, 0x20},	/* cx0342 i2c addr */
4242 	};
4243 	static const struct cmd sensor_init[] = {
4244 		{CX0342_OUTPUT_CTRL, 0x07},
4245 		{CX0342_BYPASS_MODE, 0x58},
4246 		{CX0342_GPXLTHD_L, 0x16},
4247 		{CX0342_RBPXLTHD_L, 0x16},
4248 		{CX0342_PLANETHD_L, 0xc0},
4249 		{CX0342_PLANETHD_H, 0x03},
4250 		{CX0342_RB_GAP_L, 0xff},
4251 		{CX0342_RB_GAP_H, 0x07},
4252 		{CX0342_G_GAP_L, 0xff},
4253 		{CX0342_G_GAP_H, 0x07},
4254 		{CX0342_RST_OVERFLOW_L, 0x5c},
4255 		{CX0342_RST_OVERFLOW_H, 0x01},
4256 		{CX0342_DATA_OVERFLOW_L, 0xfc},
4257 		{CX0342_DATA_OVERFLOW_H, 0x03},
4258 		{CX0342_DATA_UNDERFLOW_L, 0x00},
4259 		{CX0342_DATA_UNDERFLOW_H, 0x00},
4260 		{CX0342_SYS_CTRL_0, 0x40},
4261 		{CX0342_GLOBAL_GAIN, 0x01},
4262 		{CX0342_CLOCK_GEN, 0x00},
4263 		{CX0342_SYS_CTRL_0, 0x02},
4264 		{CX0342_IDLE_CTRL, 0x05},
4265 		{CX0342_ADCGN, 0x00},
4266 		{CX0342_ADC_CTL, 0x00},
4267 		{CX0342_LVRST_BLBIAS, 0x01},
4268 		{CX0342_VTHSEL, 0x0b},
4269 		{CX0342_RAMP_RIV, 0x0b},
4270 		{CX0342_LDOSEL, 0x07},
4271 		{CX0342_SPV_VALUE_L, 0x40},
4272 		{CX0342_SPV_VALUE_H, 0x02},
4273 	};
4274 
4275 	reg_w_buf(gspca_dev, reg_init, ARRAY_SIZE(reg_init));
4276 	i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init));
4277 	i2c_w_buf(gspca_dev, cx0342_timing_seq, ARRAY_SIZE(cx0342_timing_seq));
4278 	reg_w(gspca_dev, TP6800_R5C_EDGE_THRLD, 0x10);
4279 	reg_w(gspca_dev, TP6800_R54_DARK_CFG, 0x00);
4280 	i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x00);
4281 	i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x01);
4282 	setexposure(gspca_dev);
4283 	set_led(gspca_dev, 1);
4284 	set_resolution(gspca_dev);
4285 }
4286 
cx0342_6810_start(struct gspca_dev * gspca_dev)4287 static void cx0342_6810_start(struct gspca_dev *gspca_dev)
4288 {
4289 	static const struct cmd sensor_init_2[] = {
4290 		{CX0342_EXPO_LINE_L, 0x6f},
4291 		{CX0342_EXPO_LINE_H, 0x02},
4292 		{CX0342_RAW_GRGAIN_L, 0x00},
4293 		{CX0342_RAW_GBGAIN_L, 0x00},
4294 		{CX0342_RAW_RGAIN_L, 0x00},
4295 		{CX0342_RAW_BGAIN_L, 0x00},
4296 		{CX0342_SYS_CTRL_0, 0x81},
4297 	};
4298 	static const struct cmd bridge_init_2[] = {
4299 		{0x4d, 0x00},
4300 		{0x4c, 0xff},
4301 		{0x4e, 0xff},
4302 		{0x4f, 0x00},
4303 		{TP6800_R7A_BLK_THRLD, 0x00},
4304 		{TP6800_R79_QUALITY, 0x04},
4305 		{TP6800_R79_QUALITY, 0x01},
4306 	};
4307 	static const struct cmd bridge_init_3[] = {
4308 		{TP6800_R31_PIXEL_START, 0x08},
4309 		{TP6800_R32_PIXEL_END_L, 0x87},
4310 		{TP6800_R33_PIXEL_END_H, 0x02},
4311 		{TP6800_R34_LINE_START, 0x0e},
4312 		{TP6800_R35_LINE_END_L, 0xf4},
4313 		{TP6800_R36_LINE_END_H, 0x01},
4314 	};
4315 	static const struct cmd sensor_init_3[] = {
4316 		{CX0342_AUTO_ADC_CALIB, 0x81},
4317 		{CX0342_EXPO_LINE_L, 0x6f},
4318 		{CX0342_EXPO_LINE_H, 0x02},
4319 		{CX0342_RAW_GRGAIN_L, 0x00},
4320 		{CX0342_RAW_GBGAIN_L, 0x00},
4321 		{CX0342_RAW_RGAIN_L, 0x00},
4322 		{CX0342_RAW_BGAIN_L, 0x00},
4323 		{CX0342_SYS_CTRL_0, 0x81},
4324 	};
4325 	static const struct cmd bridge_init_5[] = {
4326 		{0x4d, 0x00},
4327 		{0x4c, 0xff},
4328 		{0x4e, 0xff},
4329 		{0x4f, 0x00},
4330 	};
4331 	static const struct cmd sensor_init_4[] = {
4332 		{CX0342_EXPO_LINE_L, 0xd3},
4333 		{CX0342_EXPO_LINE_H, 0x01},
4334 /*fixme: gains, but 00..80 only*/
4335 		{CX0342_RAW_GRGAIN_L, 0x40},
4336 		{CX0342_RAW_GBGAIN_L, 0x40},
4337 		{CX0342_RAW_RGAIN_L, 0x40},
4338 		{CX0342_RAW_BGAIN_L, 0x40},
4339 		{CX0342_SYS_CTRL_0, 0x81},
4340 	};
4341 	static const struct cmd sensor_init_5[] = {
4342 		{CX0342_IDLE_CTRL, 0x05},
4343 		{CX0342_ADCGN, 0x00},
4344 		{CX0342_ADC_CTL, 0x00},
4345 		{CX0342_LVRST_BLBIAS, 0x01},
4346 		{CX0342_VTHSEL, 0x0b},
4347 		{CX0342_RAMP_RIV, 0x0b},
4348 		{CX0342_LDOSEL, 0x07},
4349 		{CX0342_SPV_VALUE_L, 0x40},
4350 		{CX0342_SPV_VALUE_H, 0x02},
4351 		{CX0342_AUTO_ADC_CALIB, 0x81},
4352 	};
4353 
4354 	reg_w(gspca_dev, 0x22, gspca_dev->alt);
4355 	i2c_w_buf(gspca_dev, sensor_init_2, ARRAY_SIZE(sensor_init_2));
4356 	reg_w_buf(gspca_dev, bridge_init_2, ARRAY_SIZE(bridge_init_2));
4357 	reg_w_buf(gspca_dev, tp6810_cx_init_common,
4358 			ARRAY_SIZE(tp6810_cx_init_common));
4359 	reg_w_buf(gspca_dev, bridge_init_3, ARRAY_SIZE(bridge_init_3));
4360 	if (gspca_dev->curr_mode) {
4361 		reg_w(gspca_dev, 0x4a, 0x7f);
4362 		reg_w(gspca_dev, 0x07, 0x05);
4363 		reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00);	/* vga */
4364 	} else {
4365 		reg_w(gspca_dev, 0x4a, 0xff);
4366 		reg_w(gspca_dev, 0x07, 0x85);
4367 		reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01);	/* qvga */
4368 	}
4369 	setgamma(gspca_dev);
4370 	reg_w_buf(gspca_dev, tp6810_bridge_start,
4371 			ARRAY_SIZE(tp6810_bridge_start));
4372 	setsharpness(gspca_dev);
4373 	bulk_w(gspca_dev, 0x03, color_gain[SENSOR_CX0342],
4374 				ARRAY_SIZE(color_gain[0]));
4375 	reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x87);
4376 	i2c_w_buf(gspca_dev, sensor_init_3, ARRAY_SIZE(sensor_init_3));
4377 	reg_w_buf(gspca_dev, bridge_init_5, ARRAY_SIZE(bridge_init_5));
4378 	i2c_w_buf(gspca_dev, sensor_init_4, ARRAY_SIZE(sensor_init_4));
4379 	reg_w_buf(gspca_dev, bridge_init_5, ARRAY_SIZE(bridge_init_5));
4380 	i2c_w_buf(gspca_dev, sensor_init_5, ARRAY_SIZE(sensor_init_5));
4381 
4382 	set_led(gspca_dev, 1);
4383 /*	setquality(gspca_dev); */
4384 }
4385 
soi763a_6800_start(struct gspca_dev * gspca_dev)4386 static void soi763a_6800_start(struct gspca_dev *gspca_dev)
4387 {
4388 	static const struct cmd reg_init[] = {
4389 		{TP6800_R79_QUALITY, 0x04},
4390 		{TP6800_R79_QUALITY, 0x01},
4391 		{TP6800_R10_SIF_TYPE, 0x00},	/* i2c 8 bits */
4392 
4393 		{TP6800_R50, 0x00},
4394 		{TP6800_R51, 0x00},
4395 		{TP6800_R52, 0xff},
4396 		{TP6800_R53, 0x03},
4397 		{TP6800_R54_DARK_CFG, 0x07},
4398 		{TP6800_R5C_EDGE_THRLD, 0x40},
4399 
4400 		{TP6800_R79_QUALITY, 0x03},
4401 		{TP6800_R7A_BLK_THRLD, 0x40},
4402 
4403 		{TP6800_R2F_TIMING_CFG, 0x46},
4404 		{TP6800_R30_SENSOR_CFG, 0x10},	/* BG1..G0R */
4405 		{TP6800_R37_FRONT_DARK_ST, 0x00},
4406 		{TP6800_R38_FRONT_DARK_END, 0x00},
4407 		{TP6800_R39_REAR_DARK_ST_L, 0x00},
4408 		{TP6800_R3A_REAR_DARK_ST_H, 0x00},
4409 		{TP6800_R3B_REAR_DARK_END_L, 0x00},
4410 		{TP6800_R3C_REAR_DARK_END_H, 0x00},
4411 		{TP6800_R3D_HORIZ_DARK_LINE_L, 0x00},
4412 		{TP6800_R3E_HORIZ_DARK_LINE_H, 0x00},
4413 		{TP6800_R21_ENDP_1_CTL, 0x03},
4414 
4415 		{TP6800_R3F_FRAME_RATE, 0x04},	/* 15 fps */
4416 		{TP6800_R5D_DEMOSAIC_CFG, 0x0e}, /* scale down - medium edge */
4417 
4418 		{TP6800_R31_PIXEL_START, 0x1b},
4419 		{TP6800_R32_PIXEL_END_L, 0x9a},
4420 		{TP6800_R33_PIXEL_END_H, 0x02},
4421 		{TP6800_R34_LINE_START, 0x0f},
4422 		{TP6800_R35_LINE_END_L, 0xf4},
4423 		{TP6800_R36_LINE_END_H, 0x01},
4424 		{TP6800_R78_FORMAT, 0x01},	/* qvga */
4425 		{TP6800_R12_SIF_ADDR_S, 0x21},	/* soi763a i2c addr */
4426 		{TP6800_R1A_SIF_TX_DATA2, 0x00},
4427 	};
4428 	static const struct cmd sensor_init[] = {
4429 		{0x12, 0x48},		/* mirror - RGB */
4430 		{0x13, 0xa0},		/* clock - no AGC nor AEC */
4431 		{0x03, 0xa4},		/* saturation */
4432 		{0x04, 0x30},		/* hue */
4433 		{0x05, 0x88},		/* contrast */
4434 		{0x06, 0x60},		/* brightness */
4435 		{0x10, 0x41},		/* AEC */
4436 		{0x11, 0x40},		/* clock rate */
4437 		{0x13, 0xa0},
4438 		{0x14, 0x00},		/* 640x480 */
4439 		{0x15, 0x14},
4440 		{0x1f, 0x41},
4441 		{0x20, 0x80},
4442 		{0x23, 0xee},
4443 		{0x24, 0x50},
4444 		{0x25, 0x7a},
4445 		{0x26, 0x00},
4446 		{0x27, 0xe2},
4447 		{0x28, 0xb0},
4448 		{0x2a, 0x00},
4449 		{0x2b, 0x00},
4450 		{0x2d, 0x81},
4451 		{0x2f, 0x9d},
4452 		{0x60, 0x80},
4453 		{0x61, 0x00},
4454 		{0x62, 0x88},
4455 		{0x63, 0x11},
4456 		{0x64, 0x89},
4457 		{0x65, 0x00},
4458 		{0x67, 0x94},
4459 		{0x68, 0x7a},
4460 		{0x69, 0x0f},
4461 		{0x6c, 0x80},
4462 		{0x6d, 0x80},
4463 		{0x6e, 0x80},
4464 		{0x6f, 0xff},
4465 		{0x71, 0x20},
4466 		{0x74, 0x20},
4467 		{0x75, 0x86},
4468 		{0x77, 0xb5},
4469 		{0x17, 0x18},		/* H href start */
4470 		{0x18, 0xbf},		/* H href end */
4471 		{0x19, 0x03},		/* V start */
4472 		{0x1a, 0xf8},		/* V end */
4473 		{0x01, 0x80},		/* blue gain */
4474 		{0x02, 0x80},		/* red gain */
4475 	};
4476 
4477 	reg_w_buf(gspca_dev, reg_init, ARRAY_SIZE(reg_init));
4478 
4479 	i2c_w(gspca_dev, 0x12, 0x80);		/* sensor reset */
4480 	msleep(10);
4481 
4482 	i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init));
4483 
4484 	reg_w(gspca_dev, TP6800_R5C_EDGE_THRLD, 0x10);
4485 	reg_w(gspca_dev, TP6800_R54_DARK_CFG, 0x00);
4486 
4487 	setsharpness(gspca_dev);
4488 
4489 	bulk_w(gspca_dev, 0x03, color_gain[SENSOR_SOI763A],
4490 				ARRAY_SIZE(color_gain[0]));
4491 
4492 	set_led(gspca_dev, 1);
4493 	setexposure(gspca_dev);
4494 	setquality(gspca_dev);
4495 	setgamma(gspca_dev);
4496 }
4497 
soi763a_6810_start(struct gspca_dev * gspca_dev)4498 static void soi763a_6810_start(struct gspca_dev *gspca_dev)
4499 {
4500 	static const struct cmd bridge_init_2[] = {
4501 		{TP6800_R7A_BLK_THRLD, 0x00},
4502 		{TP6800_R79_QUALITY, 0x04},
4503 		{TP6800_R79_QUALITY, 0x01},
4504 	};
4505 	static const struct cmd bridge_init_3[] = {
4506 		{TP6800_R31_PIXEL_START, 0x20},
4507 		{TP6800_R32_PIXEL_END_L, 0x9f},
4508 		{TP6800_R33_PIXEL_END_H, 0x02},
4509 		{TP6800_R34_LINE_START, 0x13},
4510 		{TP6800_R35_LINE_END_L, 0xf8},
4511 		{TP6800_R36_LINE_END_H, 0x01},
4512 	};
4513 	static const struct cmd bridge_init_6[] = {
4514 		{0x08, 0xff},
4515 		{0x09, 0xff},
4516 		{0x0a, 0x5f},
4517 		{0x0b, 0x80},
4518 	};
4519 
4520 	reg_w(gspca_dev, 0x22, gspca_dev->alt);
4521 	bulk_w(gspca_dev, 0x03, color_null, sizeof color_null);
4522 	reg_w(gspca_dev, 0x59, 0x40);
4523 	setexposure(gspca_dev);
4524 	reg_w_buf(gspca_dev, bridge_init_2, ARRAY_SIZE(bridge_init_2));
4525 	reg_w_buf(gspca_dev, tp6810_ov_init_common,
4526 			ARRAY_SIZE(tp6810_ov_init_common));
4527 	reg_w_buf(gspca_dev, bridge_init_3, ARRAY_SIZE(bridge_init_3));
4528 	if (gspca_dev->curr_mode) {
4529 		reg_w(gspca_dev, 0x4a, 0x7f);
4530 		reg_w(gspca_dev, 0x07, 0x05);
4531 		reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00);	/* vga */
4532 	} else {
4533 		reg_w(gspca_dev, 0x4a, 0xff);
4534 		reg_w(gspca_dev, 0x07, 0x85);
4535 		reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01);	/* qvga */
4536 	}
4537 	setgamma(gspca_dev);
4538 	reg_w_buf(gspca_dev, tp6810_bridge_start,
4539 			ARRAY_SIZE(tp6810_bridge_start));
4540 
4541 	if (gspca_dev->curr_mode) {
4542 		reg_w(gspca_dev, 0x4f, 0x00);
4543 		reg_w(gspca_dev, 0x4e, 0x7c);
4544 	}
4545 
4546 	reg_w(gspca_dev, 0x00, 0x00);
4547 
4548 	setsharpness(gspca_dev);
4549 	bulk_w(gspca_dev, 0x03, color_gain[SENSOR_SOI763A],
4550 				ARRAY_SIZE(color_gain[0]));
4551 	set_led(gspca_dev, 1);
4552 	reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0xf0);
4553 	setexposure(gspca_dev);
4554 	reg_w_buf(gspca_dev, bridge_init_6, ARRAY_SIZE(bridge_init_6));
4555 }
4556 
4557 /* -- start the camera -- */
sd_start(struct gspca_dev * gspca_dev)4558 static int sd_start(struct gspca_dev *gspca_dev)
4559 {
4560 	struct sd *sd = (struct sd *) gspca_dev;
4561 
4562 	jpeg_define(sd->jpeg_hdr, gspca_dev->height, gspca_dev->width);
4563 	set_dqt(gspca_dev, sd->quality);
4564 	if (sd->bridge == BRIDGE_TP6800) {
4565 		if (sd->sensor == SENSOR_CX0342)
4566 			cx0342_6800_start(gspca_dev);
4567 		else
4568 			soi763a_6800_start(gspca_dev);
4569 	} else {
4570 		if (sd->sensor == SENSOR_CX0342)
4571 			cx0342_6810_start(gspca_dev);
4572 		else
4573 			soi763a_6810_start(gspca_dev);
4574 		reg_w_buf(gspca_dev, tp6810_late_start,
4575 				ARRAY_SIZE(tp6810_late_start));
4576 		reg_w(gspca_dev, 0x80, 0x03);
4577 		reg_w(gspca_dev, 0x82, gspca_dev->curr_mode ? 0x0a : 0x0e);
4578 
4579 		setexposure(gspca_dev);
4580 		setquality(gspca_dev);
4581 		setautogain(gspca_dev);
4582 	}
4583 
4584 	setframerate(gspca_dev);
4585 
4586 	return gspca_dev->usb_err;
4587 }
4588 
sd_stopN(struct gspca_dev * gspca_dev)4589 static void sd_stopN(struct gspca_dev *gspca_dev)
4590 {
4591 	struct sd *sd = (struct sd *) gspca_dev;
4592 
4593 	if (sd->bridge == BRIDGE_TP6800)
4594 		reg_w(gspca_dev, TP6800_R2F_TIMING_CFG, 0x03);
4595 	set_led(gspca_dev, 0);
4596 	reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00);
4597 }
4598 
sd_pkt_scan(struct gspca_dev * gspca_dev,u8 * data,int len)4599 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
4600 			u8 *data,
4601 			int len)
4602 {
4603 	struct sd *sd = (struct sd *) gspca_dev;
4604 
4605 	/* the start of frame contains:
4606 	 *	ff d8
4607 	 *	ff fe
4608 	 *	width / 16
4609 	 *	height / 8
4610 	 *	quality
4611 	 */
4612 	if (sd->bridge == BRIDGE_TP6810) {
4613 		if (*data != 0x5a) {
4614 /*fixme: don't discard the whole frame..*/
4615 			if (*data == 0xaa || *data == 0x00)
4616 				return;
4617 			if (*data > 0xc0) {
4618 				PDEBUG(D_FRAM, "bad frame");
4619 				gspca_dev->last_packet_type = DISCARD_PACKET;
4620 				return;
4621 			}
4622 		}
4623 		data++;
4624 		len--;
4625 		if (*data == 0xff && data[1] == 0xd8) {
4626 /*fixme: there may be information in the 4 high bits*/
4627 			if ((data[6] & 0x0f) != sd->quality)
4628 				set_dqt(gspca_dev, data[6] & 0x0f);
4629 			gspca_frame_add(gspca_dev, FIRST_PACKET,
4630 					sd->jpeg_hdr, JPEG_HDR_SZ);
4631 			gspca_frame_add(gspca_dev, INTER_PACKET,
4632 					data + 7, len - 7);
4633 		} else if (data[len - 2] == 0xff && data[len - 1] == 0xd9) {
4634 			gspca_frame_add(gspca_dev, LAST_PACKET,
4635 					data, len);
4636 		} else {
4637 			gspca_frame_add(gspca_dev, INTER_PACKET,
4638 					data, len);
4639 		}
4640 		return;
4641 	}
4642 
4643 	switch (*data) {
4644 	case 0x55:
4645 		gspca_frame_add(gspca_dev, LAST_PACKET, data, 0);
4646 
4647 		if (len < 8
4648 		 || data[1] != 0xff || data[2] != 0xd8
4649 		 || data[3] != 0xff || data[4] != 0xfe) {
4650 
4651 			/* Have only seen this with corrupt frames */
4652 			gspca_dev->last_packet_type = DISCARD_PACKET;
4653 			return;
4654 		}
4655 		if (data[7] != sd->quality)
4656 			set_dqt(gspca_dev, data[7]);
4657 		gspca_frame_add(gspca_dev, FIRST_PACKET,
4658 				sd->jpeg_hdr, JPEG_HDR_SZ);
4659 		gspca_frame_add(gspca_dev, INTER_PACKET,
4660 				data + 8, len - 8);
4661 		break;
4662 	case 0xaa:
4663 		gspca_dev->last_packet_type = DISCARD_PACKET;
4664 		break;
4665 	case 0xcc:
4666 		if (data[1] != 0xff || data[2] != 0xd8)
4667 			gspca_frame_add(gspca_dev, INTER_PACKET,
4668 					data + 1, len - 1);
4669 		else
4670 			gspca_dev->last_packet_type = DISCARD_PACKET;
4671 		break;
4672 	}
4673 }
4674 
4675 /* -- do autogain -- */
4676 /* gain setting is done in setexposure() for tp6810 */
setgain(struct gspca_dev * gspca_dev)4677 static void setgain(struct gspca_dev *gspca_dev) {}
4678 /* !! coarse_grained_expo_autogain is not used !! */
4679 #define exp_too_low_cnt bridge
4680 #define exp_too_high_cnt sensor
4681 
4682 #include "autogain_functions.h"
sd_dq_callback(struct gspca_dev * gspca_dev)4683 static void sd_dq_callback(struct gspca_dev *gspca_dev)
4684 {
4685 	struct sd *sd = (struct sd *) gspca_dev;
4686 	int ret, alen;
4687 	int luma, expo;
4688 
4689 	if (sd->ag_cnt < 0)
4690 		return;
4691 	if (--sd->ag_cnt > 5)
4692 		return;
4693 	switch (sd->ag_cnt) {
4694 /*	case 5: */
4695 	default:
4696 		reg_w(gspca_dev, 0x7d, 0x00);
4697 		break;
4698 	case 4:
4699 		reg_w(gspca_dev, 0x27, 0xb0);
4700 		break;
4701 	case 3:
4702 		reg_w(gspca_dev, 0x0c, 0x01);
4703 		break;
4704 	case 2:
4705 		ret = usb_bulk_msg(gspca_dev->dev,
4706 				usb_rcvbulkpipe(gspca_dev->dev, 0x02),
4707 				gspca_dev->usb_buf,
4708 				32,
4709 				&alen,
4710 				500);
4711 		if (ret < 0) {
4712 			pr_err("bulk err %d\n", ret);
4713 			break;
4714 		}
4715 		/* values not used (unknown) */
4716 		break;
4717 	case 1:
4718 		reg_w(gspca_dev, 0x27, 0xd0);
4719 		break;
4720 	case 0:
4721 		ret = usb_bulk_msg(gspca_dev->dev,
4722 				usb_rcvbulkpipe(gspca_dev->dev, 0x02),
4723 				gspca_dev->usb_buf,
4724 				32,
4725 				&alen,
4726 				500);
4727 		if (ret < 0) {
4728 			pr_err("bulk err %d\n", ret);
4729 			break;
4730 		}
4731 		luma = ((gspca_dev->usb_buf[8] << 8) + gspca_dev->usb_buf[7] +
4732 			(gspca_dev->usb_buf[11] << 8) + gspca_dev->usb_buf[10] +
4733 			(gspca_dev->usb_buf[14] << 8) + gspca_dev->usb_buf[13] +
4734 			(gspca_dev->usb_buf[17] << 8) + gspca_dev->usb_buf[16] +
4735 			(gspca_dev->usb_buf[20] << 8) + gspca_dev->usb_buf[19] +
4736 			(gspca_dev->usb_buf[23] << 8) + gspca_dev->usb_buf[22] +
4737 			(gspca_dev->usb_buf[26] << 8) + gspca_dev->usb_buf[25] +
4738 			(gspca_dev->usb_buf[29] << 8) + gspca_dev->usb_buf[28])
4739 				/ 8;
4740 		if (gspca_dev->width == 640)
4741 			luma /= 4;
4742 		reg_w(gspca_dev, 0x7d, 0x00);
4743 
4744 		expo = sd->ctrls[EXPOSURE].val;
4745 		ret = auto_gain_n_exposure(gspca_dev, luma,
4746 				60,	/* desired luma */
4747 				6,	/* dead zone */
4748 				2,	/* gain knee */
4749 				70);	/* expo knee */
4750 		sd->ag_cnt = AG_CNT_START;
4751 		if (sd->bridge == BRIDGE_TP6810) {
4752 			if ((expo >= 128 && sd->ctrls[EXPOSURE].val < 128)
4753 			 || (expo < 128 && sd->ctrls[EXPOSURE].val >= 128))
4754 				setframerate(gspca_dev);
4755 		}
4756 		break;
4757 	}
4758 }
4759 
4760 /* get stream parameters (framerate) */
sd_get_streamparm(struct gspca_dev * gspca_dev,struct v4l2_streamparm * parm)4761 static void sd_get_streamparm(struct gspca_dev *gspca_dev,
4762 			     struct v4l2_streamparm *parm)
4763 {
4764 	struct sd *sd = (struct sd *) gspca_dev;
4765 	struct v4l2_captureparm *cp = &parm->parm.capture;
4766 	struct v4l2_fract *tpf = &cp->timeperframe;
4767 	int fr, i;
4768 
4769 	cp->capability |= V4L2_CAP_TIMEPERFRAME;
4770 	tpf->numerator = 1;
4771 	i = get_fr_idx(gspca_dev);
4772 	if (i & 0x80) {
4773 		if (sd->bridge == BRIDGE_TP6800)
4774 			fr = rates[6 - (i & 0x07)];
4775 		else
4776 			fr = rates_6810[7 - (i & 0x07)];
4777 	} else {
4778 		fr = rates[6 - i];
4779 	}
4780 	tpf->denominator = fr;
4781 }
4782 
4783 /* set stream parameters (framerate) */
sd_set_streamparm(struct gspca_dev * gspca_dev,struct v4l2_streamparm * parm)4784 static void sd_set_streamparm(struct gspca_dev *gspca_dev,
4785 			     struct v4l2_streamparm *parm)
4786 {
4787 	struct sd *sd = (struct sd *) gspca_dev;
4788 	struct v4l2_captureparm *cp = &parm->parm.capture;
4789 	struct v4l2_fract *tpf = &cp->timeperframe;
4790 	int fr, i;
4791 
4792 	sd->framerate = tpf->denominator / tpf->numerator;
4793 	if (gspca_dev->streaming)
4794 		setframerate(gspca_dev);
4795 
4796 	/* Return the actual framerate */
4797 	i = get_fr_idx(gspca_dev);
4798 	if (i & 0x80)
4799 		fr = rates_6810[7 - (i & 0x07)];
4800 	else
4801 		fr = rates[6 - i];
4802 	tpf->numerator = 1;
4803 	tpf->denominator = fr;
4804 }
4805 
sd_set_jcomp(struct gspca_dev * gspca_dev,struct v4l2_jpegcompression * jcomp)4806 static int sd_set_jcomp(struct gspca_dev *gspca_dev,
4807 			struct v4l2_jpegcompression *jcomp)
4808 {
4809 	struct sd *sd = (struct sd *) gspca_dev;
4810 
4811 	if (sd->sensor == SENSOR_SOI763A)
4812 		jpeg_set_qual(sd->jpeg_hdr, jcomp->quality);
4813 /*	else
4814 		fixme: TODO
4815 */
4816 	return gspca_dev->usb_err;
4817 }
4818 
sd_get_jcomp(struct gspca_dev * gspca_dev,struct v4l2_jpegcompression * jcomp)4819 static int sd_get_jcomp(struct gspca_dev *gspca_dev,
4820 			struct v4l2_jpegcompression *jcomp)
4821 {
4822 	struct sd *sd = (struct sd *) gspca_dev;
4823 
4824 	memset(jcomp, 0, sizeof *jcomp);
4825 	jcomp->quality = jpeg_q[sd->quality];
4826 	jcomp->jpeg_markers = V4L2_JPEG_MARKER_DHT
4827 			| V4L2_JPEG_MARKER_DQT;
4828 	return 0;
4829 }
4830 
4831 static struct ctrl sd_ctrls[NCTRLS] = {
4832 [EXPOSURE] = {
4833 	    {
4834 		.id = V4L2_CID_EXPOSURE,
4835 		.type = V4L2_CTRL_TYPE_INTEGER,
4836 		.name = "Exposure",
4837 		.minimum = 0x01,
4838 		.maximum = 0xdc,
4839 		.step = 1,
4840 		.default_value = 0x4e,
4841 	    },
4842 	    .set_control = setexposure
4843 	},
4844 [QUALITY] = {
4845 	    {
4846 		.id = V4L2_CID_PRIVATE_BASE,
4847 		.type = V4L2_CTRL_TYPE_INTEGER,
4848 		.name = "Compression quality",
4849 		.minimum = 0,
4850 		.maximum = 15,
4851 		.step = 1,
4852 		.default_value = 13,
4853 	    },
4854 	    .set_control = setquality
4855 	},
4856 [RGAIN] = {
4857 	    {
4858 		.id = V4L2_CID_RED_BALANCE,
4859 		.type = V4L2_CTRL_TYPE_INTEGER,
4860 		.name = "Red balance",
4861 		.minimum = 0,
4862 		.maximum = 4095,
4863 		.step = 1,
4864 		.default_value = 256,
4865 	    },
4866 	    .set_control = setrgain
4867 	},
4868 [GAIN] = {
4869 	    {
4870 		.id = V4L2_CID_GAIN,
4871 		.type = V4L2_CTRL_TYPE_INTEGER,
4872 		.name = "Gain",
4873 		.minimum = 0,
4874 		.maximum = 4095,
4875 		.step = 1,
4876 		.default_value = 256,
4877 	    },
4878 	    .set = sd_setgain
4879 	},
4880 [BGAIN] = {
4881 	    {
4882 		.id = V4L2_CID_BLUE_BALANCE,
4883 		.type = V4L2_CTRL_TYPE_INTEGER,
4884 		.name = "Blue balance",
4885 		.minimum = 0,
4886 		.maximum = 4095,
4887 		.step = 1,
4888 		.default_value = 256,
4889 	    },
4890 	    .set_control = setbgain
4891 	},
4892 [SHARPNESS] = {
4893 	    {
4894 		.id	 = V4L2_CID_SHARPNESS,
4895 		.type    = V4L2_CTRL_TYPE_INTEGER,
4896 		.name    = "Sharpness",
4897 		.minimum = 0,
4898 		.maximum = 3,
4899 		.step    = 1,
4900 		.default_value = 2,
4901 	    },
4902 	    .set_control = setsharpness
4903 	},
4904 [GAMMA] = {
4905 	    {
4906 		.id      = V4L2_CID_GAMMA,
4907 		.type    = V4L2_CTRL_TYPE_INTEGER,
4908 		.name    = "Gamma",
4909 		.minimum = 0,
4910 		.maximum = NGAMMA - 1,
4911 		.step    = 1,
4912 		.default_value = 1,
4913 	    },
4914 	    .set_control = setgamma
4915 	},
4916 [AUTOGAIN] = {
4917 	    {
4918 		.id      = V4L2_CID_AUTOGAIN,
4919 		.type    = V4L2_CTRL_TYPE_BOOLEAN,
4920 		.name    = "Auto Gain",
4921 		.minimum = 0,
4922 		.maximum = 1,
4923 		.step    = 1,
4924 		.default_value = AUTOGAIN_DEF
4925 	    },
4926 	    .set_control = setautogain
4927 	},
4928 };
4929 
4930 static const struct sd_desc sd_desc = {
4931 	.name = KBUILD_MODNAME,
4932 	.ctrls = sd_ctrls,
4933 	.nctrls = NCTRLS,
4934 	.config = sd_config,
4935 	.init = sd_init,
4936 	.isoc_init = sd_isoc_init,
4937 	.start = sd_start,
4938 	.stopN = sd_stopN,
4939 	.pkt_scan = sd_pkt_scan,
4940 	.dq_callback = sd_dq_callback,
4941 	.get_streamparm = sd_get_streamparm,
4942 	.set_streamparm = sd_set_streamparm,
4943 	.get_jcomp = sd_get_jcomp,
4944 	.set_jcomp = sd_set_jcomp,
4945 };
4946 
4947 static const struct usb_device_id device_table[] = {
4948 	{USB_DEVICE(0x06a2, 0x0003), .driver_info = BRIDGE_TP6800},
4949 	{USB_DEVICE(0x06a2, 0x6810), .driver_info = BRIDGE_TP6810},
4950 	{}			/* Terminating entry */
4951 };
4952 
4953 MODULE_DEVICE_TABLE(usb, device_table);
4954 
sd_probe(struct usb_interface * interface,const struct usb_device_id * id)4955 static int sd_probe(struct usb_interface *interface,
4956 		    const struct usb_device_id *id)
4957 {
4958 	return gspca_dev_probe(interface, id, &sd_desc, sizeof(struct sd),
4959 			       THIS_MODULE);
4960 }
4961 
4962 static struct usb_driver sd_driver = {
4963 	.name = KBUILD_MODNAME,
4964 	.id_table = device_table,
4965 	.probe = sd_probe,
4966 	.disconnect = gspca_disconnect,
4967 #ifdef CONFIG_PM
4968 	.suspend = gspca_suspend,
4969 	.resume = gspca_resume,
4970 	.reset_resume = gspca_resume,
4971 #endif
4972 };
4973 
4974 module_usb_driver(sd_driver);
4975 
4976 module_param(force_sensor, int, 0644);
4977 MODULE_PARM_DESC(force_sensor,
4978 	"Force sensor. 0: cx0342, 1: soi763a");
4979