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