From d0cb3e0e06e3b7599770383b50f4237e48515696 Mon Sep 17 00:00:00 2001 From: Comma Device Date: Sat, 12 Mar 2022 11:48:38 -0800 Subject: [PATCH 01/13] something is output --- selfdrive/camerad/cameras/camera_qcom2.cc | 23 +- selfdrive/camerad/cameras/sensor2_i2c.h | 3927 ++++++++++++++++++++- 2 files changed, 3942 insertions(+), 8 deletions(-) diff --git a/selfdrive/camerad/cameras/camera_qcom2.cc b/selfdrive/camerad/cameras/camera_qcom2.cc index 2e810e42021d36..7e43cf4ee7eda7 100644 --- a/selfdrive/camerad/cameras/camera_qcom2.cc +++ b/selfdrive/camerad/cameras/camera_qcom2.cc @@ -22,6 +22,9 @@ #include "selfdrive/common/swaglog.h" #include "selfdrive/camerad/cameras/sensor2_i2c.h" +// For debugging: +// echo "4294967295" > /sys/module/cam_debug_util/parameters/debug_mdl + extern ExitHandler do_exit; const size_t FRAME_WIDTH = 1928; @@ -199,7 +202,8 @@ void CameraState::sensors_i2c(struct i2c_random_wr_payload* dat, int len, int op i2c_random_wr->header.count = len; i2c_random_wr->header.op_code = 1; i2c_random_wr->header.cmd_type = CAMERA_SENSOR_CMD_TYPE_I2C_RNDM_WR; - i2c_random_wr->header.data_type = CAMERA_SENSOR_I2C_TYPE_WORD; + //i2c_random_wr->header.data_type = CAMERA_SENSOR_I2C_TYPE_WORD; + i2c_random_wr->header.data_type = CAMERA_SENSOR_I2C_TYPE_BYTE; i2c_random_wr->header.addr_type = CAMERA_SENSOR_I2C_TYPE_WORD; memcpy(i2c_random_wr->random_wr_payload, dat, len*sizeof(struct i2c_random_wr_payload)); @@ -249,7 +253,8 @@ void CameraState::sensors_init() { break; case 2: // port 2 - i2c_info->slave_addr = 0x20; + //i2c_info->slave_addr = 0x20; + i2c_info->slave_addr = 0x34; probe->camera_id = 2; break; } @@ -263,8 +268,12 @@ void CameraState::sensors_init() { probe->addr_type = CAMERA_SENSOR_I2C_TYPE_WORD; probe->op_code = 3; // don't care? probe->cmd_type = CAMERA_SENSOR_CMD_TYPE_PROBE; - probe->reg_addr = 0x3000; //0x300a; //0x300b; - probe->expected_data = 0x354; //0x7750; //0x885a; + // ar0231 + /*probe->reg_addr = 0x3000; + probe->expected_data = 0x354;*/ + // imx390 + probe->reg_addr = 0x330; + probe->expected_data = 0x1538; probe->data_mask = 0; //buf_desc[1].size = buf_desc[1].length = 148; @@ -293,7 +302,8 @@ void CameraState::sensors_init() { power->count = 1; power->cmd_type = CAMERA_SENSOR_CMD_TYPE_PWR_UP; power->power_settings[0].power_seq_type = 0; - power->power_settings[0].config_val_low = 19200000; //Hz + //power->power_settings[0].config_val_low = 19200000; //Hz + power->power_settings[0].config_val_low = 24000000; //Hz power = power_set_wait(power, 10); // 8,1 is this reset? @@ -675,7 +685,8 @@ void CameraState::camera_open() { config_isp(0, 0, 1, buf0_handle, 0); LOG("-- Configuring sensor"); - sensors_i2c(init_array_ar0231, std::size(init_array_ar0231), CAM_SENSOR_PACKET_OPCODE_SENSOR_CONFIG); + sensors_i2c(init_array_imx390, std::size(init_array_imx390), CAM_SENSOR_PACKET_OPCODE_SENSOR_CONFIG); + //sensors_i2c(init_array_ar0231, std::size(init_array_ar0231), CAM_SENSOR_PACKET_OPCODE_SENSOR_CONFIG); //sensors_i2c(start_reg_array, std::size(start_reg_array), CAM_SENSOR_PACKET_OPCODE_SENSOR_STREAMON); //sensors_i2c(stop_reg_array, std::size(stop_reg_array), CAM_SENSOR_PACKET_OPCODE_SENSOR_STREAMOFF); diff --git a/selfdrive/camerad/cameras/sensor2_i2c.h b/selfdrive/camerad/cameras/sensor2_i2c.h index 0f91503be0f9b8..458dad8e9e08c5 100644 --- a/selfdrive/camerad/cameras/sensor2_i2c.h +++ b/selfdrive/camerad/cameras/sensor2_i2c.h @@ -1,5 +1,3928 @@ -struct i2c_random_wr_payload start_reg_array[] = {{0x301A, 0x91C}}; -struct i2c_random_wr_payload stop_reg_array[] = {{0x301A, 0x918}}; +/*struct i2c_random_wr_payload start_reg_array[] = {{0x301A, 0x91C}}; +struct i2c_random_wr_payload stop_reg_array[] = {{0x301A, 0x918}};*/ + +struct i2c_random_wr_payload start_reg_array[] = {{0x0, 0}}; + +struct i2c_random_wr_payload init_array_imx390[] = { + /*{0x2008, 0xb7}, {0x2009, 0x04}, // MODE_VMAX + {0x2008, 0xe4}, {0x2009, 0x0c}, // MODE_HMAX + + // external trigger (off) + {0x3650, 0}, // CU_MODE + + // exposure + {0x000C, 0xf2}, {0x000D, 0x2}, + {0x0010, 0xf2}, {0x0011, 0x2}, + + // analog gain + {0x0018, 50}, + {0x001A, 50}, + + // digital gain? + {0x0024, 50}, + {0x0026, 50}, + {0x0028, 50}, + {0x002c, 50}, + {0x002e, 50},*/ + + /*{0x2008, 0x04B7}, // MODE_VMAX + {0x200c, 0x0ce4}, // MODE_HMAX + + {0x2014, 0x0001}, // MODE_ADBIT_CU : 12-bit ADC + // is crop enabled? + {0x3410, 0x0788}, // CROP_H_SIZE + {0x3418, 0x04b8}, // CROP_V_SIZE + + + + // analog gain + {0x0018, 50}, + {0x001A, 50}, + + // digital gain? + {0x0024, 50}, + {0x0026, 50}, + {0x0028, 50}, + {0x002c, 50}, + {0x002e, 50}, + + //{0x2E18, 0x0}, + + // IFD_CLBLANKSTOP + {0x3450, 0x00}, + + // 20-bit is 0x2C + //{0x3448, 0x2C}, + + // PWL12? + {0x232, 0x113},*/ + +{0x000c, 0x7f}, {0x000d, 0x01}, +{0x000e, 0x00}, +{0x0010, 0x7f}, {0x0011, 0x01}, + +{0x0012, 0x00}, +{0x0018, 0x64}, {0x0019, 0x00}, +{0x001a, 0x0c}, {0x001b, 0x00}, + +{0x0038, 0x00}, +{0x003c, 0x00}, +{0x003d, 0x00}, +{0x003e, 0x00}, +{0x0040, 0x00}, +{0x0041, 0x00}, +{0x0042, 0x00}, +{0x0044, 0x00}, +{0x0045, 0x00}, +{0x0046, 0x00}, +{0x0048, 0x00}, +{0x0049, 0x00}, +{0x004a, 0x00}, +{0x004c, 0x00}, +{0x004d, 0x00}, +{0x004e, 0x00}, +{0x0050, 0x00}, +{0x0051, 0x00}, +{0x0052, 0x00}, +{0x0054, 0x00}, +{0x0055, 0x00}, +{0x0056, 0x00}, +{0x0058, 0x00}, +{0x0059, 0x00}, +{0x005a, 0x00}, +{0x005c, 0x00}, +{0x005d, 0x00}, +{0x005e, 0x00}, +{0x0060, 0x00}, +{0x0061, 0x00}, +{0x0062, 0x00}, +{0x0064, 0x00}, +{0x0065, 0x00}, +{0x0066, 0x00}, +{0x0068, 0x00}, +{0x0069, 0x00}, +{0x006a, 0x00}, +{0x0078, 0x00}, +{0x007c, 0x00}, +{0x007d, 0x00}, +{0x0080, 0x00}, +{0x0081, 0x00}, +{0x0090, 0x00}, +{0x00f4, 0x1c}, +{0x00f5, 0xf8}, +{0x00f6, 0x01}, +{0x00f8, 0x03}, +{0x00f9, 0x01}, +{0x00fa, 0x00}, +{0x00fb, 0x02}, +{0x0114, 0x00}, +{0x0115, 0x01}, +{0x0118, 0x20}, +{0x0119, 0x03}, +{0x011a, 0x00}, +{0x011b, 0x41}, +{0x011c, 0x80}, +{0x011d, 0x00}, +{0x0120, 0x20}, +{0x0121, 0x00}, +{0x0122, 0x00}, +{0x0123, 0x44}, +{0x0124, 0x00}, +{0x0125, 0x01}, +{0x0128, 0xac}, +{0x0129, 0x0d}, +{0x012a, 0x00}, +{0x012b, 0xa4}, +{0x012c, 0x00}, +{0x012d, 0x01}, +{0x0130, 0xc4}, +{0x0131, 0x09}, +{0x0132, 0x00}, +{0x0133, 0xda}, +{0x013a, 0x00}, +{0x013b, 0x00}, +{0x013c, 0x00}, +{0x013d, 0x00}, +{0x013e, 0x00}, +{0x0140, 0x00}, +{0x0141, 0x00}, +{0x0142, 0x00}, +{0x0144, 0x80}, +{0x0145, 0x01}, +{0x0146, 0x00}, +{0x0148, 0x80}, +{0x0149, 0x01}, +{0x014a, 0x00}, +{0x014c, 0x40}, +{0x014d, 0x06}, +{0x014e, 0x00}, +{0x0150, 0x15}, +{0x0151, 0x03}, +{0x0152, 0x00}, +{0x0154, 0x74}, +{0x0155, 0x0e}, +{0x0156, 0x00}, +{0x0158, 0xfe}, +{0x0159, 0x03}, +{0x015a, 0x00}, +{0x015c, 0xc0}, +{0x015d, 0x5d}, +{0x015e, 0x00}, +{0x0160, 0xfe}, +{0x0161, 0x04}, +{0x0162, 0x00}, +{0x0164, 0x28}, +{0x0165, 0x1d}, +{0x0166, 0x01}, +{0x0168, 0x32}, +{0x0169, 0x06}, +{0x016a, 0x00}, +{0x016c, 0xd8}, +{0x016d, 0x35}, +{0x016e, 0x03}, +{0x0170, 0xe3}, +{0x0171, 0x07}, +{0x0172, 0x00}, +{0x0174, 0x60}, +{0x0175, 0xe3}, +{0x0176, 0x16}, +{0x0178, 0x6f}, +{0x0179, 0x09}, +{0x017a, 0x00}, +{0x017c, 0x40}, +{0x017d, 0x4b}, +{0x017e, 0x4c}, +{0x0180, 0x87}, +{0x0181, 0x0b}, +{0x0182, 0x00}, +{0x0184, 0xff}, +{0x0185, 0xff}, +{0x0186, 0xff}, +{0x0188, 0x0e}, +{0x0189, 0x0f}, +{0x018a, 0x00}, +{0x018c, 0xff}, +{0x018d, 0xff}, +{0x018e, 0xff}, +{0x0190, 0x0e}, +{0x0191, 0x0f}, +{0x0192, 0x00}, +{0x0194, 0x0e}, +{0x0195, 0x0f}, +{0x0196, 0x00}, +{0x0198, 0x00}, +{0x0199, 0x00}, +{0x019a, 0x00}, +{0x019b, 0x01}, +{0x019c, 0x55}, +{0x019d, 0x55}, +{0x019e, 0x55}, +{0x019f, 0x00}, +{0x01a0, 0xc7}, +{0x01a1, 0x71}, +{0x01a2, 0x1c}, +{0x01a3, 0x00}, +{0x01a4, 0x75}, +{0x01a5, 0x39}, +{0x01a6, 0x03}, +{0x01a7, 0x00}, +{0x01a8, 0xba}, +{0x01a9, 0x9c}, +{0x01aa, 0x01}, +{0x01ab, 0x00}, +{0x01ac, 0x5d}, +{0x01ad, 0xce}, +{0x01ae, 0x00}, +{0x01af, 0x00}, +{0x01b0, 0x19}, +{0x01b1, 0x14}, +{0x01b2, 0x00}, +{0x01b3, 0x00}, +{0x01b4, 0x0c}, +{0x01b5, 0x0a}, +{0x01b6, 0x00}, +{0x01b7, 0x00}, +{0x01b8, 0x06}, +{0x01b9, 0x05}, +{0x01ba, 0x00}, +{0x01bb, 0x00}, +{0x01bc, 0x00}, +{0x01bd, 0x00}, +{0x01be, 0x00}, +{0x01bf, 0x00}, +{0x01c0, 0x00}, +{0x01c1, 0x00}, +{0x01c2, 0x00}, +{0x01c3, 0x00}, +{0x01c4, 0x00}, +{0x01c5, 0x00}, +{0x01cc, 0x01}, +{0x01d0, 0x09}, +{0x01d4, 0x01}, +{0x0390, 0x00}, +{0x0391, 0x00}, +{0x0392, 0x00}, +{0x03c0, 0x00}, +{0x2000, 0x55}, +{0x2001, 0x55}, +{0x2002, 0x55}, +{0x2003, 0x05}, +{0x2004, 0x02}, +{0x2008, 0x65}, +{0x2009, 0x04}, +{0x200a, 0x00}, +{0x200c, 0x98}, +{0x200d, 0x08}, +{0x2010, 0x04}, +{0x2014, 0x00}, +{0x2018, 0x02}, +{0x2019, 0x04}, +{0x201a, 0x00}, +{0x201c, 0x21}, +{0x201d, 0x11}, +{0x201e, 0x00}, +{0x201f, 0x00}, +{0x2020, 0xbc}, +{0x2021, 0x00}, +{0x2022, 0x7f}, +{0x2023, 0x00}, +{0x2024, 0xba}, +{0x2025, 0x00}, +{0x2026, 0x81}, +{0x2027, 0x00}, +{0x2028, 0x7d}, +{0x2029, 0x90}, +{0x202a, 0x05}, +{0x202c, 0xfc}, +{0x202d, 0x02}, +{0x202e, 0x25}, +{0x202f, 0x03}, +{0x2030, 0x05}, +{0x2031, 0x02}, +{0x2032, 0xca}, +{0x2033, 0x02}, +{0x2034, 0xfc}, +{0x2035, 0x02}, +{0x2036, 0x25}, +{0x2037, 0x03}, +{0x2038, 0xf8}, +{0x2039, 0xe4}, +{0x203a, 0xe3}, +{0x203b, 0x01}, +{0x203c, 0xf5}, +{0x203d, 0x8e}, +{0x203e, 0x0c}, +{0x203f, 0x2d}, +{0x2040, 0x69}, +{0x2041, 0x01}, +{0x2042, 0x8e}, +{0x2043, 0x01}, +{0x2044, 0x0c}, +{0x2045, 0x02}, +{0x2046, 0x31}, +{0x2047, 0x02}, +{0x2048, 0x6a}, +{0x2049, 0x01}, +{0x204a, 0x8e}, +{0x204b, 0x01}, +{0x204c, 0x0d}, +{0x204d, 0x02}, +{0x204e, 0x31}, +{0x204f, 0x02}, +{0x2050, 0x7b}, +{0x2051, 0x00}, +{0x2052, 0x7d}, +{0x2053, 0x00}, +{0x2054, 0x95}, +{0x2055, 0x00}, +{0x2056, 0x97}, +{0x2057, 0x00}, +{0x2058, 0xad}, +{0x2059, 0x00}, +{0x205a, 0xaf}, +{0x205b, 0x00}, +{0x205c, 0x92}, +{0x205d, 0x00}, +{0x205e, 0x94}, +{0x205f, 0x00}, +{0x2060, 0x8e}, +{0x2061, 0x00}, +{0x2062, 0x90}, +{0x2063, 0x00}, +{0x2064, 0xb1}, +{0x2065, 0x00}, +{0x2066, 0xb3}, +{0x2067, 0x00}, +{0x2068, 0x08}, +{0x2069, 0x00}, +{0x206a, 0x04}, +{0x206b, 0x00}, +{0x206c, 0x84}, +{0x206d, 0x00}, +{0x206e, 0x80}, +{0x206f, 0x00}, +{0x2070, 0x04}, +{0x2071, 0x00}, +{0x2072, 0x46}, +{0x2073, 0x00}, +{0x2074, 0xe9}, +{0x2075, 0x01}, +{0x2076, 0x74}, +{0x2077, 0x02}, +{0x2078, 0x80}, +{0x2079, 0x00}, +{0x207a, 0xc1}, +{0x207b, 0x00}, +{0x207c, 0xff}, +{0x207d, 0x03}, +{0x207e, 0xff}, +{0x207f, 0x03}, +{0x2080, 0x78}, +{0x2081, 0x00}, +{0x2082, 0x6a}, +{0x2083, 0x01}, +{0x2084, 0xe4}, +{0x2085, 0x01}, +{0x2086, 0x2b}, +{0x2087, 0x03}, +{0x2088, 0x00}, +{0x2089, 0x00}, +{0x208a, 0xff}, +{0x208b, 0x03}, +{0x208c, 0xff}, +{0x208d, 0x03}, +{0x208e, 0xff}, +{0x208f, 0x03}, +{0x2090, 0x7d}, +{0x2091, 0x00}, +{0x2092, 0x62}, +{0x2093, 0x01}, +{0x2094, 0xe9}, +{0x2095, 0x01}, +{0x2096, 0x00}, +{0x2097, 0x00}, +{0x2098, 0x7c}, +{0x2099, 0x00}, +{0x209a, 0x21}, +{0x209b, 0x03}, +{0x209c, 0xe9}, +{0x209d, 0x01}, +{0x209e, 0x21}, +{0x209f, 0x03}, +{0x20a0, 0xff}, +{0x20a1, 0x03}, +{0x20a2, 0xff}, +{0x20a3, 0x03}, +{0x20a4, 0xff}, +{0x20a5, 0x03}, +{0x20a6, 0xff}, +{0x20a7, 0x03}, +{0x20a8, 0xff}, +{0x20a9, 0x03}, +{0x20aa, 0xff}, +{0x20ab, 0x03}, +{0x20ac, 0xff}, +{0x20ad, 0x03}, +{0x20ae, 0xff}, +{0x20af, 0x03}, +{0x20b0, 0xff}, +{0x20b1, 0x03}, +{0x20b2, 0xff}, +{0x20b3, 0x03}, +{0x20b4, 0x87}, +{0x20b5, 0xcc}, +{0x20b6, 0x87}, +{0x20b7, 0x08}, +{0x20b8, 0xf4}, +{0x20b9, 0xa5}, +{0x20ba, 0x07}, +{0x20bc, 0x1f}, +{0x20bd, 0x01}, +{0x20be, 0xf6}, +{0x20bf, 0x00}, +{0x20c0, 0x90}, +{0x20c1, 0x01}, +{0x20c2, 0x67}, +{0x20c3, 0x01}, +{0x20c4, 0xff}, +{0x20c5, 0x03}, +{0x20c6, 0xff}, +{0x20c7, 0x03}, +{0x20c8, 0x33}, +{0x20c9, 0x02}, +{0x20ca, 0x0a}, +{0x20cb, 0x02}, +{0x20cc, 0x7f}, +{0x20cd, 0x00}, +{0x20ce, 0xd2}, +{0x20cf, 0x00}, +{0x20d0, 0x81}, +{0x20d1, 0x00}, +{0x20d2, 0x87}, +{0x20d3, 0x00}, +{0x20d4, 0x09}, +{0x20d5, 0x00}, +{0x20d8, 0x7f}, +{0x20d9, 0x00}, +{0x20da, 0x62}, +{0x20db, 0x01}, +{0x20dc, 0x7f}, +{0x20dd, 0x00}, +{0x20de, 0x62}, +{0x20df, 0x01}, +{0x20e0, 0x65}, +{0x20e1, 0x00}, +{0x20e2, 0x75}, +{0x20e3, 0x00}, +{0x20e4, 0xe0}, +{0x20e5, 0x00}, +{0x20e6, 0xf0}, +{0x20e7, 0x00}, +{0x20e8, 0x4c}, +{0x20e9, 0x01}, +{0x20ea, 0x5c}, +{0x20eb, 0x01}, +{0x20ec, 0xd1}, +{0x20ed, 0x01}, +{0x20ee, 0xe1}, +{0x20ef, 0x01}, +{0x20f0, 0x93}, +{0x20f1, 0x02}, +{0x20f2, 0xa3}, +{0x20f3, 0x02}, +{0x20f4, 0x0d}, +{0x20f5, 0x03}, +{0x20f6, 0x1d}, +{0x20f7, 0x03}, +{0x20f8, 0x57}, +{0x20f9, 0x00}, +{0x20fa, 0x7b}, +{0x20fb, 0x00}, +{0x20fc, 0xd2}, +{0x20fd, 0x00}, +{0x20fe, 0xf6}, +{0x20ff, 0x00}, +{0x2100, 0x3e}, +{0x2101, 0x01}, +{0x2102, 0x60}, +{0x2103, 0x01}, +{0x2104, 0xc3}, +{0x2105, 0x01}, +{0x2106, 0xe5}, +{0x2107, 0x01}, +{0x2108, 0x85}, +{0x2109, 0x02}, +{0x210a, 0xa9}, +{0x210b, 0x02}, +{0x210c, 0xff}, +{0x210d, 0x02}, +{0x210e, 0x21}, +{0x210f, 0x03}, +{0x2110, 0xff}, +{0x2111, 0x03}, +{0x2112, 0x00}, +{0x2113, 0x00}, +{0x2114, 0xff}, +{0x2115, 0x03}, +{0x2116, 0xff}, +{0x2117, 0x03}, +{0x2118, 0xff}, +{0x2119, 0x03}, +{0x211a, 0xff}, +{0x211b, 0x03}, +{0x211c, 0xff}, +{0x211d, 0x03}, +{0x211e, 0xff}, +{0x211f, 0x03}, +{0x2120, 0xff}, +{0x2121, 0x03}, +{0x2122, 0xff}, +{0x2123, 0x03}, +{0x2124, 0xff}, +{0x2125, 0x03}, +{0x2126, 0xff}, +{0x2127, 0x03}, +{0x2128, 0x7d}, +{0x2129, 0x90}, +{0x212a, 0xd5}, +{0x212b, 0x07}, +{0x212c, 0x64}, +{0x212d, 0x01}, +{0x2130, 0x5f}, +{0x2131, 0x7d}, +{0x2132, 0x05}, +{0x2134, 0x78}, +{0x2135, 0x00}, +{0x2136, 0x76}, +{0x2137, 0x00}, +{0x2138, 0xf3}, +{0x2139, 0x00}, +{0x213a, 0xf1}, +{0x213b, 0x00}, +{0x213c, 0xa6}, +{0x213d, 0x02}, +{0x213e, 0xa4}, +{0x213f, 0x02}, +{0x2140, 0x7d}, +{0x2141, 0x00}, +{0x2142, 0x8d}, +{0x2143, 0x00}, +{0x2144, 0xa1}, +{0x2145, 0x01}, +{0x2146, 0xb1}, +{0x2147, 0x01}, +{0x2148, 0xab}, +{0x2149, 0x02}, +{0x214a, 0xbb}, +{0x214b, 0x02}, +{0x214c, 0x17}, +{0x214d, 0x5c}, +{0x214e, 0x00}, +{0x2150, 0x00}, +{0x2151, 0x00}, +{0x2152, 0xf8}, +{0x2153, 0x00}, +{0x2154, 0xbe}, +{0x2155, 0x00}, +{0x2156, 0x7d}, +{0x2157, 0x00}, +{0x2158, 0x25}, +{0x2159, 0x00}, +{0x215a, 0x7d}, +{0x215b, 0x00}, +{0x215c, 0x62}, +{0x215d, 0x01}, +{0x215e, 0xff}, +{0x215f, 0x03}, +{0x2160, 0x26}, +{0x2161, 0x00}, +{0x2162, 0x7d}, +{0x2163, 0x00}, +{0x2164, 0x63}, +{0x2165, 0x01}, +{0x2166, 0xff}, +{0x2167, 0x03}, +{0x2168, 0xcb}, +{0x2169, 0x02}, +{0x216a, 0xcf}, +{0x216b, 0x02}, +{0x216c, 0xff}, +{0x216d, 0x03}, +{0x216e, 0xff}, +{0x216f, 0x03}, +{0x2170, 0xff}, +{0x2171, 0x03}, +{0x2172, 0xff}, +{0x2173, 0x03}, +{0x2174, 0xff}, +{0x2175, 0x03}, +{0x2176, 0xff}, +{0x2177, 0x03}, +{0x2178, 0x7e}, +{0x2179, 0x00}, +{0x217a, 0xbd}, +{0x217b, 0x00}, +{0x217c, 0xec}, +{0x217d, 0x01}, +{0x217e, 0x7b}, +{0x217f, 0x02}, +{0x2180, 0xd1}, +{0x2181, 0x02}, +{0x2182, 0x25}, +{0x2183, 0x03}, +{0x2184, 0x7f}, +{0x2185, 0x00}, +{0x2186, 0xbd}, +{0x2187, 0x00}, +{0x2188, 0xed}, +{0x2189, 0x01}, +{0x218a, 0x7b}, +{0x218b, 0x02}, +{0x218c, 0xd2}, +{0x218d, 0x02}, +{0x218e, 0x25}, +{0x218f, 0x03}, +{0x2190, 0xff}, +{0x2191, 0x03}, +{0x2192, 0xff}, +{0x2193, 0x03}, +{0x2194, 0xe9}, +{0x2195, 0x01}, +{0x2196, 0x21}, +{0x2197, 0x03}, +{0x2198, 0x17}, +{0x2199, 0xfc}, +{0x219a, 0x7f}, +{0x219b, 0x01}, +{0x219c, 0xff}, +{0x219d, 0x03}, +{0x21a0, 0x1b}, +{0x21a1, 0x1b}, +{0x21a2, 0x1b}, +{0x21a3, 0x1b}, +{0x21a4, 0x2b}, +{0x21a5, 0x80}, +{0x21a6, 0x00}, +{0x21a8, 0x04}, +{0x21a9, 0x98}, +{0x21aa, 0x60}, +{0x21ab, 0x03}, +{0x21ac, 0x7f}, +{0x21ad, 0x80}, +{0x21ae, 0x09}, +{0x21b0, 0x1c}, +{0x21b1, 0x00}, +{0x21b2, 0xa0}, +{0x21b3, 0x00}, +{0x21b4, 0x0c}, +{0x21b5, 0x00}, +{0x21b6, 0x2d}, +{0x21b7, 0x00}, +{0x21b8, 0x20}, +{0x21b9, 0x00}, +{0x21ba, 0x02}, +{0x21bb, 0x00}, +{0x21bc, 0xcc}, +{0x21bd, 0x00}, +{0x21be, 0x4a}, +{0x21bf, 0x00}, +{0x21c0, 0xd0}, +{0x21c1, 0x00}, +{0x21c2, 0x44}, +{0x21c3, 0x00}, +{0x21c4, 0x00}, +{0x21c5, 0xe0}, +{0x21c6, 0x00}, +{0x21c8, 0x11}, +{0x21c9, 0x00}, +{0x21ca, 0x02}, +{0x21cc, 0x08}, +{0x21cd, 0xc0}, +{0x21ce, 0x0c}, +{0x21d0, 0x44}, +{0x21d1, 0x00}, +{0x21d2, 0x02}, +{0x21d4, 0x02}, +{0x21d5, 0x20}, +{0x21d6, 0x2c}, +{0x21d8, 0xfe}, +{0x21d9, 0x9d}, +{0x21da, 0xdf}, +{0x21db, 0x03}, +{0x21dc, 0x62}, +{0x21dd, 0x01}, +{0x21de, 0x7f}, +{0x21df, 0x00}, +{0x21e0, 0xb7}, +{0x21e1, 0x01}, +{0x21e2, 0xb5}, +{0x21e3, 0x01}, +{0x21e4, 0xc1}, +{0x21e5, 0x02}, +{0x21e6, 0xbf}, +{0x21e7, 0x02}, +{0x21e8, 0xb3}, +{0x21e9, 0x0d}, +{0x21ea, 0x00}, +{0x21eb, 0x04}, +{0x21ec, 0x90}, +{0x21ed, 0x07}, +{0x21ee, 0x58}, +{0x21ef, 0x04}, +{0x21f0, 0x54}, +{0x21f1, 0x04}, +{0x21f4, 0x02}, +{0x21f5, 0x00}, +{0x21f6, 0x00}, +{0x21f8, 0x3c}, +{0x21f9, 0x00}, +{0x21fc, 0x28}, +{0x21fd, 0x00}, +{0x21fe, 0x3c}, +{0x21ff, 0x00}, +{0x2200, 0x00}, +{0x2204, 0x4c}, +{0x2205, 0x04}, +{0x2206, 0x65}, +{0x2207, 0x04}, +{0x2208, 0x0a}, +{0x2209, 0x00}, +{0x220c, 0x57}, +{0x220d, 0x00}, +{0x220e, 0x37}, +{0x220f, 0x00}, +{0x2210, 0x1f}, +{0x2211, 0x00}, +{0x2212, 0x1f}, +{0x2213, 0x00}, +{0x2214, 0x1f}, +{0x2215, 0x00}, +{0x2216, 0x77}, +{0x2217, 0x00}, +{0x2218, 0x1f}, +{0x2219, 0x00}, +{0x221a, 0x17}, +{0x221b, 0x00}, +{0x221c, 0x03}, +{0x2220, 0x24}, +{0x2221, 0x00}, +{0x2222, 0x00}, +{0x2223, 0x00}, +{0x2224, 0xa7}, +{0x2225, 0xaa}, +{0x2226, 0x80}, +{0x2227, 0x08}, +{0x2228, 0x01}, +{0x2260, 0xff}, +{0x2261, 0x1f}, +{0x2262, 0x00}, +{0x2263, 0x00}, +{0x2264, 0x00}, +{0x2265, 0x00}, +{0x2266, 0xff}, +{0x2267, 0x1f}, +{0x2268, 0x00}, +{0x2269, 0x00}, +{0x226a, 0xff}, +{0x226b, 0x1f}, +{0x226c, 0x00}, +{0x226d, 0x00}, +{0x226e, 0xff}, +{0x226f, 0x1f}, +{0x227c, 0xb2}, +{0x227d, 0x0c}, +{0x227e, 0x6a}, +{0x227f, 0x09}, +{0x2280, 0xd2}, +{0x2281, 0x0c}, +{0x2282, 0x5a}, +{0x2283, 0x09}, +{0x2284, 0xc4}, +{0x2285, 0x0c}, +{0x2286, 0x54}, +{0x2287, 0x09}, +{0x22b2, 0x92}, +{0x22b4, 0x20}, +{0x22b5, 0x00}, +{0x22b6, 0x20}, +{0x22b7, 0x00}, +{0x22b8, 0x20}, +{0x22b9, 0x00}, +{0x22ba, 0x20}, +{0x22bb, 0x00}, +{0x22bc, 0x20}, +{0x22bd, 0x00}, +{0x22be, 0x20}, +{0x22bf, 0x00}, +{0x22c0, 0x20}, +{0x22c1, 0x00}, +{0x22c2, 0x20}, +{0x22c3, 0x00}, +{0x22c4, 0x20}, +{0x22c5, 0x00}, +{0x22c6, 0x20}, +{0x22c7, 0x00}, +{0x22c8, 0x20}, +{0x22c9, 0x00}, +{0x22ca, 0x20}, +{0x22cb, 0x00}, +{0x22cc, 0x20}, +{0x22cd, 0x00}, +{0x22ce, 0x20}, +{0x22cf, 0x00}, +{0x22da, 0x00}, +{0x22ef, 0x82}, +{0x2308, 0x01}, +{0x2311, 0x09}, +{0x2318, 0x40}, +{0x2319, 0xcd}, +{0x231a, 0x54}, +{0x2324, 0x20}, +{0x2325, 0x00}, +{0x2328, 0x00}, +{0x234a, 0x9f}, +{0x234b, 0x07}, +{0x2354, 0x0c}, +{0x23c0, 0x5d}, +{0x244c, 0xff}, +{0x244d, 0x03}, +{0x244e, 0xff}, +{0x244f, 0x03}, +{0x24a0, 0x00}, +{0x24a4, 0x16}, +{0x24a5, 0x01}, +{0x24a6, 0xa6}, +{0x24a7, 0x02}, +{0x24a8, 0xd5}, +{0x24a9, 0x02}, +{0x24bc, 0x17}, +{0x24bd, 0x01}, +{0x24be, 0xa7}, +{0x24bf, 0x02}, +{0x24c0, 0xd5}, +{0x24c1, 0x02}, +{0x24da, 0x6f}, +{0x24db, 0x00}, +{0x24dc, 0x62}, +{0x24dd, 0x01}, +{0x24ea, 0x32}, +{0x24eb, 0x00}, +{0x24ec, 0xdc}, +{0x24ed, 0x00}, +{0x24fa, 0x32}, +{0x24fb, 0x00}, +{0x24fc, 0xdd}, +{0x24fd, 0x00}, +{0x254a, 0x15}, +{0x254b, 0x01}, +{0x255a, 0x15}, +{0x255b, 0x01}, +{0x2560, 0x01}, +{0x2561, 0x00}, +{0x2562, 0x2a}, +{0x2563, 0x00}, +{0x2564, 0xf8}, +{0x2565, 0x00}, +{0x2566, 0x15}, +{0x2567, 0x01}, +{0x2568, 0x0c}, +{0x2569, 0x02}, +{0x256a, 0x31}, +{0x256b, 0x02}, +{0x2578, 0x90}, +{0x2579, 0x01}, +{0x257a, 0x92}, +{0x257b, 0x01}, +{0x257c, 0xb8}, +{0x257d, 0x02}, +{0x257e, 0xba}, +{0x257f, 0x02}, +{0x2584, 0x90}, +{0x2585, 0x01}, +{0x2586, 0x92}, +{0x2587, 0x01}, +{0x2588, 0xb8}, +{0x2589, 0x02}, +{0x258a, 0xba}, +{0x258b, 0x02}, +{0x267a, 0xf8}, +{0x267b, 0x00}, +{0x267c, 0x16}, +{0x267d, 0x01}, +{0x267e, 0xa6}, +{0x267f, 0x02}, +{0x2680, 0xd5}, +{0x2681, 0x02}, +{0x2690, 0xf8}, +{0x2691, 0x00}, +{0x2694, 0xa6}, +{0x2695, 0x02}, +{0x2696, 0x16}, +{0x2697, 0x01}, +{0x269a, 0xd5}, +{0x269b, 0x02}, +{0x26b8, 0x10}, +{0x26b9, 0x00}, +{0x26ba, 0x33}, +{0x26bb, 0x00}, +{0x26bc, 0x89}, +{0x26bd, 0x00}, +{0x26be, 0xb0}, +{0x26bf, 0x00}, +{0x26c4, 0x4e}, +{0x26c5, 0x00}, +{0x26c8, 0xc9}, +{0x26c9, 0x00}, +{0x26cc, 0x35}, +{0x26cd, 0x01}, +{0x26d0, 0xba}, +{0x26d1, 0x01}, +{0x26d4, 0x7c}, +{0x26d5, 0x02}, +{0x26d8, 0xf6}, +{0x26d9, 0x02}, +{0x26de, 0x51}, +{0x26df, 0x00}, +{0x26e0, 0x7f}, +{0x26e1, 0x00}, +{0x26e2, 0xcc}, +{0x26e3, 0x00}, +{0x26e4, 0xf8}, +{0x26e5, 0x00}, +{0x26e6, 0x38}, +{0x26e7, 0x01}, +{0x26e8, 0x65}, +{0x26e9, 0x01}, +{0x26ea, 0xbd}, +{0x26eb, 0x01}, +{0x26ee, 0x7f}, +{0x26ef, 0x02}, +{0x26f0, 0xab}, +{0x26f1, 0x02}, +{0x26f2, 0xf9}, +{0x26f3, 0x02}, +{0x2722, 0x59}, +{0x2723, 0x02}, +{0x2938, 0x55}, +{0x2939, 0x00}, +{0x293a, 0x17}, +{0x293b, 0x00}, +{0x293c, 0xd0}, +{0x293d, 0x00}, +{0x293e, 0x91}, +{0x293f, 0x00}, +{0x2940, 0x3c}, +{0x2941, 0x01}, +{0x2942, 0x0c}, +{0x2943, 0x01}, +{0x2944, 0xc1}, +{0x2945, 0x01}, +{0x2946, 0x76}, +{0x2947, 0x01}, +{0x2948, 0x83}, +{0x2949, 0x02}, +{0x294a, 0xfb}, +{0x294b, 0x01}, +{0x294c, 0xfd}, +{0x294d, 0x02}, +{0x294e, 0xbf}, +{0x294f, 0x02}, +{0x2a06, 0x25}, +{0x2a07, 0x03}, +{0x2a20, 0x00}, +{0x2a21, 0x00}, +{0x2a22, 0x7d}, +{0x2a23, 0x00}, +{0x2b11, 0x1a}, +{0x2b13, 0x11}, +{0x2b14, 0x11}, +{0x2b15, 0x11}, +{0x2b16, 0x11}, +{0x2b17, 0x10}, +{0x2b18, 0x0f}, +{0x2b19, 0x0e}, +{0x2b1a, 0x0d}, +{0x2b1b, 0x0c}, +{0x2b1c, 0x0b}, +{0x2b1d, 0x0b}, +{0x2b1e, 0x0a}, +{0x2b1f, 0x09}, +{0x2b20, 0x08}, +{0x2b21, 0x07}, +{0x2b22, 0x06}, +{0x2b23, 0x05}, +{0x2b24, 0x04}, +{0x2b25, 0x03}, +{0x2b26, 0x03}, +{0x2b38, 0x01}, +{0x2b45, 0xe3}, +{0x2b50, 0x01}, +{0x2b51, 0x00}, +{0x2b62, 0x66}, +{0x2b6d, 0x47}, +{0x2b70, 0x03}, +{0x2b71, 0x02}, +{0x2b72, 0x02}, +{0x2b7b, 0x42}, +{0x2b7f, 0x7f}, +{0x2b80, 0x94}, +{0x2b81, 0x06}, +{0x2b87, 0x1b}, +{0x2b88, 0x1a}, +{0x2b89, 0x17}, +{0x2b8a, 0x17}, +{0x2b8b, 0x12}, +{0x2b8d, 0x2b}, +{0x2b8e, 0x2b}, +{0x2b8f, 0x2b}, +{0x2b90, 0x7f}, +{0x2b91, 0x0f}, +{0x2b92, 0x31}, +{0x2b93, 0x07}, +{0x2b94, 0xfe}, +{0x2b95, 0x26}, +{0x2b98, 0xfe}, +{0x2b99, 0x56}, +{0x2b9b, 0x2a}, +{0x2ba8, 0xbc}, +{0x2ba9, 0x62}, +{0x2bc1, 0x70}, +{0x2bc5, 0x80}, +{0x2bd5, 0x30}, +{0x2bd6, 0xf0}, +{0x2bd8, 0xdb}, +{0x2bd9, 0xf6}, +{0x2bda, 0x21}, +{0x2bdb, 0x06}, +{0x2bdc, 0x57}, +{0x2c98, 0xe1}, +{0x2c99, 0x2e}, +{0x2c9b, 0x80}, +{0x2ca9, 0x80}, +{0x2caa, 0x01}, +{0x2cbf, 0x08}, +{0x2d39, 0x0e}, +{0x2d50, 0x80}, +{0x2d54, 0x00}, +{0x2d5b, 0x58}, +{0x2dfd, 0x01}, +{0x3000, 0x00}, +{0x3001, 0x00}, +{0x3002, 0x23}, +{0x3003, 0xa1}, +{0x3004, 0x00}, +{0x3005, 0x20}, +{0x3006, 0x58}, +{0x3007, 0x00}, +{0x3008, 0x06}, +{0x3009, 0xb4}, +{0x300a, 0x1f}, +{0x300b, 0x00}, +{0x300c, 0x00}, +{0x300d, 0x1b}, +{0x300e, 0x90}, +{0x300f, 0x97}, +{0x3010, 0x00}, +{0x3011, 0x00}, +{0x3012, 0x20}, +{0x3013, 0x21}, +{0x3014, 0x00}, +{0x3015, 0x20}, +{0x3016, 0x84}, +{0x3017, 0x00}, +{0x3018, 0x30}, +{0x3019, 0x09}, +{0x301a, 0x46}, +{0x301b, 0x00}, +{0x3070, 0xc1}, +{0x3071, 0x81}, +{0x3072, 0x29}, +{0x3073, 0x81}, +{0x3080, 0xc4}, +{0x3081, 0x0c}, +{0x3082, 0xd2}, +{0x3083, 0x0c}, +{0x3084, 0x5c}, +{0x3085, 0x00}, +{0x3086, 0x90}, +{0x3087, 0x00}, +{0x3088, 0x07}, +{0x3089, 0x0a}, +{0x308a, 0x52}, +{0x308b, 0x09}, +{0x308c, 0x44}, +{0x308d, 0x03}, +{0x308e, 0x70}, +{0x308f, 0x03}, +{0x3090, 0x54}, +{0x3091, 0x09}, +{0x3092, 0x5a}, +{0x3093, 0x09}, +{0x3094, 0x1c}, +{0x3095, 0x00}, +{0x3096, 0x10}, +{0x3097, 0x00}, +{0x3098, 0x70}, +{0x3099, 0x03}, +{0x309a, 0xf8}, +{0x309b, 0x04}, +{0x309c, 0x74}, +{0x309d, 0x01}, +{0x309e, 0x60}, +{0x309f, 0x01}, +{0x3370, 0x01}, +{0x3374, 0xf0}, +{0x3375, 0x00}, +{0x3376, 0x01}, +{0x3377, 0x00}, +{0x3410, 0x90}, +{0x3411, 0x07}, +{0x3418, 0x48}, +{0x3419, 0x04}, +{0x34be, 0x6a}, +{0x34bf, 0x01}, +{0x3584, 0x00}, +{0x3586, 0x00}, +{0x3587, 0x01}, +{0x3588, 0xe6}, +{0x3589, 0x00}, +{0x3590, 0x00}, +{0x3591, 0x00}, +{0x3594, 0x40}, +{0x3598, 0x03}, +{0x3599, 0x00}, +{0x359a, 0x80}, +{0x359b, 0x00}, +{0x359c, 0x00}, +{0x359d, 0x01}, +{0x359e, 0x00}, +{0x359f, 0x02}, +{0x35a0, 0x00}, +{0x35a1, 0x04}, +{0x35a2, 0x20}, +{0x35a3, 0x00}, +{0x35a4, 0x40}, +{0x35a5, 0x00}, +{0x35a6, 0x80}, +{0x35a7, 0x00}, +{0x35a8, 0x00}, +{0x35a9, 0x01}, +{0x35aa, 0x3a}, +{0x35ab, 0x00}, +{0x35ac, 0x80}, +{0x35ad, 0x00}, +{0x35ae, 0x00}, +{0x35af, 0x01}, +{0x35b0, 0x00}, +{0x35b1, 0x02}, +{0x35b2, 0x00}, +{0x35b3, 0x04}, +{0x35b4, 0x02}, +{0x35b5, 0x00}, +{0x35b6, 0x04}, +{0x35b7, 0x00}, +{0x35b8, 0x08}, +{0x35b9, 0x00}, +{0x35ba, 0x10}, +{0x35bb, 0x00}, +{0x35bc, 0x03}, +{0x35bd, 0x00}, +{0x35c8, 0x00}, +{0x35c9, 0x01}, +{0x35ca, 0x00}, +{0x35cb, 0x04}, +{0x35cc, 0x00}, +{0x35cd, 0x10}, +{0x35ce, 0x00}, +{0x35cf, 0x40}, +{0x35d0, 0x00}, +{0x35d1, 0x0c}, +{0x35d2, 0x00}, +{0x35d3, 0x0c}, +{0x35d4, 0x00}, +{0x35d5, 0x0c}, +{0x35d6, 0x00}, +{0x35d7, 0x0c}, +{0x35d8, 0x00}, +{0x35d9, 0x00}, +{0x35da, 0x08}, +{0x35db, 0x00}, +{0x35dc, 0xd8}, +{0x35dd, 0x0e}, +{0x35f0, 0x00}, +{0x35f1, 0x10}, +{0x35f2, 0x00}, +{0x35f3, 0x10}, +{0x35f4, 0x00}, +{0x35f5, 0x10}, +{0x35f6, 0x00}, +{0x35f7, 0x03}, +{0x35f8, 0x00}, +{0x35f9, 0x02}, +{0x35fa, 0x38}, +{0x35fb, 0x00}, +{0x35fc, 0xb3}, +{0x35fd, 0x01}, +{0x35fe, 0x00}, +{0x35ff, 0x00}, +{0x3600, 0x05}, +{0x3601, 0x06}, +{0x3604, 0x03}, +{0x3605, 0x00}, +{0x3608, 0x03}, +{0x3609, 0x00}, +{0x360c, 0x00}, +{0x360d, 0x00}, +{0x3610, 0x10}, +{0x3611, 0x01}, +{0x3612, 0x00}, +{0x3613, 0x00}, +{0x3614, 0x00}, +{0x3615, 0x00}, +{0x361c, 0x00}, +{0x361d, 0x01}, +{0x361e, 0x00}, +{0x361f, 0x01}, +{0x3620, 0x01}, +{0x3621, 0x00}, +{0x3622, 0xb0}, +{0x3623, 0x04}, +{0x3624, 0xdc}, +{0x3625, 0x05}, +{0x3626, 0x00}, +{0x3627, 0x01}, +{0x3628, 0xff}, +{0x3629, 0x0f}, +{0x362a, 0x00}, +{0x362b, 0x10}, +{0x362c, 0x00}, +{0x362d, 0x01}, +{0x3630, 0x41}, +{0x3631, 0x00}, +{0x3632, 0x41}, +{0x3633, 0x00}, +{0x3634, 0x41}, +{0x3635, 0x00}, +{0x3636, 0x41}, +{0x3637, 0x00}, +{0x3638, 0x44}, +{0x3639, 0x00}, +{0x363a, 0x47}, +{0x363b, 0x00}, +{0x363c, 0x47}, +{0x363d, 0x00}, +{0x363e, 0x44}, +{0x363f, 0x00}, +{0x36c4, 0xff}, +{0x36c5, 0x0f}, +{0x36c6, 0xff}, +{0x36c7, 0x0f}, +{0x36c8, 0xff}, +{0x36c9, 0x0f}, +{0x36cc, 0x00}, +{0x36cd, 0x00}, +{0x36ce, 0x00}, +{0x36cf, 0x00}, +{0x36d0, 0x00}, +{0x36d1, 0x00}, +{0x36d4, 0xff}, +{0x36d5, 0x0f}, +{0x36d6, 0xff}, +{0x36d7, 0x0f}, +{0x36d8, 0xff}, +{0x36d9, 0x0f}, +{0x36dc, 0xff}, +{0x36dd, 0x0f}, +{0x36de, 0xff}, +{0x36df, 0x0f}, +{0x36e0, 0xff}, +{0x36e1, 0x0f}, +{0x36e4, 0xff}, +{0x36e5, 0x0f}, +{0x36e6, 0xff}, +{0x36e7, 0x0f}, +{0x36e8, 0xff}, +{0x36e9, 0x0f}, +{0x36ee, 0x00}, +{0x36ef, 0x00}, +{0x36f0, 0x00}, +{0x36f1, 0x80}, +{0x36f8, 0x01}, +{0x3700, 0x03}, +{0x3701, 0x05}, +{0x3702, 0x03}, +{0x3703, 0x04}, +{0x3704, 0x08}, +{0x3705, 0x03}, +{0x3706, 0x03}, +{0x3707, 0x03}, +{0x3708, 0x03}, +{0x3709, 0x03}, +{0x370a, 0x03}, +{0x370b, 0x03}, +{0x370c, 0x03}, +{0x370d, 0x03}, +{0x370e, 0x0e}, +{0x3718, 0x64}, +{0x3719, 0x47}, +{0x371a, 0x36}, +{0x371b, 0x1e}, +{0x371c, 0x50}, +{0x371d, 0x41}, +{0x371e, 0x2f}, +{0x371f, 0x1a}, +{0x3720, 0x95}, +{0x3721, 0x9d}, +{0x3722, 0xa5}, +{0x3723, 0xad}, +{0x3748, 0xa8}, +{0x3749, 0x9e}, +{0x374a, 0x94}, +{0x374b, 0x80}, +{0x37c0, 0x00}, +{0x37c1, 0x00}, +{0x37c2, 0x00}, +{0x37c4, 0x00}, +{0x37c5, 0x00}, +{0x37c6, 0x00}, +{0x37c8, 0x00}, +{0x37c9, 0x00}, +{0x37ca, 0x00}, +{0x37cc, 0x00}, +{0x37cd, 0x00}, +{0x37ce, 0x00}, +{0x37d0, 0x00}, +{0x37d1, 0x00}, +{0x37d2, 0x00}, +{0x37d4, 0x00}, +{0x37d5, 0x00}, +{0x37d6, 0x00}, +{0x37d8, 0x00}, +{0x37d9, 0x00}, +{0x37da, 0x00}, +{0x37dc, 0x00}, +{0x37dd, 0x00}, +{0x37de, 0x00}, +{0x37e0, 0x00}, +{0x37e1, 0x00}, +{0x37e2, 0x00}, +{0x37e4, 0x00}, +{0x37e5, 0x00}, +{0x37e6, 0x00}, +{0x37e8, 0x00}, +{0x37e9, 0x00}, +{0x37ea, 0x00}, +{0x37ec, 0x00}, +{0x37ed, 0x00}, +{0x37ee, 0x00}, +{0x37f0, 0x00}, +{0x37f4, 0x00}, +{0x37f5, 0x1e}, +{0x37f6, 0x34}, +{0x37f7, 0x00}, +{0x37f8, 0xff}, +{0x37f9, 0xff}, +{0x37fa, 0x03}, +{0x37fc, 0x00}, +{0x37fd, 0x00}, +{0x37fe, 0x04}, +{0x3800, 0xff}, +{0x3801, 0xff}, +{0x3802, 0x03}, +{0x3804, 0x00}, +{0x3805, 0x00}, +{0x3806, 0x04}, +{0x3808, 0x00}, +{0x3809, 0x00}, +{0x380a, 0x00}, +{0x380c, 0x00}, +{0x380d, 0x00}, +{0x380e, 0x00}, +{0x3810, 0x00}, +{0x3811, 0x00}, +{0x3812, 0x00}, +{0x3814, 0x00}, +{0x3815, 0x00}, +{0x3816, 0x00}, +{0x3818, 0x00}, +{0x3819, 0x00}, +{0x381a, 0x00}, +{0x381c, 0x00}, +{0x381d, 0x00}, +{0x381e, 0x00}, +{0x3820, 0x00}, +{0x3821, 0x00}, +{0x3822, 0x00}, +{0x3824, 0x00}, +{0x3825, 0x00}, +{0x3826, 0x00}, +{0x3828, 0x00}, +{0x3829, 0x00}, +{0x382a, 0x00}, +{0x382c, 0x00}, +{0x382d, 0x00}, +{0x382e, 0x00}, +{0x3830, 0x00}, +{0x3831, 0x00}, +{0x3832, 0x00}, +{0x3834, 0x00}, +{0x3835, 0x00}, +{0x3836, 0x00}, +{0x3838, 0x47}, +{0x3839, 0x00}, +{0x383a, 0x34}, +{0x383b, 0x00}, +{0x383c, 0x48}, +{0x383d, 0x00}, +{0x383e, 0x39}, +{0x383f, 0x00}, +{0x3840, 0x13}, +{0x3841, 0x00}, +{0x3842, 0x13}, +{0x3843, 0x00}, +{0x3844, 0x1d}, +{0x3845, 0x00}, +{0x3846, 0x1d}, +{0x3847, 0x00}, +{0x3848, 0x08}, +{0x3849, 0x00}, +{0x384a, 0x07}, +{0x384b, 0x00}, +{0x384c, 0x05}, +{0x384d, 0x00}, +{0x384e, 0x00}, +{0x384f, 0x00}, +{0x3850, 0xff}, +{0x3851, 0x0f}, +{0x3852, 0x00}, +{0x3853, 0x10}, +{0x3854, 0xff}, +{0x3855, 0x0f}, +{0x3856, 0x00}, +{0x3857, 0x10}, +{0x3858, 0xff}, +{0x3859, 0x0f}, +{0x385a, 0x00}, +{0x385b, 0x10}, +{0x385c, 0x02}, +{0x385d, 0x00}, +{0x385e, 0x06}, +{0x385f, 0x00}, +{0x3860, 0x06}, +{0x3861, 0x00}, +{0x3862, 0x08}, +{0x3863, 0x00}, +{0x3864, 0x02}, +{0x3865, 0x00}, +{0x3870, 0x00}, +{0x3871, 0x01}, +{0x38a0, 0x01}, +{0x38a1, 0x01}, +{0x38a2, 0x00}, +{0x38a3, 0x01}, +{0x38a4, 0x07}, +{0x38a5, 0x00}, +{0x38a6, 0x04}, +{0x38a7, 0x04}, +{0x38a8, 0x00}, +{0x38a9, 0x00}, +{0x38ac, 0x00}, +{0x38ad, 0x00}, +{0x38ae, 0x01}, +{0x38b0, 0x02}, +{0x38b2, 0x43}, +{0x38b3, 0x00}, +{0x38b4, 0x10}, +{0x38b5, 0x00}, +{0x38b6, 0x09}, +{0x38b7, 0x00}, +{0x38b8, 0x09}, +{0x38b9, 0x00}, +{0x38ba, 0x47}, +{0x38bb, 0x00}, +{0x38bc, 0x16}, +{0x38bd, 0x00}, +{0x38be, 0x0e}, +{0x38bf, 0x00}, +{0x38c0, 0x0b}, +{0x38c1, 0x00}, +{0x38c2, 0x4a}, +{0x38c3, 0x00}, +{0x38c4, 0x1c}, +{0x38c5, 0x00}, +{0x38c6, 0x12}, +{0x38c7, 0x00}, +{0x38c8, 0x0d}, +{0x38c9, 0x00}, +{0x38ca, 0x51}, +{0x38cb, 0x00}, +{0x38cc, 0x24}, +{0x38cd, 0x00}, +{0x38ce, 0x19}, +{0x38cf, 0x00}, +{0x38d0, 0x10}, +{0x38d1, 0x00}, +{0x38d2, 0x5d}, +{0x38d3, 0x00}, +{0x38d4, 0x30}, +{0x38d5, 0x00}, +{0x38d6, 0x23}, +{0x38d7, 0x00}, +{0x38d8, 0x17}, +{0x38d9, 0x00}, +{0x38da, 0x72}, +{0x38db, 0x00}, +{0x38dc, 0x43}, +{0x38dd, 0x00}, +{0x38de, 0x31}, +{0x38df, 0x00}, +{0x38e0, 0x20}, +{0x38e1, 0x00}, +{0x38e2, 0x96}, +{0x38e3, 0x00}, +{0x38e4, 0x5e}, +{0x38e5, 0x00}, +{0x38e6, 0x46}, +{0x38e7, 0x00}, +{0x38e8, 0x2e}, +{0x38e9, 0x00}, +{0x38ea, 0xd4}, +{0x38eb, 0x00}, +{0x38ec, 0x87}, +{0x38ed, 0x00}, +{0x38ee, 0x65}, +{0x38ef, 0x00}, +{0x38f0, 0x43}, +{0x38f1, 0x00}, +{0x38f2, 0x3f}, +{0x38f3, 0x01}, +{0x38f4, 0xc4}, +{0x38f5, 0x00}, +{0x38f6, 0x94}, +{0x38f7, 0x00}, +{0x38f8, 0x64}, +{0x38f9, 0x00}, +{0x38fa, 0x00}, +{0x38fb, 0x01}, +{0x38fc, 0x00}, +{0x38fd, 0x01}, +{0x38fe, 0x00}, +{0x38ff, 0x01}, +{0x3900, 0x00}, +{0x3901, 0x01}, +{0x3902, 0x60}, +{0x3903, 0x00}, +{0x3904, 0x25}, +{0x3905, 0x00}, +{0x3906, 0x18}, +{0x3907, 0x00}, +{0x3908, 0x10}, +{0x3909, 0x00}, +{0x390a, 0xe6}, +{0x390b, 0x00}, +{0x390c, 0xd5}, +{0x390d, 0x00}, +{0x390e, 0xaa}, +{0x390f, 0x00}, +{0x3910, 0x85}, +{0x3911, 0x00}, +{0x3912, 0xe6}, +{0x3913, 0x00}, +{0x3914, 0xd5}, +{0x3915, 0x00}, +{0x3916, 0xaa}, +{0x3917, 0x00}, +{0x3918, 0x85}, +{0x3919, 0x00}, +{0x391a, 0xe6}, +{0x391b, 0x00}, +{0x391c, 0xd5}, +{0x391d, 0x00}, +{0x391e, 0xaa}, +{0x391f, 0x00}, +{0x3920, 0x85}, +{0x3921, 0x00}, +{0x3922, 0x40}, +{0x3923, 0x00}, +{0x3924, 0x40}, +{0x3925, 0x00}, +{0x3926, 0x40}, +{0x3927, 0x00}, +{0x3928, 0x40}, +{0x3929, 0x00}, +{0x392a, 0x80}, +{0x392b, 0x00}, +{0x392c, 0x80}, +{0x392d, 0x00}, +{0x392e, 0x80}, +{0x392f, 0x00}, +{0x3930, 0x80}, +{0x3931, 0x00}, +{0x3932, 0x4c}, +{0x3933, 0x4c}, +{0x3934, 0x4c}, +{0x3940, 0x01}, +{0x3941, 0x01}, +{0x3942, 0x00}, +{0x3943, 0x01}, +{0x3944, 0x07}, +{0x3945, 0x00}, +{0x3946, 0x04}, +{0x3947, 0x04}, +{0x3948, 0x00}, +{0x3949, 0x00}, +{0x394c, 0x00}, +{0x394d, 0x00}, +{0x394e, 0x01}, +{0x3950, 0x03}, +{0x3952, 0x1b}, +{0x3953, 0x00}, +{0x3954, 0x0c}, +{0x3955, 0x00}, +{0x3956, 0x09}, +{0x3957, 0x00}, +{0x3958, 0x07}, +{0x3959, 0x00}, +{0x395a, 0x1d}, +{0x395b, 0x00}, +{0x395c, 0x0e}, +{0x395d, 0x00}, +{0x395e, 0x0b}, +{0x395f, 0x00}, +{0x3960, 0x08}, +{0x3961, 0x00}, +{0x3962, 0x1e}, +{0x3963, 0x00}, +{0x3964, 0x10}, +{0x3965, 0x00}, +{0x3966, 0x0c}, +{0x3967, 0x00}, +{0x3968, 0x09}, +{0x3969, 0x00}, +{0x396a, 0x21}, +{0x396b, 0x00}, +{0x396c, 0x13}, +{0x396d, 0x00}, +{0x396e, 0x0e}, +{0x396f, 0x00}, +{0x3970, 0x0a}, +{0x3971, 0x00}, +{0x3972, 0x25}, +{0x3973, 0x00}, +{0x3974, 0x19}, +{0x3975, 0x00}, +{0x3976, 0x12}, +{0x3977, 0x00}, +{0x3978, 0x0d}, +{0x3979, 0x00}, +{0x397a, 0x2e}, +{0x397b, 0x00}, +{0x397c, 0x21}, +{0x397d, 0x00}, +{0x397e, 0x19}, +{0x397f, 0x00}, +{0x3980, 0x11}, +{0x3981, 0x00}, +{0x3982, 0x3c}, +{0x3983, 0x00}, +{0x3984, 0x2f}, +{0x3985, 0x00}, +{0x3986, 0x23}, +{0x3987, 0x00}, +{0x3988, 0x19}, +{0x3989, 0x00}, +{0x398a, 0x56}, +{0x398b, 0x00}, +{0x398c, 0x44}, +{0x398d, 0x00}, +{0x398e, 0x35}, +{0x398f, 0x00}, +{0x3990, 0x27}, +{0x3991, 0x00}, +{0x3992, 0x84}, +{0x3993, 0x00}, +{0x3994, 0x68}, +{0x3995, 0x00}, +{0x3996, 0x53}, +{0x3997, 0x00}, +{0x3998, 0x40}, +{0x3999, 0x00}, +{0x399a, 0x00}, +{0x399b, 0x01}, +{0x399c, 0x00}, +{0x399d, 0x01}, +{0x399e, 0x00}, +{0x399f, 0x01}, +{0x39a0, 0x00}, +{0x39a1, 0x01}, +{0x39a2, 0x60}, +{0x39a3, 0x00}, +{0x39a4, 0x20}, +{0x39a5, 0x00}, +{0x39a6, 0x15}, +{0x39a7, 0x00}, +{0x39a8, 0x10}, +{0x39a9, 0x00}, +{0x39aa, 0xe6}, +{0x39ab, 0x00}, +{0x39ac, 0xd5}, +{0x39ad, 0x00}, +{0x39ae, 0xaa}, +{0x39af, 0x00}, +{0x39b0, 0x85}, +{0x39b1, 0x00}, +{0x39b2, 0xe6}, +{0x39b3, 0x00}, +{0x39b4, 0xd5}, +{0x39b5, 0x00}, +{0x39b6, 0xaa}, +{0x39b7, 0x00}, +{0x39b8, 0x85}, +{0x39b9, 0x00}, +{0x39ba, 0xe6}, +{0x39bb, 0x00}, +{0x39bc, 0xd5}, +{0x39bd, 0x00}, +{0x39be, 0xaa}, +{0x39bf, 0x00}, +{0x39c0, 0x85}, +{0x39c1, 0x00}, +{0x39c2, 0x40}, +{0x39c3, 0x00}, +{0x39c4, 0x40}, +{0x39c5, 0x00}, +{0x39c6, 0x40}, +{0x39c7, 0x00}, +{0x39c8, 0x40}, +{0x39c9, 0x00}, +{0x39ca, 0x80}, +{0x39cb, 0x00}, +{0x39cc, 0x80}, +{0x39cd, 0x00}, +{0x39ce, 0x80}, +{0x39cf, 0x00}, +{0x39d0, 0x80}, +{0x39d1, 0x00}, +{0x39d2, 0x4c}, +{0x39d3, 0x4c}, +{0x39d4, 0x4c}, +{0x39e0, 0x01}, +{0x39e1, 0x00}, +{0x39e4, 0x40}, +{0x39e5, 0x01}, +{0x39e6, 0x01}, +{0x39e8, 0x00}, +{0x39e9, 0x01}, +{0x39ea, 0x00}, +{0x39eb, 0x00}, +{0x39ec, 0x01}, +{0x39ed, 0x00}, +{0x39ee, 0x01}, +{0x39f0, 0x03}, +{0x39f1, 0x04}, +{0x39f2, 0x0e}, +{0x39f4, 0x19}, +{0x39f5, 0x00}, +{0x39f6, 0x12}, +{0x39f7, 0x00}, +{0x39f8, 0x0d}, +{0x39f9, 0x00}, +{0x39fa, 0x07}, +{0x39fb, 0x00}, +{0x39fc, 0x2b}, +{0x39fd, 0x00}, +{0x39fe, 0x1b}, +{0x39ff, 0x00}, +{0x3a00, 0x11}, +{0x3a01, 0x00}, +{0x3a02, 0x08}, +{0x3a03, 0x00}, +{0x3a04, 0x37}, +{0x3a05, 0x00}, +{0x3a06, 0x21}, +{0x3a07, 0x00}, +{0x3a08, 0x14}, +{0x3a09, 0x00}, +{0x3a0a, 0x09}, +{0x3a0b, 0x00}, +{0x3a0c, 0x4a}, +{0x3a0d, 0x00}, +{0x3a0e, 0x2c}, +{0x3a0f, 0x00}, +{0x3a10, 0x18}, +{0x3a11, 0x00}, +{0x3a12, 0x0b}, +{0x3a13, 0x00}, +{0x3a14, 0x66}, +{0x3a15, 0x00}, +{0x3a16, 0x3b}, +{0x3a17, 0x00}, +{0x3a18, 0x20}, +{0x3a19, 0x00}, +{0x3a1a, 0x0f}, +{0x3a1b, 0x00}, +{0x3a1c, 0x8e}, +{0x3a1d, 0x00}, +{0x3a1e, 0x51}, +{0x3a1f, 0x00}, +{0x3a20, 0x2b}, +{0x3a21, 0x00}, +{0x3a22, 0x14}, +{0x3a23, 0x00}, +{0x3a24, 0xc8}, +{0x3a25, 0x00}, +{0x3a26, 0x72}, +{0x3a27, 0x00}, +{0x3a28, 0x3c}, +{0x3a29, 0x00}, +{0x3a2a, 0x1b}, +{0x3a2b, 0x00}, +{0x3a2c, 0x19}, +{0x3a2d, 0x01}, +{0x3a2e, 0xa0}, +{0x3a2f, 0x00}, +{0x3a30, 0x54}, +{0x3a31, 0x00}, +{0x3a32, 0x25}, +{0x3a33, 0x00}, +{0x3a34, 0x8d}, +{0x3a35, 0x01}, +{0x3a36, 0xe1}, +{0x3a37, 0x00}, +{0x3a38, 0x76}, +{0x3a39, 0x00}, +{0x3a3a, 0x35}, +{0x3a3b, 0x00}, +{0x3a3c, 0x00}, +{0x3a3d, 0x01}, +{0x3a3e, 0x00}, +{0x3a3f, 0x01}, +{0x3a40, 0x00}, +{0x3a41, 0x01}, +{0x3a42, 0x00}, +{0x3a43, 0x01}, +{0x3a44, 0x70}, +{0x3a45, 0x00}, +{0x3a46, 0x25}, +{0x3a47, 0x00}, +{0x3a48, 0x18}, +{0x3a49, 0x00}, +{0x3a4a, 0x10}, +{0x3a4b, 0x00}, +{0x3a4c, 0xe6}, +{0x3a4d, 0x00}, +{0x3a4e, 0xd5}, +{0x3a4f, 0x00}, +{0x3a50, 0xaa}, +{0x3a51, 0x00}, +{0x3a52, 0x85}, +{0x3a53, 0x00}, +{0x3a54, 0xe6}, +{0x3a55, 0x00}, +{0x3a56, 0xd5}, +{0x3a57, 0x00}, +{0x3a58, 0xaa}, +{0x3a59, 0x00}, +{0x3a5a, 0x85}, +{0x3a5b, 0x00}, +{0x3a5c, 0xe6}, +{0x3a5d, 0x00}, +{0x3a5e, 0xd5}, +{0x3a5f, 0x00}, +{0x3a60, 0xaa}, +{0x3a61, 0x00}, +{0x3a62, 0x85}, +{0x3a63, 0x00}, +{0x3a64, 0x19}, +{0x3a65, 0x00}, +{0x3a66, 0x12}, +{0x3a67, 0x00}, +{0x3a68, 0x0d}, +{0x3a69, 0x00}, +{0x3a6a, 0x07}, +{0x3a6b, 0x00}, +{0x3a6c, 0x0c}, +{0x3a6d, 0x00}, +{0x3a6e, 0x07}, +{0x3a6f, 0x00}, +{0x3a70, 0x05}, +{0x3a71, 0x00}, +{0x3a72, 0x04}, +{0x3a73, 0x00}, +{0x3a74, 0x1b}, +{0x3a75, 0x00}, +{0x3a76, 0x15}, +{0x3a77, 0x00}, +{0x3a78, 0x0c}, +{0x3a79, 0x00}, +{0x3a7a, 0x08}, +{0x3a7b, 0x00}, +{0x3a7c, 0x80}, +{0x3a7d, 0x00}, +{0x3a7e, 0x80}, +{0x3a7f, 0x00}, +{0x3a80, 0x80}, +{0x3a81, 0x00}, +{0x3a82, 0x80}, +{0x3a83, 0x00}, +{0x3a84, 0x09}, +{0x3a85, 0x00}, +{0x3a86, 0x06}, +{0x3a87, 0x00}, +{0x3a88, 0x04}, +{0x3a89, 0x00}, +{0x3a8a, 0x03}, +{0x3a8b, 0x00}, +{0x3a8c, 0xfa}, +{0x3a8d, 0x00}, +{0x3a8e, 0xc8}, +{0x3a8f, 0x00}, +{0x3a90, 0x96}, +{0x3a91, 0x00}, +{0x3a92, 0x64}, +{0x3a93, 0x00}, +{0x3a94, 0xe1}, +{0x3a95, 0x00}, +{0x3a96, 0xc8}, +{0x3a97, 0x00}, +{0x3a98, 0x96}, +{0x3a99, 0x00}, +{0x3a9a, 0x64}, +{0x3a9b, 0x00}, +{0x3a9c, 0x08}, +{0x3a9d, 0x10}, +{0x3a9e, 0x4c}, +{0x3a9f, 0x4c}, +{0x3aa0, 0x4c}, +{0x3aa1, 0x04}, +{0x3aa2, 0x04}, +{0x3ac0, 0x01}, +{0x3ac4, 0x81}, +{0x3ac5, 0x00}, +{0x3ac6, 0x00}, +{0x3ac7, 0x00}, +{0x3ac8, 0x00}, +{0x3ac9, 0x00}, +{0x3aca, 0x00}, +{0x3acb, 0x00}, +{0x3acc, 0x02}, +{0x3acd, 0x00}, +{0x3ace, 0x81}, +{0x3acf, 0x00}, +{0x3ad0, 0x00}, +{0x3ad1, 0x00}, +{0x3ad2, 0xfd}, +{0x3ad3, 0x03}, +{0x3ad4, 0x02}, +{0x3ad5, 0x00}, +{0x3ad6, 0x00}, +{0x3ad7, 0x00}, +{0x3ad8, 0x81}, +{0x3ad9, 0x00}, +{0x3ada, 0xfd}, +{0x3adb, 0x03}, +{0x3adc, 0xff}, +{0x3add, 0x03}, +{0x3ade, 0x01}, +{0x3adf, 0x00}, +{0x3ae0, 0x01}, +{0x3ae1, 0x00}, +{0x3ae2, 0x7e}, +{0x3ae3, 0x00}, +{0x3af4, 0x00}, +{0x3af6, 0x40}, +{0x3af7, 0x1e}, +{0x3af8, 0x00}, +{0x3afa, 0x00}, +{0x3afb, 0x00}, +{0x3afc, 0x00}, +{0x3afd, 0x00}, +{0x3afe, 0x00}, +{0x3aff, 0x00}, +{0x3b00, 0x00}, +{0x3b01, 0x00}, +{0x3b02, 0x00}, +{0x3b03, 0x00}, +{0x3b04, 0x00}, +{0x3b05, 0x00}, +{0x3b06, 0x00}, +{0x3b07, 0x00}, +{0x3b08, 0x00}, +{0x3b09, 0x00}, +{0x3b0a, 0x00}, +{0x3b0b, 0x00}, +{0x3b0c, 0x00}, +{0x3b0d, 0x00}, +{0x3b0e, 0x00}, +{0x3b0f, 0x00}, +{0x3b10, 0x00}, +{0x3b11, 0x00}, +{0x3b12, 0x00}, +{0x3b13, 0x00}, +{0x3b14, 0x00}, +{0x3b15, 0x00}, +{0x3b16, 0x00}, +{0x3b17, 0x00}, +{0x3b18, 0x00}, +{0x3b19, 0x00}, +{0x3b1a, 0x00}, +{0x3b1b, 0x00}, +{0x3b1c, 0x00}, +{0x3b1d, 0x00}, +{0x3b1e, 0x00}, +{0x3b1f, 0x00}, +{0x3b20, 0x00}, +{0x3b21, 0x00}, +{0x3b22, 0x00}, +{0x3b23, 0x00}, +{0x3b24, 0x00}, +{0x3b25, 0x00}, +{0x3b26, 0x00}, +{0x3b27, 0x00}, +{0x3b28, 0x00}, +{0x3b29, 0x00}, +{0x3b2a, 0x00}, +{0x3b2c, 0x00}, +{0x3b2e, 0x00}, +{0x3b30, 0x00}, +{0x3b32, 0x0c}, +{0x4000, 0xaf}, +{0x4001, 0xa7}, +{0x4002, 0xa8}, +{0x4003, 0xa5}, +{0x4004, 0x98}, +{0x4005, 0x93}, +{0x4006, 0x94}, +{0x4007, 0x93}, +{0x4008, 0x8e}, +{0x4009, 0x8c}, +{0x400a, 0x8c}, +{0x400b, 0x8c}, +{0x400c, 0x89}, +{0x400d, 0x88}, +{0x400e, 0x89}, +{0x400f, 0x89}, +{0x4010, 0x87}, +{0x4011, 0x87}, +{0x4012, 0x87}, +{0x4013, 0x86}, +{0x4014, 0x88}, +{0x4015, 0x87}, +{0x4016, 0x87}, +{0x4017, 0x87}, +{0x4018, 0x8b}, +{0x4019, 0x89}, +{0x401a, 0x89}, +{0x401b, 0x8a}, +{0x401c, 0x92}, +{0x401d, 0x8f}, +{0x401e, 0x8f}, +{0x401f, 0x8f}, +{0x4020, 0xa2}, +{0x4021, 0x9c}, +{0x4022, 0x9b}, +{0x4023, 0x9c}, +{0x4024, 0xa1}, +{0x4025, 0x9a}, +{0x4026, 0x9b}, +{0x4027, 0x99}, +{0x4028, 0x94}, +{0x4029, 0x90}, +{0x402a, 0x90}, +{0x402b, 0x90}, +{0x402c, 0x8b}, +{0x402d, 0x89}, +{0x402e, 0x89}, +{0x402f, 0x89}, +{0x4030, 0x86}, +{0x4031, 0x85}, +{0x4032, 0x86}, +{0x4033, 0x85}, +{0x4034, 0x84}, +{0x4035, 0x84}, +{0x4036, 0x84}, +{0x4037, 0x84}, +{0x4038, 0x85}, +{0x4039, 0x85}, +{0x403a, 0x85}, +{0x403b, 0x85}, +{0x403c, 0x88}, +{0x403d, 0x87}, +{0x403e, 0x87}, +{0x403f, 0x87}, +{0x4040, 0x8e}, +{0x4041, 0x8c}, +{0x4042, 0x8c}, +{0x4043, 0x8c}, +{0x4044, 0x98}, +{0x4045, 0x93}, +{0x4046, 0x93}, +{0x4047, 0x94}, +{0x4048, 0x9d}, +{0x4049, 0x96}, +{0x404a, 0x97}, +{0x404b, 0x96}, +{0x404c, 0x91}, +{0x404d, 0x8c}, +{0x404e, 0x8d}, +{0x404f, 0x8c}, +{0x4050, 0x89}, +{0x4051, 0x86}, +{0x4052, 0x87}, +{0x4053, 0x86}, +{0x4054, 0x83}, +{0x4055, 0x82}, +{0x4056, 0x82}, +{0x4057, 0x82}, +{0x4058, 0x80}, +{0x4059, 0x80}, +{0x405a, 0x80}, +{0x405b, 0x80}, +{0x405c, 0x82}, +{0x405d, 0x82}, +{0x405e, 0x82}, +{0x405f, 0x82}, +{0x4060, 0x86}, +{0x4061, 0x85}, +{0x4062, 0x85}, +{0x4063, 0x85}, +{0x4064, 0x8b}, +{0x4065, 0x8a}, +{0x4066, 0x89}, +{0x4067, 0x89}, +{0x4068, 0x94}, +{0x4069, 0x91}, +{0x406a, 0x90}, +{0x406b, 0x91}, +{0x406c, 0x9e}, +{0x406d, 0x95}, +{0x406e, 0x96}, +{0x406f, 0x95}, +{0x4070, 0x91}, +{0x4071, 0x8c}, +{0x4072, 0x8c}, +{0x4073, 0x8c}, +{0x4074, 0x89}, +{0x4075, 0x86}, +{0x4076, 0x86}, +{0x4077, 0x86}, +{0x4078, 0x83}, +{0x4079, 0x82}, +{0x407a, 0x82}, +{0x407b, 0x82}, +{0x407c, 0x80}, +{0x407d, 0x80}, +{0x407e, 0x80}, +{0x407f, 0x80}, +{0x4080, 0x82}, +{0x4081, 0x81}, +{0x4082, 0x81}, +{0x4083, 0x81}, +{0x4084, 0x85}, +{0x4085, 0x85}, +{0x4086, 0x85}, +{0x4087, 0x84}, +{0x4088, 0x8b}, +{0x4089, 0x8a}, +{0x408a, 0x89}, +{0x408b, 0x89}, +{0x408c, 0x93}, +{0x408d, 0x90}, +{0x408e, 0x8f}, +{0x408f, 0x8f}, +{0x4090, 0xa3}, +{0x4091, 0x99}, +{0x4092, 0x9a}, +{0x4093, 0x99}, +{0x4094, 0x95}, +{0x4095, 0x8f}, +{0x4096, 0x8f}, +{0x4097, 0x8f}, +{0x4098, 0x8b}, +{0x4099, 0x87}, +{0x409a, 0x87}, +{0x409b, 0x87}, +{0x409c, 0x86}, +{0x409d, 0x84}, +{0x409e, 0x84}, +{0x409f, 0x84}, +{0x40a0, 0x84}, +{0x40a1, 0x83}, +{0x40a2, 0x83}, +{0x40a3, 0x82}, +{0x40a4, 0x84}, +{0x40a5, 0x84}, +{0x40a6, 0x83}, +{0x40a7, 0x83}, +{0x40a8, 0x88}, +{0x40a9, 0x87}, +{0x40aa, 0x86}, +{0x40ab, 0x86}, +{0x40ac, 0x8e}, +{0x40ad, 0x8c}, +{0x40ae, 0x8c}, +{0x40af, 0x8b}, +{0x40b0, 0x9a}, +{0x40b1, 0x96}, +{0x40b2, 0x96}, +{0x40b3, 0x95}, +{0x40b4, 0xba}, +{0x40b5, 0xac}, +{0x40b6, 0xad}, +{0x40b7, 0xac}, +{0x40b8, 0x99}, +{0x40b9, 0x90}, +{0x40ba, 0x91}, +{0x40bb, 0x90}, +{0x40bc, 0x90}, +{0x40bd, 0x8a}, +{0x40be, 0x8a}, +{0x40bf, 0x8a}, +{0x40c0, 0x89}, +{0x40c1, 0x86}, +{0x40c2, 0x86}, +{0x40c3, 0x87}, +{0x40c4, 0x87}, +{0x40c5, 0x85}, +{0x40c6, 0x85}, +{0x40c7, 0x85}, +{0x40c8, 0x87}, +{0x40c9, 0x86}, +{0x40ca, 0x85}, +{0x40cb, 0x85}, +{0x40cc, 0x8a}, +{0x40cd, 0x88}, +{0x40ce, 0x88}, +{0x40cf, 0x87}, +{0x40d0, 0x92}, +{0x40d1, 0x8f}, +{0x40d2, 0x8e}, +{0x40d3, 0x8e}, +{0x40d4, 0xa2}, +{0x40d5, 0x9d}, +{0x40d6, 0x9d}, +{0x40d7, 0x9b}, +{0x4100, 0x80}, +{0x4101, 0x80}, +{0x4102, 0x80}, +{0x4103, 0x80}, +{0x4104, 0x80}, +{0x4105, 0x80}, +{0x4106, 0x80}, +{0x4107, 0x80}, +{0x4108, 0x80}, +{0x4109, 0x80}, +{0x410a, 0x80}, +{0x410b, 0x80}, +{0x410c, 0x80}, +{0x410d, 0x80}, +{0x410e, 0x80}, +{0x410f, 0x80}, +{0x4110, 0x80}, +{0x4111, 0x80}, +{0x4112, 0x80}, +{0x4113, 0x80}, +{0x4114, 0x80}, +{0x4115, 0x80}, +{0x4116, 0x80}, +{0x4117, 0x80}, +{0x4118, 0x80}, +{0x4119, 0x80}, +{0x411a, 0x80}, +{0x411b, 0x80}, +{0x411c, 0x80}, +{0x411d, 0x80}, +{0x411e, 0x80}, +{0x411f, 0x80}, +{0x4120, 0x80}, +{0x4121, 0x80}, +{0x4122, 0x80}, +{0x4123, 0x80}, +{0x4124, 0x80}, +{0x4125, 0x80}, +{0x4126, 0x80}, +{0x4127, 0x80}, +{0x4128, 0x80}, +{0x4129, 0x80}, +{0x412a, 0x80}, +{0x412b, 0x80}, +{0x412c, 0x80}, +{0x412d, 0x80}, +{0x412e, 0x80}, +{0x412f, 0x80}, +{0x4130, 0x80}, +{0x4131, 0x80}, +{0x4132, 0x80}, +{0x4133, 0x80}, +{0x4134, 0x80}, +{0x4135, 0x80}, +{0x4136, 0x80}, +{0x4137, 0x80}, +{0x4138, 0x80}, +{0x4139, 0x80}, +{0x413a, 0x80}, +{0x413b, 0x80}, +{0x413c, 0x80}, +{0x413d, 0x80}, +{0x413e, 0x80}, +{0x413f, 0x80}, +{0x4140, 0x80}, +{0x4141, 0x80}, +{0x4142, 0x80}, +{0x4143, 0x80}, +{0x4144, 0x80}, +{0x4145, 0x80}, +{0x4146, 0x80}, +{0x4147, 0x80}, +{0x4148, 0x80}, +{0x4149, 0x80}, +{0x414a, 0x80}, +{0x414b, 0x80}, +{0x414c, 0x80}, +{0x414d, 0x80}, +{0x414e, 0x80}, +{0x414f, 0x80}, +{0x4150, 0x80}, +{0x4151, 0x80}, +{0x4152, 0x80}, +{0x4153, 0x80}, +{0x4154, 0x80}, +{0x4155, 0x80}, +{0x4156, 0x80}, +{0x4157, 0x80}, +{0x4158, 0x80}, +{0x4159, 0x80}, +{0x415a, 0x80}, +{0x415b, 0x80}, +{0x415c, 0x80}, +{0x415d, 0x80}, +{0x415e, 0x80}, +{0x415f, 0x80}, +{0x4160, 0x80}, +{0x4161, 0x80}, +{0x4162, 0x80}, +{0x4163, 0x80}, +{0x4164, 0x80}, +{0x4165, 0x80}, +{0x4166, 0x80}, +{0x4167, 0x80}, +{0x4168, 0x80}, +{0x4169, 0x80}, +{0x416a, 0x80}, +{0x416b, 0x80}, +{0x416c, 0x80}, +{0x416d, 0x80}, +{0x416e, 0x80}, +{0x416f, 0x80}, +{0x4170, 0x80}, +{0x4171, 0x80}, +{0x4172, 0x80}, +{0x4173, 0x80}, +{0x4174, 0x80}, +{0x4175, 0x80}, +{0x4176, 0x80}, +{0x4177, 0x80}, +{0x4178, 0x80}, +{0x4179, 0x80}, +{0x417a, 0x80}, +{0x417b, 0x80}, +{0x417c, 0x80}, +{0x417d, 0x80}, +{0x417e, 0x80}, +{0x417f, 0x80}, +{0x4180, 0x80}, +{0x4181, 0x80}, +{0x4182, 0x80}, +{0x4183, 0x80}, +{0x4184, 0x80}, +{0x4185, 0x80}, +{0x4186, 0x80}, +{0x4187, 0x80}, +{0x4188, 0x80}, +{0x4189, 0x80}, +{0x418a, 0x80}, +{0x418b, 0x80}, +{0x418c, 0x80}, +{0x418d, 0x80}, +{0x418e, 0x80}, +{0x418f, 0x80}, +{0x4190, 0x80}, +{0x4191, 0x80}, +{0x4192, 0x80}, +{0x4193, 0x80}, +{0x4194, 0x80}, +{0x4195, 0x80}, +{0x4196, 0x80}, +{0x4197, 0x80}, +{0x4198, 0x80}, +{0x4199, 0x80}, +{0x419a, 0x80}, +{0x419b, 0x80}, +{0x419c, 0x80}, +{0x419d, 0x80}, +{0x419e, 0x80}, +{0x419f, 0x80}, +{0x41a0, 0x80}, +{0x41a1, 0x80}, +{0x41a2, 0x80}, +{0x41a3, 0x80}, +{0x41a4, 0x80}, +{0x41a5, 0x80}, +{0x41a6, 0x80}, +{0x41a7, 0x80}, +{0x41a8, 0x80}, +{0x41a9, 0x80}, +{0x41aa, 0x80}, +{0x41ab, 0x80}, +{0x41ac, 0x80}, +{0x41ad, 0x80}, +{0x41ae, 0x80}, +{0x41af, 0x80}, +{0x41b0, 0x80}, +{0x41b1, 0x80}, +{0x41b2, 0x80}, +{0x41b3, 0x80}, +{0x41b4, 0x80}, +{0x41b5, 0x80}, +{0x41b6, 0x80}, +{0x41b7, 0x80}, +{0x41b8, 0x80}, +{0x41b9, 0x80}, +{0x41ba, 0x80}, +{0x41bb, 0x80}, +{0x41bc, 0x80}, +{0x41bd, 0x80}, +{0x41be, 0x80}, +{0x41bf, 0x80}, +{0x41c0, 0x80}, +{0x41c1, 0x80}, +{0x41c2, 0x80}, +{0x41c3, 0x80}, +{0x41c4, 0x80}, +{0x41c5, 0x80}, +{0x41c6, 0x80}, +{0x41c7, 0x80}, +{0x41c8, 0x80}, +{0x41c9, 0x80}, +{0x41ca, 0x80}, +{0x41cb, 0x80}, +{0x41cc, 0x80}, +{0x41cd, 0x80}, +{0x41ce, 0x80}, +{0x41cf, 0x80}, +{0x41d0, 0x80}, +{0x41d1, 0x80}, +{0x41d2, 0x80}, +{0x41d3, 0x80}, +{0x41d4, 0x80}, +{0x41d5, 0x80}, +{0x41d6, 0x80}, +{0x41d7, 0x80}, +{0x4200, 0x80}, +{0x4201, 0x80}, +{0x4202, 0x80}, +{0x4203, 0x80}, +{0x4204, 0x80}, +{0x4205, 0x80}, +{0x4206, 0x80}, +{0x4207, 0x80}, +{0x4208, 0x80}, +{0x4209, 0x80}, +{0x420a, 0x80}, +{0x420b, 0x80}, +{0x420c, 0x80}, +{0x420d, 0x80}, +{0x420e, 0x80}, +{0x420f, 0x80}, +{0x4210, 0x80}, +{0x4211, 0x80}, +{0x4212, 0x80}, +{0x4213, 0x80}, +{0x4214, 0x80}, +{0x4215, 0x80}, +{0x4216, 0x80}, +{0x4217, 0x80}, +{0x4218, 0x80}, +{0x4219, 0x80}, +{0x421a, 0x80}, +{0x421b, 0x80}, +{0x421c, 0x80}, +{0x421d, 0x80}, +{0x421e, 0x80}, +{0x421f, 0x80}, +{0x4220, 0x80}, +{0x4221, 0x80}, +{0x4222, 0x80}, +{0x4223, 0x80}, +{0x4224, 0x80}, +{0x4225, 0x80}, +{0x4226, 0x80}, +{0x4227, 0x80}, +{0x4228, 0x80}, +{0x4229, 0x80}, +{0x422a, 0x80}, +{0x422b, 0x80}, +{0x422c, 0x80}, +{0x422d, 0x80}, +{0x422e, 0x80}, +{0x422f, 0x80}, +{0x4230, 0x80}, +{0x4231, 0x80}, +{0x4232, 0x80}, +{0x4233, 0x80}, +{0x4234, 0x80}, +{0x4235, 0x80}, +{0x4236, 0x80}, +{0x4237, 0x80}, +{0x4238, 0x80}, +{0x4239, 0x80}, +{0x423a, 0x80}, +{0x423b, 0x80}, +{0x423c, 0x80}, +{0x423d, 0x80}, +{0x423e, 0x80}, +{0x423f, 0x80}, +{0x4240, 0x80}, +{0x4241, 0x80}, +{0x4242, 0x80}, +{0x4243, 0x80}, +{0x4244, 0x80}, +{0x4245, 0x80}, +{0x4246, 0x80}, +{0x4247, 0x80}, +{0x4248, 0x80}, +{0x4249, 0x80}, +{0x424a, 0x80}, +{0x424b, 0x80}, +{0x424c, 0x80}, +{0x424d, 0x80}, +{0x424e, 0x80}, +{0x424f, 0x80}, +{0x4250, 0x80}, +{0x4251, 0x80}, +{0x4252, 0x80}, +{0x4253, 0x80}, +{0x4254, 0x80}, +{0x4255, 0x80}, +{0x4256, 0x80}, +{0x4257, 0x80}, +{0x4258, 0x80}, +{0x4259, 0x80}, +{0x425a, 0x80}, +{0x425b, 0x80}, +{0x425c, 0x80}, +{0x425d, 0x80}, +{0x425e, 0x80}, +{0x425f, 0x80}, +{0x4260, 0x80}, +{0x4261, 0x80}, +{0x4262, 0x80}, +{0x4263, 0x80}, +{0x4264, 0x80}, +{0x4265, 0x80}, +{0x4266, 0x80}, +{0x4267, 0x80}, +{0x4268, 0x80}, +{0x4269, 0x80}, +{0x426a, 0x80}, +{0x426b, 0x80}, +{0x426c, 0x80}, +{0x426d, 0x80}, +{0x426e, 0x80}, +{0x426f, 0x80}, +{0x4270, 0x80}, +{0x4271, 0x80}, +{0x4272, 0x80}, +{0x4273, 0x80}, +{0x4274, 0x80}, +{0x4275, 0x80}, +{0x4276, 0x80}, +{0x4277, 0x80}, +{0x4278, 0x80}, +{0x4279, 0x80}, +{0x427a, 0x80}, +{0x427b, 0x80}, +{0x427c, 0x80}, +{0x427d, 0x80}, +{0x427e, 0x80}, +{0x427f, 0x80}, +{0x4280, 0x80}, +{0x4281, 0x80}, +{0x4282, 0x80}, +{0x4283, 0x80}, +{0x4284, 0x80}, +{0x4285, 0x80}, +{0x4286, 0x80}, +{0x4287, 0x80}, +{0x4288, 0x80}, +{0x4289, 0x80}, +{0x428a, 0x80}, +{0x428b, 0x80}, +{0x428c, 0x80}, +{0x428d, 0x80}, +{0x428e, 0x80}, +{0x428f, 0x80}, +{0x4290, 0x80}, +{0x4291, 0x80}, +{0x4292, 0x80}, +{0x4293, 0x80}, +{0x4294, 0x80}, +{0x4295, 0x80}, +{0x4296, 0x80}, +{0x4297, 0x80}, +{0x4298, 0x80}, +{0x4299, 0x80}, +{0x429a, 0x80}, +{0x429b, 0x80}, +{0x429c, 0x80}, +{0x429d, 0x80}, +{0x429e, 0x80}, +{0x429f, 0x80}, +{0x42a0, 0x80}, +{0x42a1, 0x80}, +{0x42a2, 0x80}, +{0x42a3, 0x80}, +{0x42a4, 0x80}, +{0x42a5, 0x80}, +{0x42a6, 0x80}, +{0x42a7, 0x80}, +{0x42a8, 0x80}, +{0x42a9, 0x80}, +{0x42aa, 0x80}, +{0x42ab, 0x80}, +{0x42ac, 0x80}, +{0x42ad, 0x80}, +{0x42ae, 0x80}, +{0x42af, 0x80}, +{0x42b0, 0x80}, +{0x42b1, 0x80}, +{0x42b2, 0x80}, +{0x42b3, 0x80}, +{0x42b4, 0x80}, +{0x42b5, 0x80}, +{0x42b6, 0x80}, +{0x42b7, 0x80}, +{0x42b8, 0x80}, +{0x42b9, 0x80}, +{0x42ba, 0x80}, +{0x42bb, 0x80}, +{0x42bc, 0x80}, +{0x42bd, 0x80}, +{0x42be, 0x80}, +{0x42bf, 0x80}, +{0x42c0, 0x80}, +{0x42c1, 0x80}, +{0x42c2, 0x80}, +{0x42c3, 0x80}, +{0x42c4, 0x80}, +{0x42c5, 0x80}, +{0x42c6, 0x80}, +{0x42c7, 0x80}, +{0x42c8, 0x80}, +{0x42c9, 0x80}, +{0x42ca, 0x80}, +{0x42cb, 0x80}, +{0x42cc, 0x80}, +{0x42cd, 0x80}, +{0x42ce, 0x80}, +{0x42cf, 0x80}, +{0x42d0, 0x80}, +{0x42d1, 0x80}, +{0x42d2, 0x80}, +{0x42d3, 0x80}, +{0x42d4, 0x80}, +{0x42d5, 0x80}, +{0x42d6, 0x80}, +{0x42d7, 0x80}, +{0x42d8, 0x00}, +{0x42d9, 0x00}, +{0x4300, 0xa2}, +{0x4301, 0xaa}, +{0x4302, 0xa7}, +{0x4303, 0xad}, +{0x4304, 0x8e}, +{0x4305, 0x92}, +{0x4306, 0x90}, +{0x4307, 0x93}, +{0x4308, 0x86}, +{0x4309, 0x89}, +{0x430a, 0x87}, +{0x430b, 0x88}, +{0x430c, 0x82}, +{0x430d, 0x84}, +{0x430e, 0x83}, +{0x430f, 0x84}, +{0x4310, 0x80}, +{0x4311, 0x82}, +{0x4312, 0x82}, +{0x4313, 0x82}, +{0x4314, 0x83}, +{0x4315, 0x85}, +{0x4316, 0x84}, +{0x4317, 0x85}, +{0x4318, 0x8d}, +{0x4319, 0x8d}, +{0x431a, 0x8d}, +{0x431b, 0x8d}, +{0x431c, 0x99}, +{0x431d, 0x9a}, +{0x431e, 0x9a}, +{0x431f, 0x9a}, +{0x4320, 0xae}, +{0x4321, 0xb4}, +{0x4322, 0xb4}, +{0x4323, 0xb5}, +{0x4324, 0x9a}, +{0x4325, 0x9d}, +{0x4326, 0x9b}, +{0x4327, 0x9e}, +{0x4328, 0x8c}, +{0x4329, 0x8f}, +{0x432a, 0x8d}, +{0x432b, 0x8f}, +{0x432c, 0x83}, +{0x432d, 0x85}, +{0x432e, 0x85}, +{0x432f, 0x85}, +{0x4330, 0x80}, +{0x4331, 0x81}, +{0x4332, 0x81}, +{0x4333, 0x81}, +{0x4334, 0x80}, +{0x4335, 0x80}, +{0x4336, 0x80}, +{0x4337, 0x81}, +{0x4338, 0x83}, +{0x4339, 0x83}, +{0x433a, 0x83}, +{0x433b, 0x83}, +{0x433c, 0x88}, +{0x433d, 0x88}, +{0x433e, 0x88}, +{0x433f, 0x88}, +{0x4340, 0x93}, +{0x4341, 0x93}, +{0x4342, 0x93}, +{0x4343, 0x93}, +{0x4344, 0xa2}, +{0x4345, 0xa4}, +{0x4346, 0xa4}, +{0x4347, 0xa4}, +{0x4348, 0x97}, +{0x4349, 0x99}, +{0x434a, 0x97}, +{0x434b, 0x97}, +{0x434c, 0x89}, +{0x434d, 0x8c}, +{0x434e, 0x8b}, +{0x434f, 0x8a}, +{0x4350, 0x81}, +{0x4351, 0x83}, +{0x4352, 0x83}, +{0x4353, 0x83}, +{0x4354, 0x7f}, +{0x4355, 0x80}, +{0x4356, 0x80}, +{0x4357, 0x80}, +{0x4358, 0x7f}, +{0x4359, 0x7f}, +{0x435a, 0x7f}, +{0x435b, 0x7f}, +{0x435c, 0x82}, +{0x435d, 0x81}, +{0x435e, 0x81}, +{0x435f, 0x82}, +{0x4360, 0x86}, +{0x4361, 0x86}, +{0x4362, 0x86}, +{0x4363, 0x87}, +{0x4364, 0x8f}, +{0x4365, 0x8f}, +{0x4366, 0x8f}, +{0x4367, 0x90}, +{0x4368, 0x9e}, +{0x4369, 0x9e}, +{0x436a, 0x9e}, +{0x436b, 0x9f}, +{0x436c, 0x99}, +{0x436d, 0x9b}, +{0x436e, 0x9a}, +{0x436f, 0x98}, +{0x4370, 0x8b}, +{0x4371, 0x8d}, +{0x4372, 0x8d}, +{0x4373, 0x8b}, +{0x4374, 0x83}, +{0x4375, 0x84}, +{0x4376, 0x84}, +{0x4377, 0x83}, +{0x4378, 0x80}, +{0x4379, 0x81}, +{0x437a, 0x81}, +{0x437b, 0x80}, +{0x437c, 0x81}, +{0x437d, 0x80}, +{0x437e, 0x80}, +{0x437f, 0x80}, +{0x4380, 0x83}, +{0x4381, 0x83}, +{0x4382, 0x83}, +{0x4383, 0x83}, +{0x4384, 0x88}, +{0x4385, 0x87}, +{0x4386, 0x87}, +{0x4387, 0x88}, +{0x4388, 0x91}, +{0x4389, 0x90}, +{0x438a, 0x90}, +{0x438b, 0x91}, +{0x438c, 0x9e}, +{0x438d, 0x9e}, +{0x438e, 0x9e}, +{0x438f, 0xa0}, +{0x4390, 0xa0}, +{0x4391, 0xa2}, +{0x4392, 0xa2}, +{0x4393, 0xa0}, +{0x4394, 0x92}, +{0x4395, 0x94}, +{0x4396, 0x94}, +{0x4397, 0x91}, +{0x4398, 0x89}, +{0x4399, 0x8a}, +{0x439a, 0x89}, +{0x439b, 0x88}, +{0x439c, 0x85}, +{0x439d, 0x85}, +{0x439e, 0x85}, +{0x439f, 0x84}, +{0x43a0, 0x85}, +{0x43a1, 0x84}, +{0x43a2, 0x84}, +{0x43a3, 0x84}, +{0x43a4, 0x88}, +{0x43a5, 0x86}, +{0x43a6, 0x86}, +{0x43a7, 0x87}, +{0x43a8, 0x8e}, +{0x43a9, 0x8b}, +{0x43aa, 0x8b}, +{0x43ab, 0x8d}, +{0x43ac, 0x97}, +{0x43ad, 0x96}, +{0x43ae, 0x96}, +{0x43af, 0x98}, +{0x43b0, 0xa5}, +{0x43b1, 0xa5}, +{0x43b2, 0xa5}, +{0x43b3, 0xa9}, +{0x43b4, 0xb7}, +{0x43b5, 0xbb}, +{0x43b6, 0xbb}, +{0x43b7, 0xb8}, +{0x43b8, 0x9c}, +{0x43b9, 0x9c}, +{0x43ba, 0x9c}, +{0x43bb, 0x9a}, +{0x43bc, 0x92}, +{0x43bd, 0x92}, +{0x43be, 0x92}, +{0x43bf, 0x8f}, +{0x43c0, 0x8b}, +{0x43c1, 0x8b}, +{0x43c2, 0x8b}, +{0x43c3, 0x89}, +{0x43c4, 0x8a}, +{0x43c5, 0x89}, +{0x43c6, 0x89}, +{0x43c7, 0x88}, +{0x43c8, 0x8d}, +{0x43c9, 0x8b}, +{0x43ca, 0x8b}, +{0x43cb, 0x8c}, +{0x43cc, 0x94}, +{0x43cd, 0x91}, +{0x43ce, 0x92}, +{0x43cf, 0x93}, +{0x43d0, 0x9e}, +{0x43d1, 0x9d}, +{0x43d2, 0x9d}, +{0x43d3, 0xa1}, +{0x43d4, 0xb2}, +{0x43d5, 0xb4}, +{0x43d6, 0xb5}, +{0x43d7, 0xbd}, +{0x4400, 0x80}, +{0x4401, 0x80}, +{0x4402, 0x80}, +{0x4403, 0x80}, +{0x4404, 0x80}, +{0x4405, 0x80}, +{0x4406, 0x80}, +{0x4407, 0x80}, +{0x4408, 0x80}, +{0x4409, 0x80}, +{0x440a, 0x80}, +{0x440b, 0x80}, +{0x440c, 0x80}, +{0x440d, 0x80}, +{0x440e, 0x80}, +{0x440f, 0x80}, +{0x4410, 0x80}, +{0x4411, 0x80}, +{0x4412, 0x80}, +{0x4413, 0x80}, +{0x4414, 0x80}, +{0x4415, 0x80}, +{0x4416, 0x80}, +{0x4417, 0x80}, +{0x4418, 0x80}, +{0x4419, 0x80}, +{0x441a, 0x80}, +{0x441b, 0x80}, +{0x441c, 0x80}, +{0x441d, 0x80}, +{0x441e, 0x80}, +{0x441f, 0x80}, +{0x4420, 0x80}, +{0x4421, 0x80}, +{0x4422, 0x80}, +{0x4423, 0x80}, +{0x4424, 0x80}, +{0x4425, 0x80}, +{0x4426, 0x80}, +{0x4427, 0x80}, +{0x4428, 0x80}, +{0x4429, 0x80}, +{0x442a, 0x80}, +{0x442b, 0x80}, +{0x442c, 0x80}, +{0x442d, 0x80}, +{0x442e, 0x80}, +{0x442f, 0x80}, +{0x4430, 0x80}, +{0x4431, 0x80}, +{0x4432, 0x80}, +{0x4433, 0x80}, +{0x4434, 0x80}, +{0x4435, 0x80}, +{0x4436, 0x80}, +{0x4437, 0x80}, +{0x4438, 0x80}, +{0x4439, 0x80}, +{0x443a, 0x80}, +{0x443b, 0x80}, +{0x443c, 0x80}, +{0x443d, 0x80}, +{0x443e, 0x80}, +{0x443f, 0x80}, +{0x4440, 0x80}, +{0x4441, 0x80}, +{0x4442, 0x80}, +{0x4443, 0x80}, +{0x4444, 0x80}, +{0x4445, 0x80}, +{0x4446, 0x80}, +{0x4447, 0x80}, +{0x4448, 0x80}, +{0x4449, 0x80}, +{0x444a, 0x80}, +{0x444b, 0x80}, +{0x444c, 0x80}, +{0x444d, 0x80}, +{0x444e, 0x80}, +{0x444f, 0x80}, +{0x4450, 0x80}, +{0x4451, 0x80}, +{0x4452, 0x80}, +{0x4453, 0x80}, +{0x4454, 0x80}, +{0x4455, 0x80}, +{0x4456, 0x80}, +{0x4457, 0x80}, +{0x4458, 0x80}, +{0x4459, 0x80}, +{0x445a, 0x80}, +{0x445b, 0x80}, +{0x445c, 0x80}, +{0x445d, 0x80}, +{0x445e, 0x80}, +{0x445f, 0x80}, +{0x4460, 0x80}, +{0x4461, 0x80}, +{0x4462, 0x80}, +{0x4463, 0x80}, +{0x4464, 0x80}, +{0x4465, 0x80}, +{0x4466, 0x80}, +{0x4467, 0x80}, +{0x4468, 0x80}, +{0x4469, 0x80}, +{0x446a, 0x80}, +{0x446b, 0x80}, +{0x446c, 0x80}, +{0x446d, 0x80}, +{0x446e, 0x80}, +{0x446f, 0x80}, +{0x4470, 0x80}, +{0x4471, 0x80}, +{0x4472, 0x80}, +{0x4473, 0x80}, +{0x4474, 0x80}, +{0x4475, 0x80}, +{0x4476, 0x80}, +{0x4477, 0x80}, +{0x4478, 0x80}, +{0x4479, 0x80}, +{0x447a, 0x80}, +{0x447b, 0x80}, +{0x447c, 0x80}, +{0x447d, 0x80}, +{0x447e, 0x80}, +{0x447f, 0x80}, +{0x4480, 0x80}, +{0x4481, 0x80}, +{0x4482, 0x80}, +{0x4483, 0x80}, +{0x4484, 0x80}, +{0x4485, 0x80}, +{0x4486, 0x80}, +{0x4487, 0x80}, +{0x4488, 0x80}, +{0x4489, 0x80}, +{0x448a, 0x80}, +{0x448b, 0x80}, +{0x448c, 0x80}, +{0x448d, 0x80}, +{0x448e, 0x80}, +{0x448f, 0x80}, +{0x4490, 0x80}, +{0x4491, 0x80}, +{0x4492, 0x80}, +{0x4493, 0x80}, +{0x4494, 0x80}, +{0x4495, 0x80}, +{0x4496, 0x80}, +{0x4497, 0x80}, +{0x4498, 0x80}, +{0x4499, 0x80}, +{0x449a, 0x80}, +{0x449b, 0x80}, +{0x449c, 0x80}, +{0x449d, 0x80}, +{0x449e, 0x80}, +{0x449f, 0x80}, +{0x44a0, 0x80}, +{0x44a1, 0x80}, +{0x44a2, 0x80}, +{0x44a3, 0x80}, +{0x44a4, 0x80}, +{0x44a5, 0x80}, +{0x44a6, 0x80}, +{0x44a7, 0x80}, +{0x44a8, 0x80}, +{0x44a9, 0x80}, +{0x44aa, 0x80}, +{0x44ab, 0x80}, +{0x44ac, 0x80}, +{0x44ad, 0x80}, +{0x44ae, 0x80}, +{0x44af, 0x80}, +{0x44b0, 0x80}, +{0x44b1, 0x80}, +{0x44b2, 0x80}, +{0x44b3, 0x80}, +{0x44b4, 0x80}, +{0x44b5, 0x80}, +{0x44b6, 0x80}, +{0x44b7, 0x80}, +{0x44b8, 0x80}, +{0x44b9, 0x80}, +{0x44ba, 0x80}, +{0x44bb, 0x80}, +{0x44bc, 0x80}, +{0x44bd, 0x80}, +{0x44be, 0x80}, +{0x44bf, 0x80}, +{0x44c0, 0x80}, +{0x44c1, 0x80}, +{0x44c2, 0x80}, +{0x44c3, 0x80}, +{0x44c4, 0x80}, +{0x44c5, 0x80}, +{0x44c6, 0x80}, +{0x44c7, 0x80}, +{0x44c8, 0x80}, +{0x44c9, 0x80}, +{0x44ca, 0x80}, +{0x44cb, 0x80}, +{0x44cc, 0x80}, +{0x44cd, 0x80}, +{0x44ce, 0x80}, +{0x44cf, 0x80}, +{0x44d0, 0x80}, +{0x44d1, 0x80}, +{0x44d2, 0x80}, +{0x44d3, 0x80}, +{0x44d4, 0x80}, +{0x44d5, 0x80}, +{0x44d6, 0x80}, +{0x44d7, 0x80}, +{0x4500, 0x80}, +{0x4501, 0x80}, +{0x4502, 0x80}, +{0x4503, 0x80}, +{0x4504, 0x80}, +{0x4505, 0x80}, +{0x4506, 0x80}, +{0x4507, 0x80}, +{0x4508, 0x80}, +{0x4509, 0x80}, +{0x450a, 0x80}, +{0x450b, 0x80}, +{0x450c, 0x80}, +{0x450d, 0x80}, +{0x450e, 0x80}, +{0x450f, 0x80}, +{0x4510, 0x80}, +{0x4511, 0x80}, +{0x4512, 0x80}, +{0x4513, 0x80}, +{0x4514, 0x80}, +{0x4515, 0x80}, +{0x4516, 0x80}, +{0x4517, 0x80}, +{0x4518, 0x80}, +{0x4519, 0x80}, +{0x451a, 0x80}, +{0x451b, 0x80}, +{0x451c, 0x80}, +{0x451d, 0x80}, +{0x451e, 0x80}, +{0x451f, 0x80}, +{0x4520, 0x80}, +{0x4521, 0x80}, +{0x4522, 0x80}, +{0x4523, 0x80}, +{0x4524, 0x80}, +{0x4525, 0x80}, +{0x4526, 0x80}, +{0x4527, 0x80}, +{0x4528, 0x80}, +{0x4529, 0x80}, +{0x452a, 0x80}, +{0x452b, 0x80}, +{0x452c, 0x80}, +{0x452d, 0x80}, +{0x452e, 0x80}, +{0x452f, 0x80}, +{0x4530, 0x80}, +{0x4531, 0x80}, +{0x4532, 0x80}, +{0x4533, 0x80}, +{0x4534, 0x80}, +{0x4535, 0x80}, +{0x4536, 0x80}, +{0x4537, 0x80}, +{0x4538, 0x80}, +{0x4539, 0x80}, +{0x453a, 0x80}, +{0x453b, 0x80}, +{0x453c, 0x80}, +{0x453d, 0x80}, +{0x453e, 0x80}, +{0x453f, 0x80}, +{0x4540, 0x80}, +{0x4541, 0x80}, +{0x4542, 0x80}, +{0x4543, 0x80}, +{0x4544, 0x80}, +{0x4545, 0x80}, +{0x4546, 0x80}, +{0x4547, 0x80}, +{0x4548, 0x80}, +{0x4549, 0x80}, +{0x454a, 0x80}, +{0x454b, 0x80}, +{0x454c, 0x80}, +{0x454d, 0x80}, +{0x454e, 0x80}, +{0x454f, 0x80}, +{0x4550, 0x80}, +{0x4551, 0x80}, +{0x4552, 0x80}, +{0x4553, 0x80}, +{0x4554, 0x80}, +{0x4555, 0x80}, +{0x4556, 0x80}, +{0x4557, 0x80}, +{0x4558, 0x80}, +{0x4559, 0x80}, +{0x455a, 0x80}, +{0x455b, 0x80}, +{0x455c, 0x80}, +{0x455d, 0x80}, +{0x455e, 0x80}, +{0x455f, 0x80}, +{0x4560, 0x80}, +{0x4561, 0x80}, +{0x4562, 0x80}, +{0x4563, 0x80}, +{0x4564, 0x80}, +{0x4565, 0x80}, +{0x4566, 0x80}, +{0x4567, 0x80}, +{0x4568, 0x80}, +{0x4569, 0x80}, +{0x456a, 0x80}, +{0x456b, 0x80}, +{0x456c, 0x80}, +{0x456d, 0x80}, +{0x456e, 0x80}, +{0x456f, 0x80}, +{0x4570, 0x80}, +{0x4571, 0x80}, +{0x4572, 0x80}, +{0x4573, 0x80}, +{0x4574, 0x80}, +{0x4575, 0x80}, +{0x4576, 0x80}, +{0x4577, 0x80}, +{0x4578, 0x80}, +{0x4579, 0x80}, +{0x457a, 0x80}, +{0x457b, 0x80}, +{0x457c, 0x80}, +{0x457d, 0x80}, +{0x457e, 0x80}, +{0x457f, 0x80}, +{0x4580, 0x80}, +{0x4581, 0x80}, +{0x4582, 0x80}, +{0x4583, 0x80}, +{0x4584, 0x80}, +{0x4585, 0x80}, +{0x4586, 0x80}, +{0x4587, 0x80}, +{0x4588, 0x80}, +{0x4589, 0x80}, +{0x458a, 0x80}, +{0x458b, 0x80}, +{0x458c, 0x80}, +{0x458d, 0x80}, +{0x458e, 0x80}, +{0x458f, 0x80}, +{0x4590, 0x80}, +{0x4591, 0x80}, +{0x4592, 0x80}, +{0x4593, 0x80}, +{0x4594, 0x80}, +{0x4595, 0x80}, +{0x4596, 0x80}, +{0x4597, 0x80}, +{0x4598, 0x80}, +{0x4599, 0x80}, +{0x459a, 0x80}, +{0x459b, 0x80}, +{0x459c, 0x80}, +{0x459d, 0x80}, +{0x459e, 0x80}, +{0x459f, 0x80}, +{0x45a0, 0x80}, +{0x45a1, 0x80}, +{0x45a2, 0x80}, +{0x45a3, 0x80}, +{0x45a4, 0x80}, +{0x45a5, 0x80}, +{0x45a6, 0x80}, +{0x45a7, 0x80}, +{0x45a8, 0x80}, +{0x45a9, 0x80}, +{0x45aa, 0x80}, +{0x45ab, 0x80}, +{0x45ac, 0x80}, +{0x45ad, 0x80}, +{0x45ae, 0x80}, +{0x45af, 0x80}, +{0x45b0, 0x80}, +{0x45b1, 0x80}, +{0x45b2, 0x80}, +{0x45b3, 0x80}, +{0x45b4, 0x80}, +{0x45b5, 0x80}, +{0x45b6, 0x80}, +{0x45b7, 0x80}, +{0x45b8, 0x80}, +{0x45b9, 0x80}, +{0x45ba, 0x80}, +{0x45bb, 0x80}, +{0x45bc, 0x80}, +{0x45bd, 0x80}, +{0x45be, 0x80}, +{0x45bf, 0x80}, +{0x45c0, 0x80}, +{0x45c1, 0x80}, +{0x45c2, 0x80}, +{0x45c3, 0x80}, +{0x45c4, 0x80}, +{0x45c5, 0x80}, +{0x45c6, 0x80}, +{0x45c7, 0x80}, +{0x45c8, 0x80}, +{0x45c9, 0x80}, +{0x45ca, 0x80}, +{0x45cb, 0x80}, +{0x45cc, 0x80}, +{0x45cd, 0x80}, +{0x45ce, 0x80}, +{0x45cf, 0x80}, +{0x45d0, 0x80}, +{0x45d1, 0x80}, +{0x45d2, 0x80}, +{0x45d3, 0x80}, +{0x45d4, 0x80}, +{0x45d5, 0x80}, +{0x45d6, 0x80}, +{0x45d7, 0x80}, +{0x7000, 0xab}, +{0x7001, 0xba}, +{0x7002, 0x40}, +{0x7003, 0x02}, +{0x7004, 0x00}, +{0x7005, 0x00}, +{0x7006, 0x00}, +{0x7007, 0x00}, +{0x7008, 0x00}, +{0x7009, 0x00}, +{0x700a, 0x00}, +{0x700b, 0x00}, +{0x700c, 0x00}, +{0x700d, 0x00}, +{0x700e, 0x00}, +{0x700f, 0x00}, +{0x7010, 0x55}, +{0x7011, 0x88}, +{0x7012, 0x40}, +{0x7013, 0x01}, +{0x7014, 0x72}, +{0x7015, 0xf1}, +{0x7016, 0x02}, +{0x7017, 0xf8}, +{0x7018, 0x00}, +{0x7019, 0x00}, +{0x701a, 0x00}, +{0x701b, 0x00}, +{0x701c, 0x00}, +{0x701d, 0x00}, +{0x701e, 0x00}, +{0x701f, 0x00}, +{0x7020, 0x00}, +{0x7021, 0x00}, +{0x7022, 0x00}, +{0x7023, 0x00}, +{0x7024, 0x00}, +{0x7025, 0x00}, +{0x7026, 0x00}, +{0x7027, 0x00}, +{0x7028, 0x00}, +{0x7029, 0x00}, +{0x702a, 0x00}, +{0x702b, 0x00}, +{0x702c, 0x00}, +{0x702d, 0x00}, +{0x702e, 0x00}, +{0x702f, 0x00}, +{0x7030, 0x00}, +{0x7031, 0x00}, +{0x7032, 0x00}, +{0x7033, 0x00}, +{0x7034, 0x00}, +{0x7035, 0x00}, +{0x7036, 0x00}, +{0x7037, 0x00}, +{0x7038, 0x00}, +{0x7039, 0x00}, +{0x703a, 0x00}, +{0x703b, 0x00}, +{0x703c, 0x00}, +{0x703d, 0x00}, +{0x703e, 0x00}, +{0x703f, 0x00}, +{0x7040, 0x00}, +{0x7041, 0x00}, +{0x7042, 0x00}, +{0x7043, 0x00}, +{0x7044, 0x00}, +{0x7045, 0x00}, +{0x7046, 0x00}, +{0x7047, 0x00}, +{0x7048, 0x00}, +{0x7049, 0x00}, +{0x704a, 0x00}, +{0x704b, 0x00}, +{0x704c, 0x00}, +{0x704d, 0x00}, +{0x704e, 0x00}, +{0x704f, 0x00}, +{0x7050, 0x00}, +{0x7051, 0x00}, +{0x7052, 0x00}, +{0x7053, 0x00}, +{0x7054, 0x00}, +{0x7055, 0x00}, +{0x7056, 0x00}, +{0x7057, 0x00}, +{0x7058, 0x00}, +{0x7059, 0x00}, +{0x705a, 0x00}, +{0x705b, 0x00}, +{0x705c, 0x00}, +{0x705d, 0x00}, +{0x705e, 0x00}, +{0x705f, 0x00}, +{0x7060, 0x00}, +{0x7061, 0x00}, +{0x7062, 0x00}, +{0x7063, 0x00}, +{0x7064, 0x00}, +{0x7065, 0x00}, +{0x7066, 0x00}, +{0x7067, 0x00}, +{0x7068, 0x00}, +{0x7069, 0x00}, +{0x706a, 0x00}, +{0x706b, 0x00}, +{0x706c, 0x00}, +{0x706d, 0x00}, +{0x706e, 0x00}, +{0x706f, 0x00}, +{0x7070, 0x00}, +{0x7071, 0x00}, +{0x7072, 0x00}, +{0x7073, 0x00}, +{0x7074, 0x00}, +{0x7075, 0x00}, +{0x7076, 0x00}, +{0x7077, 0x00}, +{0x7078, 0x00}, +{0x7079, 0x00}, +{0x707a, 0x00}, +{0x707b, 0x00}, +{0x707c, 0x00}, +{0x707d, 0x00}, +{0x707e, 0x00}, +{0x707f, 0x00}, +{0x7080, 0x00}, +{0x7081, 0x00}, +{0x7082, 0x00}, +{0x7083, 0x00}, +{0x7084, 0x00}, +{0x7085, 0x00}, +{0x7086, 0x00}, +{0x7087, 0x00}, +{0x7088, 0x00}, +{0x7089, 0x00}, +{0x708a, 0x00}, +{0x708b, 0x00}, +{0x708c, 0x00}, +{0x708d, 0x00}, +{0x708e, 0x00}, +{0x708f, 0x00}, +{0x7090, 0x00}, +{0x7091, 0xf0}, +{0x7092, 0x02}, +{0x7093, 0xf8}, +{0x7094, 0x8d}, +{0x7095, 0xf6}, +{0x7096, 0xfa}, +{0x7097, 0xff}, +{0x7098, 0xf0}, +{0x7099, 0xb5}, +{0x709a, 0x04}, +{0x709b, 0x46}, +{0x709c, 0x8f}, +{0x709d, 0xb0}, +{0x709e, 0x5f}, +{0x709f, 0x48}, +{0x70a0, 0x0c}, +{0x70a1, 0x90}, +{0x70a2, 0x5f}, +{0x70a3, 0x48}, +{0x70a4, 0x06}, +{0x70a5, 0x90}, +{0x70a6, 0x20}, +{0x70a7, 0x46}, +{0x70a8, 0x34}, +{0x70a9, 0x30}, +{0x70aa, 0x0b}, +{0x70ab, 0x90}, +{0x70ac, 0x5b}, +{0x70ad, 0x48}, +{0x70ae, 0x5a}, +{0x70af, 0x49}, +{0x70b0, 0x26}, +{0x70b1, 0x46}, +{0x70b2, 0x66}, +{0x70b3, 0x30}, +{0x70b4, 0x3a}, +{0x70b5, 0x31}, +{0x70b6, 0x3c}, +{0x70b7, 0x36}, +{0x70b8, 0x05}, +{0x70b9, 0x90}, +{0x70ba, 0x0a}, +{0x70bb, 0x30}, +{0x70bc, 0x04}, +{0x70bd, 0x90}, +{0x70be, 0x59}, +{0x70bf, 0x48}, +{0x70c0, 0x55}, +{0x70c1, 0x4a}, +{0x70c2, 0x40}, +{0x70c3, 0x6e}, +{0x70c4, 0xc0}, +{0x70c5, 0x07}, +{0x70c6, 0x7d}, +{0x70c7, 0xd1}, +{0x70c8, 0x17}, +{0x70c9, 0x88}, +{0x70ca, 0x0a}, +{0x70cb, 0x5e}, +{0x70cc, 0x0d}, +{0x70cd, 0x92}, +{0x70ce, 0x53}, +{0x70cf, 0x49}, +{0x70d0, 0x55}, +{0x70d1, 0x48}, +{0x70d2, 0x94}, +{0x70d3, 0x31}, +{0x70d4, 0x89}, +{0x70d5, 0x6b}, +{0x70d6, 0x80}, +{0x70d7, 0x68}, +{0x70d8, 0x09}, +{0x70d9, 0x02}, +{0x70da, 0x00}, +{0x70db, 0x03}, +{0x70dc, 0x09}, +{0x70dd, 0x0e}, +{0x70de, 0x00}, +{0x70df, 0x0b}, +{0x70e0, 0x49}, +{0x70e1, 0x1c}, +{0x70e2, 0x48}, +{0x70e3, 0x43}, +{0x70e4, 0x4d}, +{0x70e5, 0x49}, +{0x70e6, 0x6c}, +{0x70e7, 0x39}, +{0x70e8, 0x8a}, +{0x70e9, 0x6a}, +{0x70ea, 0x07}, +{0x70eb, 0x92}, +{0x70ec, 0xca}, +{0x70ed, 0x6a}, +{0x70ee, 0x00}, +{0x70ef, 0x21}, +{0x70f0, 0xc9}, +{0x70f1, 0x43}, +{0x70f2, 0x03}, +{0x70f3, 0x92}, +{0x70f4, 0x00}, +{0x70f5, 0x22}, +{0x70f6, 0x00}, +{0x70f7, 0x91}, +{0x70f8, 0x01}, +{0x70f9, 0x92}, +{0x70fa, 0x39}, +{0x70fb, 0x46}, +{0x70fc, 0x8f}, +{0x70fd, 0xf6}, +{0x70fe, 0xce}, +{0x70ff, 0xfb}, +{0x7100, 0x01}, +{0x7101, 0x22}, +{0x7102, 0x00}, +{0x7103, 0x23}, +{0x7104, 0x8c}, +{0x7105, 0xf6}, +{0x7106, 0x02}, +{0x7107, 0xfa}, +{0x7108, 0x00}, +{0x7109, 0x21}, +{0x710a, 0x05}, +{0x710b, 0x46}, +{0x710c, 0x01}, +{0x710d, 0x91}, +{0x710e, 0x00}, +{0x710f, 0x90}, +{0x7110, 0x39}, +{0x7111, 0x46}, +{0x7112, 0x07}, +{0x7113, 0x98}, +{0x7114, 0x8f}, +{0x7115, 0xf6}, +{0x7116, 0xc2}, +{0x7117, 0xfb}, +{0x7118, 0x0d}, +{0x7119, 0x9a}, +{0x711a, 0xd3}, +{0x711b, 0x17}, +{0x711c, 0x80}, +{0x711d, 0x18}, +{0x711e, 0x59}, +{0x711f, 0x41}, +{0x7120, 0x01}, +{0x7121, 0x22}, +{0x7122, 0x00}, +{0x7123, 0x23}, +{0x7124, 0x8c}, +{0x7125, 0xf6}, +{0x7126, 0xcd}, +{0x7127, 0xf9}, +{0x7128, 0x07}, +{0x7129, 0x90}, +{0x712a, 0x00}, +{0x712b, 0x20}, +{0x712c, 0x01}, +{0x712d, 0x90}, +{0x712e, 0x00}, +{0x712f, 0x95}, +{0x7130, 0x39}, +{0x7131, 0x46}, +{0x7132, 0x03}, +{0x7133, 0x98}, +{0x7134, 0x8f}, +{0x7135, 0xf6}, +{0x7136, 0xb2}, +{0x7137, 0xfb}, +{0x7138, 0x01}, +{0x7139, 0x22}, +{0x713a, 0x00}, +{0x713b, 0x23}, +{0x713c, 0x8c}, +{0x713d, 0xf6}, +{0x713e, 0xe6}, +{0x713f, 0xf9}, +{0x7140, 0x02}, +{0x7141, 0x46}, +{0x7142, 0x07}, +{0x7143, 0x98}, +{0x7144, 0x00}, +{0x7145, 0x23}, +{0x7146, 0x81}, +{0x7147, 0x0b}, +{0x7148, 0x80}, +{0x7149, 0x04}, +{0x714a, 0x7a}, +{0x714b, 0xf6}, +{0x714c, 0x54}, +{0x714d, 0xf8}, +{0x714e, 0x37}, +{0x714f, 0x4a}, +{0x7150, 0x00}, +{0x7151, 0x23}, +{0x7152, 0x00}, +{0x7153, 0x92}, +{0x7154, 0x01}, +{0x7155, 0x93}, +{0x7156, 0x01}, +{0x7157, 0x22}, +{0x7158, 0x8c}, +{0x7159, 0xf6}, +{0x715a, 0xd8}, +{0x715b, 0xf9}, +{0x715c, 0x05}, +{0x715d, 0x46}, +{0x715e, 0x60}, +{0x715f, 0x68}, +{0x7160, 0x00}, +{0x7161, 0x23}, +{0x7162, 0x01}, +{0x7163, 0x0c}, +{0x7164, 0x00}, +{0x7165, 0x04}, +{0x7166, 0xe2}, +{0x7167, 0x68}, +{0x7168, 0x7a}, +{0x7169, 0xf6}, +{0x716a, 0x45}, +{0x716b, 0xf8}, +{0x716c, 0x00}, +{0x716d, 0x22}, +{0x716e, 0xd2}, +{0x716f, 0x43}, +{0x7170, 0x00}, +{0x7171, 0x23}, +{0x7172, 0x00}, +{0x7173, 0x92}, +{0x7174, 0x01}, +{0x7175, 0x93}, +{0x7176, 0x1a}, +{0x7177, 0x46}, +{0x7178, 0x8c}, +{0x7179, 0xf6}, +{0x717a, 0xc8}, +{0x717b, 0xf9}, +{0x717c, 0x29}, +{0x717d, 0x46}, +{0x717e, 0x8f}, +{0x717f, 0xf6}, +{0x7180, 0x8d}, +{0x7181, 0xfb}, +{0x7182, 0x8a}, +{0x7183, 0x03}, +{0x7184, 0x80}, +{0x7185, 0x0c}, +{0x7186, 0x10}, +{0x7187, 0x43}, +{0x7188, 0x00}, +{0x7189, 0x22}, +{0x718a, 0xd2}, +{0x718b, 0x43}, +{0x718c, 0x00}, +{0x718d, 0x23}, +{0x718e, 0x00}, +{0x718f, 0x92}, +{0x7190, 0x89}, +{0x7191, 0x0c}, +{0x7192, 0x01}, +{0x7193, 0x93}, +{0x7194, 0x1a}, +{0x7195, 0x46}, +{0x7196, 0x8c}, +{0x7197, 0xf6}, +{0x7198, 0xb9}, +{0x7199, 0xf9}, +{0x719a, 0x00}, +{0x719b, 0x24}, +{0x719c, 0x03}, +{0x719d, 0x90}, +{0x719e, 0x0c}, +{0x719f, 0x98}, +{0x71a0, 0x61}, +{0x71a1, 0x00}, +{0x71a2, 0x45}, +{0x71a3, 0x5a}, +{0x71a4, 0x06}, +{0x71a5, 0x98}, +{0x71a6, 0x22}, +{0x71a7, 0x4a}, +{0x71a8, 0x40}, +{0x71a9, 0x5a}, +{0x71aa, 0x00}, +{0x71ab, 0x21}, +{0x71ac, 0x8c}, +{0x71ad, 0xf6}, +{0x71ae, 0xbe}, +{0x71af, 0xf9}, +{0x71b0, 0x07}, +{0x71b1, 0x46}, +{0x71b2, 0x28}, +{0x71b3, 0x46}, +{0x71b4, 0x03}, +{0x71b5, 0x99}, +{0x71b6, 0x8f}, +{0x71b7, 0xf6}, +{0x71b8, 0x71}, +{0x71b9, 0xfb}, +{0x71ba, 0x3a}, +{0x71bb, 0x46}, +{0x71bc, 0x00}, +{0x71bd, 0x23}, +{0x71be, 0x79}, +{0x71bf, 0xf6}, +{0x71c0, 0xca}, +{0x71c1, 0xff}, +{0x71c2, 0x00}, +{0x71c3, 0xe0}, +{0x71c4, 0x0f}, +{0x71c5, 0xe0}, +{0x71c6, 0x8a}, +{0x71c7, 0x02}, +{0x71c8, 0x80}, +{0x71c9, 0x0d}, +{0x71ca, 0x10}, +{0x71cb, 0x43}, +{0x71cc, 0x19}, +{0x71cd, 0x4a}, +{0x71ce, 0x00}, +{0x71cf, 0x23}, +{0x71d0, 0x00}, +{0x71d1, 0x92}, +{0x71d2, 0x89}, +{0x71d3, 0x0d}, +{0x71d4, 0x01}, +{0x71d5, 0x93}, +{0x71d6, 0x40}, +{0x71d7, 0x22}, +{0x71d8, 0x8c}, +{0x71d9, 0xf6}, +{0x71da, 0x98}, +{0x71db, 0xf9}, +{0x71dc, 0xa1}, +{0x71dd, 0x00}, +{0x71de, 0x64}, +{0x71df, 0x1c}, +{0x71e0, 0x70}, +{0x71e1, 0x50}, +{0x71e2, 0x04}, +{0x71e3, 0x2c}, +{0x71e4, 0xdb}, +{0x71e5, 0xd3}, +{0x71e6, 0x14}, +{0x71e7, 0x4d}, +{0x71e8, 0x00}, +{0x71e9, 0x24}, +{0x71ea, 0x0b}, +{0x71eb, 0x98}, +{0x71ec, 0x67}, +{0x71ed, 0x00}, +{0x71ee, 0xc0}, +{0x71ef, 0x5b}, +{0x71f0, 0x2a}, +{0x71f1, 0x46}, +{0x71f2, 0x40}, +{0x71f3, 0x21}, +{0x71f4, 0x8c}, +{0x71f5, 0xf6}, +{0x71f6, 0x9a}, +{0x71f7, 0xf9}, +{0x71f8, 0x05}, +{0x71f9, 0x99}, +{0x71fa, 0x0e}, +{0x71fb, 0x4a}, +{0x71fc, 0xc8}, +{0x71fd, 0x53}, +{0x71fe, 0xa7}, +{0x71ff, 0x00}, +{0x7200, 0xf0}, +{0x7201, 0x59}, +{0x7202, 0x40}, +{0x7203, 0x21}, +{0x7204, 0x8c}, +{0x7205, 0xf6}, +{0x7206, 0x7b}, +{0x7207, 0xf9}, +{0x7208, 0x04}, +{0x7209, 0x99}, +{0x720a, 0x64}, +{0x720b, 0x1c}, +{0x720c, 0xc8}, +{0x720d, 0x51}, +{0x720e, 0x04}, +{0x720f, 0x2c}, +{0x7210, 0xeb}, +{0x7211, 0xd3}, +{0x7212, 0x0f}, +{0x7213, 0xb0}, +{0x7214, 0xf0}, +{0x7215, 0xbd}, +{0x7216, 0x00}, +{0x7217, 0x00}, +{0x7218, 0x76}, +{0x7219, 0x69}, +{0x721a, 0x18}, +{0x721b, 0x00}, +{0x721c, 0xec}, +{0x721d, 0x58}, +{0x721e, 0x18}, +{0x721f, 0x00}, +{0x7220, 0x38}, +{0x7221, 0x36}, +{0x7222, 0x18}, +{0x7223, 0x00}, +{0x7224, 0x00}, +{0x7225, 0x35}, +{0x7226, 0x18}, +{0x7227, 0x00}, +{0x7228, 0x00}, +{0x7229, 0x20}, +{0x722a, 0x18}, +{0x722b, 0x00}, +{0x722c, 0xff}, +{0x722d, 0xff}, +{0x722e, 0xff}, +{0x722f, 0x3f}, +{0x7230, 0xff}, +{0x7231, 0x07}, +{0x7232, 0x00}, +{0x7233, 0x00}, +{0x7234, 0xff}, +{0x7235, 0xff}, +{0x7236, 0x07}, +{0x7237, 0x00}, +{0x7238, 0xff}, +{0x7239, 0x1f}, +{0x723a, 0x00}, +{0x723b, 0x00}, +{0x723c, 0x01}, +{0x723d, 0xf6}, +{0x723e, 0x45}, +{0x723f, 0x12}, +{0x0232, 0x13}, +{0x0233, 0x01}, +}; struct i2c_random_wr_payload init_array_ar0231[] = { {0x301A, 0x0018}, // RESET_REGISTER From eef78b622cae83b961ad4102950b02f9f5c312af Mon Sep 17 00:00:00 2001 From: Comma Device Date: Sat, 12 Mar 2022 11:57:46 -0800 Subject: [PATCH 02/13] min stuff --- selfdrive/camerad/cameras/sensor2_i2c.h | 3916 +---------------------- 1 file changed, 7 insertions(+), 3909 deletions(-) diff --git a/selfdrive/camerad/cameras/sensor2_i2c.h b/selfdrive/camerad/cameras/sensor2_i2c.h index 458dad8e9e08c5..40678745db6566 100644 --- a/selfdrive/camerad/cameras/sensor2_i2c.h +++ b/selfdrive/camerad/cameras/sensor2_i2c.h @@ -4,3924 +4,22 @@ struct i2c_random_wr_payload stop_reg_array[] = {{0x301A, 0x918}};*/ struct i2c_random_wr_payload start_reg_array[] = {{0x0, 0}}; struct i2c_random_wr_payload init_array_imx390[] = { - /*{0x2008, 0xb7}, {0x2009, 0x04}, // MODE_VMAX + {0x2008, 0xb7}, {0x2009, 0x04}, // MODE_VMAX {0x2008, 0xe4}, {0x2009, 0x0c}, // MODE_HMAX // external trigger (off) {0x3650, 0}, // CU_MODE // exposure - {0x000C, 0xf2}, {0x000D, 0x2}, - {0x0010, 0xf2}, {0x0011, 0x2}, + {0x000c, 0x7f}, {0x000d, 0x01}, + {0x0010, 0x7f}, {0x0011, 0x01}, // analog gain - {0x0018, 50}, - {0x001A, 50}, + {0x0018, 0x64}, {0x0019, 0x00}, + {0x001a, 0x0c}, {0x001b, 0x00}, - // digital gain? - {0x0024, 50}, - {0x0026, 50}, - {0x0028, 50}, - {0x002c, 50}, - {0x002e, 50},*/ - - /*{0x2008, 0x04B7}, // MODE_VMAX - {0x200c, 0x0ce4}, // MODE_HMAX - - {0x2014, 0x0001}, // MODE_ADBIT_CU : 12-bit ADC - // is crop enabled? - {0x3410, 0x0788}, // CROP_H_SIZE - {0x3418, 0x04b8}, // CROP_V_SIZE - - - - // analog gain - {0x0018, 50}, - {0x001A, 50}, - - // digital gain? - {0x0024, 50}, - {0x0026, 50}, - {0x0028, 50}, - {0x002c, 50}, - {0x002e, 50}, - - //{0x2E18, 0x0}, - - // IFD_CLBLANKSTOP - {0x3450, 0x00}, - - // 20-bit is 0x2C - //{0x3448, 0x2C}, - - // PWL12? - {0x232, 0x113},*/ - -{0x000c, 0x7f}, {0x000d, 0x01}, -{0x000e, 0x00}, -{0x0010, 0x7f}, {0x0011, 0x01}, - -{0x0012, 0x00}, -{0x0018, 0x64}, {0x0019, 0x00}, -{0x001a, 0x0c}, {0x001b, 0x00}, - -{0x0038, 0x00}, -{0x003c, 0x00}, -{0x003d, 0x00}, -{0x003e, 0x00}, -{0x0040, 0x00}, -{0x0041, 0x00}, -{0x0042, 0x00}, -{0x0044, 0x00}, -{0x0045, 0x00}, -{0x0046, 0x00}, -{0x0048, 0x00}, -{0x0049, 0x00}, -{0x004a, 0x00}, -{0x004c, 0x00}, -{0x004d, 0x00}, -{0x004e, 0x00}, -{0x0050, 0x00}, -{0x0051, 0x00}, -{0x0052, 0x00}, -{0x0054, 0x00}, -{0x0055, 0x00}, -{0x0056, 0x00}, -{0x0058, 0x00}, -{0x0059, 0x00}, -{0x005a, 0x00}, -{0x005c, 0x00}, -{0x005d, 0x00}, -{0x005e, 0x00}, -{0x0060, 0x00}, -{0x0061, 0x00}, -{0x0062, 0x00}, -{0x0064, 0x00}, -{0x0065, 0x00}, -{0x0066, 0x00}, -{0x0068, 0x00}, -{0x0069, 0x00}, -{0x006a, 0x00}, -{0x0078, 0x00}, -{0x007c, 0x00}, -{0x007d, 0x00}, -{0x0080, 0x00}, -{0x0081, 0x00}, -{0x0090, 0x00}, -{0x00f4, 0x1c}, -{0x00f5, 0xf8}, -{0x00f6, 0x01}, -{0x00f8, 0x03}, -{0x00f9, 0x01}, -{0x00fa, 0x00}, -{0x00fb, 0x02}, -{0x0114, 0x00}, -{0x0115, 0x01}, -{0x0118, 0x20}, -{0x0119, 0x03}, -{0x011a, 0x00}, -{0x011b, 0x41}, -{0x011c, 0x80}, -{0x011d, 0x00}, -{0x0120, 0x20}, -{0x0121, 0x00}, -{0x0122, 0x00}, -{0x0123, 0x44}, -{0x0124, 0x00}, -{0x0125, 0x01}, -{0x0128, 0xac}, -{0x0129, 0x0d}, -{0x012a, 0x00}, -{0x012b, 0xa4}, -{0x012c, 0x00}, -{0x012d, 0x01}, -{0x0130, 0xc4}, -{0x0131, 0x09}, -{0x0132, 0x00}, -{0x0133, 0xda}, -{0x013a, 0x00}, -{0x013b, 0x00}, -{0x013c, 0x00}, -{0x013d, 0x00}, -{0x013e, 0x00}, -{0x0140, 0x00}, -{0x0141, 0x00}, -{0x0142, 0x00}, -{0x0144, 0x80}, -{0x0145, 0x01}, -{0x0146, 0x00}, -{0x0148, 0x80}, -{0x0149, 0x01}, -{0x014a, 0x00}, -{0x014c, 0x40}, -{0x014d, 0x06}, -{0x014e, 0x00}, -{0x0150, 0x15}, -{0x0151, 0x03}, -{0x0152, 0x00}, -{0x0154, 0x74}, -{0x0155, 0x0e}, -{0x0156, 0x00}, -{0x0158, 0xfe}, -{0x0159, 0x03}, -{0x015a, 0x00}, -{0x015c, 0xc0}, -{0x015d, 0x5d}, -{0x015e, 0x00}, -{0x0160, 0xfe}, -{0x0161, 0x04}, -{0x0162, 0x00}, -{0x0164, 0x28}, -{0x0165, 0x1d}, -{0x0166, 0x01}, -{0x0168, 0x32}, -{0x0169, 0x06}, -{0x016a, 0x00}, -{0x016c, 0xd8}, -{0x016d, 0x35}, -{0x016e, 0x03}, -{0x0170, 0xe3}, -{0x0171, 0x07}, -{0x0172, 0x00}, -{0x0174, 0x60}, -{0x0175, 0xe3}, -{0x0176, 0x16}, -{0x0178, 0x6f}, -{0x0179, 0x09}, -{0x017a, 0x00}, -{0x017c, 0x40}, -{0x017d, 0x4b}, -{0x017e, 0x4c}, -{0x0180, 0x87}, -{0x0181, 0x0b}, -{0x0182, 0x00}, -{0x0184, 0xff}, -{0x0185, 0xff}, -{0x0186, 0xff}, -{0x0188, 0x0e}, -{0x0189, 0x0f}, -{0x018a, 0x00}, -{0x018c, 0xff}, -{0x018d, 0xff}, -{0x018e, 0xff}, -{0x0190, 0x0e}, -{0x0191, 0x0f}, -{0x0192, 0x00}, -{0x0194, 0x0e}, -{0x0195, 0x0f}, -{0x0196, 0x00}, -{0x0198, 0x00}, -{0x0199, 0x00}, -{0x019a, 0x00}, -{0x019b, 0x01}, -{0x019c, 0x55}, -{0x019d, 0x55}, -{0x019e, 0x55}, -{0x019f, 0x00}, -{0x01a0, 0xc7}, -{0x01a1, 0x71}, -{0x01a2, 0x1c}, -{0x01a3, 0x00}, -{0x01a4, 0x75}, -{0x01a5, 0x39}, -{0x01a6, 0x03}, -{0x01a7, 0x00}, -{0x01a8, 0xba}, -{0x01a9, 0x9c}, -{0x01aa, 0x01}, -{0x01ab, 0x00}, -{0x01ac, 0x5d}, -{0x01ad, 0xce}, -{0x01ae, 0x00}, -{0x01af, 0x00}, -{0x01b0, 0x19}, -{0x01b1, 0x14}, -{0x01b2, 0x00}, -{0x01b3, 0x00}, -{0x01b4, 0x0c}, -{0x01b5, 0x0a}, -{0x01b6, 0x00}, -{0x01b7, 0x00}, -{0x01b8, 0x06}, -{0x01b9, 0x05}, -{0x01ba, 0x00}, -{0x01bb, 0x00}, -{0x01bc, 0x00}, -{0x01bd, 0x00}, -{0x01be, 0x00}, -{0x01bf, 0x00}, -{0x01c0, 0x00}, -{0x01c1, 0x00}, -{0x01c2, 0x00}, -{0x01c3, 0x00}, -{0x01c4, 0x00}, -{0x01c5, 0x00}, -{0x01cc, 0x01}, -{0x01d0, 0x09}, -{0x01d4, 0x01}, -{0x0390, 0x00}, -{0x0391, 0x00}, -{0x0392, 0x00}, -{0x03c0, 0x00}, -{0x2000, 0x55}, -{0x2001, 0x55}, -{0x2002, 0x55}, -{0x2003, 0x05}, -{0x2004, 0x02}, -{0x2008, 0x65}, -{0x2009, 0x04}, -{0x200a, 0x00}, -{0x200c, 0x98}, -{0x200d, 0x08}, -{0x2010, 0x04}, -{0x2014, 0x00}, -{0x2018, 0x02}, -{0x2019, 0x04}, -{0x201a, 0x00}, -{0x201c, 0x21}, -{0x201d, 0x11}, -{0x201e, 0x00}, -{0x201f, 0x00}, -{0x2020, 0xbc}, -{0x2021, 0x00}, -{0x2022, 0x7f}, -{0x2023, 0x00}, -{0x2024, 0xba}, -{0x2025, 0x00}, -{0x2026, 0x81}, -{0x2027, 0x00}, -{0x2028, 0x7d}, -{0x2029, 0x90}, -{0x202a, 0x05}, -{0x202c, 0xfc}, -{0x202d, 0x02}, -{0x202e, 0x25}, -{0x202f, 0x03}, -{0x2030, 0x05}, -{0x2031, 0x02}, -{0x2032, 0xca}, -{0x2033, 0x02}, -{0x2034, 0xfc}, -{0x2035, 0x02}, -{0x2036, 0x25}, -{0x2037, 0x03}, -{0x2038, 0xf8}, -{0x2039, 0xe4}, -{0x203a, 0xe3}, -{0x203b, 0x01}, -{0x203c, 0xf5}, -{0x203d, 0x8e}, -{0x203e, 0x0c}, -{0x203f, 0x2d}, -{0x2040, 0x69}, -{0x2041, 0x01}, -{0x2042, 0x8e}, -{0x2043, 0x01}, -{0x2044, 0x0c}, -{0x2045, 0x02}, -{0x2046, 0x31}, -{0x2047, 0x02}, -{0x2048, 0x6a}, -{0x2049, 0x01}, -{0x204a, 0x8e}, -{0x204b, 0x01}, -{0x204c, 0x0d}, -{0x204d, 0x02}, -{0x204e, 0x31}, -{0x204f, 0x02}, -{0x2050, 0x7b}, -{0x2051, 0x00}, -{0x2052, 0x7d}, -{0x2053, 0x00}, -{0x2054, 0x95}, -{0x2055, 0x00}, -{0x2056, 0x97}, -{0x2057, 0x00}, -{0x2058, 0xad}, -{0x2059, 0x00}, -{0x205a, 0xaf}, -{0x205b, 0x00}, -{0x205c, 0x92}, -{0x205d, 0x00}, -{0x205e, 0x94}, -{0x205f, 0x00}, -{0x2060, 0x8e}, -{0x2061, 0x00}, -{0x2062, 0x90}, -{0x2063, 0x00}, -{0x2064, 0xb1}, -{0x2065, 0x00}, -{0x2066, 0xb3}, -{0x2067, 0x00}, -{0x2068, 0x08}, -{0x2069, 0x00}, -{0x206a, 0x04}, -{0x206b, 0x00}, -{0x206c, 0x84}, -{0x206d, 0x00}, -{0x206e, 0x80}, -{0x206f, 0x00}, -{0x2070, 0x04}, -{0x2071, 0x00}, -{0x2072, 0x46}, -{0x2073, 0x00}, -{0x2074, 0xe9}, -{0x2075, 0x01}, -{0x2076, 0x74}, -{0x2077, 0x02}, -{0x2078, 0x80}, -{0x2079, 0x00}, -{0x207a, 0xc1}, -{0x207b, 0x00}, -{0x207c, 0xff}, -{0x207d, 0x03}, -{0x207e, 0xff}, -{0x207f, 0x03}, -{0x2080, 0x78}, -{0x2081, 0x00}, -{0x2082, 0x6a}, -{0x2083, 0x01}, -{0x2084, 0xe4}, -{0x2085, 0x01}, -{0x2086, 0x2b}, -{0x2087, 0x03}, -{0x2088, 0x00}, -{0x2089, 0x00}, -{0x208a, 0xff}, -{0x208b, 0x03}, -{0x208c, 0xff}, -{0x208d, 0x03}, -{0x208e, 0xff}, -{0x208f, 0x03}, -{0x2090, 0x7d}, -{0x2091, 0x00}, -{0x2092, 0x62}, -{0x2093, 0x01}, -{0x2094, 0xe9}, -{0x2095, 0x01}, -{0x2096, 0x00}, -{0x2097, 0x00}, -{0x2098, 0x7c}, -{0x2099, 0x00}, -{0x209a, 0x21}, -{0x209b, 0x03}, -{0x209c, 0xe9}, -{0x209d, 0x01}, -{0x209e, 0x21}, -{0x209f, 0x03}, -{0x20a0, 0xff}, -{0x20a1, 0x03}, -{0x20a2, 0xff}, -{0x20a3, 0x03}, -{0x20a4, 0xff}, -{0x20a5, 0x03}, -{0x20a6, 0xff}, -{0x20a7, 0x03}, -{0x20a8, 0xff}, -{0x20a9, 0x03}, -{0x20aa, 0xff}, -{0x20ab, 0x03}, -{0x20ac, 0xff}, -{0x20ad, 0x03}, -{0x20ae, 0xff}, -{0x20af, 0x03}, -{0x20b0, 0xff}, -{0x20b1, 0x03}, -{0x20b2, 0xff}, -{0x20b3, 0x03}, -{0x20b4, 0x87}, -{0x20b5, 0xcc}, -{0x20b6, 0x87}, -{0x20b7, 0x08}, -{0x20b8, 0xf4}, -{0x20b9, 0xa5}, -{0x20ba, 0x07}, -{0x20bc, 0x1f}, -{0x20bd, 0x01}, -{0x20be, 0xf6}, -{0x20bf, 0x00}, -{0x20c0, 0x90}, -{0x20c1, 0x01}, -{0x20c2, 0x67}, -{0x20c3, 0x01}, -{0x20c4, 0xff}, -{0x20c5, 0x03}, -{0x20c6, 0xff}, -{0x20c7, 0x03}, -{0x20c8, 0x33}, -{0x20c9, 0x02}, -{0x20ca, 0x0a}, -{0x20cb, 0x02}, -{0x20cc, 0x7f}, -{0x20cd, 0x00}, -{0x20ce, 0xd2}, -{0x20cf, 0x00}, -{0x20d0, 0x81}, -{0x20d1, 0x00}, -{0x20d2, 0x87}, -{0x20d3, 0x00}, -{0x20d4, 0x09}, -{0x20d5, 0x00}, -{0x20d8, 0x7f}, -{0x20d9, 0x00}, -{0x20da, 0x62}, -{0x20db, 0x01}, -{0x20dc, 0x7f}, -{0x20dd, 0x00}, -{0x20de, 0x62}, -{0x20df, 0x01}, -{0x20e0, 0x65}, -{0x20e1, 0x00}, -{0x20e2, 0x75}, -{0x20e3, 0x00}, -{0x20e4, 0xe0}, -{0x20e5, 0x00}, -{0x20e6, 0xf0}, -{0x20e7, 0x00}, -{0x20e8, 0x4c}, -{0x20e9, 0x01}, -{0x20ea, 0x5c}, -{0x20eb, 0x01}, -{0x20ec, 0xd1}, -{0x20ed, 0x01}, -{0x20ee, 0xe1}, -{0x20ef, 0x01}, -{0x20f0, 0x93}, -{0x20f1, 0x02}, -{0x20f2, 0xa3}, -{0x20f3, 0x02}, -{0x20f4, 0x0d}, -{0x20f5, 0x03}, -{0x20f6, 0x1d}, -{0x20f7, 0x03}, -{0x20f8, 0x57}, -{0x20f9, 0x00}, -{0x20fa, 0x7b}, -{0x20fb, 0x00}, -{0x20fc, 0xd2}, -{0x20fd, 0x00}, -{0x20fe, 0xf6}, -{0x20ff, 0x00}, -{0x2100, 0x3e}, -{0x2101, 0x01}, -{0x2102, 0x60}, -{0x2103, 0x01}, -{0x2104, 0xc3}, -{0x2105, 0x01}, -{0x2106, 0xe5}, -{0x2107, 0x01}, -{0x2108, 0x85}, -{0x2109, 0x02}, -{0x210a, 0xa9}, -{0x210b, 0x02}, -{0x210c, 0xff}, -{0x210d, 0x02}, -{0x210e, 0x21}, -{0x210f, 0x03}, -{0x2110, 0xff}, -{0x2111, 0x03}, -{0x2112, 0x00}, -{0x2113, 0x00}, -{0x2114, 0xff}, -{0x2115, 0x03}, -{0x2116, 0xff}, -{0x2117, 0x03}, -{0x2118, 0xff}, -{0x2119, 0x03}, -{0x211a, 0xff}, -{0x211b, 0x03}, -{0x211c, 0xff}, -{0x211d, 0x03}, -{0x211e, 0xff}, -{0x211f, 0x03}, -{0x2120, 0xff}, -{0x2121, 0x03}, -{0x2122, 0xff}, -{0x2123, 0x03}, -{0x2124, 0xff}, -{0x2125, 0x03}, -{0x2126, 0xff}, -{0x2127, 0x03}, -{0x2128, 0x7d}, -{0x2129, 0x90}, -{0x212a, 0xd5}, -{0x212b, 0x07}, -{0x212c, 0x64}, -{0x212d, 0x01}, -{0x2130, 0x5f}, -{0x2131, 0x7d}, -{0x2132, 0x05}, -{0x2134, 0x78}, -{0x2135, 0x00}, -{0x2136, 0x76}, -{0x2137, 0x00}, -{0x2138, 0xf3}, -{0x2139, 0x00}, -{0x213a, 0xf1}, -{0x213b, 0x00}, -{0x213c, 0xa6}, -{0x213d, 0x02}, -{0x213e, 0xa4}, -{0x213f, 0x02}, -{0x2140, 0x7d}, -{0x2141, 0x00}, -{0x2142, 0x8d}, -{0x2143, 0x00}, -{0x2144, 0xa1}, -{0x2145, 0x01}, -{0x2146, 0xb1}, -{0x2147, 0x01}, -{0x2148, 0xab}, -{0x2149, 0x02}, -{0x214a, 0xbb}, -{0x214b, 0x02}, -{0x214c, 0x17}, -{0x214d, 0x5c}, -{0x214e, 0x00}, -{0x2150, 0x00}, -{0x2151, 0x00}, -{0x2152, 0xf8}, -{0x2153, 0x00}, -{0x2154, 0xbe}, -{0x2155, 0x00}, -{0x2156, 0x7d}, -{0x2157, 0x00}, -{0x2158, 0x25}, -{0x2159, 0x00}, -{0x215a, 0x7d}, -{0x215b, 0x00}, -{0x215c, 0x62}, -{0x215d, 0x01}, -{0x215e, 0xff}, -{0x215f, 0x03}, -{0x2160, 0x26}, -{0x2161, 0x00}, -{0x2162, 0x7d}, -{0x2163, 0x00}, -{0x2164, 0x63}, -{0x2165, 0x01}, -{0x2166, 0xff}, -{0x2167, 0x03}, -{0x2168, 0xcb}, -{0x2169, 0x02}, -{0x216a, 0xcf}, -{0x216b, 0x02}, -{0x216c, 0xff}, -{0x216d, 0x03}, -{0x216e, 0xff}, -{0x216f, 0x03}, -{0x2170, 0xff}, -{0x2171, 0x03}, -{0x2172, 0xff}, -{0x2173, 0x03}, -{0x2174, 0xff}, -{0x2175, 0x03}, -{0x2176, 0xff}, -{0x2177, 0x03}, -{0x2178, 0x7e}, -{0x2179, 0x00}, -{0x217a, 0xbd}, -{0x217b, 0x00}, -{0x217c, 0xec}, -{0x217d, 0x01}, -{0x217e, 0x7b}, -{0x217f, 0x02}, -{0x2180, 0xd1}, -{0x2181, 0x02}, -{0x2182, 0x25}, -{0x2183, 0x03}, -{0x2184, 0x7f}, -{0x2185, 0x00}, -{0x2186, 0xbd}, -{0x2187, 0x00}, -{0x2188, 0xed}, -{0x2189, 0x01}, -{0x218a, 0x7b}, -{0x218b, 0x02}, -{0x218c, 0xd2}, -{0x218d, 0x02}, -{0x218e, 0x25}, -{0x218f, 0x03}, -{0x2190, 0xff}, -{0x2191, 0x03}, -{0x2192, 0xff}, -{0x2193, 0x03}, -{0x2194, 0xe9}, -{0x2195, 0x01}, -{0x2196, 0x21}, -{0x2197, 0x03}, -{0x2198, 0x17}, -{0x2199, 0xfc}, -{0x219a, 0x7f}, -{0x219b, 0x01}, -{0x219c, 0xff}, -{0x219d, 0x03}, -{0x21a0, 0x1b}, -{0x21a1, 0x1b}, -{0x21a2, 0x1b}, -{0x21a3, 0x1b}, -{0x21a4, 0x2b}, -{0x21a5, 0x80}, -{0x21a6, 0x00}, -{0x21a8, 0x04}, -{0x21a9, 0x98}, -{0x21aa, 0x60}, -{0x21ab, 0x03}, -{0x21ac, 0x7f}, -{0x21ad, 0x80}, -{0x21ae, 0x09}, -{0x21b0, 0x1c}, -{0x21b1, 0x00}, -{0x21b2, 0xa0}, -{0x21b3, 0x00}, -{0x21b4, 0x0c}, -{0x21b5, 0x00}, -{0x21b6, 0x2d}, -{0x21b7, 0x00}, -{0x21b8, 0x20}, -{0x21b9, 0x00}, -{0x21ba, 0x02}, -{0x21bb, 0x00}, -{0x21bc, 0xcc}, -{0x21bd, 0x00}, -{0x21be, 0x4a}, -{0x21bf, 0x00}, -{0x21c0, 0xd0}, -{0x21c1, 0x00}, -{0x21c2, 0x44}, -{0x21c3, 0x00}, -{0x21c4, 0x00}, -{0x21c5, 0xe0}, -{0x21c6, 0x00}, -{0x21c8, 0x11}, -{0x21c9, 0x00}, -{0x21ca, 0x02}, -{0x21cc, 0x08}, -{0x21cd, 0xc0}, -{0x21ce, 0x0c}, -{0x21d0, 0x44}, -{0x21d1, 0x00}, -{0x21d2, 0x02}, -{0x21d4, 0x02}, -{0x21d5, 0x20}, -{0x21d6, 0x2c}, -{0x21d8, 0xfe}, -{0x21d9, 0x9d}, -{0x21da, 0xdf}, -{0x21db, 0x03}, -{0x21dc, 0x62}, -{0x21dd, 0x01}, -{0x21de, 0x7f}, -{0x21df, 0x00}, -{0x21e0, 0xb7}, -{0x21e1, 0x01}, -{0x21e2, 0xb5}, -{0x21e3, 0x01}, -{0x21e4, 0xc1}, -{0x21e5, 0x02}, -{0x21e6, 0xbf}, -{0x21e7, 0x02}, -{0x21e8, 0xb3}, -{0x21e9, 0x0d}, -{0x21ea, 0x00}, -{0x21eb, 0x04}, -{0x21ec, 0x90}, -{0x21ed, 0x07}, -{0x21ee, 0x58}, -{0x21ef, 0x04}, -{0x21f0, 0x54}, -{0x21f1, 0x04}, -{0x21f4, 0x02}, -{0x21f5, 0x00}, -{0x21f6, 0x00}, -{0x21f8, 0x3c}, -{0x21f9, 0x00}, -{0x21fc, 0x28}, -{0x21fd, 0x00}, -{0x21fe, 0x3c}, -{0x21ff, 0x00}, -{0x2200, 0x00}, -{0x2204, 0x4c}, -{0x2205, 0x04}, -{0x2206, 0x65}, -{0x2207, 0x04}, -{0x2208, 0x0a}, -{0x2209, 0x00}, -{0x220c, 0x57}, -{0x220d, 0x00}, -{0x220e, 0x37}, -{0x220f, 0x00}, -{0x2210, 0x1f}, -{0x2211, 0x00}, -{0x2212, 0x1f}, -{0x2213, 0x00}, -{0x2214, 0x1f}, -{0x2215, 0x00}, -{0x2216, 0x77}, -{0x2217, 0x00}, -{0x2218, 0x1f}, -{0x2219, 0x00}, -{0x221a, 0x17}, -{0x221b, 0x00}, -{0x221c, 0x03}, -{0x2220, 0x24}, -{0x2221, 0x00}, -{0x2222, 0x00}, -{0x2223, 0x00}, -{0x2224, 0xa7}, -{0x2225, 0xaa}, -{0x2226, 0x80}, -{0x2227, 0x08}, -{0x2228, 0x01}, -{0x2260, 0xff}, -{0x2261, 0x1f}, -{0x2262, 0x00}, -{0x2263, 0x00}, -{0x2264, 0x00}, -{0x2265, 0x00}, -{0x2266, 0xff}, -{0x2267, 0x1f}, -{0x2268, 0x00}, -{0x2269, 0x00}, -{0x226a, 0xff}, -{0x226b, 0x1f}, -{0x226c, 0x00}, -{0x226d, 0x00}, -{0x226e, 0xff}, -{0x226f, 0x1f}, -{0x227c, 0xb2}, -{0x227d, 0x0c}, -{0x227e, 0x6a}, -{0x227f, 0x09}, -{0x2280, 0xd2}, -{0x2281, 0x0c}, -{0x2282, 0x5a}, -{0x2283, 0x09}, -{0x2284, 0xc4}, -{0x2285, 0x0c}, -{0x2286, 0x54}, -{0x2287, 0x09}, -{0x22b2, 0x92}, -{0x22b4, 0x20}, -{0x22b5, 0x00}, -{0x22b6, 0x20}, -{0x22b7, 0x00}, -{0x22b8, 0x20}, -{0x22b9, 0x00}, -{0x22ba, 0x20}, -{0x22bb, 0x00}, -{0x22bc, 0x20}, -{0x22bd, 0x00}, -{0x22be, 0x20}, -{0x22bf, 0x00}, -{0x22c0, 0x20}, -{0x22c1, 0x00}, -{0x22c2, 0x20}, -{0x22c3, 0x00}, -{0x22c4, 0x20}, -{0x22c5, 0x00}, -{0x22c6, 0x20}, -{0x22c7, 0x00}, -{0x22c8, 0x20}, -{0x22c9, 0x00}, -{0x22ca, 0x20}, -{0x22cb, 0x00}, -{0x22cc, 0x20}, -{0x22cd, 0x00}, -{0x22ce, 0x20}, -{0x22cf, 0x00}, -{0x22da, 0x00}, -{0x22ef, 0x82}, -{0x2308, 0x01}, -{0x2311, 0x09}, -{0x2318, 0x40}, -{0x2319, 0xcd}, -{0x231a, 0x54}, -{0x2324, 0x20}, -{0x2325, 0x00}, -{0x2328, 0x00}, -{0x234a, 0x9f}, -{0x234b, 0x07}, -{0x2354, 0x0c}, -{0x23c0, 0x5d}, -{0x244c, 0xff}, -{0x244d, 0x03}, -{0x244e, 0xff}, -{0x244f, 0x03}, -{0x24a0, 0x00}, -{0x24a4, 0x16}, -{0x24a5, 0x01}, -{0x24a6, 0xa6}, -{0x24a7, 0x02}, -{0x24a8, 0xd5}, -{0x24a9, 0x02}, -{0x24bc, 0x17}, -{0x24bd, 0x01}, -{0x24be, 0xa7}, -{0x24bf, 0x02}, -{0x24c0, 0xd5}, -{0x24c1, 0x02}, -{0x24da, 0x6f}, -{0x24db, 0x00}, -{0x24dc, 0x62}, -{0x24dd, 0x01}, -{0x24ea, 0x32}, -{0x24eb, 0x00}, -{0x24ec, 0xdc}, -{0x24ed, 0x00}, -{0x24fa, 0x32}, -{0x24fb, 0x00}, -{0x24fc, 0xdd}, -{0x24fd, 0x00}, -{0x254a, 0x15}, -{0x254b, 0x01}, -{0x255a, 0x15}, -{0x255b, 0x01}, -{0x2560, 0x01}, -{0x2561, 0x00}, -{0x2562, 0x2a}, -{0x2563, 0x00}, -{0x2564, 0xf8}, -{0x2565, 0x00}, -{0x2566, 0x15}, -{0x2567, 0x01}, -{0x2568, 0x0c}, -{0x2569, 0x02}, -{0x256a, 0x31}, -{0x256b, 0x02}, -{0x2578, 0x90}, -{0x2579, 0x01}, -{0x257a, 0x92}, -{0x257b, 0x01}, -{0x257c, 0xb8}, -{0x257d, 0x02}, -{0x257e, 0xba}, -{0x257f, 0x02}, -{0x2584, 0x90}, -{0x2585, 0x01}, -{0x2586, 0x92}, -{0x2587, 0x01}, -{0x2588, 0xb8}, -{0x2589, 0x02}, -{0x258a, 0xba}, -{0x258b, 0x02}, -{0x267a, 0xf8}, -{0x267b, 0x00}, -{0x267c, 0x16}, -{0x267d, 0x01}, -{0x267e, 0xa6}, -{0x267f, 0x02}, -{0x2680, 0xd5}, -{0x2681, 0x02}, -{0x2690, 0xf8}, -{0x2691, 0x00}, -{0x2694, 0xa6}, -{0x2695, 0x02}, -{0x2696, 0x16}, -{0x2697, 0x01}, -{0x269a, 0xd5}, -{0x269b, 0x02}, -{0x26b8, 0x10}, -{0x26b9, 0x00}, -{0x26ba, 0x33}, -{0x26bb, 0x00}, -{0x26bc, 0x89}, -{0x26bd, 0x00}, -{0x26be, 0xb0}, -{0x26bf, 0x00}, -{0x26c4, 0x4e}, -{0x26c5, 0x00}, -{0x26c8, 0xc9}, -{0x26c9, 0x00}, -{0x26cc, 0x35}, -{0x26cd, 0x01}, -{0x26d0, 0xba}, -{0x26d1, 0x01}, -{0x26d4, 0x7c}, -{0x26d5, 0x02}, -{0x26d8, 0xf6}, -{0x26d9, 0x02}, -{0x26de, 0x51}, -{0x26df, 0x00}, -{0x26e0, 0x7f}, -{0x26e1, 0x00}, -{0x26e2, 0xcc}, -{0x26e3, 0x00}, -{0x26e4, 0xf8}, -{0x26e5, 0x00}, -{0x26e6, 0x38}, -{0x26e7, 0x01}, -{0x26e8, 0x65}, -{0x26e9, 0x01}, -{0x26ea, 0xbd}, -{0x26eb, 0x01}, -{0x26ee, 0x7f}, -{0x26ef, 0x02}, -{0x26f0, 0xab}, -{0x26f1, 0x02}, -{0x26f2, 0xf9}, -{0x26f3, 0x02}, -{0x2722, 0x59}, -{0x2723, 0x02}, -{0x2938, 0x55}, -{0x2939, 0x00}, -{0x293a, 0x17}, -{0x293b, 0x00}, -{0x293c, 0xd0}, -{0x293d, 0x00}, -{0x293e, 0x91}, -{0x293f, 0x00}, -{0x2940, 0x3c}, -{0x2941, 0x01}, -{0x2942, 0x0c}, -{0x2943, 0x01}, -{0x2944, 0xc1}, -{0x2945, 0x01}, -{0x2946, 0x76}, -{0x2947, 0x01}, -{0x2948, 0x83}, -{0x2949, 0x02}, -{0x294a, 0xfb}, -{0x294b, 0x01}, -{0x294c, 0xfd}, -{0x294d, 0x02}, -{0x294e, 0xbf}, -{0x294f, 0x02}, -{0x2a06, 0x25}, -{0x2a07, 0x03}, -{0x2a20, 0x00}, -{0x2a21, 0x00}, -{0x2a22, 0x7d}, -{0x2a23, 0x00}, -{0x2b11, 0x1a}, -{0x2b13, 0x11}, -{0x2b14, 0x11}, -{0x2b15, 0x11}, -{0x2b16, 0x11}, -{0x2b17, 0x10}, -{0x2b18, 0x0f}, -{0x2b19, 0x0e}, -{0x2b1a, 0x0d}, -{0x2b1b, 0x0c}, -{0x2b1c, 0x0b}, -{0x2b1d, 0x0b}, -{0x2b1e, 0x0a}, -{0x2b1f, 0x09}, -{0x2b20, 0x08}, -{0x2b21, 0x07}, -{0x2b22, 0x06}, -{0x2b23, 0x05}, -{0x2b24, 0x04}, -{0x2b25, 0x03}, -{0x2b26, 0x03}, -{0x2b38, 0x01}, -{0x2b45, 0xe3}, -{0x2b50, 0x01}, -{0x2b51, 0x00}, -{0x2b62, 0x66}, -{0x2b6d, 0x47}, -{0x2b70, 0x03}, -{0x2b71, 0x02}, -{0x2b72, 0x02}, -{0x2b7b, 0x42}, -{0x2b7f, 0x7f}, -{0x2b80, 0x94}, -{0x2b81, 0x06}, -{0x2b87, 0x1b}, -{0x2b88, 0x1a}, -{0x2b89, 0x17}, -{0x2b8a, 0x17}, -{0x2b8b, 0x12}, -{0x2b8d, 0x2b}, -{0x2b8e, 0x2b}, -{0x2b8f, 0x2b}, -{0x2b90, 0x7f}, -{0x2b91, 0x0f}, -{0x2b92, 0x31}, -{0x2b93, 0x07}, -{0x2b94, 0xfe}, -{0x2b95, 0x26}, -{0x2b98, 0xfe}, -{0x2b99, 0x56}, -{0x2b9b, 0x2a}, -{0x2ba8, 0xbc}, -{0x2ba9, 0x62}, -{0x2bc1, 0x70}, -{0x2bc5, 0x80}, -{0x2bd5, 0x30}, -{0x2bd6, 0xf0}, -{0x2bd8, 0xdb}, -{0x2bd9, 0xf6}, -{0x2bda, 0x21}, -{0x2bdb, 0x06}, -{0x2bdc, 0x57}, -{0x2c98, 0xe1}, -{0x2c99, 0x2e}, -{0x2c9b, 0x80}, -{0x2ca9, 0x80}, -{0x2caa, 0x01}, -{0x2cbf, 0x08}, -{0x2d39, 0x0e}, -{0x2d50, 0x80}, -{0x2d54, 0x00}, -{0x2d5b, 0x58}, -{0x2dfd, 0x01}, -{0x3000, 0x00}, -{0x3001, 0x00}, -{0x3002, 0x23}, -{0x3003, 0xa1}, -{0x3004, 0x00}, -{0x3005, 0x20}, -{0x3006, 0x58}, -{0x3007, 0x00}, -{0x3008, 0x06}, -{0x3009, 0xb4}, -{0x300a, 0x1f}, -{0x300b, 0x00}, -{0x300c, 0x00}, -{0x300d, 0x1b}, -{0x300e, 0x90}, -{0x300f, 0x97}, -{0x3010, 0x00}, -{0x3011, 0x00}, -{0x3012, 0x20}, -{0x3013, 0x21}, -{0x3014, 0x00}, -{0x3015, 0x20}, -{0x3016, 0x84}, -{0x3017, 0x00}, -{0x3018, 0x30}, -{0x3019, 0x09}, -{0x301a, 0x46}, -{0x301b, 0x00}, -{0x3070, 0xc1}, -{0x3071, 0x81}, -{0x3072, 0x29}, -{0x3073, 0x81}, -{0x3080, 0xc4}, -{0x3081, 0x0c}, -{0x3082, 0xd2}, -{0x3083, 0x0c}, -{0x3084, 0x5c}, -{0x3085, 0x00}, -{0x3086, 0x90}, -{0x3087, 0x00}, -{0x3088, 0x07}, -{0x3089, 0x0a}, -{0x308a, 0x52}, -{0x308b, 0x09}, -{0x308c, 0x44}, -{0x308d, 0x03}, -{0x308e, 0x70}, -{0x308f, 0x03}, -{0x3090, 0x54}, -{0x3091, 0x09}, -{0x3092, 0x5a}, -{0x3093, 0x09}, -{0x3094, 0x1c}, -{0x3095, 0x00}, -{0x3096, 0x10}, -{0x3097, 0x00}, -{0x3098, 0x70}, -{0x3099, 0x03}, -{0x309a, 0xf8}, -{0x309b, 0x04}, -{0x309c, 0x74}, -{0x309d, 0x01}, -{0x309e, 0x60}, -{0x309f, 0x01}, -{0x3370, 0x01}, -{0x3374, 0xf0}, -{0x3375, 0x00}, -{0x3376, 0x01}, -{0x3377, 0x00}, -{0x3410, 0x90}, -{0x3411, 0x07}, -{0x3418, 0x48}, -{0x3419, 0x04}, -{0x34be, 0x6a}, -{0x34bf, 0x01}, -{0x3584, 0x00}, -{0x3586, 0x00}, -{0x3587, 0x01}, -{0x3588, 0xe6}, -{0x3589, 0x00}, -{0x3590, 0x00}, -{0x3591, 0x00}, -{0x3594, 0x40}, -{0x3598, 0x03}, -{0x3599, 0x00}, -{0x359a, 0x80}, -{0x359b, 0x00}, -{0x359c, 0x00}, -{0x359d, 0x01}, -{0x359e, 0x00}, -{0x359f, 0x02}, -{0x35a0, 0x00}, -{0x35a1, 0x04}, -{0x35a2, 0x20}, -{0x35a3, 0x00}, -{0x35a4, 0x40}, -{0x35a5, 0x00}, -{0x35a6, 0x80}, -{0x35a7, 0x00}, -{0x35a8, 0x00}, -{0x35a9, 0x01}, -{0x35aa, 0x3a}, -{0x35ab, 0x00}, -{0x35ac, 0x80}, -{0x35ad, 0x00}, -{0x35ae, 0x00}, -{0x35af, 0x01}, -{0x35b0, 0x00}, -{0x35b1, 0x02}, -{0x35b2, 0x00}, -{0x35b3, 0x04}, -{0x35b4, 0x02}, -{0x35b5, 0x00}, -{0x35b6, 0x04}, -{0x35b7, 0x00}, -{0x35b8, 0x08}, -{0x35b9, 0x00}, -{0x35ba, 0x10}, -{0x35bb, 0x00}, -{0x35bc, 0x03}, -{0x35bd, 0x00}, -{0x35c8, 0x00}, -{0x35c9, 0x01}, -{0x35ca, 0x00}, -{0x35cb, 0x04}, -{0x35cc, 0x00}, -{0x35cd, 0x10}, -{0x35ce, 0x00}, -{0x35cf, 0x40}, -{0x35d0, 0x00}, -{0x35d1, 0x0c}, -{0x35d2, 0x00}, -{0x35d3, 0x0c}, -{0x35d4, 0x00}, -{0x35d5, 0x0c}, -{0x35d6, 0x00}, -{0x35d7, 0x0c}, -{0x35d8, 0x00}, -{0x35d9, 0x00}, -{0x35da, 0x08}, -{0x35db, 0x00}, -{0x35dc, 0xd8}, -{0x35dd, 0x0e}, -{0x35f0, 0x00}, -{0x35f1, 0x10}, -{0x35f2, 0x00}, -{0x35f3, 0x10}, -{0x35f4, 0x00}, -{0x35f5, 0x10}, -{0x35f6, 0x00}, -{0x35f7, 0x03}, -{0x35f8, 0x00}, -{0x35f9, 0x02}, -{0x35fa, 0x38}, -{0x35fb, 0x00}, -{0x35fc, 0xb3}, -{0x35fd, 0x01}, -{0x35fe, 0x00}, -{0x35ff, 0x00}, -{0x3600, 0x05}, -{0x3601, 0x06}, -{0x3604, 0x03}, -{0x3605, 0x00}, -{0x3608, 0x03}, -{0x3609, 0x00}, -{0x360c, 0x00}, -{0x360d, 0x00}, -{0x3610, 0x10}, -{0x3611, 0x01}, -{0x3612, 0x00}, -{0x3613, 0x00}, -{0x3614, 0x00}, -{0x3615, 0x00}, -{0x361c, 0x00}, -{0x361d, 0x01}, -{0x361e, 0x00}, -{0x361f, 0x01}, -{0x3620, 0x01}, -{0x3621, 0x00}, -{0x3622, 0xb0}, -{0x3623, 0x04}, -{0x3624, 0xdc}, -{0x3625, 0x05}, -{0x3626, 0x00}, -{0x3627, 0x01}, -{0x3628, 0xff}, -{0x3629, 0x0f}, -{0x362a, 0x00}, -{0x362b, 0x10}, -{0x362c, 0x00}, -{0x362d, 0x01}, -{0x3630, 0x41}, -{0x3631, 0x00}, -{0x3632, 0x41}, -{0x3633, 0x00}, -{0x3634, 0x41}, -{0x3635, 0x00}, -{0x3636, 0x41}, -{0x3637, 0x00}, -{0x3638, 0x44}, -{0x3639, 0x00}, -{0x363a, 0x47}, -{0x363b, 0x00}, -{0x363c, 0x47}, -{0x363d, 0x00}, -{0x363e, 0x44}, -{0x363f, 0x00}, -{0x36c4, 0xff}, -{0x36c5, 0x0f}, -{0x36c6, 0xff}, -{0x36c7, 0x0f}, -{0x36c8, 0xff}, -{0x36c9, 0x0f}, -{0x36cc, 0x00}, -{0x36cd, 0x00}, -{0x36ce, 0x00}, -{0x36cf, 0x00}, -{0x36d0, 0x00}, -{0x36d1, 0x00}, -{0x36d4, 0xff}, -{0x36d5, 0x0f}, -{0x36d6, 0xff}, -{0x36d7, 0x0f}, -{0x36d8, 0xff}, -{0x36d9, 0x0f}, -{0x36dc, 0xff}, -{0x36dd, 0x0f}, -{0x36de, 0xff}, -{0x36df, 0x0f}, -{0x36e0, 0xff}, -{0x36e1, 0x0f}, -{0x36e4, 0xff}, -{0x36e5, 0x0f}, -{0x36e6, 0xff}, -{0x36e7, 0x0f}, -{0x36e8, 0xff}, -{0x36e9, 0x0f}, -{0x36ee, 0x00}, -{0x36ef, 0x00}, -{0x36f0, 0x00}, -{0x36f1, 0x80}, -{0x36f8, 0x01}, -{0x3700, 0x03}, -{0x3701, 0x05}, -{0x3702, 0x03}, -{0x3703, 0x04}, -{0x3704, 0x08}, -{0x3705, 0x03}, -{0x3706, 0x03}, -{0x3707, 0x03}, -{0x3708, 0x03}, -{0x3709, 0x03}, -{0x370a, 0x03}, -{0x370b, 0x03}, -{0x370c, 0x03}, -{0x370d, 0x03}, -{0x370e, 0x0e}, -{0x3718, 0x64}, -{0x3719, 0x47}, -{0x371a, 0x36}, -{0x371b, 0x1e}, -{0x371c, 0x50}, -{0x371d, 0x41}, -{0x371e, 0x2f}, -{0x371f, 0x1a}, -{0x3720, 0x95}, -{0x3721, 0x9d}, -{0x3722, 0xa5}, -{0x3723, 0xad}, -{0x3748, 0xa8}, -{0x3749, 0x9e}, -{0x374a, 0x94}, -{0x374b, 0x80}, -{0x37c0, 0x00}, -{0x37c1, 0x00}, -{0x37c2, 0x00}, -{0x37c4, 0x00}, -{0x37c5, 0x00}, -{0x37c6, 0x00}, -{0x37c8, 0x00}, -{0x37c9, 0x00}, -{0x37ca, 0x00}, -{0x37cc, 0x00}, -{0x37cd, 0x00}, -{0x37ce, 0x00}, -{0x37d0, 0x00}, -{0x37d1, 0x00}, -{0x37d2, 0x00}, -{0x37d4, 0x00}, -{0x37d5, 0x00}, -{0x37d6, 0x00}, -{0x37d8, 0x00}, -{0x37d9, 0x00}, -{0x37da, 0x00}, -{0x37dc, 0x00}, -{0x37dd, 0x00}, -{0x37de, 0x00}, -{0x37e0, 0x00}, -{0x37e1, 0x00}, -{0x37e2, 0x00}, -{0x37e4, 0x00}, -{0x37e5, 0x00}, -{0x37e6, 0x00}, -{0x37e8, 0x00}, -{0x37e9, 0x00}, -{0x37ea, 0x00}, -{0x37ec, 0x00}, -{0x37ed, 0x00}, -{0x37ee, 0x00}, -{0x37f0, 0x00}, -{0x37f4, 0x00}, -{0x37f5, 0x1e}, -{0x37f6, 0x34}, -{0x37f7, 0x00}, -{0x37f8, 0xff}, -{0x37f9, 0xff}, -{0x37fa, 0x03}, -{0x37fc, 0x00}, -{0x37fd, 0x00}, -{0x37fe, 0x04}, -{0x3800, 0xff}, -{0x3801, 0xff}, -{0x3802, 0x03}, -{0x3804, 0x00}, -{0x3805, 0x00}, -{0x3806, 0x04}, -{0x3808, 0x00}, -{0x3809, 0x00}, -{0x380a, 0x00}, -{0x380c, 0x00}, -{0x380d, 0x00}, -{0x380e, 0x00}, -{0x3810, 0x00}, -{0x3811, 0x00}, -{0x3812, 0x00}, -{0x3814, 0x00}, -{0x3815, 0x00}, -{0x3816, 0x00}, -{0x3818, 0x00}, -{0x3819, 0x00}, -{0x381a, 0x00}, -{0x381c, 0x00}, -{0x381d, 0x00}, -{0x381e, 0x00}, -{0x3820, 0x00}, -{0x3821, 0x00}, -{0x3822, 0x00}, -{0x3824, 0x00}, -{0x3825, 0x00}, -{0x3826, 0x00}, -{0x3828, 0x00}, -{0x3829, 0x00}, -{0x382a, 0x00}, -{0x382c, 0x00}, -{0x382d, 0x00}, -{0x382e, 0x00}, -{0x3830, 0x00}, -{0x3831, 0x00}, -{0x3832, 0x00}, -{0x3834, 0x00}, -{0x3835, 0x00}, -{0x3836, 0x00}, -{0x3838, 0x47}, -{0x3839, 0x00}, -{0x383a, 0x34}, -{0x383b, 0x00}, -{0x383c, 0x48}, -{0x383d, 0x00}, -{0x383e, 0x39}, -{0x383f, 0x00}, -{0x3840, 0x13}, -{0x3841, 0x00}, -{0x3842, 0x13}, -{0x3843, 0x00}, -{0x3844, 0x1d}, -{0x3845, 0x00}, -{0x3846, 0x1d}, -{0x3847, 0x00}, -{0x3848, 0x08}, -{0x3849, 0x00}, -{0x384a, 0x07}, -{0x384b, 0x00}, -{0x384c, 0x05}, -{0x384d, 0x00}, -{0x384e, 0x00}, -{0x384f, 0x00}, -{0x3850, 0xff}, -{0x3851, 0x0f}, -{0x3852, 0x00}, -{0x3853, 0x10}, -{0x3854, 0xff}, -{0x3855, 0x0f}, -{0x3856, 0x00}, -{0x3857, 0x10}, -{0x3858, 0xff}, -{0x3859, 0x0f}, -{0x385a, 0x00}, -{0x385b, 0x10}, -{0x385c, 0x02}, -{0x385d, 0x00}, -{0x385e, 0x06}, -{0x385f, 0x00}, -{0x3860, 0x06}, -{0x3861, 0x00}, -{0x3862, 0x08}, -{0x3863, 0x00}, -{0x3864, 0x02}, -{0x3865, 0x00}, -{0x3870, 0x00}, -{0x3871, 0x01}, -{0x38a0, 0x01}, -{0x38a1, 0x01}, -{0x38a2, 0x00}, -{0x38a3, 0x01}, -{0x38a4, 0x07}, -{0x38a5, 0x00}, -{0x38a6, 0x04}, -{0x38a7, 0x04}, -{0x38a8, 0x00}, -{0x38a9, 0x00}, -{0x38ac, 0x00}, -{0x38ad, 0x00}, -{0x38ae, 0x01}, -{0x38b0, 0x02}, -{0x38b2, 0x43}, -{0x38b3, 0x00}, -{0x38b4, 0x10}, -{0x38b5, 0x00}, -{0x38b6, 0x09}, -{0x38b7, 0x00}, -{0x38b8, 0x09}, -{0x38b9, 0x00}, -{0x38ba, 0x47}, -{0x38bb, 0x00}, -{0x38bc, 0x16}, -{0x38bd, 0x00}, -{0x38be, 0x0e}, -{0x38bf, 0x00}, -{0x38c0, 0x0b}, -{0x38c1, 0x00}, -{0x38c2, 0x4a}, -{0x38c3, 0x00}, -{0x38c4, 0x1c}, -{0x38c5, 0x00}, -{0x38c6, 0x12}, -{0x38c7, 0x00}, -{0x38c8, 0x0d}, -{0x38c9, 0x00}, -{0x38ca, 0x51}, -{0x38cb, 0x00}, -{0x38cc, 0x24}, -{0x38cd, 0x00}, -{0x38ce, 0x19}, -{0x38cf, 0x00}, -{0x38d0, 0x10}, -{0x38d1, 0x00}, -{0x38d2, 0x5d}, -{0x38d3, 0x00}, -{0x38d4, 0x30}, -{0x38d5, 0x00}, -{0x38d6, 0x23}, -{0x38d7, 0x00}, -{0x38d8, 0x17}, -{0x38d9, 0x00}, -{0x38da, 0x72}, -{0x38db, 0x00}, -{0x38dc, 0x43}, -{0x38dd, 0x00}, -{0x38de, 0x31}, -{0x38df, 0x00}, -{0x38e0, 0x20}, -{0x38e1, 0x00}, -{0x38e2, 0x96}, -{0x38e3, 0x00}, -{0x38e4, 0x5e}, -{0x38e5, 0x00}, -{0x38e6, 0x46}, -{0x38e7, 0x00}, -{0x38e8, 0x2e}, -{0x38e9, 0x00}, -{0x38ea, 0xd4}, -{0x38eb, 0x00}, -{0x38ec, 0x87}, -{0x38ed, 0x00}, -{0x38ee, 0x65}, -{0x38ef, 0x00}, -{0x38f0, 0x43}, -{0x38f1, 0x00}, -{0x38f2, 0x3f}, -{0x38f3, 0x01}, -{0x38f4, 0xc4}, -{0x38f5, 0x00}, -{0x38f6, 0x94}, -{0x38f7, 0x00}, -{0x38f8, 0x64}, -{0x38f9, 0x00}, -{0x38fa, 0x00}, -{0x38fb, 0x01}, -{0x38fc, 0x00}, -{0x38fd, 0x01}, -{0x38fe, 0x00}, -{0x38ff, 0x01}, -{0x3900, 0x00}, -{0x3901, 0x01}, -{0x3902, 0x60}, -{0x3903, 0x00}, -{0x3904, 0x25}, -{0x3905, 0x00}, -{0x3906, 0x18}, -{0x3907, 0x00}, -{0x3908, 0x10}, -{0x3909, 0x00}, -{0x390a, 0xe6}, -{0x390b, 0x00}, -{0x390c, 0xd5}, -{0x390d, 0x00}, -{0x390e, 0xaa}, -{0x390f, 0x00}, -{0x3910, 0x85}, -{0x3911, 0x00}, -{0x3912, 0xe6}, -{0x3913, 0x00}, -{0x3914, 0xd5}, -{0x3915, 0x00}, -{0x3916, 0xaa}, -{0x3917, 0x00}, -{0x3918, 0x85}, -{0x3919, 0x00}, -{0x391a, 0xe6}, -{0x391b, 0x00}, -{0x391c, 0xd5}, -{0x391d, 0x00}, -{0x391e, 0xaa}, -{0x391f, 0x00}, -{0x3920, 0x85}, -{0x3921, 0x00}, -{0x3922, 0x40}, -{0x3923, 0x00}, -{0x3924, 0x40}, -{0x3925, 0x00}, -{0x3926, 0x40}, -{0x3927, 0x00}, -{0x3928, 0x40}, -{0x3929, 0x00}, -{0x392a, 0x80}, -{0x392b, 0x00}, -{0x392c, 0x80}, -{0x392d, 0x00}, -{0x392e, 0x80}, -{0x392f, 0x00}, -{0x3930, 0x80}, -{0x3931, 0x00}, -{0x3932, 0x4c}, -{0x3933, 0x4c}, -{0x3934, 0x4c}, -{0x3940, 0x01}, -{0x3941, 0x01}, -{0x3942, 0x00}, -{0x3943, 0x01}, -{0x3944, 0x07}, -{0x3945, 0x00}, -{0x3946, 0x04}, -{0x3947, 0x04}, -{0x3948, 0x00}, -{0x3949, 0x00}, -{0x394c, 0x00}, -{0x394d, 0x00}, -{0x394e, 0x01}, -{0x3950, 0x03}, -{0x3952, 0x1b}, -{0x3953, 0x00}, -{0x3954, 0x0c}, -{0x3955, 0x00}, -{0x3956, 0x09}, -{0x3957, 0x00}, -{0x3958, 0x07}, -{0x3959, 0x00}, -{0x395a, 0x1d}, -{0x395b, 0x00}, -{0x395c, 0x0e}, -{0x395d, 0x00}, -{0x395e, 0x0b}, -{0x395f, 0x00}, -{0x3960, 0x08}, -{0x3961, 0x00}, -{0x3962, 0x1e}, -{0x3963, 0x00}, -{0x3964, 0x10}, -{0x3965, 0x00}, -{0x3966, 0x0c}, -{0x3967, 0x00}, -{0x3968, 0x09}, -{0x3969, 0x00}, -{0x396a, 0x21}, -{0x396b, 0x00}, -{0x396c, 0x13}, -{0x396d, 0x00}, -{0x396e, 0x0e}, -{0x396f, 0x00}, -{0x3970, 0x0a}, -{0x3971, 0x00}, -{0x3972, 0x25}, -{0x3973, 0x00}, -{0x3974, 0x19}, -{0x3975, 0x00}, -{0x3976, 0x12}, -{0x3977, 0x00}, -{0x3978, 0x0d}, -{0x3979, 0x00}, -{0x397a, 0x2e}, -{0x397b, 0x00}, -{0x397c, 0x21}, -{0x397d, 0x00}, -{0x397e, 0x19}, -{0x397f, 0x00}, -{0x3980, 0x11}, -{0x3981, 0x00}, -{0x3982, 0x3c}, -{0x3983, 0x00}, -{0x3984, 0x2f}, -{0x3985, 0x00}, -{0x3986, 0x23}, -{0x3987, 0x00}, -{0x3988, 0x19}, -{0x3989, 0x00}, -{0x398a, 0x56}, -{0x398b, 0x00}, -{0x398c, 0x44}, -{0x398d, 0x00}, -{0x398e, 0x35}, -{0x398f, 0x00}, -{0x3990, 0x27}, -{0x3991, 0x00}, -{0x3992, 0x84}, -{0x3993, 0x00}, -{0x3994, 0x68}, -{0x3995, 0x00}, -{0x3996, 0x53}, -{0x3997, 0x00}, -{0x3998, 0x40}, -{0x3999, 0x00}, -{0x399a, 0x00}, -{0x399b, 0x01}, -{0x399c, 0x00}, -{0x399d, 0x01}, -{0x399e, 0x00}, -{0x399f, 0x01}, -{0x39a0, 0x00}, -{0x39a1, 0x01}, -{0x39a2, 0x60}, -{0x39a3, 0x00}, -{0x39a4, 0x20}, -{0x39a5, 0x00}, -{0x39a6, 0x15}, -{0x39a7, 0x00}, -{0x39a8, 0x10}, -{0x39a9, 0x00}, -{0x39aa, 0xe6}, -{0x39ab, 0x00}, -{0x39ac, 0xd5}, -{0x39ad, 0x00}, -{0x39ae, 0xaa}, -{0x39af, 0x00}, -{0x39b0, 0x85}, -{0x39b1, 0x00}, -{0x39b2, 0xe6}, -{0x39b3, 0x00}, -{0x39b4, 0xd5}, -{0x39b5, 0x00}, -{0x39b6, 0xaa}, -{0x39b7, 0x00}, -{0x39b8, 0x85}, -{0x39b9, 0x00}, -{0x39ba, 0xe6}, -{0x39bb, 0x00}, -{0x39bc, 0xd5}, -{0x39bd, 0x00}, -{0x39be, 0xaa}, -{0x39bf, 0x00}, -{0x39c0, 0x85}, -{0x39c1, 0x00}, -{0x39c2, 0x40}, -{0x39c3, 0x00}, -{0x39c4, 0x40}, -{0x39c5, 0x00}, -{0x39c6, 0x40}, -{0x39c7, 0x00}, -{0x39c8, 0x40}, -{0x39c9, 0x00}, -{0x39ca, 0x80}, -{0x39cb, 0x00}, -{0x39cc, 0x80}, -{0x39cd, 0x00}, -{0x39ce, 0x80}, -{0x39cf, 0x00}, -{0x39d0, 0x80}, -{0x39d1, 0x00}, -{0x39d2, 0x4c}, -{0x39d3, 0x4c}, -{0x39d4, 0x4c}, -{0x39e0, 0x01}, -{0x39e1, 0x00}, -{0x39e4, 0x40}, -{0x39e5, 0x01}, -{0x39e6, 0x01}, -{0x39e8, 0x00}, -{0x39e9, 0x01}, -{0x39ea, 0x00}, -{0x39eb, 0x00}, -{0x39ec, 0x01}, -{0x39ed, 0x00}, -{0x39ee, 0x01}, -{0x39f0, 0x03}, -{0x39f1, 0x04}, -{0x39f2, 0x0e}, -{0x39f4, 0x19}, -{0x39f5, 0x00}, -{0x39f6, 0x12}, -{0x39f7, 0x00}, -{0x39f8, 0x0d}, -{0x39f9, 0x00}, -{0x39fa, 0x07}, -{0x39fb, 0x00}, -{0x39fc, 0x2b}, -{0x39fd, 0x00}, -{0x39fe, 0x1b}, -{0x39ff, 0x00}, -{0x3a00, 0x11}, -{0x3a01, 0x00}, -{0x3a02, 0x08}, -{0x3a03, 0x00}, -{0x3a04, 0x37}, -{0x3a05, 0x00}, -{0x3a06, 0x21}, -{0x3a07, 0x00}, -{0x3a08, 0x14}, -{0x3a09, 0x00}, -{0x3a0a, 0x09}, -{0x3a0b, 0x00}, -{0x3a0c, 0x4a}, -{0x3a0d, 0x00}, -{0x3a0e, 0x2c}, -{0x3a0f, 0x00}, -{0x3a10, 0x18}, -{0x3a11, 0x00}, -{0x3a12, 0x0b}, -{0x3a13, 0x00}, -{0x3a14, 0x66}, -{0x3a15, 0x00}, -{0x3a16, 0x3b}, -{0x3a17, 0x00}, -{0x3a18, 0x20}, -{0x3a19, 0x00}, -{0x3a1a, 0x0f}, -{0x3a1b, 0x00}, -{0x3a1c, 0x8e}, -{0x3a1d, 0x00}, -{0x3a1e, 0x51}, -{0x3a1f, 0x00}, -{0x3a20, 0x2b}, -{0x3a21, 0x00}, -{0x3a22, 0x14}, -{0x3a23, 0x00}, -{0x3a24, 0xc8}, -{0x3a25, 0x00}, -{0x3a26, 0x72}, -{0x3a27, 0x00}, -{0x3a28, 0x3c}, -{0x3a29, 0x00}, -{0x3a2a, 0x1b}, -{0x3a2b, 0x00}, -{0x3a2c, 0x19}, -{0x3a2d, 0x01}, -{0x3a2e, 0xa0}, -{0x3a2f, 0x00}, -{0x3a30, 0x54}, -{0x3a31, 0x00}, -{0x3a32, 0x25}, -{0x3a33, 0x00}, -{0x3a34, 0x8d}, -{0x3a35, 0x01}, -{0x3a36, 0xe1}, -{0x3a37, 0x00}, -{0x3a38, 0x76}, -{0x3a39, 0x00}, -{0x3a3a, 0x35}, -{0x3a3b, 0x00}, -{0x3a3c, 0x00}, -{0x3a3d, 0x01}, -{0x3a3e, 0x00}, -{0x3a3f, 0x01}, -{0x3a40, 0x00}, -{0x3a41, 0x01}, -{0x3a42, 0x00}, -{0x3a43, 0x01}, -{0x3a44, 0x70}, -{0x3a45, 0x00}, -{0x3a46, 0x25}, -{0x3a47, 0x00}, -{0x3a48, 0x18}, -{0x3a49, 0x00}, -{0x3a4a, 0x10}, -{0x3a4b, 0x00}, -{0x3a4c, 0xe6}, -{0x3a4d, 0x00}, -{0x3a4e, 0xd5}, -{0x3a4f, 0x00}, -{0x3a50, 0xaa}, -{0x3a51, 0x00}, -{0x3a52, 0x85}, -{0x3a53, 0x00}, -{0x3a54, 0xe6}, -{0x3a55, 0x00}, -{0x3a56, 0xd5}, -{0x3a57, 0x00}, -{0x3a58, 0xaa}, -{0x3a59, 0x00}, -{0x3a5a, 0x85}, -{0x3a5b, 0x00}, -{0x3a5c, 0xe6}, -{0x3a5d, 0x00}, -{0x3a5e, 0xd5}, -{0x3a5f, 0x00}, -{0x3a60, 0xaa}, -{0x3a61, 0x00}, -{0x3a62, 0x85}, -{0x3a63, 0x00}, -{0x3a64, 0x19}, -{0x3a65, 0x00}, -{0x3a66, 0x12}, -{0x3a67, 0x00}, -{0x3a68, 0x0d}, -{0x3a69, 0x00}, -{0x3a6a, 0x07}, -{0x3a6b, 0x00}, -{0x3a6c, 0x0c}, -{0x3a6d, 0x00}, -{0x3a6e, 0x07}, -{0x3a6f, 0x00}, -{0x3a70, 0x05}, -{0x3a71, 0x00}, -{0x3a72, 0x04}, -{0x3a73, 0x00}, -{0x3a74, 0x1b}, -{0x3a75, 0x00}, -{0x3a76, 0x15}, -{0x3a77, 0x00}, -{0x3a78, 0x0c}, -{0x3a79, 0x00}, -{0x3a7a, 0x08}, -{0x3a7b, 0x00}, -{0x3a7c, 0x80}, -{0x3a7d, 0x00}, -{0x3a7e, 0x80}, -{0x3a7f, 0x00}, -{0x3a80, 0x80}, -{0x3a81, 0x00}, -{0x3a82, 0x80}, -{0x3a83, 0x00}, -{0x3a84, 0x09}, -{0x3a85, 0x00}, -{0x3a86, 0x06}, -{0x3a87, 0x00}, -{0x3a88, 0x04}, -{0x3a89, 0x00}, -{0x3a8a, 0x03}, -{0x3a8b, 0x00}, -{0x3a8c, 0xfa}, -{0x3a8d, 0x00}, -{0x3a8e, 0xc8}, -{0x3a8f, 0x00}, -{0x3a90, 0x96}, -{0x3a91, 0x00}, -{0x3a92, 0x64}, -{0x3a93, 0x00}, -{0x3a94, 0xe1}, -{0x3a95, 0x00}, -{0x3a96, 0xc8}, -{0x3a97, 0x00}, -{0x3a98, 0x96}, -{0x3a99, 0x00}, -{0x3a9a, 0x64}, -{0x3a9b, 0x00}, -{0x3a9c, 0x08}, -{0x3a9d, 0x10}, -{0x3a9e, 0x4c}, -{0x3a9f, 0x4c}, -{0x3aa0, 0x4c}, -{0x3aa1, 0x04}, -{0x3aa2, 0x04}, -{0x3ac0, 0x01}, -{0x3ac4, 0x81}, -{0x3ac5, 0x00}, -{0x3ac6, 0x00}, -{0x3ac7, 0x00}, -{0x3ac8, 0x00}, -{0x3ac9, 0x00}, -{0x3aca, 0x00}, -{0x3acb, 0x00}, -{0x3acc, 0x02}, -{0x3acd, 0x00}, -{0x3ace, 0x81}, -{0x3acf, 0x00}, -{0x3ad0, 0x00}, -{0x3ad1, 0x00}, -{0x3ad2, 0xfd}, -{0x3ad3, 0x03}, -{0x3ad4, 0x02}, -{0x3ad5, 0x00}, -{0x3ad6, 0x00}, -{0x3ad7, 0x00}, -{0x3ad8, 0x81}, -{0x3ad9, 0x00}, -{0x3ada, 0xfd}, -{0x3adb, 0x03}, -{0x3adc, 0xff}, -{0x3add, 0x03}, -{0x3ade, 0x01}, -{0x3adf, 0x00}, -{0x3ae0, 0x01}, -{0x3ae1, 0x00}, -{0x3ae2, 0x7e}, -{0x3ae3, 0x00}, -{0x3af4, 0x00}, -{0x3af6, 0x40}, -{0x3af7, 0x1e}, -{0x3af8, 0x00}, -{0x3afa, 0x00}, -{0x3afb, 0x00}, -{0x3afc, 0x00}, -{0x3afd, 0x00}, -{0x3afe, 0x00}, -{0x3aff, 0x00}, -{0x3b00, 0x00}, -{0x3b01, 0x00}, -{0x3b02, 0x00}, -{0x3b03, 0x00}, -{0x3b04, 0x00}, -{0x3b05, 0x00}, -{0x3b06, 0x00}, -{0x3b07, 0x00}, -{0x3b08, 0x00}, -{0x3b09, 0x00}, -{0x3b0a, 0x00}, -{0x3b0b, 0x00}, -{0x3b0c, 0x00}, -{0x3b0d, 0x00}, -{0x3b0e, 0x00}, -{0x3b0f, 0x00}, -{0x3b10, 0x00}, -{0x3b11, 0x00}, -{0x3b12, 0x00}, -{0x3b13, 0x00}, -{0x3b14, 0x00}, -{0x3b15, 0x00}, -{0x3b16, 0x00}, -{0x3b17, 0x00}, -{0x3b18, 0x00}, -{0x3b19, 0x00}, -{0x3b1a, 0x00}, -{0x3b1b, 0x00}, -{0x3b1c, 0x00}, -{0x3b1d, 0x00}, -{0x3b1e, 0x00}, -{0x3b1f, 0x00}, -{0x3b20, 0x00}, -{0x3b21, 0x00}, -{0x3b22, 0x00}, -{0x3b23, 0x00}, -{0x3b24, 0x00}, -{0x3b25, 0x00}, -{0x3b26, 0x00}, -{0x3b27, 0x00}, -{0x3b28, 0x00}, -{0x3b29, 0x00}, -{0x3b2a, 0x00}, -{0x3b2c, 0x00}, -{0x3b2e, 0x00}, -{0x3b30, 0x00}, -{0x3b32, 0x0c}, -{0x4000, 0xaf}, -{0x4001, 0xa7}, -{0x4002, 0xa8}, -{0x4003, 0xa5}, -{0x4004, 0x98}, -{0x4005, 0x93}, -{0x4006, 0x94}, -{0x4007, 0x93}, -{0x4008, 0x8e}, -{0x4009, 0x8c}, -{0x400a, 0x8c}, -{0x400b, 0x8c}, -{0x400c, 0x89}, -{0x400d, 0x88}, -{0x400e, 0x89}, -{0x400f, 0x89}, -{0x4010, 0x87}, -{0x4011, 0x87}, -{0x4012, 0x87}, -{0x4013, 0x86}, -{0x4014, 0x88}, -{0x4015, 0x87}, -{0x4016, 0x87}, -{0x4017, 0x87}, -{0x4018, 0x8b}, -{0x4019, 0x89}, -{0x401a, 0x89}, -{0x401b, 0x8a}, -{0x401c, 0x92}, -{0x401d, 0x8f}, -{0x401e, 0x8f}, -{0x401f, 0x8f}, -{0x4020, 0xa2}, -{0x4021, 0x9c}, -{0x4022, 0x9b}, -{0x4023, 0x9c}, -{0x4024, 0xa1}, -{0x4025, 0x9a}, -{0x4026, 0x9b}, -{0x4027, 0x99}, -{0x4028, 0x94}, -{0x4029, 0x90}, -{0x402a, 0x90}, -{0x402b, 0x90}, -{0x402c, 0x8b}, -{0x402d, 0x89}, -{0x402e, 0x89}, -{0x402f, 0x89}, -{0x4030, 0x86}, -{0x4031, 0x85}, -{0x4032, 0x86}, -{0x4033, 0x85}, -{0x4034, 0x84}, -{0x4035, 0x84}, -{0x4036, 0x84}, -{0x4037, 0x84}, -{0x4038, 0x85}, -{0x4039, 0x85}, -{0x403a, 0x85}, -{0x403b, 0x85}, -{0x403c, 0x88}, -{0x403d, 0x87}, -{0x403e, 0x87}, -{0x403f, 0x87}, -{0x4040, 0x8e}, -{0x4041, 0x8c}, -{0x4042, 0x8c}, -{0x4043, 0x8c}, -{0x4044, 0x98}, -{0x4045, 0x93}, -{0x4046, 0x93}, -{0x4047, 0x94}, -{0x4048, 0x9d}, -{0x4049, 0x96}, -{0x404a, 0x97}, -{0x404b, 0x96}, -{0x404c, 0x91}, -{0x404d, 0x8c}, -{0x404e, 0x8d}, -{0x404f, 0x8c}, -{0x4050, 0x89}, -{0x4051, 0x86}, -{0x4052, 0x87}, -{0x4053, 0x86}, -{0x4054, 0x83}, -{0x4055, 0x82}, -{0x4056, 0x82}, -{0x4057, 0x82}, -{0x4058, 0x80}, -{0x4059, 0x80}, -{0x405a, 0x80}, -{0x405b, 0x80}, -{0x405c, 0x82}, -{0x405d, 0x82}, -{0x405e, 0x82}, -{0x405f, 0x82}, -{0x4060, 0x86}, -{0x4061, 0x85}, -{0x4062, 0x85}, -{0x4063, 0x85}, -{0x4064, 0x8b}, -{0x4065, 0x8a}, -{0x4066, 0x89}, -{0x4067, 0x89}, -{0x4068, 0x94}, -{0x4069, 0x91}, -{0x406a, 0x90}, -{0x406b, 0x91}, -{0x406c, 0x9e}, -{0x406d, 0x95}, -{0x406e, 0x96}, -{0x406f, 0x95}, -{0x4070, 0x91}, -{0x4071, 0x8c}, -{0x4072, 0x8c}, -{0x4073, 0x8c}, -{0x4074, 0x89}, -{0x4075, 0x86}, -{0x4076, 0x86}, -{0x4077, 0x86}, -{0x4078, 0x83}, -{0x4079, 0x82}, -{0x407a, 0x82}, -{0x407b, 0x82}, -{0x407c, 0x80}, -{0x407d, 0x80}, -{0x407e, 0x80}, -{0x407f, 0x80}, -{0x4080, 0x82}, -{0x4081, 0x81}, -{0x4082, 0x81}, -{0x4083, 0x81}, -{0x4084, 0x85}, -{0x4085, 0x85}, -{0x4086, 0x85}, -{0x4087, 0x84}, -{0x4088, 0x8b}, -{0x4089, 0x8a}, -{0x408a, 0x89}, -{0x408b, 0x89}, -{0x408c, 0x93}, -{0x408d, 0x90}, -{0x408e, 0x8f}, -{0x408f, 0x8f}, -{0x4090, 0xa3}, -{0x4091, 0x99}, -{0x4092, 0x9a}, -{0x4093, 0x99}, -{0x4094, 0x95}, -{0x4095, 0x8f}, -{0x4096, 0x8f}, -{0x4097, 0x8f}, -{0x4098, 0x8b}, -{0x4099, 0x87}, -{0x409a, 0x87}, -{0x409b, 0x87}, -{0x409c, 0x86}, -{0x409d, 0x84}, -{0x409e, 0x84}, -{0x409f, 0x84}, -{0x40a0, 0x84}, -{0x40a1, 0x83}, -{0x40a2, 0x83}, -{0x40a3, 0x82}, -{0x40a4, 0x84}, -{0x40a5, 0x84}, -{0x40a6, 0x83}, -{0x40a7, 0x83}, -{0x40a8, 0x88}, -{0x40a9, 0x87}, -{0x40aa, 0x86}, -{0x40ab, 0x86}, -{0x40ac, 0x8e}, -{0x40ad, 0x8c}, -{0x40ae, 0x8c}, -{0x40af, 0x8b}, -{0x40b0, 0x9a}, -{0x40b1, 0x96}, -{0x40b2, 0x96}, -{0x40b3, 0x95}, -{0x40b4, 0xba}, -{0x40b5, 0xac}, -{0x40b6, 0xad}, -{0x40b7, 0xac}, -{0x40b8, 0x99}, -{0x40b9, 0x90}, -{0x40ba, 0x91}, -{0x40bb, 0x90}, -{0x40bc, 0x90}, -{0x40bd, 0x8a}, -{0x40be, 0x8a}, -{0x40bf, 0x8a}, -{0x40c0, 0x89}, -{0x40c1, 0x86}, -{0x40c2, 0x86}, -{0x40c3, 0x87}, -{0x40c4, 0x87}, -{0x40c5, 0x85}, -{0x40c6, 0x85}, -{0x40c7, 0x85}, -{0x40c8, 0x87}, -{0x40c9, 0x86}, -{0x40ca, 0x85}, -{0x40cb, 0x85}, -{0x40cc, 0x8a}, -{0x40cd, 0x88}, -{0x40ce, 0x88}, -{0x40cf, 0x87}, -{0x40d0, 0x92}, -{0x40d1, 0x8f}, -{0x40d2, 0x8e}, -{0x40d3, 0x8e}, -{0x40d4, 0xa2}, -{0x40d5, 0x9d}, -{0x40d6, 0x9d}, -{0x40d7, 0x9b}, -{0x4100, 0x80}, -{0x4101, 0x80}, -{0x4102, 0x80}, -{0x4103, 0x80}, -{0x4104, 0x80}, -{0x4105, 0x80}, -{0x4106, 0x80}, -{0x4107, 0x80}, -{0x4108, 0x80}, -{0x4109, 0x80}, -{0x410a, 0x80}, -{0x410b, 0x80}, -{0x410c, 0x80}, -{0x410d, 0x80}, -{0x410e, 0x80}, -{0x410f, 0x80}, -{0x4110, 0x80}, -{0x4111, 0x80}, -{0x4112, 0x80}, -{0x4113, 0x80}, -{0x4114, 0x80}, -{0x4115, 0x80}, -{0x4116, 0x80}, -{0x4117, 0x80}, -{0x4118, 0x80}, -{0x4119, 0x80}, -{0x411a, 0x80}, -{0x411b, 0x80}, -{0x411c, 0x80}, -{0x411d, 0x80}, -{0x411e, 0x80}, -{0x411f, 0x80}, -{0x4120, 0x80}, -{0x4121, 0x80}, -{0x4122, 0x80}, -{0x4123, 0x80}, -{0x4124, 0x80}, -{0x4125, 0x80}, -{0x4126, 0x80}, -{0x4127, 0x80}, -{0x4128, 0x80}, -{0x4129, 0x80}, -{0x412a, 0x80}, -{0x412b, 0x80}, -{0x412c, 0x80}, -{0x412d, 0x80}, -{0x412e, 0x80}, -{0x412f, 0x80}, -{0x4130, 0x80}, -{0x4131, 0x80}, -{0x4132, 0x80}, -{0x4133, 0x80}, -{0x4134, 0x80}, -{0x4135, 0x80}, -{0x4136, 0x80}, -{0x4137, 0x80}, -{0x4138, 0x80}, -{0x4139, 0x80}, -{0x413a, 0x80}, -{0x413b, 0x80}, -{0x413c, 0x80}, -{0x413d, 0x80}, -{0x413e, 0x80}, -{0x413f, 0x80}, -{0x4140, 0x80}, -{0x4141, 0x80}, -{0x4142, 0x80}, -{0x4143, 0x80}, -{0x4144, 0x80}, -{0x4145, 0x80}, -{0x4146, 0x80}, -{0x4147, 0x80}, -{0x4148, 0x80}, -{0x4149, 0x80}, -{0x414a, 0x80}, -{0x414b, 0x80}, -{0x414c, 0x80}, -{0x414d, 0x80}, -{0x414e, 0x80}, -{0x414f, 0x80}, -{0x4150, 0x80}, -{0x4151, 0x80}, -{0x4152, 0x80}, -{0x4153, 0x80}, -{0x4154, 0x80}, -{0x4155, 0x80}, -{0x4156, 0x80}, -{0x4157, 0x80}, -{0x4158, 0x80}, -{0x4159, 0x80}, -{0x415a, 0x80}, -{0x415b, 0x80}, -{0x415c, 0x80}, -{0x415d, 0x80}, -{0x415e, 0x80}, -{0x415f, 0x80}, -{0x4160, 0x80}, -{0x4161, 0x80}, -{0x4162, 0x80}, -{0x4163, 0x80}, -{0x4164, 0x80}, -{0x4165, 0x80}, -{0x4166, 0x80}, -{0x4167, 0x80}, -{0x4168, 0x80}, -{0x4169, 0x80}, -{0x416a, 0x80}, -{0x416b, 0x80}, -{0x416c, 0x80}, -{0x416d, 0x80}, -{0x416e, 0x80}, -{0x416f, 0x80}, -{0x4170, 0x80}, -{0x4171, 0x80}, -{0x4172, 0x80}, -{0x4173, 0x80}, -{0x4174, 0x80}, -{0x4175, 0x80}, -{0x4176, 0x80}, -{0x4177, 0x80}, -{0x4178, 0x80}, -{0x4179, 0x80}, -{0x417a, 0x80}, -{0x417b, 0x80}, -{0x417c, 0x80}, -{0x417d, 0x80}, -{0x417e, 0x80}, -{0x417f, 0x80}, -{0x4180, 0x80}, -{0x4181, 0x80}, -{0x4182, 0x80}, -{0x4183, 0x80}, -{0x4184, 0x80}, -{0x4185, 0x80}, -{0x4186, 0x80}, -{0x4187, 0x80}, -{0x4188, 0x80}, -{0x4189, 0x80}, -{0x418a, 0x80}, -{0x418b, 0x80}, -{0x418c, 0x80}, -{0x418d, 0x80}, -{0x418e, 0x80}, -{0x418f, 0x80}, -{0x4190, 0x80}, -{0x4191, 0x80}, -{0x4192, 0x80}, -{0x4193, 0x80}, -{0x4194, 0x80}, -{0x4195, 0x80}, -{0x4196, 0x80}, -{0x4197, 0x80}, -{0x4198, 0x80}, -{0x4199, 0x80}, -{0x419a, 0x80}, -{0x419b, 0x80}, -{0x419c, 0x80}, -{0x419d, 0x80}, -{0x419e, 0x80}, -{0x419f, 0x80}, -{0x41a0, 0x80}, -{0x41a1, 0x80}, -{0x41a2, 0x80}, -{0x41a3, 0x80}, -{0x41a4, 0x80}, -{0x41a5, 0x80}, -{0x41a6, 0x80}, -{0x41a7, 0x80}, -{0x41a8, 0x80}, -{0x41a9, 0x80}, -{0x41aa, 0x80}, -{0x41ab, 0x80}, -{0x41ac, 0x80}, -{0x41ad, 0x80}, -{0x41ae, 0x80}, -{0x41af, 0x80}, -{0x41b0, 0x80}, -{0x41b1, 0x80}, -{0x41b2, 0x80}, -{0x41b3, 0x80}, -{0x41b4, 0x80}, -{0x41b5, 0x80}, -{0x41b6, 0x80}, -{0x41b7, 0x80}, -{0x41b8, 0x80}, -{0x41b9, 0x80}, -{0x41ba, 0x80}, -{0x41bb, 0x80}, -{0x41bc, 0x80}, -{0x41bd, 0x80}, -{0x41be, 0x80}, -{0x41bf, 0x80}, -{0x41c0, 0x80}, -{0x41c1, 0x80}, -{0x41c2, 0x80}, -{0x41c3, 0x80}, -{0x41c4, 0x80}, -{0x41c5, 0x80}, -{0x41c6, 0x80}, -{0x41c7, 0x80}, -{0x41c8, 0x80}, -{0x41c9, 0x80}, -{0x41ca, 0x80}, -{0x41cb, 0x80}, -{0x41cc, 0x80}, -{0x41cd, 0x80}, -{0x41ce, 0x80}, -{0x41cf, 0x80}, -{0x41d0, 0x80}, -{0x41d1, 0x80}, -{0x41d2, 0x80}, -{0x41d3, 0x80}, -{0x41d4, 0x80}, -{0x41d5, 0x80}, -{0x41d6, 0x80}, -{0x41d7, 0x80}, -{0x4200, 0x80}, -{0x4201, 0x80}, -{0x4202, 0x80}, -{0x4203, 0x80}, -{0x4204, 0x80}, -{0x4205, 0x80}, -{0x4206, 0x80}, -{0x4207, 0x80}, -{0x4208, 0x80}, -{0x4209, 0x80}, -{0x420a, 0x80}, -{0x420b, 0x80}, -{0x420c, 0x80}, -{0x420d, 0x80}, -{0x420e, 0x80}, -{0x420f, 0x80}, -{0x4210, 0x80}, -{0x4211, 0x80}, -{0x4212, 0x80}, -{0x4213, 0x80}, -{0x4214, 0x80}, -{0x4215, 0x80}, -{0x4216, 0x80}, -{0x4217, 0x80}, -{0x4218, 0x80}, -{0x4219, 0x80}, -{0x421a, 0x80}, -{0x421b, 0x80}, -{0x421c, 0x80}, -{0x421d, 0x80}, -{0x421e, 0x80}, -{0x421f, 0x80}, -{0x4220, 0x80}, -{0x4221, 0x80}, -{0x4222, 0x80}, -{0x4223, 0x80}, -{0x4224, 0x80}, -{0x4225, 0x80}, -{0x4226, 0x80}, -{0x4227, 0x80}, -{0x4228, 0x80}, -{0x4229, 0x80}, -{0x422a, 0x80}, -{0x422b, 0x80}, -{0x422c, 0x80}, -{0x422d, 0x80}, -{0x422e, 0x80}, -{0x422f, 0x80}, -{0x4230, 0x80}, -{0x4231, 0x80}, -{0x4232, 0x80}, -{0x4233, 0x80}, -{0x4234, 0x80}, -{0x4235, 0x80}, -{0x4236, 0x80}, -{0x4237, 0x80}, -{0x4238, 0x80}, -{0x4239, 0x80}, -{0x423a, 0x80}, -{0x423b, 0x80}, -{0x423c, 0x80}, -{0x423d, 0x80}, -{0x423e, 0x80}, -{0x423f, 0x80}, -{0x4240, 0x80}, -{0x4241, 0x80}, -{0x4242, 0x80}, -{0x4243, 0x80}, -{0x4244, 0x80}, -{0x4245, 0x80}, -{0x4246, 0x80}, -{0x4247, 0x80}, -{0x4248, 0x80}, -{0x4249, 0x80}, -{0x424a, 0x80}, -{0x424b, 0x80}, -{0x424c, 0x80}, -{0x424d, 0x80}, -{0x424e, 0x80}, -{0x424f, 0x80}, -{0x4250, 0x80}, -{0x4251, 0x80}, -{0x4252, 0x80}, -{0x4253, 0x80}, -{0x4254, 0x80}, -{0x4255, 0x80}, -{0x4256, 0x80}, -{0x4257, 0x80}, -{0x4258, 0x80}, -{0x4259, 0x80}, -{0x425a, 0x80}, -{0x425b, 0x80}, -{0x425c, 0x80}, -{0x425d, 0x80}, -{0x425e, 0x80}, -{0x425f, 0x80}, -{0x4260, 0x80}, -{0x4261, 0x80}, -{0x4262, 0x80}, -{0x4263, 0x80}, -{0x4264, 0x80}, -{0x4265, 0x80}, -{0x4266, 0x80}, -{0x4267, 0x80}, -{0x4268, 0x80}, -{0x4269, 0x80}, -{0x426a, 0x80}, -{0x426b, 0x80}, -{0x426c, 0x80}, -{0x426d, 0x80}, -{0x426e, 0x80}, -{0x426f, 0x80}, -{0x4270, 0x80}, -{0x4271, 0x80}, -{0x4272, 0x80}, -{0x4273, 0x80}, -{0x4274, 0x80}, -{0x4275, 0x80}, -{0x4276, 0x80}, -{0x4277, 0x80}, -{0x4278, 0x80}, -{0x4279, 0x80}, -{0x427a, 0x80}, -{0x427b, 0x80}, -{0x427c, 0x80}, -{0x427d, 0x80}, -{0x427e, 0x80}, -{0x427f, 0x80}, -{0x4280, 0x80}, -{0x4281, 0x80}, -{0x4282, 0x80}, -{0x4283, 0x80}, -{0x4284, 0x80}, -{0x4285, 0x80}, -{0x4286, 0x80}, -{0x4287, 0x80}, -{0x4288, 0x80}, -{0x4289, 0x80}, -{0x428a, 0x80}, -{0x428b, 0x80}, -{0x428c, 0x80}, -{0x428d, 0x80}, -{0x428e, 0x80}, -{0x428f, 0x80}, -{0x4290, 0x80}, -{0x4291, 0x80}, -{0x4292, 0x80}, -{0x4293, 0x80}, -{0x4294, 0x80}, -{0x4295, 0x80}, -{0x4296, 0x80}, -{0x4297, 0x80}, -{0x4298, 0x80}, -{0x4299, 0x80}, -{0x429a, 0x80}, -{0x429b, 0x80}, -{0x429c, 0x80}, -{0x429d, 0x80}, -{0x429e, 0x80}, -{0x429f, 0x80}, -{0x42a0, 0x80}, -{0x42a1, 0x80}, -{0x42a2, 0x80}, -{0x42a3, 0x80}, -{0x42a4, 0x80}, -{0x42a5, 0x80}, -{0x42a6, 0x80}, -{0x42a7, 0x80}, -{0x42a8, 0x80}, -{0x42a9, 0x80}, -{0x42aa, 0x80}, -{0x42ab, 0x80}, -{0x42ac, 0x80}, -{0x42ad, 0x80}, -{0x42ae, 0x80}, -{0x42af, 0x80}, -{0x42b0, 0x80}, -{0x42b1, 0x80}, -{0x42b2, 0x80}, -{0x42b3, 0x80}, -{0x42b4, 0x80}, -{0x42b5, 0x80}, -{0x42b6, 0x80}, -{0x42b7, 0x80}, -{0x42b8, 0x80}, -{0x42b9, 0x80}, -{0x42ba, 0x80}, -{0x42bb, 0x80}, -{0x42bc, 0x80}, -{0x42bd, 0x80}, -{0x42be, 0x80}, -{0x42bf, 0x80}, -{0x42c0, 0x80}, -{0x42c1, 0x80}, -{0x42c2, 0x80}, -{0x42c3, 0x80}, -{0x42c4, 0x80}, -{0x42c5, 0x80}, -{0x42c6, 0x80}, -{0x42c7, 0x80}, -{0x42c8, 0x80}, -{0x42c9, 0x80}, -{0x42ca, 0x80}, -{0x42cb, 0x80}, -{0x42cc, 0x80}, -{0x42cd, 0x80}, -{0x42ce, 0x80}, -{0x42cf, 0x80}, -{0x42d0, 0x80}, -{0x42d1, 0x80}, -{0x42d2, 0x80}, -{0x42d3, 0x80}, -{0x42d4, 0x80}, -{0x42d5, 0x80}, -{0x42d6, 0x80}, -{0x42d7, 0x80}, -{0x42d8, 0x00}, -{0x42d9, 0x00}, -{0x4300, 0xa2}, -{0x4301, 0xaa}, -{0x4302, 0xa7}, -{0x4303, 0xad}, -{0x4304, 0x8e}, -{0x4305, 0x92}, -{0x4306, 0x90}, -{0x4307, 0x93}, -{0x4308, 0x86}, -{0x4309, 0x89}, -{0x430a, 0x87}, -{0x430b, 0x88}, -{0x430c, 0x82}, -{0x430d, 0x84}, -{0x430e, 0x83}, -{0x430f, 0x84}, -{0x4310, 0x80}, -{0x4311, 0x82}, -{0x4312, 0x82}, -{0x4313, 0x82}, -{0x4314, 0x83}, -{0x4315, 0x85}, -{0x4316, 0x84}, -{0x4317, 0x85}, -{0x4318, 0x8d}, -{0x4319, 0x8d}, -{0x431a, 0x8d}, -{0x431b, 0x8d}, -{0x431c, 0x99}, -{0x431d, 0x9a}, -{0x431e, 0x9a}, -{0x431f, 0x9a}, -{0x4320, 0xae}, -{0x4321, 0xb4}, -{0x4322, 0xb4}, -{0x4323, 0xb5}, -{0x4324, 0x9a}, -{0x4325, 0x9d}, -{0x4326, 0x9b}, -{0x4327, 0x9e}, -{0x4328, 0x8c}, -{0x4329, 0x8f}, -{0x432a, 0x8d}, -{0x432b, 0x8f}, -{0x432c, 0x83}, -{0x432d, 0x85}, -{0x432e, 0x85}, -{0x432f, 0x85}, -{0x4330, 0x80}, -{0x4331, 0x81}, -{0x4332, 0x81}, -{0x4333, 0x81}, -{0x4334, 0x80}, -{0x4335, 0x80}, -{0x4336, 0x80}, -{0x4337, 0x81}, -{0x4338, 0x83}, -{0x4339, 0x83}, -{0x433a, 0x83}, -{0x433b, 0x83}, -{0x433c, 0x88}, -{0x433d, 0x88}, -{0x433e, 0x88}, -{0x433f, 0x88}, -{0x4340, 0x93}, -{0x4341, 0x93}, -{0x4342, 0x93}, -{0x4343, 0x93}, -{0x4344, 0xa2}, -{0x4345, 0xa4}, -{0x4346, 0xa4}, -{0x4347, 0xa4}, -{0x4348, 0x97}, -{0x4349, 0x99}, -{0x434a, 0x97}, -{0x434b, 0x97}, -{0x434c, 0x89}, -{0x434d, 0x8c}, -{0x434e, 0x8b}, -{0x434f, 0x8a}, -{0x4350, 0x81}, -{0x4351, 0x83}, -{0x4352, 0x83}, -{0x4353, 0x83}, -{0x4354, 0x7f}, -{0x4355, 0x80}, -{0x4356, 0x80}, -{0x4357, 0x80}, -{0x4358, 0x7f}, -{0x4359, 0x7f}, -{0x435a, 0x7f}, -{0x435b, 0x7f}, -{0x435c, 0x82}, -{0x435d, 0x81}, -{0x435e, 0x81}, -{0x435f, 0x82}, -{0x4360, 0x86}, -{0x4361, 0x86}, -{0x4362, 0x86}, -{0x4363, 0x87}, -{0x4364, 0x8f}, -{0x4365, 0x8f}, -{0x4366, 0x8f}, -{0x4367, 0x90}, -{0x4368, 0x9e}, -{0x4369, 0x9e}, -{0x436a, 0x9e}, -{0x436b, 0x9f}, -{0x436c, 0x99}, -{0x436d, 0x9b}, -{0x436e, 0x9a}, -{0x436f, 0x98}, -{0x4370, 0x8b}, -{0x4371, 0x8d}, -{0x4372, 0x8d}, -{0x4373, 0x8b}, -{0x4374, 0x83}, -{0x4375, 0x84}, -{0x4376, 0x84}, -{0x4377, 0x83}, -{0x4378, 0x80}, -{0x4379, 0x81}, -{0x437a, 0x81}, -{0x437b, 0x80}, -{0x437c, 0x81}, -{0x437d, 0x80}, -{0x437e, 0x80}, -{0x437f, 0x80}, -{0x4380, 0x83}, -{0x4381, 0x83}, -{0x4382, 0x83}, -{0x4383, 0x83}, -{0x4384, 0x88}, -{0x4385, 0x87}, -{0x4386, 0x87}, -{0x4387, 0x88}, -{0x4388, 0x91}, -{0x4389, 0x90}, -{0x438a, 0x90}, -{0x438b, 0x91}, -{0x438c, 0x9e}, -{0x438d, 0x9e}, -{0x438e, 0x9e}, -{0x438f, 0xa0}, -{0x4390, 0xa0}, -{0x4391, 0xa2}, -{0x4392, 0xa2}, -{0x4393, 0xa0}, -{0x4394, 0x92}, -{0x4395, 0x94}, -{0x4396, 0x94}, -{0x4397, 0x91}, -{0x4398, 0x89}, -{0x4399, 0x8a}, -{0x439a, 0x89}, -{0x439b, 0x88}, -{0x439c, 0x85}, -{0x439d, 0x85}, -{0x439e, 0x85}, -{0x439f, 0x84}, -{0x43a0, 0x85}, -{0x43a1, 0x84}, -{0x43a2, 0x84}, -{0x43a3, 0x84}, -{0x43a4, 0x88}, -{0x43a5, 0x86}, -{0x43a6, 0x86}, -{0x43a7, 0x87}, -{0x43a8, 0x8e}, -{0x43a9, 0x8b}, -{0x43aa, 0x8b}, -{0x43ab, 0x8d}, -{0x43ac, 0x97}, -{0x43ad, 0x96}, -{0x43ae, 0x96}, -{0x43af, 0x98}, -{0x43b0, 0xa5}, -{0x43b1, 0xa5}, -{0x43b2, 0xa5}, -{0x43b3, 0xa9}, -{0x43b4, 0xb7}, -{0x43b5, 0xbb}, -{0x43b6, 0xbb}, -{0x43b7, 0xb8}, -{0x43b8, 0x9c}, -{0x43b9, 0x9c}, -{0x43ba, 0x9c}, -{0x43bb, 0x9a}, -{0x43bc, 0x92}, -{0x43bd, 0x92}, -{0x43be, 0x92}, -{0x43bf, 0x8f}, -{0x43c0, 0x8b}, -{0x43c1, 0x8b}, -{0x43c2, 0x8b}, -{0x43c3, 0x89}, -{0x43c4, 0x8a}, -{0x43c5, 0x89}, -{0x43c6, 0x89}, -{0x43c7, 0x88}, -{0x43c8, 0x8d}, -{0x43c9, 0x8b}, -{0x43ca, 0x8b}, -{0x43cb, 0x8c}, -{0x43cc, 0x94}, -{0x43cd, 0x91}, -{0x43ce, 0x92}, -{0x43cf, 0x93}, -{0x43d0, 0x9e}, -{0x43d1, 0x9d}, -{0x43d2, 0x9d}, -{0x43d3, 0xa1}, -{0x43d4, 0xb2}, -{0x43d5, 0xb4}, -{0x43d6, 0xb5}, -{0x43d7, 0xbd}, -{0x4400, 0x80}, -{0x4401, 0x80}, -{0x4402, 0x80}, -{0x4403, 0x80}, -{0x4404, 0x80}, -{0x4405, 0x80}, -{0x4406, 0x80}, -{0x4407, 0x80}, -{0x4408, 0x80}, -{0x4409, 0x80}, -{0x440a, 0x80}, -{0x440b, 0x80}, -{0x440c, 0x80}, -{0x440d, 0x80}, -{0x440e, 0x80}, -{0x440f, 0x80}, -{0x4410, 0x80}, -{0x4411, 0x80}, -{0x4412, 0x80}, -{0x4413, 0x80}, -{0x4414, 0x80}, -{0x4415, 0x80}, -{0x4416, 0x80}, -{0x4417, 0x80}, -{0x4418, 0x80}, -{0x4419, 0x80}, -{0x441a, 0x80}, -{0x441b, 0x80}, -{0x441c, 0x80}, -{0x441d, 0x80}, -{0x441e, 0x80}, -{0x441f, 0x80}, -{0x4420, 0x80}, -{0x4421, 0x80}, -{0x4422, 0x80}, -{0x4423, 0x80}, -{0x4424, 0x80}, -{0x4425, 0x80}, -{0x4426, 0x80}, -{0x4427, 0x80}, -{0x4428, 0x80}, -{0x4429, 0x80}, -{0x442a, 0x80}, -{0x442b, 0x80}, -{0x442c, 0x80}, -{0x442d, 0x80}, -{0x442e, 0x80}, -{0x442f, 0x80}, -{0x4430, 0x80}, -{0x4431, 0x80}, -{0x4432, 0x80}, -{0x4433, 0x80}, -{0x4434, 0x80}, -{0x4435, 0x80}, -{0x4436, 0x80}, -{0x4437, 0x80}, -{0x4438, 0x80}, -{0x4439, 0x80}, -{0x443a, 0x80}, -{0x443b, 0x80}, -{0x443c, 0x80}, -{0x443d, 0x80}, -{0x443e, 0x80}, -{0x443f, 0x80}, -{0x4440, 0x80}, -{0x4441, 0x80}, -{0x4442, 0x80}, -{0x4443, 0x80}, -{0x4444, 0x80}, -{0x4445, 0x80}, -{0x4446, 0x80}, -{0x4447, 0x80}, -{0x4448, 0x80}, -{0x4449, 0x80}, -{0x444a, 0x80}, -{0x444b, 0x80}, -{0x444c, 0x80}, -{0x444d, 0x80}, -{0x444e, 0x80}, -{0x444f, 0x80}, -{0x4450, 0x80}, -{0x4451, 0x80}, -{0x4452, 0x80}, -{0x4453, 0x80}, -{0x4454, 0x80}, -{0x4455, 0x80}, -{0x4456, 0x80}, -{0x4457, 0x80}, -{0x4458, 0x80}, -{0x4459, 0x80}, -{0x445a, 0x80}, -{0x445b, 0x80}, -{0x445c, 0x80}, -{0x445d, 0x80}, -{0x445e, 0x80}, -{0x445f, 0x80}, -{0x4460, 0x80}, -{0x4461, 0x80}, -{0x4462, 0x80}, -{0x4463, 0x80}, -{0x4464, 0x80}, -{0x4465, 0x80}, -{0x4466, 0x80}, -{0x4467, 0x80}, -{0x4468, 0x80}, -{0x4469, 0x80}, -{0x446a, 0x80}, -{0x446b, 0x80}, -{0x446c, 0x80}, -{0x446d, 0x80}, -{0x446e, 0x80}, -{0x446f, 0x80}, -{0x4470, 0x80}, -{0x4471, 0x80}, -{0x4472, 0x80}, -{0x4473, 0x80}, -{0x4474, 0x80}, -{0x4475, 0x80}, -{0x4476, 0x80}, -{0x4477, 0x80}, -{0x4478, 0x80}, -{0x4479, 0x80}, -{0x447a, 0x80}, -{0x447b, 0x80}, -{0x447c, 0x80}, -{0x447d, 0x80}, -{0x447e, 0x80}, -{0x447f, 0x80}, -{0x4480, 0x80}, -{0x4481, 0x80}, -{0x4482, 0x80}, -{0x4483, 0x80}, -{0x4484, 0x80}, -{0x4485, 0x80}, -{0x4486, 0x80}, -{0x4487, 0x80}, -{0x4488, 0x80}, -{0x4489, 0x80}, -{0x448a, 0x80}, -{0x448b, 0x80}, -{0x448c, 0x80}, -{0x448d, 0x80}, -{0x448e, 0x80}, -{0x448f, 0x80}, -{0x4490, 0x80}, -{0x4491, 0x80}, -{0x4492, 0x80}, -{0x4493, 0x80}, -{0x4494, 0x80}, -{0x4495, 0x80}, -{0x4496, 0x80}, -{0x4497, 0x80}, -{0x4498, 0x80}, -{0x4499, 0x80}, -{0x449a, 0x80}, -{0x449b, 0x80}, -{0x449c, 0x80}, -{0x449d, 0x80}, -{0x449e, 0x80}, -{0x449f, 0x80}, -{0x44a0, 0x80}, -{0x44a1, 0x80}, -{0x44a2, 0x80}, -{0x44a3, 0x80}, -{0x44a4, 0x80}, -{0x44a5, 0x80}, -{0x44a6, 0x80}, -{0x44a7, 0x80}, -{0x44a8, 0x80}, -{0x44a9, 0x80}, -{0x44aa, 0x80}, -{0x44ab, 0x80}, -{0x44ac, 0x80}, -{0x44ad, 0x80}, -{0x44ae, 0x80}, -{0x44af, 0x80}, -{0x44b0, 0x80}, -{0x44b1, 0x80}, -{0x44b2, 0x80}, -{0x44b3, 0x80}, -{0x44b4, 0x80}, -{0x44b5, 0x80}, -{0x44b6, 0x80}, -{0x44b7, 0x80}, -{0x44b8, 0x80}, -{0x44b9, 0x80}, -{0x44ba, 0x80}, -{0x44bb, 0x80}, -{0x44bc, 0x80}, -{0x44bd, 0x80}, -{0x44be, 0x80}, -{0x44bf, 0x80}, -{0x44c0, 0x80}, -{0x44c1, 0x80}, -{0x44c2, 0x80}, -{0x44c3, 0x80}, -{0x44c4, 0x80}, -{0x44c5, 0x80}, -{0x44c6, 0x80}, -{0x44c7, 0x80}, -{0x44c8, 0x80}, -{0x44c9, 0x80}, -{0x44ca, 0x80}, -{0x44cb, 0x80}, -{0x44cc, 0x80}, -{0x44cd, 0x80}, -{0x44ce, 0x80}, -{0x44cf, 0x80}, -{0x44d0, 0x80}, -{0x44d1, 0x80}, -{0x44d2, 0x80}, -{0x44d3, 0x80}, -{0x44d4, 0x80}, -{0x44d5, 0x80}, -{0x44d6, 0x80}, -{0x44d7, 0x80}, -{0x4500, 0x80}, -{0x4501, 0x80}, -{0x4502, 0x80}, -{0x4503, 0x80}, -{0x4504, 0x80}, -{0x4505, 0x80}, -{0x4506, 0x80}, -{0x4507, 0x80}, -{0x4508, 0x80}, -{0x4509, 0x80}, -{0x450a, 0x80}, -{0x450b, 0x80}, -{0x450c, 0x80}, -{0x450d, 0x80}, -{0x450e, 0x80}, -{0x450f, 0x80}, -{0x4510, 0x80}, -{0x4511, 0x80}, -{0x4512, 0x80}, -{0x4513, 0x80}, -{0x4514, 0x80}, -{0x4515, 0x80}, -{0x4516, 0x80}, -{0x4517, 0x80}, -{0x4518, 0x80}, -{0x4519, 0x80}, -{0x451a, 0x80}, -{0x451b, 0x80}, -{0x451c, 0x80}, -{0x451d, 0x80}, -{0x451e, 0x80}, -{0x451f, 0x80}, -{0x4520, 0x80}, -{0x4521, 0x80}, -{0x4522, 0x80}, -{0x4523, 0x80}, -{0x4524, 0x80}, -{0x4525, 0x80}, -{0x4526, 0x80}, -{0x4527, 0x80}, -{0x4528, 0x80}, -{0x4529, 0x80}, -{0x452a, 0x80}, -{0x452b, 0x80}, -{0x452c, 0x80}, -{0x452d, 0x80}, -{0x452e, 0x80}, -{0x452f, 0x80}, -{0x4530, 0x80}, -{0x4531, 0x80}, -{0x4532, 0x80}, -{0x4533, 0x80}, -{0x4534, 0x80}, -{0x4535, 0x80}, -{0x4536, 0x80}, -{0x4537, 0x80}, -{0x4538, 0x80}, -{0x4539, 0x80}, -{0x453a, 0x80}, -{0x453b, 0x80}, -{0x453c, 0x80}, -{0x453d, 0x80}, -{0x453e, 0x80}, -{0x453f, 0x80}, -{0x4540, 0x80}, -{0x4541, 0x80}, -{0x4542, 0x80}, -{0x4543, 0x80}, -{0x4544, 0x80}, -{0x4545, 0x80}, -{0x4546, 0x80}, -{0x4547, 0x80}, -{0x4548, 0x80}, -{0x4549, 0x80}, -{0x454a, 0x80}, -{0x454b, 0x80}, -{0x454c, 0x80}, -{0x454d, 0x80}, -{0x454e, 0x80}, -{0x454f, 0x80}, -{0x4550, 0x80}, -{0x4551, 0x80}, -{0x4552, 0x80}, -{0x4553, 0x80}, -{0x4554, 0x80}, -{0x4555, 0x80}, -{0x4556, 0x80}, -{0x4557, 0x80}, -{0x4558, 0x80}, -{0x4559, 0x80}, -{0x455a, 0x80}, -{0x455b, 0x80}, -{0x455c, 0x80}, -{0x455d, 0x80}, -{0x455e, 0x80}, -{0x455f, 0x80}, -{0x4560, 0x80}, -{0x4561, 0x80}, -{0x4562, 0x80}, -{0x4563, 0x80}, -{0x4564, 0x80}, -{0x4565, 0x80}, -{0x4566, 0x80}, -{0x4567, 0x80}, -{0x4568, 0x80}, -{0x4569, 0x80}, -{0x456a, 0x80}, -{0x456b, 0x80}, -{0x456c, 0x80}, -{0x456d, 0x80}, -{0x456e, 0x80}, -{0x456f, 0x80}, -{0x4570, 0x80}, -{0x4571, 0x80}, -{0x4572, 0x80}, -{0x4573, 0x80}, -{0x4574, 0x80}, -{0x4575, 0x80}, -{0x4576, 0x80}, -{0x4577, 0x80}, -{0x4578, 0x80}, -{0x4579, 0x80}, -{0x457a, 0x80}, -{0x457b, 0x80}, -{0x457c, 0x80}, -{0x457d, 0x80}, -{0x457e, 0x80}, -{0x457f, 0x80}, -{0x4580, 0x80}, -{0x4581, 0x80}, -{0x4582, 0x80}, -{0x4583, 0x80}, -{0x4584, 0x80}, -{0x4585, 0x80}, -{0x4586, 0x80}, -{0x4587, 0x80}, -{0x4588, 0x80}, -{0x4589, 0x80}, -{0x458a, 0x80}, -{0x458b, 0x80}, -{0x458c, 0x80}, -{0x458d, 0x80}, -{0x458e, 0x80}, -{0x458f, 0x80}, -{0x4590, 0x80}, -{0x4591, 0x80}, -{0x4592, 0x80}, -{0x4593, 0x80}, -{0x4594, 0x80}, -{0x4595, 0x80}, -{0x4596, 0x80}, -{0x4597, 0x80}, -{0x4598, 0x80}, -{0x4599, 0x80}, -{0x459a, 0x80}, -{0x459b, 0x80}, -{0x459c, 0x80}, -{0x459d, 0x80}, -{0x459e, 0x80}, -{0x459f, 0x80}, -{0x45a0, 0x80}, -{0x45a1, 0x80}, -{0x45a2, 0x80}, -{0x45a3, 0x80}, -{0x45a4, 0x80}, -{0x45a5, 0x80}, -{0x45a6, 0x80}, -{0x45a7, 0x80}, -{0x45a8, 0x80}, -{0x45a9, 0x80}, -{0x45aa, 0x80}, -{0x45ab, 0x80}, -{0x45ac, 0x80}, -{0x45ad, 0x80}, -{0x45ae, 0x80}, -{0x45af, 0x80}, -{0x45b0, 0x80}, -{0x45b1, 0x80}, -{0x45b2, 0x80}, -{0x45b3, 0x80}, -{0x45b4, 0x80}, -{0x45b5, 0x80}, -{0x45b6, 0x80}, -{0x45b7, 0x80}, -{0x45b8, 0x80}, -{0x45b9, 0x80}, -{0x45ba, 0x80}, -{0x45bb, 0x80}, -{0x45bc, 0x80}, -{0x45bd, 0x80}, -{0x45be, 0x80}, -{0x45bf, 0x80}, -{0x45c0, 0x80}, -{0x45c1, 0x80}, -{0x45c2, 0x80}, -{0x45c3, 0x80}, -{0x45c4, 0x80}, -{0x45c5, 0x80}, -{0x45c6, 0x80}, -{0x45c7, 0x80}, -{0x45c8, 0x80}, -{0x45c9, 0x80}, -{0x45ca, 0x80}, -{0x45cb, 0x80}, -{0x45cc, 0x80}, -{0x45cd, 0x80}, -{0x45ce, 0x80}, -{0x45cf, 0x80}, -{0x45d0, 0x80}, -{0x45d1, 0x80}, -{0x45d2, 0x80}, -{0x45d3, 0x80}, -{0x45d4, 0x80}, -{0x45d5, 0x80}, -{0x45d6, 0x80}, -{0x45d7, 0x80}, -{0x7000, 0xab}, -{0x7001, 0xba}, -{0x7002, 0x40}, -{0x7003, 0x02}, -{0x7004, 0x00}, -{0x7005, 0x00}, -{0x7006, 0x00}, -{0x7007, 0x00}, -{0x7008, 0x00}, -{0x7009, 0x00}, -{0x700a, 0x00}, -{0x700b, 0x00}, -{0x700c, 0x00}, -{0x700d, 0x00}, -{0x700e, 0x00}, -{0x700f, 0x00}, -{0x7010, 0x55}, -{0x7011, 0x88}, -{0x7012, 0x40}, -{0x7013, 0x01}, -{0x7014, 0x72}, -{0x7015, 0xf1}, -{0x7016, 0x02}, -{0x7017, 0xf8}, -{0x7018, 0x00}, -{0x7019, 0x00}, -{0x701a, 0x00}, -{0x701b, 0x00}, -{0x701c, 0x00}, -{0x701d, 0x00}, -{0x701e, 0x00}, -{0x701f, 0x00}, -{0x7020, 0x00}, -{0x7021, 0x00}, -{0x7022, 0x00}, -{0x7023, 0x00}, -{0x7024, 0x00}, -{0x7025, 0x00}, -{0x7026, 0x00}, -{0x7027, 0x00}, -{0x7028, 0x00}, -{0x7029, 0x00}, -{0x702a, 0x00}, -{0x702b, 0x00}, -{0x702c, 0x00}, -{0x702d, 0x00}, -{0x702e, 0x00}, -{0x702f, 0x00}, -{0x7030, 0x00}, -{0x7031, 0x00}, -{0x7032, 0x00}, -{0x7033, 0x00}, -{0x7034, 0x00}, -{0x7035, 0x00}, -{0x7036, 0x00}, -{0x7037, 0x00}, -{0x7038, 0x00}, -{0x7039, 0x00}, -{0x703a, 0x00}, -{0x703b, 0x00}, -{0x703c, 0x00}, -{0x703d, 0x00}, -{0x703e, 0x00}, -{0x703f, 0x00}, -{0x7040, 0x00}, -{0x7041, 0x00}, -{0x7042, 0x00}, -{0x7043, 0x00}, -{0x7044, 0x00}, -{0x7045, 0x00}, -{0x7046, 0x00}, -{0x7047, 0x00}, -{0x7048, 0x00}, -{0x7049, 0x00}, -{0x704a, 0x00}, -{0x704b, 0x00}, -{0x704c, 0x00}, -{0x704d, 0x00}, -{0x704e, 0x00}, -{0x704f, 0x00}, -{0x7050, 0x00}, -{0x7051, 0x00}, -{0x7052, 0x00}, -{0x7053, 0x00}, -{0x7054, 0x00}, -{0x7055, 0x00}, -{0x7056, 0x00}, -{0x7057, 0x00}, -{0x7058, 0x00}, -{0x7059, 0x00}, -{0x705a, 0x00}, -{0x705b, 0x00}, -{0x705c, 0x00}, -{0x705d, 0x00}, -{0x705e, 0x00}, -{0x705f, 0x00}, -{0x7060, 0x00}, -{0x7061, 0x00}, -{0x7062, 0x00}, -{0x7063, 0x00}, -{0x7064, 0x00}, -{0x7065, 0x00}, -{0x7066, 0x00}, -{0x7067, 0x00}, -{0x7068, 0x00}, -{0x7069, 0x00}, -{0x706a, 0x00}, -{0x706b, 0x00}, -{0x706c, 0x00}, -{0x706d, 0x00}, -{0x706e, 0x00}, -{0x706f, 0x00}, -{0x7070, 0x00}, -{0x7071, 0x00}, -{0x7072, 0x00}, -{0x7073, 0x00}, -{0x7074, 0x00}, -{0x7075, 0x00}, -{0x7076, 0x00}, -{0x7077, 0x00}, -{0x7078, 0x00}, -{0x7079, 0x00}, -{0x707a, 0x00}, -{0x707b, 0x00}, -{0x707c, 0x00}, -{0x707d, 0x00}, -{0x707e, 0x00}, -{0x707f, 0x00}, -{0x7080, 0x00}, -{0x7081, 0x00}, -{0x7082, 0x00}, -{0x7083, 0x00}, -{0x7084, 0x00}, -{0x7085, 0x00}, -{0x7086, 0x00}, -{0x7087, 0x00}, -{0x7088, 0x00}, -{0x7089, 0x00}, -{0x708a, 0x00}, -{0x708b, 0x00}, -{0x708c, 0x00}, -{0x708d, 0x00}, -{0x708e, 0x00}, -{0x708f, 0x00}, -{0x7090, 0x00}, -{0x7091, 0xf0}, -{0x7092, 0x02}, -{0x7093, 0xf8}, -{0x7094, 0x8d}, -{0x7095, 0xf6}, -{0x7096, 0xfa}, -{0x7097, 0xff}, -{0x7098, 0xf0}, -{0x7099, 0xb5}, -{0x709a, 0x04}, -{0x709b, 0x46}, -{0x709c, 0x8f}, -{0x709d, 0xb0}, -{0x709e, 0x5f}, -{0x709f, 0x48}, -{0x70a0, 0x0c}, -{0x70a1, 0x90}, -{0x70a2, 0x5f}, -{0x70a3, 0x48}, -{0x70a4, 0x06}, -{0x70a5, 0x90}, -{0x70a6, 0x20}, -{0x70a7, 0x46}, -{0x70a8, 0x34}, -{0x70a9, 0x30}, -{0x70aa, 0x0b}, -{0x70ab, 0x90}, -{0x70ac, 0x5b}, -{0x70ad, 0x48}, -{0x70ae, 0x5a}, -{0x70af, 0x49}, -{0x70b0, 0x26}, -{0x70b1, 0x46}, -{0x70b2, 0x66}, -{0x70b3, 0x30}, -{0x70b4, 0x3a}, -{0x70b5, 0x31}, -{0x70b6, 0x3c}, -{0x70b7, 0x36}, -{0x70b8, 0x05}, -{0x70b9, 0x90}, -{0x70ba, 0x0a}, -{0x70bb, 0x30}, -{0x70bc, 0x04}, -{0x70bd, 0x90}, -{0x70be, 0x59}, -{0x70bf, 0x48}, -{0x70c0, 0x55}, -{0x70c1, 0x4a}, -{0x70c2, 0x40}, -{0x70c3, 0x6e}, -{0x70c4, 0xc0}, -{0x70c5, 0x07}, -{0x70c6, 0x7d}, -{0x70c7, 0xd1}, -{0x70c8, 0x17}, -{0x70c9, 0x88}, -{0x70ca, 0x0a}, -{0x70cb, 0x5e}, -{0x70cc, 0x0d}, -{0x70cd, 0x92}, -{0x70ce, 0x53}, -{0x70cf, 0x49}, -{0x70d0, 0x55}, -{0x70d1, 0x48}, -{0x70d2, 0x94}, -{0x70d3, 0x31}, -{0x70d4, 0x89}, -{0x70d5, 0x6b}, -{0x70d6, 0x80}, -{0x70d7, 0x68}, -{0x70d8, 0x09}, -{0x70d9, 0x02}, -{0x70da, 0x00}, -{0x70db, 0x03}, -{0x70dc, 0x09}, -{0x70dd, 0x0e}, -{0x70de, 0x00}, -{0x70df, 0x0b}, -{0x70e0, 0x49}, -{0x70e1, 0x1c}, -{0x70e2, 0x48}, -{0x70e3, 0x43}, -{0x70e4, 0x4d}, -{0x70e5, 0x49}, -{0x70e6, 0x6c}, -{0x70e7, 0x39}, -{0x70e8, 0x8a}, -{0x70e9, 0x6a}, -{0x70ea, 0x07}, -{0x70eb, 0x92}, -{0x70ec, 0xca}, -{0x70ed, 0x6a}, -{0x70ee, 0x00}, -{0x70ef, 0x21}, -{0x70f0, 0xc9}, -{0x70f1, 0x43}, -{0x70f2, 0x03}, -{0x70f3, 0x92}, -{0x70f4, 0x00}, -{0x70f5, 0x22}, -{0x70f6, 0x00}, -{0x70f7, 0x91}, -{0x70f8, 0x01}, -{0x70f9, 0x92}, -{0x70fa, 0x39}, -{0x70fb, 0x46}, -{0x70fc, 0x8f}, -{0x70fd, 0xf6}, -{0x70fe, 0xce}, -{0x70ff, 0xfb}, -{0x7100, 0x01}, -{0x7101, 0x22}, -{0x7102, 0x00}, -{0x7103, 0x23}, -{0x7104, 0x8c}, -{0x7105, 0xf6}, -{0x7106, 0x02}, -{0x7107, 0xfa}, -{0x7108, 0x00}, -{0x7109, 0x21}, -{0x710a, 0x05}, -{0x710b, 0x46}, -{0x710c, 0x01}, -{0x710d, 0x91}, -{0x710e, 0x00}, -{0x710f, 0x90}, -{0x7110, 0x39}, -{0x7111, 0x46}, -{0x7112, 0x07}, -{0x7113, 0x98}, -{0x7114, 0x8f}, -{0x7115, 0xf6}, -{0x7116, 0xc2}, -{0x7117, 0xfb}, -{0x7118, 0x0d}, -{0x7119, 0x9a}, -{0x711a, 0xd3}, -{0x711b, 0x17}, -{0x711c, 0x80}, -{0x711d, 0x18}, -{0x711e, 0x59}, -{0x711f, 0x41}, -{0x7120, 0x01}, -{0x7121, 0x22}, -{0x7122, 0x00}, -{0x7123, 0x23}, -{0x7124, 0x8c}, -{0x7125, 0xf6}, -{0x7126, 0xcd}, -{0x7127, 0xf9}, -{0x7128, 0x07}, -{0x7129, 0x90}, -{0x712a, 0x00}, -{0x712b, 0x20}, -{0x712c, 0x01}, -{0x712d, 0x90}, -{0x712e, 0x00}, -{0x712f, 0x95}, -{0x7130, 0x39}, -{0x7131, 0x46}, -{0x7132, 0x03}, -{0x7133, 0x98}, -{0x7134, 0x8f}, -{0x7135, 0xf6}, -{0x7136, 0xb2}, -{0x7137, 0xfb}, -{0x7138, 0x01}, -{0x7139, 0x22}, -{0x713a, 0x00}, -{0x713b, 0x23}, -{0x713c, 0x8c}, -{0x713d, 0xf6}, -{0x713e, 0xe6}, -{0x713f, 0xf9}, -{0x7140, 0x02}, -{0x7141, 0x46}, -{0x7142, 0x07}, -{0x7143, 0x98}, -{0x7144, 0x00}, -{0x7145, 0x23}, -{0x7146, 0x81}, -{0x7147, 0x0b}, -{0x7148, 0x80}, -{0x7149, 0x04}, -{0x714a, 0x7a}, -{0x714b, 0xf6}, -{0x714c, 0x54}, -{0x714d, 0xf8}, -{0x714e, 0x37}, -{0x714f, 0x4a}, -{0x7150, 0x00}, -{0x7151, 0x23}, -{0x7152, 0x00}, -{0x7153, 0x92}, -{0x7154, 0x01}, -{0x7155, 0x93}, -{0x7156, 0x01}, -{0x7157, 0x22}, -{0x7158, 0x8c}, -{0x7159, 0xf6}, -{0x715a, 0xd8}, -{0x715b, 0xf9}, -{0x715c, 0x05}, -{0x715d, 0x46}, -{0x715e, 0x60}, -{0x715f, 0x68}, -{0x7160, 0x00}, -{0x7161, 0x23}, -{0x7162, 0x01}, -{0x7163, 0x0c}, -{0x7164, 0x00}, -{0x7165, 0x04}, -{0x7166, 0xe2}, -{0x7167, 0x68}, -{0x7168, 0x7a}, -{0x7169, 0xf6}, -{0x716a, 0x45}, -{0x716b, 0xf8}, -{0x716c, 0x00}, -{0x716d, 0x22}, -{0x716e, 0xd2}, -{0x716f, 0x43}, -{0x7170, 0x00}, -{0x7171, 0x23}, -{0x7172, 0x00}, -{0x7173, 0x92}, -{0x7174, 0x01}, -{0x7175, 0x93}, -{0x7176, 0x1a}, -{0x7177, 0x46}, -{0x7178, 0x8c}, -{0x7179, 0xf6}, -{0x717a, 0xc8}, -{0x717b, 0xf9}, -{0x717c, 0x29}, -{0x717d, 0x46}, -{0x717e, 0x8f}, -{0x717f, 0xf6}, -{0x7180, 0x8d}, -{0x7181, 0xfb}, -{0x7182, 0x8a}, -{0x7183, 0x03}, -{0x7184, 0x80}, -{0x7185, 0x0c}, -{0x7186, 0x10}, -{0x7187, 0x43}, -{0x7188, 0x00}, -{0x7189, 0x22}, -{0x718a, 0xd2}, -{0x718b, 0x43}, -{0x718c, 0x00}, -{0x718d, 0x23}, -{0x718e, 0x00}, -{0x718f, 0x92}, -{0x7190, 0x89}, -{0x7191, 0x0c}, -{0x7192, 0x01}, -{0x7193, 0x93}, -{0x7194, 0x1a}, -{0x7195, 0x46}, -{0x7196, 0x8c}, -{0x7197, 0xf6}, -{0x7198, 0xb9}, -{0x7199, 0xf9}, -{0x719a, 0x00}, -{0x719b, 0x24}, -{0x719c, 0x03}, -{0x719d, 0x90}, -{0x719e, 0x0c}, -{0x719f, 0x98}, -{0x71a0, 0x61}, -{0x71a1, 0x00}, -{0x71a2, 0x45}, -{0x71a3, 0x5a}, -{0x71a4, 0x06}, -{0x71a5, 0x98}, -{0x71a6, 0x22}, -{0x71a7, 0x4a}, -{0x71a8, 0x40}, -{0x71a9, 0x5a}, -{0x71aa, 0x00}, -{0x71ab, 0x21}, -{0x71ac, 0x8c}, -{0x71ad, 0xf6}, -{0x71ae, 0xbe}, -{0x71af, 0xf9}, -{0x71b0, 0x07}, -{0x71b1, 0x46}, -{0x71b2, 0x28}, -{0x71b3, 0x46}, -{0x71b4, 0x03}, -{0x71b5, 0x99}, -{0x71b6, 0x8f}, -{0x71b7, 0xf6}, -{0x71b8, 0x71}, -{0x71b9, 0xfb}, -{0x71ba, 0x3a}, -{0x71bb, 0x46}, -{0x71bc, 0x00}, -{0x71bd, 0x23}, -{0x71be, 0x79}, -{0x71bf, 0xf6}, -{0x71c0, 0xca}, -{0x71c1, 0xff}, -{0x71c2, 0x00}, -{0x71c3, 0xe0}, -{0x71c4, 0x0f}, -{0x71c5, 0xe0}, -{0x71c6, 0x8a}, -{0x71c7, 0x02}, -{0x71c8, 0x80}, -{0x71c9, 0x0d}, -{0x71ca, 0x10}, -{0x71cb, 0x43}, -{0x71cc, 0x19}, -{0x71cd, 0x4a}, -{0x71ce, 0x00}, -{0x71cf, 0x23}, -{0x71d0, 0x00}, -{0x71d1, 0x92}, -{0x71d2, 0x89}, -{0x71d3, 0x0d}, -{0x71d4, 0x01}, -{0x71d5, 0x93}, -{0x71d6, 0x40}, -{0x71d7, 0x22}, -{0x71d8, 0x8c}, -{0x71d9, 0xf6}, -{0x71da, 0x98}, -{0x71db, 0xf9}, -{0x71dc, 0xa1}, -{0x71dd, 0x00}, -{0x71de, 0x64}, -{0x71df, 0x1c}, -{0x71e0, 0x70}, -{0x71e1, 0x50}, -{0x71e2, 0x04}, -{0x71e3, 0x2c}, -{0x71e4, 0xdb}, -{0x71e5, 0xd3}, -{0x71e6, 0x14}, -{0x71e7, 0x4d}, -{0x71e8, 0x00}, -{0x71e9, 0x24}, -{0x71ea, 0x0b}, -{0x71eb, 0x98}, -{0x71ec, 0x67}, -{0x71ed, 0x00}, -{0x71ee, 0xc0}, -{0x71ef, 0x5b}, -{0x71f0, 0x2a}, -{0x71f1, 0x46}, -{0x71f2, 0x40}, -{0x71f3, 0x21}, -{0x71f4, 0x8c}, -{0x71f5, 0xf6}, -{0x71f6, 0x9a}, -{0x71f7, 0xf9}, -{0x71f8, 0x05}, -{0x71f9, 0x99}, -{0x71fa, 0x0e}, -{0x71fb, 0x4a}, -{0x71fc, 0xc8}, -{0x71fd, 0x53}, -{0x71fe, 0xa7}, -{0x71ff, 0x00}, -{0x7200, 0xf0}, -{0x7201, 0x59}, -{0x7202, 0x40}, -{0x7203, 0x21}, -{0x7204, 0x8c}, -{0x7205, 0xf6}, -{0x7206, 0x7b}, -{0x7207, 0xf9}, -{0x7208, 0x04}, -{0x7209, 0x99}, -{0x720a, 0x64}, -{0x720b, 0x1c}, -{0x720c, 0xc8}, -{0x720d, 0x51}, -{0x720e, 0x04}, -{0x720f, 0x2c}, -{0x7210, 0xeb}, -{0x7211, 0xd3}, -{0x7212, 0x0f}, -{0x7213, 0xb0}, -{0x7214, 0xf0}, -{0x7215, 0xbd}, -{0x7216, 0x00}, -{0x7217, 0x00}, -{0x7218, 0x76}, -{0x7219, 0x69}, -{0x721a, 0x18}, -{0x721b, 0x00}, -{0x721c, 0xec}, -{0x721d, 0x58}, -{0x721e, 0x18}, -{0x721f, 0x00}, -{0x7220, 0x38}, -{0x7221, 0x36}, -{0x7222, 0x18}, -{0x7223, 0x00}, -{0x7224, 0x00}, -{0x7225, 0x35}, -{0x7226, 0x18}, -{0x7227, 0x00}, -{0x7228, 0x00}, -{0x7229, 0x20}, -{0x722a, 0x18}, -{0x722b, 0x00}, -{0x722c, 0xff}, -{0x722d, 0xff}, -{0x722e, 0xff}, -{0x722f, 0x3f}, -{0x7230, 0xff}, -{0x7231, 0x07}, -{0x7232, 0x00}, -{0x7233, 0x00}, -{0x7234, 0xff}, -{0x7235, 0xff}, -{0x7236, 0x07}, -{0x7237, 0x00}, -{0x7238, 0xff}, -{0x7239, 0x1f}, -{0x723a, 0x00}, -{0x723b, 0x00}, -{0x723c, 0x01}, -{0x723d, 0xf6}, -{0x723e, 0x45}, -{0x723f, 0x12}, -{0x0232, 0x13}, -{0x0233, 0x01}, + // disable a bunch of errors causing blanking + {0x0390, 0x00}, {0x0391, 0x00}, {0x0392, 0x00}, }; struct i2c_random_wr_payload init_array_ar0231[] = { From c2939f22a1cf1d588bbd5325279c2818968a5fcc Mon Sep 17 00:00:00 2001 From: Comma Device Date: Sat, 12 Mar 2022 12:39:50 -0800 Subject: [PATCH 03/13] visible picture --- selfdrive/camerad/cameras/camera_qcom2.cc | 8 ++++---- selfdrive/camerad/cameras/sensor2_i2c.h | 13 +++++++++---- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/selfdrive/camerad/cameras/camera_qcom2.cc b/selfdrive/camerad/cameras/camera_qcom2.cc index 7e43cf4ee7eda7..1e4e3c8d7020d6 100644 --- a/selfdrive/camerad/cameras/camera_qcom2.cc +++ b/selfdrive/camerad/cameras/camera_qcom2.cc @@ -302,8 +302,8 @@ void CameraState::sensors_init() { power->count = 1; power->cmd_type = CAMERA_SENSOR_CMD_TYPE_PWR_UP; power->power_settings[0].power_seq_type = 0; - //power->power_settings[0].config_val_low = 19200000; //Hz - power->power_settings[0].config_val_low = 24000000; //Hz + power->power_settings[0].config_val_low = 19200000; //Hz + //power->power_settings[0].config_val_low = 24000000; //Hz power = power_set_wait(power, 10); // 8,1 is this reset? @@ -1019,14 +1019,14 @@ void CameraState::set_camera_exposure(float grey_frac) { } // LOGE("ae - camera %d, cur_t %.5f, sof %.5f, dt %.5f", camera_num, 1e-9 * nanos_since_boot(), 1e-9 * buf.cur_frame_data.timestamp_sof, 1e-9 * (nanos_since_boot() - buf.cur_frame_data.timestamp_sof)); - uint16_t analog_gain_reg = 0xFF00 | (new_g << 4) | new_g; + /*uint16_t analog_gain_reg = 0xFF00 | (new_g << 4) | new_g; struct i2c_random_wr_payload exp_reg_array[] = { {0x3366, analog_gain_reg}, {0x3362, (uint16_t)(dc_gain_enabled ? 0x1 : 0x0)}, {0x3012, (uint16_t)exposure_time}, }; sensors_i2c(exp_reg_array, sizeof(exp_reg_array)/sizeof(struct i2c_random_wr_payload), - CAM_SENSOR_PACKET_OPCODE_SENSOR_CONFIG); + CAM_SENSOR_PACKET_OPCODE_SENSOR_CONFIG);*/ } void camera_autoexposure(CameraState *s, float grey_frac) { diff --git a/selfdrive/camerad/cameras/sensor2_i2c.h b/selfdrive/camerad/cameras/sensor2_i2c.h index 40678745db6566..4f5facaf75defc 100644 --- a/selfdrive/camerad/cameras/sensor2_i2c.h +++ b/selfdrive/camerad/cameras/sensor2_i2c.h @@ -4,15 +4,20 @@ struct i2c_random_wr_payload stop_reg_array[] = {{0x301A, 0x918}};*/ struct i2c_random_wr_payload start_reg_array[] = {{0x0, 0}}; struct i2c_random_wr_payload init_array_imx390[] = { - {0x2008, 0xb7}, {0x2009, 0x04}, // MODE_VMAX - {0x2008, 0xe4}, {0x2009, 0x0c}, // MODE_HMAX + {0x2008, 0xb8}, {0x2009, 0x04}, {0x200a, 0x00}, // MODE_VMAX + {0x200C, 0xe4}, {0x200D, 0x0c}, // MODE_HMAX + + // crop + {0x3410, 0x88}, {0x3411, 0x7}, // CROP_H_SIZE + {0x3418, 0xb8}, {0x3419, 0x4}, // CROP_V_SIZE + {0x0078, 1}, {0x03c0, 1}, // external trigger (off) {0x3650, 0}, // CU_MODE // exposure - {0x000c, 0x7f}, {0x000d, 0x01}, - {0x0010, 0x7f}, {0x0011, 0x01}, + {0x000c, 0x7f}, {0x000d, 0x02}, + {0x0010, 0x7f}, {0x0011, 0x02}, // analog gain {0x0018, 0x64}, {0x0019, 0x00}, From 7ca55546a082a83c4cb82cca67cf67fabfb73483 Mon Sep 17 00:00:00 2001 From: Comma Device Date: Sat, 12 Mar 2022 13:14:25 -0800 Subject: [PATCH 04/13] pics look good --- selfdrive/camerad/cameras/camera_qcom2.cc | 4 ++-- selfdrive/camerad/cameras/sensor2_i2c.h | 19 ++++++++++++++++--- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/selfdrive/camerad/cameras/camera_qcom2.cc b/selfdrive/camerad/cameras/camera_qcom2.cc index 1e4e3c8d7020d6..2387e5e8b5be77 100644 --- a/selfdrive/camerad/cameras/camera_qcom2.cc +++ b/selfdrive/camerad/cameras/camera_qcom2.cc @@ -302,8 +302,8 @@ void CameraState::sensors_init() { power->count = 1; power->cmd_type = CAMERA_SENSOR_CMD_TYPE_PWR_UP; power->power_settings[0].power_seq_type = 0; - power->power_settings[0].config_val_low = 19200000; //Hz - //power->power_settings[0].config_val_low = 24000000; //Hz + //power->power_settings[0].config_val_low = 19200000; //Hz + power->power_settings[0].config_val_low = 24000000; //Hz power = power_set_wait(power, 10); // 8,1 is this reset? diff --git a/selfdrive/camerad/cameras/sensor2_i2c.h b/selfdrive/camerad/cameras/sensor2_i2c.h index 4f5facaf75defc..58f4c2bc1b72a7 100644 --- a/selfdrive/camerad/cameras/sensor2_i2c.h +++ b/selfdrive/camerad/cameras/sensor2_i2c.h @@ -4,8 +4,9 @@ struct i2c_random_wr_payload stop_reg_array[] = {{0x301A, 0x918}};*/ struct i2c_random_wr_payload start_reg_array[] = {{0x0, 0}}; struct i2c_random_wr_payload init_array_imx390[] = { - {0x2008, 0xb8}, {0x2009, 0x04}, {0x200a, 0x00}, // MODE_VMAX + {0x2008, 0xdd}, {0x2009, 0x04}, {0x200a, 0x00}, // MODE_VMAX {0x200C, 0xe4}, {0x200D, 0x0c}, // MODE_HMAX + //{0x201c, 0x01}, {0x201D, 0x13}, // crop {0x3410, 0x88}, {0x3411, 0x7}, // CROP_H_SIZE @@ -20,11 +21,23 @@ struct i2c_random_wr_payload init_array_imx390[] = { {0x0010, 0x7f}, {0x0011, 0x02}, // analog gain - {0x0018, 0x64}, {0x0019, 0x00}, - {0x001a, 0x0c}, {0x001b, 0x00}, + //{0x0018, 0x64}, {0x0019, 0x00}, + //{0x001a, 0x0c}, {0x001b, 0x00}, // disable a bunch of errors causing blanking {0x0390, 0x00}, {0x0391, 0x00}, {0x0392, 0x00}, + + // flip bayer + {0x2D64, 0x64 + 2}, + + // color correction + {0x0030, 0xf8}, {0x0031, 0x00}, // red gain + {0x0032, 0x9a}, {0x0033, 0x00}, // gr gain + {0x0034, 0x9a}, {0x0035, 0x00}, // gb gain + {0x0036, 0x22}, {0x0037, 0x01}, // blue gain + + // hdr enable (noise with this on for now) + {0x00f9, 0} }; struct i2c_random_wr_payload init_array_ar0231[] = { From 3dc5ce71a9499335a47be4b491f72c4c43030f33 Mon Sep 17 00:00:00 2001 From: Comma Device Date: Sat, 12 Mar 2022 14:05:18 -0800 Subject: [PATCH 05/13] maybe --- selfdrive/camerad/cameras/sensor2_i2c.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/selfdrive/camerad/cameras/sensor2_i2c.h b/selfdrive/camerad/cameras/sensor2_i2c.h index 58f4c2bc1b72a7..0ab6bd2aa1e135 100644 --- a/selfdrive/camerad/cameras/sensor2_i2c.h +++ b/selfdrive/camerad/cameras/sensor2_i2c.h @@ -8,20 +8,26 @@ struct i2c_random_wr_payload init_array_imx390[] = { {0x200C, 0xe4}, {0x200D, 0x0c}, // MODE_HMAX //{0x201c, 0x01}, {0x201D, 0x13}, + //{0x201c, 0xf1}, {0x201D, 0x12}, + // crop {0x3410, 0x88}, {0x3411, 0x7}, // CROP_H_SIZE {0x3418, 0xb8}, {0x3419, 0x4}, // CROP_V_SIZE {0x0078, 1}, {0x03c0, 1}, // external trigger (off) + // while images still come in, they are blank with this {0x3650, 0}, // CU_MODE // exposure {0x000c, 0x7f}, {0x000d, 0x02}, {0x0010, 0x7f}, {0x0011, 0x02}, + // WUXGA mode + // not in datasheet, from https://github.com/bogsen/STLinux-Kernel/blob/master/drivers/media/platform/tegra/imx185.c + + // analog gain - //{0x0018, 0x64}, {0x0019, 0x00}, //{0x001a, 0x0c}, {0x001b, 0x00}, // disable a bunch of errors causing blanking From 7e598153e9f729527a34d26dde3dfdf19c28f226 Mon Sep 17 00:00:00 2001 From: Comma Device Date: Tue, 15 Mar 2022 19:16:09 -0700 Subject: [PATCH 06/13] whole sensor --- selfdrive/camerad/cameras/sensor2_i2c.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/selfdrive/camerad/cameras/sensor2_i2c.h b/selfdrive/camerad/cameras/sensor2_i2c.h index 0ab6bd2aa1e135..1d557b8e4b8a23 100644 --- a/selfdrive/camerad/cameras/sensor2_i2c.h +++ b/selfdrive/camerad/cameras/sensor2_i2c.h @@ -6,9 +6,6 @@ struct i2c_random_wr_payload start_reg_array[] = {{0x0, 0}}; struct i2c_random_wr_payload init_array_imx390[] = { {0x2008, 0xdd}, {0x2009, 0x04}, {0x200a, 0x00}, // MODE_VMAX {0x200C, 0xe4}, {0x200D, 0x0c}, // MODE_HMAX - //{0x201c, 0x01}, {0x201D, 0x13}, - - //{0x201c, 0xf1}, {0x201D, 0x12}, // crop {0x3410, 0x88}, {0x3411, 0x7}, // CROP_H_SIZE @@ -25,7 +22,12 @@ struct i2c_random_wr_payload init_array_imx390[] = { // WUXGA mode // not in datasheet, from https://github.com/bogsen/STLinux-Kernel/blob/master/drivers/media/platform/tegra/imx185.c + {0x0086, 0xc4}, {0x0087, 0xff}, // WND_SHIFT_V = -60 + {0x03c6, 0xc4}, {0x03c7, 0xff}, // SM_WND_SHIFT_V_APL = -60 + {0x201c, 0xe1}, {0x201d, 0x12}, // image read amount + {0x21ee, 0xc4}, {0x21ef, 0x04}, // image send amount (1220 is the end) + {0x21f0, 0xc4}, {0x21f1, 0x04}, // image processing amount // analog gain //{0x001a, 0x0c}, {0x001b, 0x00}, From 6084b10c7033a1796c7ce2ccbd867e0d1719ce95 Mon Sep 17 00:00:00 2001 From: Comma Device Date: Tue, 15 Mar 2022 20:26:51 -0700 Subject: [PATCH 07/13] fix all cameras --- selfdrive/camerad/cameras/camera_qcom2.cc | 12 +++++++----- selfdrive/camerad/cameras/sensor2_i2c.h | 9 +++------ 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/selfdrive/camerad/cameras/camera_qcom2.cc b/selfdrive/camerad/cameras/camera_qcom2.cc index 2387e5e8b5be77..bcf22a33051552 100644 --- a/selfdrive/camerad/cameras/camera_qcom2.cc +++ b/selfdrive/camerad/cameras/camera_qcom2.cc @@ -243,12 +243,14 @@ void CameraState::sensors_init() { switch (camera_num) { case 0: // port 0 - i2c_info->slave_addr = 0x20; + //i2c_info->slave_addr = 0x20; + i2c_info->slave_addr = 0x34; probe->camera_id = 0; break; case 1: // port 1 - i2c_info->slave_addr = 0x30; + //i2c_info->slave_addr = 0x30; + i2c_info->slave_addr = 0x36; probe->camera_id = 1; break; case 2: @@ -1024,9 +1026,9 @@ void CameraState::set_camera_exposure(float grey_frac) { {0x3366, analog_gain_reg}, {0x3362, (uint16_t)(dc_gain_enabled ? 0x1 : 0x0)}, {0x3012, (uint16_t)exposure_time}, - }; - sensors_i2c(exp_reg_array, sizeof(exp_reg_array)/sizeof(struct i2c_random_wr_payload), - CAM_SENSOR_PACKET_OPCODE_SENSOR_CONFIG);*/ + };*/ + /*struct i2c_random_wr_payload exp_reg_array[] = { + sensors_i2c(exp_reg_array, sizeof(exp_reg_array)/sizeof(struct i2c_random_wr_payload), CAM_SENSOR_PACKET_OPCODE_SENSOR_CONFIG);*/ } void camera_autoexposure(CameraState *s, float grey_frac) { diff --git a/selfdrive/camerad/cameras/sensor2_i2c.h b/selfdrive/camerad/cameras/sensor2_i2c.h index 1d557b8e4b8a23..f989e6043dcd49 100644 --- a/selfdrive/camerad/cameras/sensor2_i2c.h +++ b/selfdrive/camerad/cameras/sensor2_i2c.h @@ -4,7 +4,7 @@ struct i2c_random_wr_payload stop_reg_array[] = {{0x301A, 0x918}};*/ struct i2c_random_wr_payload start_reg_array[] = {{0x0, 0}}; struct i2c_random_wr_payload init_array_imx390[] = { - {0x2008, 0xdd}, {0x2009, 0x04}, {0x200a, 0x00}, // MODE_VMAX + {0x2008, 0xd0}, {0x2009, 0x07}, {0x200a, 0x00}, // MODE_VMAX = time between frames {0x200C, 0xe4}, {0x200D, 0x0c}, // MODE_HMAX // crop @@ -17,8 +17,8 @@ struct i2c_random_wr_payload init_array_imx390[] = { {0x3650, 0}, // CU_MODE // exposure - {0x000c, 0x7f}, {0x000d, 0x02}, - {0x0010, 0x7f}, {0x0011, 0x02}, + {0x000c, 0x0f}, {0x000d, 0x00}, + {0x0010, 0x0f}, {0x0011, 0x00}, // WUXGA mode // not in datasheet, from https://github.com/bogsen/STLinux-Kernel/blob/master/drivers/media/platform/tegra/imx185.c @@ -29,9 +29,6 @@ struct i2c_random_wr_payload init_array_imx390[] = { {0x21ee, 0xc4}, {0x21ef, 0x04}, // image send amount (1220 is the end) {0x21f0, 0xc4}, {0x21f1, 0x04}, // image processing amount - // analog gain - //{0x001a, 0x0c}, {0x001b, 0x00}, - // disable a bunch of errors causing blanking {0x0390, 0x00}, {0x0391, 0x00}, {0x0392, 0x00}, From 488512ef81ef8452df7aa9ca230d38295fd1850e Mon Sep 17 00:00:00 2001 From: Comma Device Date: Tue, 15 Mar 2022 23:08:38 -0700 Subject: [PATCH 08/13] support both cameras --- selfdrive/camerad/cameras/camera_common.h | 3 +- selfdrive/camerad/cameras/camera_qcom2.cc | 79 +++++++++++++++-------- selfdrive/camerad/cameras/camera_qcom2.h | 6 +- selfdrive/camerad/cameras/sensor2_i2c.h | 6 +- 4 files changed, 59 insertions(+), 35 deletions(-) diff --git a/selfdrive/camerad/cameras/camera_common.h b/selfdrive/camerad/cameras/camera_common.h index d3cdc67b9165a7..7aa1891aac71d5 100644 --- a/selfdrive/camerad/cameras/camera_common.h +++ b/selfdrive/camerad/cameras/camera_common.h @@ -25,7 +25,8 @@ #define CAMERA_ID_LGC920 6 #define CAMERA_ID_LGC615 7 #define CAMERA_ID_AR0231 8 -#define CAMERA_ID_MAX 9 +#define CAMERA_ID_IMX390 9 +#define CAMERA_ID_MAX 10 const int UI_BUF_COUNT = 4; const int YUV_BUFFER_COUNT = Hardware::EON() ? 100 : 40; diff --git a/selfdrive/camerad/cameras/camera_qcom2.cc b/selfdrive/camerad/cameras/camera_qcom2.cc index bcf22a33051552..c68cf0cd87a624 100644 --- a/selfdrive/camerad/cameras/camera_qcom2.cc +++ b/selfdrive/camerad/cameras/camera_qcom2.cc @@ -42,6 +42,14 @@ CameraInfo cameras_supported[CAMERA_ID_MAX] = { .bayer_flip = 1, .hdr = false }, + [CAMERA_ID_IMX390] = { + .frame_width = FRAME_WIDTH, + .frame_height = FRAME_HEIGHT, + .frame_stride = FRAME_STRIDE, + .bayer = true, + .bayer_flip = 1, + .hdr = false + }, }; const float DC_GAIN = 2.5; @@ -163,8 +171,15 @@ void clear_req_queue(int fd, int32_t session_hdl, int32_t link_hdl) { // ************** high level camera helpers **************** void CameraState::sensors_start() { - int start_reg_len = sizeof(start_reg_array) / sizeof(struct i2c_random_wr_payload); - sensors_i2c(start_reg_array, start_reg_len, CAM_SENSOR_PACKET_OPCODE_SENSOR_CONFIG); + if (camera_id == CAMERA_ID_AR0231) { + int start_reg_len = sizeof(start_reg_array_ar0231) / sizeof(struct i2c_random_wr_payload); + sensors_i2c(start_reg_array_ar0231, start_reg_len, CAM_SENSOR_PACKET_OPCODE_SENSOR_CONFIG, true); + } else if (camera_id == CAMERA_ID_IMX390) { + int start_reg_len = sizeof(start_reg_array_imx390) / sizeof(struct i2c_random_wr_payload); + sensors_i2c(start_reg_array_imx390, start_reg_len, CAM_SENSOR_PACKET_OPCODE_SENSOR_CONFIG, false); + } else { + assert(false); + } } void CameraState::sensors_poke(int request_id) { @@ -184,7 +199,7 @@ void CameraState::sensors_poke(int request_id) { release_fd(multi_cam_state->video0_fd, cam_packet_handle); } -void CameraState::sensors_i2c(struct i2c_random_wr_payload* dat, int len, int op_code) { +void CameraState::sensors_i2c(struct i2c_random_wr_payload* dat, int len, int op_code, bool data_word) { // LOGD("sensors_i2c: %d", len); uint32_t cam_packet_handle = 0; int size = sizeof(struct cam_packet)+sizeof(struct cam_cmd_buf_desc)*1; @@ -202,8 +217,7 @@ void CameraState::sensors_i2c(struct i2c_random_wr_payload* dat, int len, int op i2c_random_wr->header.count = len; i2c_random_wr->header.op_code = 1; i2c_random_wr->header.cmd_type = CAMERA_SENSOR_CMD_TYPE_I2C_RNDM_WR; - //i2c_random_wr->header.data_type = CAMERA_SENSOR_I2C_TYPE_WORD; - i2c_random_wr->header.data_type = CAMERA_SENSOR_I2C_TYPE_BYTE; + i2c_random_wr->header.data_type = data_word ? CAMERA_SENSOR_I2C_TYPE_WORD : CAMERA_SENSOR_I2C_TYPE_BYTE; i2c_random_wr->header.addr_type = CAMERA_SENSOR_I2C_TYPE_WORD; memcpy(i2c_random_wr->random_wr_payload, dat, len*sizeof(struct i2c_random_wr_payload)); @@ -224,7 +238,7 @@ static cam_cmd_power *power_set_wait(cam_cmd_power *power, int16_t delay_ms) { return (struct cam_cmd_power *)(unconditional_wait + 1); }; -void CameraState::sensors_init() { +int CameraState::sensors_init() { int video0_fd = multi_cam_state->video0_fd; uint32_t cam_packet_handle = 0; int size = sizeof(struct cam_packet)+sizeof(struct cam_cmd_buf_desc)*2; @@ -243,20 +257,17 @@ void CameraState::sensors_init() { switch (camera_num) { case 0: // port 0 - //i2c_info->slave_addr = 0x20; - i2c_info->slave_addr = 0x34; + i2c_info->slave_addr = (camera_id == CAMERA_ID_AR0231) ? 0x20 : 0x34; probe->camera_id = 0; break; case 1: // port 1 - //i2c_info->slave_addr = 0x30; - i2c_info->slave_addr = 0x36; + i2c_info->slave_addr = (camera_id == CAMERA_ID_AR0231) ? 0x30 : 0x36; probe->camera_id = 1; break; case 2: // port 2 - //i2c_info->slave_addr = 0x20; - i2c_info->slave_addr = 0x34; + i2c_info->slave_addr = (camera_id == CAMERA_ID_AR0231) ? 0x20 : 0x34; probe->camera_id = 2; break; } @@ -270,12 +281,15 @@ void CameraState::sensors_init() { probe->addr_type = CAMERA_SENSOR_I2C_TYPE_WORD; probe->op_code = 3; // don't care? probe->cmd_type = CAMERA_SENSOR_CMD_TYPE_PROBE; - // ar0231 - /*probe->reg_addr = 0x3000; - probe->expected_data = 0x354;*/ - // imx390 - probe->reg_addr = 0x330; - probe->expected_data = 0x1538; + if (camera_id == CAMERA_ID_AR0231) { + probe->reg_addr = 0x3000; + probe->expected_data = 0x354; + } else if (camera_id == CAMERA_ID_IMX390) { + probe->reg_addr = 0x330; + probe->expected_data = 0x1538; + } else { + assert(false); + } probe->data_mask = 0; //buf_desc[1].size = buf_desc[1].length = 148; @@ -353,7 +367,6 @@ void CameraState::sensors_init() { LOGD("probing the sensor"); int ret = do_cam_control(sensor_fd, CAM_SENSOR_PROBE_CMD, (void *)(uintptr_t)cam_packet_handle, 0); - assert(ret == 0); munmap(i2c_info, buf_desc[0].size); release_fd(video0_fd, buf_desc[0].mem_handle); @@ -361,6 +374,8 @@ void CameraState::sensors_init() { release_fd(video0_fd, buf_desc[1].mem_handle); munmap(pkt, size); release_fd(video0_fd, cam_packet_handle); + + return ret; } void CameraState::config_isp(int io_mem_handle, int fence, int request_id, int buf0_mem_handle, int buf0_offset) { @@ -573,9 +588,10 @@ void CameraState::enqueue_req_multi(int start, int n, bool dp) { // ******************* camera ******************* -void CameraState::camera_init(MultiCameraState *multi_cam_state_, VisionIpcServer * v, int camera_id, int camera_num_, unsigned int fps, cl_device_id device_id, cl_context ctx, VisionStreamType rgb_type, VisionStreamType yuv_type) { +void CameraState::camera_init(MultiCameraState *multi_cam_state_, VisionIpcServer * v, int camera_id_, int camera_num_, unsigned int fps, cl_device_id device_id, cl_context ctx, VisionStreamType rgb_type, VisionStreamType yuv_type) { LOGD("camera init %d", camera_num); multi_cam_state = multi_cam_state_; + camera_id = camera_id_; assert(camera_id < std::size(cameras_supported)); ci = cameras_supported[camera_id]; assert(ci.frame_width != 0); @@ -598,17 +614,24 @@ void CameraState::camera_init(MultiCameraState *multi_cam_state_, VisionIpcServe } void CameraState::camera_open() { + int ret; sensor_fd = open_v4l_by_name_and_index("cam-sensor-driver", camera_num); assert(sensor_fd >= 0); LOGD("opened sensor for %d", camera_num); // probe the sensor LOGD("-- Probing sensor %d", camera_num); - sensors_init(); + ret = sensors_init(); + if (ret != 0) { + LOGD("AR0231 init failed, trying IMX390"); + camera_id = CAMERA_ID_IMX390; + ret = sensors_init(); + } + assert(ret == 0); // create session struct cam_req_mgr_session_info session_info = {}; - int ret = do_cam_control(multi_cam_state->video0_fd, CAM_REQ_MGR_CREATE_SESSION, &session_info, sizeof(session_info)); + ret = do_cam_control(multi_cam_state->video0_fd, CAM_REQ_MGR_CREATE_SESSION, &session_info, sizeof(session_info)); LOGD("get session: %d 0x%X", ret, session_info.session_hdl); session_handle = session_info.session_hdl; @@ -687,11 +710,13 @@ void CameraState::camera_open() { config_isp(0, 0, 1, buf0_handle, 0); LOG("-- Configuring sensor"); - sensors_i2c(init_array_imx390, std::size(init_array_imx390), CAM_SENSOR_PACKET_OPCODE_SENSOR_CONFIG); - //sensors_i2c(init_array_ar0231, std::size(init_array_ar0231), CAM_SENSOR_PACKET_OPCODE_SENSOR_CONFIG); - //sensors_i2c(start_reg_array, std::size(start_reg_array), CAM_SENSOR_PACKET_OPCODE_SENSOR_STREAMON); - //sensors_i2c(stop_reg_array, std::size(stop_reg_array), CAM_SENSOR_PACKET_OPCODE_SENSOR_STREAMOFF); - + if (camera_id == CAMERA_ID_AR0231) { + sensors_i2c(init_array_ar0231, std::size(init_array_ar0231), CAM_SENSOR_PACKET_OPCODE_SENSOR_CONFIG, true); + } else if (camera_id == CAMERA_ID_IMX390) { + sensors_i2c(init_array_imx390, std::size(init_array_imx390), CAM_SENSOR_PACKET_OPCODE_SENSOR_CONFIG, false); + } else { + assert(false); + } // config csiphy LOG("-- Config CSI PHY"); diff --git a/selfdrive/camerad/cameras/camera_qcom2.h b/selfdrive/camerad/cameras/camera_qcom2.h index d021ba256ea6cb..83dca68238aa88 100644 --- a/selfdrive/camerad/cameras/camera_qcom2.h +++ b/selfdrive/camerad/cameras/camera_qcom2.h @@ -40,8 +40,8 @@ class CameraState { void sensors_start(); void sensors_poke(int request_id); - void sensors_i2c(struct i2c_random_wr_payload* dat, int len, int op_code); - void sensors_init(); + void sensors_i2c(struct i2c_random_wr_payload* dat, int len, int op_code, bool as_word); + int sensors_init(); void camera_open(); void camera_init(MultiCameraState *multi_cam_state, VisionIpcServer * v, int camera_id, int camera_num, unsigned int fps, cl_device_id device_id, cl_context ctx, VisionStreamType rgb_type, VisionStreamType yuv_type); @@ -62,6 +62,7 @@ class CameraState { int frame_id_last; int idx_offset; bool skipped; + int camera_id; CameraBuf buf; }; @@ -73,7 +74,6 @@ typedef struct MultiCameraState { int device_iommu; int cdm_iommu; - CameraState road_cam; CameraState wide_road_cam; CameraState driver_cam; diff --git a/selfdrive/camerad/cameras/sensor2_i2c.h b/selfdrive/camerad/cameras/sensor2_i2c.h index f989e6043dcd49..4089115c637784 100644 --- a/selfdrive/camerad/cameras/sensor2_i2c.h +++ b/selfdrive/camerad/cameras/sensor2_i2c.h @@ -1,7 +1,5 @@ -/*struct i2c_random_wr_payload start_reg_array[] = {{0x301A, 0x91C}}; -struct i2c_random_wr_payload stop_reg_array[] = {{0x301A, 0x918}};*/ - -struct i2c_random_wr_payload start_reg_array[] = {{0x0, 0}}; +struct i2c_random_wr_payload start_reg_array_ar0231[] = {{0x301A, 0x91C}}; +struct i2c_random_wr_payload start_reg_array_imx390[] = {{0x0, 0}}; struct i2c_random_wr_payload init_array_imx390[] = { {0x2008, 0xd0}, {0x2009, 0x07}, {0x200a, 0x00}, // MODE_VMAX = time between frames From ae33ceb5af4e5468b178e4166c3bc84ad2e2d063 Mon Sep 17 00:00:00 2001 From: Comma Device Date: Tue, 15 Mar 2022 23:36:55 -0700 Subject: [PATCH 09/13] autoexposure for imx390 --- selfdrive/camerad/cameras/camera_qcom2.cc | 31 +++++++++++++++-------- selfdrive/camerad/cameras/sensor2_i2c.h | 4 +-- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/selfdrive/camerad/cameras/camera_qcom2.cc b/selfdrive/camerad/cameras/camera_qcom2.cc index c68cf0cd87a624..99ef88d97498c1 100644 --- a/selfdrive/camerad/cameras/camera_qcom2.cc +++ b/selfdrive/camerad/cameras/camera_qcom2.cc @@ -318,8 +318,7 @@ int CameraState::sensors_init() { power->count = 1; power->cmd_type = CAMERA_SENSOR_CMD_TYPE_PWR_UP; power->power_settings[0].power_seq_type = 0; - //power->power_settings[0].config_val_low = 19200000; //Hz - power->power_settings[0].config_val_low = 24000000; //Hz + power->power_settings[0].config_val_low = (camera_id == CAMERA_ID_AR0231) ? 19200000 : 24000000; //Hz power = power_set_wait(power, 10); // 8,1 is this reset? @@ -1046,14 +1045,26 @@ void CameraState::set_camera_exposure(float grey_frac) { } // LOGE("ae - camera %d, cur_t %.5f, sof %.5f, dt %.5f", camera_num, 1e-9 * nanos_since_boot(), 1e-9 * buf.cur_frame_data.timestamp_sof, 1e-9 * (nanos_since_boot() - buf.cur_frame_data.timestamp_sof)); - /*uint16_t analog_gain_reg = 0xFF00 | (new_g << 4) | new_g; - struct i2c_random_wr_payload exp_reg_array[] = { - {0x3366, analog_gain_reg}, - {0x3362, (uint16_t)(dc_gain_enabled ? 0x1 : 0x0)}, - {0x3012, (uint16_t)exposure_time}, - };*/ - /*struct i2c_random_wr_payload exp_reg_array[] = { - sensors_i2c(exp_reg_array, sizeof(exp_reg_array)/sizeof(struct i2c_random_wr_payload), CAM_SENSOR_PACKET_OPCODE_SENSOR_CONFIG);*/ + if (camera_id == CAMERA_ID_AR0231) { + uint16_t analog_gain_reg = 0xFF00 | (new_g << 4) | new_g; + struct i2c_random_wr_payload exp_reg_array[] = { + {0x3366, analog_gain_reg}, + {0x3362, (uint16_t)(dc_gain_enabled ? 0x1 : 0x0)}, + {0x3012, (uint16_t)exposure_time}, + }; + sensors_i2c(exp_reg_array, sizeof(exp_reg_array)/sizeof(struct i2c_random_wr_payload), CAM_SENSOR_PACKET_OPCODE_SENSOR_CONFIG, true); + } else if (camera_id == CAMERA_ID_IMX390) { + // TODO: is this right? + uint32_t real_exposure_time = (exposure_time >= 0x7d0) ? 1 : (0x7d0 - exposure_time); + uint32_t real_gain = int(gain/0.3); + //printf("%d expose: %d gain: %d\n", camera_num, exposure_time, real_gain); + struct i2c_random_wr_payload exp_reg_array[] = { + {0x000c, real_exposure_time&0xFF}, {0x000d, real_exposure_time>>8}, + {0x0010, real_exposure_time&0xFF}, {0x0011, real_exposure_time>>8}, + {0x0018, real_gain&0xFF}, {0x0019, real_gain>>8}, + }; + sensors_i2c(exp_reg_array, sizeof(exp_reg_array)/sizeof(struct i2c_random_wr_payload), CAM_SENSOR_PACKET_OPCODE_SENSOR_CONFIG, false); + } } void camera_autoexposure(CameraState *s, float grey_frac) { diff --git a/selfdrive/camerad/cameras/sensor2_i2c.h b/selfdrive/camerad/cameras/sensor2_i2c.h index 4089115c637784..29ad09295fc6be 100644 --- a/selfdrive/camerad/cameras/sensor2_i2c.h +++ b/selfdrive/camerad/cameras/sensor2_i2c.h @@ -15,8 +15,8 @@ struct i2c_random_wr_payload init_array_imx390[] = { {0x3650, 0}, // CU_MODE // exposure - {0x000c, 0x0f}, {0x000d, 0x00}, - {0x0010, 0x0f}, {0x0011, 0x00}, + {0x000c, 0xc0}, {0x000d, 0x07}, + {0x0010, 0xc0}, {0x0011, 0x07}, // WUXGA mode // not in datasheet, from https://github.com/bogsen/STLinux-Kernel/blob/master/drivers/media/platform/tegra/imx185.c From 4267e99caf2154dc1df91b1f51b3c9b990cacc4c Mon Sep 17 00:00:00 2001 From: Comma Device Date: Wed, 16 Mar 2022 00:12:52 -0700 Subject: [PATCH 10/13] fix imx390 blacklevel --- selfdrive/camerad/cameras/camera_common.cc | 9 ++++++--- selfdrive/camerad/cameras/real_debayer.cl | 23 +++++++++++----------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/selfdrive/camerad/cameras/camera_common.cc b/selfdrive/camerad/cameras/camera_common.cc index 20edab14eaf7ef..0570364ec30805 100644 --- a/selfdrive/camerad/cameras/camera_common.cc +++ b/selfdrive/camerad/cameras/camera_common.cc @@ -52,7 +52,7 @@ class Debayer { CL_CHECK(clReleaseProgram(prg_debayer)); } - void queue(cl_command_queue q, cl_mem cam_buf_cl, cl_mem buf_cl, int width, int height, float gain, cl_event *debayer_event) { + void queue(cl_command_queue q, cl_mem cam_buf_cl, cl_mem buf_cl, int width, int height, float gain, float black_level, cl_event *debayer_event) { CL_CHECK(clSetKernelArg(krnl_, 0, sizeof(cl_mem), &cam_buf_cl)); CL_CHECK(clSetKernelArg(krnl_, 1, sizeof(cl_mem), &buf_cl)); @@ -62,6 +62,7 @@ class Debayer { const size_t globalWorkSize[] = {size_t(width), size_t(height)}; const size_t localWorkSize[] = {debayer_local_worksize, debayer_local_worksize}; CL_CHECK(clSetKernelArg(krnl_, 2, localMemSize, 0)); + CL_CHECK(clSetKernelArg(krnl_, 3, sizeof(float), &black_level)); CL_CHECK(clEnqueueNDRangeKernel(q, krnl_, 2, NULL, globalWorkSize, localWorkSize, 0, 0, debayer_event)); } else { if (hdr_) { @@ -165,13 +166,15 @@ bool CameraBuf::acquire() { if (debayer) { float gain = 0.0; - + float black_level = 42.0; #ifndef QCOM2 gain = camera_state->digital_gain; if ((int)gain == 0) gain = 1.0; +#else + if (camera_state->camera_id == CAMERA_ID_IMX390) black_level = 64.0; #endif - debayer->queue(q, camrabuf_cl, cur_rgb_buf->buf_cl, rgb_width, rgb_height, gain, &event); + debayer->queue(q, camrabuf_cl, cur_rgb_buf->buf_cl, rgb_width, rgb_height, gain, black_level, &event); } else { assert(rgb_stride == camera_state->ci.frame_stride); CL_CHECK(clEnqueueCopyBuffer(q, camrabuf_cl, cur_rgb_buf->buf_cl, 0, 0, cur_rgb_buf->len, 0, 0, &event)); diff --git a/selfdrive/camerad/cameras/real_debayer.cl b/selfdrive/camerad/cameras/real_debayer.cl index 4553036ee35646..5bfa2f5feabc26 100644 --- a/selfdrive/camerad/cameras/real_debayer.cl +++ b/selfdrive/camerad/cameras/real_debayer.cl @@ -1,7 +1,5 @@ #pragma OPENCL EXTENSION cl_khr_fp16 : enable -const half black_level = 42.0; - const __constant half3 color_correction[3] = { // post wb CCM (half3)(1.82717181, -0.31231438, 0.07307673), @@ -39,7 +37,7 @@ half3 color_correct(half3 rgb) { return ret; } -half val_from_10(const uchar * source, int gx, int gy) { +half val_from_10(const uchar * source, int gx, int gy, half black_level) { // parse 12bit int start = gy * FRAME_STRIDE + (3 * (gx / 2)); int offset = gx % 2; @@ -49,7 +47,7 @@ half val_from_10(const uchar * source, int gx, int gy) { // normalize pv = max(0.0h, pv - black_level); - pv *= 0.00101833h; // /= (1024.0f - black_level); + pv /= (1024.0f - black_level); // correct vignetting if (CAM_NUM == 1) { // fcamera @@ -89,7 +87,8 @@ half phi(half x) { __kernel void debayer10(const __global uchar * in, __global uchar * out, - __local half * cached + __local half * cached, + float black_level ) { const int x_global = get_global_id(0); @@ -102,7 +101,7 @@ __kernel void debayer10(const __global uchar * in, int out_idx = 3 * x_global + 3 * y_global * RGB_WIDTH; - half pv = val_from_10(in, x_global, y_global); + half pv = val_from_10(in, x_global, y_global, black_level); cached[localOffset] = pv; // don't care @@ -118,22 +117,22 @@ __kernel void debayer10(const __global uchar * in, if (x_local < 1) { localColOffset = x_local; globalColOffset = -1; - cached[(y_local + 1) * localRowLen + x_local] = val_from_10(in, x_global-1, y_global); + cached[(y_local + 1) * localRowLen + x_local] = val_from_10(in, x_global-1, y_global, black_level); } else if (x_local >= get_local_size(0) - 1) { localColOffset = x_local + 2; globalColOffset = 1; - cached[localOffset + 1] = val_from_10(in, x_global+1, y_global); + cached[localOffset + 1] = val_from_10(in, x_global+1, y_global, black_level); } if (y_local < 1) { - cached[y_local * localRowLen + x_local + 1] = val_from_10(in, x_global, y_global-1); + cached[y_local * localRowLen + x_local + 1] = val_from_10(in, x_global, y_global-1, black_level); if (localColOffset != -1) { - cached[y_local * localRowLen + localColOffset] = val_from_10(in, x_global+globalColOffset, y_global-1); + cached[y_local * localRowLen + localColOffset] = val_from_10(in, x_global+globalColOffset, y_global-1, black_level); } } else if (y_local >= get_local_size(1) - 1) { - cached[(y_local + 2) * localRowLen + x_local + 1] = val_from_10(in, x_global, y_global+1); + cached[(y_local + 2) * localRowLen + x_local + 1] = val_from_10(in, x_global, y_global+1, black_level); if (localColOffset != -1) { - cached[(y_local + 2) * localRowLen + localColOffset] = val_from_10(in, x_global+globalColOffset, y_global+1); + cached[(y_local + 2) * localRowLen + localColOffset] = val_from_10(in, x_global+globalColOffset, y_global+1, black_level); } } From 014cd5988734dc9b161325596872868137857803 Mon Sep 17 00:00:00 2001 From: Comma Device Date: Wed, 16 Mar 2022 10:01:57 -0700 Subject: [PATCH 11/13] touchups --- selfdrive/camerad/cameras/camera_qcom2.h | 2 +- selfdrive/camerad/cameras/sensor2_i2c.h | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/selfdrive/camerad/cameras/camera_qcom2.h b/selfdrive/camerad/cameras/camera_qcom2.h index 83dca68238aa88..ef57a728a382e0 100644 --- a/selfdrive/camerad/cameras/camera_qcom2.h +++ b/selfdrive/camerad/cameras/camera_qcom2.h @@ -40,7 +40,7 @@ class CameraState { void sensors_start(); void sensors_poke(int request_id); - void sensors_i2c(struct i2c_random_wr_payload* dat, int len, int op_code, bool as_word); + void sensors_i2c(struct i2c_random_wr_payload* dat, int len, int op_code, bool data_word); int sensors_init(); void camera_open(); diff --git a/selfdrive/camerad/cameras/sensor2_i2c.h b/selfdrive/camerad/cameras/sensor2_i2c.h index 29ad09295fc6be..41f7e36cdd7f92 100644 --- a/selfdrive/camerad/cameras/sensor2_i2c.h +++ b/selfdrive/camerad/cameras/sensor2_i2c.h @@ -1,5 +1,7 @@ struct i2c_random_wr_payload start_reg_array_ar0231[] = {{0x301A, 0x91C}}; +struct i2c_random_wr_payload stop_reg_array_ar0231[] = {{0x301A, 0x918}}; struct i2c_random_wr_payload start_reg_array_imx390[] = {{0x0, 0}}; +struct i2c_random_wr_payload stop_reg_array_imx390[] = {{0x0, 1}}; struct i2c_random_wr_payload init_array_imx390[] = { {0x2008, 0xd0}, {0x2009, 0x07}, {0x200a, 0x00}, // MODE_VMAX = time between frames From 13ec65eb0524fe92fc23274c069cc1f59a614e1f Mon Sep 17 00:00:00 2001 From: Comma Device Date: Wed, 16 Mar 2022 10:20:36 -0700 Subject: [PATCH 12/13] put gain in db scale --- selfdrive/camerad/cameras/camera_qcom2.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/selfdrive/camerad/cameras/camera_qcom2.cc b/selfdrive/camerad/cameras/camera_qcom2.cc index 99ef88d97498c1..5686ef6a37ac70 100644 --- a/selfdrive/camerad/cameras/camera_qcom2.cc +++ b/selfdrive/camerad/cameras/camera_qcom2.cc @@ -1054,10 +1054,11 @@ void CameraState::set_camera_exposure(float grey_frac) { }; sensors_i2c(exp_reg_array, sizeof(exp_reg_array)/sizeof(struct i2c_random_wr_payload), CAM_SENSOR_PACKET_OPCODE_SENSOR_CONFIG, true); } else if (camera_id == CAMERA_ID_IMX390) { - // TODO: is this right? - uint32_t real_exposure_time = (exposure_time >= 0x7d0) ? 1 : (0x7d0 - exposure_time); - uint32_t real_gain = int(gain/0.3); - //printf("%d expose: %d gain: %d\n", camera_num, exposure_time, real_gain); + // if gain is sub 1, we have to use exposure to mimic sub 1 gains + uint32_t real_exposure_time = (gain < 1.0) ? (exposure_time*gain) : exposure_time; + real_exposure_time = (exposure_time >= 0x7d0) ? 1 : (0x7d0 - exposure_time); + uint32_t real_gain = int((10*log10(fmax(1.0, gain)))/0.3); + //printf("%d expose: %d gain: %f = %d\n", camera_num, exposure_time, gain, real_gain); struct i2c_random_wr_payload exp_reg_array[] = { {0x000c, real_exposure_time&0xFF}, {0x000d, real_exposure_time>>8}, {0x0010, real_exposure_time&0xFF}, {0x0011, real_exposure_time>>8}, From ebfe0950dca733bb20854ddb5e7544cd4716a981 Mon Sep 17 00:00:00 2001 From: Comma Device Date: Wed, 16 Mar 2022 10:30:16 -0700 Subject: [PATCH 13/13] inline and fix max exposure --- selfdrive/camerad/cameras/camera_qcom2.cc | 3 ++- selfdrive/camerad/cameras/real_debayer.cl | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/selfdrive/camerad/cameras/camera_qcom2.cc b/selfdrive/camerad/cameras/camera_qcom2.cc index 5686ef6a37ac70..8b27b94d0f200c 100644 --- a/selfdrive/camerad/cameras/camera_qcom2.cc +++ b/selfdrive/camerad/cameras/camera_qcom2.cc @@ -1056,7 +1056,8 @@ void CameraState::set_camera_exposure(float grey_frac) { } else if (camera_id == CAMERA_ID_IMX390) { // if gain is sub 1, we have to use exposure to mimic sub 1 gains uint32_t real_exposure_time = (gain < 1.0) ? (exposure_time*gain) : exposure_time; - real_exposure_time = (exposure_time >= 0x7d0) ? 1 : (0x7d0 - exposure_time); + // invert real_exposure_time, max exposure is 2 + real_exposure_time = (exposure_time >= 0x7cf) ? 2 : (0x7cf - exposure_time); uint32_t real_gain = int((10*log10(fmax(1.0, gain)))/0.3); //printf("%d expose: %d gain: %f = %d\n", camera_num, exposure_time, gain, real_gain); struct i2c_random_wr_payload exp_reg_array[] = { diff --git a/selfdrive/camerad/cameras/real_debayer.cl b/selfdrive/camerad/cameras/real_debayer.cl index 5bfa2f5feabc26..6452e44ebb6b62 100644 --- a/selfdrive/camerad/cameras/real_debayer.cl +++ b/selfdrive/camerad/cameras/real_debayer.cl @@ -37,7 +37,7 @@ half3 color_correct(half3 rgb) { return ret; } -half val_from_10(const uchar * source, int gx, int gy, half black_level) { +inline half val_from_10(const uchar * source, int gx, int gy, half black_level) { // parse 12bit int start = gy * FRAME_STRIDE + (3 * (gx / 2)); int offset = gx % 2;