summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Ziswiler <marcel.ziswiler@toradex.com>2020-12-23 13:35:56 +0100
committerMarcel Ziswiler <marcel.ziswiler@toradex.com>2020-12-23 13:35:56 +0100
commit82b6305ffb30ad2848a58bbea82225e809e73659 (patch)
tree393f94fb52daa08d9d22eb97ea0d8b01b637fa4b
parent911a51f935c02e4173c0d235f6fe5fcf9fded418 (diff)
media: imx8: ar0521 and ar1335 support
Add drivers for e-con Systems AR0521 and AR1335 camera modules. Related to: PMS-387 Signed-off-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
-rw-r--r--arch/arm64/configs/defconfig1
-rw-r--r--drivers/media/platform/Kconfig10
-rw-r--r--drivers/media/platform/imx8/Kconfig14
-rw-r--r--drivers/media/platform/imx8/Makefile2
-rw-r--r--drivers/media/platform/imx8/ar0521.c3619
-rw-r--r--drivers/media/platform/imx8/ar0521.h291
-rw-r--r--drivers/media/platform/imx8/ar1335.c3625
-rw-r--r--drivers/media/platform/imx8/ar1335.h291
-rw-r--r--drivers/media/platform/imx8/ecam131_mcu_fw.txt2129
-rw-r--r--drivers/media/platform/imx8/ecam50_cam_fw.txt2146
-rw-r--r--drivers/media/platform/imx8/mcu_firmware.h91
-rw-r--r--drivers/media/platform/imx8/mcu_firmware_1335.h91
-rw-r--r--drivers/staging/media/imx/imx8-isi-cap.c155
-rw-r--r--drivers/staging/media/imx/imx8-mipi-csi2.c96
-rw-r--r--include/media/v4l2-subdev.h9
15 files changed, 12569 insertions, 1 deletions
diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
index 75b0afe64696..4187ca568ed6 100644
--- a/arch/arm64/configs/defconfig
+++ b/arch/arm64/configs/defconfig
@@ -457,6 +457,7 @@ CONFIG_VIDEO_MXC_CAPTURE=y
CONFIG_VIDEO_MXC_CSI_CAMERA=y
CONFIG_MXC_MIPI_CSI=y
CONFIG_MXC_CAMERA_OV5640_MIPI_V2=m
+CONFIG_VIDEO_ECAM=y
CONFIG_V4L_MEM2MEM_DRIVERS=y
# crashes on i.MX 8M Plus if loaded as a module
CONFIG_VIDEO_OV5640=y
diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
index c1771f54e801..24c2e09ab984 100644
--- a/drivers/media/platform/Kconfig
+++ b/drivers/media/platform/Kconfig
@@ -183,6 +183,16 @@ config VIDEO_TI_CAL
In TI Technical Reference Manual this module is referred as
Camera Interface Subsystem (CAMSS).
+config VIDEO_ECAM
+ tristate "e-con camera sensor support"
+ depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
+ ---help---
+ This config is used to enable codes which are used to
+ support econ camera and to disable ISI control codes.
+
+ To compile this driver as a module, choose M here: the module
+ will be called based on sensor name.
+
endif # V4L_PLATFORM_DRIVERS
menuconfig V4L_MEM2MEM_DRIVERS
diff --git a/drivers/media/platform/imx8/Kconfig b/drivers/media/platform/imx8/Kconfig
index 9e33a590bb72..2f3ea43bb789 100644
--- a/drivers/media/platform/imx8/Kconfig
+++ b/drivers/media/platform/imx8/Kconfig
@@ -12,6 +12,20 @@ config IMX8_JPEG
select VIDEOBUF2_DMA_CONTIG
default m
+config MXC_CAMERA_AR0521
+ tristate "AR0521 Camera driver support"
+ depends on I2C && VIDEO_ECAM
+ default y
+ help
+ Enable support for video4linux camera sensor driver for eCAM50_CUIMX8
+
+config MXC_CAMERA_AR1335
+ tristate "AR1335 Camera driver support"
+ depends on I2C && VIDEO_ECAM
+ default y
+ help
+ Enable support for video4linux camera sensor driver for eCAM131_CUIMX8
+
endmenu
endif #VIDEO_MX8_CAPTURE
diff --git a/drivers/media/platform/imx8/Makefile b/drivers/media/platform/imx8/Makefile
index 15259cf9c13f..b0226f245299 100644
--- a/drivers/media/platform/imx8/Makefile
+++ b/drivers/media/platform/imx8/Makefile
@@ -1,3 +1,5 @@
obj-$(CONFIG_IMX8_MIPI_CSI2_YAV) += mxc-mipi-csi2_yav.o
mxc-jpeg-encdec-objs := mxc-jpeg-hw.o mxc-jpeg.o
obj-$(CONFIG_IMX8_JPEG) += mxc-jpeg-encdec.o
+obj-$(CONFIG_MXC_CAMERA_AR0521) += ar0521.o
+obj-$(CONFIG_MXC_CAMERA_AR1335) += ar1335.o
diff --git a/drivers/media/platform/imx8/ar0521.c b/drivers/media/platform/imx8/ar0521.c
new file mode 100644
index 000000000000..eb2edd101aa1
--- /dev/null
+++ b/drivers/media/platform/imx8/ar0521.c
@@ -0,0 +1,3619 @@
+/*
+ * ar0521.c - AR0521 sensor driver
+ * Copyright (c) 2020-2021, e-con Systems. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <linux/module.h>
+#include <linux/delay.h>
+#include <linux/clk.h>
+#include <linux/i2c.h>
+#include <linux/of_gpio.h>
+#include <linux/pinctrl/consumer.h>
+#include <media/v4l2-device.h>
+#include <media/v4l2-ctrls.h>
+
+#include "ar0521.h"
+#include "mcu_firmware.h"
+
+/*
+#define AR0521_DEBUG 1
+*/
+
+/*!
+ * Maintains the information on the current state of the sensor.
+ */
+static struct ar0521 ar0521_data;
+
+static int pwdn_gpio, reset_gpio;
+
+int gpios_available(void)
+{
+ return (pwdn_gpio >= 0) && (reset_gpio >= 0);
+}
+
+/**********************************************************************
+ *
+ * START of AR0521 related code
+ *
+ **********************************************************************
+ */
+
+static int ar0521_write(struct i2c_client *client, u8 * val, u32 count)
+{
+ int ret;
+ struct i2c_msg msg = {
+ .addr = client->addr,
+ .flags = 0,
+ .len = count,
+ .buf = val,
+ };
+
+ ret = i2c_transfer(client->adapter, &msg, 1);
+ if (ret < 0) {
+ dev_err(&client->dev, "Failed writing register.\n");
+ dev_err(&client->dev, "addr: %x; val = %hhu, ret = %d!\n",
+ client->addr, *val, ret);
+ return ret;
+ }
+
+ return 0;
+}
+
+static int ar0521_read(struct i2c_client *client, u8 * val, u32 count)
+{
+ int ret;
+ struct i2c_msg msg = {
+ .addr = client->addr,
+ .flags = 0,
+ .buf = val,
+ };
+
+ msg.flags = I2C_M_RD;
+ msg.len = count;
+ ret = i2c_transfer(client->adapter, &msg, 1);
+ if (ret < 0)
+ goto err;
+
+ return 0;
+
+ err:
+ dev_err(&client->dev, "Failed reading register ret = %d!\n", ret);
+ return ret;
+}
+
+/*
+ * The MCU specific functions below depend on the sensor-specific
+ * functions above.
+ */
+
+/*
+ * ---------------------------------------------------------
+ * START of MCU realed functions
+ * ---------------------------------------------------------
+ */
+
+/*
+ * NOTE about modularizing this MCU related function.
+ *
+ * - The functions:
+ *
+ * x mcu_get_fw_version
+ * x mcu_bload_get_version
+ * x mcu_bload_erase_flash
+ * x mcu_bload_parse_send_cmd
+ * x mcu_bload_go
+ * x mcu_bload_read
+ * x mcu_count_or_list_ctrls
+ * x mcu_count_or_list_fmts
+ * x mcu_get_sensor_id
+ * x mcu_get_ctrl_ui
+ * x mcu_stream_config
+ * x mcu_isp_power_down
+ * x mcu_isp_power_wakeup
+ * x mcu_set_ctrl
+ * x mcu_get_ctrl
+ *
+ * seem to directly use platform specific functions:
+ *
+ * x ar0521_write
+ * x ar0521_read
+ *
+ * This could be passed in as a function pointer.
+ */
+
+static unsigned short int mcu_bload_calc_crc16(unsigned char *buf, int len)
+{
+ unsigned short int crc = 0;
+ int i = 0;
+
+ if (!buf || !(buf + len))
+ return 0;
+
+ for (i = 0; i < len; i++) {
+ crc ^= buf[i];
+ }
+
+ return crc;
+}
+
+static int mcu_bload_ascii2hex(unsigned char ascii)
+{
+ if (ascii <= '9') {
+ return (ascii - '0');
+ } else if ((ascii >= 'a') && (ascii <= 'f')) {
+ return (0xA + (ascii - 'a'));
+ } else if ((ascii >= 'A') && (ascii <= 'F')) {
+ return (0xA + (ascii - 'A'));
+ }
+ return -1;
+}
+
+static unsigned char errorcheck(char *data, unsigned int len)
+{
+ unsigned int i = 0;
+ unsigned char crc = 0x00;
+
+ for (i = 0; i < len; i++) {
+ crc ^= data[i];
+ }
+
+ return crc;
+}
+
+/*
+ * mcu_get_fw_version:
+ *
+ * Read the firmware version from the MCU.
+ *
+ * A success value (0) is returned when the MCU version could be successfully read.
+ * else a negative value indicating error is returned.
+ */
+static int mcu_get_fw_version(struct i2c_client *client, unsigned char *fw_version)
+{
+ uint32_t payload_len = 0;
+ uint8_t errcode = ERRCODE_SUCCESS, orig_crc = 0, calc_crc = 0;
+ int ret = 0, err = 0, loop;
+ /* Query firmware version from MCU */
+
+ /* lock semaphore */
+ mutex_lock(&mcu_i2c_mutex);
+
+ mc_data[0] = CMD_SIGNATURE;
+ mc_data[1] = CMD_ID_VERSION;
+ mc_data[2] = payload_len >> 8;
+ mc_data[3] = payload_len & 0xFF;
+ mc_data[4] = errorcheck(&mc_data[2], 2);
+
+ err = ar0521_write(client, mc_data, TX_LEN_PKT);
+ if (err != 0)
+ {
+ dev_err(&client->dev, "MCU CMD ID version Error- %d\n", err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ mc_data[0] = CMD_SIGNATURE;
+ mc_data[1] = CMD_ID_VERSION;
+ err = ar0521_write(client, mc_data, 2);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) MCU CMD ID Write PKT fw Version Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ err = ar0521_read(client, mc_ret_data, RX_LEN_PKT);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) MCU CMD ID Read PKT fw Version Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ /* Verify CRC */
+ orig_crc = mc_ret_data[4];
+ calc_crc = errorcheck(&mc_ret_data[2], 2);
+ if (orig_crc != calc_crc) {
+ dev_err(&client->dev," %s(%d) MCU CMD ID fw Version Error CRC 0x%02x != 0x%02x \n",
+ __func__, __LINE__, orig_crc, calc_crc);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ errcode = mc_ret_data[5];
+ if (errcode != ERRCODE_SUCCESS) {
+ dev_err(&client->dev," %s(%d) MCU CMD ID fw Errcode - 0x%02x \n", __func__,
+ __LINE__, errcode);
+ ret = -EIO;
+ goto exit;
+ }
+
+ /* Read the actual version from MCU*/
+ payload_len =
+ ((mc_ret_data[2] << 8) | mc_ret_data[3]) + HEADER_FOOTER_SIZE;
+ memset(mc_ret_data, 0x00, payload_len);
+ err = ar0521_read(client, mc_ret_data, payload_len);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) MCU fw CMD ID Read Version Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ /* Verify CRC */
+ orig_crc = mc_ret_data[payload_len - 2];
+ calc_crc = errorcheck(&mc_ret_data[2], 32);
+ if (orig_crc != calc_crc) {
+ dev_err(&client->dev," %s(%d) MCU fw CMD ID Version CRC ERROR 0x%02x != 0x%02x \n",
+ __func__, __LINE__, orig_crc, calc_crc);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ /* Verify Errcode */
+ errcode = mc_ret_data[payload_len - 1];
+ if (errcode != ERRCODE_SUCCESS) {
+ dev_err(&client->dev," %s(%d) MCU fw CMD ID Read Payload Error - 0x%02x \n", __func__,
+ __LINE__, errcode);
+ ret = -EIO;
+ goto exit;
+ }
+
+ for (loop = 0 ; loop < VERSION_SIZE ; loop++ )
+ *(fw_version+loop) = mc_ret_data[2+loop];
+
+ ret = ERRCODE_SUCCESS;
+exit:
+ /* unlock semaphore */
+ mutex_unlock(&mcu_i2c_mutex);
+
+ return ret;
+}
+
+/**
+ * mcu_verify_fw_version:
+ *
+ * Verify the firmware version obtained from the MCU and that found in the
+ * firmware text file present in our driver.
+ *
+ * The return value after verification is as follows:
+ *
+ * - If the version number matches a success value (0) is returned.
+ *
+ * - In case the version number mismatches, a negative value indicating error
+ * is returned.
+ *
+ * - In case the force update bit is set in firmware version in the text
+ * file, a positive value is returned.
+ */
+static int mcu_verify_fw_version(const unsigned char *const fw_version)
+{
+ int loop, i = 0, ret;
+ char txt_fw_version[32] = {0};
+ unsigned long txt_fw_pos = ARRAY_SIZE(g_mcu_fw_buf)-VERSION_FILE_OFFSET;
+
+ /* Get Text Firmware version*/
+ for(loop = txt_fw_pos; loop < (txt_fw_pos+64); loop=loop+2) {
+ *(txt_fw_version+i) = (mcu_bload_ascii2hex(g_mcu_fw_buf[loop]) << 4 |
+ mcu_bload_ascii2hex(g_mcu_fw_buf[loop+1]));
+ i++;
+ }
+
+ /* Check for forced/always update field in the text firmware version*/
+ if(txt_fw_version[17] == '1') {
+
+#ifdef AR0521_DEBUG
+ pr_info("Forced Update Enabled - Firmware Version - (%.32s) \n",
+ fw_version);
+#endif
+
+ ret = 2;
+ }
+ else {
+ for(i = 0; i < VERSION_SIZE; i++) {
+ if(txt_fw_version[i] != fw_version[i]) {
+
+ pr_info("Previous Firmware Version - (%.32s)\n", fw_version);
+
+ ret = -1;
+ break;
+ }
+ }
+
+ if (i == VERSION_SIZE)
+ ret = ERRCODE_SUCCESS;
+ }
+
+ return ret;
+}
+
+static int mcu_bload_get_version(struct i2c_client *client)
+{
+ int ret = 0;
+
+ /*----------------------------- GET VERSION -------------------- */
+
+ /* Write Get Version CMD */
+ g_bload_buf[0] = BL_GET_VERSION;
+ g_bload_buf[1] = ~(BL_GET_VERSION);
+
+ ret = ar0521_write(client, g_bload_buf, 2);
+ if (ret < 0) {
+ dev_err(&client->dev,"Write Failed \n");
+ return -1;
+ }
+
+ /* Wait for ACK or NACK */
+ ret = ar0521_read(client, g_bload_buf, 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Read Failed \n");
+ return -1;
+ }
+
+ if (g_bload_buf[0] != 'y') {
+ /* NACK Received */
+ dev_err(&client->dev," NACK Received... exiting.. \n");
+ return -1;
+ }
+
+ ret = ar0521_read(client, g_bload_buf, 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Read Failed \n");
+ return -1;
+ }
+
+ ret = ar0521_read(client, g_bload_buf, 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Read Failed\n");
+ return -1;
+ }
+
+ /* ---------------- GET VERSION END ------------------- */
+
+ return 0;
+}
+
+static int mcu_bload_erase_flash(struct i2c_client *client)
+{
+ unsigned short int pagenum = 0x0000;
+ int ret = 0, i = 0, checksum = 0;
+
+ /* --------------- ERASE FLASH --------------------- */
+
+ for (i = 0; i < NUM_ERASE_CYCLES; i++) {
+
+ checksum = 0x00;
+ /* Write Erase Pages CMD */
+ g_bload_buf[0] = BL_ERASE_MEM_NS;
+ g_bload_buf[1] = ~(BL_ERASE_MEM_NS);
+
+ ret = ar0521_write(client, g_bload_buf, 2);
+ if (ret < 0) {
+ dev_err(&client->dev,"Write Failed \n");
+ return -1;
+ }
+
+ /* Wait for ACK or NACK */
+ ret = ar0521_read(client, g_bload_buf, 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Read Failed \n");
+ return -1;
+ }
+
+ if (g_bload_buf[0] != RESP_ACK) {
+ /* NACK Received */
+ dev_err(&client->dev," NACK Received... exiting.. \n");
+ return -1;
+ }
+
+ g_bload_buf[0] = (MAX_PAGES - 1) >> 8;
+ g_bload_buf[1] = (MAX_PAGES - 1) & 0xFF;
+ g_bload_buf[2] = g_bload_buf[0] ^ g_bload_buf[1];
+
+ ret = ar0521_write(client, g_bload_buf, 3);
+ if (ret < 0) {
+ dev_err(&client->dev,"Write Failed \n");
+ return -1;
+ }
+
+ /* Wait for ACK or NACK */
+ ret = ar0521_read(client, g_bload_buf, 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Read Failed \n");
+ return -1;
+ }
+
+ if (g_bload_buf[0] != RESP_ACK) {
+ /* NACK Received */
+ dev_err(&client->dev," NACK Received... exiting.. \n");
+ return -1;
+ }
+
+ for (pagenum = 0; pagenum < MAX_PAGES; pagenum++) {
+ g_bload_buf[(2 * pagenum)] =
+ (pagenum + (i * MAX_PAGES)) >> 8;
+ g_bload_buf[(2 * pagenum) + 1] =
+ (pagenum + (i * MAX_PAGES)) & 0xFF;
+ checksum =
+ checksum ^ g_bload_buf[(2 * pagenum)] ^
+ g_bload_buf[(2 * pagenum) + 1];
+ }
+ g_bload_buf[2 * MAX_PAGES] = checksum;
+
+ ret = ar0521_write(client, g_bload_buf, (2 * MAX_PAGES) + 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Write Failed \n");
+ return -1;
+ }
+
+ poll_busy:
+ /* Wait for ACK or NACK */
+ ret = ar0521_read(client, g_bload_buf, 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Read Failed \n");
+ return -1;
+ }
+
+ if (g_bload_buf[0] == RESP_BUSY)
+ goto poll_busy;
+
+ if (g_bload_buf[0] != RESP_ACK) {
+ /* NACK Received */
+ dev_err(&client->dev," NACK Received... exiting.. \n");
+ return -1;
+ }
+
+#ifdef AR0521_DEBUG
+ pr_info(" ERASE Sector %d success !! \n", i + 1);
+#endif
+ }
+
+ /* ------------ ERASE FLASH END ----------------------- */
+
+ return 0;
+}
+
+static unsigned char mcu_bload_inv_checksum(unsigned char *buf, int len)
+{
+ unsigned int checksum = 0x00;
+ int i = 0;
+
+ if (!buf || !(buf + len))
+ return 0;
+
+ for (i = 0; i < len; i++) {
+ checksum = (checksum + buf[i]);
+ }
+
+ checksum &= (0xFF);
+ return (~(checksum) + 1);
+}
+
+static int mcu_bload_parse_send_cmd(struct i2c_client *client,
+ unsigned char *bytearray, int rec_len)
+{
+ IHEX_RECORD *ihex_rec = NULL;
+ unsigned char checksum = 0, calc_checksum = 0;
+ int i = 0, ret = 0;
+
+ if (!bytearray)
+ return -1;
+
+ ihex_rec = (IHEX_RECORD *) bytearray;
+ ihex_rec->addr = htons(ihex_rec->addr);
+
+ checksum = bytearray[rec_len - 1];
+
+ calc_checksum = mcu_bload_inv_checksum(bytearray, rec_len - 1);
+ if (checksum != calc_checksum) {
+ dev_err(&client->dev," Invalid Checksum 0x%02x != 0x%02x !! \n",
+ checksum, calc_checksum);
+ return -1;
+ }
+
+ if ((ihex_rec->rectype == REC_TYPE_ELA)
+ && (ihex_rec->addr == 0x0000)
+ && (ihex_rec->datasize = 0x02)) {
+ /* Upper 32-bit configuration */
+ g_bload_flashaddr = (ihex_rec->recdata[0] <<
+ 24) | (ihex_rec->recdata[1]
+ << 16);
+#ifdef AR0521_DEBUG
+ pr_info("Updated Flash Addr = 0x%08x \n",
+ g_bload_flashaddr);
+#endif
+
+ } else if (ihex_rec->rectype == REC_TYPE_DATA) {
+ /* Flash Data into Flashaddr */
+
+ g_bload_flashaddr =
+ (g_bload_flashaddr & 0xFFFF0000) | (ihex_rec->addr);
+ g_bload_crc16 ^=
+ mcu_bload_calc_crc16(ihex_rec->recdata, ihex_rec->datasize);
+
+ /* Write Erase Pages CMD */
+ g_bload_buf[0] = BL_WRITE_MEM_NS;
+ g_bload_buf[1] = ~(BL_WRITE_MEM_NS);
+
+ ret = ar0521_write(client, g_bload_buf, 2);
+ if (ret < 0) {
+ dev_err(&client->dev,"Write Failed \n");
+ return -1;
+ }
+
+ /* Wait for ACK or NACK */
+ ret = ar0521_read(client, g_bload_buf, 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Read Failed \n");
+ return -1;
+ }
+
+ if (g_bload_buf[0] != RESP_ACK) {
+ /* NACK Received */
+ dev_err(&client->dev," NACK Received... exiting.. \n");
+ return -1;
+ }
+
+ g_bload_buf[0] = (g_bload_flashaddr & 0xFF000000) >> 24;
+ g_bload_buf[1] = (g_bload_flashaddr & 0x00FF0000) >> 16;
+ g_bload_buf[2] = (g_bload_flashaddr & 0x0000FF00) >> 8;
+ g_bload_buf[3] = (g_bload_flashaddr & 0x000000FF);
+ g_bload_buf[4] =
+ g_bload_buf[0] ^ g_bload_buf[1] ^ g_bload_buf[2] ^
+ g_bload_buf[3];
+
+ ret = ar0521_write(client, g_bload_buf, 5);
+ if (ret < 0) {
+ dev_err(&client->dev,"Write Failed \n");
+ return -1;
+ }
+
+ /* Wait for ACK or NACK */
+ ret = ar0521_read(client, g_bload_buf, 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Read Failed \n");
+ return -1;
+ }
+
+ if (g_bload_buf[0] != RESP_ACK) {
+ /* NACK Received */
+ dev_err(&client->dev," NACK Received... exiting.. \n");
+ return -1;
+ }
+
+ g_bload_buf[0] = ihex_rec->datasize - 1;
+ checksum = g_bload_buf[0];
+ for (i = 0; i < ihex_rec->datasize; i++) {
+ g_bload_buf[i + 1] = ihex_rec->recdata[i];
+ checksum ^= g_bload_buf[i + 1];
+ }
+
+ g_bload_buf[i + 1] = checksum;
+
+ ret = ar0521_write(client, g_bload_buf, i + 2);
+ if (ret < 0) {
+ dev_err(&client->dev,"Write Failed \n");
+ return -1;
+ }
+
+ poll_busy:
+ /* Wait for ACK or NACK */
+ ret = ar0521_read(client, g_bload_buf, 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Read Failed \n");
+ return -1;
+ }
+
+ if (g_bload_buf[0] == RESP_BUSY)
+ goto poll_busy;
+
+ if (g_bload_buf[0] != RESP_ACK) {
+ /* NACK Received */
+ dev_err(&client->dev," NACK Received... exiting.. \n");
+ return -1;
+ }
+
+ } else if (ihex_rec->rectype == REC_TYPE_SLA) {
+ /* Update Instruction pointer to this address */
+
+ } else if (ihex_rec->rectype == REC_TYPE_EOF) {
+ /* End of File - Issue I2C Go Command */
+ return 0;
+ } else {
+
+ /* Unhandled Type */
+ dev_err(&client->dev,"Unhandled Command Type \n");
+ return -1;
+ }
+
+ return 0;
+}
+
+static int mcu_bload_update_fw(struct i2c_client *client)
+{
+ /* exclude NULL character at end of string */
+ unsigned long hex_file_size = ARRAY_SIZE(g_mcu_fw_buf) - 1;
+ unsigned char wbuf[MAX_BUF_LEN];
+ int i = 0, recindex = 0, ret = 0;
+
+ for (i = 0; i < hex_file_size; i++) {
+ if ((recindex == 0) && (g_mcu_fw_buf[i] == ':')) {
+ /* pr_info("Start of a Record \n"); */
+ } else if (g_mcu_fw_buf[i] == CR) {
+ /* No Implementation */
+ } else if (g_mcu_fw_buf[i] == LF) {
+ if (recindex == 0) {
+ /* Parsing Complete */
+ break;
+ }
+
+ /* Analyze Packet and Send Commands */
+ ret = mcu_bload_parse_send_cmd(client, wbuf, recindex);
+ if (ret < 0) {
+ dev_err(&client->dev,"Error in Processing Commands \n");
+ break;
+ }
+
+ recindex = 0;
+
+ } else {
+ /* Parse Rec Data */
+ if ((ret = mcu_bload_ascii2hex(g_mcu_fw_buf[i])) < 0) {
+ dev_err(&client->dev,
+ "Invalid Character - 0x%02x !! \n",
+ g_mcu_fw_buf[i]);
+ break;
+ }
+
+ wbuf[recindex] = (0xF0 & (ret << 4));
+ i++;
+
+ if ((ret = mcu_bload_ascii2hex(g_mcu_fw_buf[i])) < 0) {
+ dev_err(&client->dev,
+ "Invalid Character - 0x%02x !!!! \n",
+ g_mcu_fw_buf[i]);
+ break;
+ }
+
+ wbuf[recindex] |= (0x0F & ret);
+ recindex++;
+ }
+ }
+
+#ifdef AR0521_DEBUG
+ pr_info("Program FLASH Success !! - CRC = 0x%04x \n",
+ g_bload_crc16);
+#endif
+
+ /* ------------ PROGRAM FLASH END ----------------------- */
+
+ return ret;
+}
+
+static int mcu_bload_read(struct i2c_client *client,
+ unsigned int g_bload_flashaddr, char *bytearray,
+ unsigned int len)
+{
+ int ret = 0;
+
+ g_bload_buf[0] = BL_READ_MEM;
+ g_bload_buf[1] = ~(BL_READ_MEM);
+
+ ret = ar0521_write(client, g_bload_buf, 2);
+ if (ret < 0) {
+ dev_err(&client->dev,"Write Failed \n");
+ return -1;
+ }
+
+ /* Wait for ACK or NACK */
+ ret = ar0521_read(client, g_bload_buf, 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Read Failed \n");
+ return -1;
+ }
+
+ if (g_bload_buf[0] != RESP_ACK) {
+ /* NACK Received */
+ dev_err(&client->dev," NACK Received... exiting.. \n");
+ return -1;
+ }
+
+ g_bload_buf[0] = (g_bload_flashaddr & 0xFF000000) >> 24;
+ g_bload_buf[1] = (g_bload_flashaddr & 0x00FF0000) >> 16;
+ g_bload_buf[2] = (g_bload_flashaddr & 0x0000FF00) >> 8;
+ g_bload_buf[3] = (g_bload_flashaddr & 0x000000FF);
+ g_bload_buf[4] =
+ g_bload_buf[0] ^ g_bload_buf[1] ^ g_bload_buf[2] ^ g_bload_buf[3];
+
+ ret = ar0521_write(client, g_bload_buf, 5);
+ if (ret < 0) {
+ dev_err(&client->dev,"Write Failed \n");
+ return -1;
+ }
+
+ /* Wait for ACK or NACK */
+ ret = ar0521_read(client, g_bload_buf, 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Read Failed \n");
+ return -1;
+ }
+
+ if (g_bload_buf[0] != RESP_ACK) {
+ /* NACK Received */
+ dev_err(&client->dev," NACK Received... exiting.. \n");
+ return -1;
+ }
+
+ g_bload_buf[0] = len - 1;
+ g_bload_buf[1] = ~(len - 1);
+
+ ret = ar0521_write(client, g_bload_buf, 2);
+ if (ret < 0) {
+ dev_err(&client->dev,"Write Failed \n");
+ return -1;
+ }
+
+ /* Wait for ACK or NACK */
+ ret = ar0521_read(client, g_bload_buf, 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Read Failed \n");
+ return -1;
+ }
+
+ if (g_bload_buf[0] != RESP_ACK) {
+ /* NACK Received */
+ dev_err(&client->dev," NACK Received... exiting.. \n");
+ return -1;
+ }
+
+ ret = ar0521_read(client, bytearray, len);
+ if (ret < 0) {
+ dev_err(&client->dev,"Read Failed \n");
+ return -1;
+ }
+
+ return 0;
+}
+
+static int mcu_bload_verify_flash(struct i2c_client *client,
+ unsigned short int orig_crc)
+{
+ char bytearray[FLASH_READ_LEN];
+ unsigned short int calc_crc = 0;
+ unsigned int flash_addr = FLASH_START_ADDRESS, i = 0;
+
+ while ((i + FLASH_READ_LEN) <= FLASH_SIZE) {
+ memset(bytearray, 0x0, FLASH_READ_LEN);
+
+ if (mcu_bload_read(
+ client, flash_addr + i, bytearray, FLASH_READ_LEN) < 0) {
+ dev_err(&client->dev," i2c_bload_read FAIL !! \n");
+ return -1;
+ }
+
+ calc_crc ^= mcu_bload_calc_crc16(bytearray, FLASH_READ_LEN);
+ i += FLASH_READ_LEN;
+ }
+
+ if ((FLASH_SIZE - i) > 0) {
+ memset(bytearray, 0x0, FLASH_READ_LEN);
+
+ if (mcu_bload_read(
+ client, flash_addr + i, bytearray, (FLASH_SIZE - i)
+ ) < 0) {
+ dev_err(&client->dev," i2c_bload_read FAIL !! \n");
+ return -1;
+ }
+
+ calc_crc ^= mcu_bload_calc_crc16(bytearray, FLASH_READ_LEN);
+ }
+
+ if (orig_crc != calc_crc) {
+ dev_err(&client->dev," CRC verification fail !! 0x%04x != 0x%04x \n",
+ orig_crc, calc_crc);
+ }
+
+#ifdef AR0521_DEBUG
+ pr_info(" CRC Verification Success 0x%04x == 0x%04x \n",
+ orig_crc, calc_crc);
+#endif
+
+ return 0;
+}
+
+static int mcu_bload_go(struct i2c_client *client)
+{
+ int ret = 0;
+
+ g_bload_buf[0] = BL_GO;
+ g_bload_buf[1] = ~(BL_GO);
+
+ ret = ar0521_write(client, g_bload_buf, 2);
+ if (ret < 0) {
+ dev_err(&client->dev,"Write Failed \n");
+ return -1;
+ }
+
+ ret = ar0521_read(client, g_bload_buf, 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Failed Read 1 \n");
+ return -1;
+ }
+
+ /* Start Address */
+ g_bload_buf[0] = (FLASH_START_ADDRESS & 0xFF000000) >> 24;
+ g_bload_buf[1] = (FLASH_START_ADDRESS & 0x00FF0000) >> 16;
+ g_bload_buf[2] = (FLASH_START_ADDRESS & 0x0000FF00) >> 8;
+ g_bload_buf[3] = (FLASH_START_ADDRESS & 0x000000FF);
+ g_bload_buf[4] =
+ g_bload_buf[0] ^ g_bload_buf[1] ^ g_bload_buf[2] ^ g_bload_buf[3];
+
+ ret = ar0521_write(client, g_bload_buf, 5);
+ if (ret < 0) {
+ dev_err(&client->dev,"Write Failed \n");
+ return -1;
+ }
+
+ ret = ar0521_read(client, g_bload_buf, 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Failed Read 1 \n");
+ return -1;
+ }
+
+ if (g_bload_buf[0] != RESP_ACK) {
+ /* NACK Received */
+ dev_err(&client->dev," NACK Received... exiting.. \n");
+ return -1;
+ }
+
+ return 0;
+}
+
+static int mcu_fw_update(struct i2c_client *client, unsigned char *mcu_fw_version)
+{
+ int ret = 0;
+ g_bload_crc16 = 0;
+
+ /*
+ * TODO: Is this necessary? It seems redundant as it's already called before
+ * calling this function.
+ */
+ /* Read Firmware version from bootloader MCU */
+ ret = mcu_bload_get_version(client);
+ if (ret < 0) {
+ dev_err(&client->dev," Error in Get Version \n");
+ goto exit;
+ }
+
+#ifdef AR0521_DEBUG
+ pr_info(" Get Version SUCCESS !! \n");
+#endif
+
+ /* Erase firmware present in the MCU and flash new firmware*/
+ ret = mcu_bload_erase_flash(client);
+ if (ret < 0) {
+ dev_err(&client->dev," Error in Erase Flash \n");
+ goto exit;
+ }
+
+#ifdef AR0521_DEBUG
+ pr_info("Erase Flash Success !! \n");
+#endif
+
+ /* Read the firmware present in the text file */
+ if ((ret = mcu_bload_update_fw(client)) < 0) {
+ dev_err(&client->dev," Write Flash FAIL !! \n");
+ goto exit;
+ }
+
+ /* Verify the checksum for the update firmware */
+ if ((ret = mcu_bload_verify_flash(client, g_bload_crc16)) < 0) {
+ dev_err(&client->dev," verify_flash FAIL !! \n");
+ goto exit;
+ }
+
+ /* Reverting from bootloader mode */
+ /* I2C GO Command */
+ if ((ret = mcu_bload_go(client)) < 0) {
+ dev_err(&client->dev," i2c_bload_go FAIL !! \n");
+ goto exit;
+ }
+
+ if(mcu_fw_version) {
+
+#ifdef AR0521_DEBUG
+ pr_info("(%s) - Firmware Updated - (%.32s)\n",
+ __func__, mcu_fw_version);
+#endif
+
+ }
+ exit:
+ return ret;
+}
+
+static int mcu_count_or_list_ctrls(struct i2c_client *client,
+ ISP_CTRL_INFO * mcu_cam_ctrl, int *numctrls)
+{
+ uint32_t payload_len = 0;
+ uint8_t errcode = ERRCODE_SUCCESS, orig_crc = 0, calc_crc = 0;
+ uint16_t index = 0;
+ int ret = 0, err = 0;
+
+ /* lock semaphore */
+ mutex_lock(&mcu_i2c_mutex);
+
+ /* Array of Ctrl Info */
+ while (1) {
+ /* First Txn Payload length = 0 */
+ payload_len = 2;
+
+ mc_data[0] = CMD_SIGNATURE;
+ mc_data[1] = CMD_ID_GET_CTRL_INFO;
+ mc_data[2] = payload_len >> 8;
+ mc_data[3] = payload_len & 0xFF;
+ mc_data[4] = errorcheck(&mc_data[2], 2);
+
+ ar0521_write(client, mc_data, TX_LEN_PKT);
+
+ mc_data[0] = CMD_SIGNATURE;
+ mc_data[1] = CMD_ID_GET_CTRL_INFO;
+ mc_data[2] = index >> 8;
+ mc_data[3] = index & 0xFF;
+ mc_data[4] = errorcheck(&mc_data[2], 2);
+ err = ar0521_write(client, mc_data, 5);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n",
+ __func__, __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ err = ar0521_read(client, mc_ret_data, RX_LEN_PKT);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n",
+ __func__, __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ /* Verify CRC */
+ orig_crc = mc_ret_data[4];
+ calc_crc = errorcheck(&mc_ret_data[2], 2);
+ if (orig_crc != calc_crc) {
+ dev_err(&client->dev,
+ " %s(%d) CRC 0x%02x != 0x%02x \n",
+ __func__, __LINE__, orig_crc, calc_crc);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ if (((mc_ret_data[2] << 8) | mc_ret_data[3]) == 0) {
+ *numctrls = index;
+ break;
+ }
+
+ payload_len =
+ ((mc_ret_data[2] << 8) | mc_ret_data[3]) +
+ HEADER_FOOTER_SIZE;
+ errcode = mc_ret_data[5];
+ if (errcode != ERRCODE_SUCCESS) {
+ dev_err(&client->dev,
+ " %s(%d) Errcode - 0x%02x \n",
+ __func__, __LINE__, errcode);
+ ret = -EIO;
+ goto exit;
+ }
+
+ memset(mc_ret_data, 0x00, payload_len);
+ err = ar0521_read(client, mc_ret_data, payload_len);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n",
+ __func__, __LINE__, err);
+ ret = -1;
+ goto exit;
+ }
+
+ /* Verify CRC */
+ orig_crc = mc_ret_data[payload_len - 2];
+ calc_crc =
+ errorcheck(&mc_ret_data[2],
+ payload_len - HEADER_FOOTER_SIZE);
+ if (orig_crc != calc_crc) {
+ dev_err(&client->dev,
+ " %s(%d) CRC 0x%02x != 0x%02x \n",
+ __func__, __LINE__, orig_crc, calc_crc);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ /* Verify Errcode */
+ errcode = mc_ret_data[payload_len - 1];
+ if (errcode != ERRCODE_SUCCESS) {
+ dev_err(&client->dev,
+ " %s(%d) Errcode - 0x%02x \n",
+ __func__, __LINE__, errcode);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ if(mcu_cam_ctrl != NULL) {
+ int sorted_elem = index - 1, elem = index;
+
+ /* append ctrl info in array */
+ mcu_cam_ctrl[index].ctrl_id =
+ mc_ret_data[2] << 24 | mc_ret_data[3] << 16 | mc_ret_data[4]
+ << 8 | mc_ret_data[5];
+ mcu_cam_ctrl[index].ctrl_type = mc_ret_data[6];
+
+ switch (mcu_cam_ctrl[index].ctrl_type) {
+ case CTRL_STANDARD:
+ mcu_cam_ctrl[index].ctrl_data.std.ctrl_min =
+ mc_ret_data[7] << 24 | mc_ret_data[8] << 16
+ | mc_ret_data[9] << 8 | mc_ret_data[10];
+
+ mcu_cam_ctrl[index].ctrl_data.std.ctrl_max =
+ mc_ret_data[11] << 24 | mc_ret_data[12] <<
+ 16 | mc_ret_data[13]
+ << 8 | mc_ret_data[14];
+
+ mcu_cam_ctrl[index].ctrl_data.std.ctrl_def =
+ mc_ret_data[15] << 24 | mc_ret_data[16] <<
+ 16 | mc_ret_data[17]
+ << 8 | mc_ret_data[18];
+
+ mcu_cam_ctrl[index].ctrl_data.std.ctrl_step =
+ mc_ret_data[19] << 24 | mc_ret_data[20] <<
+ 16 | mc_ret_data[21]
+ << 8 | mc_ret_data[22];
+
+ mcu_cam_ctrl[index].mcu_ctrl_index = index;
+ break;
+
+ case CTRL_EXTENDED:
+ /* Not Implemented */
+ break;
+ }
+
+#ifdef AR0521_DEBUG
+ pr_info("Control: ID: 0x%x; Type: %u; min: %d; Max: %d; Def: %d; Step: %u\n",
+ mcu_cam_ctrl[index].ctrl_id,
+ mcu_cam_ctrl[index].ctrl_type,
+ mcu_cam_ctrl[index].ctrl_data.std.ctrl_min,
+ mcu_cam_ctrl[index].ctrl_data.std.ctrl_max,
+ mcu_cam_ctrl[index].ctrl_data.std.ctrl_def,
+ mcu_cam_ctrl[index].ctrl_data.std.ctrl_step
+ );
+#endif
+
+ ctrldb[index] = mcu_cam_ctrl[index].ctrl_id;
+
+ /*
+ * Keep the control list and control db sorted.
+ */
+ while(
+ sorted_elem >= 0 &&
+ (
+ mcu_cam_ctrl[sorted_elem].ctrl_id >
+ mcu_cam_ctrl[elem].ctrl_id
+ )
+ )
+ {
+ ISP_CTRL_INFO swap_ctrl_elem;
+ uint32_t swap_ctrldb_elem;
+
+ /*
+ * Swap the elements in the mcu_cam_ctrl list
+ */
+ memcpy(&swap_ctrl_elem, (mcu_cam_ctrl + sorted_elem), sizeof(ISP_CTRL_INFO));
+ memcpy((mcu_cam_ctrl + sorted_elem), (mcu_cam_ctrl + elem), sizeof(ISP_CTRL_INFO));
+ memcpy((mcu_cam_ctrl + elem), &swap_ctrl_elem, sizeof(ISP_CTRL_INFO));
+
+ /*
+ * Swap the elements in ctrldb
+ */
+ swap_ctrldb_elem = ctrldb[sorted_elem];
+ ctrldb[sorted_elem] = ctrldb[elem];
+ ctrldb[elem] = swap_ctrldb_elem;
+
+ elem = sorted_elem;
+ sorted_elem = elem - 1;
+ }
+ }
+ index++;
+ }
+
+ exit:
+ /* unlock semaphore */
+ mutex_unlock(&mcu_i2c_mutex);
+
+ return ret;
+}
+
+static int mcu_count_or_list_fmts(struct i2c_client *client, ISP_STREAM_INFO *stream_info, int *frm_fmt_size)
+{
+ uint32_t payload_len = 0, err = 0;
+ uint8_t errcode = ERRCODE_SUCCESS, orig_crc = 0, calc_crc = 0, skip = 0;
+ uint16_t index = 0, mode = 0;
+
+ int loop = 0, num_frates = 0, ret = 0;
+
+ /* Stream Info Variables */
+
+ /* lock semaphore */
+ mutex_lock(&mcu_i2c_mutex);
+
+ /* List all formats from MCU and append to mcu_ar0521_frmfmt array */
+
+ for (index = 0;; index++) {
+ /* First Txn Payload length = 0 */
+ payload_len = 2;
+
+ mc_data[0] = CMD_SIGNATURE;
+ mc_data[1] = CMD_ID_GET_STREAM_INFO;
+ mc_data[2] = payload_len >> 8;
+ mc_data[3] = payload_len & 0xFF;
+ mc_data[4] = errorcheck(&mc_data[2], 2);
+
+ ar0521_write(client, mc_data, TX_LEN_PKT);
+
+ mc_data[0] = CMD_SIGNATURE;
+ mc_data[1] = CMD_ID_GET_STREAM_INFO;
+ mc_data[2] = index >> 8;
+ mc_data[3] = index & 0xFF;
+ mc_data[4] = errorcheck(&mc_data[2], 2);
+ err = ar0521_write(client, mc_data, 5);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n",
+ __func__, __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ err = ar0521_read(client, mc_ret_data, RX_LEN_PKT);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n",
+ __func__, __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ /* Verify CRC */
+ orig_crc = mc_ret_data[4];
+ calc_crc = errorcheck(&mc_ret_data[2], 2);
+ if (orig_crc != calc_crc) {
+ dev_err(&client->dev,
+ " %s(%d) CRC 0x%02x != 0x%02x \n",
+ __func__, __LINE__, orig_crc, calc_crc);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ if (((mc_ret_data[2] << 8) | mc_ret_data[3]) == 0) {
+ if(stream_info == NULL) {
+ *frm_fmt_size = index;
+ } else {
+ *frm_fmt_size = mode;
+ }
+ break;
+ }
+
+ payload_len =
+ ((mc_ret_data[2] << 8) | mc_ret_data[3]) +
+ HEADER_FOOTER_SIZE;
+ errcode = mc_ret_data[5];
+ if (errcode != ERRCODE_SUCCESS) {
+ dev_err(&client->dev,
+ " %s(%d) Errcode - 0x%02x \n",
+ __func__, __LINE__, errcode);
+ ret = -EIO;
+ goto exit;
+ }
+
+ memset(mc_ret_data, 0x00, payload_len);
+ err = ar0521_read(client, mc_ret_data, payload_len);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n",
+ __func__, __LINE__, err);
+ ret = -1;
+ goto exit;
+ }
+
+ /* Verify CRC */
+ orig_crc = mc_ret_data[payload_len - 2];
+ calc_crc =
+ errorcheck(&mc_ret_data[2],
+ payload_len - HEADER_FOOTER_SIZE);
+ if (orig_crc != calc_crc) {
+ dev_err(&client->dev,
+ " %s(%d) CRC 0x%02x != 0x%02x \n",
+ __func__, __LINE__, orig_crc, calc_crc);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ /* Verify Errcode */
+ errcode = mc_ret_data[payload_len - 1];
+ if (errcode != ERRCODE_SUCCESS) {
+ dev_err(&client->dev,
+ " %s(%d) Errcode - 0x%02x \n",
+ __func__, __LINE__, errcode);
+ ret = -EIO;
+ goto exit;
+ }
+ if(stream_info != NULL) {
+ stream_info->fmt_fourcc =
+ mc_ret_data[2] << 24 | mc_ret_data[3] << 16 | mc_ret_data[4]
+ << 8 | mc_ret_data[5];
+ stream_info->width = mc_ret_data[6] << 8 | mc_ret_data[7];
+ stream_info->height = mc_ret_data[8] << 8 | mc_ret_data[9];
+ stream_info->frame_rate_type = mc_ret_data[10];
+
+ switch (stream_info->frame_rate_type) {
+ case FRAME_RATE_DISCRETE:
+ stream_info->frame_rate.disc.frame_rate_num =
+ mc_ret_data[11] << 8 | mc_ret_data[12];
+
+ stream_info->frame_rate.disc.frame_rate_denom =
+ mc_ret_data[13] << 8 | mc_ret_data[14];
+
+ break;
+
+ case FRAME_RATE_CONTINOUS:
+ dev_err(&client->dev,
+ " The Stream format at index 0x%04x has FRAME_RATE_CONTINOUS,"
+ "which is unsupported !! \n", index);
+
+ continue;
+ }
+
+ switch (stream_info->fmt_fourcc) {
+ /*
+ * We check for UYVY here instead of YUYV as the output from the sensor
+ * is UYVY. We swap it to YUYV only making changes in the platform driver.
+ */
+ case V4L2_PIX_FMT_UYVY:
+ /* ar0521_codes is already populated with V4L2_PIX_FMT_YUYV */
+ /* check if width and height are already in array - update frame rate only */
+ for (loop = 0; loop < (mode); loop++) {
+ if ((ar0521_data.mcu_cam_frmfmt[loop].size.width ==
+ stream_info->width)
+ && (ar0521_data.mcu_cam_frmfmt[loop].size.height ==
+ stream_info->height)) {
+
+ num_frates =
+ ar0521_data.mcu_cam_frmfmt[loop].num_framerates;
+ *((int *)(ar0521_data.mcu_cam_frmfmt[loop].framerates) + num_frates)
+ = (int)(stream_info->frame_rate.
+ disc.frame_rate_num /
+ stream_info->frame_rate.
+ disc.frame_rate_denom);
+
+ ar0521_data.mcu_cam_frmfmt[loop].num_framerates++;
+
+ streamdb[index] = loop;
+ skip = 1;
+ break;
+ }
+ }
+
+ if (skip) {
+ skip = 0;
+ continue;
+ }
+
+ /* Add Width, Height, Frame Rate array, Mode into mcu_ar0521_frmfmt array */
+ ar0521_data.mcu_cam_frmfmt[mode].size.width = stream_info->width;
+ ar0521_data.mcu_cam_frmfmt[mode].size.height = stream_info->height;
+
+ num_frates = ar0521_data.mcu_cam_frmfmt[mode].num_framerates;
+
+ *(ar0521_data.mcu_cam_frmfmt[mode].framerates + num_frates) =
+ (int)(stream_info->frame_rate.disc.frame_rate_num /
+ stream_info->frame_rate.disc.frame_rate_denom);
+
+ ar0521_data.mcu_cam_frmfmt[mode].num_framerates++;
+
+ ar0521_data.mcu_cam_frmfmt[mode].mode = mode;
+ ar0521_data.mcu_cam_frmfmt[mode].mode = mode;
+ streamdb[index] = mode;
+ mode++;
+ break;
+
+ default:
+ dev_err(&client->dev,
+ " The Stream format at index 0x%04x has format 0x%08x ,"
+ "which is unsupported !! \n", index,
+ stream_info->fmt_fourcc);
+ }
+ }
+ }
+
+ exit:
+ /* unlock semaphore */
+ mutex_unlock(&mcu_i2c_mutex);
+
+ return ret;
+}
+
+/*
+ * Function to initialise the data related to MCU. Needs to be called
+ * before trying to use them.
+ */
+static int mcu_data_init(struct device *dev, int frm_fmt_size)
+{
+ int loop = 0;
+
+ if (dev == NULL)
+ {
+ dev_err(dev, "%s: Invalid device parameter\n", __func__);
+ return -EINVAL;
+ }
+
+ mcu_ctrl_info = devm_kzalloc(dev, sizeof(ISP_CTRL_INFO) * num_ctrls, GFP_KERNEL);
+ if(!mcu_ctrl_info) {
+ dev_err(dev, "Unable to allocate memory \n");
+ return -ENOMEM;
+ }
+
+ ctrldb = devm_kzalloc(dev, sizeof(uint32_t) * num_ctrls, GFP_KERNEL);
+ if(!ctrldb) {
+ dev_err(dev, "Unable to allocate memory \n");
+ return -ENOMEM;
+ }
+
+ stream_info = devm_kzalloc(dev, sizeof(ISP_STREAM_INFO) * (frm_fmt_size + 1), GFP_KERNEL);
+
+ streamdb = devm_kzalloc(dev, sizeof(int) * (frm_fmt_size + 1), GFP_KERNEL);
+ if(!streamdb) {
+ dev_err(dev,"Unable to allocate memory \n");
+ return -ENOMEM;
+ }
+
+ ar0521_data.mcu_cam_frmfmt = devm_kzalloc(dev, sizeof(struct mcu_frmfmt) * (frm_fmt_size), GFP_KERNEL);
+ if(!ar0521_data.mcu_cam_frmfmt) {
+ dev_err(dev, "Unable to allocate memory \n");
+ return -ENOMEM;
+ }
+
+ for(; loop < frm_fmt_size; loop++) {
+ ar0521_data.mcu_cam_frmfmt[loop].framerates = devm_kzalloc(dev, sizeof(int) * MAX_NUM_FRATES, GFP_KERNEL);
+ if(!ar0521_data.mcu_cam_frmfmt[loop].framerates) {
+ dev_err(dev, "Unable to allocate memory \n");
+ return -ENOMEM;
+ }
+ }
+
+ return 0;
+}
+
+static int mcu_get_sensor_id(struct i2c_client *client, uint16_t * sensor_id)
+{
+ uint32_t payload_len = 0;
+ uint8_t errcode = ERRCODE_SUCCESS, orig_crc = 0, calc_crc = 0;
+
+ int ret = 0, err = 0;
+
+ /* lock semaphore */
+ mutex_lock(&mcu_i2c_mutex);
+
+ /* Read the version info. from Micro controller */
+
+ /* First Txn Payload length = 0 */
+ payload_len = 0;
+
+ mc_data[0] = CMD_SIGNATURE;
+ mc_data[1] = CMD_ID_GET_SENSOR_ID;
+ mc_data[2] = payload_len >> 8;
+ mc_data[3] = payload_len & 0xFF;
+ mc_data[4] = errorcheck(&mc_data[2], 2);
+
+ ar0521_write(client, mc_data, TX_LEN_PKT);
+
+ mc_data[0] = CMD_SIGNATURE;
+ mc_data[1] = CMD_ID_GET_SENSOR_ID;
+ err = ar0521_write(client, mc_data, 2);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ err = ar0521_read(client, mc_ret_data, RX_LEN_PKT);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ /* Verify CRC */
+ orig_crc = mc_ret_data[4];
+ calc_crc = errorcheck(&mc_ret_data[2], 2);
+ if (orig_crc != calc_crc) {
+ dev_err(&client->dev," %s(%d) CRC 0x%02x != 0x%02x \n",
+ __func__, __LINE__, orig_crc, calc_crc);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ errcode = mc_ret_data[5];
+ if (errcode != ERRCODE_SUCCESS) {
+ dev_err(&client->dev," %s(%d) Errcode - 0x%02x \n",
+ __func__, __LINE__, errcode);
+ ret = -EIO;
+ goto exit;
+ }
+
+ payload_len =
+ ((mc_ret_data[2] << 8) | mc_ret_data[3]) + HEADER_FOOTER_SIZE;
+
+ memset(mc_ret_data, 0x00, payload_len);
+ err = ar0521_read(client, mc_ret_data, payload_len);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ /* Verify CRC */
+ orig_crc = mc_ret_data[payload_len - 2];
+ calc_crc = errorcheck(&mc_ret_data[2], 2);
+ if (orig_crc != calc_crc) {
+ dev_err(&client->dev," %s(%d) CRC 0x%02x != 0x%02x \n",
+ __func__, __LINE__, orig_crc, calc_crc);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ /* Verify Errcode */
+ errcode = mc_ret_data[payload_len - 1];
+ if (errcode != ERRCODE_SUCCESS) {
+ dev_err(&client->dev," %s(%d) Errcode - 0x%02x \n",
+ __func__, __LINE__, errcode);
+ ret = -EIO;
+ goto exit;
+ }
+
+ *sensor_id = mc_ret_data[2] << 8 | mc_ret_data[3];
+
+ exit:
+ /* unlock semaphore */
+ mutex_unlock(&mcu_i2c_mutex);
+
+ return ret;
+}
+
+static int mcu_get_cmd_status(struct i2c_client *client,
+ uint8_t * cmd_id, uint16_t * cmd_status,
+ uint8_t * ret_code)
+{
+ uint32_t payload_len = 0;
+ uint8_t orig_crc = 0, calc_crc = 0;
+ int err = 0;
+
+ /* No Semaphore in Get command Status */
+
+ /* First Txn Payload length = 0 */
+ payload_len = 1;
+
+ mc_data[0] = CMD_SIGNATURE;
+ mc_data[1] = CMD_ID_GET_STATUS;
+ mc_data[2] = payload_len >> 8;
+ mc_data[3] = payload_len & 0xFF;
+ mc_data[4] = errorcheck(&mc_data[2], 2);
+
+ ar0521_write(client, mc_data, TX_LEN_PKT);
+
+ mc_data[0] = CMD_SIGNATURE;
+ mc_data[1] = CMD_ID_GET_STATUS;
+ mc_data[2] = *cmd_id;
+ err = ar0521_write(client, mc_data, 3);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ return -EIO;
+ }
+
+ payload_len = CMD_STATUS_MSG_LEN;
+ memset(mc_ret_data, 0x00, payload_len);
+ err = ar0521_read(client, mc_ret_data, payload_len);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ return -EIO;
+ }
+
+ /* Verify CRC */
+ orig_crc = mc_ret_data[payload_len - 2];
+ calc_crc = errorcheck(&mc_ret_data[2], 3);
+ if (orig_crc != calc_crc) {
+ dev_err(&client->dev," %s(%d) CRC 0x%02x != 0x%02x \n",
+ __func__, __LINE__, orig_crc, calc_crc);
+ return -EINVAL;
+ }
+
+ *cmd_id = mc_ret_data[2];
+ *cmd_status = mc_ret_data[3] << 8 | mc_ret_data[4];
+ *ret_code = mc_ret_data[payload_len - 1];
+
+ return 0;
+}
+
+static int mcu_isp_init(struct i2c_client *client)
+{
+ uint32_t payload_len = 0;
+
+ uint16_t cmd_status = 0;
+ uint8_t retcode = 0, cmd_id = 0;
+ int retry = 1000, err = 0;
+
+ /* check current status - if initialized, no need for Init */
+ cmd_id = CMD_ID_INIT_CAM;
+ if (mcu_get_cmd_status(client, &cmd_id, &cmd_status, &retcode) < 0) {
+ dev_err(&client->dev," %s(%d) Error \n", __func__, __LINE__);
+ return -EIO;
+ }
+
+ if ((cmd_status == MCU_CMD_STATUS_SUCCESS) &&
+ (retcode == ERRCODE_SUCCESS)) {
+
+#ifdef AR0521_DEBUG
+ pr_info(" Already Initialized !! \n");
+#endif
+
+ return 0;
+ }
+
+ /* call ISP init command */
+
+ /* First Txn Payload length = 0 */
+ payload_len = 0;
+
+ mc_data[0] = CMD_SIGNATURE;
+ mc_data[1] = CMD_ID_INIT_CAM;
+ mc_data[2] = payload_len >> 8;
+ mc_data[3] = payload_len & 0xFF;
+ mc_data[4] = errorcheck(&mc_data[2], 2);
+
+ ar0521_write(client, mc_data, TX_LEN_PKT);
+
+ mc_data[0] = CMD_SIGNATURE;
+ mc_data[1] = CMD_ID_INIT_CAM;
+ err = ar0521_write(client, mc_data, 2);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ return -EIO;
+ }
+
+ while (--retry > 0) {
+ /* Some Sleep for init to process */
+ mdelay(5);
+
+ cmd_id = CMD_ID_INIT_CAM;
+ if (mcu_get_cmd_status(
+ client, &cmd_id, &cmd_status, &retcode) < 0) {
+ dev_err(&client->dev," %s(%d) Error \n",
+ __func__, __LINE__);
+ return -EIO;
+ }
+
+ if ((cmd_status == MCU_CMD_STATUS_SUCCESS) &&
+ ((retcode == ERRCODE_SUCCESS) || (retcode == ERRCODE_ALREADY))) {
+
+#ifdef AR0521_DEBUG
+ pr_info(" ISP Already Initialized !! \n");
+#endif
+
+ return 0;
+ }
+
+ if ((retcode != ERRCODE_BUSY) &&
+ ((cmd_status != MCU_CMD_STATUS_PENDING))) {
+ dev_err(&client->dev,
+ "(%s) %d Init Error STATUS = 0x%04x RET = 0x%02x\n",
+ __func__, __LINE__, cmd_status, retcode);
+ return -EIO;
+ }
+ }
+
+ return -ETIMEDOUT;
+}
+
+static int mcu_get_ctrl_ui(struct i2c_client *client,
+ ISP_CTRL_INFO * mcu_ui_info, int index)
+{
+ uint32_t payload_len = 0;
+ uint8_t errcode = ERRCODE_SUCCESS, orig_crc = 0, calc_crc = 0;
+ int ret = 0, i = 0, err = 0;
+
+ /* lock semaphore */
+ mutex_lock(&mcu_i2c_mutex);
+
+ /* First Txn Payload length = 0 */
+ payload_len = 2;
+
+ mc_data[0] = CMD_SIGNATURE;
+ mc_data[1] = CMD_ID_GET_CTRL_UI_INFO;
+ mc_data[2] = payload_len >> 8;
+ mc_data[3] = payload_len & 0xFF;
+ mc_data[4] = errorcheck(&mc_data[2], 2);
+
+ ar0521_write(client, mc_data, TX_LEN_PKT);
+
+ mc_data[0] = CMD_SIGNATURE;
+ mc_data[1] = CMD_ID_GET_CTRL_UI_INFO;
+ mc_data[2] = index >> 8;
+ mc_data[3] = index & 0xFF;
+ mc_data[4] = errorcheck(&mc_data[2], 2);
+ err = ar0521_write(client, mc_data, 5);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ err = ar0521_read(client, mc_ret_data, RX_LEN_PKT);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ /* Verify CRC */
+ orig_crc = mc_ret_data[4];
+ calc_crc = errorcheck(&mc_ret_data[2], 2);
+ if (orig_crc != calc_crc) {
+ dev_err(&client->dev," %s(%d) CRC 0x%02x != 0x%02x \n",
+ __func__, __LINE__, orig_crc, calc_crc);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ payload_len =
+ ((mc_ret_data[2] << 8) | mc_ret_data[3]) + HEADER_FOOTER_SIZE;
+ errcode = mc_ret_data[5];
+ if (errcode != ERRCODE_SUCCESS) {
+ dev_err(&client->dev," %s(%d) Errcode - 0x%02x \n",
+ __func__, __LINE__, errcode);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ memset(mc_ret_data, 0x00, payload_len);
+ err = ar0521_read(client, mc_ret_data, payload_len);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ /* Verify CRC */
+ orig_crc = mc_ret_data[payload_len - 2];
+ calc_crc =
+ errorcheck(&mc_ret_data[2], payload_len - HEADER_FOOTER_SIZE);
+ if (orig_crc != calc_crc) {
+ dev_err(&client->dev," %s(%d) CRC 0x%02x != 0x%02x \n",
+ __func__, __LINE__, orig_crc, calc_crc);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ /* Verify Errcode */
+ errcode = mc_ret_data[payload_len - 1];
+ if (errcode != ERRCODE_SUCCESS) {
+ dev_err(&client->dev," %s(%d) Errcode - 0x%02x \n",
+ __func__, __LINE__, errcode);
+ ret = -EIO;
+ goto exit;
+ }
+
+ strncpy((char *)mcu_ui_info->ctrl_ui_data.ctrl_ui_info.ctrl_name, &mc_ret_data[2],MAX_CTRL_UI_STRING_LEN);
+
+ mcu_ui_info->ctrl_ui_data.ctrl_ui_info.ctrl_ui_type = mc_ret_data[34];
+ mcu_ui_info->ctrl_ui_data.ctrl_ui_info.ctrl_ui_flags = mc_ret_data[35] << 8 |
+ mc_ret_data[36];
+
+ if (mcu_ui_info->ctrl_ui_data.ctrl_ui_info.ctrl_ui_type == V4L2_CTRL_TYPE_MENU) {
+ mcu_ui_info->ctrl_ui_data.ctrl_menu_info.num_menu_elem = mc_ret_data[37];
+
+ mcu_ui_info->ctrl_ui_data.ctrl_menu_info.menu =
+ devm_kzalloc(&client->dev,((mcu_ui_info->ctrl_ui_data.ctrl_menu_info.num_menu_elem +1) * sizeof(char *)), GFP_KERNEL);
+ for (i = 0; i < mcu_ui_info->ctrl_ui_data.ctrl_menu_info.num_menu_elem; i++) {
+ mcu_ui_info->ctrl_ui_data.ctrl_menu_info.menu[i] =
+ devm_kzalloc(&client->dev,MAX_CTRL_UI_STRING_LEN, GFP_KERNEL);
+ strncpy((char *)mcu_ui_info->ctrl_ui_data.ctrl_menu_info.menu[i],
+ &mc_ret_data[38 +(i *MAX_CTRL_UI_STRING_LEN)], MAX_CTRL_UI_STRING_LEN);
+
+#ifdef AR0521_DEBUG
+ pr_info(" Menu Element %d : %s \n",
+ i, mcu_ui_info->ctrl_ui_data.ctrl_menu_info.menu[i]);
+#endif
+
+ }
+
+ mcu_ui_info->ctrl_ui_data.ctrl_menu_info.menu[i] = NULL;
+ }
+
+ exit:
+ /* unlock semaphore */
+ mutex_unlock(&mcu_i2c_mutex);
+
+ return ret;
+
+}
+
+static int mcu_isp_configuration(uint8_t cmd_id,struct i2c_client *client)
+{
+ unsigned char mc_data[100];
+ uint32_t payload_len = 0;
+
+ uint16_t payload_data;
+ uint16_t cmd_status = 0;
+ uint8_t retcode = 0;
+ int retry = 1000, err = 0;
+
+ /*lock semaphore */
+ mutex_lock(&mcu_i2c_mutex);
+ /* First Txn Payload length = 0 */
+ payload_len = 2;
+
+ mc_data[0] = CMD_SIGNATURE;
+ mc_data[1] = cmd_id;
+ mc_data[2] = payload_len >> 8;
+ mc_data[3] = payload_len & 0xFF;
+ mc_data[4] = errorcheck(&mc_data[2], 2);
+
+ ar0521_write(client, mc_data, TX_LEN_PKT);
+
+ mc_data[0] = CMD_SIGNATURE;
+ mc_data[1] = cmd_id;
+
+ switch(cmd_id) {
+ case CMD_ID_LANE_CONFIG:
+ /*Lane configuration */
+ payload_data = ar0521_data.mipi_lane_config == 4 ? NUM_LANES_4: NUM_LANES_2;
+ mc_data[2] = payload_data >> 8;
+ mc_data[3] = payload_data & 0xFF;
+ break;
+ case CMD_ID_MIPI_CLK_CONFIG:
+ /* MIPI CLK Configuration */
+ payload_data = ar0521_data.mipi_clk_config;
+ mc_data[2] = payload_data >> 8;
+ mc_data[3] = payload_data & 0xFF;
+ break;
+ default:
+ dev_err(&client->dev, "MCU ISP CONF Error\n");
+ err = -1;
+ goto exit;
+ }
+
+ /* CRC*/
+ mc_data[4] = errorcheck(&mc_data[2], payload_len);
+ err = ar0521_write(client, mc_data, payload_len+3);
+ if (err != 0) {
+ dev_err(&client->dev, " %s(%d) Error - %d \n",
+ __func__, __LINE__, err);
+ goto exit;
+ }
+
+
+ while (--retry > 0) {
+ msleep(20);
+ if (mcu_get_cmd_status(client, &cmd_id, &cmd_status, &retcode) <
+ 0) {
+ dev_err(&client->dev, " %s(%d) Error \n",
+ __func__, __LINE__);
+ err = -EIO;
+ goto exit;
+ }
+
+ if ((cmd_status == MCU_CMD_STATUS_ISP_UNINIT) &&
+ ((retcode == ERRCODE_SUCCESS) || retcode == ERRCODE_ALREADY)) {
+ err = 0;
+ goto exit;
+ }
+
+ if ((retcode != ERRCODE_BUSY) &&
+ ((cmd_status != MCU_CMD_STATUS_ISP_UNINIT))) {
+ dev_err(&client->dev,
+ "(%s) %d Error STATUS = 0x%04x RET = 0x%02x\n",
+ __func__, __LINE__, cmd_status, retcode);
+ err = -EIO;
+ goto exit;
+ }
+
+ }
+
+ err = -ETIMEDOUT;
+ exit:
+ /* unlock semaphore */
+ mutex_unlock(&mcu_i2c_mutex);
+ return err;
+}
+
+static int mcu_stream_config(struct i2c_client *client, uint32_t format,
+ int mode, int frate_index)
+{
+ uint32_t payload_len = 0;
+
+ uint16_t cmd_status = 0, index = 0xFFFF;
+ uint8_t retcode = 0, cmd_id = 0;
+ int loop = 0, ret = 0, err = 0, retry = 1000;
+ static uint16_t prev_index = 0xFFFE;
+
+ /* lock semaphore */
+ mutex_lock(&mcu_i2c_mutex);
+
+ cmd_id = CMD_ID_STREAM_CONFIG;
+ if (mcu_get_cmd_status(client, &cmd_id, &cmd_status, &retcode) < 0) {
+ dev_err(&client->dev," %s(%d) Error \n", __func__, __LINE__);
+ ret = -EIO;
+ goto exit;
+ }
+
+ if ((cmd_status != MCU_CMD_STATUS_SUCCESS) ||
+ (retcode != ERRCODE_SUCCESS)) {
+ dev_err(&client->dev,
+ " ISP is Unintialized or Busy STATUS = 0x%04x Errcode = 0x%02x !! \n",
+ cmd_status, retcode);
+ ret = -EBUSY;
+ goto exit;
+ }
+
+ for (loop = 0;(&streamdb[loop]) != NULL; loop++) {
+ pr_info("streamdb[%d]=%d, mode=%d",loop,streamdb[loop],mode);
+ if (streamdb[loop] == mode) {
+ index = loop + frate_index;
+ break;
+ }
+ }
+
+#ifdef AR0521_DEBUG
+ pr_info(" Index = 0x%04x , format = 0x%08x, width = %hu,"
+ " height = %hu, frate num = %hu \n", index, format,
+ ar0521_data.mcu_cam_frmfmt[mode].size.width,
+ ar0521_data.mcu_cam_frmfmt[mode].size.height,
+ ar0521_data.mcu_cam_frmfmt[mode].framerates[frate_index]);
+#endif
+
+ if (index == 0xFFFF) {
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ if(prev_index == index) {
+#ifdef AR0521_DEBUG
+ pr_info("Skipping Previous mode set ... \n");
+#endif
+ ret = 0;
+ goto exit;
+ }
+
+issue_cmd:
+ /* First Txn Payload length = 0 */
+ payload_len = 14;
+
+ mc_data[0] = CMD_SIGNATURE;
+ mc_data[1] = CMD_ID_STREAM_CONFIG;
+ mc_data[2] = payload_len >> 8;
+ mc_data[3] = payload_len & 0xFF;
+ mc_data[4] = errorcheck(&mc_data[2], 2);
+
+ ar0521_write(client, mc_data, TX_LEN_PKT);
+
+ mc_data[0] = CMD_SIGNATURE;
+ mc_data[1] = CMD_ID_STREAM_CONFIG;
+ mc_data[2] = index >> 8;
+ mc_data[3] = index & 0xFF;
+
+ /* Format Fourcc - currently only YUYV */
+ mc_data[4] = format >> 24;
+ mc_data[5] = format >> 16;
+ mc_data[6] = format >> 8;
+ mc_data[7] = format & 0xFF;
+
+ /* width */
+ mc_data[8] = ar0521_data.mcu_cam_frmfmt[mode].size.width >> 8;
+ mc_data[9] = ar0521_data.mcu_cam_frmfmt[mode].size.width & 0xFF;
+
+ /* height */
+ mc_data[10] = ar0521_data.mcu_cam_frmfmt[mode].size.height >> 8;
+ mc_data[11] = ar0521_data.mcu_cam_frmfmt[mode].size.height & 0xFF;
+
+ /* frame rate num */
+ mc_data[12] = ar0521_data.mcu_cam_frmfmt[mode].framerates[frate_index] >> 8;
+ mc_data[13] = ar0521_data.mcu_cam_frmfmt[mode].framerates[frate_index] & 0xFF;
+
+ /* frame rate denom */
+ mc_data[14] = 0x00;
+ mc_data[15] = 0x01;
+
+ mc_data[16] = errorcheck(&mc_data[2], 14);
+ err = ar0521_write(client, mc_data, 17);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ while (--retry > 0) {
+ cmd_id = CMD_ID_STREAM_CONFIG;
+ if (mcu_get_cmd_status(
+ client, &cmd_id, &cmd_status, &retcode) < 0) {
+ dev_err(&client->dev,
+ " %s(%d) MCU GET CMD Status Error : loop : %d \n",
+ __func__, __LINE__, loop);
+ ret = -EIO;
+ goto exit;
+ }
+
+ if ((cmd_status == MCU_CMD_STATUS_SUCCESS) &&
+ (retcode == ERRCODE_SUCCESS)) {
+ ret = 0;
+ goto exit;
+ }
+
+ if(retcode == ERRCODE_AGAIN) {
+ /* Issue Command Again if Set */
+ retry = 1000;
+ goto issue_cmd;
+ }
+
+ if ((retcode != ERRCODE_BUSY) &&
+ ((cmd_status != MCU_CMD_STATUS_PENDING))) {
+ dev_err(&client->dev,
+ "(%s) %d Error STATUS = 0x%04x RET = 0x%02x\n",
+ __func__, __LINE__, cmd_status, retcode);
+ ret = -EIO;
+ goto exit;
+ }
+
+ /* Delay after retry */
+ mdelay(10);
+ }
+
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -ETIMEDOUT;
+
+exit:
+ if(!ret)
+ prev_index = index;
+
+ /* unlock semaphore */
+ mutex_unlock(&mcu_i2c_mutex);
+
+ return ret;
+}
+
+static int mcu_isp_power_down(struct i2c_client *client)
+{
+ uint32_t payload_len = 0;
+
+ uint16_t cmd_status = 0;
+ uint8_t retcode = 0, cmd_id = 0;
+ int retry = 1000, err = 0;
+
+ /*lock semaphore */
+ mutex_lock(&mcu_i2c_mutex);
+
+ /* First Txn Payload length = 0 */
+ payload_len = 0;
+
+ mc_data[0] = CMD_SIGNATURE;
+ mc_data[1] = CMD_ID_ISP_PDOWN;
+ mc_data[2] = payload_len >> 8;
+ mc_data[3] = payload_len & 0xFF;
+ mc_data[4] = errorcheck(&mc_data[2], 2);
+
+ ar0521_write(client, mc_data, TX_LEN_PKT);
+
+ mc_data[0] = CMD_SIGNATURE;
+ mc_data[1] = CMD_ID_ISP_PDOWN;
+ err = ar0521_write(client, mc_data, 2);
+ if (err != 0) {
+ dev_err(&client->dev, " %s(%d) Error - %d \n",
+ __func__, __LINE__, err);
+ goto exit;
+ }
+
+ while (--retry > 0) {
+ msleep(20);
+ cmd_id = CMD_ID_ISP_PDOWN;
+ if (mcu_get_cmd_status(client, &cmd_id, &cmd_status, &retcode) <
+ 0) {
+ dev_err(&client->dev, " %s(%d) Get Status Error \n",
+ __func__, __LINE__);
+ err = -EINVAL;
+ goto exit;
+ }
+
+ if ((cmd_status == MCU_CMD_STATUS_ISP_PWDN) &&
+ ((retcode == ERRCODE_SUCCESS) || retcode == ERRCODE_ALREADY)) {
+ err = 0;
+ goto exit;
+ }
+
+ if ((retcode != ERRCODE_BUSY) &&
+ ((cmd_status != MCU_CMD_STATUS_PENDING))) {
+ dev_err(&client->dev,
+ "(%s) %d Error STATUS = 0x%04x RET = 0x%02x\n",
+ __func__, __LINE__, cmd_status,
+ retcode);
+ err = -EIO;
+ goto exit;
+ }
+
+ }
+ err = -ETIMEDOUT;
+ exit:
+ /* unlock semaphore */
+ mutex_unlock(&mcu_i2c_mutex);
+ return err;
+}
+
+static int mcu_isp_power_wakeup(struct i2c_client *client)
+{
+ uint32_t payload_len = 0;
+
+ uint16_t cmd_status = 0;
+ uint8_t retcode = 0, cmd_id = 0;
+ int retry = 1000, err = 0;
+
+ /*lock semaphore */
+ mutex_lock(&mcu_i2c_mutex);
+ /* First Txn Payload length = 0 */
+ payload_len = 0;
+
+ mc_data[0] = CMD_SIGNATURE;
+ mc_data[1] = CMD_ID_ISP_PUP;
+ mc_data[2] = payload_len >> 8;
+ mc_data[3] = payload_len & 0xFF;
+ mc_data[4] = errorcheck(&mc_data[2], 2);
+
+ ar0521_write(client, mc_data, TX_LEN_PKT);
+
+ mc_data[0] = CMD_SIGNATURE;
+ mc_data[1] = CMD_ID_ISP_PUP;
+ err = ar0521_write(client, mc_data, 2);
+ if (err != 0) {
+ dev_err(&client->dev, " %s(%d) Error - %d \n",
+ __func__, __LINE__, err);
+ goto exit;
+ }
+
+ while (--retry > 0) {
+ msleep(20);
+ cmd_id = CMD_ID_ISP_PUP;
+ if (mcu_get_cmd_status(client, &cmd_id, &cmd_status, &retcode) <
+ 0) {
+ dev_err(&client->dev, " %s(%d) Error \n",
+ __func__, __LINE__);
+ err = -EIO;
+ goto exit;
+ }
+
+ if ((cmd_status == MCU_CMD_STATUS_SUCCESS) &&
+ ((retcode == ERRCODE_SUCCESS) || retcode == ERRCODE_ALREADY)) {
+ err = 0;
+ goto exit;
+ }
+
+ if ((retcode != ERRCODE_BUSY) &&
+ ((cmd_status != MCU_CMD_STATUS_PENDING))) {
+ dev_err(&client->dev,
+ "(%s) %d Error STATUS = 0x%04x RET = 0x%02x\n",
+ __func__, __LINE__, cmd_status, retcode);
+ err = -EIO;
+ goto exit;
+ }
+
+ }
+
+ err = -ETIMEDOUT;
+ exit:
+ /* unlock semaphore */
+ mutex_unlock(&mcu_i2c_mutex);
+ return err;
+}
+
+static int mcu_set_ctrl(struct i2c_client *client, uint32_t arg_ctrl_id,
+ uint8_t ctrl_type, int32_t curr_val)
+{
+ uint32_t payload_len = 0;
+
+ uint16_t cmd_status = 0, index = 0xFFFF;
+ uint8_t retcode = 0, cmd_id = 0;
+ int loop = 0, ret = 0, err = 0;
+ uint32_t ctrl_id = 0;
+
+ /* lock semaphore */
+ mutex_lock(&mcu_i2c_mutex);
+
+ ctrl_id = arg_ctrl_id;
+
+ /* call ISP Ctrl config command */
+
+ for (loop = 0; loop < num_ctrls; loop++) {
+ if (ctrldb[loop] == ctrl_id) {
+ index = mcu_ctrl_info[loop].mcu_ctrl_index;
+ break;
+ }
+ }
+
+ if (index == 0xFFFF) {
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ /* First Txn Payload length = 0 */
+ payload_len = 11;
+
+ mc_data[0] = CMD_SIGNATURE;
+ mc_data[1] = CMD_ID_SET_CTRL;
+ mc_data[2] = payload_len >> 8;
+ mc_data[3] = payload_len & 0xFF;
+ mc_data[4] = errorcheck(&mc_data[2], 2);
+
+ ar0521_write(client, mc_data, TX_LEN_PKT);
+
+ /* Second Txn */
+ mc_data[0] = CMD_SIGNATURE;
+ mc_data[1] = CMD_ID_SET_CTRL;
+
+ /* Index */
+ mc_data[2] = index >> 8;
+ mc_data[3] = index & 0xFF;
+
+ /* Control ID */
+ mc_data[4] = ctrl_id >> 24;
+ mc_data[5] = ctrl_id >> 16;
+ mc_data[6] = ctrl_id >> 8;
+ mc_data[7] = ctrl_id & 0xFF;
+
+ /* Ctrl Type */
+ mc_data[8] = ctrl_type;
+
+ /* Ctrl Value */
+ mc_data[9] = curr_val >> 24;
+ mc_data[10] = curr_val >> 16;
+ mc_data[11] = curr_val >> 8;
+ mc_data[12] = curr_val & 0xFF;
+
+ /* CRC */
+ mc_data[13] = errorcheck(&mc_data[2], 11);
+
+ err = ar0521_write(client, mc_data, 14);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ while (1) {
+ cmd_id = CMD_ID_SET_CTRL;
+ if (mcu_get_cmd_status(
+ client, &cmd_id, &cmd_status, &retcode) < 0) {
+ dev_err(&client->dev," %s(%d) Error \n",
+ __func__, __LINE__);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ if ((cmd_status == MCU_CMD_STATUS_SUCCESS) &&
+ (retcode == ERRCODE_SUCCESS)) {
+ ret = 0;
+ goto exit;
+ }
+
+ if ((retcode != ERRCODE_BUSY) &&
+ ((cmd_status != MCU_CMD_STATUS_PENDING))) {
+ dev_err(&client->dev,
+ "(%s) %d ISP Error STATUS = 0x%04x RET = 0x%02x\n",
+ __func__, __LINE__, cmd_status, retcode);
+ ret = -EIO;
+ goto exit;
+ }
+ }
+
+ exit:
+ /* unlock semaphore */
+ mutex_unlock(&mcu_i2c_mutex);
+
+ return ret;
+}
+
+static int mcu_get_ctrl(struct i2c_client *client, uint32_t arg_ctrl_id,
+ uint8_t * ctrl_type, int32_t * curr_val)
+{
+ uint32_t payload_len = 0;
+ uint8_t errcode = ERRCODE_SUCCESS, orig_crc = 0, calc_crc = 0;
+ uint16_t index = 0xFFFF;
+ int loop = 0, ret = 0, err = 0;
+
+ uint32_t ctrl_id = 0;
+
+ /* lock semaphore */
+ mutex_lock(&mcu_i2c_mutex);
+
+ ctrl_id = arg_ctrl_id;
+
+ /* Read the Ctrl Value from Micro controller */
+
+ for (loop = 0; loop < num_ctrls; loop++) {
+ if (ctrldb[loop] == ctrl_id) {
+ index = mcu_ctrl_info[loop].mcu_ctrl_index;
+ break;
+ }
+ }
+
+ if (index == 0xFFFF) {
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ if (
+ mcu_ctrl_info[loop].ctrl_ui_data.ctrl_ui_info.ctrl_ui_flags &
+ V4L2_CTRL_FLAG_WRITE_ONLY
+ ) {
+ ret = -EACCES;
+ goto exit;
+ }
+
+ /* First Txn Payload length = 2 */
+ payload_len = 2;
+
+ mc_data[0] = CMD_SIGNATURE;
+ mc_data[1] = CMD_ID_GET_CTRL;
+ mc_data[2] = payload_len >> 8;
+ mc_data[3] = payload_len & 0xFF;
+ mc_data[4] = errorcheck(&mc_data[2], 2);
+
+ ar0521_write(client, mc_data, TX_LEN_PKT);
+
+ mc_data[0] = CMD_SIGNATURE;
+ mc_data[1] = CMD_ID_GET_CTRL;
+ mc_data[2] = index >> 8;
+ mc_data[3] = index & 0xFF;
+ mc_data[4] = errorcheck(&mc_data[2], 2);
+ err = ar0521_write(client, mc_data, 5);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ err = ar0521_read(client, mc_ret_data, RX_LEN_PKT);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ /* Verify CRC */
+ orig_crc = mc_ret_data[4];
+ calc_crc = errorcheck(&mc_ret_data[2], 2);
+ if (orig_crc != calc_crc) {
+ dev_err(&client->dev," %s(%d) CRC 0x%02x != 0x%02x \n",
+ __func__, __LINE__, orig_crc, calc_crc);
+ ret = -1;
+ goto exit;
+ }
+
+ if (((mc_ret_data[2] << 8) | mc_ret_data[3]) == 0) {
+ ret = -EIO;
+ goto exit;
+ }
+
+ errcode = mc_ret_data[5];
+ if (errcode != ERRCODE_SUCCESS) {
+ dev_err(&client->dev," %s(%d) Errcode - 0x%02x \n",
+ __func__, __LINE__, errcode);
+ ret = -EIO;
+ goto exit;
+ }
+
+ payload_len =
+ ((mc_ret_data[2] << 8) | mc_ret_data[3]) + HEADER_FOOTER_SIZE;
+ memset(mc_ret_data, 0x00, payload_len);
+ err = ar0521_read(client, mc_ret_data, payload_len);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ /* Verify CRC */
+ orig_crc = mc_ret_data[payload_len - 2];
+ calc_crc =
+ errorcheck(&mc_ret_data[2], payload_len - HEADER_FOOTER_SIZE);
+ if (orig_crc != calc_crc) {
+ dev_err(&client->dev," %s(%d) CRC 0x%02x != 0x%02x \n",
+ __func__, __LINE__, orig_crc, calc_crc);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ /* Verify Errcode */
+ errcode = mc_ret_data[payload_len - 1];
+ if (errcode != ERRCODE_SUCCESS) {
+ dev_err(&client->dev," %s(%d) Errcode - 0x%02x \n",
+ __func__, __LINE__, errcode);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ /* Ctrl type starts from index 6 */
+
+ *ctrl_type = mc_ret_data[6];
+
+ switch (*ctrl_type) {
+ case CTRL_STANDARD:
+ *curr_val =
+ mc_ret_data[7] << 24 | mc_ret_data[8] << 16 | mc_ret_data[9]
+ << 8 | mc_ret_data[10];
+ break;
+
+ case CTRL_EXTENDED:
+ /* Not Implemented */
+ break;
+ }
+
+ exit:
+ /* unlock semaphore */
+ mutex_unlock(&mcu_i2c_mutex);
+
+ return ret;
+}
+
+/*
+ * ---------------------------------------------------------
+ * END of MCU realed functions
+ * ---------------------------------------------------------
+ */
+
+static void toggle_gpio(unsigned int gpio, int val)
+{
+ if (gpio_cansleep(gpio)){
+ gpio_direction_output(gpio,val);
+ gpio_set_value_cansleep(gpio, val);
+ } else{
+ gpio_direction_output(gpio,val);
+ gpio_set_value(gpio, val);
+ }
+}
+
+static int ar0521_querymenu(struct v4l2_subdev *sd, struct v4l2_querymenu *qm)
+{
+ uint32_t index = 0;
+ int loop;
+
+ if (sd == NULL || qm == NULL)
+ return -EINVAL;
+
+ for (loop = 0; loop < num_ctrls; loop++) {
+ if (ctrldb[loop] == qm->id) {
+ index = loop;
+ break;
+ }
+ }
+
+ if (loop == num_ctrls) {
+ return -EINVAL;
+ }
+
+ if (
+ !(
+ 0 <= qm->index &&
+ qm->index < mcu_ctrl_info[index].ctrl_ui_data.ctrl_menu_info.num_menu_elem
+ )
+ ) {
+ return -EINVAL;
+ }
+
+ /*
+ * Copy the name of the menu.
+ *
+ * We deal only with V4L2_CTRL_TYPE_MENU and not
+ * V4L2_CTRL_TYPE_INTEGER_MENU. So, this should be
+ * enough.
+ */
+ strcpy(qm->name, mcu_ctrl_info[index].ctrl_ui_data.ctrl_menu_info.menu[qm->index]);
+
+ /*
+ * Set the reserved to zero as mentioned in spec
+ */
+ qm->reserved = 0;
+
+ return 0;
+}
+
+static int ar0521_queryctrl(struct v4l2_subdev *sd, struct v4l2_queryctrl *qc)
+{
+ int index, ctrl_index = -1, ctrl_id;
+ bool next_ctrl = (qc->id & V4L2_CTRL_FLAG_NEXT_CTRL);
+
+ if (sd == NULL || qc == NULL)
+ return -EINVAL;
+
+ if (next_ctrl) {
+ ctrl_id = qc->id & (~V4L2_CTRL_FLAG_NEXT_CTRL);
+
+ /*
+ * Ignore the V4L2_CTRL_FLAG_NEXT_COMPOUND for now
+ */
+ ctrl_id = ctrl_id & (~V4L2_CTRL_FLAG_NEXT_COMPOUND);
+ }
+ else {
+ /*
+ * Assume we've just got the control ID itself
+ * directly.
+ */
+ ctrl_id = qc->id;
+ }
+
+ if (ctrl_id) {
+ for (index = 0; index < num_ctrls; index++) {
+ if (ctrldb[index] == ctrl_id) {
+ ctrl_index = (next_ctrl) ? index + 1 : index;
+ break;
+ }
+ }
+
+ if (index == num_ctrls) {
+ /*
+ * We do not know about this control
+ */
+ return -EINVAL;
+ }
+ else if (
+ next_ctrl &&
+ index == num_ctrls - 1
+ )
+ {
+ /*
+ * We've got a request for the control
+ * after the last one.
+ */
+ return -EINVAL;
+ }
+ }
+ else if (next_ctrl) {
+ ctrl_index = 0;
+ }
+ else {
+ return -EINVAL;
+ }
+
+ if (
+ mcu_ctrl_info[ctrl_index].ctrl_type == CTRL_STANDARD
+ ) {
+ /*
+ * We cannot use `v4l2_ctrl_query_fill` instead of manually filling
+ * the details even for standard controls as we sometimes implement our
+ * own version for some controls.
+ *
+ * e.g., V4L2_CID_FOCUS_AUTO has a max value of 1 according to standard
+ * but our version of it has a max value of 5.
+ */
+ qc->id = mcu_ctrl_info[ctrl_index].ctrl_id;
+
+ strcpy(qc->name, mcu_ctrl_info[ctrl_index].ctrl_ui_data.ctrl_ui_info.ctrl_name);
+
+ qc->type = mcu_ctrl_info[ctrl_index].ctrl_ui_data.ctrl_ui_info.ctrl_ui_type;
+ qc->flags = mcu_ctrl_info[ctrl_index].ctrl_ui_data.ctrl_ui_info.ctrl_ui_flags;
+
+ qc->minimum = mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_min;
+ qc->maximum = mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_max;
+ qc->step = mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_step;
+ qc->default_value = mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_def;
+ }
+ else {
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
+static int ar0521_g_ctrl(struct v4l2_subdev *sd, struct v4l2_control *ctrl)
+{
+ struct i2c_client *client = ar0521_data.i2c_client;
+ int err = 0;
+ uint8_t ctrl_type = 0;
+ int ctrl_val = 0;
+
+ if (sd == NULL || ctrl == NULL)
+ return -EINVAL;
+
+ if ((err = mcu_get_ctrl(client, ctrl->id, &ctrl_type, &ctrl_val)) < 0) {
+ return err;
+ }
+
+ if (ctrl_type == CTRL_STANDARD) {
+ ctrl->value = ctrl_val;
+ } else {
+ /* Not Implemented */
+ return -EINVAL;
+ }
+
+ return err;
+}
+
+static int ar0521_s_ctrl(struct v4l2_subdev *sd, struct v4l2_control *ctrl)
+{
+ struct i2c_client *client = ar0521_data.i2c_client;
+ int err = 0, index, ctrl_index = 0;
+
+ if (sd == NULL || ctrl == NULL)
+ return -EINVAL;
+
+ for (index = 0; index < num_ctrls; index++) {
+ if (ctrldb[index] == ctrl->id) {
+ ctrl_index = index;
+ break;
+ }
+ }
+
+ if (index == num_ctrls) {
+ return -EINVAL;
+ }
+
+ if (
+ ctrl->value < mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_min ||
+ ctrl->value > mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_max
+ )
+ return -ERANGE;
+
+ if ((err =
+ mcu_set_ctrl(client, ctrl->id, CTRL_STANDARD, ctrl->value)) < 0) {
+ dev_err(&client->dev," %s (%d ) \n", __func__, __LINE__);
+ return -EINVAL;
+ }
+
+ return err;
+}
+
+static int ar0521_g_ext_ctrls(struct v4l2_subdev *sd, struct v4l2_ext_controls *ctrls)
+{
+ int i, err = 0;
+
+ if (sd == NULL || ctrls == NULL)
+ return -EINVAL;
+
+ for (i = 0; i < ctrls->count; i++) {
+ struct v4l2_ext_control *ext_ctrl = ctrls->controls + i;
+ struct v4l2_control ctrl = {
+ .id = ext_ctrl->id,
+ };
+
+ err = ar0521_g_ctrl(sd, &ctrl);
+ if (err) {
+ ctrls->error_idx = ctrls->count;
+ break;
+ }
+ else {
+ ext_ctrl->value = ctrl.value;
+ }
+ }
+
+ return err;
+}
+
+static int ar0521_try_ext_ctrls(struct v4l2_subdev *sd, struct v4l2_ext_controls *ctrls)
+{
+ int i;
+
+ if (sd == NULL || ctrls == NULL)
+ return -EINVAL;
+
+ for (i = 0; i < ctrls->count; i++) {
+ struct v4l2_ext_control *ext_ctrl = ctrls->controls + i;
+ int ctrl_index = 0, index;
+
+ for (index = 0; index < num_ctrls; index++) {
+ if (ctrldb[index] == ext_ctrl->id) {
+ ctrl_index = index;
+ break;
+ }
+ }
+
+ if (index == num_ctrls) {
+ ctrls->error_idx = ext_ctrl->id;
+ return -EINVAL;
+ }
+
+ if (
+ ext_ctrl->value < mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_min ||
+ ext_ctrl->value > mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_max
+ ) {
+ ctrls->error_idx = ext_ctrl->id;
+ return -ERANGE;
+ }
+ }
+
+ return 0;
+
+}
+
+static int ar0521_s_ext_ctrls(struct v4l2_subdev *sd, struct v4l2_ext_controls *ctrls)
+{
+ int i, err = 0;
+
+ if (sd == NULL || ctrls == NULL)
+ return -EINVAL;
+
+ for (i = 0; i < ctrls->count; i++) {
+ struct v4l2_ext_control *ext_ctrl = ctrls->controls + i;
+ struct v4l2_control ctrl = {
+ .id = ext_ctrl->id,
+ .value = ext_ctrl->value
+ };
+
+ err = ar0521_s_ctrl(sd, &ctrl);
+ if (err) {
+ /*
+ * TODO: We would have to indicate whether there
+ * is an issue in validation or in the
+ * hardware by correctly setting the error_idx
+ * to count only when the validation failed
+ * and setting it to index when there is an
+ * issue in communication with the hardware.
+ *
+ * For now, just return the count for all cases.
+ */
+ ctrls->error_idx = ctrls->count;
+ break;
+ }
+ }
+
+ return err;
+}
+
+static int ar0521_enum_frameintervals(struct v4l2_subdev *sd,struct v4l2_subdev_pad_config *cfg,struct v4l2_subdev_frame_interval_enum *fival)
+{
+ struct i2c_client *client = v4l2_get_subdevdata(sd);
+ int j;
+
+ if (fival->width == 0 || fival->height == 0)
+ {
+ dev_err(&client->dev, "Please assign width and height.\n");
+ return -EINVAL;
+ }
+
+ if (fival->code != ar0521_data.fmt.code)
+ {
+ return -EINVAL;
+ }
+
+ for (j = 0; j < ar0521_data.num_frm_fmts; j++) {
+ if (
+ fival->width == ar0521_data.mcu_cam_frmfmt[j].size.width &&
+ fival->height == ar0521_data.mcu_cam_frmfmt[j].size.height
+ ) {
+ if (fival->index >= ar0521_data.mcu_cam_frmfmt[j].num_framerates)
+ {
+ return -EINVAL;
+ }
+
+ fival->interval.numerator = 1;
+ fival->interval.denominator = ar0521_data.mcu_cam_frmfmt[j].framerates[fival->index];
+
+ return 0;
+ }
+ }
+ return -EINVAL;
+
+}
+
+static int ar0521_enum_framesizes(struct v4l2_subdev *sd,struct v4l2_subdev_pad_config *cfg,struct v4l2_subdev_frame_size_enum *fse)
+{
+ if (fse->index >= ar0521_data.num_frm_fmts)
+ {
+ return -EINVAL;
+ }
+
+ if (fse->code != ar0521_data.fmt.code)
+ {
+ return -EINVAL;
+ }
+
+ fse->max_width = ar0521_data.mcu_cam_frmfmt[fse->index].size.width;
+ fse->min_width = fse->max_width;
+
+ fse->max_height = ar0521_data.mcu_cam_frmfmt[fse->index].size.height;
+ fse->min_height = fse->max_height;
+
+ return 0;
+}
+
+static int ar0521_enum_mbus_code(struct v4l2_subdev *sd,struct v4l2_subdev_pad_config *cfg,struct v4l2_subdev_mbus_code_enum *code)
+{
+ if (code->pad || code->index >= AR0521_MAX_FORMAT_SUPPORTED)
+ return -EINVAL;
+
+ code->code = ar0521_data.fmt.code;
+
+ return 0;
+}
+
+static int ar0521_s_stream(struct v4l2_subdev *sd, int enable)
+{
+ if (!enable) {
+ /* Perform Stream Off Sequence - if any */
+ }
+
+ /* Perform Stream On Sequence - if any */
+ mdelay(10);
+
+ return 0;
+}
+
+static int ar0521_g_parm(struct v4l2_subdev *sd, struct v4l2_streamparm *param)
+{
+ int mode = ar0521_data.streamcap.capturemode;
+
+ param->parm.capture.capability |= V4L2_CAP_TIMEPERFRAME;
+
+ param->parm.capture.timeperframe.denominator =
+ ar0521_data.mcu_cam_frmfmt[mode].framerates[ar0521_data.frate_index];
+ param->parm.capture.timeperframe.numerator = 1;
+
+ return 0;
+}
+
+static int ar0521_s_parm(struct v4l2_subdev *sd, struct v4l2_streamparm *param)
+{
+ struct i2c_client *client = v4l2_get_subdevdata(sd);
+ int ret = 0, err = 0;
+ int mode = ar0521_data.streamcap.capturemode;
+ int fourcc = ar0521_data.pix.pixelformat;
+
+ param->parm.capture.capability = V4L2_CAP_TIMEPERFRAME;
+ memset(param->parm.capture.reserved, 0, 4*sizeof(u32));
+
+ if (
+ param->parm.capture.timeperframe.denominator == 0 &&
+ param->parm.capture.timeperframe.numerator == 0 &&
+ ar0521_data.mcu_cam_frmfmt[mode].num_framerates == 1
+ ) {
+ param->parm.capture.timeperframe.denominator =
+ ar0521_data.mcu_cam_frmfmt[mode].framerates[ar0521_data.frate_index];
+ param->parm.capture.timeperframe.numerator = 1;
+ /*
+ * We would have to reset the frame interval to a
+ * nominal value in this case but as we just have one
+ * frame interval we just return success.
+ */
+ return 0;
+ }
+
+ if (param->parm.capture.timeperframe.numerator != 1) {
+ dev_err(&client->dev, "Invalid numerator for timeperframe\n");
+ return -EINVAL;
+ }
+
+ for (ret = 0; ret < ar0521_data.mcu_cam_frmfmt[mode].num_framerates;
+ ret++) {
+ if ((ar0521_data.mcu_cam_frmfmt[mode].framerates[ret] ==
+ param->parm.capture.timeperframe.denominator)) {
+ ar0521_data.frate_index = ret;
+
+ /* call stream config with width, height, frame rate */
+ err =
+ mcu_stream_config(client, fourcc, mode,
+ ar0521_data.frate_index);
+ if (err < 0) {
+ dev_err(&client->dev, "%s: Failed stream_config \n", __func__);
+ return err;
+ }
+
+ mdelay(10);
+
+ return 0;
+ }
+ }
+
+ return -EINVAL;
+}
+
+static int ar0521_s_power(struct v4l2_subdev *sd, int on)
+{
+
+ /* Perform Power On/Off Sequence - if any */
+ return 0;
+}
+
+static int ar0521_get_fmt(struct v4l2_subdev *sd,struct v4l2_subdev_pad_config *cfg,struct v4l2_subdev_format *format)
+{
+ int ret = 0;
+
+ if (format->pad)
+ return -EINVAL;
+
+ format->format.code = ar0521_data.fmt.code;
+ format->format.colorspace = ar0521_data.fmt.colorspace;
+ format->format.field = V4L2_FIELD_NONE;
+
+ format->format.width = ar0521_data.pix.width;
+ format->format.height = ar0521_data.pix.height;
+
+ return ret;
+}
+
+static int ar0521_set_fmt(struct v4l2_subdev *sd, struct v4l2_subdev_pad_config *cfg,
+ struct v4l2_subdev_format *format)
+{
+ int ret = 0, i;
+ struct i2c_client *client = v4l2_get_subdevdata(sd);
+ int flag = 0, err = 0;
+
+ format->format.code = ar0521_data.fmt.code;
+ format->format.colorspace = ar0521_data.fmt.colorspace;
+ format->format.field = V4L2_FIELD_NONE;
+
+ for (i = 0; i < ar0521_data.num_frm_fmts ; i++) {
+ if (
+ ar0521_data.mcu_cam_frmfmt[i].size.width == format->format.width &&
+ ar0521_data.mcu_cam_frmfmt[i].size.height == format->format.height
+ ) {
+ flag = 1;
+ break;
+ }
+ }
+
+ if(flag == 0) {
+ format->format.width = ar0521_data.pix.width;
+ format->format.height = ar0521_data.pix.height;
+ }
+
+ if (format->which == V4L2_SUBDEV_FORMAT_TRY)
+ {
+ return 0;
+ }
+
+ /* call stream config with width, height, frame rate */
+ err =
+ mcu_stream_config(client, ar0521_data.pix.pixelformat, ar0521_data.mcu_cam_frmfmt[i].mode,
+ ar0521_data.frate_index);
+ if (err < 0) {
+ dev_err(&client->dev, "%s: Failed stream_config \n", __func__);
+ return err;
+ }
+
+ ar0521_data.pix.width = format->format.width;
+ ar0521_data.pix.height = format->format.height;
+ ar0521_data.streamcap.capturemode = ar0521_data.mcu_cam_frmfmt[i].mode;
+
+ mdelay(10);
+
+ return ret;
+}
+
+static int ar0521_link_setup(struct media_entity *entity,
+ const struct media_pad *local,
+ const struct media_pad *remote, u32 flags)
+{
+ return 0;
+}
+
+static struct v4l2_subdev_video_ops ar0521_subdev_video_ops = {
+ .g_parm = ar0521_g_parm,
+ .s_parm = ar0521_s_parm,
+ .s_stream = ar0521_s_stream,
+};
+
+static const struct v4l2_subdev_pad_ops ar0521_subdev_pad_ops = {
+ .enum_frame_size = ar0521_enum_framesizes,
+ .enum_frame_interval = ar0521_enum_frameintervals,
+ .enum_mbus_code = ar0521_enum_mbus_code,
+ .set_fmt = ar0521_set_fmt,
+ .get_fmt = ar0521_get_fmt,
+};
+
+static struct v4l2_subdev_core_ops ar0521_subdev_core_ops = {
+ .s_power = ar0521_s_power,
+ .queryctrl = ar0521_queryctrl,
+ .g_ctrl = ar0521_g_ctrl,
+ .s_ctrl = ar0521_s_ctrl,
+ .g_ext_ctrls = ar0521_g_ext_ctrls,
+ .s_ext_ctrls = ar0521_s_ext_ctrls,
+ .try_ext_ctrls = ar0521_try_ext_ctrls,
+ .querymenu = ar0521_querymenu,
+};
+
+static struct v4l2_subdev_ops ar0521_subdev_ops = {
+ .core = &ar0521_subdev_core_ops,
+ .video = &ar0521_subdev_video_ops,
+ .pad = &ar0521_subdev_pad_ops,
+};
+
+static const struct media_entity_operations ar0521_sd_media_ops = {
+ .link_setup = ar0521_link_setup,
+};
+
+static int ar0521_init(struct i2c_client *client)
+{
+ u32 tgt_xclk; /* target xclk */
+ int ret = 0;
+
+ ar0521_data.on = true;
+
+ /* mclk */
+ tgt_xclk = ar0521_data.mclk;
+ tgt_xclk = min(tgt_xclk, (u32)AR0521_XCLK_MAX);
+ tgt_xclk = max(tgt_xclk, (u32)AR0521_XCLK_MIN);
+ ar0521_data.mclk = tgt_xclk;
+
+#ifdef AR0521_DEBUG
+ pr_info("mclk: %d MHz\n", tgt_xclk / 1000000);
+#endif
+
+ ret = mcu_stream_config(client, ar0521_data.pix.pixelformat,
+ ar0521_data.streamcap.capturemode,
+ ar0521_data.frate_index);
+
+ return ret;
+}
+
+static int ar0521_ctrls_init(ISP_CTRL_INFO *mcu_cam_ctrls)
+{
+ struct i2c_client *client = NULL;
+ int numctrls = 0;
+ int err = 0, i = 0;
+
+ client = ar0521_data.i2c_client;
+
+ if (mcu_cam_ctrls == NULL)
+ {
+ dev_err(
+ &client->dev,
+ "%s: MCU control data hasn't been allocated\n",
+ __func__
+ );
+ return -EINVAL;
+ }
+ /*
+ * Enumerate the controls from the MCU
+ */
+ err = mcu_count_or_list_ctrls(client, mcu_cam_ctrls, &numctrls);
+ if (err < 0) {
+ dev_err(&client->dev, "Unable to enumerate the controls in the sensor\n");
+ return err;
+ }
+
+ for (i = 0; i < numctrls; i++) {
+ if (mcu_cam_ctrls[i].ctrl_type == CTRL_STANDARD) {
+ err = mcu_get_ctrl_ui(client, &mcu_ctrl_info[i], mcu_ctrl_info[i].mcu_ctrl_index);
+ if (err != ERRCODE_SUCCESS) {
+ dev_err(&client->dev, "Error Enumerating Control 0x%08x !! \n",
+ mcu_ctrl_info[i].ctrl_id);
+ return err;
+ }
+ else if (
+ mcu_ctrl_info[i].ctrl_ui_data.ctrl_ui_info.ctrl_ui_type ==
+ V4L2_CTRL_TYPE_MENU
+ ) {
+ mcu_ctrl_info[i].ctrl_data.std.ctrl_step = 1;
+ }
+ }
+ }
+
+ return 0;
+}
+
+static int ar0521_verify_mcu(struct i2c_client *client)
+{
+ int ret = 0, try = 0;
+ unsigned char fw_version[32] = {0};
+
+ if (client == NULL)
+ {
+ dev_err(&client->dev, "%s: Invalid I2C client parameter\n", __func__);
+ return -EINVAL;
+ }
+
+ /*
+ * Try to boot the MCU into firmware mode.
+ *
+ * We do this only when the reset_gpio and pwdn_gpio are
+ * available.
+ */
+ if (gpios_available())
+ {
+ toggle_gpio(pwdn_gpio, 0);
+ msleep(10);
+ toggle_gpio(reset_gpio, 0);
+ msleep(10);
+ toggle_gpio(reset_gpio, 1);
+ msleep(500);
+
+ for(try = 0; try < 10; try++) {
+ ret = mcu_get_fw_version(client, fw_version);
+ if(ret < 0) {
+ msleep(100);
+ continue;
+ } else {
+ break;
+ }
+ }
+
+ if (ret == 0)
+ {
+ ret = mcu_verify_fw_version(fw_version);
+ }
+ else
+ {
+ dev_dbg(
+ &client->dev,
+ "Could not read the firmware version from the MCU\n"
+ );
+ pr_info(" Could not read the firmware version from the MCU, tries=%d\n", try+1);
+ }
+
+ /*
+ * Try booting and flashing in bootloader mode when an error is detected
+ * or the force update bit is set in the firmware version
+ */
+ if (ret != 0) {
+ int loop = 0;
+
+ /*
+ * Verification of the MCU in firmware mode failed so
+ * try to boot the MCU in bootloader mode.
+ */
+
+ pr_info(" Trying to Detect Bootloader mode\n");
+
+ if (gpios_available())
+ {
+ toggle_gpio(reset_gpio, 0);
+ msleep(10);
+ toggle_gpio(pwdn_gpio, 1);
+ msleep(100);
+ toggle_gpio(reset_gpio, 1);
+ msleep(100);
+ }
+
+ for(loop = 0; loop < 10; loop++) {
+ ret = mcu_bload_get_version(client);
+ if (ret < 0) {
+ /* Trial and Error for 1 second (100ms * 10) */
+ msleep(100);
+ continue;
+ } else {
+#ifdef AR0521_DEBUG
+ pr_info(" Get Bload Version Success\n");
+#endif
+ break;
+ }
+ }
+
+ if(loop == 10) {
+ dev_err(&client->dev, "Error getting firmware version in bootloader mode\n");
+ return -EINVAL;
+ }
+
+ if (mcu_fw_update(client, NULL) < 0) {
+ dev_err(&client->dev, "Error when trying to update the firmware\n");
+ return -EFAULT;
+ }
+
+ if (gpios_available())
+ {
+ toggle_gpio(pwdn_gpio, 0);
+ }
+
+ /* Allow FW Updated MCU to reboot */
+ msleep(500);
+
+ /*
+ * Ensure the firmware has been flashed correctly by getting the version
+ * of the firmware (in firmware mode).
+ */
+ for(loop = 0; loop < 100; loop++) {
+ ret = mcu_get_fw_version(client, fw_version);
+
+ if (ret == 0)
+ {
+ ret = mcu_verify_fw_version(fw_version);
+ }
+
+ if (ret < 0) {
+ /* Trial and Error for 10 seconds (100ms * 100) */
+ msleep(100);
+ continue;
+ } else {
+#ifdef AR0521_DEBUG
+ pr_info(" Get FW Version Success\n");
+#endif
+ break;
+ }
+ }
+
+ if(loop == 100) {
+ dev_err(
+ &client->dev,
+ "Couldn't get firmware version correctly after update (did the update fail?\n"
+ );
+ return -EINVAL;
+ }
+ }
+
+ }
+ else
+ {
+ static const char *const flash_error_message =
+ "Please connect only one camera and fix the MCU.\n"
+ "Hint: Connected only one camera? Is someone else using the "
+ "power down/reset GPIOs?\n";
+
+ /*
+ * When we do not have the reset GPIO, we cannot toggle it
+ * to make the MCU switch to firmware mode. So, we try getting
+ * the MCU into firmware assuming it is currently in
+ * bootloader mode.
+ *
+ * The following sequence is required for switching it to
+ * firmware mode.
+ */
+ int loop, get_firmware_version = 0;
+
+ /*
+ * We would have to verify that the MCU is in bootloader mode
+ * before sending the command to make it switch to firmware mode.
+ *
+ * So, we try to get the version of the bootloader.
+ */
+ for(loop = 0; loop < 10; loop++)
+ {
+ ret = mcu_bload_get_version(client);
+ if (ret < 0)
+ {
+ /* Trial and Error for 1 second (100ms * 10) */
+ msleep(100);
+ }
+ else
+ {
+ pr_info(" Get Bload Version Success\n");
+ break;
+ }
+ }
+
+ if(loop == 10)
+ {
+ dev_err(&client->dev, "couldn't get bootloader version\n");
+
+
+ get_firmware_version = 1;
+
+ msleep(1000);
+ }
+ else
+ {
+ /*
+ * We retry if we could boot into firmware mode as we're
+ * currently in bootloader mode (as mcu_bload_get_version
+ * succeeded).
+ */
+ ret = mcu_bload_go(client);
+ if (ret < 0) {
+ dev_err(&client->dev,"couldn't switch to firmware mode.\n");
+ dev_err(&client->dev, flash_error_message);
+ return -EINVAL;
+ }
+ else {
+ msleep(10);
+ get_firmware_version = 1;
+ }
+ }
+
+ /*
+ * We should verify if we have the version of the MCU we
+ * need. If not, we let the user know about it and exit
+ * the probe.
+ */
+ if (get_firmware_version)
+ {
+ ret = mcu_get_fw_version(client, fw_version);
+ if (ret == 0)
+ {
+ ret = mcu_verify_fw_version(fw_version);
+ }
+ else
+ {
+ dev_err(&client->dev, "couldn't get the MCU firmware version");
+ dev_err(&client->dev, flash_error_message);
+ return -EINVAL;
+ }
+
+ if (ret != 0)
+ {
+ dev_err(&client->dev, "wrong MCU firmware version");
+ dev_err(&client->dev, flash_error_message);
+ return -EINVAL;
+ }
+ }
+ }
+
+ dev_info(&client->dev, "Current Firmware Version - (%.32s)\n", fw_version);
+
+ return 0;
+}
+
+static int ar0521_parse_and_get_clocks(struct device *dev)
+{
+ int retval = 0;
+
+ if (dev == NULL)
+ {
+ dev_err(dev, "%s: Invalid device parameter\n", __func__);
+ return -EINVAL;
+ }
+
+ ar0521_data.sensor_clk = devm_clk_get(dev, "xclk");
+ if (IS_ERR(ar0521_data.sensor_clk)) {
+ /* assuming clock enabled by default */
+ ar0521_data.sensor_clk = NULL;
+ dev_err(dev, "clock-frequency missing or invalid\n");
+ return PTR_ERR(ar0521_data.sensor_clk);
+ }
+
+ /*mclk reserved for future use*/
+ retval = of_property_read_u32(dev->of_node, "mclk",
+ &(ar0521_data.mclk));
+ if (retval) {
+ dev_err(dev, "mclk missing or invalid\n");
+ return retval;
+ }
+
+ /*mclk_source reserved for future use*/
+ retval = of_property_read_u32(dev->of_node, "mclk_source",
+ (u32 *) &(ar0521_data.mclk_source));
+ if (retval) {
+ dev_err(dev, "mclk_source missing or invalid\n");
+ return retval;
+ }
+
+ retval = of_property_read_u32(dev->of_node, "csi_id",
+ &(ar0521_data.csi));
+ if (retval) {
+ dev_err(dev, "csi id missing or invalid\n");
+ return retval;
+ }
+
+ return 0;
+}
+
+static int ar0521_parse_and_get_gpios(struct device *dev)
+{
+ int err;
+ struct device_node *node = NULL;
+
+ if (dev == NULL)
+ {
+ dev_err(dev, "%s: Invalid device parameter\n", __func__);
+ return -EINVAL;
+ }
+
+ node = dev->of_node;
+
+ pwdn_gpio = of_get_named_gpio(node, "pwn-gpios", 0);
+ if (!gpio_is_valid(pwdn_gpio)) {
+ dev_err(dev, "no sensor pwdn pin available");
+ return -EINVAL;
+ }
+ else {
+#ifdef AR0521_DEBUG
+ printk("BOOT = %x \n", pwdn_gpio);
+#endif
+ }
+
+ reset_gpio = of_get_named_gpio(node, "rst-gpios", 0);
+ if (!gpio_is_valid(reset_gpio)) {
+ dev_err(dev, "no sensor reset pin available");
+ return -EINVAL;
+ }
+ else {
+#ifdef AR0521_DEBUG
+ printk("RESET = %x \n", reset_gpio);
+#endif
+ }
+
+ err = devm_gpio_request_one(dev, pwdn_gpio, GPIOF_OUT_INIT_HIGH,
+ "ar0521_mipi_pwdn");
+ if (err < 0) {
+ dev_warn(dev, "Failed to set power pin\n");
+ dev_warn(dev, "err = %d\n", err);
+ return err;
+ }
+
+ err = devm_gpio_request_one(dev, reset_gpio, GPIOF_OUT_INIT_HIGH,
+ "ar0521_mipi_reset");
+ if (err < 0) {
+ dev_warn(dev, "Failed to set reset pin\n");
+ dev_warn(dev, "err = %d\n", err);
+ return err;
+ }
+
+ return 0;
+}
+
+/*!
+ * ar0521 I2C probe function
+ *
+ * @param adapter struct i2c_adapter *
+ * @return Error code indicating success or failure
+ */
+static int ar0521_probe(struct i2c_client *client,
+ const struct i2c_device_id *id)
+{
+ struct pinctrl *pinctrl;
+ struct device_node *node = client->dev.of_node;
+ struct device *dev = &client->dev;
+
+ int ret, frm_fmt_size = 0, i;
+ uint16_t sensor_id = 0;
+
+ if (!IS_ENABLED(CONFIG_OF) || !node)
+ return -EINVAL;
+
+ pinctrl = devm_pinctrl_get_select_default(dev);
+ if (IS_ERR(pinctrl))
+ dev_warn(dev, "no pin available\n");
+
+ /* Set initial values for the sensor struct. */
+ memset(&ar0521_data, 0, sizeof(ar0521_data));
+
+ ret = ar0521_parse_and_get_gpios(dev);
+ if (ret)
+ {
+ pr_info("Warning: couldn't get GPIOs\n");
+ }
+
+ ret = ar0521_parse_and_get_clocks(dev);
+ if (ret)
+ {
+ dev_err(dev, "Error occurred when getting clock\n");
+ return ret;
+ }
+
+ clk_prepare_enable(ar0521_data.sensor_clk);
+
+ /*
+ * We usually get and set/enable regulators here. But it doesn't
+ * seem to be needed here as the Variscite EVK seems to be supplying
+ * the required voltage directly without us needing to set it.
+ */
+ toggle_gpio(reset_gpio, 1);
+ msleep(500);
+
+ ret = ar0521_verify_mcu(client);
+ if (ret)
+ {
+ dev_err(dev, "Error occurred when verifying MCU\n");
+ return ret;
+ }
+
+ ar0521_data.mipi_lane_config = 4;
+ ret = mcu_isp_configuration(CMD_ID_LANE_CONFIG, client);
+ if(ret)
+ {
+ dev_err(dev, "Error occurred in configuring mipi lanes\n");
+ return ret;
+ }
+
+ /*
+ * Query the number of controls from MCU
+ */
+ if (mcu_count_or_list_ctrls(client, NULL, &num_ctrls) < 0) {
+ dev_err(dev, "%s, Failed to get number of controls for sensor\n", __func__);
+ return -EFAULT;
+ }
+
+ /*
+ * Query the number for Formats available from MCU
+ */
+ if (mcu_count_or_list_fmts(client, NULL, &frm_fmt_size) < 0) {
+ dev_err(dev, "%s, Failed to get number of formats for sensor\n", __func__);
+ return -EFAULT;
+ }
+
+ /*
+ * Initialise the MCU related data as we're about to use them.
+ */
+ ret = mcu_data_init(dev, frm_fmt_size);
+ if (ret)
+ {
+ dev_err(dev, "%s: failed to initialize MCU related data\n", __func__);
+ return -EFAULT;
+ }
+
+ if (mcu_get_sensor_id(client, &sensor_id) < 0) {
+ dev_err(dev, "Unable to get MCU Sensor ID \n");
+ return -EFAULT;
+ }
+
+ if (mcu_isp_init(client) < 0) {
+ dev_err(dev, "Unable to INIT ISP \n");
+ return -EFAULT;
+ }
+
+ /*
+ * Enumerate the Formats in the sensor
+ */
+ if (mcu_count_or_list_fmts(client, stream_info, &frm_fmt_size) < 0) {
+ dev_err(dev, "Unable to enumerate the formats in the sensor\n");
+ return -EFAULT;
+ }
+
+ /*
+ * Fill some state information as required.
+ */
+ ar0521_data.i2c_client = client;
+
+ ar0521_data.pix.pixelformat = V4L2_PIX_FMT_UYVY;
+ ar0521_data.fmt.code = AR0521_DEFAULT_DATAFMT;
+ ar0521_data.fmt.colorspace = AR0521_DEFAULT_COLORSPACE;
+ ar0521_data.pix.width = AR0521_DEFAULT_WIDTH;
+ ar0521_data.pix.height = AR0521_DEFAULT_HEIGHT;
+ ar0521_data.streamcap.capability = V4L2_MODE_HIGHQUALITY | V4L2_CAP_TIMEPERFRAME;
+ ar0521_data.streamcap.capturemode = AR0521_DEFAULT_MODE;
+ ar0521_data.num_frm_fmts = frm_fmt_size;
+ ar0521_data.power_on = 0;
+
+ /*
+ * Configure the stream with default configuration
+ */
+ ret = ar0521_init(client);
+ if (ret)
+ {
+ dev_err(dev, "Failed to initialise the device with default configuration\n");
+ return ret;
+ }
+
+ v4l2_i2c_subdev_init(&ar0521_data.subdev, client, &ar0521_subdev_ops);
+
+ /*
+ * Initialize Controls by getting details about the controls from the MCU
+ */
+ ret = ar0521_ctrls_init(mcu_ctrl_info);
+ if (ret)
+ {
+ dev_warn(dev, "Failed to initialise the controls. Controls might not work\n");
+ }
+
+ /*
+ * Write default values for all controls
+ */
+ for (i = 0; i < num_ctrls; i++) {
+ if (mcu_ctrl_info[i].ctrl_type == CTRL_STANDARD) {
+ int ret;
+ struct v4l2_control ctrl = {
+ .id = mcu_ctrl_info[i].ctrl_id,
+ .value = mcu_ctrl_info[i].ctrl_data.std.ctrl_def
+ };
+
+ if (
+ mcu_ctrl_info[i].ctrl_id == 0x9a0926
+ )
+ {
+ /*
+ * We know that the MCU would fail when we
+ * try to write the V4L2_CID_ROI_EXPOSURE
+ * control as we are not in the correct auto
+ * exposure mode by default. So, skip it.
+ */
+ continue;
+ }
+
+ ret = ar0521_s_ctrl(&ar0521_data.subdev, &ctrl);
+ if (ret < 0)
+ {
+ dev_err(dev, "Failed to write default value for a control: %d; Control ID: %x\n", i, mcu_ctrl_info[i].ctrl_id);
+ }
+ }
+ }
+
+ ar0521_data.subdev.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
+ ar0521_data.subdev.entity.function = MEDIA_ENT_F_CAM_SENSOR;
+ ar0521_data.pads[0].flags = MEDIA_PAD_FL_SOURCE;
+
+ ret = media_entity_pads_init(&ar0521_data.subdev.entity, 1, ar0521_data.pads);
+ ar0521_data.subdev.entity.ops = &ar0521_sd_media_ops;
+ if (ret < 0) {
+ dev_err(dev, "Failed to init media entity pads\n");
+ return ret;
+ }
+
+ ret = v4l2_async_register_subdev(&ar0521_data.subdev);
+ if (ret)
+ {
+ dev_err(dev, "Failed to register the I2C subdev for the sensor\n");
+ return ret;
+ }
+
+ pr_info("AR0521 detected.\n");
+
+ return 0;
+}
+
+/*!
+ * ar0521 I2C detach function
+ *
+ * @param client struct i2c_client *
+ * @return Error code indicating success or failure
+ */
+static int ar0521_remove(struct i2c_client *client)
+{
+ v4l2_async_unregister_subdev(&ar0521_data.subdev);
+
+ clk_disable_unprepare(ar0521_data.sensor_clk);
+
+ /*
+ * Power down the MCU
+ */
+ if (reset_gpio >= 0)
+ {
+ toggle_gpio(reset_gpio, 0);
+ }
+
+ /*
+ * Free up the GPIOs
+ */
+ if (pwdn_gpio >= 0)
+ devm_gpio_free(&client->dev, pwdn_gpio);
+
+ if (reset_gpio >= 0)
+ devm_gpio_free(&client->dev, reset_gpio);
+
+ return 0;
+}
+
+static const struct i2c_device_id ar0521_id[] = {
+ {"ar0521", 0},
+ {}
+};
+
+MODULE_DEVICE_TABLE(i2c, ar0521_id);
+
+static struct i2c_driver ar0521_i2c_driver = {
+ .driver = {
+ .name = "ar0521",
+ .owner = THIS_MODULE
+ },
+ .probe = ar0521_probe,
+ .remove = ar0521_remove,
+ .id_table = ar0521_id,
+};
+
+
+module_i2c_driver(ar0521_i2c_driver);
+
+MODULE_DESCRIPTION("AR0521 V4L2 driver");
+MODULE_AUTHOR("e-con Systems");
+MODULE_LICENSE("GPL v2");
+MODULE_VERSION("1.0");
+MODULE_ALIAS("CSI");
diff --git a/drivers/media/platform/imx8/ar0521.h b/drivers/media/platform/imx8/ar0521.h
new file mode 100644
index 000000000000..05bdb30bbb4f
--- /dev/null
+++ b/drivers/media/platform/imx8/ar0521.h
@@ -0,0 +1,291 @@
+/*
+ * ar0521.h - ar0521 sensor mode tables
+ *
+ * Copyright (c) 2018-2019, e-con Systems, All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __AR0521_TABLES__
+#define __AR0521_TABLES__
+
+#define AR0521_XCLK_MIN 6000000
+#define AR0521_XCLK_MAX 24000000
+
+#define ar0521_reg struct reg_16
+#define AR0521_TABLE_WAIT_MS 0
+#define AR0521_TABLE_END 1
+#define AR0521_WAIT_MS 10
+#define AR0521_DEFAULT_MODE 0
+
+#define AR0521_DEFAULT_WIDTH 640
+#define AR0521_DEFAULT_HEIGHT 480
+
+#define AR0521_MAX_FORMAT_SUPPORTED 1
+
+#define AR0521_DEFAULT_FPS 120
+
+#define AR0521_DEFAULT_DATAFMT MEDIA_BUS_FMT_UYVY8_2X8
+#define AR0521_DEFAULT_COLORSPACE V4L2_COLORSPACE_SRGB
+
+
+////////////////////////////////////////////////////////////////////////////////////////////
+
+/* Defines related to MCU */
+
+#define CMD_SIGNATURE 0x43
+#define TX_LEN_PKT 5
+#define RX_LEN_PKT 6
+#define HEADER_FOOTER_SIZE 4
+#define CMD_STATUS_MSG_LEN 7
+
+#define VERSION_SIZE 32
+#define VERSION_FILE_OFFSET 100
+
+#define MCU_CMD_STATUS_SUCCESS 0x0000
+#define MCU_CMD_STATUS_PENDING 0xF000
+#define MCU_CMD_STATUS_ISP_PWDN 0x0FF0
+#define MCU_CMD_STATUS_ISP_UNINIT 0x0FF1
+
+#define MAX_NUM_FRATES 10
+#define MAX_CTRL_DATA_LEN 100
+#define MAX_CTRL_UI_STRING_LEN 32
+
+typedef enum _errno {
+ ERRCODE_SUCCESS = 0x00,
+ ERRCODE_BUSY = 0x01,
+ ERRCODE_INVAL = 0x02,
+ ERRCODE_PERM = 0x03,
+ ERRCODE_NODEV = 0x04,
+ ERRCODE_IO = 0x05,
+ ERRCODE_HW_SPEC = 0x06,
+ ERRCODE_AGAIN = 0x07,
+ ERRCODE_ALREADY = 0x08,
+ ERRCODE_NOTIMPL = 0x09,
+ ERRCODE_RANGE = 0x0A,
+
+ /* Reserved 0x0B - 0xFE */
+
+ ERRCODE_UNKNOWN = 0xFF,
+} RETCODE;
+
+typedef enum _cmd_id {
+ CMD_ID_VERSION = 0x00,
+ CMD_ID_GET_SENSOR_ID = 0x01,
+ CMD_ID_GET_STREAM_INFO = 0x02,
+ CMD_ID_GET_CTRL_INFO = 0x03,
+ CMD_ID_INIT_CAM = 0x04,
+ CMD_ID_GET_STATUS = 0x05,
+ CMD_ID_DE_INIT_CAM = 0x06,
+ CMD_ID_STREAM_ON = 0x07,
+ CMD_ID_STREAM_OFF = 0x08,
+ CMD_ID_STREAM_CONFIG = 0x09,
+ CMD_ID_GET_CTRL_UI_INFO = 0x0A,
+
+ /* Reserved 0x0B to 0x0F */
+
+ CMD_ID_GET_CTRL = 0x10,
+ CMD_ID_SET_CTRL = 0x11,
+
+ /* Reserved 0x12, 0x13 */
+
+ CMD_ID_FW_UPDT = 0x14,
+ CMD_ID_ISP_PDOWN = 0x15,
+ CMD_ID_ISP_PUP = 0x16,
+
+ /* Reserved - 0x17 to 0xFE (except 0x43) */
+ CMD_ID_LANE_CONFIG = 0x17,
+ CMD_ID_MIPI_CLK_CONFIG = 0x18,
+
+ CMD_ID_UNKNOWN = 0xFF,
+
+} HOST_CMD_ID;
+
+enum {
+ FRAME_RATE_DISCRETE = 0x01,
+ FRAME_RATE_CONTINOUS = 0x02,
+};
+
+enum {
+ CTRL_STANDARD = 0x01,
+ CTRL_EXTENDED = 0x02,
+};
+
+enum {
+/* 0x01 - Integer (32bit)
+ 0x02 - Long Int (64 bit)
+ 0x03 - String
+ 0x04 - Pointer to a 1-Byte Array
+ 0x05 - Pointer to a 2-Byte Array
+ 0x06 - Pointer to a 4-Byte Array
+ 0x07 - Pointer to Generic Data (custom Array)
+*/
+
+ EXT_CTRL_TYPE_INTEGER = 0x01,
+ EXT_CTRL_TYPE_LONG = 0x02,
+ EXT_CTRL_TYPE_STRING = 0x03,
+ EXT_CTRL_TYPE_PTR8 = 0x04,
+ EXT_CTRL_TYPE_PTR16 = 0x05,
+ EXT_CTRL_TYPE_PTR32 = 0x06,
+ EXT_CTRL_TYPE_VOID = 0x07,
+};
+
+/* Stream and Control Info Struct */
+typedef struct _isp_stream_info {
+ uint32_t fmt_fourcc;
+ uint16_t width;
+ uint16_t height;
+ uint8_t frame_rate_type;
+ union {
+ struct {
+ uint16_t frame_rate_num;
+ uint16_t frame_rate_denom;
+ } disc;
+ struct {
+ uint16_t frame_rate_min_num;
+ uint16_t frame_rate_min_denom;
+ uint16_t frame_rate_max_num;
+ uint16_t frame_rate_max_denom;
+ uint16_t frame_rate_step_num;
+ uint16_t frame_rate_step_denom;
+ } cont;
+ } frame_rate;
+} ISP_STREAM_INFO;
+
+
+typedef struct _isp_ctrl_ui_info {
+ struct {
+ char ctrl_name[MAX_CTRL_UI_STRING_LEN];
+ uint8_t ctrl_ui_type;
+ uint8_t ctrl_ui_flags;
+ } ctrl_ui_info;
+
+ /* This Struct is valid only if ctrl_ui_type = 0x03 */
+ struct {
+ uint8_t num_menu_elem;
+ char **menu;
+ } ctrl_menu_info;
+} ISP_CTRL_UI_INFO;
+
+typedef struct _isp_ctrl_info_std {
+ uint32_t ctrl_id;
+ uint8_t ctrl_type;
+ uint8_t mcu_ctrl_index;
+ union {
+ struct {
+ int32_t ctrl_min;
+ int32_t ctrl_max;
+ int32_t ctrl_def;
+ int32_t ctrl_step;
+ } std;
+ struct {
+ uint8_t val_type;
+ uint32_t val_length;
+ // This size may vary according to ctrl types
+ uint8_t val_data[MAX_CTRL_DATA_LEN];
+ } ext;
+ } ctrl_data;
+ ISP_CTRL_UI_INFO ctrl_ui_data;
+} ISP_CTRL_INFO;
+
+struct ar0521 {
+ int numctrls;
+ struct v4l2_subdev subdev;
+ struct i2c_client *i2c_client;
+ uint16_t frate_index;
+ struct media_pad pads[1];
+
+ u32 mclk;
+ u8 mclk_source;
+ struct clk *sensor_clk;
+
+ int csi;
+
+ /*
+ * Format related data
+ */
+ struct v4l2_pix_format pix;
+
+ struct ar0521_datafmt {
+ u32 code;
+ enum v4l2_colorspace colorspace;
+ } fmt;
+
+ struct v4l2_captureparm streamcap;
+
+ bool on;
+
+ int num_frm_fmts;
+
+ /*
+ * Array of Camera framesizes
+ *
+ * Moved from global
+ */
+ struct mcu_frmfmt {
+ struct v4l2_frmsize_discrete size;
+ unsigned int * framerates;
+ int num_framerates;
+ int mode;
+ } *mcu_cam_frmfmt;
+
+ int power_on;
+
+ uint16_t mipi_lane_config;
+ uint16_t mipi_clk_config;
+
+ struct v4l2_ctrl *ctrls[];
+
+};
+
+static ISP_STREAM_INFO *stream_info = NULL;
+static ISP_CTRL_INFO *mcu_ctrl_info = NULL;
+
+/* Total formats */
+static int num_ctrls = 0;
+static int *streamdb;
+static uint32_t *ctrldb;
+
+/* Mutex for I2C lock */
+DEFINE_MUTEX(mcu_i2c_mutex);
+
+static int ar0521_read(struct i2c_client *client, u8 * val, u32 count);
+static int ar0521_write(struct i2c_client *client, u8 * val, u32 count);
+static int ar0521_s_parm(struct v4l2_subdev *sd, struct v4l2_streamparm *param);
+static int ar0521_s_power(struct v4l2_subdev *sd, int on);
+
+/*
+ * MCU related functions
+ */
+static int mcu_get_fw_version(struct i2c_client *client, unsigned char * fw_version);
+static int mcu_verify_fw_version(const unsigned char *const fw_version);
+static int mcu_count_or_list_fmts(struct i2c_client *client, ISP_STREAM_INFO *stream_info, int *frm_fmt_size);
+static int mcu_count_or_list_ctrls(struct i2c_client *client,
+ ISP_CTRL_INFO * mcu_ctrl_info, int *numctrls);
+static int mcu_get_sensor_id(struct i2c_client *client, uint16_t * sensor_id);
+static int mcu_get_cmd_status(struct i2c_client *client, uint8_t * cmd_id,
+ uint16_t * cmd_status, uint8_t * ret_code);
+static int mcu_isp_init(struct i2c_client *client);
+static int mcu_stream_config(struct i2c_client *client, uint32_t format,
+ int mode, int frate_index);
+static int mcu_set_ctrl(struct i2c_client *client, uint32_t ctrl_id,
+ uint8_t ctrl_type, int32_t curr_val);
+static int mcu_get_ctrl(struct i2c_client *client, uint32_t ctrl_id,
+ uint8_t * ctrl_type, int32_t * curr_val);
+static int mcu_get_ctrl_ui(struct i2c_client *client,
+ ISP_CTRL_INFO * mcu_ui_info, int index);
+static int mcu_fw_update(struct i2c_client *client, unsigned char *txt_fw_version);
+static int mcu_isp_power_down(struct i2c_client *client);
+static int mcu_isp_power_wakeup(struct i2c_client *client);
+
+#endif /* __AR0521_TABLES__ */
diff --git a/drivers/media/platform/imx8/ar1335.c b/drivers/media/platform/imx8/ar1335.c
new file mode 100644
index 000000000000..c798bc938263
--- /dev/null
+++ b/drivers/media/platform/imx8/ar1335.c
@@ -0,0 +1,3625 @@
+/*
+ * ar1335.c - AR1335 sensor driver
+ * Copyright (c) 2020-2021, e-con Systems. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <linux/module.h>
+#include <linux/delay.h>
+#include <linux/clk.h>
+#include <linux/i2c.h>
+#include <linux/of_gpio.h>
+#include <linux/pinctrl/consumer.h>
+#include <media/v4l2-device.h>
+#include <media/v4l2-ctrls.h>
+
+#include "ar1335.h"
+#include "mcu_firmware_1335.h"
+
+/*
+#define AR1335_DEBUG 1
+*/
+
+/*!
+ * Maintains the information on the current state of the sensor.
+ */
+static struct ar1335 ar1335_data;
+
+static int pwdn_gpio, reset_gpio;
+
+int gpios_available_1335(void)
+{
+ return (pwdn_gpio >= 0) && (reset_gpio >= 0);
+}
+
+/**********************************************************************
+ *
+ * START of AR1335 related code
+ *
+ **********************************************************************
+ */
+
+static int ar1335_write(struct i2c_client *client, u8 * val, u32 count)
+{
+ int ret;
+ struct i2c_msg msg = {
+ .addr = client->addr,
+ .flags = 0,
+ .len = count,
+ .buf = val,
+ };
+
+ ret = i2c_transfer(client->adapter, &msg, 1);
+ if (ret < 0) {
+ dev_err(&client->dev, "Failed writing register.\n");
+ dev_err(&client->dev, "addr: %x; val = %hhu, ret = %d!\n",
+ client->addr, *val, ret);
+ return ret;
+ }
+
+ return 0;
+}
+
+static int ar1335_read(struct i2c_client *client, u8 * val, u32 count)
+{
+ int ret;
+ struct i2c_msg msg = {
+ .addr = client->addr,
+ .flags = 0,
+ .buf = val,
+ };
+
+ msg.flags = I2C_M_RD;
+ msg.len = count;
+ ret = i2c_transfer(client->adapter, &msg, 1);
+ if (ret < 0)
+ goto err;
+
+ return 0;
+
+ err:
+ dev_err(&client->dev, "Failed reading register ret = %d!\n", ret);
+ return ret;
+}
+
+/*
+ * The MCU specific functions below depend on the sensor-specific
+ * functions above.
+ */
+
+/*
+ * ---------------------------------------------------------
+ * START of MCU realed functions
+ * ---------------------------------------------------------
+ */
+
+/*
+ * NOTE about modularizing this MCU related function.
+ *
+ * - The functions:
+ *
+ * x mcu_get_fw_version
+ * x mcu_bload_get_version
+ * x mcu_bload_erase_flash
+ * x mcu_bload_parse_send_cmd
+ * x mcu_bload_go
+ * x mcu_bload_read
+ * x mcu_count_or_list_ctrls
+ * x mcu_count_or_list_fmts
+ * x mcu_get_sensor_id
+ * x mcu_get_ctrl_ui
+ * x mcu_stream_config
+ * x mcu_isp_power_down
+ * x mcu_isp_power_wakeup
+ * x mcu_set_ctrl
+ * x mcu_get_ctrl
+ *
+ * seem to directly use platform specific functions:
+ *
+ * x ar1335_write
+ * x ar1335_read
+ *
+ * This could be passed in as a function pointer.
+ */
+
+static unsigned short int mcu_bload_calc_crc16(unsigned char *buf, int len)
+{
+ unsigned short int crc = 0;
+ int i = 0;
+
+ if (!buf || !(buf + len))
+ return 0;
+
+ for (i = 0; i < len; i++) {
+ crc ^= buf[i];
+ }
+
+ return crc;
+}
+
+static int mcu_bload_ascii2hex(unsigned char ascii)
+{
+ if (ascii <= '9') {
+ return (ascii - '0');
+ } else if ((ascii >= 'a') && (ascii <= 'f')) {
+ return (0xA + (ascii - 'a'));
+ } else if ((ascii >= 'A') && (ascii <= 'F')) {
+ return (0xA + (ascii - 'A'));
+ }
+ return -1;
+}
+
+static unsigned char errorcheck(char *data, unsigned int len)
+{
+ unsigned int i = 0;
+ unsigned char crc = 0x00;
+
+ for (i = 0; i < len; i++) {
+ crc ^= data[i];
+ }
+
+ return crc;
+}
+
+/*
+ * mcu_get_fw_version:
+ *
+ * Read the firmware version from the MCU.
+ *
+ * A success value (0) is returned when the MCU version could be successfully read.
+ * else a negative value indicating error is returned.
+ */
+static int mcu_get_fw_version(struct i2c_client *client, unsigned char *fw_version_1335)
+{
+ uint32_t payload_len = 0;
+ uint8_t errcode = ERRCODE_SUCCESS, orig_crc = 0, calc_crc = 0;
+ int ret = 0, err = 0, loop;
+ /* Query firmware version from MCU */
+
+ /* lock semaphore */
+ mutex_lock(&mcu_i2c_mutex_1335);
+
+ mc_data_1335[0] = CMD_SIGNATURE;
+ mc_data_1335[1] = CMD_ID_VERSION;
+ mc_data_1335[2] = payload_len >> 8;
+ mc_data_1335[3] = payload_len & 0xFF;
+ mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2);
+
+ err = ar1335_write(client, mc_data_1335, TX_LEN_PKT);
+ if (err != 0)
+ {
+ dev_err(&client->dev, "MCU CMD ID version Error- %d\n", err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ mc_data_1335[0] = CMD_SIGNATURE;
+ mc_data_1335[1] = CMD_ID_VERSION;
+ err = ar1335_write(client, mc_data_1335, 2);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) MCU CMD ID Write PKT fw Version Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ err = ar1335_read(client, mc_ret_data_1335, RX_LEN_PKT);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) MCU CMD ID Read PKT fw Version Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ /* Verify CRC */
+ orig_crc = mc_ret_data_1335[4];
+ calc_crc = errorcheck(&mc_ret_data_1335[2], 2);
+ if (orig_crc != calc_crc) {
+ dev_err(&client->dev," %s(%d) MCU CMD ID fw Version Error CRC 0x%02x != 0x%02x \n",
+ __func__, __LINE__, orig_crc, calc_crc);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ errcode = mc_ret_data_1335[5];
+ if (errcode != ERRCODE_SUCCESS) {
+ dev_err(&client->dev," %s(%d) MCU CMD ID fw Errcode - 0x%02x \n", __func__,
+ __LINE__, errcode);
+ ret = -EIO;
+ goto exit;
+ }
+
+ /* Read the actual version from MCU*/
+ payload_len =
+ ((mc_ret_data_1335[2] << 8) | mc_ret_data_1335[3]) + HEADER_FOOTER_SIZE;
+ memset(mc_ret_data_1335, 0x00, payload_len);
+ err = ar1335_read(client, mc_ret_data_1335, payload_len);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) MCU fw CMD ID Read Version Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ /* Verify CRC */
+ orig_crc = mc_ret_data_1335[payload_len - 2];
+ calc_crc = errorcheck(&mc_ret_data_1335[2], 32);
+ if (orig_crc != calc_crc) {
+ dev_err(&client->dev," %s(%d) MCU fw CMD ID Version CRC ERROR 0x%02x != 0x%02x \n",
+ __func__, __LINE__, orig_crc, calc_crc);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ /* Verify Errcode */
+ errcode = mc_ret_data_1335[payload_len - 1];
+ if (errcode != ERRCODE_SUCCESS) {
+ dev_err(&client->dev," %s(%d) MCU fw CMD ID Read Payload Error - 0x%02x \n", __func__,
+ __LINE__, errcode);
+ ret = -EIO;
+ goto exit;
+ }
+
+ for (loop = 0 ; loop < VERSION_SIZE ; loop++ )
+ *(fw_version_1335+loop) = mc_ret_data_1335[2+loop];
+
+ ret = ERRCODE_SUCCESS;
+exit:
+ /* unlock semaphore */
+ mutex_unlock(&mcu_i2c_mutex_1335);
+
+ return ret;
+}
+
+/**
+ * mcu_verify_fw_version:
+ *
+ * Verify the firmware version obtained from the MCU and that found in the
+ * firmware text file present in our driver.
+ *
+ * The return value after verification is as follows:
+ *
+ * - If the version number matches a success value (0) is returned.
+ *
+ * - In case the version number mismatches, a negative value indicating error
+ * is returned.
+ *
+ * - In case the force update bit is set in firmware version in the text
+ * file, a positive value is returned.
+ */
+static int mcu_verify_fw_version(const unsigned char *const fw_version_1335)
+{
+ int loop, i = 0, ret;
+ char txt_fw_version[32] = {0};
+ unsigned long txt_fw_pos = ARRAY_SIZE(g_mcu_fw_buf_1335)-VERSION_FILE_OFFSET;
+
+ /* Get Text Firmware version*/
+ for(loop = txt_fw_pos; loop < (txt_fw_pos+64); loop=loop+2) {
+ *(txt_fw_version+i) = (mcu_bload_ascii2hex(g_mcu_fw_buf_1335[loop]) << 4 |
+ mcu_bload_ascii2hex(g_mcu_fw_buf_1335[loop+1]));
+ i++;
+ }
+
+ /* Check for forced/always update field in the text firmware version*/
+ if(txt_fw_version[17] == '1') {
+
+#ifdef AR1335_DEBUG
+ pr_info("Forced Update Enabled - Firmware Version - (%.32s) \n",
+ fw_version_1335);
+#endif
+
+ ret = 2;
+ }
+ else {
+ for(i = 0; i < VERSION_SIZE; i++) {
+ if(txt_fw_version[i] != fw_version_1335[i]) {
+
+ pr_info("Previous Firmware Version - (%.32s)\n", fw_version_1335);
+
+ ret = -1;
+ break;
+ }
+ }
+
+ if (i == VERSION_SIZE)
+ ret = ERRCODE_SUCCESS;
+ }
+
+ return ret;
+}
+
+static int mcu_bload_get_version(struct i2c_client *client)
+{
+ int ret = 0;
+
+ /*----------------------------- GET VERSION -------------------- */
+
+ /* Write Get Version CMD */
+ g_bload_buf_1335[0] = BL_GET_VERSION;
+ g_bload_buf_1335[1] = ~(BL_GET_VERSION);
+
+ ret = ar1335_write(client, g_bload_buf_1335, 2);
+ if (ret < 0) {
+ dev_err(&client->dev,"Write Failed \n");
+ return -1;
+ }
+
+ /* Wait for ACK or NACK */
+ ret = ar1335_read(client, g_bload_buf_1335, 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Read Failed \n");
+ return -1;
+ }
+
+ if (g_bload_buf_1335[0] != 'y') {
+ /* NACK Received */
+ dev_err(&client->dev," NACK Received... exiting.. \n");
+ return -1;
+ }
+
+ ret = ar1335_read(client, g_bload_buf_1335, 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Read Failed \n");
+ return -1;
+ }
+
+ ret = ar1335_read(client, g_bload_buf_1335, 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Read Failed\n");
+ return -1;
+ }
+
+ /* ---------------- GET VERSION END ------------------- */
+
+ return 0;
+}
+
+static int mcu_bload_erase_flash(struct i2c_client *client)
+{
+ unsigned short int pagenum = 0x0000;
+ int ret = 0, i = 0, checksum = 0;
+
+ /* --------------- ERASE FLASH --------------------- */
+
+ for (i = 0; i < NUM_ERASE_CYCLES; i++) {
+
+ checksum = 0x00;
+ /* Write Erase Pages CMD */
+ g_bload_buf_1335[0] = BL_ERASE_MEM_NS;
+ g_bload_buf_1335[1] = ~(BL_ERASE_MEM_NS);
+
+ ret = ar1335_write(client, g_bload_buf_1335, 2);
+ if (ret < 0) {
+ dev_err(&client->dev,"Write Failed \n");
+ return -1;
+ }
+
+ /* Wait for ACK or NACK */
+ ret = ar1335_read(client, g_bload_buf_1335, 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Read Failed \n");
+ return -1;
+ }
+
+ if (g_bload_buf_1335[0] != RESP_ACK) {
+ /* NACK Received */
+ dev_err(&client->dev," NACK Received... exiting.. \n");
+ return -1;
+ }
+
+ g_bload_buf_1335[0] = (MAX_PAGES - 1) >> 8;
+ g_bload_buf_1335[1] = (MAX_PAGES - 1) & 0xFF;
+ g_bload_buf_1335[2] = g_bload_buf_1335[0] ^ g_bload_buf_1335[1];
+
+ ret = ar1335_write(client, g_bload_buf_1335, 3);
+ if (ret < 0) {
+ dev_err(&client->dev,"Write Failed \n");
+ return -1;
+ }
+
+ /* Wait for ACK or NACK */
+ ret = ar1335_read(client, g_bload_buf_1335, 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Read Failed \n");
+ return -1;
+ }
+
+ if (g_bload_buf_1335[0] != RESP_ACK) {
+ /* NACK Received */
+ dev_err(&client->dev," NACK Received... exiting.. \n");
+ return -1;
+ }
+
+ for (pagenum = 0; pagenum < MAX_PAGES; pagenum++) {
+ g_bload_buf_1335[(2 * pagenum)] =
+ (pagenum + (i * MAX_PAGES)) >> 8;
+ g_bload_buf_1335[(2 * pagenum) + 1] =
+ (pagenum + (i * MAX_PAGES)) & 0xFF;
+ checksum =
+ checksum ^ g_bload_buf_1335[(2 * pagenum)] ^
+ g_bload_buf_1335[(2 * pagenum) + 1];
+ }
+ g_bload_buf_1335[2 * MAX_PAGES] = checksum;
+
+ ret = ar1335_write(client, g_bload_buf_1335, (2 * MAX_PAGES) + 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Write Failed \n");
+ return -1;
+ }
+
+ poll_busy:
+ /* Wait for ACK or NACK */
+ ret = ar1335_read(client, g_bload_buf_1335, 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Read Failed \n");
+ return -1;
+ }
+
+ if (g_bload_buf_1335[0] == RESP_BUSY)
+ goto poll_busy;
+
+ if (g_bload_buf_1335[0] != RESP_ACK) {
+ /* NACK Received */
+ dev_err(&client->dev," NACK Received... exiting.. \n");
+ return -1;
+ }
+
+#ifdef AR1335_DEBUG
+ pr_info(" ERASE Sector %d success !! \n", i + 1);
+#endif
+ }
+
+ /* ------------ ERASE FLASH END ----------------------- */
+
+ return 0;
+}
+
+static unsigned char mcu_bload_inv_checksum(unsigned char *buf, int len)
+{
+ unsigned int checksum = 0x00;
+ int i = 0;
+
+ if (!buf || !(buf + len))
+ return 0;
+
+ for (i = 0; i < len; i++) {
+ checksum = (checksum + buf[i]);
+ }
+
+ checksum &= (0xFF);
+ return (~(checksum) + 1);
+}
+
+static int mcu_bload_parse_send_cmd(struct i2c_client *client,
+ unsigned char *bytearray, int rec_len)
+{
+ IHEX_RECORD *ihex_rec = NULL;
+ unsigned char checksum = 0, calc_checksum = 0;
+ int i = 0, ret = 0;
+
+ if (!bytearray)
+ return -1;
+
+ ihex_rec = (IHEX_RECORD *) bytearray;
+ ihex_rec->addr = htons(ihex_rec->addr);
+
+ checksum = bytearray[rec_len - 1];
+
+ calc_checksum = mcu_bload_inv_checksum(bytearray, rec_len - 1);
+ if (checksum != calc_checksum) {
+ dev_err(&client->dev," Invalid Checksum 0x%02x != 0x%02x !! \n",
+ checksum, calc_checksum);
+ return -1;
+ }
+
+ if ((ihex_rec->rectype == REC_TYPE_ELA)
+ && (ihex_rec->addr == 0x0000)
+ && (ihex_rec->datasize = 0x02)) {
+ /* Upper 32-bit configuration */
+ g_bload_flashaddr_1335 = (ihex_rec->recdata[0] <<
+ 24) | (ihex_rec->recdata[1]
+ << 16);
+#ifdef AR1335_DEBUG
+ pr_info("Updated Flash Addr = 0x%08x \n",
+ g_bload_flashaddr_1335);
+#endif
+
+ } else if (ihex_rec->rectype == REC_TYPE_DATA) {
+ /* Flash Data into Flashaddr */
+
+ g_bload_flashaddr_1335 =
+ (g_bload_flashaddr_1335 & 0xFFFF0000) | (ihex_rec->addr);
+ g_bload_crc16_1335 ^=
+ mcu_bload_calc_crc16(ihex_rec->recdata, ihex_rec->datasize);
+
+ /* Write Erase Pages CMD */
+ g_bload_buf_1335[0] = BL_WRITE_MEM_NS;
+ g_bload_buf_1335[1] = ~(BL_WRITE_MEM_NS);
+
+ ret = ar1335_write(client, g_bload_buf_1335, 2);
+ if (ret < 0) {
+ dev_err(&client->dev,"Write Failed \n");
+ return -1;
+ }
+
+ /* Wait for ACK or NACK */
+ ret = ar1335_read(client, g_bload_buf_1335, 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Read Failed \n");
+ return -1;
+ }
+
+ if (g_bload_buf_1335[0] != RESP_ACK) {
+ /* NACK Received */
+ dev_err(&client->dev," NACK Received... exiting.. \n");
+ return -1;
+ }
+
+ g_bload_buf_1335[0] = (g_bload_flashaddr_1335 & 0xFF000000) >> 24;
+ g_bload_buf_1335[1] = (g_bload_flashaddr_1335 & 0x00FF0000) >> 16;
+ g_bload_buf_1335[2] = (g_bload_flashaddr_1335 & 0x0000FF00) >> 8;
+ g_bload_buf_1335[3] = (g_bload_flashaddr_1335 & 0x000000FF);
+ g_bload_buf_1335[4] =
+ g_bload_buf_1335[0] ^ g_bload_buf_1335[1] ^ g_bload_buf_1335[2] ^
+ g_bload_buf_1335[3];
+
+ ret = ar1335_write(client, g_bload_buf_1335, 5);
+ if (ret < 0) {
+ dev_err(&client->dev,"Write Failed \n");
+ return -1;
+ }
+
+ /* Wait for ACK or NACK */
+ ret = ar1335_read(client, g_bload_buf_1335, 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Read Failed \n");
+ return -1;
+ }
+
+ if (g_bload_buf_1335[0] != RESP_ACK) {
+ /* NACK Received */
+ dev_err(&client->dev," NACK Received... exiting.. \n");
+ return -1;
+ }
+
+ g_bload_buf_1335[0] = ihex_rec->datasize - 1;
+ checksum = g_bload_buf_1335[0];
+ for (i = 0; i < ihex_rec->datasize; i++) {
+ g_bload_buf_1335[i + 1] = ihex_rec->recdata[i];
+ checksum ^= g_bload_buf_1335[i + 1];
+ }
+
+ g_bload_buf_1335[i + 1] = checksum;
+
+ ret = ar1335_write(client, g_bload_buf_1335, i + 2);
+ if (ret < 0) {
+ dev_err(&client->dev,"Write Failed \n");
+ return -1;
+ }
+
+ poll_busy:
+ /* Wait for ACK or NACK */
+ ret = ar1335_read(client, g_bload_buf_1335, 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Read Failed \n");
+ return -1;
+ }
+
+ if (g_bload_buf_1335[0] == RESP_BUSY)
+ goto poll_busy;
+
+ if (g_bload_buf_1335[0] != RESP_ACK) {
+ /* NACK Received */
+ dev_err(&client->dev," NACK Received... exiting.. \n");
+ return -1;
+ }
+
+ } else if (ihex_rec->rectype == REC_TYPE_SLA) {
+ /* Update Instruction pointer to this address */
+
+ } else if (ihex_rec->rectype == REC_TYPE_EOF) {
+ /* End of File - Issue I2C Go Command */
+ return 0;
+ } else {
+
+ /* Unhandled Type */
+ dev_err(&client->dev,"Unhandled Command Type \n");
+ return -1;
+ }
+
+ return 0;
+}
+
+static int mcu_bload_update_fw(struct i2c_client *client)
+{
+ /* exclude NULL character at end of string */
+ unsigned long hex_file_size = ARRAY_SIZE(g_mcu_fw_buf_1335) - 1;
+ unsigned char wbuf[MAX_BUF_LEN];
+ int i = 0, recindex = 0, ret = 0;
+
+ for (i = 0; i < hex_file_size; i++) {
+ if ((recindex == 0) && (g_mcu_fw_buf_1335[i] == ':')) {
+ /* pr_info("Start of a Record \n"); */
+ } else if (g_mcu_fw_buf_1335[i] == CR) {
+ /* No Implementation */
+ } else if (g_mcu_fw_buf_1335[i] == LF) {
+ if (recindex == 0) {
+ /* Parsing Complete */
+ break;
+ }
+
+ /* Analyze Packet and Send Commands */
+ ret = mcu_bload_parse_send_cmd(client, wbuf, recindex);
+ if (ret < 0) {
+ dev_err(&client->dev,"Error in Processing Commands \n");
+ break;
+ }
+
+ recindex = 0;
+
+ } else {
+ /* Parse Rec Data */
+ if ((ret = mcu_bload_ascii2hex(g_mcu_fw_buf_1335[i])) < 0) {
+ dev_err(&client->dev,
+ "Invalid Character - 0x%02x !! \n",
+ g_mcu_fw_buf_1335[i]);
+ break;
+ }
+
+ wbuf[recindex] = (0xF0 & (ret << 4));
+ i++;
+
+ if ((ret = mcu_bload_ascii2hex(g_mcu_fw_buf_1335[i])) < 0) {
+ dev_err(&client->dev,
+ "Invalid Character - 0x%02x !!!! \n",
+ g_mcu_fw_buf_1335[i]);
+ break;
+ }
+
+ wbuf[recindex] |= (0x0F & ret);
+ recindex++;
+ }
+ }
+
+#ifdef AR1335_DEBUG
+ pr_info("Program FLASH Success !! - CRC = 0x%04x \n",
+ g_bload_crc16_1335);
+#endif
+
+ /* ------------ PROGRAM FLASH END ----------------------- */
+
+ return ret;
+}
+
+static int mcu_bload_read(struct i2c_client *client,
+ unsigned int g_bload_flashaddr_1335, char *bytearray,
+ unsigned int len)
+{
+ int ret = 0;
+
+ g_bload_buf_1335[0] = BL_READ_MEM;
+ g_bload_buf_1335[1] = ~(BL_READ_MEM);
+
+ ret = ar1335_write(client, g_bload_buf_1335, 2);
+ if (ret < 0) {
+ dev_err(&client->dev,"Write Failed \n");
+ return -1;
+ }
+
+ /* Wait for ACK or NACK */
+ ret = ar1335_read(client, g_bload_buf_1335, 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Read Failed \n");
+ return -1;
+ }
+
+ if (g_bload_buf_1335[0] != RESP_ACK) {
+ /* NACK Received */
+ dev_err(&client->dev," NACK Received... exiting.. \n");
+ return -1;
+ }
+
+ g_bload_buf_1335[0] = (g_bload_flashaddr_1335 & 0xFF000000) >> 24;
+ g_bload_buf_1335[1] = (g_bload_flashaddr_1335 & 0x00FF0000) >> 16;
+ g_bload_buf_1335[2] = (g_bload_flashaddr_1335 & 0x0000FF00) >> 8;
+ g_bload_buf_1335[3] = (g_bload_flashaddr_1335 & 0x000000FF);
+ g_bload_buf_1335[4] =
+ g_bload_buf_1335[0] ^ g_bload_buf_1335[1] ^ g_bload_buf_1335[2] ^ g_bload_buf_1335[3];
+
+ ret = ar1335_write(client, g_bload_buf_1335, 5);
+ if (ret < 0) {
+ dev_err(&client->dev,"Write Failed \n");
+ return -1;
+ }
+
+ /* Wait for ACK or NACK */
+ ret = ar1335_read(client, g_bload_buf_1335, 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Read Failed \n");
+ return -1;
+ }
+
+ if (g_bload_buf_1335[0] != RESP_ACK) {
+ /* NACK Received */
+ dev_err(&client->dev," NACK Received... exiting.. \n");
+ return -1;
+ }
+
+ g_bload_buf_1335[0] = len - 1;
+ g_bload_buf_1335[1] = ~(len - 1);
+
+ ret = ar1335_write(client, g_bload_buf_1335, 2);
+ if (ret < 0) {
+ dev_err(&client->dev,"Write Failed \n");
+ return -1;
+ }
+
+ /* Wait for ACK or NACK */
+ ret = ar1335_read(client, g_bload_buf_1335, 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Read Failed \n");
+ return -1;
+ }
+
+ if (g_bload_buf_1335[0] != RESP_ACK) {
+ /* NACK Received */
+ dev_err(&client->dev," NACK Received... exiting.. \n");
+ return -1;
+ }
+
+ ret = ar1335_read(client, bytearray, len);
+ if (ret < 0) {
+ dev_err(&client->dev,"Read Failed \n");
+ return -1;
+ }
+
+ return 0;
+}
+
+static int mcu_bload_verify_flash(struct i2c_client *client,
+ unsigned short int orig_crc)
+{
+ char bytearray[FLASH_READ_LEN];
+ unsigned short int calc_crc = 0;
+ unsigned int flash_addr = FLASH_START_ADDRESS, i = 0;
+
+ while ((i + FLASH_READ_LEN) <= FLASH_SIZE) {
+ memset(bytearray, 0x0, FLASH_READ_LEN);
+
+ if (mcu_bload_read(
+ client, flash_addr + i, bytearray, FLASH_READ_LEN) < 0) {
+ dev_err(&client->dev," i2c_bload_read FAIL !! \n");
+ return -1;
+ }
+
+ calc_crc ^= mcu_bload_calc_crc16(bytearray, FLASH_READ_LEN);
+ i += FLASH_READ_LEN;
+ }
+
+ if ((FLASH_SIZE - i) > 0) {
+ memset(bytearray, 0x0, FLASH_READ_LEN);
+
+ if (mcu_bload_read(
+ client, flash_addr + i, bytearray, (FLASH_SIZE - i)
+ ) < 0) {
+ dev_err(&client->dev," i2c_bload_read FAIL !! \n");
+ return -1;
+ }
+
+ calc_crc ^= mcu_bload_calc_crc16(bytearray, FLASH_READ_LEN);
+ }
+
+ if (orig_crc != calc_crc) {
+ dev_err(&client->dev," CRC verification fail !! 0x%04x != 0x%04x \n",
+ orig_crc, calc_crc);
+ }
+
+#ifdef AR1335_DEBUG
+ pr_info(" CRC Verification Success 0x%04x == 0x%04x \n",
+ orig_crc, calc_crc);
+#endif
+
+ return 0;
+}
+
+static int mcu_bload_go(struct i2c_client *client)
+{
+ int ret = 0;
+
+ g_bload_buf_1335[0] = BL_GO;
+ g_bload_buf_1335[1] = ~(BL_GO);
+
+ ret = ar1335_write(client, g_bload_buf_1335, 2);
+ if (ret < 0) {
+ dev_err(&client->dev,"Write Failed \n");
+ return -1;
+ }
+
+ ret = ar1335_read(client, g_bload_buf_1335, 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Failed Read 1 \n");
+ return -1;
+ }
+
+ /* Start Address */
+ g_bload_buf_1335[0] = (FLASH_START_ADDRESS & 0xFF000000) >> 24;
+ g_bload_buf_1335[1] = (FLASH_START_ADDRESS & 0x00FF0000) >> 16;
+ g_bload_buf_1335[2] = (FLASH_START_ADDRESS & 0x0000FF00) >> 8;
+ g_bload_buf_1335[3] = (FLASH_START_ADDRESS & 0x000000FF);
+ g_bload_buf_1335[4] =
+ g_bload_buf_1335[0] ^ g_bload_buf_1335[1] ^ g_bload_buf_1335[2] ^ g_bload_buf_1335[3];
+
+ ret = ar1335_write(client, g_bload_buf_1335, 5);
+ if (ret < 0) {
+ dev_err(&client->dev,"Write Failed \n");
+ return -1;
+ }
+
+ ret = ar1335_read(client, g_bload_buf_1335, 1);
+ if (ret < 0) {
+ dev_err(&client->dev,"Failed Read 1 \n");
+ return -1;
+ }
+
+ if (g_bload_buf_1335[0] != RESP_ACK) {
+ /* NACK Received */
+ dev_err(&client->dev," NACK Received... exiting.. \n");
+ return -1;
+ }
+
+ return 0;
+}
+
+static int mcu_fw_update(struct i2c_client *client, unsigned char *mcu_fw_version)
+{
+ int ret = 0;
+ g_bload_crc16_1335 = 0;
+
+ /*
+ * TODO: Is this necessary? It seems redundant as it's already called before
+ * calling this function.
+ */
+ /* Read Firmware version from bootloader MCU */
+ ret = mcu_bload_get_version(client);
+ if (ret < 0) {
+ dev_err(&client->dev," Error in Get Version \n");
+ goto exit;
+ }
+
+#ifdef AR1335_DEBUG
+ pr_info(" Get Version SUCCESS !! \n");
+#endif
+
+ /* Erase firmware present in the MCU and flash new firmware*/
+ ret = mcu_bload_erase_flash(client);
+ if (ret < 0) {
+ dev_err(&client->dev," Error in Erase Flash \n");
+ goto exit;
+ }
+
+#ifdef AR1335_DEBUG
+ pr_info("Erase Flash Success !! \n");
+#endif
+
+ /* Read the firmware present in the text file */
+ if ((ret = mcu_bload_update_fw(client)) < 0) {
+ dev_err(&client->dev," Write Flash FAIL !! \n");
+ goto exit;
+ }
+
+ /* Verify the checksum for the update firmware */
+ if ((ret = mcu_bload_verify_flash(client, g_bload_crc16_1335)) < 0) {
+ dev_err(&client->dev," verify_flash FAIL !! \n");
+ goto exit;
+ }
+
+ /* Reverting from bootloader mode */
+ /* I2C GO Command */
+ if ((ret = mcu_bload_go(client)) < 0) {
+ dev_err(&client->dev," i2c_bload_go FAIL !! \n");
+ goto exit;
+ }
+
+ if(mcu_fw_version) {
+
+#ifdef AR1335_DEBUG
+ pr_info("(%s) - Firmware Updated - (%.32s)\n",
+ __func__, mcu_fw_version);
+#endif
+
+ }
+ exit:
+ return ret;
+}
+
+static int mcu_count_or_list_ctrls(struct i2c_client *client,
+ ISP_CTRL_INFO * mcu_cam_ctrl, int *numctrls)
+{
+ uint32_t payload_len = 0;
+ uint8_t errcode = ERRCODE_SUCCESS, orig_crc = 0, calc_crc = 0;
+ uint16_t index = 0;
+ int ret = 0, err = 0;
+
+ /* lock semaphore */
+ mutex_lock(&mcu_i2c_mutex_1335);
+
+ /* Array of Ctrl Info */
+ while (1) {
+ /* First Txn Payload length = 0 */
+ payload_len = 2;
+
+ mc_data_1335[0] = CMD_SIGNATURE;
+ mc_data_1335[1] = CMD_ID_GET_CTRL_INFO;
+ mc_data_1335[2] = payload_len >> 8;
+ mc_data_1335[3] = payload_len & 0xFF;
+ mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2);
+
+ ar1335_write(client, mc_data_1335, TX_LEN_PKT);
+
+ mc_data_1335[0] = CMD_SIGNATURE;
+ mc_data_1335[1] = CMD_ID_GET_CTRL_INFO;
+ mc_data_1335[2] = index >> 8;
+ mc_data_1335[3] = index & 0xFF;
+ mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2);
+ err = ar1335_write(client, mc_data_1335, 5);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n",
+ __func__, __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ err = ar1335_read(client, mc_ret_data_1335, RX_LEN_PKT);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n",
+ __func__, __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ /* Verify CRC */
+ orig_crc = mc_ret_data_1335[4];
+ calc_crc = errorcheck(&mc_ret_data_1335[2], 2);
+ if (orig_crc != calc_crc) {
+ dev_err(&client->dev,
+ " %s(%d) CRC 0x%02x != 0x%02x \n",
+ __func__, __LINE__, orig_crc, calc_crc);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ if (((mc_ret_data_1335[2] << 8) | mc_ret_data_1335[3]) == 0) {
+ *numctrls = index;
+ break;
+ }
+
+ payload_len =
+ ((mc_ret_data_1335[2] << 8) | mc_ret_data_1335[3]) +
+ HEADER_FOOTER_SIZE;
+ errcode = mc_ret_data_1335[5];
+ if (errcode != ERRCODE_SUCCESS) {
+ dev_err(&client->dev,
+ " %s(%d) Errcode - 0x%02x \n",
+ __func__, __LINE__, errcode);
+ ret = -EIO;
+ goto exit;
+ }
+
+ memset(mc_ret_data_1335, 0x00, payload_len);
+ err = ar1335_read(client, mc_ret_data_1335, payload_len);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n",
+ __func__, __LINE__, err);
+ ret = -1;
+ goto exit;
+ }
+
+ /* Verify CRC */
+ orig_crc = mc_ret_data_1335[payload_len - 2];
+ calc_crc =
+ errorcheck(&mc_ret_data_1335[2],
+ payload_len - HEADER_FOOTER_SIZE);
+ if (orig_crc != calc_crc) {
+ dev_err(&client->dev,
+ " %s(%d) CRC 0x%02x != 0x%02x \n",
+ __func__, __LINE__, orig_crc, calc_crc);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ /* Verify Errcode */
+ errcode = mc_ret_data_1335[payload_len - 1];
+ if (errcode != ERRCODE_SUCCESS) {
+ dev_err(&client->dev,
+ " %s(%d) Errcode - 0x%02x \n",
+ __func__, __LINE__, errcode);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ if(mcu_cam_ctrl != NULL) {
+ int sorted_elem = index - 1, elem = index;
+
+ /* append ctrl info in array */
+ mcu_cam_ctrl[index].ctrl_id =
+ mc_ret_data_1335[2] << 24 | mc_ret_data_1335[3] << 16 | mc_ret_data_1335[4]
+ << 8 | mc_ret_data_1335[5];
+ mcu_cam_ctrl[index].ctrl_type = mc_ret_data_1335[6];
+
+ switch (mcu_cam_ctrl[index].ctrl_type) {
+ case CTRL_STANDARD:
+ mcu_cam_ctrl[index].ctrl_data.std.ctrl_min =
+ mc_ret_data_1335[7] << 24 | mc_ret_data_1335[8] << 16
+ | mc_ret_data_1335[9] << 8 | mc_ret_data_1335[10];
+
+ mcu_cam_ctrl[index].ctrl_data.std.ctrl_max =
+ mc_ret_data_1335[11] << 24 | mc_ret_data_1335[12] <<
+ 16 | mc_ret_data_1335[13]
+ << 8 | mc_ret_data_1335[14];
+
+ mcu_cam_ctrl[index].ctrl_data.std.ctrl_def =
+ mc_ret_data_1335[15] << 24 | mc_ret_data_1335[16] <<
+ 16 | mc_ret_data_1335[17]
+ << 8 | mc_ret_data_1335[18];
+
+ mcu_cam_ctrl[index].ctrl_data.std.ctrl_step =
+ mc_ret_data_1335[19] << 24 | mc_ret_data_1335[20] <<
+ 16 | mc_ret_data_1335[21]
+ << 8 | mc_ret_data_1335[22];
+
+ mcu_cam_ctrl[index].mcu_ctrl_index = index;
+ break;
+
+ case CTRL_EXTENDED:
+ /* Not Implemented */
+ break;
+ }
+
+#ifdef AR1335_DEBUG
+ pr_info("Control: ID: 0x%x; Type: %u; min: %d; Max: %d; Def: %d; Step: %u\n",
+ mcu_cam_ctrl[index].ctrl_id,
+ mcu_cam_ctrl[index].ctrl_type,
+ mcu_cam_ctrl[index].ctrl_data.std.ctrl_min,
+ mcu_cam_ctrl[index].ctrl_data.std.ctrl_max,
+ mcu_cam_ctrl[index].ctrl_data.std.ctrl_def,
+ mcu_cam_ctrl[index].ctrl_data.std.ctrl_step
+ );
+#endif
+
+ ctrldb[index] = mcu_cam_ctrl[index].ctrl_id;
+
+ /*
+ * Keep the control list and control db sorted.
+ */
+ while(
+ sorted_elem >= 0 &&
+ (
+ mcu_cam_ctrl[sorted_elem].ctrl_id >
+ mcu_cam_ctrl[elem].ctrl_id
+ )
+ )
+ {
+ ISP_CTRL_INFO swap_ctrl_elem;
+ uint32_t swap_ctrldb_elem;
+
+ /*
+ * Swap the elements in the mcu_cam_ctrl list
+ */
+ memcpy(&swap_ctrl_elem, (mcu_cam_ctrl + sorted_elem), sizeof(ISP_CTRL_INFO));
+ memcpy((mcu_cam_ctrl + sorted_elem), (mcu_cam_ctrl + elem), sizeof(ISP_CTRL_INFO));
+ memcpy((mcu_cam_ctrl + elem), &swap_ctrl_elem, sizeof(ISP_CTRL_INFO));
+
+ /*
+ * Swap the elements in ctrldb
+ */
+ swap_ctrldb_elem = ctrldb[sorted_elem];
+ ctrldb[sorted_elem] = ctrldb[elem];
+ ctrldb[elem] = swap_ctrldb_elem;
+
+ elem = sorted_elem;
+ sorted_elem = elem - 1;
+ }
+ }
+ index++;
+ }
+
+ exit:
+ /* unlock semaphore */
+ mutex_unlock(&mcu_i2c_mutex_1335);
+
+ return ret;
+}
+
+static int mcu_count_or_list_fmts(struct i2c_client *client, ISP_STREAM_INFO *stream_info, int *frm_fmt_size)
+{
+ uint32_t payload_len = 0, err = 0;
+ uint8_t errcode = ERRCODE_SUCCESS, orig_crc = 0, calc_crc = 0, skip = 0;
+ uint16_t index = 0, mode = 0;
+
+ int loop = 0, num_frates = 0, ret = 0;
+
+ /* Stream Info Variables */
+
+ /* lock semaphore */
+ mutex_lock(&mcu_i2c_mutex_1335);
+
+ /* List all formats from MCU and append to mcu_ar1335_frmfmt array */
+
+ for (index = 0;; index++) {
+ /* First Txn Payload length = 0 */
+ payload_len = 2;
+
+ mc_data_1335[0] = CMD_SIGNATURE;
+ mc_data_1335[1] = CMD_ID_GET_STREAM_INFO;
+ mc_data_1335[2] = payload_len >> 8;
+ mc_data_1335[3] = payload_len & 0xFF;
+ mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2);
+
+ ar1335_write(client, mc_data_1335, TX_LEN_PKT);
+
+ mc_data_1335[0] = CMD_SIGNATURE;
+ mc_data_1335[1] = CMD_ID_GET_STREAM_INFO;
+ mc_data_1335[2] = index >> 8;
+ mc_data_1335[3] = index & 0xFF;
+ mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2);
+ err = ar1335_write(client, mc_data_1335, 5);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n",
+ __func__, __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ err = ar1335_read(client, mc_ret_data_1335, RX_LEN_PKT);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n",
+ __func__, __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ /* Verify CRC */
+ orig_crc = mc_ret_data_1335[4];
+ calc_crc = errorcheck(&mc_ret_data_1335[2], 2);
+ if (orig_crc != calc_crc) {
+ dev_err(&client->dev,
+ " %s(%d) CRC 0x%02x != 0x%02x \n",
+ __func__, __LINE__, orig_crc, calc_crc);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ if (((mc_ret_data_1335[2] << 8) | mc_ret_data_1335[3]) == 0) {
+ if(stream_info == NULL) {
+ *frm_fmt_size = index;
+ } else {
+ *frm_fmt_size = mode;
+ }
+ break;
+ }
+
+ payload_len =
+ ((mc_ret_data_1335[2] << 8) | mc_ret_data_1335[3]) +
+ HEADER_FOOTER_SIZE;
+ errcode = mc_ret_data_1335[5];
+ if (errcode != ERRCODE_SUCCESS) {
+ dev_err(&client->dev,
+ " %s(%d) Errcode - 0x%02x \n",
+ __func__, __LINE__, errcode);
+ ret = -EIO;
+ goto exit;
+ }
+
+ memset(mc_ret_data_1335, 0x00, payload_len);
+ err = ar1335_read(client, mc_ret_data_1335, payload_len);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n",
+ __func__, __LINE__, err);
+ ret = -1;
+ goto exit;
+ }
+
+ /* Verify CRC */
+ orig_crc = mc_ret_data_1335[payload_len - 2];
+ calc_crc =
+ errorcheck(&mc_ret_data_1335[2],
+ payload_len - HEADER_FOOTER_SIZE);
+ if (orig_crc != calc_crc) {
+ dev_err(&client->dev,
+ " %s(%d) CRC 0x%02x != 0x%02x \n",
+ __func__, __LINE__, orig_crc, calc_crc);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ /* Verify Errcode */
+ errcode = mc_ret_data_1335[payload_len - 1];
+ if (errcode != ERRCODE_SUCCESS) {
+ dev_err(&client->dev,
+ " %s(%d) Errcode - 0x%02x \n",
+ __func__, __LINE__, errcode);
+ ret = -EIO;
+ goto exit;
+ }
+ if(stream_info != NULL) {
+ stream_info->fmt_fourcc =
+ mc_ret_data_1335[2] << 24 | mc_ret_data_1335[3] << 16 | mc_ret_data_1335[4]
+ << 8 | mc_ret_data_1335[5];
+ stream_info->width = mc_ret_data_1335[6] << 8 | mc_ret_data_1335[7];
+ stream_info->height = mc_ret_data_1335[8] << 8 | mc_ret_data_1335[9];
+ stream_info->frame_rate_type = mc_ret_data_1335[10];
+
+ switch (stream_info->frame_rate_type) {
+ case FRAME_RATE_DISCRETE:
+ stream_info->frame_rate.disc.frame_rate_num =
+ mc_ret_data_1335[11] << 8 | mc_ret_data_1335[12];
+
+ stream_info->frame_rate.disc.frame_rate_denom =
+ mc_ret_data_1335[13] << 8 | mc_ret_data_1335[14];
+
+ break;
+
+ case FRAME_RATE_CONTINOUS:
+ dev_err(&client->dev,
+ " The Stream format at index 0x%04x has FRAME_RATE_CONTINOUS,"
+ "which is unsupported !! \n", index);
+
+ continue;
+ }
+
+ switch (stream_info->fmt_fourcc) {
+ /*
+ * We check for UYVY here instead of YUYV as the output from the sensor
+ * is UYVY. We swap it to YUYV only making changes in the platform driver.
+ */
+ case V4L2_PIX_FMT_UYVY:
+ /* ar1335_codes is already populated with V4L2_PIX_FMT_YUYV */
+ /* check if width and height are already in array - update frame rate only */
+ for (loop = 0; loop < (mode); loop++) {
+ if ((ar1335_data.mcu_cam_frmfmt[loop].size.width ==
+ stream_info->width)
+ && (ar1335_data.mcu_cam_frmfmt[loop].size.height ==
+ stream_info->height)) {
+
+ num_frates =
+ ar1335_data.mcu_cam_frmfmt[loop].num_framerates;
+ *((int *)(ar1335_data.mcu_cam_frmfmt[loop].framerates) + num_frates)
+ = (int)(stream_info->frame_rate.
+ disc.frame_rate_num /
+ stream_info->frame_rate.
+ disc.frame_rate_denom);
+
+ ar1335_data.mcu_cam_frmfmt[loop].num_framerates++;
+
+ streamdb[index] = loop;
+ skip = 1;
+ break;
+ }
+ }
+
+ if (skip) {
+ skip = 0;
+ continue;
+ }
+
+ /* Add Width, Height, Frame Rate array, Mode into mcu_ar1335_frmfmt array */
+ ar1335_data.mcu_cam_frmfmt[mode].size.width = stream_info->width;
+ ar1335_data.mcu_cam_frmfmt[mode].size.height = stream_info->height;
+
+ num_frates = ar1335_data.mcu_cam_frmfmt[mode].num_framerates;
+
+ *(ar1335_data.mcu_cam_frmfmt[mode].framerates + num_frates) =
+ (int)(stream_info->frame_rate.disc.frame_rate_num /
+ stream_info->frame_rate.disc.frame_rate_denom);
+
+ ar1335_data.mcu_cam_frmfmt[mode].num_framerates++;
+
+ ar1335_data.mcu_cam_frmfmt[mode].mode = mode;
+ ar1335_data.mcu_cam_frmfmt[mode].mode = mode;
+ streamdb[index] = mode;
+ mode++;
+ break;
+
+ default:
+ dev_err(&client->dev,
+ " The Stream format at index 0x%04x has format 0x%08x ,"
+ "which is unsupported !! \n", index,
+ stream_info->fmt_fourcc);
+ }
+ }
+ }
+
+ exit:
+ /* unlock semaphore */
+ mutex_unlock(&mcu_i2c_mutex_1335);
+
+ return ret;
+}
+
+/*
+ * Function to initialise the data related to MCU. Needs to be called
+ * before trying to use them.
+ */
+static int mcu_data_init(struct device *dev, int frm_fmt_size)
+{
+ int loop = 0;
+
+ if (dev == NULL)
+ {
+ dev_err(dev, "%s: Invalid device parameter\n", __func__);
+ return -EINVAL;
+ }
+
+ mcu_ctrl_info = devm_kzalloc(dev, sizeof(ISP_CTRL_INFO) * num_ctrls, GFP_KERNEL);
+ if(!mcu_ctrl_info) {
+ dev_err(dev, "Unable to allocate memory \n");
+ return -ENOMEM;
+ }
+
+ ctrldb = devm_kzalloc(dev, sizeof(uint32_t) * num_ctrls, GFP_KERNEL);
+ if(!ctrldb) {
+ dev_err(dev, "Unable to allocate memory \n");
+ return -ENOMEM;
+ }
+
+ stream_info = devm_kzalloc(dev, sizeof(ISP_STREAM_INFO) * (frm_fmt_size + 1), GFP_KERNEL);
+
+ streamdb = devm_kzalloc(dev, sizeof(int) * (frm_fmt_size + 1), GFP_KERNEL);
+ if(!streamdb) {
+ dev_err(dev,"Unable to allocate memory \n");
+ return -ENOMEM;
+ }
+
+ ar1335_data.mcu_cam_frmfmt = devm_kzalloc(dev, sizeof(struct mcu_frmfmt) * (frm_fmt_size), GFP_KERNEL);
+ if(!ar1335_data.mcu_cam_frmfmt) {
+ dev_err(dev, "Unable to allocate memory \n");
+ return -ENOMEM;
+ }
+
+ for(; loop < frm_fmt_size; loop++) {
+ ar1335_data.mcu_cam_frmfmt[loop].framerates = devm_kzalloc(dev, sizeof(int) * MAX_NUM_FRATES, GFP_KERNEL);
+ if(!ar1335_data.mcu_cam_frmfmt[loop].framerates) {
+ dev_err(dev, "Unable to allocate memory \n");
+ return -ENOMEM;
+ }
+ }
+
+ return 0;
+}
+
+static int mcu_get_sensor_id(struct i2c_client *client, uint16_t * sensor_id)
+{
+ uint32_t payload_len = 0;
+ uint8_t errcode = ERRCODE_SUCCESS, orig_crc = 0, calc_crc = 0;
+
+ int ret = 0, err = 0;
+
+ /* lock semaphore */
+ mutex_lock(&mcu_i2c_mutex_1335);
+
+ /* Read the version info. from Micro controller */
+
+ /* First Txn Payload length = 0 */
+ payload_len = 0;
+
+ mc_data_1335[0] = CMD_SIGNATURE;
+ mc_data_1335[1] = CMD_ID_GET_SENSOR_ID;
+ mc_data_1335[2] = payload_len >> 8;
+ mc_data_1335[3] = payload_len & 0xFF;
+ mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2);
+
+ ar1335_write(client, mc_data_1335, TX_LEN_PKT);
+
+ mc_data_1335[0] = CMD_SIGNATURE;
+ mc_data_1335[1] = CMD_ID_GET_SENSOR_ID;
+ err = ar1335_write(client, mc_data_1335, 2);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ err = ar1335_read(client, mc_ret_data_1335, RX_LEN_PKT);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ /* Verify CRC */
+ orig_crc = mc_ret_data_1335[4];
+ calc_crc = errorcheck(&mc_ret_data_1335[2], 2);
+ if (orig_crc != calc_crc) {
+ dev_err(&client->dev," %s(%d) CRC 0x%02x != 0x%02x \n",
+ __func__, __LINE__, orig_crc, calc_crc);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ errcode = mc_ret_data_1335[5];
+ if (errcode != ERRCODE_SUCCESS) {
+ dev_err(&client->dev," %s(%d) Errcode - 0x%02x \n",
+ __func__, __LINE__, errcode);
+ ret = -EIO;
+ goto exit;
+ }
+
+ payload_len =
+ ((mc_ret_data_1335[2] << 8) | mc_ret_data_1335[3]) + HEADER_FOOTER_SIZE;
+
+ memset(mc_ret_data_1335, 0x00, payload_len);
+ err = ar1335_read(client, mc_ret_data_1335, payload_len);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ /* Verify CRC */
+ orig_crc = mc_ret_data_1335[payload_len - 2];
+ calc_crc = errorcheck(&mc_ret_data_1335[2], 2);
+ if (orig_crc != calc_crc) {
+ dev_err(&client->dev," %s(%d) CRC 0x%02x != 0x%02x \n",
+ __func__, __LINE__, orig_crc, calc_crc);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ /* Verify Errcode */
+ errcode = mc_ret_data_1335[payload_len - 1];
+ if (errcode != ERRCODE_SUCCESS) {
+ dev_err(&client->dev," %s(%d) Errcode - 0x%02x \n",
+ __func__, __LINE__, errcode);
+ ret = -EIO;
+ goto exit;
+ }
+
+ *sensor_id = mc_ret_data_1335[2] << 8 | mc_ret_data_1335[3];
+
+ exit:
+ /* unlock semaphore */
+ mutex_unlock(&mcu_i2c_mutex_1335);
+
+ return ret;
+}
+
+static int mcu_get_cmd_status(struct i2c_client *client,
+ uint8_t * cmd_id, uint16_t * cmd_status,
+ uint8_t * ret_code)
+{
+ uint32_t payload_len = 0;
+ uint8_t orig_crc = 0, calc_crc = 0;
+ int err = 0;
+
+ /* No Semaphore in Get command Status */
+
+ /* First Txn Payload length = 0 */
+ payload_len = 1;
+
+ mc_data_1335[0] = CMD_SIGNATURE;
+ mc_data_1335[1] = CMD_ID_GET_STATUS;
+ mc_data_1335[2] = payload_len >> 8;
+ mc_data_1335[3] = payload_len & 0xFF;
+ mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2);
+
+ ar1335_write(client, mc_data_1335, TX_LEN_PKT);
+
+ mc_data_1335[0] = CMD_SIGNATURE;
+ mc_data_1335[1] = CMD_ID_GET_STATUS;
+ mc_data_1335[2] = *cmd_id;
+ err = ar1335_write(client, mc_data_1335, 3);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ return -EIO;
+ }
+
+ payload_len = CMD_STATUS_MSG_LEN;
+ memset(mc_ret_data_1335, 0x00, payload_len);
+ err = ar1335_read(client, mc_ret_data_1335, payload_len);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ return -EIO;
+ }
+
+ /* Verify CRC */
+ orig_crc = mc_ret_data_1335[payload_len - 2];
+ calc_crc = errorcheck(&mc_ret_data_1335[2], 3);
+ if (orig_crc != calc_crc) {
+ dev_err(&client->dev," %s(%d) CRC 0x%02x != 0x%02x \n",
+ __func__, __LINE__, orig_crc, calc_crc);
+ return -EINVAL;
+ }
+
+ *cmd_id = mc_ret_data_1335[2];
+ *cmd_status = mc_ret_data_1335[3] << 8 | mc_ret_data_1335[4];
+ *ret_code = mc_ret_data_1335[payload_len - 1];
+
+ return 0;
+}
+
+static int mcu_isp_init(struct i2c_client *client)
+{
+ uint32_t payload_len = 0;
+
+ uint16_t cmd_status = 0;
+ uint8_t retcode = 0, cmd_id = 0;
+ int retry = 1000, err = 0;
+
+ /* check current status - if initialized, no need for Init */
+ cmd_id = CMD_ID_INIT_CAM;
+ if (mcu_get_cmd_status(client, &cmd_id, &cmd_status, &retcode) < 0) {
+ dev_err(&client->dev," %s(%d) Error \n", __func__, __LINE__);
+ return -EIO;
+ }
+
+ if ((cmd_status == MCU_CMD_STATUS_SUCCESS) &&
+ (retcode == ERRCODE_SUCCESS)) {
+
+#ifdef AR1335_DEBUG
+ pr_info(" Already Initialized !! \n");
+#endif
+
+ return 0;
+ }
+
+ /* call ISP init command */
+
+ /* First Txn Payload length = 0 */
+ payload_len = 0;
+
+ mc_data_1335[0] = CMD_SIGNATURE;
+ mc_data_1335[1] = CMD_ID_INIT_CAM;
+ mc_data_1335[2] = payload_len >> 8;
+ mc_data_1335[3] = payload_len & 0xFF;
+ mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2);
+
+ ar1335_write(client, mc_data_1335, TX_LEN_PKT);
+
+ mc_data_1335[0] = CMD_SIGNATURE;
+ mc_data_1335[1] = CMD_ID_INIT_CAM;
+ err = ar1335_write(client, mc_data_1335, 2);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ return -EIO;
+ }
+
+ while (--retry > 0) {
+ /* Some Sleep for init to process */
+ mdelay(5);
+
+ cmd_id = CMD_ID_INIT_CAM;
+ if (mcu_get_cmd_status(
+ client, &cmd_id, &cmd_status, &retcode) < 0) {
+ dev_err(&client->dev," %s(%d) Error \n",
+ __func__, __LINE__);
+ return -EIO;
+ }
+
+ if ((cmd_status == MCU_CMD_STATUS_SUCCESS) &&
+ ((retcode == ERRCODE_SUCCESS) || (retcode == ERRCODE_ALREADY))) {
+
+#ifdef AR1335_DEBUG
+ pr_info(" ISP Already Initialized !! \n");
+#endif
+
+ return 0;
+ }
+
+ if ((retcode != ERRCODE_BUSY) &&
+ ((cmd_status != MCU_CMD_STATUS_PENDING))) {
+ dev_err(&client->dev,
+ "(%s) %d Init Error STATUS = 0x%04x RET = 0x%02x\n",
+ __func__, __LINE__, cmd_status, retcode);
+ return -EIO;
+ }
+ }
+
+ return -ETIMEDOUT;
+}
+
+static int mcu_get_ctrl_ui(struct i2c_client *client,
+ ISP_CTRL_INFO * mcu_ui_info, int index)
+{
+ uint32_t payload_len = 0;
+ uint8_t errcode = ERRCODE_SUCCESS, orig_crc = 0, calc_crc = 0;
+ int ret = 0, i = 0, err = 0;
+
+ /* lock semaphore */
+ mutex_lock(&mcu_i2c_mutex_1335);
+
+ /* First Txn Payload length = 0 */
+ payload_len = 2;
+
+ mc_data_1335[0] = CMD_SIGNATURE;
+ mc_data_1335[1] = CMD_ID_GET_CTRL_UI_INFO;
+ mc_data_1335[2] = payload_len >> 8;
+ mc_data_1335[3] = payload_len & 0xFF;
+ mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2);
+
+ ar1335_write(client, mc_data_1335, TX_LEN_PKT);
+
+ mc_data_1335[0] = CMD_SIGNATURE;
+ mc_data_1335[1] = CMD_ID_GET_CTRL_UI_INFO;
+ mc_data_1335[2] = index >> 8;
+ mc_data_1335[3] = index & 0xFF;
+ mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2);
+ err = ar1335_write(client, mc_data_1335, 5);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ err = ar1335_read(client, mc_ret_data_1335, RX_LEN_PKT);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ /* Verify CRC */
+ orig_crc = mc_ret_data_1335[4];
+ calc_crc = errorcheck(&mc_ret_data_1335[2], 2);
+ if (orig_crc != calc_crc) {
+ dev_err(&client->dev," %s(%d) CRC 0x%02x != 0x%02x \n",
+ __func__, __LINE__, orig_crc, calc_crc);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ payload_len =
+ ((mc_ret_data_1335[2] << 8) | mc_ret_data_1335[3]) + HEADER_FOOTER_SIZE;
+ errcode = mc_ret_data_1335[5];
+ if (errcode != ERRCODE_SUCCESS) {
+ dev_err(&client->dev," %s(%d) Errcode - 0x%02x \n",
+ __func__, __LINE__, errcode);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ memset(mc_ret_data_1335, 0x00, payload_len);
+ err = ar1335_read(client, mc_ret_data_1335, payload_len);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ /* Verify CRC */
+ orig_crc = mc_ret_data_1335[payload_len - 2];
+ calc_crc =
+ errorcheck(&mc_ret_data_1335[2], payload_len - HEADER_FOOTER_SIZE);
+ if (orig_crc != calc_crc) {
+ dev_err(&client->dev," %s(%d) CRC 0x%02x != 0x%02x \n",
+ __func__, __LINE__, orig_crc, calc_crc);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ /* Verify Errcode */
+ errcode = mc_ret_data_1335[payload_len - 1];
+ if (errcode != ERRCODE_SUCCESS) {
+ dev_err(&client->dev," %s(%d) Errcode - 0x%02x \n",
+ __func__, __LINE__, errcode);
+ ret = -EIO;
+ goto exit;
+ }
+
+ strncpy((char *)mcu_ui_info->ctrl_ui_data.ctrl_ui_info.ctrl_name, &mc_ret_data_1335[2],MAX_CTRL_UI_STRING_LEN);
+
+ mcu_ui_info->ctrl_ui_data.ctrl_ui_info.ctrl_ui_type = mc_ret_data_1335[34];
+ mcu_ui_info->ctrl_ui_data.ctrl_ui_info.ctrl_ui_flags = mc_ret_data_1335[35] << 8 |
+ mc_ret_data_1335[36];
+
+ if (mcu_ui_info->ctrl_ui_data.ctrl_ui_info.ctrl_ui_type == V4L2_CTRL_TYPE_MENU) {
+ mcu_ui_info->ctrl_ui_data.ctrl_menu_info.num_menu_elem = mc_ret_data_1335[37];
+
+ mcu_ui_info->ctrl_ui_data.ctrl_menu_info.menu =
+ devm_kzalloc(&client->dev,((mcu_ui_info->ctrl_ui_data.ctrl_menu_info.num_menu_elem +1) * sizeof(char *)), GFP_KERNEL);
+ for (i = 0; i < mcu_ui_info->ctrl_ui_data.ctrl_menu_info.num_menu_elem; i++) {
+ mcu_ui_info->ctrl_ui_data.ctrl_menu_info.menu[i] =
+ devm_kzalloc(&client->dev,MAX_CTRL_UI_STRING_LEN, GFP_KERNEL);
+ strncpy((char *)mcu_ui_info->ctrl_ui_data.ctrl_menu_info.menu[i],
+ &mc_ret_data_1335[38 +(i *MAX_CTRL_UI_STRING_LEN)], MAX_CTRL_UI_STRING_LEN);
+
+#ifdef AR1335_DEBUG
+ pr_info(" Menu Element %d : %s \n",
+ i, mcu_ui_info->ctrl_ui_data.ctrl_menu_info.menu[i]);
+#endif
+
+ }
+
+ mcu_ui_info->ctrl_ui_data.ctrl_menu_info.menu[i] = NULL;
+ }
+
+ exit:
+ /* unlock semaphore */
+ mutex_unlock(&mcu_i2c_mutex_1335);
+
+ return ret;
+
+}
+
+static int mcu_isp_configuration(uint8_t cmd_id,struct i2c_client *client)
+{
+ unsigned char mc_data_1335[100];
+ uint32_t payload_len = 0;
+
+ uint16_t payload_data;
+ uint16_t cmd_status = 0;
+ uint8_t retcode = 0;
+ int retry = 1000, err = 0;
+
+ /*lock semaphore */
+ mutex_lock(&mcu_i2c_mutex_1335);
+ /* First Txn Payload length = 0 */
+ payload_len = 2;
+
+ mc_data_1335[0] = CMD_SIGNATURE;
+ mc_data_1335[1] = cmd_id;
+ mc_data_1335[2] = payload_len >> 8;
+ mc_data_1335[3] = payload_len & 0xFF;
+ mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2);
+
+ ar1335_write(client, mc_data_1335, TX_LEN_PKT);
+
+ mc_data_1335[0] = CMD_SIGNATURE;
+ mc_data_1335[1] = cmd_id;
+
+ switch(cmd_id) {
+ case CMD_ID_LANE_CONFIG:
+ /*Lane configuration */
+ payload_data = ar1335_data.mipi_lane_config == 4 ? NUM_LANES_4: NUM_LANES_2;
+ mc_data_1335[2] = payload_data >> 8;
+ mc_data_1335[3] = payload_data & 0xFF;
+ break;
+ case CMD_ID_MIPI_CLK_CONFIG:
+ /* MIPI CLK Configuration */
+ payload_data = ar1335_data.mipi_clk_config;
+ mc_data_1335[2] = payload_data >> 8;
+ mc_data_1335[3] = payload_data & 0xFF;
+ break;
+ default:
+ dev_err(&client->dev, "MCU ISP CONF Error\n");
+ err = -1;
+ goto exit;
+ }
+
+ /* CRC*/
+ mc_data_1335[4] = errorcheck(&mc_data_1335[2], payload_len);
+ err = ar1335_write(client, mc_data_1335, payload_len+3);
+ if (err != 0) {
+ dev_err(&client->dev, " %s(%d) Error - %d \n",
+ __func__, __LINE__, err);
+ goto exit;
+ }
+
+
+ while (--retry > 0) {
+ msleep(20);
+ if (mcu_get_cmd_status(client, &cmd_id, &cmd_status, &retcode) <
+ 0) {
+ dev_err(&client->dev, " %s(%d) Error \n",
+ __func__, __LINE__);
+ err = -EIO;
+ goto exit;
+ }
+
+ if ((cmd_status == MCU_CMD_STATUS_ISP_UNINIT) &&
+ ((retcode == ERRCODE_SUCCESS) || retcode == ERRCODE_ALREADY)) {
+ err = 0;
+ goto exit;
+ }
+
+ if ((retcode != ERRCODE_BUSY) &&
+ ((cmd_status != MCU_CMD_STATUS_ISP_UNINIT))) {
+ dev_err(&client->dev,
+ "(%s) %d Error STATUS = 0x%04x RET = 0x%02x\n",
+ __func__, __LINE__, cmd_status, retcode);
+ err = -EIO;
+ goto exit;
+ }
+
+ }
+
+ err = -ETIMEDOUT;
+ exit:
+ /* unlock semaphore */
+ mutex_unlock(&mcu_i2c_mutex_1335);
+ return err;
+}
+
+static int mcu_stream_config(struct i2c_client *client, uint32_t format,
+ int mode, int frate_index)
+{
+ uint32_t payload_len = 0;
+
+ uint16_t cmd_status = 0, index = 0xFFFF;
+ uint8_t retcode = 0, cmd_id = 0;
+ int loop = 0, ret = 0, err = 0, retry = 1000;
+ static uint16_t prev_index = 0xFFFE;
+
+ /* lock semaphore */
+ mutex_lock(&mcu_i2c_mutex_1335);
+
+ cmd_id = CMD_ID_STREAM_CONFIG;
+ if (mcu_get_cmd_status(client, &cmd_id, &cmd_status, &retcode) < 0) {
+ dev_err(&client->dev," %s(%d) Error \n", __func__, __LINE__);
+ ret = -EIO;
+ goto exit;
+ }
+
+ if ((cmd_status != MCU_CMD_STATUS_SUCCESS) ||
+ (retcode != ERRCODE_SUCCESS)) {
+ dev_err(&client->dev,
+ " ISP is Unintialized or Busy STATUS = 0x%04x Errcode = 0x%02x !! \n",
+ cmd_status, retcode);
+ ret = -EBUSY;
+ goto exit;
+ }
+
+ for (loop = 0;(&streamdb[loop]) != NULL; loop++) {
+ pr_info("streamdb[%d]=%d, mode=%d",loop,streamdb[loop],mode);
+ if (streamdb[loop] == mode) {
+ index = loop + frate_index;
+ break;
+ }
+ }
+
+#ifdef AR1335_DEBUG
+ pr_info(" Index = 0x%04x , format = 0x%08x, width = %hu,"
+ " height = %hu, frate num = %hu \n", index, format,
+ ar1335_data.mcu_cam_frmfmt[mode].size.width,
+ ar1335_data.mcu_cam_frmfmt[mode].size.height,
+ ar1335_data.mcu_cam_frmfmt[mode].framerates[frate_index]);
+#endif
+
+ if (index == 0xFFFF) {
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ if(prev_index == index) {
+#ifdef AR1335_DEBUG
+ pr_info("Skipping Previous mode set ... \n");
+#endif
+ ret = 0;
+ goto exit;
+ }
+
+issue_cmd:
+ /* First Txn Payload length = 0 */
+ payload_len = 14;
+
+ mc_data_1335[0] = CMD_SIGNATURE;
+ mc_data_1335[1] = CMD_ID_STREAM_CONFIG;
+ mc_data_1335[2] = payload_len >> 8;
+ mc_data_1335[3] = payload_len & 0xFF;
+ mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2);
+
+ ar1335_write(client, mc_data_1335, TX_LEN_PKT);
+
+ mc_data_1335[0] = CMD_SIGNATURE;
+ mc_data_1335[1] = CMD_ID_STREAM_CONFIG;
+ mc_data_1335[2] = index >> 8;
+ mc_data_1335[3] = index & 0xFF;
+
+ /* Format Fourcc - currently only YUYV */
+ mc_data_1335[4] = format >> 24;
+ mc_data_1335[5] = format >> 16;
+ mc_data_1335[6] = format >> 8;
+ mc_data_1335[7] = format & 0xFF;
+
+ /* width */
+ mc_data_1335[8] = ar1335_data.mcu_cam_frmfmt[mode].size.width >> 8;
+ mc_data_1335[9] = ar1335_data.mcu_cam_frmfmt[mode].size.width & 0xFF;
+
+ /* height */
+ mc_data_1335[10] = ar1335_data.mcu_cam_frmfmt[mode].size.height >> 8;
+ mc_data_1335[11] = ar1335_data.mcu_cam_frmfmt[mode].size.height & 0xFF;
+
+ /* frame rate num */
+ mc_data_1335[12] = ar1335_data.mcu_cam_frmfmt[mode].framerates[frate_index] >> 8;
+ mc_data_1335[13] = ar1335_data.mcu_cam_frmfmt[mode].framerates[frate_index] & 0xFF;
+
+ /* frame rate denom */
+ mc_data_1335[14] = 0x00;
+ mc_data_1335[15] = 0x01;
+
+ mc_data_1335[16] = errorcheck(&mc_data_1335[2], 14);
+ err = ar1335_write(client, mc_data_1335, 17);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ while (--retry > 0) {
+ cmd_id = CMD_ID_STREAM_CONFIG;
+ if (mcu_get_cmd_status(
+ client, &cmd_id, &cmd_status, &retcode) < 0) {
+ dev_err(&client->dev,
+ " %s(%d) MCU GET CMD Status Error : loop : %d \n",
+ __func__, __LINE__, loop);
+ ret = -EIO;
+ goto exit;
+ }
+
+ if ((cmd_status == MCU_CMD_STATUS_SUCCESS) &&
+ (retcode == ERRCODE_SUCCESS)) {
+ ret = 0;
+ goto exit;
+ }
+
+ if(retcode == ERRCODE_AGAIN) {
+ /* Issue Command Again if Set */
+ retry = 1000;
+ goto issue_cmd;
+ }
+
+ if ((retcode != ERRCODE_BUSY) &&
+ ((cmd_status != MCU_CMD_STATUS_PENDING))) {
+ dev_err(&client->dev,
+ "(%s) %d Error STATUS = 0x%04x RET = 0x%02x\n",
+ __func__, __LINE__, cmd_status, retcode);
+ ret = -EIO;
+ goto exit;
+ }
+
+ /* Delay after retry */
+ mdelay(10);
+ }
+
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -ETIMEDOUT;
+
+exit:
+ if(!ret)
+ prev_index = index;
+
+ /* unlock semaphore */
+ mutex_unlock(&mcu_i2c_mutex_1335);
+
+ return ret;
+}
+
+static int mcu_isp_power_down(struct i2c_client *client)
+{
+ uint32_t payload_len = 0;
+
+ uint16_t cmd_status = 0;
+ uint8_t retcode = 0, cmd_id = 0;
+ int retry = 1000, err = 0;
+
+ /*lock semaphore */
+ mutex_lock(&mcu_i2c_mutex_1335);
+
+ /* First Txn Payload length = 0 */
+ payload_len = 0;
+
+ mc_data_1335[0] = CMD_SIGNATURE;
+ mc_data_1335[1] = CMD_ID_ISP_PDOWN;
+ mc_data_1335[2] = payload_len >> 8;
+ mc_data_1335[3] = payload_len & 0xFF;
+ mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2);
+
+ ar1335_write(client, mc_data_1335, TX_LEN_PKT);
+
+ mc_data_1335[0] = CMD_SIGNATURE;
+ mc_data_1335[1] = CMD_ID_ISP_PDOWN;
+ err = ar1335_write(client, mc_data_1335, 2);
+ if (err != 0) {
+ dev_err(&client->dev, " %s(%d) Error - %d \n",
+ __func__, __LINE__, err);
+ goto exit;
+ }
+
+ while (--retry > 0) {
+ msleep(20);
+ cmd_id = CMD_ID_ISP_PDOWN;
+ if (mcu_get_cmd_status(client, &cmd_id, &cmd_status, &retcode) <
+ 0) {
+ dev_err(&client->dev, " %s(%d) Get Status Error \n",
+ __func__, __LINE__);
+ err = -EINVAL;
+ goto exit;
+ }
+
+ if ((cmd_status == MCU_CMD_STATUS_ISP_PWDN) &&
+ ((retcode == ERRCODE_SUCCESS) || retcode == ERRCODE_ALREADY)) {
+ err = 0;
+ goto exit;
+ }
+
+ if ((retcode != ERRCODE_BUSY) &&
+ ((cmd_status != MCU_CMD_STATUS_PENDING))) {
+ dev_err(&client->dev,
+ "(%s) %d Error STATUS = 0x%04x RET = 0x%02x\n",
+ __func__, __LINE__, cmd_status,
+ retcode);
+ err = -EIO;
+ goto exit;
+ }
+
+ }
+ err = -ETIMEDOUT;
+ exit:
+ /* unlock semaphore */
+ mutex_unlock(&mcu_i2c_mutex_1335);
+ return err;
+}
+
+static int mcu_isp_power_wakeup(struct i2c_client *client)
+{
+ uint32_t payload_len = 0;
+
+ uint16_t cmd_status = 0;
+ uint8_t retcode = 0, cmd_id = 0;
+ int retry = 1000, err = 0;
+
+ /*lock semaphore */
+ mutex_lock(&mcu_i2c_mutex_1335);
+ /* First Txn Payload length = 0 */
+ payload_len = 0;
+
+ mc_data_1335[0] = CMD_SIGNATURE;
+ mc_data_1335[1] = CMD_ID_ISP_PUP;
+ mc_data_1335[2] = payload_len >> 8;
+ mc_data_1335[3] = payload_len & 0xFF;
+ mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2);
+
+ ar1335_write(client, mc_data_1335, TX_LEN_PKT);
+
+ mc_data_1335[0] = CMD_SIGNATURE;
+ mc_data_1335[1] = CMD_ID_ISP_PUP;
+ err = ar1335_write(client, mc_data_1335, 2);
+ if (err != 0) {
+ dev_err(&client->dev, " %s(%d) Error - %d \n",
+ __func__, __LINE__, err);
+ goto exit;
+ }
+
+ while (--retry > 0) {
+ msleep(20);
+ cmd_id = CMD_ID_ISP_PUP;
+ if (mcu_get_cmd_status(client, &cmd_id, &cmd_status, &retcode) <
+ 0) {
+ dev_err(&client->dev, " %s(%d) Error \n",
+ __func__, __LINE__);
+ err = -EIO;
+ goto exit;
+ }
+
+ if ((cmd_status == MCU_CMD_STATUS_SUCCESS) &&
+ ((retcode == ERRCODE_SUCCESS) || retcode == ERRCODE_ALREADY)) {
+ err = 0;
+ goto exit;
+ }
+
+ if ((retcode != ERRCODE_BUSY) &&
+ ((cmd_status != MCU_CMD_STATUS_PENDING))) {
+ dev_err(&client->dev,
+ "(%s) %d Error STATUS = 0x%04x RET = 0x%02x\n",
+ __func__, __LINE__, cmd_status, retcode);
+ err = -EIO;
+ goto exit;
+ }
+
+ }
+
+ err = -ETIMEDOUT;
+ exit:
+ /* unlock semaphore */
+ mutex_unlock(&mcu_i2c_mutex_1335);
+ return err;
+}
+
+static int mcu_set_ctrl(struct i2c_client *client, uint32_t arg_ctrl_id,
+ uint8_t ctrl_type, int32_t curr_val)
+{
+ uint32_t payload_len = 0;
+
+ uint16_t cmd_status = 0, index = 0xFFFF;
+ uint8_t retcode = 0, cmd_id = 0;
+ int loop = 0, ret = 0, err = 0;
+ uint32_t ctrl_id = 0;
+
+ /* lock semaphore */
+ mutex_lock(&mcu_i2c_mutex_1335);
+
+ ctrl_id = arg_ctrl_id;
+
+ /* call ISP Ctrl config command */
+
+ for (loop = 0; loop < num_ctrls; loop++) {
+ if (ctrldb[loop] == ctrl_id) {
+ index = mcu_ctrl_info[loop].mcu_ctrl_index;
+ break;
+ }
+ }
+
+ if (index == 0xFFFF) {
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ /* First Txn Payload length = 0 */
+ payload_len = 11;
+
+ mc_data_1335[0] = CMD_SIGNATURE;
+ mc_data_1335[1] = CMD_ID_SET_CTRL;
+ mc_data_1335[2] = payload_len >> 8;
+ mc_data_1335[3] = payload_len & 0xFF;
+ mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2);
+
+ ar1335_write(client, mc_data_1335, TX_LEN_PKT);
+
+ /* Second Txn */
+ mc_data_1335[0] = CMD_SIGNATURE;
+ mc_data_1335[1] = CMD_ID_SET_CTRL;
+
+ /* Index */
+ mc_data_1335[2] = index >> 8;
+ mc_data_1335[3] = index & 0xFF;
+
+ /* Control ID */
+ mc_data_1335[4] = ctrl_id >> 24;
+ mc_data_1335[5] = ctrl_id >> 16;
+ mc_data_1335[6] = ctrl_id >> 8;
+ mc_data_1335[7] = ctrl_id & 0xFF;
+
+ /* Ctrl Type */
+ mc_data_1335[8] = ctrl_type;
+
+ /* Ctrl Value */
+ mc_data_1335[9] = curr_val >> 24;
+ mc_data_1335[10] = curr_val >> 16;
+ mc_data_1335[11] = curr_val >> 8;
+ mc_data_1335[12] = curr_val & 0xFF;
+
+ /* CRC */
+ mc_data_1335[13] = errorcheck(&mc_data_1335[2], 11);
+
+ err = ar1335_write(client, mc_data_1335, 14);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ while (1) {
+ cmd_id = CMD_ID_SET_CTRL;
+ if (mcu_get_cmd_status(
+ client, &cmd_id, &cmd_status, &retcode) < 0) {
+ dev_err(&client->dev," %s(%d) Error \n",
+ __func__, __LINE__);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ if ((cmd_status == MCU_CMD_STATUS_SUCCESS) &&
+ (retcode == ERRCODE_SUCCESS)) {
+ ret = 0;
+ goto exit;
+ }
+
+ if ((retcode != ERRCODE_BUSY) &&
+ ((cmd_status != MCU_CMD_STATUS_PENDING))) {
+ dev_err(&client->dev,
+ "(%s) %d ISP Error STATUS = 0x%04x RET = 0x%02x\n",
+ __func__, __LINE__, cmd_status, retcode);
+ ret = -EIO;
+ goto exit;
+ }
+ }
+
+ exit:
+ /* unlock semaphore */
+ mutex_unlock(&mcu_i2c_mutex_1335);
+
+ return ret;
+}
+
+static int mcu_get_ctrl(struct i2c_client *client, uint32_t arg_ctrl_id,
+ uint8_t * ctrl_type, int32_t * curr_val)
+{
+ uint32_t payload_len = 0;
+ uint8_t errcode = ERRCODE_SUCCESS, orig_crc = 0, calc_crc = 0;
+ uint16_t index = 0xFFFF;
+ int loop = 0, ret = 0, err = 0;
+
+ uint32_t ctrl_id = 0;
+
+ /* lock semaphore */
+ mutex_lock(&mcu_i2c_mutex_1335);
+
+ ctrl_id = arg_ctrl_id;
+
+ /* Read the Ctrl Value from Micro controller */
+
+ for (loop = 0; loop < num_ctrls; loop++) {
+ if (ctrldb[loop] == ctrl_id) {
+ index = mcu_ctrl_info[loop].mcu_ctrl_index;
+ break;
+ }
+ }
+
+ if (index == 0xFFFF) {
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ if (
+ mcu_ctrl_info[loop].ctrl_ui_data.ctrl_ui_info.ctrl_ui_flags &
+ V4L2_CTRL_FLAG_WRITE_ONLY
+ ) {
+ ret = -EACCES;
+ goto exit;
+ }
+
+ /* First Txn Payload length = 2 */
+ payload_len = 2;
+
+ mc_data_1335[0] = CMD_SIGNATURE;
+ mc_data_1335[1] = CMD_ID_GET_CTRL;
+ mc_data_1335[2] = payload_len >> 8;
+ mc_data_1335[3] = payload_len & 0xFF;
+ mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2);
+
+ ar1335_write(client, mc_data_1335, TX_LEN_PKT);
+
+ mc_data_1335[0] = CMD_SIGNATURE;
+ mc_data_1335[1] = CMD_ID_GET_CTRL;
+ mc_data_1335[2] = index >> 8;
+ mc_data_1335[3] = index & 0xFF;
+ mc_data_1335[4] = errorcheck(&mc_data_1335[2], 2);
+ err = ar1335_write(client, mc_data_1335, 5);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ err = ar1335_read(client, mc_ret_data_1335, RX_LEN_PKT);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ /* Verify CRC */
+ orig_crc = mc_ret_data_1335[4];
+ calc_crc = errorcheck(&mc_ret_data_1335[2], 2);
+ if (orig_crc != calc_crc) {
+ dev_err(&client->dev," %s(%d) CRC 0x%02x != 0x%02x \n",
+ __func__, __LINE__, orig_crc, calc_crc);
+ ret = -1;
+ goto exit;
+ }
+
+ if (((mc_ret_data_1335[2] << 8) | mc_ret_data_1335[3]) == 0) {
+ ret = -EIO;
+ goto exit;
+ }
+
+ errcode = mc_ret_data_1335[5];
+ if (errcode != ERRCODE_SUCCESS) {
+ dev_err(&client->dev," %s(%d) Errcode - 0x%02x \n",
+ __func__, __LINE__, errcode);
+ ret = -EIO;
+ goto exit;
+ }
+
+ payload_len =
+ ((mc_ret_data_1335[2] << 8) | mc_ret_data_1335[3]) + HEADER_FOOTER_SIZE;
+ memset(mc_ret_data_1335, 0x00, payload_len);
+ err = ar1335_read(client, mc_ret_data_1335, payload_len);
+ if (err != 0) {
+ dev_err(&client->dev," %s(%d) Error - %d \n", __func__,
+ __LINE__, err);
+ ret = -EIO;
+ goto exit;
+ }
+
+ /* Verify CRC */
+ orig_crc = mc_ret_data_1335[payload_len - 2];
+ calc_crc =
+ errorcheck(&mc_ret_data_1335[2], payload_len - HEADER_FOOTER_SIZE);
+ if (orig_crc != calc_crc) {
+ dev_err(&client->dev," %s(%d) CRC 0x%02x != 0x%02x \n",
+ __func__, __LINE__, orig_crc, calc_crc);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ /* Verify Errcode */
+ errcode = mc_ret_data_1335[payload_len - 1];
+ if (errcode != ERRCODE_SUCCESS) {
+ dev_err(&client->dev," %s(%d) Errcode - 0x%02x \n",
+ __func__, __LINE__, errcode);
+ ret = -EINVAL;
+ goto exit;
+ }
+
+ /* Ctrl type starts from index 6 */
+
+ *ctrl_type = mc_ret_data_1335[6];
+
+ switch (*ctrl_type) {
+ case CTRL_STANDARD:
+ *curr_val =
+ mc_ret_data_1335[7] << 24 | mc_ret_data_1335[8] << 16 | mc_ret_data_1335[9]
+ << 8 | mc_ret_data_1335[10];
+ break;
+
+ case CTRL_EXTENDED:
+ /* Not Implemented */
+ break;
+ }
+
+ exit:
+ /* unlock semaphore */
+ mutex_unlock(&mcu_i2c_mutex_1335);
+
+ return ret;
+}
+
+/*
+ * ---------------------------------------------------------
+ * END of MCU realed functions
+ * ---------------------------------------------------------
+ */
+
+static void toggle_gpio(unsigned int gpio, int val)
+{
+ if (gpio_cansleep(gpio)){
+ gpio_direction_output(gpio,val);
+ gpio_set_value_cansleep(gpio, val);
+ } else{
+ gpio_direction_output(gpio,val);
+ gpio_set_value(gpio, val);
+ }
+}
+
+static int ar1335_querymenu(struct v4l2_subdev *sd, struct v4l2_querymenu *qm)
+{
+ uint32_t index = 0;
+ int loop;
+
+ if (sd == NULL || qm == NULL)
+ return -EINVAL;
+
+ for (loop = 0; loop < num_ctrls; loop++) {
+ if (ctrldb[loop] == qm->id) {
+ index = loop;
+ break;
+ }
+ }
+
+ if (loop == num_ctrls) {
+ return -EINVAL;
+ }
+
+ if (
+ !(
+ 0 <= qm->index &&
+ qm->index < mcu_ctrl_info[index].ctrl_ui_data.ctrl_menu_info.num_menu_elem
+ )
+ ) {
+ return -EINVAL;
+ }
+
+ /*
+ * Copy the name of the menu.
+ *
+ * We deal only with V4L2_CTRL_TYPE_MENU and not
+ * V4L2_CTRL_TYPE_INTEGER_MENU. So, this should be
+ * enough.
+ */
+ strcpy(qm->name, mcu_ctrl_info[index].ctrl_ui_data.ctrl_menu_info.menu[qm->index]);
+
+ /*
+ * Set the reserved to zero as mentioned in spec
+ */
+ qm->reserved = 0;
+
+ return 0;
+}
+
+static int ar1335_queryctrl(struct v4l2_subdev *sd, struct v4l2_queryctrl *qc)
+{
+ int index, ctrl_index = -1, ctrl_id;
+ bool next_ctrl = (qc->id & V4L2_CTRL_FLAG_NEXT_CTRL);
+
+ if (sd == NULL || qc == NULL)
+ return -EINVAL;
+
+ if (next_ctrl) {
+ ctrl_id = qc->id & (~V4L2_CTRL_FLAG_NEXT_CTRL);
+
+ /*
+ * Ignore the V4L2_CTRL_FLAG_NEXT_COMPOUND for now
+ */
+ ctrl_id = ctrl_id & (~V4L2_CTRL_FLAG_NEXT_COMPOUND);
+ }
+ else {
+ /*
+ * Assume we've just got the control ID itself
+ * directly.
+ */
+ ctrl_id = qc->id;
+ }
+
+ if (ctrl_id) {
+ for (index = 0; index < num_ctrls; index++) {
+ if (ctrldb[index] == ctrl_id) {
+ ctrl_index = (next_ctrl) ? index + 1 : index;
+ break;
+ }
+ }
+
+ if (index == num_ctrls) {
+ /*
+ * We do not know about this control
+ */
+ return -EINVAL;
+ }
+ else if (
+ next_ctrl &&
+ index == num_ctrls - 1
+ )
+ {
+ /*
+ * We've got a request for the control
+ * after the last one.
+ */
+ return -EINVAL;
+ }
+ }
+ else if (next_ctrl) {
+ ctrl_index = 0;
+ }
+ else {
+ return -EINVAL;
+ }
+
+ if (
+ mcu_ctrl_info[ctrl_index].ctrl_type == CTRL_STANDARD
+ ) {
+ /*
+ * We cannot use `v4l2_ctrl_query_fill` instead of manually filling
+ * the details even for standard controls as we sometimes implement our
+ * own version for some controls.
+ *
+ * e.g., V4L2_CID_FOCUS_AUTO has a max value of 1 according to standard
+ * but our version of it has a max value of 5.
+ */
+ qc->id = mcu_ctrl_info[ctrl_index].ctrl_id;
+
+ strcpy(qc->name, mcu_ctrl_info[ctrl_index].ctrl_ui_data.ctrl_ui_info.ctrl_name);
+
+ qc->type = mcu_ctrl_info[ctrl_index].ctrl_ui_data.ctrl_ui_info.ctrl_ui_type;
+ qc->flags = mcu_ctrl_info[ctrl_index].ctrl_ui_data.ctrl_ui_info.ctrl_ui_flags;
+
+ qc->minimum = mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_min;
+ qc->maximum = mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_max;
+ qc->step = mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_step;
+ qc->default_value = mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_def;
+ }
+ else {
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
+static int ar1335_g_ctrl(struct v4l2_subdev *sd, struct v4l2_control *ctrl)
+{
+ struct i2c_client *client = ar1335_data.i2c_client;
+ int err = 0;
+ uint8_t ctrl_type = 0;
+ int ctrl_val = 0;
+
+ if (sd == NULL || ctrl == NULL)
+ return -EINVAL;
+
+ if ((err = mcu_get_ctrl(client, ctrl->id, &ctrl_type, &ctrl_val)) < 0) {
+ return err;
+ }
+
+ if (ctrl_type == CTRL_STANDARD) {
+ ctrl->value = ctrl_val;
+ } else {
+ /* Not Implemented */
+ return -EINVAL;
+ }
+
+ return err;
+}
+
+static int ar1335_s_ctrl(struct v4l2_subdev *sd, struct v4l2_control *ctrl)
+{
+ struct i2c_client *client = ar1335_data.i2c_client;
+ int err = 0, index, ctrl_index = 0;
+
+ if (sd == NULL || ctrl == NULL)
+ return -EINVAL;
+
+ for (index = 0; index < num_ctrls; index++) {
+ if (ctrldb[index] == ctrl->id) {
+ ctrl_index = index;
+ break;
+ }
+ }
+
+ if (index == num_ctrls) {
+ return -EINVAL;
+ }
+
+ if (
+ ctrl->value < mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_min ||
+ ctrl->value > mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_max
+ )
+ return -ERANGE;
+
+ if ((err =
+ mcu_set_ctrl(client, ctrl->id, CTRL_STANDARD, ctrl->value)) < 0) {
+ dev_err(&client->dev," %s (%d ) \n", __func__, __LINE__);
+ return -EINVAL;
+ }
+
+ return err;
+}
+
+static int ar1335_g_ext_ctrls(struct v4l2_subdev *sd, struct v4l2_ext_controls *ctrls)
+{
+ int i, err = 0;
+
+ if (sd == NULL || ctrls == NULL)
+ return -EINVAL;
+
+ for (i = 0; i < ctrls->count; i++) {
+ struct v4l2_ext_control *ext_ctrl = ctrls->controls + i;
+ struct v4l2_control ctrl = {
+ .id = ext_ctrl->id,
+ };
+
+ err = ar1335_g_ctrl(sd, &ctrl);
+ if (err) {
+ ctrls->error_idx = ctrls->count;
+ break;
+ }
+ else {
+ ext_ctrl->value = ctrl.value;
+ }
+ }
+
+ return err;
+}
+
+static int ar1335_try_ext_ctrls(struct v4l2_subdev *sd, struct v4l2_ext_controls *ctrls)
+{
+ int i;
+
+ if (sd == NULL || ctrls == NULL)
+ return -EINVAL;
+
+ for (i = 0; i < ctrls->count; i++) {
+ struct v4l2_ext_control *ext_ctrl = ctrls->controls + i;
+ int ctrl_index = 0, index;
+
+ for (index = 0; index < num_ctrls; index++) {
+ if (ctrldb[index] == ext_ctrl->id) {
+ ctrl_index = index;
+ break;
+ }
+ }
+
+ if (index == num_ctrls) {
+ ctrls->error_idx = ext_ctrl->id;
+ return -EINVAL;
+ }
+
+ if (
+ ext_ctrl->value < mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_min ||
+ ext_ctrl->value > mcu_ctrl_info[ctrl_index].ctrl_data.std.ctrl_max
+ ) {
+ ctrls->error_idx = ext_ctrl->id;
+ return -ERANGE;
+ }
+ }
+
+ return 0;
+
+}
+
+static int ar1335_s_ext_ctrls(struct v4l2_subdev *sd, struct v4l2_ext_controls *ctrls)
+{
+ int i, err = 0;
+
+ if (sd == NULL || ctrls == NULL)
+ return -EINVAL;
+
+ for (i = 0; i < ctrls->count; i++) {
+ struct v4l2_ext_control *ext_ctrl = ctrls->controls + i;
+ struct v4l2_control ctrl = {
+ .id = ext_ctrl->id,
+ .value = ext_ctrl->value
+ };
+
+ err = ar1335_s_ctrl(sd, &ctrl);
+ if (err) {
+ /*
+ * TODO: We would have to indicate whether there
+ * is an issue in validation or in the
+ * hardware by correctly setting the error_idx
+ * to count only when the validation failed
+ * and setting it to index when there is an
+ * issue in communication with the hardware.
+ *
+ * For now, just return the count for all cases.
+ */
+ ctrls->error_idx = ctrls->count;
+ break;
+ }
+ }
+
+ return err;
+}
+
+static int ar1335_enum_frameintervals(struct v4l2_subdev *sd,struct v4l2_subdev_pad_config *cfg,struct v4l2_subdev_frame_interval_enum *fival)
+{
+ struct i2c_client *client = v4l2_get_subdevdata(sd);
+ int j;
+
+ if (fival->width == 0 || fival->height == 0)
+ {
+ dev_err(&client->dev, "Please assign width and height.\n");
+ return -EINVAL;
+ }
+
+ if (fival->code != ar1335_data.fmt.code)
+ {
+ return -EINVAL;
+ }
+
+ for (j = 0; j < ar1335_data.num_frm_fmts; j++) {
+ if (
+ fival->width == ar1335_data.mcu_cam_frmfmt[j].size.width &&
+ fival->height == ar1335_data.mcu_cam_frmfmt[j].size.height
+ ) {
+ if (fival->index >= ar1335_data.mcu_cam_frmfmt[j].num_framerates)
+ {
+ return -EINVAL;
+ }
+
+ fival->interval.numerator = 1;
+ fival->interval.denominator = ar1335_data.mcu_cam_frmfmt[j].framerates[fival->index];
+
+ return 0;
+ }
+ }
+ return -EINVAL;
+
+}
+
+static int ar1335_enum_framesizes(struct v4l2_subdev *sd,struct v4l2_subdev_pad_config *cfg,struct v4l2_subdev_frame_size_enum *fse)
+{
+ if (fse->index >= ar1335_data.num_frm_fmts)
+ {
+ return -EINVAL;
+ }
+
+ if (fse->code != ar1335_data.fmt.code)
+ {
+ return -EINVAL;
+ }
+
+ fse->max_width = ar1335_data.mcu_cam_frmfmt[fse->index].size.width;
+ fse->min_width = fse->max_width;
+
+ fse->max_height = ar1335_data.mcu_cam_frmfmt[fse->index].size.height;
+ fse->min_height = fse->max_height;
+
+ return 0;
+}
+
+static int ar1335_enum_mbus_code(struct v4l2_subdev *sd,struct v4l2_subdev_pad_config *cfg,struct v4l2_subdev_mbus_code_enum *code)
+{
+ if (code->pad || code->index >= AR1335_MAX_FORMAT_SUPPORTED)
+ return -EINVAL;
+
+ code->code = ar1335_data.fmt.code;
+
+ return 0;
+}
+
+static int ar1335_s_stream(struct v4l2_subdev *sd, int enable)
+{
+ if (!enable) {
+ /* Perform Stream Off Sequence - if any */
+ }
+
+ /* Perform Stream On Sequence - if any */
+ mdelay(10);
+
+ return 0;
+}
+
+static int ar1335_g_parm(struct v4l2_subdev *sd, struct v4l2_streamparm *param)
+{
+ int mode = ar1335_data.streamcap.capturemode;
+
+ param->parm.capture.capability |= V4L2_CAP_TIMEPERFRAME;
+
+ param->parm.capture.timeperframe.denominator =
+ ar1335_data.mcu_cam_frmfmt[mode].framerates[ar1335_data.frate_index];
+ param->parm.capture.timeperframe.numerator = 1;
+
+ return 0;
+}
+
+static int ar1335_s_parm(struct v4l2_subdev *sd, struct v4l2_streamparm *param)
+{
+ struct i2c_client *client = v4l2_get_subdevdata(sd);
+ int ret = 0, err = 0;
+ int mode = ar1335_data.streamcap.capturemode;
+ int fourcc = ar1335_data.pix.pixelformat;
+
+ param->parm.capture.capability = V4L2_CAP_TIMEPERFRAME;
+ memset(param->parm.capture.reserved, 0, 4*sizeof(u32));
+
+ if (
+ param->parm.capture.timeperframe.denominator == 0 &&
+ param->parm.capture.timeperframe.numerator == 0 &&
+ ar1335_data.mcu_cam_frmfmt[mode].num_framerates == 1
+ ) {
+ param->parm.capture.timeperframe.denominator =
+ ar1335_data.mcu_cam_frmfmt[mode].framerates[ar1335_data.frate_index];
+ param->parm.capture.timeperframe.numerator = 1;
+ /*
+ * We would have to reset the frame interval to a
+ * nominal value in this case but as we just have one
+ * frame interval we just return success.
+ */
+ return 0;
+ }
+
+ if (param->parm.capture.timeperframe.numerator != 1) {
+ dev_err(&client->dev, "Invalid numerator for timeperframe\n");
+ return -EINVAL;
+ }
+
+ for (ret = 0; ret < ar1335_data.mcu_cam_frmfmt[mode].num_framerates;
+ ret++) {
+ if ((ar1335_data.mcu_cam_frmfmt[mode].framerates[ret] ==
+ param->parm.capture.timeperframe.denominator)) {
+ ar1335_data.frate_index = ret;
+
+ /* call stream config with width, height, frame rate */
+ err =
+ mcu_stream_config(client, fourcc, mode,
+ ar1335_data.frate_index);
+ if (err < 0) {
+ dev_err(&client->dev, "%s: Failed stream_config \n", __func__);
+ return err;
+ }
+
+ mdelay(10);
+
+ return 0;
+ }
+ }
+
+ return -EINVAL;
+}
+
+static int ar1335_s_power(struct v4l2_subdev *sd, int on)
+{
+
+ /* Perform Power On/Off Sequence - if any */
+ return 0;
+}
+
+static int ar1335_get_fmt(struct v4l2_subdev *sd,struct v4l2_subdev_pad_config *cfg,struct v4l2_subdev_format *format)
+{
+ int ret = 0;
+
+ if (format->pad)
+ return -EINVAL;
+
+ format->format.code = ar1335_data.fmt.code;
+ format->format.colorspace = ar1335_data.fmt.colorspace;
+ format->format.field = V4L2_FIELD_NONE;
+
+ format->format.width = ar1335_data.pix.width;
+ format->format.height = ar1335_data.pix.height;
+
+ return ret;
+}
+
+static int ar1335_set_fmt(struct v4l2_subdev *sd, struct v4l2_subdev_pad_config *cfg,
+ struct v4l2_subdev_format *format)
+{
+ int ret = 0, i;
+ struct i2c_client *client = v4l2_get_subdevdata(sd);
+ int flag = 0, err = 0;
+
+ format->format.code = ar1335_data.fmt.code;
+ format->format.colorspace = ar1335_data.fmt.colorspace;
+ format->format.field = V4L2_FIELD_NONE;
+
+ for (i = 0; i < ar1335_data.num_frm_fmts ; i++) {
+ if (
+ ar1335_data.mcu_cam_frmfmt[i].size.width == format->format.width &&
+ ar1335_data.mcu_cam_frmfmt[i].size.height == format->format.height
+ ) {
+ printk("resolution equ width= %d \n",ar1335_data.mcu_cam_frmfmt[i].size.width);
+ printk("resolution equ height= %d \n",ar1335_data.mcu_cam_frmfmt[i].size.height);
+ flag = 1;
+ break;
+ }
+ printk("ar1335_resolution width= %d \n",ar1335_data.mcu_cam_frmfmt[i].size.width);
+ printk("ar1335_resolution height= %d \n",ar1335_data.mcu_cam_frmfmt[i].size.height);
+ printk("format_resolution width= %d \n",format->format.width);
+ printk("format_resolution height= %d \n",format->format.height);
+ }
+
+ if(flag == 0) {
+ format->format.width = ar1335_data.pix.width;
+ format->format.height = ar1335_data.pix.height;
+ }
+
+ if (format->which == V4L2_SUBDEV_FORMAT_TRY)
+ {
+ return 0;
+ }
+
+ /* call stream config with width, height, frame rate */
+ err =
+ mcu_stream_config(client, ar1335_data.pix.pixelformat, ar1335_data.mcu_cam_frmfmt[i].mode,
+ ar1335_data.frate_index);
+ if (err < 0) {
+ dev_err(&client->dev, "%s: Failed stream_config \n", __func__);
+ return err;
+ }
+
+ ar1335_data.pix.width = format->format.width;
+ ar1335_data.pix.height = format->format.height;
+ ar1335_data.streamcap.capturemode = ar1335_data.mcu_cam_frmfmt[i].mode;
+
+ mdelay(10);
+
+ return ret;
+}
+
+static int ar1335_link_setup(struct media_entity *entity,
+ const struct media_pad *local,
+ const struct media_pad *remote, u32 flags)
+{
+ return 0;
+}
+
+static struct v4l2_subdev_video_ops ar1335_subdev_video_ops = {
+ .g_parm = ar1335_g_parm,
+ .s_parm = ar1335_s_parm,
+ .s_stream = ar1335_s_stream,
+};
+
+static const struct v4l2_subdev_pad_ops ar1335_subdev_pad_ops = {
+ .enum_frame_size = ar1335_enum_framesizes,
+ .enum_frame_interval = ar1335_enum_frameintervals,
+ .enum_mbus_code = ar1335_enum_mbus_code,
+ .set_fmt = ar1335_set_fmt,
+ .get_fmt = ar1335_get_fmt,
+};
+
+static struct v4l2_subdev_core_ops ar1335_subdev_core_ops = {
+ .s_power = ar1335_s_power,
+ .queryctrl = ar1335_queryctrl,
+ .g_ctrl = ar1335_g_ctrl,
+ .s_ctrl = ar1335_s_ctrl,
+ .g_ext_ctrls = ar1335_g_ext_ctrls,
+ .s_ext_ctrls = ar1335_s_ext_ctrls,
+ .try_ext_ctrls = ar1335_try_ext_ctrls,
+ .querymenu = ar1335_querymenu,
+};
+
+static struct v4l2_subdev_ops ar1335_subdev_ops = {
+ .core = &ar1335_subdev_core_ops,
+ .video = &ar1335_subdev_video_ops,
+ .pad = &ar1335_subdev_pad_ops,
+};
+
+static const struct media_entity_operations ar1335_sd_media_ops = {
+ .link_setup = ar1335_link_setup,
+};
+
+static int ar1335_init(struct i2c_client *client)
+{
+ u32 tgt_xclk; /* target xclk */
+ int ret = 0;
+
+ ar1335_data.on = true;
+
+ /* mclk */
+ tgt_xclk = ar1335_data.mclk;
+ tgt_xclk = min(tgt_xclk, (u32)AR1335_XCLK_MAX);
+ tgt_xclk = max(tgt_xclk, (u32)AR1335_XCLK_MIN);
+ ar1335_data.mclk = tgt_xclk;
+
+#ifdef AR1335_DEBUG
+ pr_info("mclk: %d MHz\n", tgt_xclk / 1000000);
+#endif
+
+ ret = mcu_stream_config(client, ar1335_data.pix.pixelformat,
+ ar1335_data.streamcap.capturemode,
+ ar1335_data.frate_index);
+
+ return ret;
+}
+
+static int ar1335_ctrls_init(ISP_CTRL_INFO *mcu_cam_ctrls)
+{
+ struct i2c_client *client = NULL;
+ int numctrls = 0;
+ int err = 0, i = 0;
+
+ client = ar1335_data.i2c_client;
+
+ if (mcu_cam_ctrls == NULL)
+ {
+ dev_err(
+ &client->dev,
+ "%s: MCU control data hasn't been allocated\n",
+ __func__
+ );
+ return -EINVAL;
+ }
+ /*
+ * Enumerate the controls from the MCU
+ */
+ err = mcu_count_or_list_ctrls(client, mcu_cam_ctrls, &numctrls);
+ if (err < 0) {
+ dev_err(&client->dev, "Unable to enumerate the controls in the sensor\n");
+ return err;
+ }
+
+ for (i = 0; i < numctrls; i++) {
+ if (mcu_cam_ctrls[i].ctrl_type == CTRL_STANDARD) {
+ err = mcu_get_ctrl_ui(client, &mcu_ctrl_info[i], mcu_ctrl_info[i].mcu_ctrl_index);
+ if (err != ERRCODE_SUCCESS) {
+ dev_err(&client->dev, "Error Enumerating Control 0x%08x !! \n",
+ mcu_ctrl_info[i].ctrl_id);
+ return err;
+ }
+ else if (
+ mcu_ctrl_info[i].ctrl_ui_data.ctrl_ui_info.ctrl_ui_type ==
+ V4L2_CTRL_TYPE_MENU
+ ) {
+ mcu_ctrl_info[i].ctrl_data.std.ctrl_step = 1;
+ }
+ }
+ }
+
+ return 0;
+}
+
+static int ar1335_verify_mcu(struct i2c_client *client)
+{
+ int ret = 0, try = 0;
+ unsigned char fw_version_1335[32] = {0};
+
+ if (client == NULL)
+ {
+ dev_err(&client->dev, "%s: Invalid I2C client parameter\n", __func__);
+ return -EINVAL;
+ }
+
+ /*
+ * Try to boot the MCU into firmware mode.
+ *
+ * We do this only when the reset_gpio and pwdn_gpio are
+ * available.
+ */
+ if (gpios_available_1335())
+ {
+ toggle_gpio(pwdn_gpio, 0);
+ msleep(10);
+ toggle_gpio(reset_gpio, 0);
+ msleep(10);
+ toggle_gpio(reset_gpio, 1);
+ msleep(500);
+
+ for(try = 0; try < 10; try++) {
+ ret = mcu_get_fw_version(client, fw_version_1335);
+ if(ret < 0) {
+ msleep(100);
+ continue;
+ } else {
+ break;
+ }
+ }
+
+ if (ret == 0)
+ {
+ ret = mcu_verify_fw_version(fw_version_1335);
+ }
+ else
+ {
+ dev_dbg(
+ &client->dev,
+ "Could not read the firmware version from the MCU\n"
+ );
+ pr_info(" Could not read the firmware version from the MCU, tries=%d\n", try+1);
+ }
+
+ /*
+ * Try booting and flashing in bootloader mode when an error is detected
+ * or the force update bit is set in the firmware version
+ */
+ if (ret != 0) {
+ int loop = 0;
+
+ /*
+ * Verification of the MCU in firmware mode failed so
+ * try to boot the MCU in bootloader mode.
+ */
+
+ pr_info(" Trying to Detect Bootloader mode\n");
+
+ if (gpios_available_1335())
+ {
+ toggle_gpio(reset_gpio, 0);
+ msleep(10);
+ toggle_gpio(pwdn_gpio, 1);
+ msleep(100);
+ toggle_gpio(reset_gpio, 1);
+ msleep(100);
+ }
+
+ for(loop = 0; loop < 10; loop++) {
+ ret = mcu_bload_get_version(client);
+ if (ret < 0) {
+ /* Trial and Error for 1 second (100ms * 10) */
+ msleep(100);
+ continue;
+ } else {
+#ifdef AR1335_DEBUG
+ pr_info(" Get Bload Version Success\n");
+#endif
+ break;
+ }
+ }
+
+ if(loop == 10) {
+ dev_err(&client->dev, "Error getting firmware version in bootloader mode\n");
+ return -EINVAL;
+ }
+
+ if (mcu_fw_update(client, NULL) < 0) {
+ dev_err(&client->dev, "Error when trying to update the firmware\n");
+ return -EFAULT;
+ }
+
+ if (gpios_available_1335())
+ {
+ toggle_gpio(pwdn_gpio, 0);
+ }
+
+ /* Allow FW Updated MCU to reboot */
+ msleep(500);
+
+ /*
+ * Ensure the firmware has been flashed correctly by getting the version
+ * of the firmware (in firmware mode).
+ */
+ for(loop = 0; loop < 100; loop++) {
+ ret = mcu_get_fw_version(client, fw_version_1335);
+
+ if (ret == 0)
+ {
+ ret = mcu_verify_fw_version(fw_version_1335);
+ }
+
+ if (ret < 0) {
+ /* Trial and Error for 10 seconds (100ms * 100) */
+ msleep(100);
+ continue;
+ } else {
+#ifdef AR1335_DEBUG
+ pr_info(" Get FW Version Success\n");
+#endif
+ break;
+ }
+ }
+
+ if(loop == 100) {
+ dev_err(
+ &client->dev,
+ "Couldn't get firmware version correctly after update (did the update fail?\n"
+ );
+ return -EINVAL;
+ }
+ }
+
+ }
+ else
+ {
+ static const char *const flash_error_message =
+ "Please connect only one camera and fix the MCU.\n"
+ "Hint: Connected only one camera? Is someone else using the "
+ "power down/reset GPIOs?\n";
+
+ /*
+ * When we do not have the reset GPIO, we cannot toggle it
+ * to make the MCU switch to firmware mode. So, we try getting
+ * the MCU into firmware assuming it is currently in
+ * bootloader mode.
+ *
+ * The following sequence is required for switching it to
+ * firmware mode.
+ */
+ int loop, get_firmware_version = 0;
+
+ /*
+ * We would have to verify that the MCU is in bootloader mode
+ * before sending the command to make it switch to firmware mode.
+ *
+ * So, we try to get the version of the bootloader.
+ */
+ for(loop = 0; loop < 10; loop++)
+ {
+ ret = mcu_bload_get_version(client);
+ if (ret < 0)
+ {
+ /* Trial and Error for 1 second (100ms * 10) */
+ msleep(100);
+ }
+ else
+ {
+ pr_info(" Get Bload Version Success\n");
+ break;
+ }
+ }
+
+ if(loop == 10)
+ {
+ dev_err(&client->dev, "couldn't get bootloader version\n");
+
+
+ get_firmware_version = 1;
+
+ msleep(1000);
+ }
+ else
+ {
+ /*
+ * We retry if we could boot into firmware mode as we're
+ * currently in bootloader mode (as mcu_bload_get_version
+ * succeeded).
+ */
+ ret = mcu_bload_go(client);
+ if (ret < 0) {
+ dev_err(&client->dev,"couldn't switch to firmware mode.\n");
+ dev_err(&client->dev, flash_error_message);
+ return -EINVAL;
+ }
+ else {
+ msleep(10);
+ get_firmware_version = 1;
+ }
+ }
+
+ /*
+ * We should verify if we have the version of the MCU we
+ * need. If not, we let the user know about it and exit
+ * the probe.
+ */
+ if (get_firmware_version)
+ {
+ ret = mcu_get_fw_version(client, fw_version_1335);
+ if (ret == 0)
+ {
+ ret = mcu_verify_fw_version(fw_version_1335);
+ }
+ else
+ {
+ dev_err(&client->dev, "couldn't get the MCU firmware version");
+ dev_err(&client->dev, flash_error_message);
+ return -EINVAL;
+ }
+
+ if (ret != 0)
+ {
+ dev_err(&client->dev, "wrong MCU firmware version");
+ dev_err(&client->dev, flash_error_message);
+ return -EINVAL;
+ }
+ }
+ }
+
+ dev_info(&client->dev, "Current Firmware Version - (%.32s)\n", fw_version_1335);
+
+ return 0;
+}
+
+static int ar1335_parse_and_get_clocks(struct device *dev)
+{
+ int retval = 0;
+
+ if (dev == NULL)
+ {
+ dev_err(dev, "%s: Invalid device parameter\n", __func__);
+ return -EINVAL;
+ }
+
+ ar1335_data.sensor_clk = devm_clk_get(dev, "xclk");
+ if (IS_ERR(ar1335_data.sensor_clk)) {
+ /* assuming clock enabled by default */
+ ar1335_data.sensor_clk = NULL;
+ dev_err(dev, "clock-frequency missing or invalid\n");
+ return PTR_ERR(ar1335_data.sensor_clk);
+ }
+
+ /*mclk reserved for future use*/
+ retval = of_property_read_u32(dev->of_node, "mclk",
+ &(ar1335_data.mclk));
+ if (retval) {
+ dev_err(dev, "mclk missing or invalid\n");
+ return retval;
+ }
+
+ /*mclk_source reserved for future use*/
+ retval = of_property_read_u32(dev->of_node, "mclk_source",
+ (u32 *) &(ar1335_data.mclk_source));
+ if (retval) {
+ dev_err(dev, "mclk_source missing or invalid\n");
+ return retval;
+ }
+
+ retval = of_property_read_u32(dev->of_node, "csi_id",
+ &(ar1335_data.csi));
+ if (retval) {
+ dev_err(dev, "csi id missing or invalid\n");
+ return retval;
+ }
+
+ return 0;
+}
+
+static int ar1335_parse_and_get_gpios(struct device *dev)
+{
+ int err;
+ struct device_node *node = NULL;
+
+ if (dev == NULL)
+ {
+ dev_err(dev, "%s: Invalid device parameter\n", __func__);
+ return -EINVAL;
+ }
+
+ node = dev->of_node;
+
+ pwdn_gpio = of_get_named_gpio(node, "pwn-gpios", 0);
+ if (!gpio_is_valid(pwdn_gpio)) {
+ dev_err(dev, "no sensor pwdn pin available");
+ return -EINVAL;
+ }
+ else {
+#ifdef AR1335_DEBUG
+ printk("BOOT = %x \n", pwdn_gpio);
+#endif
+ }
+
+ reset_gpio = of_get_named_gpio(node, "rst-gpios", 0);
+ if (!gpio_is_valid(reset_gpio)) {
+ dev_err(dev, "no sensor reset pin available");
+ return -EINVAL;
+ }
+ else {
+#ifdef AR1335_DEBUG
+ printk("RESET = %x \n", reset_gpio);
+#endif
+ }
+
+ err = devm_gpio_request_one(dev, pwdn_gpio, GPIOF_OUT_INIT_HIGH,
+ "ar1335_mipi_pwdn");
+ if (err < 0) {
+ dev_warn(dev, "Failed to set power pin\n");
+ dev_warn(dev, "err = %d\n", err);
+ return err;
+ }
+
+ err = devm_gpio_request_one(dev, reset_gpio, GPIOF_OUT_INIT_HIGH,
+ "ar1335_mipi_reset");
+ if (err < 0) {
+ dev_warn(dev, "Failed to set reset pin\n");
+ dev_warn(dev, "err = %d\n", err);
+ return err;
+ }
+
+ return 0;
+}
+
+/*!
+ * ar1335 I2C probe function
+ *
+ * @param adapter struct i2c_adapter *
+ * @return Error code indicating success or failure
+ */
+static int ar1335_probe(struct i2c_client *client,
+ const struct i2c_device_id *id)
+{
+ struct pinctrl *pinctrl;
+ struct device_node *node = client->dev.of_node;
+ struct device *dev = &client->dev;
+
+ int ret, frm_fmt_size = 0, i;
+ uint16_t sensor_id = 0;
+
+ if (!IS_ENABLED(CONFIG_OF) || !node)
+ return -EINVAL;
+
+ pinctrl = devm_pinctrl_get_select_default(dev);
+ if (IS_ERR(pinctrl))
+ dev_warn(dev, "no pin available\n");
+
+ /* Set initial values for the sensor struct. */
+ memset(&ar1335_data, 0, sizeof(ar1335_data));
+
+ ret = ar1335_parse_and_get_gpios(dev);
+ if (ret)
+ {
+ pr_info("Warning: couldn't get GPIOs\n");
+ }
+
+ ret = ar1335_parse_and_get_clocks(dev);
+ if (ret)
+ {
+ dev_err(dev, "Error occurred when getting clock\n");
+ return ret;
+ }
+
+ clk_prepare_enable(ar1335_data.sensor_clk);
+
+ /*
+ * We usually get and set/enable regulators here. But it doesn't
+ * seem to be needed here as the Variscite EVK seems to be supplying
+ * the required voltage directly without us needing to set it.
+ */
+ toggle_gpio(reset_gpio, 1);
+ msleep(500);
+
+ ret = ar1335_verify_mcu(client);
+ if (ret)
+ {
+ dev_err(dev, "Error occurred when verifying MCU\n");
+ return ret;
+ }
+
+ ar1335_data.mipi_lane_config = 4;
+ ret = mcu_isp_configuration(CMD_ID_LANE_CONFIG, client);
+ if(ret)
+ {
+ dev_err(dev, "Error occurred in configuring mipi lanes\n");
+ return ret;
+ }
+
+ /*
+ * Query the number of controls from MCU
+ */
+ if (mcu_count_or_list_ctrls(client, NULL, &num_ctrls) < 0) {
+ dev_err(dev, "%s, Failed to get number of controls for sensor\n", __func__);
+ return -EFAULT;
+ }
+
+ /*
+ * Query the number for Formats available from MCU
+ */
+ if (mcu_count_or_list_fmts(client, NULL, &frm_fmt_size) < 0) {
+ dev_err(dev, "%s, Failed to get number of formats for sensor\n", __func__);
+ return -EFAULT;
+ }
+
+ /*
+ * Initialise the MCU related data as we're about to use them.
+ */
+ ret = mcu_data_init(dev, frm_fmt_size);
+ if (ret)
+ {
+ dev_err(dev, "%s: failed to initialize MCU related data\n", __func__);
+ return -EFAULT;
+ }
+
+ if (mcu_get_sensor_id(client, &sensor_id) < 0) {
+ dev_err(dev, "Unable to get MCU Sensor ID \n");
+ return -EFAULT;
+ }
+
+ if (mcu_isp_init(client) < 0) {
+ dev_err(dev, "Unable to INIT ISP \n");
+ return -EFAULT;
+ }
+
+ /*
+ * Enumerate the Formats in the sensor
+ */
+ if (mcu_count_or_list_fmts(client, stream_info, &frm_fmt_size) < 0) {
+ dev_err(dev, "Unable to enumerate the formats in the sensor\n");
+ return -EFAULT;
+ }
+
+ /*
+ * Fill some state information as required.
+ */
+ ar1335_data.i2c_client = client;
+
+ ar1335_data.pix.pixelformat = V4L2_PIX_FMT_UYVY;
+ ar1335_data.fmt.code = AR1335_DEFAULT_DATAFMT;
+ ar1335_data.fmt.colorspace = AR1335_DEFAULT_COLORSPACE;
+ ar1335_data.pix.width = AR1335_DEFAULT_WIDTH;
+ ar1335_data.pix.height = AR1335_DEFAULT_HEIGHT;
+ ar1335_data.streamcap.capability = V4L2_MODE_HIGHQUALITY | V4L2_CAP_TIMEPERFRAME;
+ ar1335_data.streamcap.capturemode = AR1335_DEFAULT_MODE;
+ ar1335_data.num_frm_fmts = frm_fmt_size;
+ ar1335_data.power_on = 0;
+
+ /*
+ * Configure the stream with default configuration
+ */
+ ret = ar1335_init(client);
+ if (ret)
+ {
+ dev_err(dev, "Failed to initialise the device with default configuration\n");
+ return ret;
+ }
+
+ v4l2_i2c_subdev_init(&ar1335_data.subdev, client, &ar1335_subdev_ops);
+
+ /*
+ * Initialize Controls by getting details about the controls from the MCU
+ */
+ ret = ar1335_ctrls_init(mcu_ctrl_info);
+ if (ret)
+ {
+ dev_warn(dev, "Failed to initialise the controls. Controls might not work\n");
+ }
+
+ /*
+ * Write default values for all controls
+ */
+ for (i = 0; i < num_ctrls; i++) {
+ if (mcu_ctrl_info[i].ctrl_type == CTRL_STANDARD) {
+ int ret;
+ struct v4l2_control ctrl = {
+ .id = mcu_ctrl_info[i].ctrl_id,
+ .value = mcu_ctrl_info[i].ctrl_data.std.ctrl_def
+ };
+
+ if (
+ mcu_ctrl_info[i].ctrl_id == 0x9a0926
+ )
+ {
+ /*
+ * We know that the MCU would fail when we
+ * try to write the V4L2_CID_ROI_EXPOSURE
+ * control as we are not in the correct auto
+ * exposure mode by default. So, skip it.
+ */
+ continue;
+ }
+
+ ret = ar1335_s_ctrl(&ar1335_data.subdev, &ctrl);
+ if (ret < 0)
+ {
+ dev_err(dev, "Failed to write default value for a control: %d; Control ID: %x\n", i, mcu_ctrl_info[i].ctrl_id);
+ }
+ }
+ }
+
+ ar1335_data.subdev.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
+ ar1335_data.subdev.entity.function = MEDIA_ENT_F_CAM_SENSOR;
+ ar1335_data.pads[0].flags = MEDIA_PAD_FL_SOURCE;
+
+ ret = media_entity_pads_init(&ar1335_data.subdev.entity, 1, ar1335_data.pads);
+ ar1335_data.subdev.entity.ops = &ar1335_sd_media_ops;
+ if (ret < 0) {
+ dev_err(dev, "Failed to init media entity pads\n");
+ return ret;
+ }
+
+ ret = v4l2_async_register_subdev(&ar1335_data.subdev);
+ if (ret)
+ {
+ dev_err(dev, "Failed to register the I2C subdev for the sensor\n");
+ return ret;
+ }
+
+ pr_info("AR1335 detected.\n");
+
+ return 0;
+}
+
+/*!
+ * ar1335 I2C detach function
+ *
+ * @param client struct i2c_client *
+ * @return Error code indicating success or failure
+ */
+static int ar1335_remove(struct i2c_client *client)
+{
+ v4l2_async_unregister_subdev(&ar1335_data.subdev);
+
+ clk_disable_unprepare(ar1335_data.sensor_clk);
+
+ /*
+ * Power down the MCU
+ */
+ if (reset_gpio >= 0)
+ {
+ toggle_gpio(reset_gpio, 0);
+ }
+
+ /*
+ * Free up the GPIOs
+ */
+ if (pwdn_gpio >= 0)
+ devm_gpio_free(&client->dev, pwdn_gpio);
+
+ if (reset_gpio >= 0)
+ devm_gpio_free(&client->dev, reset_gpio);
+
+ return 0;
+}
+
+static const struct i2c_device_id ar1335_id[] = {
+ {"ar1335", 0},
+ {}
+};
+
+MODULE_DEVICE_TABLE(i2c, ar1335_id);
+
+static struct i2c_driver ar1335_i2c_driver = {
+ .driver = {
+ .name = "ar1335",
+ .owner = THIS_MODULE
+ },
+ .probe = ar1335_probe,
+ .remove = ar1335_remove,
+ .id_table = ar1335_id,
+};
+
+
+module_i2c_driver(ar1335_i2c_driver);
+
+MODULE_DESCRIPTION("AR1335 V4L2 driver");
+MODULE_AUTHOR("e-con Systems");
+MODULE_LICENSE("GPL v2");
+MODULE_VERSION("1.0");
+MODULE_ALIAS("CSI");
diff --git a/drivers/media/platform/imx8/ar1335.h b/drivers/media/platform/imx8/ar1335.h
new file mode 100644
index 000000000000..d7d5dc094e0e
--- /dev/null
+++ b/drivers/media/platform/imx8/ar1335.h
@@ -0,0 +1,291 @@
+/*
+ * ar1335.h - ar1335 sensor mode tables
+ *
+ * Copyright (c) 2018-2019, e-con Systems, All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __AR1335_TABLES__
+#define __AR1335_TABLES__
+
+#define AR1335_XCLK_MIN 6000000
+#define AR1335_XCLK_MAX 24000000
+
+#define ar1335_reg struct reg_16
+#define AR1335_TABLE_WAIT_MS 0
+#define AR1335_TABLE_END 1
+#define AR1335_WAIT_MS 10
+#define AR1335_DEFAULT_MODE 0
+
+#define AR1335_DEFAULT_WIDTH 640
+#define AR1335_DEFAULT_HEIGHT 480
+
+#define AR1335_MAX_FORMAT_SUPPORTED 1
+
+#define AR1335_DEFAULT_FPS 120
+
+#define AR1335_DEFAULT_DATAFMT MEDIA_BUS_FMT_UYVY8_2X8
+#define AR1335_DEFAULT_COLORSPACE V4L2_COLORSPACE_SRGB
+
+
+////////////////////////////////////////////////////////////////////////////////////////////
+
+/* Defines related to MCU */
+
+#define CMD_SIGNATURE 0x43
+#define TX_LEN_PKT 5
+#define RX_LEN_PKT 6
+#define HEADER_FOOTER_SIZE 4
+#define CMD_STATUS_MSG_LEN 7
+
+#define VERSION_SIZE 32
+#define VERSION_FILE_OFFSET 100
+
+#define MCU_CMD_STATUS_SUCCESS 0x0000
+#define MCU_CMD_STATUS_PENDING 0xF000
+#define MCU_CMD_STATUS_ISP_PWDN 0x0FF0
+#define MCU_CMD_STATUS_ISP_UNINIT 0x0FF1
+
+#define MAX_NUM_FRATES 10
+#define MAX_CTRL_DATA_LEN 100
+#define MAX_CTRL_UI_STRING_LEN 32
+
+typedef enum _errno {
+ ERRCODE_SUCCESS = 0x00,
+ ERRCODE_BUSY = 0x01,
+ ERRCODE_INVAL = 0x02,
+ ERRCODE_PERM = 0x03,
+ ERRCODE_NODEV = 0x04,
+ ERRCODE_IO = 0x05,
+ ERRCODE_HW_SPEC = 0x06,
+ ERRCODE_AGAIN = 0x07,
+ ERRCODE_ALREADY = 0x08,
+ ERRCODE_NOTIMPL = 0x09,
+ ERRCODE_RANGE = 0x0A,
+
+ /* Reserved 0x0B - 0xFE */
+
+ ERRCODE_UNKNOWN = 0xFF,
+} RETCODE;
+
+typedef enum _cmd_id {
+ CMD_ID_VERSION = 0x00,
+ CMD_ID_GET_SENSOR_ID = 0x01,
+ CMD_ID_GET_STREAM_INFO = 0x02,
+ CMD_ID_GET_CTRL_INFO = 0x03,
+ CMD_ID_INIT_CAM = 0x04,
+ CMD_ID_GET_STATUS = 0x05,
+ CMD_ID_DE_INIT_CAM = 0x06,
+ CMD_ID_STREAM_ON = 0x07,
+ CMD_ID_STREAM_OFF = 0x08,
+ CMD_ID_STREAM_CONFIG = 0x09,
+ CMD_ID_GET_CTRL_UI_INFO = 0x0A,
+
+ /* Reserved 0x0B to 0x0F */
+
+ CMD_ID_GET_CTRL = 0x10,
+ CMD_ID_SET_CTRL = 0x11,
+
+ /* Reserved 0x12, 0x13 */
+
+ CMD_ID_FW_UPDT = 0x14,
+ CMD_ID_ISP_PDOWN = 0x15,
+ CMD_ID_ISP_PUP = 0x16,
+
+ /* Reserved - 0x17 to 0xFE (except 0x43) */
+ CMD_ID_LANE_CONFIG = 0x17,
+ CMD_ID_MIPI_CLK_CONFIG = 0x18,
+
+ CMD_ID_UNKNOWN = 0xFF,
+
+} HOST_CMD_ID;
+
+enum {
+ FRAME_RATE_DISCRETE = 0x01,
+ FRAME_RATE_CONTINOUS = 0x02,
+};
+
+enum {
+ CTRL_STANDARD = 0x01,
+ CTRL_EXTENDED = 0x02,
+};
+
+enum {
+/* 0x01 - Integer (32bit)
+ 0x02 - Long Int (64 bit)
+ 0x03 - String
+ 0x04 - Pointer to a 1-Byte Array
+ 0x05 - Pointer to a 2-Byte Array
+ 0x06 - Pointer to a 4-Byte Array
+ 0x07 - Pointer to Generic Data (custom Array)
+*/
+
+ EXT_CTRL_TYPE_INTEGER = 0x01,
+ EXT_CTRL_TYPE_LONG = 0x02,
+ EXT_CTRL_TYPE_STRING = 0x03,
+ EXT_CTRL_TYPE_PTR8 = 0x04,
+ EXT_CTRL_TYPE_PTR16 = 0x05,
+ EXT_CTRL_TYPE_PTR32 = 0x06,
+ EXT_CTRL_TYPE_VOID = 0x07,
+};
+
+/* Stream and Control Info Struct */
+typedef struct _isp_stream_info {
+ uint32_t fmt_fourcc;
+ uint16_t width;
+ uint16_t height;
+ uint8_t frame_rate_type;
+ union {
+ struct {
+ uint16_t frame_rate_num;
+ uint16_t frame_rate_denom;
+ } disc;
+ struct {
+ uint16_t frame_rate_min_num;
+ uint16_t frame_rate_min_denom;
+ uint16_t frame_rate_max_num;
+ uint16_t frame_rate_max_denom;
+ uint16_t frame_rate_step_num;
+ uint16_t frame_rate_step_denom;
+ } cont;
+ } frame_rate;
+} ISP_STREAM_INFO;
+
+
+typedef struct _isp_ctrl_ui_info {
+ struct {
+ char ctrl_name[MAX_CTRL_UI_STRING_LEN];
+ uint8_t ctrl_ui_type;
+ uint8_t ctrl_ui_flags;
+ } ctrl_ui_info;
+
+ /* This Struct is valid only if ctrl_ui_type = 0x03 */
+ struct {
+ uint8_t num_menu_elem;
+ char **menu;
+ } ctrl_menu_info;
+} ISP_CTRL_UI_INFO;
+
+typedef struct _isp_ctrl_info_std {
+ uint32_t ctrl_id;
+ uint8_t ctrl_type;
+ uint8_t mcu_ctrl_index;
+ union {
+ struct {
+ int32_t ctrl_min;
+ int32_t ctrl_max;
+ int32_t ctrl_def;
+ int32_t ctrl_step;
+ } std;
+ struct {
+ uint8_t val_type;
+ uint32_t val_length;
+ // This size may vary according to ctrl types
+ uint8_t val_data[MAX_CTRL_DATA_LEN];
+ } ext;
+ } ctrl_data;
+ ISP_CTRL_UI_INFO ctrl_ui_data;
+} ISP_CTRL_INFO;
+
+struct ar1335 {
+ int numctrls;
+ struct v4l2_subdev subdev;
+ struct i2c_client *i2c_client;
+ uint16_t frate_index;
+ struct media_pad pads[1];
+
+ u32 mclk;
+ u8 mclk_source;
+ struct clk *sensor_clk;
+
+ int csi;
+
+ /*
+ * Format related data
+ */
+ struct v4l2_pix_format pix;
+
+ struct ar1335_datafmt {
+ u32 code;
+ enum v4l2_colorspace colorspace;
+ } fmt;
+
+ struct v4l2_captureparm streamcap;
+
+ bool on;
+
+ int num_frm_fmts;
+
+ /*
+ * Array of Camera framesizes
+ *
+ * Moved from global
+ */
+ struct mcu_frmfmt {
+ struct v4l2_frmsize_discrete size;
+ unsigned int * framerates;
+ int num_framerates;
+ int mode;
+ } *mcu_cam_frmfmt;
+
+ int power_on;
+
+ uint16_t mipi_lane_config;
+ uint16_t mipi_clk_config;
+
+ struct v4l2_ctrl *ctrls[];
+
+};
+
+static ISP_STREAM_INFO *stream_info = NULL;
+static ISP_CTRL_INFO *mcu_ctrl_info = NULL;
+
+/* Total formats */
+static int num_ctrls = 0;
+static int *streamdb;
+static uint32_t *ctrldb;
+
+/* Mutex for I2C lock */
+DEFINE_MUTEX(mcu_i2c_mutex_1335);
+
+static int ar1335_read(struct i2c_client *client, u8 * val, u32 count);
+static int ar1335_write(struct i2c_client *client, u8 * val, u32 count);
+static int ar1335_s_parm(struct v4l2_subdev *sd, struct v4l2_streamparm *param);
+static int ar1335_s_power(struct v4l2_subdev *sd, int on);
+
+/*
+ * MCU related functions
+ */
+static int mcu_get_fw_version(struct i2c_client *client, unsigned char * fw_version);
+static int mcu_verify_fw_version(const unsigned char *const fw_version);
+static int mcu_count_or_list_fmts(struct i2c_client *client, ISP_STREAM_INFO *stream_info, int *frm_fmt_size);
+static int mcu_count_or_list_ctrls(struct i2c_client *client,
+ ISP_CTRL_INFO * mcu_ctrl_info, int *numctrls);
+static int mcu_get_sensor_id(struct i2c_client *client, uint16_t * sensor_id);
+static int mcu_get_cmd_status(struct i2c_client *client, uint8_t * cmd_id,
+ uint16_t * cmd_status, uint8_t * ret_code);
+static int mcu_isp_init(struct i2c_client *client);
+static int mcu_stream_config(struct i2c_client *client, uint32_t format,
+ int mode, int frate_index);
+static int mcu_set_ctrl(struct i2c_client *client, uint32_t ctrl_id,
+ uint8_t ctrl_type, int32_t curr_val);
+static int mcu_get_ctrl(struct i2c_client *client, uint32_t ctrl_id,
+ uint8_t * ctrl_type, int32_t * curr_val);
+static int mcu_get_ctrl_ui(struct i2c_client *client,
+ ISP_CTRL_INFO * mcu_ui_info, int index);
+static int mcu_fw_update(struct i2c_client *client, unsigned char *txt_fw_version);
+static int mcu_isp_power_down(struct i2c_client *client);
+static int mcu_isp_power_wakeup(struct i2c_client *client);
+
+#endif /* __AR1335_TABLES__ */
diff --git a/drivers/media/platform/imx8/ecam131_mcu_fw.txt b/drivers/media/platform/imx8/ecam131_mcu_fw.txt
new file mode 100644
index 000000000000..ef3fee7ab348
--- /dev/null
+++ b/drivers/media/platform/imx8/ecam131_mcu_fw.txt
@@ -0,0 +1,2129 @@
+":020000040800F2\n"
+":40040000D83100204D050008D9400008CF290008000000000000000000000000000000000000000000000000000000001744000800000000000000000B05000889450008C7\n"
+":40044000A94C00085F0500085F050008410900085F0500085F0500085F050008FD080008000000005F0500085F0500085F0500085F0500085F0500085F05000879460008B5\n"
+":40048000894600085F0500085F050008000000005F050008F52900085F050008D12900085F050008554300085F0500085F050008994C00085F050008000000000000000050\n"
+":4004C0000348854600F0FAF800480047C1720008D8310020084B19680868203080F30988022080F31488BFF36F8F3FBCAE4608BC04BC62B6184700000C000020EFF3108010\n"
+":4005000072B6704780F310887047EFF309800E4B1A6820381060F0C044464D4656465F46F0C008B572B607F00FFF62B60CBC116808681030F0C8A046A946B246BB4680F362\n"
+":4005400009882038F0C818470C0000200448804704480047FEE7FEE7FEE7FEE7FEE7FEE725460008C104000830B50B46014600202022012409E00D46D5409D4205D31D469C\n"
+":400580009540491B2546954040191546521E002DF1DC30BD70B500242546002801DA01244042002901DA01254942FFF7DDFFAC4200D04042002C00D0494270BDF0B51FB466\n"
+":4005C0000646002082B005464024019100901BE0019922460F46304600F05EF8049A059B801A994110D310461946224600F044F8361A8F410197224601200021009F00F0AF\n"
+":400600003BF838184D4100902046641E0028DFDC019B00982946324607B0F0BD03460B439B0703D009E008C9121F08C0042AFAD203E00B780370401C491C521EF9D270478A\n"
+":40064000D2B201E00270401C491EFBD270470022F6E710B513460A4604461946FFF7F0FF204610BD0321001D401E037812021A43491EF9D51046704710B5202A04DB01462C\n"
+":40068000203A9140002010BD914020239C1A0346E3401943904010BD10B5202A04DB0846203AD040002110BD0B46D340D0402024A21A91400843194610BD0000064C01252B\n"
+":4006C000064E05E0E36807CC2B430C3C98471034B442F7D3FFF7F8FE6C1202088C12020810B5364CE069000267D4A069C007FCD16368334A334934A004F0DEFA6068C00791\n"
+":4007000004D03C48E0603C48E06005E02C4A2D49921D3AA004F0D0FA6368294A29490A3241A004F0C9FAA069C007FCD16368244A2449143224A004F0BFFA6068C00704D064\n"
+":40074000292252011F4944A00BE06068400704D54A4860614A48606105E0194A19491C3248A004F0A9FA6368154A164922322EA004F0A2FA4E49042003F0E0FC104A114926\n"
+":4007800026324CA004F098FAE2690120C005E16902434DA004F090FA094A0A49283245A004F08AFA60680121890408436060044A04492C323FA004F07FFA10BD00200240F1\n"
+":4007C00001050000638C0008202D2D2D2025732825642920464C4153482D3E50454352203D2030782530387820202D2D2D200A0D00000000EFCDAB8905040302202D2D2DD3\n"
+":40080000202573282564292050454B45595220556E6C6F636B656420416C7265616479202D2D2D200A0D0000202D2D2D20257328256429204E6F772C20464C4153482D3E6F\n"
+":4008400050454352203D20307825303878202D2D2D200A0D00000000202D2D2D202573282564292050454C4F434B204C6F636B6564202D2D2D200A0D00000000C8D9EAFB59\n"
+":4008800027262524202D2D2D20257328256429204F50544C4F434B20416C726561647920556E6C6F636B6564202D2D2D200A0D00F0800000202D2D2D20257328256429204F\n"
+":4008C0002D2D2D200A0D00002056616C20416674657220556E6C6F636B204F7074696F6E204279746573202E2E2E2030782530387820307825303878200A0D0010B5012038\n"
+":40090000800200F0FBF910BD04A004F0D5F97D24E400204606F088FDFBE7000020556E7265636F76657261626C65204572726F72204F636375726564202121200A0D0000C1\n"
+":4009400010B500F02DF910BD10B5084900224A6107494B684C1523434B604B68082423434B60C009C001026010BD0000A40000200020024010B5214A00219069C30520482E\n"
+":4009800004D54169022319434161911593699B0505D543690124234343616302194393695B0505D54369082423434361E301194393691B0505D54369042423434361630248\n"
+":4009C000194393699B0405D543691024234343616302194393699B0304D5446920231C43446119439369DB0305D54369402423434361A0020143916110BD000000200240E3\n"
+":400A0000A400002008B517A004F056F900F042F91C48416842151143416041680822114341600021130619608169C907FCD18169890714D50221816141684122D20091439B\n"
+":400A4000416018680090104A104911A004F034F91EA004F031F900F011F903F061FBFFF753FF000020466C6173682045726173652042414E4B312053746172742021212098\n"
+":400A80000A0D000000200240BB040000448C0008202D2D2D20204166746572202573282564292041742041646472657373203078253038782056616C7565203D20307825CC\n"
+":400AC000303878202D2D2D200A0D000020466C6173682045726173652042414E4B312053756363657373202121200A0D0000000070B50024024620325179022903D004214B\n"
+":400B0000C16301243CE001680B680E25AB430B6001680B685B085B000B601A4B0168994201D1012121E0174B1433994201D110211BE0144B2833994201D1891515E0114B6D\n"
+":400B40003C33994201D189140FE00E4B5033994202D10121090408E00A4B6433994202D10121090501E001210906064B083B59600121517100211171816B002900D08847C8\n"
+":400B8000204670BD0800024031B500F095F9044600F092F90099001B8842F9D338BD7047F8B5344CA0690026C005334D002811DBA06980050ED4A06940050BD4A0690005D9\n"
+":400BC00008D4A069800405D4A069800302D4A069C00309D5287801282BD0AF68FFF7CAFE384600F055F82E70A069800712D50220A061287800280DD0287801281ED06068F7\n"
+":400C0000082188436060A868FFF7C9FF0020C043A8602E70287800280AD160684121C90088436060606803210904884360602E74F8BDEF680020C043E860CFE76868401EC7\n"
+":400C40006860686800280DD0E868FFF7A8FFE8688030E86061680122520291436160FFF773FED7E70020C043E8602E70FFF797FFD0E7000000200240A40000200348416842\n"
+":400C800002221143416000207047000000200240704700000948416889070CD54168C90703D00749C1600749C160074901610749016100207047012070470000002002401D\n"
+":400CC000EFCDAB8905040302BFAE9D8C1615141310B501218902884204D1034A034904A003F0EAFF10BD0000270400002D8C00082025732028256429200A0D0010B5044930\n"
+":400D00004A69024202D04861FFF7E2FF10BD000000040140F8B500230124A7E027469F403A4070D04D68022D01D0122D14D1DD08AD002D1800952D6A5E07AC46F50E0F266B\n"
+":400D4000AE46AE406546B543AC460E697546AE4065462E43009D2E624D68012D05D0022D03D0112D01D0122D16D185680326AC465D00AE46AE406546B543AC46CE687546D7\n"
+":400D8000AE4065462E43866046680D79BE43ED06ED0F9D403543456006685F000325BD40AE46AE430D79B446AE07B60FBE4065462E430660C6687546AE438D68BD40354390\n"
+":400DC000C5604D68ED0050D52B4D6E6B26436E639E082A4DB6007519AC46AD689E07360F0F27B740BD4305273F07B84201D100271AE0234FB84201D1012715E0214FB842D9\n"
+":400E000002D1022710E030E01F4FB84201D103270AE01E4FB84201D1042705E01C4FB84201D1052700E00627B7402F436546AF60184D2E684F689643FF0300D516432E6043\n"
+":400E40006E684F689643BF0300D516436E60AE684F689643FF0200D51643AE60EE684F689643BF0200D51643EE605B1C0A681546DD4000D052E7F8BD001002400000014096\n"
+":400E80000004005000080050000C005000100050001C0050000401400069084000D00120704742694A4042617047002A01D08161704781627047000001480068704700009B\n"
+":400EC0000400002070B5024640325378202B1CD11378012B19D00123137024245470046825689D432560046825681E03B5432560046825680D432560006801681943016048\n"
+":400F0000202050700020107070BD022070BD70B5024640325378202B1BD11378012B18D0012414702423537003681D68A5431D6005682B680F263602B343090219432960BA\n"
+":400F40000068016821430160202050700020107070BD022070BD000010B5034A034904A003F0AAFE10BD000021040000138C00082025732028256429200A0D0010B5034A8E\n"
+":400F8000034904A003F098FE10BD00000D040000AF8B00082025732028256429200A0D0070B503689A691968D40507D50C0605D5446C01252C4344642C02DC61530508D56D\n"
+":400FC0000B0606D5436C082423434364E3010468E361920508D5090606D5416C02221143416411020268D161416C0B22114202D0416C01F0D5FD70BD026891691268436B8A\n"
+":40100000002B00D01847704770B5054600681449144C884213D1284600F054F80346124A124913A003F048FE6078042803D0A07860700420A07003F057F900206864184943\n"
+":40104000286888420BD1284600F03CF8064A03460F32064913A003F02FFE0320207070BD0054004060000020F6030000998B000820257328256429202D2048414C5F4932E5\n"
+":40108000435F4572726F7243616C6C6261636B20202D20307825303878200A0D0000000000780040202573202825642920457272436F6465203D20307825303878200A0D77\n"
+":4010C00000000000406C704770B5040006D02546403568780026002802D005E0012070BD2E70204600F06EF924206870206801684908490001600F216068090688432168BD\n"
+":40110000086121688A680120C00382438A60E1680129A16808D021229202114322689160E168022902D005E00143F7E701212268C902516021684A680F4B1A434A602168A4\n"
+":40114000CA688243CA60616920690843A169090208432168C860216AE069084321680860206801680122114301606664202068702663AE70002070BD0080000210B5034A5C\n"
+":40118000034904A003F098FD10BD000012040000C48B00082025732028256429200A0D0000680649884205D105480178092902D00321017070470B21FBE700000078004061\n"
+":4011C0009000002000680649884205D105480178052902D00321017070470721FBE700000078004090000020F8B50546044640356878202830D120688069C04300042BD50C\n"
+":401200002878012828D001202870222068701020A87000266664626263851048E06210486063608DFF2804D9FF20012320851B0603E0608D012320855B0609208002009052\n"
+":40124000208DC2B2204602F043F82E700221204601F026FC0020F8BD0220F8BD0000FFFF21300008FFB5054604464035687881B020287ED1287801287BD001202870FFF754\n"
+":401280001BFE0746012200901923D103204602F031F800283FD1212068701020A8700026666403986062049860856663618D01204003FF2903D9FF222285009034E0618DA4\n"
+":4012C0002185009036E02046029902F001F836E002F05BF8002803D0606C042847D01AE0606A411C6162017820688162608D401E6085208D401E0004000C20851FD1608DBC\n"
+":4013000000281CD000970022802120460A9B01F0F1FF002802D0032005B0F0BD608DFF2805D9FF222285009601231B06CBE7608D20850096208D0123C2B25B06C3E7608D28\n"
+":401340000A9900283A462046C2D101F0F7FF0028C2D121682020C86121684A68064B1A404A606870AE702E700020D5E701E00120D2E70220D0E7000000E800FE10B5034A09\n"
+":40138000034904A003F098FC10BD00001C040000F98B00082025732028256429200A0D0010B5034A034904A003F086FC10BD000017040000DF8B00082025732028256429D1\n"
+":4013C000200A0D00F0B5234A0168122403200125214E85B0914215D1C02100910021029103900194049569461C48FFF793FCB06B69050843B06300220321172000F058F93B\n"
+":40140000172022E0164A914221D189156A4632C20320072781C2052069460007FFF77AFC1020694631C103200390694604970B48FFF770FCB06B012189070843B06300225E\n"
+":401440000321152000F034F9152000F027F905B0F0BD00000054004000100240000400500078004038B500680D49884213D10D4CA3780A2B10D0A08900900B4A0B490C48C5\n"
+":4014800003F01AFC6078042803D0A07860700420A07002F029FF38BD63700C20A07038BD0054004060000020D30300007D8B0008F00F020838B500680E49884214D10E4C65\n"
+":4014C000A378062B11D0A089ED22009092000B490B4803F0F1FB6078042803D0A07860700420A07002F000FF38BD63700820A07038BD00000054004060000020618B0008FE\n"
+":4015000058100208F8B5034640335C78202C1ED11C78012C1BD001241C7022245C7020249C700024446405686E680127FF03BE436E6041624285418D01850649C16206497B\n"
+":4015400041631C701F2101F0ABFA0020F8BD0220F8BD00000000FFFFB1310008F8B5034640335C78202C1ED11C78012C1BD001241C7021245C7020249C7000244464056862\n"
+":401580006E680127FF03BE436E6041624285418D01850649C162064941631C70172101F07FFA0020F8BD0220F8BD00000000FFFFB131000802480168491C01607047000047\n"
+":4015C0000400002010B506480168402211430160002000F007F800F03DF8002010BD00000020024000B5014687B00022102000F05FF8102000F052F81148816B02221143BE\n"
+":40160000816305A9684600F071FA00F095FA0D49FEF7AAFF0D490C4A0A600D4A401ECA604860002008618860084600F093FE002802D0012007B000BD044800F0A6FEF9E770\n"
+":401640000010024040420F0000040040D8180020E703000010B51048416B012211434163816B02041143816300221146501F00F01FF803210022481F00F01AF80321002257\n"
+":40168000081F00F015F803210022084600F010F8032000F003F810BD00100240C106C90E01208840014908607047000000E100E010B502F013FD10BDF8B54E490746012551\n"
+":4016C0000020ED034A4B4B4A4031082F7BD00EDC012F48D0022F60D0042F22D1CC680326B602344065D07F02BC424ED064E0102F77D00126032436042404202F09D0FF3FC9\n"
+":40170000012F0ED1C968214053D07400A1423CD06BE00B6909692140B14203D199052EE02846F8BD01256D04A94203D19907F8D53148F8BDA142FCD111688903F9D511686D\n"
+":4017400003200005014001200005091A09D0091A05D0814201D12948F8BD2948F8BD2948F8BD2948F8BDCC68A407A40F0AD0022C0BD0012C0ED0032CF4D10969890500291C\n"
+":40178000CEDBF8BD00F0E8F9F8BD11684907FBD51846F8BD00F0F0F9F8BDCC680C26344007D0082CF1D0042CF4D00C2CE5D0F8BD09E000F0C1F9FAE7012292029442E9D015\n"
+":4017C000B442DAD0F3E7C968032424032140F0D001256D036C10A942D7D0A142DAD0E6E7FFE7916B4902E4D4E1E7B142D2D0DEE70024F400001002408890000020A1070080\n"
+":4018000000093D0040420F0080841E00F8B504460078594D800672D5574E0027403EB06BC00004D4B06BA9050843B063012753480168C90511D40168821511430160FFF71F\n"
+":401840003BFB009005E0FFF737FB0099401A642837D84A480068C005F5D532680321090560680A400140914208D08103890F032904D13168890301D50120F8BD2A6903210F\n"
+":4018800009040A4022D0084090421FD0207880061CD528692A6988430121C9040A432A612A698A432A612861C0050FD5FFF704FB009008E0FFF700FB0099411A3048814267\n"
+":4018C00001D90320F8BD28698005F3D561688803800F032805D132680005824301400A4332602869032261681204114008432861002F04D0B16B012000078143B16320787F\n"
+":40190000C00705D0E868A168800880000843E8602078800705D5E8680C218843E1680843E8602078400706D5E86803218902884321690843E8602078000706D5E86803216B\n"
+":401940000903884361690843E8602088C00506D5E868032109048843A1690843E8602078000606D5E868032189048843E1690843E8600020F8BD00004010024000700040C9\n"
+":4019800088130000F8B5054653480E460068C007C00FB0420AD25048016849084900314301600068C007C00FB0426FD128784B4C800705D5E068F0218843A9680843E060E1\n"
+":4019C0002878C00752D06868022817D0032818D02168012818D08905002957DAE168890889000143E160FFF767FA69680746022912D003291CD0012926D033E0216889031E\n"
+":401A0000EAE721688901E7E74907E5E7FFF754FAC11B3348814223D8E0680007800F0228F4D123E0FFF748FAC11B2D48814217D8E0680007800F0328F4D117E0FFF73CFA83\n"
+":401A4000C11B274881420BD8E0680007800F0128F4D10BE0FFF730FAC11B2148814201D90320F8BDE0680007800FF3D11A480168C907C90FB1420BD9016849084900314381\n"
+":401A800001600068C007C00FB04201D00120F8BD2878400706D5E068072109028843E9680843E0602878000707D5E0680721C90288432969C9000843E06000F05DF8E1684D\n"
+":401AC000084A0906090F515CC840074908600020FFF788FD0020F8BD002002400010024088130000FC8A00080000002010B50F2202600C4AD3689B079B0F4360D368F0246C\n"
+":401B000023408360D46807231B021C40C460D268D2081A40026104480068C007C00F086010BD00000010024000200240014800687047000000000020044805490068C9689D\n"
+":401B4000044A4905490F515CC84070470000002000100240158B0008044805490068C968044A8904490F515CC84070470000002000100240158B000810B5184AD1680C2073\n"
+":401B8000084004280BD0082810D00C2810D050680004410F0120C003491C884010BD1068C00601D50E4810BD0E4810BD0E4810BD88020E4B000F185C0902D368890F491CA2\n"
+":401BC000DB0301D5084A05E01268D20601D5044A00E0044A5043FEF7C7FC10BD0010024000093D000024F40000127A000C8B0008F8B504460078F24DC0074AD0E86800077D\n"
+":401C0000800F022807D0E8680007800F032809D1E868C00306D5286880033AD56068002873D036E0012062680004824203D129680143296011E0052301211B0489049A4228\n"
+":401C40002A6802D10A432A60F1E782432A602A6802400092286888432860606800280CD0FFF72AF9064604E0FFF726F9801B64287ED828688003F7D50BE0FFF71DF90646EF\n"
+":401C800004E0FFF719F9801B6428F1D828688003F7D42078800741D5E8681F270007800F3F02012807D0E8680007800F032809D1E868C00306D42868400717D5E0680128BC\n"
+":401CC00023D113E0E068002817D029680922914301432960FFF7F0F8064604E0FFF7ECF8801B0228C4D828684007F7D568682169B84309020843686010E0286840084000E2\n"
+":401D00002860FFF7D9F8064605E090E0FFF7D4F8801B0228ACD828684007F7D42078C00676D5E868A74E0007800F0BD0A06900285DD02868FF21013108432860FFF7BCF8EA\n"
+":401D4000074644E02868800502D5A06900286ED0206A69683140884212D902F08DFA0028AED16868216AB04308436860686800E0BBE00002217F000A0906084368600FE08D\n"
+":401D80006968B143014369606868217F0002000A090608436860206A02F06EFA00288FD1206A410B0120C003491C8840E96809060A0F8549895CC840844908600020FFF7E1\n"
+":401DC00011FC25E0FFF778F8C01B02288AD828688005F7D56868216AB043084368606868217F0002000A09060843686010E02968FF20013081432960FFF75EF8064604E08A\n"
+":401E0000FFF75AF8801B02286FD828688005F7D420786F4E000723D560690028306910D0012108433061FFF747F8074605E0C5E0FFF742F8C01B022857D830698007F7D556\n"
+":401E40000EE0400840003061FFF736F8074604E0FFF732F8C01B022847D830698007F7D42078400762D5A86B0027C00005D4A86B012109070843A863012756480168C90556\n"
+":401E800011D40168821511430160FFF715F8009005E0FFF711F80099401A642825D84D480068C005F5D5FF20A2680130824203D131690143316111E001218902002A07D008\n"
+":401EC00005231B029A4203D132690A433261EFE7326982433261306988433061A06800280FD0FEF7E9FF009007E060E0FEF7E4FF0099411A3848814259D830698005F5D5E9\n"
+":401F00000DE0FEF7D9FF009006E0FEF7D5FF0099411A314881424AD830698005F5D4002F04D0A96B012000078143A963606A002842D0E9680907890F03293FD001263606C5\n"
+":401F40000228286805D0B0432860FEF7B5FF04462FE0B0432860FEF7AFFF074604E0FEF7ABFFC01B022822D828688001F7D4E16AA06AEA680843216BFD231B049A4311439E\n"
+":401F80000843E860286830432860FEF795FF044604E0FEF791FF001B022808D828688001F7D509E0FEF788FF001B022801D90320F8BD28688001F5D40020F8BD0120F8BDE4\n"
+":401FC0000010024000E00000FC8A000800000020401002400070004088130000704738B501684A68D243520609D48A68D243D20705D18A68D243520601D5816C08E04A68A9\n"
+":40200000D243120606D48A68D243920702D4C16C884738BD4A68D2439206FAD48A68D243D20606D4426D02231A4342651022D2438A6001688A680123D2439206002A08DB0A\n"
+":40204000426D1A4342658A6800920A684024A2430A6001688A68D243540602464032002C09DB547C122C06D0446D04252C434465CC688C6800948C68E443E40505D4446D50\n"
+":4020800008252C4344658C680094446D002CC0D04C68E025AC434C605374FFF79FFF38BD70B5040006D025464035687C0026002802D005E0012070BD2E74204600F032F80A\n"
+":4020C0000220687420680168402291430160A168606822690843E16811430843616901220843A169520211400843E1690843216A0843A16A084321680860A0690421000CAD\n"
+":402100000840616A0843216848602168E06A08612068C16992009143C161666501206874002070BD00B50068104985B088421AD10F48416B821411434163A0200090022022\n"
+":40214000019000210320039002910491052069460007FEF7DFFD002203211920FFF7A8FA1920FFF79BFA05B000BD00000030014000100240FFB5054604464035687C81B040\n"
+":40218000012872D100293CD0002A3AD0287C01286BD00120287412206874002666652163A286E286E664A664A663A687E6870127A06A7F03B84207D120680168B9430160A7\n"
+":4021C00020680168394301600121A068C903884205D120680168012292031143016020680168490603D40168402211430160E0680028606808D0002820D0E08E01281DD0DA\n"
+":4022000026E0012005B0F0BD002802D0E08E012808D1206B411C216321680078C860E08E401EE086E08E002820D0002202212046049B02F097F8002815D1EAE7206B2168A0\n"
+":402240000088C860206B801C2063E08E401EE086E08E00280AD0002202212046049B02F081F80028EAD00320CCE729E0A06AB84205D1216808680122120310430860002204\n"
+":4022800002212046049B02F06DF82027002807D1012280212046049B02F064F8002803D0606D38436065DEE7A068002803D12068C16880680090012068742E740020A1E700\n"
+":4022C00002209FE7042204490428086902D09043086170471043FBE700E000E0094910B5401E884201D9012010BD074C60610321081F01F0F3FE0020A0610720206100203B\n"
+":4023000010BD0000FFFFFF0000E000E070B502462032137D012B1BD00123137502245475046865687026B5436560046865680E68354365600468A5688026B543A560006816\n"
+":40234000846849680C43846053750020107570BD022070BD70B5040005D025462035687D002802D006E0012070BD00202875204600F00AF802206875211D206802F08CF982\n"
+":4023800001206875002070BD70470268D36801210B43D360006802680A43026000207047704770B50446006801690025C9438907002915DBC168C943890711D4E91E016196\n"
+":4023C00001202075206880698007204602D0FFF7E7FF04E000F08EF8204600F025F9257520680169C943490717D4C168C943490713D40421C9430161022020752068806953\n"
+":402400008005800F204602D0FFF7CAFF04E000F071F8204600F008F9257520680169C943090716D4C168C943090712D40821C9430161042020752068C0698007204602D080\n"
+":40244000FFF7AEFF04E000F055F8204600F0ECF8257520680169C943C90617D4C168C943C90613D41021C9430161082020752068C0698005800F204602D0FFF791FF04E05E\n"
+":4024800000F038F8204600F0CFF8257520680169C943C90708D1C168C943C90704D1891E0161204600F0C2F820680169C943490609D4C168C943490605D44021C943016155\n"
+":4024C000204600F0BDF870BD00B500680121890785B088420CD101200090002002210290039001910491052069460007FEF712FC05B000BD7047F8B5064604462036307D6C\n"
+":402500000D4601280DD001203075022070750427002A08D0042A16D0082A2AD00C2A4DD137E00220F8BD206802F0E6F82068816908221143816120688169B94381612068C4\n"
+":402540008169EA6812E0206802F0EEF8206882690121C9020A43826120688169012292029143816120688169EA6812021143816124E0206802F0F1F82068C26908210A43C0\n"
+":40258000C2612068C169B943C1612068C169EA6812E0206802F0FCF82068C1690122D2021143C1612068C269012189028A43C2612068C169EA6812021143C16101207075C1\n"
+":4025C00000203075F8BD70B5040005D025462035687D002802D006E0012070BD00202875204600F00BF802206875211D206802F053F801206875002070BD000010B5006800\n"
+":402600000121890788420CD10648816B012211438163002203210F20FFF74AF80F20FFF73DF810BD001002407047000010B500680249884201D1FEF7BDFF10BD00040040F9\n"
+":402640007047704770470000F8B502680446D06911680607360F07D1830605D58B0603D5204602F05EF9F8BD95682023002E65D0EE07F60FFF2721370F4037435ED0C707E8\n"
+":4026800006D0CF0504D501271762E26E3A43E266820708D5EA0706D0276802223A62E26E04273A43E266420708D5EA0706D0256804222A62E26E02252A43E266020709D5E6\n"
+":4026C0000A461A40324305D0236808221A62E36E1343E366E26E002AC5D0800604D5880602D5204602F01DF9E06E000703D42068806840061CD5204602F004F920688168EB\n"
+":40270000490611D5826840218A438260606E00280AD01D498163606EFEF7EAF90028A2D0606E816B8847F8BD2046FFF78BFFF8BD2046FFF787FF0020E066F8BD2646C70205\n"
+":402740006036002F0ADA6D0208D50120000510627372B3722046FFF774FFF8BD050605D50D0603D5204602F033FAF8BD4006FCD54806FAD52046146840218C431460737295\n"
+":4027800000F0D3F8F8BD0000F148000870B5040005D025466035687A002802D006E0012070BD00202872204600F026F82420687220680168490849000160606A002802D05E\n"
+":4027C000204602F000F8204602F0EAF80128E7D0206841680922D20291434160206881682A229143816020680168012211430160204602F04DF870BD00B50068164987B012\n"
+":40280000884227D11548C26A01210A43C262C26A0A400592C26A0A43C262C26A0A400592826B4B041A4382630C20009002200190032003900420049002910520694600073A\n"
+":40284000FEF768FA002203211C20FEF731FF1C20FEF724FF07B000BD00440040001002407047FFB5064604466036707A83B00D46202858D1002D0CD00598002809D001207C\n"
+":40288000A1680003814207D12069002804D1E80702D0012007B0F0BD307A012843D0012030720020E06621207072FEF705FB019027464037059838820598788218E0788A21\n"
+":4028C000401E788206980090002280212046019B02F0B1F9002818D10120A1680003814202D12069002812D02168287888626D1C788A0028E3D106980090002240212046F9\n"
+":40290000019B02F098F9002808D00320C2E728882168C005C00D8862AD1CE9E72020707200203072B6E70220B4E7704710B5064CE178002901D000F045F8E078401EE070CC\n"
+":4029400001F0D2FC10BD00006000002010B501684A68D243920507D48A68D243D20703D1921E8A60FFF7E2FF10BD10B504000FD000F010F8E0688021084321680860616864\n"
+":4029800020690843A168084321684860002010BD012010BD10B50068084988420CD10848816BC21411438163002203211046FEF77FFE0020FEF772FE10BD0000002C0040A8\n"
+":4029C00000100240C1680068016000207047FEE710B5074800688069172109020842044802D0FEF7DDFA10BDFEF706FB10BD0000AC0D002010B50648006880694005400F9A\n"
+":402A0000034802D0FEF7CCFA10BDFEF7F5FA10BDF80D002010B5806A01684A680123DB031A434A60826B00219163C26B9163014640314A78602A02D0FEF7E6FA10BD20226B\n"
+":402A40004A70FEF789FA10BDF0B503460022CE0740332824B025002E05D05E7842222746B74300D0F2228E0705D544265B7832439C4300D02A434B0701D5B8231A43112385\n"
+":402A80008B4301D190231A4312238B4301D160210A4300680168914301600020F0BD000070B5164D1223446B002220268B43AC4202D0134DAC420DD14C0700D5B82211242B\n"
+":402AC0008C4301D190210A43002B11D1324340210A430DE04C0700D5B822CC0701D0F2242243890701D5F4210A43002B00D132430068016811430160002070BD5D2F000859\n"
+":402B00004931000801688A69D243920701D400228A6200688169C943C90703D081690122114381617047F8B5054604464035687828218143206804D00821C1610020287028\n"
+":402B4000F8BD8169C903CF0F8169FE230E0C81681E408A05C168920D19408C46E168022912D10621D3090E400B409E420BD1A16C491CA164A16C0229E2D10021A1640823BC\n"
+":402B8000C361297007E0664604212046FFF75CFF00202870324639462046FEF7EFF9F8BDF8B50026054640350446AE702C48E0626685606C0843606468782027282823D061\n"
+":402BC0006878292820D068782A281DD007212046FFF73AFF6878602800D06F7026636663206801684A041F49026817D501239B039A430260A06B81632E70A06BFDF778FF6E\n"
+":402C000000281DD0A06B19E003212046FFF71CFF28206870266314486063E1E7120410D502680123DB039A430260E06B81632E70E06BFDF75DFF002802D0E06B816B884742\n"
+":402C4000F8BD6878602804D02E702046FEF7DCF9F8BD6F702E702046FEF77EF9F8BD00000000FFFF152A0008B131000870B504461548E0620025256320222046403006468E\n"
+":402C8000427085706563480711D52068416A606A421C62620170208D002808D0401E2085608D401E6085606C04210843606407212046FFF7C9FE21681020C86135702046C8\n"
+":402CC000FEF75CFA70BD00000000FFFFF8B5064600682027C76130684268224B1A4042600025356320487563F062C80606D531681020C861706C0421084370643046FFF76D\n"
+":402D000001FF03213046FFF79FFE706C002814D134464034607860280FD06078212811D06078222808D16770A078A57040282570304614D0FEF734FAF8BD716C3046FFF7D7\n"
+":402D40002FFFF8BD6770A078A57040282570304602D0FEF737FAF8BDFEF722FBF8BDFEF70DFBF8BD00E800FE0000FFFF70B50025064640360446B570717820202129707021\n"
+":402D80000BD012202063022120466563FFF75CFE35702046FEF704FA70BD11202063012120466563FFF750FE35702046FEF70AFA70BD0000F8B50446006820260F46C6611D\n"
+":402DC00021680820C86107212046FFF73DFE20684168B20211434160206841682D4A114041602046FFF78EFE20680168254649044035002902DB0168090406D5697821293E\n"
+":402E00002FD0E16B096849686185628D0421002A02D0626C0A4362647A070FD5426A606A431C63620270208D002807D0401E2085608D401E6085606C084360640020206380\n"
+":402E4000A8706063616C00290DD0616C2046FFF7A7FE6878282803D139462046FFF706FFF8BDA16BCEE7E26A0B498A4206D0E1626E7028702046FEF781F9F8BD69786E7038\n"
+":402E800022292870204602D0FEF714FBF8BDFEF7E9FAF8BD00E800FE0000FFFF70B50026044640340546A6706178282029290ED061782A290AD160702220286302212846DD\n"
+":402EC000FFF7C2FD26702846FEF7CCFA70BD60702120286301212846FFF7B6FD26702846FEF7E8FA70BD0000F7B5044600680E468069C043C0062CD4202725464035206841\n"
+":402F00008069C04380060FD5701CF8D0002E05D0FDF7D2FF0299401AB042F0D96F700020A87028700320FEBD21681020C8612068C7612046FFF7E6FD20684168064A11403F\n"
+":402F40004160042060646F700020A87028700120FEBD0020FEBD000000E800FEF8B50546044640352878012816D001202870C8060026002812DAD00610D521681020C861B8\n"
+":402F8000606C04210843606412212046FFF788FD2046FFF7B7FD3FE00220F8BD080634D5500632D520680168402291430160608D002825D0206840688105608D890DFF2891\n"
+":402FC00003D9FF202085930403E0608D012320855B060096208DC2B2204600F079F9608D218D401A6085687822282068016804D001229203114301600EE00122D203F9E725\n"
+":4030000040212046FFF7CCFD06E0880604D5900602D52046FFF75AFE2E700020F8BD0000F8B5074604464037387815460E46012810D001203870F0060ED5E8060CD521680C\n"
+":403040001020C861606C0421084360642046FFF759FD5BE00220F8BD700708D5680706D52068416A606A421C6262017009E0B0070ED5A8070CD5606A411C61622168007807\n"
+":403080008862208D401E2085608D401E60853DE02C4A30062FD568062DD5208D002825D1608D002822D0206840688105608D890DFF2806D9FF220020228501231B0600903B\n"
+":4030C00010E0608D2085E06A904205D000200090E36A208DC2B205E000200090208D0123C2B25B06204600F0F3F80FE020684068800123D506E0700608D5680606D5608DBC\n"
+":4031000000280ED040212046FFF74AFDB00605D5A80603D531462046FFF7D8FD00203870F8BD206841688901F0D4E16A914205D141680122920311434160E7E72046FFF757\n"
+":4031400015FEE3E70000FFFF10B5044640342378012B15D001232370CB0618D5D30616D5617821290ED0C16B09684968102200290AD00168CA61416C04221143416414E034\n"
+":40318000022010BD816BEFE70068C2610DE00B0705D5130703D500680821C16105E08B0603D5920601D5FFF705FE0020207010BDF8B5054604464035287816460F460128F2\n"
+":4031C00011D0012028704149F8062DD5F0062BD5628D1020002A08D02168C861606C04210843606467E00220F8BDE36A01225206934202D0E36A934202D16A78282A08D054\n"
+":40320000E26A8A4202D06978292907D02168C86151E039462046FFF729FD4CE02168C8612046FFF76FFC43E0780719D5700717D5608D002820680BD0426A606A431C63620C\n"
+":403240000270208D401E2085608D401E608500E0406A608D00282ED1E06A884228D12AE0380706D5300704D539462046FFF75BFC21E0B8071FD5B0071DD5608D00280CD09D\n"
+":40328000606A411C6162216800788862608D401E6085208D401E20850DE0216862208862E06A01210906884202D0E06A002802D12046FFF7F3FDB80605D5B00603D539462A\n"
+":4032C0002046FFF777FD00202870F8BD0000FFFF70B50568049C68688905890D1204044E11431943304021430143696070BD0000009800FCF8B51C4617460E46054611E0B7\n"
+":40330000601C0FD0002C05D0FDF7D6FD0699401AA04207D92020403568700020A87028700320F8BD286881693046884304D00020B842E5D00020F8BD0120F9E770B51646C5\n"
+":403340000D4604461AE0324629462046FFF7CCFD002801D0012070BD002D04D0FDF7ACFD801BA8420AD9616C202001436164403460700020A0702070032070BD2068806982\n"
+":40338000C0438006DFD4002070BD70B516460D4604461CE0324629462046FFF7A5FD002801D0012070BD681C11D0002D04D0FDF783FD801BA8420AD9616C202001436164E6\n"
+":4033C000403460700020A0702070032070BD20688069C0438007DDD4002070BD8CB000246846848284830483C4480A90C4A001F063FCCB4F002202213846FDF756FD01223D\n"
+":4034000011463846FDF751FD012004F00DF8002201213846FDF749FD012004F005F8012202213846FDF741FD012003F0FDFFC8210120019100900223BA4A0021782003F046\n"
+":4034400045FCB94E050004D0B8A001F035FC357100E03471B34D78220A3D6989BCA001F02BFC2021AE48FDF717FDE870C44D012831D1C821AB4A019100900223921C002178\n"
+":403480000E2003F023FC070004D0BEA001F014FC377100E03471A34F0E220A3FB989C3A001F00AFCB98911229202914201D0CFA044E002F0B9FF070009D0D84AD849D9A0D8\n"
+":4034C00001F0FAFBE34869460883377103E0E2A001F0F2FB347193480A38807801287DD1CF49E9A001F0E8FB8D4F002202213846FDF7DBFC012211463846FDF7D6FC0120A7\n"
+":4035000003F092FF002201213846FDF7CEFC012003F08AFF012202213846FDF7C6FC012003F082FF6846848205A9DD4801F08EFE002806D09B22D200B949DAA001F0BCFB26\n"
+":40354000B9E268466D4F808A393FB84201D1DCA009E0E34AE3A00A9901F0AEFB02F0E0FE002803D0EEA001F0A7FBA4E2F4A001F0A3FB6249684639398182FB480B9102F072\n"
+":403580002BFC05273F07002210213846FDF78DFC80216846017244728172C823032202A9F248FEF7E7FD030002D09F22D20048E2012210213846FDF778FC0022102138464E\n"
+":4035C000FDF773FC8020694608724C728872C823032202A9E548FEF7CDFD00E09AE2030002D08E4A5E322CE21F22C8235201BC49DE48FEF7BFFD030002D0884A653220E2FE\n"
+":40360000012210213846FDF750FCD94B1F225201991AD8A0019301F04FFB022168468182084602F0D9FB012003F0FEFE002210213846FDF73AFC832168460172E02141725A\n"
+":4036400080218172C823032202A9C848FEF792FD030002D0714A8332F3E1E122C8235201C2480199FEF786FD030002D06B4A8C32E7E10520012210210007FDF716FCE12258\n"
+":40368000C94B5201C9A0019901F016FB0A980127400B0890AAE10520002210210007FDF704FC80216846017244728172C823032202A9AE48FEF75EFD030002D0574AA2323D\n"
+":4036C000BFE18748790309180122C8235203A7480991FEF74FFD030002D0504AAB32B0E10520012210210007FDF7DFFB012309985B03C0180090394672E1000038000100D0\n"
+":40370000415031333032205468726561642043726561746564202E2E2E200A0D00000000000400509A000020482C00202041503133303220495350202D204572726F722045\n"
+":40374000434849502049442052656164200A0D004953502043484950204944203D2030782530347820616E6420536C6176652041646472203D20307825303278200A0D003E\n"
+":403780008400002020546F736869626120427269646765202D204572726F7220434849502049442052656164200A0D00546F7368696261204D49504920427269646765202D\n"
+":4037C00043484950204944203D20307825303478202D20536C6176652041646472203D20307825303278200A0D0000000A0D20546F7368696261204272696467652043683B\n"
+":4038000069702049442030782530327820213D20307825303278200A0D000000A9040000D00F02080A0D20257328293A202564204661696C656420746F20496E6974696140\n"
+":403840006C697A65204D49504920427269646765200A0D00F11F00000A204D4950492042726964676520636F6E66696775726174696F6E205375636365737366756C2021B2\n"
+":4038800021200A0D00000000257320456E746572656420546872656164202E2E200A0D0002600000257328256429204572726F7220696E20493243202121200A0D0000009A\n"
+":4038C0000A0D20536B697070696E6720426F6F742044617461202E2E2E200A0D00000000980F01080A20312E20496E697469616C20426F6F7420446174612053697A6520D1\n"
+":403900003D20257520426173652041646472657373203D20307825303878200A0D0000000A0D204572726F7220696E20436F6E6669677572696E6720535049200A0D000098\n"
+":403940000A0D2053504920436F6E66696775726174696F6E20436F6D706C657465202E2E2E200A0D0000000052F00000440E0020781301080A0D20322E205472616E736DFE\n"
+":40398000697474656420307825303878202B20307825303478206279746573203D20307825303878200A0D00982F01080A0D20332E205472616E736D697474656420307885\n"
+":4039C00025303878202B20307825303478206279746573203D20307825303878200A0D00A0A0099A01F068F908987F1CB84200D951E60520002210210007FDF756FA802029\n"
+":403A0000694608724C728872C823032202A9A348FEF7B0FB030001D0A14A12E0A148052101700A997803091A8AB208919E49C82341180F469948FEF79DFB030006D0984A6F\n"
+":403A400009329A499AA001F037F934E00520012210210007FDF729FA089839463B1802469DA001F029F96846848307A9A74801F0EDFB6846818BA64AA6A001F01DF9684646\n"
+":403A800004837D210901012001910090022306AA0621782003F01AF96846018BA7A001F00BF9AD4968468182AC480B9902F094F9012003F0B9FC6846008B9549002801902D\n"
+":403AC00000916846838B06D0754A7849D332A4A001F0F2F80DE0192292017449B0A001F0EBF801F0A3FE00F0A5F97D20C00003F09BFCC821286803F0E3FC6A4881784170B5\n"
+":403B00006946098B00290AD0122282700181286803F0B0FC634FB878092804D01CE0102181700481F3E700220221AB48FDF7BDF901221146A848FDF7B8F9022003F074FC8E\n"
+":403B4000B471C821286803F0BBFCB87878701220B870286803F08EFCB87802280BD1F471C821286803F0ACFCB87878701020B870286803F07FFCB87803280BD13472C8219B\n"
+":403B8000286803F09DFCB87878701020B870286803F070FCB87804280DD101F0ADFE7072C821286803F08CFCB87878701020B870286803F05FFCB87805280DD101F06CFBFD\n"
+":403BC0007074C821286803F07BFCB87878701020B870286803F04EFCB87806281CD101207E4A01900094137A51887820121D03F06DF80090002802D079A001F05DF8009862\n"
+":403C0000F074C821286803F05BFCB87878701020B870286803F02EFCB87807280ED178A001F04AF87475C821286803F049FCB87878701120B870286803F01CFCB8780828B1\n"
+":403C400000D048E475A001F037F8B475C821286803F036FCB87878701020B870286803F009FC38E40A0D20342E202564205472616E736D697474656420307825303878205A\n"
+":403C80002B20307825303478206279746573203D20307825303878200A0D0000440E00206905000090000020980F0108D00F02080A0D25733A25643A205350492054726140\n"
+":403CC0006E736D6974204572726F72202D202564200A0D20000000000A0D20352E205472616E736D697474656420307825303878202B203078253034782062797465732091\n"
+":403D00003D20307825303878200A0D0052F000004DC000000A0D20426F6F74204441544120435243203D20307825303478203C3D3E20307825303478200A0D000A0D204280\n"
+":403D40006F6F7420537461747573203D20307825303478200A0D0000FFFF0000026000000A0D20257328293A2564204572726F7220696E20435243203D203078253034786E\n"
+":403D800020213D203078253034782C2020535441545553203D20307825303478200A0D000A0D20257328293A256420435243203D20307825303478203D3D20307825303423\n"
+":403DC000782C2020535441545553203D20307825303478200A0D00000004005010190020204572726F722052656769737465722052656164204572726F72200A0D00000075\n"
+":403E000020506F776572696E6720446F776E20495350202E2E2E200A0D0000002057616B696E6720557020495350202E2E2E200A0D00000010B508210148FDF732F810BDFD\n"
+":403E400000040050F0B5274887B0C16A01242143C162C16A21400591C26A02210A43C262C06A002508400590202000900195694602951D48FCF74EFF1020052703263F07A2\n"
+":403E8000009001946946039602943846FCF742FF019400966946144803960294FCF73AFF012210213846FDF700F8002202210E48FCF7FBFF012211460B48FCF7F6FFA0021F\n"
+":403EC00000900A480190694602953846FCF722FF002203210720FDF7EBFB0720FDF7DEFB07B0F0BD00100240000400500000111010B51248104901601149416084218160B7\n"
+":403F00000121C1600021016141618161C1610162FDF7DAF800280BD100210848FCF7D2FF002805D100210548FCF7F1FF002801D0FCF7EAFC10BD000000540040AC0D002058\n"
+":403F40002A12B00010B511480F49016010494160002181600161416181610122C161C2600162FDF7B1F800280BD100210748FCF7A9FF002805D100210448FCF7C8FF0028D9\n"
+":403F800001D0FCF7C1FC10BD00780040F80D0020330F600010B50F480D490160FF21053141600021816002220261C16001224261C161016252024162826181620721C1626D\n"
+":403FC000FEF76EF8002801D0FCF79EFC10BD000000300140440E002010B5164A164886B0910706C02021016000241E21846041600838FEF7E8FA002814D1049404A90E48D0\n"
+":404000000594FEF783F900280CD1602000900420019003900022694602940748FEF76BFA002801D0FCF770FC0348FEF74DFA06B010BD000055D000009C0E002010B50C489F\n"
+":404040000A490160E1214902416000218160C16001618161C1610C22016242614162FEF795FB002801D0FCF74FFC10BD00440040D40E002010B50CA000F01EFE0F480E4904\n"
+":404080000160FF21813141607F218160C160012149020161FEF769FC002801D0FCF734FC07A000F009FE10BD20494E49542057574447200A0D000000002C0040440F002017\n"
+":4040C00020494E495420575744472053554343455353200A0D000000704700008307FF22DB0E9A408907090E994000280BDA0007000F0838830808489B001818C3699343F3\n"
+":404100000B43C3617047830804489B001B181868904308431860704700ED00E000E400E0BFF34F8F04490348C860BFF34F8F00BFFDE700000400FA0500ED00E038B50D46C0\n"
+":404140001A494418206800902346194A19491AA000F0B2FDE8430004284320602068144A00902346521D134922A000F0A5FD2E4CA069C007FCD10E4A0E490D322BA000F009\n"
+":404180009BFDA069800702D50220A06105E0084A084914322AA000F08FFD4F22120105492EA000F089FD002038BD00000000F81FD9040000548C0008202D2D2D2020426534\n"
+":4041C000666F7265202573282564292041742041646472657373203078253038782056616C7565203D20307825303878202D2D2D200A0D00202D2D2D20257328256429207B\n"
+":4042000041742041646472657373203078253038782056616C7565203D20307825303878202D2D2D200A0D0000200240202D2D2D20257328256429202D2D2D200A0D000078\n"
+":40424000202D2D2D204552524F52202D20257328256429202D2D2D200A0D0000202D2D2D205355434345535320257328256429202D2D2D200A0D000070B517490023CA6806\n"
+":404280001206120F18D18A6B154CD500134A02D51268224009E08E6B01252D072E438E6312688E6B2240AE438E63A24204D103218903884200D101230A48016849084900CF\n"
+":4042C000194301600068C007C00F984201D0012070BD002070BD00000010024000700040001800000020024070B512A000F0E4FC154D286801684908490001602868002490\n"
+":404300008462286844624B2149011048FCF79FF90F4805210482818141818471FF210171417129680A6801231A430A6081784170847070BD524553455420534C41564520D1\n"
+":40434000493243200A0D0000AC0D0020580F00206000002010B50248FDF741FE10BD0000440E0020F8B51D4616460F460446FCF7A3FD314626464036009000291ED043E026\n"
+":40438000681C1BD0002D05D0FCF796FD0099401AA84213D920684168E022914341602068026840218A43026023E021680A6882430A6021680A6802430A601FE020688168CC\n"
+":4043C00038468843DCD124E0681C1DD0002D06D0FCF772FD01460098081AA84214D920684268E0218A434260206801684022914301600120A16A40038142D6D0012070740E\n"
+":40440000002030740320F8BD2068816838468843DAD00020F8BD704730A000F04DFC0025344C0426A078042801D1FFF75DFFA289002A04D0A078082805D00C2803D0A0784B\n"
+":40444000002802D010E06070A5706281A58165700A20A07028492948FDF754F8002803D027A000F029FC2EE0A0780C2804D008282DD1A08900282AD11E4B61890C331A1DEB\n"
+":404480001D4802F0D3F8002808D06922D200284928A000F011FC3348208111E0228A002A15D0E2812582A07860700620A07012491248FDF753F8002809D02BA000F0FCFBB0\n"
+":4044C00060780428AED0A0786070A670AAE70520E07009481438FEF775FAA3E720456E746572656420736C617665207468726561640A0D0060000020580F0020AC0D0020FA\n"
+":404500004572726F72204F6363757272656420696E2048414C5F4932435F536C6176655F526563656976655F4954200A0D000000508B000820257328256429204572726F35\n"
+":4045400072206F636375726564206F6E20686F73745F6672616D65776F726B202121200A0D00000008200000204572726F72204F63637572726564206174205472616E735D\n"
+":404580006D6974200A0D000010B502F0CDFF10BD10B523489AB001680322D2029143C21489180160012102200391102100900491099040040B90000100240C900A946846EF\n"
+":4045C000FDF716FB002817D10F20159003201690179418940121199415A8FDF7D3F900280AD1FF200B3012940D90109413940DA8FDF70CF9002801D0FCF786F9FDF796FADE\n"
+":404600007D21C900FBF7B0FFFDF768FE0420FDF759FE03210022081FFDF74AF81AB010BD0070004010480168821511430160C1680E4A1140C16001680D4A11400160816864\n"
+":4046400049084900816001680122920491430160C168FD2212049143C160002101610549C003886070470000001002400C40FF88F6FFF6FE00ED00E010B50248FDF791FE75\n"
+":4046800010BD00009C0E002010B50248FDF789FE10BD0000D8180020F0B502680124A407124D134E134FA04205D0A84203D0B04201D0B84204D11346702293434A681A4325\n"
+":4046C000A04205D0A84203D0B04201D0B84204D103231B029A43CB681A4302608A68C2620968816201214161F0BD000000040040000801400014014030B5026A52085200E8\n"
+":404700000262026A456883697024A3439C080B68A40023430224A2438C6845601443836149684163046230BD30B5026A10239A430262036A4568826973242402A2430C680E\n"
+":4047400024021443202293438A68456012011A43846149688163026230BD30B5026AFF2301339A430262026A4568C3697024A3439C080B68A400234301246402A2438C68A6\n"
+":40478000456024021443C3614968C163046230BD30B5026A01231B039A430262036A4568C26973242402A2430C68240214430122520393438A68456012031A43C4614968B2\n"
+":4047C0000164026230BD10B5818CC90707D001684A6801235B049A43836A1A434A60818C890707D501684A6801231B049A43C36A1A434A60818C490707D501684A680123BB\n"
+":404800009B049A43036B1A434A60818C090707D501684A680123DB039A43436B1A434A60818CC90607D50268916801231B039943836B19439160818C890607D501688A6898\n"
+":4048400001235B039A43C36B1A438A60818C490612D503685A6801210905046C8A4322435A60026C8A4207D10268516803235B059943436C19435160818C090607D50168B4\n"
+":404880004A680123DB04806C9A4302434A6010BDF8B500260446C666FCF70EFB054620680068124F000709D501212B46002249052046009700F0BFF900280DD1206800685A\n"
+":4048C00040070BD501212B46002289052046009700F0B1F9002801D00320F8BD202060346072A07226720020F8BD0000FFFFFF0110B5806A0022014640314A834A82FDF7AD\n"
+":40490000A1FE10BD01680A68FF2321339A430A6001688A68520852008A60202160308172704770B50246403201466031938B8D7A0C460168222D05D08869082210438861F5\n"
+":40494000022070BD496A01268568360389B2B54202D10569002D0BD01940436D5D1C45651970518B491E0904090C518307D015E0456D19402980416D891C4165F1E70168C5\n"
+":404980000A68FF2321339A430A6001688A68520852008A602021A172FDF762FF002070BDFEB50446016880682269E36910436269102700261A4310430A683546784B1A4087\n"
+":4049C00002430A6020684168032212039143E26811434160734A2168A069914201D0226A10438A680B231B029A4302438A606E4A20686E4990420CD1C8688007800F06D0AD\n"
+":404A0000012843D002283FD0032826D124E0012723E0674A90420AD1C8680C21084031D0042833D008282FD00C2816D114E0614A904227D0604A904224D05A4A90420CD108\n"
+":404A4000C9680320800201401CD01015091A1DD0091A19D0814200D108270220FCF72CFE0190504B514922684039D81300929A4235D1002F0CD0022F0DD0042F12D0082F63\n"
+":404A80001CD113E00027E8E70227E6E70427E4E7FDF752F808E00868C00601D5474805E0474803E0FDF768F8002873D0626851005118814202D81103814201D2012569E023\n"
+":404AC000010E06025008002330185941FBF776FD032109023B4A411A914259D9EEE7E26982422DD13B0000F0F7F80906080B24192424241F2400019812E0FDF72DF80FE02C\n"
+":404B000008686168C00602D548082F4A01E02F4A48088018FBF728FD86B20BE0FDF72CF8616840004A08F4E76168012248081204EFE70125310909013007400F084327E0A2\n"
+":404B40003B0000F0C9F809070A0D061D060606290600B3E7FCF7F0FF14E0FCF7FDFF11E008686168C00602D54A08144801E014484A081018FBF7F8FC81B20098C16009E078\n"
+":404B8000FCF7FAFF61684A088018FBF7EDFC80B22168C8602846FEBD61684A08E9E70000F369FFEF00480040003801404010024000440040004C00400050004000093D00C1\n"
+":404BC0000024F400FFFC0F0000127A000048E8016921095C212901D00220704702464032518A002912D0012381681B03994202D10169002915D0C16C4B1CC364006809785E\n"
+":404C00008162508A401E50820020704701680A6880239A430A6000680168402211430160F2E7C16C03680988C905C90D9962C16C891CC164E5E7FFB581B017460E460446BF\n"
+":404C40000A9D1DE0681C1BD0002D05D0FCF734F90499401AA84213D920680168FF22A1329143016020688168490849008160202060346072A07200202072032005B0F0BD3D\n"
+":404C80002068C1693046884304D00020B842D9D00020F3E70120F9E710B50248FDF7D4FC10BD0000D40E002010B50248FDF74EFE10BD0000440F00200FB410B503A9044BBB\n"
+":404CC000044A029800F024F810BC08BC04B0184711660008A000002030B47446641E2578641CAB4200D21D46635D5B00E31830BC184702E008C8121F08C1002AFAD17047C6\n"
+":404D00007047002001E001C1121F002AFBD17047FFB591B00F460546002606E025280AD0149A139990476D1C761C28780028F5D1304615B0F0BD002400940121F34A0294E4\n"
+":404D400000E004436D1C2B780846203B98401042F7D128782A280ED0022128780246303A092A15D8009A0A235A43303A80180C436D1C0090F1E701CF0090002805DA0120B2\n"
+":404D800040030443009840420090022004436D1C28782E2815D10420044368786D1C2A280AD101CF6D1C02900BE002990A225143303940186D1C0290287801463039092961\n"
+":404DC000F3D928786C2810D006DC4C281AD068280ED06A2817D104E0742813D07A2812D110E00120400504430CE00121090501E0032109050C436978814203D1012000050A\n"
+":404E000024186D1C6D1C287803906E281ED00CDC632831D004DC00288AD0582811D1B2E064287BD069280CD178E073282DD004DC6F2870D0702804D1A7E075286CD078284A\n"
+":404E40006BD0149A13999047761C62E06002400F022807D003280AD0042838680AD006603F1D56E03868F11706604160F8E738680680F5E70670F3E73878694608740020C2\n"
+":404E8000487404A80390012003E0386803900020C0433F1D61070FD5002101E00199491C029A0191914213DA8142F7DB019A0399895C0029F2D10BE0002101E00199491C7D\n"
+":404EC00001918142FADB019A0399895C0029F5D101990098139A401A00902146149B00F03BF901998019461807E0039803990078491C0391149A139990470198401E0190A1\n"
+":404F0000401CF2D12146149B139A009800F014F986196D1C09E741E033E034E00A200021049005916002410F022905D001CFC2179446032905D007E0FF1DFF08FF0003CF14\n"
+":404F400006E000B2C2179446042902D140B2C1178C4600226146944506DA0A460021404291418C462D2102E0210504D52B216A461176012103E0E10701D02021F7E7019110\n"
+":404F800054E00A200BE0102009E01020049000210420044308200591029003E008200021059104906002410F022905D001CF00229446032906D006E0FF1DFF08FF0003CF3F\n"
+":404FC0008C4603E080B2042900D1C0B20021019121072BD50399702906D0049A1021059B4A401A4305D00EE040216A461176012108E06146014306D030216A4611760399D4\n"
+":40500000517602210191049A0821059B4A401A430CD16146014301D1610707D530216A461176012101910299491E02910399582904D037A103910FA90F910DE039A1F9E79B\n"
+":405040006146059B049AFBF7B9FA039B8C469B5C0F9A521E0F92137061460143F0D10F9807A9081A20300390600704D5012000048443029801E0012002900399884201DD5C\n"
+":40508000401A00E0002041180290019809180098401A0090E00306D42146149B139A009800F05AF886190020049008E006A9085C149A139990470498401C761C04900199DE\n"
+":4050C0008842F3DBE0030CD52146149B139A009800F042F8861904E0149A302013999047761C0299481E02900029F5DC08E00F980F990078491C0F91149A13999047761C35\n"
+":405100000399481E03900029F1DCFBE60928010030313233343536373839616263646566000000003031323334353637383941424344454600000000F8B5044600251E464D\n"
+":405140001746880404D405E039462020B0476D1C641EF9D52846F8BDFFB50446002581B01E46C80301D5302700E02027880404D505E038460399B0476D1C641EF9D528465E\n"
+":4051800005B0F0BD70B50D46002812D001780446432903D015A0FFF78FFD0AE00221A01C01F0A8F821790246914204D017A0FFF783FD022070BD22480178052901D0214A26\n"
+":4051C00011706178017061880802090A084381B2012901D9012100E000214018801C2880194901200870002070BD000020496E76616C6964205369676E617475726520304C\n"
+":405200007825303278202121200A0D0020476976656E2020435243203D2030782530327820213D2043616C63756C6174656420435243203D20307825303278200A0D000026\n"
+":405240006500002064000020660000207CB50546C8220120019200900A4602232946782001F034FD041E04D0294602A0FFF724FD20467CBD204572726F722052656164696B\n"
+":405280006E67207265676973746572202578202121200A0D00000000FEB5F64F0021F88C6A4691800D22920103465343F34CF24EF24A1C19D2583346316825791B7991420E\n"
+":4052C00001D1AB4204D0EEA00095FFF7F5FC3CE2012B0BD1B168E268914202DCA368994206DAF7A0A368FFF7E7FC2EE20920FEBDE0497822088550434518A818DE49FBF789\n"
+":405300008DF9F54AA86FDB4F811A203790425BD019DCF24A811A90426ED009DCF049401833D001283CD0022844D00C2828D1B4E0032956D00226EB4C042975D0052974D05A\n"
+":405340000A291DD1BAE0CB4CE74A2646881A6036403491426CD00BDCE448081867D0012873D0E1210901072870D0082808D12AE217286CD019286BD01B286AD01D2869D0AB\n"
+":40538000DB49DCA0FFF798FCB0E7803528780006010C0720000300F01FFD2878F8723FE2803528784006410CD84800F015FD2878387335E2803528780006010CD44800F083\n"
+":4053C0000BFD287878732BE2803528780006010C68468180CE480A3000F0FEFC2878B8731EE280352878010268468180C94800F0F3FC2878F87313E280359E4C6421286846\n"
+":40540000FBF7C8F80007060C08036421FBF7C2F80105090D314368468180BD48001D00F0DBFC28882086FBE172E053E000E0A1E0904E8035288870863978B74800290AD039\n"
+":4054400001291BD0022919D014E07EE088E175E178E1D8E1DEE1FF2229689632914201DB002105E0C839CD2901D2012100E0032100F0B2FC3878032804D008E0296896297D\n"
+":40548000F3DBEDE72079012805D0022803D02888708680B281E16420FAE780352868002809D09E49684681805120000200F094FC28783875B4E199490839F3E78035288804\n"
+":4054C0006C4C81B268468180954800F085FC2888E086A5E101A92046FFF7B8FE80352868002805D03978002902D0012804D00CE068468188314304E068468088C107C90F30\n"
+":4055000068468180204600F067FC2878B87687E101A92046FFF79AFE80352868002802D001280AD103E069468888304004E0694688880121084369468880684681882046F6\n"
+":4055400000F04AFC2878F8766AE10421754800F043FC80352E68642046436E483146801D00F06AFC6C483146143000F065FC2888608555E180352868002801D002284CD103\n"
+":405580000621684800F028FC62482C21001F00F023FC5E4840210A3000F01EFC5D480021303000F019FC5B480021323000F014FC584801218903343000F00EFC55480121D4\n"
+":4055C0008903363000F008FC29682A48022903D1317B006F00F000FD3878534F53497A100300FFF779FB060406060C0E101A4A4979314948103000F01FFC394609E01146A4\n"
+":40560000F7E7114600E04A494348103000F014FC48494148143000F00FFC2868012825D10421404800F0D8FB3A482021001F00F0D3FB364800210A3000F0CEFB3E4F364842\n"
+":405640003946103000F0F8FB3946334F1437384600F0F2FB648D642044432E482146801D00F0EAFB2146384600F0E6FB28783072D6E00000101900205C2D0020988D0008C9\n"
+":405680000A0D204374726C2049442030782530387820213D20307825303878206F72204374726C20547970652030782530327820213D20307825303278200A0D000000009E\n"
+":4056C0000A0A0D202564203E20256420203C202564200A0A0D0000001B0998001009980000F767FF0C100000F2FF01001A00FEFFDE0F020825733A20756E6B6E6F776E206B\n"
+":405700006374726C2069642E0A0D0000DA5200000670000006500000142000005F1100000A510000405400006A0401006533000050C30000400D030040420F0080352878A7\n"
+":4057400030736DE0307A022801D00220FEBD3548803529680167317B286800F03DFC5FE0304E8035286830642868FAF713FF05461621615E01208003401AFF216931FAF714\n"
+":4057800009FF6083012168434903081AA08131E0022832D1642070862FE000F033FDE189214800F019FB2048618A801C00F014FB1D48218A001D00F00FFB1B48A18A801DA4\n"
+":4057C00000F00AFB2CE0174E80352868B0642868FAF7E0FE05461821615E01208003401AFF216931FAF7D6FE60830121684349034018A0833878032801D0708ECDE720795D\n"
+":405800000128C7D0C4E78035286800F03BFC2878787705E08035286800F040FB287820710020FEBD101900200420000010B581211D4800F0D1FA1D48817A1D48002904D0EB\n"
+":40584000142100F0C9FA1BA003E0122100F0C4FA1EA0FFF731FA16480021203800F0BCFA2049214800F0B8FA0021204800F0B4FA2C211F4800F0B0FA1D481E490A3000F086\n"
+":40588000ABFA1B4803218902443000F0A5FA01214903481000F0A0FA002000F0F3FB00F027FF002010BD0000861100003019002030200000436F6E6669677572696E6720F2\n"
+":4058C00034206C616E650A0D00000000436F6E6669677572696E672032206C616E650A0D00000000FFFF00000A1000000C7000000250000014820000F0B585B000250195E8\n"
+":405900000095F34AF14C9068A67A844620462038478C182047431368D1681069049352680392002E30D0EB4A2646203ED259768C18277E43E74F31E0F3889C4536D0B088D5\n"
+":40594000F38861466C460BC4E348039B0499FFF7B3F916E07289914202D1B18988422BD0DEA00CE0F289914224D87289914221D3318A884202D8B18988421DD2DFA0FFF7A9\n"
+":405980009BF9022005B0F0BDD24AD04E9032203ED259768C18277E43CE4F9037F6199342CDD1B788039BBB42C9D1C5E7327A012AD8D1CFE7DAA0E2E7C4481422C4491438AE\n"
+":4059C000FAF72CFEC14EDF48203EF168C14219D13021DD4800F000FA308A81B20120400300F0FAF9B08A81B2D748103800F0F4F92078D64F00280AD0A07E002807D0012868\n"
+":405A00000BD012E0D2A0FFF757F90920BAE73846009900F0E1F9022104E03846009900F0DBF90099384600F0D7F9C74805213269C9010E308A420AD17825290200F0CCF981\n"
+":405A4000C1480221801C00F0C7F9002047E005231B0219019A4209D1502500F0BDF9BA480121801C00F0B8F9012038E00F23DB019A4209D1502500F0AFF9B3480121801C13\n"
+":405A800000F0AAF902202AE00F231B0259009A4209D11E2500F0A0F9AB480199801C00F09BF903201BE001231B039A4209D11E2500F092F9A4480199801C00F08DF90420C0\n"
+":405AC0000DE0832149018A420AD11325290200F083F99D480199801C00F07EF9052020702B46A6A072693169FFF7E6F8708E00F089FB764D94482035E9890E3800F06CF9AB\n"
+":405B00009148698A0C3800F067F98F48298A0A3800F062F98C48A98A083800F05DF9718EA3A0FFF7C9F82078002804D0012825D0022823D010E0708EFF219631884201D326\n"
+":405B4000002105E0C838CD2801D2012100E002217D48801C00F040F99A485C4F4079403700282FD0207805283FD004283DD0954900204871387A012804D023E0708E962892\n"
+":405B8000E3D3DDE78121904800F026F9698DFF204E30814208D88B4A1279012A04D0A02907D8022A05D00DE0012129716885874905E002202871A0207D216885C9018448BD\n"
+":405BC00000F03AF9207803280FD17E48007902280BD101202871FF204E3068857B497C4800F02AF9774901200871708E00902078032806D12879012801D0022801D164201E\n"
+":405C00007086708E00F0FEFA4F48E9890E3800F0E3F84D48698A0C3800F0DEF84A48298A0A3800F0D9F84848A98A083800F0D4F8009870862178002908D0012917D0022971\n"
+":405C400015D0052916D0042914D01FE0FF219631884201D3002105E0C838CD2801D2012100E003213848801C00F0B6F80EE09628F5D3EFE78021544800F0AEF82879002802\n"
+":405C800004D050490120487100202871387A01280AD1504D2C482946123000F0CDF82A482946163000F0C8F8607F002801D000F0E9F9254807210902103000F08DF80121BF\n"
+":405CC0004903481000F088F800205BE630190020482D0020788C00081C110208496E76616C6964204672616D652052617465202D2044495343200A0D00000000496E76611B\n"
+":405D00006C6964204672616D652052617465202D20434F4E54206D696E200A0D00000000496E76616C6964204672616D652052617465202D20434F4E54206D6178200A0D7B\n"
+":405D400000000000ABA6A9A6122000000C1000005468697320666F726D617420307825303878206973206E6F7420737570706F72746564202F6E2F7200000000204368612A\n"
+":405D80006E676564204672616D652053697A6520746F2025642078202564204672616D652052617465203D202564200A0D000000205A6F6F6D204C6576656C203D202564BB\n"
+":405DC000200A0D009000002086110000148200000C50000040420F003EB5044668460181C821002001910090022302AA2146782000F06CFF030005D068460289214602A0C5\n"
+":405E0000FEF75AFF00203EBD4572726F722057726974696E6720726567202578203D203078253034782020657272203D20307825303278200A0D00003EB505460291C8210C\n"
+":405E4000002001910090042302AA2946782000F03DFF040007D00346294604A0029AFEF72BFF20463EBD00203EBD00004572726F722057726974696E672072656720257843\n"
+":405E8000203D203078253034782020657272203D20307825303278200A0D0000F8B5424C06462746254620376035002804D0022E41D0012E3FD075E03C493D48FFF7BCFF02\n"
+":405EC0003C4EB079002801D002286BD13A783A483A493B4F1300FEF7FFFE060406060A18181035496931FFF7A7FF364901E03649F9E73148001DFFF79FFF2C213348FFF78F\n"
+":405F00006BFFB079022805D00AE03946FFF794FF2F49EEE702202872297B206F00F05CF8B079002804D128724021204800F054F80120B07136E03878052833D0042831D033\n"
+":405F40001C48297A817120212048FFF745FF002028721D491D4A144DFF204E3021390A324035012E02D0022E02D00BE0688506E03B78032BFAD0A0207D216885C9011046DE\n"
+":405F8000FFF75AFF81210A48FFF726FF3878032806D1FF2101310F48FFF71EFF642060862E71F8BD0220F8BD10190020808000008611000090000020242000006533000014\n"
+":405FC00050C300006A0401003582000002500000400D030010100000F8B50C462649884249D80104254F0E0EC5B269463846FFF72DF9694608887911084381B23846FFF73D\n"
+":40600000EBFEB6086408301B00B269460880002800DA002008800006010C1948FFF7DCFEAD08281B00B269460880002800DA002008800006010C1248801CFFF7CDFE30198D\n"
+":4060400000B269460880402800DD402008800006010C0B48001DFFF7BFFE281900B269460880402800DD402008800006010C0448801DFFF7B1FEF8BDFFFF000010200000F9\n"
+":4060800036500000F8B500216A46FF2611800224584F594D73360300FEF71EFE06043A50667D943411463846FFF7D0F868460188A14301803846FFF78FFE00212846FFF702\n"
+":4060C0008BFE4E484D4900782039002804D001281AD0022818D004E0488EFF219631884201D3002105E0C838CD2801D2012100E003214348FFF770FEFF2171313E48001F70\n"
+":40610000FFF76AFE0020F8BD488E9628EED3E8E711463846FFF79AF868460188214301803846FFF759FE00212846FFF755FE04213348FFF751FEFF218031DFE7114638469B\n"
+":40614000FFF784F868460188214301803846FFF743FE04212A48FFF73FFE27483146001FFFF73AFE002143E011463846FFF76EF868460188214301803846FFF72DFE04218A\n"
+":406180001F48FFF729FE1C483146001FFFF724FE012109032CE011463846FFF757F868460188214301803846FFF716FE04211448FFF712FE10483146001FFFF70DFE0121B9\n"
+":4061C000490315E011463846FFF740F868460188214301803846FFF7FFFD04210848FFF7FBFD05483146001FFFF7F6FD03210903284685E70A100000CE52000030190020F3\n"
+":4062000014200000F8B50746374802787D20C000002A0BD0354B012A0AD0022A08D0032A06D0042A07D0052A09D00AE0304907E001461C4605E02D4C0146583401E00146F0\n"
+":4062400004467D204004FAF7A5F9642148433946FAF7A0F906B2244D7D202035EE8221464004FAF797F9642148433946FAF792F904B228462C834038E121006C0901FAF7D5\n"
+":4062800089F9074601208003FF21801B6931FAF781F901217843490347182846AF814038E121806C0901FAF775F9009001208003FF21001B6931FAF76DF968830099484347\n"
+":4062C00001214903081AF10F891949107A1AA883EA81E20F12195210831A79186B8229828018A8820020F8BD3019002026050000F30300000346002010B50246002B05D00E\n"
+":40630000002903D04B246401A14205D9002010BD9C5C6040521C92B28A42F9D310BD0000FEB5002405273B487D2636013A4D02900EE0042302AA394978200196009400F0C1\n"
+":40634000C5FC002802D0072802D04FE02C7104E038467F1EFFB20028EBD1002F56D03048042702900721042302AA490378200196009400F0ABFC002802D0072836D101E0C5\n"
+":406380002C7104E038467F1EFFB20028EAD1002F3CD0012001F048F81E48083004270290042302AA1D4978200196009400F08EFC002802D0072819D101E02C7104E038465C\n"
+":4063C0007F1EFFB20028EBD1002F1FD01548042702900721042302AA490378200196009400F074FC002803D0072803D02871FEBD2C7104E038467F1EFFB20028E9D1002F1A\n"
+":4064000004D0012001F010F80020FEBD05202871FEBD000020002B00482C002038F000000130330311929119FEB50120694608810024C826022302AA19460E2001960094B8\n"
+":4064400000F044FC4B4D070078D10A2000F0ECFF68460481022302AA19460E200196009400F034FC070069D1012000900223424A002101960E2000F029FC07005ED13E48C9\n"
+":4064800011220C3881899202914205D03BA0FEF713FC02202871FEBD444869460881022302AA04210E200196009400F00FFC070044D1612069460881022302AA08210E20BF\n"
+":4064C0000196009400F002FC070037D138A0FEF7F3FB424869460881022302AA16210E200196009400F0F2FB070027D13C4869460881022302AA18210E200196009400F0AB\n"
+":40650000E5FB07001AD1052069460881022302AA20210E200196009400F0D8FB07000DD10520400269460881022302AA22210E200196009400F0CAFB070005D029A0FEF7BE\n"
+":40654000BBFB2F713846FEBD304869460881022302AA60210E200196009400F0B7FB040005D020A0FEF7A8FB2C712046FEBD0020FEBD0000482C00209C0000200A0D2054EA\n"
+":406580006F73686962612042726964676520436869702049442030782530327820213D20307825303278200A0D00000049020000204D4950492042726964676520434F6E3D\n"
+":4065C0006669677572656420666F72203936204D687A202121200A0D00000000364000001306000020546F736869626120427269646765202D204572726F72204348495036\n"
+":406600002049442052656164200A0D000285000013B5044B012269460348FCF722F900981CBD0000FFFF0000D40E0020F8B51D461446002825D0002923D0002C21D04B266F\n"
+":406640007601052903D1114A1278002A09D0224600F08EFF07000ED00DA0FEF72DFB3846F8BD1946FEF78EFD070001D012A0F4E70020208002E02088B04202D82888B042F6\n"
+":4066800001D90220F8BD0020F8BD0000660000204572726F72206F6363757272656420696E2070726F636573735F636F6D6D616E64200A0D000000004572726F72206F63C6\n"
+":4066C00063757272656420696E20616E616C797A655F6C656E6774685F7061636B6574200A0D0000EFF30580002800D001207047F0B533490023CB720420087312204873D7\n"
+":40670000102088730620C87308462038DC2202866422428601250D752A4AC2868B760446CB766034FF26024623724E364032568508262673244C036404676E038364968184\n"
+":40674000D381AC03148253829482D4821483538396834B7715711D4AC2600522D2010261FF22E13242611A4D0B7000220D239B0116465E4378235343AF591C18A767234603\n"
+":406780007619377960342777012F15D0347A80331C71F4689C60521C282AE7D38A7A0B4AC2600522D201782102618A0042610122C26181610020F0BD803334691C60EAE763\n"
+":4067C00030190020881300008080000055595659988D0008002808D00C490D4A8978002905D00320D0750020704702207047417803780802184341BA06480023022903D045\n"
+":4068000001218172D375EEE78372FBE790000020482C00203019002070B5104CA078102808D00F49112814D0122814D001208871002070BD0B4D0121286800F041FE00289E\n"
+":4068400001D0012070BD0920A070286800F012FEEEE70320EBE70820E9E7000090000020482C002084000020FEB500220446684602811646002907D003200880002C41D0F2\n"
+":406880002578FF2D02D004E00220FEBD1E48057825701E498878FF280CD00F23002822D0122820D0F027112820D0C00621D46770A27022E016486946088101200090019066\n"
+":4068C000022302AA0621782000F000FA060003D010A0FEF7F1F915E068460089000A60706846008908E06370F12005E06370A77003E00889010A6170A0700E48405D002863\n"
+":4069000000D006463046FEBD6400002090000020F10F0000204572726F722052656769737465722052656164204572726F72200A0D000000482C002030B500290AD0244B5F\n"
+":406940009B78102B0CD02348D90605D401210174084630BD022030BD03210174084630BD0024282802D30C800A2030BD78235843194BC018034660331D7F012D02D0022D10\n"
+":4069800015D001E009240C80002A1FD0816F090E1170816F090C5170816F090A9170816FD170197F1171197F012903D00EE00C80092030BD80300168090E51710168090C0D\n"
+":4069C00091710188090AD17100781072002030BD90000020482C00201019002070B50024002905D0282805D3002008800A2070BD022070BD0D239B01344D584343191E798B\n"
+":406A0000012E02D0022E05D101E0152601E09E890A360E80002A56D02958090E11702958090C5170295A090A9170285CD070187910711879012802D0022844D12CE0986859\n"
+":406A4000000E50719868000C90711889000AD071187A1072D868000E5072D868000C90729889000AD072187B10731869000E50731869000C9073188A000AD073187C107470\n"
+":406A80005869000E50745869000C9074988A000AD074187D107516E0187A5071D868000E9071D868000CD0719889000A1072187B507205E0181920301119007C8872641C3B\n"
+":406AC000D868A042F6D8002070BD0000988D0008F8B500271646002905D0282805D3002008800A20F8BD0220F8BD0D22920150431E4A851828792C46A034012802D0022812\n"
+":406B000009D11CE0207E032801D0232002E0A07E400124300880002E25D02946983120223046F9F77BFD3046217E2030017000214170617E8170217E032905D013E0A889CE\n"
+":406B40000A3008800920F8BDA17EC17008E078012918801920222430BB31F9F75FFD7F1CA07EB842F3DC0020F8BD0000988D00087CB50024054600291ED002200880002D0A\n"
+":406B800018D0C82101200191009002230B4A0021782000F09BF8040004D009A0FEF78CF80D484470054E0DA00A3E7189FEF784F87089288020467CBD02207CBD9A00002000\n"
+":406BC0004572726F72204348495020494420526561640A0D00000000482C002043484950204944203D20307825303478200A0D0030B500290AD0334B18249D7A00234443C2\n"
+":406C0000002D28D0062828D22F482BE0022030BD0D2500E015250D80002A51D00159090E11700159090C5170015B090A9170005DD0709888000A107118795071D888000ABC\n"
+":406C400090719879D071187A1072187A01280ED0022835D116E0062802D30B800A2030BD1948903023181D7A012DD3D1D0E75889000A5072987A90729889000AD072187B0C\n"
+":406C800010731DE05889000A5072987A90729889000AD072187B1073D889000A5073987B9073188A000AD073187C1074588A000A5074987C9074988A000AD074187D107573\n"
+":406CC000002030BD30190020788C0008FFB585B01D460E980F9B14460E4601280DD8042D0BD8002C09D0604A00215164320AF1B2002872D0012860D102E0022009B0F0BD14\n"
+":406D00006846027141710093022301AA56480599FAF7A8FA07001FD05348FAF7D3F90446059800903346224639465048FDF7C4FF4D4D28680168490849000160012000F03B\n"
+":406D400073FB286801680122114301601EE0042C7ED0032F7CD081E000200190029003904348092101702B4601AA3F480599FAF73BFA07000DD03C48FAF7A4F90446009640\n"
+":406D8000024639463B48059BFDF796FF202C67D0DDE700F0E8FB364E02E0012000F044FB30780928F9D0012D04D0022D06D0042D58D108E068460079207053E06846808805\n"
+":406DC00040BA20804EE00198694600BA000AC97900020843206045E0FFE720686C4622716171012D04D0022D04D0042D0DD105E0A0710AE0020AA271E07106E0020EA27199\n"
+":406E0000020CE271020A227260720093AB1C01AA15480599FAF726FA040023D01248FAF751F905460598009033462A4621461248FDF742FF0C4E3068016849084900016035\n"
+":406E4000012000F0F1FA306801680122114300E006E00160202D03D0032C01D005204DE707204BE7002049E7F80D0020701102089000002018120208C4110208F8B5114DD7\n"
+":406E8000114CA878002807D0122805D0112817D0082020710820F8BD0C4E0121306800F00FFB0127002805D009A0FDF705FF27710120F8BDAF70306800F0DCFA0020F8BDFD\n"
+":406EC0000320E6E790000020482C0020840000200A0A0A0D2053656D2057616974204661696C6564202121200A0D000070B5104C1049A078112808D00725102809D012281D\n"
+":406F000007D0002805D04D750AE001204875082070BD094E0121306800F0D2FA002801D0072070BDA570306800F0A4FA002070BD90000020482C002084000020FEB5054616\n"
+":406F40000F46002069461C460881002A0BD01F4901268B780321102B0AD01D48DA0604D486740120FEBD0220FEBD81740320FEBD012F05D0022F05D0042F05D01080F2E713\n"
+":406F8000118003E0042000E006201080002C1AD011882046F9F75BFB280A2070657000963B4602AA294678200196FFF78FFE050004D008A0FDF780FE2846FEBD684600897A\n"
+":406FC000010AA170E0700020FEBD000090000020482C0020204572726F722052656769737465722052656164204572726F72200A0D000000F8B504462148224E807810287A\n"
+":4070000007D0C00602D401207074F8BD03207074F8BD607821780002084345BA282D02D30A207074F8BDA01CF9F71CFB00BA000A61790002144F08433860A0793871012829\n"
+":4070400002D009207074F8BDE01DF9F70BFB00BA000AA17A00020843B8600C480C4CC5840121206800F02CFA002801D00720F8BD034805218170206800F0FCF90020F8BD17\n"
+":4070800090000020482C00205C2D00201019002084000020F8B504000AD0284E2848B17810290BD0C90605D4012141720846F8BD0220F8BD032141720846F8BD61782278A4\n"
+":4070C000090211434DBA0A21062D02D341720A20F8BD1C4F0121386800F0F2F9002801D00720F8BDA01CF9F7BDFA00BA010A60790902014314480160E179A27909021143A7\n"
+":4071000049BA4160617A227A0902114349BA8160E17AA27A0902114349BAC160617B227B0902114349BA0161084845840420B070386800F09FF90020F8BD000090000020B0\n"
+":40714000482C002084000020482D00201019002070B50E4C0325A078102808D0C1060C4802D40121017209E00572032070BD094E0121306800F0A4F9002801D0012070BD0F\n"
+":40718000A570306800F076F9002070BD90000020482C00208400002070B50F4CA078102809D0C1060D4802D40121C1710AE00321C171084670BD0A4D0121286800F080F972\n"
+":4071C000002801D0012070BD0220A070286800F051F9002070BD000090000020482C00208400002070B50C4C0825A078112803D00A488575082070BD094E0121306800F0A7\n"
+":407200005FF9002801D0072070BDA570306800F031F9002070BD000090000020482C00208400002070B5224E0446B1782148102909D0C90603D40121C174084670BD03218E\n"
+":40724000C174084670BD61782278090211431A4D49BA6980A1782972012907D0022907D0042914D00221C174084670BDE07804E02079E1780002084340BA104C68600121E3\n"
+":40728000206800F01DF900280AD0072070BDE01CF9F7E8F900BA000AA17900020843ECE70620B070206800F0E5F8002070BD000090000020482C0020101900208400002006\n"
+":4072C00092B03F493D488860002080F3108862B6FAF778F9FDF75CF9FCF7B0FEFCF7B2FDFCF706FEFCF72EFEFCF776FEFCF752FE3448C26A02210A43C262C06A324C08403A\n"
+":40730000009008200D9001200E900320002510900F950DA92046F9F7FDFC002208212046F9F7C3FD2948C069009029480368C12228492948FDF7C0FC28A22BA12DA0FDF775\n"
+":40734000BBFCF9F7CDF91F4C40342069400002D50120F9F719FC20690121C90508432061FCF788FE2B4C20222B486169F9F756F90520A0810BA80B9500F063F82062012180\n"
+":407380000CA80C9500F062F8124960621422083101A8F9F743F9002101A800F0CDF80D49A06114221C3106A8F9F738F9002106A800F0C2F8E06100F03FF8FEE700040008D3\n"
+":4073C00000ED00E000100240000400500020024000000140208B0008BC10020831363A33383A3135000000004E6F762032372032303139004275696C64204461746520618B\n"
+":407400006E642054696D653A202573202573200A0D00000060000020B818002001460020842900D0C81C704710B5002800D1012000F0EEFE002010BD10B500F057FF002028\n"
+":4074400010BD10B5012000F0D5FF10BD10B5012901D0002010BD03220021012000F0DCFF040004D000231A46194601F0C9F8204610BD000038B5002405460094FFF732F939\n"
+":4074800000280FD06946284601F046F9012801D0FF2038BD009800280DD0012007490007486008E000231A461946284601F0A8F8012800D0FF24204638BD000000ED00E0A0\n"
+":4074C00038B5054600200090002D11D00024481C10D0002900D00C46FFF704F9002814D06A460021284601F051F9012815D104E0802038BD0024E443EEE7009800280ED024\n"
+":40750000012008490007486009E0002322461946284600F0A3FF012801D0FF2038BD002038BD000000ED00E010B501F0BDF9012801D000F04DFF10BD3EB5044608200D4640\n"
+":40754000205EFFF76BFF02A901910090208A2B4682B22168606801F07FF9012801D000203EBD02983EBD10B500F046FE002010BDFFB5044689B000276846878007821D46C8\n"
+":4075800016460297002C11D00A98C4420ED02178432903D0F2A0FDF78FFB07E0F84861780278914205D0F7A0FDF786FB02200DB0F0BD0A980B00C01E0390F94880880790A3\n"
+":4075C0000A982218F748203A0078FDF785FB180D2A67AAFDFCFBFAF9F8D8F7F7F7F7F7F6F5F4F3F2F1F0EFF7012802D0022804D085E201204003608029E0EB4902980A5CD4\n"
+":40760000201882700298401C02902028F6D32021A01CFEF76FFE029961188870CF7024203AE0012802D002281DD068E201A90020FFF79EFA002804D0DCA0FDF73DFB684679\n"
+":407640000782684680880102000A014361800221A01CFEF74FFE2071677106203080D1490220087079E101A904A8FFF781FA0290002804D0CDA0FDF71FFB68460782684676\n"
+":40768000008A010AA170E0700221A01CFEF732FE2071029860710620308072E2012802D0022826D06DE20592D17F0398029181B2A01CFEF71FFE0299814207D005980A99B5\n"
+":4076C000C27FC2A0C91EFDF7F7FA39E0E178A27808021043B24940BA8880002201A9FFF787FA40E0684681880802090A0843608081E0A21C01A90798FFF77AFA94E06946DE\n"
+":407700008988A01CFEF7F6FD69468988611888706946898802986118C87069468888001D71E0012802D0022823D02AE2D17F0398029181B2A01CFEF7DDFD0299814207D096\n"
+":40774000ADA0FDF7B9FA6846878002200290C9E7E178A27808021043914940BA8880002201A9FFF73BF902900028BBD068468780B8E7A21C01A90798FFF730F954E001283E\n"
+":4077800002D002284BD0FCE1D17F0398029181B2A01CFEF7AFFD0299814216D096A0FDF78BFA68468780022002901EE0D7E1D3E1CFE1C4E1B5E166E156E18EE0E3E17AE00C\n"
+":4077C00076E072E06EE041E03AE0E178A27808021043734940BA8880002201A9FFF778F90290002801D068468780684680880102000A014361800221A01CFEF77BFD207192\n"
+":40780000029860710620308066480178012912D002298AD068468088002886D06FE1A21C01A90798FFF754F90290002800D166E76846878063E76946898800297ED1A0E1F1\n"
+":40784000FFF71CFB57480770378056E154484088002810D070A0FDF72FFAFF20A070504841880A0AE270217103216A46918002210291478004E001A9A01CFEF7F5FF0290AF\n"
+":4078800069468988A01CFEF735FD69468988611888706946898802986118C87069468888001DF9E6FEF7B8FF6AE1FFF775FC67E1FFF74EFC64E1D17F0398029181B2A01C96\n"
+":4078C000FEF718FD0299814203D04BA0FDF7F4F94FE1A01CFFF7DEFB52E1012802D002283DD00CE1D17F0398029181B2A01CFEF701FD0299814207D03FA0FDF7DDF9684688\n"
+":4079000087800220029012E0E178A27808021043234940BA8880002201A9FFF70DF80290002804D043A0FDF7C7F968468780684680880102000A0143618000E00BE00221E5\n"
+":40794000A01CFEF7D7FC207102986071CDE06946898800297CD0022101702F80CFE078E020496E76616C6964205369676E617475726520307825303278202121200A0D0042\n"
+":4079800065000020204944203D2030782530327820213D20307825303278200A0D0000008800002066000020B81800204572726F7220696E2047657474696E672053656E9E\n"
+":4079C000736F72204944200A0D00000020435243204C656E677468203D203078253032782C206F72696720637263203D20307825303278200A0D000020435243207665729C\n"
+":407A0000696669636174696F6E204572726F72202121200A0D0000004572726F7220696E204D435520697473656C66202121200A0D0000004572726F7220696E2047657446\n"
+":407A400074696E67204374726C200A0D0000000052E0A21C01A90798FEF76EFF0290002800D10DE7494857E0D17F0398029181B2A01CFEF73FFC0299814200D025E7A01CF3\n"
+":407A8000FFF7B8FA7CE0012802D0022839D036E0D17F0398029181B2A01CFEF72BFC0299814202D039483C380FE0E178A27808021043374A40BAD08021791170002301AA5D\n"
+":407AC000FFF73CFA002804D032A0FDF7F5F868468780684680880102000A014361800221A01CFEF707FC20716771062030802F480178012900D12AE7077005202880002098\n"
+":407B000055E52348A31C017801AAC088FFF716FA02900028A5D01FA0FDF7CEF868468780AEE6D17F0398029181B2A01CFEF7E2FB02998142A2D1A01CFFF774FB20E01CA091\n"
+":407B4000FDF7BAF8204921A0FDF7B6F8F8F75AFF16E0FFF7CBF913E0FFF744FB10E0D17F0398029181B2A01CFEF7C4FB0299814203D007491D48488002E0A01CFEF72AFEF9\n"
+":407B800037800A48B8E7092011E50000347A0008880000204572726F7220696E205265616420495350200A0D00000000660000204657205570647420496E69746961746589\n"
+":407BC00064200A0D00000000050A0008204669726D776172655F757064617465203D20307825303878200A0D000000000A200000F8B5134C0F46E66805462068001D00F07A\n"
+":407C000069FA681C07D1002F05D021680D48091D00F098FAF8BD2068751945602168B54204D2A06B091D00F075FAF8BD606B091D00F070FAA06A8542F7D2A562F8BD00004F\n"
+":407C40000C00002098010020F8B5054600F086FA2A4CA068401CA0602068294F002803D06069002827D02CE02560A068012828D1002614207043C01900F03EFA761C072E6A\n"
+":407C8000F7D31F488C3000F037FA1D48A03000F033FA1B48B43000F02FFA1948C83000F02BFA1748DC3000F027FA15488C3060631430A06305E02068E96AC06A884200D86B\n"
+":407CC0002560606A401C60626864E86A2169884200D9206114214843C019291D00F032FA00F048FA6069002806D02068E96AC06A884201D200F080FAF8BD00000C0000206A\n"
+":407D0000BC00002070B5114E114C18E000F014FB3068002817D000F09BFE00F01FFAF068C568281D00F0D6F9A068401EA0606068401E606000F01EFA284600F056F8606805\n"
+":407D40000028E3D170BD00F083FEF8E7840100200C00002010B5026C0C46002A0CD0C1688B18C36041688B4201D2194601E00168C1602046F8F752FC10BDF8B5856B1746E2\n"
+":407D800004460026026C002A11D0002F19D0E068F8F744FCE168206C091AE1602268914202D26168081AE060022F17D019E02068002816D1606800F0E5FD06460020606048\n"
+":407DC0000FE0A068F8F72AFC216CA0684018A0606168884205D32068A06002E0002D00D06D1E6D1CA5633046F8BD10B50446006B00F0CEF9204600F0CBF910BD03210E48DF\n"
+":407E00008902420705D0C01DC0080B4AC000821A891A0A4A0023411809C20839C908C900183A11604B600B600B1A0AC093600120C0075360D0607047AC01002058000020A8\n"
+":407E4000044CFFF75FFF20680128FAD900F0D4F9F7E70000BC000020FFB581B097000C9C0E460A9DA5223946206BF8F7E9FB206B3F1FC019C708FF00780701D072B6FEE7B3\n"
+":407E80002218315C20321175315C002902D0401C1028F5D32046403000260090C670072D00D30625E5622665201DE56400F02FF92046183000F02BF924610720401B64624C\n"
+":407EC000A0616665009806763846049A019900F0F1F820600B98002800D0046005B0F0BD30B5114900E011460A688242FBD34B685C18844203D1406818184860084643687E\n"
+":407F00001C18944209D1084C103C2468A24209D052689A1842600A6812680260814200D0086030BD0460F9E75800002010B5044600F014F9A06B002804D0002400F01AF93A\n"
+":407F4000204610BD0124F9E70648416B0968002905D0416BC968C9684968816270470021C943FAE70C00002003480068401C72B600D0FEE7FEE7000008000020F8B50446DD\n"
+":407F800000F0ECF8254640350526AE57274624370BE0606A00280AD0384600F027FD002801D000F04DF9761E76B2002EF1DC0027FF436F7100F0DEF800F0D0F80426AE57F0\n"
+":407FC0002046103000900BE0206900280AD0009800F00CFD002801D000F032F9761E76B2002EF1DC2F7100F0C5F8F8BDF8B50546002700F0A1F9284E3068002801D1FFF7D0\n"
+":40800000FDFEF06805423FD1002D3DD00835680708D06807400F0821081A4519680701D072B6FEE7002D2FD0706885422CD81A48103001460C6801E020460C466168A942AB\n"
+":4080400002D221680029F7D131688C421CD007682168016060680837411B102908D96019420701D072B6FEE741606560FFF738FF61687068401A7060B268904200D2B060BD\n"
+":40808000F0680143002003C400F0E2FC780701D072B6FEE73846F8BD4800002004490868002803D00868026D521C0265086870470C00002010B50124031F24061C601B1FCC\n"
+":4080C0001960191F024B0B60143940380A6010BD697F00084368826801699A60836842685A604A68824201D182684A60002202610868401E08607047014608310022416052\n"
+":40810000D243C1608260016100210160704700210161704730B50B685A1C02D00246083202E0026904E02246546825689D42FAD953684B6099608A60516008610168491C6B\n"
+":40814000016030BD42684A6093688B6093685960916008610168491C0160704772B604480168491C0160BFF34F8FBFF36F8F70470800002005490868002804D0401E086041\n"
+":4081800000D162B6704772B6FEE700000800002070B500281AD004460D4D083C6068E968084201D172B6FEE72268002A01D072B6FEE78843606000F0BFF8606869684018D4\n"
+":4081C00068602046FFF78CFE00F042FC70BD00004800002010B506487D21C9000068F8F7C3F90449401E48610720086110BD00000000002000E000E00120044900074860D3\n"
+":40820000BFF34F8FBFF36F8F7047000000ED00E010B502000FD00948006B002801D072B6FEE700F089F800211046FFF7E1FC00F00FFC002801D1FFF7DFFF10BD0C00002095\n"
+":4082400001490120C86170470C00002010B50C46002809D0054909681831FFF75BFF01212046FFF7C5FC10BD72B6FEE70C00002070B5040025D0154DE06A2968C96A88427A\n"
+":408280001FD2A069002804DB28680721C06A081AA061E06A14220E4E504361698019814210D1201DFFF716FF2868C06AE0622969884200D92861142148438019211DFFF7B3\n"
+":4082C00041FF70BD2868C06AE06270BD0C000020BC000020002805D003490A6A0260C9684160704772B6FEE70C0000201CB50E4800240190234680220CA100940D4800F092\n"
+":40830000ABFA012803D0401C0CD172B6FEE772B600210548C9432C38816201214161C46000F03EF81CBD00003800002049444C4500000000417E00080248016B491C0163CA\n"
+":40834000704700000C00002010B51348016B002902D00121C16110BD0021C16101690F4A02E0002915D0491E14234B43D358002BF7D014234B439A18536814465B680834B8\n"
+":408380005360A34201D15B685360DA680260016110BD72B6FEE700000C000020BC00002010B50948016AFF22120411430162016A120211430162FFF70DFF04490020086079\n"
+":4083C000F8F788F8002010BD00ED00E00800002010B5F8F793F8044600F076FA002803D001200349000748602046F8F78BF810BD00ED00E010B502460021012000F00CF877\n"
+":40840000041E07D00021416001600B460A46C16000F0F6F8204610BDF8B517460E46050016D0002E16D070435030FFF7DFFD04000CD020465030002E0ED0206026642046A9\n"
+":408440000121E56300F0A6F84C2007552046F8BD72B6FEE70020E7E72460EFE7FFB5002583B0040003D00498002802D006E072B6FEE7206C002801D072B6FEE700F014FAD0\n"
+":408480000026002804D10598002801D072B6FEE7FFF764FEA76B002F26D0E56820460499FFF758FC0698002810D0E560606A002807D02046243000F099FA002801D0FFF7ED\n"
+":4084C0009BFEFFF757FE012007B0F0BD7F1EA7632068002802D1FFF7E1FD606020690028EFD020461030E6E70598002802D0002D03D006E0FFF73EFE27E06846FFF7EAFE30\n"
+":408500000125FFF737FEFFF717FFFFF727FE2046403004214156491C00D1067105214156491C00D14671FFF725FE05A9684600F069F9002820460AD0FFF720FD00F088FA26\n"
+":408540002046FFF7F3FC0028A2D00020BCE7FFF7EDFC002818D02068002806D1FFF7FEFD6068FFF785FEFFF705FE204624300599FFF76CFE2046FFF701FD00F069FA002825\n"
+":4085800086D1FFF739FE83E72046FFF7F7FC00F05FFA7DE770B50D46040025D0FFF7DEFD216CE06B48432168411861600021A1632168A160E06B216C401E48432168411837\n"
+":4085C000E1600021C94320464030017141713038002D0BD0FFF790FD20462430FFF78CFDFFF7C8FD012070BD72B6FEE721690029F6D000F0FBF90028F2D0FFF7FDFDEFE7C4\n"
+":40860000FFB5002683B01D46040003D00498002802D006E072B6FEE7206C002801D072B6FEE7022D04D1E06B012801D072B6FEE700F03AF90027002804D10598002801D0A5\n"
+":4086400072B6FEE7FFF78AFDA06BE16B884207D3022D05D00598002817D0002E18D01BE02A4620460499FFF788FB616A002903D02046243000F0BAF9002801D0FFF7BCFDFC\n"
+":40868000FFF778FD012007B0F0BDFFF773FD22E06846FFF71FFE0126FFF76CFDFFF74CFEFFF75CFD2046403004214156491C00D1077105214156491C00D14771FFF75AFD54\n"
+":4086C00005A9684600F09EF8002806D02046FFF755FC00F0BDF90020D5E7FFF73FFDA06BE16B884210D1FFF745FD204610300599FFF7ACFD2046FFF741FC00F0A9F90028C9\n"
+":40870000A0D1FFF779FD9DE7FFF734FD2046FFF735FC00F09DF995E770B50D46040004D0206C002803D072B6FEE772B6FEE72068002804D16068002801D072B6FEE7F7F7F0\n"
+":40874000DDFEA26B0646E06B904219D92146403105200856521CA263421C03D0401C487101240EE0606A0028FAD02046243000F03DF90028F4D0002DF2D001202860EFE799\n"
+":4087800000243046F7F7BEFE204670BDF7B582B0040003D00398002802D006E072B6FEE7206C002801D072B6FEE7F7F7A7FE0090A66B002E1FD020464030042545570746DA\n"
+":4087C00020460399FFF7C6FA761EA663681C03D06D1C3D7101240FE020690028FAD02046103000F003F90028F4D004980028F1D001210160EEE700240098F7F783FE20461B\n"
+":4088000005B0F0BD70B50D4604001AD0002D1AD0FFF7A4FC0F4AD1682868431C0FD02368126A934202D062688A420ED96268891A81420AD2401A28602046FFF74BFD002482\n"
+":4088400004E072B6FEE772B6FEE70124FFF792FC204670BD0C000020FFB585B0164690000F9FFFF7C3FB05001AD05C20FFF7BEFB040012D0256300210E9803910197009050\n"
+":4088800002943246089B06990598FFF7E5FA2046FFF7DAF9012009B0F0BD2846FFF778FC0020C043F7E7000006484169002904D0006B002803D0002070470120704702203B\n"
+":4088C000704700000C000020F8B52C4C0027206B002808D0A069401CA061E069002800D001273846F8BDE668761CE6600ED1606B0068002801D072B6FEE7606BA16B6163E3\n"
+":40890000A063206A401C2062FFF71EFBA06A86420AD3606B0068002810D0606BC068C568686886420DD2A06220681421C06A4843134908580128D0D90127CEE70020C0433A\n"
+":40894000F1E7281DFFF7C6FBA86A002803D028461830FFF7BFFBE86A2169884200D920611421484306494018291DFFF7EBFBE86A2168C96A8842CCD30127CAE70C000020AB\n"
+":40898000BC00002070B500210446002828D0154D2868844201D072B6FEE7206D002808D0401E2065E36CE26A9A4219D0002802D016E072B6FEE7201DFFF78CFBE06C07219A\n"
+":4089C000E062081AA061E06A2969884200D928611421484304494018211DFFF7B3FB0121084670BD0C000020BC00002070B5C068C468002C0BD0204618300646FFF76AFB49\n"
+":408A0000114D286B002804D0314610480FE072B6FEE7201DFFF75EFBE06A2969884200D92861142148430949B4394018211DFFF789FBE06A2968C96A884202D90120E861BE\n"
+":408A400070BD002070BD00000C00002070010020F8B5284C0025206B2E46002808D0FFF77DFB206B401E2063206B002802D03DE072B6FEE7A168204F00291DD136E0F868EC\n"
+":408A8000C56828461830FFF725FB281DFFF722FBE86A2169884200D92061142148431649B4394018291DFFF74DFBE86A2168C96A884201D30120E06138680028DFD1002DCA\n"
+":408AC00001D0FFF741FAA569002D09D00127FFF7FBFE002800D0E7616D1EF8D10020A061E069002802D00126FFF786FBFFF742FB3046F8BD0C000020700100200000000098\n"
+":408B0000000000000102030406070809030406080C1018203000000000010203040000006D61696E0000000010110208194400080000000000000000000100000411020815\n"
+":408B4000DD330008000000000000000080000000537461727444656661756C745461736B0048414C5F4932435F536C617665547843706C7443616C6C6261636B0048414C6A\n"
+":408B80005F4932435F536C617665527843706C7443616C6C6261636B0048414C5F4932435F4572726F7243616C6C6261636B0048414C5F4932435F4164647243616C6C62C2\n"
+":408BC00061636B0048414C5F4932435F4C697374656E43706C7443616C6C6261636B0048414C5F4932435F4D656D547843706C7443616C6C6261636B0048414C5F49324318\n"
+":408C00005F4D656D527843706C7443616C6C6261636B0048414C5F4932435F41626F727443706C7443616C6C6261636B0048414C5F4750494F5F455854495F43616C6C622A\n"
+":408C400061636B004669726D776172655F557064617465004F7074696F6E4279746550726F6700424642325F636865636B5F656E61626C6500000000555956598002E00142\n"
+":408C800001007800010000000000000000000000555956590005D00201005000010000000000000000000000555956598007380401003C0001000000000000000000000056\n"
+":408CC00055595659000F700801001E00010000000000000000000000555956590010700801001E00010000000000000000000000555956596010300C01001300010000004D\n"
+":408D00000000000000000000555956598002E00101007800010000000000000000000000555956590005D00201005000010000000000000000000000555956598007380453\n"
+":408D400001003C0001000000000000000000000055595659000F700801001E00010000000000000000000000555956590010700801001E00010000000000000000000000AC\n"
+":408D8000555956596010300C010013000100000000000000000000000009980001000000F1FFFFFF0F000000000000000100000000000000000000000000000000000000F5\n"
+":408DC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073\n"
+":408E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004272696768746E65737300000000000019\n"
+":408E400000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D1\n"
+":408E800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B2\n"
+":408EC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000072\n"
+":408F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000031\n"
+":408F400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F1\n"
+":408F800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B1\n"
+":408FC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071\n"
+":409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030\n"
+":4090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F0\n"
+":4090800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B0\n"
+":4090C0000000000000000000000000000000000000000000000000000109980001000000000000001E000000040000000100000000000000000000000000000000000000AA\n"
+":40910000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002F\n"
+":40914000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000436F6E74726173740000000000000000A1\n"
+":40918000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008E\n"
+":4091C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006F\n"
+":40920000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002E\n"
+":4092400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EE\n"
+":4092800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AE\n"
+":4092C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006E\n"
+":40930000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002D\n"
+":4093400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ED\n"
+":4093800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AD\n"
+":4093C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006D\n"
+":409400000000000000000000000000000000000000000000000000000209980001000000000000003C00000012000000010000000000000000000000000000000000000039\n"
+":4094400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EC\n"
+":4094800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053617475726174696F6E00000000000082\n"
+":4094C000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004B\n"
+":40950000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002B\n"
+":4095400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EB\n"
+":4095800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AB\n"
+":4095C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006B\n"
+":40960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002A\n"
+":4096400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EA\n"
+":4096800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AA\n"
+":4096C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006A\n"
+":409700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029\n"
+":409740000000000000000000000000000000000000000000000000000C09980001000000000000000100000001000000010000000000000000000000000000000000000038\n"
+":4097800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A9\n"
+":4097C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057686974652042616C616E6365204175CC\n"
+":40980000746F000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043\n"
+":4098400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E8\n"
+":4098800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A8\n"
+":4098C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068\n"
+":409900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027\n"
+":4099400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E7\n"
+":4099800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A7\n"
+":4099C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000067\n"
+":409A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026\n"
+":409A400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E6\n"
+":409A80000000000000000000000000000000000000000000000000001A099800010000000A00000010270000881300000A0000000000000000000000000000000000000004\n"
+":409AC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066\n"
+":409B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057686974652042616C616E636520546585\n"
+":409B40006D706572617475726500000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EF\n"
+":409B800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5\n"
+":409BC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065\n"
+":409C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024\n"
+":409C400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E4\n"
+":409C800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A4\n"
+":409CC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064\n"
+":409D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023\n"
+":409D400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E3\n"
+":409D800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A3\n"
+":409DC000000000000000000000000000000000000000000000000000100998000100000028000000F4010000DC0000000100000000000000000000000000000000000000B7\n"
+":409E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022\n"
+":409E400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047616D6D610000000000000000000000FF\n"
+":409E80000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081\n"
+":409EC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062\n"
+":409F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021\n"
+":409F400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E1\n"
+":409F800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A1\n"
+":409FC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061\n"
+":40A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020\n"
+":40A0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0\n"
+":40A0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A0\n"
+":40A0C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060\n"
+":40A100000000000000000000000000000000000000000000000000001309980001000000010000003200000006000000010000000000000000000000000000000000000030\n"
+":40A1400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DF\n"
+":40A180000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004761696E00000000000000000000000020\n"
+":40A1C000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003E\n"
+":40A20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001E\n"
+":40A2400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DE\n"
+":40A28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009E\n"
+":40A2C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005E\n"
+":40A30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001D\n"
+":40A3400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DD\n"
+":40A38000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009D\n"
+":40A3C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005D\n"
+":40A40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C\n"
+":40A440000000000000000000000000000000000000000000000000001409980001000000000000000100000000000000010000000000000000000000000000000000000024\n"
+":40A48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009C\n"
+":40A4C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000486F72697A6F6E74616C20466C69700087\n"
+":40A500000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019\n"
+":40A5400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DB\n"
+":40A58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009B\n"
+":40A5C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005B\n"
+":40A60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001A\n"
+":40A6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DA\n"
+":40A68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009A\n"
+":40A6C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005A\n"
+":40A700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019\n"
+":40A7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D9\n"
+":40A7800000000000000000000000000000000000000000000000000015099800010000000000000001000000000000000100000000000000000000000000000000000000E0\n"
+":40A7C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059\n"
+":40A80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000566572746963616C20466C697000000033\n"
+":40A8400000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D6\n"
+":40A880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098\n"
+":40A8C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058\n"
+":40A900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017\n"
+":40A9400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D7\n"
+":40A980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097\n"
+":40A9C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057\n"
+":40AA00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016\n"
+":40AA400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D6\n"
+":40AA80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000096\n"
+":40AAC0000000000000000000000000000000000000000000000000001B09980001000000010000007F00000010000000010000000000000000000000000000000000000008\n"
+":40AB00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015\n"
+":40AB400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053686172706E657373000000000000001E\n"
+":40AB80000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074\n"
+":40ABC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055\n"
+":40AC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014\n"
+":40AC400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D4\n"
+":40AC80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000094\n"
+":40ACC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054\n"
+":40AD00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013\n"
+":40AD400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D3\n"
+":40AD80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000093\n"
+":40ADC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053\n"
+":40AE000000000000000000000000000000000000000000000000000001099A000100000000000000020000000000000000000000000000000000000000000000000000006B\n"
+":40AE400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D2\n"
+":40AE80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004578706F73757265204175746F0000007E\n"
+":40AEC0000000000000000000000000000000000003000346756C6C20464F56204175746F204D6F646500000000000000000000000000004D616E75616C204D6F646500004D\n"
+":40AF000000000000000000000000000000000000000000524F49204261736564204175746F204D6F64650000000000000000000000000000000000000000000000000000CA\n"
+":40AF400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D1\n"
+":40AF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091\n"
+":40AFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051\n"
+":40B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010\n"
+":40B0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D0\n"
+":40B080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090\n"
+":40B0C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050\n"
+":40B10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F\n"
+":40B1400000000000000000000000000000000000000000000000000002099A000100000001000000102700004D0100000100000000000000000000000000000000000000A2\n"
+":40B18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008F\n"
+":40B1C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004578706F73757265204162736F6C7574FA\n"
+":40B200006500000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088\n"
+":40B2400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CE\n"
+":40B28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008E\n"
+":40B2C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004E\n"
+":40B30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D\n"
+":40B3400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CD\n"
+":40B38000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008D\n"
+":40B3C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004D\n"
+":40B40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C\n"
+":40B4400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CC\n"
+":40B4800000000000000000000000000000000000000000000000000026099A000100000000000000FFFF0000808000000100000000000000000000000000000000000000C3\n"
+":40B4C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004C\n"
+":40B50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000524F49204578706F7375726500000000A6\n"
+":40B5400000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AA\n"
+":40B58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008B\n"
+":40B5C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004B\n"
+":40B60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A\n"
+":40B6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CA\n"
+":40B68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008A\n"
+":40B6C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004A\n"
+":40B700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009\n"
+":40B7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C9\n"
+":40B780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000089\n"
+":40B7C0000000000000000000000000000000000000000000000000000D099A00010000006400000020030000640000000100000000000000000000000000000000000000AC\n"
+":40B800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008\n"
+":40B840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005A6F6F6D00000000000000000000000023\n"
+":40B880000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000067\n"
+":40B8C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048\n"
+":40B900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007\n"
+":40B9400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C7\n"
+":40B980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000087\n"
+":40B9C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047\n"
+":40BA00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006\n"
+":40BA400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C6\n"
+":40BA80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086\n"
+":40BAC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046\n"
+":40BB000000000000000000000000000000000000000000000000000008099A0001000000C01CF6FF40E309000000000001000000000000000000000000000000000000005B\n"
+":40BB400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C5\n"
+":40BB800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050616E0000000000000000000000000066\n"
+":40BBC0000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024\n"
+":40BC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004\n"
+":40BC400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C4\n"
+":40BC80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084\n"
+":40BCC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044\n"
+":40BD00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003\n"
+":40BD400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C3\n"
+":40BD80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083\n"
+":40BDC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043\n"
+":40BE00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002\n"
+":40BE400000000000000000000000000000000000000000000000000009099A0001000000C01CF6FF40E3090000000000010000000000000000000000000000000000000017\n"
+":40BE80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082\n"
+":40BEC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054696C74000000000000000000000000A5\n"
+":40BF000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0\n"
+":40BF400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C1\n"
+":40BF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081\n"
+":40BFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041\n"
+":40C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\n"
+":40C0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C0\n"
+":40C080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080\n"
+":40C0C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040\n"
+":40C1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF\n"
+":40C1400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BF\n"
+":40C1800000000000000000000000000000000000000000000000000028099A00010000000000000005000000000000000000000000000000000000000000000000000000AE\n"
+":40C1C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003F\n"
+":40C2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000069484452000000000000000000000000B7\n"
+":40C24000000000000000000000000000000000000300064844522044697361626C65000000000000000000000000000000000000000000484452204175746F00000000006C\n"
+":40C28000000000000000000000000000000000000000004844522031580000000000000000000000000000000000000000000000000000484452203258000000000000006F\n"
+":40C2C0000000000000000000000000000000000000000048445220345800000000000000000000000000000000000000000000000000004844522038580000000000000026\n"
+":40C3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FD\n"
+":40C3400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BD\n"
+":40C38000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007D\n"
+":40C3C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003D\n"
+":40C4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FC\n"
+":40C4400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BC\n"
+":40C48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007C\n"
+":40C4C0000000000000000000000000000000000000000000000000002A099A000100000000000000020000000100000000000000000000000000000000000000000000006B\n"
+":40C5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FB\n"
+":40C540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004672616D652053796E6300000000000013\n"
+":40C580000000000000000000000000000000000003000344697361626C65204672616D652053796E6300000000000000000000000000004672616D652053796E63203330CE\n"
+":40C5C000487A00000000000000000000000000000000004672616D652053796E63203630487A00000000000000000000000000000000000000000000000000000000000089\n"
+":40C6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FA\n"
+":40C6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BA\n"
+":40C68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007A\n"
+":40C6C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003A\n"
+":40C7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F9\n"
+":40C7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B9\n"
+":40C780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000079\n"
+":40C7C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039\n"
+":40C8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F8\n"
+":40C8400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B8\n"
+":40C880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078\n"
+":40C8C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038\n"
+":40C9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F7\n"
+":40C9400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B7\n"
+":40C980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000077\n"
+":40C9C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000037\n"
+":40CA000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F6\n"
+":40CA400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B6\n"
+":40CA80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000076\n"
+":40CAC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036\n"
+":40CB000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5\n"
+":40CB400000000000000000000000000000000000000000000000000024099A0001000000080000004000000008000000080000000000000000000000000000000000000095\n"
+":40CB80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075\n"
+":40CBC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000524F492057696E646F772053697A6500F8\n"
+":40CC000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D3\n"
+":40CC400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B4\n"
+":40CC80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074\n"
+":40CCC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034\n"
+":40CD000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F3\n"
+":40CD400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B3\n"
+":40CD80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073\n"
+":40CDC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033\n"
+":40CE000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F2\n"
+":40CE400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B2\n"
+":40CE80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000072\n"
+":40CEC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000032\n"
+":40CF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F1\n"
+":40CF400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B1\n"
+":40CF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071\n"
+":40CFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000031\n"
+":40D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F0\n"
+":40D0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B0\n"
+":40D080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070\n"
+":40D0C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030\n"
+":40D1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EF\n"
+":40D1400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AF\n"
+":40D18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006F\n"
+":40D1C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002F\n"
+":40D2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EE\n"
+":40D2400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AE\n"
+":40D28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006E\n"
+":40D2C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002E\n"
+":40D3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ED\n"
+":40D3400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AD\n"
+":40D38000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006D\n"
+":40D3C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002D\n"
+":40D4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EC\n"
+":40D4400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AC\n"
+":40D48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006C\n"
+":40D4C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002C\n"
+":40D5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EB\n"
+":40D5400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AB\n"
+":40D58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006B\n"
+":40D5C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002B\n"
+":40D6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EA\n"
+":40D6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AA\n"
+":40D68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006A\n"
+":40D6C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002A\n"
+":40D7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E9\n"
+":40D7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A9\n"
+":40D780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000069\n"
+":40D7C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029\n"
+":40D8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E8\n"
+":40D8400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A8\n"
+":40D880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068\n"
+":40D8C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028\n"
+":40D9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E7\n"
+":40D9400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A7\n"
+":40D980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000067\n"
+":40D9C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027\n"
+":40DA000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E6\n"
+":40DA400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A6\n"
+":40DA80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066\n"
+":40DAC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026\n"
+":40DB000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E5\n"
+":40DB400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5\n"
+":40DB80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065\n"
+":40DBC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025\n"
+":40DC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E4\n"
+":40DC400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A4\n"
+":40DC80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064\n"
+":40DCC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024\n"
+":40DD000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E3\n"
+":40DD400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A3\n"
+":40DD80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063\n"
+":40DDC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023\n"
+":40DE000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E2\n"
+":40DE400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A2\n"
+":40DE80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062\n"
+":40DEC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022\n"
+":40DF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E1\n"
+":40DF400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A1\n"
+":40DF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061\n"
+":40DFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021\n"
+":40E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0\n"
+":40E0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A0\n"
+":40E080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060\n"
+":40E0C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020\n"
+":40E1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DF\n"
+":40E14000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009F\n"
+":40E18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005F\n"
+":40E1C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001F\n"
+":40E2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DE\n"
+":40E24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009E\n"
+":40E28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005E\n"
+":40E2C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001E\n"
+":40E3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DD\n"
+":40E34000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009D\n"
+":40E38000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005D\n"
+":40E3C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001D\n"
+":40E4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DC\n"
+":40E44000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009C\n"
+":40E48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005C\n"
+":40E4C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C\n"
+":40E5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DB\n"
+":40E54000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009B\n"
+":40E58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005B\n"
+":40E5C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001B\n"
+":40E6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DA\n"
+":40E64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009A\n"
+":40E68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005A\n"
+":40E6C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001A\n"
+":40E7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D9\n"
+":40E740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000099\n"
+":40E780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059\n"
+":40E7C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019\n"
+":40E8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D8\n"
+":40E840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098\n"
+":40E880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058\n"
+":40E8C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018\n"
+":40E9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D7\n"
+":40E940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097\n"
+":40E980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057\n"
+":40E9C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017\n"
+":40EA000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D6\n"
+":40EA40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000096\n"
+":40EA80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056\n"
+":40EAC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016\n"
+":40EB000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D5\n"
+":40EB40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000095\n"
+":40EB80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055\n"
+":40EBC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015\n"
+":40EC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D4\n"
+":40EC40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000094\n"
+":40EC80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054\n"
+":40ECC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014\n"
+":40ED000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D3\n"
+":40ED40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000093\n"
+":40ED80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053\n"
+":40EDC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013\n"
+":40EE000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D2\n"
+":40EE40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000092\n"
+":40EE80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052\n"
+":40EEC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012\n"
+":40EF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D1\n"
+":40EF40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091\n"
+":40EF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051\n"
+":40EFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011\n"
+":40F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D0\n"
+":40F040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090\n"
+":40F080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050\n"
+":40F0C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010\n"
+":40F1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CF\n"
+":40F14000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008F\n"
+":40F18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004F\n"
+":40F1C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F\n"
+":40F2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CE\n"
+":40F24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008E\n"
+":40F28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004E\n"
+":40F2C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E\n"
+":40F3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CD\n"
+":40F34000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008D\n"
+":40F38000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004D\n"
+":40F3C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D\n"
+":40F4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CC\n"
+":40F44000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008C\n"
+":40F48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004C\n"
+":40F4C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C\n"
+":40F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CB\n"
+":40F54000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008B\n"
+":40F58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004B\n"
+":40F5C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B\n"
+":40F6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CA\n"
+":40F64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008A\n"
+":40F68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004A\n"
+":40F6C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A\n"
+":40F7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C9\n"
+":40F740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000089\n"
+":40F780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049\n"
+":40F7C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009\n"
+":40F8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C8\n"
+":40F840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088\n"
+":40F880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048\n"
+":40F8C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008\n"
+":40F9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C7\n"
+":40F940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000087\n"
+":40F980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047\n"
+":40F9C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007\n"
+":40FA000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C6\n"
+":40FA40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086\n"
+":40FA80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046\n"
+":40FAC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006\n"
+":40FB000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C5\n"
+":40FB40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085\n"
+":40FB80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045\n"
+":40FBC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005\n"
+":40FC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C4\n"
+":40FC40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084\n"
+":40FC80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044\n"
+":40FCC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004\n"
+":40FD000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C3\n"
+":40FD40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083\n"
+":40FD80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043\n"
+":40FDC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003\n"
+":40FE000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C2\n"
+":40FE40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082\n"
+":40FE80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042\n"
+":40FEC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002\n"
+":40FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C1\n"
+":40FF40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081\n"
+":40FF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041\n"
+":40FFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001\n"
+":020000040801F1\n"
+":4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C0\n"
+":400040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080\n"
+":400080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040\n"
+":4000C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\n"
+":4001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BF\n"
+":40014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007F\n"
+":40018000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003F\n"
+":4001C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF\n"
+":4002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BE\n"
+":40024000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007E\n"
+":40028000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003E\n"
+":4002C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FE\n"
+":4003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BD\n"
+":40034000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007D\n"
+":40038000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003D\n"
+":4003C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FD\n"
+":4004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BC\n"
+":40044000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007C\n"
+":40048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003C\n"
+":4004C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FC\n"
+":4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BB\n"
+":40054000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007B\n"
+":40058000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003B\n"
+":4005C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FB\n"
+":4006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BA\n"
+":40064000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007A\n"
+":40068000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003A\n"
+":4006C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FA\n"
+":4007000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B9\n"
+":400740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000079\n"
+":400780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039\n"
+":4007C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F9\n"
+":4008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B8\n"
+":400840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078\n"
+":400880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038\n"
+":4008C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F8\n"
+":4009000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B7\n"
+":400940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000077\n"
+":400980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000037\n"
+":4009C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F7\n"
+":400A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B6\n"
+":400A40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000076\n"
+":400A80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036\n"
+":400AC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F6\n"
+":400B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B5\n"
+":400B40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075\n"
+":400B80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035\n"
+":400BC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5\n"
+":400C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B4\n"
+":400C40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074\n"
+":400C80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034\n"
+":400CC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F4\n"
+":400D000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B3\n"
+":400D40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073\n"
+":400D80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033\n"
+":400DC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F3\n"
+":400E000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B2\n"
+":400E40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000072\n"
+":400E80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000032\n"
+":400EC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F2\n"
+":400F000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B1\n"
+":400F40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071\n"
+":400F8000000000000000000000000000000000000000000000000000050003CC00000000000003C054A20B3371E40C0071DC00005002022C501C0F00502B000200400006FA\n"
+":400FC000503E00025018FD9A501F0006000000010100000200800000502E010050450002100000335041000280007F0050340800500A020050302080505A0E3E50750003B8\n"
+":401000000CCC0CCC080071CC14085088001150930004000CFFBEFAE1399950A6399950A03FEF507E0199507B00020CCC100050FE00C850F4033350F100020CCC1CCC50FA79\n"
+":40104000014750F700020B33133350EE033350DC012C50C8033350C500020CCC1CCC50D0033350CD000213331CCC50D800A350D5000206660CCC50A8000250BAFFFF50AA94\n"
+":40108000400450B8020C50BD0002640C001852CA017053160147531CFFD8531A0CCC52D60FAE5322200053410002D80004007078000453240C0053280400714B00020400DA\n"
+":4010C0000400551000CC52B700025DE77EEF52BF000401990199019901995539000310001000100053E5000200CC00CC54B201475514040055120080544E0019544C0003EF\n"
+":401100005049000500000000023200CC2000548900088000F8008000FE6709997E6680007E6654A81000300E00BB20090002400040003009000240004000400900024000CF\n"
+":40114000400010128000118D00020080008011670004000000004000400011910003010000800080F039000200003390E00100020001000011870003008100003200601DAE\n"
+":4011800000020000653860164000201001705398370F202E000140100000100900020001FFDD602900020000199A20300014302E00144030001420161E1E30161E1E40168F\n"
+":4011C0001E1E2018001E3018001E4018001E5344004F52AA0000202C03F1302C03F1402C03F111750004FFFFAD42FFFFAEC660180100600C0211604A036C503240002014BF\n"
+":40120000000020010002078004382022041920201E0020250004000082350001046A20050004800080007FFF7FFF301400003001000210700C3030201E003025000400007D\n"
+":4012400082350001046A30220419300E000040140004400100020780043840201E0040250004000082350000823540220419401200507078000460B10010A1F4A224A25469\n"
+":40128000A224A288A2940000A3180000000000000000000000000000000060004F3820100160601620005440000071C203E671C002006025000200300000602D0005002FE4\n"
+":4012C000030000000000400060390005002102000000000040002051001400010008000100080001000200030005000300120003000000010008000000060001002D0001B2\n"
+":40130000002D3055001400010008000100080001000200030005000300120003000000010008000000060001002D0001002D4051001400010008000100080001000200038A\n"
+":401340000005000300120003000000010008000000060001002D0001002D6029000200010000000006000008000100010300A02C0000000000006538380000DF503038CB43\n"
+":401380004086A201AE129A0129AC130EE086F84C89CE069980F26469ABD03B820198C680423E9C5E66103080D20877A5411040C1681E083D6AD65E9C291EF4D5105041409F\n"
+":4013C0004A88115BB47244C938059F46B5887C0F04081520686C0F7028913441634016EC93D90839886882A6882C6902DE8B619EC0099F4329082C69C300C06C1FFD02421F\n"
+":4014000020A9A0C10430301072757105671105403BFD0060EF2163F486D18CA1C56A06F4CF20093E644200181675F6021D43F6200889D161087A7420C66F492E1C800281B7\n"
+":40144000011F4DB010CD842642EF490310C08F461B4CB001463CDAD034C80D5F01F948CC0F1A003F44ED8F83FF04D80040B39A8881B45D90AC0044ECF20529812428203B0B\n"
+":40148000CFC47C8193328006A280DA2C0242083C008D10E00C02835E395026A86FCF67440D1B813093B5454883200E1DFAFC42002CEE8D01C8E9194FDF469F912A4A202671\n"
+":4014C00086BD3BAA21E75697206D4C0985405994A013B00CD42071CC9163D7A8E3DD69A3302DEB0C2437D7D107F7E6C1040D107BC28925BFCC0827E919A11881F081184194\n"
+":4015000016933FCE90287A07BA264C4013B435DF66101C835437ABD10448DEA6D8230F99CD91E8089A00A120059FE61F571D882650041D37B45BFD58823C965841134BD447\n"
+":401540000DE3D12E240610412041D62A8250CB429C00022A695D0C060080447C2AA441C8C150C801C5BA2071710400781DE93DC46A987161196984D88D0248D124F83A700C\n"
+":401580009270689289128C895512A9DEDB458348969EC496F1BB8092D0A8B0CF86CC4496F44148C4812E912F0689309130C8995132C89A5134C89B5136C89C5138C89D51AF\n"
+":4015C0003AC89E513CC89F513FD9A6024FC2A0691410625028FA21784A0F502B8C1001090129348A18B1620D128922899146A28D9148A291914AA295914CA299914EA29D61\n"
+":401600009150A2A19152A2A59154A2A99726613722B122B1915AA2B5915CA2B9915EA2BD8FA19AC60800B480C49A458448B1068962916250FA78D06150348B28312C8A1068\n"
+":401640003A0840F48105022A048D0446A06916706259A9168A2D0A104E082150348B58312D548B6516CC8B7516EC8B85170508290420AA56F9062250348B98312E4A105EC9\n"
+":401680000841848195034A06D566606006236D7E068971CB768F6D141D1E20F97C00D8123539C50824823C13B887886163D1DAA58CB6479092C8036521632820479C929122\n"
+":4016C0001E89447D0A4443D94888FFE7A18282121C7447CCFBC4455BF8406C5FC2450E9DE85481159228575609172C1EDB3D96090E4B805A3F8924618406B370923E9D8080\n"
+":4017000029904921D11D6484B049F5F5217052C1253804015C6C24A748B31508125E28406B490939C0D30A8009400223CDC3A8A02219F0B7511445423E87DE228A6C128BC5\n"
+":40174000A831CA940947C1F40B804C09461C33E6840228E28B83BE09478E1C4A39609464A23DE8EC452058CFA16588A40D11B5A514914202E4900E4D1D00BCE4604A501336\n"
+":40178000CD088814A0823E4902229D2F4A50114FE859A2A74253C70F38B6160A8E5488504254F07E629F84A9F42D410588F2A502F42CE115A0A23E8ADE22B4EC47D0FCC417\n"
+":4017C00058700EC2A042580E88F9A1C08B13A19E951A22C81C67D0B9445983894E425A0C0D4CC25A820D61581E3F493E85CC32E40051D2A0104352825C9688F4DC20B06199\n"
+":401800001808F80DD88C23911F137A11865C23E8CB023128309895002627199E1313AFD18A7A1F58C3504CD18B2E109A384C6C44026470ADA109AA484C8B06084D3A099D21\n"
+":40184000948D3E58A21000D3A043A57FA3729B09BF2C2A3827445084DD0A48274F5D9F158784EA882A5427552613B7D19EC54304EDF444C150813B80C47AACE08EEA502123\n"
+":40188000355C09DF4404264BC886A2C04D5B827B490A8709F83223DAF0847E440F4035CB07ED6609FB32084D4684FE1311F4333080200FA650440AF341F0F3DF21007D491A\n"
+":4018C000472008730C398272C076525D4495F60378000003A8D2380346B1EBCB778422077AE76C7B230848F3FCFF3EBC62AE2110060B9E03B7903A86247B2F38583147039F\n"
+":40190000A410F5C96A076728994810F5ED5A2691D06D821CA65133980D2D81FF451889A471A072A060EEA673EDF38101CFE40E0374011F4C0F27220FA7FF4801E84682F5E5\n"
+":40194000E89895D3C87002A13000329435F37381F7CF60F63D6880E68F5D7E89BDBD8E8F597F0F32CB135068177C5F3E2030E5D9E8665C1C810984020441556F87598A0F9C\n"
+":40198000858EC87A1E8B83BCD9E03187E2AF421E04C1C02FEA54844DE0D6FF401A4750A34ADC20A044186F86447D1A8118800A02BDA31622B0380784E1A74B7491F47804F2\n"
+":4019C00020561540F0EBC0F6E2A8C891370C12978A078F3765102412077D7A2844D0421805FE9FF9236387D389592B186160F2F18AA1B1DADF24041D52331E8DE00CF002FA\n"
+":401A000039932131C2AF07B3230FCE662213861273390753242821009007998B97A4AA07C514231427475CA40835D973E3EA0273A181CD6CC4C524012F3CD098CC0EFAF423\n"
+":401A4000F0420054231047108821A36897BD418032C4AEEF83C4EC31791630F00E51E97D110203A9390DC196F55A22697C308CA0EC8D13B00E394900CFAC91C46A9A4C1612\n"
+":401A80004FC2DFE2454A4C064C27E97683A1A1D45943DF98633A207E0E9CA4B069380C0CF7B2BA8C1B5104009C21AF5F561F869BD4AAC0AAB468F91C1D2F2C218741801435\n"
+":401AC000D00140880387D3480E06078849440308C30ECCE832D0238E33F4781C469F3BAF146881A12A162723F83CE2E3D357A04101A0374E920CCA67E169D2EDE54C83A12C\n"
+":401B0000154BBB4B04431889A28860E98EB53D5A9867B06BC1C513E77C03D90C821B82BC300102E42A1D06B0908207C142B020E0BD450C40F1A88757379B8029DD14A2205E\n"
+":401B400042903AA06C023BF151883CF338736944D80163481C052D3D00D8345B0B038F973DC7A07CC41A2C0584073004534033121E62482E837810650263C191C209836084\n"
+":401B8000D96DDAD3A2059E2408A65CF30A31F4BA90836318B6680563C8E967501E83008C320FEA248C4841AB02317AB3A8674212C13067B2DC86580C0556041F4AC4902656\n"
+":401BC0000D767DD084E3E86A3A8C6129040D82852F49820CD60581B0C1AC6B832690372E1B5B118843E0A218612412317968E9302B070070E86484841028095C8511C46968\n"
+":401C00000251646A8164E84E13069D301E47D8E11E03D045202274282D040E81142C13425A23C0CE0FD75044255EA023C340A75BE921CA3F8BD754880F01104C417694889B\n"
+":401C40008014D8B7CC21070DA37ED6C03D0693905276FD56F434A0C1748011A452A9301C8630681D20018A8D1A9603348104BB5748775D09344C20808203C156307D878BFE\n"
+":401C8000E0449DE6272208FAAE504002589D00EAC821049743B2500417EF6411EC5EF101422AEE1851248D02D82220030EE1791240271C04BF5F79080D58E40B02A88E824E\n"
+":401CC0005F64A508201186140CCA42902024028892069085102530653468FA1D3CF7FDC19F078E07880BCEB2462C0B3260E6213CA3B83D41E840A498818401C402BE392454\n"
+":401D000036004EC8362604C2C4C0DA9BC7B23F082BE91871E12623D4F062247A7B28CF21C07A19CB8198B98633BC7804E9B0F8812E8C00B884044031C42F0A0440DC3EA104\n"
+":401D4000235702C159CEC044551C4630642DA810093B40DA673506A00690902A0A8104C90279949CF8D847018C10B28CD3500C080853E8F98193017A47F710190FE515F381\n"
+":401D8000E10C1CD310455EE1F62970DC8634DC8FB362106AE8583500C2281D18395D9200609C0E8C1EC0BD3ECBEB103042862B750DBC440C0DA1880D3981DEF1661DFF287C\n"
+":401DC000BD4AA62481E404F615F14A4B9B6A0F776889DFC6EBC813E99BA1200793CECCC1EB8DC29884328F2E9A67103BCFE385DCE223202F318408F219F5CC094846790066\n"
+":401E000039CFD73C05C14684CAB83CC7AF23FB0C3917C98EDE34A73E54D02159EC428FE7984E0A02867C4A0031587F9961289D74880FC0A1E3EBD6C3E91531ED4942130A1D\n"
+":401E40001431E0475335901A7992269D5499143873BA7109D0EDB5512D7B50EC79DC1892DDEAFA33E103E169200C767219544A262291A0398D7E2334160D00AB8576110095\n"
+":401E8000500F21E4811B82808203AE491ACD23ECCCF13338F8B6B07CFC8420A1AA10F7ED48F862F4496057BF681025816EFD9F409605E1041AB1725100C01AD0B4AC0728C9\n"
+":401EC0003A6C078E825A0DAAF14016E84532018E6006BE50BAD00E621C013D80002A1C8178F3DFE087B49BA4023A3A70B900048847D80C865A751D30DB5E2E410F50348D6C\n"
+":401F00006705210373C5F70201F8EF586F031602333CB7E0DB2330A1778801A53D470049D62E626C00F6242052D0A36463285CE998F2CDC160E82400D8512392382106E128\n"
+":401F4000A160E437FC0F2E32344B01FBA4560AC5007A84007F9294887102EECC01CC5508D00D45705C5E2980002836AB12028F607440A063418682A011D589CB40603E0754\n"
+":401F8000E0B3A51FCBCA7783DB2BC33DA5831807C108900368490260AA0207A46ECC04188B89C06EB1304A89882FDE7EE33A00126D4DC64D2BCDA8FAFE307A90946190BBBB\n"
+":401FC000D806B184B99600220AA010049DD31073A244801D371807DB6542604DA4082616B01F98084F8C06146172400EE8F6F23A0078844BCEE1CB105E1848448A81C40B80\n"
+":40200000097CC49420ACD6204855351012772BD42A65E0E071334397E8BEB13D41EE868D23C41C36037ACB23F4B0EBA5E9040D613CDA01EE93123D2312EE04704B0F17537F\n"
+":402040001F60FA897405F843BC704189A423E0842F5F629C3008A9F11991243B426C58EA13831BAD4E5DF79A201799A492B3A0598C882282CD8183542A0C00B052CEA166FC\n"
+":4020800090E48FE24150E44D0A148990D5F7C5D0C36268861D291C37272066162090C43D1323A17422162299D6431323A9D6421620A1622A9A014E3F702C03FE2A0867486A\n"
+":4020C00069E2CCE4CD109BB8E044402447AEA08D113B806F960F6120F1DC94400C45D448592C080EDBC62310B116BC9A84993C1A21DCDC020CF4370085074116051DD80AA4\n"
+":4021000000D005CD0060A6380A6284083881DE07A42009CA1A77689205D03BE8FB612437F939EE7704393EF0841EB60C210803BFD22BC00FF3BB831621C380900E3BEAC805\n"
+":4021400080447B979081D0D11BD4081E2130A90830212001C608EC4C25D21405E16EE13400DE192457ED01A40614406546C7820247B8EFC7B24184091E055F26CB0840058B\n"
+":402180001F3D185E3E9AC340074E732E8A184FD63647EB1FA43D5E44C0E45C615C2E8F5A2F36068E2090100D2023D602C557C3EAF2511C8A8F5F41A1EAF243201440209130\n"
+":4021C000FBF6C00F47AA0801E2D942E5338666D60A1DECA440407C1A181EBCA621CC1A5403D5DD34E42D03BEBB6F1F5E539C39094A020F0EED103FAAB9100383A89310BA58\n"
+":4022000097E100382A873F5E55981279068A00007E1A1C09E120089A41A7AEAC1DAD400D0E07D020A28B1687543A89D4BBC3E4BA0C04C61F4B6709151A3EBAAE5C23EA9784\n"
+":40224000F13C80AF1DF297AEABD098038AD89731711E82871010C61E40EF156D1618D0E2B38229734032EA05F1F20BFCF504E89805B788FF1101C930D385199F6E77A4685D\n"
+":4022800084FE334F129025014900FBA493D034824F1E8F88480D0F487AFE0040F33CF0048D6088961587903BA7208C033481D3441E8D2258D78E2194DDC2645E960D13104C\n"
+":4022C000E10EBC964820776153A05C0843DF8FBC079D1F08063D8DFE3AB22F2271882459821DC2B02088244D002068243D7943D87A47D87AB00846CC1881D92E63EB6F71FB\n"
+":4023000067BD568AE26002FA1FFC7B74754B4097AFCC112111077BDFD8F82A20D44010154E8794C54896F279B0F55EF89BDCB05C48D44FF40FBEB1DD11E42F4008E02643E4\n"
+":40234000E1593135C1E1BC02EA1861007D22C45D5B9860196C5004E2A83460754CE8803CD00CFCA62A3C16E080620C0EF298B082E6E022A609BF700501B887459F0D0F8F5F\n"
+":40238000083E3EE3C9115B0060DC4202686840652323E52E04D90302CB560819EBD6320D3CFBD48F8C0A913654CBE0110151AA75F9F5F4580300A074204FCFB064059FD080\n"
+":4023C000C43AF8C0A93C3BA038F36B4102CE68B2E918032AAC825E30271E6D7C2059A5167888C5824931981EF1812A0732817CC4D4099267770FE9346D260291B606438E21\n"
+":40240000E0A985F00140071080F4EC017438A896460047D80E6210622A33FC648C4478E9D8B31F3CBAC4318830D62DA21D0720BC781B2BF40612647209F098810008045EB8\n"
+":402440008254301CFF2E84B4385ABA3D211E874ECF280612D510895FE8EE24BA7670CAA1D9037040EC43E30380303C16EB6A41F3344970B9912980F1181E080D90ECD0299A\n"
+":402480007AC9FC7A1A14498010D2293D0C462522A9341E7554C174BD81803D04842231341EF0D4D1066210EC7AD2603EF431A8FA16F4FA5DA889103A4405800FA01990BC07\n"
+":4024C00019403000B8BDA882BE654120948A06CB8E2F6820C782024487929055C96FC803F431EA5D993A2480187B069DDCE036890A1A20BFA29F0BA4AD47C992E217059EFA\n"
+":4025000033DE2E8BCD2E5E1458E4002204FD150A3E863B26029984802EC48F26800E9EB41F206EA23F19C3C185E858112AA672A6E206F5E9210E240F4EBB95B80442E9C93C\n"
+":40254000B1F42D498573488FC01036357496390E6074388FC3B21DCF0E7428C0C1AA83203C959E8AA7294149846C471160E3A000EF0C008C978041A0300F01A754AC9E2AC5\n"
+":4025800020F01FC153613C0C3F432617280A407514FA7E0C40AF233908AC8021D594A5D2A0444F043480312445C700030034810F0A198B1502A00DEB69517DF42FFA7D68C8\n"
+":4025C0009E211026C80B3290FD454C82602F0C1827803A882F628694627E7F10164210383FF4363A3E344E1600B26AA1D1EB00910147EA884BA1F8C589C0BA1FD05962A137\n"
+":40260000826429C0CFE4FC522244F00B530548113FBD0C628D1A302C4AA2C8749C4154925450BA28F87D0DC827090C03DC360650CA5D0F01D8F42A1A60B54C1F6DC00FA145\n"
+":402640008BD03C4F234413B8143B43E47A47FC4D403C7D2D0652740913C0311789FD178C1494C5E4391D8201F910091BE98BD0D285E3E0C206474F43AF933D2EBC5E3E1216\n"
+":4026800020C79D371169D05C04060FD66311E0D80FFA75D0AE55004494EEA4613D89A147A9E187A64FC7D52A6206F4FBC164EC881F77A09800480C0EDCA2035757159625E9\n"
+":4026C000B11430C2085BE20FB2EFD991117AFAE4494EDD423F0AB991C40EF5B7E9741E80E0148077D0AB646074E5D08A3E6685203CBA073A832C78BE78965085DEF609890E\n"
+":402700005D139A41074FB51E3F10F44AF0FA24788AB26052340D504049200803A099BFC4414BEE22A1CAB360DC3FF06A0805DA90838354848E2C8C46A1992D2188982A3BA6\n"
+":40274000C1248DB22012EF4961E8BF71340C8180A81A03BBA803A24BC7A0B2C402007B6B1D1C79267F1D26A17FD1B0C43293072F427C881A6B9317799DE65171F29E5BF923\n"
+":4027800010F09011BA0088FABED87C68AE3DC9CE200FA31ACF866D91A059F8C7F8BD830480FFE213E48860D3D819EAF7FA38957D50602069A6557662E17A2B5CB87B308013\n"
+":4027C000BE8ACA21F86020C62E85021BB4C01F348A6C77F1DF5A6604FB0361020B9112974F909744EB990411754AB176A251C20E0FB8EC8C32F070D1FAAAEC899980425FB9\n"
+":40280000458211D050C1993E6912F333CBEAEFD1428E426622291F0E52A45C0597F9C9286810DC403840DA387DFA503DFA46971A431EFD241C9F62024960D3D7EEE880E7E6\n"
+":40284000C869D9A84A0B41A2A1A23BDD001D75CE5D44A022C06C207A2314BA7FA078BEF08EC0D78A2D878D3E2A1801AC7A9FE07A7E787881791488F4FFD91A235F103C1FED\n"
+":4028800014578B0462448302513CD06C796D09F2D831057C5AE25DF84A7D98723D46DE80040C7A0DA47B9CAC49001FC1FF0268EBE02440E1F444168000A09BD379C56898C2\n"
+":4028C000F4257977C8D933E84C21F149B8CDC058821D8884414749F20D421FA2C8C41323B067861E40CE5A9003B6F844043404DF33A38887CDB1C6900089D3FC650E2C77A5\n"
+":402900000CF178B848402ECF8D225822EE1D31178D011BCAB7C223114301D00D77F9A0905EC11F13079480491E3C9E05B1C44B1C63788D81F022006717C7AF3EDF0800598D\n"
+":4029400016CC73B951B68801F1C43D02A5B086308F0690725C182553182E4096103BA560412E14C65DCD022210FE28709AA12109610F850894C00150058C8E3B99D0484E2E\n"
+":402980005FF6414790EA0B8E9888F1CF188C0F00834501FCFDE419E20BF80B504021CCC0E82CD2EEB0F1137B210844003F08007B3360823430198F631E97794321E57AC23F\n"
+":4029C000F2BD816C43C2C03E77740731600610819F34A917A3400FD19E890988FA33D8DAF47C31E6DD17A58688306400F004723C45B90B8D90F467C2C1A039221232502515\n"
+":402A0000E23E44522F1ECC2400979C45347A13704D039AAAC0D539BA10EC404A1A360547D4EAE6587114D32D0B043AAE64EC92A79FD2C7869F952D11438E2FA1C456CB887D\n"
+":402A4000AA97A35F8C623C0031D41A340D3F46C0168F92B9F018F4A044841DCE1C7C2D706C5221A0B20B999D75823E25932CB5616004EBF921A733CB2487C30AC3E14F4175\n"
+":402A8000BAC802B05B88BEAB0E182744B2A9E104386A80CC9072800081A25FFA15610C36421581C4F46996BC76D86DD23D920C910A1182BE8EF339905DB927E948DE59F49F\n"
+":402AC0006431C85200D330187A3C1D4F464325D6B2E40AF1C1B5C3001EA0D13008540D025B976CA3DF94E3D0A1C5D56043C4A850F0B750D8C8420EE7B03EE8F52E964D12F5\n"
+":402B0000582287201B4C472CF3AB42E32323C4BF871C105D921C446CAA34624B9EA211B4DFA20EC804104B60809608610C214022E22CC208FB024470E18747CB0F55E1089C\n"
+":402B4000005B047D6BCE80796A7109C010347A0D3D1B9E58D043A7FDCA6203291CB902E26202007852F0809BC00FB90EC7BEC584DE00B851309BDD96F27D96EC3E121A2A7B\n"
+":402B8000643D9D2426377F998FA365C8721ABA6CA0BD1B963DA9B83C4F34403E8C7326060F46BF23E840B1A9C2E265C555EB1A22CFA35F99E264E8F13253E265E339A01CE9\n"
+":402BC0002B77D890FA35F90F4463978B2986853CA40720016419780D04A85886C97843CC83F723994C36721A3AE258A8F12C42E25A853A201BAB7B0824407EBD16320100A8\n"
+":402C00007CF604E682E944F1053A275040EF355391CDE10741F5D70888D185E434E101AC9646803FE30731EFF3D1BDC8444F15F89793B60BD0B1022555C19F1D13E25D57B0\n"
+":402C40005A5D1C225E59CC1083881F22251B1D67402780919CE865223D1F1859C905E279A3F49D3110CE203069E8D16795ECC8BD3B47AD8707C393A3E906B63CB8BA7D6734\n"
+":402C8000B83D2E067C2E908B83C007A2E5DBA4A54180B9090B9CCE21F0C8E1545978B1608D13CC91083B7A189A110C2EC61F1E1A1A5D2E5620355091B15D6578815518FA71\n"
+":402CC00071750C86E3036F4A50083790F36D22A60968397A3760EA041803F00A8B415266EB02A4901AFA84E44C22407F6C0B5205CD7F47691805E7B631EDCD231E85DF4610\n"
+":402D0000EF23D0ACC3DBC408FA3779D024660D132ED46C9720165888960E7D10CE4C182BBCBE707BBDC8420BF58C12C9BE1EF2162EB0FB1B188F4C218D8C078CDC157689B3\n"
+":402D4000CDE8DE24C8B0410A0020C027A194BF20348FA371C7C452E25721E89612327C56C09B010F61700E5A01031C417068B0992481261260E21C164386540E42440EE9FD\n"
+":402D8000FB52F10760F76AB884DE2B4122DFD1B9281A84CD1000B547D1B90A1A6AF81D45C4C7F3E8F91E0058D459770510D6684E41DE8663CB67C8031250B9380C0028ED58\n"
+":402DC00020C72E8FC39000D7228870D80E0D81C283D1B42409714E6104BBFBA07D40208E55215914063044E4F46D1BDE750F11F0980286E2C8284303680EA31F0D99401510\n"
+":402E00003C090EA5633073358841D3C090AAB20AC1043AC6204DB028BB200931A407E24963976E53D800637611723C0800347D1D0183C083EAE3413C4F0B09881B62B1EC01\n"
+":402E40004681EB63C1F09C198EA68F86BB0AD062271C0447501B11A630840039003F1A430F18C72A00055F298A1BCF02C703E7E3D20A3D2FC45E1B0348F40801716AE8100F\n"
+":402E8000821048E903BB635C4403642103C620D3CBDBA23E82BD55EE2407894844093C00D09614C0F12A3040950918B156B01D5A9207E054D1133A2A188662E343003D4F4D\n"
+":402EC0008E274108876A568F80AD878CAB8C1878EF30817EE8DA1E4162267023E8D8D4886A9F16817383D959E40608D4FC8D10FF1AF218FC0785BA23E95B858FD14387FDE2\n"
+":402F00002007074100C1D82BE21BF1BBE100493EF0B4124C43E22C63DCFCC2690684985259041D9E782011275BD0301A4129242079AA15306BC76382201D44C78C5B10F166\n"
+":402F4000C3A8857E48D82F3544238FA6016209901723407BFA584D309C700A09343B0A947484F21A21E89003E176B3D0A6E2101A00E5D463E4F3013401EF09BF087FE2BEA4\n"
+":402F800044FA3DA11D03E1742911600C4301021E0F322E274840B08181210EEFD43DDCF04DF006080EE433F510F47A125DD6D0650603210211D5A4D00FE8656487447BB60C\n"
+":402FC00048EE54263A2DD0BA48B4408F432910142BF43BF10101DA06AF88EA91E99A53600BD3DA982902B841E38AF109898EDD0311E430E52DC46D7ABFC878DEC880645D26\n"
+":403000008C403D1E4021A45A2E83DEB44D130BC8AEA455F0A6D3F632C094A88182F069DBA62A87FE2C4611D8A8F3D03903626063C43087D18108F48C488EA14305D73DACD9\n"
+":403040003F37E7184645F38D81E71942127920FC41BEEDFE9908068607A305D71A8D12E900A881F47800F11E1102801300D02E38EA9892D872C7D1828BB5E8C1321C1003E5\n"
+":403080008172C500C9DC0792B7984F17A710881C280720AEFC02E15E022197C308363863C1004C749101DC08753A388804AF67E508127F588CAFC92ED8F729088E88F1DE0D\n"
+":4030C00071608603BD18167E2EAA1C34F1E8C0B3D32DC90C0837E8C103267D181C88E0A43A32251438301D19120CFBC20C580557DFA7B3CB85C82A51BEDC181C90F17E304F\n"
+":40310000B0C5211E82DD11E3C0BF42098EDD3BB662116BE8C0F481436BA4234C090AA9597A32F8895F4607240C2603280903A38C5046F422F454E8CC220485D6AD21C0DA6B\n"
+":40314000BD14BD182E80120D4491AE31F138D1103D181C89950A6D814902EBF45EE18A887A30411020E69517A2FB058BB5C02AE89E32F45F68FA4E20DC00832A723F6354D7\n"
+":40318000084A404F6597EC2415053E92451AD62F461520040DD1455BE1D4A9C5D682E39FAA42F449764B1A10A552C3E8FD92F0183901FE8BDE2CFFF29518423383F291E7C0\n"
+":4031C0004E82C53F3CFFA308A527E8BF84814E926C2626D1C2FE35F00034710E04179C480BD186E468053D4C68207CA48DAF43350FA4EF88D00900805AED8320BB14ECB12C\n"
+":40320000528891D26F65D41822240F2780FF522016E62821C3C08441F157498587B198117692AA3D915E46CF35342C580563D816E4A882240203BA349F02C75873949920C5\n"
+":403240003C3FEC5BF10631132DE6F9847D1938D5C1023E8E188A88DF0038A39904BC837D00A80F1C81C1811C8C72A7214C80F6103D1886A04897A0D2C72D7440F13A4480A5\n"
+":403280000DD3C4627B09FE8C42582454C3DD0058F80EB40191210AA6044802C688A43D1884A305D0162A289B07FE77C08266B091D5DF020CFA3104BD188A5D0A964D18F92F\n"
+":4032C0007983E8C433BA882042C0E1E8C43201908E2E45407E8C43206886301406C636E00257B56D0BD1886572B877A098F222F1F4621A1D33942CDC86039945D5A0830A96\n"
+":4033000004111E3F8F428753CC1044D0D26D17DDF5AE4720F2681742112A707AA8B489528703BC78F5B047AC6DE23E74E4408FDE8C4144822DBD18926E04021200219222CA\n"
+":403340000B484022BA491848C2D7A4518404137D18965E71F11EB66B1EE5D21113882C88ABE932B2B48979DBBC4841C0C2F461FA85A888A9E30C6160944848604081380201\n"
+":4033800000207301C8F0CD42B70424EB9602870364FF340282C02182034429ECA5B160A08422A4D70A4180A2F7A10A0A70206D01CA7E64B020A880538160C05912212F12F9\n"
+":4033C000D02600CEC06E160D1E1ED020D1005381A0C0690C210A20F778970B01C23A5DB1078E0134180F02095001F9FFA5E403F1108081A81CE80C31EF2731E811B3C01626\n"
+":40340000216828C74BB38FA83D51D0D38923C5818C74F56B5A013F73E889EE32FAB6484C23C4E501C250CFCDB788808462168E0BCA874F1437B40019E9F9A3007C24F020BE\n"
+":403440000F14D81007AD99840108D1C54F1E99303E856829581AA7C014150421012A60615D1EB156220FD01CC4790065A980031DA19981D2AEC8420730F11E80991DAAF04F\n"
+":403480008D53BCF736EDDE0691DE10EAF604B5F41700C591A60A79D5E44432C8623DCD6E705C81FE5F758008C48976434791C670468994966CF89F6C840810A040065959A8\n"
+":4034C000A43D58EC3E0C9C108FCEB3A26E92087897310BDBC0D136C91EE74E2ED7BE1340D9F3A7C100C34D02400D3991354D3087CDE7846A7833B8FD345626B1A63C7ACAB9\n"
+":4035000098410EB0F71340D136FCB65E3060540C10404475443084207F9BCD520286B087C38BC3E6F2F48BD30C0D1541240A60815E6C2A104C4D40B44D0780781DF37982E9\n"
+":403540001E6F2F53DA7765E6EC12F39710801E6EC25403F3798B9D0DD225B4F60780B873F44D490C5CA67C7CFD9473CA3E6F311EF29F1602D1049242480C0226A95B188724\n"
+":403580009BCC8986014134A6F682291BFE6F2A4A1C0EB010B9266681287A25CCC1F34C9824C602ECE408E7E1F377F091E530406993C419405E9D4129A2491C3E6CFA1F37B6\n"
+":4035C000941F938445903CD3264BD891240A18D1A22005F9BCA4A303A6828706E00A4087876404B32810008B3382931908B1E6F2819D848B718503448A224603408AA4A03C\n"
+":40360000021B367402A7D88E458E3E18E2B08243111220218E9220D3218832F8D2218A228093134F0ED54D2144D3210832FCD220A20C09489134C813487F20CBE596021740\n"
+":40364000471A08F6488548016C07A851F12C8CB0489A23C92287A01AC478ED15510240107C90EF778134471244572C040EAD0E1ED6323619F37DC0F0DFB1F3B9808E2246A3\n"
+":4036800084B64061E8309408C3EA1831E88C1108850C0471104680D2020C34400A8480BB0410CE0687C109C0469800208B141D3F5C22E100129A031F94D41202CA20CFBFEC\n"
+":4036C0005C14F105D8B0569AA2E74EE18805E7EE447C0770242981E7EE552E5E0F3F720B06B099E6C771150D713CA50009F0249FF3AFD10245E8104F80E3AE0733F5D39803\n"
+":4037000085512209F177B1F07B19CC6393B0802E0A79CAFCC0135B54AD2607A5A70B2C150E3642208F904E4BC62EC20AF4E2A8B26500A264795F982415DCA43879D07C5956\n"
+":40374000ED5A728B130029003B92B07D2D6A3D5562900A257553589A83875990902FE0B6330BC0B37A9900E2751A218FA727040C1C4DA082FF781000B328333839CE28DE5B\n"
+":40378000363D0F785DE74E314028812134DC5D5C9A51A1E8FB72F520D21E84C220D0BED24A1321A63841077097241133D2538403613847C52FC5E9D82323110D30AF24222B\n"
+":4037C00033D76F841A8D88F9BF78C994BA43A082CC9A443C19D85DC5185EB3624BCFC0C64C243527C146844A35DEAC857C70EAC42FD17946180103F039A1E83E985B1F640D\n"
+":403800001808101F039A1C72E892F4809094CA0544CEC974114B96E70D8400ECC03423066E5217F30C907A878044EECE1A203443F6A5A8E80C5102C1D08C63E431E407F5D4\n"
+":4038400041B4B2118AC14786528FA3884AC880040253015DDE1143DEBD46C9A26C1702416FE025B1F03E38F8A160804F5750A2051AE6993E0313C1375644889A3E95DC6A84\n"
+":40388000047A7A30803EA6E71CB441F2B938945955E45B00D6080278278E79201C9F0238C830F82544813F04171588080B107C5810544900281D090E342918DFCA344842D8\n"
+":4038C000251EDF5A1F20E3881607E09A0CE31108A892198A231405C891D23B45644027828E69342205A08677480552B2680144F0531C90CA1EE78B8BA813E01574033CBE10\n"
+":40390000848920CFA78615E9B991626F8C1345D860024842082A42D97A093F3ADEA842807E75BC709E083C4FC420B79D6ED2038C2A2E4C034884BE0566407EA525A23218A5\n"
+":4039400080EB140406E7006816EDD3A1ED68710233FFCA248770210F4A490B00528094BD17009859BD443B905873C3A56484A2C8472EBD482C3A2411F81D70BAACF47BD987\n"
+":40398000587B027072F584EA0CF40083E7E3E434850385900C1024DA89203866AB606353022C7A3BDC583193E2784573B09C879623C0EF949103C85B2A814C1479E7584053\n"
+":4039C000B63CEA847DF7403C74044D61750268D11778F83092D293EFC5F108EF2E1D7EE8821E102913FBCD3084481C0805E040CD6BB13A7403446A8A7E5C2610480C034232\n"
+":403A00004190B5438EF789887802981F6015E4A9E419484581E50EC6812CA4A289446A9514940D711C24030A41038B0621E20CD93801D195BC0944380E58319000CF102437\n"
+":403A4000C84069571E301E7B9A5C89287B41E87A85C0C39EA1D643A7E388BAF3AB688206C100401E45679D5AD30FAB08886E86501F1D921F7FBD1DF182C791FD463C81E5FF\n"
+":403A80000B9C2042F3AB629E756A2087D745E879D7044033E8091401D1ADA32C208A50FB403C6268037C91DC8EAE8E091605121BAE78C98F13AC967011745328865D6124CE\n"
+":403AC00024890D484022298003C4F6218020284500411A06038845E063B1093D05D4A02DA9622271A27352CC5AA1A43D319061A63A04B02809B8CF4B8B171A8C1087A8913F\n"
+":403B000084D1CACB2EE5DD1F12E289A27BF2800435CD03AB921E9C20101C8108F939A162AB13C8813839398A4689E048A04AE6919794614723087A867C726FC4EC22314540\n"
+":403B4000976F0B0F280D260F26084F051B918220901A18110D405E4EE08069E1AC12EA2FA1F00330FA3A747940C9776C7A1E76DD2F3AE289B86B1BFDF3D422A02C150222E5\n"
+":403B8000B858200404782C1402229F73B009220B05808F99B5058234783CFB82904D81E0B3831143AFF20BB722C7CC356238E25B102C76B351300412C0BF5C86093D58259F\n"
+":403BC0008CFCB8C078DA4C7AD528C5690238B94581F93E55AE321102C728640DEE4994897C481EC2BFA062C481C50A4C0452A2EFB9A1EB05B1EBDAB304A2087EF13118E031\n"
+":403C00001B81F8D309815054D13C390390816174C25D79325DFAC66774A8C1253028DE660219AC052F2F2A1130105BA12028F2501EBAF774B15D1014575B810D24F1C4110A\n"
+":403C40003C9F724688216DF480A2293EACD519C867F0701E93D29F89833A00C05FFB579CBA3DB87D347E5A4D21080C2ED711299C484ED71340D622AB2848AF18DF173F7CA0\n"
+":403C800013A789FC8880340539D9A79CFC253743DC0F3FC22EACF34C8AB9A4AC7E23190C110D604F1BCE48A6EA83C11CEE5147AB2E07A74C06C981E138B43A8448EE7D0E53\n"
+":403CC000ED7050BA0CFC1E38400753AB0981E631F11088129880F6DAE092627FA5A64406DD97C7C47CC43114263102638FA7284C071206714233F546F1102340FA628460E0\n"
+":403D000071004194224762769102248F652FAD3E47C49A83EB53B3194D31589105306681027666BA0980588E984CC8D31507811491157A4B387DA2442588EB23234C508942\n"
+":403D4000115948765F497E8F2EB63A76140C02703A80030211425610001CFE44095A3F1CA1281C4819A508DBE6F4931BA7E444E5013C7D195669FAD5E50294D5104A1ED9A0\n"
+":403D80001E9C2463E6F212F26699306A87C3D00A8003128942A01D280265E6F493D0EC8909C6A0C6A000E140A22004320412284D2F37FC880BE6FBF2204D3F37E0153D0273\n"
+":403DC0004CCEF37FF9E0408050A13CFCDFC83D389870E20A9425A2371D81422A9A413449124200FD99983E3101107B270C40D254A0034D104C9FEFE5B3000932B0B3033C0C\n"
+":403E0000DF5644981A9D210E542220712DE6FF42200B333680A001888802CBF040A176B6925E4B404C34472F08C2E47A5490BD1FBC9FA6B688C4B8804204701B1304D42031\n"
+":403E40008C9E8FEA632720C60200A2CD50101FCB81626BD2D4CD8571E0C541B2509F10E2271425CD7899743C2157404899A0C8D1DA37632022947803CD6160D51648D3B07B\n"
+":403E80008E300270089323FCE496754600B95A665401302BA7100680A449F518E882A0C820675D72459831E436230747F117D02984690992243D27A83E40F71EAD4D2284D6\n"
+":403EC0001DEFBF922B45834846AE52F133C1F773F09204715A2CD5B1D8900412045F20EC226508FE98FC229A61F1A41F10450450552899A510C0990430D81C7B18C44A2FEE\n"
+":403F00005B721F48D1086F576049008591495DC46A86A98F03292432FAB87E620315F814B2223543189119948A66016A8676453AE20468245421D026869264222C8A866C8A\n"
+":403F40001C0597713995D580110F032F9ACA047D228342ECC0087C81953E7061401ED3E051A219940550E9E346C106B8D86174AC28F477F1EB0D858222E211830B1840F420\n"
+":403F80006072B81105CE1E570435F0054041E263330579C514841D0A08584302B80484488EF382E2A1E321A86918252243C78775951C91CEC02033D48BC708210A3E19DC19\n"
+":403FC0001F43101E14C20D42CF3816365B247A3D3A01CC7370118501605E1986C1E9E10142188A238922609E2A9E02E8BE30C418C6338D8388EC3D90042914471264B133C1\n"
+":40400000E702D92A4AE2D4B9300C73800018C5B3C0CC1EC423C0CA1E86C1CC2F3C0C61C0680205A0CFCE04E415A85F0605F381ECA10E05B381E0A2068DC0DE71B8B00AA6F9\n"
+":404040000692C0DE6AD8B0078F6221E0520F6229E0510F6239E0507483A09867813C3D8E51024D7486B97147B1258EA1FCF001FCE04487A18007072811DA3EA12307B1600A\n"
+":40408000F02287B168F02207B164F021873143B117C8F020AC5455A44780FD125DAAA24780F10A8996780E8A4651E03732330F01A9919A8191918A785D760C047E7023215A\n"
+":4040C00072251338F0159A20CF0153234460C050F3C6708E27809C069CD4743CE040406935086D01C0903670280C640242E47885F05815C80442B36441D0D30D3F0294088E\n"
+":404100002281EE1EF427894268851E7019400F27B10E4304DA9E059187024FCE032E9E88022D80666069C40E714CA1607B98100301AAAA2F6759944074EEFA22B866A06A7D\n"
+":4041400081A0786C0E041E7029480F1EB384C44F3C45FF56B420198806A80E079641094042F71F2C867AE3E3EBBCC1F6E611C2106A7271CF631810D1C78FAC2A045F2A0AD8\n"
+":404180000820CC3D38538240053C433D6FF0FA91FC709080BA7492DE37B5100CBB397A82C4BD23FC4690B58DCA0011788214B0948104289402EF8781CC02F0EB58F285012C\n"
+":4041C0002803DE9E18114C90C690029FAA9F045347C6C0C627920131A027C4089EA3440422484D0286609518D882EB6860602B50304A41FCE0F05DD21A667111C81F590AAC\n"
+":404200000F67A793023100501800076F0C978D54858605D0CFC17987D692E87B2A38440F38D935628006C0C0C3A34F8BB2DEC4C1287072C770BB08D20083E6A86C42F9FBBD\n"
+":404240005900D40E0181CC1B003473AA81103D6AB43C4E3841304379F1103030D0DC9E33109EC25E5A1781100338B2002601ACB1872EC65E11003440D00A64C54C40D00A88\n"
+":4042800025820114025CD6801A594D406804BDD2B2897E19F4F562410E6F208408699D84D1083C907A3D5F786071FDED31D100C0C3D8251034D38972EE62E3A445C74A8B48\n"
+":4042C00079E9AE870A20E09B441D2118F5D6C17B52110BC18418675E845D1C472036D01C41C5C3021C655508091041223ACF42084F047AD210EF1E101346443B48617AFF8D\n"
+":4043000020ABD8471E529A7656834CD51C3D4496404F8FF0C40D0A81E2021880A150003080400433F56B11C181AC349AA34F82EFC71D8894C7001A7F03C3031E1BF83C3A88\n"
+":40434000616231F1B7A10C7C8DBCC63F6FE91F316610CFBF1F10183D4730A8BC89AA2F285E61EA59F3257D4CC880A2688B6B2680B1E775010F404140D615FC668A3D088A40\n"
+":404380002055C4025C008688A9E49971F3BB6A6050B5147E6DB51F3BB7200509510626A3E521329C444D4FD46A4B7A8E6CA0D31213257D4768806268876B5C7C3C8426029B\n"
+":4043C000040426020B4F51CA3CBEDBCF00E540110EA0D50E558386C1BB60D9B06BEA3AE443453008610CFBB3A13147A07790F51C3184DEBD5A47D49B45EA3A46BA4C18BCE2\n"
+":404400006F44969088BC9B4065A221A7A97715F51D335DC3104FEBEFDFB9CE701F30F798103604420F24D847DA9E6364E00244260C0F6CE20981E39BF2344E3CA6043D8439\n"
+":40444000822020518F4E01C346DE620589C0E63491344DFAF91F56290F325A137CD03802116403F14728C40764A6081A691BD0A3E826118828326240239891B07B89BFB9E2\n"
+":40448000451140229A66F30121A46F602C082234E483180518813101A7D0902470146504CC4021872726180180242C0C1339B06F42900076D5F014027F8BAE8B19981A2613\n"
+":4044C000E753D1091689E3A7F7217833F072489A66C7B021058EB6C44C2CEBE7A238484F077A88447904C6CF870B47C04D63E8A6131E824F4A7091AA689E4051A46891420F\n"
+":404500000797AFC714480085731E71161200A540D233709700F222053E625820D8D132660002465C4CB06C81057790CAE4B9203A9A6866A031B958991D202CD04C0484723D\n"
+":4045400006917E7480DDDA943E797F16020354C00545504081F014A9C5260A93408802048420183D101E36B01037ADCEC48EF311E15D2507680DD6E825E623A296095C4255\n"
+":40458000881E25BF44021E826344B0244C0F3FD6A052F5FA008026F79DE204620383904875EA85A303FCEF12979889D4364C09D4180066726CB9268B9216189BA68130876E\n"
+":4045C000B38A08780939045C94219F6E6C113C115F30048111C72FCFB86388D01EC80F157B89A04A033E7ED42007C5C40801E03067D94AC812085C44639796014AA6805BB7\n"
+":40460000394013448C247520C240089E51DB1D06E910469912711086B913CDDAC41208BB89C8810363A6E566D2A1E83DD121898083C71AA90F0071A24213210200A01A084C\n"
+":40464000823E5F8B19004788FE879D1F84D9040792E8AB080AF080782E39812169BB04B81E42E35C702E0A005FB7E324B6F434F0F303423888808BB1CAC80B05FC08B62194\n"
+":404680000F899252104832F8F2030D01C0DBF5BD6094604725EE118F8E920824680DC5082758E0680DBE90631F55339773CD0F5D4B8819D265220C719B412A81B280B8012D\n"
+":4046C00034C9087B86504A2E55CE6054C08639E02E0CEE382A6029B431F885344322881305C5B25F1ED9085D1946240972621C280D07E97E621706274A02913C81CE00F8B1\n"
+":404700001CB86E8E013C9A1010303B617087ADA434420238720BCE621026E503027A7A67B440230608003038BA137B620C42C1C888D3218883E348C21C44EF063090E2212C\n"
+":404740000FC6817C080F4280F462946248F2181AC22146157999ACA8421932E38CE447F0B89EEC6BC1860EBB551871D48DC859DBE1E4780ED716200E1E990C08654F1779AE\n"
+":40478000EC1756CB10AB70808844823D5B3441C0708F86608838F70790ED8A641C67FE0824084106EE343D8A8032C1B8F044AEED38294086F950821BE444082C0833D73F68\n"
+":4047C000041ECB0BB1850BAF9711EE56A2F349F10963E084036BEB8AF7C1F2FEC27BEB8D75BF017988C92EB7F82E9BAE2EAB88207344D48F76B619708EFB3E41BDCC021BB5\n"
+":40480000F855C0783B60B0C52410DCB6F2FF810FE7D8FFD86E430440CF73B4220373FA81028F206FDBADE45903684300D05E7711889C5106510368762AA8F82E107CCDCCF5\n"
+":4048400045B0605B796730C042E433F65F2282959690340C03746F2401AD0FE880BE5CDC2F2E048821D743C5C9CF0B960E1130859A08D62E4960007A0B2207248C48E10377\n"
+":40488000D74B2830C72C222BF2489B180963847B033CC0FC878BBBC59F5C0D0F98798BC5EFE260F6F00091E529C85280E3D0CBDBB04452F981FC7A39E46FD80E627C2C0086\n"
+":4048C00024E8186B9490A0C07C0D941C9B888B8140B8197268040F354A02943C27FD110E3E6AC52026930B35EE16BB027C0B25BCD59C60499D1288244F8192244BE5204071\n"
+":404900009F0359154BF29F88F54E60847E703E18E1003CA2B021EB030970667AE4A88B8F313A16308021CA50FAD561E7EF311D7C92D4419F8F0F8883F6730172DF2103BB56\n"
+":404940004B14886EB2231E64705C90584993D8010342A0CFC194C4021DA4782C068206015DE31A528300349E439A31881E893DE7D81127BBF3E06603F3A28895C065AB076D\n"
+":40498000C06EA24C82F5B904C831DDD4821F045E8CF421B315A04D2560E83486BEC0774ADE004D31D35B05E35122ADB02E4C163C7A9225C80A5D54C004A688C6698C7E5EF3\n"
+":4049C000643B6288FA1397AC7B80ACB9B9288BF8D18893188BD02BCD6408887EBE001297A3988445F358A206C0DFE541F2008E90CFA35B101883343ABEF48090682218389C\n"
+":404A0000D494FA560C71C187648188967B002060B54A10D2340827E5202334D0278D7EC7651CC90221F31B4C0819AA8CB950509206B0904375AAC8866107966BC886064096\n"
+":404A4000A3FA14BC2E182309EC876F5B0818438032730D948952180C028DA9089559E6220D014694298045A81A43D660C90C0E52241006814592BD3EA42C0360515494D4A9\n"
+":404A800007C76F9A081D60B0277CD0B85E68D81604340DB61D6C2425A8DE0401566C2020CA46400341B84E81C079F40DE60688105D59D112047E34CB50C07E9D40D1F40589\n"
+":404AC00041F84CF8695983E007A6A84801E9F5D1303926A4923D215C60465808880508040092A19F22723F30CC2590D05A64C1F31F518963C6C2942763399085D3E8C5E65B\n"
+":404B0000AF65BB1528837C70C2078208ED3374C0A880DFCB2C880903A68034CFB348FBC2FB04D0404D68DF04D03E8982A8983B32FB84402408D344F8ED03B1390BD108A11A\n"
+":404B40002809B284662F8982AF562031631489424D144C7B707C4653F629589030C9A28C983B62D96183110290983B9D14883149A294983BDD14A83189A2990783A2990341\n"
+":404B80003A0474022310F5D63162C71F309EB68E3ECEE292E6A188D033FD22005B03219FBA38113FBCC5F85CE884881EE1301EBADF4BA70BD00884600C422E3CB42E3E6007\n"
+":404BC000B21BD380C3F306098F897970F0982ED6BC958C801E69064A860958389B43917439935DA8864117A796C8404744A862223ED293260480C50F082A895DE12CE20238\n"
+":404C00006C2426D031E01A623A018CAFC163A5E18B2C387C97F83A5A92E940A1105AEBE6D1D4161725762D4279729522EBEC11E9E0F1C57E1A1EF1304091BA621F5D631183\n"
+":404C40009439155E428F2F72689B0D5FEA053048D00887928B858F25190823E4B002F6EEB088C1881EC08418F7E0A1792BEC7B1978C2F0348AB1B8F92BE91EDCE943991570\n"
+":404C80008F6F1220250EA78E3DC407B1EC0F074131887BF255C0CB001313031004E9219814A0C754745E4ABA20087B4361E710740418BC523E20D8094700488E1220131346\n"
+":404CC000A424098A1063E2CA812F7CB8BC3E4ACC64655B08BC952667100FE4A9243C94EC6022980C5D864CB1338785130460E96F02EE92043CC2FCF2EDE10629B7D2E78637\n"
+":404D00003881E5F607E1140980F0D013498E9EC91F306416C4943AAB311C881BA846E460128A2994672299C27343CC19E45C9493411A42263038346F799268012C401268BA\n"
+":404D4000022C7BACB4750A222096201934001620245080A9744030B25880E7F865890C317618EE8636F00F28D88781009BE8B1530A7CB64638F5404DEC41C2860F2011174D\n"
+":404D80009887C436F58EB8F4FD191806986B234BCBB905C80A461C722B458F5DAE1303294402785330A4290F1E2557402B961452607C8C407E4E24D01A21594C0D504BCBB5\n"
+":404DC000C3E81AC10660D08A3E3505107CB60580B1D822303BE04CBA6F644442E0E4E85F02C01C272602E12819D41D0F98320729C90C1800C8081264BE21D42C4644338036\n"
+":404E000010460D9DA2844B8A88E84444C0582071D48F98300FCBD808798330FCBD84CDFE03D8A34563A03CB940BC9B5D2FAA85E1C271003E03BF2CE1D127F1BD06B2E90F39\n"
+":404E40002F4F89825D03DE781F160D53A3B35B4483214263AC0405429040833AC832E4A18D22E4D01E445F2FFA9842040BE0103C6B9C04B82B88643C22EA225065D2471396\n"
+":404E8000E5EC110409E04FCB8645D06D05E07081F2C7B08165759D43CB85A61D12E0A689BC40A08BDA17C407F9D17489704E2000E3E947CB152262F867CA7DB9CC3E150EC8\n"
+":404EC0001F2F6D180832865ECE425793E3081B548858948F601FCBD9E9836061FC111804EF8DFAC8CF0874B523E9A962BB807CF3063D2C025B17C8D4AC8185750E02F4C97F\n"
+":404F00002E0CA2E101F405959FB6200F00CC065D752CC9825463A30D6620F5D452078281F83D0631089F03C863E9EA228744F4EBA522893107AE9558BFF8436B9350EDB08C\n"
+":404F400002F2F22A65F24527979051259449238187729D1585E0931E0E7BF3889210903007911FCC46443DF8BC7847BF302089A046F97FA0479374632ECC6B22060AB0F3DB\n"
+":404F8000036898DD63D645EE0AA1BEB00A5EC737163B22CC42037FB82748D11F7564E22C794FA0890EBC083BAF00D31FEEBD22E427BAD8893308B80A02E008101589330FBC\n"
+":404FC00094DE09030A2C5DFC01385E12982339BE3F8744D84BDA9C42090C22CF5AA18821EB5072098088C035872F5F97113C0881639065E5E4411C86A44E26588205AE6B71\n"
+":40500000B62018D01D04CC04660177D4ED2447E1E501FC65294E635C6623CE0CE102D5CE099C3D80A528CE0B046081060B042081016A22F2CAC21E56201F2F17094B9A24B7\n"
+":405040003DDD3638B2A09F29791D48F8B5AC472240D32ECCBF2CC411200A798D2058B038CCE181E805335C54F2F1597363F133BCBC52645A8114C0C32ED1D25A026997CCC4\n"
+":4050800017C898A52F977F47CBBF6D1A62314A08F591C8F3CC59044744055097CBBF488261100229937DCBE427B1897408128691E802FB43684083C036EBA7B20288A0CB3A\n"
+":4050C000CDC5C5ED0763E591039AC431061D69BA8823D692A3AD241C08E03146174705089DECD0E2D8C70C70D19091C03F014234681B23FF41908FB44A866643324043287A\n"
+":4051000052D89A442A0282A6FA3A9887E33CBE02079317CAB0656741054F000CA5154D10709900C9910BCBC369780B64582E8CDA931619F4529882DE5E161150903112153D\n"
+":405140004A33009041A1A3661ED9302F304425AC9220D34C408F2BE04814211AF2F4923E56162CCAC2EC27E2D07817972892EB1AA1F2F1D0F89C884010289F20BDAABA40CE\n"
+":405180007EBC5C48326EE540B8140431F85529BCBC6C26993B3C87978D0A42379643182DC8D6CB5110241F00C5E34758BA24B7978D040E2481B0815009CAC7106B5BD23EAA\n"
+":4051C0005E353F2F1A25E5E31500F2981B0815496684B3029418F03AB8B0051DD703911DE5E3244A5064964B07F845144812DE5E3344A540144F8D28C48E60B84828600495\n"
+":40520000F8CCAC496702950E7D5032A0299323BCBC62894A0E12CA052A09603ABCC234FCBC6465C9305C9331E3E5E34506555F2B8A08C6D94AA003952196711236E243B3A6\n"
+":40524000CB444428580189D088C0D2031064401A02CF7AF1A181D0CC1B5C15ADC0F2078E82726D8CD8D100F0FC081DE859B100C9D01754A230800293A876FF1899C118C1B0\n"
+":405280000A5AA5A2842B9580B5F4B8D08F00EC8C0F0084E9274E8074172425A645A40EB2070790F39AD6892D2C2258022742543D465832D306D4270160030207AF08DD08AD\n"
+":4052C0008A1972D981F745D9738AE1F5AB5A0037AAB206E391F5565941C04794FC20715D22002876090803442D244093A004244AB3C3604C1F02D719F8040EFE43DC4719D3\n"
+":40530000B0121E7A2F2F30958ED47E3C97B9424B9AF48F6E8F0807E606D222C604BB2A7A460360D6073C872A443790F58BA5DF8BBA6406183D2346654FA7364401F6DD41EC\n"
+":40534000768E38DC2207EF6DF510FE029B40EF22811394790F6B9C3CD38877D305528103468BCBEE85E5F6F2F2EF829E577848084337E910899E6B5C7B51709A22111208AC\n"
+":405380000D2C74F510DB9808A226D341810004220402227C293434B84A02E461E651C89EE68872408AE156A470BB90AC40C0581BCD4C13C4F4E52C85220F409F965CD891DE\n"
+":4053C000A4198BD475421390073F281C1017C621E246DCBC1CF6B645E20426E4A4A2128F22201A719202080A74865E1D6C21D83240DF000FF38BB85F04E93C01709BB802CA\n"
+":405400008AA0A0020B4050503EEEBE016070144ED22C8EF184A1003E9A5E2343B00BE6B3E0D91247708BABA724188C1EA564123830038269EC3629F10880522432F6DD12FF\n"
+":405440003896603274304A6D6B11741E90806688185C182089F1DB04A6489AA81E1B04588042D000011AA811A281C4410042700005F759114300147E900494705460F4736D\n"
+":4054800051E01410F190588020417F63260F27DF230860163CC24A5AE4E202C1EA785DEB663EAF07540E3FB90E40F53A28FB26F84EFD8CA0BD939C5729887446831CD654EA\n"
+":4054C000824130F630FBA8C87DC2DD2087A54704E9018D1EF7151EE3E93EC4D5108005E7A4080704C74C308985EAF152F07DF0823E13E12E93089D00E99A241102009D0490\n"
+":40550000278F8DCBC33A620104A469E0010CA6E81B75F0065E19502ED1D021E4C005C7B1D816C1863DC9186388C5D6E225CB8087579A210F7E22097285D825DAAD822877FB\n"
+":40554000C5D8922690E44106E410B3E025A1177509E5A41411B8810E478909ECDF64050240DE8894E20BBB63CBCA20667F4517398B13E22C87DCCC019FC401041430F594B0\n"
+":4055800088CDA4EEED2ECAB5137634BDAF522026CE7C4049E5488B5FA42094D627C23AEE02E57225A547117BC1A8C4049A40DE833CC0C33B035861630F0B62169D78B55B4E\n"
+":4055C000A208F483C1494C1B46F082E896429322C34227880008E9F513A978E190412008623EBB5F7C465921D2410244AA10F280C4BE4E96541D2E6C5422F4DC2252908C82\n"
+":40560000A0AC155500440104E44A04CA4112824A1481AA0F14A0F632D08C22941FEF37F1EA1FB102C7A093B3714BD1CBE3D66682607B05C100CB9EFE237C10F561EA82D132\n"
+":40564000A006111ED7E09B5C86CB8B215DA143C470020BFA22BD22043E1C3D82CA35FE8774EC96BDB0B0B51E4CC081860320B100CF2F343CCCE212D9086304041591B2E00D\n"
+":405680000102753D2D8CED60302AB268B406124CDF4221D6C6705642035482A7C5ECF951EFD55401B4050B7E91E8077486E882E40873AB0B10F47808BA8F94BC86CC209CC3\n"
+":4056C00094871D20018359C263ADBA1EA0331A144079C5105B866CE50708176801F4C2C8FB65A88C903CFE068E0E4F5443B8A4039D87F989E7BFB4001356A090340663443E\n"
+":4057000067CB7B119E0C42D36415B848442F0BF908806D7B56BA7CA5202039B04FF8AFC87AB6E906AF031E6D023AAC243DD146201754460901C9FE512B51F66B50F28232F2\n"
+":405740006181598EC4C112A7A50244A90630B82805FB6314796A1989D9DEC2037891184CD214212EC612942202CF72005328BC82783D9FA63CB7A08A62ABDC37880D219750\n"
+":40578000AF429439832F1726226B07E0F0400800539984C4372B2F3E983D101C8619FCB05041377003962A6018712E078D9A8453238381A7A5F74C00198AEB93C792AE89C3\n"
+":4057C00064530CA051647F9DE43144057B65187AA10840FC674262F57650889D034C3D8E7E3DA39C205807E426C1891317C396E243F8E7444102B98024CAB160847A42F375\n"
+":40580000326842A2B226D02BEB46D12A081024BAB91A0A428409208E2D92AC6F2300487901CA60809210C79293D416081B60004607E03801EC0B08CCB202EDA03F0FF30B79\n"
+":40584000D62A02520FA72736E11100D1043D73D6857144CA053744782063E230162EB683FCCFB13280165420F99E7AB949011803258D9001061402AC8B8207486347DD622F\n"
+":40588000435B235A83E47A316AB002B156F0B5B217F584D04601788CC40680446884728793D8DAC421CD8A1074A0F65CD908597A07783063DF1F0FED11A20C9000BE3E60C1\n"
+":4058C000B1617685A880DE7F2010347DC0610009440681A7B920229BDD79B2364C02F8613B803EF334107B638B2BF4C21C407F39CC267C81A4358F48D102478360A10380D0\n"
+":40590000723432183B6030A94118414220260D41F34A50F29823284204414313C82DC41972D2150A3B4DADE2CEC1E568C472D1B3096E163EB1221F58F897560008BDE54C82\n"
+":4059400049396E2042200D6EDBDB1AB6003FDACF6367F1303C6BDC39D2C206ECAE836B42D5DE99FA196C0FCA5B0873A5041B3441C20017F3AB2153423579F15890A07791B2\n"
+":40598000F8470A78DB4801ACFC440012140D01AD320300C01C779530DF4C00B97486B35909F02FBB0010A1A64547871C300C164E418314D502861367050C5E7C5842487EFB\n"
+":4059C0000080E1EA140A530006224321029C2D430BA5590A9D28680D06B8D040170680D04C653F897206018094DA0391D377A05001F130F09A232018014416B0FC462D1C7E\n"
+":405A0000689ED434BC85B6228645C10EDE19784FA7C0475860802A1972C7C440D2AA700C278012A1E38FB3313B518CB9B2699C58FCC708C8008029EA196781081A3957C060\n"
+":405A4000F9EE20EE70035C4C25FD6AC4808A42871CC388492A8500302E9D83B3AD443AF65BD9100611000278EBA0A08016ED8361D6CA8F72330825B1390F7725979DBA84D3\n"
+":405A8000903FCCC1C002217A885C40BB0D0EB47487833E540428758D507848D48163B45176FF70F80D744E924415D669240592FACD14CD9027AC3607D07EE3ACBA2F1022A3\n"
+":405AC000888D2823482402C0A840EA1D11AC200E876023632231ABB94548B90F47109CB910C0B24A4443378540C423F7690A07E864A1919C80144104BE01553B32012028B5\n"
+":405B000092038055C96F4FC676E45004C7580D391680087D96E639A2821844078DA20BC1BF25E7B601043CD9125E55CC10953C87853980D256C610A19F628B0FB1468F4374\n"
+":405B4000C897B2DB88D002326F048B0289E098C03400626022340062C02334006F6C6D14C0905DDA9FC8E0F820341CEBD5E20C840F6BD5931EDCAE1EC0EB2B58863F880838\n"
+":405B80003C4B0439EF227C906410186B065D3EB441D763EE899F8D904FCF018608D1EA06E103644261785F90BD4C8443E89871F8105C47DDA5A840B3B65218B5A2C8C5D8E5\n"
+":405BC000BB05DA22E6695E207A6391E55F04019CB6501E9C09210F4AE820173172110CF00220CB5D5C3DB64A7DB9D486CC705ECF814F55F28B024002410E01465CF0E0FE35\n"
+":405C000002DA702A8B53C05925A43C3C610171001F79168241E44C89F4805BDA47646B1F44314BD677E5E132D115821180860C7C65A021690DDDDC43E0897911A204320567\n"
+":405C4000BBBB89123944EFDA728498287CD31020E63452AE8010FCC5182301AA761A27612A3B8F22A162301AE7590C358FE2A94E301A675765D5880A3D8A84A831DE9B92E0\n"
+":405C800022745D7080843019DDC5244A83C0DC308060C865EBD6C40AEA10270B3AD1F12A402043BC1988082868681AA6A91A02811D0AC63E9D512023CCD0D2047403C49345\n"
+":405CC000BDDD168E3D88A5A5D91422657774524C12D53E43B811B4E610137320B1DBCD2238F6206975AD910F56BF43BBA284C24C0F598C061DC0DE2A0028E6F2ABF035BC33\n"
+":405D0000CAAA3D7EEA32501393EEF582BD44481F2C4E8F77449776A8106D1889826B1723F06B8D1C002176D884049DD0606A96C4A8B213775BABCA255A80F604128F902805\n"
+":405D40001B4F9DFEC582607344980C903E9300A203C403C5FA0F0177BF1407BADD10291026DB11EA22DFB6261FB024DA98C0231300032F8428501E40E42CD000116A6F3293\n"
+":405D80003D81C803A4A9F23C19DCA7F0F75B419EC44E2FFBADD088E238C12D4F9F31120809DD6EC59AE82279E005F75A5A168E8A3406D80A5DC2874CB18B00F015D9A904D7\n"
+":405DC0007CF75A59787150BBAD0C43CF52280F67488C787642F21210EEB361EEB4B5811EEB3D431828B21E4709869F81294591F52EEB59501ED6A5C903E12EC315CD0190ED\n"
+":405E000009AD60CCE832741B2743DCF2243CC09D2011B23F97203EA270C59F49930877D9BE0549809D0F89D0731408CB1015C092D9481CECD9F37F0F143BAE08C76521D911\n"
+":405E4000901CE00E6C0009B6CF06F70D52E775C395E43790C3039749A618C2050AA00087E7E0C1107BB87CE93882A7E12000F875CCCC5EDEA41217CAA7821AA009787A1C13\n"
+":405E80004720AE4E605F40210B03AA010B6C21E1E9A272337513C242F513DA02021B66620078BC192A6C8FA3E308B1304BD2E0E20140CB7EC769820F300843CB13F25C9D59\n"
+":405EC0001EBD901007D4D5C5B0808803E71062EEC4E4BC14AC7DBF7077340859DE0A08772F72C1A1A57FA0E77B0899DCBE88F562E25DD8C078046415F090108544FC884839\n"
+":405F000068212CBD99D08848CEDDAC425931A8671EEB6F44041F53F373B0B8306979E2C858EE79E2ECF2B1EBB04204AAD88B1F3B9F969F847A20C8BBAA60BCCA7626475513\n"
+":405F40001D1E75D8C10821B21F90202462752A950358C4EC3B6400D2B81AF6D3389E1DE9844091A182DA813E719440692C0D7592D0F97D707BC9E4703F0C30F7100082DE52\n"
+":405F8000C8F7205B99131841DD6E4981A377BC292592416421761C2FBADD4441EF28853CED72443043E2ADD1063C40B25DD6CA3D886A268143D607E24A6A41901E3D9B6200\n"
+":405FC0007EB8EC1083647C209224F1D6879368CA50877433169EE0BAA88C41A942009449151264B5DF66484BC4B04752742C6CD3A2049A1E9B8699315719637410264A5DA9\n"
+":406000008E74204F440A16A1DCAAE03AC2607DAC7043D931EDE0A2EEB8D400B1C432484B6425016590359C56596C843786021C9C0B6100150281111C2292884FDA0B2608EA\n"
+":40604000117B68E888B08205793704D922C9DF1976082C2561C70EC4AC20822060840AF65ED11A436788D704062090F39EA0909E1CAE2E92D61003D83AA4381315C8628755\n"
+":406080004CD5092042C40F753497939A489D63992C880812F3BAF127463CBED22EC0409FC698D3A4FC43C26D63D53303E3F983133B431871DA0438E684A1CEDCC442F52EA3\n"
+":4060C00010F53000843E12B34043D12391E66C9B1E2C1812BB3254BD02BC32502B8203AC05087D878E23C89E57080768085C905A1E411141E02014E82201063C41E83ECB59\n"
+":40610000F0206B667013618E83131003BAD31733A85850706683393FA20680A2191D2619D40EB0121048144E95CE00C7AC82071F741DC08DAC002B2E004EEC6A32411F191E\n"
+":40614000D095ACA0F61649D023D628A518039821D54AC571D813A03C887D4F665D8AAC460488C53D45294A1113760281F547D1771BB89EC23F760C94890F0AE14F30501E21\n"
+":406180007CD0238F0E71903081182A307C0DC43E120B118CA11808501B95B415AC874130225EE58C3DE15D3DD74C625919DC7C88E5560897A0CA112F2AF044BC958912CB23\n"
+":4061C000467B6EA8CA047030010A028164F801D72A2206756778F700F8F7FD90F75B1A84E8885D77614103C090FDD6D943D559064ED251EF1F020487A04443ED5BC409D11A\n"
+":4062000088BB91113C090F8088823CE98A4D8094B9441500843EE3CD2274A01D432EEB7E23D898E8E08110FA03A440126420B2117669C881C391641019842DEFA0661040B5\n"
+":4062400051EC42DB287AB21CBDAC2E2C005DD6F67D42E43A4542F5CFD1793420BAD6E8FBAD0CAFFA03F5BF759493801DCB160ABBCABB96AED2EC6042EA4BE2861303667085\n"
+":406280002EBE172C81839FE5C82E4000F797D10EDDE49424177148984BDD618D0F487875F86D2443AF75861E0001281C7677A1F0F2D090C30ED8EE2208F61610C310E3DD30\n"
+":4062C0005C03E768216441D8CFCBAA6A87BAB84CA6EEB0C44A656F5C358B889591DC58F9C460EEB0C5C824C865F759B890CE0432D14CC8A66DE7CA7104FBA6ED0340A6036E\n"
+":406300003408E3D9D12245DD083D2C922C026130281292E4314599042607683C8883A0DE1F298D88E011E6000FA741C5816C25000943002313B60691F3841A00100A4A0C9F\n"
+":4063400021CF806588652E078ED2351DA300711C003D2531E8DDDA320C712A4F004FB7560F99DD0ECBEC5B047101E1B52320637909B9096C6E622D826618E025F756DB015C\n"
+":4063800066D2F23108ED1A22C107DD63063C247F2A24FA3DA84FE79ECDAE12548020EE901A9A02B7C2CA0269FAE4244EC902BEF18B10023CB9F6B080041775829DCBD02410\n"
+":4063C000F5768097DB37D8F758290FC88529D80F0582040E3181AD04C8F3AA32038BE852EEB051EF2382055C859028FEA9B20350BCE8032F4FF9220401C19639B1F108F9AD\n"
+":406400000387A1606476F74104DE9C33202031F3D861F77608E00902AB291C823D7CF08E075761668C0C0037348881A8921D493084026DC462206B10440509E0839F0B8FC5\n"
+":4064400059B10885E004A1063AE6F0F9C210F530B10E46498620F8787CE2847016E2D2EAF3C26C73F1CC895A2876FA71103D4DC63B7358E34680380BEE2FD2094C0B31C4BD\n"
+":4064800061300076EFD1793BCCBA6DF84160082AED39F20948CAF5009441ED1952EFD642ACC2EB5501114EE27C090EC3007BB0BD8BB5760C2B04443ECC0C1206D44040EC76\n"
+":4064C000C503DB3C7278F84B584653DC85C6001CDCA4484E64125B25F0F84E484F015C76328F015C0E3FC9110C093ECB0CBCF1F38EB0F3F60102C49ED8A91F0C3888247E07\n"
+":4065000060A30208E0EA756100877D822CA60021BC85B9550D001989DC7445E7F8C120BC64C0876DB8104C2C601E2CF1A10E2FB62E68825221B87040100D0D952C70B50498\n"
+":40654000980EB32FBF840A870852A430311CD01133AF203100A38FCECB220254896930C403E64DC4050BF919222D922209B2018E24D0EC25816228400881220861D62282C0\n"
+":406580003B8D1B2691873339983ABC6101081103C8151582D829B08DA800D470401F73CA88894DCE8B0300601A101A1E456F11440B0242110876068F0138093F4B0EAB9EED\n"
+":4065C0001CE26100BB0D90431A7264182691069C87B960704A630015200FBC21869C9006049B64018480094B998B02D48040EA360DADBEF91C1D0010D081050C1A5E430895\n"
+":406600003F4B8E631C2921D9A7622252E7479201002C752851E3A5213440A1B4B4D6068D320ECF002F07099CC820811C430C1EE15D1EA833102CF120045218E102C17ABE0F\n"
+":406640000AF713058EFC071ED26613108608A968FABC94430F172B9055D3FA63CD3F4802F4E9A082674FB704CB1C7C0247501DD68382297AFA5D0F2421959887B968C4C103\n"
+":40668000F630189820A9D3DCB4E26082874819AFC1114BBAF712900D251F1FFF8FBB8C04050A431383D60B43E9DCC2B440EDAD49FBC58859E5E5C252FA772880D0FC1011D5\n"
+":4066C000075347C308C2669EE6CF8061101E0BD1E43D02C3AB6095C4643B7ACBE440331821F1F311461044A1D46FA3E5CFB108FACE1C4050243F00E6040C540594E05C1180\n"
+":40670000398074792F40A3E957BA844B774328C3389426020175B2C54DC3421A7753019E18B8772AF186D4594090820EB3AA8828B3D8847E7CF21EDDDE103B45583D684A50\n"
+":406740002677680C90F068FAD184418EB2BE12AD0063715A2F31F1081470840691B9BA2E088434064388C71A1DB36A24C0265596C00E8124443F0CB58B0039C47FD6008156\n"
+":406780000011C2507651A91E27678DD7081C012085864D633C1C033DDD525DB3263E43321C6A31B0ED0ED36A462ED2D42630E17028131B1DA10E47C6D7A258D3A0D2317A36\n"
+":4067C000CF147049C6CB3E3D655C3392198645D62003CCCF66721EF93F160E0D5D1135320886887022CECB4EA4437B6E84687177AD109303978DC00FD21A05ED0B72DA69A8\n"
+":406800004BA06587645B21F0B040D12B309788B106256A248855185691060AC9606103102C111E001F12F08F8903C8D8EAAC41EDF6F12B8B00639AE7173A0510641B2BE116\n"
+":40684000871C7882234615512C21840848640C00206CB1493BEAEA121001B2CA14401409441000D966A0091EAF142F5A4788365AF81738CBA8318F02D99DA1304BA2D90EDA\n"
+":40688000A7AB116ED24851B21C472F4A81881811F2573AE003D3DF5B04780114EC4013810BAB444A82102E890D5180B400807E293A11380B327B2278478ECF702EFE212F6D\n"
+":4068C00008298E59116D78B3D36A739346354C2C0265996C068F05AEC96653B17A15A0411EF28F292980CB3D65D4543D09296029096001036DFEA00995A5B797FD27C189D5\n"
+":4069000043301E1BC1007C30347CA84E6B28712D0D8962ECA0060240966513950D7E4133B79E0CF400217A30F86E787AEB1463C42B3DBD9C0A20C01F20204CCAC20C1D6DE3\n"
+":40694000B43220134082FC8310C21F41921009D5EA445D9C47910B431EEA9241048132D2B2876C339EE26C203CC606B5F8847804A20F528E0887DAF885291F26B20B8EA9E8\n"
+":406980003C7B3D00656068069BAF089054750EA5521300301A4F604A4C8D4831358F3ABB3EEEFE10C00C04CB19D000A20C30F7BDE084C479E1E84A41EEBA3114BB313469E4\n"
+":4069C00093B488A85A1E6BAC16C324C6D0A7A789470A68537021AD0AA75B3319E1ECCA612CC8010FBB9646A19299113400AF0063888345100249320003A882602D5205F1F0\n"
+":406A0000A421C4CFE84C8420D11EDEB832D2F28431AA0549AA6C1E00B8265916C804EC80E28961382A906CB7B3706C38E3D87663842CADEE363202D90D8E7CB466A278032D\n"
+":406A4000470D948B73D61A8E7A662E84E819621CC33841BF033209B3ED3923022634A187B579CBC917E3EA92A18702D0803C0521C028A085D6AA840703D408ABA910054034\n"
+":406A800001399010AA6D1105007D9779C30DE385410C1D2E461843064132DCB6F71B616E75336086A85976FD58886E1D7C202EDE19631EB70D3A084077305E1A128011E04E\n"
+":406AC0009AC1002465BACD17AB73C4AF2DBB92AC80204CAE2D903A08D871F12E20F62170C58970010143A84118806DAFB92852E71BC2309D0186CB26360840555F605E26C3\n"
+":406B0000C14659A213B2036A00ED0655F66432400B012A423500059D7BA1B9A48801E83689F37158D4E1777DB8B0068348E53F0E284006011EE40290446C0C3AD8C84A1052\n"
+":406B40005B15716FDA8211FB505C826F5C900D6A941804DDF8F03DEE54245DC0A3D8FE240984B56A403CEA8342584A211404A6CEA42C04820051E9F1E1093D72222124A440\n"
+":406B80007C8390205D662201A800673202362005671410905582207C20987D83E820BFA8694B1DB080C0996A5B77090984A41004019C0431E859FB4FC8CB8EB6BB23D855CA\n"
+":406BC000D9A8502DAEA113D84FA9D1EBFA51ED7D61072247C4B2A798023AF3D22C7BC8D08F02579E4D0D2C01D11EC2152EB76F2F16E60E0248202287DA70C5CEF8879E1FA2\n"
+":406C00000867E3AD92A68E7311310CFC4F1820284B6563AC041A12FA6CE4630980925254D0986DA640F7000AC48DC50632E02A20C01511296B0066E12033F89768030C0078\n"
+":406C400086F6E056B951C13A3EF9AF10A0019E8C014F6303163C2A5632439DC7075831862848A35C97D93E8445EC9BA1108712A3BE4C0A1C48309D09F8C0D4FDF25A38C1AF\n"
+":406C800062C7C05DA000FA12288F443BEB38AC1E409955E042410D404306CA043C02798352415F105B6810ECE2A3E0E724080439C240D96D00193B2C8943084009647F98BA\n"
+":406CC0003E8639440C0107B0C4A04F00118A41894039032E7E0BB01CC6E11CCF81D488D2E417757B889C3F1A3EBB94912FBE32C6D2E3810C4D3EA7511034E0083D9B826021\n"
+":406D0000A1A0330D439636381CC6306C74203446C45380641FB2E10423C7902478C41C1E001F691599B3EA7C91B9F8003BF44CCA3C4E503706081A5E74F71EE36C13C3C857\n"
+":406D40000A12698ABA2D23C044001EDD4C40C0E8876ACE90BF318F2B6899844045036DC1D1B51C0D0011E815F4FE2188E30080378A4393185B801AA02364F804E8024610D1\n"
+":406D8000CEA1D5CB22F4070A7A39510EE5C582248D10E7C51E8780640C0DCAB0402204E0F70EE10FE3067C198274B429607959C0C74E7304226781550874EBBCE3CEBF31A9\n"
+":406DC000369C97A0780482034A904052034A5040D3B964BAF2B08DAECE4033D88FDDEB8B61F619189CA41769BD09069C68F90ED4802EFEAF21A26F28F000CE543C8BB82461\n"
+":406E000023611A1CCAA26CE81D32C044001603806620DE34F9487CCC61C870BD8870758614D0030A418314E8997DE4D220BA0217B9F0CA287CBFA2271B1E5224202CF78CF5\n"
+":406E400003C06EBC28440CA5843BEAB90C46051421601A4ED5D893208A01151344D943D50FC6473B108A7E936F2A2220F0D0790EE802E3A12007A084EDBC7170A3C18716A2\n"
+":406E800030E3851110351EA7A91606B3A4723C6FAE16071C2B84E2702464906808417411B941021DF9E4704DA0C4A02E090DAB28A403A7201F06F40975D0D2840CA18F8CEF\n"
+":406EC00030EA051A1053079960EF2A065221EBC6A1EC15718D201B66931233DD86B3B34F91EFB7C421DD3BA2018625027A4FE54A4E5F1B218658497339A10C3A0D68F942B3\n"
+":406F000024EE386670794AD0726A04F630EA442FC473A44CE40267C66ED3A51723B2EB30F68D210C04C140106E380B75ED1182418AA5A3C0340181BEFF3A106C44F2BFE1D7\n"
+":406F4000831D40283DD7443DE296470131B56C1782CDCBBB24487E045828B76F81DB2687019875D2A0901DC4927E0C8D1F5D85975E7910E64559FCBA41C840DC4442068D48\n"
+":406F800074FC6A300182B4831600B086CFC58F8C06371A3206EB801A98062523BAA404D03432A38418033D259020D94B7F203005E0FB1CE324CF33E3091094A88265296D7F\n"
+":406FC000E18E53BB68023014E808FDEF62567100F0C2D8A744590D843F73F30D9C06B204151AF0ED8F5C509023D5C1223C6E668367021E92D776991BD778040C95A40030D1\n"
+":40700000059BA41FA1B7076F7111E0B42001526020BFBCC15251000769363140B0860D80224DD00C1527020DA4C10DA4FC4152A020EBB30220375A39007AEDB8F693A1058A\n"
+":407040004B08A1EE5C7160AC486C57AD3DC582E12EBA0B160B44BD686843833D8A585DEAD45877820858672C0841640560E0180700C8601C80BDB90CB0CD082FB504161F16\n"
+":4070800051F1197086462F43A090444101E027741B1799DE52F5D660831DAF5E22077300213881B00276C2016AF10735D67B566C7D61F73D9EF688E1B81D97772C8900060B\n"
+":4070C00096C0C9C1BBB51FAD534B0F3C66B0083424141DC27A44175B960B1E57E01064D9F562510403C0AAC588800218B123A55200C01215D6C86D3EE201FB8CC0581B41D6\n"
+":4071000071CBB51E084A3DBC46742051AF5BA011238D3C30A095C78072778028924138B0178863D96A138B3DF49620A8062204E2C05DE0AB72116207C6B2842353C5A9C176\n"
+":407140006DD74876F9388174C0BC7BBE8B011000131A5BBAF982D8AFC4511B417F72F310DA2B0F41A1A227F797990185D51E20AF79FB218EB7CB1D9984E11D112D4358B158\n"
+":407180007E60EF4AA2651EC218E231754C58FBE9D0408002D0C6051E26DD07113FB623858A06F2AF751410E7E3E2531CCF8A8944543483118812A88792059B1B2E0E51CC10\n"
+":4071C000EA08FA09AC6A1C828301442F6414100CEA344801E0B530041A0CF544A6600345A141B4F40EDF6E4091185020097ACCE84121F0A070048842810068408A1160A015\n"
+":40720000003C402C5E072A4322F910F362564333A12C35080E011FB53E8812F3BE20C2876CA28EE2B633516E8DC606CDA3975643701645033A23A3A66200A40063C51AAA24\n"
+":4072400031C10EBD181283AFA347166980A4DE824458604A63C1A0827401BDD9423E23CD3D01D8833E414D2D36891E0180121EE016004CA4C5BA7DEEF420083D0C5EBEA0F0\n"
+":4072800020407863B2A7073DA0BD7850200F804D48F6F23DE1077E0579418ED13130D3C40304187527A89843CDB0C050EEC732F0F9D8F2A2E9F45F608205C903080381B5B5\n"
+":4072C000E783C10AC9702BC016E5DAD36402834078500D79658040512829DE3EC76D87106812F5BCD092E358E79B40416F595B885A7B8184B85438F55EF8840171EE64F74A\n"
+":4073000067B98C4051454D4BB863842727C06DC0C4410EDEF21F173408142B4580E40513E53201497BDBD6424F810E42128050090905802FDE66460C77DDF14E820A82B581\n"
+":407340008616FC01F2B2C6E040F04A60F6DAA25BD74A00D94E587B616C80105450280123876C1F2B22C05D6C543DAC7E4049DCCF49D4084087AE0E84B004EA9440108FC641\n"
+":4073800050025D8447481162F2BB8E3C952335841DC6A820A9860965B508E209F922708F7013213CAA944010445ADEF707D185820994F84F83BEB18483A0420192E2574417\n"
+":4073C0000C890A0AD864003F06B60804398A06D021EC0D22CD2E1B2E007E0013C068760823270AF580CC1000DAA8F002B6EC910147A34C7A3586A068B80F76DE5110CB8DBD\n"
+":40740000D000FABD5064805323CE060B82038D67097270836549600C1E445D361012A8C7C097D20000D308F7EB21552801D3510EA08708251F40210DDF8169A2EACAE1001D\n"
+":40744000AD36F27A8C01202D38A9AAB071F63C8183A5E8C3414FC549E3E976B108C750087524820C6AE014FA5E04483EB64B236294903085A460C302C0B873A1C3E0AD137B\n"
+":407480001DC2034FBD250BA7190C0BEBF5A1247C1BA43E2BBD1054702800D9880BD1406DBF0CAF0700049702BAAB80445A405EE8D1164013402D02062B8B0A97944168A2DF\n"
+":4074C00007C90965D899423460BE104AF201F236A0E575881A37926418DB1290C240089BCCB09EF76C459342CD8409080B34D02B788F0184132A6D2020AD53974EF689A321\n"
+":4075000018901004CAC00C29C2430182A1236D1B3F4C84860F9E7B47A51147CDF68248171A7411D9EE8A3CA60100BCE9D03E800A1EC19A4372282EE6442D0B010965E9C049\n"
+":40754000489E4289EC05CD693181743C537220414E020215861982E2221E41AB1EAD2720124091E41CDF182237854586BA801AF0A8C980F1A91E27A79677C44ADC97458E64\n"
+":40758000CC9211AA89A60580A00E8FE842C0203B010813C029CE4021EC11CE62424254A04E3A6460D8491A611AA99E4030F3390081C124ADA2CE39100AE182F21830F59BBB\n"
+":4075C000E483DEF6F718710046BE8A5F1862EBF701107C285222167DE988005FB98E88D1F7B491B1E5F3D1280B6F3D2610157C415C621EB3201246CEE3E4807320462F0AB0\n"
+":40760000749F92004B56603EAC6240F4F165D901C5F0A0785A2080E340C01CC2A203DA15C33110EC5C4C2607200FA0D1340BA0904A00400EA53028D2F2712888B80C44067C\n"
+":407640001FC40F2DC9A38C9C02F0C77070500E0C50D895C4A3DAEB44AD257B26D042111006C9AB1244E002C1701811EB94811836659222009F7DCE978B55C4983D8018512B\n"
+":407680003DC89180BB18460164E7F243A9F9252CBB8264FD2A9642081437F99724402F145D89040E00E18104610C5E5C1010089A130D326BCDB1A5D9AEA3E28CB1368A329B\n"
+":4076C000E88E20C60F36C895668917E487B3A640069A0497B4290772CD31C8E9CBF412A07EEA58A1E80A61B5F8F7B110F7AF799C24C766558FA2378401288B5064D8F54AEC\n"
+":40770000F8863D587826810B2B532C3CA585E419F23A0F1EF5164CD721903407C0274A8E3B04288B6789CBE657320C7AB3C8862400124412EB2DA1042EEF130CB104810E61\n"
+":40774000F4FE93546DF719D881E48825A10A104BCD46C2097797C9764429794EAC8D01B7BCBECC04F00DE17797D186848821E34EE2D2C80ED5963DB4463D714525FE5C00EA\n"
+":40778000F8016C8D017077263A126C8D01876888100B5BB220982E300EC08EDCF6664A00077984176CE81B91A02D7798391117264B3D334222BD96864663DFAFD9C5800B1A\n"
+":4077C00003F8823D2F6C3D81643E573E11480A11C2027FC1A8E21077985A45A8351C46A8980C17D73F010A2077986222D428B868F3C447E849A2BBDC24654B8182FCA043CF\n"
+":40780000AE3D4443F239D20030C218F3DBA42C001D048640F200112409418803D7D909164091A01C82003F9EBE04641E062EEBE62D47F948407819630092A7A8F56BD90542\n"
+":40784000FEF2D333D38556CE8750490E8A791303D1E0640715559E1DE666786D80C9A852F8043CC1E34417E8521222420EF32D43D93CE5DE9A43DD68420EFA89A0B7867424\n"
+":4078800040538431EF17821D831003CF4F846883A6A811DE65A648A40B5072E9817904BCE8B857FF0EE8485E32AC433348C4BDAAD0400D1B30E00C8D07A20041888F797BE5\n"
+":4078C0001EC408225E83C044BE17C421368E40426D88B0B3CA858C9C410987C67423470445E23DE6108742D09023E006E124019CB5B2B1281A27BF79AC8F7B930EC8125DDA\n"
+":40790000EE56200779ABA22C28753C7281B9470162B10A4E8A64E865DD6D82361E15180457465E979490C7D6D4A2681CE3B756E48F7939977999A1EB4ECAEF3343318D0351\n"
+":4079400086BFC0D6387BCCC9107521818080DFBCCAC4B2EF33154AC522A18149E493C2EF332549C50268D032E6C01D48BF122C0880CF79701748120EF23281194451F6C540\n"
+":4079800010B01C21E3766260D730897013B399CA87179C41C402EB75E110076EF33123251EBB671080F12AFADD687BCCC0800358B7EF32F4C1552F48238B5EED09160A94F8\n"
+":4079C0008AF605AB02C53D6EEC5DE660A89C968DF07A7E74A879942A9DE2EF278965DE65C874DCF081DD413022F1A24FED8B62368004F9B208779992DD659446B92BB28EEA\n"
+":407A00008F4DBA0EBFC448D3D810EF33443C9ED02E5B93121ECA20420C0AF378A8DCC84802EF3313DEE7C618CA94F718811FBA18B101C02A2BCBFEEEC41EB82F3F391F09DF\n"
+":407A400003E0FDF4003136CC81DE14C979D184A9881601CEC44433590F50663E687ACBD1A44897D71610E22D7B973CBDCB9A4680EC6EB1B2B288EA89A0359201A9A03A6C44\n"
+":407A80008B623A14050766C48D140DD170481103BCB116604FBA4C7BCB184B24086D0BB977962975AAC09A23490230770251894538000C77962A20116218841DE4C85C0F09\n"
+":407AC000E0BD67A03DE520B07CADD2E262688A739B35100291506077946B8010C334A18E79137831F7659AC7D7877D8C3A0973C7D1EF28E4C5451EF283308FBCA004C0CC13\n"
+":407B0000721007BC9B92C34E4E01D6E490411F793588FC0EF793610143F4EA0C1143383FDE4DAB4200664367DC0E109000C0F2F4A420827DA5F04F137008044260175FFA05\n"
+":407B40003A84F1F45CBC9140713C100041374098118C0CE7BE19A01375FBC17C058E24A7B4F587BC9C9303CA68F21DFB9C58FAA974426D4D80F7927181E47033BF3F1B004B\n"
+":407B8000D220789C0CFBF4892F18CB9F5BB021C06A8B80D810965EA3DD97C58118B62022D17F2413701B42D90C04262011EF2EE212F4E38225F80EA0B5BF0225F01A4282AE\n"
+":407BC0002D0A308965633DE208801C73033EFD0843C63866071B50E5EF2AA1EF2684040C3F05DE75839F0C8F7938240015618F46B6242B063B902AA1D5DD023A851BB1F8A4\n"
+":407C000082E0BF78EF8E3D913012EC09A12C72E58AF06031C0B01AA4880607EE371E93112200D6EEEBC1B12012C3D77761880471F78F00F68FB9DD3C05F90A201101001540\n"
+":407C4000DE3B060BA81EC097845044BAEF1D64CA04F6FF8100C720A370DF1F0652161FE0600332FD795D3DE3AE33118286815C9F40610904E8582454F78E6A6D306F9C24B3\n"
+":407C8000093C291EC7210BE68C53EFAD920944208449F036E4F78BB8EE35E5D8EE82009C6709B838CD246E0E70647900DE692F21C41BC52C07800E6D641F9100380363882B\n"
+":407CC000766912BEAFF0105B20E8480D1AC0805E6DBC208BC715480005D0500D8F450105D0DE623D9404103785E008205BCE5123941C380B841B3D8B050CA101210D2218E7\n"
+":407D000082607BDE070428E9B50125B0350F7886A607E8E10761662207BC6887D88223D859C3A75A1037AD8407DC5AE2048406878491C478C854126B0151896388563901A9\n"
+":407D40007D583C860464445D88C0418F6605A0181320798C181C0388577B908DA148801A006CDFDE225F8F02046A1DBBB738F71AF1017BB60879E800B0708263814040D3D9\n"
+":407D8000A0EED84361B370758331DD33D3B44B4890C90B1F26BC0B1D8B8A23C0D811759188EAEF67CD8423EBD521DC49C7B9BE444D364B70241E068A02E48BF2DABA06C638\n"
+":407DC000E3925882C7C9DD03827400738375E4336BE054721840DF7E4E902A10123DD95424116C86CC562501B0119E20A9D4539D013D6C91A21EF45C8D79FBD461804F63E4\n"
+":407E000002C8306988044E7B9480671FA54D87BC59CFBD328BBC7ED4B6F89C0781B8DC61F78FD247A5540778FD88380B2241D8E0B39284C338B76254012EEEF51E8A2D1919\n"
+":407E4000C9034429B97807914D1EF1522F27A489C0C0E6816DDE3E420DCB1D0452EBB5C16FD1E7C23075F530F78AD9FA60244E060723C09AADE4C575220CB8478CAE05894E\n"
+":407E80007A22582DDE3C689A407D9D025C1E03143BFA8700123DF5D05D64C6213150CE41216010419C0143B745184C5A3456236E601E7BDF106A6C3A1248403A9D2DC9D0DA\n"
+":407EC000BBC43C410043D3A5E3D60A445D0905454D96EEFC400420889D75B0211D4DA5D12F45DE404223270C6C880A822F5EAB9F7901901B46530ED0EF2014778491EC0AD6\n"
+":407F0000B1ED06D9F2A6F8957A3419D8F48A713B7306C5023C6CCC4042587A38CE03C80A3A8919488053E08865D091A798130F9F518FAD6548009E111C5002220CFF521CDC\n"
+":407F40002DC859B262D0E5D698856E5105AEFB12D818E99344030D7CF247B06087A5E38982DD005014EF0FC4BBF46CD8F086B8EF07A37ED9F594E8803E8EA22D3E78F78705\n"
+":407F8000E9026A406A68A976BC997819B8BBC3F481736C7605A28BC1DA85E89EF238001F08AD11A06B7787D95A3CBBC3F4BAB3B44051C86AEF0FB431408617511ABBC3ED0A\n"
+":407FC0000C46420C02E67300AF6ECF08A26919BE61F443AE0C44021E40FEF0F35E75800CBA120D3319CEB041C8024B1FE0145B74A8F5E5D4F8A164400EEEBA2B9942CFE29F\n"
+":40800000117787B18543EA402100829FE04D11103BC184A403D172A45A900304A00F0263C2248209EC7DC20BF6BBC0923D71AA6C903D66485DBC3A3DE154983EC7A461C4D7\n"
+":4080400074EBCAF1182C9E86BFF8ACA038354052F0A2589A32B4878089580565D698635B212C369819140613C0363409734783850E4C1960EA2BE5409210345367E1183276\n"
+":4080800020BBC400401ED25A2C0D9018E8184761AF110FBC414814509D8872D1E70C491EC6EF779111E40183E87AAFEC44DC46C340848263BCEB92F269D94EC238D4117CB9\n"
+":4080C00005D66150FF50880472B3011403F45DBA03002E007798B258074A5423878261446DE7F6E3DE1F07BD0511A03554B04FA58120CA9E83EE234064D170900278860727\n"
+":4081000007787D2004954186C18C87959D87BC3ECC621D814510148E59AA2FF5DCC975DD18F787D0F8357C823EF0F83ECC0A161967DD7625D982085C6019E023DE1F07B78C\n"
+":408140007E0823DE1F23060083036265A100A209994E3A8EA55C06AE023C43CBE91606E97ACDC0A0E63C947045BDF3C9A41ADC94551C1DE1F2C8FA6885E44F8D4208607056\n"
+":408180003CCD30B379AE204FA30AD0EF0D74FBC3555194D1088D208A6548D30893EF0EE6BBBD78E6113C4E7344189B8416523ABBC34111154841C0808778941E44F238126A\n"
+":4081C0008F02217B39C889CD01A21DFADC97789525A5AA32111B9E8B02F170608260BCEF0F644175204FCB1C44488ABEAB0222A7A2698B44A654140DB9BE24087787C969E5\n"
+":4082000026CBC6B3264861521EF0FC1F808A25828800501C8F22E54688EC09B937FBC3EC4DFF78A811B19BC461FE78811A064781ADC8981347A0B3BC4048EF0109811FBCD2\n"
+":408240003C844340E82C084861119210907530EE1E4163B43445C049484541DC58209812F6F3B2604ADBCCC98133000130270F4167787DA2161A4597787E1104203D01EAEE\n"
+":4082800085101026802804FDBDFA3DE184643B05E1EC00F78621804548817C789716892BD790F5FB39941DE18AD75BBA1072028FFDB8212780FC04092008A209F7873A7EC5\n"
+":4082C0005903100BBC3A502A820F27DA15ECE94C86472FB0B88C05AD40B979C318BBC39D713B657C267CE1A28347AA241980D83E55D320C1AE3A5EA4008F7873260BA00886\n"
+":40830000AC13F69A50B1DE1CA81A43884695FC41DAE102CF8CC907A3B9841EF033808060B8E408A1964E7DE1CA610A9819DE19C968D44BBC33D139FC50867DA6562688C17E\n"
+":408340008A3509025DCBC84701427A10C4B63442208D71689F0809E048700C0F41F88FF596089E43D1A02BD3A1F5FA317071C9ED0DC1F40870F46EA902FAA411343B43D0DB\n"
+":4083800043B04FD2ECC219542882B8A2CBC86605E0D9C2D0FD964541101D03F47D5D1C351B023E427086869877ED837114813D1752011FA9510F813D8D5B91A01FDE54192B\n"
+":4083C00005A2150E65523BD56986D29100C92070173107005EFB43112F0C0648F502BC002481E278F2C042178F001012E07D0BAD8B1B094C65DE3D6A02F7D1957700183135\n"
+":408400000711855C094598C1EBFDB2F828548051007FEF42033401BA8C441A51EF13E6742D026883379D17789EA603AFA02240869C0BC860582EF0CA4784071E05026060C3\n"
+":40844000472138B21D0B126160702C2221C17090E0FF84130685683DDE2B461980840DD622C856913ED80F020322B534084ADEDF943010450C0A04FBC56109493077A81DF3\n"
+":40848000A90201A0A4C034008D939871EF40130845881468742CDC96205C190020C9FE579620633DE21440F7A46E17D61C08088E1460603009841E0530805C5A6E80C41817\n"
+":4084C000777522C3D702502EEE1423C006D0508F770799C2601EC5E1DDB52B8E4420FA33487C26A427E900298422778D4F844901414404EF0CF90FC15DE39C08206E82DC36\n"
+":40850000741CC202F8DAF0430E9B931F003A91499BEE4C1EC5A7310E1F06AD0C597BE39CFCBFCE6018FA186E088A0541878B6A8F03288C63A890681D8069AC0D75C15080C1\n"
+":408540002447A5E50983AB74161DDE80478042840883E7165206770B83344E5D4AA08845D0A1ED92F3140F0017C02E05E233610F80A3EF01E876F2497057F29524041F49A3\n"
+":40858000806108605023BB6107D3A54653060AE440E05D69B0C47ADD19D0A8003D846344CEF741DA1A79628B43A3104449E94B41F2EDD8E3900020DE06780CB1E3AE0D9A3A\n"
+":4085C000107BA3944BD25BE0C0313A704B0FBEF14598B0C750246148C772A88D3E01140E397180C0EA211E2781A05E120504B40BD033DBF6424F033B0221FACD646523E28F\n"
+":408600007E4308BA2E4940085FA8C50093B91C668A07B2902B0731ACD12B02320809020D52AF3D18885CF4710A3A7D74481EB21F11CBCCB723DD2CA5D77703AABC23033BD9\n"
+":40864000C441AF0AEA0922681463BCA80A3960783928885E08662054A04723A481EB0AB1F140A0819EF00B3EEC1B1C0081BB590836371643A8C7709412DEA6D13C53C00CE7\n"
+":4086800021DDC0630C04A6CD3220823A5AD20547825A958E964D007C792401807478820A6400A044508827B146098EC5B4B102396741D85E173E2E8BDC2ABF064201365AD8\n"
+":4086C00004A761B38C50825E287A1052084163490EDE2B11389A0833B088D71F09A2849F02771D7110F80A610E4000F0367717AA03C81DC0A584322CBCF3BB250880690EF2\n"
+":408700009790813E17C78901DF46880F00713E15F01131D04089A3F06098E3730EEF0E5380DC101C65F7793102891A2345D7624C13E0593210050028601F7876E86ED201F0\n"
+":40874000CCBE1600806819D9AB073E5C418BA84BC2E165E170A202061F2B4308BC4CEE4663DE2CC44C8185D260C8420484DDD2EE4408E02401C6D03070778B22C0C6FB563A\n"
+":408780007BF16132071150E5DE2C890F20A0263A5470888881C392E753123C291C25079CB50AB0C007032E8B0ACC001C08C7D232400136D201280131CFC286A2059721603B\n"
+":4087C000E45547946002A3C94C01F77BA1826082152A226F4BE60FB76F842014875EEC8E2F4E091622082E07D03BAEE587CEF027E828020085E037582E40D1E00D8282014A\n"
+":408800004220EC33E22182821142200F25175C7F91E5BD441006685DDA0375ACC8031287500A7300DFDBBFE219888098E25B89BDDF2040A27E0B3A127C0EF2FC51772A18C7\n"
+":408840008126883DE3CF813ABBFA0A7BBE38CD707122049F0469501E01A657A100A287BA2C118310748AB9F074F8C2061C0CF78891F0A42100054440CD5F70DEB710426615\n"
+":408880006D59480158BD08B047BC4A8B8A2C904C7633DDC8C5DB14840CFB5DD84001719DAB88B6E5642DEC201EA7F90180782DC11F073220040DA008A150E221F89154BB94\n"
+":4088C000C76D08E0B098E8D1441E0934F1E5DDF9E2088208692A899892B1C88003B1625C04C5C19BD8EFA2409E404777E7A5EA36B12AC1EF2C760F612121EB8CB428481E3D\n"
+":4089000080359A4A4E2671A20216209EBE48C990C143B83A8B2F2845A0C040C53A17B500EE5D04FE12281B0C904A2C04A6B78489C4D84014EBE811649738C8408FBF4C4847\n"
+":408940002ADCDC8BB5CD844D00094344CC26441EEB612C51400507B86BC0D232882300EE0389928BC772A201677D96A45C4822642366C961E7E0D100CEE238D030FC249806\n"
+":40898000448003EAA68A343C248C64063522BA94066B730007D73483ECC6322E0E5D5A90979D8C8087848CC581D0E9CD2012001B018D12E0ACF39258D0102E085F242E0FF8\n"
+":4089C00084958FD6B1A527000FB0BC473A60BD6B144391D3DD68E4117844387C6594470F950C44F62D8E3210F22FCE3214F534BD0F4881CC417B69AC40A09CF408C81F0875\n"
+":408A00006209280615E1078462C8221B90EE26A2E1004368B8B278086301F18410361FD9104621E8B01081021001F1730083042302211A0304DE11CD1EC6F41B5F808418B3\n"
+":408A40007592C09D24274944115BE118D4013522377E231244092D5C01F1B83643B589A41728417100613E499F78FF8DD7C008909BFB60E4678C30033C80D8669500D3B99E\n"
+":408A800043C22566CCD85BAD78CCE24682DB21B0F6CB98F845684B74624C1B0303D28022DFA60492A38F288F431311E822510846F845784AD02A0C1822830181428E200494\n"
+":408AC0002878462898D3A18D1A02E53D903C4161C032018DC3FCCC057C231490D139180137102FE118745BA46220CE0C854A748CD86CF136020F096EA00124012802500469\n"
+":408B0000A00940128025005DDC5C89920831A11621B456403B1881A41F5E46E390101A2100401345E64447854E47C0AB03550440D371635DBA221D5516BB6C4401887A2C65\n"
+":408B4000442AAC1AAA448E4FC466625700C06134C91C974FBA915CE1E12603AAC2139C0B34FC24886272441940BA8401ED0042743106B71E9C9B0D94421613A91E26CF847D\n"
+":408B80007C08D9F08ED0F84764BC26BC47807B82C0C7C47B3A9A7B8A80FC28485E14302F0A112582B884B203C7F90A06E4278489512090CEE71F41048DC9C17858F43341A5\n"
+":408BC000747DD104FDB8AC210064186CCCE33A8903D20CC20AEF6BA46802BE13B520281A06460F090C91C33F9085E0E882BF44365F6110100BC00147D32483C17B0F794FBB\n"
+":408C00001F23CE8B0050DBB44FA1B0E2881639061980E4367AFAA4B0540161D6BCB21808196A47DAFFC7B1B010D05B8D23BFB80A84BB350741EC5508C7000FCE9D2207140C\n"
+":408C400057CCC14650004608619814423418744AA3CA078B42164C60D29744AA3C732A0B2186C00C72647A2551E36D502D931984A5D12A8F1A0A6010032632594BA2551E88\n"
+":408C800031550D59318D49744AA3C9974D0A993187CA5D12A8F15EA83EC98C1252E895478A4541464C4C1CCE4FE4CAA04B26308913400C347DA65C3061C3D2C40C480C5773\n"
+":408CC000A44646087A2D4458051205540B619843A24E8401DF150B63B61840F63630F0EDE1007876C0F49DE4C10EBDE87DA0A13041E9A84163C89945EFC43200BA8BB88A36\n"
+":408D00000D87A11340F7DC9B92629F0F7B4D1021D30DC3D6948B8128006935CF0EA2F2370E90B41F311091DC051840CE7C78814081AA761A476F5134245C145EAEB220783C\n"
+":408D400075D2BF09FE0F0ED9DA0273F925F4C20340E624440217BFF48884EAA351390184CE44F78B68C1A1A6E5960E552EB4B67963A8BED502D600C7006B8039C01EE010A6\n"
+":408D8000EA2F55C115804A715410EA333598041B348C5EA2F147A8C248C356305B17ED8BD6C5DB1EA3072348B9EA30854B7562D5AF517B2BD46124582B15CD4D22B2191E36\n"
+":408DC000A30813686394A203F5184994CAC5236289B140D89E6C4E3325C0AECBEE2020C6AFE2EF8B8102CD9107AE12840C2E6A1C0162580DF491B081C901E5B2096EB1AADC\n"
+":408E00001207CC71E8800CFA4B88C2B008A1020D122CD023006E69E025005DB3D719A418001BAF10F5A6E110E80B8AEA2FA2189DBDAC7460302A1867F71104186C2B64061A\n"
+":408E4000629150D6128D513AC7895815E5F7ED6F2E0B0301AE33300B0220912C0682DF0141892C170F607F94C148DAED12F11E044D72B082BB8BD0F5A61082DD27D23E8CC2\n"
+":408E80000410002BEA2E4302C62060A043B0CCA487F24BD95F521BF3891B5BF699756B49016234708D4A403302E870F66E5107C38195D5AC4613480AF6200A77B0922A80CB\n"
+":408EC000B06A4E81A0237934E87A8BC0EF120034960C36E94129EC3020F8F00A1014583C577A2405184004213A35F8B14F01E45A6BE3C409863018F42FFDB12C38E1C02426\n"
+":408F0000E987E5B4E28256615E12D11DD290BD6F123E4A5846287727A2C32C2069D88821C4F504130B19E98761004182E140010689860008380C6E7AC60083CE20083FD740\n"
+":408F40005F05D72803C6D70B34E8401401CE987A3F32DE175D723CAA0C32E987A21112EA2E62E5B53218DCC821F745F3087DD18D821F74642087DB2D80F7FC20803BF5590B\n"
+":408F80006CC445D36748B0020B1D5950F2CF4714086BD34B2801039E9C4880C032542002B154E7DC9F02C855227954029B0818EA2E544C09F9E6642203753C6101A570323F\n"
+":408FC00050304DDA644F3512E0C22BADE0478288E1D6D9247738F05A92EADE93DB3F4715701EC631A274F4C3AA04387E4382FABDA2BA182210D7F01992182990C18041C0B8\n"
+":40900000CB152B4F00274F5465E10001030667770F188A0168210B6185100432080590080224007F0CC9883DD9EBC59A96376E0F645409003D0280943097076F929610C5CD\n"
+":409040003C03D0A7E5BB5183004E652F19F78F91FC07C64513B1AE0ED6062609706377D090FA46F042204823147CBA0C81E5D5E2E3E9B0031410F7BB48F917A8B86FC8912C\n"
+":40908000BE7FDA102366B02F2F5909E3E799E238C011B4C402D800C83DC06840F1ACD21FC751D86305C880400F058CC2400E1FCC203CDF2405339F6F4521ACF13A8092EC9A\n"
+":4090C000A010FCF16681EA6B9A16812DEB3C40D29C9320FC654843C16A0C11002E46C09E27CB278067E432121A472F095308C609C9C00302C2FF5BA2882BDB2D6335801C85\n"
+":4091000077023C24907B15A4C7D1B30BEC0E617FA1E1C4BE1CC2708F83EB0F572688085D8903C06A0C110C180681270504509670703A51ECBF13ADA0F1D3608F0138F02391\n"
+":409140009A44717626789E0C7BC8B840928482053DB85C37DD8117D38485F090A8DF20044FC02A08061D7B3CA7163A9CE3C2D388081A4908572C07025F12FC8D023BCB5CFB\n"
+":40918000C0901050C81D1014D240DBF29EC0C18704A21154163100116430BEC1037AB7044BF29F497B8760BC8C3C2C143DE78E3E9E8C106780BE88B85E945D45DE3EC3698D\n"
+":4091C0001087535E2530B9E6E261C7E8037F4FA3A2497615B955C0748C3902C270220197660176020F23C8F21781434F96548467D91B4485F46568F8B44047A0F4BA300D5C\n"
+":40920000B0107B157A4BA08D71890F2F0E0D0C037F287068501AE2C9A1E5F9A1CF3532A0D2173A46F85C0772E2772DF6BC441DBD4045036841DA244428DCC7CB5EAA7B9C4C\n"
+":409240009985603944144C6586E80041449604886E8FF11CAA51007C456D2C82177737EF2941D1890878048BD4CC7D5E2024811B71D01FE412026D3E2F09191F623E8F5262\n"
+":40928000080882997461E885043BE99842F4E330F5AE798C1D48048E05000BCC06006401304C82EC0EE1C81D3083BEBEC7A76447C334254F000FEA429235C2D2E00E21C478\n"
+":4092C00001EF48D02070A9DBE2C6580E0081AC167988B86C2906AF623F889074931EC96F2364E8F2A33205C9183C831E8B9E101FC2E4020112E048F3D8A583DEE5040408EE\n"
+":4093000041879767847903CAE050D0083DC1447063B4A6883FC0B6D31F5407500095EF93E43A8C895601DD8FD04051B7839916DE0C861B28881F2686081A6623E4CAC16075\n"
+":40934000312791E60FF5B67F0DCC01E16D2220AEBE43A63810BB1900380CDBC7912119DE630FD9304753805778786CBC77704026DD1A40793417F5B2D8DC2E165402C80270\n"
+":40938000F581D9125E44A01030F606342983D778624D79FEA87A609C418E1FA28114061BD0A46B1C9D300C5A80F1278181811EC2361387B0E94B4442270023087D5B989957\n"
+":4093C000BAA612B2E919B100BAB73593553EA47440D234E18810E1E3C26B1A30E1C1154BCC9F8897E7B3155A1DC2563D48D8B92C0278C92CCC8F6DA1A1D343066374B3A8E5\n"
+":40940000888EBD59883D1C1324B0CFB6180981E1745163A7BC56EEE751EFB4D18201E84025C22258A8EC1CE2DC190BE004D1308BA0331408D8E840FE9F09220FB20384C0E8\n"
+":409440001E04564B6023D7B3233680C73601700392E11773A511C041F12F62258452F40BDFD0C4C32ECACEA4FB1F4EE8881C5F9C242FC08227E84411CF871D915447B29732\n"
+":40948000CF4E433C80E1D2D8045B0CA028F217F8B94110340E0BFDB5F68E8CDC7CBE082187B96B102B8E8C12C3E1BBD1107A92ECC8129501E06229401E9F231DCA988C0821\n"
+":4094C000E1189210D9044A00D041F49939B1DC9B020AF4D3C200AF4D3F1B00DB067280F4C3C29AC7BA8C89D55B45D3500598EC2E006D8005F3E05601665686678C96D2A399\n"
+":40950000EB6B7440D1A82FEAE446E485D34FEB1A2331026066EE8881D350296EF123DA6EA3D34FCB6BE404EC468A96E71224902571F1EC19659D5038F703C5CC23DDEFA595\n"
+":40954000E5EE72388081E459A7A2610F2179D403F5B4397A26744E22C0443C37CD518601EBBC84C884047C31B87C187498B9F03CB79F5E584619086F9D2807BE133020133D\n"
+":40958000A6A94BB832CC80EC4FB44024BC08C93ECA584010EDC53124821EA0D6105E2100330440C3881F7A58E278920CFED6C50807BE770FB5AE4B83E78D0E16360C0107F5\n"
+":4095C000A8E9711FB2ACB3046868B0060A55182657891C882EEEAF1230911C027E0FC45D90903E292918E4820F66738CC805F089EDEE82EB71D443C1C0E2EC61A4C154BA49\n"
+":4096000094C44960EFB76E0400EC6344C104BA84AC7BE568416E8F9C9212D7A228E9CE8424D0931909BFD221D35B0BF4D6B1E0B82B82846047ACCF8C3EC10C8761E83960B3\n"
+":409640006100BADD2121ED02EC6140C4381C431034709066D8123DF6A95092C3F6A168767E410300BF0746CC946E1508D0364091E50CB4B1EAE8322913EAC612056612A842\n"
+":4096800030047ADDA4BA95248960F4603E3A6A3D107774FB267172874BF98FC1E163A1D712409604F43B05D5A746324713019A80204B02921120630C4C500D17846A014DB2\n"
+":4096C00007E106A011BDD4F243E81894004F2241D4280D0150F2261C440D610F9FBA440E124E90187008AAE4FAF048FB7F80BC60FA20AF08553D3348F4D8EA9B667174D81D\n"
+":40970000F2DE50481327A9984C07EB75D7418F46CC959B8F84A59676A8823D364A7D6EE8205F094E53A95A90DF930BA6CA16E129E7D365280216F02F6A858DCC8013F5CA4B\n"
+":40974000E174D91082FE749F330427E6B7F314248A3100472151C2419B002796CDC4160004FE9B422D48796E1422308127B58807D178E3490BB1454BC736443F821D3438A3\n"
+":409780006058F76A52D28C8CFA5448A8815263A06A32D12C18F76440F4CD5238CFC3C25207D36D2974DB3892C197B4C54AB65104BA63310E9B6843810815EBC24228106984\n"
+":4097C000F34632206B810A00129B5B708280976A0D1DEF440489C17F6FF588DC10E5EC08443F85E680F1891C019CE2F1020461D8E9A1C200D8008D21D079033C069457C9CB\n"
+":40980000801C2F031C32886E2A2024164FC492A2101B4746E2AA8174460F41C30362013F68ED8807EDAF5108BD4D1E40493B82D43E102C3047DB7DE2331B200F51E2090411\n"
+":409840005404155A574D23D4EAA808452880DDD30A846A11802137C3F25134C2F50E20388DD041D37A0B14A6889FD73E2207F18EA1C5FA179685D320107530691A42361B33\n"
+":40988000A006321564BF30C2FE9D941EDE031F78E08F91F98411E11FE5E61999F19DB081C2169D9444F248451ECE21C427244241EC7DBFF63CE010875306A5A04E23800646\n"
+":4098C000C08A40474D469073D37704068B5F09910B1DF08A3BCBB1CE60079F54143CE3E4210785B00D8254392541A254571E02CDDD98618038E9B2C2602F254EBE9B3031D1\n"
+":40990000B140ECF5169089015762171F4D99A00687C0C6DB7C7424440047B159502E82F2808DF6B7C09A40B752E088217F30E2F401A875E9BE620640343C30482070319B0B\n"
+":40994000926C0140C71173129BCBDF83A562105875DC6C8845EB7083E9B0877013298BD10DABD0F01A244CA3B7A1163064835DDE004001A24823FA23F9FDD457446A9C54F5\n"
+":4099800010095F753A0F4D44179FFFD02198256F571E99A42E00E65E9DDF1E9CF93E993A445B0BFA6B41C3594C0E3282F623E3F660696417A34CFC4C135E5339101EE39124\n"
+":4099C00003C73E9C891E074C5E1F9E2DBAA4E1048F02E287AB55A4146745A431A5A5E528F2D18E0901E9FC943ABA04CDE40265F93C34C8221BA95C08DA25FADDB4FCD76890\n"
+":409A0000349C48FDBBF8FA57C86300D41C0BA21BAB9C903450F021108E1E8F8B3EAE803337B1A9C5CCCA43E09D7167B6E0498EAAB91257A95AC7509024D83A0274DC991AA7\n"
+":409A400004E706CB2257666B1F846046DD802278925842005FE0675905FCD84932E12EC702E81399122E272336A60201440408B4F64159F4DD9131300C501000EB00A908ED\n"
+":409A8000819468109D8B5C6201A2421022A841D4A668F118A1EA52D541A4C550861D107130D426623F11E0583E0702A4203E064DC1D35A655C435307EEB5C2A99476F5125D\n"
+":409AC000D24B97888D0880010810BFAF61882E0BD53B67EC406F07D308C24B80FA36C163885708B5EB5B02D0F325E79F52EE8402D3C11451787DD8A308701ACD1173C56B03\n"
+":409B00006362B03F82FF8587058018DDE91C412F4611B413C69224E90C0B823E0A113014C33B4F83782FEA54621B833E13723181E2CCB269820CEE63CA670209FA6A54492D\n"
+":409B4000602A70027813EE2D61D5280E2430008B71187534422344A0284F4074100F087D7CB0801BDAD97B7C3C7AA810ABA43B545C400B25205B80F6CF1643E1E900676378\n"
+":409B800036282107475BBE40F0CC65999C3C5E4A5592270703CA105BCEBF837ECC107B5180887342614A417AE5A44B84FE108439B04B82081CBD30409F49C009E031845810\n"
+":409BC000DE03B1A74882F2D4B160E00A5232E0E7BF037ED8C63800E010306E6828F47ABEB4414F0FC4100750A600C5969E5CA5847A00742463531C04A2E0E2AA53228F203A\n"
+":409C000070A835BDD9AC580419E12688E44E216D81DA1D840E0B322792C44C45416A136CACC3873009711C680CB76D31DC75C72164440C2E455225E0C472203B4A58F0D41F\n"
+":409C40008D996013AB43D1359581002A43B500841B0A20C2BBCFD56F26C7931E0BC24BC5D493C5F00B1A028DD90B0140958654304AAF04CC8E014203C0AAEF8283B19D8CE2\n"
+":409C8000FAB5A174DC721D3718581003A6E350ED2841037A6E3CBCFABE384E40F3E02203E242B11CAEBE10804EE0412211F4DC996FA6A569503C80F21C75F1B5B0D99C0FAF\n"
+":409CC000EEC7CB1DA0AC7608C43B0748C2E3840234CE61C470EAF7722403F08C46E13ED37C489602FF5294A0CDCB01D4A10210E10D1EA9CA480140B1E9C61336D1E9B98416\n"
+":409D000018B458EED3488100095E17F7EB82B4A5529FB67C07003880067171D53665D4184211F18A433FCE020446E268C2418F021102138F1E08BA102802BC186F901F1CEF\n"
+":409D40009E104BB72BA3DA39B3B7D828754D4A60211F39EC890A2E62BF9F4C491063D4D1C44287BE1964205F3EF04D12D476F856F4C810AC0E3AA20BC55543E84021E04149\n"
+":409D800062247C1F2A39FCC26B959BB8710324CA890E041720279DDF040E1E0391E70648093D33F45D8DFC45B013D42B034D88A34787CC910E031B5A06D2D8220487094B07\n"
+":409DC000AF630E4801EAA0B2343D70703D2D869771B9890E02FBE474BA5ABD0DC908407881E96B640BC1FC0FEBD723EA7073094090508D1FCAF1D4E9046C2025C7988CC8F2\n"
+":409E0000C1EBA042D69588024B7C0006250E4BE9305D14DD8F5C58AB4C06EA6A61F10A68FA1A78BA718444A488154B8042E9B1E1C3B804179D960C02912224A8096A1E471F\n"
+":409E4000A478606C703A00583C1CBD4DB09884A1783431DF27831A016F958A44808E440DF30369B236A216CAC82EEB9C741A03900D180D09F00B2A017EDF24A628D0E2D1DD\n"
+":409E8000A40B7737210F05A120281203E0140FB0601AC2F6E3122550318D2040829818F1B7794E404F421029E03141F70CD983B7C591B1EA8181034CB241001C910BF6DCD3\n"
+":409EC000C303C1E8403484735441C8FE744C484C60262C181100717654801C73226B06A0B815D4C727D73548088E005AD0CF1C61EB800AAE0381217F4E511070A606175613\n"
+":409F00001726B02D01FD978A5D39443EA6F730182B600F47700810B0D20C0D1063A71C846243AF45C5AEA60D3018D5A1088B48F052F4C0F237D554637FBC990007732A8929\n"
+":409F4000A1EA4D513441E2B4CAD0F0086A060AD3923DC88A2E3E04379675744434602E400D2B11DC3D887FEB9964F01721ADCE2CAEA2C8842CAEC72440038708E44816F6B6\n"
+":409F8000F8591349657922C6FB785D394C8803EEA8C36760E41E9CA25C145F6017471381C26F000569A9C4FACCD9B0229D625C6139A212255183510044D57A20297B51882D\n"
+":409FC00001A2123920C2011AA0E6C36A3E093A9B9F80D2076BC0082102BD407E174BEC9AF23574ED02C77B110ECF683064690335EC20CA42B0266264C5BD98F246873832A8\n"
+":40A000009F46E58879DAFBE2087532917C3CDC5EC61048050F67C2AA443A73390AA042A38C4CA90548247A73690A4465A920039A45AEEE3C25AF61FD91AA5AFC2A064519DF\n"
+":40A040004069968590C45C7A6ED84AA080AA004AA198D22C482E15463D86A64021C34B90AE706705A81AA56762002039874A425310286AAF6267CF04460E1AC4F61590F6B5\n"
+":40A08000C6C49403D81E42EEB8A5D86F03E32DD16085F84DB448ECC78123BB10252268700A930282EB0A224B818392880822CF4801677226B117D881481EE0C783F4970448\n"
+":40A0C00041D0EC4714C62EC40950095435980F4C8096868301B903E341F1FB2311B9D055F6336A3D8810D39BDB9BFA256B00A8D0160DAEC9501600251A893EC40979202496\n"
+":40A100000EA9145802C4E71600A5DED59C9CFB022C82F43B1021D1357D41BD0216073121473670FB10257F821FC67D42D9F06B3908C05113D8812212AF06CC826684232094\n"
+":40A14000B5414BF7409BF7C0233E167D3A260441D4303308B1D881060084A5628F26CB208BC10E08002120F1D8810D766B5954B078A98C7BDA1C4D529ECD61BB3C09DE5D06\n"
+":40A1800005439074568826814BF0DF111A4527770A171F5022D73D28411F10148D2B0C51918D7001126801F8492042321C7930878EF4E71A05017FB3B60583607AAB402610\n"
+":40A1C0008BA1207B03C863838B10931E91F01AA842AE43D1D0C24210D546043D5900E635559A51006D14889B660B4300DA23141427397D1010010E66C0A6C1DC21C66D57C3\n"
+":40A200004A186A80D520FD9EAD35D83E564712AED808EF9603DEE4A268F66DA8823A5ED133D10104902C68060E9F64C391AE3882E2E785DE07278C786EA8FB6E7C426E3288\n"
+":40A24000DA217F10B71398AD0838AC28841C31FCCE63434D8847B111DDEAC5DBB7281C00170F4433910ABD1E0BD224178A8F0BCD0705EA3E31EF2161E17EA34D0063D8FF35\n"
+":40A28000081EF868307666B2040613405C4005EF77A23D2CC03D8BFC566A0648961AB35A3E73722F1E53086A077C24022CD8984540208A51D621222B85FB92C22C7A1614BA\n"
+":40A2C0004D51148D00BCC53E60821DA4762C06A881033CD91EE2FE1B3B9FB54DC71D8007E7804FDCFCA20113A0111A13628E1094D00F0DAF1383CF62B521AFE023443BB5A0\n"
+":40A300001AF619171F851F0680201A0100528E2D00B1905A087DCCF06039E217FAA60901D82FBDA802440223A43EF2A2D11AC15764058896B66803F2B107CDA3D36075106A\n"
+":40A3400006D3AA8049040CC0D16A77441903EF7F0281C017EEC4210789DEDDB1120083F3063080411F06133F03C608121088DF09A6886A5680DDB6EA47F97FE27C01EC6D5D\n"
+":40A380003101C510BC00F37852166C118144283B1BDF082282366E20A068B36284E79E3B87B1BA84895C218D22194432CA9018D8F538E8953E117242D0400058BD1201505E\n"
+":40A3C000AA743DB5E9242968091A501DD886CD0080E9D196C8877874383A1C0C4E85F0944F04D0688AA5D91E40763969913E6C201F4E1788DF62E600B3A94C0E0BAADD0613\n"
+":40A40000C053F42FEBD8A50A6AEC1112C5CF2C07CD8B9579280C59BA41067CAFC021D3FA2058D4CF3B809EC05255440D069411A83C4140C847780F2B2F486ECB527B0B16CC\n"
+":40A44000910DA5DB16C0B00A75441A03442B163CBEC0C062021F2CAE9821A1442B1218D8A8C78E0788A58D04010A9AB1721A7B613BAC5A2772E1D483AD475B12A407B16082\n"
+":40A4800075A5F15FDA62B51644E70309651EA0E847BFE7678C9E17B9548B4F1C27001C5D030501B21181006F6C9C09BA815D0C21201A80300920DA038A2504A5E807C5B46F\n"
+":40A4C00004D1ED953111CD633CDA3B0D5358DB28F0158602A42C02553A1DD0BE3D19EF314160A062D78050C62580F44F2447312A213C0D006E326D8A37DB24019C3594809D\n"
+":40A50000164123D90D8260AFA40924A9091A258DDE00448CFE956A1014D02DAE7178D12B7B21B9002466722AC0B29A9C200190217F04182E00FB26B14047044709127B8301\n"
+":40A540009E279A47B77B8C0502816088401305819C7021B46D246D0327F974780686894181A1525923619134D89051A4C8935118C0917E8215818CFD042BA2F590FEE8B750\n"
+":40A58000643D28787857B21BFB21C167019D7D20407D52888C2050FCA381A0463561856010AB53C4049C48EEEFA62811DD5ADC78F9C0C128CF22E18143C2AEA22B12A2AD54\n"
+":40A5C000B68303631B069889330089B6A02C370184F52C0D413E8318CA00388B105CB902BAEB246D482528160796C0B8C140CC3F024FA52230BA380F22289EC0DAE0FC9942\n"
+":40A600006A90E525730B87830348E4840F670D8E0712EF82D1C0B8A11D81B51ECA9148A54AA4043BD806C8171A01100C7AF5121955080DE39021B18D17A280C8721C3BE9F3\n"
+":40A6400028BCE4B024604AC6D8F63DF41E3EA2212F3937915C03FA5328871F3B529CD41E10DB1206BC047E2E0C1F1F3121E073220B041F66009052010E000CF60680283006\n"
+":40A680008B3D751088160F20088847F8C5E52F242DEC7D9538830170F8A36F020BBB73D442DDA41040728304B298249611850C16805AA80005CA3CDD58A1CA6A9CC04965DB\n"
+":40A6C000843009509C9501CD1392E076CE1348E148E16DC11305BC000357081BAD385B2A2FBA44FE0BBB28B84D6ED03711DFD64C6239835E57962B611945C7038C0E63E197\n"
+":40A70000D523340D10243E05F8DF689AC63E79888066B99E3D8DFEA615236803AF32E43C090F65790E50300259055303DE8BC801A654FC8FB5EFE5C4073A42EEC9A0408A5A\n"
+":40A740000B98358B3B67178BA587A7D392B67A00482D7B7C0A02F0DC3D12365D2340B43C088344B4ECA3F54A948D259A057F6653095AA005B0289465ACD02AADA0251A4494\n"
+":40A78000F30291FA097605FB82116681376D1125C8240D526AD8C6055B4912D53D8A9C44D34890B6981AA4A47236D440AE4E3843FF76278DB540885C29978040381F108FB6\n"
+":40A7C000F88F8C015503FE161E13408434474B6CBC881845550223701C6721AB2B3B8180F133501DADB4AFC20886680ED81DC3CEC3D24ED57200704C8F82CB0C5B236DBC0F\n"
+":40A80000A14880B63B0226B0CF89284675BBF7C3AF6284102D72BC0ABB070C408008EC10886BCC48DA012250ECA5C4C50B74A9E31E72C17A1F0C018D13404503826513C048\n"
+":40A840006CD9A9641EC4ACE8BCA41FB302037B748EDC182C1B8BA46BAC4AC456B21D2FBF6E56BF7EC423673D003AD8A989F94014250BBDD9C89B2039716F44478510C8381B\n"
+":40A8800072181B97F822662200EF3483DC005384B8C0736E084DE48E1570050160E76777CE201CEA64073B6084EFB818A104F146E080340ECC0022762E1D2691D2A3A58EC8\n"
+":40A8C00012D2B850BCCD902141A0729A3F122B0F6601A802122177C17EC66A9B646ECE1A44B803EED265C03098290CC190030601306C1002013B5843830C0D135C111AC084\n"
+":40A900006003013980D5DE89A606094A4159A2679A068DF7A67547226621840018DB94041D344CC362D1006FF88EC0415348C6F37CF882B8358881014820D4F1374D131A36\n"
+":40A94000CB681707278F1590F1C5748078358CC14C033C6CBC801637226A96446F94B787B7C9C4BCE3AC46C7800E470AB411604826008A0C00B4487DDD223F08888EFC30BB\n"
+":40A98000380403D302046B1604B02BE1C161104B8212CCE894B8C70681017D8830CAD5302442A2A89440590548D106B0A28D94878E668885C415CB603220840520382E0079\n"
+":40A9C000FB34D06641A9502B4E640099E87071916287B221081500C310B8C00A38053080A02CC403805F929C855C19286890AAE01842C472D82E44D023B05F410030605C80\n"
+":40AA000018206003026C14056B12C4A386E6E01DDCC023B512D58014314BC0C12947106BC3EFC804E17D7F01AA3B1B1DADCA5EBEA01CBD01104FF21CD8078FF37CC1204DD2\n"
+":40AA400080F0FF3BAA240FF37360C018623AD2364C120A144E948D7F4A0311AD9D012019066C0805C11FE94CD2ED2E611022130192021B785E3C7B5AF04020851D52D1F1FD\n"
+":40AA8000E172F01E911FE364EC26218241A469A8C14866B34145F1824228CE517880311A8E91EA2EB1C23006505FC39C47C6F3E207062078F0770E1E04C7107C8BDAFE48A2\n"
+":40AAC0002733C133AC14DDF947C97B232310854F8FCD0F69A490C20CFB86C8B845B954101B2018EDD52B920A100380440507D0E43D19DEAD09193011FC15508D30AC7F3F45\n"
+":40AB00003CE2044599CC5998E59E8D744B33B0B3334B303B609E114F55BA241ECE7026277E0A1026416CE7A5AA701048612E58D0698FABAB04A2F25861712CF91842EF40F2\n"
+":40AB40004B260480C1776022130389166C0507F9386E9FFDA70C20717A04793E647C9F26400FC4B8E2278F0110126705D8D648062E008F4D8D083E3B82013F84D04803E257\n"
+":40AB80008FE5F12B988823F19E3C98B3814C02116A080C92CC52106C2EF1E0B1DC14640288687A31007946316EEBC84500A1BD63203FF9EA692B7B0801C516886CE5DCC8B8\n"
+":40ABC000600C2F5B54212E1F36C211FFE80F0420C443AAE1002AE440D1C48BBF3C27E11B7B4F8C87D2F75FA244900A3D85E3C0383AF802F4CB2015031C601EB82AB91EDFDD\n"
+":40AC000003530F0B681E5CDA4018E4340F427FB0ED121E445A3E81FC79A80C49C6360DFB65E900B8A0F4A6C9E4B529D9DD726E80258758B68FC289022B8E054E74888ADE21\n"
+":40AC4000FE7E1BDEC02CCBD210AB2AC44513FCAB3C2D2A06BF8DD80CFA2C40EE40C02C6B2F84C11E831DFC4D2EB8261A0E1EFD5E1E07968172040EC186CC242259EC239B36\n"
+":40AC8000206C322249EC04F6A0491CA7259D80F335CE9010ED35FACFA08E1207314CB8C9D886B9820805DEDD9E50460B90363855E8F798A891DF0A9C0857E825A2EB43C1AC\n"
+":40ACC000037754F22D7818E096A051B026751B708027F84A6C075E75D323FC23AF6121D0068D821E8F08247F98FE0A77121CC1080FF03CD8F876144FF0725E52D2960DF07F\n"
+":40AD0000C017CB4E5200B360C1028029EFDAB10F42EF051722071A4171007F9C3E19512EA71C1C10D04892BD65D43F12951FA12004B1F62030CD004A8487F13D71F01CD9A0\n"
+":40AD400093C4C1C223F780111B9576060007E2723104404EB63A1C69902781F74E892A381B1DD47025C9167F1266C1066C9587F1DAC1406F789E984FE3AC063767502B4C2F\n"
+":40AD80002EA96B2A603E616B1D995440EF7E938CD80401B21A20721B15100501FC7120421B2701FC70D251014FE37CD8290D99E00DE3603A364003FB6CA618311FEE1716FC\n"
+":40ADC00047D401850F88100D9A1E0479FC3D7B69504423F878831110FE1DCD1224D811901D7DAFF4218172471FC399A2439B0251FC391B026439DB3A2DD60271FC371B1E7E\n"
+":40AE0000FF621030133F86C34482360523F86BF6D3008A87F0D26C0AD3408D0688F86C0B07F0CD4742C1E20D1FC324388B880C6688F66C0BC7F0C3062301FC301A23A20339\n"
+":40AE400011FC2F1B03249845D6066485B346E5F01A18168D11C4D81A8FE160D81B28398AC6C0DD1A22A9B0384188A6688DEC0E47F0A468CF403A1FC281B01844889EC0EC40\n"
+":40AE80006C98A5C8087F09A6C0F1E038D2604B360863666D0294D8220D91C10293BBB2840D254333A48325824B2E888946C779BF16042AA110B102750429B2601FC4DD79E2\n"
+":40AEC000890A7F143EB30693F6A4C4E34097412F35092C6C1306CD4001286C1330C35701F11758B048D4F8C900903607A60072E40C3F832F25D1C81F590885EA15240C7B0B\n"
+":40AF00006228488C22247801183FCB8E7190181960D80EA16110E6C0C86DFA065F05D9C3663B8506A88191CA9B0CFC2054791BE36120B6201A01D01E27031F0AD61B1E26B9\n"
+":40AF4000CD19A42B5002E017C07D621000E70E899844DD7190B20760CB407E0BBE13FD1284FE03825EEFE043501E5ED4121E22D840D8B07B93910406920A2138208D746136\n"
+":40AF8000301B34DDB741823131B4003607D0A3D901C2107C16F263A860688383A9A2508166C02D3F880CD6D86C33F81FA7B1B0451B2069FC28EE06E88CF6AA4B01C0DC78C9\n"
+":40AFC0002376FB1C24964B90F1960900047E17E423FC10F8FDAA8281C191CA20A1047E9108A21823CA23083A082E5C4303A1011B4691EC00C551600B9DDAA4C1BB784D53A2\n"
+":40B00000B59C0BA8663D115A0095A103268F5E868B0C657897A61CC7598A3E51861044AD01FB008441F35CE6030CEED1491638DB591B5DA16C26DF68B4A66B1C3D640C3060\n"
+":40B04000E2CC600107B9026FC3AA6690084C83B5A910BC067C3236237F616F1E166300A5E901A29033E6F0099AD30013C2D22048062ADADC72728C0A3BA8D064250992BEF5\n"
+":40B080009020FE47C3C5C65C00C3D820686CCE026896F7FCA592A025F6422A0041B522268BB02C1E064204C023E42EF26A9204D4207BCB48713C108CB407034130888170DA\n"
+":40B0C0006B1F092340A7C41E7DA0AA99E01A9A255627D549E4BB4C89020D0291B130D0774134A251813989EDE408DC84B74AA50164D223D976990245E2809A8225D16CC02C\n"
+":40B10000414108A209E6425A0189A03CA00035F8794C470A5C61028E31231C713D3C8F609A4E63F20350126D55120C017EE7AE1C4F2A0CE9DD69155880121D2389D8C54569\n"
+":40B14000631102D2308600B8D0C6B826E139114B27D1834049CCC72A1C0F425E42EB05320071FD4351110090F9488EC85D123313A3A4029074F0C87EFDFBF7EFDFA01574E7\n"
+":40B180002B7876C0F02F1154A21F848CB12F081030238128B66979ED0FA40FC500043D331CE43017688EA367F0CC3246BAC02E100D03649009CD5366E022C23F0CE3E283D0\n"
+":40B1C0004CD9622858004176076EF653136803EB0F222B7BDBB0591C098358D5EBB951B76801B6F022E80CB8800D734BE22171B82C40923ADC626863552362DC226919C679\n"
+":40B20000D806DFC598A5C4C1E7CAE2E20B4AC6348DA3C6582041D07B49533150005900A040DCB061C9EED0BB693500849834FD6590E6043406960E3AB35800E00D40815B91\n"
+":40B24000BFE91124177758509AA535C5CF220614562D260DB60963489FF8B6807CC0C6371614D80C138A20610563D449903B61A616C06287B2A510038428403548423401C5\n"
+":40B28000CED679320462B8C418235127401659D9446EB3DCD46238B043A3186D8EE97C07623182329AC3E90C101AE39F6A4C8802688FD711B91623638196895BDD95C25A1C\n"
+":40B2C0009C2C91A02653714B8447607220A761234247430918C10ECD21B08261C9C6E2F062307B310C6E23119556444D1688C78842688B970931140E3680872157B468E468\n"
+":40B30000E0721514683058A43DE50C800A4685DE1D62442ECECE54D111CD612AE0D110D6CD20C8D00D8B2006DFA05500280824053B00D592E80A4058ED507202C069DD1088\n"
+":40B34000E80D1194BB4B4120857D8060A0118148FD90096FD71E8045F4616A0209D4042542E18156DBC2592888624001E88591B7021CBA18802D07A0811F09AF20C791706E\n"
+":40B380008BB90207AA6CC60841346DD047875F5F20C084122B200000030003B0000000004206000038000008A4001FBF7EFDFBF463F6111E043A57D658D0D78EE212800639\n"
+":40B3C0009880B0293900C501F6E23B8E9F02413DA6A24210141100CF3D56E49FE4F8BF84BD066FF2024407207715E317F720320BE174DB24A8521175E2F7AE302DAA0D20E0\n"
+":40B40000277174C376942DCF5CC251CC2CDC858C4F18F4DA521B040190601886E0040C5A501B6009DCB38426DC63D4DCAFF4DB04F608F24411097D7DA08301896908877B7E\n"
+":40B44000A6100FC0D604420C11CA092EC7262B0650AB855070530F98ED90D29D901090089E5D205921742398090189EDB58200488479D90142176B81136210488CC94C0440\n"
+":40B48000CA41428014869188F41FD1629EB0F120153CED38A28BC795C400873461E5F7EFDFBF7EFDD898378DE35EED45A89BA8A19ADE01CB76E03DB678400ADE3D8CAAC20F\n"
+":40B4C000E00374C0402ECADD2EAD421EA1B23EB56A2C4AA459866C9CC3374B2316E40D3A84431A43218C20D917A8250D36B89B003725C6F7268477260791CBE4DF72264FDA\n"
+":40B5000051F461AEE6F54360C61C0721C064188643C0C90E4320EE1C86E1886830C2E21C06084290C43A86C1A0641C862338EE3D6E72663586FB0790C9B20E4305098CF69F\n"
+":40B540000FE9186639DCDC9E57DC1E56DBFE0B6FC7FA8BD6DCE7AEDCEAD6C41EA6DE48ECD07B7E410CFBA0B18A622EDDD08CC230BA0A9204020D3C1D6CE9153319823662CA\n"
+":40B58000442D8F454D43D67B18A48EBB5FC4841A918C86FDBCA1008367B420F020D88B0E4CD8D032ECAB6726FB2F75684791B8165802857EBA1491303A6648F3FA5B1BAE87\n"
+":40B5C0005B197B3B1682DA9FC60354852A828D80A6400D8F40443D4F908E832843A9A0F97DD642F621002096B6304200454420049884009B1F18D49361002AA21002CC42FC\n"
+":40B60000005D88400C31080196210034C42006D88400E310801D621003CC42007D9040C42008588401131080236210048C420095884013310802763B8A09B5C02C09B08072\n"
+":40B640002A510802B6210058C4200B5884017310802F6210060C4200C588401931080336210068C4200D588401B31080376210070C4200E588401D310803B6210078C42069\n"
+":40B680000F588401F310832A44750A15B6D55EDBB66226A5287561B857D256E75EE1FB0E7145089993822307314E11D00492361AAFB8B8671B9190158431376DEDB10761F9\n"
+":40B6C000D41DD9AB0A060C6C24D41EEB1551F36208D47C0D151A03406400756DB08E1CB930432F404DC8A7BDAC0C90048B4996F3DF2348C4396E9D686EE6F437EE850AEDBA\n"
+":40B70000E8E2348C239C32436EDB4C50B88C23C28EC59D43A8C686F4574CDD6414F16B9D346A7336376463BEA004914EE5648431584514A8AE6228F1BB7C4F07A018430C97\n"
+":40B74000548326419840800006000008000100020300070C00000000FFFFA1EC3800000CFC244004C11147E8BCD21E8411BA10C720080628F1830841E1B3018420C1484071\n"
+":40B78000513C00142784A141454C267EE3827E907D2B6673795A0C4F48213B278765A8840A41032081902038018186A5E0CD4D0B2C863A8332D6139C390549800D004070AE\n"
+":40B7C0000303356706E12C61965810DCE81094A8057EAD2EA8410AAB9840228CA66B0A841FA01064019D1146CB10C18D1418392623AB8002A14C140AC17B9521C01807906C\n"
+":40B800000B18838122022621006480C178F30EC0705192964D0034B2288C200C32EF7C32A6E41870C0F18433480162A8CCD483324228EC100304219FCA2189C003902C0883\n"
+":40B84000025034603E639C86C303B861ABE30FC2C110284FAB7AE4468430084C19943A84DC5C006520205E101801408C9100305D105400E0408860081062130F204E8B8008\n"
+":40B8800029822C1C01616C83500606021180342D11AC01C640F4B11080921694022218646012020183009880071877D5A0B80542B160A0160AF3E20170A228280604109A48\n"
+":40B8C000C03223458601A0B069300D843229807022924C03A1162100F043225403E14698202010828A808442020C04403270404616459501208A17D80946D518404C24C604\n"
+":40B900001501388218980A14911148809810150C0A9040561927040583FCB75016840AC83605C102A41017841844060109446210EA410190442E94066112822034087204CD\n"
+":40B9400006A10A6C406C206B2101B882844315B046203910141101D08010D407623444603C1750880F4438BCA03E0862A301FA6844805220881081810814514408618026F1\n"
+":40B9800050220801558114400E0C08C20250811C2649102404530D40921162102504C90204B4A11261489A410AC09C1B0A8604F0D84630B3A401CE0C17D451029088844031\n"
+":40B9C000A62F07850ECA5C1702A889B3F1B056101510815C014D8816043012A05900047302D250896C40004A05C55C225D008A25E1103E302F8AA21981812844C221C7A583\n"
+":40BA000003128422631863CA81914A11328BF51332D10899C0889CA0683234853B3C206A08534206B18153881B05244206D1812040DC42BB10378608840E016E8620710B36\n"
+":40BA4000568040E45239995E88052B81D4812EC0EC4442077312C40F0142D4081E440DA1103D083513D8808440F82A6C1081F44188AA07E1610881FC41C6187C001476801C\n"
+":40BA800030F80238A1100108CB3E1B17D3838811680418028ECA9C3600C332DD06C01C30904A0080C5490D8048425105010331802C3212CC01810AC186C03420976A00E01E\n"
+":40BAC000812C401E1007E50080CCAA036022B3020C048E2C04C41D4E1B0141815306C05568C4180B1C580B800321403064190833A201A4E0886D5F88301C5AD10603A716EC\n"
+":40BB00002E000A28831722201F081638403E10AD28807DE3D1E96C3E118C894202438B0255AE10604CB4C20C09D6BC418141C58149C581528E222B290B0C85A642E3217968\n"
+":40BB400090C0C86264323219990D0C86A6436321B990E0C872643A321D990F146111E89FB800D8608A500F87E21ADF061F100A21F104C43E211887C432AF2F10F888833255\n"
+":40BB800029408C6047302418124C094604B302618134C09C604F302818144C0A46053302A18154C0AC6057302C18164C0B4A1265B001671360BC2A8066C3E3001EB789877F\n"
+":40BBC000C610EF4F503101C02140C63AAA2503200F03D40CA03C4A606600F2C40CE1103B50340123C1862CB80E5C182182F7035AB0513600508D40DA3E0AA606E0A1724926\n"
+":40BC0000B06F0A002A6188D4416046406E84446C510F8F01068A207900200A81EC0180EC0FAA1089F90889FCA3C475C6DAA7C476442C6C312D02334130C4B60500A586252A\n"
+":40BC4000C04809AC312E81CB904C312F08602D300C049C1000C060B258601E5B64B601815088E1021700210990C010480A700C0169622220017AC9B0240203FA808D10880C\n"
+":40BC8000940607EA0260213C1B0270197249861ACC219916844B0611B7846910FF13880072C31081250F4B570DD2A7822200C0F231E482E41349C0BA07F9DEAF987D227B61\n"
+":40BCC00061F8040084A9E2491B2C987E03316693EB1151A2061F8154A100FC0C00EC1061F83C00044987E0D0037E0987E0A481111007AC4360180041E5004803A286C3005D\n"
+":40BD0000A822E00B46220800B5386C080A54A110C01A0081C4EC780172855E005D4710068FF3EE1103F6780265BA94870EC5BF1C28005800401F115D101004821091211139\n"
+":40BD40005D2CDC20344080673240328264E0C2064041991019401F08C91600848284809E84DB101068640648033A9405282A48082524041A92032803E10682C0189058908F\n"
+":40BD800013D0A242020D8C80C900677280E505C90104E48083724065007DA7AC2C02090609013C59442020E0C80C900679281250649013C59C42020E4C80C9007C212458E4\n"
+":40BDC00005120D12020A89D3CFCC60440B07B240B2836578B440581D9288163D2FA82C03097A0EA058F16740B03C25102C1F49034A0E95E2CEE1607A4A2058F0D220B00EE1\n"
+":40BE0000241E285C579F9E85888160FE481E507CA17943F2A20AAA8580812F41A50809E20A41013D09842034410049044A1092020C4A2092036C1A16C8A85B222A79FBD867\n"
+":40BE4000454310F032054CCC713C034E08244506C12F2127A5C509000000000006000008000100100300454000000000000144883800005B403405234453E0C64229C1A21D\n"
+":40BE80002A7432208A8690A9C92B060C0554855F0D0408AB0A81A42B4188ACA42BA85765E8FD8160585216542CFA1C60459DE9B045987440444D216A1445A8343B2FE461B8\n"
+":40BEC000405B485B47659A8FA7C68608008341089440944D21721445C83445D485D642F285E642FA85FF427608BF0A81A5E903713406083446148616250816688C2818B851\n"
+":40BF00008D288C4E5D96B22C0C6A5E4B111606452195432B21994333219D433B21A1434321A5434AE080021D418861E06A73694000747B43081606162BF0449162C640040E\n"
+":40BF40001488FA0E7040112C2447D07202008A46420008B58E1C424E13D222D6F8703CF2A44011737EA61F28E00C207370A16058446022141624613713D41E42C619AA630B\n"
+":40BF8000AF61058D5B1CB0762232FAA69846639191A43CF43001B035798C2046A293D0BEC6008DBA3181621046FA04238F174E108E483A284100474F32DF8B14407C53ABBE\n"
+":40BFC0002CF3EC711DA4423B929C0EAEC011E31F94849901723C8D1D12D07899626C1B8A0581EB9329084992EC23EE1A21F0ACF4803D4D913E83F420047EC6A923F6F620F2\n"
+":40C000002124100023FD1E10947844803415E75B812268B4E0E810048BF3350144091744048D95091DE66B62A043D44953E8410200490C917109F6E8C12438466084F9050B\n"
+":40C04000F2496AE064270A21071F10B19513249900D63589253AFF607C1D1E3CA3987A26D0E100E44A7C1630FDCB1E779F12777F4C109FC399224EF99B5888C8413D12A140\n"
+":40C08000024F008D784A18589217AA9E440E2E208310E470DC920B840E5786A76AE709E848031A86D914C023079EEAA0782014881E79A290B0B9017807B1781E904411C467\n"
+":40C0C0001202CDA08B7F8E9601AF032E11E1D23103BEF497799C200798C0B1403B135C94248760A0ED024D4E9F40108C01224041D410EAC4C2E6B505CD15C581E402E97BF2\n"
+":40C10000A1108D43723870F541481278C7AC811EB8E41E81B220A530009D0BB7F7C440815A8707534D0FA21C4489017B7DB44CE358D060A021B8B8188121505DC14FC4D0CB\n"
+":40C140003347D08880058672FFBAF54B7D6F43BCF1079E9B0F16EB100BD83265C095C7A9A60A210E73925E59FA1E3BAC234F1E1043ACDD87CB2522010BC0508411841D45C6\n"
+":40C18000F53D7BEA3E9D851203BB3C8BBB24880E00816F5D6309A25D17028162061A25C96200705D844C20B820363C175EA169D261E2481727675E719700E91007C136442F\n"
+":40C1C0007903A689604C9964C8585F74CCA8FAAB7C409043B21D8801034EAF52738803EB1E73DF6108A605BD75E887AD62D026A1CAA980D628FBA328420E95BC28F44A9E96\n"
+":40C20000DC7F2607A4FBBB08C22440D1BA1CBA71C44C21F4B6188BAEEEBB4A524CFA854048060932643F2E7BBAC9101FBA1DE9C3D6AA875E61C11DD5F01451704291F04352\n"
+":40C2400000F883107C051E5C2F184B1F0A278F3F6A2E678E260B078202074314978C900415E964D2E94782ECD263E830844A243937A8B1E06921203826A97420C8F2DE4152\n"
+":40C280001C3C8374413F4E7598883007034069CFC6C441F1FBB083411080180B362100D3A3630485107CFAFE20C043D404025CF76F38D140F31F590420700DE02C53EDC6D9\n"
+":40C2C000612A49204D036FC14F45342E6E291E9E77D3113CBF1406F287AE1BCA6629912B278829D9396364B010BC927A3E565910D417ED34B33D3B9734784198E0418ED0B2\n"
+":40C30000BB2E5E622138181954F173FC720A64E99B4004999F4C9094940064FA0D70BA6CDC7D33B8210F9E8D8C3F3FFC13BE45C89DD25CC20B00A401105075C2B08203EFB6\n"
+":40C340007A2B9F4A6C08A610B0177821D4416F19E41093C42947B960479BE9092FE1B0111F82E083AC1544B2ACE10BC81300660777F0211BA24BA1EE44A2E304E8017600A9\n"
+":40C380003183D671E8028028E75B68779D81325C00CC0443026112F124C777C6101A0B572A068F982907CF1FE81D00297030F5E5111528759D09701FE1178D9BCD400BEBBE\n"
+":40C3C000CA322C028EAD644474B7C17A19094E66A066D2466279DF81726B62F380017470E17777B25D56545E7B384BBBC087BCD18FD8314406F63CE1048070CC7D91FDA829\n"
+":40C40000F25CE924B91EB1F79EF11C4A3E292622E0E2F0F0B570C511038D137F8888901C4305DE5CA8207F7CFD401736C7606B9A9E09B43B033C442CBCF6542079908711FC\n"
+":40C440000E4B8886113C568FE3078F45C702401A641F40869000418423D0ABDE7F43DD126241F8D00047815392BB892C0B141CE9E048002C56AAD132BBCFED1326A4C4025A\n"
+":40C48000E901C2EABB22E69F620F79FDF4420348C7E9F1E2EF0452344C5F1B6E14299884CA1E3425267A2D74BC6C785C44E0A6112FE247D3B2C26897DC053CB9D49152E32C\n"
+":40C4C00002C0117F9CC988227809DDE74222EA568F1EF39D11F10F43000977DE742561B0F534E99A058F5FE1B41A2656A8FC65D7FA8CF0676271E63347C19E8C7F5025813F\n"
+":40C500000A9531FFCF0A427E548A721464044F15F522875DF89712062A2845C1CE79105D05425D08403DA56A3C0F3C608C3510023E419E5847E08E3548EE0F885D084A9751\n"
+":40C540008B3313E99D413D060E84272E841E110A97A5D0832221D3043A104C440A6298F7494B952A1D2E0F2FDB4FA067C6930D24006CD02CBD73D043A77A0119D1DA53E75C\n"
+":40C58000E0402125812A446272882C1102223524101D6791A495D9000100D79E079F08881538B9C5F0F49FC08F1E5FA11084141F8401F41C2F43EF57298DC0C1E2F771F5E8\n"
+":40C5C00002D0941E501D43C6FB885AE8098040703CAEBC00951ECF4E208CA40538F2508223A855BEFB8816058156B21EEF5F1EA59520206EBA3C89E0CFBD800B86E5885547\n"
+":40C600003194D41E9879105C200409E0D3CD72E220461824A360621F7C208A7C3CA045E27837ECB8D1901FA9F447D7A3460209B1C46B87BBFCA093FD52FC20F14E501E000F\n"
+":40C64000C73A67234439020069D0BBD11C7ADF70ADBF0614A0887F2911172A381E84841003A8CD08A7080D50C09D0009D08BC1470443F7A3C181E4D49089D087B8AC47C7DE\n"
+":40C680007A63DC4CC8713C81B24A006A3424789741600A80447D00BD5DB645B807E61C62E004A208301780804F814B089E0D7B3978493EE5CA1E22A82051160083FDEA5858\n"
+":40C6C0005DEA20860B61F25AF107982E90EF51630691E9EBC2E7BEC41C05D181EBC921642C841320FF3F07D0C19EBD4A2EBFD06B9FEC25D20583CD578C18B898C0F05BD4DB\n"
+":40C70000A3A3DCF8C881C6B5222A183E17871EC1EB2E8AE71B4E896FE049A1EE87E101CD800CB7DF0587C3D103D934235586248006F77341883F5365E15012038CE9948927\n"
+":40C74000E0BAA6C982393EB3721E9C862E61E235385C3BEC40DF2E899779F61440883979F2209E013F55A611E8109A071F8C6407BCFF48E240E02780CF3FB2978AD7CC604C\n"
+":40C780002FFB2DC040B0D8222808600EFAC02780303C329AC3A9BA84F8E09FA2208F2017AA2C47B3120C7928A8A075F138F445E8F8700D001CF90B7D5378A16C16F2C34508\n"
+":40C7C0000AF403A1C4BAE921610EC7722027E955C1C05021302C300F0710E06D75D5318350C62D1A061931D4EF826B17FDECDC57FD804DE85501098132F49027823E98712B\n"
+":40C800001B10181A59288062A45004763A4582794853E627A4071A5329F22AD10C10038C6862A6E01374548080DCF534662095833D731A2374A51E9E2C160020CE63405A12\n"
+":40C840004CD2290602E4821002402425E10F4211F50050F085F3820B7B01E9D390037A98027E4A621B40081A3155B14C022C503480D13A25114F995D8816068850E43B5A35\n"
+":40C8800070C0D0DA18F881F1D3003D84BF5CD1101A1157DA068118040340B1C03B15350F017907D3E6687537D0894068051E890A079FC81403AD450109D4FCE23A9ED8C499\n"
+":40C8C00060C0E2CA22407AD6784C9030AEA2C4C1B5EB38A2E0B923500737001A497A94BC4CAE988F1A83103486467F0E88E818621E9232470388B81201D31820070D51C874\n"
+":40C900000D97890BDE386819480C52E2641D324200700D25A3131280C129441C0C3BC6410018290B7A2AE910380AAEA54A51D469E9970123922F21048F4BD354A36180C103\n"
+":40C94000821DEECA2118107D044C75A0D1007E7B261EC255200C811983EF447E49192720943043D458C4621486074CC599896D11274A5EA22D418B1028068E4AA690744D4B\n"
+":40C98000710FB200ECA861C2010765E1882E5CF234E9F42900F55DD930C0A60B869CCE847D0A4E3DEA3E5E82372F429194425E84C41F1053102DC1DD8BA16648D00CC0819F\n"
+":40C9C0007822F46D2882E0C04227B6C04240141C16086CF43D8382208742C117B0670ECE03E867410050BE1C028F40059418F429609300E8C25CF689B902C1378EBD0BAE62\n"
+":40CA0000AE8A5A1E7F5C224103791DD2B846879E3267BD5CC420F088298BE68024581A26803DDEAF220F2E140C7CE86C879AA212E14889047D83FC41A5C240007A7FA110E4\n"
+":40CA400050C4B900758083D4B385E70122104EC67A3550FB475110492EA2F42C0885C9180BA0110FB4020C17EF5A947A3D647C4160419F9FE34BA6B688A1303AD9F48173D8\n"
+":40CA800073011074CE90C480AA1A08207054169C0CF72298C3886A8834B340D5F3FBC970A682E98681E205E8029D627A555220C1E01203E0302C210366016620598800E070\n"
+":40CAC0004C1310D81566400389E05FA90B4BCF9DA3C2B3479F0608E1D3332878BA40418E0D823E842E12039ECA97A00D48182822049C2010E8DCF1BDF6094600A04E74448B\n"
+":40CB0000B8EDE7F105082E25F425C0407874E1D8FA7B04413AAF3EC6721F132FCFA36F960181AB9B604180A841B9E83078C70A1B2EA125102303B177E9F08800510572C91E\n"
+":40CB40007A1710BA14706790200750ECF02A00E19A48848D01C3C49BE3C05747C23DE3DEBA2877AE7890D6BF26046058401C8089515EBA2268CA2F4980B3200F022A6A3022\n"
+":40CB8000B954F13C4D0247AAEE241A894401B3B900DDFEF621002B6ED0037D6AF938BB88D022C0D3CA14BA1894FCFEAA3340887E87FE1F06150F4CDF0D91C08E1D8309B8B0\n"
+":40CBC000BB04A04CA3D855F51251F371811E8A21C8B29F8BA324044C3D8D5E85F3208F311A7A3B0064A602894809692D383E0978F74C8429290EC057590A17993704032682\n"
+":40CC0000C7DE06BC231760050E16001489F1900BF2EC895EE6026DDF2200F001311487E08A622EBA2418C017BC6F5058AACA308620EA6327027BA85F040173942DE85DA1CE\n"
+":40CC4000F1E9995A847A0400AAA50ADA4B880F08A55AE43303D282EB2681102C163D25723D26B6239610012025C5E2486208E6C2BB4E181E91978C69789680BB2C80431FC7\n"
+":40CC80003C568805DCA76402183DE58A2217092A196108087A224C710A8F67F79181EA1DA44E0B14081DE087E20341904D0EB02C3047C7C48363D1030224C0432383C397DA\n"
+":40CCC0006E008865E46471F275C9972729E83801837045E0DD816002E847B2E8F38130469053ABE4C7BF060ED4B05D0581572F3B2E9A151C79420AF5F9F896601947D0E679\n"
+":40CD0000C40F80A0B7AF1E44D9EAFAC9C03E7E3C5912CC40E3ECE8172737170F23C84434418C332552412E2B9C844E23C26A7647480FE295A120784918F738C0FB0CBC70B9\n"
+":40CD40007E80820687A08087C02446E6A1C04C80A473238890BBDC88F10C11808E2222E73005DEA405D9B7C588B024C26A1B3CD0FC404270FF30BC47E4561503D8CC8802AA\n"
+":40CD8000BC26EED3121943DA0E850423C02ABBBC3B78E87CE25C357E16AE2A0451A26454C224A54B1776770F73C989B20052552A8CBC7154409A1EABA3198C4F63230ED1EB\n"
+":40CDC000E0DB0AF92100040CCFF33C170B02113487013D448E5D8A2C3D855C20407E0188643F60CA90030E619A40320B46411ABB06BCDC01746E23209FAFE848D66CF06296\n"
+":40CE0000187D1002371580126326055A287B0D34C8E43D02D25C71006207A6EEC7A6BA880A35A187D5A425D35CA2051950C3D85FE5E80EA1F10A9090840181E81022E2D5BF\n"
+":40CE400062382166B063836E89000512C110C1EB92912680AB8004103C11E260E25870E2F2E829212BFA4C28CE203F0E780856544BD187A409F6193A000FAB54CCACB190CB\n"
+":40CE8000951EA3E23F4066A971B9E08D2F523491E4087A1928BA17D0480A143D83D23DD88C5D3832382AC0589415A1C31DE05BE044204E5C8101700220090F70F01605A70C\n"
+":40CEC0004FC38F61A809585AA004082018C7271E2E8E351E618A2438153C9439F6C6F0B005A054320553763904FDC54037B7454E98128F095518A01040822A20AE341012E5\n"
+":40CF000042554C3C51E0433F417391877A9080A7E94BDBE982207778A8883460BD75C041570BDA12DAB60800A1E3E5DCE19B4073088611E4B9120B6F0EFF1102698665C844\n"
+":40CF4000885986B4C4B0460F77DD1745240905D53345901025C797E1903301E0B3C4ABA350E3D3BCE3D9EFE23D88576080C61D7725B0C7A0415F003D34BC203083D0CE050D\n"
+":40CF8000D82562215E12201974220F611176225BCC403C27026103C140404202DE378F1C4C93E8A2D3BE743C79DE37D2083070304E5D425CF134BD14485C2D24444F0F5F0D\n"
+":40CFC0000889DB12A22C743B7163211033B6098FA46D4C2DF4719240424101A1E4FFA12C2F8A47BDA70AF9C2F2A1D165490F9B8587B86C0C620B78DB7A66B1B9E45A42C0AF\n"
+":40D000003801D00DE2A2D1ECDDE1EE4FE20383608FD15B22C93DDAD3A3EB73E1008F021BB6C08FC4556469FA1D0C4FBA8D81E813C133031077D2F14261176010E75BA04CFF\n"
+":40D040001004C036127529611E279F54991743AB10E04C0102B802317393B11986A027852591BC03F0E9A1B1F01803D199C1998463EC1222C6020388C6088484001A08042E\n"
+":40D0800094A03BD8387C7874235142128920891A3EC908CD2F4021D463054242400D38FB50E84199C001802CBB204D2E97B313F481EF77C102CA1A02136884C3C8E63C8ED9\n"
+":40D0C000D37A1D95EE5358304C10C078C22E8DA690EC3182C4C12DD8DCE2300303C0283383E1109200F7C7D8CEE7EBA001083B589C4613E7A9DC0422E284E62303DD15AED8\n"
+":40D10000205173370770E409AD720881A3C0A63C0AD92062390E77E58049BA474F6F73975485081276CFE6709026970DF244870B54B82E1083D54E17B3876BF0A0079FBC9B\n"
+":40D140008CC04C1EA14B22E0283C8203A09E35487BF220D621FCCF2E20193BE519912D40525B95750F338D100C7806C0910823280B600FA484441D8E3071401D61060019A7\n"
+":40D18000E0119D24F9D00F9AA3BCBC47790BCC00CA536BAD006041CC11D1E83C42DE7B7C80AC16FAD11C7B8848C1A40651D9A7451E08A26A8C5D089A47A01DDC09E6060E45\n"
+":40D1C00020579C000829C7A84037710B8F8F7BC7CF0083D06DA42CE0FC2ECA7C1230770E90F51580F1382234054E14425210980BB88546E0716808402F578C9A06084D03DE\n"
+":40D20000C05DAA81C5B6211771092E049E2460A4808E3B757058F695D9897C3EB0411E57927DC29A7EAC631203B85396E19023DC428900A9849A1E31EDFDA234039E843FCB\n"
+":40D2400043B85954097B86D521E900CD80549E15A226790269848277544D882C02DC6105CF434C91C618F632F0F49F20CD800C8C40080831977DBD284737863D8419E595B8\n"
+":40D28000035E203A8C4789CFDC430616A416A82D50EDC0F88A9221DC08490127AD230A8826068EA306119A148D004E8491BB489E4441EE216441EBDC0CD6C708212772B007\n"
+":40D2C00029DC1D067066241F41AD1F707F314ED0094D4034650850EC0F51F35EE226F53C4C2654E83572EE2324A9E8992AC6CB81051A1E8160DB4CE55D290F5CAB88EC31EA\n"
+":40D300001E2741AA7B98040F69E7888D66E06031EE0E33EE235400F488C405A9F02C809A1CFCE044002CDAF5BDE900E049E04078E14CAA347B88CD3024F7EE98511DB91C16\n"
+":40D34000715142A745DC46EF204D30C31A1E47BC1EE1C130CBD45425C4C54413E1F6E61077110A1E0CD53EE2223000454082034950051D069C550081B48042CBC29FC5E0D5\n"
+":40D38000D9C2CAEC136FB9D491163B886840347D8B3A2C98073740631F33971302898F7275080A2196600555160E803C4E9EE21B580E2BA81101E3902A605092038A24EECE\n"
+":40D3C000B80B8CC6B56430207C969C43C819308F724009C5E0184103844028EBA6A176E91B5D1E3E518000A24C809C8A187A8F08CB10100AB398FA2828FB88612C2B0015A9\n"
+":40D4000031D9F262E074A00285A503103CCE0B7BE8F8BB7B906C3A16CC000D220092EBCFC1E14245EC9D51EE1A54CBE3D008F1B4B885BE4EEA2F1D02082BD4ADC5E39DA37B\n"
+":40D440003E7BE53C408852376F0A12F48CEFA5E12A7887C117040F93BB4AFA0808011B749F9AF1C8BE3C8048B47A684440A16ECDE1D1DBA3E60501280E23D0283407CBFF9F\n"
+":40D480000FB38604DAEE40621E7BB4CCBB20646D1E021DA442C301DB6BA3D54CA368F1A54074A2780256EA43B87F586FB87FCC02580740814DA04C680C4C3ADD206611033F\n"
+":40D4C0000D01812EA4F51260602C8600409301EC3A3DC3F420E01355427872B4B13C008EE1F960093CED6E88048F70FDA6051A0280E454FA3434991C46A1D488AAC2018D6C\n"
+":40D50000543C9BA443705BE941432E0E3D3764F74CF0F4CFB9F74CC95C7600A0FE09829DD33046702A7017080EA04028BE89491E89922034BA8A2C48E21FF833E4B87A7922\n"
+":40D5400064278FB079C896B02964A020067A896859C7F41C4540B9D7A9001E4FA12B9800A9E28443C257242F243BA570B0D707906A046295206805C8F54B588452B235C2BC\n"
+":40D58000CEB118480332A6B11093EAFCE10964E21B2904ABF4E678B52654A9030165036AFCD1124D60746D3C87E2D4702ABBA57CCCA929B1675134B8A18D774B52259459B1\n"
+":40D5C0001AC0A70A0F10801A0319EAB27234411C68818E30738A884C676985A11F386885067BA6F0BC92089744C81048C774DF2D87090EE7C02090346444220792D4A1F5D5\n"
+":40D600006109E42F88563C96A72F9F6BC40D1CC9034BBA5087CFB7A3C477C44D02C6AA2A43C1586B0484F774B8102060802058B512813C00983C908C580440B12A210951D7\n"
+":40D64000F477308E409314FCEB18252060F501D0C317616F8C9C00502C1E862ADC160D20487BF5DD00841D922E259183DE712200F29DC1038791D61C4202C8C23480C1FCB9\n"
+":40D68000F38403440B1F4B3C0AA03F8EA3E8EA3C0EA589C05894258804591C202162168C1DD2DC5E494C4328B8BACD7269401D08889C7FC04D03D3AD0608092B826200D0AF\n"
+":40D6C0003CB89A5978870930E82DCE524C22EAFC6484A500D41541A074757E2A679AA5F0A07201C6502C701B219672710187D4F61D5F88A8949846CC4A6C44B804591A5EC7\n"
+":40D7000017E440D6F5EB09746338F57E0BC049A55E04FA04975186EB8D04582F40E0CA868883D5F8080126755493460280F07FA3A352041C35CB3F65C017575C089BD7FE7B\n"
+":40D7400025D5F7E8012374CC44EB813E0AF60E608BD10468F71820F68C217A30910340A9260A082138313E817FD5F7463EAAF57D026E204DA00FAC58CFABEE889A48005F22\n"
+":40D780000818163ABF550EF16E209FABEE93022D022CD2E0ED8EC1EAFBA2238792D2502E4011DA16A97097E124AB594F2DB717AC8F8486E970F1F2FDA884601781FF4C08F6\n"
+":40D7C000EB36C54C3EA90F130C611E5AEB37B3EE3593EB38A523D1038F147B2068CA3603AF56980F533C88167755001B43CFA24F080F0C7C5574308020F1F5F114B29A479D\n"
+":40D80000A9DD0802E65128011EA800302436057A6354872EC1CB1180D91F8F00E47604B8427884DE096E2CA802E9B4510CFD8EE056540E824D2F461518540407D2C2020F08\n"
+":40D84000E44F0064D1148990ABAFA648B9023A45B8CEE057D966623B758B8913488117001E01B0F00128F8D8907B2CFC423E2CE25EAD3C10241013BAC12C6C960221B247A0\n"
+":40D88000E5238981E5B7840013442DCF6A440919AE84110FA9A494E94F51ED5A51B9C00020ED8080B009FC78425E735410B90004D00F488080B938FB1DC27B2FDC4B00B461\n"
+":40D8C000D10EC7022C0B1082DF36178F73D517A51A4C55204601A812204242EC3E2E43E18C3B1C08302C0D00432F05B208065077A4911C640825E1209100BA4E844AA3635A\n"
+":40D90000B5D190103D680022420157114512A3C2F965DAA9821575D570922C59F604EEBD621043B5EF8A207A9ECC7B13E44C943D0C6C2C09413747E3932400FFD74FA44020\n"
+":40D9400017C1F7AB6A88201589503C0EE9AC51E79BE2170F01EF85F7C4030B84005C83050220C44F340181FC042FC0E1ECE598E2183B78F4B972F105C5A5BB84EC441A3DB7\n"
+":40D980002E741F43281110CE95305809ADF02131D582E04E04727E0814EA68E54082124C398BC2061A88837DEB388E8280583FCFE1E0E4B3A80F602E0411E9ACE1ECC9C166\n"
+":40D9C000E6A065E46CB1ED2C312EC13EA7F33A3A1E81751A50238E4160D202E208443FFB3F80BAA880884ED9C8428F85D000031E56B20A3E03C87A4A8DDDF2CE261859E8C3\n"
+":40DA0000C4F1A405DB7F6548487E501EC4C9DC87E4C4050068F3CA38B03AA1E56552398C7DB7164C1B6C880668D8DC41230316B01A9E0034227B414E36100B2A013C13F49C\n"
+":40DA40003FF881BD3CE060093A03970021DFE84C411E4EC9907A3AF840904420043B8D1D087104822E97EF44F4E9AFA18C30FB888B0DDE30030C38D58054C6EA5D334A88CA\n"
+":40DA8000F40A9403D0384E84F9F0645A80F3487663C220393C1477F2A1301380E3085B74A0155D0B8C584163D240A2C30617328C2304A50281FE893012C3A6FB06F5A014A8\n"
+":40DAC00089B0400833FA5A504A5F4E78198FD084E255DCE106A9565C1065180005143DCA5859E3A2547662988826B151D9A44F29F668F9766919F6690B44DA998E8A8D03AA\n"
+":40DB00001803180FAF2A850F3786120CC0184DBE90383850207AC83C5A1EC7C0982F24041EC3EA4BB08D48B8108B502BACEF460C02CF27D0979BC18BA807461C00BF1D25EE\n"
+":40DB40008C180DBE35D81E231E3D6F025D5B7E2059B01F9700416A0616A06F55849153A3449A78252A3C440878E2C0F4E2F89BFCFDB4895EB7B7502AEB7B431D9207BBDDAE\n"
+":40DB800050FA71707ADED44F840734F1E201CACB202FC26D423872E353187C91747DCA8E2680DB8220FA25D486C9221D985422FDC3C38CE00310183D0B7B06B88B60B7A7F3\n"
+":40DBC0002B90F1E0A9FB1DC90B72A1DAC8B3D62B6218746298F683F2440702AA9B7008B6445BA8703D8B1E06472223040978104C79C981F850547AC8B870F040A9E464D1BD\n"
+":40DC0000008D114C79EBFA91EE27913CC8204BBA9B47B72C883F0050EEA2E13E49204C6B04CB81A0D21331DD01A21CE83E840E27902642435C4AC72C3D50A021282C081979\n"
+":40DC4000E3D1E859765610E41F8F1C9432C805F021589CC690880915E0388009161D1C742111420E0C60E97A02754791793EACAC941D4AFC45D80809163D9A6824616060BF\n"
+":40DC80000D03A771CB0980095790087E8A261F1DDE8F65598D66801B200F17400C58166912881006B053C5D324091692900602399C1815102811253B29078BA187D2100438\n"
+":40DCC00066F52CF8983EA1FC1ED4EC1EB9AD103B8DB00992075E0A181F400CEB9B92EE0B9127AE9E1327ABC4CBA248CAF988057D991042D02E0C0E0088205875AD60F6BB45\n"
+":40DD0000D0F55F00865D36D464E239C644061A1E70AC44404414F2CF3239C9C66023DE16062262DA12C11020AC930F0ED61098F0EA89E501CC8AA1600C44090139B9821D15\n"
+":40DD4000A4BC79894204971D4ADC38A50066B6A15FF613D888182144A0F230791AA5E9AC5F79B66CBB38A44CBF282F098E5A98A050040A941D5C98400821DF3265E59691A9\n"
+":40DD8000AFC008183A7C951256510F4960080868965E25EA21D3ADF3C8402D406254068754082540856E3DE46019B216841CC4518028E29F4B9C31967204E77E1F4BB8179B\n"
+":40DDC000894ACD80288205480EB6262E28D8D5E022007220A418253C954A80EA245F930C0BC070C7E507F2004661E4A21FC2E19CD8EFF7D2EB4DC139BAD300B909890F42AD\n"
+":40DE0000771106103C0318C790BBAAF4CBBCF104121E8A21E84E89128F854A08843F19C780143D77D7388FE21759B21E0DD03BBA2520BA20E47D0C6E2591AA591EE59030BC\n"
+":40DE4000787168E2B9184B20DEFDE0C2C70591703873D2C3F15D34BA0145550C40D71C09F04BCC44081D0037867D0BAE51511AD54F22FFC4D763D54EC390BE233F5CA22272\n"
+":40DE800033264F065D09A259F1240411557844F069D87C05D547A3977824F027D7294D16A0BE37120245AA9321E50870F135C0F5CA499A42A934900021E13E03485326B95D\n"
+":40DEC0001099428F519D88EA7B212803584C2D437EB9454C0E343ADF944B5157B90AA49CB26475C59A1E515B10E0F0193AF7B089E078D31141BEC9C2927C6827FB215C7955\n"
+":40DF00003D188C65A827CC0AEBB3E347D0A9025A8B04F80FA06C32749D0D49D14C9D05EE5F0EDECA10E078088B5048F011306A8656A08A64F09DDFE1E5D721C44F09A909CC\n"
+":40DF4000869062BC64B20E4F44789924F0ABD71BA84D4241F454D098C4F8E18D40D8EAA501EFA6218B2E9EA910407A1B8B51E33FC840627CF12787F1FC0CEB90447BD3DCFA\n"
+":40DF800067E31FB476244F01E3D05DDFDFC439A144028285F801DAAB0219D291170D00589801CD104BD70B431602C75CE89001DD8463C3E307D30FC88023085BDFF989F518\n"
+":40DFC00051821D6B80875C4D1791B80CD46744005D0AB45D7140B66EA1DF9C204169D4B6C5741227BE2E2105021137898C19EBE00951EB7471304AB1F8B3C77C00A5BAC63F\n"
+":40E000009F001E7F02BDFF553D8E1C75720771300202E777A00344EE4BA03A47410455E006B9D7D801258B4CBC0966774BC81FEA2701A9E2F66D198885F5AE0EF460354E11\n"
+":40E040002EFB5C43BED69538A4E64D2B972C24A778C018A090AA538016E6332FBCC2049E40D324009F38CD08080A15850E11B019A86171F951F33A20F58C6091E4BF480285\n"
+":40E08000081C2302B9B4025B809E070113BC9204B9A2188218200BC379620A849DF6E23D54642220E26567EA0F700D0F19132EAA68110E304404E2CBB676C813EFB744637B\n"
+":40E0C000881266081A344B818FBEDD53AF61F1BBF1690F061C8D62CFAEA9C481E278620F045E3CCD1B160690707BEDC44B615099EFB7012D855267C0CE025B0AC4C8870692\n"
+":40E1000022B93360B0280B6AE501160C459264461C8802D85A4027A5C2010E30A01DF7DB588839A1024223749C75AAA90C20F84E2779C6750EFE342EF56220B04120CBE13F\n"
+":40E14000FCFCBEF43BED984985425DA82A9251410A8429F445CE3AE43EB9781EFB644BBED8D2EFB6243BCD24BBED84A107BED8101E3BED7D11E39C4E0909E99AF4CCD0B36F\n"
+":40E180003EE921C82C42E060B24C0EA0D0EA1D7624089F43A8B43AF820087A2790BB0D34415EFB54202CA90810C4A81DF5F020076E70880792145D0F003E4A683EA07D431A\n"
+":40E1C000A06947A7FC47904C0F6692880E4C029D8016618103D97943AB261EC7913E1C504C0600877C4F97500B97B3A247C84C23E39AF39A866426CE1023A8291163B2D19D\n"
+":40E20000048299449630482EC033120E683995503BC3CA82C7A4734744845ECDFB1ECD9E1B8607B90944F12C4D610C0AF0F610F5AA2095C167971CC4B6014703A80E29A1C7\n"
+":40E240004C060780805084F0EEB8E62C896DDDFC43E5C541F651E881C454708145B00FA4002852EFA01301D0020052942C383C43184068BC1677DF5297540300472BC69EB5\n"
+":40E28000A956202492840C9CF2BE340081EA247A7030581F90EE1DA1E2B28876E9521CEB5C41705EA744702CBBED0040CEEEC92363CFC483448017EFB9A1038E324083EDB7\n"
+":40E2C000CE81004D4097A8384C00ED8F023481FEA4D92EFBF93234BD44BA18CBB40C241081D1BAE246F839104442EC3E383BE27C7AFADC8F5380D5063B1B4C46B0089F3CB9\n"
+":40E3000002EB838B48084057A00010EA2243C38C1DF6CC801398B88F7C6119B08F7FF41809DF6D0E0466E2861DE1B8684B8EA260401A2D395D895B1000C147A82AC7BF0CF1\n"
+":40E340000804ABB2ECA64134495EFC2F2033AB91C58257BF0B480738FBB88CCF4010956C2048412C52102841CE9B1632A54BBF0B9361BEE35741A03523EF434C46C9F9DFE9\n"
+":40E3800085AD00C6E1FE75DC120020521671BDE302CFA0B3BB99C7B1E64400ED7DB1F5B5D8F153D110EA9C6E9C037FBEBC44CD0901400C8C2D0A00861442150EEECF160224\n"
+":40E3C000250AB5020CA0094170400F03CDB24C821F40228CA0010199A112493EE90A4C191C8F81CCB840B23DBAD64074DB5225E383004C8809C541CC5AE650220AF9A7343E\n"
+":40E400004681D4681CC3A1CFC784C27802BE3CF12E2E30205FB5C4C44BEA3021CD4D108FC6AA220281FE6303120C722080AE8E311E91EC9148E6E90561C22200709A0810CC\n"
+":40E44000613D0502268889143A84214E0E102F82062E5F01C427BC4E012ECD371E9CED13080C2CCA0C60A057907231000CF440032C7D38A384FE0818040C2F2B8819D9C588\n"
+":40E48000D1CBBB9C8B9C2B080DD2B80595F85C8AFCC0B1C0C802CD2B2B10FC077B4B104CA8521F40E04EEA11EA0A82EC78A236982602DF03BB8FB3080415D0D88F12B610AE\n"
+":40E4C000128B8883DCFBE59BFE209F388092801D0F0232101D0F823110A0383C65A444C1746FF8CA304F60389E08C9806CBD01390EA91D203F599390106F5D685DAB0020EC\n"
+":40E50000B826210EEC744A91744A815FA21ECCF3100B8872976B6E90418FA48B69210EA044E622013C10F7D791952040DD3F14395C9200EF80EEC7ABFA489E08817207B184\n"
+":40E5400050863C84E50E9649360144745A04C0465F8891C619280460E82011E876841D05A3D0EB0821C69413B077ACC9DF8F01677EDD286F573177E2711B1DBD2C7C3FE476\n"
+":40E58000BBF1211238650F47E4C8E1C110818CA007709FA6156704E4085C72486E6080280AB010CEC1DBF9A274814434295BF0EEB40BF9C0F58702D8A3E85C729B07BF1292\n"
+":40E5C000162453ECB98235C4F2645927C0BB1687641B08757F496905CB91390885C60F840127C09264372F461DCED47CA4523DF7865E5E97160031050D5630F7E2310F61B2\n"
+":40E6000060CC3F77E2225A63C2C8D01EFCDA237C90208EE0370B105031324B7EFC481024F68536021528A08602DC0CEC78C2263B0CFC7082816E67FB0A807488C3DF1C428E\n"
+":40E640006379175D0BB892020D64791521121D97D238ACC41E3542527416F53524941E9433322C0DBC3C0A0EFB8B2F24498FB27EC703D8F59240E56094D900A841A3252E05\n"
+":40E68000FB7722758ADF33272F987D973830E58D9441627437BB68A30C96500DE2C7B27DE6E911EB9C040460B0C03540D3580927812057BF02878D7408C64B880DF5EF393F\n"
+":40E6C00060DA0CD65118E8405C32187A8702623B66B0DC98772B001C3D4FC5D74A287A9334420683A2781327BBF0510BB2402A892872EB6311EA5EB1278142783135CDD8DA\n"
+":40E70000D303940315F5DFE13019200AC6101A7B28065DF8585808C0980029E91A069420F7E08082A2AFA86D50028CAA84005FBEB0C6A2400C01948CBEFC12481729017594\n"
+":40E74000005589A48F3CDB0F3F282ABD102C0420BCA9CE5A2162C23904A75272C9E41279ED484BAA405788077E0A99149180903472A4863116DDF8288459744ED90BCE0077\n"
+":40E78000116C0BE955099640D12A24C224018F02A38CE2268955DA37E3DF8367D2953222858D715643B03878B33847712083F43B48985ED9DE12602EB91C0E9063C56BC440\n"
+":40E7C0007B0A86893797E4241132106570093261001081D2AF624116410183E049E909FBF0755340961C72FCCFAE31CB22DC4E9EFC033028D024871CBFE46253239708B70B\n"
+":40E80000843BCC04C7ED72318C6880501FF91589F61AA980C44D2A4C2E44D51EBC513C23F1EC814C00F9DE004C002EB284B5EE63810187D0B21078AD9201672E0557B106B5\n"
+":40E84000CB944908BC3B0246A8BC6B8BC6094E740066B0D97800012014AC012EFCF722A40A0E821C6B40749A232F7DFB286B0C9E6015234055F2B2F0F7DFC10220B8C47BA7\n"
+":40E880002D747AA979E28C4203410F1F55888B8930FDA0BA274817C8B60BBEFE5702C0826A7441B024D2F511C4B8747BA9853D1EDC6109A2259322EF82E111EAD9A1CC9473\n"
+":40E8C0001EE6DA2EFC0063BC6A640814A8C24049149823D0B6A893BC92C080427C00EFBFF33A3AC9FC7A92C08E41C0162E00AE39B85DE70444E8418708494EFBCA2ED42F4F\n"
+":40E90000301BBEF3089FF27F38DA2C815EFBFE40495105BBF0645CC1554028DEB1B1301029711CC160204B1C983006261023763F1608AF3D9E98E2E35860D9E04360302DB5\n"
+":40E9400042617808DA7DB51F380A90108294F00B0E82288EC841D62408106023AACE1820C4842C6AC38B703A1023C9A4C8F522010841623A43E2108B047A9130BBEC890058\n"
+":40E98000540E087CA3AA34780BB013A48244E3E9BC11A3A3E1BE32C54037268053C956C4090488B09F49023EAF761CD2810489F09FBF0B921490F658E8DDC514ACAA20B445\n"
+":40E9C000AA680127D44176A76130051A2378140F5C5C802BDF86088126D54121C9F2CBD52DE2410F5D8D5A2101072F121BCD53040208732101405F66B70C4900B6F8185220\n"
+":40EA00000189DD1F00D43013FD9B2225B8000B77E1B0FAD534C46004C3EC6191288781C3B14B06F4A0EFC38308D4A1058E93B127107948034058C38AFF184C16777D5AB951\n"
+":40EA40007784071E4108C1DF388801E390423077CE19965E457B3F58AE0E4BF0846019A20789C108C00A9180BF7CD3908D0A24682E813DDF34E9DF1804A80372A11A21993E\n"
+":40EA800033E7EE0126409A280680644C041ED4569EF99F1C28E10A04FA45BF1BA5440303C2CE5C8C881D991E2690546C733ED20A728A0443E975A104B9E590F617A1F54202\n"
+":40EAC000288223C0E9945E46984659F7D1D9966A859854598186C00655719FC4FB372C415EFCFA100CEB05339B0BC112E2271A1995239ECC22796023E73611040A7432A126\n"
+":40EB0000F1A9510749FF3FBE0825D2B24609130241A3040049622B1620BF2B432F50A71619F1C26917088101EC97C4BB0038FBE709209FBE7493EFC3830901047C62905D9F\n"
+":40EB40004AD45794076A2E9746058805C7AA04433C008832EAAD21EC85B3ECA2048092EA9D80E6041AE74F4900204780006F941484DED5F388D204F654208063CF53751F3D\n"
+":40EB800059CF8E0CA03E0811009A0809A110FF3B23822CC8148422CBA47888EAC27039AC4428821E23B019840680A40D3DC9010C6DEF9951F64409754121616B0930903058\n"
+":40EBC000A4160080007D0C242CD69133ECFCF21049A100FF359E47522109960850B39E831E0D50A22038033852531E501679DCB082DDDC7620B82C456951C45BEAF2A234DA\n"
+":40EC00004B9224200584E087C42BA239EE25D20488A03921E1CA2102010D55B0E06A83D899EEE2A133B05B8780DF44CD274E1278C2274A21E4E21F8A21F4311FEE8983F4B4\n"
+":40EC40000D37C9530FCC006570B80CC6F1C6030FC6A01667902710F4611E03502623860617562A8B1E2CF791421049002B2CB66FBF09A9203CB5C09A0D777420B8CE103F18\n"
+":40EC80001C44EB19B482448F2715A30449EB17A1C2F803F82DC9F08471168712EB14801E00F5E7E00A09DDECCC3C7EA04111509E930185E7A16104C7F30BC460C264842184\n"
+":40ECC0007867D534A21A81C3B06211184121981098401999DD4DC2364A0784A9D0A004192509240B09810E12B022CA3EF7C410908DD132151801CE908068058F745406206E\n"
+":40ED0000E90050790CF41782489E259E97E843FE98021C0CC01D1E256F7A8A90F06149029483429B4110F239EAC30BA4AFC7BC9C4BD9CBC36298C3401D8538708021035D0A\n"
+":40ED40004B3F5D8116391393C6BA058F56892203966162A01E350588E4FFAA06605A00D7914F845838410D3638931E1F3B10681298408D3881006C4FEEE711144B02600D4F\n"
+":40ED80000241740D0F36530C2002A08A02B2006397D17883DC06C22A836349600C75DD0220F80C29E8BD44F943D8C9E200101DE36C231A041664B4F5DC791EC68091E45312\n"
+":40EDC00081060D012BC8A863DDCF226B893DDDBC4040041677737242A22098A7DD81422B0700BF5522C92214F7B76981E71058304810D16517915E47BB99840F33A2840571\n"
+":40EE00001DBA5038400248231643F10399C08E2070280DA12FD35EA53B800E0404E2A8286081167E1368641D46BEBCCF10201B15BBB9A045747DAF2C407019DDF9E24081DD\n"
+":40EE400004D4794A003CE9C9720634E7C22CF774918B2980A05A40B00F1B784844328A4808EFA3010380260664C21F04E89029E457910601F0F0A0EC631107C22830D0FA6A\n"
+":40EE800011A80B8C24D115D3D46255033819C2E140024F521854D56808B68031ECA7E1050783301314BD03303D45E243300382D4CD0F2E5C1616B03CFB890845C2C018EE57\n"
+":40EEC000FE443BA46898DC7C8772481618F555711A984784D010B190867DD177F1C11681302BDD1803B1344F1C7D10301316E691D6AF0953D348E53A0E07E0C1A000D8BB39\n"
+":40EF0000DD00C20B10F54C02F23A7131F1D400860098264C94DE0B1E1A99004C5EEE81C117D106C992801804CB28A121948605164AABE1F5A8D91100BD5A974D648C680CFE\n"
+":40EF40002580B0098BA5B751CB18300B7777A0FAD4A440A33FBB5A04624677008019044162DC40020BF88118D106CA0E9C161292082C3024183A351264C776F509FC63085D\n"
+":40EF800003A970098A85B5FC823AF736D1E92B04C4096C0E38E4802E1047A1B34962201C6A4681D7AACC28C1108131A4B6F07721E2EC02D8070546AF4BB308C25B30088662\n"
+":40EFC00005BF5C579659F883A359200C032181600E0263196C000E8357821FC416860EFB0810241317CB6000AC0834A3C5726802631772F4084FA3EB3265000FBB3C44991D\n"
+":40F000004413183BB9FCF4A182C1644328964400B19C2C2217773395F350008E7A64B1A54A18290CAFD34A4291A54792A4EE7676D17A6D146938D2B2A52550654ADE5A19BD\n"
+":40F040005B82A64D6E938776AD0B0322239B3009957183F7843E859D29C8B065D231199D8BB48676B86E2295221F2547C696174B9316B6286910EAC246B551A527D159C298\n"
+":40F08000C104BEFDB0CEE089695A84332F5294B37A058EEDC5370AD41028C700473D43A959CC693A05BA4343F5568A23985FA7EE1AC9430DAC3138869E906940F4D0B8B002\n"
+":40F0C000401814E4AC6C763A2153BB89CE92A001A9082300F0A101A0D0C0786424B018163D8196B52A4674650A480C3400D232C6FA14916F20138EA59058AB30067B3B0C1E\n"
+":40F100008268711D8BA1CCC91D8DA3C015E8D1313047108BD3F24211F4E550987D261824B718FD9064724214495481A1CC1B1DC3BCDB611AC06E9DA71E4D38231C60EA8280\n"
+":40F14000458AEE108CC1448710BB59904523481C188EAA3804389E098B5DCE98204F48A188B96EE1A8F0300910B7D211460FFA0E806EAB0CA2A1C28F1872844191901E46A4\n"
+":40F180009202130151E2634519F7DDCEE27B900410E2541E25F78828098260FF32AE5A2EEE40306D001977788F91CD0C242B334047A82F088DD21A10262BDD223C16544724\n"
+":40F1C00091501118081106F0102D020028F1218529FC6FAD8C35100CFA0AF8BA65C8B0122380063B249C40A3EEF0F00881500C83EFDBD2087BA254CFD2A06306CABD0058DA\n"
+":40F200009E279CF456B81207BB998400B910BDB2B866F5E044380375A2388F8406D4509021766A604A2008058DB818180DA43A74E469D097045D3902E4EFF38C5180D40CB5\n"
+":40F240008100D00104A6B2358C60408901C41340C6200A02F4481E8AE3A42C278601EAC130288F427620D1CD3311E03B1C810E94F9200C293D807CEFB2038DAF50E408035B\n"
+":40F28000E0BA12BF100D12EB40CA43F8E798E46078C67DF86D884B6892F15ED0C52A051B74EC0B6283C89E06358262C16C007947B0416EE875208033E3E3E35AC010420937\n"
+":40F2C0002E9042098AC5B776B7963DC035010A9801006E0CBDB58657B80827DDE5E562210347118C0B0EC2408C11B0E001E129E011923A9922ED6D51EDEE81C873163B60E7\n"
+":40F3000078804134268C1EB554113C2F712F9484F94004BD269E211F7EE91103EB8C81D674A19C76212FB2756421F3685908413EB13D0EF33419181498E2C40820AFA52F5D\n"
+":40F34000048488023F0445EDC660098F20B02627D0F01983EEC034128013E49EF3E293F1850382D78406062530A5600204C4EEEEB2745059028DF207B11946A7024C3DDD86\n"
+":40F3800062D0A0BA049B7A68E40070642CE8D5E48F20B38E8F176A98975F9E0F25D4104BBD5004AB3445CF5873A0C14BD2C105A0092D83B48D0163CB6CA3DEA68881E5B01F\n"
+":40F3C00059DF528236865EDBF82EB295260D204B4E1226B0A074068688A040E4EE897018750CF882640B1062086921C403397CDF243D6FEA21060551E478E2068820F0C73D\n"
+":40F40000C6F9C4F5F23DC8F7D6989700701E294CE182AC070F476109E0C1B2C4680C67D0F02A5300B61899640827361010769020262AB018CB83850087C1404478F85E94CA\n"
+":40F4400066B022CD50E31C09763188F7A96172E24160A938392911007DEA5A89D34A8791A98DBCC3C2DB425C79B1CCFAAE784E0E88DB32180044E001086CC5F2F03BC0816C\n"
+":40F480009DC00046F79B5CC460F6D4B104BDEA7A407A332904BDEA7C84DC30E4707858047BD4FC7C12E83EAFB32F6CF7183412F359F1B1681A60C8F4301361079197489179\n"
+":40F4C000048D605E5622010DDEA726437862707BD4F90014E1A620CE4A609F08E3522E9F95963C0EA23DFB909E8FE0B026177A170F97FD8C241A1111F0240ECE2C3B110179\n"
+":40F500007B6128D8299909070C85C10B82CF38651FB5360C3AD6A18F51E78E8D60453008532E02AEAF5920BFAAD246104550304A050A0EC3332E3F3F21F4289149024060DB\n"
+":40F540006CA2ABB15947B66287350444647C81AA3D8FC83D5EB045B757AB976F6311005AF9D0EC7D3E2A27C62F24CF62610275518039915916826201DE2A62127797C30882\n"
+":40F58000222398399143E770D1F547F8E83B8BABD78D871E9F391EAF5F40E8ED0FE2034FA050E06840010B90B3C5C0C6060C416757AF2C561A3D21FE21D81A07705C8967A7\n"
+":40F5C000CC90A5D5EAC89B8689BAA854E8FD887712BA83E882102834EA0F22E7FC039742387C83ABCBCFBB24858F575D90DA0A1A868F579315A5E0A9F500008299A4C46E67\n"
+":40F600009208756AA89999A4AB5260200222E42A2E4C919C3FEDF782387B2DEC8401E4BBD41F89A840A03C9B5D7B7A20F901E3DC32207A5F94C72ECD3A1057A3B2C498828D\n"
+":40F64000105D10CFD3EB84037B4B6C4EA1CD0CD185BAA8D87AB9FC7B519449208420EAA121103AA840441EAF232EE4611EAA112103AA5A0442A1E254A3D68006C50E2E9D93\n"
+":40F68000711A9902B28628308344108210F6D0749741517464F5BB7171B562F0ABF17AE8C04593CC9A9F0BD366653EB534478FF58A7833D90003C910A40A75B599450E3043\n"
+":40F6C000743AC38CBC9FD839B048F5779ADCD05C8F11BA8589088D94C060268AA080F119B4198474774EF0E600884151E43BF8D148430043C2B5A2615B4C42B405AD0D8882\n"
+":40F7000089FA9CB2F252609D85D187E15C520ABB96551CB542340752C3AF70902F6E32480A2391ED62711C01111081EE38E232401278111548743C51369E7248F88EC47C6E\n"
+":40F74000C39EAFA82A4C04EA8052EED56300F3844C5BEB02341823420431D921D5D1A5D69A239C3037D30123D5D287D5BFC67F25DEBDC80A08F56FEA0731066809DE2416FC\n"
+":40F78000110793ED9670C1430805D5C06753C7D5C006250F48757039174071720F75701A1D5C028024A33524C7AA990FAB80071EB898E0101A1679B9011024C2B3311825C9\n"
+":40F7C00041A21D8EA45816575984F479226B073D5BAA61C9201692C0175700A202F2D0043A67567B2778834864C5EF54EB21ADB62EADFE4C1F55F1A878B5D870C3E2AD7345\n"
+":40F80000006AB07AC7B10ED40B109C13BB50CF4212E5F1103C74E853389A05D1DE790F986303C74082111108103E94571D51B8843CA49CBAE85042E3442034820E5DBA5D40\n"
+":40F840002668428FA2A5245126313D0EC800205959D6028A758182DA3B62CDEE2CBA6419D6E290A24E4A04CC4764601D1E51E449131B22C16C88C5B3EA084F72F084E2E343\n"
+":40F880003D5BF45A3E44851283CC93089DA880C62035D6C1C25805E6882C919A6882A549410418A523C6470458940688290A23627C950C45E60A0449108BB5D605826830E0\n"
+":40F8C0002C02C26831EB3A222E48E64B00B40BE75544057AA3951025103C9A0539067880054F00152EB4A22BA98BAD2910BA887175084E874C6599BA689BDD7DB65E0F5732\n"
+":40F90000431BA975C2EA9C9540CDE0ACC053EBE0674D05C330D03374B883817C025340CC358CCEBE053331500E05340564C0187B04A70776221760DE90283023D7C0C631FA\n"
+":40F94000A4123F66069252636B0CA813C03F5EBB2203F48351D8248B3EBE051F46909B3C2A8C5E00D22BD471E2C1AA5693BDA5BC24EF5F023A3BA974B450B0079DC159C072\n"
+":40F98000B25F8888399FBC09A7322743240532E4042E804E655C738A0480C41D8E03828015A5A12608E0AD01C4486DB0430E1250278282EBAF4747C1A342057A7DE075DC38\n"
+":40F9C000C382B40B8142E4601E82E2DBA7BAC7AFB450ED7A810E3CD4CC2047706E21EDF0A2608C2D84802BAF7E9A602B70F12DE156E8741620D91805FB0608E1D785222B93\n"
+":40FA00008004F1BB80247C7756236F5E4DB1A110130BAF274733145CC093874B20232F5E4F88CA5C20050A57C803431A9D0F8AC43E7B5E2C036037A3BD073070CCEB09A04E\n"
+":40FA4000680B7D78DCC8C287AAAB47A344C404EBC6F4C444055510B42844B487D47544E8F94BE440934450D1F898A0A47AA7C24283CF9D841D02001210703E01DF006D8F68\n"
+":40FA800083AD8408EE4FD1100188910600A004C4C16421E823D8ACE3A147104C6DD1FF908881B1A3FE100C9B40143D001104D710747FE87616D889ED936329A01F0C23CEEC\n"
+":40FAC000B9C899F0F5989CE685AD802D2601B2647CD12F88464C8BC4C87A3C0C5D784290285380FB2A511026806658075AC5431642BEACD454D0F0223C9A3EAF44134C2F0C\n"
+":40FB000034830BC24099E56E924C80259FA4FF04B2C1A824EA1E111A18200049247CBC0C212901D2F227E12F947AF0787A0B68C050642B303AFA790F31AA18F970E09D9D47\n"
+":40FB40007D2CA6C44C97959E0B66761EC30A42E1844380D3AF2317EBC864EE422D1F517B56FC9C044F05CC23A3EE57AF1D0B4C6C7D70D45C675E7AD4BA7AFB60C270C3C6DF\n"
+":40FB8000B5455BC87867584962400EE4BD881AC4AF755AA04F0A9D9B08208F362F1C02865D011A2BE2A5517FE8F7D1109BA00781C05008FAE92932F490F23058B3E190D1BC\n"
+":40FBC000215BC0F22EBD94545E59512EAEC12024C6B10976AB19C39174993C17FA5950D8CCDB2EEC061103A63FC417F31E2A33827D4D3C40B9D4138004B0608846255A9848\n"
+":40FC0000B42F8438104060755A21DCA6C52553990297B5FECB507A62D4E0583D441127811F2DF31CE28CDEF12C094E0200B9CDA0059C4BECC083F964F75F728D47A1D7DFF6\n"
+":40FC4000A3B2F111B0138868F4B8E10434FD394912C271722276F24954F07A0014420F566E100E72174C799AB8872F428B232211B4BA40B7180B7086B602BC401F01AF31FC\n"
+":40FC8000007C08B09816E0296E23601F3246C88A014255D96B1AE1492E1504E200344A0F417F1EF3130CD0C09036370D2F5888068853E7364363AF525027C0BECE881B877E\n"
+":40FCC000C08205060EBD482CD6221D7C02ED3D1E8821175E8A10F06DE41109D040A0127831307D477620F75E9722018F685C5A1A3BF21CB22486D98009790B807C11F02C0B\n"
+":40FD0000601D027C2CCD0A2F54730E6778ECEBE4120976B71137B27E4B13E003412049E556940F50AFAF6D11B36175DD8161F41E011D8189B7B8A1D77705B3EB0D9A86D0F2\n"
+":40FD4000827E6CF703A6201EDB4811B8EB014090F8271038FAA17430222215C60880FA63F2EA7C9583D00D19C10EA7C86F9D8B22C160ADB45D0B07428DCF600112FB10C9B4\n"
+":40FD80009CBD4F8E40D8785A980861E70303A9F1440C40006C0823622C3F1C7395700753AB8881272C1904C0905A081DE60820C1A06B78EEC07A9F05E58D61993585F40D81\n"
+":40FDC000321012340CAEA6E91EA7C35FA990CBA9F147A95D4583115FA9F0CAB9808638CE720005F5E378F87114422EA6382EA7B244BB4A1CBA9EC0491E6BAA358A1D4A6860\n"
+":40FE00003838C2EDA02DBA9EC52038928A443B712D122D162D1E008B40458DF9D0C024896840323948447535316B44C45A1BC3463D8B603D4F5C862A211421D101361553C4\n"
+":40FE4000EA7A6188440840C047B7CC45805826EA7A4202D3D85C07D08A43E1E1D2C6141EA4592CE0420BBA9E8075CD63849C0FBC83910541D1B0A01107530BA9E9CFD420F9\n"
+":40FE8000E2CF9F59A42075E78EB2C7A19F8C2B034968C3EA7A64586A522604608FCA3D4F4A831D4F463D4F4240789E4A985D507E5B0E68F53D18FB35704407009147BB0E62\n"
+":40FEC0004428EA106476277109B91A2CB01C9A835752E410CA4C9A834DD4917BDC1A834769054909D4B6A51223327E2E17208FA975D0000D418E146A04CBA327D4BAE45C05\n"
+":40FF000019011F52F52006176640CA4F1A82E16C200CA4D4181653210B6580C01178341A4B932E1831EF0557977654950802DBD5F8C38D72003BB7800C097A9F6CFA9F944C\n"
+":40FF400058820605143C55C025A77FBF96CC903D0E32603817D4EEC81003978D0BC40A3240530C0E3F4A023C7916F2358C6C207ABB587A9F504D840C4EA7DC4484C5AC25FF\n"
+":40FF8000410222753EEA202225A2332184BFA4900510A1009E68063AD9C183404EF0C7A09886805FDF9625E52B21210D00B9A10FAB8EC7A9F804B031027EA7C947A767073C\n"
+":40FFC000506A30A43F21DF4582C0CC7F78E1E0440EA7D643AC73886607824EA7EE46207C301446C753871771300847E184A3A343E49C73D9C7C713A051F01C49A386C58576\n"
+":020000040802F0\n"
+":400000008AB00BAD1A40F53E99604D005B448E46C8F41301E121AD9F3A26052A23C024EA7BE5BAB8E8BA9F012EA7BC4852E9B222C3643CA7587A9AD8800147B08F0B69F035\n"
+":40004000114BCD46C412721782D3BB080951C22158F898AEA0EDBB512045AEB2B21212A487A9FE098EA69D2A9431651E5B4821822117849B47D3EFA4381016C02EA7E12A2D\n"
+":400080009F02D844EA7E34F5C20373C0847D4FCE55AA55985D62765D719641298400897DC06C3933C21792B6812D954CB69182EA7E153D39642E20A7719491EC08F9A8A03B\n"
+":4000C000B272C890083A69206E332206E102F74A5089BD4F8E3211014E23FCC935862D49209800BE2F32B688ECE9256D30B71931E5DC01AA21203A79B849A3C01A180BA060\n"
+":400100002BA9F590200BA4C8093091E5FB004AA900BC8341268E56C40D064104AE1CAD688790368017602E0FA64D479BAD0F8259875C623DCE91259F91E48CD010E8916F52\n"
+":40014000B17222791AD4B29906E5732E0EC010DAF68DF0F53DC8F54359753E38D4B8BB77BC08FAEC80AFB813AAD945D4F8CA5C726090086152D0F53EF1FA16F07D4AD25D38\n"
+":400180004FE8200F597F96CBA240496D292F233E8819B1EF0D8B846527C9FEA790200757D6664972010136FF327C202E32FC079A1C0F826EC6425AEE01CD1319018ECAC370\n"
+":4001C000CB3AEE2985315958726A10B30D9AD79C1FE77B362C1EAADE1144A768C4EA7AB7900018DE608F53D5243EE97C92008C90AFD3D9C80F3D4B9223CFA281475DF83CAC\n"
+":4002000003D8BC4A965080779F850041D22825DA034238F6E6008E3E815B1902210290043A84DE7F791E536C635F4F8910122A79DCE64F5F36D618C415F2ECD137C0435455\n"
+":400240006635866294E005BAF5290EB20B508F0090F0538885DD50FA208F590789228C84C890058843F19C30F6E3E8FA115C7AC83CC24F1F672200B6067B2A1E7AED6C4158\n"
+":400280009340538A1820009C08E0990EB2112604E484E4007D6422B0183947080C57759092006A668089D6422C80DEB056202412C4401D6420208856401D241F590888EFB3\n"
+":4002C000410E81102A88107190248F5F110E06D810CB100CB1108D10D7CC8085D94AE2209A219F95A344412C710289E26FE41418D52F0EEC1F102FC62649F9A964840F4A16\n"
+":4003000032979D0BC8F20F27F0C10406A849C9ACC79D1508023A16A071A213DC8F0051D40AF857E440B213B9DD84303C017EFFDB303345A22217BAD7841C26C14068A28389\n"
+":4003400010401A2492061176B4303C05E5C111AEE7139080010950380935480F3F550C4879B6C503FFAB8413ECBDE10489602FA4CD840B3C0040244609B011C06BC87A88AA\n"
+":40038000272211EA3E22DC870B0D905CC08753F224D8A25423E37E02077B0078EE50140000000000030000FC00000000420608A43800000370001FBF65D648086A09981AB6\n"
+":4003C00074B4D2186D202F465062BFB838A58537688636074436034ADA4EBE4F64FC797DB6CB25AEC148AE1D6768235B4A620060040100F3545BBA00102FBFB2E4030041F0\n"
+":40040000100C020480300F9540C811B8144DCA80016A248B6DB4B007A5E6080F00FA83F87B62F640105B0AC002E02007D0F3C2098060201C010080480202008C6C996F2FCA\n"
+":40044000BF7EFDFBF7EFDFBF7EFDFBF620601974D400E06010060160601B868E4110339B200D6245D64167F002004F32D54812040140581DD20A1209EF1CA20A8200B02261\n"
+":400480000B8240C6B04A7607F797DFBF7EC400003618E5F27130B09001E026C0C2D2000006000008000100020300012400000000FFFFA00038000001EC00052BFDC419401D\n"
+":4004C00012BFCC4328D10E9007900760FD308281085A802979020C02B1E2146DAD27A7C8C02E9A0414D3CF580D358868807E8EA137963594F2C0448089389F2A81C0386004\n"
+":400500005EC30AE49040E4009C0CD9821E80E73C619800F3708310E2032800BB24E981F8C6B301D00334FA186216EC055201A961B200E1EEC4098D30071ADD800D43A00322\n"
+":400540002900D25559027239F70430BE18038AF2F77D419C51C28C4095025C0A9F9398D001140026003E0D5DC089C550090035008AB1BC500B1820AA033202AC2A4608A12F\n"
+":4005800070B00FE000CB59620632C7787F0B03F202E23CE07B3870CC36407540B2807E733643243A5A366B4C410861C2D243F203B4A0420AF310A6C00247CC8223201243A7\n"
+":4005C000885880AC825C000000000000030007FC00000000FFFFAEE83800000D5C05FD551D3E1A8D909CA3C5FC2291C5DF20A30822983D13063085C020658C0FC06C884230\n"
+":40060000987D8622A214148DC08148FFA552C004291BC518110EA0A6100F5E5601928C1099CA0C853079403E9810A8086F08453880B104C4F50040A3109CC247A923E3AC93\n"
+":40064000212B8E8F30D4884C1604C1988016027086198408C2431052CC63C90401020460E43309A224190B22402608221AB8DF89E88F8200FE4442140163E62113F183FD53\n"
+":40068000A14416C301266302223C4A34480C57A46C889E131220249902718A8C61DEBF4C00C8E101807803C28F004452001C48812C8888030039A0041940511808928630BF\n"
+":4006C0008B4F0B1B50D3E1A5E2228A21046A0079418B2C0C6C6980435ADA6B124D910C510682E3831B100461456010A211430371C4C8A21A6192A885436C3B755A864005AA\n"
+":400700002024219041919120200EAA0D80E320D0AAEC85112A0CC4CA1C47ED1844E10105223800020AF218AF23A044968D6799710B04F205340895D341687028E10085215A\n"
+":40074000FA2C4B640BE895780C74B06320672F112D584847801C33010CCA5053381FC40006D60B30A950C75223D5552156442A87407785E646A510002A54D92BCD6040CC18\n"
+":40078000044EB811266319361526003500C390101A0E943C576D20095E6B46802C52807BDA789080302C43C209980D4608E157E46A6458A4C95E6D02470CB401014677384D\n"
+":4007C000C44122392370130CE3418C7C40143ACA0CDE0349903866ED9DA97B383C27D824C81E1981E850F2C5C34C1CC020326C8082A09002ED5C4314C895B57B0805586874\n"
+":4008000056990A8330058EBC0992476F042D5EDD0BDAABF36428C9FAB0E60CC28D62E5819948C8DBEC4C611E85A9922881D2238A7E782D12C8482C84E2C8542C85A2C860E4\n"
+":400840002C8662C86C245C0162830AA09FE028400B141D0A5320200A2A908029478AFE4B2BA103B0AF07B1842614683079014A58C5B90688045913A4073E211830C1631D72\n"
+":40088000C98B31A2048A280BD2C36084026C7060C586061081A0744C2200C8D30288402164210D230C03833BDA00568430300540840101A206B04AD1611A8504006882B538\n"
+":4008C000380A1DD01A24403532A312040A818080458016D2440042801D318CAD19CD8A5633F88E00206C3311006CB9289404619900121500990A4C95A4941C77DD11C5DA35\n"
+":4009000004401171DA00144A4C02C485A2240360200142093954800264C834331B2C0E191CA348024E512A636A13326C301698981C3801C0107B2050713491AD81CBFA90EE\n"
+":40094000384C05CCC89110C70048FC33604AC9E993290040D0828EBC9F18A12A148A8675C65739015E724101643A245044205A0C908463091D8B323B789DDC3686366A360F\n"
+":400980004489D80200641D0CD00641633014064102CC0D132F7C8246E64C899C9C9133C1118540EB034B550C680CC052A00231540328866A049EBE010892AC092A00929BE6\n"
+":4009C0008A314846040EA038DC029FBC19324D13FC183ECF492B174415384CC8C8BE2A9F01C4CC3FE2CFBF78C8D500810022C52388226C88162908D060D08F1C7B032050E2\n"
+":400A00002F05D29101A08C5C484AC926400213408A0460020C80219C42A4765AD136075A2A5A3D00619803902A5A790A3A71F804426011685404C0218C2155A95E8A17062A\n"
+":400A400080A668232108A0A308564032299C980144CCAFF23F6E3E314CC6CA422884EF320310280023D532968C8627F5E0C7CAC508F0883CAA118F205810B0A8E38319F8B7\n"
+":400A8000682895460199746A4CB1BBF209685645050E50523B10054B42B906C59588542800B0CE73426C2150A8441050A14E441A66AC80280042200455AEA282000C7C3D39\n"
+":400AC0004753D04A3F8BD3BCC338CAA0003D3E0573D8423F0253D8EA3A0983E4923F0253E0C53F4F43F0093D42C3E4C33ECAA3E49E3E8003F0F63D88C3E0D13EC503E852AC\n"
+":400B00003E0843F8113DCF03E103EC233EC1B3DC713F88C418E7990C7D15A7D8D27B0847F1827D0B77183C88A22F20062D87E2D88A2D8962D8A22D8AE2D8BA2D8C64E459F2\n"
+":400B4000290A401A601D6718996061008712D8080061D52E01000958BA08004B459028333211066C0063807DB9A9480112B881BD99CBC8840280D226444021003916370EEB\n"
+":400B8000B277A212D9660B1009004380AC1401E4400F10B83D0EA8A006012AC296964C5D45451B6B1B2195DAA33C1DB791F1EC1CF42A3080114B850A4212E5661B0207FCAB\n"
+":400BC0003AA1C28D3C0A3230E033028045BF51A12003768364EDC0866C80D64B0E008C361780122972A2248020065E95EDA2342366022201D9730280500A01402806BEF6A9\n"
+":400C0000F470892050F50606607B02508E1E3A5E1C46D1728255546520A205808844AE5300C015304220D92A00604240A88680E999844780013B200AC848F400E1C0451471\n"
+":400C40001003D0089CD1000D4EA4028E07B02010031CDA3A65A8458353681E43587A12C4AE38F41F88810F0381FC0C018032950844F8D5ED0C4B07D0320780EB27E13240A3\n"
+":400C80000CC9ABC4C710080A421D50102008158080C2396028200066542C6480E2030321986CE54B89803008051580E00290319DEB4F038824043529401DB8105805010870\n"
+":400CC00075816A6EA440B0C030087A28F0625510C7108B32A84CCC12056224CAE344688757CF60B360760340680D01ACB82F160F90040042C0EA964A52354702D36F27A0B7\n"
+":400D00000401739B84B6344278757C96F32E3474982A80300D58AC962E5D158155512C3817800F41A18B8DA28CBE07420B22216A229804441C0C003C5C020F50141E0044BE\n"
+":400D4000796145A362D030AEEF28A1968D4385DB032D03298AF460C4202FB068C600CD7F581A488F38326453F92CF60849032B953A82033B3F50B0BE90E06949D0B2B14D7A\n"
+":400D80006368B035B6F98A783890B8861E4EA42AA51959617601C3C862D25B1F85B80D32901859FA57046F8829F0014F348A0998C41007B7EE223E325A808896D082C1A814\n"
+":400DC000896E08460A0000000500020400000000000001F85440000671BE00A854AB0003A000A0C4A18851290002079D18F55125000201F71B7851250002050E18C8553ED2\n"
+":400E0000FFFF522F0010E619E6F2ECFAF8F2FF7904ED06A30F0E15EB169717D7197C192217A5182816FD515C0001003E005B71C60100606700024C000110605D000200006F\n"
+":400E40009C40607B0011004F0075009B00C200E8010E0134015A018001A701CD01F30219023F0266028C02B253BF00020199033370F4000070710002FF86FF8670760F33B4\n"
+":400E8000549AFEAE5058118053E900021000100054B4000C544E002850340580501A01005010F8805018FDCD53510008F000080000001000F8000266F0000333534A80004E\n"
+":400EC000537D00020000000053610008C0004000C0004000C0004000C0004000526F00080000000000000000000000000000000002990002F4F901535376F7F55348C000AD\n"
+":400F00005100115F7151002000400040004000400040004000400040FA41FC4C01520453074F0748044200400040F842F749F94DFC50FE500050064B0B400B430040004062\n"
+":400F4000004000400040004071B2522C52AA014052B30002080000A0512E2000512C010053840000539E01E0539C099952A300020000000052D2008052E500030040030075\n"
+":400F80000400533E6000538D000200008235531E0000546B000708000CCC0E660E660B330B331000545600E6545A1000545F00040700157C04000FA054680000545C00A0BC\n"
+":400FC00060110003AF80B474BC2C0000000000004953505468726561644C6F6F70006170313330325F7365745F6374726C00000020257328256429204572726F72204F637C\n"
+":4010000063757272656420696E2048414C5F4932435F536C617665527843706C7443616C6C6261636B2020537461747573203D203078253032782C20675F736C6176655FEA\n"
+":401040006E6578745F72785F6C656E203D20257520200A0D0000000020257328256429204572726F72204F6363757272656420696E2048414C5F4932435F536C6176655492\n"
+":401080007843706C7443616C6C6261636B2020737461747573203D2030782530327820675F736C6176655F6E6578745F72785F6C656E203D202575200A0D000025732825D7\n"
+":4010C000642920446562756720496E69746961746564205359534346475F4346475231203D203078253038782020464C4153482D3E4F505452203D20307825303878200A24\n"
+":401100000D00000049535054687265616400000064656661756C745461736B00496E76616C696420466F726D6174202D2030782530387820213D20307825303878202C20C5\n"
+":40114000205769647468202D2025687520213D20256875202C20486569676874202D2025687520213D20256875200A0D000000000A0D2052454144204D4173746572205402\n"
+":4011800072616E736D6974204572726F7220212120202D20307825303278203078253038782020524547203D2030782530347820666F7220736C61766520307825303278F7\n"
+":4011C000200A0D000A0D205752495445204D4173746572205472616E736D6974204572726F7220212120202D203078253032782030782530387820524547203D2030782543\n"
+":4012000030347820666F7220736C61766520307825303278200A0D000A0D204D41737465722052656365697665204572726F72202121202D2030782530327820307825300F\n"
+":40124000387820666F7220736C617665203078253032782020666F7220524547202D20307825303478200A0D000000008C12020800000020A4000000F24C00083013020884\n"
+":40128000A400002034310000024D000880841E0000000000AAAAAAAA00000000000000000000000000000000000000000000000000000000000000000000000000000000E4\n"
+":4012C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005FFFF0000000000000000000000000000EB\n"
+":30130000C0FF02080000000000000000000000000000000000000000000000000000000000000100000000000000000000000000F3\n"
+":020000040800F2\n"
+":4000000008040020D5000008C9010008C701000800000000000000000000000000000000000000000000000000000000CD0100080000000000000000CB010008CF01000893\n"
+":40004000E7000008E7000008E7000008E7000008E7000008E7000008E7000008E700000800000000E7000008E7000008E7000008E7000008E7000008E7000008E70000087F\n"
+":40008000E7000008E7000008E700000800000000E7000008E7000008E7000008E7000008E7000008E7000008E7000008E7000008E7000008E700000800000000000000001D\n"
+":4000C0000348854600F014F80048004751020008080400200448804704480047FEE7FEE7FEE7FEE7FEE7FEE7DD010008C1000008064C0125064E05E0E36807CC2B430C3CA0\n"
+":4001000098471034B442F7D3FFF7DEFFA4020008C402000810B500210748C9438162002282624162426201620262C161C26100F00DF8002010BD0000001002400248016829\n"
+":40014000491C016070470000000000207047000008B515480168821511430160C16889088900C1600168114A114001600168012212041140009101689200914301600021AD\n"
+":40018000C16042680A4B1A4005235B03D218426042681F231B029A438314D2184260016105490448086008BD00100240D4FFF6FEFF1FFF0068FF1F0004000020704710B525\n"
+":4001C000FFF7FCFF10BDFEE770477047704710B5FFF7B4FFFFF7F3FF10BD000010480168821511430160C1680E4A1140C16001680D4A1140016081684908490081600168D5\n"
+":400200000122920491430160C168FD2212049143C160002101610549C003886070470000001002400C40FF88F6FFF6FE00ED00E002E008C8121F08C1002AFAD17047704760\n"
+":40024000002001E001C1121F002AFBD17047000008B5002462B60F48009401680E4A1140C204914214D1416800910D46016881F3088872B609498860FFF76AFF08480461F9\n"
+":4002800044618461012080F31088FFF743FFA847FEE70000000400080000FE2F00ED00E000E000E0C4020008000000200800000030020008CC020008080000200004000084\n"
+":0C02C000400200080000000080841E00C6\n"
+":020000040802F0\n"
+":20FFC00031314355313331585858585858303131313035343266623436585858585858585a\n"
+":04000005080000C12E\n"
+":00000001FF\n"
diff --git a/drivers/media/platform/imx8/ecam50_cam_fw.txt b/drivers/media/platform/imx8/ecam50_cam_fw.txt
new file mode 100644
index 000000000000..79923866c34f
--- /dev/null
+++ b/drivers/media/platform/imx8/ecam50_cam_fw.txt
@@ -0,0 +1,2146 @@
+":020000040800F2\n"
+":40040000E03100204D050008013F00081F2A0008000000000000000000000000000000000000000000000000000000008D41000800000000000000000B050008014300085E\n"
+":40044000214A00085F0500085F050008ED0A00085F0500085F0500085F050008A90A0008000000005F0500085F0500085F0500085F0500085F0500085F050008F14300086F\n"
+":40048000014400085F0500085F050008000000005F050008452A00085F050008212A00085F0500087D4100085F0500085F050008114A00085F05000800000000000000009C\n"
+":4004C0000348854600F0D0F90048004781690008E0310020084B19680868203080F30988022080F31488BFF36F8F3FBCAE4608BC04BC62B6184700000C000020EFF310807A\n"
+":4005000072B6704780F310887047EFF309800E4B1A6820381060F0C044464D4656465F46F0C008B572B607F06FFA62B60CBC116808681030F0C8A046A946B246BB4680F307\n"
+":4005400009882038F0C818470C0000200448804704480047FEE7FEE7FEE7FEE7FEE7FEE79D430008C104000830B50B46014600202022012409E00D46D5409D4205D31D4627\n"
+":400580009540491B2546954040191546521E002DF1DC30BD70B500242546002801DA01244042002901DA01254942FFF7DDFFAC4200D04042002C00D0494270BDF0B51FB466\n"
+":4005C0000646002082B005464024019100901BE0019922460F46304600F0F4F8049A059B801A994110D310461946224600F0DAF8361A8F410197224601200021009F00F083\n"
+":40060000D1F838184D4100902046641E0028DFDC019B00982946324607B0F0BD03460B439B0703D009E008C9121F08C0042AFAD203E00B780370401C491C521EF9D27047F4\n"
+":40064000D2B201E00270401C491EFBD270470022F6E710B513460A4604461946FFF7F0FF204610BD0321001D401E037812021A43491EF9D510467047024670B54A40D30F88\n"
+":40068000DB0740002DD04A002AD0010E140E000212020919400A520A8418E50104465443000A120A2E045043A4194219200CC543AA18120C0125AD03521C521912047F39D1\n"
+":4006C000240400D0521C104301D44000491EC2B20C06C0092018401C4008802A02D003E0002070BD40084000002900DA0020184370BD70B502464A40D50F40004A00ED0762\n"
+":4007000040085208002814D0002A12D0C40DD30D41020120C0055202490A520AE41A091812187D34914201D3641C00E04900002C01DA002070BD0023914201D3891A0343D1\n"
+":40074000400849000028F7D100290AD0914202D10121C90705E0914201D2012101E00121C943E005C018401900F03DF870BD10B500229623114600F03EF810BD41004002CC\n"
+":400780000122400AD205090E80187F2901DA00207047962903DC9622511AC840704796398840704710B5202A04DB0146203A9140002010BD914020239C1A0346E34019433F\n"
+":4007C000904010BD10B5202A04DB0846203AD040002110BD0B46D340D0402024A21A91400843194610BD002904DA401C490001D140084000704770B40024050C05D11024EC\n"
+":40080000000402D1002921D01124050E01D100020834050F01D10001241D850F01D18000A41C002801DB4000641C002908D020252E1B0D46F540A14000D00121294308433C\n"
+":4008400001061B1B000ADB1D02D5002070BC7047DB05181880180029F8DA401C4900F5D170BC400840007047064C0125064E05E0E36807CC2B430C3C98471034B442F7D37E\n"
+":40088000FFF722FE9C160208BC16020810B5364CE069000267D4A069C007FCD16368334A334934A004F0C4F86068C00704D03C48E0603C48E06005E02C4A2D49921D3AA093\n"
+":4008C00004F0B6F86368294A29490A3241A004F0AFF8A069C007FCD16368244A2449143224A004F0A5F86068C00704D0292252011F4944A00BE06068400704D54A4860619D\n"
+":400900004A48606105E0194A19491C3248A004F08FF86368154A164922322EA004F088F84E49042003F01EFB104A114926324CA004F07EF8E2690120C005E16902434DA014\n"
+":4009400004F076F8094A0A49283245A004F070F860680121890408436060044A04492C323FA004F065F810BD002002400105000023830008202D2D2D2025732825642920ED\n"
+":40098000464C4153482D3E50454352203D2030782530387820202D2D2D200A0D00000000EFCDAB8905040302202D2D2D202573282564292050454B45595220556E6C6F63C4\n"
+":4009C0006B656420416C7265616479202D2D2D200A0D0000202D2D2D20257328256429204E6F772C20464C4153482D3E50454352203D20307825303878202D2D2D200A0D1F\n"
+":400A000000000000202D2D2D202573282564292050454C4F434B204C6F636B6564202D2D2D200A0D00000000C8D9EAFB27262524202D2D2D20257328256429204F50544C9B\n"
+":400A40004F434B20416C726561647920556E6C6F636B6564202D2D2D200A0D00F0800000202D2D2D20257328256429202D2D2D200A0D00002056616C204166746572205533\n"
+":400A80006E6C6F636B204F7074696F6E204279746573202E2E2E2030782530387820307825303878200A0D0010B50120800200F0FBF910BD04A003F0BBFF7D24E40020468F\n"
+":400AC00006F012F8FBE7000020556E7265636F76657261626C65204572726F72204F636375726564202121200A0D000010B500F02DF910BD10B5084900224A6107494B6871\n"
+":400B00004C1523434B604B68082423434B60C009C001026010BD0000A80000200020024010B5214A00219069C305204804D54169022319434161911593699B0505D5436988\n"
+":400B40000124234343616302194393695B0505D54369082423434361E301194393691B0505D543690424234343616302194393699B0405D543691024234343616302194378\n"
+":400B800093699B0304D5446920231C43446119439369DB0305D54369402423434361A0020143916110BD000000200240A800002008B517A003F03CFF00F042F91C484168FB\n"
+":400BC00042151143416041680822114341600021130619608169C907FCD18169890714D50221816141684122D2009143416018680090104A104911A003F01AFF1EA003F0BB\n"
+":400C000017FF00F011F903F09FF9FFF753FF000020466C6173682045726173652042414E4B31205374617274202121200A0D000000200240BB04000004830008202D2D2D28\n"
+":400C400020204166746572202573282564292041742041646472657373203078253038782056616C7565203D20307825303878202D2D2D200A0D000020466C617368204590\n"
+":400C8000726173652042414E4B312053756363657373202121200A0D0000000070B50024024620325179022903D00421C16301243CE001680B680E25AB430B6001680B6811\n"
+":400CC0005B085B000B601A4B0168994201D1012121E0174B1433994201D110211BE0144B2833994201D1891515E0114B3C33994201D189140FE00E4B5033994202D1012101\n"
+":400D0000090408E00A4B6433994202D10121090501E001210906064B083B59600121517100211171816B002900D08847204670BD0800024031B500F08FF9044600F08CF960\n"
+":400D40000099001B8842F9D338BD7047F8B5344CA0690026C005334D002811DBA06980050ED4A06940050BD4A069000508D4A069800405D4A069800302D4A069C00309D5CF\n"
+":400D8000287801282BD0AF68FFF7CAFE384600F055F82E70A069800712D50220A061287800280DD0287801281ED06068082188436060A868FFF7C9FF0020C043A8602E7038\n"
+":400DC000287800280AD160684121C90088436060606803210904884360602E74F8BDEF680020C043E860CFE76868401E6860686800280DD0E868FFF7A8FFE8688030E8607F\n"
+":400E000061680122520291436160FFF773FED7E70020C043E8602E70FFF797FFD0E7000000200240A800002003484168022211434160002070470000002002407047000045\n"
+":400E40000948416889070CD54168C90703D00749C1600749C16007490161074901610020704701207047000000200240EFCDAB8905040302BFAE9D8C1615141310B5012197\n"
+":400E80008902884204D1034A034904A003F0D0FD10BD000027040000ED8200082025732028256429200A0D0010B504494A69024202D04861FFF7E2FF10BD00000004014046\n"
+":400EC000F8B500230124A7E027469F403A4070D04D68022D01D0122D14D1DD08AD002D1800952D6A5E07AC46F50E0F26AE46AE406546B543AC460E697546AE4065462E4352\n"
+":400F0000009D2E624D68012D05D0022D03D0112D01D0122D16D185680326AC465D00AE46AE406546B543AC46CE687546AE4065462E43866046680D79BE43ED06ED0F9D40D7\n"
+":400F40003543456006685F000325BD40AE46AE430D79B446AE07B60FBE4065462E430660C6687546AE438D68BD403543C5604D68ED0050D52B4D6E6B26436E639E082A4D2B\n"
+":400F8000B6007519AC46AD689E07360F0F27B740BD4305273F07B84201D100271AE0234FB84201D1012715E0214FB84202D1022710E030E01F4FB84201D103270AE01E4FF4\n"
+":400FC000B84201D1042705E01C4FB84201D1052700E00627B7402F436546AF60184D2E684F689643FF0300D516432E606E684F689643BF0300D516436E60AE684F6896436F\n"
+":40100000FF0200D51643AE60EE684F689643BF0200D51643EE605B1C0A681546DD4000D052E7F8BD00100240000001400004005000080050000C005000100050001C0050CA\n"
+":401040000004014042694A4042617047002A01D0816170478162704701480068704700000400002070B5024640325378202B1CD11378012B19D00123137024245470046841\n"
+":4010800025689D432560046825681E03B5432560046825680D4325600068016819430160202050700020107070BD022070BD70B5024640325378202B1BD11378012B18D0AF\n"
+":4010C000012414702423537003681D68A5431D6005682B680F263602B3430902194329600068016821430160202050700020107070BD022070BD000010B5034A034904A0E1\n"
+":4011000003F096FC10BD000021040000D38200082025732028256429200A0D0010B5034A034904A003F084FC10BD00000D0400006F8200082025732028256429200A0D00BD\n"
+":4011400070B503689A691968D40507D50C0605D5446C01252C4344642C02DC61530508D50B0606D5436C082423434364E3010468E361920508D5090606D5416C0222114342\n"
+":40118000416411020268D161416C0B22114202D0416C01F02DFD70BD026891691268436B002B00D01847704770B5054600681449144C884213D1284600F054F80346124AB8\n"
+":4011C000124913A003F034FC6078042803D0A07860700420A07002F09BFF002068641849286888420BD1284600F03CF8064A03460F32064913A003F01BFC0320207070BD64\n"
+":401200000054004060000020F60300005982000820257328256429202D2048414C5F4932435F4572726F7243616C6C6261636B20202D20307825303878200A0D00000000E6\n"
+":4012400000780040202573202825642920457272436F6465203D20307825303878200A0D00000000406C704770B5040006D02546403568780026002802D005E0012070BD6A\n"
+":401280002E70204600F06EF924206870206801684908490001600F216068090688432168086121688A680120C00382438A60E1680129A16808D021229202114322689160FF\n"
+":4012C000E168022902D005E00143F7E701212268C902516021684A680F4B1A434A602168CA688243CA60616920690843A169090208432168C860216AE06908432168086074\n"
+":40130000206801680122114301606664202068702663AE70002070BD0080000210B5034A034904A003F084FB10BD000012040000848200082025732028256429200A0D003E\n"
+":4013400000680649884205D105480178092902D00321017070470B21FBE70000007800409000002000680649884205D105480178052902D00321017070470721FBE7000017\n"
+":401380000078004090000020F8B50546044640356878202830D120688069C04300042BD52878012828D001202870222068701020A87000266664626263851048E062104803\n"
+":4013C0006063608DFF2804D9FF20012320851B0603E0608D012320855B06092080020090208DC2B2204601F09BFF2E700221204601F07EFB0020F8BD0220F8BD0000FFFFAE\n"
+":4014000071300008FFB5054604464035687881B020287ED1287801287BD001202870FFF71BFE0746012200901923D103204601F089FF00283FD1212068701020A870002613\n"
+":40144000666403986062049860856663618D01204003FF2903D9FF222285009034E0618D2185009036E02046029901F059FF36E001F0B3FF002803D0606C042847D01AE0F8\n"
+":40148000606A411C6162017820688162608D401E6085208D401E0004000C20851FD1608D00281CD000970022802120460A9B01F049FF002802D0032005B0F0BD608DFF284C\n"
+":4014C00005D9FF222285009601231B06CBE7608D20850096208D0123C2B25B06C3E7608D0A9900283A462046C2D101F04FFF0028C2D121682020C86121684A68064B1A403E\n"
+":401500004A606870AE702E700020D5E701E00120D2E70220D0E7000000E800FE10B5034A034904A003F084FA10BD00001C040000B98200082025732028256429200A0D008B\n"
+":4015400010B5034A034904A003F072FA10BD0000170400009F8200082025732028256429200A0D00F0B5234A0168122403200125214E85B0914215D1C02100910021029193\n"
+":4015800003900194049569461C48FFF799FCB06B69050843B06300220321172000F058F9172022E0164A914221D189156A4632C20320072781C2052069460007FFF780FCA6\n"
+":4015C0001020694631C103200390694604970B48FFF776FCB06B012189070843B06300220321152000F034F9152000F027F905B0F0BD0000005400400010024000040050BB\n"
+":401600000078004038B500680D49884213D10D4CA3780A2B10D0A08900900B4A0B490C4803F006FA6078042803D0A07860700420A07002F06DFD38BD63700C20A07038BD1F\n"
+":401640000054004060000020D30300003D8200082014020838B500680E49884214D10E4CA378062B11D0A089ED22009092000B490B4803F0DDF96078042803D0A078607010\n"
+":401680000420A07002F044FD38BD63700820A07038BD000000540040600000202182000888140208F8B5034640335C78202C1ED11C78012C1BD001241C7022245C7020243E\n"
+":4016C0009C700024446405686E680127FF03BE436E6041624285418D01850649C162064941631C701F2101F003FA0020F8BD0220F8BD00000000FFFF01320008F8B503461E\n"
+":4017000040335C78202C1ED11C78012C1BD001241C7021245C7020249C700024446405686E680127FF03BE436E6041624285418D01850649C162064941631C70172101F089\n"
+":40174000D7F90020F8BD0220F8BD00000000FFFF0132000802480168491C0160704700000400002010B506480168402211430160002000F007F800F03DF8002010BD0000AC\n"
+":401780000020024000B5014687B00022102000F05FF8102000F052F81148816B02221143816305A9684600F071FA00F095FA0D49FEF7DAFE0D490C4A0A600D4A401ECA60A2\n"
+":4017C0004860002008618860084600F0EBFD002802D0012007B000BD044800F0FEFDF9E70010024040420F0000040040DC180020E703000010B51048416B012211434163FB\n"
+":40180000816B02041143816300221146501F00F01FF803210022481F00F01AF803210022081F00F015F803210022084600F010F8032000F003F810BD00100240C106C90E1F\n"
+":4018400001208840014908607047000000E100E010B502F057FB10BDF8B54E49074601250020ED034A4B4B4A4031082F7BD00EDC012F48D0022F60D0042F22D1CC68032685\n"
+":40188000B602344065D07F02BC424ED064E0102F77D00126032436042404202F09D0FF3F012F0ED1C968214053D07400A1423CD06BE00B6909692140B14203D199052EE01E\n"
+":4018C0002846F8BD01256D04A94203D19907F8D53148F8BDA142FCD111688903F9D5116803200005014001200005091A09D0091A05D0814201D12948F8BD2948F8BD294803\n"
+":40190000F8BD2948F8BDCC68A407A40F0AD0022C0BD0012C0ED0032CF4D1096989050029CEDBF8BD00F0E8F9F8BD11684907FBD51846F8BD00F0F0F9F8BDCC680C26344037\n"
+":4019400007D0082CF1D0042CF4D00C2CE5D0F8BD09E000F0C1F9FAE7012292029442E9D0B442DAD0F3E7C968032424032140F0D001256D036C10A942D7D0A142DAD0E6E733\n"
+":40198000FFE7916B4902E4D4E1E7B142D2D0DEE70024F400001002408890000020A1070000093D0040420F0080841E00F8B504460078594D800672D5574E0027403EB06B96\n"
+":4019C000C00004D4B06BA9050843B063012753480168C90511D40168821511430160FFF73BFB009005E0FFF737FB0099401A642837D84A480068C005F5D5326803210905E8\n"
+":401A000060680A400140914208D08103890F032904D13168890301D50120F8BD2A69032109040A4022D0084090421FD0207880061CD528692A6988430121C9040A432A61EC\n"
+":401A40002A698A432A612861C0050FD5FFF704FB009008E0FFF700FB0099411A3048814201D90320F8BD28698005F3D561688803800F032805D132680005824301400A4356\n"
+":401A800032602869032261681204114008432861002F04D0B16B012000078143B1632078C00705D0E868A168800880000843E8602078800705D5E8680C218843E1680843BE\n"
+":401AC000E8602078400706D5E86803218902884321690843E8602078000706D5E86803210903884361690843E8602088C00506D5E868032109048843A1690843E860207812\n"
+":401B0000000606D5E868032189048843E1690843E8600020F8BD0000401002400070004088130000F8B5054653480E460068C007C00FB0420AD250480168490849003143A7\n"
+":401B400001600068C007C00FB0426FD128784B4C800705D5E068F0218843A9680843E0602878C00752D06868022817D0032818D02168012818D08905002957DAE1688908A3\n"
+":401B800089000143E160FFF767FA69680746022912D003291CD0012926D033E021688903EAE721688901E7E74907E5E7FFF754FAC11B3348814223D8E0680007800F022806\n"
+":401BC000F4D123E0FFF748FAC11B2D48814217D8E0680007800F0328F4D117E0FFF73CFAC11B274881420BD8E0680007800F0128F4D10BE0FFF730FAC11B2148814201D947\n"
+":401C00000320F8BDE0680007800FF3D11A480168C907C90FB1420BD9016849084900314301600068C007C00FB04201D00120F8BD2878400706D5E068072109028843E96818\n"
+":401C40000843E0602878000707D5E0680721C90288432969C9000843E06000F05DF8E168084A0906090F515CC840074908600020FFF788FD0020F8BD0020024000100240D2\n"
+":401C800088130000BC8100080000002010B50F2202600C4AD3689B079B0F4360D368F02423408360D46807231B021C40C460D268D2081A40026104480068C007C00F086031\n"
+":401CC00010BD00000010024000200240014800687047000000000020044805490068C968044A4905490F515CC84070470000002000100240D5810008044805490068C96845\n"
+":401D0000044A8904490F515CC84070470000002000100240D581000810B5184AD1680C20084004280BD0082810D00C2810D050680004410F0120C003491C884010BD1068D3\n"
+":401D4000C00601D50E4810BD0E4810BD0E4810BD88020E4B000F185C0902D368890F491CDB0301D5084A05E01268D20601D5044A00E0044A5043FEF7F7FB10BD001002408D\n"
+":401D800000093D000024F40000127A00CC810008F8B504460078F24DC0074AD0E8680007800F022807D0E8680007800F032809D1E868C00306D5286880033AD56068002883\n"
+":401DC00073D036E0012062680004824203D129680143296011E0052301211B0489049A422A6802D10A432A60F1E782432A602A6802400092286888432860606800280CD06A\n"
+":401E0000FFF72AF9064604E0FFF726F9801B64287ED828688003F7D50BE0FFF71DF9064604E0FFF719F9801B6428F1D828688003F7D42078800741D5E8681F270007800F8A\n"
+":401E40003F02012807D0E8680007800F032809D1E868C00306D42868400717D5E068012823D113E0E068002817D029680922914301432960FFF7F0F8064604E0FFF7ECF892\n"
+":401E8000801B0228C4D828684007F7D568682169B84309020843686010E02868400840002860FFF7D9F8064605E090E0FFF7D4F8801B0228ACD828684007F7D42078C006A8\n"
+":401EC00076D5E868A74E0007800F0BD0A06900285DD02868FF21013108432860FFF7BCF8074644E02868800502D5A06900286ED0206A69683140884212D902F0D1F80028F4\n"
+":401F0000AED16868216AB04308436860686800E0BBE00002217F000A0906084368600FE06968B143014369606868217F0002000A090608436860206A02F0B2F800288FD19B\n"
+":401F4000206A410B0120C003491C8840E96809060A0F8549895CC840844908600020FFF711FC25E0FFF778F8C01B02288AD828688005F7D56868216AB0430843686068680A\n"
+":401F8000217F0002000A09060843686010E02968FF20013081432960FFF75EF8064604E0FFF75AF8801B02286FD828688005F7D420786F4E000723D560690028306910D0C7\n"
+":401FC000012108433061FFF747F8074605E0C5E0FFF742F8C01B022857D830698007F7D50EE0400840003061FFF736F8074604E0FFF732F8C01B022847D830698007F7D4FC\n"
+":402000002078400762D5A86B0027C00005D4A86B012109070843A863012756480168C90511D40168821511430160FFF715F8009005E0FFF711F80099401A642825D84D48FD\n"
+":402040000068C005F5D5FF20A2680130824203D131690143316111E001218902002A07D005231B029A4203D132690A433261EFE7326982433261306988433061A06800280A\n"
+":402080000FD0FEF7E9FF009007E060E0FEF7E4FF0099411A3848814259D830698005F5D50DE0FEF7D9FF009006E0FEF7D5FF0099411A314881424AD830698005F5D4002F24\n"
+":4020C00004D0A96B012000078143A963606A002842D0E9680907890F03293FD0012636060228286805D0B0432860FEF7B5FF04462FE0B0432860FEF7AFFF074604E0FEF715\n"
+":40210000ABFFC01B022822D828688001F7D4E16AA06AEA680843216BFD231B049A4311430843E860286830432860FEF795FF044604E0FEF791FF001B022808D8286880019C\n"
+":40214000F7D509E0FEF788FF001B022801D90320F8BD28688001F5D40020F8BD0120F8BD0010024000E00000BC81000800000020401002400070004088130000704738B59A\n"
+":4021800001684A68D243520609D48A68D243D20705D18A68D243520601D5816C08E04A68D243120606D48A68D243920702D4C16C884738BD4A68D2439206FAD48A68D243A6\n"
+":4021C000D20606D4426D02231A4342651022D2438A6001688A680123D2439206002A08DB426D1A4342658A6800920A684024A2430A6001688A68D243540602464032002CDF\n"
+":4022000009DB547C122C06D0446D04252C434465CC688C6800948C68E443E40505D4446D08252C4344658C680094446D002CC0D04C68E025AC434C605374FFF79FFF38BDBC\n"
+":4022400070B5040006D025464035687C0026002802D005E0012070BD2E74204600F032F80220687420680168402291430160A168606822690843E168114308436169012224\n"
+":402280000843A169520211400843E1690843216A0843A16A084321680860A0690421000C0840616A0843216848602168E06A08612068C16992009143C16166650120687420\n"
+":4022C000002070BD00B50068104985B088421AD10F48416B821411434163A02000900220019000210320039002910491052069460007FEF7E5FD002203211920FFF7A8FAD5\n"
+":402300001920FFF79BFA05B000BD00000030014000100240042204490428086902D09043086170471043FBE700E000E0094910B5401E884201D9012010BD074C606103219B\n"
+":40234000081F01F0DFFD0020A06107202061002010BD0000FFFFFF0000E000E070B502462032137D012B1BD00123137502245475046865687026B5436560046865680E68BA\n"
+":40238000354365600468A5688026B543A5600068846849680C43846053750020107570BD022070BD70B5040005D025462035687D002802D006E0012070BD002028752046AF\n"
+":4023C00000F00AF802206875211D206802F020F801206875002070BD70470268D36801210B43D360006802680A43026000207047704770B50446006801690025C9438907C1\n"
+":40240000002915DBC168C943890711D4E91E016101202075206880698007204602D0FFF7E7FF04E000F08EF8204600F025F9257520680169C943490717D4C168C943490788\n"
+":4024400013D40421C943016102202075206880698005800F204602D0FFF7CAFF04E000F071F8204600F008F9257520680169C943090716D4C168C943090712D40821C94329\n"
+":402480000161042020752068C0698007204602D0FFF7AEFF04E000F055F8204600F0ECF8257520680169C943C90617D4C168C943C90613D41021C943016108202075206872\n"
+":4024C000C0698005800F204602D0FFF791FF04E000F038F8204600F0CFF8257520680169C943C90708D1C168C943C90704D1891E0161204600F0C2F820680169C94349063F\n"
+":4025000009D4C168C943490605D44021C9430161204600F0BDF870BD00B500680121890785B088420CD101200090002002210290039001910491052069460007FEF7C0FCE3\n"
+":4025400005B000BD7047F8B5064604462036307D0D4601280DD001203075022070750427002A08D0042A16D0082A2AD00C2A4DD137E00220F8BD206801F07AFF20688169B3\n"
+":4025800008221143816120688169B943816120688169EA6812E0206801F082FF206882690121C9020A43826120688169012292029143816120688169EA681202114381613E\n"
+":4025C00024E0206801F085FF2068C26908210A43C2612068C169B943C1612068C169EA6812E0206801F090FF2068C1690122D2021143C1612068C269012189028A43C26151\n"
+":402600002068C169EA6812021143C1610120707500203075F8BD70B5040005D025462035687D002802D006E0012070BD00202875204600F00BF802206875211D206801F0EF\n"
+":40264000E7FE01206875002070BD000010B500680121890788420CD10648816B012211438163002203210F20FFF7F2F80F20FFF7E5F810BD001002407047000010B50068B5\n"
+":402680000249884201D1FFF765F810BD000400407047704770470000F8B502680446D06911680607360F07D1830605D58B0603D5204601F0F2FFF8BD95682023002E65D001\n"
+":4026C000EE07F60FFF2721370F4037435ED0C70706D0CF0504D501271762E26E3A43E266820708D5EA0706D0276802223A62E26E04273A43E266420708D5EA0706D025682E\n"
+":4027000004222A62E26E02252A43E266020709D50A461A40324305D0236808221A62E36E1343E366E26E002AC5D0800604D5880602D5204601F0B1FFE06E000703D4206831\n"
+":40274000806840061CD5204601F098FF20688168490611D5826840218A438260606E00280AD01D498163606EFEF798FA0028A2D0606E816B8847F8BD2046FFF78BFFF8BDCA\n"
+":402780002046FFF787FF0020E066F8BD2646C7026036002F0ADA6D0208D50120000510627372B3722046FFF774FFF8BD050605D50D0603D5204602F0C7F8F8BD4006FCD519\n"
+":4027C0004806FAD52046146840218C431460737200F0D3F8F8BD00006946000870B5040005D025466035687A002802D006E0012070BD00202872204600F026F824206872D0\n"
+":4028000020680168490849000160606A002802D0204601F094FE204601F07EFF0128E7D0206841680922D20291434160206881682A2291438160206801680122114301606B\n"
+":40284000204601F0E1FE70BD00B50068164987B0884227D11548C26A01210A43C262C26A0A400592C26A0A43C262C26A0A400592826B4B041A4382630C20009002200190C0\n"
+":4028800003200390042004900291052069460007FEF716FB002203211C20FEF7D9FF1C20FEF7CCFF07B000BD00440040001002407047FFB5064604466036707A83B00D469A\n"
+":4028C000202858D1002D0CD00598002809D00120A1680003814207D12069002804D1E80702D0012007B0F0BD307A012843D0012030720020E06621207072FEF7ADFB0190CC\n"
+":4029000027464037059838820598788218E0788A401E788206980090002280212046019B02F045F8002818D10120A1680003814202D12069002812D02168287888626D1C4E\n"
+":40294000788A0028E3D106980090002240212046019B02F02CF8002808D00320C2E728882168C005C00D8862AD1CE9E72020707200203072B6E70220B4E7704710B5064C8A\n"
+":40298000E178002901D000F045F8E078401EE07001F0BEFB10BD00006000002010B501684A68D243920507D48A68D243D20703D1921E8A60FFF7E2FF10BD10B504000FD099\n"
+":4029C00000F010F8E0688021084321680860616820690843A168084321684860002010BD012010BD10B50068084988420CD10848816BC21411438163002203211046FEF7BD\n"
+":402A000027FF0020FEF71AFF10BD0000002C004000100240C1680068016000207047FEE710B5074800688069172109020842044802D0FEF785FB10BDFEF7AEFB10BD00004C\n"
+":402A4000B00D002010B50648006880694005400F034802D0FEF774FB10BDFEF79DFB10BDFC0D002010B5806A01684A680123DB031A434A60826B00219163C26B9163014673\n"
+":402A800040314A78602A02D0FEF78EFB10BD20224A70FEF731FB10BDF0B503460022CE0740332824B025002E05D05E7842222746B74300D0F2228E0705D544265B78324330\n"
+":402AC0009C4300D02A434B0701D5B8231A4311238B4301D190231A4312238B4301D160210A4300680168914301600020F0BD000070B5164D1223446B002220268B43AC4270\n"
+":402B000002D0134DAC420DD14C0700D5B82211248C4301D190210A43002B11D1324340210A430DE04C0700D5B822CC0701D0F2242243890701D5F4210A43002B00D132434A\n"
+":402B40000068016811430160002070BDAD2F00089931000801688A69D243920701D400228A6200688169C943C90703D081690122114381617047F8B505460446403568784D\n"
+":402B800028218143206804D00821C16100202870F8BD8169C903CF0F8169FE230E0C81681E408A05C168920D19408C46E168022912D10621D3090E400B409E420BD1A16CB6\n"
+":402BC000491CA164A16C0229E2D10021A1640823C361297007E0664604212046FFF75CFF00202870324639462046FEF797FAF8BDF8B50026054640350446AE702C48E06202\n"
+":402C00006685606C0843606468782027282823D06878292820D068782A281DD007212046FFF73AFF6878602800D06F7026636663206801684A041F49026817D501239B033F\n"
+":402C40009A430260A06B81632E70A06BFEF726F800281DD0A06B19E003212046FFF71CFF28206870266314486063E1E7120410D502680123DB039A430260E06B81632E70B3\n"
+":402C8000E06BFEF70BF8002802D0E06B816B8847F8BD6878602804D02E702046FEF784FAF8BD6F702E702046FEF726FAF8BD00000000FFFF652A00080132000870B50446C8\n"
+":402CC0001548E062002525632022204640300646427085706563480711D52068416A606A421C62620170208D002808D0401E2085608D401E6085606C0421084360640721E8\n"
+":402D00002046FFF7C9FE21681020C86135702046FEF704FB70BD00000000FFFFF8B5064600682027C76130684268224B1A4042600025356320487563F062C80606D5316858\n"
+":402D40001020C861706C0421084370643046FFF701FF03213046FFF79FFE706C002814D134464034607860280FD06078212811D06078222808D16770A078A570402825702D\n"
+":402D8000304614D0FEF7DCFAF8BD716C3046FFF72FFFF8BD6770A078A57040282570304602D0FEF7DFFAF8BDFEF7CAFBF8BDFEF7B5FBF8BD00E800FE0000FFFF70B500254A\n"
+":402DC000064640360446B57071782020212970700BD012202063022120466563FFF75CFE35702046FEF7ACFA70BD11202063012120466563FFF750FE35702046FEF7B2FA57\n"
+":402E000070BD0000F8B50446006820260F46C66121680820C86107212046FFF73DFE20684168B20211434160206841682D4A114041602046FFF78EFE2068016825464904A6\n"
+":402E40004035002902DB0168090406D5697821292FD0E16B096849686185628D0421002A02D0626C0A4362647A070FD5426A606A431C63620270208D002807D0401E2085F7\n"
+":402E8000608D401E6085606C0843606400202063A8706063616C00290DD0616C2046FFF7A7FE6878282803D139462046FFF706FFF8BDA16BCEE7E26A0B498A4206D0E16209\n"
+":402EC0006E7028702046FEF729FAF8BD69786E7022292870204602D0FEF7BCFBF8BDFEF791FBF8BD00E800FE0000FFFF70B50026044640340546A6706178282029290ED019\n"
+":402F000061782A290AD160702220286302212846FFF7C2FD26702846FEF774FB70BD60702120286301212846FFF7B6FD26702846FEF790FB70BD0000F7B5044600680E46DA\n"
+":402F40008069C043C0062CD420272546403520688069C04380060FD5701CF8D0002E05D0FEF77AF80299401AB042F0D96F700020A87028700320FEBD21681020C861206835\n"
+":402F8000C7612046FFF7E6FD20684168064A11404160042060646F700020A87028700120FEBD0020FEBD000000E800FEF8B50546044640352878012816D001202870C80616\n"
+":402FC0000026002812DAD00610D521681020C861606C04210843606412212046FFF788FD2046FFF7B7FD3FE00220F8BD080634D5500632D520680168402291430160608DF7\n"
+":40300000002825D0206840688105608D890DFF2803D9FF202085930403E0608D012320855B060096208DC2B2204600F079F9608D218D401A6085687822282068016804D09A\n"
+":4030400001229203114301600EE00122D203F9E740212046FFF7CCFD06E0880604D5900602D52046FFF75AFE2E700020F8BD0000F8B5074604464037387815460E46012873\n"
+":4030800010D001203870F0060ED5E8060CD521681020C861606C0421084360642046FFF759FD5BE00220F8BD700708D5680706D52068416A606A421C6262017009E0B0074B\n"
+":4030C0000ED5A8070CD5606A411C6162216800788862208D401E2085608D401E60853DE02C4A30062FD568062DD5208D002825D1608D002822D0206840688105608D890D60\n"
+":40310000FF2806D9FF220020228501231B06009010E0608D2085E06A904205D000200090E36A208DC2B205E000200090208D0123C2B25B06204600F0F3F80FE020684068A0\n"
+":40314000800123D506E0700608D5680606D5608D00280ED040212046FFF74AFDB00605D5A80603D531462046FFF7D8FD00203870F8BD206841688901F0D4E16A914205D1AF\n"
+":4031800041680122920311434160E7E72046FFF715FEE3E70000FFFF10B5044640342378012B15D001232370CB0618D5D30616D5617821290ED0C16B0968496810220029A2\n"
+":4031C0000AD00168CA61416C04221143416414E0022010BD816BEFE70068C2610DE00B0705D5130703D500680821C16105E08B0603D5920601D5FFF705FE0020207010BDB5\n"
+":40320000F8B5054604464035287816460F46012811D0012028704149F8062DD5F0062BD5628D1020002A08D02168C861606C04210843606467E00220F8BDE36A012252068A\n"
+":40324000934202D0E36A934202D16A78282A08D0E26A8A4202D06978292907D02168C86151E039462046FFF729FD4CE02168C8612046FFF76FFC43E0780719D5700717D536\n"
+":40328000608D002820680BD0426A606A431C63620270208D401E2085608D401E608500E0406A608D00282ED1E06A884228D12AE0380706D5300704D539462046FFF75BFC99\n"
+":4032C00021E0B8071FD5B0071DD5608D00280CD0606A411C6162216800788862608D401E6085208D401E20850DE0216862208862E06A01210906884202D0E06A002802D18D\n"
+":403300002046FFF7F3FDB80605D5B00603D539462046FFF777FD00202870F8BD0000FFFF70B50568049C68688905890D1204044E11431943304021430143696070BD000015\n"
+":40334000009800FCF8B51C4617460E46054611E0601C0FD0002C05D0FDF77EFE0699401AA04207D92020403568700020A87028700320F8BD286881693046884304D0002052\n"
+":40338000B842E5D00020F8BD0120F9E770B516460D4604461AE0324629462046FFF7CCFD002801D0012070BD002D04D0FDF754FE801BA8420AD9616C2020014361644034E4\n"
+":4033C00060700020A0702070032070BD20688069C0438006DFD4002070BD70B516460D4604461CE0324629462046FFF7A5FD002801D0012070BD681C11D0002D04D0FDF753\n"
+":403400002BFE801BA8420AD9616C202001436164403460700020A0702070032070BD20688069C0438007DDD4002070BD94B000206946088710A908801390F8480F90002013\n"
+":4034400001251290ED03F6A001F0F2FAFC4C002202212046FDF7FAFD012211462046FDF7F5FD012003F040FB002201212046FDF7EDFD012003F038FB012202212046FDF7BF\n"
+":40348000E5FD012003F030FBC8210120019100900223EC4A0021782002F078FFEA4E040004D0EAA001F0C4FA347101E000203071E44C7822A41FE188EDA001F0B9FAF8484B\n"
+":4034C0001190E048801F807801287BD1F549F6A001F0AEFADA4C002202212046FDF7B6FD012211462046FDF7B1FD012003F0FCFA002201212046FDF7A9FD012003F0F4FA40\n"
+":40350000012202212046FDF7A1FD012003F0ECFA0020694608870EA9E94801F053FD002805D0E84ADF49E8A001F082FA48E16846008FDB4CA04203D1EAA001F079FA3FE12F\n"
+":40354000F04AF1A00F9901F073FAD54869460887FD48119902F090F90020694608870EA9D74801F02FFD00200190129800282AD02F46F64920378F427ED9481C441B2421AC\n"
+":4035800002A8FDF764F8290A684601724572DD4901982246091802A80230FDF73FF87D2040010090A01C83B202AA7821E848FDF729FF07007AD0E648FDF754FE3B46E54A52\n"
+":4035C0000090C7E01FE1002400200B900C900D9020460A21484341190A0A08AB1A735973C8490A2241180BA80230FDF717F87D20400100900C230BAA7821D548FDF702FF6B\n"
+":40360000070008D0D248FDF72DFE00903B462246A449D1A0A0E0641C652CD5D322460A204243FD208000824223D0871A3946D8A001F0FEF9B91C0BA8FDF709F8FD2080005D\n"
+":40364000C11B4819030A08AA13735073AD483A4609180BA80230FCF7E1FF7D204001BF1C0090BBB20BAA7821B948FDF7CBFE0700C8D102216A4600E01EE0914C11872046C9\n"
+":4036800002F0FAF800206A4610870EA9204601F099FC012003F028FA01201290FD20800029188DB20199081804E0FFE701250198ED030019019055E0019C0F982034844296\n"
+":4036C00025D30199441A242102A8FCF7C0FF290A6846017245728B4801992246411802A80230FCF79BFF7D204001A41C0090A3B202AA78219648FDF785FE040036D0944894\n"
+":40370000FDF7B0FD934A23461832009022E0242102A8FCF79CFF290A684601724572794801992022411802A80230FCF777FF7D2040010090222302AA78218548FDF762FEEA\n"
+":40374000019000280BD08248FDF78CFD814A019B00902E3253499EA001F06AF930E0BDB2204601940F99884200D2FEE610A8002404800146744801F025FC10A80188A24AA5\n"
+":40378000A2A001F055F9002013900EA9062001F019FC2146A7A001F04BF94149684601874748119902F068F8012003F09DF901214902A74802F060F80321A64802F05CF80C\n"
+":4037C000914813990191009010A8624A038856323449A1A001F02CF901F012FE00F03EFAABA001F025F9AF4CC821206803F0C8F91448801F8178417010218170002181804B\n"
+":40380000206803F097F90F4CA41FA078092804D10B4F00220221384646E15DE1A80D0100415031333032205468726561642043726561746564202E2E2E200A0D0000000081\n"
+":403840000004005096000020502C00202041503133303220495350202D204572726F7220434849502049442052656164200A0D004953502043484950204944203D203078E2\n"
+":403880002530347820616E6420536C6176652041646472203D20307825303278200A0D00FFFF000000140208257320456E746572656420546872656164202E2E200A0D00DD\n"
+":4038C0000260000027040000257328256429204572726F7220696E20493243202121200A0D0000000A0D20536B697070696E6720426F6F742044617461202E2E2E200A0D86\n"
+":4039000000000000580601080A20312E20496E697469616C20426F6F7420446174612053697A65203D2030782530347820426173652041646472657373203D203078253083\n"
+":403940003878200A0D00000052F00000FF9F0000FC0D00203B0500000A0D25733A2025642E204661696C656420746F206C6F616420706C6C5F696E69745F64617461202D6E\n"
+":4039800020256420307825303878200A0D2000002057726974696E672052656D61696E696E6720504C4C202D20307825303478204279746573202D205772697474656E20BD\n"
+":4039C000307825303478204279746573200A0D000A0D25733A25643A204661696C656420746F206C6F6164206932635F626F6F745F64617461202D20256420307825303877\n"
+":403A000078200A0D20000000F92800000A0D20426F6F74204441544120435243203D20307825303478203C3D3E20307825303478200A0D000A0D20426F6F74205374617415\n"
+":403A40007573203D20307825303478200A0D00001E5000000C1000000A0D20257328293A256420435243203D20307825303478203D3D203078253034782C2020535441546B\n"
+":403A80005553203D20307825303478200A0D0000537461746520636F6D706C6574650A0D0000000084000020FDF7D0FA012211463846FDF7CBFA022003F016F80020504F7B\n"
+":403AC000B071C821386803F05BF8A07860701220A070386803F02EF8A07802280DD10020474FF071C821386803F04AF8A07860701020A070386803F01DF8A07803280DD10D\n"
+":403B000000203F4F3072C821386803F039F8A07860701020A070386803F00CF8A07804280ED101F047FD364F7072C821386803F027F8A07860701020A070386802F0FAFFBC\n"
+":403B4000A07805280ED101F063FA2D4F7074C821386803F015F8A07860701020A070386802F0E8FFA07806281CD100200121254A00900191137A51887820121D02F006FC22\n"
+":403B8000070002D020A000F053FFF7741C4FC821386802F0F5FFA07860701020A070386802F0C8FFA078072813D11FA000F040FF022002F099FF0020114F7075C8213868B1\n"
+":403BC00002F0DEFFA07860701120A070386802F0B1FFA078082800D073E41AA000F028FF0020074FB075C821386802F0C9FFA07860701020A070386802F09CFF61E40000D3\n"
+":403C00008400002014190020204572726F722052656769737465722052656164204572726F72200A0D00000020506F776572696E6720446F776E20495350202E2E2E200A04\n"
+":403C40000D0000002057616B696E6720557020495350202E2E2E200A0D00000010B508210148FDF7EFF910BD00040050F0B5274887B0C16A01242143C162C16A214005916C\n"
+":403C8000C26A02210A43C262C06A002508400590202000900195694602951D48FDF710F91020052703263F07009001946946039602943846FDF704F9019400966946144897\n"
+":403CC00003960294FDF7FCF8012210213846FDF7BDF9002202210E48FDF7B8F9012211460B48FDF7B3F9A00200900A480190694602953846FDF7E4F8002203210720FDF77A\n"
+":403D0000A7FD0720FDF79AFD07B0F0BD00100240000400500000111010B512481049016011494160842181600121C1600021016141618161C1610162FDF796FA00280BD151\n"
+":403D400000210848FDF78EF9002805D100210548FDF7ADF9002801D0FCF7ACFE10BD000000540040B00D00202A12B00010B511480F490160104941600021816001614161BA\n"
+":403D800081610122C161C2600162FDF76DFA00280BD100210748FDF765F9002805D100210448FDF784F9002801D0FCF783FE10BD00780040FC0D0020330F600010B50F4881\n"
+":403DC0000D490160FF21053141600021816002220261C16001224261C161016252024162826181620721C162FEF72AFA002801D0FCF760FE10BD000000300140480E002001\n"
+":403E000010B5164A164886B0910706C02021016000241E21846041600838FEF7FCFB002814D1049404A90E480594FEF797FA00280CD16020009004200190039000226946C0\n"
+":403E400002940748FEF77FFB002801D0FCF732FE0348FEF761FB06B010BD000055D00000A00E002010B50C480A490160E1214902416000218160C16001618161C1610C224E\n"
+":403E8000016242614162FEF7A9FC002801D0FCF711FE10BD00440040D80E002010B50CA000F0C6FD0F480E490160FF21813141607F218160C160012149020161FEF77DFDE7\n"
+":403EC000002801D0FCF7F6FD07A000F0B1FD10BD20494E49542057574447200A0D000000002C0040480F002020494E495420575744472053554343455353200A0D000000ED\n"
+":403F0000704700008307FF22DB0E9A408907090E994000280BDA0007000F0838830808489B001818C36993430B43C3617047830804489B001B181868904308431860704736\n"
+":403F400000ED00E000E400E0BFF34F8F04490348C860BFF34F8F00BFFDE700000400FA0500ED00E038B50D461A494418206800902346194A19491AA000F05AFDE8430004E8\n"
+":403F8000284320602068144A00902346521D134922A000F04DFD2E4CA069C007FCD10E4A0E490D322BA000F043FDA069800702D50220A06105E0084A084914322AA000F05E\n"
+":403FC00037FD4F22120105492EA000F031FD002038BD00000000F81FD904000014830008202D2D2D20204265666F7265202573282564292041742041646472657373203050\n"
+":4040000078253038782056616C7565203D20307825303878202D2D2D200A0D00202D2D2D202573282564292041742041646472657373203078253038782056616C756520E0\n"
+":404040003D20307825303878202D2D2D200A0D0000200240202D2D2D20257328256429202D2D2D200A0D0000202D2D2D204552524F52202D20257328256429202D2D2D20E8\n"
+":404080000A0D0000202D2D2D205355434345535320257328256429202D2D2D200A0D000070B517490023CA681206120F18D18A6B154CD500134A02D51268224009E08E6B80\n"
+":4040C00001252D072E438E6312688E6B2240AE438E63A24204D103218903884200D101230A48016849084900194301600068C007C00F984201D0012070BD002070BD0000CF\n"
+":404100000010024000700040001800000020024070B512A000F08CFC154D28680168490849000160286800248462286844624B2149011048FCF78BFA0F4805210482818103\n"
+":4041400041818471FF210171417129680A6801231A430A6081784170847070BD524553455420534C41564520493243200A0D0000B00D00205C0F00206000002010B5024861\n"
+":40418000FDF7FDFF10BD0000480E00207047000030A000F04DFC0025344C0426A078042801D1FFF7B5FFA289002A04D0A078082805D00C2803D0A078002802D010E060705E\n"
+":4041C000A5706281A58165700A20A07028492948FDF768FA002803D027A000F029FC2EE0A0780C2804D008282DD1A08900282AD11E4B61890C331A1D1D4801F07BFD00281C\n"
+":4042000008D06922D200284928A000F011FC3348208111E0228A002A15D0E2812582A07860700620A07012491248FDF767FA002809D02BA000F0FCFB60780428AED0A078CC\n"
+":404240006070A670AAE70520E07009481438FEF7E1FBA3E720456E746572656420736C617665207468726561640A0D00600000205C0F0020B00D00204572726F72204F63C5\n"
+":4042800063757272656420696E2048414C5F4932435F536C6176655F526563656976655F4954200A0D0000001082000820257328256429204572726F72206F6363757265CA\n"
+":4042C00064206F6E20686F73745F6672616D65776F726B202121200A0D00000008200000204572726F72204F63637572726564206174205472616E736D6974200A0D000072\n"
+":4043000010B502F071FC10BD10B523489AB001680322D2029143C21489180160012102200391102100900491099040040B90000100240C900A946846FDF72AFD002817D126\n"
+":404340000F20159003201690179418940121199415A8FDF7E7FB00280AD1FF200B3012940D90109413940DA8FDF720FB002801D0FCF7A0FBFDF7AAFC7D21C900FCF7F4F8D1\n"
+":40438000FDF7D4FF0420FDF7C5FF03210022081FFDF75EFA1AB010BD0070004010480168821511430160C1680E4A1140C16001680D4A11400160816849084900816001681B\n"
+":4043C0000122920491430160C168FD2212049143C160002101610549C003886070470000001002400C40FF88F6FFF6FE00ED00E010B50248FDF7FDFF10BD0000A00E0020D4\n"
+":4044000010B50248FDF7F5FF10BD0000DC180020F0B502680124A407124D134E134FA04205D0A84203D0B04201D0B84204D11346702293434A681A43A04205D0A84203D059\n"
+":40444000B04201D0B84204D103231B029A43CB681A4302608A68C2620968816201214161F0BD000000040040000801400014014030B5026A520852000262026A4568836975\n"
+":404480007024A3439C080B68A40023430224A2438C6845601443836149684163046230BD30B5026A10239A430262036A4568826973242402A2430C68240214432022934365\n"
+":4044C0008A68456012011A43846149688163026230BD30B5026AFF2301339A430262026A4568C3697024A3439C080B68A400234301246402A2438C68456024021443C36178\n"
+":404500004968C163046230BD30B5026A01231B039A430262036A4568C26973242402A2430C68240214430122520393438A68456012031A43C46149680164026230BD10B5FF\n"
+":40454000818CC90707D001684A6801235B049A43836A1A434A60818C890707D501684A6801231B049A43C36A1A434A60818C490707D501684A6801239B049A43036B1A4371\n"
+":404580004A60818C090707D501684A680123DB039A43436B1A434A60818CC90607D50268916801231B039943836B19439160818C890607D501688A6801235B039A43C36BD5\n"
+":4045C0001A438A60818C490612D503685A6801210905046C8A4322435A60026C8A4207D10268516803235B059943436C19435160818C090607D501684A680123DB04806C23\n"
+":404600009A4302434A6010BDF8B500260446C666FCF722FD054620680068124F000709D501212B46002249052046009700F0BFF900280DD12068006840070BD501212B46AD\n"
+":40464000002289052046009700F0B1F9002801D00320F8BD202060346072A07226720020F8BD0000FFFFFF0110B5806A0022014640314A834A82FEF70DF810BD01680A683B\n"
+":40468000FF2321339A430A6001688A68520852008A60202160308172704770B50246403201466031938B8D7A0C460168222D05D08869082210438861022070BD496A012696\n"
+":4046C0008568360389B2B54202D10569002D0BD01940436D5D1C45651970518B491E0904090C518307D015E0456D19402980416D891C4165F1E701680A68FF2321339A43AC\n"
+":404700000A6001688A68520852008A602021A172FEF7CEF8002070BDFEB50446016880682269E36910436269102700261A4310430A683546784B1A4002430A602068416888\n"
+":40474000032212039143E26811434160734A2168A069914201D0226A10438A680B231B029A4302438A606E4A20686E4990420CD1C8688007800F06D0012843D002283FD09A\n"
+":40478000032826D124E0012723E0674A90420AD1C8680C21084031D0042833D008282FD00C2816D114E0614A904227D0604A904224D05A4A90420CD1C968032080020140E9\n"
+":4047C0001CD01015091A1DD0091A19D0814200D108270220FDF740F80190504B514922684039D81300929A4235D1002F0CD0022F0DD0042F12D0082F1CD113E00027E8E718\n"
+":404800000227E6E70427E4E7FDF766FA08E00868C00601D5474805E0474803E0FDF77CFA002873D0626851005118814202D81103814201D2012569E0010E060250080023BD\n"
+":4048400030185941FBF7BAFE032109023B4A411A914259D9EEE7E26982422DD13B0000F0F7F80906080B24192424241F2400019812E0FDF741FA0FE008686168C00602D50F\n"
+":4048800048082F4A01E02F4A48088018FBF76CFE86B20BE0FDF740FA616840004A08F4E76168012248081204EFE70125310909013007400F084327E03B0000F0C9F80907A4\n"
+":4048C0000A0D061D060606290600B3E7FDF704FA14E0FDF711FA11E008686168C00602D54A08144801E014484A081018FBF73CFE81B20098C16009E0FDF70EFA61684A087A\n"
+":404900008018FBF731FE80B22168C8602846FEBD61684A08E9E70000F369FFEF00480040003801404010024000440040004C00400050004000093D000024F400FFFC0F00E2\n"
+":4049400000127A000048E8016921095C212901D00220704702464032518A002912D0012381681B03994202D10169002915D0C16C4B1CC364006809788162508A401E508215\n"
+":404980000020704701680A6880239A430A6000680168402211430160F2E7C16C03680988C905C90D9962C16C891CC164E5E7FFB581B017460E4604460A9D1DE0681C1BD01C\n"
+":4049C000002D05D0FCF748FB0499401AA84213D920680168FF22A1329143016020688168490849008160202060346072A07200202072032005B0F0BD2068C16930468843CA\n"
+":404A000004D00020B842D9D00020F3E70120F9E710B50248FDF740FE10BD0000D80E002010B50248FDF7BAFF10BD0000480F00200FB410B503A9044B044A029800F024F859\n"
+":404A400010BC08BC04B01847D95C0008A400002030B47446641E2578641CAB4200D21D46635D5B00E31830BC184702E008C8121F08C1002AFAD170477047002001E001C100\n"
+":404A8000121F002AFBD17047FFB591B00F460546002606E025280AD0149A139990476D1C761C28780028F5D1304615B0F0BD002400940121F34A029400E004436D1C2B788E\n"
+":404AC0000846203B98401042F7D128782A280ED0022128780246303A092A15D8009A0A235A43303A80180C436D1C0090F1E701CF0090002805DA01204003044300984042E4\n"
+":404B00000090022004436D1C28782E2815D10420044368786D1C2A280AD101CF6D1C02900BE002990A225143303940186D1C02902878014630390929F3D928786C2810D0A7\n"
+":404B400006DC4C281AD068280ED06A2817D104E0742813D07A2812D110E00120400504430CE00121090501E0032109050C436978814203D10120000524186D1C6D1C28787E\n"
+":404B800003906E281ED00CDC632831D004DC00288AD0582811D1B2E064287BD069280CD178E073282DD004DC6F2870D0702804D1A7E075286CD078286BD0149A139990474F\n"
+":404BC000761C62E06002400F022807D003280AD0042838680AD006603F1D56E03868F11706604160F8E738680680F5E70670F3E73878694608740020487404A80390012095\n"
+":404C000003E0386803900020C0433F1D61070FD5002101E00199491C029A0191914213DA8142F7DB019A0399895C0029F2D10BE0002101E00199491C01918142FADB019A56\n"
+":404C40000399895C0029F5D101990098139A401A00902146149B00F03BF901998019461807E0039803990078491C0391149A139990470198401E0190401CF2D12146149BB3\n"
+":404C8000139A009800F014F986196D1C09E741E033E034E00A200021049005916002410F022905D001CFC2179446032905D007E0FF1DFF08FF0003CF06E000B2C217944681\n"
+":404CC000042902D140B2C1178C4600226146944506DA0A460021404291418C462D2102E0210504D52B216A461176012103E0E10701D02021F7E7019154E00A200BE0102065\n"
+":404D000009E01020049000210420044308200591029003E008200021059104906002410F022905D001CF00229446032906D006E0FF1DFF08FF0003CF8C4603E080B2042926\n"
+":404D400000D1C0B20021019121072BD50399702906D0049A1021059B4A401A4305D00EE040216A461176012108E06146014306D030216A4611760399517602210191049A50\n"
+":404D80000821059B4A401A430CD16146014301D1610707D530216A461176012101910299491E02910399582904D037A103910FA90F910DE039A1F9E76146059B049AFBF761\n"
+":404DC000FDFB039B8C469B5C0F9A521E0F92137061460143F0D10F9807A9081A20300390600704D5012000048443029801E0012002900399884201DD401A00E000204118BE\n"
+":404E00000290019809180098401A0090E00306D42146149B139A009800F05AF886190020049008E006A9085C149A139990470498401C761C049001998842F3DBE0030CD5B7\n"
+":404E40002146149B139A009800F042F8861904E0149A302013999047761C0299481E02900029F5DC08E00F980F990078491C0F91149A13999047761C0399481E0390002955\n"
+":404E8000F1DCFBE60928010030313233343536373839616263646566000000003031323334353637383941424344454600000000F8B5044600251E461746880404D405E0E8\n"
+":404EC00039462020B0476D1C641EF9D52846F8BDFFB50446002581B01E46C80301D5302700E02027880404D505E038460399B0476D1C641EF9D5284605B0F0BD70B50D46AD\n"
+":404F0000002812D001780446432903D015A0FFF78FFD0AE00221A01C00F0C8FE21790246914204D017A0FFF783FD022070BD22480178052901D0214A1170617801706188A9\n"
+":404F40000802090A084381B2012901D9012100E000214018801C2880194901200870002070BD000020496E76616C6964205369676E617475726520307825303278202121A9\n"
+":404F8000200A0D0020476976656E2020435243203D2030782530327820213D2043616C63756C6174656420435243203D20307825303278200A0D0000650000206400002079\n"
+":404FC000660000207CB50546C8220120019200900A4602232946782001F0D8F9041E04D0294602A0FFF724FD20467CBD204572726F722052656164696E6720726567697348\n"
+":40500000746572202578202121200A0D00000000FEB5CF4E0021B08D6A4691800D22920103465343CC4CCB4FCB4A1C19D2583B46396825791B79914201D1AB4204D0C7A078\n"
+":405040000095FFF7F5FC80E1012B0BD1B968E268914202DCA368994206DAD0A0A368FFF7E7FC72E10920FEBD7821F0854843841920460A467C30B749FBF7D0FACD4BE26F21\n"
+":40508000B348D11A40309A4277D021DCCA48B04D111A2035824265D00FDCC849501A8A4249D005DCC64810182DD0012826D136E00A287AD00E2821D160E00227C14801291D\n"
+":4050C00074D0022973D0072972D0082916D13DE09F4D603523296CD008DC01296AD0072969D0082968D00C2908D1F2E025296ED029296DD02C296CD030296BD0B249B3A0C6\n"
+":40510000FFF796FCAEE7803420790102684681800720000300F0B0FB2079687413E1803420794006410C68468180AE4800F0A4FB2079A87407E18034207901026846818075\n"
+":40514000A94800F099FB2079E874FCE080342079010268468180A4480A3000F08DFB20792875F0E0803420790102684681809F4800F082FB20796875E5E075E0803464212A\n"
+":405180006068FBF707FA0007050C08036421FBF701FA0105090D2943684681809248001D00F06AFBA088F086CDE006E03FE020E014E078E05FE092E097E0803460680028B4\n"
+":4051C00009D08B496846818051200002B7E05FE0A2E08EE06BE086490839F3E78034A08881B268468180834800F046FBA0887087A9E001A90646FFF7E5FE80346068002810\n"
+":4052000002D001280BD104E0694688883843888005E068468088C107C90F6846818068468188304600F028FB207928778BE001A90646FFF7C7FE80346068002802D0012854\n"
+":405240000AD105E06946888801210843694602E0694688883840888068468188304600F00BFB207968776EE0803421798177606800F064FB67E0817F012903D08034A1880B\n"
+":40528000018460E08034A188018400F03BFC5AE0807F022859D1803460687066A978606800F0D8FB4FE080342079A8704BE080345148616800F010FB50486168FBF76AF98F\n"
+":4052C0000006010C4C48801F00F0D6FA6068F06639E080346068306400F0D2FC02E080346068706400F04CFC2DE080346068B064F8E780346068072801DD083800E00830DC\n"
+":40530000000369468880684681883748801D00F0B3FA6068306716E080346168022914D8334E2736002903D18021304600F0A4FA6068022801D0002803D18121304600F013\n"
+":405340009BFA207928760020FEBD0220FEBD000014190020642D0020588400080A0D204374726C2049442030782530387820213D20307825303878206F72204374726C2060\n"
+":40538000547970652030782530327820213D20307825303278200A0D000000000A0A0D202564203E20256420203C202564200A0A0D00000001099A001309980002099800D6\n"
+":4053C00000F767FF0C1000000E14020825733A20756E6B6E6F776E206374726C2069642E0A0D0000DA52000006700000065000005F1100000A5100002820000040420F0063\n"
+":40540000F0B585B000206946039008810A240125042303AAD82178200095019400F0B6FF34A00399FFF704FB39483A4F007C002801D0142100E01221384600F01DFA3548F1\n"
+":4054400001211C3800F018FA324830211E3800F013FA012605217603C901304600F00CFAFF21E131B01C00F007FA2A480F218902103800F001FA2849284800F0FDF931460D\n"
+":40548000701000F0F9F9042303AA682178200095019400F07BFF22A00399FFF7C9FA02A90620FFF78FFD6846018926A0FFF7C0FA02A92B48FFF786FD6846018929A0FFF75B\n"
+":4054C000B7FA274802A9801CFFF77CFD684601892BA0FFF7ADFA02A93846FFF773FD684601892EA0FFF7A4FA00F066FC002005B0F0BD00000A0D204C696E652074696D65AB\n"
+":40550000203D20307825303478200A0D000000003419002030200000FF0F0000465000000A0D2048494E46204D495049204672657175656E6379203D2030782530347820EA\n"
+":405540000A0D00000A0D20426F6F7420537461747573203D20307825303478200A0D000038600000204146204D49504920436C6B204D53423A203078253034780A0D000064\n"
+":40558000204146204D49504920436C6B204C53423A203078253034780A0D0000204D495049204C616E6573203A203078253034780A0D0000FEB5704C704F20462038028D89\n"
+":4055C00018204243BE68FD6839683869237C7F68002BBC4630D06A4B9A582346203B1F8D18235F439646664B31E0DF88BE4235D0D8889A8800920290634601967246614829\n"
+":40560000FFF716FA16E059898D4202D1998988422AD05DA00CE0D9898D4223D859898D4220D3198A884202D8998988421CD25EA0FFF7FEF90220FEBD514B90339A584E4B78\n"
+":405640009646203B1F8D18235F434D4B9033FB187145CDD19F88BC45CAD1C6E7197A0129D9D1D0E759A0E3E74348142243491438FAF7D4FF404D5E48203DE968C1421BD12A\n"
+":4056800030215C4800F0F8F80F262969F6017F228F1B0123D2055848B1425CD0574E0FDC8F1B17D0B7420FD12D2669693601891B15D0F0291ED118E051A0FFF7B9F907E0F3\n"
+":4056C000BE1B4ED0202E52D057A06A69FFF7B0F90920FEBDC26002616B84002009E05C49C26001616B84237004E0C26002616B84022020703F480121801C00F0BDF80124B5\n"
+":40570000640366102146304600F0B6F8287E0006010C38480E3000F0AFF8288A81B2204600F0AAF8A88A81B2A01C00F0A5F800F0A7FA00F025FA10482030807F00F0FEF84B\n"
+":4057400044A06A692969FFF773F92146304600F093F80020FEBD3E49C26001616B840320C7E73B49C26001616B840420C1E7C26002616B840520BCE734190020502D002077\n"
+":40578000388300084C150208496E76616C6964204672616D652052617465202D2044495343200A0D00000000496E76616C6964204672616D652052617465202D20434F4EAB\n"
+":4057C00054206D696E200A0D00000000496E76616C6964204672616D652052617465202D20434F4E54206D6178200A0D00000000ABA6A9A6122000009000002080020000FA\n"
+":405800005468697320666F726D617420307825303878206973206E6F7420737570706F72746564200A0D000020576964746820256420486569676874202564206973206E3B\n"
+":405840006F7420737570706F72746564200A0D00BE9FAA3F204368616E676564204672616D652053697A6520746F2025642078202564200A0D0000003EB5044668460181A1\n"
+":40588000C821002001910090022302AA2146782000F07CFD030005D068460289214602A0FFF7C6F800203EBD4572726F722057726974696E6720726567202578203D2030C5\n"
+":4058C00078253034782020657272203D20307825303278200A0D00003EB505460291C821002001910090042302AA2946782000F04DFD040007D00346294604A0029AFFF772\n"
+":4059000097F820463EBD00203EBD00004572726F722057726974696E6720726567202578203D203078253034782020657272203D20307825303278200A0D0000FEB5074629\n"
+":4059400000253948394C3A4E0295002F04D0022F02D0012F53D065E02C21FFF78DFF40212046FFF789FF304800213430FFF784FF2D4800213630FFF77FFF01242A48A40307\n"
+":4059800021463830FFF778FF274821463A30FFF773FF284C022F05D1204660308178606E00F058F823482449203000780300FFF74FF806041E04202224081D48001FFFF797\n"
+":4059C0008BFFE06E02900A200190042302AA31460095782000F0DAFC1848E16EFAF7C4FD0006010C1248801FFFF746FF1AE01449E3E71449E1E71449DFE71449DDE72021D2\n"
+":405A0000FFF73AFF00212046FFF736FF104C08482146001FFFF760FF21463046FFF75CFF00F070F80020FEBD02500000E452000028200000141900201534000040420F00A6\n"
+":405A4000102700004D3A0000CB660000828B0000B08F0600F8B50C462749884249D80104264F0E0EC5B269463846FFF7ABFA694608887911084381B23846FFF7FDFEB60842\n"
+":405A80006408301B00B269460880002800DA002008800006010C1A48FFF7EEFEAD08281B00B269460880002800DA002008800006010C1348801CFFF7DFFE301900B2694633\n"
+":405AC0000880402800DD402008800006010C0C48001DFFF7D1FE281900B269460880402800DD402008800006010C0548801DFFF7C3FE0020F8BD0000FFFF0000102000009A\n"
+":405B0000365000007FB5002419480394008C642148430A250290042302AA164901950094782000F033FC042302AA134978200195009400F02BFC01200090042303AAE82189\n"
+":405B40000195782000F022FC0C480299FAF70CFD074940398969814200D208460006010C05480838FFF788FE002004B070BD0000541900200C5000002820000040420F0083\n"
+":405B8000F8B53B48006CFAF7F2FD3A4D00908D270446FF053846E968FAF7ABFD3649FAF76BFD2146FAF7A5FDFAF7E8FD304C06B24034E68138462969FAF79BFD2E49FAF730\n"
+":405BC0005BFD0099FAF795FDFAF7D8FD05B228482582E121406C0901FAF7DCFC074601208003FF21801B6931FAF7D4FC01460120794340030F181E48A781E121806C090101\n"
+":405C0000FAF7C8FC009001208003FF21401B6931FAF7C0FC60820099484301214903081AF10F891949107A1AA082E282EA0F52195210831A6383791821838018A083E18A6A\n"
+":405C40000E48FFF719FE0D48618B801CFFF714FE0A48218B001DFFF70FFE0848A18B801DFFF70AFE0A2000F03FFF0020F8BD000014190020900000200000C842042000004F\n"
+":405C800009481921027849012038012A06D1026C1346FF3B0D3B01D1521C0264026C8A4200D9016400207047341900200346002010B50246002B05D0002903D04B2464014A\n"
+":405CC000A14205D9002010BD9C5C6040521C92B28A42F9D310BD000013B5044B012269460348FCF7E6FD00981CBD0000FFFF0000D80E0020F8B51D461446002825D0002918\n"
+":405D000023D0002C21D04B267601052903D1114A1278002A09D0224600F08AFF07000ED00DA0FEF785FE3846F8BD1946FFF7E6F8070001D012A0F4E70020208002E0208881\n"
+":405D4000B04202D82888B04201D90220F8BD0020F8BD0000660000204572726F72206F6363757272656420696E2070726F636573735F636F6D6D616E64200A0D000000009D\n"
+":405D80004572726F72206F6363757272656420696E20616E616C797A655F6C656E6774685F7061636B6574200A0D0000EFF30580002800D001207047F0B5304A0024547426\n"
+":405DC0000A2090741020D0741075012513465575DC20203BD8866A20186415762848588721461177104651772030FF26817739360684064620363176224F5F661827B77046\n"
+":405E00005964214FDF66996408271F670B2711703F045F626F038781C182AB03038341838383C381038241828782F576174E40380D21234689014B437821F7586143091893\n"
+":405E4000CF679B191F7980310F70012F12D01F7A0F72DB68CB60641C282CE9D3167C0C4C0521FF22C901E132C4604B2310302EC00020F0BD1B694B60EDE70000341900203B\n"
+":405E80009411000080800000E02202005884000855595659002808D00C490D4A8978002905D00320D0750020704702207047417803780802184341BA06480023022903D032\n"
+":405EC00001210174D375EEE70374FBE790000020502C00203419002070B5104CA078102808D00F49112814D0122814D001208871002070BD0B4D0121286800F041FE0028D8\n"
+":405F000001D0012070BD0920A070286800F012FEEEE70320EBE70820E9E7000090000020502C002084000020FEB500220446684602811646002907D003200880002C41D033\n"
+":405F40002578FF2D02D004E00220FEBD1E48057825701E498878FF280CD00F23002822D0122820D0F027112820D0C00621D46770A27022E0164869460881012000900190AF\n"
+":405F8000022302AA0621782000F000FA060003D010A0FEF74DFD15E068460089000A60706846008908E06370F12005E06370A77003E08888010A6170A0700E48405D0028CD\n"
+":405FC00000D006463046FEBD6400002090000020F10F0000204572726F722052656769737465722052656164204572726F72200A0D000000502C002030B500290AD0244BA1\n"
+":406000009B78102B0CD02348D90605D401210174084630BD022030BD03210174084630BD0025282802D30D800A2030BD78235843194BC318184680300478012C02D0022C44\n"
+":4060400015D001E009240C80002A1ED0D96F090E1170D96F090C5170D96F090A9170D96FD170017811710178012903D00DE00D80092030BD4168090E51714168090C917163\n"
+":406080008188090AD17100791072002030BD000090000020502C00201419002070B50024002905D0282805D3002008800A2070BD022070BD0D239B01344D584343191E7949\n"
+":4060C000012E02D0022E05D101E0152601E09E890A360E80002A56D02958090E11702958090C5170295A090A9170285CD070187910711879012802D0022844D12CE09868A3\n"
+":40610000000E50719868000C90711889000AD071187A1072D868000E5072D868000C90729889000AD072187B10731869000E50731869000C9073188A000AD073187C1074B9\n"
+":406140005869000E50745869000C9074988A000AD074187D107516E0187A5071D868000E9071D868000CD0719889000A1072187B507205E0181920301119007C8872641C84\n"
+":40618000D868A042F6D8002070BD000058840008F8B500271646002905D0282805D3002008800A20F8BD0220F8BD0D22920150431E4A851828792C46A034012802D00228A4\n"
+":4061C00009D11CE0207E032801D0232002E0A07E400124300880002E25D02946983120223046FAF71BFA3046217E2030017000214170617E8170217E032905D013E0A8897A\n"
+":406200000A3008800920F8BDA17EC17008E078012918801920222430BB31FAF7FFF97F1CA07EB842F3DC0020F8BD0000588400087CB50024054600291ED002200880002DFF\n"
+":4062400018D0C82101200191009002230B4A0021782000F09BF8040004D009A0FEF7E8FB0D484470054E0DA0B61FF188FEF7E0FBF088288020467CBD02207CBD9600002004\n"
+":406280004572726F72204348495020494420526561640A0D00000000502C002043484950204944203D20307825303478200A0D0030B500290AD0334B18241D7C0023444381\n"
+":4062C000002D28D0062828D22F482BE0022030BD0D2500E015250D80002A51D00159090E11700159090C5170015B090A9170005DD0709888000A107118795071D888000A06\n"
+":4063000090719879D071187A1072187A01280ED0022835D116E0062802D30B800A2030BD1948903023181D7A012DD3D1D0E75889000A5072987A90729889000AD072187B55\n"
+":4063400010731DE05889000A5072987A90729889000AD072187B1073D889000A5073987B9073188A000AD073187C1074588A000A5074987C9074988A000AD074187D1075BC\n"
+":40638000002030BD3419002038830008FFB585B01D460E980F9B14460E4601280DD8042D0BD8002C09D0604A00215164320AF1B2002872D0012860D102E0022009B0F0BDA2\n"
+":4063C0006846027141710093022301AA56480599FBF718F807001FD05348FAF743FF0446059800903346224639465048FEF720FB4D4D28680168490849000160012000F047\n"
+":4064000073FB286801680122114301601EE0042C7ED0032F7CD081E000200190029003904348092101702B4601AA3F480599FAF7ABFF07000DD03C48FAF714FF044600969E\n"
+":40644000024639463B48059BFEF7F2FA202C67D0DDE700F0E8FB364E02E0012000F044FB30780928F9D0012D04D0022D06D0042D58D108E068460079207053E068468088F6\n"
+":4064800040BA20804EE00198694600BA000AC97900020843206045E0FFE720686C4622716171012D04D0022D04D0042D0DD105E0A0710AE0020AA271E07106E0020EA271E2\n"
+":4064C000020CE271020A227260720093AB1C01AA15480599FAF796FF040023D01248FAF7C1FE05460598009033462A4621461248FEF79EFA0C4E306801684908490001603D\n"
+":40650000012000F0F1FA306801680122114300E006E00160202D03D0032C01D005204DE707204BE7002049E7FC0D0020A01502089000002048160208F4150208F8B5114D80\n"
+":40654000114CA878002807D0122805D0112817D0082020710820F8BD0C4E0121306800F00FFB0127002805D009A0FEF761FA27710120F8BDAF70306800F0DCFA0020F8BDEE\n"
+":406580000320E6E790000020502C0020840000200A0A0A0D2053656D2057616974204661696C6564202121200A0D000070B5104C1049A078112808D00725102809D012285E\n"
+":4065C00007D0002805D04D750AE001204875082070BD094E0121306800F0D2FA002801D0072070BDA570306800F0A4FA002070BD90000020502C002084000020FEB5054658\n"
+":406600000F46002069461C460881002A0BD01F4901268B780321102B0AD01D48DA0604D486740120FEBD0220FEBD81740320FEBD012F05D0022F05D0042F05D01080F2E75C\n"
+":40664000118003E0042000E006201080002C1AD011882046F9F7FBFF280A2070657000963B4602AA294678200196FFF78FFE050004D008A0FEF7DCF92846FEBD68460089C7\n"
+":40668000010AA170E0700020FEBD000090000020502C0020204572726F722052656769737465722052656164204572726F72200A0D000000F8B504462148224E80781028BB\n"
+":4066C00007D0C00602D401207074F8BD03207074F8BD607821780002084345BA282D02D30A207074F8BDA01CF9F7BCFF00BA000A61790002144F08433860A07938710128CF\n"
+":4067000002D009207074F8BDE01DF9F7ABFF00BA000AA17A00020843B8600C480C4C85850121206800F02CFA002801D00720F8BD034805218170206800F0FCF90020F8BDFB\n"
+":4067400090000020502C0020642D00201419002084000020F8B504000AD0284E2848B17810290BD0C90605D4012141720846F8BD0220F8BD032141720846F8BD61782278D9\n"
+":40678000090211434DBA0A21062D02D341720A20F8BD1C4F0121386800F0F2F9002801D00720F8BDA01CF9F75DFF00BA010A60790902014314480160E179A279090211434B\n"
+":4067C00049BA4160617A227A0902114349BA8160E17AA27A0902114349BAC160617B227B0902114349BA0161084805850420B070386800F09FF90020F8BD00009000002039\n"
+":40680000502C002084000020502D00201419002070B50E4C0325A078102808D0C1060C4802D40121017209E00572032070BD094E0121306800F0A4F9002801D0012070BD44\n"
+":40684000A570306800F076F9002070BD90000020502C00208400002070B50F4CA078102809D0C1060D4802D40121C1710AE00321C171084670BD0A4D0121286800F080F9B3\n"
+":40688000002801D0012070BD0220A070286800F051F9002070BD000090000020502C00208400002070B50C4C0825A078112803D00A488575082070BD094E0121306800F0E8\n"
+":4068C0005FF9002801D0072070BDA570306800F031F9002070BD000090000020502C00208400002070B5224E0446B1782148102909D0C90603D40121C174084670BD0321D0\n"
+":40690000C174084670BD61782278090211431A4D49BA6980A1782972012907D0022907D0042914D00221C174084670BDE07804E02079E1780002084340BA104C686001212C\n"
+":40694000206800F01DF900280AD0072070BDE01CF9F788FE00BA000AA17900020843ECE70620B070206800F0E5F8002070BD000090000020502C002014190020840000209E\n"
+":4069800092B03F493D488860002080F3108862B6FAF7E8FEFDF7B8FCFDF764FAFDF766F9FDF7BAF9FDF7E2F9FDF72AFAFDF706FA3448C26A02210A43C262C06A324C08408B\n"
+":4069C000009008200D9001200E900320002510900F950DA92046FAF773FA002208212046FAF734FB2948C069009029480368C12228492948FEF71CF828A22BA12DA0FEF780\n"
+":406A000017F8F9F743FF1F4C40342069400002D50120FAF78FF920690121C90508432061FDF73CFA2B4C20222B486169F9F7F6FD0520A0810BA80B9500F063F8206201212C\n"
+":406A40000CA80C9500F062F8124960621422083101A8F9F7E3FD002101A800F0CDF80D49A06114221C3106A8F9F7D8FD002106A800F0C2F8E06100F03FF8FEE700040008D4\n"
+":406A800000ED00E000100240000400500020024000000140E0810008EC14020831343A30323A3438000000004665622032312032303230004275696C642044617465206123\n"
+":406AC0006E642054696D653A202573202573200A0D00000060000020BC18002001460020842900D0C81C704710B5002800D1012000F0EEFE002010BD10B500F057FF00206E\n"
+":406B000010BD10B5012000F0D5FF10BD10B5012901D0002010BD03220021012000F0DCFF040004D000231A46194601F0C9F8204610BD000038B5002405460094FFF736F97E\n"
+":406B400000280FD06946284601F046F9012801D0FF2038BD009800280DD0012007490007486008E000231A461946284601F0A8F8012800D0FF24204638BD000000ED00E0E9\n"
+":406B800038B5054600200090002D11D00024481C10D0002900D00C46FFF708F9002814D06A460021284601F051F9012815D104E0802038BD0024E443EEE7009800280ED069\n"
+":406BC000012008490007486009E0002322461946284600F0A3FF012801D0FF2038BD002038BD000000ED00E010B501F0BDF9012801D000F04DFF10BD3EB5044608200D468A\n"
+":406C0000205EFFF76BFF02A901910090208A2B4682B22168606801F07FF9012801D000203EBD02983EBD10B500F046FE002010BDFFB5044689B000276846878007821D4611\n"
+":406C400016460297002C11D00A98C4420ED02178432903D0F2A0FDF7EBFE07E0F84861780278914205D0F7A0FDF7E2FE02200DB0F0BD0A980B00C01E0390F948808807902E\n"
+":406C80000A982218F748203A0078FDF7E1FE180D2A67AAFDFCFBFAF9F8D8F7F7F7F7F7F6F5F4F3F2F1F0EFF7012802D0022804D085E201204003608029E0EB4902980A5CBE\n"
+":406CC000201882700298401C02902028F6D32021A01CFEF7EBFF029961188870CF7024203AE0012802D002281DD068E201A90020FFF79EFA002804D0DCA0FDF799FE6846E7\n"
+":406D00000782684680880102000A014361800221A01CFEF7CBFF2071677106203080D1490220087079E101A904A8FFF781FA0290002804D0CDA0FDF77BFE684607826846E3\n"
+":406D4000008A010AA170E0700221A01CFEF7AEFF2071029860710620308072E2012802D0022826D06DE20592D17F0398029181B2A01CFEF79BFF0299814207D005980A9904\n"
+":406D8000C27FC2A0C91EFDF753FE39E0E178A27808021043B24940BA8880002201A9FFF787FA40E0684681880802090A0843608081E0A21C01A90798FFF77AFA94E06946C7\n"
+":406DC0008988A01CFEF772FF69468988611888706946898802986118C87069468888001D71E0012802D0022823D02AE2D17F0398029181B2A01CFEF759FF0299814207D0E4\n"
+":406E0000ADA0FDF715FE6846878002200290C9E7E178A27808021043914940BA8880002201A9FFF73BF902900028BBD068468780B8E7A21C01A90798FFF730F954E0012827\n"
+":406E400002D002284BD0FCE1D17F0398029181B2A01CFEF72BFF0299814216D096A0FDF7E7FD68468780022002901EE0D7E1D3E1CFE1C4E1B5E166E156E18EE0E3E17AE078\n"
+":406E800076E072E06EE041E03AE0E178A27808021043734940BA8880002201A9FFF778F90290002801D068468780684680880102000A014361800221A01CFEF7F7FE20715E\n"
+":406EC000029860710620308066480178012912D002298AD068468088002886D06FE1A21C01A90798FFF754F90290002800D166E76846878063E76946898800297ED1A0E13B\n"
+":406F0000FFF71CFB57480770378056E154484088002810D070A0FDF78BFDFF20A070504841880A0AE270217103216A46918002210291478004E001A9A01CFEF7F5FF029099\n"
+":406F400069468988A01CFEF7B1FE69468988611888706946898802986118C87069468888001DF9E6FEF7B8FF6AE1FFF775FC67E1FFF74EFC64E1D17F0398029181B2A01C62\n"
+":406F8000FEF794FE0299814203D04BA0FDF750FD4FE1A01CFFF7DEFB52E1012802D002283DD00CE1D17F0398029181B2A01CFEF77DFE0299814207D03FA0FDF739FD684617\n"
+":406FC00087800220029012E0E178A27808021043234940BA8880002201A9FFF70DF80290002804D043A0FDF723FD68468780684680880102000A0143618000E00BE00221CF\n"
+":40700000A01CFEF753FE207102986071CDE06946898800297CD0022101702F80CFE078E020496E76616C6964205369676E617475726520307825303278202121200A0D000D\n"
+":4070400065000020204944203D2030782530327820213D20307825303278200A0D0000008800002066000020BC1800204572726F7220696E2047657474696E672053656EE3\n"
+":40708000736F72204944200A0D00000020435243204C656E677468203D203078253032782C206F72696720637263203D20307825303278200A0D00002043524320766572E5\n"
+":4070C000696669636174696F6E204572726F72202121200A0D0000004572726F7220696E204D435520697473656C66202121200A0D0000004572726F7220696E2047657490\n"
+":4071000074696E67204374726C200A0D0000000052E0A21C01A90798FEF76EFF0290002800D10DE7494857E0D17F0398029181B2A01CFEF7BBFD0299814200D025E7A01CBF\n"
+":40714000FFF7B8FA7CE0012802D0022839D036E0D17F0398029181B2A01CFEF7A7FD0299814202D039483C380FE0E178A27808021043374A40BAD08021791170002301AA29\n"
+":40718000FFF73CFA002804D032A0FDF751FC68468780684680880102000A014361800221A01CFEF783FD20716771062030802F480178012900D12AE7077005202880002004\n"
+":4071C00055E52348A31C017801AAC088FFF716FA02900028A5D01FA0FDF72AFC68468780AEE6D17F0398029181B2A01CFEF75EFD02998142A2D1A01CFFF774FB20E01CA0FD\n"
+":40720000FDF716FC204921A0FDF712FCF9F7D0FC16E0FFF7CBF913E0FFF744FB10E0D17F0398029181B2A01CFEF740FD0299814203D007491D48488002E0A01CFEF72AFE90\n"
+":4072400037800A48B8E7092011E50000F4700008880000204572726F7220696E205265616420495350200A0D00000000660000204657205570647420496E6974696174651C\n"
+":4072800064200A0D00000000B10B0008204669726D776172655F757064617465203D20307825303878200A0D000000000A200000F8B5134C0F46E66805462068001D00F016\n"
+":4072C00069FA681C07D1002F05D021680D48091D00F098FAF8BD2068751945602168B54204D2A06B091D00F075FAF8BD606B091D00F070FAA06A8542F7D2A562F8BD000099\n"
+":407300000C0000209C010020F8B5054600F086FA2A4CA068401CA0602068294F002803D06069002827D02CE02560A068012828D1002614207043C01900F03EFA761C072EAF\n"
+":40734000F7D31F488C3000F037FA1D48A03000F033FA1B48B43000F02FFA1948C83000F02BFA1748DC3000F027FA15488C3060631430A06305E02068E96AC06A884200D8B4\n"
+":407380002560606A401C60626864E86A2169884200D9206114214843C019291D00F032FA00F048FA6069002806D02068E96AC06A884201D200F080FAF8BD00000C000020B3\n"
+":4073C000C000002070B5114E114C18E000F014FB3068002817D000F09BFE00F01FFAF068C568281D00F0D6F9A068401EA0606068401E606000F01EFA284600F056F860684B\n"
+":407400000028E3D170BD00F083FEF8E7880100200C00002010B5026C0C46002A0CD0C1688B18C36041688B4201D2194601E00168C1602046F9F7F2F810BDF8B5856B17468A\n"
+":4074400004460026026C002A11D0002F19D0E068F9F7E4F8E168206C091AE1602268914202D26168081AE060022F17D019E02068002816D1606800F0E5FD064600206060F4\n"
+":407480000FE0A068F9F7CAF8216CA0684018A0606168884205D32068A06002E0002D00D06D1E6D1CA5633046F8BD10B50446006B00F0CEF9204600F0CBF910BD03210E488B\n"
+":4074C0008902420705D0C01DC0080B4AC000821A891A0A4A0023411809C20839C908C900183A11604B600B600B1A0AC093600120C0075360D0607047B001002058000020EE\n"
+":40750000044CFFF75FFF20680128FAD900F0D4F9F7E70000C0000020FFB581B097000C9C0E460A9DA5223946206BF9F789F8206B3F1FC019C708FF00780701D072B6FEE75A\n"
+":407540002218315C20321175315C002902D0401C1028F5D32046403000260090C670072D00D30625E5622665201DE56400F02FF92046183000F02BF924610720401B646295\n"
+":40758000A0616665009806763846049A019900F0F1F820600B98002800D0046005B0F0BD30B5114900E011460A688242FBD34B685C18844203D140681818486008464368C7\n"
+":4075C0001C18944209D1084C103C2468A24209D052689A1842600A6812680260814200D0086030BD0460F9E75800002010B5044600F014F9A06B002804D0002400F01AF984\n"
+":40760000204610BD0124F9E70648416B0968002905D0416BC968C9684968816270470021C943FAE70C00002003480068401C72B600D0FEE7FEE7000008000020F8B5044626\n"
+":4076400000F0ECF8254640350526AE57274624370BE0606A00280AD0384600F027FD002801D000F04DF9761E76B2002EF1DC0027FF436F7100F0DEF800F0D0F80426AE5739\n"
+":407680002046103000900BE0206900280AD0009800F00CFD002801D000F032F9761E76B2002EF1DC2F7100F0C5F8F8BDF8B50546002700F0A1F9284E3068002801D1FFF719\n"
+":4076C000FDFEF06805423FD1002D3DD00835680708D06807400F0821081A4519680701D072B6FEE7002D2FD0706885422CD81A48103001460C6801E020460C466168A942F5\n"
+":4077000002D221680029F7D131688C421CD007682168016060680837411B102908D96019420701D072B6FEE741606560FFF738FF61687068401A7060B268904200D2B06006\n"
+":40774000F0680143002003C400F0E2FC780701D072B6FEE73846F8BD4800002004490868002803D00868026D521C0265086870470C00002010B50124031F24061C601B1F15\n"
+":407780001960191F024B0B60143940380A6010BD297600084368826801699A60836842685A604A68824201D182684A60002202610868401E086070470146083100224160E4\n"
+":4077C000D243C1608260016100210160704700210161704730B50B685A1C02D00246083202E0026904E02246546825689D42FAD953684B6099608A60516008610168491CB5\n"
+":40780000016030BD42684A6093688B6093685960916008610168491C0160704772B604480168491C0160BFF34F8FBFF36F8F70470800002005490868002804D0401E08608A\n"
+":4078400000D162B6704772B6FEE700000800002070B500281AD004460D4D083C6068E968084201D172B6FEE72268002A01D072B6FEE78843606000F0BFF86068696840181D\n"
+":4078800068602046FFF78CFE00F042FC70BD00004800002010B506487D21C9000068F8F763FE0449401E48610720086110BD00000000002000E000E0012004490007486077\n"
+":4078C000BFF34F8FBFF36F8F7047000000ED00E010B502000FD00948006B002801D072B6FEE700F089F800211046FFF7E1FC00F00FFC002801D1FFF7DFFF10BD0C000020DF\n"
+":4079000001490120C86170470C00002010B50C46002809D0054909681831FFF75BFF01212046FFF7C5FC10BD72B6FEE70C00002070B5040025D0154DE06A2968C96A8842C3\n"
+":407940001FD2A069002804DB28680721C06A081AA061E06A14220E4E504361698019814210D1201DFFF716FF2868C06AE0622969884200D92861142148438019211DFFF7FC\n"
+":4079800041FF70BD2868C06AE06270BD0C000020C0000020002805D003490A6A0260C9684160704772B6FEE70C0000201CB50E4800240190234680220CA100940D4800F0D7\n"
+":4079C000ABFA012803D0401C0CD172B6FEE772B600210548C9432C38816201214161C46000F03EF81CBD00003800002049444C4500000000017500080248016B491C01635D\n"
+":407A0000704700000C00002010B51348016B002902D00121C16110BD0021C16101690F4A02E0002915D0491E14234B43D358002BF7D014234B439A18536814465B68083401\n"
+":407A40005360A34201D15B685360DA680260016110BD72B6FEE700000C000020C000002010B50948016AFF22120411430162016A120211430162FFF70DFF044900200860BE\n"
+":407A8000F8F728FD002010BD00ED00E00800002010B5F8F733FD044600F076FA002803D001200349000748602046F8F72BFD10BD00ED00E010B502460021012000F00CF8D1\n"
+":407AC000041E07D00021416001600B460A46C16000F0F6F8204610BDF8B517460E46050016D0002E16D070435030FFF7DFFD04000CD020465030002E0ED0206026642046F3\n"
+":407B00000121E56300F0A6F84C2007552046F8BD72B6FEE70020E7E72460EFE7FFB5002583B0040003D00498002802D006E072B6FEE7206C002801D072B6FEE700F014FA19\n"
+":407B40000026002804D10598002801D072B6FEE7FFF764FEA76B002F26D0E56820460499FFF758FC0698002810D0E560606A002807D02046243000F099FA002801D0FFF736\n"
+":407B80009BFEFFF757FE012007B0F0BD7F1EA7632068002802D1FFF7E1FD606020690028EFD020461030E6E70598002802D0002D03D006E0FFF73EFE27E06846FFF7EAFE79\n"
+":407BC0000125FFF737FEFFF717FFFFF727FE2046403004214156491C00D1067105214156491C00D14671FFF725FE05A9684600F069F9002820460AD0FFF720FD00F088FA70\n"
+":407C00002046FFF7F3FC0028A2D00020BCE7FFF7EDFC002818D02068002806D1FFF7FEFD6068FFF785FEFFF705FE204624300599FFF76CFE2046FFF701FD00F069FA00286E\n"
+":407C400086D1FFF739FE83E72046FFF7F7FC00F05FFA7DE770B50D46040025D0FFF7DEFD216CE06B48432168411861600021A1632168A160E06B216C401E48432168411880\n"
+":407C8000E1600021C94320464030017141713038002D0BD0FFF790FD20462430FFF78CFDFFF7C8FD012070BD72B6FEE721690029F6D000F0FBF90028F2D0FFF7FDFDEFE70D\n"
+":407CC000FFB5002683B01D46040003D00498002802D006E072B6FEE7206C002801D072B6FEE7022D04D1E06B012801D072B6FEE700F03AF90027002804D10598002801D0EF\n"
+":407D000072B6FEE7FFF78AFDA06BE16B884207D3022D05D00598002817D0002E18D01BE02A4620460499FFF788FB616A002903D02046243000F0BAF9002801D0FFF7BCFD45\n"
+":407D4000FFF778FD012007B0F0BDFFF773FD22E06846FFF71FFE0126FFF76CFDFFF74CFEFFF75CFD2046403004214156491C00D1077105214156491C00D14771FFF75AFD9D\n"
+":407D800005A9684600F09EF8002806D02046FFF755FC00F0BDF90020D5E7FFF73FFDA06BE16B884210D1FFF745FD204610300599FFF7ACFD2046FFF741FC00F0A9F9002812\n"
+":407DC000A0D1FFF779FD9DE7FFF734FD2046FFF735FC00F09DF995E770B50D46040004D0206C002803D072B6FEE772B6FEE72068002804D16068002801D072B6FEE7F8F739\n"
+":407E00007DFBA26B0646E06B904219D92146403105200856521CA263421C03D0401C487101240EE0606A0028FAD02046243000F03DF90028F4D0002DF2D001202860EFE745\n"
+":407E400000243046F8F75EFB204670BDF7B582B0040003D00398002802D006E072B6FEE7206C002801D072B6FEE7F8F747FB0090A66B002E1FD020464030042545570746E7\n"
+":407E800020460399FFF7C6FA761EA663681C03D06D1C3D7101240FE020690028FAD02046103000F003F90028F4D004980028F1D001210160EEE700240098F8F723FB2046C6\n"
+":407EC00005B0F0BD70B50D4604001AD0002D1AD0FFF7A4FC0F4AD1682868431C0FD02368126A934202D062688A420ED96268891A81420AD2401A28602046FFF74BFD0024CC\n"
+":407F000004E072B6FEE772B6FEE70124FFF792FC204670BD0C000020FFB585B0164690000F9FFFF7C3FB05001AD05C20FFF7BEFB040012D0256300210E9803910197009099\n"
+":407F400002943246089B06990598FFF7E5FA2046FFF7DAF9012009B0F0BD2846FFF778FC0020C043F7E7000006484169002904D0006B002803D00020704701207047022084\n"
+":407F8000704700000C000020F8B52C4C0027206B002808D0A069401CA061E069002800D001273846F8BDE668761CE6600ED1606B0068002801D072B6FEE7606BA16B61632C\n"
+":407FC000A063206A401C2062FFF71EFBA06A86420AD3606B0068002810D0606BC068C568686886420DD2A06220681421C06A4843134908580128D0D90127CEE70020C04384\n"
+":40800000F1E7281DFFF7C6FBA86A002803D028461830FFF7BFFBE86A2169884200D920611421484306494018291DFFF7EBFBE86A2168C96A8842CCD30127CAE70C000020F4\n"
+":40804000C000002070B500210446002828D0154D2868844201D072B6FEE7206D002808D0401E2065E36CE26A9A4219D0002802D016E072B6FEE7201DFFF78CFBE06C0721DF\n"
+":40808000E062081AA061E06A2969884200D928611421484304494018211DFFF7B3FB0121084670BD0C000020C000002070B5C068C468002C0BD0204618300646FFF76AFB8E\n"
+":4080C000114D286B002804D0314610480FE072B6FEE7201DFFF75EFBE06A2969884200D92861142148430949B4394018211DFFF789FBE06A2968C96A884202D90120E86108\n"
+":4081000070BD002070BD00000C00002074010020F8B5284C0025206B2E46002808D0FFF77DFB206B401E2063206B002802D03DE072B6FEE7A168204F00291DD136E0F86831\n"
+":40814000C56828461830FFF725FB281DFFF722FBE86A2169884200D92061142148431649B4394018291DFFF74DFBE86A2168C96A884201D30120E06138680028DFD1002D13\n"
+":4081800001D0FFF741FAA569002D09D00127FFF7FBFE002800D0E7616D1EF8D10020A061E069002802D00126FFF786FBFFF742FB3046F8BD0C0000207401002000000000DD\n"
+":4081C000000000000102030406070809030406080C1018203000000000010203040000006D61696E0000000040150208914100080000000000000000000100003415020882\n"
+":408200002D340008000000000000000080000000537461727444656661756C745461736B0048414C5F4932435F536C617665547843706C7443616C6C6261636B0048414C62\n"
+":408240005F4932435F536C617665527843706C7443616C6C6261636B0048414C5F4932435F4572726F7243616C6C6261636B0048414C5F4932435F4164647243616C6C620B\n"
+":4082800061636B0048414C5F4932435F4C697374656E43706C7443616C6C6261636B0048414C5F4932435F4D656D547843706C7443616C6C6261636B0048414C5F49324361\n"
+":4082C0005F4D656D527843706C7443616C6C6261636B0048414C5F4932435F41626F727443706C7443616C6C6261636B0048414C5F4750494F5F455854495F43616C6C6274\n"
+":4083000061636B004669726D776172655F557064617465004F7074696F6E4279746550726F6700424642325F636865636B5F656E61626C6500000000555956598002E0018B\n"
+":4083400001004B00010000000000000000000000555956590005D00201006400010000000000000000000000555956590005C00301004B00010000000000000000000000A4\n"
+":4083800055595659800738040100410001000000000000000000000055595659000AA0050100260001000000000000000000000055595659200A980701001C0001000000E2\n"
+":4083C0000000000000000000555956598002E00101004B00010000000000000000000000555956590005D00201006400010000000000000000000000555956590005C003B1\n"
+":4084000001004B0001000000000000000000000055595659800738040100410001000000000000000000000055595659000AA0050100260001000000000000000000000058\n"
+":4084400055595659200A980701001C000100000000000000000000000009980001000000F1FFFFFF0F00000000000000010000000000000000000000000000000000000018\n"
+":4084800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BC\n"
+":4084C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004272696768746E65737300000000000063\n"
+":40850000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001A\n"
+":4085400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FB\n"
+":4085800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BB\n"
+":4085C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007B\n"
+":40860000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003A\n"
+":4086400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FA\n"
+":4086800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BA\n"
+":4086C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007A\n"
+":408700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039\n"
+":4087400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F9\n"
+":408780000000000000000000000000000000000000000000000000000109980001000000000000001E0000000A0000000100000000000000000000000000000000000000ED\n"
+":4087C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000079\n"
+":40880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000436F6E74726173740000000000000000EA\n"
+":4088400000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D7\n"
+":4088800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B8\n"
+":4088C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078\n"
+":408900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000037\n"
+":4089400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F7\n"
+":4089800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B7\n"
+":4089C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000077\n"
+":408A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036\n"
+":408A400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F6\n"
+":408A800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B6\n"
+":408AC0000000000000000000000000000000000000000000000000000209980001000000000000003C00000010000000010000000000000000000000000000000000000085\n"
+":408B00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035\n"
+":408B400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053617475726174696F6E000000000000CB\n"
+":408B80000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000094\n"
+":408BC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075\n"
+":408C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034\n"
+":408C400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F4\n"
+":408C800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B4\n"
+":408CC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074\n"
+":408D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033\n"
+":408D400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F3\n"
+":408D800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B3\n"
+":408DC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073\n"
+":408E00000000000000000000000000000000000000000000000000000C09980001000000000000000100000001000000010000000000000000000000000000000000000081\n"
+":408E400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F2\n"
+":408E800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057686974652042616C616E636520417515\n"
+":408EC000746F00000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008D\n"
+":408F00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000031\n"
+":408F400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F1\n"
+":408F800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B1\n"
+":408FC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071\n"
+":409000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030\n"
+":4090400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F0\n"
+":4090800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B0\n"
+":4090C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070\n"
+":40910000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002F\n"
+":40914000000000000000000000000000000000000000000000000000100998000100000028000000F4010000DC000000010000000000000000000000000000000000000043\n"
+":4091800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AF\n"
+":4091C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047616D6D6100000000000000000000008C\n"
+":40920000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D\n"
+":4092400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EE\n"
+":4092800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AE\n"
+":4092C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006E\n"
+":40930000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002D\n"
+":4093400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ED\n"
+":4093800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AD\n"
+":4093C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006D\n"
+":40940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002C\n"
+":4094400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EC\n"
+":409480000000000000000000000000000000000000000000000000001A09980001000000E80300001027000094110000010000000000000000000000000000000000000028\n"
+":4094C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006C\n"
+":4095000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057686974652042616C616E63652054658B\n"
+":409540006D706572617475726500000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5\n"
+":4095800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AB\n"
+":4095C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006B\n"
+":40960000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002A\n"
+":4096400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EA\n"
+":4096800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AA\n"
+":4096C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006A\n"
+":409700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029\n"
+":4097400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E9\n"
+":4097800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A9\n"
+":4097C0000000000000000000000000000000000000000000000000001B09980001000000000000007F0000001000000001000000000000000000000000000000000000001C\n"
+":409800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028\n"
+":4098400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053686172706E6573730000000000000031\n"
+":409880000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000087\n"
+":4098C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068\n"
+":409900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027\n"
+":4099400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E7\n"
+":4099800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A7\n"
+":4099C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000067\n"
+":409A00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026\n"
+":409A400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E6\n"
+":409A800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A6\n"
+":409AC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066\n"
+":409B00000000000000000000000000000000000000000000000000001309980001000000010000006400000001000000010000000000000000000000000000000000000009\n"
+":409B400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E5\n"
+":409B80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004761696E00000000000000000000000026\n"
+":409BC0000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044\n"
+":409C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024\n"
+":409C400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E4\n"
+":409C800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A4\n"
+":409CC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064\n"
+":409D00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023\n"
+":409D400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E3\n"
+":409D800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A3\n"
+":409DC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063\n"
+":409E00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022\n"
+":409E400000000000000000000000000000000000000000000000000001099A000100000000000000020000000000000000000000000000000000000000000000000000003B\n"
+":409E800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A2\n"
+":409EC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004578706F73757265204175746F0000004E\n"
+":409F00000000000000000000000000000000000003000346756C6C20464F56204175746F204D6F646500000000000000000000000000004D616E75616C204D6F646500001C\n"
+":409F400000000000000000000000000000000000000000524F49204261736564204175746F204D6F646500000000000000000000000000000000000000000000000000009A\n"
+":409F800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A1\n"
+":409FC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061\n"
+":40A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020\n"
+":40A0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0\n"
+":40A0800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A0\n"
+":40A0C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060\n"
+":40A10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001F\n"
+":40A1400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DF\n"
+":40A1800000000000000000000000000000000000000000000000000002099A000100000001000000CC100000380100000100000000000000000000000000000000000000E2\n"
+":40A1C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005F\n"
+":40A200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004578706F73757265204162736F6C7574C9\n"
+":40A240006500000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058\n"
+":40A28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009E\n"
+":40A2C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005E\n"
+":40A30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001D\n"
+":40A3400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DD\n"
+":40A38000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009D\n"
+":40A3C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005D\n"
+":40A40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C\n"
+":40A4400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DC\n"
+":40A48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009C\n"
+":40A4C0000000000000000000000000000000000000000000000000000D099A000100000064000000200300006A0000000100000000000000000000000000000000000000B9\n"
+":40A50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001B\n"
+":40A540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005A6F6F6D00000000000000000000000036\n"
+":40A58000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007A\n"
+":40A5C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005B\n"
+":40A60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001A\n"
+":40A6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DA\n"
+":40A68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009A\n"
+":40A6C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005A\n"
+":40A700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019\n"
+":40A7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D9\n"
+":40A780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000099\n"
+":40A7C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059\n"
+":40A8000000000000000000000000000000000000000000000000000008099A0001000000C01CF6FF40E309000000000001000000000000000000000000000000000000006E\n"
+":40A8400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D8\n"
+":40A8800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050616E0000000000000000000000000079\n"
+":40A8C0000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000037\n"
+":40A900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017\n"
+":40A9400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D7\n"
+":40A980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097\n"
+":40A9C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057\n"
+":40AA00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016\n"
+":40AA400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D6\n"
+":40AA80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000096\n"
+":40AAC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056\n"
+":40AB00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015\n"
+":40AB400000000000000000000000000000000000000000000000000009099A0001000000C01CF6FF40E309000000000001000000000000000000000000000000000000002A\n"
+":40AB80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000095\n"
+":40ABC00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054696C74000000000000000000000000B8\n"
+":40AC000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F3\n"
+":40AC400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D4\n"
+":40AC80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000094\n"
+":40ACC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054\n"
+":40AD00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013\n"
+":40AD400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D3\n"
+":40AD80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000093\n"
+":40ADC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053\n"
+":40AE00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012\n"
+":40AE400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D2\n"
+":40AE80000000000000000000000000000000000000000000000000002D099A0001000000000000000F000000080000000100000000000000000000000000000000000000A9\n"
+":40AEC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052\n"
+":40AF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044656E6F6973650000000000000000004A\n"
+":40AF400000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B0\n"
+":40AF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091\n"
+":40AFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051\n"
+":40B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010\n"
+":40B0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D0\n"
+":40B080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090\n"
+":40B0C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050\n"
+":40B10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F\n"
+":40B1400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CF\n"
+":40B18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008F\n"
+":40B1C0000000000000000000000000000000000000000000000000001409980001000000000000000100000000000000010000000000000000000000000000000000000097\n"
+":40B20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E\n"
+":40B24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000486F72697A6F6E74616C20466C697000F9\n"
+":40B28000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008C\n"
+":40B2C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004E\n"
+":40B30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D\n"
+":40B3400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CD\n"
+":40B38000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008D\n"
+":40B3C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004D\n"
+":40B40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C\n"
+":40B4400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CC\n"
+":40B48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008C\n"
+":40B4C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004C\n"
+":40B500000000000000000000000000000000000000000000000000001509980001000000000000000100000000000000010000000000000000000000000000000000000052\n"
+":40B5400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CB\n"
+":40B58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000566572746963616C20466C6970000000A6\n"
+":40B5C0000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049\n"
+":40B60000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A\n"
+":40B6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CA\n"
+":40B68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008A\n"
+":40B6C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004A\n"
+":40B700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009\n"
+":40B7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C9\n"
+":40B780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000089\n"
+":40B7C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049\n"
+":40B800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008\n"
+":40B8400000000000000000000000000000000000000000000000000026099A000100000000000000FFFF0000808000000100000000000000000000000000000000000000FF\n"
+":40B880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088\n"
+":40B8C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000524F49204578706F7375726500000000E3\n"
+":40B9000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E6\n"
+":40B9400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C7\n"
+":40B980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000087\n"
+":40B9C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047\n"
+":40BA00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006\n"
+":40BA400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C6\n"
+":40BA80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086\n"
+":40BAC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046\n"
+":40BB00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005\n"
+":40BB400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C5\n"
+":40BB800000000000000000000000000000000000000000000000000024099A0001000000080000004000000018000000080000000000000000000000000000000000000055\n"
+":40BBC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045\n"
+":40BC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000524F492057696E646F772053697A6500C7\n"
+":40BC400000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A3\n"
+":40BC80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084\n"
+":40BCC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044\n"
+":40BD00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003\n"
+":40BD400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C3\n"
+":40BD80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083\n"
+":40BDC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043\n"
+":40BE00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002\n"
+":40BE400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C2\n"
+":40BE80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082\n"
+":40BEC00000000000000000000000000000000000000000000000000031099A0001000000401F0000B08F0600E02202000100000000000000000000000000000000000000C4\n"
+":40BF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001\n"
+":40BF40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004578706F7375726520436F6D70656E7371\n"
+":40BF80006174696F6E000000000000000000000001200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045\n"
+":40BFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041\n"
+":40C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\n"
+":40C0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C0\n"
+":40C080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080\n"
+":40C0C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040\n"
+":40C1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF\n"
+":40C1400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BF\n"
+":40C18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007F\n"
+":40C1C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003F\n"
+":40C200000000000000000000000000000000000000000000000000002A099A000100000000000000020000000000000000000000000000000000000000000000000000002E\n"
+":40C2400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BE\n"
+":40C280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004672616D652053796E63000000000000D6\n"
+":40C2C0000000000000000000000000000000000003000344697361626C65204672616D652053796E6300000000000000000000000000004672616D652053796E6320333091\n"
+":40C3000020487A000000000000000000000000000000004672616D652053796E6320363020487A00000000000000000000000000000000000000000000000000000000000B\n"
+":40C3400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BD\n"
+":40C38000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007D\n"
+":40C3C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003D\n"
+":40C4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FC\n"
+":40C4400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BC\n"
+":40C48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007C\n"
+":40C4C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003C\n"
+":40C5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FB\n"
+":40C5400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BB\n"
+":40C58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007B\n"
+":40C5C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003B\n"
+":40C6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FA\n"
+":40C6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BA\n"
+":40C68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007A\n"
+":40C6C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003A\n"
+":40C7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F9\n"
+":40C7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B9\n"
+":40C780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000079\n"
+":40C7C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000039\n"
+":40C8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F8\n"
+":40C8400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B8\n"
+":40C880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000078\n"
+":40C8C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000038\n"
+":40C9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F7\n"
+":40C9400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B7\n"
+":40C980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000077\n"
+":40C9C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000037\n"
+":40CA000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F6\n"
+":40CA400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B6\n"
+":40CA80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000076\n"
+":40CAC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000036\n"
+":40CB000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F5\n"
+":40CB400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B5\n"
+":40CB80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000075\n"
+":40CBC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000035\n"
+":40CC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F4\n"
+":40CC400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B4\n"
+":40CC80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000074\n"
+":40CCC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000034\n"
+":40CD000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F3\n"
+":40CD400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B3\n"
+":40CD80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073\n"
+":40CDC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033\n"
+":40CE000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F2\n"
+":40CE400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B2\n"
+":40CE80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000072\n"
+":40CEC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000032\n"
+":40CF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F1\n"
+":40CF400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B1\n"
+":40CF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000071\n"
+":40CFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000031\n"
+":40D0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F0\n"
+":40D0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B0\n"
+":40D080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000070\n"
+":40D0C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030\n"
+":40D1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EF\n"
+":40D1400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AF\n"
+":40D18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006F\n"
+":40D1C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002F\n"
+":40D2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EE\n"
+":40D2400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AE\n"
+":40D28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006E\n"
+":40D2C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002E\n"
+":40D3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ED\n"
+":40D3400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AD\n"
+":40D38000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006D\n"
+":40D3C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002D\n"
+":40D4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EC\n"
+":40D4400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AC\n"
+":40D48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006C\n"
+":40D4C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002C\n"
+":40D5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EB\n"
+":40D5400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AB\n"
+":40D58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006B\n"
+":40D5C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002B\n"
+":40D6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EA\n"
+":40D6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000AA\n"
+":40D68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006A\n"
+":40D6C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002A\n"
+":40D7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E9\n"
+":40D7400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A9\n"
+":40D780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000069\n"
+":40D7C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029\n"
+":40D8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E8\n"
+":40D8400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A8\n"
+":40D880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000068\n"
+":40D8C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028\n"
+":40D9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E7\n"
+":40D9400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A7\n"
+":40D980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000067\n"
+":40D9C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000027\n"
+":40DA000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E6\n"
+":40DA400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A6\n"
+":40DA80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066\n"
+":40DAC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000026\n"
+":40DB000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E5\n"
+":40DB400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A5\n"
+":40DB80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000065\n"
+":40DBC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025\n"
+":40DC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E4\n"
+":40DC400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A4\n"
+":40DC80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064\n"
+":40DCC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024\n"
+":40DD000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E3\n"
+":40DD400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A3\n"
+":40DD80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063\n"
+":40DDC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000023\n"
+":40DE000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E2\n"
+":40DE400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A2\n"
+":40DE80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000062\n"
+":40DEC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000022\n"
+":40DF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E1\n"
+":40DF400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A1\n"
+":40DF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000061\n"
+":40DFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021\n"
+":40E0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E0\n"
+":40E0400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A0\n"
+":40E080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060\n"
+":40E0C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020\n"
+":40E1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DF\n"
+":40E14000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009F\n"
+":40E18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005F\n"
+":40E1C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001F\n"
+":40E2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DE\n"
+":40E24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009E\n"
+":40E28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005E\n"
+":40E2C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001E\n"
+":40E3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DD\n"
+":40E34000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009D\n"
+":40E38000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005D\n"
+":40E3C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001D\n"
+":40E4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DC\n"
+":40E44000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009C\n"
+":40E48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005C\n"
+":40E4C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001C\n"
+":40E5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DB\n"
+":40E54000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009B\n"
+":40E58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005B\n"
+":40E5C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001B\n"
+":40E6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000DA\n"
+":40E64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009A\n"
+":40E68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005A\n"
+":40E6C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001A\n"
+":40E7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D9\n"
+":40E740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000099\n"
+":40E780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059\n"
+":40E7C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000019\n"
+":40E8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D8\n"
+":40E840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000098\n"
+":40E880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000058\n"
+":40E8C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018\n"
+":40E9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D7\n"
+":40E940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097\n"
+":40E980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000057\n"
+":40E9C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017\n"
+":40EA000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D6\n"
+":40EA40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000096\n"
+":40EA80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056\n"
+":40EAC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016\n"
+":40EB000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D5\n"
+":40EB40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000095\n"
+":40EB80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000055\n"
+":40EBC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015\n"
+":40EC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D4\n"
+":40EC40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000094\n"
+":40EC80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054\n"
+":40ECC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014\n"
+":40ED000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D3\n"
+":40ED40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000093\n"
+":40ED80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053\n"
+":40EDC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013\n"
+":40EE000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D2\n"
+":40EE40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000092\n"
+":40EE80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000052\n"
+":40EEC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000012\n"
+":40EF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D1\n"
+":40EF40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000091\n"
+":40EF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000051\n"
+":40EFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011\n"
+":40F0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D0\n"
+":40F040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000090\n"
+":40F080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000050\n"
+":40F0C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010\n"
+":40F1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CF\n"
+":40F14000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008F\n"
+":40F18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004F\n"
+":40F1C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000F\n"
+":40F2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CE\n"
+":40F24000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008E\n"
+":40F28000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004E\n"
+":40F2C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000E\n"
+":40F3000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CD\n"
+":40F34000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008D\n"
+":40F38000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004D\n"
+":40F3C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000D\n"
+":40F4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CC\n"
+":40F44000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008C\n"
+":40F48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004C\n"
+":40F4C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C\n"
+":40F5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CB\n"
+":40F54000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008B\n"
+":40F58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004B\n"
+":40F5C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000B\n"
+":40F6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000CA\n"
+":40F64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008A\n"
+":40F68000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004A\n"
+":40F6C000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A\n"
+":40F7000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C9\n"
+":40F740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000089\n"
+":40F780000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000049\n"
+":40F7C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009\n"
+":40F8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C8\n"
+":40F840000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000088\n"
+":40F880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000048\n"
+":40F8C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008\n"
+":40F9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C7\n"
+":40F940000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000087\n"
+":40F980000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047\n"
+":40F9C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007\n"
+":40FA000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C6\n"
+":40FA40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000086\n"
+":40FA80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000046\n"
+":40FAC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006\n"
+":40FB000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C5\n"
+":40FB40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000085\n"
+":40FB80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045\n"
+":40FBC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005\n"
+":40FC000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C4\n"
+":40FC40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000084\n"
+":40FC80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044\n"
+":40FCC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004\n"
+":40FD000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C3\n"
+":40FD40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000083\n"
+":40FD80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000043\n"
+":40FDC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003\n"
+":40FE000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C2\n"
+":40FE40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082\n"
+":40FE80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042\n"
+":40FEC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002\n"
+":40FF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C1\n"
+":40FF40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000081\n"
+":40FF80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041\n"
+":40FFC0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001\n"
+":020000040801F1\n"
+":4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000C0\n"
+":400040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080\n"
+":400080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040\n"
+":4000C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\n"
+":4001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BF\n"
+":40014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007F\n"
+":40018000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003F\n"
+":4001C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FF\n"
+":4002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BE\n"
+":40024000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007E\n"
+":40028000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003E\n"
+":4002C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FE\n"
+":4003000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BD\n"
+":40034000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007D\n"
+":40038000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003D\n"
+":4003C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FD\n"
+":4004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BC\n"
+":40044000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007C\n"
+":40048000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003C\n"
+":4004C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FC\n"
+":4005000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BB\n"
+":40054000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007B\n"
+":40058000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003B\n"
+":4005C00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000FB\n"
+":4006000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000BA\n"
+":40064000000000000000000000000000000000000000000000000000050003EC00000000000003E054A20B3371E40C0071DC00005002029C501C0F00502B00020040000693\n"
+":40068000503E00015018FD9A501F0006000000010100000200800000502E0100504500021000003350410002FD00030050340800500A02005030208054403C0E505A0E3EEB\n"
+":4006C000507500030CCC0CCC080071CC14085088001150930004000CFFBEFAE1399950A6399950A03FEF507E0199507B00020CCC100050FE00C850F4033350F100020CCC2D\n"
+":400700001CCC50FA014750F700020B33133350EE033350DC012C50C8033350C500020CCC1CCC50D0033350CD000213331CCC50D800A350D5000206660CCC50A8000250BAA3\n"
+":40074000FFFF50AA400450B8020C50BD0002640C001852CA003F53160147531CFFD8531A0CCC52D60FAE5322200053410002D80004007078000453240C0053280400714B63\n"
+":40078000000204000400551000CC52B700025DE77EEF52BF000401990199019901995539000310001000100053B4000053E5000200CC00CC54B20147551404005512008089\n"
+":4007C000544E0019544C00035049000500000000023200CC2000548900088000F8008000FE6709997E6680007E6654A81000300E00BB200900024000400030090002400086\n"
+":400800004000400900024000400010128000118D00020080008011670004000000004000400011910003010000800080F039000200003390E00100020001000011860388D5\n"
+":4008400061140006118900020000000060F1000280008000610B0005000009C407D0012C00146116001960FC0FD76126000860E000A660E500020186A00060E20CCC613256\n"
+":400880009600601D00020000653860164000201001705398350F202E000140100000100900020001FFDD602900020000199A20300014302E0014403000145344004F52AAEF\n"
+":4008C0000000202C03F1302C03F1402C03F111750002FFFFB50211810002FFFFB54060180001600C0211604A036C503240002014000120120001200100020A2807A02022CB\n"
+":40090000041920203C0020250004000041000000821430140000300100020A2807A030201E0030250004000082140001045030220419300E00004014000140010002078030\n"
+":40094000043840203C0040250004000041000000410040220419401200507078000460B10008A974B3A0B4A0B4ACB4ECB4F80000A88460004F38201001606016400071C291\n"
+":40098000056671C003006025000200300000602D00020034030060390002001902006031000200000000603D000200000000603440006040400020510008000100080001FC\n"
+":4009C000000900030002000100062065000A000300000001000900000006000100260001002630550008000100080001000900030002000100063069000A0003000000019F\n"
+":400A0000000900000006000100260001002640510008000100080001000900030002000100064065000A000300000001000900000006000100260001002660290002000105\n"
+":400A40000000000006000008000100010300AA940000000000006538380000E83C3038CB4086A201AE129A0129AC130EE086F84C89CE069980F26469ABD03B820288C68058\n"
+":400A8000423E9C5E66103080D20877A5411040C1681E083D6AD65E9C291EF4D5105041404A88115BB47244C938059F46B5887C0F04081520686C0F7028913441634016EC96\n"
+":400AC00093D90839886882A6882C6902DE8B619EC0099F4329082C69C300C06C1FFD024220A9A0C10430301072757105671105403BFD0060EF2163F486D18CA1C56A06F486\n"
+":400B0000CF20094E7C4200163275F6020076E91C226F7F6221E9D08319BD24B87200F32F217A6D80866C2132177A481886047A30DA65802631E6D681A6406AF80FCA466060\n"
+":400B400078D001FA276C7C1FF826C002059CD4440DA2EC856002276790294C09214101DE7E23E40C999400351406D160121041E00468870060141AF1CA8135437E7B3A2003\n"
+":400B800068DC09849DAA2A44190070EFD7E210016774680E4748CA7EFA34FC895251013435E9DD510F3AB4B9036A604C2A02CCA5009D8066A1038E648B1EBD471EEB4D19CD\n"
+":400BC000816F586121BEBE883FBF3608206883DE14492DFE60413F48CD08C40F8408C208B499FE748143D03DD13262009DA1AEFB3080E41AA1BD5E882246F536C1187CCED0\n"
+":400C00006C8F4044D00509002CFF30FAB8EC41328020E9BDA2DFEAC411E4B2C2089A5EA06F1E897120308209020EB15412865A14E00011534AE86030040223E155220E4615\n"
+":400C40000A86400D3ED1036A2040E12BD27B88D530E2C232D309B11A04D1A24DF074E126E0D12712271913AA275913DBDB8093C69313F0B1E37731E46B830A24FA00041040\n"
+":400C8000802962A6862250348A083128148A15142C8A25144C8A35146C8A45148C8A5514AC8A6514CC8A7514EC8A85150C8A95152C7B34FC6140AA48AA834793149B8FA29A\n"
+":400CC0001C04ABF50348C1001090129348AC8B1620D0F43148C100169018A03526915B162C41A2572457322BD457B22C1458322C5458B22C9459322CD459B22D145A322DB6\n"
+":400D0000545AB22D945B322DD45BB22E145C322E545CB22E945D322ED45D9420741081E90206822250348BC8312F144A1046144BD48BD8343D3D34304009A40A2815502C56\n"
+":400D40009348BE8D1620D12FD22FD89420BC2898091810689829182C8C25184C8C35186C8C457906846085869866250348C500F59D186DA4823B8D8D7003E11DF94E316BBE\n"
+":400D800039E478C94C901384F508F04A23C1408878E062C5A48A11E6304792C2CA83666163287047AB86847B2611F429B10F99190240615E1206084881E11F33F91119285C\n"
+":400DC000101B18909181033DE87C4467593D15D80246850CFA5120892F4A2814C82491E8D5C602499488F7CCC168FE07CD044649B37A84B0C129E8A0A2B490929E9AEC296A\n"
+":400E000010928562203707252C69F5C1540496A04534092DD99AC5460499E72002035AD849EC308203522128850479B9951447633E170E22940C47D1004453D38129F87F6A\n"
+":400E4000415DDC25471B882E0178254080CF9A1908A81411F42D611515202544904A8A283C15AA6080FC47BD2788A92519F42DF11532012A67A12AA900E18E18202E11B7D8\n"
+":400E8000251552E101684095540840568AB0311F343A11560C23E493222B44847D29A0456F128428A1C8C1AE71CC30817A50F5226115FC90E8A9C095FC4A20B5AC325902E0\n"
+":400EC0000CFA17308B30711F458711667A23E881622DB9544150612D87C47CD14045B9E0CF4AA511701233E85FA22E4B44A9309744835D83A025D880D4F425F838D7084CFA\n"
+":400F000012FC2C6AAB84BFE48EC4D17FE079644D12611F139011A7CB2F0A9009A7C4B20A8009A67423E8CE423569309AD4404D6A80135AA104269F84D6482651AF59C213A0\n"
+":400F400051C13629109B5AD7F909AC2826D7535514F026FE52B89C32E1396C14272D5509DA6822784B087444FA8A163A15604FBEA0C82A3027E44152E13F3A3050BD113CDC\n"
+":400F800054404FF9884266B29ECBAADB0401D6F7D04C5E3000F0654209A8C000363C2098CC4001022484682177F0060CFA1A106100684B2AD6410CD099043CCF383CF92C88\n"
+":400FC000401047D1AA85D207C209048CFA1A78401056D564037A13D860801C481D34100188B7B181A3CADB0778F71F0A7F088476766BB492177025EC1602BFD60751A470FC\n"
+":40100000068D63D7AC6744A6077AE8647B240048F3FCFF3EBC632A2110060B9E03B7904A06247B303058314703A410F5CB5A076728D74810F5EF4A2691D06D821CA74933FB\n"
+":40104000980D0E81FF453789A471A072A060EEAA53EDF76101CFE40E0374011F4C0F27410FA80EC801E84A62F5EA888653C8700681300034035F37571F7D150F63F5880EA2\n"
+":4010800068F5D9D89BDBDAD8F599E0F3309135068177C5FBA2030E5D9F0265C1C810984020441559343ACD487C2CF243D0F45C1DE6CF01CA3F159910F0260E017F52C32297\n"
+":4010C000314D20390D23A851A5AC1050220C37C7023E8D408C4005015ED1C911581C03C270D3A5C9C8FA3C02102B0C907876D87B724C64489B86094BC513479BD188104BDC\n"
+":4011000003BEBD522268210C02FF501B91B1C3F944AC958C30B07978C648D8ED73720206E9198F46F00678011CCA8898E15F43D99947E736F109C309399C83A9921410807A\n"
+":401140004803CCD54BD25CC3E28DF18A13A3AE61841AECBDD1F50329D0C0E6BE226292009745B3101E7503BEBCC62054231047108821A36897BD41FC32C4AF6783C4EC31ED\n"
+":40118000791820F01231E980F103CBE9390DC196F5D622697C308CA0EC8D13B00E394900CFACA1446A9A4C9A4FC2E7A2454A4C8A4C27E97A63A1A1D46103DFA0233A207E2D\n"
+":4011C0000E91E23727DED2AA01E2F4410023286BD7DD47E1AAD52AB02AAD1A3E47074BEA0861D067C53400502200E1F4D2038181E2163100C230C3B3498CB408E38CFD1E9E\n"
+":401200000711A7CEF3851A20684A8589C8FE0F38BAE4D5E81040680DD3AC433299F85A74BD695320E84932EED6A110C62268A2183A64A54F56C518F41AF07524F9E0F0F699\n"
+":40124000451086E0AF0C3E40B90A8741AC242081F050AC0838314143103C6A21D5D5A6E00A7747188810A40EA81B008EFCD0620F3D0C1CDE31360058D207014B6640360DCE\n"
+":4012800016C2C0E3E5D351E82311068B016101CC0114D00CC48798A18BA0ED84194098F066608260D8365B76B6D88167890229973CC3847D2F2020D8C62D9A0158F23A59E2\n"
+":4012C000D407A0C0230C83FA892312106AC08C5EAD2819D084B04C19ECBB01960301558107D2B8E409835D9FF02138FA1A8EA3184A410360A14BD268433581606C306B1A85\n"
+":40130000E0C9A40DCB86D6C46210F838061849048C5E5AB64C0AC1C01C3A192121040A02571244711A4094591AA0593A1384C1A74C2691F6384780F41148089D0A0B4103D5\n"
+":40134000A0548B06C09688F03763F5D6010957BD0FA4618814EB81043949E17AEB8901E02209882ED2CF10029B16FA0020E1B46FDAD807A0D2720A4EDFAAEE0694182E9006\n"
+":4013800002348A55260390C60D03A4003151A352C0669020976B080EEC1D268984101040782A041EC1AF8BEFC49DE62EE208FAAF486F6A827403AB2084125D0EC97E105F92\n"
+":4013C000BD9FC7B18B440508ABB8614492340B6088800C3B86DC49009C7012FD7E60203563902C0AA23A097D9310208046185033290A4080900A22481A42144094C194D1AC\n"
+":40140000A3E878D3E003433E0F1C4D10179D838C581664C1CC427948687A84C881493103080388057C72C46C009D90E84C09858981B5568F649D1057D238A3C25BC7A9F0BE\n"
+":401440004448F4F8419E4380F433970331730C6778F009D361F1044D18017108088063885E140881B87D4246AE0582B39D9F88AA388C60C85B5020127683A4CE6A0D400D88\n"
+":401480002120541502099204F32939F3A08E0318216519A6A0181010A7D1FAC32602F48FEE24121FCA2290E0860E6A0422AF711A14B86E431A6E47D9B10835742C1A8060A9\n"
+":4014C0001C0E8C1CAFC1002CD207460F607D9F66148816634315BA86DE22059750C4068D40EF78D20F00082F52C8892079013D85F85292E6E243DDE1E277F1BED204FA67DC\n"
+":40150000E04801E4F3B3307AE468A6212DA3CBA6A9440EF3FAD1773A78C80BCC68C23C867D737E52119E409273F5D0F1750B195C1E63D7920D061C8424C76F1A729F2AA63C\n"
+":4015400010ACF62147F3CC270501433E250018AC3FCCB0944EBA4407E050F1F5ED51F48C88F6A69109850A18FFA3A9AA480D3CC9134EAA4C8A1C39DF2884E876DC9896BDEB\n"
+":40158000A8F23CEF04496E42FC33E103E169200C767409544A262291A0398D7E2372160D00AB85951100500F21E4811B82808203AE491ACD23ECCCF13528F8B7A87CFD00A6\n"
+":4015C00020A1AA10F7EF38F863EC496057BF779025816EFDDD409605E1041AB1725100C01AD0B4AC07283A6C078E825A0DAAF14016E84912018E6006BE50BAD00E621C015E\n"
+":401600003D80002A1C8178F3DFF007B4AB24023A3A71B100048847D814465A751F20DB5E006077D414E359C14840DCF17FB0807E3C141BC0C5808CCF2DF838B8CC285DE22D\n"
+":4016400000694F51C012758D889B003D890814B428D918CA173A663CB468583A0900361448E48E0841B86858390DFF03EA8C8D12C07EE91962B1401EA1001FE4A9021C40C9\n"
+":40168000BBB3007315423403515C17178A6F259C8D5896312007440A063418682A011D589CB40603E07E0B3A52F4BCA7F43DB33833DA5835007C108900368490260AA02001\n"
+":4016C0007A47E4C04188B89C06EB1304A89882FDE86A33A00122F4DC60F2BCDA8FAFF287A918C6190BBD806B184B99600220AA010049DD38C73A244801D371807DB6D026B5\n"
+":4017000004DA4082616B000960498CF8C06146172400EE8FAD23A0078844BCEE209105E1848448A81C40B097CC51020ACD620415D3518E4AF50A9978381C4CD0E5FA30A429\n"
+":401740004F507BA1B2C8F1070D80DEB2C8FD2C3AEA724103584F36807BA4C48F48C4BB811C12C3C5E447D846625D017E112D1C10626908F8210BD7E0670C022A7C475C49E1\n"
+":401780000ED0D9163969E19E40EFAEA887BF02C402F3368256740B3191045059B000C052A0C00B052CEA16690E497A24150E44D0A148990D5F7C5D0CB2268861D2998372D2\n"
+":4017C00072066162090C43D1323A17422162299D6431323A9D6421620A1622A9A0149A2151601FF154231B434F1686266884DDC77E2201223D75065889DC0474B07B090776\n"
+":401800008FDCA200622EA242C9604076E021188588B5E4D804C220D10EE71E1067A1C784283A08B02872C10006802E68030531C053142040CC0EF04101BC32034EED50406B\n"
+":401840003E077D1FE82486FFA33DCF5C87281C1083D6C944210077FA457801FE777066A438720201C77D7810088F7311103A1A237A8103C4261521141100E304770512E9AF\n"
+":401880000DE2F0B9609A006F0CD02BF680D2030A2032A363C108E3DC7FA3D92882048F02AF93750420028F9E8C6D1F4D80A003A73997452B27EB1F03F591C21EAF606072BD\n"
+":4018C0002E30AE1747CC179B12C4003084034808F582A155F0FABD8C4722A3D7D8287ABD88C8051008247EFDB003D1F2420078B748B94ED18A21A746BF225C1FFE327212AE\n"
+":40190000E01E307CFFC4A01E59069EBCEC31CC1A5403D5E8122233AC265EBCED38722F94041E1E66207F5595200695D126217531F200693D0E7EBCF13024660D140072CC6D\n"
+":401940003457094644460D3D75ECE81017068702EF826424E06C7543A8AECBBC4FCBA0D1CC612D8A103CFE0D3D75E8C847D538A279015E3C2B2F5D7AA1300715F72E636E9A\n"
+":401980003D059A20218C3C81DE2B202C32A1C5788452E68925D414A3E41C59EA0E31300B6F1221220380E1A70A793EDD3548D109FC672A25204A029201F7494AA069049E00\n"
+":4019C0003D6510901A1E90F5FE3081E679E0091AC1112C2B0F20774E6418066903A6883D1A44B1AF1C4329BB84E8BD2CA62621C21D792DA840EEC2ED40B81087BF1F9B0FFD\n"
+":401A00003A84100C7B1BFC75F05E45291048B3043B86784110489A0040D0487AF289E0F491E0F562408D983303B26E47D6E7A2CF7AD015C5C005F44228F6EB1A96892F5F86\n"
+":401A4000BB2242220EF7C1E1F055C13E834F554F17AC5887CA6B66100F067F6C7B8B1CB1747AC0E4C7EF591188F217A0047017811387E340D70E46F00B807D8FA3714BC126\n"
+":401A8000EC877C98748FF88AA0D181D3348200F261B41815B82FF100C419A21881A1DF80AF840EF29AE2217A8090FD904C061B40EE2C213C03609FBF9647872B0CB8010F4C\n"
+":401AC0004F9FA40498801184C055361012427471888220687B1E1E3FB91F04BE21E4BBE400902CCE008808A22E4A806426E89B518D23DD21F8F2038D0EAA7E1F414B895352\n"
+":401B0000185DEB1A3318B0C0EA080165800440F051B1E11744067405E8DE042390140289A1A10195848F94D711F11071978883C4224391032B60ADE020672D5C20D3CFCD9C\n"
+":401B400088F8C2B113654CBE0110151AA75F9F7FC58BE744206FCFC0A4051F50C43AF8C2B13C442038F37361028E28B2F4CC3994D67D2F18548FB16448CE8B3EC95D2239EA\n"
+":401B8000B1981EF1853A0732817CC4D40992677713F9346D2602113642438F21A9870001400712A0F4F011743CB896460047D81EA210626E33FC648C4478E9E0D31F3CBBC7\n"
+":401BC000C8318830D631E21D0720BC781B2C720309323904F85D408004022F416B180E7F97425A1C2F651E911143A78814C17A1510895FE8F644BA7878CAA1D9037040ECE4\n"
+":401C00004C030380303C16EB7261F3385970C1B12980E1081E080D90ECD0297ACC047A1C1C498010D2293D0D4A2522A9341E7558D174C191803D05882231341EF0DCF10636\n"
+":401C40006210EC82F2603EF435B8FA18FCFA5FB0AC6612202C007D04DC85E0CA018005C60DC415F32E1904A450365C718361063C1116243C9482AE4C82401FA1AFD2ECD11C\n"
+":401C8000F12400B3CAE0513A47903A86882FE8AFE2E93371F268C885C1678D180BA313CB97C6163D4008813F45838FA1AF4980A661200BB14449A003A7CD87C82BE88FC66D\n"
+":401CC00070F06178F5D44A699CA9B881BD7B4C438903D3BF2570E0885D3A3A3E862B30AE6911F80206C6AE934921CC0E8711F87643BA024E8518163350640792B3D16525D8\n"
+":401D00002829308D88E2701C7C801DE1C41192F448340601E034EA9DB3C5CC1E047A2A6C278187E86CE2E511880EA29F50028815E46F411590043AB49CBA561089E086902F\n"
+":401D40000628C8B9D00060069021E14B5162A054018140297BD0D029F5A68884409B202CCA43F515320980BC30609E00EA20BD8B1E5189F9FE48590840E0FFD0E928F8D38C\n"
+":401D8000405802896A8747AC22C4051FAA212E8865162702E88761658A860990A7033F93F14C9913C02D4C152044FEF4359A3468C0A11A8B21D2814552495142E8AC01F425\n"
+":401DC0003B309C24300F72B8194329743C0763D0A86982D5307DB8043E86B140F13C8D104EFED0ED17B1E928113500F1F4B41949D0244F00C45E28F85E30D45319B0829652\n"
+":401E0000EE1F2242237F517A1C58BC7D1C40C8E9E87E1267A5F80BC7D28418F3AF022D3A0D8880B1EACC623C1B01FF4EFB15D22008929DD59027B13428F54040F4CE08FAB5\n"
+":401E4000A75440DE9FFA2CA2B103EF30130008C20C1874006AEAEAD2C53E22861C810B7C42FA5DFC36222F5F9D8929DBB887E0096103CDE070E0E84591E8452103CD285039\n"
+":401E8000EFC861303A74F0451F3383901C5B039D429A2388540715D085DF0649895D149E41074FF6186A007A278058CCBC12AC98148D03541012480200E826701A88297FD7\n"
+":401EC000E45439566C1B87FE118100BB5418708C9091C5B208D43325A431130547786591B644025DEA303D18F2268190301503407776E0744D88F41A6880400F6DA4A390D4\n"
+":401F00001A67F1D26A17FD1C1043293072F42BD881A6B931797980E66A0305C7C97971EC43C24046E80A43EB0381F1A6C8F72B48803E8CED3E1ABA468167E32802F61022C9\n"
+":401F400003FF48D32441069C33755EFFC912AFAA2C840D34CAAECCDE2F45AC970FE81017D169843F0C0418C5D0B08376C803E6914C41001DF6AA604FB0569020B91539744D\n"
+":401F8000FD197452C990411754EC176A661C20E13F8EC9452F074E1FAACF4899980425F45C311D050C1993E6912F333CBEAEFD9628E426622291F0E93A45C05980BE4943C6\n"
+":401FC0004086E2120206D1C3EFDAA1EFDA54B8D628F7ED30F669F9DD260D7A458100D3D3A88A0AD500A1A23BDD001D76D25D45A422C06C207A251CBA81A878C3008EC0D769\n"
+":402000008A4E078D7F2A1801AC7AA1E87A80807885891488F503E91A235F10BE1F14988B0462448302513CD274797119F2E05105BC5BE65C658C8DD4071022F9D400206325\n"
+":40204000D07D63DCF5A24800FE107A134760029103D1B124168000A09A6C67FAD000C7A14C47BE67499F42A20F8A6E466E02C410087D1B0C7DBAE82CFAA30499238B143169\n"
+":4020800014049CCA244D0137CCF92221F37491A40022750329438B1DC4405E2E94100BB403C89608BB895445E34046F2B20088C450C074035DFF6C2417B06844C1E5305207\n"
+":4020C000478F27816C7112C718DE2360B8088019C5F1EBCFC802001645B31CF05C6DA2007C710F40A96C218C23C1A41C97060954C60F5025840EE9DA104B8572977381887B\n"
+":40210000843F8A1C28B048425843E152653000540163678EE6F612138F5A0FA9E34404EEC3031E39E72181A7F068A03F9FBC8544415F01AB080439981D8758201775C88840\n"
+":402140009BD918822001C77068CF2A541F650D17635F97798421E582E2F2C1916C5402C03E77740B41600611619F34EA17A3608FD1AEC90988FA35E0DAF48041E71E17A030\n"
+":40218000F788306400F008823C47C10B8D90F46BD2C1A039221CB7423C19F226A178F8692004BCE239E3D0ABC2681CD55606A9CDD097A20250D1B02A3EA7D932C388E79936\n"
+":4021C000688F1A5142C929F9FF34786E0952D11438E70A1C4774B88EB97A3800C623C0031D41A340D3F470116919AB9F428F4A454841DCF207C2F786C5221A0B20B9996169\n"
+":40220000A095132107651D8DEF60C7118E1E966E1F0C6C0F855D84171C02B05F88FFAB0E1DB99625754F0821C3748664839400040D12FFD0BB4861EE10AC0D26A34CB5E348\n"
+":40224000C7036E91EC988488508C15F47BA9CC82EDC95FCA46F2CFA3420E4290069980C3D1F12A7A34212EB61920578E4EAE1800F506898042A06812DCBD6D1EFD291E8503\n"
+":40228000902EAB841E26468785DB06C64210774191F74BB974B67892C1143900DA6A5967A5C2CB8CCD8FA34288EABB2419603AE96FB2891F468591ACDFA22F4804104B60A4\n"
+":4022C000809608610C214022E23D0208FB044C70FF87480C0F562208005B047D6CD280796A7109C01030760D3D1CA258E143A81E4A6203191CBD42E27242007854F8808B84\n"
+":40230000C00FB92F47BEE604DE00B855409BDD97F67D97F03E740A2A643D9E2826377FDA8FA38648721ABA6EA8BD1C9A3DAABC3C513C403E8CF526060F470023E848D1A937\n"
+":40234000C2E2760555EB1A22CFA38019E27528F13A733C1801273403856EFB941F470021E89492F16940D0A79480E4002C832F01E1950B10D92F08BA907EE4732986CE4368\n"
+":40238000475C4D1D1E268C5C4D58A74403756F6145880FD7B30640200F9EC09CD05D29A220A7452B081DD1C5C20B79A534BD76C6223461709FD100AC9646803FDA4D63DFEE\n"
+":4023C000F7E37B90889E2C732F27AD17A166444607332508F8E8A732EAC2F2E8E932F2D270841C43011128D8EB42213C048E79A065223D201C59D6C5E281C3F4A14110CE9B\n"
+":40240000203069E8D98795ECC8BD9D52363CC3DC2507A43B58E96E02A6E24174BC29F0C2622E0F001E8B91A06EF4BBB88045C8485CE69309A26DD100A8B2F166D11A26C999\n"
+":40244000221076F8413422185D8D423C363CBA5EB4406AA12362BACAF102AA31340D0F4A552581C22F4A500F3590E17003D12C6A9903B023E897B2024D2910043D47623D47\n"
+":4024800013285E09C31E89931F3B030F8DFD0803F64C9974FC18F5F360D4A00F207E0281C6FF1983E3E8E6D12F140A92406B034E94184480FEB02CDD6076F5B38A201765A4\n"
+":4024C000898F414C98F42EFA39CD1E85FB1F5812222482BD5C5A38E643D1BDA43D0589E6B0887C1A343C977E8E731364B900B2DA04B0703549043A23F09828152FF0009848\n"
+":40250000E9395A3B39BFB0DFCE608F728A0F7954975C8021D31C436411E388E55FC2737A39D4FD1D58444CF260CF0CD12F161E17A3968980C0D123881101AEC3674C25E8E7\n"
+":402540000C81E2AB63972A20C16182E8CCB240930970798E0C31137A47CC40DEEDA63F472E1F8AF50CB57135079F472DBA692B81E310681031F3ED9161FD01A8B2EE135158\n"
+":40258000ADE09C83BD31879719100624A172F8180051D6418E5D20AD200729931F0C1C8D8800D71A013E3CE480044386C5D0503C8B0061F565E1E1ADA208F19191044640D4\n"
+":4025C0008001F5056A396064108E631DBB43D1C80F7820B44582600A1B8B20A040208001D463E1C6C802A78121D22C860E7B2DAC41D3C090AB320B41043A82284DBEAC74FA\n"
+":40260000124C6B01FB4818B0970D0500086EC264478100068FA2A03078107D5E942789E362E1036C8C36C91F643B94EC165101D4D163C37122C7992944E1223C2A004698D2\n"
+":402640007BD509621F1A5E4F9F1C80622AC212A820BD5C011EF7661F3F6D084FD47B85272F053E91E810F8B118A084123A3BE9B4414100D9EAF0A90D3CBEF423E82BD5724A\n"
+":4026800082407896F8409F5E5B8C2981C07460812A12316008BFD87167002A68851D16464331715248B05C8503C075E25B91080E901BCE01A5DBCBE20376CDF8DDBC35E2DA\n"
+":4026C000371C0041E3C72205FBA600790AB899C08FA38CD102C3AB8189905CE0F65BA97793E1744C51F47DB22030717F3217FD25D0AEC5E41F84C10C0008F96E30840C03DE\n"
+":4027000048778141EEF2026F80304077219FF887A3E592F4DD3C93556E4689EF8EC500109D0D38F1627E9EE240D03CA0C8FD09B8868219414A01841041E971E134CEC34418\n"
+":40274000EC24D8BC6409310CD13ACB1100D23AC930A4B2EF694124C6A2C860E98F3100892103CD6BC98438094095100EA277C648A81E8029A47274411881BE6B61440EE8AF\n"
+":40278000FC42880E350E26F92287453789BE3805049841E20A9236485EAEBE9C30C25AD0E404153F004D1F72F50F40699746780FA84C07BC6B04D1243D3E84467F496A889A\n"
+":4027C00011E86FA202857E882620203B40D5F122923D349A6C017A85D30520579840C32602663B76AC580C300311B5EB09A105CADBC6008B000790F628069168BA0F7AD3E4\n"
+":40280000D44C2F230E9157C2C54FD8E003E89A82AFE0EDDD9543FF167708EC5479EABC81B13031E22D43E8CB047A48C44750A182EB9F2A1F9C1D8C2322F9CC00F3972109C5\n"
+":402840003C91CE20DF77534C84034303D197EB8D468942805440FA3EA0789448814009806813FC77EC496C3E23E8CBC5DAF465D90E0871D06160193B80F256F569E426430D\n"
+":402880008B840A01C82BBF98E9980865F0C20D8E18F9C0131D244077021D4FDE22012BDA0E420415D5EC57F7981B2131D11E1D6E2C10C0DFA32CCFC5EA4243038E1A703931\n"
+":4028C0002181D6FD19706407A32D911C14874643DA870603A321DD9F78958B00AAFBF48D481A99054C6FDD0607243C60DC2C314847A0E14478F035108263B74F4198845A25\n"
+":40290000FA32DD2050DAE9135303CDA07336D07D1ACC44AFA32D92061301940797D1C628237B417A2D146611C6F43ECCB3236AF6B2F465FA0079951246B895C50D4440F43C\n"
+":4029400065B2265429B605240BAFD190862A21E8CB8440F25A545E8C941630628055D15165E8C951F4A181B801E3D4E47EC7501094809ECBAA58CA829F49768D6B17A33419\n"
+":402980009003C1E8A2ADF0EA5F62EB4BF1D01F901D125D37964078050A552C3E90812F01D7901FE8C862ED16429518423383F29102D103A9F9F64B399A5293F4650240A773\n"
+":4029C000498A17803788312830FA08108EB636BB7DD8FD114097A22791F0AD11910905C90D044C434B79C0391F468934107A313CBA0700580385E9E487020BCE3E65E8D093\n"
+":402A0000A2C6A21D4E0E348607EA7C3E873D1F4A489635100386E8726082EC60E2E2E3422474A27162FA1120793C07F040090AF33950E7C12220F8AEF0C2C3D8CD08BB4CF8\n"
+":402A4000A11E24D63C7EB478D8014AC6CD1016C9511CC8040774769A31998E7D9F6C2C1BE87152E2095ACC0410A80D3EAAFCB2400AA302A140F6103D19FCA04897A101873C\n"
+":402A80002F4840D35A44800DD3DBC27B09FE8CFD582454008CD0280807540191210B4008CE41E91483AB067A07031360FFCF75104CD612BABECC419F467E17A3400BA1815C\n"
+":402AC00089A31F31047D19FC7742040858683D19FC403211C5C8D6CFD19FC40D10C60280D8C6DE604AF6B3797A33F8AE6A0EF4CE1E45D43E8CFE43A6A1459B95807328B4FD\n"
+":402B000074630A04111E3F8F428754299044D0D26D17DDF7244720F2681742112A707AABA0895286E988F1F1388F58EA047CE9D4311FBD19F889045B7A3410DC0804240027\n"
+":402B4000432444169080457498089185AF4900880826FA3418BCE5583D6E4C3DCD1A222711141157D27CC56A42F3BD5090838185E8CFA50B511153C63022C1289090C081E1\n"
+":402B800002012C1D82E40303619A96FEBD238633E2B130849C5328FD38207D219C6587A822C78A2491FE54F837A084A243C11465DB42C254F714C95F4002381A13624B0FFF\n"
+":402BC00051E008880306B330160505EA4222794A9CB901A8F4C220F5EAC17AC850C05EA0221F0F5389FE755EB45C75011F16020F8B020BD82704071AC0F1006887268072F6\n"
+":402C000050047E9FD62F2EB414CC06C9FE6806D840401820BA774045200D034034347C3A6E26B06BCA07C6100C935D006028F0BEB886853D91C6E68029FC341620B8800C35\n"
+":402C400005912218A005A716A8760B90C3005E801813201C20101A282D401A8DB18A580E02040A7038D10AA6100603CE62A222A94E079E005B02A82E6101C315D8610800AA\n"
+":402C8000B717253F6063901A16829D69B13EA1F912E93D13688A3C5C28C74F5737A0139E0098827B8CBD8FD04789CA0283A19F8B780FA7698400CE0E43D45FC7A3FC10C48E\n"
+":402CC0004EF5180201A13555824C23C53708922C3896421C99B8C8C43A5F70700E0928000021E1F08EB330401C018200871CF43842FF60160859E99E21124B8441DEBC4604\n"
+":402D00001030669CC0D53E00F3C82038095303B8E787AC9C8883F410111E5997C20216A19F976F90108334399068F40DA8ED7B046A9DE7B9B773181A477843ACF412D7D055\n"
+":402D40007F8316469829E7695110CB2188F735B9CA5207F97DD623A31225D90D1E4719C11A265259CFA27DB210204281001965AF849087C40E63D8E8A20F62331003C4DD64\n"
+":402D8000085FC6188CC7BA1A8BB63684D0367CEC28402063409002CAE44D534FC2BC0201F837FCC90340D3E9A981B8264D634878F59E2082008F5E4D09A06D673C8C185FCD\n"
+":402DC000D00040BE109BC4A8C180540BB30C0B134023D4A643D103C87A621100741DF3820E20A00C001A663926301A063F2022107CD32F493180BB3A423F36540847E6FD7E\n"
+":402E000022C05A0611704578F7544882E087F3672890BD69B4241CC606997C55DD6202A9CFD15725E703F210BD32E42009A65D12BE15B01F3F22A5E69A223C80C34CB69ACC\n"
+":402E4000C4B6628904A840B027CEE7025A42079600849929BCBF14382483A0C78677028923917E5CF71D00989A6569065017A7504A6892470F9B80C62888747CE06220799B\n"
+":402E8000A65417B122481431A34283CF6CE2067975107A6C3470AA00A408787A644B3F0E7D096670743A7083E6911DE3DFE13A422F3683951F3C07613B0934412075715B40\n"
+":402EC000F18512608A180D0260A818002316CFA055041D510C8042305B10494220208203A48834D020CBE34894288A024C4D3C3B595C85134C9220CBF3489088302522442F\n"
+":402F0000D323CD2236420D960217479F0912488548016C088851F134DCB0489A243A3E81751EB1FE1944300F921DF1043CFB444572C3D15745DAE787E28051F38610F0F01C\n"
+":402F400051F3C1D08E224687E64061E830940F74E58F44E590442860858882E92161136888151E252A234AC7023A9219BA22077885C88BE0382400583547202C1A084E02B5\n"
+":402F800037C39993220EA0C0119880094D01BBCA8C49303F067DFD04A6D7692C15A6A8CFD3DAA20179FFD91F0265090A6079FFDD4BAD43CFFEC2C1AC2B79B62445F35C59B9\n"
+":402FC0002940027C0927FCEE1840917A0413E038EB8374FCC9222154488264B73EF12F083A8CC6394D0802E0A79CF44C01D2C9480A607A5EB8B2E55005C4FEEE3F1E914F7F\n"
+":403000001F01F7174EB38E23910144C8F2C06C37CD066E9979D4C4421ED6BF38B130029003B96F87D2F8E3D5786900A25755BE8881C9B24B122C7831D4C2F024BAA64038D9\n"
+":403040009D468879E9DAE103071368200242EE96C61890E75AE37B90F4467177A5C8C500A38068420EC6C442343D21924071E5105E90441003D91EC4071640E66F789E022F\n"
+":40308000C765AC19A088685F695C8A107207841DC00090448F49DC100D80291F154D106BECAEA9DCE44C20F38E78B1873E0288623D102A82FF2C3C1089E71AB1137CE3388E\n"
+":4030C000226F5E51201A8D88F9C410C994BA483882CC4908783848BB8EC8BD6910979FCB0C9868444728F8BC16B844B7A7788894470200EB0E2F0291861D149A98121299DD\n"
+":4031000040A899D952422901E7500377001D9DF57739CCC881A6D52C300F9A020B14F000D10FDABA63A111440B0742318F9156901A5B48482315828F0D341F479F979A6E36\n"
+":4031400044D6980AF5208A1EF708364D1360B8120B7F01BC8F823947C52EC4027ABEFD1028D734C9F0189E09BAB69C44D1F4AEE373E3D3F54401F54028E5F00F961144A2BF\n"
+":40318000CB4B22D806B0A013C13C73C900E4F811C68907C14DE409F82530AC58405883E2D262A2480140E84871A148C8124C22A2487703C0F90B9468900649844C733B46D9\n"
+":4031C000280B9123A4BE0ACA004F0517BB888169619DD20154ACB200513C14C7243287B9FDE2EBEB6893018A90CF960222070AD0A1D3E6CA74E5B8B137C60E52EC41E124EF\n"
+":40320000210415216CD5049F9DB6D421403F3B6D384F041E97C42F3B6CA40610D66D419097C0D08778905292D1890C407592F1B019280340B76F2C0F6BD28F815C881E8993\n"
+":4032400021DC0843D2B602C014A0072F4780261674310EE4162450E96B0128B2340BAF998B1239047E087A2EAC5B1EF7741EC1BA1EF3EA1BC0C331C87CFEB886942070ED6C\n"
+":4032800001820793D1240675D1B8B1AA9F163D202A2C1149F87E48AF671390F2C5641DF4CE20790B64D029828F3D7A0816C79D980FBF2F878F0F89AC2EA04D1A30406481A6\n"
+":4032C000E2D4A4C603D9008EF301D83EC410F08A389FDDFB0A44866CC081C150679C1A3A0F2235453F2EA208240601A120C85AA1C7C344C43C014C1C100AF1BDE1034F6948\n"
+":4033000008F36FC1EC79F2CAE6289446A9514940D711C24030A41038B9520019D2079480E84A9E0AD21C072C25280067501E4621D7B4C2C71F4E1E7DD65C8DA07B46607A25\n"
+":403340008A38C39EA2F443A82B08BAF3B4588206C100401E45679DA25202EE01321BA1DB87C78847E00983E8DD4163C92263EC38F238A3CEE7C810BCED14A79DA20821F5A0\n"
+":40338000DA6A1E76DF100CF303C140742B68CB0822943D1000189A00DF259523ABA3C9C5814486EBB01263C50EE59D3C5D1706219758D8092243521008AF3003C4F62180B9\n"
+":4033C00020284500411A06038845E07591093D0810A02DAA802289A27355085AB3843D33CC61A6438242174B88CF4C1A21C6EA8421EA36413472D9CBB9BEC7C4DC62689E56\n"
+":40340000FCA4790D7C30EB2C0707D080E40847CA148B19089E4409C1CA13D2344F0245025736FCBCA546392863D457A394B62761118C04BB7CD079495930793042782D54F6\n"
+":403440008C110480D130886A02F288E4034F0DEF97520C0F806107D1F763CA4DCBBBAB50F3BFD979DB8C4DC358DFEFB081150160A81115C2C1002023C160A01114FBA1F885\n"
+":403480004910582C047CCFE42C11A3C1E7DC38426C0F059C188A1D81CC5DBB523E62C911C40BEBD642B3510E20412C0BC4001231560963B52E325A36931EB66820241A906B\n"
+":4034C000238D6C581093E57EA3211024368640DEE4BD0897C481EC2BFA0AA4481C5F64041CD2A2EFCB81EB1791F3CAD99AD1043F313F881E3F1A61302A0AD41472190102C5\n"
+":403500002F003EBDB72EBBFA2022F003058129526512980866B014BCBEE444C0416E84B30045B1EBAFBECBD23386395B810D2BF1C410C49F72D588216DF48081393EADF386\n"
+":4035400019C867F0700F93D30F89833A00C05FFB5C14BA42307D36BA5A5B21080C2ED82F299C484ED83140D622AB2848AF196E17404D09D3C545C4401A029CF693CF1A12E0\n"
+":403580009BA23587A0380BAB845322AE692B1F88C64304435813C73B1229BAA568473B9451EADD61C414364C0F0A54A1A3EA3B9F51C0208F840E8BAD7767D4B7E2C10011DE\n"
+":4035C00010453101EDC7A124C4FF4BDB880DBBBE8F89410862288C6208C71F4E50980E240CE28867EA9FC2208681F4C508C0E2004328828EC60B2208291ECA5AC70B5101EE\n"
+":403600004404F87F34C6534C5624814C1C40491AD9C202601643A74A0691A62A0F2029240A926307A2970A2CBCE00281A227DFC40590EBE70CC1138B20D94005F08839CD74\n"
+":40364000007610A5184E812007A00C9F88820347E397D6CCE9484082038A20B61C4C0529100DCC9062014457C411ABEBFA4100C8334441B3D0941E703422C4A08B30FBCFE9\n"
+":4036800072A200C4A250A80743C0CA81893DFA1C221B051521208C05DB9F842D60E0A8012888030C82048A23CBCE3365E70DD2208F3F386F1507133D01CD80E83C23D6E5F0\n"
+":4036C0002221A73181043A9445A4389069CC42069A6129279CBC2511ABE5AD4107B9350081C4B1800719E0993FD7D9E56710244CCF38A50F9C50849150AA00E56603201FD5\n"
+":403700003865116266A7478444E40E2270642A1F6BF82394CC986998BC885CDE42E2BE9BF82312E2010811C05C580D0C44489CC86A572A60860200A1F697E8F1C65120817A\n"
+":403740007288F7A5C99F0A35EC0C170A05C8F080940E24C8DF388D13052A05D1446C84A8244CD06868ED2DA18931E00F3546135861238EC234A009EC203E736A3AAD005C1B\n"
+":40378000AE2B2B20981DD38803405A6393CE082C0C02066F7E828B05883161030747B397D04D646CF4EA59F8AD18452E412A45107BE7151306133404FB10802C0CF9C57593\n"
+":4037C00008B30653E92A711288207C85ADD3288BF4E5C223101E0FFE1E292C20692011489110C9528021F38A10961577020D901024063AEE40B028D33543D89119148A46FF\n"
+":4038000001CA8656452AE20466249421D026067C63D05814DDFACC45808F1246905D140490F24863E501A3D6F16A1A415104300F63E91029176604529D8A665B18DC88450B\n"
+":4038400040E47961F3008FD6436800C42867EAB524020E4B6E5E69022E4DB05AD5A107888B8A84D0074E12007A3039654083870F2CA918302A020F13AD18360507410FA939\n"
+":403880006A44D10489100BCFA0A45C14658805A5824B08B05780978911DE718C54348A137121E3C3E08A8E48E8E78B0A315E6C5970041A848C8162CF86C38D93D523D12167\n"
+":4038C000A859E715E6CB648F47A740398F260230A02C0BC330D83D3C202843114471244C13C553C05D17C6188318C671B0711D87B200852288E24C96267CE2BF25495C5A1D\n"
+":403900009726018E70000318B6781983D884781943D0D83985E7818DE71591C0001CEFB84F00AFCE2B277CB817CE07B2843816CE07828816050379DCE2C02AA0190379D85E\n"
+":4039400062C01E3D888781483D88A781443D88E78141D234C2619E04F0F639440935D24125C56B44963A87F3C007F38AA21E87321C1F20476935848C1EC583C08A1EC5A3AE\n"
+":40398000C0881EC593C0861CC50EC59123C082AEF2AEE23C07E892ED68323C0788544CB3C07452328F01B99198780D4C8CD40C8C8C53C2ECF06023F38AA90B912899C7800A\n"
+":4039C000ACD106780A9929030602879E8004713C04E02F06F01C1E715230DA10DB2B81B381406320121E23C455C2C0AE40221CA041038A2F0B60C94A0704C0EC9498344372\n"
+":403A00006F38A5A37CE05450136A3E714B136A1C4937E3D10045B00CD07E0738AFE0B03DCC080125B55517B3F94A203A7C450C0EA019B81AA0D818690381079C56D305B377\n"
+":403A4000DEC44F3C45FC83031490D0CA2809922177AA3707319C7CCDBE46FE9FB4790FC881E6B74F94882C190220896C0C9AA06DCE1010941CB118BDA7D2381A0021F0EA94\n"
+":403A8000E97631E0901EAE9C1080B606703508508FB7840A10B13D1683C08353934D24B7A88FC4FC47B122441FE4EFCD813EA1E313934D245E853B1034D0018180C804111A\n"
+":403AC0003C8AD08067DD9089F8CA88FB15A8B18586BD904D73F393940809DCFC43E79301340FA24029F1A2E243A851DF7F227D97A147AF00C871263BD0A44F721C440B3132\n"
+":403B0000B10087E884C920BB4C08F17741E1E6F101038ED014EB214D33BA144083B48642280ED4804E3B942307B5B31021C211E4D52C4018320089DA021D7B44886552CA83\n"
+":403B40001AA6E94A0196A22F9B3B0402294241E8503A009F3C5088428106681BA0617D93BC262F51AA09B848199DDC124079647E9DE3C1A0528025A989DF02650A07F9A290\n"
+":403B8000730024A80AC1F3D53F0800424D2F43AA561132833E3AD0467100007B33E04C51C81AEA5E912788600C86186990E1760607B2D610442F40DC880C0E04049F8B9E91\n"
+":403BC00004782D4B0385000FD7A2031E39A1425D540A839051D74E22C17480481790043FA83BC9921902EC29A801109400734EE5E8282991798E78413F26AD48207590C30A\n"
+":403C0000D9DE6A969E6EB0102C0CEAD3C1A8612C883280F13C4D52C47BF13280B7EC7B13F1E334867C6070CD2278821847BBFE40A124C20F54DC0D6E06C0DE2048260093DC\n"
+":403C4000E4905581780B20A8D229A2C0FF338011F6E8C40083FA100D728CDE004AF303B11A88782C0FF3C513488F24805F2F438E173027BBB43C89202B4F2E24E151D16E8D\n"
+":403C80004257B0548000086B2C2EEE7E40D32149311791368DF8102274EA40884041E240791C3478FAD1767298851C7DC91F53AC90C1EB3241238A8283D4EB881A044428DF\n"
+":403CC000913042461A246150C7B548CC0DF6E2C9014431FE37F65AFC9CA19F45EB0900144101D24B78E8E44032ECE5EA3352F4A4111A44264AC08BC410A538810428940223\n"
+":403D0000EF8822CC02F0FF78F2AD412803DEA09C11F490094D018BD5A0023E23E388A3BC5C0263405E8811E147C2AD453681AA3B01A2F04A3011BD6E1B35D2056F18CE132F\n"
+":403D40004455F424F1771639162051E8061A4317A9EA46BB4062E996B317B50BA455040680A9D8CBC55E2186048D019F8F7726337A9F04C5544D9F48108F73298815CA2658\n"
+":403D80008454D43A8F54EE8D9D04502A020E3DDC4609499BA25DD9A888B440FAD3207B480C981650280C0003B8334BC700C2C00E7A86610488BADD2D0F66A10881E74666EB\n"
+":403DC000AEAA0B82E301BC7A9400AC3216FC0AE68EE42A11A40107CD50B885F40C520230104F03989B8068F3FA08FA9D7C7AEF8440104F5C71361880C347D66688853D8459\n"
+":403E0000BCB4754220067164004C037268C397648908801A2068075262AA10B9F825820114025CD680102553710DAE4F400715D0CE7644D10CB3C50676002002137931D1F8\n"
+":403E40001A218729182F6B371861EAF162E41024780B5A2E24007F6BA423E266E3F13391667D08099E043C3E18838CBB810104EF179B371817CE0951B39496F96F21C133DF\n"
+":403E8000D13B48731C02CB202E400841C137300940883A427AE091407705F1030CEC4305B10810427C23D21FB3D7523310231C20849AFA240213C11EB75A394080839C6059\n"
+":403EC000850C8017ED0DFC13E08CA13C18E53C05D4F8E45004C7881FC9A38C3CCF031098E9254E804BB83D470D6000DC8404CFE06CA0500240E0FBCBD312D00A799FE6798D\n"
+":403F0000FE6100A77C1800A75F8DFB16D7E8096167E31C796289DD810699AA387A953C80B1E0FD3080F0881E102188081A383B1C9F219F68BC10F4198006B0D26A8D3E0E7D\n"
+":403F4000C31C9A31298E003CF607BC657C3CB95C805306AF40A5F1CFC10C7C99CCC63F716B1CA02F060F05F220307A9A71517913545E50BCC3D514664AFAA5A10144D116CE\n"
+":403F8000D64D0163CF4A821E808281AC2BF8D9247A1D2440C19A960170021A22A79326C7CF4E2981829451F9C2E47CF4E480182144189A8F9545CA7111353F532B2DEA69B9\n"
+":403FC000F2834C484C95F535C20189A21DAD722132109808101098082D3D4D30F2FB6F3D859500443A835439560E1B06ED8366C1AFA9AC910D14C0416433F07002628F4299\n"
+":404000007121EA68A309BD80BC8FA9F78BD4D50D74B05178EA992D3521794290CB44434F54702BEA6AA6BB92309FD7DFBF736CC1F327998143204400F2EB644A6003564A25\n"
+":404040002048D5EB36B130801003C79864689C7D369887B15147005410A0103868DC86206E8C087C6BD026FD7C8FABD5870C289BE681C0108B201F8AFA46203B314040D3EF\n"
+":4040800048DE851F42B28C41419312011CC48D8FEC4DFDD6388A0114D33798090D2378A2182088D3920C60146204C4069F43C291C05194133100861C9C9860060090B0301B\n"
+":4040C0004CE6C1BD0A4011CB57C05009F45041208880344DCEAAA6122D13C7416642B067D79F02699B1EC3881363AE72130B3B05F88E1213C23F237CC804C6CF87CC47C036\n"
+":40410000ADE3E8D6531E824F4BF291AA689E4051A4689142079870C41036982B840F3A0D090052A06919A490803C88814EA678836344C9980009196E520364082BBC8C5FBB\n"
+":4041400025C901D533C335018DCB85C8E901668260242390348BF3A406EF04E1F3E418B0101AA6002A2A82040F81664E2930549A044010242100C1E880F1CDA081BD747E4D\n"
+":40418000247799500AEE283B406EBA452F329F14B04AE21440F1461A2010F4131A258122607A0AC50297B091040137BCF51823101C1C8243AF55AF181FE7A8D4BCCA56A143\n"
+":4041C000B2604EA0C003339365C9345C90B0C4DD3409843DA25843C04851ED6F6371410104B54E01A048111C7F0CFB92488D01EC80F16FD89A04A033E81D82007C6248893B\n"
+":40420000FD711206B1204F280E5E5B092A9A016EFFD0BF28091D5E609002279537C7BC2CC88234C893888435C89E74DE358E1DCAEC4081B1D3D3336950F4370890C4C041EB\n"
+":40424000E3BD94878038D12109908100500DC27F1E628F12AF00989A03F931E77821364101E4BA2AC202BC201E0B8E66505A96E12E0790B8D71C30AA002FDC5212C7A268CA\n"
+":4042800087999C11C444045D945E40582FE075F1087C529A90824197C79018680E06DFAEAC04A3023947908C7C80A04123406E28413AC703406DF49B38FAB5ACBBAA787AC5\n"
+":4042C000F66C40CE962D10607804C0F2881BF07C04EA3290F724C0945CB7ACC0A98101E0B32E0CEE3E326029B431F891444322881305C5B25F2704842E8FA71204B9310EB3\n"
+":40430000140683F4BF310B8313A5C2489E40E7007C14643747009E4D0808181DB6C043D6D82221011C3905E731081372B1C13D3D39E22011830400181C5D09BDB70E21603F\n"
+":40434000E4446A314441F1BC810E227783D948711087E340BE04309A80F462946248F2181AC221461579A5BCA842196FA3923E23F85C4F764E00C3075F2C8C38EAF6642C7D\n"
+":40438000EE21323C076B8B10070F4CA46433218BBDB70BAC268855B8404422411EB09E20E03847C390C41C7B8FD840FE47B457D50823B1070827282C6642065F3022577864\n"
+":4043C0001E14A0437CC6010DF29B84151319EBCFC20F6585D92305D82C08F7437179B10884B1F042D9CD8AFA82F316E27C01D6BAEB90BCCA6C975D7E174F59175746103901\n"
+":40440000A4EC47BC1C0CB8478051906F730086FE18741E14E02C314904372DBCC5E843F9F63FF633B0C11033DD4D8880DD05582061D40DE81DC40D2A81BD7B608D05E773C5\n"
+":40444000E989B51064D03687642C8F83A207CD3D445B0605B797340C062C432540384A0CBAB3610C2A80379200D7424E880BE5FE02F2F868821D7A445CA900B979011308F1\n"
+":4044800059A08D62E4960007A0B22072C2448E103D7ABA830C72F262BF2489B180963847B033CC704878C7CC59F5D8F0F993A8BC6506260F7082091E529C85280E3D0CBDB3\n"
+":4044C000C10C452F98E0C7A45F46FD80E6884330013A061AE52781BAC719180C1CA7988B8140B81972E1840F354A02943C27FD17163E6DC9202E930B35EE16BB027C0B25ED\n"
+":40450000BCDBA460598D1288244F8192244B6520409F0359144BF2B7A8F56680847E734218E1003CA8B821EB030970667AF0B88B8F32BC100A6810E5287D6AB0F40FB88E3D\n"
+":40454000BDFACE41978F9584D720FDA2C85CC3D840EED5C9221BAD49C79A9E1692384993D80103C220C8E0E433847691E0B01B2202BBC695250600693C873767103D127B6B\n"
+":40458000D010A24F77FFE0CC07E775512B80CB560F819E449905EB72099060B600699004398B02680D844041349589A0D21AFB0DED2B780134C74EEE178E058AB6C0B930EE\n"
+":4045C00058F20268972029755300129A2319A631F985A0F00A88FA1397AC7B8CBCB234C45FEB7A0224C622F40AF37122221FB04104A5E91661117CDC3081B037F95C8C8050\n"
+":40460000438432CFE6405A840EB2C1202C1208BD70523E9887234052ECC07112CF60040E14A9421A6EA104FCAA0C669A04F1AFD94D23DA7CA443E72F98142F551972D0E13C\n"
+":40464000240D612086C52407F065E5CB3321819030F6852F0D0808C27B21DC37420610E00C9CC2E5225486032DF112112AB42F420D018654298045A81A43D660C90C0652EC\n"
+":4046800024117638154D7A895858C353051353501F1DC470207582C09DF35B0179AF705810D036D875C8B096A378140159B080A30919000D06E13A07012794419656744449\n"
+":4046C000811F8D32D4301FA750347D07587E16421A5660F801E9DA52D90588C0E4FB1248F49D9181199CE220143EA96E10CB97871F992712CA4E2C7BC3E66EE312C78D9BB7\n"
+":40470000B0428473980BA8928BCDBF4B76427106F92B42070988ED93F4C0A880DFCBED8B1A884D00699E6691E64D8004D0404D697B44D03C8982A8983B337504402408D300\n"
+":4047400044F0ED33F1390BD108A12809B284662F8982AF5B9C31631489424D144C7B7C8C4653F629589030C9A28C983B62D96183110290983B9D14883149A294983BDD140A\n"
+":40478000A83189A2990783A29903393423A0111887AEB48F163911A4F5CC919420380458D4311A063FA5010B632A33F722184FEF3300173D252207B90D075B1E974F99A0A7\n"
+":4047C0001108D8EAC0B8F2E8D8F98ED87CC7A63E63C531F12F2FA01305DAD7937290C7E60193A182560E26D0E45D0E64D76BA39045EA15F21011D25818888FB565C981206E\n"
+":4048000031B6389A25378574880BB0909B40C7963350CCE2103BA6A28B33D07C9E003A82B2E970E1105AEC1711D55717287A2D568972C562EC1C51EA1131C61E1A44B1F4D7\n"
+":40484000EB20CC42C780EB84CA1C8AAF22C997B9F54D868400389E08CE0440447934C858F269B0823E4E042F706D088C1881EC08418F7F8C17937FC7B2588C2F03C8206C91\n"
+":4048800020F26FF25DBFDA87352F1EE128404A1D4F1C9AE407B1EC0F074131887BF26DE0CB02F2100C4013A48604C52831D65E17936F88021ED0E7A3620E8083178B08C4D5\n"
+":4048C0001B0128E00911C244026274848131420C7C5F5825EF97D887C9BA0C8CAB61179365CCE201FC9B2C87935E8C0453000B3BBC12D3608801E8F731B8AC7BB0910F3297\n"
+":40490000413CBB7841896DF4D20197404EC69E388FC0D11149807099D0278F995F44CC4F29CC7CC7FC35DE0690845100304041793D30BD031EA752138F82CE8A9020348A1E\n"
+":404940009D8CAE20A9038E3408601002F21A108023D80C5D80FE501D234836268603442826BBD8744B10049A008B1008D00CC98EE6323AAF0348312C4638E08D1016304685\n"
+":4049800046006402E66588CE7F84E680598C04CDD401EEDE071F31D9884026FA38B8C29F2F1E0E6DB88430E3DC4DA5E67042A1E069849E8068109250597A8226F63A1970EA\n"
+":4049C0004AC9087D56F0617CB12F5F329798BA4424346980843224029EE5C510CB642020302CC76086AAB07CC778398908041988C202108D0B08F522B1910CDFE82306D450\n"
+":404A0000B9596985D9B792C01A162222601E1F71E88F98ED90F30DB21E63C23F30DC2977809B451F9C428989F130BFCC6285C9E698038AA0C880E66145E616C40D633B39B8\n"
+":404A4000244513D804340CD2D816BFCC2B342FD42203A7C9C84436BB3AE081E275036BA6BB50BC884E2007997F9F2AD3227F1C786BE350F30DC09825D03DE7B382354BEEFA\n"
+":404A8000D086120C85098EB014150A41020CEB208B9286348B934079117CC61C610810308040F1AE5B12E0A9A25B685AC41A0C8A0C6702248080813C09F97D2CBA1A04BC46\n"
+":404AC00014423E5C0F1C76A00D841E5F4630E897053CE7E834243DA7AE407F9DDD889704E204CA51F2DE1098BE1D0B9F6FFF8EBEA47CC3E660306219101CC93932B90A5E1F\n"
+":404B00008D8E48F601FCC3CE98360719C11781F7C7A0EC44CF08750483E9DAE2BBD07CF9363D32325B2E98ED4EA43F065D596A25C1945C79E1F46567EDB983014F50C8A0E4\n"
+":404B4000EBDAE60C12A01B3835EB43D7B4481E0A07E0F418C4227C0F218FA86E8A1D13D3AF5A8A24C41EBD6D630090DDE00407903F91003CC2BA9F548F8B05279856511B3B\n"
+":404B80001449238180D2AAE281A47839EBC889210BCC6F4223F9952887BF191B08F7E6359134063CCD211E4DD18CBB318BB02305F8798E144C6EB5032ABE0ED5E81050A5A5\n"
+":404BC000ECA4F1083B2F2C42037FB8ED48D1ED30B13C058D02C1121D7E40776801A62ADDA245C84F7651126611701405C010202B12661F2CD412061458BC480270BC2530A7\n"
+":404C000046737C7F0E89B09797448824308B3D70B620878511C826022300D6123D848C44F02206885526167E01C86AEC8C52F30AE2188705AE71E62018D01D04CC046601E0\n"
+":404C400077D5502447DDDD03F8CA529CC6B878479C1A00A2D719099C3D80A528CE0B046081060B5A980802EC08F392C8F971C0FCB2703E614612973C307BC6CC716F413E52\n"
+":404C800052F26C113402D24072240D32ECCBF2E5011200A79998058B030CCE16C300A4D70ABCC2864C50C033BCC282645A8114C0C32ED1D2BD026997CC17C898A52F9845E5\n"
+":404CC00047CC226D1A60E14A08F5AA889D68020088E8008AA12F98449104C220045326FBA4284F6312E950250D23D028F69F90810780B3E068633091C32C1D938886412131\n"
+":404D00006BB50982C2FE8479752220A109E615653CB1B459CA45D8A845A2982C36C1D7B6C4060241973BB11F69D8A1CBF0C7ACB18620C3AD4C41047AFDE475FBA2060167A0\n"
+":404D40005461748A2889DED0492D9864C5FD2D091C03F016694681B23FF432E08140598D3321DD2B025F4290EDEE67722C9BE91E121F8CF2F8081E4C5F2C5F15A587CC2A79\n"
+":404D8000C2528AA6895E4C8064C884A7E0614160BA336AD85866AC84A9F30A888A84818890AA519804820D029BAD544460D54D09D2417B61CC80FD879C48326EE1D0288B97\n"
+":404DC000810C7E154A6F30A609A6504903CC29452122210C19246B13BDA5A020F8062F1A3EDC29125BCC294433036102A013995620D72E7D1F30A59F985292F30A3AB70028\n"
+":404E0000A4E04B2A12CC0A5063C14DA2C01861045CBABC48EF30A422528324B240615D1451204B798525129500513E37B9123982E120A18013E36411259C0A543A06F8651A\n"
+":404E4000403D264779851D12941C25940A5412C070182F469F98520CB9260B92663C7CC294A0CEABE5A2A1195B295447DB8512B7021DA486222142C597E022E916420FAD35\n"
+":404E8000EC0680B7DF1F2860863306D6C56B503C81E3A09CE621844A807D003C2077A22C440327405D6728C2000A4EA1E71A812882308214B59DC508572A016BE9A3011EE1\n"
+":404EC00001D9181E0109D24E9D00EF4CD00CB4862481D640E0F21E0F1820606A96112C0113A12A1EA6421969836A1380B0018142779FFCA4190CB985709A01BFA382CFD7F2\n"
+":404F0000102800DEADDE1B8DC7D5BC258DA6023E7B10441064801825049A6581244093A004244AB3C3631C1D58F223BA963480243CA7CA200F9910442034823E5208A12507\n"
+":404F4000CE3FC793BC8807E6383222C604BB36D2460360D607BC8D56443791BB0BA6A50BBB2986183D2972654FA7FBC401F6F5F176A6E8DC1E07EF6F8010FE029B40EF2500\n"
+":404F8000971394790F6B9C3CD9B4780A42A940550CB9FD91F612F23E629C1F31481798A2CBCC218D67FB221123CE320C14F50B21065DD5183EB8CF22EC8D21425340DB36F2\n"
+":404FC000827200ECE55C2202ED5602675C841DC4D422F104137A821C4251E464038E32404101CF10CB334840F1D832103D2638B1AE6791E069AC66F907A08D533495EAD009\n"
+":40500000A4470D7330E42609276C91F0AC4080862C20927DE912370781C9D8989208FBA004ACEE07904F2C0F216B09241302A08803EE4399C8A310BC9147BBDE842203CF97\n"
+":40504000A0CBCF7AE3607028BC48CE2790792311D4003488F0B486F06D08847D8F7A2C7707210823C084079AD230E8D1C12887DF74790F461289750427B9DA0DF31B3110F1\n"
+":405080003644C30181AD6F89F893F058882C54E0DEC14E2026A1950004FF4049DC92A7221C7C3D0E32140D64FC831E80FA5E14C56E25F100086B30980C6CA1CB0291F46231\n"
+":4050C000D0F8B53C7C8B683E25371EDA702C958103713F0924381167F97468920408AE156B0D8BB9F6040C2F81ACF3A2EDD792287C8AFC89104002FAC4543C436421E10079\n"
+":405100000776EB2CC847BE5890AA85FA243C7AD2BC8FF298D21E07602012F334C09D013C18FADD344B010BBB7BC423C936407040B90B2AA848338402EE1481DC72A618483E\n"
+":405140001C1F604179F0FC42BEF77D1F12EE899E43F800BC47709C7F28BA10184F12004203AE800EF1A11F023788CC4003474019ED9DC1360A2047BF234882D7370FAFE212\n"
+":405180000485CD4E1F6FF4CD9BC3988017294E1202FF04796BA284B06487902C0403EFF8C444B43C04CA23E9807A049E1F4B1060D213BB18FD220BB24B488EAA323444D170\n"
+":4051C000F413047C8F783DB9F8979B01C43E3D00EF41CE8EA6FC4960E40B1AA445EDEA72CB981C05400980A508643078D58910A98E76AA3972E20B9AA1ED4BA21C254CC0EA\n"
+":405200003A671B390040793BD8E3826B063DA504216816134510CE0F93A0D90C17171E1D96205A2080513432F730C8E3CA33890100D60A08E034D109B37504B21D469044E1\n"
+":405240004CEA203128C0E0981B080D009FA611872E74CD20849200FBEC38C912382DF1C370925DA81C5290020ED2005088103C00E79F82688324087474A1E30641C0CE45D2\n"
+":4052800000CA4E94BE017010CB96AF202956E2A5F760B691A0069AA07921E3BD21F2E3D0E0000B8820F804011F45BA88A1D466624820041000D7A4F413EC12113C01AC2FB7\n"
+":4052C00083930C206697B0880F5B73280F617C2D1F617A8B58C16F21AE90C77B7199A8792A20FBD0A442137F29904850DC1E130100094C850FB470E5AB3911000A11AC5650\n"
+":405300005E04C71CF8B541B2E0B3D564981A4D1FE77EAD207C4AF63CB56442CEA6FD2384802203CF558F8999E71E91048E920F14F8817E2E071080E91F7AB920A87201C1B7\n"
+":4053400031E938912D0B0108A83F33E8CBAB43076147121B9B240EA59C4403A08EF19670823D47EE4389D40499D3E18740F0900A6CC38243061DEB92474EB1186671601485\n"
+":40538000D6B3894C187B9FE48091CAB44BC9C3E5E4F3430AA28C5E4FCFF6024F7268812F0B0F740698122545101BEDA8B11D7BB4EA7A9AC4F4ACA3EEEE74441EE8A7120BC7\n"
+":4053C00060A22D4CA0F93EB87BDAA24C42D901D40A1F4421F7B5E244B3F68E61021E1CB420243AA125AD001E8E55103032AFA0F37700D24036BB86D04160285D0C01105877\n"
+":405400004DEA99B10AB9D458B1A78748F208886057C95D05688021814F092990107D4C05AFF621E811344B0EB7B62EB0109F30E84961E4C9B19EC07A0081E03B12C0428B7F\n"
+":405440001A6122E5D6C5102022009042096B0B841306CD42D08421BD2E0E20416D4090E757A3E1F2E3022A010658C6FE249756D597567014C65EA56442E5930EFCDA162076\n"
+":405480009860080283078721500203E951F31B91C35C1DFAF63E1F891980BC9CA25388D4B08100F271053D816C2078CCE481B270B3302B84013253D4E3A6C310432F23406B\n"
+":4054C0007CC7DA2541A03FF6301895BE599611F87102898EC50C23881ACE0E1EC2683D5FB0F2B141F05EB0F8D2F041BDA05CCC68E3F64AB08E1D5B40575587AB274403EB17\n"
+":405500007CF230313B08CBAEC41103B09DCBC73147D25B8278060050AA100213B881E3F945DA16221ED6315EBC12F2B29A5E2916138C1B3A25E0069CE4B085B1C79784592D\n"
+":405540000A712F649490F278B1E63051E9BD419947C73A220553623C008F64EA96D54E539156B103C2682C017A2D10AA38AD705B1280D491E29D063DD3C47E1ED7301AC9D5\n"
+":405580002571705002034F7C3B60040FFE5B6712BB14F1798CA8C41F475220050440D841AF082F1BBB4881E66614309816B000A652DC7AA441ED9193999724042F65AE1178\n"
+":4055C0004C5A14C0AF6492A0071B40D6B8C47C3A6E3348F7F7F9DA14C0E30A2C99871034F0EBE07102807B1B85A6407008BDD2F263953842898F74179003526868160AF6FF\n"
+":405600002101276400D3EC9338BC3EB8566219980764FCCA3E3669036BBFCD12F12059825E12EE29E111493B4A05012EE8A8116401178F0062E1E2B88873CB88A74745CCC1\n"
+":4056400059BBC41C64D30F74B5CDC5C3043B13717A1240870DA07CB9EC8881D46CFB26A06184024C7202025F130E8DA0C2A5007112B65102BD28B02514E4271A32B42FFB38\n"
+":4056800086F9EAA09A554E414000780C71E20C80287B83DC80D2EA3912D930A8C0F0E6E0F8E65CB4C24219FB2BD884B21F607B2F74118C9C24C24729114B0A368762F0FB35\n"
+":4056C000F8968000143BFB0BB240B09485F1AC308339712412933DA58657F708555484040B6037A65346AB080DB001EC956555899D8A002551901A19273C0550A53D220D9B\n"
+":405700002902CB0A8C0043D967C74300F12413900039C5398700D0C8841CEF3731F2CBE8DAD204C04CC203C5E09020B1D94F804003373B114DB206A040865D3AA490BC19A6\n"
+":40574000287696F882A480078D78F00B8146802A9EFE771F014B89A208912169C241682DA40BD08F11A20691379D99A2061020B9BE007A3B3522043EDBA4847EAC847DC922\n"
+":405780000C7D66B8876855968F2080CD7A718181353A2BBD17D13F0D69901E591FE57F4EB7164D90DDB420408C7F99FD72B267B54D1945755217540D93C00EA6A7EC8AF138\n"
+":4057C000F6B829FB7D9C40C01A7B21DF9687CF8A3EC4E5200521DC3AF3ED320029C21978F05143A4D13A8800689129E5600782DE1DE72E737E7DC30F2029CB4F40D0394DEE\n"
+":405800001E95DB16188310B4D9057981E0884681CA500806D7B6EF27CB13C2039B04FF8C8007ACF2106BB405079E478F8D14D0F77588805D5D3424072E0744AD47DA6F033B\n"
+":40584000CB8C49860D528728307C94423D730020C858006E4D46C00C19041E343C40D533CAD072484689964008DEAB731AB7118058EA6D71332A64407EF1EA120C83024BFB\n"
+":40588000A184A302B382C4532344C1ABC69C66000CC568184681B7E589645099588D808100B4DD84061FD5301E05C0113C0E04C133176F091213A79984C4F2F1C973C9E14D\n"
+":4058C000294D9F2285118BE22A8122372571034AD0300D3A81A60D02CF3ED4CE5A8A480CAFA47C833A22BD0223A80F34CA124C0AF1581274A0182CC0ABA2406A0247A040E3\n"
+":40590000B505E8101E867018474F006FED30C2681444006FD6B8C574825E3B389004BF23C0A13AB08072E823712140DE88E61C63C0214396C6F83CBEC47B844841100084AF\n"
+":4059400002BBA0D07AD880444F0598977FA10FA44CC7BA0E0AA202EDA0F23BA11A245F748889246811155C03F80817882499FC7901FD93E0236FA3C3C4621E851A6C207F4F\n"
+":4059800051E889803C022800E0020A5304770A30CE01B204763688F747B9E1A5028801EC051114CD71EAFBC88E0ED6821227C9B962331AC3B15E06F5D350E2CF23ED1CF36B\n"
+":4059C000C1C50E0540159CFF3E8F4028B33DD2EB6B8160A9890E6ED445804008DF547B48120C0AD87784A90085205C1DEC472434DA4341C3C3E543DBBB62328F02110A2319\n"
+":405A000010A63EBD5249360681E8C2A1C26A10BD1DE54288F6616CD427B3988F57C288C5B5CD95408975D15FE3DC9E436FF0031006BA2BFC767972F59AA10F26881228F653\n"
+":405A400078556CD72402805EBE552D7B988663C0A80487D6642EA8F01EA46B10303694979FF90C33ED35C100C1F074151081D0B815113AA8686BD0083872F4807972C4A2E6\n"
+":405A80002BC1DD1CD19BB67653D2D4220B9D0480146F1FE47F7693114A0702A1EF321A2363AA914580A490013BD768A5A0011DA1974ECA10DC190406D82BD0D6C384B00439\n"
+":405AC00092EC111E8242804920CA2F4511C801EE097311CA6EB04B11E4A4BDBC7C85C83D056A60CFA82E07C66B689E40D77C668807DE29C5E89A822FC2408EF930607B128F\n"
+":405B0000CF204315C87A6144B47725A5EC22E02A08007EA6A5100CFF1975B9426D790BC4BA0CF67D81EA6010AB3E814C507437718740786C18901B5A3218BC0B6B6E2E1DCD\n"
+":405B4000B34016746099A7A23AD64233878C27857122578809BA8E13C2DA650983B923010156666103A431A3EF22A1B718DB787C9D762D5B282D9EB68861001C8D3FFABE2C\n"
+":405B8000004CE3B26E2B6C1E32100B3C5D3C5D4B863E361516198A40274AA3004AE9041102CA1137462A2071A0129A2134DCF27D2836210F40201141ED2C9210B48B860DE5\n"
+":405BC00006598123A45D1070D10708005C0F0B81AD7EB159704D2048820347D08AB0C18036FCE1114DEEC4071C71605F0C277007DF4C420F76C428E3EB187101FCF58C996D\n"
+":405C0000F207DE3619AC8385C407836280800218865B8828D410929A52442F922A902340A4478662979C1F87985B19421068130832F41692B75CADE341E1E64F0472D1F31C\n"
+":405C4000096FC12EB8542F5C9197599908BDE5BF6939628E204D6EE30D121BA97147DBFCC375A0181E3D2010127E2298E0BB44BC92DA8065EDD4E509291858F844D3404E4B\n"
+":405C80002142EEB14410A80E0FA9C910A16853A0A32D50190FB478427ED91A2F248488884005A4077B714FB4534425E90FE4CFAF2E6C081C789F38CE843EC7D020B9748641\n"
+":405CC0002A542840336F68A82297098C18DD628565018A6AF5833890BE21C61A1C4007B961482F294C02004D354319B00A5128950CCA502C21C5F425CA192BC21EF81964C4\n"
+":405D00007B7B044D30A413F65BC0DCB68026687320010731A520086820083E1E2F2A803413DDE5C42B9E8BA91F87A8624405E682A20D212A80B7996B88A478008710025237\n"
+":405D4000895E1DD9106FD93AE36610028D10500D24A85110A15F75F2976FE48E93D44F0056EDC0910659F0D371020F7F455E89E05E981251C2DD03339F6FFD1B172D0799A2\n"
+":405D80002F840B0347E3FFD15F2218981B37D25E00E09ADE1AEE401EF268E21320DF9C2570639B1A9F7C7F89803B02C691800B0C1DF6B222012174E017F9BA244C8405C072\n"
+":405DC000840B0D010024061953A0767828FB347C4D12E91C81720FD0F1703091C69168061640D0C1DAE7846816A88185356611B3E11A244B92436250439BF58F922587B2F8\n"
+":405E0000918415D6440927DA57C43C977A6741250703AB01C8EC1C626F8425F82443F45E4890FE7443105B984C8F909D87C1FA03D041630A2092880C385BE000E1B43A0348\n"
+":405E400007A9415E0A03C19E5C025390F10A29C9CE1A812EE39E1F51500E2AD024C16222EB62D8EF840BED33E41965936409EB8621F45C08EC74E53D8627E06CD221B000C3\n"
+":405E800008C1D52B6200859D4C6E375289D5DD93C45C87A3884E116B6384B910F01C0CEC7BB26090248073E25B010340B3EAAD8B0208EA85D108C8C3D8DAF089899C40D667\n"
+":405EC000E02C8602A228AD8C7B7EA11340D254584C2EFD69130A425E10BF104C87010D11A3ACC7510032374BCE4884538081081012001E5D60403152CD88400B0182438378\n"
+":405F00005C6C6311202892038055CB5ECFC76EA45004C7580D498B4A183ED3311D0E70861101E3E462F0ADB97A0C78410CD432F2EC5084A9F374853636143D6846231814A6\n"
+":405F40001EF5ED708609007E8F99498035005014D4250F974F0C05ED4372D801C418F1C431449F4B2A10A10424875EDF2212241128218210A920AD4166BFC883143A76209A\n"
+":405F80004BA1C49A1D8481CC7AEE5812EE3963CEAC1D7488809CEBB043ECEB620502E400D3CB052069C548FB0B2FA113D03439898098CC25C223D030CAE51C2A4013062751\n"
+":405FC00001B37EB0037D951E2608E287942DD0D07C88103A865D89D83E3F2A210BC3C905E20251327DECFA6407626E10103F04BE611E2EE250100CC81D432F06FF118B2263\n"
+":4060000063A6E08E298CEC22C20A12C40033F431F05461F386843282846047D9AC83ECD683D482240F7A66F0FBE5D0AD34874DC98FB30C84D110B395CC7504747E6268F4E7\n"
+":40604000A008F2F6F1013C160E20E1DA037B5FBC41E862A420C5D8078F88486B0497629E889E07A00902BE9A411D01589B2147B28A87C34122048D51C44B061B2B42000818\n"
+":406080000989220002046915773BD1BCF83C6ED63A8401F179E8948307566A081200A0059EA400087401634153EA40011380203BB5E7C48D8F3F070D0B079FA02507D4A0B4\n"
+":4060C000A23D86BDA27C7ED9E4138086E6DE4551225317A01799CBD2D2701662497984A0417ECDEB1303C6102539001C0D82672047DDF283E66E12DC7A64072882729464D2\n"
+":4061000028BC2FA43061E11782B9A80A508FD23BA5EC8D02F340908478030CF50C7B33C110784450B8C8F805248557D90F2F6A1CA0E10231D88E0C0034826DD23449808911\n"
+":4061400012C0234FB8700B5380905DDBBC88E56210184C601A1B068181EE0912F72CA1764E894F20101E01078B9A072DC04F920C8202C0A0C702E0DC281DA186267E69903A\n"
+":406180009F9E0BF211A3D52A8206C884C2F106517ABCA087D130E3F067E88FBB909081676F7E4188956BC2ECEBE2EF568301AAC8BD63625CCF78B0D7C5DF03D49DE421EB22\n"
+":4061C0004F0402E74B0221E11F2830D9BFC7B902CFB97410DBB60BDB0CE9EC61A8B024002410E014686007A359441A083BC9010B59A1E0BAF2DDFF10A480681F79D0224110\n"
+":40620000E73309F4805BDB64246B1F44314BD794A5E99FE122820ACB80C7C776C21690DDEF903CEA5047A8810C816EF7C8448E513BF72721260A1F39370839942E40F04214\n"
+":4062400021F9ADC8460357658C1254771E4542C46035D02186B1FC5529C6034CEAED49110147B15095063BF70A444E9494101086033BDC3C8950781B8610044D0C7700A4EB\n"
+":406280000E2A10270F7BB99E13E063BE5308082868681AA6A91B5AD1D1C923EA6372023CDED9204744AF493BDEEE2881E07035AEBB3340CAEF770480E3281AD7559EE4E8DC\n"
+":4062C0004079740D70E369EE6E11ECCF323018F78B28835B6FE1F7BB80984981EB3180B08ACE0251CDE557E06B79B8EC7B216C7BB52864A5DF07C596B4240F9860C480CB9A\n"
+":4063000035400E1AA311304D62E47E0D5862FAA00C79EC3104418A06A96C4A8B21377A2DBCA255A80F604128F90281B4FA0384582607344980C903E9300A203C403C5FA0DE\n"
+":40634000F0177C0A6C3DE8B481488136D88F5116FDB130FD8126D4C601189800197C214280F207200E1800116A6F247B03900E92B80F40CEE65C47BF4D0CF622717FDE8BD6\n"
+":40638000444711C6096A7CF9AC28404EF45C2D1AB089E78017DE86285A3A28D01B6029770A1D44922C03C0576B1711F3DE8625E253A2EF42910F3D5A6C3DAEEE31E1DA28C6\n"
+":4063C000884843BD0707BD0C56047BD08D0CCD51643C8E130D3F06C58B23EA5DE87EA03D88D4481F0DE918AE680C8040440D141A2CA22741B2743DD28221ABB19008D91FDE\n"
+":40640000CB901F60643167D381821DF6B6B152602743E2741CEFB47196202BDA0446070073B5A14DFC3C50EF46831D94876640738039B00DE4D2596F79BB2E849410CBCACE\n"
+":40644000C7E230F9F5E27A70C88610285500043F43790883DEE0A749C4153F090007C4CB2662E0C81217CBC4421AA009789DB44720AE4E605F44940B03AA010B600871F57D\n"
+":40648000186919AC01A8F55B0A02021BABA2182F0031EDDA057CD3723E120F12E0E20140CB7EC76DF50F38EE43CC30B25C9D1EC6761007D5F285B56A8803E79EC2EF5344E9\n"
+":4064C000BC26787DD13C77340959DF26C87776A2C1A1A57480EA29844CEEEDA47AD5092EF5463C39320AF86BA05827E4420F410895ED5CE4424677788212C98D80BC7BD1D5\n"
+":406500005510107D4FCEEB82E0C1A5E8198163BC210BB60447B0FA8812AB622C725F8B5F523D22305DE6FC5E6E211323ACC80F493A30420865AE1021E16B919108E46B18AF\n"
+":406540009D9938860651DA4A04F0EFDA82048D0F3A9D9027D0360405DBF47BD16849A043BED7C40B2FA18BBAB98416F68EE902DCEC30C20EF4584F03F8F77F61121DE8B04A\n"
+":40658000C042B61C2FBD16C441EFB6E53CFF3E443043E33C31063C527E5DE89639548268143D724A24A6C19C80F1ED6973F60E9084195C241244990C11660E14A10C95623B\n"
+":4065C000CBF92EB309106A508025124544992D9CE4C909789608E47A8B1B7808812687A91B264C55C65B2F90813252ED0201027A43E8B603F2AB80EB97E1F6F8F10F64C7AA\n"
+":40660000B9BC0BBD1CD002C710C9212D9094049CD74A1011A13121BC3010E4E05B0800A8140888E11494427ED93F30408BDD71444584102BCAD4E6C9164EF8EF484161283D\n"
+":40664000E1203B364882088182102B2BAC8D21B336EC4062098F3E5D0909E25942E9BBC1003D9576582502B90C50EA290124085881EF34F2F2BA7913AC73B3F101025E848B\n"
+":4066800095127463D0DD91760204FE3DAC9D65821E1C511EB27E1F243F1899DB3582008430E3A28B43A1164442F57540F57730843E1B994043D41491E66C9B1E34FE12BB93\n"
+":4066C000440C5E8A44192815C101D602843ECCAD11E44F2B8403B4042E482D3E3088A0F0100A745830831E29DA1CA28206B6ED41363BC8C840443BD0C9733A8585070668B3\n"
+":406700003393FA20680A2191D2619D40EB0121048144E95CE00C7AEBB840A048EE046D600159700277AA819208F8F21CAD6507B0B24E811EBA2B28C01CC10CC922B8EC0976\n"
+":40674000D01E443EB0992ECE3C230244629EC0DA528444DCC381F58F017762E89EC23F7A7F94890F0F544F39361E874E11C78BABC818408C15183E0FC81F0D7888C6508C03\n"
+":4067800004280DCD138AD643A67A112CB8B6F09408F7A4610964633DD9947A0CE112F3C8A44BD06F0896D0965A33DC9206502381800850140B27C00EC2371033AD7547BAAA\n"
+":4067C0004147C11303DE892A13A22175DEA1C40F0243F75FD80F59D7193B4947BEB588121E81110FB7A890274622EE4444F0243E022208F3ADDD360252E510540210FBB229\n"
+":40680000CC89D2830BE98D67B131D2DDC221F44E788024C8416422ED61F1038722C82033085BDF40CC2080A3D885B650F5AB697B7BF45800BBD184C34D5431841EC2E02F08\n"
+":406840002AF7175F501F7A1495FF407EB7EF40F27003B9A9F157795772D5DA599045D5B4850C2606DDA85D8DFA5E793B4031F06CC243106287BEF80B0FB883441775BB9864\n"
+":406880004BDE7E4D0F438894071840C9C088EAC300000327038EDFBC3E2740121861DD47C4411EC2C218621C7BCF187CFED02C8828019B5911779E3A053779F922532B7BCC\n"
+":4068C00005445C44AED57430CA694BBCFC9120932197DE83A2433810CB45332299B7A1634413EF2A140D029981A81BEA9E010148BBA107A7CBC5804C260502525C8628B42A\n"
+":406900004A026076CAF8883A6C01F2E0088E0118103D54201B2030E02DDCDB04A1801189DB4538F9E5A5000805250610E7C14F84329703C76D8D8EE248376700A52531E8B0\n"
+":40694000DDDC4B0F18401E009F731F1B011F8BDCCFB6638C6AA4640C701EFB9096CDC022D826618E025F79E0B0166E3BA3108EE26A2C107DE7FC63C247F2A24FA61404FE21\n"
+":4069800079ED69412548020EE901A9A02B7C3E6C269FB07BC4EC902BEFA7110023CB348C882EF3EB3B97A049EB7B612FB6F5F1EF3EB21F910A53B4338B0408187D5721744A\n"
+":4069C0001C4901879574A006F7D8F102BDE7D688B204865536406A00310A18E7AF2207085EB70E1023C540A40E1E858191DCF9C4137A94648080C7D07E47DEF4E380240A0D\n"
+":406A0000ADD85C823E9ADC1C7801D9766303000DCD2220640C0F79E4884026DC462206C81220284F041D0DFA3D78902216CAC020C761511F40940F577E162E7030C41F13DB\n"
+":406A4000829C508E02DC5A5D70444D8E7E42772B450EF09E2207ABF24777131098800380BEEBE32094C0C19E1185E12811A063E57D92EA4641058020ABB7214825232BD443\n"
+":406A8000025107B69ECBB158CAB30BAF8D84453B89F0243B0C01EECBDC2EDEBE30AC1110FB53C8481B510103B7460F7164C9E3E1BBC1194F7214610675B4424273AEF2027C\n"
+":406AC000CDF203C38F02780AE3B194780AE071FE48886049F6586867C7CF5783D108C205893DC31E3E21571048FCC1460411C1D60782010EFB45B14C0043792F0AAA1A006D\n"
+":406B00003313BB220BD10E424178ED190EE456209858C03C594902245F6C5AC5A2910DC3820080686DB5E385A824C075997E06F62A1C214A90C0C4734044CEBC80C4028E1C\n"
+":406B40003F3F9F88095225AAA5100F9DAA10142FE821C45B2444136403C7B8225816228400881220861D73F423B8D1DBACC61CCCE660EC71C2021022079263AB05B05361DB\n"
+":406B80001B5001A8E0803A09191129B9D160600C03420343C9CAA22881604842210EC0D1E027637B02C35B7A3A3F4100BB3128431A7264182691069CA2D960704A63001564\n"
+":406BC000200F69B61A7258E500DB200C26004A5CCC5816A4020751B06D6F0CC8E0E8008684082860D2F21841FA5C7318E1490ED6211112973A3C90080163A9428F219C0918\n"
+":406C0000A2050DA5A6C7AA34C83B5F98BC2DF273208204710C307BA90C7AC4647421422290C708160BD5F057B8982C7813B47B6D304C421822A5A3EB80B10C3C6E7A4157E7\n"
+":406C4000545C8E4129005EA61A104CE9F727C9000610247501DD7A042297B1DF50F28949598875E1E260FB3BA44C1054E9EEE8D1304143A40CCD77114BBD3092900D251FC3\n"
+":406C800024728E6D088062E863D97523E858230F831D04EA7EFA4821D448E7028252FA9AC080D0FC1011075347C42582669EE6CF829A901E0BD1E43D0246EB6095C4643B0B\n"
+":406CC00067A1118C10F91D20A3085650CC051F32F08847D78DA2028121F807302062A02CA702E089CC03A3C97A0485CABDE5EE5C00A4A30C1650980805D9578A9B869BBCBA\n"
+":406D0000EED5000C31181BD73415D1E14594090820E805C7B2567B108FD0BB03DCD8820685C0D1C1D7A1626776C7F90F068FAF51C418EBBA412AD00633D6CBCD9902051C93\n"
+":406D40002101A46E76C63088434064388C71A1DC53624C0265596C00ECC5C221F8894440101CE23FEB00408008E1283B4C6C8F13B3C808440E009042C326B19E0E019EF76B\n"
+":406D80008F2EE2791F260C0820046D40A3B90C918BB8E7098C385C0A04C6D7E44391F1BA1A91C0101A462EBD8C7049C6DBD03D7728339219CE63991A5CF08E6721F0112892\n"
+":406DC000B0706C6D44D4C8221A21C08B3B2D3A910DEE4871A1C5DFD1024C0E5E3FE63F4CDB17B6674B72092E8A7C1DB26487C2C10344ACC25E22C41895A8922154615A4411\n"
+":406E0000182B2581840C40B04478007C5D8E3E2CF52363ACEA87BA1544AE2C018E7D685D05D620C83657C30E38F104468C2AA25843081090C8180040D9629277D6F0E420A9\n"
+":406E400003659428802812882001B2CD40123D6FF45EBD75106CB5F075A19750631E05B33B85809745B21D612222DDA490A364388E5E9DE9103023D391D709049F01DF11A6\n"
+":406E8000E00453B1004E042EAD112A0840BA24354602D00201F8C88044E02CC9ED18411E3B6158BC0E0E5E19391CDF7109B74299CE5E9D2C90D530D3A02CCB6034782D7629\n"
+":406EC000CF129D8BD1C9C208F7DBA9494C0659EBBD02A1E8494B01484B00081B6FF5004CAD2DBCD1B53E15301980F0DE0803E21003E65F33594389686C4B17650030120404\n"
+":406F0000B3289CA86CF204CEEFC833D064D08F892107B0EAC63C42B3DBDADD620C01F20204CCAD0F1148844D020BF20C43087D181440275C1C1176711E442D0C7BAC8284FA\n"
+":406F40001204CB4ACA1DD25E7BAD4880D3E819CEFE1870BBD03AB808443EE0AA2948F959285C743543DB04C32B034034DFA5C482A3A87571C0980180D27B0252646A4189A2\n"
+":406F8000AC7A0E84FBDF90430030132C6740028830C3E00A210988F3C3D1B143DE91222976A998D327691150B43CE9242D8CC98DA14F53858E14D0A6E0435A154EBF4C3383\n"
+":406FC000C3DAB1825990021F7B9F8D4325322268015B0A51514400924C8000EA20980B54817C6908702391604C842E783C88305A5E50863540A9354D83C01704CB22D90093\n"
+":407000009D90186B2C2705520D96F66E0D84F07B3264708595BDC6C6405B21B5E516A45C4F0068E1B2916F8FC351CF4CC5D1B9C32C439CDA0837E0F4A1367DB8F06044C6A6\n"
+":407040009430F6F6697946947D642030E05A100780A438051410BBD4F4C52A0455D48802A0009CC80855368882803ECBBF1B06F1C2A0860E97230C218320996E5B7BB14823\n"
+":40708000B7C519B043542CBBA24444370EC6F6176F11248F5FF99D04203B9CA20D094008F09490801232DF908BD6D6A25796DDDB224010265716C81D046C38F8BAA87B3448\n"
+":4070C0005062C4B80080A1D4208C4036D9E04A14BA07104613A030DB7446C1080AABEC0BC4D828CB344276405D401DA0CABECC86480160254846A000B3AF7437BF11003D2B\n"
+":40710000189D3E77111A9C2EF89D1600B1391CA7E1C50800C023DD9D12088D81875F8C09420B62AE2E0F74211FB73F4826D0A8156A8C1804DE055E1F000809177028F686FD\n"
+":40714000B902612D5A900F3AA0D0961288450129B6FA0B012080147AA010424F60FB8849291F255708175988806A0019CC808D880159C504241560881F08261F656D082F4C\n"
+":40718000EAA8B2C76C2030265A96DDD40E612904010067010C7A167EDCD832E3AFE848F61576EDF40B6BA844F613EA747B222C7B82F041C891F173D98142354310E058F748\n"
+":4071C000D8D11E04AF42C00D2C01D11D1A297602A978DAC870124101143EDC6C2D1780F42920867E43BF2A68E6F1FC219F8C1C8405096CAC758083425F520F8C6130124A9E\n"
+":407200004A9A130DB4C81EE0015891B8A0C65C05441802A2252D600C00BDD1CA33F81768030C0086F6E056B951C13A3F014A885000CF4600A7B56B8B1B9798C90E771C1D47\n"
+":4072400060C618A1228D725F6CDC1117B4A804421C4A8F010B143890613A13F181A9FC042638C162C7C05DA000FA35C08F443C0768560F204CAAF0685086A0218365021E13\n"
+":40728000013E8FB0120AF882D0ED8EDEA63E1758408043A04B86CB6800C9D9644A1842004B23FCC1F478FA34A60AF0C5C3001190C1884039032E7E14961CD9511CCF81D4BE\n"
+":4072C00088D5D51779EE889C3F6C7763E8DBB11CBC153C5810C4D3EB0371034E0083DAD4E60A1A0330D439636381CC6306C74203500C45380641FB51A8423C7902478C41C5\n"
+":40730000C6C6743DB62246CFAC2BC6E7E000EFD13328F13940DC18206979F7747528E5E4936934C55D43E9E022000F770A20607443B7A0C85F98C79A274CC2202281B6E027\n"
+":40734000E8DCA2C68008F40AFAA2A8C47180401BC521C98C2DC00D5011B27C02740123086750EB73F17A03853D4B188772E2C112468873E31DA3C032060688B8402204E0E3\n"
+":40738000F756110FE306892CC13A5A1B9268F97D58874E82681133C1C7443A7625A1F7EBB189B4E4BD158C24101A548202901A5282069DCB25D8B2446D76B9319EC47F0080\n"
+":4073C000562DA6F8646272905A621120D38D1F264D9005E079521A26F28F000CE543C9D842423611A1CEE3A6CE81D448C44001603806620DE34F96C14CC61C870BD8870700\n"
+":4074000058614D0030A418314E8997DF69E20BA0217BC2A4A287CD16E271B1E5B0A202CF78C03C06EBC28450CA5843C07288623028A10F00D276AEC499045008A89A26CA67\n"
+":407440001EB1643239D88453D5C995111078683C87740171D09003D042772568B851E0C38B1871C288881A8F58478B0359D2391E37D70B1A49E41C0E048C920D01082E820D\n"
+":40748000372820749EE20481D62F0B98828B881696B40859188BAE8F7A20650C7C61875028D082983CCB07795032910F62A80F651E8C6900DB73A8919EF51B9DCD9C8F7DA4\n"
+":4074C000DFB10EC59610DC31081477A2C539C39C86196125CF200430E8C403E62553BD1399C1E5B9A1C9A813D8C3A910BF11CE9A1990099F1E2E4E99F88ECBACC3DB514462\n"
+":407500003013050041BD122D690203C460C0C0B47A81A00C0DF8208041B113CC1C460C7547D0F7A440F7D1891C04C769FA1785074BBD5DC87E045828B7FA01DD3F870198B3\n"
+":407540007619D0901DD65E7E15731F61F89762EC10E64559FCBA656040DC4442068D74FC6A300182B4831600B086CFC58F8C06371D6290B801A98062520E9DB964B2A384E2\n"
+":4075800018033D375C20D94B7F203005E0FB1CF8E4CF33E3091094A88265296DE21CB3BB68023014E808FE00972B388078616D4CA22C86C21FBC3306CE0359020A8D78764F\n"
+":4075C000C7B061C811EB6EF11E37BD41B3810F4968C94C8DEC4A62064AD2001802CDD20FD1F843EBEB611E0B42001526020BFBCC15251000771743140B0860EADF2937405D\n"
+":4076000030549C083716E43717D1054A8083B1058880DF92E401EC4543DC5E04152C2287BBAB4582B121B15EBDDD160B84B4C222C16897AF46887067B3848BBF940B0EF0B9\n"
+":40764000410B0CE581082C80AC1C0300E0190C03901796A4204619A105F72462C3EA3E2C1410C8C5CFDB20888203C04EF11C2F382FA5EC3B21063B8254440EEEE642710312\n"
+":407680006004EE1262D869841AABA10E4F6F5CF0CF6C30A2386F13E5DEE7E36B803A819CFFC43B35C08AA065A06848283BA88C882EC012163CC18C20CE9C808E20807815D6\n"
+":4076C00058B1100043162474AA40180242BAD90DC8D4403F760B0B03682E3976EAF10947B78B08040A35EB74022471A7861412B8F00E4EF8EB1248271602F10C7B2D4271D2\n"
+":4077000067C066220A8062204E2C05DE139D2116207C7CF442353C5A9C102DBB8F1F740688174C0BC8D8A8B011000131A5C001CC16C57E2288DA0BFBBB3086D1587A0D0D01\n"
+":40774000113FBEF6480A3BA8F1057C0A8C863ADF2C766613847444B5C9A2C5F983C0BF44CA3D8431C462EB2711F80D68408002D0C6051E26DD07113FB85D058A06F2AF79A3\n"
+":407780008710E7E470B31CCF8A8944543483118812A88792059B1B2E0E51CCEA08FA2D446A1C828301442F65A85E972A8D1200782D4C0106833D51299800D16850758928D7\n"
+":4077C000EF0364091185020097AF0804121F0A070048842810068408A1160A0003C51F85E10104322F911336A1E4333A12C35080E011FB7780812F40550C28771158E9B3AB\n"
+":40780000466A2DF438C0D9B472EAC86E024BEB0B1743EE8889B99288808001A37D2AAA21C10D4308941D8EE638B34C0526F44722C302531E15EA13A00DEF5871F16599E85A\n"
+":40784000658419D21016B27C8F00C0090F700B00265262DD3F003008020F4317B1E188101E18ED3821CF682F62870803E0A1B23DBCA14441DF8397D063B685CC34F147F183\n"
+":40788000061D5BB62610F36C30143BD564BC50423CCC527D29A420817240C200E06D7A048842B25C0AF04CE976FC0900A0D01A2E03435605A112829E03463BAED08340976B\n"
+":4078C000B02004971AC73CDA020B7AEE7442D3DC0C25C2A1C7AD3144200B8F7327BD774C62DFD467432664F84E4F80DBC4A8821DCFB03E374E10208A0677D4D127CA627CCA\n"
+":40790000292F7B9E6049F0222D11D94028048482C017EFC183063C094853A082A0AD6185BF007CACB1B8103507C3DC874970391401B29CB0F70A090020A8A05002470EE885\n"
+":40794000BA5B60D0DB150F6F9290101133D391C21021EC12012C013AA5100423F1DB30976111D20458BCAEE38D0E14D6107761D082A6182596D4238827A7B023DC04C84F76\n"
+":407980002AA510041116B82420FA544841329F09F0780EB0483A0420192E256889A485056C32001F859484021CC5036810F64DC166970931A2FE127B7E10100E4E35EB017E\n"
+":4079C000982001B551E0057562F080A3D1A63D1AC350345C07BD122C221971BE321F5C1D0C900A647A03F8B86768D67097270836549600C1E445D361012A8C7C1B4920004B\n"
+":407A00000D308F81928AA9400E9A887504388858FA24A06EFC0B4D175ACA080569B793D746890169C54D55838FB41D8C1D2F461A0A7E33351F502888463A8043A924106394\n"
+":407A40005700A7D40CE241F5F9891B14A481842D2306181605C39D0E1F09DB98EE101A7DFAF45D4A94605F64200923E16B81F1A51882A3814006CC405E8A036DF86578381F\n"
+":407A80000024B815D678C222D202F78DB8B2009A01681C4B0339FD454BC620B48803E51312ECDB011A305F08257900F93EE872BAC40D1BC9320C6D89486120044E047C2772\n"
+":407AC000BDDB1164D0B361024202CD340ADE23C06104CA9B48082B54E5D4DA6268C624040132B0030A7090C060A848DB46DF63212183E82D31E9D2B1F3C4D09205C6B444E9\n"
+":407B000076F8228F2980402F3EE70FA23C074E48868E48BBBCA8B43F042597A70122790A27B01735A4740240478CA7C40829C04042B0C3305C4443C83563D6C1A402481239\n"
+":407B40003C839BE30446F0EFE0D750035E1DFF301E3523C4F4F31628895BD608B1DAAF02355134C0B01401DAA9042C0203B010813C029CE4021EC11CE62424254A04E3A671\n"
+":407B8000460D8491A611AA99E4030F3803081C124ADA2CE39100AE182F25F60F5E314E8B984048710046BE93451862EC8561107C3A1E22167DE988005FBBC808D1F7FBC180\n"
+":407BC000B1E68231280B6F419910157C415C621EBC061246CEE3E50ED320462F0EE79F9439CB61121F5AA4207A78D68480E2F8503C2D104071A0600E615101ED9941988837\n"
+":407C0000762E2613039007D0689A05D04825002007570B1469795C2C445C0622030FE207991E510300618C30DB671303842860DA2244A3EFEEE12B50ED29A1084446326A62\n"
+":407C4000C4913800B05D9EC22E11836E21222009F8120CBC6C7A24C1EC00C289EE448C05D8C2300B273F9456CFCA4625DD2FE7E9E3121040A1BFCDD5E20178C6844820700E\n"
+":407C8000070C08230862DC09C4022684C34C9AF3B39976B2D8F8C6C44DA28CBA23883183CECEE559A245F94584E99001A68125A68B2DECC48723A72FD04A81FBAB9C07A26C\n"
+":407CC0006306D7E3DFE103DFDAA670931DAB223E91C41004A22D419A480029DB46C0C028CD021656A658794B0BC950A4741E3DFBF899AE4320680F80402C0D7738C880022D\n"
+":407D0000DDEC61A0341C21E0C7467A88C4800248825D77803C00448C32C412043BF7924D51B7DD8422079220968428412F398E0825DF7BE5DA2D65E5C9123406DEFBE13013\n"
+":407D400013C15445DF7C061A7002E2023587E5B9538F71848F60C4497F97003E094123405C1DC98E8D81234061E8530100B63BB104C171807604776B933277908222849E73\n"
+":407D8000E2B63EFBEE44D016B74052222E4C9C76E1D450E22BD96864663DFB21345800B03F8823D41383D93303AC7311480A11C2027FC2C5A21077DF8A45A8351C46A8981B\n"
+":407DC0000C17D73F010A2077DF9222D428B869430447E8D802BBDC24654B8182FCA0434AFE221F00BC40042543020373FC4030E01BC3BD3888044902506200F63D724590D0\n"
+":407E000024680720800FE83DE11907818BBD330B5D9E52101E0658C024A9EA3D6CC2417FBEEE4CF4E27273A1D41243A4D7C4C0F4BF490186F061DF832861B60326A14BE072\n"
+":407E40009F53078D105FA381C889083BF04D0F6966977EDC0F7A14083BEAB4E2077E08934004EE5C11E856320C080F41B111A20E9AA0477E099922902D41CBA83F6412F308\n"
+":407E8000EA115FFC3B4C210B08E0122CCD2212F727E100054685CD07A20041888F7DEE1ECFCC225E83C044BE2990213690A0426DA038B3CA858C9C410987C674234704455D\n"
+":407EC000E23DF7DC8747439023E0954124019CB5B2B1281A27BF7E1F8F8003076A3B2F00088801DF87A88B0A1D60E8A06E51C058AC4293A2993A1977A290ED31027A115DBB\n"
+":407F00002B464C003EBF8B2340E71DBADABC7BED64BBF0650F5EE95701803318D03848860D6387BF061107521818080DFBF0444B2EFC1754AC522A18149E52222EFC1854A4\n"
+":407F40009C50268D032E6C01D48BF169F0880CF7DE3174C850D5919E04651147DC3102C07087901309835CC225C04ED74D2A1C5E79ED100BB01104401DBBF05C8C947B11CC\n"
+":407F8000344203C4ABEC0401EFC162000D62DFBF05530554BD325A2D7BD7BC582A522BD816AC0B14F602E177E0B2A2725A37C1EA8832A1E650AA77D2EC9E25977E0A21D463\n"
+":407FC0009082076BACC45E3449FDD0DC46D0009F36410EFC185BAEEC08D72576B871EA45A1D974C48D3D810EFC1A43CB09C2E5BD5A9993ED306420C0AF378A8DEE14802EC4\n"
+":40800000FC173E088E30C654A7ACC811FBA3C490602A2BCBFD87087B0454FCF648240F863150A55018141DF318979F51CA9881601CED00833590F50663E687ACBB54F913A8\n"
+":40804000CAE2C21C45AF775A97BBACC8D01D8DD636BCF11D60846B2403534074DA8F458280A0ED66F1A281BE6009022077DD52DD29AA37498303C81E5907043685DCBBEE38\n"
+":40808000ACBAF8F84D11A481183BA4C0C4A29C00063BEEAD1C4E314243BED28B5FF841821DF6ECB87CADD3FF22688A739B35100291506077DB9B966789A50ECD6644120CE6\n"
+":4080C0001534C4E27D789B70C3A095A09BBEDD1615147BEDA4C23EFB66130331C8401EFB544B0D3938075B5B69047DF6A223F03BDF6A44041653A830450CE0FF7DA9AD0828\n"
+":4081000001990D9F703842400303CBD2908209F714413C4DC0201109805D977C7D148E20D67B5081C4F56B804DA4541034FA0633DF0CD009BB2178BE0BAD1253DB9783DFCA\n"
+":408140006B0981A6D4790EFDDFF87D668621369CA87BECD0C0D30818D6BD1B1AED41F821E44E0F818211F1D3E9F602321C2970B853110965EA3DEB4858118B8531168BF92F\n"
+":408180002098546426B8D0582011EFBD4212F6CAE912FC191C5B1F40897ED3362822D0A308965633DF3D4801A0D4E85EFDDC3EEDCC203A1CBDF7203DF69C808187E0B5ED6C\n"
+":4081C000C59F0C877DAB24031BE18285F902450619BE2B5DD023A851BF51882E0BF7D628E3D913012EC98012C72E58AF06031F5C58352420303F71B8F4DFB91006B77BD1F8\n"
+":408200000D8900961EBBDEA440238FBEB187B6B74EE9E02FC85100880800AEFABE305D40F604BC344E25D77D5E265027BC11880639051BC790F85628B0FF03001997EC596C\n"
+":4082400049EFABD1988C14340AE4FA26A0482742C122A7BEACD369837CE12049E148F639085F38D59F80EFC82510821127C1F853DF4BA3BCF697682D0802719C26E0E3348A\n"
+":4082800091B839C191E40379C85487106F14B01E0039B5907E4400E00D8E21D9A44AFAE358416C83A120346B020179DA88822F20C82000174140363D14041747EC88F6504C\n"
+":4082C0001040DE178020816F3DB78E5070E02E106CF62C143284048434886DC1A8780400851A86D125B0350F7CF9A607E8E10767482207BEA207D99EE3D97683DE38420691\n"
+":40830000F5F7B0FBAEF4409080D0F0D9688F190A824D602A312C710AC7202FAD4110C08C888BB2010831ED4F140302640D3E830EE2491BDC846D0A4400D003BFBCC4BF2288\n"
+":408340007708D43B77B5A1EF3DA202F7B340F42F30B0708263814040D3A0EF66A361B370758331DD33D3B684C890C90B1F2B2F0B1D9D5623C0D81175D8B8EC3133E75071D1\n"
+":40838000F631C0EF2A43DDFBE2269B25B81E290327017245F990F503637A072C4163E57CE1C13A003FB5DF08A0DEC147D4F2C406FC0B0640A84048EDEA824116C0CED81AE9\n"
+":4083C00037E180467882A7514E7404F5B246887BA4112F43ED8C3009EC6059060D310089CF72900CE3DBC0CBBE934BBF6C0BBEB854B6F89C0781B8DC61F7D70247A554070C\n"
+":408400007D7088380B2241D8E0B39284C338A8099E40977BED8F49898CE481A214DCBC03C8A68F7D1C17960BC4E0607340B6EFAD8106E58E8229762210B7E98241183B1EFC\n"
+":40844000307BE904FD41DE27030391E04D56F262BA91065C23C773C2C4BD112C16EFAC944D203ECE812E0F05FD1DFD4380091F01E7175DA4884C5433904858041067005050\n"
+":40848000EEC90613168D1588DB98079F00550D4D8746BC080753A5BD43977CFA8820087A98547AE4E08BA120A8A9B2DFF88800841113B0EF8423A9B4BA4980BBEBA0446489\n"
+":4084C000E18D91015045EC63D30DB5F988519443B43BEB9D1E015A3D93223DB2A73E5DC512AF46833B4DA14E276E60DA18C7920C88084B0F4719C0790147512329100A7C37\n"
+":40850000110CBA1234F30261F43C48FAF9EC8009E111C5002220CFF521C2DC859B262D0E5D7B5456E5105AEFB12D818D40E18CB71A24050548FA81D0BA6330414053BE78A9\n"
+":4085400092F03009B1E19BD1DF26C6FDB3DE194401F4BC4169F3C7BE78C813520353454BB81E4BC1EA85DF3C640B9B63B02D145E17BA2F496A91C000F869008D035BBE7880\n"
+":408580004AD1E5DF3C65D6BA62028E43577CF0A18A0430BA88D5DF3C2862321060173398057B9A10451348CDF356D21D822E2010F207F7CECAF3AC0065D0906998CE7582B3\n"
+":4085C0000E401258FF00A2F2FAE8F62D04F8C4FC400EF7A02B9942CFE21177CEE18543EA402100829FE0DB71103BE51CA403D28F645A900304A00F0263C3414209ED3A0207\n"
+":408600000BF702F0923D83766C903D78145DCE063DF320983EC7A69B4474EC5951182C9E879F330ACA038354052F0E9889A32B4878089580565D7B5235B212C3698191401E\n"
+":40864000613C036340973449734898C9832C1D457CA81242068A6CFC34D244177CF30803DB680581B2031D03088103BC2877CF59028A13B10E5A3CE18923D8DDDCB548F27D\n"
+":4086800000C1FF5A70909B88D86810904C77E4A25BB4794EC238D4117C17A26150FF50880472B3011403F45DBA03002E0077DFE258074A542387849AC46DE889D1EF9DE386\n"
+":4086C000EC5BD23406AA9609F4B0241953D19A84680C9A2E12E6C6D3E1084440F37830EDB3843CBEB83DF3C26310EC0A2880A472CD517FB11FCBB12247BE7807C2C8A41129\n"
+":40870000F7CEF1F6A780B0CB3EF4972ED4F642E300CF011EF9DE3DDB10411EF9DF183004181B132D0805104CCA71D4752AE0357011E21E5F48B0374BD66E050731E4A38212\n"
+":408740002AED8C45B01ADC94551C1DF3BEC8FA6885E44F8F7B8860703CCD30B381091027D2A22877CDEA7DF376A8CA688446904532A4698449F7CEA35DF08873089E2739BC\n"
+":40878000A20C4DC20B291D5DF36C888AA420E04043BE838F22791C09478110BDAEB044E680D10F032A25DF4209696A8C8446E7A2C0BC413411179DF3B8882EA409F9872017\n"
+":4087C000891157D67D0454EF6CE5A2532A0A06DCDF12043BE77CB49365E3E7F32430A90F7CF10FC161D2C14400280E479172A3447604DC9BFDF3C226FFBE8D88D8CDE2305C\n"
+":40880000FF62003323C1F3A44C09A3D059DF3CE4778084C08FDF3B0221A0741604243088C908483A98775650B1DB36E2E024A422A0EE2C104C097BB81930256EDF64C099B8\n"
+":408840008000981387A0B3BE78510B0D22CBBE788882101E80F5428808134014027EE7E31EF9A8321D82F0F6D8AB4CF200A9D05F1E25C5A24AF5E43D909A65077CD5B5D874\n"
+":408880000B441C80A3FF727B49E03F0102480228827DF39A9F987A4402EF9CF438022894D3215ECE83811CBEC2E23016B502E5E79AC2EF9CD5C4EDAD7899F3CDBA0D1EA886\n"
+":4088C00090660360F9574C8306B8E97A90023DF398982E610229827BED60B1DF39681A43884695FC41DBFDC2C895B174162A4063BE72C6E62004402CB273EF9CB30854C0D1\n"
+":40890000CEF9B44B46A25DF36A89CFE31293EDC11134460C51A84812EEECA2380A13D08625B1A211046B8B44F8404F024380607A0FC47FAEE9C4F21E8D015E9D0FB20B0B26\n"
+":40894000DE94C3DB3843E89F41E96BB205F548226876CED087609FA8130432A8510571459793058BC2D045A1FB2C8A82203A2B80FADDD06A36047C84E10D0D30EFDC23A223\n"
+":4089800029027A2EA4023F57151F0B231AB723403FBCA8320B442A1CCAA478188986D29100C92070173107005EFB43112F0C0648F502BC002481E278F2C042178F001012EC\n"
+":4089C000E07D0BAD8B1B094C65DF5A2A7044A2AEE1030620E230AB8128B3183D91825AC622014401FFBF418CD006EA31106947BE8919D0B40EC9B222077D11AA03AFA0220A\n"
+":408A000040869C0BC860582EF9B04788601E05026060472138B21D0B126160702003D98008F10AE2098342B41EEFA4030CC04206EB11642B489F6C078101915A9A04256F72\n"
+":408A4000743D1F008B9081BEFA3E42524C1DEA076A40EF84CE04D00236AB31C7BD004C21162051A1D1D03258817064008327F95E58818CF7CF8103DE9A9E5FAC590B72AFE4\n"
+":408A800011D512E0E3414C791B5D8AC27E2F86264111FC13DA06C80911818DB5A47A523C7C5F0A573E40E5BBE6082404865145AB7511AFCA5CC5BFE6962DC1F81F5040809F\n"
+":408AC00038182811F1B79A00799C0C0C08D6C86F3745B0D20E1BF1DBDE08762A74D0C3C192842F243C5E924680B9D3F4C3F0A480EFFF23D6CFE2C7C1A4C44B4AC8D1163C6E\n"
+":408B0000233EA4D600796D212EF5BB39381549FBACF0B84F00905293199404B6C5481E433026B3914423358471B4F21F8B51C0AAF20C598740C6B8C0C7720FE0038122A2BC\n"
+":408B40004C264CA700CD70F887EB9AE400A3443D1E4B5285021F23C8CD10EE180E5D29D881A5F920697A721C98DBE7084E95178BCA88D50D09DF179D101E608020782D1260\n"
+":408B8000813A00983B5DB90200780D1084A8C03EDC4B2038F26F18504A40C10100E39A18C3A93880A0753F3AB91004D20887DF805A87C25F82698FE798F25A8FC5AE3F5808\n"
+":408BC0002C8202C8C22C8E13481DDEE9C40E2CB570231C0698363C02698F05A966101666096601779FACFA4F527C5E7081A00AEA52C80E2702520760DE436B762F47A425BF\n"
+":408C0000B5BF1048C78C0096D02F09388F0880209034F479B29AAAE2DAE294642E2D30080994179809F7C48223D70BF62EF80023C006D0D38F7BFD99C2601EC5E1DDB89FBF\n"
+":408C40008E4C50FA5AF87C3A7C27E900298422778FCA8449C3CC0C09DE23DE1F8536C6B1440DD0DE8E87B0405CD3D10C364071F053091499DFA4C1EC5A73AFA1DE56462C19\n"
+":408C8000BE02D33F34E9980E5285EA18148C520BFD36DE40D616B118C75120D03B0093F819DCD04401223D43005DFA7C208FB39D0878042840F822F040D15818E2244668CC\n"
+":408CC0009CBAA5A1108BA143DC6366281E002F82D70BC5A4421F015B00C0F741A970F2D29526112603892179C08EF7701E952A33382FEBC575786370975A7C911EB7D41471\n"
+":408D00002A000F6118D133BDE44E86A270A2D0E962D1127A7A807CCF4E3DDB7820357BA03B953B6B60F7968897A4B7C2BDE274E19C1F816C4598B0C8AE1230A463BBCF46F2\n"
+":408D40009F008A071CA4F9A03A884789E068178486459897A0676FA6098D67244B694978C740C22E957E5487A8C500E0591C83A503D948158398D66895811904048106A981\n"
+":408D800057A04C2217409A214754A48903D781623979BE947BCD44BB16907578446067FB8835E1FC01244D028C779501472C0F0C1B110BC378440A9408E474903D752E3E3C\n"
+":408DC00032001033DF3EE7DEC0E384283760D106C6E2C87518EF18825BD617A6059DC0C6C0B865C9296BD10411D359902A3C12D4AC74D32803E3C9200C03A3C410532005B3\n"
+":408E0000022284413D8A304C762DA58816CB3A1F22F1095174AE4155F8321009B2D0253B354C628412F193308290420B1A487740B889C4D0419F9046B8F84D1424F813B191\n"
+":408E40007A8887C2AD8872000781B3BB38501E40E03839040322CBD07933B6AC08E83C0584F85FB6BE178108101E00E27C2BE14FA3A1871347E15FF1204A0EF8FA538591D1\n"
+":408E8000101C65F7C89102891A2345F8224C13E0593210050028601F789E986FD801CCBE1600CB49C6E35E3A09D1062FA72F107B97883D8808187CC0E422F133BD808F7D16\n"
+":408EC000A911320617498321081213779B19102386376000AB8CBBED412028BEB8F4D90AD3028B2872731E41404C74A8E1DB42C40A269B9D4C48F0F3D0941E7CC02AC3005F\n"
+":408F00001C0CBE442B3000702323BC6480026E81025002639F8788440B2E42C1C8AA8F28C00547929803EF960304C1042A5444DEA1B81F73D50840290EBDECF45EA5FE2C24\n"
+":408F400064D05C0FA07762C10FA05B4FD18D84010BC06EB47481A3C01B0504028441F80DF044305042284401E4A2EC2EB23CB81E61006680279C8C37C00806250EA014E678\n"
+":408F800001BFB9FAC433110131C4B7137BE5F08144FC2A4C24F81DE69762EEF2F1024D107B38E0412060A0EF97A40D707122049F0469501E01A65FD100A747BCA71183102F\n"
+":408FC000748ABE08468B90042847BEBF8F6296100386570819B43316F4482C0288839E202E38C132BBEC590E3C8A4131D8CF7C191771481033EE1621E35A45B8E516EAD88A\n"
+":4090000085BD8403D58220300F05B823E185040081B401142A1C443F1720977DE3A11C16131D225883C126A254BBE6EC4110410D2D81331256391000762C4B8098B8337B20\n"
+":4090400045A44813C808EF9BB4BD5AAE25583DE62D81ECC2E43D856E850903D006B34949C4CE344042C413BF3CCC10BF5FDC8821BC00110417980681AC401C03B97413F83A\n"
+":4090800070506C324128B0129ADE1C1313610053B21B45925CE321023F038E9055BE2016D23E2268004A1A26613220F7AA69639000283DDBAB84CA208C03B80E264A2F22C7\n"
+":4090C000C08B1A0012D50E89044C846CED6823C38204EE238D030FC3870448003EB454A343C3864640642C15D4A04704F1F1D87203ED64F22E0E5D62C0979DA05887870779\n"
+":40910000C581D0E9CE2612001B018D12E0ACF3E1B8D0102E085F29240F87108FD7EF2527000FB337473E78BD7EEC4391D3DEA66411786BE87C796C470F978744F62D8E32CA\n"
+":4091400010F22FCE3214F534BD232081CC417B915C40A09CF408C81F0D5809280615E10786DDC8221B90EEC562E2360368B8B278086301F18828365DB9104621E8B0108128\n"
+":40918000021001F1C26083042302211A0304DE1BB91ED0E010180A1AAA6C21C0E9213A71D098F0DBCA009A911BC1E34491024B57007C6E0D90EE012905CA105C40184F92B0\n"
+":4091C00067DF7D6375F002242708D61C9D5186006795110CD2A82CA1E1B173666C2DF9F4667123416F191C8F71AF8F86D184B74624C1B0303D28022F3C7B8925471E511E4F\n"
+":40920000862623D044A2108DF0DA5095A05418012594E41E1B4A3A388010A1E1B76263509234680B94E7B09E40700C806370FF33015F0DBB24344E46004DC40BF86DCD1625\n"
+":40924000E91888338322929D23361B3C4D8083C399280049004A00940128025004A00940177C0D2264B3A21C21B456403B1881A41F5E50CF9C1800420080268FE4888F0F00\n"
+":40928000928F83D106AA0881A6E2C6BF8C443AAA2D7F08880310F4588855583554891C9F8B47C4AE0180830992392EA96122B9C3C38987558427381669F870C0C4E488329C\n"
+":4092C00081750803DA0084E8620D6E3D39362F28842C27523C4D9F0DEE11B3E1BC61F0DE297875288F00F70DB18F88F6C494F76461F87840BC3C385E1E0E4B0DA1096407F1\n"
+":40930000926D140DC84F0E08A241219FDA3E8BF51B9382F0B1E90542E99A6209FB99084200C830DB4F46751207A6948415E08EC582983C3B424C5DF81C3D2C8053867F21EA\n"
+":409340000BC30E857E886D998220201780028FA8C4048D48000B44124BCA31227901436EDEE686C9EA20793417B19A1A2367B22548D0010B0B23C17A17ED958613770F5120\n"
+":40938000ECC1043416E348EFEEA1612ECD41EC7B154231C003F3F6A88146505FE705C1E95FC9203BD5B8A0C3A4D01E503C5980C56C98C4252E934078E6530188193182CA30\n"
+":4093C0005D2680F1B6A6030AB262034EA52E934078D053BEA224C65F29749A03C62A980A7EC98C924BA4D01E4CBA66029A32631994BA4D01E2BD4C052964C61D29749A03C7\n"
+":40940000C522980A3CC98C0E52E93407899530144D9316F20C2080182305FD38C438ACC4EBE93482E93212010BFE933B48D0030D1F6E940C187193F103120338C9B0FA6C97\n"
+":409440004C6087A552C58051205540B61C843A4CD07007C1F1B35218020D7177E106B91F60835EEE0C106B8DDB08346A7040A1D6098837C5E7041B160D13DBAFA590DE4C32\n"
+":4094800084F640023A095F34AE0820689E9EB1D610D40A1E81808378C23C7ED05D6690178B92066E102C3E3F04F3C4FC3C4FCDDDD8BD862A3AE5B1EACB858D13B20D13B5AF\n"
+":4094C00023B591DCA3B991DEA3BD91E0A3C1975A158B0C367899DBDE119B417E74A09AA6892A00E3031147DCE122101C2861821289124422360112E4A2F7ED309CDED0A6DE\n"
+":409500001F4BAF89A473901EE105239F0AE811219F8C5FC45E0545A047C36202049951E473100051207E084019F368A2344DF8B02442C004B18C2A3C26EE76699B9E1C8C88\n"
+":4095400012E480004810D40923A9B226C81667289E245627432C490EC66B2141034788961E370032B8BEF89A270081D54FC24123ED56911BE8381E23B6E7E05390701F71FE\n"
+":40958000CDAF20076264104C9132091108910109129811052F68035CA004418004053B80425C6D02C170041EA4822212203122542065458808088380080BE5CA62F71D90D9\n"
+":4095C00085E1080FE71292E1FF624384B0C0239E406F8C76CC4547D11203803C0042F4481D4DA1F8042F848C14401305E1188E13F68F48C625166097A3554408F86460BC33\n"
+":40960000EF8043CF7AF808040B8FA578FC67E0C8083096099E3B1F413786894EE7E0F33DA104E655EBC1E1191205481F1B39102A6081DE64761EF276105819080D9350970D\n"
+":4096400003BB186C4022DC0E0BFB2FFD1020A60638026A0E0040CD5284381B5C2D78BC243E4041151EB88C990E520E07D1DA05794AE87C354A71A54A20F0F82FF8FAB16849\n"
+":409680004CAE9DA8314818E22A67180748100703638490F407220285BD7C5260406D3520680F3E56AC1EAC623D90BC4B2B9D05825C4C06C7808FDAA2C33481D442F03C021C\n"
+":4096C000243D305E3084080F800B1B22389AFD468646CFC1C1827B00F0C7E8C392F2EE188140DFA0E14C088A2033D8EB8201842C0086C815C2C98BDBE5C5E97B92F26AC86D\n"
+":4097000080DB65525DA070401945D46F28008007BD080C45ED1481104A30176A032EA35F2DCE24B6A0A10461D01E7DFB98200DB80C090182FF278509AC2279D3F471798121\n"
+":4097400083D5BC0219A25D00DDAFA63E9F583EE0381E11A04C1A022EC3E47D7D165DDC943E3CF8128485B3009A5E2F6419406872C61883F500E9807AC01A601DB0269737E3\n"
+":409780001751AD17A938461D4235B24452028EBD1AE08C40000385B098DEAF840D0C32BC1029FC9AA2210190CF512D0803D44A82D802129A8A000E7AE1340084E5C280020A\n"
+":4097C000149F9B5DB180215938CF6DA09056503210F061A10B0646AE1E1073AB37108C0311C220090DEBC89907418DEBD0B65D013D11EA2A03F703316D1D4206F5A12170EC\n"
+":40980000E3C2E33B420E4F820E1E10C1C60C47AB2F8B8205204CF514134488A8050477F281222B015D28712488B00502E028027780A4889DB22E09027401248861D906A5F1\n"
+":40984000DCAA03DAB706039B2178C00F0BC12185E9962402FF06A517C2A233EE5C2400A2B0FF30896F21231127EA45B1148D13D76DEE10E6B0C492E27A02079A279E77589B\n"
+":40988000885ED096108CFF040960498297AA268B13B812A7712BBEF30F9F17C8F4F5CCD892A1A6E0E820D82BE060D9380020202E0BFB74E46AE4095058950CA2CC745005F4\n"
+":4098C00097D748A4589C4589C05880658F19B9307852F3B0709B9B76C204B0217F1083DDA7985D58AC20A1E1A5991EB99C109BDC5C645C81DDA4B83CBCEC4D034B229C80A2\n"
+":40990000D2E0FCEED6D101822258313A41D35CCFCA641147C2FBC44A8044A846068440BEDCAA40D75F1F95B4C01738325ED0BCB82150C94C2030CE05CE047D3CEA207F07A7\n"
+":4099400087205BC08E02C1106817E06E39B1F40B79547875C7F89C217F58B9202705FD582E90F47B7C383420EF5C86892BD4C008807B6E94B056FB14C06CA0058FA98408AA\n"
+":40998000D8F349F118074752180F56130882A04094C81E06229801E257238FB0E38462484364112803257DF6AE3ED3E8304C17207C0B463ED3E9125414CA9A3840057A8612\n"
+":4099C000E4B7DD41ED0769EA1CE106A8D13066163E666D3C88211819E292E44A86C38793DFCB3284844ECC7D43D24667C39E07E100216B872A8CA50279503763D5DE220DD8\n"
+":409A00000366B4AC386DD8831C0C40B1AD87058A1017D71903C3B18F818A137D56C841C020680F7D586E8F0D641EBD7B5440510F40334074CB491EA1E7443B44E05756193C\n"
+":409A4000A1E4E5A2F3EA5092A1C92A2C784A80BA8774AEDE004448DC5428150801142EE00084C80BBC60502698CBC01F4813F4BA518F609FC03883DD4D6201989E1A672DB5\n"
+":409A8000C04045FC524577E08903D829D4344379680C4317B5994420222EBA8CEAA1CDAE124066D334083DEF4691BC1C982E8618E2EB1D2163BB680820F3FEE8FA6C746533\n"
+":409AC000C3D78C83DCD667E78BE104C18C38B002027E616C302C70B11900431469030140084245A22E28144C02C0104464223038985AF626148304C0308B883D8833EF872A\n"
+":409B00000300E9F90F7C0E34BDE8CE4640E00954D1556A9EBB981EBE1B72B012E1F0C2C393BF50F08843C0FA0BA87896ABF3EA1E34011B1E179929C401254501E0271ABD68\n"
+":409B400035FA3E99E1105BA877C4102A72EC48C1F853808BABB2C0272E8C0F60E01F087E1014F4DC1010DF5A0B83130803B9EA1701184BA89D16E747761175049301C0F4DF\n"
+":409B80003D00F81540A8103A88748952EB74653EAD6020F82F50A8021C3BE7C64741341B3AB84CE09D150A67627478A9829C2B50692223FF5123182DEA53130504D2C0AE57\n"
+":409BC000AAB40093613004E2EA2402F2A11A173AC1620847225E26010456B7302943AB7750108A6101C230811B5A9846E5E80F213C3BE3984A6F739B9121E2BA01088A6EF0\n"
+":409C0000F61C44022AC2FCFDE4896B7AA06A96E4A877C599503A432EC5F71EAE0712540EE9FC722543CF6DCF8F563E99A05793033131E91E812541D18078E9F5530389D0DD\n"
+":409C40007A0C44D1E06CEFDAF22543FEAE4F21CBA7DA0E0848D340A5F10EE180DE9B831000B00F3AAAFCAE5F2020F84EF9D0F736991200E0160105E3012A1710DE1D792F49\n"
+":409C80001EFB09A04D01780707CF18424CF526AA1ED2DB40021842FF5E95286105FA2684FB8534BD78AE3829880F1CC7A8510589717BA808CAF890E9BCB23548A25447F65B\n"
+":409CC000F048831DFA1E20A84FB50209D41A0142BD2A00287E9983A820888D0F6998827EC45F3237842C912FEC1F81E33E847876DA511A24B835C01007870A895A0EEE7AA4\n"
+":409D00008346C4B7F8121C4081028E19C5D40985D55905D40925E6D7111BA4062F241031056B54CD8CE531E211A5D322A219A554E0488203006000E8E34B3A088713AB2589\n"
+":409D4000C47026107D33955910E217C724787AD79675A563043216B68762F07C11607D0BB5C030E1F7C44766CE1012555290A76584703A9D5C7CFB6C2C058805BEB9DE403D\n"
+":409D800000366A714022F781E14B222292DE63EE1F0884088DA3A6225B00F09D257E2361048D710C09BC04020F1FBB97791D8DD131B07D881443E1090C47627493FB35A9C4\n"
+":409DC000F912F07D5AEC2049E7EAB072378AD24021024E78522F8EF40E203CDF240D2F015E087568213A6020B63D21842E4FA83F441325854ED2DC11307540F000C7D10843\n"
+":409E000021F22A020007AB58CC08F26C411DA7B13C0481BEE31D12D8A9D78C981FDB35C60A96230752720F630A8E28B8F620F89DE3C0218EE04922581402835ED6922F2227\n"
+":409E4000A890400981E0F4607B7CE4F0DA8067D9C264C02A68F9621D1C3D8009FC2868879621071A4C12C051D19C3E3D524C63DE06E40072111DA828EE021018534788457B\n"
+":409E800016E04C4068E08EE050580E8780E11E038200800F316F98100C77BFBA144C012EF227324220B1D3C05EC55506EDEC5CA86298E3AA467F9E1BA3F896878313545381\n"
+":409EC000F0C4261C6038C360BECCA034F4DCF260C2000779130FB4C4480E040CE6043043DEB6024B0823DF745C8982545A98350CE24693DE0300125BCC50679DA861A71656\n"
+":409F00007C33D3C9EE244B00DD326E56291B1D81A9C766C461DBFD8B56C06705D70580D03E06BF4000090E809656B1E1EF9FF3BBE23DB31032047BF8CC6818CB4CD1F0F87D\n"
+":409F4000B89C649885EC47E1F67C30FB014448D03F1B60041378803E69FF2DE5644CFF58C3A4031AE17FAB4D161582F5528FD0F0E3C3A10812EC8624377C222445E257D217\n"
+":409F800063258586058CFA31C4D600D13A218C02C7185D2257CEF2C447F6F2989A64AF953F480EF3262094969C23A007ECD551A1045A48CBBA230B721E1303D5E3661AE58F\n"
+":409FC000C61027E667C1B8F80E9F0D0C08CC1F7C1D662027ADA68B934D962440DA53C6B9847F3C3D216A5B4830EC6983E45B521FC462544B8A03A813D2FC8805E6A0A1232F\n"
+":40A00000CE901C603E25C5D40082428FCC4EC89323D7ADD504721A88D074E8F49D99611A0368910789D08C080640328BCFCA25D62B42618C177A46FB5236FE0AD50B92C4A4\n"
+":40A04000C2DB17CA204034806180581E810254E51C87A9401AC21677A94C04588344752F1B5C41F7E39E0100C6225406CA9A1F19BF8F82F9CAE3420606400CC4901808985F\n"
+":40A080000C311E00D459880A2059D8B01022401D2C303D2DAF3475CE220375F4D0F6B11882232418545A62AA770290EFD43B05EF220440507EB412E06CC218698B07A91D76\n"
+":40A0C0004488073D283A2265581FC417E240F6BEC911C881E111F9E959A1EA18C2030A6AE343AE04CBC987693035750A61712831037CF6AE373009BC0063E683440A972583\n"
+":40A10000B9F88E71E9E102004C82BA88000F803611F26D9584CC60360E0FB4418750A72E022FB0062389C81652EB202360790BF6F4E500EEC6B0122D003FAAB14C0E4BB7E8\n"
+":40A140003F4B01DC5E081EC2261EAD3B100F20E87E157B1700240C11819E01F87F069015BD10E02987D96608E2684370EE32D49001CD22D7787C12D76F3C2354B5E059E47A\n"
+":40A180005194069968596DE8038B7C0AA080AA004AA198D22C482E22A83D8F924019EA17F5AAB203505F79A09AA567643B2039874A42531F840304A06FCF93060E1AC4F68B\n"
+":40A1C00035A0F6EA749403D81E42EF2B43D8FDC5E375316085F85F8C48EEB3D2123BB21FD2268700A9302442A42892F86361C4031667A46F8A060D622FB220103DC18F0A70\n"
+":40A20000242E0883A1D88E298C5D90FEA012A86B301E99012D0D06037207C683E3F6462373A0ABECAE347B21F9A737B737F44AD60151A02C1B5D9B8C2C004A35127D90FE20\n"
+":40A24000F24040455228B0050C4E2C014BA0107217F4E86118D726ABD90FCA09ABEA0DE810B039890A3D518C7D90FEB81E5302E3028060049D53EA22301444B412AF06CC3B\n"
+":40A280008266842320B5414BF7409BF7C023300435B4B21C0AD900349A47B21F84010BBB2A111E05B841178339900042D4BB21F98EAD5C2B52095008F7D7E89AA53D9AC35A\n"
+":40A2C00077D813BCBA0A8720E8AD10706C07C40B0469149DE5145C90008B5C8961047C493E34AC02E10AEF280449A43E16BE108C871E4C2DC50C4360244A0BFC9FA6367D21\n"
+":40A300000BA200D6268BAC49E00790C7071A15208BD2CCC3550855C87A4BF048421B161810F5640398D556694401B452226D982D0C03688C50509EA98947D21743360536E4\n"
+":40A340000D7DE19DC17280E20D1AA41FB4F326BB07CB57A255DB011DF8887BEE6C4D1ED22B104742FA267A202092050F80C153ECDFD235C7105C5CF0DF70F15271E234637E\n"
+":40A38000EE015109801B14405FE7E391398AD0838CBC8EC7DA47B198731A1A25423D888EF3CC2EE22F40E000B898E99C8855E8F0941120BC5D645E6CAE2F542C8F7B460FBD\n"
+":40A3C0000FB01A68031EBE3081EF87A08761FB2040613405C4005EFBF023D2CC03D94E8566A0648961AB35A3E77E82F208E086A068B5626445403C9E4343BA7C0F8511AC0F\n"
+":40A400002EE3070902C171806A88A46805E67153042F4116435440819E6C8F73BA0D9DCFDB35A20F1A01F9E013DE8620113A0111A131FE5C1E0129A01E1B5E2B7D9EC9E036\n"
+":40A440004356E04688776A35EC322E374C450047007003CE385C82C6416821F7577180E0285DB696181C4550210910088E90FBCB1A046B055D9902225AD9A00FCAC41F36F1\n"
+":40A480008F4D602880369D5402482066060DCC819038AE9DD105FBC2E06FB10EE227120083F329E0805A5C02F01C98DA700090851304B60D4AD01BB7FAC8FF2FFC586C3D25\n"
+":40A4C00096922030CA1721C19610B360F89499060313615F06809108D9B8831152CD8A139E7D641ECB601225708634886510CB2A406363D5726254EE768812562F4C8054A6\n"
+":40A500002A9D0F6D66B86C091A501DD886CD00F1382E381C196C8877874383A1C0C4E85F0944F04D0688AA5D91E40765D19913E70961F505288DF62E600A3F94C0D109AD86\n"
+":40A54000E26017683193030BAAEC1112C5CF2C07CD8B957939E459BA41067CB8AC21D3FA2050FCCC0C309E80854B10302E5046A0F10503211DE03CAEE4FD1BB2D49EC2C56F\n"
+":40A58000A443681945BE970D19D500680C15AC58F2FB0301880806B2BA608AA510D0346362A32C382B1296341004332C2C5C965F709DD62D13B970EA41D6A3AD895203D865\n"
+":40A5C000B03AE4D0AFED31AA8B2273EC24C4DF9457910782EF3EE51FBA720B443027001BA3461364230200DEDDAE1377545A30C01201A80300920DA46851858094BD00F832\n"
+":40A60000D6209A3DBB922239AC679B4761AA6B1B651E02B0C05485804AA743BB3547A45B66282C140C5AF00A18C4B01E89E488E625442781A00DC64DB146FB648023D6B262\n"
+":40A6400090C7F40CF66710982BE9022F803344B1BBC008919FD33C02029A05B5CE2F1A256F667220040F4E4558145D288044A85C8F28B714181AC5011C111C2449EE0E78D1\n"
+":40A68000B0411EE26430140A058221004C160671C086CDF32368193FCBA3C034344A0C0D0A92C91B0C89A6C4828D26449A88C6048BF410AC0C67E8215D17AC87F745BB213A\n"
+":40A6C000E943C3C2BD90DFD99CCB380CEBE903C524668F2030812495989102BCF628381A14185300469A9E2020F647714E31408EEB1E4338480C570079170C0A1E19EB1123\n"
+":40A700005895156DB4181B18D631889330089B6A0236C04C27A9300395C87983404388B105CB902BAFCFC6D482528160719540D10FD003991185D1C0791144F606D707E453\n"
+":40A74000CB5487292B985C3C181A443147B4A447038977E518E05C508EC0DA8F6783A452A552021DEAEAC8171A01100C7AF535C955080DE39021AEAA2F473C90E43877F671\n"
+":40A780000179DB3848C0958DA02C7BFA147D4D2E5E76E522B807F4CA010E3E7B1B39A83C2AA2240D7808FC5C183E42D843C1750416083ED07720A4021C0019EC0D00506133\n"
+":40A7C000167AFBF91B58C30088847F8C5E576842DEC6592886E3431B78105D98D821B6F0283DFC5F382593C124B08C2860B402D540073342E28178880CE5354E6020C6B9AB\n"
+":40A800008409509C9501CD1392E076CE1348E148E16DC16F85BC000357081BAD670C980E4C85DDBAEC80250816C2035BB52B4477F5B6C88E60D797030AD846516F7E46118C\n"
+":40A840004B0BBFF284D1023E1B1E22A4D631F7BFF100CD733C7B1BFD551646D0075E65C986121ECAF21CA06004B20AA607BE3510030DE9F912F80F08944063F5881C4F2418\n"
+":40A88000D62CED9C5E330C1EA3C44AD9E80120B5EDF0280BC370F448D9748D02D0F0220D12D3B3AD552A5234966815FDA238256A8016C0A25196B340AAB680946913CC0A65\n"
+":40A8C00047E825D817EE08459A04DDB4449720903549AB6318156D244B54F37F844D34890B6981AA4A47236D440AE4E3843FE12D836D5022170A65E0100E0AA823FE23E3D2\n"
+":40A90000005540E3DAE5E03408434474B6CBC88164F321B80D38AA810B8180F133501DADB4AFC29746680ED81DC017100052C42EF0EAF2217281AA2D91B6DE50A4405B1DF5\n"
+":40A9400081135867C494233ADDFBE1BB8088205AF8F0C4ABB070C408008EB0510D56091B40244A1D9DA498A16E953C6CBA582F400A3EA89A22281A1D289E0366C46B20F690\n"
+":40A98000256745E520FD98101BDBA47699C160DC5D235D625622B590E97DFB72B5FBF6211B39E801D6C54C4FCA0081CDB290DCCF0ADC42785BD112E9443B091C872645FE0D\n"
+":40A9C000087C10D8793F83D65CC2CE12E160134407059203F0BBE101F38E040707F735E40070899DA08E608027B818A1042946E080340ECC0022762E1D2691D2A3A58E1202\n"
+":40AA0000D2B850BCD67C2146F22C3F14660F683CA80194A17701563354DB237629D225C01F78CE2E0184C148660C801830098360801009DAC21C1860689AE088D60300184B\n"
+":40AA400009CC1AAEF44D3605E720ACD133CD0346FBD33FA39133101093B4F0083A689986C5A200DFF1413082A6918DE7415105706B1102029041A9E26E9A263596D02E0E9F\n"
+":40AA80004F206621E3D24900F06B1982980602D97900288244D52C88DF2BAA0F71CE8979A06636182B490C2AD045F0B551143C6FFC2017BCC1C809F878546B74300807A76D\n"
+":40AAC0002188D62C096057C411822097042599D129718E0D0202FB106195AA6040AD45512880A25A91A20D61451B290F0EBC110B89DD96AF088210177C561F0F510F22657D\n"
+":40AB000010548D9800E6F088308A1838CCB143D99F440A8042285C40051C080C40406419F0B650F0AE242AE0C9434485570083562396B1244D023B05F410030605C18206A7\n"
+":40AB40000020742EEFA02196251C373700EEE98E80182D540091D82EF174008E20D788FD1009C2FAFE035476363B6D6CBD862C3A00B1104FF21CD8078FF37CC1204D80F06E\n"
+":40AB8000FF3BAA240FF37358A030C475A46C982414289D291AFE987C235871D8000483360402E08FF4CA1976BAE088110980C9010DBC380A3DB6642010428E9390F8D2099C\n"
+":40ABC0007821208FF1B2761310C120D234D460A43359A0A2F8C121146728BC40188D1B98F53B08E11803282FE23923E3C1510383103C783B870F049E883E45ECF124139940\n"
+":40AC0000E099D60A6E6EA3E504F1918842A7C8F487B5EFC861067DCC505BB9E88BD50406C8063B6FDFD20A10038044048A50E43D19DEB17F193011FC1B188D30AC7F3F3C2F\n"
+":40AC4000EAF04599CC5998E59F51EC09667616666966076B0B8453D2B38907B1640989E008A204C82D8B34B49F42090C25CB0C302270C60128BC9F045AB2791D42E283D04D\n"
+":40AC8000A1890100D05DA76A2607122CD80A0FF270DD3FFB5FF040E2F408F2A078F95024801F8A8F444FEB92D13882EC8BF2018B8023D3F2020F8EE0804FE17B7200F8C1ED\n"
+":40ACC000117C53D22208FC678F262CE05300845A2AA324BAB7D842F0BBE0EB23B828CC4510F4E06200E8158BCEC508003E258C228420647FF3F88256F610034BC043823C44\n"
+":40AD0000CD70B00617AEC790970F9C7E88FFF42B32106221D5708015722068E245DF9E13F08DBDB0B243E97BAB612248051EC2F1E01C1D7C0A6665900A818E300F5C1B24D2\n"
+":40AD40008F6F82C70787560F32E3200C721A07A13FD905490F222D1F40FE3CD4062480E3F85C30270071804170C1E994F3C96A53B4D864DD004B0EB5E31F862F84571C0ACF\n"
+":40AD80009D19C08ADF017A0DEF601666708855ADA91144FF2AF79A0135F7CD733E8B103B924C0F11591040C11E831DFF712EBC9C1A0E1F00EA0F053D40B9020760C361A268\n"
+":40ADC000112CF611CD9036191124F6027B61FC8E5392CEC0799AE74808769AFD70BC470903C6E38B8E978F698B980C6A85DC805141682EEED259A890EF78B123BE19AE1073\n"
+":40AE0000AFD0DA059BE6206EE1BE45AF048B12D40A3604CEA7E41004FF094D80EBCF49247F8475EC243A00D1B043D1E1048FF31FC1DDA243982101FE079B1F10FD89FE0E75\n"
+":40AE40004BCA5A52C1BE1802F969CA40166C182050053C431E551C901A7320201FE70F8771CBAAE48704341224AF5BB00FC53407E88F612C7D90F8334012A121FC4F5C7CFB\n"
+":40AE800007379C9F09838447EF4782372AEC0C000FC5732208809D756020292A2781D74E892A381B1DDD5C25C9167F1266C1066C9587F1DAC1406F78B0704FE3AC053C670F\n"
+":40AEC000502B4C29D047EA603E65E11CDF2103BE019D19B00803643440E4362A200A03F8E24084364E03F8E1A4A2029FC6F9B0521B33C01BC6C0746C8007F6D06C30623F26\n"
+":40AF0000DC2E2C8FA8030A1F10201B343C08F3F87AF6F6508847F0F1062221FC3B9A2449B023203AFB71C04302E48E3F873344873604A3F8723604C873B6745BAC04E3F83D\n"
+":40AF40006E363E03D81030133F86C34482360523F86BF6F6B08A87F0D26C0AD3408D0688F86C0B07F0CD4742C1E20D1FC324388B880C6688F66C0BC7F0C3062301FC301A91\n"
+":40AF800023A20311FC2F1B1BB7B0B02EA033285B346E5F01A18168D11C4D81A8FE160D81B28398AC6C0DD1A22A9B0384188A6688DE6C0E47F0A468CF403A3175B80611226F\n"
+":40AFC000279B03B1B262972021FC269B03C78200C8FE12CD8218D99B40A5360883647040A4EF3401034950CCE920C96092CBA22251B1DD53C5810AA8442C409D360853648A\n"
+":40B00000C03F89BAF31214FE287D6EF927ED4989C6812E825E6A1258D8260D9A800250D8266186AE038EE70B048D4F8C900903607A60072E784064F9406640FAC8442F5018\n"
+":40B04000A92063DBA00244611123C008C1FE5C835C80B11817F20E1909B60643285080B3490CF0931DC286040542A13F0A501E46F8D8482D88068074070C40B9C1E449B2C7\n"
+":40B0800063C5686334856A005C02F8218442001CE1D011089BA8BC163D593E85C0E15F31F0C3989427F01C12F7A2B21A30F2F6C440F14C4206C583DC9C882034905109C147\n"
+":40B0C000046A458980D9A6F01B8304626368006C0FA147B3210420F83FBCC750C0D107075344A102CD805A7F1019AD9F1867F03F4F63608A3640D3F851E206A88F76AA4B17\n"
+":40B1000001C0E813846ECE44124B86140FBD6E25811F03808FF043E43E0A0A07064728828411FA442288608ED4C22C074105CB8860743EE5242F414B08145B545802E776BB\n"
+":40B14000F84A376F09AA768E381751CC7A22B4012B42064D1EC1831618CAF12F4E748E9D3C7CABF820895A03F624B883E6B9CC059C5DDDCA2C71F5F236BB54B04DBED5DF4E\n"
+":40B180004CD6387AD9F061C598C0020F7204DF8754CD2010990766E221780BB9540201BFB1D50F0B318052F480C19818380D03466B4C004F0B48812010D36B71C9CA302B1E\n"
+":40B1C000D5D9E39094264AFA812058E04F1E7210187B040D0D88004D12DEFF94B25404BEED52944EE05B306502EC0A0CB3D8C990080DECCDE430F4C4207BDD20713C108C43\n"
+":40B20000B4070341308881706B1F092340A7C41E7DA99699E01A9A255627D549E4BB5E61020D0291B130D0774134A251813989EDE408DC84B74AA50164D223D976BCB24530\n"
+":40B24000E2809A8225D16CC0414108A209E6425A0189A03CA00035F88B24470A5C61028E31231C713D3C881C5555122350107728F019D11A713CAA33A60018BD9B14889D4E\n"
+":40B280006BF40D515313B2A6202E2D21843005C68635C13709C88A593E8C1A024E663950E07A12F21758C24A0C02543511110149911D90BA24662747480520E9E190FDFBE3\n"
+":40B2C000F7EFDFBF402AE856F11131E05E23B944480419625E22611C0945B113CF6AB821C6B790B34417190C0E76AC9A206B1BFEF245505C81A06C920139AA6CDC0458472A\n"
+":40B30000E19C7C50699B2C625F036580041736476EFAC9136803CFCD22B7BED8847EF2F9B09AC6AE88886DDA006DBC08BA03071020D73480F32816EC7971020A2B7189A10E\n"
+":40B340008D548D8B7089A4671B601B7F189D901E55480027E64B03A24B28D0368F1960810741ED254CC5400165EB30516C18593DDA176D26A01593069FACB21CC086817201\n"
+":40B38000C1C7566B001815A8102B7E115E22982EF2E0E09AA535C5CF220596D62D260DB60963489FF8C85874B9E371614D80C138A20592CC899D943478819A05A85DD5B6CE\n"
+":40B3C000480ADEC84492108D0073B59E4C8118AE310608D449D0059676511BACF758C88E2C10E8C61B63BA5F04138C608CA6B0FA430406B8E7DB21E2009A23F5C46E4588B4\n"
+":40B40000D8E065A256F7892096A70B24680994DC52E111D81C8829D848D091D0C2463043B3486C20987271B8BC188C1ED0B91B88C46555911345A231E2109A22E5C24C45D1\n"
+":40B4400003881443290AA061955108342A28D060B1487BDBF10010A1A92400C0A91C2C8A1A2239AC255C1A221AD9A4191A01B16400DBF40AA005010480A7601AB25D0148DF\n"
+":40B480000B1DB2FA60D4EE8874060B4A5DAE8C9042BEC0305008C0A47EC804B7EB8F4022FA30B50104EA0195217040AB6DE13D9444C0D000E0A2636E043997E1005A67A152\n"
+":40B4C00001CA4F357E21E4A382EE87E1D15F0C108268DBA08F0EC334418EBDA1A74400000300038C000000004206000038000007DC001FBF7EFDFBF618FE0447810E95F7E7\n"
+":40B5000096343623B885A001A6202C0A4E29E2C3A6E44B251C11626E2D42121E688A162083715E317F720320BE174DB24A8521175E2F7AE302DAA0D20277174C376942DCF0\n"
+":40B54000F5CC251CC2CDC858C4A1D46E080320D0200CB706D1B8C60380E8320DC3A0D589346E59C2136E31EA6E57FA6D827B0479220884BEBED04180C4B48443BDD308073D\n"
+":40B58000E06B02210608E50497639315832855C2A8382987CC76C8694EC80848044F2E902C90BA11CC0480C4F6DAC10024423CEC80A10BB5C089B108244664A6026520A10F\n"
+":40B5C000400A4348C47A0FE8B14F5878900A9E769C5145E3CAE200439A30F2FBF7EFDFBF7EEC4C1BC6F1AF76A2D44DD450CD6F00E5BB701EDB3C20056F1EC655617001BA16\n"
+":40B60000602017656E9756A10F50D91F5AB51625522CC3364E619BA5918B72069D42218D2190C6106C8BD412869B5C4D801B92E37B93423B9303CF901F2D80B97FDBEE4817\n"
+":40B6400009EA2811D931C69940EA386E7314360C61C0721C064188643C0C90E4320EE1C86E1886830C2E21C06084290C43A86C1A0641C862338EE3D6E76263586FB0880C3F\n"
+":40B680009B20E4305098CF611C9186639DCE41E57DC25D6DC058B6FE5FAA493DB94F3DCE668780A6D5641E07B6AE4057DBA8D7DBA93AD88FB4DBD51E142BB002DDCC9CFA68\n"
+":40B6C000ABBE76EA6A027733AC21C0531176F1D560C36ED5289480A8ED3656A1D95A0467A5E3A7C1AD9E1AB4F085AFF4BD411238274CCF34314516D8E480EFB15616C83A87\n"
+":40B70000AEA31B3D8D82475DB112420D4B26437EDEE88041B4001078106C4F07266C6819765A73937D9852B423C8DCA32C0142BF5D3048981D332479FD2D8F072D8DED9DDA\n"
+":40B740008C716600104B1978ED88120180C01811EB8F11131013830EE4FF10C0060C0080C00A0C00C0C0120C0180C01A0C02A0C02C0C02E0C2020360C2C61020061700405F\n"
+":40B78000BC180C018145E38C291E8312B100203318833D5F2275FD80BF65746701DC0194A7B6346C9B73A9553A7C5B7D59ECB9043A6CAD35BAC8E017015AA9256CCABDAE73\n"
+":40B7C000EC39C44C2265DDE230730EA11D00492361AAFB8B4BE36E2405610C4DDB626C41D85C077606C30D0C31B061507BABF147CD7BA36F281A031000680C90EAD5211CC7\n"
+":40B80000396F40865E8037914F7AF419200915C65BCC5C8D2310E5BA43A1BB69D0DFB9E22BB77188D2308E70C90DBB6A1142E2308F0A3B13550EA31A1BCE3D33727053C551\n"
+":40B84000ADE5A35399B1BAF118002789229DB51210C5611452A2B988A3C6ED293C1CF0610C31520C9906610200000000060000080001000203000BA800000000FFFFA1EC67\n"
+":40B8800038000013600077E821C5E0208418EED8D2D60AC80C1A00C0110120100114157FF8B566A01BDAC130040340400248240480250280A4160A02C01301581AA0D0684E\n"
+":40B8C0000D004E0480E004EF560D409C0BA46CE5A044029A88120085F481300A6420500298481500A5C40B0046FA40B807282060034C1900D60D006B06C03583801AFD1206\n"
+":40B90000952D03C01A7D29F52D514892904202488B014C47904602C6104802A7D21422D04C02A78CAC1B0A0064C2901961500CB0AC07585803AC2D01D61700EBD2084B41B7\n"
+":40B940008011124188130C4190129EBB9A5A0D00A4C3502D61B016B0DC0C5870062C3903561D01AB0EC0E5878072C3D03D61F01EB0FC0F3ED21087E080EE18202240207AB8\n"
+":40B98000242340223824240FC113B1212A0121A12132012391213A01327921417E0A03490A4BF0509548545F82A08A42B402A47242C402C05242D402C42A42E402E012421C\n"
+":40B9C000F402E3EA43049F218203140303A86080C900C1E290CD00C8DA90D100C9D490D500D0CA90D900D1C218203740364E24390FFCEEB22C0750604A221DA01D03D21E9B\n"
+":40BA0000248C487A807808487C1FA084487E807E900880C8F8182020A4F748841F8403A244349E0182044404236244549D0182046404432244740460E8608120BF463F505E\n"
+":40BA40006049402405922524920C1025A02503522617E822830409A809806489C920830409E5FA0FE48A05F84E3D245149EC9148BF0A07248A693B522A20291A522AA4E610\n"
+":40BA800048AC80A86248AE80AC1C0C102C87E82603040B480B01448B69B2808B8C05A06222EA4884D1A80B804645F46AE84600FD83F0304061405E3C24624D5D08C6806013\n"
+":40BAC000A19101828654062A199018A8670FC322743040D080CD43497E1992C91A901A02491AD01A11A91B101AA86D406A43246E406CA1BD01B0FC182070406C7D24714041\n"