Touch driver porting

Root cause:N/A

How to fix:N/A

Feature:Touch driver porting on Android 10

Change-Id: I410640b03f15c06b9f67e6096aea4daa19a23a30
RiskArea:Touch
diff --git a/arch/arm64/boot/dts/qcom/msm8953-pinctrl.dtsi b/arch/arm64/boot/dts/qcom/msm8953-pinctrl.dtsi
index 957f6ac..908cdd0 100644
--- a/arch/arm64/boot/dts/qcom/msm8953-pinctrl.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8953-pinctrl.dtsi
@@ -1432,65 +1432,67 @@
 			};
 		};
 
-		spi3 {
-			spi3_default: spi3_default {
-				/* active state */
-				mux {
-					/* MOSI, MISO, CLK */
-					pins = "gpio8", "gpio9", "gpio11";
-					function = "blsp_spi3";
-				};
+/*[20200429][TracyChui]Touch driver porting start*/
+//		spi3 {
+//			spi3_default: spi3_default {
+//				/* active state */
+//				mux {
+//					/* MOSI, MISO, CLK */
+//					pins = "gpio8", "gpio9", "gpio11";
+//					function = "blsp_spi3";
+//				};
 
-				config {
-					pins = "gpio8", "gpio9", "gpio11";
-					drive-strength = <12>; /* 12 MA */
-					bias-disable = <0>; /* No PULL */
-				};
-			};
+//				config {
+//					pins = "gpio8", "gpio9", "gpio11";
+//					drive-strength = <12>; /* 12 MA */
+//					bias-disable = <0>; /* No PULL */
+//				};
+//			};
 
-			spi3_sleep: spi3_sleep {
-				/* suspended state */
-				mux {
-					/* MOSI, MISO, CLK */
-					pins = "gpio8", "gpio9", "gpio11";
-					function = "gpio";
-				};
+//			spi3_sleep: spi3_sleep {
+//				/* suspended state */
+//				mux {
+//					/* MOSI, MISO, CLK */
+//					pins = "gpio8", "gpio9", "gpio11";
+//					function = "gpio";
+//				};
 
-				config {
-					pins = "gpio8", "gpio9", "gpio11";
-					drive-strength = <2>; /* 2 MA */
-					bias-pull-down; /* PULL Down */
-				};
-			};
+//				config {
+//					pins = "gpio8", "gpio9", "gpio11";
+//					drive-strength = <2>; /* 2 MA */
+//					bias-pull-down; /* PULL Down */
+//				};
+//			};
 
-			spi3_cs0_active: cs0_active {
-				/* CS */
-				mux {
-					pins = "gpio10";
-					function = "blsp_spi3";
-				};
+//			spi3_cs0_active: cs0_active {
+//				/* CS */
+//				mux {
+//					pins = "gpio10";
+//					function = "blsp_spi3";
+//				};
 
-				config {
-					pins = "gpio10";
-					drive-strength = <2>;
-					bias-disable = <0>;
-				};
-			};
+//				config {
+//					pins = "gpio10";
+//					drive-strength = <2>;
+//					bias-disable = <0>;
+//				};
+//			};
 
-			spi3_cs0_sleep: cs0_sleep {
-				/* CS */
-				mux {
-					pins = "gpio10";
-					function = "gpio";
-				};
+//			spi3_cs0_sleep: cs0_sleep {
+//				/* CS */
+//				mux {
+//					pins = "gpio10";
+//					function = "gpio";
+//				};
 
-				config {
-					pins = "gpio10";
-					drive-strength = <2>;
-					bias-disable = <0>;
-				};
-			};
-		};
+//				config {
+//					pins = "gpio10";
+//					drive-strength = <2>;
+//					bias-disable = <0>;
+//				};
+//			};
+//		};
+/*[20200429][TracyChui]Touch driver porting end*/
 
 		spi6 {
 			spi6_default: spi6_default {
diff --git a/arch/arm64/boot/dts/qcom/msm8953.dtsi b/arch/arm64/boot/dts/qcom/msm8953.dtsi
index cd084ca..f42b0f7 100644
--- a/arch/arm64/boot/dts/qcom/msm8953.dtsi
+++ b/arch/arm64/boot/dts/qcom/msm8953.dtsi
@@ -188,7 +188,9 @@
 		i2c2 = &i2c_2;
 		i2c3 = &i2c_3;
 		i2c5 = &i2c_5;
-		spi3 = &spi_3;
+/*[20200429][TracyChui]Touch driver porting start*/
+//		spi3 = &spi_3;
+/*[20200429][TracyChui]Touch driver porting end*/
 		spi6 = &spi_6;
 	};
 
@@ -687,31 +689,33 @@
 		qcom,summing-threshold = <10>;
 	};
 
-	spi_3: spi@78b7000 { /* BLSP1 QUP3 */
-		compatible = "qcom,spi-qup-v2";
-		#address-cells = <1>;
-		#size-cells = <0>;
-		reg-names = "spi_physical", "spi_bam_physical";
-		reg = <0x78b7000 0x600>,
-			<0x7884000 0x1f000>;
-		interrupt-names = "spi_irq", "spi_bam_irq";
-		interrupts = <0 97 0>, <0 238 0>;
-		spi-max-frequency = <19200000>;
-		pinctrl-names = "spi_default", "spi_sleep";
-		pinctrl-0 = <&spi3_default &spi3_cs0_active>;
-		pinctrl-1 = <&spi3_sleep &spi3_cs0_sleep>;
-		clocks = <&clock_gcc clk_gcc_blsp1_ahb_clk>,
-			<&clock_gcc clk_gcc_blsp1_qup3_spi_apps_clk>;
-		clock-names = "iface_clk", "core_clk";
-		qcom,infinite-mode = <0>;
-		qcom,use-bam;
-		qcom,use-pinctrl;
-		qcom,ver-reg-exists;
-		qcom,bam-consumer-pipe-index = <8>;
-		qcom,bam-producer-pipe-index = <9>;
-		qcom,master-id = <86>;
-		status = "disabled";
-	};
+/*[20200429][TracyChui]Touch driver porting start*/
+//	spi_3: spi@78b7000 { /* BLSP1 QUP3 */
+//		compatible = "qcom,spi-qup-v2";
+//		#address-cells = <1>;
+//		#size-cells = <0>;
+//		reg-names = "spi_physical", "spi_bam_physical";
+//		reg = <0x78b7000 0x600>,
+//			<0x7884000 0x1f000>;
+//		interrupt-names = "spi_irq", "spi_bam_irq";
+//		interrupts = <0 97 0>, <0 238 0>;
+//		spi-max-frequency = <19200000>;
+//		pinctrl-names = "spi_default", "spi_sleep";
+//		pinctrl-0 = <&spi3_default &spi3_cs0_active>;
+//		pinctrl-1 = <&spi3_sleep &spi3_cs0_sleep>;
+//		clocks = <&clock_gcc clk_gcc_blsp1_ahb_clk>,
+//			<&clock_gcc clk_gcc_blsp1_qup3_spi_apps_clk>;
+//		clock-names = "iface_clk", "core_clk";
+//		qcom,infinite-mode = <0>;
+//		qcom,use-bam;
+//		qcom,use-pinctrl;
+//		qcom,ver-reg-exists;
+//		qcom,bam-consumer-pipe-index = <8>;
+//		qcom,bam-producer-pipe-index = <9>;
+//		qcom,master-id = <86>;
+//		status = "disabled";
+//	};
+/*[20200429][TracyChui]Touch driver porting end*/
 
 	spi_6: spi@7af6000 { /* BLSP2 QUP2 */
 		compatible = "qcom,spi-qup-v2";
@@ -813,7 +817,10 @@
 		dmas = <&dma_blsp1 8 64 0x20000020 0x20>,
 			<&dma_blsp1 9 32 0x20000020 0x20>;
 		dma-names = "tx", "rx";
-		status = "disabled";
+/*[20200429][TracyChui]Touch driver porting start*/
+		//status = "disabled";
+		status = "ok";
+/*[20200429][TracyChui]Touch driver porting end*/
 	};
 
 	i2c_5: i2c@7af5000 { /* BLSP2 QUP1 */
@@ -2331,4 +2338,4 @@
 		elan,vdd-gpio = <&tlmm 90 0>;
 	};
 };
-// //>2020/04/23-louisliu
\ No newline at end of file
+// //>2020/04/23-louisliu
diff --git a/arch/arm64/boot/dts/qcom/sdm450-pmi632.dtsi b/arch/arm64/boot/dts/qcom/sdm450-pmi632.dtsi
index 2319b3e..b4870b6 100644
--- a/arch/arm64/boot/dts/qcom/sdm450-pmi632.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm450-pmi632.dtsi
@@ -401,4 +401,22 @@
 		  };
 	};
 };
-*/
\ No newline at end of file
+*/
+/*[20200429][TracyChui]Touch driver porting start */
+&i2c_3 {
+	status = "ok";
+	himax_ts@48 {
+		compatible = "himax,hxcommon";
+		reg = <0x48>;
+		interrupt-parent = <&tlmm>;
+		interrupts = <65 0x2008>;
+		vcc_i2c-supply = <&pm8953_l6>;
+		vdd-ana-supply = <&pm8953_l10>;
+		himax,display-coords = <0 1080 0 2160>;
+		himax,panel-coords = <0 1080 0 2160>;
+		himax,irq-gpio = <&tlmm 65 0x2008>;
+		himax,rst-gpio = <&tlmm 64 0x00>;
+		report_type = <1>;
+	};
+};
+/*[20200429][TracyChui]Touch driver porting end */
diff --git a/arch/arm64/configs/msm8953-perf_defconfig b/arch/arm64/configs/msm8953-perf_defconfig
index 221622c..4ff6c5b 100755
--- a/arch/arm64/configs/msm8953-perf_defconfig
+++ b/arch/arm64/configs/msm8953-perf_defconfig
@@ -321,12 +321,17 @@
 # CONFIG_INPUT_MOUSE is not set
 CONFIG_INPUT_JOYSTICK=y
 CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_SYNAPTICS_DSX_CORE_v26=y
-CONFIG_TOUCHSCREEN_SYNAPTICS_DSX_RMI_DEV_v26=y
-CONFIG_TOUCHSCREEN_SYNAPTICS_DSX_FW_UPDATE_v26=y
-CONFIG_SECURE_TOUCH_SYNAPTICS_DSX_V26=y
+#[20200429][TracyChui]Touch driver porting start
+#CONFIG_TOUCHSCREEN_SYNAPTICS_DSX_CORE_v26=y
+#CONFIG_TOUCHSCREEN_SYNAPTICS_DSX_RMI_DEV_v26=y
+#CONFIG_TOUCHSCREEN_SYNAPTICS_DSX_FW_UPDATE_v26=y
+#CONFIG_SECURE_TOUCH_SYNAPTICS_DSX_V26=y
+CONFIG_TOUCHSCREEN_HIMAX_CHIPSET=y
+CONFIG_TOUCHSCREEN_HIMAX_I2C=y
+CONFIG_TOUCHSCREEN_HIMAX_DEBUG=y
 CONFIG_INPUT_MISC=y
-CONFIG_INPUT_HBTP_INPUT=y
+# CONFIG_INPUT_HBTP_INPUT=y
+#[20200429][TracyChui]Touch driver porting end
 CONFIG_INPUT_QPNP_POWER_ON=y
 CONFIG_INPUT_UINPUT=y
 # CONFIG_SERIO_SERPORT is not set
diff --git a/arch/arm64/configs/msm8953_defconfig b/arch/arm64/configs/msm8953_defconfig
index ad12e19..830d3db 100755
--- a/arch/arm64/configs/msm8953_defconfig
+++ b/arch/arm64/configs/msm8953_defconfig
@@ -328,12 +328,17 @@
 # CONFIG_INPUT_MOUSE is not set
 CONFIG_INPUT_JOYSTICK=y
 CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_SYNAPTICS_DSX_CORE_v26=y
-CONFIG_TOUCHSCREEN_SYNAPTICS_DSX_RMI_DEV_v26=y
-CONFIG_TOUCHSCREEN_SYNAPTICS_DSX_FW_UPDATE_v26=y
-CONFIG_SECURE_TOUCH_SYNAPTICS_DSX_V26=y
+#[20200429][TracyChui]Touch driver porting start
+#CONFIG_TOUCHSCREEN_SYNAPTICS_DSX_CORE_v26=y
+#CONFIG_TOUCHSCREEN_SYNAPTICS_DSX_RMI_DEV_v26=y
+#CONFIG_TOUCHSCREEN_SYNAPTICS_DSX_FW_UPDATE_v26=y
+#CONFIG_SECURE_TOUCH_SYNAPTICS_DSX_V26=y
+CONFIG_TOUCHSCREEN_HIMAX_CHIPSET=y
+CONFIG_TOUCHSCREEN_HIMAX_I2C=y
+CONFIG_TOUCHSCREEN_HIMAX_DEBUG=y
 CONFIG_INPUT_MISC=y
-CONFIG_INPUT_HBTP_INPUT=y
+# CONFIG_INPUT_HBTP_INPUT=y
+#[20200429][TracyChui]Touch driver porting end
 CONFIG_INPUT_QPNP_POWER_ON=y
 CONFIG_INPUT_UINPUT=y
 # CONFIG_SERIO_SERPORT is not set
diff --git a/drivers/input/touchscreen/Kconfig b/drivers/input/touchscreen/Kconfig
index 1e620a9..daf4203 100644
--- a/drivers/input/touchscreen/Kconfig
+++ b/drivers/input/touchscreen/Kconfig
@@ -11,7 +11,9 @@
 
 if INPUT_TOUCHSCREEN
 
-source "drivers/input/touchscreen/synaptics_dsx_2.6/Kconfig"
+#[20200429][TracyChui]Touch driver porting start
+#source "drivers/input/touchscreen/synaptics_dsx_2.6/Kconfig"
+#[20200429][TracyChui]Touch driver porting end
 
 config TOUCHSCREEN_PROPERTIES
 	def_tristate INPUT
@@ -1373,7 +1375,9 @@
 
           If unsure, say N.
 
-source "drivers/input/touchscreen/synaptics_dsx/Kconfig"
+#[20200429][TracyChui]Touch driver porting start
+#source "drivers/input/touchscreen/synaptics_dsx/Kconfig"
+#[20200429][TracyChui]Touch driver porting end
 source "drivers/input/touchscreen/focaltech_touch/Kconfig"
 
 config TOUCHSCREEN_FT5X06
@@ -1432,7 +1436,10 @@
 
           If unsure, say N.
 
-source "drivers/input/touchscreen/hxchipset/Kconfig"
+#[20200429][TracyChui]Touch driver porting start
+#source "drivers/input/touchscreen/hxchipset/Kconfig"
+source "drivers/input/touchscreen/hxchipset83112b/Kconfig"
+#[20200429][TracyChui]Touch driver porting end
 
 config TOUCHSCREEN_EKTF3XXX_CHIPSET
 	bool "Elan EKTF3XXX touchpanel CHIPSET"
diff --git a/drivers/input/touchscreen/Makefile b/drivers/input/touchscreen/Makefile
index 59cf967..a164c99 100644
--- a/drivers/input/touchscreen/Makefile
+++ b/drivers/input/touchscreen/Makefile
@@ -106,6 +106,9 @@
 obj-$(CONFIG_TOUCHSCREEN_ROHM_BU21023)	+= rohm_bu21023.o
 obj-$(CONFIG_TOUCHSCREEN_FTS)		+= focaltech_touch/
 obj-$(CONFIG_TOUCHSCREEN_GT9XX_v28)		+= gt9xx_v2.8/
-obj-$(CONFIG_TOUCHSCREEN_HIMAX_CHIPSET)	+= hxchipset/
+#[20200429][TracyChui]Touch driver porting start
+# obj-$(CONFIG_TOUCHSCREEN_HIMAX_CHIPSET)	+= hxchipset/
+obj-$(CONFIG_TOUCHSCREEN_HIMAX_CHIPSET)	+= hxchipset83112b/
+#[20200429][TracyChui]Touch driver porting end
 obj-$(CONFIG_TOUCHSCREEN_EKTF3XXX_CHIPSET) += ektf3xxx/
 obj-$(CONFIG_TOUCHSCREEN_RAYDIUM_CHIPSET)  += raydium_wt030/
diff --git a/drivers/input/touchscreen/hxchipset83112b/FP_DJN_Arima_CID0804_D02_C14_20190903.i b/drivers/input/touchscreen/hxchipset83112b/FP_DJN_Arima_CID0804_D02_C14_20190903.i
new file mode 100644
index 0000000..fdb82bf
--- /dev/null
+++ b/drivers/input/touchscreen/hxchipset83112b/FP_DJN_Arima_CID0804_D02_C14_20190903.i
@@ -0,0 +1,4096 @@
+0x48,0x00,0x01,0x94,0x48,0x00,0x00,0x30,0x48,0x00,0x00,0x2E,0x48,0x00,0x00,0x2C,
+0x48,0x00,0x00,0x2A,0x48,0x00,0x00,0x49,0x48,0x00,0x00,0x69,0x48,0x00,0x00,0x89,
+0x48,0x00,0x00,0xA9,0x48,0x00,0x00,0xDE,0x48,0x00,0x01,0x38,0x48,0x00,0x01,0x3A,
+0x48,0x00,0x01,0x3C,0x48,0x00,0x01,0x3E,0x48,0x00,0x01,0x2C,0x48,0x00,0x01,0x3E,
+0x50,0x03,0x00,0x40,0x50,0x03,0x00,0x40,0x50,0x03,0x00,0x40,0x8E,0x03,0x00,0x40,
+0x96,0x03,0x00,0x40,0x9E,0x03,0x00,0x40,0xA4,0x03,0x00,0x40,0xAC,0x03,0x00,0x40,
+0xB2,0x03,0x00,0x40,0xD5,0x00,0x3A,0x0F,0x94,0x3C,0x3A,0xFF,0xEF,0xBC,0x42,0x2E,
+0x80,0x20,0x3A,0x2F,0x88,0x3C,0x64,0x02,0x00,0x02,0x64,0x12,0xA4,0x02,0x64,0x22,
+0x04,0x02,0x3A,0x0F,0x88,0x3C,0x9E,0x02,0x64,0x02,0x00,0x03,0x64,0x00,0x00,0x08,
+0x80,0x5F,0xEF,0xFC,0x43,0xFF,0x88,0x09,0xB6,0x5F,0x46,0xF4,0x00,0x00,0x58,0xF7,
+0x83,0x50,0x4A,0x00,0x3C,0x00,0xD5,0x00,0x3A,0x0F,0x94,0x3C,0x3A,0xFF,0xEF,0xBC,
+0x42,0x2E,0x80,0x20,0x3A,0x2F,0x88,0x3C,0x64,0x02,0x00,0x02,0x64,0x12,0xA4,0x02,
+0x64,0x22,0x04,0x02,0x3A,0x0F,0x88,0x3C,0x9E,0x02,0x64,0x02,0x00,0x03,0x64,0x00,
+0x00,0x08,0x80,0x5F,0xEF,0xFC,0x43,0xFF,0x88,0x09,0xB6,0x5F,0x84,0x05,0x46,0xF4,
+0x00,0x00,0x58,0xF7,0x83,0x50,0x4A,0x00,0x3C,0x00,0xD5,0x00,0x3A,0x0F,0x94,0x3C,
+0x3A,0xFF,0xEF,0xBC,0x42,0x2E,0x80,0x20,0x3A,0x2F,0x88,0x3C,0x64,0x02,0x00,0x02,
+0x64,0x12,0xA4,0x02,0x64,0x22,0x04,0x02,0x3A,0x0F,0x88,0x3C,0x9E,0x02,0x64,0x02,
+0x00,0x03,0x64,0x00,0x00,0x08,0x80,0x5F,0xEF,0xFC,0x43,0xFF,0x88,0x09,0xB6,0x5F,
+0x84,0x06,0x46,0xF4,0x00,0x00,0x58,0xF7,0x83,0x50,0x4A,0x00,0x3C,0x00,0xD5,0x00,
+0x3A,0x0F,0x94,0x3C,0x3A,0xFF,0xEF,0xBC,0x42,0x2E,0x80,0x20,0x3A,0x2F,0x88,0x3C,
+0x64,0x02,0x00,0x02,0x64,0x12,0xA4,0x02,0x64,0x22,0x04,0x02,0x3A,0x0F,0x88,0x3C,
+0x9E,0x02,0x64,0x02,0x00,0x03,0x64,0x00,0x00,0x08,0x80,0x5F,0xEF,0xFC,0x43,0xFF,
+0x88,0x09,0xB6,0x5F,0x84,0x07,0x46,0xF4,0x00,0x00,0x58,0xF7,0x83,0x50,0x4A,0x00,
+0x3C,0x00,0x3A,0x1F,0xA4,0x3C,0x3A,0xFF,0xEF,0xBC,0x42,0x6E,0x80,0x20,0x3A,0x6F,
+0x98,0x3C,0x64,0x62,0x00,0x02,0x64,0x72,0xA4,0x02,0x9D,0xFC,0x64,0x82,0x04,0x02,
+0x3A,0x6F,0xA0,0x3C,0x9F,0xB2,0x64,0x62,0x00,0x03,0x64,0x00,0x00,0x08,0x80,0xDF,
+0xEF,0xFC,0x43,0xFF,0x88,0x09,0xB6,0xDF,0x46,0xF4,0x00,0x00,0x58,0xF7,0x83,0x50,
+0x4B,0xE0,0x3C,0x01,0x05,0xFF,0x80,0x00,0x3A,0x6F,0xA0,0x04,0x64,0x62,0x00,0x03,
+0x64,0x00,0x00,0x08,0x64,0x72,0xA4,0x03,0x64,0x82,0x04,0x03,0x3A,0x6F,0x98,0x04,
+0x42,0x6E,0x80,0x21,0x3A,0xFF,0xEF,0x84,0x3A,0x1F,0xA4,0x04,0x64,0x00,0x00,0x04,
+0x3A,0x0F,0x94,0x3C,0x3A,0xFF,0xEF,0xBC,0x42,0x2E,0x80,0x20,0x3A,0x2F,0x88,0x3C,
+0x80,0x5F,0xEF,0xFC,0x43,0xFF,0x88,0x09,0xB6,0x5F,0x84,0x00,0x46,0x14,0x00,0x00,
+0x58,0x10,0x83,0x8E,0xDD,0x21,0x05,0xFF,0x80,0x00,0x3A,0x2F,0x88,0x04,0x42,0x2E,
+0x80,0x21,0x3A,0xFF,0xEF,0x84,0x3A,0x0F,0x94,0x04,0x64,0x00,0x00,0x04,0x3A,0x1F,
+0x94,0x3C,0x3A,0xFF,0xEF,0xBC,0x42,0x2E,0x80,0x20,0x3A,0x2F,0x88,0x3C,0x64,0x12,
+0x00,0x02,0x64,0x22,0xA4,0x02,0x64,0x32,0x04,0x02,0x3A,0x1F,0x8C,0x3C,0x9E,0x4A,
+0x64,0x12,0x00,0x03,0x80,0x5F,0xEF,0xFC,0x43,0xFF,0x88,0x09,0xB6,0x5F,0x46,0x14,
+0x00,0x00,0x58,0x10,0x80,0x4C,0x38,0x10,0x82,0x02,0xDD,0x21,0x05,0xFF,0x80,0x00,
+0x3A,0x0F,0x88,0x04,0x64,0x02,0x00,0x43,0x64,0x00,0x00,0x08,0x64,0x02,0x00,0x03,
+0x64,0x12,0xA4,0x03,0x64,0x22,0x04,0x03,0x3A,0x2F,0x88,0x04,0x42,0x2E,0x80,0x21,
+0x3A,0xFF,0xEF,0x84,0x3A,0x1F,0x94,0x04,0x3A,0x0F,0x80,0x04,0x64,0x00,0x00,0x04,
+0x3A,0x0F,0x80,0x3C,0x84,0x05,0xD5,0xC4,0x3A,0x0F,0x80,0x3C,0x84,0x01,0xD5,0xC0,
+0x3A,0x0F,0x80,0x3C,0x84,0x02,0xD5,0xBC,0x3A,0x0F,0x80,0x3C,0x84,0x03,0xD5,0xB8,
+0x3A,0x0F,0x80,0x3C,0x84,0x04,0xD5,0xB4,0x3A,0x0F,0x94,0x3C,0x3A,0xFF,0xEF,0xBC,
+0x42,0x2E,0x80,0x20,0x3A,0x2F,0x88,0x3C,0x64,0x02,0x00,0x02,0x64,0x12,0xA4,0x02,
+0x64,0x22,0x04,0x02,0x3A,0x0F,0x88,0x3C,0x9E,0x02,0x64,0x02,0x00,0x03,0x64,0x00,
+0x00,0x08,0x80,0x5F,0xEF,0xFC,0x43,0xFF,0x88,0x09,0xB6,0x5F,0x84,0x0F,0x46,0x14,
+0x00,0x00,0x58,0x10,0x83,0x50,0xDD,0x21,0x05,0xFF,0x80,0x00,0x3A,0x0F,0x88,0x04,
+0x64,0x02,0x00,0x03,0x64,0x00,0x00,0x08,0x64,0x12,0xA4,0x03,0x64,0x22,0x04,0x03,
+0x3A,0x2F,0x88,0x04,0x42,0x2E,0x80,0x21,0x3A,0xFF,0xEF,0x84,0x3A,0x0F,0x94,0x04,
+0x64,0x00,0x00,0x04,0x40,0x00,0x00,0x09,0x47,0xD4,0x00,0x0B,0x59,0xDE,0x82,0x08,
+0x3E,0x0F,0xF5,0x0C,0x42,0x0E,0x00,0x21,0x3F,0xC8,0x00,0x00,0x3F,0xF8,0x0D,0xF8,
+0x49,0x00,0x00,0x1E,0x49,0x00,0x00,0x18,0x49,0x00,0x11,0xA6,0xD5,0x00,0x92,0x00,
+0xD5,0x00,0x84,0x00,0x64,0x05,0xE4,0x03,0x46,0x04,0x00,0x00,0x58,0x00,0x00,0x00,
+0x64,0x02,0x24,0x03,0x64,0x02,0x00,0x02,0x66,0x00,0x00,0x06,0x64,0x02,0x00,0x03,
+0xEA,0x5C,0xDD,0x9E,0xFC,0x00,0x49,0xFF,0xFF,0xEE,0xFC,0x80,0x46,0x04,0x00,0x00,
+0x58,0x00,0x00,0x00,0xEA,0x37,0x64,0x04,0xC0,0x03,0xEA,0x5C,0xDD,0x9E,0xFC,0x00,
+0x49,0x00,0x44,0xF2,0xFC,0x80,0xFC,0x00,0x49,0x00,0x4A,0x1C,0xFC,0x80,0x40,0x00,
+0x00,0x09,0xDD,0x9E,0xFC,0x00,0x49,0x00,0x45,0x49,0xFC,0x80,0x40,0x00,0x00,0x09,
+0xDD,0x9E,0xFC,0x00,0x49,0x00,0x47,0xEA,0xFC,0x80,0x00,0x00,0x80,0xA0,0x94,0x91,
+0x88,0x02,0x92,0x00,0x1A,0x12,0x80,0x01,0xD8,0xFE,0xDD,0x9E,0x80,0xA0,0x80,0x62,
+0x96,0x8F,0x8A,0x62,0xC2,0x06,0x88,0x02,0x18,0x12,0x80,0x01,0xD8,0xFE,0x8A,0x02,
+0xC3,0x06,0x88,0x02,0x88,0x03,0x3A,0x12,0x84,0x24,0xD8,0xFE,0xDD,0x9E,0x80,0xA2,
+0x80,0x60,0x96,0x0F,0x8A,0x60,0xC0,0x08,0x88,0x02,0x28,0x42,0x80,0x01,0x18,0x40,
+0x80,0x01,0xD8,0xFC,0x8A,0x02,0xC3,0x08,0x88,0x02,0x88,0x03,0x3A,0x42,0x90,0x04,
+0x3A,0x40,0x90,0x24,0xD8,0xFC,0xDD,0x9E,0xFC,0x01,0xF0,0x81,0xF0,0x01,0x8E,0x01,
+0xF0,0x81,0xC0,0x03,0xEA,0x6E,0xD5,0xFB,0xFC,0x81,0xFC,0x01,0xF0,0x81,0xF0,0x01,
+0x8E,0x01,0xF0,0x81,0xC0,0x05,0xEA,0x33,0xC0,0x03,0xEA,0x6E,0xD5,0xF9,0xFC,0x81,
+0xFC,0x01,0x84,0xCE,0xF0,0x81,0xF0,0x01,0x8E,0xC1,0xDD,0x4A,0x97,0xB0,0x84,0x05,
+0xDD,0x50,0xCE,0xFA,0xFC,0x81,0x80,0x3F,0x3E,0x08,0x03,0x08,0x9A,0x08,0x5C,0xF0,
+0x00,0x3D,0xE8,0x05,0x3C,0x1F,0xFF,0x7F,0x84,0x01,0xDD,0x9E,0x3E,0x08,0x0D,0xF8,
+0x8A,0x01,0x3C,0x1D,0xFF,0x7F,0xE2,0x20,0xE8,0x03,0x3C,0x0F,0xFF,0x7F,0x84,0x00,
+0xDD,0x9E,0xFC,0x00,0xDD,0x4B,0x5A,0x00,0x08,0x18,0x5A,0x00,0x06,0x16,0xEA,0xB2,
+0xEB,0x22,0xEB,0x2F,0xEB,0x57,0xEA,0x67,0xDD,0x48,0x2E,0x07,0xFD,0x71,0x3E,0x07,
+0xFD,0x77,0x46,0x21,0x00,0x05,0x58,0x21,0x08,0x88,0xEA,0x5A,0x46,0x11,0x00,0x05,
+0x58,0x10,0x86,0xD8,0xD5,0x06,0xEA,0x5A,0xEB,0x22,0xEB,0x2F,0xEB,0x57,0xEA,0x67,
+0xDD,0x48,0x84,0x00,0xDD,0x55,0xDD,0x4B,0x5A,0x00,0x08,0x17,0x5A,0x00,0x06,0x15,
+0x84,0xA0,0x80,0x05,0xEB,0x6F,0x58,0x31,0x81,0x44,0xDD,0x4F,0x50,0x12,0x8F,0x34,
+0x88,0x23,0xA4,0x48,0x8C,0xA2,0xE6,0x21,0x88,0x0F,0x96,0x01,0xDA,0xF8,0x5C,0xF0,
+0x00,0xD9,0xE9,0x02,0xD5,0x00,0xFC,0x80,0xFC,0x41,0x3F,0xCF,0xFD,0xD8,0x84,0x00,
+0x3E,0x07,0xFD,0x0A,0x49,0x00,0x4B,0xB8,0x3E,0x07,0xFD,0x17,0x84,0x20,0xF1,0x81,
+0x4E,0x02,0x00,0xB6,0xEB,0x5A,0x02,0x50,0x80,0x00,0x44,0x10,0xA5,0x5A,0x46,0x71,
+0x00,0x00,0x58,0x73,0x80,0x00,0x4C,0x50,0x80,0xAB,0xEB,0x5A,0x02,0x50,0x80,0x00,
+0x44,0x10,0xA3,0x3A,0x4C,0x50,0x80,0xA4,0x9E,0x41,0xE6,0x27,0xE9,0x04,0x5A,0x08,
+0x09,0x14,0xD5,0x06,0x84,0x21,0x3E,0x17,0xFD,0x0A,0x5A,0x08,0x01,0x0E,0xB8,0x00,
+0x5A,0x00,0x08,0x07,0x5A,0x00,0x06,0x05,0xEB,0x54,0xEA,0xAC,0xD5,0x03,0xEB,0x51,
+0xEA,0xFA,0xF0,0x81,0xD5,0x0E,0x54,0x10,0x00,0xF7,0x5A,0x18,0x02,0x05,0xEB,0x54,
+0xEA,0x72,0xD5,0xF8,0x5A,0x18,0x03,0x04,0xB8,0x1A,0xD5,0xF4,0x5A,0x00,0x08,0xFE,
+0xB0,0x41,0x3E,0x0F,0xFD,0x17,0x49,0x00,0x07,0x09,0xF5,0x01,0x46,0x11,0x00,0x04,
+0x58,0x10,0x84,0xB8,0x84,0xC1,0xD1,0x07,0x50,0x10,0x85,0xF0,0x40,0x62,0x84,0x03,
+0x5C,0x63,0x00,0x01,0xEA,0xAE,0xEA,0xD1,0x84,0x20,0xFE,0x84,0xEB,0x81,0x58,0x00,
+0x00,0x04,0x94,0x91,0xDD,0x42,0xB8,0x00,0x5A,0x08,0x08,0x08,0xEA,0x5A,0xEB,0x5A,
+0xEB,0x30,0xF2,0x01,0xDD,0x48,0xD5,0x46,0x5A,0x00,0x06,0xFA,0x84,0x00,0xF1,0x01,
+0x49,0x00,0x07,0x18,0xC8,0xF4,0xF1,0x01,0xB8,0x1A,0x4C,0x10,0x40,0x0E,0x46,0x91,
+0x00,0x04,0x58,0x94,0x8A,0xA8,0xF0,0x01,0x80,0x29,0x84,0x40,0x49,0x00,0x41,0x48,
+0x14,0x9F,0x80,0x01,0xD5,0x09,0xEB,0x54,0xEA,0x72,0x4C,0x10,0x3F,0xF2,0x84,0x01,
+0x49,0x00,0x07,0x00,0xC8,0xED,0x2F,0x30,0x00,0x11,0x2F,0x10,0x00,0x10,0x50,0x03,
+0x00,0x12,0x94,0x41,0x42,0x60,0x98,0x73,0x94,0x82,0x84,0x00,0x05,0x2F,0x80,0x01,
+0x40,0x98,0x84,0x08,0x95,0xB1,0x80,0xA0,0x80,0x80,0x9C,0x6C,0xE2,0x93,0x41,0x03,
+0x84,0x00,0xE8,0x10,0x98,0xC6,0x88,0x72,0x84,0x20,0xE2,0x31,0xE8,0x07,0x38,0xA1,
+0x85,0x01,0x38,0xA8,0x05,0x09,0x8C,0x21,0xD5,0xF9,0x8C,0x81,0x88,0xA9,0x88,0x02,
+0xD5,0xED,0xEA,0xAE,0x2E,0x10,0x00,0x10,0x42,0x01,0x04,0x24,0x88,0x41,0x8C,0x02,
+0x40,0x03,0x80,0x20,0x84,0x20,0x94,0x91,0xDD,0x42,0xEA,0x84,0x54,0x00,0x00,0xF7,
+0x5A,0x08,0x01,0x04,0x49,0x00,0x00,0xCC,0x49,0x00,0x4B,0x66,0xFC,0xC1,0xFC,0x00,
+0xDD,0x4D,0x96,0x04,0xC0,0x09,0xEA,0x33,0xC0,0x08,0x2E,0x07,0xFE,0x79,0xC8,0x05,
+0x49,0x00,0x4A,0x6E,0xD5,0x02,0xEA,0x6D,0xFC,0x80,0x2E,0x17,0xFD,0x1C,0xFE,0x0C,
+0x96,0x01,0xDD,0x9E,0xFC,0x60,0xDD,0x57,0x04,0x70,0x00,0x3F,0x92,0xF8,0x96,0x78,
+0x5A,0x10,0xAA,0x06,0x5A,0x10,0xCC,0x04,0x5A,0x18,0xDD,0x46,0x04,0x60,0x00,0x3F,
+0x40,0x03,0x40,0x09,0xEA,0xEB,0x96,0x31,0x40,0x90,0x20,0x09,0x97,0xB0,0xEA,0x4A,
+0x5A,0x70,0xCC,0x19,0x5A,0x70,0xDD,0x28,0x5A,0x78,0xAA,0x2D,0x84,0xE0,0x46,0xC1,
+0x00,0x07,0x58,0xC6,0x0F,0x80,0x96,0x38,0xE2,0x06,0xE8,0x24,0x50,0xB3,0x80,0x01,
+0x80,0x0A,0x80,0x29,0x40,0x25,0x80,0x13,0xEA,0x3A,0x38,0x06,0x1C,0x08,0x80,0xEB,
+0xD5,0xF3,0x84,0x40,0x46,0xB1,0x00,0x07,0x58,0xB5,0x8F,0x80,0x96,0x10,0xE2,0x06,
+0xE8,0x11,0x9D,0xD1,0x38,0x35,0x88,0x00,0x80,0x0A,0x96,0xB9,0x80,0x29,0xDD,0x4E,
+0x80,0x47,0xD5,0xF5,0xEB,0x61,0x00,0x30,0x0F,0x80,0x80,0x29,0x80,0x0A,0x80,0x46,
+0xDD,0x4E,0xEA,0x3E,0x83,0x81,0xB8,0x3F,0x46,0x2B,0xB0,0x00,0xEA,0xB1,0x40,0x01,
+0x01,0x15,0xB8,0xBF,0xFC,0xE0,0xFC,0x00,0xDD,0x52,0x4E,0x00,0x4C,0x03,0x84,0x62,
+0xDD,0x4E,0xF8,0x24,0x84,0x42,0xDD,0x4E,0xF8,0x21,0x84,0x43,0xDD,0x4E,0xF8,0x15,
+0xDD,0x4E,0x84,0x0A,0xDD,0x50,0xF8,0x1A,0x84,0x44,0xDD,0x4E,0xF8,0x1D,0xEA,0x3A,
+0x3E,0x07,0xFD,0x1B,0xF8,0x13,0x84,0x41,0xDD,0x4E,0x4E,0x00,0x4B,0xF3,0xFA,0x64,
+0xDD,0x4E,0xF8,0x0C,0x84,0x43,0xDD,0x4E,0x84,0x20,0x84,0x44,0x44,0x30,0x00,0x80,
+0xDD,0x53,0x83,0xFF,0xDD,0x4E,0x84,0x0A,0xDD,0x50,0x84,0x20,0x80,0x61,0xDD,0x53,
+0x83,0xFF,0x84,0x44,0xDD,0x4E,0x84,0x20,0x84,0x45,0xDD,0x53,0x83,0xFF,0xEA,0x3A,
+0x3E,0x07,0xFD,0x04,0xFC,0x80,0xFC,0x00,0x84,0x0E,0xDD,0x40,0xC8,0x1B,0xFA,0x02,
+0xDD,0x40,0xC8,0x18,0xFA,0x06,0xDD,0x40,0xC8,0x15,0x84,0x0A,0xDD,0x40,0xC8,0x12,
+0xFA,0x0A,0xDD,0x40,0xC8,0x0F,0xFA,0x13,0xDD,0x40,0xC8,0x0C,0xFA,0x0E,0xDD,0x40,
+0xC8,0x09,0xFA,0x18,0xDD,0x40,0xC8,0x06,0xFA,0x1C,0xDD,0x40,0xC8,0x03,0xDD,0x47,
+0xDD,0x40,0xEA,0x28,0x02,0x00,0x80,0x9C,0x02,0x10,0x80,0x0A,0x8A,0x01,0x44,0x10,
+0x06,0x5C,0xFE,0x0C,0x84,0x2A,0xEA,0xDD,0x92,0x04,0xFC,0x80,0xFC,0x40,0x3F,0xCF,
+0xFD,0xD8,0xEB,0x51,0x00,0x20,0x02,0xC0,0xC2,0x04,0xEB,0x51,0x10,0x20,0x02,0xC1,
+0xBD,0x11,0x5A,0x58,0x05,0x06,0x84,0x00,0xEB,0x78,0x10,0x00,0x82,0xC1,0x2E,0x47,
+0xFD,0x4B,0xEB,0x43,0x44,0x30,0x03,0xE8,0x44,0x10,0x27,0x10,0xFE,0x1C,0x42,0x02,
+0x04,0x73,0xB9,0x0C,0x84,0x8A,0x88,0x01,0x42,0x02,0x90,0x73,0xEB,0x84,0x96,0x01,
+0x12,0x00,0x87,0xA2,0x2E,0x57,0xFD,0x65,0xEB,0x61,0x00,0x00,0x00,0x80,0xEA,0x2A,
+0xFE,0x24,0x42,0x02,0x84,0x73,0x2E,0x57,0xFD,0x50,0x96,0x91,0x88,0x05,0x96,0x01,
+0xEB,0x5F,0x12,0x02,0x87,0xA3,0xEB,0x4E,0xEA,0xA4,0xEB,0x5F,0x12,0x02,0x87,0xA5,
+0xEB,0x64,0x02,0x00,0x00,0x5E,0xEB,0x5F,0x92,0x01,0x12,0x02,0x87,0xA6,0xEB,0x64,
+0x02,0x00,0x00,0x64,0xEB,0x5F,0x92,0x01,0x12,0x02,0x87,0xA7,0xEA,0x40,0xEB,0x5F,
+0x12,0x02,0x87,0xA8,0xB8,0x19,0xEB,0x5F,0x96,0x01,0x12,0x02,0x87,0xA9,0x3C,0x03,
+0xFF,0x1A,0xEB,0x5F,0x12,0x02,0x87,0xAA,0xEA,0xE3,0xEB,0x5F,0x12,0x02,0x87,0xAB,
+0xEA,0xC9,0xEB,0x5F,0x12,0x02,0x87,0xAC,0x3C,0x03,0xFE,0xFE,0xEB,0x5F,0x12,0x02,
+0x87,0xB0,0x2E,0x07,0xFD,0x43,0xEB,0x5F,0x12,0x02,0x87,0xB1,0xEB,0x61,0x12,0x20,
+0x07,0xB2,0xEB,0x51,0x00,0x00,0x02,0xC1,0xEB,0x72,0x12,0x01,0x07,0xB3,0x2E,0x27,
+0xFD,0x29,0xEA,0xE6,0xEB,0x01,0xEB,0x72,0x12,0x01,0x07,0xB4,0x2E,0x27,0xFD,0x6C,
+0xEB,0x61,0x02,0x00,0x07,0xB5,0xEB,0x01,0xEB,0x72,0x96,0x01,0x12,0x01,0x07,0xB5,
+0x2E,0x27,0xFD,0x6E,0xEA,0x2B,0xFE,0x1C,0x42,0x01,0x10,0x73,0xEB,0x72,0x96,0x01,
+0x12,0x01,0x07,0xB6,0x3C,0x03,0xFF,0x38,0xEB,0x72,0x12,0x01,0x07,0xB7,0x3C,0x03,
+0xFF,0x36,0xEB,0x72,0x12,0x01,0x07,0xB8,0xBA,0x10,0x2E,0x07,0xFD,0x22,0xEB,0x01,
+0xEB,0x72,0x96,0x01,0x12,0x01,0x07,0xB9,0xEB,0x61,0x02,0x20,0x07,0xBA,0x2E,0x47,
+0xFD,0x68,0x2E,0x07,0xFD,0x55,0xFE,0x0C,0x42,0x02,0x0C,0x73,0x88,0x02,0x96,0x01,
+0xEB,0x72,0x12,0x01,0x07,0xBA,0xEB,0x72,0x3C,0x03,0xFE,0xFC,0x12,0x01,0x07,0xBE,
+0x3C,0x03,0xFE,0xC3,0x12,0x01,0x07,0xBE,0x2E,0x27,0xFF,0xA4,0x42,0x01,0x18,0x0B,
+0xC0,0x0B,0x2E,0x38,0x02,0xD4,0x2E,0x08,0x02,0xD5,0x42,0x01,0x84,0x73,0xEB,0x84,
+0x96,0x01,0x12,0x00,0x87,0xBF,0xEB,0x4E,0x02,0x00,0x02,0xD5,0xEB,0x84,0x96,0x92,
+0x12,0x00,0x81,0xD8,0x4E,0x25,0x00,0x17,0x2E,0x00,0x00,0x65,0x92,0x07,0x4E,0x02,
+0x00,0x76,0xEB,0x4A,0xEA,0xD1,0xEB,0x57,0x58,0x21,0x00,0x00,0xFE,0x44,0xEB,0x4D,
+0x8C,0x22,0x40,0x11,0x04,0x20,0xEB,0x72,0x58,0x21,0x0F,0x44,0xDD,0x48,0x48,0x00,
+0x00,0x66,0x84,0x0E,0xDD,0x40,0xC8,0xE9,0xFA,0x02,0xDD,0x40,0xC8,0xE6,0xFA,0x06,
+0xDD,0x40,0xC8,0xE3,0x84,0x0A,0xDD,0x40,0xC8,0xE0,0xFA,0x0A,0xDD,0x40,0xC8,0xDD,
+0xFA,0x13,0xDD,0x40,0xC8,0xDA,0xFA,0x0E,0xDD,0x40,0xC8,0xD7,0xFA,0x18,0xDD,0x40,
+0xC8,0xD4,0xFA,0x1C,0xDD,0x40,0xC8,0xD1,0xDD,0x47,0xDD,0x40,0xC8,0xCE,0xB8,0x12,
+0x5A,0x08,0x01,0xCC,0x2E,0x60,0x00,0x10,0xB8,0x00,0x46,0x41,0x00,0x00,0x58,0x42,
+0x00,0x00,0x5A,0x08,0x08,0x0C,0x2E,0x30,0x00,0x11,0x42,0x21,0x98,0x24,0x9C,0x52,
+0x8A,0x46,0x40,0x12,0x04,0x20,0x8C,0x42,0xD5,0x09,0x2E,0x00,0x00,0x65,0x96,0x37,
+0xFE,0x34,0x8C,0x02,0x40,0x12,0x00,0x20,0x98,0x86,0x40,0x62,0x08,0x20,0xEB,0x4D,
+0xEB,0x72,0x58,0x21,0x0F,0x44,0xDD,0x48,0x46,0x97,0xFF,0xFF,0x80,0x26,0xEB,0x4D,
+0xEB,0x72,0x58,0x21,0x03,0xB0,0xDD,0x48,0x84,0xC0,0x50,0x94,0x8F,0xFF,0x46,0xA1,
+0x00,0x00,0x58,0xA5,0x00,0x04,0xEA,0xB0,0xE2,0xC0,0x4E,0xF2,0xFF,0x97,0xEA,0x3C,
+0x40,0x70,0x24,0x00,0x42,0x73,0x00,0x73,0x80,0x06,0x40,0x75,0x1C,0x20,0x49,0x00,
+0x23,0xF1,0x8C,0xC1,0xAC,0x38,0x97,0xB0,0xD5,0xEF,0xFC,0xC0,0xFC,0x60,0x84,0x07,
+0x46,0x11,0x00,0x07,0x10,0x00,0x8B,0x0E,0x46,0x11,0x00,0x07,0x10,0x00,0x8B,0x22,
+0x46,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x5A,0x00,0xA5,0x04,0x48,0x00,0x01,0x87,
+0xEB,0x61,0x04,0x50,0x03,0xC0,0xEB,0x04,0x97,0x69,0x4C,0x50,0x00,0xDA,0xEB,0x7E,
+0x00,0x00,0x08,0x3B,0xEB,0x5D,0x10,0x00,0x8B,0x8B,0xEB,0x7E,0x00,0x00,0x08,0x3C,
+0xEB,0x5D,0x10,0x00,0x8B,0x8C,0xEB,0x7E,0x00,0x00,0x08,0x3D,0xEB,0x5D,0x10,0x00,
+0x8B,0x8D,0xEB,0x7E,0x00,0x00,0x08,0x3E,0xEB,0x5D,0x10,0x00,0x8B,0x8E,0xEB,0x7E,
+0x00,0x00,0x08,0x3F,0xEB,0x5D,0x10,0x00,0x8B,0x8F,0xEB,0x7E,0x02,0x00,0x04,0x0F,
+0xEB,0x5D,0x12,0x00,0x85,0xB7,0xEB,0x7E,0x02,0x00,0x04,0x10,0xEB,0x5D,0x12,0x00,
+0x85,0xB8,0xEB,0x7E,0x02,0x00,0x04,0x11,0xEB,0x5D,0x12,0x00,0x85,0xB9,0xEB,0x7E,
+0x04,0x00,0x01,0xF8,0xEB,0x5D,0x14,0x00,0x82,0xCC,0xEB,0x7E,0x02,0x00,0x04,0x0D,
+0xEB,0x5D,0x12,0x00,0x85,0xB5,0xEB,0x7E,0x02,0x00,0x04,0x0E,0xEB,0x5D,0x12,0x00,
+0x85,0xB6,0xEB,0x7E,0x00,0x00,0x09,0xE7,0xEB,0x5D,0x10,0x00,0x8D,0x37,0xEB,0x7E,
+0x00,0x00,0x09,0xE8,0xEB,0x5D,0x10,0x00,0x8D,0x38,0xEB,0x7E,0x00,0x00,0x09,0xE9,
+0xEB,0x5D,0x10,0x00,0x8D,0x39,0xEB,0x7E,0x00,0x00,0x09,0xEA,0xEB,0x5D,0x10,0x00,
+0x8D,0x3A,0xEB,0x7E,0x00,0x00,0x09,0xEB,0xEB,0x5D,0x10,0x00,0x8D,0x3B,0xEB,0x7E,
+0x02,0x00,0x04,0xE5,0xEB,0x5D,0x12,0x00,0x86,0x8D,0xEB,0x7E,0x02,0x00,0x04,0xE6,
+0xEB,0x5D,0x12,0x00,0x86,0x8E,0xEB,0x7E,0x02,0x00,0x04,0xE7,0xEB,0x5D,0x12,0x00,
+0x86,0x8F,0xEB,0x7E,0x04,0x00,0x02,0x63,0xEB,0x5D,0x14,0x00,0x83,0x37,0xEB,0x7E,
+0x02,0x00,0x04,0xE3,0xEB,0x5D,0x12,0x00,0x86,0x8B,0xEB,0x7E,0x02,0x00,0x04,0xE4,
+0xEB,0x5D,0x12,0x00,0x86,0x8C,0x44,0x20,0xC0,0x00,0x44,0x00,0x00,0x80,0x46,0x11,
+0x00,0x07,0x58,0x10,0x80,0x00,0xDD,0x48,0x44,0x00,0x01,0x80,0x46,0x11,0x00,0x07,
+0x58,0x10,0x80,0x86,0x44,0x20,0xC1,0x00,0xDD,0x48,0xFA,0x1A,0x46,0x11,0x00,0x07,
+0x58,0x10,0x82,0x66,0x44,0x20,0xC2,0xE0,0xDD,0x48,0x44,0x00,0x00,0x38,0x46,0x11,
+0x00,0x07,0x58,0x10,0x83,0x48,0x44,0x20,0xCA,0x48,0xDD,0x48,0xDD,0x47,0x46,0x11,
+0x00,0x07,0x58,0x10,0x83,0x80,0x44,0x20,0xCA,0x80,0xDD,0x48,0xFA,0x08,0x46,0x11,
+0x00,0x07,0x58,0x10,0x82,0x06,0x44,0x20,0xC2,0x80,0xDD,0x48,0xFA,0x08,0x46,0x11,
+0x00,0x07,0x58,0x10,0x82,0x36,0x44,0x20,0xC2,0xB0,0xDD,0x48,0xFA,0x08,0x46,0x11,
+0x00,0x07,0x58,0x10,0x82,0x1E,0x44,0x20,0xC2,0x98,0xDD,0x48,0xFA,0x08,0x46,0x11,
+0x00,0x07,0x58,0x10,0x82,0x4E,0x44,0x20,0xC2,0xC8,0xDD,0x48,0x46,0x00,0x00,0x0C,
+0x04,0x00,0x00,0xCF,0x46,0x11,0x00,0x07,0x14,0x00,0x80,0xA5,0xD5,0x04,0xEB,0x61,
+0x04,0x00,0x00,0xA5,0x3C,0x0F,0xFF,0x88,0x84,0x08,0x46,0x11,0x00,0x07,0x10,0x00,
+0x80,0x02,0x84,0x04,0x46,0x11,0x00,0x07,0x10,0x00,0x80,0x03,0x46,0x21,0x00,0x07,
+0x58,0x21,0x00,0x86,0x44,0x00,0x01,0x80,0xEA,0x4C,0xDD,0x48,0x2E,0x00,0x00,0x11,
+0x3E,0x00,0x01,0x29,0x2E,0x10,0x00,0x10,0x88,0x01,0x3E,0x10,0x01,0x28,0x2E,0x20,
+0x00,0x12,0x84,0xA0,0x3E,0x00,0x01,0x31,0x45,0x00,0xE0,0x00,0xEB,0x61,0x3E,0x20,
+0x01,0x2B,0x14,0x50,0x00,0xB1,0x80,0x45,0x44,0x90,0xFF,0xFF,0x81,0x50,0x44,0xB0,
+0x00,0x48,0x46,0xC1,0x00,0x07,0x58,0xC6,0x05,0x00,0x44,0x40,0x00,0x6C,0x86,0x23,
+0x45,0x20,0x00,0xD8,0x44,0xDF,0xFF,0x94,0x45,0x30,0x05,0x10,0x38,0x08,0x14,0x01,
+0x4C,0x04,0x80,0x32,0x80,0xCC,0x42,0x61,0x2C,0x73,0x84,0x60,0x40,0xE5,0x14,0x00,
+0x38,0x17,0x0D,0x01,0x95,0xD9,0x9E,0x09,0x41,0x40,0x12,0x96,0x40,0x8A,0x46,0x96,
+0x5C,0xF0,0x81,0x45,0x40,0x8A,0x00,0x13,0xE8,0x05,0x42,0x04,0x34,0x73,0x96,0x01,
+0xD5,0x11,0x52,0x00,0x82,0x88,0x40,0x10,0x10,0x16,0x50,0x00,0x00,0x6C,0x96,0x01,
+0x4E,0x83,0x00,0x07,0x50,0x1A,0x00,0x02,0x42,0x00,0xC8,0x73,0xD5,0x05,0x5A,0x80,
+0x02,0x04,0x42,0x04,0x48,0x73,0x8C,0x61,0x38,0x03,0x1C,0x09,0x5A,0x38,0x24,0xDA,
+0x8C,0x41,0x96,0x91,0x50,0x52,0x80,0x48,0x4C,0x59,0xFF,0xCA,0x46,0x00,0x00,0x0C,
+0x04,0x00,0x02,0xC3,0x46,0x11,0x00,0x07,0x14,0x00,0x83,0xF7,0x46,0x00,0x00,0x0C,
+0x02,0x00,0x05,0x85,0x46,0x11,0x00,0x07,0x12,0x00,0x87,0xED,0x46,0x00,0x00,0x0C,
+0x02,0x00,0x05,0x84,0x46,0x11,0x00,0x07,0x12,0x00,0x87,0xEC,0x46,0x00,0x00,0x0C,
+0x04,0x00,0x02,0xC1,0x46,0x11,0x00,0x07,0x14,0x00,0x83,0xF5,0x46,0x00,0x00,0x0C,
+0x46,0x11,0x00,0x07,0x04,0x00,0x02,0xC0,0x14,0x00,0x83,0xF4,0xEA,0x9B,0x44,0x00,
+0x72,0xC0,0x46,0x11,0x00,0x07,0x14,0x00,0x80,0xB0,0xFC,0xE0,0xFC,0x21,0x46,0x69,
+0x00,0x08,0x44,0x70,0x35,0xCA,0x12,0x73,0x00,0x08,0xEA,0x4A,0xC8,0x20,0x12,0x73,
+0x00,0x08,0x46,0x10,0x00,0x0C,0x00,0x10,0x81,0x03,0xEA,0x5B,0xC1,0x13,0xF0,0x81,
+0x49,0xFF,0xFC,0xAB,0x46,0x00,0x00,0x0C,0x00,0x10,0x01,0x06,0xF0,0x01,0xC9,0x04,
+0x44,0x00,0xE8,0x00,0xD5,0x05,0x5A,0x18,0x02,0x06,0x44,0x00,0xEC,0x00,0x49,0x00,
+0x3B,0x57,0xEA,0xE9,0x12,0x13,0x00,0x08,0x96,0x00,0xD5,0x03,0x44,0x00,0x00,0xF0,
+0xFC,0xA1,0xFC,0x00,0x46,0x09,0x00,0x08,0xEA,0xE9,0x12,0x10,0x00,0x08,0xEA,0xB9,
+0x02,0x01,0x00,0x72,0x42,0x30,0x0C,0x0B,0xCB,0x34,0x02,0x11,0x00,0x72,0x42,0x00,
+0x90,0x0B,0xC8,0x31,0x02,0x11,0x00,0x72,0xEA,0xD7,0xC9,0x2E,0x2E,0x17,0xFF,0xA3,
+0x42,0x00,0x88,0x0B,0xC8,0x03,0xEB,0x2B,0xD5,0x06,0x49,0x00,0x3B,0xF8,0x44,0x00,
+0x00,0xF1,0xD5,0x22,0xB4,0x02,0x96,0x16,0xC0,0xFE,0x46,0x09,0x00,0x08,0x44,0x20,
+0x35,0xCA,0x12,0x20,0x00,0x08,0x42,0x20,0x8C,0x0B,0x80,0x20,0xCA,0x04,0xEA,0xB9,
+0xEB,0x2B,0xD5,0x06,0x49,0x00,0x3B,0xEC,0x44,0x00,0x00,0xF2,0xD5,0x0D,0xB4,0x02,
+0x92,0x0C,0x96,0x0F,0x5A,0x08,0x03,0xFD,0x44,0x00,0x35,0xCA,0x12,0x00,0x80,0x08,
+0x84,0x00,0xD5,0x02,0x80,0x03,0xFC,0x80,0xFC,0x00,0x5C,0xF0,0x00,0x31,0x4E,0xF2,
+0x01,0x56,0x3E,0xFF,0x5C,0xB8,0x38,0x07,0x81,0x01,0x40,0xF0,0x3C,0x00,0xDD,0x0F,
+0x62,0x00,0x68,0x00,0x72,0x00,0x7C,0x00,0x86,0x00,0x90,0x00,0x9A,0x00,0xAC,0x00,
+0xB6,0x00,0xC0,0x00,0xCA,0x00,0xDC,0x00,0xE6,0x00,0xF0,0x00,0xFA,0x00,0x06,0x01,
+0x10,0x01,0x1A,0x01,0x26,0x01,0x32,0x01,0x3C,0x01,0x46,0x01,0x50,0x01,0x5E,0x01,
+0x68,0x01,0x72,0x01,0x7C,0x01,0x92,0x01,0x9C,0x01,0xA6,0x01,0xB0,0x01,0xC8,0x01,
+0x9A,0x02,0xD4,0x01,0xDE,0x01,0xE8,0x01,0xFE,0x01,0x9A,0x02,0x08,0x02,0x12,0x02,
+0x1C,0x02,0x32,0x02,0x3C,0x02,0x46,0x02,0x50,0x02,0x5E,0x02,0x68,0x02,0x72,0x02,
+0x80,0x02,0xEB,0x61,0xDD,0x5E,0xF8,0x5E,0xEB,0x61,0xDD,0x5E,0x50,0x00,0x76,0xF7,
+0xF8,0x59,0xEB,0x61,0xDD,0x44,0x44,0x0F,0x66,0x67,0xF8,0xAB,0xEB,0x61,0xDD,0x5E,
+0x50,0x00,0x7E,0xFF,0xF8,0x4F,0xEB,0x61,0xDD,0x5E,0x50,0x00,0x7E,0x6F,0xF8,0x4A,
+0xEB,0x61,0xDD,0x44,0x44,0x0F,0x6E,0x6F,0xF8,0x9C,0x84,0x04,0xDD,0x40,0x80,0xC0,
+0xC0,0x04,0x85,0xE1,0x48,0x00,0x00,0xFC,0x84,0x05,0xF8,0x8D,0xEB,0x61,0xDD,0x5E,
+0x50,0x00,0x5D,0xDE,0xF8,0x37,0xEB,0x61,0xDD,0x5E,0x50,0x00,0x5B,0xDC,0xF8,0x32,
+0xEB,0x61,0xDD,0x44,0x44,0x0F,0xBB,0xBC,0xF8,0x84,0x84,0x07,0xDD,0x40,0xC8,0xEA,
+0x84,0x08,0xDD,0x40,0x80,0xC0,0x84,0x09,0xCE,0xE5,0xF8,0x75,0xEB,0x61,0xDD,0x44,
+0x44,0x0F,0x55,0x56,0xF8,0x76,0xEB,0x61,0xDD,0x44,0x44,0x0F,0x53,0x54,0xF8,0x71,
+0xEB,0x61,0xDD,0x44,0x44,0x0F,0x33,0x34,0xF8,0x6C,0x84,0x0C,0xDD,0x40,0x80,0xC0,
+0x84,0x0D,0xCE,0xD0,0xF8,0x60,0xEB,0x61,0xDD,0x5E,0x50,0x00,0x6E,0xEF,0xF8,0x0A,
+0xEB,0x61,0xDD,0x5E,0x50,0x00,0x6C,0xED,0xF8,0x05,0xEB,0x61,0xDD,0x5E,0x50,0x00,
+0x4C,0xCD,0x48,0x00,0x00,0xAD,0xFA,0x00,0xDD,0x40,0x80,0xC0,0xC8,0xBB,0xFA,0x01,
+0xF8,0x4A,0xEB,0x61,0xDD,0x44,0x44,0x0F,0x88,0x89,0xF8,0x4B,0xEB,0x61,0xDD,0x44,
+0x44,0x0F,0x87,0x88,0xF8,0x46,0xEB,0x61,0xDD,0x44,0x44,0x0F,0x77,0x78,0xF8,0x41,
+0xFA,0x04,0xDD,0x40,0x80,0xC0,0x4E,0x03,0xFF,0xA6,0xFA,0x05,0xF8,0x34,0xEB,0x61,
+0xDD,0x44,0x44,0x0F,0xAA,0xAB,0xF8,0x35,0xEB,0x61,0xDD,0x44,0x44,0x0F,0xA9,0xAA,
+0xF8,0x30,0xEB,0x61,0xDD,0x44,0x44,0x0F,0x99,0x9A,0xF8,0x2B,0xFA,0x07,0xDD,0x40,
+0x4E,0x03,0xFF,0x91,0xFA,0x08,0xDD,0x40,0x80,0xC0,0x4E,0x03,0xFF,0x8C,0xFA,0x09,
+0xF8,0x1A,0xEB,0x61,0xDD,0x44,0x44,0x0F,0xAE,0xAF,0xF8,0x1B,0xEB,0x61,0xDD,0x44,
+0x44,0x0F,0xAE,0x9F,0xF8,0x16,0xEB,0x61,0xDD,0x44,0x44,0x0F,0x9E,0x9F,0xF8,0x11,
+0xFA,0x0B,0xDD,0x40,0x4E,0x03,0xFF,0x77,0xFA,0x0C,0xDD,0x40,0x80,0xC0,0x4E,0x03,
+0xFF,0x72,0xFA,0x0D,0x48,0x00,0x00,0x68,0xEB,0x61,0xDD,0x44,0x44,0x0F,0xAF,0xB0,
+0x48,0x00,0x00,0x55,0xEB,0x61,0xDD,0x44,0x44,0x0F,0xAF,0xA0,0xD5,0x4F,0xEB,0x61,
+0xDD,0x44,0x44,0x0F,0x9F,0xA0,0xD5,0x4A,0xFA,0x0F,0xDD,0x40,0x4E,0x03,0xFF,0x5B,
+0xFA,0x11,0xDD,0x40,0x80,0xC0,0x4E,0x03,0xFF,0x56,0xFA,0x12,0xD5,0x4C,0xEB,0x61,
+0xDD,0x44,0x44,0x0F,0xAD,0xAE,0xD5,0x3A,0xEB,0x61,0xDD,0x44,0x44,0x0F,0xAD,0x9E,
+0xD5,0x35,0xEB,0x61,0xDD,0x44,0x44,0x0F,0x9D,0x9E,0xD5,0x30,0xFA,0x14,0xDD,0x40,
+0x4E,0x03,0xFF,0x41,0xFA,0x16,0xDD,0x40,0x80,0xC0,0x4E,0x03,0xFF,0x3C,0xFA,0x17,
+0xD5,0x32,0xEB,0x61,0xDD,0x44,0x44,0x0F,0xAC,0xAD,0xD5,0x20,0xEB,0x61,0xDD,0x44,
+0x44,0x0F,0xAC,0x9D,0xD5,0x1B,0xEB,0x61,0xDD,0x44,0x44,0x0F,0x9C,0x9D,0xD5,0x16,
+0xFA,0x1A,0xDD,0x40,0x80,0xC0,0x4E,0x03,0xFF,0x26,0xFA,0x1B,0xD5,0x1C,0xEB,0x61,
+0xDD,0x44,0x44,0x0F,0x44,0x45,0xD5,0x0A,0xEB,0x61,0xDD,0x44,0x44,0x0F,0x40,0x41,
+0xD5,0x05,0xEB,0x61,0xDD,0x44,0x44,0x0F,0x00,0x01,0x88,0x01,0xE6,0x01,0xD5,0x0F,
+0xFA,0x1D,0xDD,0x40,0x4E,0x03,0xFF,0x0F,0xFA,0x1E,0xDD,0x40,0x80,0xC0,0x4E,0x03,
+0xFF,0x0A,0xFA,0x1F,0xDD,0x40,0xE2,0xC0,0xD5,0x02,0x85,0xE0,0x80,0x0F,0xFC,0x80,
+0x92,0x00,0xFC,0x00,0x84,0x00,0xDD,0x40,0xC8,0x43,0x84,0x0B,0xDD,0x40,0xC0,0x04,
+0x44,0x00,0xAC,0xAC,0xD5,0x3F,0x84,0x0F,0xDD,0x40,0xC0,0x04,0x44,0x00,0x13,0x13,
+0xD5,0x39,0xFA,0x03,0xDD,0x40,0xC0,0x04,0x44,0x00,0x78,0x78,0xD5,0x33,0x84,0x07,
+0xDD,0x40,0xC0,0x04,0x44,0x00,0x22,0x22,0xD5,0x2D,0xFA,0x07,0xDD,0x40,0xC0,0x04,
+0x44,0x00,0x55,0x55,0xD5,0x27,0xFA,0x0B,0xDD,0x40,0xC0,0x04,0x44,0x00,0x51,0x51,
+0xD5,0x21,0xFA,0x0F,0xDD,0x40,0xC0,0x04,0x44,0x00,0x50,0x50,0xD5,0x1B,0xFA,0x14,
+0xDD,0x40,0xC0,0x04,0x44,0x00,0x52,0x52,0xD5,0x15,0xFA,0x19,0xDD,0x40,0xC0,0x04,
+0x44,0x00,0x53,0x63,0xD5,0x0F,0xFA,0x1D,0xDD,0x40,0xC0,0x04,0x44,0x00,0xBB,0xBB,
+0xD5,0x09,0x84,0x03,0xDD,0x40,0xC0,0x04,0x44,0x00,0x01,0x91,0xD5,0x03,0x44,0x00,
+0x09,0x09,0x46,0x11,0x00,0x07,0xEA,0x30,0xFC,0x80,0xFC,0x00,0x3F,0xCF,0xFD,0xF8,
+0xEB,0x81,0x58,0x00,0x06,0x04,0x84,0x20,0xDD,0x4F,0xDD,0x42,0x84,0x00,0x3E,0x07,
+0xFD,0x51,0x84,0x20,0xB9,0x80,0xEB,0x6A,0x46,0x27,0x2C,0x80,0x14,0x21,0x80,0xB2,
+0x3E,0x17,0xFD,0x3F,0x3E,0x07,0xFD,0x63,0xB8,0x0A,0x44,0x10,0x72,0xC8,0x40,0x50,
+0x40,0x09,0xD9,0x07,0x96,0x01,0xB8,0x8A,0x84,0x01,0x3E,0x07,0xFD,0x3F,0xD5,0x09,
+0x44,0x10,0x7F,0x0C,0xD9,0x06,0x96,0x01,0xB8,0x8A,0x84,0x01,0x3E,0x07,0xFD,0x63,
+0xB8,0x0A,0x44,0x10,0xFF,0xFE,0x8E,0x01,0xE2,0x20,0xE8,0x03,0x84,0x01,0xB8,0x8A,
+0x84,0x0E,0xDD,0x40,0xC0,0x06,0xDD,0x4D,0x96,0x37,0x3E,0x07,0xFF,0xA3,0xD5,0x1F,
+0xFA,0x02,0xDD,0x40,0xC8,0xF9,0xFA,0x06,0xDD,0x40,0xC8,0xF6,0x84,0x0A,0xDD,0x40,
+0xC8,0xF3,0xFA,0x0A,0xDD,0x40,0xC8,0xF0,0xFA,0x13,0xDD,0x40,0xC8,0xED,0xFA,0x0E,
+0xDD,0x40,0xC8,0xEA,0xFA,0x18,0xDD,0x40,0xC8,0xE7,0xFA,0x1C,0xDD,0x40,0xC8,0xE4,
+0xDD,0x47,0xDD,0x40,0xC8,0xE1,0xB8,0x0A,0x5A,0x08,0x01,0xDF,0xDD,0x47,0xDD,0x40,
+0xC0,0x0B,0xEB,0x64,0xDD,0x5D,0x84,0x20,0xDD,0x4F,0xEB,0x1F,0xEB,0x54,0xEA,0x72,
+0x84,0x3F,0xDD,0x4F,0xEB,0x1F,0xFC,0x80,0xEA,0x40,0x8C,0x01,0x96,0x00,0xEA,0xC3,
+0xEA,0x40,0x2E,0x10,0x00,0x0E,0xE2,0x01,0x56,0x07,0x80,0x01,0xEA,0xAA,0xEA,0x40,
+0x46,0x11,0x00,0x07,0x12,0x00,0x87,0xA5,0xDD,0x9E,0xFC,0x00,0x84,0x0E,0xDD,0x40,
+0xC0,0x07,0x84,0x0C,0xDD,0x40,0xC0,0x0B,0x44,0x00,0xCC,0xCC,0xD5,0x13,0xFA,0x02,
+0xDD,0x40,0xC8,0xF8,0xFA,0x06,0xDD,0x40,0xC8,0xF5,0xD5,0x12,0xFA,0x00,0xDD,0x40,
+0xC0,0x04,0x44,0x00,0x33,0x33,0xD5,0x06,0xFA,0x04,0xDD,0x40,0xC0,0x3D,0x44,0x00,
+0x88,0x88,0x46,0x11,0x00,0x07,0xEA,0x30,0x84,0x01,0xDD,0x55,0xD5,0x35,0x84,0x0A,
+0xDD,0x40,0xC0,0x04,0x44,0x00,0x44,0x44,0xD5,0x2C,0xFA,0x0A,0xDD,0x40,0xC0,0x04,
+0x44,0x00,0x66,0x66,0xD5,0x26,0xFA,0x0E,0xDD,0x40,0xC0,0x04,0x44,0x00,0x61,0x61,
+0xD5,0x20,0xFA,0x13,0xDD,0x40,0xC0,0x04,0x44,0x00,0x60,0x60,0xD5,0x1A,0xFA,0x18,
+0xDD,0x40,0xC0,0x04,0x44,0x00,0x62,0x62,0xD5,0x14,0xFA,0x1C,0xDD,0x40,0xC0,0x04,
+0x44,0x00,0x63,0x63,0xD5,0x0E,0xDD,0x47,0xDD,0x40,0xC0,0x03,0xEA,0x29,0xD5,0x09,
+0x84,0x06,0xDD,0x40,0xC0,0x04,0x44,0x00,0x91,0x91,0xD5,0x03,0x44,0x00,0x99,0x99,
+0x46,0x11,0x00,0x07,0xEA,0x30,0xFC,0x80,0xFC,0x00,0xA6,0x00,0x80,0xC1,0x5A,0x08,
+0x0A,0x0E,0x84,0x0E,0xDD,0x40,0xC8,0x07,0xFA,0x02,0xDD,0x40,0xC8,0x04,0xFA,0x06,
+0xDD,0x40,0xC0,0x26,0xEB,0x54,0xEA,0x72,0xD5,0x22,0x5A,0x08,0x0B,0x04,0xDD,0x47,
+0xD5,0xF8,0x5A,0x08,0x0C,0x18,0xFA,0x0A,0xDD,0x40,0xC0,0x05,0xEB,0x64,0xDD,0x5D,
+0xB6,0x06,0xD5,0x0A,0xFA,0x13,0xDD,0x40,0xC8,0xFA,0xFA,0x0E,0xDD,0x40,0xC8,0xF7,
+0xFA,0x18,0xDD,0x40,0xC8,0xF4,0xDD,0x47,0xDD,0x40,0xC0,0x0A,0xEB,0x64,0xDD,0x5D,
+0xD5,0x06,0x5A,0x08,0x0F,0x06,0xEB,0x81,0x58,0x00,0x06,0x04,0xB6,0x06,0xFC,0x80,
+0xC0,0x04,0x5A,0x00,0x01,0x1A,0xD5,0x29,0xFC,0x00,0xFA,0x13,0x80,0xC1,0xDD,0x40,
+0xC0,0x07,0xEB,0x64,0xDD,0x5D,0x4C,0x60,0x40,0x04,0x84,0x01,0xD5,0x20,0xFA,0x18,
+0xDD,0x40,0xC0,0x1D,0x46,0x31,0x00,0x02,0x58,0x31,0x86,0x58,0x40,0x03,0x0C,0x03,
+0x5C,0x00,0x00,0x01,0xD5,0x14,0x46,0x21,0x00,0x03,0x58,0x21,0x00,0x78,0x4C,0x11,
+0x00,0x10,0x50,0x01,0x75,0xE0,0x4C,0x10,0x00,0x0C,0x50,0x21,0x70,0xD0,0x40,0x00,
+0x88,0x03,0x5C,0x00,0x00,0x01,0xDD,0x9E,0x84,0x00,0xDD,0x9E,0xFC,0x80,0x84,0x01,
+0xDD,0x9E,0xEA,0x4C,0x00,0x00,0x80,0x70,0x00,0x10,0x80,0x71,0x8C,0x01,0x42,0x00,
+0x80,0x73,0x96,0x01,0x2E,0x37,0xFD,0x3F,0x9E,0x86,0xEB,0x5A,0x58,0x10,0x80,0x00,
+0xEA,0xBD,0xEB,0x6A,0x9E,0x85,0x02,0x31,0x81,0x64,0xEA,0xBD,0x46,0x21,0x00,0x07,
+0x04,0x21,0x03,0xF2,0x9E,0xC4,0x96,0x91,0x38,0x20,0x8D,0x09,0x9E,0x83,0x3C,0x33,
+0xFE,0xFC,0xEA,0xBD,0x9E,0x82,0x3C,0x33,0xFF,0x10,0xEA,0xBD,0x46,0x21,0x00,0x07,
+0x04,0x21,0x03,0xC1,0x9E,0xC1,0x96,0x91,0x92,0x48,0x38,0x20,0x8D,0x09,0x46,0x21,
+0x00,0x07,0x04,0x21,0x03,0xC1,0x96,0x90,0x38,0x20,0x81,0x09,0xDD,0x9E,0x44,0x10,
+0x22,0xB8,0x50,0x00,0x7C,0x18,0xFE,0x0C,0x44,0x11,0x86,0xA0,0xEA,0xDD,0x50,0x00,
+0x00,0x56,0x96,0x01,0xDD,0x9E,0xFC,0x00,0xFA,0x02,0xDD,0x40,0xC0,0x05,0x2E,0x10,
+0x00,0xD9,0xDD,0x5C,0xD5,0x0E,0xFA,0x06,0xDD,0x40,0xC0,0x0F,0x49,0x00,0x43,0xBC,
+0xEA,0x2A,0x5A,0x08,0x0C,0x05,0x2E,0x00,0x00,0xDB,0xD5,0x03,0x2E,0x00,0x00,0xDA,
+0xFE,0x0C,0x49,0xFF,0xFF,0xDE,0xD5,0x03,0x49,0xFF,0xF9,0x4F,0x46,0x11,0x00,0x07,
+0x14,0x00,0x83,0xF2,0xFC,0x80,0xFC,0x00,0x84,0xA0,0x97,0x29,0xE2,0x81,0xE8,0x10,
+0xA5,0x18,0x38,0x61,0x15,0x01,0x5A,0x08,0x01,0x06,0xE2,0x86,0x40,0x43,0x3C,0x1B,
+0xD5,0x03,0x42,0x42,0x18,0x01,0x1A,0x41,0x80,0x01,0x8C,0xA1,0xD5,0xEF,0xFC,0x80,
+0xFC,0x20,0x2F,0x17,0xFD,0x63,0x84,0x60,0xFB,0x94,0x2E,0x20,0x01,0x29,0xE2,0x62,
+0xE8,0x22,0x42,0x71,0xC0,0x24,0x84,0x40,0x2E,0x40,0x01,0x28,0xE2,0x44,0xE8,0x18,
+0x99,0x57,0x40,0x60,0x94,0x20,0x22,0x43,0x00,0x00,0x38,0x50,0x15,0x11,0x4F,0x12,
+0x00,0x0A,0x43,0x32,0x00,0x03,0x42,0xF2,0x80,0x03,0xE1,0xEF,0x40,0x42,0xBC,0x1B,
+0xD5,0x03,0x42,0x42,0x90,0x00,0x8C,0x41,0xAD,0x30,0x96,0x90,0xD5,0xE6,0x8C,0x61,
+0x96,0xD8,0xD5,0xDC,0xFC,0xA0,0xFC,0x00,0x3F,0xCF,0xFD,0xD8,0xB8,0x12,0xB9,0x08,
+0xE2,0x20,0xE8,0x10,0xB8,0x00,0x5A,0x00,0x08,0x04,0x5A,0x08,0x06,0x05,0xEB,0x51,
+0xEA,0xFA,0xD5,0x05,0xEB,0x46,0xC8,0x06,0xEB,0x54,0xEA,0xAC,0xEB,0x5A,0xEA,0x8C,
+0xEB,0x13,0xB8,0x08,0xB9,0x12,0xE2,0x01,0xE8,0x04,0x8C,0x01,0xB8,0x88,0xD5,0x02,
+0xEA,0x53,0xFC,0x80,0xFC,0x00,0x3C,0x0D,0xFF,0x88,0x3C,0x2D,0xFF,0x7E,0xE2,0x40,
+0xE8,0x19,0xEB,0x61,0x04,0x00,0x00,0xB2,0x96,0x81,0xE2,0x41,0xE8,0x13,0x96,0x49,
+0x92,0x10,0xEB,0x49,0x46,0x11,0x00,0x07,0x14,0x00,0x80,0xB2,0xEB,0x46,0x5A,0x08,
+0x01,0x0A,0xEA,0xB2,0xEB,0x5A,0xEA,0x8C,0x46,0x21,0x00,0x03,0x58,0x21,0x0A,0x98,
+0xDD,0x48,0xFC,0x80,0x46,0x38,0x00,0x30,0x4E,0x00,0x42,0xE9,0xCA,0xFE,0x4E,0x00,
+0x42,0xEC,0xDD,0x9E,0xFC,0x63,0x3F,0xCF,0xFD,0xD4,0x81,0x20,0xB1,0x81,0x3E,0x0F,
+0xFB,0x28,0x3B,0x00,0x4C,0x04,0x80,0xE1,0x80,0x26,0x3B,0x00,0xCC,0x24,0xA4,0x00,
+0xAC,0x08,0x2E,0x80,0x00,0xD5,0x81,0x42,0x40,0x04,0x00,0x10,0x85,0x81,0x4E,0x04,
+0x00,0x04,0x44,0xC0,0xFF,0xFF,0xEA,0x28,0x02,0x00,0x80,0x9C,0x02,0x30,0x80,0x0A,
+0x40,0xB0,0x0C,0x01,0x84,0x0E,0xDD,0x40,0x40,0xB5,0xA4,0x08,0x84,0x60,0xC8,0x09,
+0x54,0x44,0x00,0x7F,0x44,0x50,0x00,0x64,0xFF,0x2C,0x42,0x46,0x10,0x24,0x96,0xE3,
+0x88,0x6B,0xBB,0x80,0x3C,0x0D,0xFF,0x75,0xFE,0x02,0xB8,0x84,0x84,0x04,0x49,0xFF,
+0xFF,0xC3,0xB9,0x04,0xEB,0x57,0xEA,0x67,0x80,0x09,0x49,0x00,0x42,0xBF,0x84,0x06,
+0x42,0x64,0x80,0x73,0x40,0x25,0x00,0x13,0x84,0x00,0x46,0x41,0x00,0x00,0x58,0x42,
+0x0B,0x14,0x44,0x30,0x01,0xB0,0x38,0x13,0x00,0x00,0x81,0x27,0x42,0x90,0x8C,0x73,
+0x38,0x52,0x09,0x01,0x38,0x54,0x89,0x09,0x99,0x70,0xA7,0x69,0x81,0x27,0x50,0x11,
+0x00,0x6C,0x42,0x92,0x8C,0x73,0x39,0x02,0x05,0x01,0x50,0x21,0x00,0x24,0x8C,0x02,
+0x39,0x04,0x85,0x09,0x96,0x91,0x5A,0x08,0x06,0xE8,0xFC,0xE3,0x46,0x10,0x00,0xE0,
+0xDD,0x43,0x8C,0x27,0xEA,0xCB,0x46,0x10,0x01,0xC0,0x8C,0x35,0x14,0x10,0x01,0x60,
+0x46,0x10,0x02,0xA0,0x50,0x10,0x80,0x23,0x14,0x10,0x01,0x61,0x84,0x20,0x14,0x10,
+0x01,0x62,0x14,0x10,0x01,0x63,0x14,0x10,0x01,0x64,0x14,0x10,0x01,0x65,0x14,0x10,
+0x01,0x66,0x14,0x10,0x01,0x67,0x14,0x10,0x01,0x68,0xDD,0x9E,0xFC,0x60,0xEE,0xE0,
+0x3E,0x1F,0xFB,0x3C,0x80,0xE0,0x50,0xAF,0x80,0x30,0x3E,0x0F,0xFB,0x60,0xB1,0x83,
+0x3B,0x00,0xE0,0x00,0x44,0x20,0x00,0xF0,0x3B,0x03,0x60,0x20,0x84,0x20,0x3B,0x00,
+0x48,0x00,0x80,0x0A,0x3B,0x0F,0xC8,0x20,0xDD,0x42,0x84,0x20,0x80,0x0A,0xA8,0x41,
+0xA8,0x42,0xA8,0x43,0xA8,0x44,0xA8,0x45,0xA8,0x46,0xF1,0x8C,0xFA,0x22,0x40,0x13,
+0x84,0x57,0x96,0x90,0x81,0x3F,0x94,0x91,0x86,0x67,0x44,0x00,0x00,0x55,0x46,0xE3,
+0x00,0x00,0x45,0x43,0x00,0x00,0xE6,0x42,0xE8,0x0A,0x38,0x53,0x08,0x00,0x84,0x20,
+0x40,0x50,0x14,0x0C,0xF8,0x12,0x82,0x21,0x82,0x41,0xD5,0x3D,0xE6,0x48,0xE8,0x07,
+0xEA,0xBE,0x41,0x20,0x04,0x0C,0xF8,0x08,0x82,0x21,0xD5,0x0C,0xE6,0x4E,0xE8,0x0C,
+0xEA,0xBE,0x41,0x10,0x04,0x0C,0x84,0x20,0x80,0x61,0x80,0xE1,0x82,0x01,0x83,0xFF,
+0x82,0x41,0x80,0xA1,0xD5,0x28,0xE6,0x54,0xE8,0x08,0xEA,0xBE,0x41,0x00,0x04,0x0C,
+0x84,0x20,0x80,0x61,0x80,0xE1,0xD5,0x14,0xE6,0x5A,0xE8,0x08,0x38,0x73,0x08,0x00,
+0x84,0x20,0x40,0x70,0x1C,0x0C,0x80,0x61,0xD5,0x0A,0x5C,0xF1,0x00,0x20,0xE8,0x0A,
+0x38,0x33,0x08,0x00,0x84,0x20,0x40,0x30,0x0C,0x0C,0x80,0xE1,0x82,0x01,0x82,0x21,
+0xD5,0xE0,0xEA,0xBE,0x84,0x60,0x40,0x10,0x04,0x0C,0x80,0xE3,0x82,0x03,0x82,0x23,
+0x82,0x43,0x80,0xA3,0x80,0x93,0x85,0x60,0x88,0xAE,0x88,0x34,0x38,0x84,0xAE,0x02,
+0x50,0xC2,0x00,0x01,0xEA,0x56,0x89,0x05,0x38,0x85,0x12,0x0A,0x39,0x25,0x32,0x0A,
+0x50,0xC2,0x00,0x02,0xEA,0x56,0x39,0x15,0x32,0x0A,0x50,0xC2,0x00,0x03,0xEA,0x56,
+0x39,0x05,0x32,0x0A,0x50,0xC2,0x00,0x04,0xEA,0x56,0x38,0x75,0x32,0x0A,0x50,0xD2,
+0x00,0x05,0x50,0xC2,0x00,0x06,0xEA,0x56,0x54,0xD6,0x80,0xFF,0x8C,0x87,0x8D,0x61,
+0x38,0x35,0x36,0x0A,0x97,0x20,0x38,0x15,0x32,0x0A,0x5A,0xB8,0x03,0xD9,0x50,0x19,
+0x80,0x15,0x8C,0x41,0x55,0x30,0x80,0xFF,0x96,0x91,0x5B,0x30,0x31,0x04,0x48,0xFF,
+0xFF,0x84,0x84,0x00,0x46,0x32,0x00,0x00,0x40,0x15,0x00,0x00,0x5A,0x00,0xC8,0x0A,
+0x98,0x83,0xB4,0x81,0xB6,0x82,0xB4,0xA2,0xB4,0x81,0xDC,0xFC,0x8C,0x04,0xD5,0xF5,
+0xED,0x20,0xFC,0xE0,0xFC,0x00,0x80,0xC0,0x5A,0x08,0x01,0x0C,0xDD,0x43,0x84,0x22,
+0xEA,0x58,0x84,0x23,0xEA,0x47,0xEA,0x59,0xC8,0x04,0xEA,0x42,0xE6,0x01,0xEA,0x66,
+0x9E,0x31,0x96,0x40,0xE6,0x26,0xE8,0x18,0x84,0x43,0x40,0x10,0x08,0x16,0xE2,0x46,
+0x2E,0x27,0xFD,0x51,0x96,0x00,0x40,0x27,0x88,0x20,0xEB,0x22,0xEB,0x2F,0x96,0x90,
+0x49,0xFF,0xFE,0xA2,0x5A,0x68,0x06,0x16,0xEA,0x59,0x5A,0x08,0x11,0x13,0xEA,0x24,
+0x96,0x00,0xDD,0x55,0xD5,0x0E,0x5A,0x68,0x08,0x0D,0xEA,0x59,0x8C,0x01,0x96,0x00,
+0xE6,0x12,0xE9,0x02,0x84,0x00,0x3E,0x07,0xFD,0x51,0xEA,0x59,0x49,0xFF,0xFF,0x10,
+0xFC,0x80,0xFC,0x00,0x2E,0x17,0xFD,0x24,0x2E,0x07,0xFF,0xDB,0xFE,0x0C,0x3C,0x0F,
+0xFF,0x8D,0x84,0x00,0x3C,0x0F,0xFF,0x87,0x49,0x00,0x2C,0xAD,0xFC,0x80,0xFC,0x40,
+0x2E,0x47,0xFF,0xA9,0x84,0x20,0xFF,0x04,0x2F,0x20,0x01,0x29,0x2F,0x30,0x01,0x28,
+0x80,0x41,0x84,0x01,0x80,0xA1,0x45,0x10,0x00,0x48,0x47,0x01,0x00,0x00,0x59,0x08,
+0x06,0x04,0x44,0x90,0x00,0x64,0x4C,0x59,0x00,0x19,0x80,0xF0,0x42,0x72,0xC4,0x73,
+0x84,0x60,0x97,0x98,0xE2,0xD3,0xE8,0x0E,0x38,0x63,0x8D,0x11,0x42,0xF3,0x24,0x24,
+0xE0,0x8F,0xE8,0x04,0x8C,0x21,0x96,0x48,0x84,0x00,0x42,0x23,0x08,0x00,0x8C,0x61,
+0xD5,0xF1,0x8C,0xA1,0x97,0x68,0xD5,0xE8,0x96,0x91,0x46,0x31,0x00,0x07,0x12,0x21,
+0x87,0x99,0x96,0x49,0x46,0x21,0x00,0x07,0x12,0x11,0x07,0x9A,0xFC,0xC0,0x46,0x11,
+0x00,0x07,0x04,0x20,0x80,0xB2,0xEA,0x2A,0x96,0xD1,0xFE,0xCC,0x2E,0x47,0xFF,0xB6,
+0x2E,0x17,0xFF,0xAF,0xFE,0x64,0xFE,0x0C,0xE2,0x03,0xE8,0x04,0x84,0x21,0x84,0x00,
+0xD5,0x03,0x84,0x20,0x84,0x01,0x96,0x91,0x46,0x31,0x00,0x07,0x12,0x21,0x87,0x99,
+0x96,0x49,0x46,0x21,0x00,0x07,0x12,0x11,0x07,0x9A,0xDD,0x9E,0xFC,0x42,0x44,0x00,
+0x87,0x87,0x46,0x11,0x00,0x07,0x14,0x00,0x83,0xC6,0x3C,0x2D,0xFF,0x90,0x84,0x00,
+0x12,0x0F,0x80,0x07,0x12,0x0F,0x80,0x03,0x12,0x0F,0x80,0x02,0x12,0x0F,0x80,0x01,
+0x84,0x1F,0x12,0x0F,0x80,0x06,0x12,0x0F,0x80,0x05,0x12,0x0F,0x80,0x04,0xEB,0x61,
+0x00,0x70,0x0F,0x1C,0xEB,0x61,0x00,0x60,0x0F,0x1D,0xEB,0x61,0x00,0x00,0x0F,0x20,
+0x97,0xF8,0x97,0xB0,0x54,0x90,0x00,0xFF,0x84,0xA0,0x44,0x10,0x05,0x10,0x98,0x15,
+0xA4,0x00,0x96,0x01,0x12,0x0F,0x80,0x07,0xEA,0x26,0x02,0x3F,0x80,0x01,0xE2,0x60,
+0xEA,0x26,0xE8,0x05,0x96,0x01,0x12,0x0F,0x80,0x01,0xD5,0x1F,0x02,0x3F,0x80,0x02,
+0xE2,0x60,0xE8,0x0A,0xEA,0x23,0xEA,0xD2,0x4C,0x30,0x00,0x07,0xEA,0x26,0x96,0x01,
+0x12,0x0F,0x80,0x02,0xD5,0x12,0xEA,0x26,0x02,0x3F,0x80,0x03,0xE2,0x60,0xE8,0x0D,
+0xEA,0x23,0xEA,0xD2,0x4C,0x30,0x00,0x0A,0xEA,0x23,0xEA,0xD3,0x4C,0x30,0x00,0x06,
+0xEA,0x26,0x96,0x01,0x12,0x0F,0x80,0x03,0xEA,0x23,0xEA,0x81,0xE2,0x60,0xE8,0x06,
+0xEA,0x26,0x96,0x01,0x12,0x0F,0x80,0x04,0xD5,0x1F,0xEA,0x23,0xEA,0xE5,0xE2,0x60,
+0xE8,0x0A,0xEA,0x23,0xEA,0x81,0x4C,0x30,0x00,0x07,0xEA,0x26,0x96,0x01,0x12,0x0F,
+0x80,0x05,0xD5,0x12,0xEA,0x23,0x02,0x0F,0x80,0x06,0xE2,0x60,0xE8,0x0D,0xEA,0x23,
+0xEA,0x81,0x4C,0x30,0x00,0x0A,0xEA,0x23,0xEA,0xE5,0x4C,0x30,0x00,0x06,0xEA,0x26,
+0x96,0x01,0x12,0x0F,0x80,0x06,0x8C,0xA2,0xD9,0xAB,0x84,0x20,0xFA,0x44,0xEB,0x61,
+0x58,0x00,0x0F,0x24,0xDD,0x42,0x49,0xFF,0xF6,0x60,0xFF,0xC4,0xEA,0x2A,0x40,0x73,
+0x84,0xF7,0x02,0x2F,0x80,0x01,0x97,0xF9,0xE2,0xE2,0xE9,0x09,0xFF,0x84,0x02,0x2F,
+0x80,0x04,0x40,0x63,0x04,0xD7,0x97,0xB1,0xE2,0x46,0xE8,0x07,0xEB,0x61,0xEA,0xE2,
+0x46,0x11,0x00,0x07,0xEA,0x37,0xEA,0xE1,0xEB,0x46,0xC0,0x05,0x80,0x09,0x49,0xFF,
+0xFF,0x40,0xD5,0x04,0x80,0x09,0x49,0xFF,0xFF,0x04,0xC8,0x07,0xEB,0x61,0xEA,0xE2,
+0x46,0x11,0x00,0x07,0xEB,0x05,0xEA,0xE1,0xEB,0x61,0xEA,0xE2,0xC8,0x06,0x44,0x0F,
+0xAA,0xAA,0x46,0x11,0x00,0x07,0xEA,0xE1,0xEA,0xD2,0x46,0x11,0x00,0x07,0x96,0x01,
+0x12,0x00,0x87,0x93,0xEA,0xD3,0x46,0x11,0x00,0x07,0x96,0x01,0x12,0x00,0x87,0x94,
+0x02,0x0F,0x80,0x03,0x46,0x11,0x00,0x07,0x96,0x01,0x12,0x00,0x87,0x95,0xEA,0x81,
+0x46,0x11,0x00,0x07,0x96,0x01,0x12,0x00,0x87,0x96,0xEA,0xE5,0x46,0x11,0x00,0x07,
+0x96,0x01,0x12,0x00,0x87,0x97,0x02,0x0F,0x80,0x06,0x46,0x11,0x00,0x07,0x96,0x01,
+0x12,0x00,0x87,0x98,0x84,0x00,0x46,0x11,0x00,0x07,0x12,0x00,0x87,0x9B,0x44,0x00,
+0xA6,0x6A,0x46,0x11,0x00,0x07,0x14,0x00,0x83,0xC6,0xFC,0xC2,0x46,0x08,0x00,0x20,
+0x04,0x10,0x00,0x0E,0x42,0x10,0xD4,0x08,0xEB,0x1A,0x4E,0x00,0x3D,0x27,0x4E,0x00,
+0x3D,0x2C,0x4E,0x00,0x3D,0x28,0x44,0x10,0xFB,0xFF,0x4E,0x00,0x3D,0x26,0x4E,0x00,
+0x3D,0x2C,0x46,0x11,0x00,0x07,0x02,0x10,0x80,0x40,0x84,0x45,0xE6,0x22,0x46,0x19,
+0x00,0x68,0xE9,0x02,0x84,0x4F,0x10,0x20,0x89,0x04,0x02,0x10,0x00,0x1E,0x84,0x44,
+0x58,0x10,0x80,0x01,0xEA,0x32,0x02,0x10,0x00,0x1E,0xEA,0xB3,0xEA,0x32,0x84,0x20,
+0xEA,0x75,0xEA,0x61,0xEB,0x2D,0xEA,0xDF,0xEA,0x3E,0x10,0x20,0x80,0x28,0xF8,0x76,
+0xDD,0x9E,0xFC,0x20,0x46,0x68,0x00,0x20,0x10,0x03,0x00,0x48,0x05,0x03,0x00,0x0E,
+0x46,0x7F,0xFE,0x3F,0x84,0x07,0x50,0x73,0x8F,0xFF,0xFE,0x46,0x40,0x78,0x1C,0x02,
+0x83,0x86,0x40,0x73,0x86,0x44,0xBF,0x8E,0xB9,0x0E,0xFE,0x86,0x66,0x10,0x80,0x38,
+0x40,0x20,0x88,0x64,0xBA,0x8E,0x12,0x33,0x00,0x9C,0x12,0x43,0x00,0x8A,0x12,0x53,
+0x00,0x0A,0xFC,0xA0,0xFC,0x00,0xEA,0x4C,0x00,0x50,0x81,0x2C,0x84,0x0A,0xFF,0x44,
+0x00,0x10,0x81,0x39,0x80,0x65,0xDD,0x5C,0x42,0x30,0x80,0x73,0x84,0x46,0x96,0xD9,
+0xFA,0x01,0x84,0x27,0x84,0x81,0xF8,0x17,0xFC,0x80,0xFC,0x00,0xEA,0x4C,0x00,0x40,
+0x81,0x2D,0x84,0x0A,0xFF,0x04,0x00,0x30,0x81,0x3A,0x80,0xA4,0xDD,0x5C,0x00,0x20,
+0x81,0x2F,0x42,0x51,0x80,0x73,0x00,0x00,0x81,0x2E,0x96,0xE9,0x40,0x11,0x10,0x09,
+0x80,0xA4,0x96,0x9F,0x49,0xFF,0xFF,0xB7,0xFC,0x80,0xFC,0x01,0x84,0x20,0xF0,0x81,
+0x46,0x09,0x00,0x68,0x10,0x10,0x09,0x04,0x84,0x0E,0xDD,0x40,0xC0,0x35,0x84,0x0E,
+0xDD,0x40,0xC0,0x39,0xDD,0x43,0xEB,0x0F,0x44,0x10,0xFF,0xDF,0x4E,0x00,0x3C,0xA5,
+0x44,0x10,0xFE,0xFF,0x4E,0x00,0x3C,0xA1,0x4E,0x00,0x3C,0x9D,0x44,0x10,0xFB,0xFF,
+0xFE,0x56,0xEA,0x32,0x51,0xC0,0x00,0x38,0xB9,0x7F,0x2E,0x20,0x00,0xBF,0x66,0x10,
+0x8F,0x00,0x96,0x9F,0x40,0x10,0x89,0x04,0xB9,0xFF,0x44,0x10,0x00,0x32,0x12,0x10,
+0x00,0x9A,0x83,0xFF,0x84,0x21,0xEA,0x75,0xB4,0x5C,0x46,0x1F,0xFE,0x3F,0xEA,0x7F,
+0xFE,0x56,0x42,0x10,0xC8,0x08,0xB6,0x3C,0xB4,0x3C,0x66,0x10,0x80,0x38,0x58,0x10,
+0x80,0x08,0xB6,0x3C,0xD5,0x18,0xFA,0x02,0xDD,0x40,0xC8,0xCA,0xFA,0x06,0xDD,0x40,
+0xC8,0xC7,0xD5,0x17,0xFA,0x02,0xDD,0x40,0xC0,0x06,0xF8,0x08,0xF0,0x01,0x49,0xFF,
+0xFF,0x8B,0xD5,0x09,0xFA,0x06,0xDD,0x40,0xC0,0x06,0x49,0xFF,0xFF,0x31,0xF0,0x01,
+0x49,0xFF,0xFF,0x95,0xF0,0x01,0x49,0xFF,0xFC,0xCB,0xEA,0x59,0x49,0xFF,0xFC,0xE8,
+0xDD,0x47,0xDD,0x40,0xEA,0x28,0xC0,0x02,0x84,0x01,0x10,0x00,0x80,0x68,0x10,0x00,
+0x80,0x6C,0xFC,0x81,0xFC,0x00,0x84,0x07,0xDD,0x40,0xC0,0x1F,0xDD,0x4B,0x5A,0x00,
+0x07,0x05,0x66,0x10,0x00,0x02,0xC9,0x04,0x49,0xFF,0xFD,0xC5,0xD5,0x1C,0x2E,0x10,
+0x00,0xDF,0xEA,0x5B,0xC1,0x0C,0x5A,0x00,0x06,0x0B,0xDD,0x43,0x84,0x26,0xEB,0x31,
+0x84,0x20,0xEB,0x32,0x44,0x1F,0xFC,0x78,0x4E,0x00,0x40,0xA9,0x44,0x00,0x24,0x24,
+0x46,0x11,0x00,0x07,0xEA,0x30,0xD5,0x07,0x84,0x08,0xDD,0x40,0xC0,0x03,0xF9,0x85,
+0xD5,0x02,0xF9,0x49,0xFC,0x80,0xEA,0x35,0x96,0x04,0xC0,0x09,0xFC,0x00,0x49,0x00,
+0x34,0x48,0xC8,0xFE,0x49,0x00,0x34,0x2A,0xC8,0xFE,0xFC,0x80,0xDD,0x9E,0xFC,0x00,
+0xFA,0x13,0xDD,0x40,0xC0,0x0F,0xEB,0x51,0x58,0x00,0x04,0x74,0x3C,0x0F,0xFF,0x90,
+0x84,0x21,0x84,0x08,0xEA,0x34,0x84,0x01,0xEB,0x3C,0xEB,0x0C,0x84,0x00,0xEB,0x2E,
+0xD5,0x0B,0xFA,0x18,0xDD,0x40,0xC8,0xF0,0xEB,0x64,0xEB,0x47,0x3C,0x0F,0xFF,0x90,
+0x84,0x07,0x84,0x21,0xEA,0x34,0xFC,0x80,0xEA,0x35,0x96,0x04,0xC0,0x09,0xFC,0x00,
+0x49,0x00,0x34,0x0D,0xC8,0xFE,0x49,0x00,0x34,0x13,0xC8,0xFE,0xFC,0x80,0xDD,0x9E,
+0xFC,0x00,0xEA,0x4C,0xA6,0x0B,0x58,0x00,0x00,0x10,0xAE,0x0B,0x4E,0x00,0x04,0xC0,
+0x46,0x11,0x00,0x07,0xEA,0x70,0xF8,0xBF,0xFC,0x80,0xFC,0x00,0x80,0xC0,0xFA,0x08,
+0xDD,0x40,0xC0,0x0D,0xEA,0x35,0xEA,0x8A,0xC0,0x0A,0x40,0x03,0x10,0x09,0xEA,0x28,
+0x12,0x00,0x82,0xB8,0x50,0x00,0x00,0x64,0x12,0x00,0x80,0xB6,0xFA,0x11,0xDD,0x40,
+0xC0,0x0C,0xEA,0x35,0xEA,0x8A,0xC0,0x09,0x92,0xC1,0xDD,0x43,0x12,0x60,0x02,0xB8,
+0x50,0x63,0x00,0x64,0x12,0x60,0x00,0xB6,0xFC,0x80,0xFC,0x00,0xEB,0x7B,0x58,0x10,
+0x86,0x58,0xEA,0xB2,0x50,0x20,0x8A,0x20,0xDD,0x48,0xFC,0x80,0xFC,0x00,0x3F,0xCF,
+0xFD,0xD8,0xFA,0x07,0xDD,0x40,0xC0,0x05,0xEA,0x50,0x44,0x00,0x56,0x56,0xD5,0x21,
+0xFA,0x08,0xDD,0x40,0xC0,0x18,0xB8,0x00,0x5A,0x08,0x07,0x30,0xB8,0x12,0xB9,0x08,
+0xE2,0x20,0xE8,0x08,0x49,0xFF,0xFF,0xE3,0xEB,0x54,0xEA,0xAC,0xEB,0x5A,0xEA,0x8C,
+0xEB,0x13,0xB8,0x08,0xB9,0x12,0xE2,0x01,0xE8,0x04,0x8C,0x01,0xB8,0x88,0xD5,0x1D,
+0xEB,0x39,0xD5,0x11,0xFA,0x0B,0xDD,0x40,0xC0,0x08,0xEA,0x50,0x44,0x00,0x51,0x61,
+0x46,0x11,0x00,0x07,0xEA,0x30,0xD5,0x11,0xFA,0x0C,0xDD,0x40,0xC0,0x06,0xB8,0x00,
+0x5A,0x08,0x07,0x0C,0xEA,0x53,0xD5,0x09,0xFA,0x0D,0xDD,0x40,0xC0,0xFC,0xB8,0x00,
+0x5A,0x08,0x07,0x04,0x49,0xFF,0xFF,0xBB,0xFC,0x80,0xFC,0x00,0xEB,0x7B,0x58,0x10,
+0x86,0x58,0xEA,0x5A,0x50,0x20,0x8A,0x20,0xDD,0x48,0xFC,0x80,0xFC,0x00,0x3F,0xCF,
+0xFD,0xD8,0xFA,0x0F,0xDD,0x40,0xC0,0x05,0xEA,0x50,0x44,0x00,0x50,0x60,0xD5,0x24,
+0xFA,0x11,0xDD,0x40,0xC0,0x1B,0xB8,0x00,0x5A,0x08,0x08,0x33,0xB8,0x12,0xB9,0x08,
+0xE2,0x20,0xE8,0x0A,0x49,0xFF,0xFF,0xE3,0x49,0x00,0x2A,0x54,0xEB,0x51,0xEA,0xFA,
+0xEB,0x5A,0xEA,0x8C,0xEB,0x13,0xB8,0x08,0xB9,0x12,0xE2,0x01,0xE8,0x03,0x8C,0x01,
+0xB8,0x88,0xBD,0x08,0xD9,0x1D,0xEB,0x39,0xD5,0x11,0xFA,0x14,0xDD,0x40,0xC0,0x08,
+0xEA,0x50,0x44,0x00,0x52,0x62,0x46,0x11,0x00,0x07,0xEA,0x30,0xD5,0x11,0xFA,0x16,
+0xDD,0x40,0xC0,0x06,0xB8,0x00,0x5A,0x08,0x08,0x0C,0xEA,0x53,0xD5,0x09,0xFA,0x17,
+0xDD,0x40,0xC0,0xFC,0xB8,0x00,0x5A,0x08,0x08,0x04,0x49,0xFF,0xFF,0xB8,0xFC,0x80,
+0xFC,0x00,0xEA,0x4C,0xA6,0x0B,0x66,0x00,0x00,0x10,0xAE,0x0B,0x84,0x00,0x46,0x11,
+0x00,0x07,0xEA,0x70,0x49,0xFF,0xFF,0x01,0xF8,0x46,0xFC,0x80,0xFC,0x00,0x3F,0xCF,
+0xFD,0xD8,0xFA,0x1D,0xDD,0x40,0xC0,0x0B,0xEA,0x35,0x96,0x04,0xC0,0x02,0xEA,0x50,
+0x44,0x00,0xBF,0xBF,0x46,0x11,0x00,0x07,0xEA,0x30,0xD5,0x30,0xFA,0x1E,0xDD,0x40,
+0xC0,0x2C,0xEA,0x35,0x96,0x04,0xC0,0x04,0xB8,0x00,0x5A,0x08,0x07,0x28,0xB8,0x12,
+0xB9,0x08,0xE2,0x20,0xE8,0x17,0x84,0x01,0x44,0x10,0x02,0x88,0xEB,0x57,0xEA,0x67,
+0x46,0x31,0x00,0x02,0x58,0x31,0x86,0x58,0x49,0xFF,0xFA,0x7F,0x84,0x00,0x44,0x10,
+0x02,0x88,0xEB,0x57,0xEA,0x67,0x46,0x31,0x00,0x03,0x58,0x31,0x80,0x78,0x49,0xFF,
+0xFA,0x74,0xB8,0x08,0xB9,0x12,0xE2,0x01,0xE8,0x04,0x8C,0x01,0xB8,0x88,0xD5,0x06,
+0xEA,0x35,0x96,0x04,0xC0,0x02,0xEB,0x39,0xEA,0x53,0xFC,0x80,0xFC,0x00,0x84,0x0E,
+0xDD,0x40,0xC0,0x03,0xEA,0x53,0xF8,0x0C,0xFA,0x02,0xDD,0x40,0xC8,0xFC,0xFA,0x06,
+0xDD,0x40,0xC8,0xF9,0x84,0x0A,0xDD,0x40,0xC0,0x05,0x49,0xFF,0xFE,0x85,0x48,0x00,
+0x00,0x3A,0xFA,0x0A,0xDD,0x40,0xC0,0x04,0x49,0xFF,0xFF,0x12,0xD5,0x33,0xFA,0x0E,
+0xDD,0x40,0xC8,0xFB,0xFA,0x13,0xDD,0x40,0xC0,0x04,0x49,0xFF,0xFF,0x51,0xD5,0x2A,
+0xFA,0x18,0xDD,0x40,0xC8,0xFB,0xFA,0x1C,0xDD,0x40,0xC0,0x04,0x49,0xFF,0xFF,0x8A,
+0xD5,0x21,0xDD,0x47,0xDD,0x40,0xC0,0x04,0x49,0xFF,0xFF,0x92,0xD5,0x1B,0x84,0x06,
+0xDD,0x40,0xC0,0x0B,0xEA,0x6A,0x66,0x00,0x00,0x08,0x3E,0x07,0xFF,0xA2,0x84,0x00,
+0xEB,0x3C,0x84,0x00,0x3C,0x0F,0xFF,0x8D,0x49,0xFF,0xFA,0x67,0xEB,0x61,0x04,0x50,
+0x03,0xC6,0x44,0x00,0x6A,0xA6,0xD8,0x06,0x84,0x02,0xDD,0x40,0xC0,0x03,0x49,0xFF,
+0xFC,0x7F,0xFC,0x80,0xFC,0x00,0xDD,0x4D,0x96,0x04,0xC0,0x16,0xEA,0x33,0xC0,0x07,
+0x2E,0x07,0xFE,0x79,0x2E,0x17,0xFF,0xF1,0xE2,0x01,0xE9,0x05,0x84,0x00,0x3E,0x07,
+0xFE,0x79,0xD5,0x0C,0x8C,0x01,0x3E,0x07,0xFE,0x79,0x2E,0x07,0xFE,0x78,0x8C,0x01,
+0x3E,0x07,0xFE,0x78,0xD5,0x03,0x84,0x02,0xEA,0x6D,0xFC,0x80,0xFC,0x40,0xEA,0x2C,
+0x84,0x24,0x9D,0x82,0x8E,0x01,0xEA,0xDD,0x46,0x90,0x0F,0xFF,0x88,0xC0,0x97,0xB0,
+0x84,0xE0,0x50,0x94,0x8F,0xFF,0xC6,0x12,0x5A,0x68,0x01,0x09,0x52,0x73,0xFE,0x03,
+0x97,0xF9,0x40,0x04,0x9F,0x04,0xDD,0x4A,0xD5,0x06,0x84,0x1F,0x50,0x73,0x83,0xFC,
+0xDD,0x4A,0x97,0xF9,0x8E,0xC1,0x97,0xB0,0xD5,0xEF,0x3E,0x67,0xFD,0x1A,0xFC,0xC0,
+0xFC,0x60,0x80,0xC0,0x3C,0xCD,0xFF,0x93,0x2E,0x87,0xFD,0x28,0x3C,0x9D,0xFF,0x82,
+0xEA,0x45,0xEA,0xEB,0x3C,0x0D,0xFF,0x8A,0xC0,0x04,0x00,0x73,0x00,0x92,0xC7,0x03,
+0x2E,0x77,0xFD,0x68,0x85,0x60,0x81,0xA6,0x81,0xCB,0xEA,0x2C,0x40,0xF7,0x00,0x06,
+0xE8,0x34,0x2E,0x00,0x00,0x14,0xEA,0xA3,0xC0,0x0B,0x04,0x16,0x80,0x01,0x96,0x09,
+0xEA,0xB1,0x96,0x49,0x96,0x01,0x40,0x20,0x05,0x15,0xB4,0x2D,0xD5,0x0A,0xB4,0x2D,
+0x96,0x09,0xEA,0xB1,0x96,0x49,0x96,0x01,0x40,0x20,0x05,0x15,0x04,0x16,0x80,0x01,
+0x96,0x09,0xEA,0xB1,0x96,0x01,0x96,0x49,0x40,0x10,0x05,0x15,0x40,0x01,0x06,0x00,
+0xDD,0x4A,0xB4,0x2D,0x04,0x26,0x80,0x01,0x96,0x08,0x40,0x10,0x05,0x1C,0x89,0x61,
+0x40,0xB5,0x89,0x1C,0x96,0x90,0x40,0x05,0x88,0x00,0x40,0xB0,0x00,0x13,0x50,0xE7,
+0x00,0x01,0x50,0xD6,0x80,0x0C,0xD5,0xCA,0x00,0x03,0x00,0x20,0x00,0x23,0x00,0x14,
+0x00,0x13,0x00,0x08,0xEA,0xE8,0x40,0x00,0x09,0x00,0x88,0x01,0x00,0x13,0x00,0x2C,
+0xEA,0x87,0xDD,0x4A,0x84,0x0A,0xDD,0x50,0xEA,0x2C,0xE6,0x05,0xE9,0x11,0x00,0x03,
+0x00,0x50,0x00,0x23,0x00,0x44,0x00,0x13,0x00,0x38,0xEA,0xE8,0x40,0x00,0x09,0x00,
+0x88,0x01,0x00,0x13,0x00,0x5C,0xEA,0x87,0xDD,0x4A,0x84,0x0A,0xDD,0x50,0xEA,0x2C,
+0xE6,0x09,0xE9,0x0A,0x00,0x13,0x00,0x74,0x00,0x03,0x00,0x68,0x40,0x00,0x05,0x00,
+0xDD,0x4A,0x84,0x0A,0xDD,0x50,0xEA,0xDB,0x84,0x20,0x84,0x6C,0xE2,0x22,0xE8,0x0B,
+0x80,0x06,0x42,0x00,0x8C,0x73,0x8C,0x21,0x00,0x00,0x00,0x08,0x88,0x0B,0x40,0xB0,
+0x00,0x13,0xD5,0xF5,0xEA,0x69,0xEA,0x8A,0xC0,0x15,0xEA,0xFD,0xEA,0x2B,0xE3,0x0C,
+0x94,0x05,0x40,0xA0,0x28,0x64,0x40,0xA5,0x04,0x24,0x8F,0x23,0x40,0x85,0x3C,0x04,
+0xE7,0x21,0x40,0xF4,0x3C,0x44,0x40,0x77,0x9C,0x84,0x12,0x73,0x00,0x48,0x3E,0x17,
+0xFD,0x5E,0x02,0x23,0x00,0x48,0x00,0x13,0x00,0x92,0x40,0x31,0x20,0x09,0x96,0x10,
+0x96,0x90,0x88,0x43,0x58,0x10,0x80,0xF0,0x40,0x00,0x81,0x00,0x88,0x22,0x40,0x00,
+0x0E,0x00,0x89,0x61,0x40,0x00,0x2F,0x01,0xDD,0x4A,0xFC,0xE0,0xFC,0x00,0xEA,0x51,
+0x5A,0x08,0x01,0x04,0x49,0x00,0x2C,0x21,0x49,0x00,0x2C,0x1A,0x80,0xC0,0xEA,0x51,
+0xC0,0x07,0xEA,0x51,0x5A,0x08,0x01,0x0A,0xEA,0x52,0x5A,0x08,0x01,0x07,0x3C,0x03,
+0xFE,0xC3,0x8C,0x01,0x3C,0x0B,0xFE,0xC3,0xEA,0x84,0xC8,0x1B,0xEA,0x51,0xC0,0x07,
+0xEA,0x51,0x5A,0x08,0x01,0x17,0xEA,0x52,0x5A,0x08,0x01,0x14,0x84,0x01,0x3E,0x07,
+0xFD,0x07,0x49,0xFF,0xFE,0xE9,0xEA,0x33,0xC8,0x0C,0xEA,0xEE,0xC0,0x05,0x80,0x06,
+0x49,0xFF,0xFF,0x20,0xD5,0x05,0x2E,0x07,0xFE,0x7A,0xC0,0x03,0xEA,0xB7,0xEA,0xC4,
+0xEA,0xEE,0x3E,0x07,0xFE,0x7A,0xFC,0x80,0xFC,0x40,0x3F,0xCF,0xFD,0xD8,0x80,0xC0,
+0x49,0xFF,0xFE,0xD2,0xEA,0x33,0x81,0x20,0x49,0x00,0x3C,0xDA,0x4E,0x02,0x00,0xF3,
+0x5C,0x94,0x80,0x01,0x4E,0x92,0x00,0x07,0x2E,0x07,0xFD,0x1A,0xC0,0x03,0xEA,0xB7,
+0xEA,0xF6,0xBA,0x00,0x9E,0x17,0xE6,0x02,0xEA,0x7B,0xE8,0x08,0xC9,0x07,0x5A,0x20,
+0x07,0x03,0xEA,0xF6,0x49,0x00,0x18,0x5F,0xEA,0xF6,0x4E,0x12,0x00,0x50,0x84,0x3F,
+0x3E,0x17,0xFE,0x24,0x2E,0x17,0xFD,0x0A,0xC9,0x49,0x4E,0x92,0x00,0x48,0xDD,0x4D,
+0x96,0x04,0xC8,0x02,0xEA,0x6D,0x2E,0x07,0xFD,0x08,0x44,0x10,0xA5,0x5A,0xEB,0x49,
+0xEA,0x7B,0xEA,0x87,0xDD,0x4A,0x2E,0x67,0xFD,0x08,0x44,0x2F,0xA5,0x5A,0x44,0x10,
+0x00,0x3D,0x88,0x46,0xEA,0x84,0xFF,0x8C,0x40,0x21,0x01,0x00,0x8C,0xC2,0xEB,0x81,
+0x58,0x00,0x00,0x00,0x40,0x60,0x18,0x20,0x96,0x91,0x80,0xA6,0x50,0x03,0x00,0x7A,
+0x0A,0x12,0x80,0x01,0x88,0x41,0x96,0x91,0xD8,0xFC,0xFE,0x92,0x40,0x71,0x40,0x08,
+0x85,0x40,0xA4,0x30,0x5A,0xA8,0x1E,0x05,0x8C,0xC2,0x88,0x07,0xD5,0x05,0xA4,0x71,
+0x8C,0xC4,0x40,0x00,0x06,0x00,0xDD,0x4A,0x8D,0x41,0xFA,0x0E,0xDD,0x50,0x5A,0xA8,
+0x1F,0xF2,0x2E,0x07,0xFD,0x08,0x8C,0x01,0x96,0x00,0xEA,0xC2,0x2E,0x17,0xFD,0x11,
+0xE2,0x01,0xE9,0x21,0x84,0x00,0xEA,0xC2,0xD5,0x1E,0x00,0x23,0x00,0x92,0x4E,0x23,
+0x00,0x7A,0xEA,0xF4,0xEA,0x5B,0xC1,0x09,0x2E,0x57,0xFD,0x65,0x2E,0x17,0xFD,0x5E,
+0xD1,0x04,0xE6,0x02,0x4E,0xF2,0x00,0x6F,0xEA,0x52,0xC8,0x0D,0xB8,0x14,0xC8,0x04,
+0x2E,0x07,0xFD,0x0A,0xC0,0x08,0x4E,0x92,0x00,0x04,0xEA,0xB7,0xD5,0x04,0x84,0x01,
+0x3E,0x07,0xFD,0x1A,0x2E,0x07,0xFD,0x0A,0x4E,0x02,0x00,0x6D,0x4E,0x92,0x00,0x6B,
+0xDD,0x4D,0x96,0x04,0xC8,0x02,0xEA,0x6D,0x2E,0x07,0xFD,0x09,0x8C,0x01,0x96,0x00,
+0x3E,0x07,0xFD,0x09,0x2E,0x17,0xFD,0x0C,0xE2,0x20,0xE8,0x04,0x84,0x01,0x3E,0x07,
+0xFD,0x09,0x2E,0x07,0xFD,0x09,0x2E,0x77,0xFD,0x10,0x9E,0x41,0x92,0xE1,0xFF,0xCC,
+0xEB,0x5A,0xEB,0x30,0x40,0x70,0x9C,0x20,0x2E,0x17,0xFD,0x34,0xC1,0x11,0x44,0x10,
+0xA3,0x3A,0xEB,0x49,0xEA,0x7B,0xEA,0x87,0xDD,0x4A,0x2E,0x17,0xFD,0x09,0x44,0x0F,
+0xA3,0x3A,0x88,0x01,0xEA,0x7B,0x40,0x00,0x05,0x00,0x96,0x01,0xD5,0x07,0x46,0x00,
+0x40,0x30,0x50,0x00,0x02,0x01,0xDD,0x4A,0x84,0x0A,0x2E,0x27,0xFD,0x10,0x84,0x20,
+0x92,0x41,0xE2,0x22,0xE8,0x07,0x38,0x33,0x85,0x01,0x8C,0x21,0x88,0x03,0x96,0x01,
+0xD5,0xF9,0xFE,0x02,0x40,0x60,0x40,0x08,0x85,0x20,0x2E,0x17,0xFD,0x10,0x8C,0x22,
+0x90,0x22,0xE3,0x21,0xE8,0x1F,0x8E,0x21,0xA4,0x38,0x4C,0x90,0xC0,0x05,0x8C,0xE2,
+0x88,0x06,0xD5,0x05,0xA4,0x79,0x8C,0xE4,0x40,0x00,0x06,0x00,0xDD,0x4A,0x8D,0x21,
+0xD5,0xED,0x5A,0x90,0x01,0x04,0x48,0xFF,0xFF,0x9F,0xEA,0x52,0x4E,0x03,0xFF,0x9C,
+0xB8,0x14,0xC0,0x03,0x4E,0x22,0xFF,0x93,0x80,0x06,0x49,0xFF,0xFE,0x1B,0x48,0xFF,
+0xFF,0x93,0xFC,0xC0,0xFC,0x20,0x80,0xE0,0x80,0xC1,0x49,0x00,0x27,0xB9,0xDD,0x4B,
+0x84,0x20,0x49,0x00,0x29,0xAB,0xEA,0xAE,0x3E,0x20,0x01,0x29,0x84,0x00,0xEA,0xD6,
+0x3E,0x07,0xFD,0x14,0xEB,0x5A,0x10,0x00,0x86,0x01,0xFA,0x00,0x3E,0x07,0xFD,0x03,
+0xFA,0x14,0xFA,0x30,0x49,0x00,0x3B,0x0E,0xEA,0xDB,0x84,0x25,0xFE,0x8C,0x96,0x90,
+0x54,0x01,0x00,0x03,0xC8,0x03,0x8C,0x44,0xD5,0x02,0x8C,0x48,0x96,0x90,0x66,0x21,
+0x00,0x03,0x52,0x21,0x00,0x7A,0x96,0x90,0x3E,0x27,0xFD,0x10,0x2E,0x40,0x01,0x29,
+0x2E,0x30,0x01,0x28,0x2E,0x10,0x01,0x31,0x42,0x12,0x0C,0x73,0x92,0x41,0x40,0x20,
+0x88,0x17,0x96,0x90,0xC0,0x02,0x8C,0x41,0x3E,0x27,0xFD,0x0C,0x44,0x20,0x00,0x3D,
+0x40,0x20,0x88,0x37,0x96,0x90,0xC1,0x02,0x8C,0x41,0x3E,0x27,0xFD,0x11,0x84,0x00,
+0xEA,0xC2,0x2E,0x17,0xFF,0xAF,0x3E,0x17,0xFD,0x1C,0x3E,0x07,0xFD,0x1A,0x2E,0x00,
+0x00,0x16,0x2E,0x20,0x00,0x17,0x40,0x21,0x01,0x04,0x3C,0x2E,0x00,0x48,0x2E,0x00,
+0x00,0x18,0x2E,0x10,0x00,0x19,0x40,0x10,0x81,0x04,0x3C,0x1E,0x00,0x49,0x40,0x21,
+0x0C,0x57,0x40,0x10,0x90,0x37,0x3E,0x20,0x01,0x32,0x3E,0x10,0x01,0x33,0x8C,0x82,
+0x3E,0x47,0xFD,0x16,0x8C,0x62,0x3E,0x37,0xFD,0x05,0x84,0x00,0x3C,0x0B,0xFE,0xC1,
+0xCF,0x21,0xEB,0x61,0x14,0x70,0x03,0xF1,0xDD,0x4D,0x96,0x04,0xC0,0x05,0x84,0x01,
+0xEB,0x48,0x84,0x02,0xEA,0x6D,0xEB,0x61,0x58,0x00,0x0F,0x44,0x84,0x20,0x44,0x20,
+0x00,0x3C,0xDD,0x42,0xCE,0x08,0xEB,0x61,0x58,0x00,0x03,0xB0,0x80,0x26,0x44,0x20,
+0x00,0x3C,0xDD,0x42,0xEB,0x61,0x58,0x00,0x0F,0x80,0x84,0x20,0x44,0x20,0x00,0x40,
+0xDD,0x42,0x46,0x19,0x00,0x08,0xA4,0x08,0x96,0x01,0x3C,0x0B,0xFE,0xBE,0x92,0x01,
+0x3C,0x0B,0xFE,0xBF,0xA4,0x0A,0x3C,0x0B,0xFE,0xBD,0x49,0x00,0x05,0x0B,0x84,0x1F,
+0x3E,0x07,0xFE,0x24,0x84,0x00,0xEA,0xC8,0x3E,0x07,0xFD,0x0B,0x84,0x00,0x3C,0x0B,
+0xFE,0xC3,0xFC,0xA0,0xFC,0x61,0x46,0x01,0x00,0x07,0xDD,0x46,0x46,0x11,0x00,0x07,
+0x96,0x01,0xDD,0x58,0xEA,0x37,0xDD,0x45,0x46,0x01,0x00,0x07,0x04,0x50,0x03,0xF0,
+0x44,0x00,0xA1,0x1A,0x92,0xB0,0xD8,0x03,0x49,0x00,0x2F,0xE4,0x49,0x00,0x3B,0x8E,
+0x46,0x01,0x00,0x07,0xDD,0x46,0x46,0x11,0x00,0x07,0x96,0x01,0xDD,0x58,0xEB,0x03,
+0xDD,0x45,0x49,0x00,0x35,0x0D,0xC8,0xFE,0x46,0x01,0x00,0x07,0xDD,0x46,0x46,0x11,
+0x00,0x07,0x96,0x01,0xDD,0x58,0x58,0x00,0x00,0x03,0xDD,0x45,0x49,0x00,0x3B,0xB8,
+0x49,0xFF,0xF3,0x6E,0xC0,0x02,0x96,0x01,0x46,0x11,0x00,0x07,0x12,0x00,0x87,0xA1,
+0x46,0x01,0x00,0x07,0xDD,0x46,0x46,0x11,0x00,0x07,0x96,0x01,0xDD,0x58,0xEB,0x05,
+0xDD,0x45,0xFA,0x4F,0x44,0x00,0x00,0xE7,0x84,0x22,0x44,0x30,0x00,0xF8,0xDD,0x4E,
+0x49,0xFF,0xF1,0xBE,0x46,0x01,0x00,0x07,0xDD,0x46,0x46,0x11,0x00,0x07,0x96,0x01,
+0xDD,0x58,0x58,0x00,0x00,0x05,0xDD,0x45,0x84,0x01,0x44,0x10,0x01,0xE0,0x84,0x45,
+0x44,0x30,0x02,0x58,0x49,0x00,0x34,0x84,0x80,0xC0,0xC8,0xF7,0x84,0x45,0x84,0x01,
+0x44,0x10,0x00,0x80,0x49,0x00,0x34,0xB9,0x46,0x01,0x00,0x07,0xEA,0xBA,0x96,0x49,
+0xEA,0x6F,0x58,0x10,0x80,0x06,0xEA,0x7C,0x49,0xFF,0xF4,0xFD,0x49,0xFF,0xF5,0x47,
+0x4E,0x00,0x33,0x6E,0x80,0x06,0xEA,0x5B,0xEA,0xAB,0x84,0x21,0xEB,0x81,0x12,0x60,
+0x00,0x00,0x80,0x41,0x44,0x00,0x00,0xE7,0xEA,0x3A,0x96,0x01,0x46,0x11,0x00,0x07,
+0x12,0x00,0x87,0xAF,0x46,0x01,0x00,0x07,0xDD,0x46,0x46,0x11,0x00,0x07,0x96,0x01,
+0xDD,0x58,0x58,0x00,0x00,0x07,0xDD,0x45,0xFA,0x0A,0xDD,0x40,0xC8,0x19,0xFA,0x0E,
+0xDD,0x40,0xC8,0x16,0xFA,0x13,0xDD,0x40,0xC8,0x13,0xFA,0x18,0xDD,0x40,0xC8,0x10,
+0x46,0x01,0x00,0x07,0xEA,0x63,0x4E,0x00,0x33,0x04,0xD8,0x08,0xEA,0x21,0xEA,0x20,
+0x83,0xFF,0x46,0x11,0x00,0x07,0xEA,0x70,0xD5,0x03,0x49,0xFF,0xF3,0x24,0x49,0x00,
+0x3B,0xA6,0x46,0x01,0x00,0x07,0xDD,0x46,0x46,0x11,0x00,0x07,0x96,0x01,0xDD,0x58,
+0x58,0x00,0x00,0x08,0xDD,0x45,0x84,0x00,0xDD,0x55,0x84,0xC0,0x3C,0x6F,0xFF,0x7C,
+0x46,0x01,0x00,0x07,0xEA,0xBA,0x84,0x41,0x96,0x49,0xEA,0x6F,0x10,0x2F,0x80,0x00,
+0x10,0x2F,0x80,0x01,0x10,0x2F,0x80,0x02,0x10,0x2F,0x80,0x03,0x10,0x2F,0x80,0x04,
+0x58,0x10,0x80,0x09,0xEA,0x7C,0x3A,0x0F,0x84,0x00,0x49,0x00,0x2F,0x3C,0x80,0x06,
+0x84,0x26,0x49,0x00,0x3A,0x62,0x46,0x00,0x0E,0xD0,0x46,0x10,0x20,0x0C,0x50,0x00,
+0x00,0x40,0x8C,0x26,0x49,0x00,0x3A,0x54,0x46,0x09,0x00,0x20,0xB4,0x20,0x66,0x10,
+0x80,0x40,0xB6,0x20,0xEA,0xF4,0xEA,0x8B,0xC1,0x05,0xA0,0x41,0x58,0x10,0x80,0x08,
+0xA8,0x41,0x46,0x01,0x00,0x07,0xDD,0x46,0x46,0x11,0x00,0x07,0x96,0x01,0xDD,0x58,
+0x58,0x00,0x00,0x0A,0xDD,0x45,0x84,0x41,0x44,0x00,0x00,0xBC,0x84,0x20,0x84,0x66,
+0x46,0x78,0x00,0x20,0x46,0x9A,0x33,0xAA,0xDD,0x4E,0x84,0xC0,0x50,0xA3,0x84,0xF4,
+0x50,0x94,0x83,0x3A,0x46,0xB9,0x00,0x90,0x84,0x07,0x49,0x00,0x2D,0x55,0x8C,0x05,
+0x46,0x11,0x00,0x07,0x14,0x00,0x83,0xF9,0xEA,0x42,0x4E,0x02,0x00,0xC7,0xEA,0x93,
+0x46,0x01,0x00,0x07,0xDD,0x46,0x46,0x11,0x00,0x07,0x96,0x01,0xDD,0x58,0x58,0x00,
+0x00,0x0B,0xDD,0x45,0x84,0x0E,0xDD,0x40,0xC0,0x04,0x84,0x00,0xDD,0x55,0xD5,0x0C,
+0xFA,0x02,0xDD,0x40,0xC8,0xFB,0xFA,0x06,0xDD,0x40,0xC8,0xF8,0xDD,0x47,0xDD,0x40,
+0xC8,0xF5,0x49,0xFF,0xED,0xD0,0x49,0x00,0x02,0xD1,0xC8,0x1E,0x46,0x01,0x00,0x07,
+0xDD,0x46,0x46,0x11,0x00,0x07,0x96,0x01,0xDD,0x58,0x58,0x00,0x00,0x0C,0xDD,0x45,
+0x84,0x0E,0xDD,0x40,0xC0,0x04,0x49,0xFF,0xF4,0xE1,0xF8,0x0C,0xFA,0x02,0xDD,0x40,
+0xC8,0xFB,0xFA,0x06,0xDD,0x40,0xC8,0xF8,0xDD,0x47,0xDD,0x40,0xC8,0xF5,0x49,0x00,
+0x02,0x09,0x48,0x00,0x00,0x83,0x84,0x00,0x3E,0x07,0xFD,0x00,0x3E,0x07,0xFD,0x07,
+0x46,0x01,0x00,0x07,0xEA,0xBA,0x96,0x49,0xEA,0x6F,0x58,0x10,0x80,0x0D,0xEA,0x7C,
+0x84,0x0E,0xDD,0x40,0xC8,0x28,0xFA,0x02,0xDD,0x40,0xC8,0x25,0xFA,0x06,0xDD,0x40,
+0xC8,0x22,0xDD,0x47,0xDD,0x40,0xC8,0x1F,0xDD,0x4B,0x5A,0x00,0x08,0x15,0x5A,0x00,
+0x06,0x13,0xDD,0x59,0x5A,0x08,0x01,0x06,0xF8,0x4C,0xC8,0x03,0x49,0x00,0x29,0x4D,
+0xEB,0x21,0xC8,0x0D,0x49,0x00,0x11,0xE8,0x49,0x00,0x2A,0x7E,0x49,0x00,0x27,0xB0,
+0x80,0xC0,0xD5,0x05,0x49,0x00,0x25,0x46,0x49,0x00,0x25,0x22,0xEB,0x21,0xC8,0x03,
+0x49,0x00,0x02,0x48,0x49,0xFF,0xFB,0x64,0x49,0xFF,0xED,0xB0,0x84,0x01,0x3E,0x07,
+0xFD,0x00,0x80,0x06,0x49,0xFF,0xFC,0xD2,0xEA,0xEE,0x49,0x00,0x28,0xD4,0xEA,0x52,
+0xC8,0x02,0xEA,0xC4,0x49,0x00,0x01,0x9F,0x84,0x0E,0xDD,0x40,0xC8,0x36,0xFA,0x02,
+0xDD,0x40,0xC8,0x33,0xFA,0x06,0xDD,0x40,0xC8,0x30,0x84,0x0A,0xDD,0x40,0xC8,0x2D,
+0xFA,0x0A,0xDD,0x40,0xC8,0x2A,0xFA,0x13,0xDD,0x40,0xC8,0x27,0xFA,0x0E,0xDD,0x40,
+0xC8,0x24,0xFA,0x18,0xDD,0x40,0xC8,0x21,0xFA,0x1C,0xDD,0x40,0xC8,0x1E,0xDD,0x47,
+0xDD,0x40,0xC8,0x1B,0x3C,0x0D,0xFF,0x88,0x5A,0x08,0x01,0x18,0xEB,0x21,0xC8,0x13,
+0xEA,0xDC,0x5A,0x08,0x01,0x09,0x00,0x05,0x00,0x00,0x96,0x04,0xC8,0x04,0x49,0x00,
+0x24,0x8B,0xD5,0x07,0x00,0x05,0x00,0x00,0x96,0x0E,0xC8,0x03,0x49,0x00,0x24,0x3B,
+0x49,0x00,0x25,0x48,0x49,0x00,0x29,0xE6,0x46,0x01,0x00,0x07,0xEA,0xBA,0x96,0x49,
+0xEA,0x6F,0x58,0x10,0x80,0x0E,0xEA,0x7C,0xDD,0x4B,0x5A,0x08,0x07,0x07,0x00,0x53,
+0x83,0x40,0xEA,0x57,0xD8,0x19,0xD5,0x0C,0x5A,0x08,0x08,0x17,0x00,0x53,0x83,0x40,
+0xEA,0x82,0xD8,0x12,0x00,0x05,0x80,0x00,0xC8,0xFE,0x49,0x00,0x33,0x93,0x49,0x00,
+0x34,0x4E,0x46,0x01,0x00,0x07,0xEA,0x63,0x4C,0x54,0xC0,0x07,0x84,0x21,0xDD,0x4B,
+0xEA,0x34,0x84,0x00,0xEA,0xC8,0x84,0x0E,0xDD,0x40,0xC8,0x13,0xFA,0x02,0xDD,0x40,
+0xC8,0x10,0xFA,0x06,0xDD,0x40,0xC8,0x0D,0x84,0x0A,0xDD,0x40,0xC8,0x0A,0xFA,0x0A,
+0xDD,0x40,0xC8,0x07,0xFA,0x13,0xDD,0x40,0xC8,0x04,0xDD,0x47,0xDD,0x40,0xC0,0x05,
+0x84,0x01,0xF8,0x05,0xC8,0xFE,0xF8,0x06,0x2E,0x07,0xFD,0x0D,0x49,0x00,0x2E,0x98,
+0xC8,0xFC,0x48,0xFF,0xFE,0xF3,0xFC,0x00,0x46,0x61,0x00,0x03,0x58,0x63,0x0A,0x98,
+0x80,0x06,0x84,0x20,0xDD,0x4F,0xDD,0x42,0x50,0x03,0x05,0x10,0x84,0x20,0xDD,0x4F,
+0xDD,0x42,0x50,0x03,0x10,0x10,0x84,0x20,0x44,0x20,0x05,0xF0,0xDD,0x42,0x50,0x03,
+0x16,0x00,0x84,0x20,0xDD,0x4F,0xDD,0x42,0x84,0x00,0x3C,0x0F,0xFF,0x8F,0xFC,0x80,
+0xFC,0x20,0x3F,0xCF,0xFD,0xD8,0xB8,0x00,0x5A,0x00,0x08,0x05,0x84,0xC3,0x5A,0x08,
+0x06,0x03,0x84,0xC1,0xB9,0x19,0x2E,0x27,0xFD,0x2F,0x2E,0x07,0xFD,0x40,0x88,0x02,
+0xE2,0x20,0x4E,0xF2,0x00,0x5B,0xB9,0x19,0xC9,0x05,0xEB,0x4E,0xEA,0x62,0xDD,0x4F,
+0xDD,0x42,0xB9,0x19,0x2E,0x07,0xFD,0x2F,0x84,0x80,0xE2,0x20,0xE8,0x2D,0x2E,0x37,
+0xFF,0xA9,0x2E,0x07,0xFF,0xDF,0x44,0x10,0x00,0xD8,0x88,0x60,0xFE,0x74,0xBD,0x1A,
+0x94,0xDA,0x46,0x21,0x00,0x05,0x58,0x21,0x00,0x98,0x40,0x12,0x84,0x20,0x84,0x80,
+0x45,0x00,0x6D,0x60,0x45,0x10,0xDA,0xC0,0xD1,0x17,0x02,0x01,0x6F,0xF0,0xA5,0xE8,
+0x8A,0x07,0x96,0x01,0x97,0xC3,0x42,0x73,0x80,0x03,0xE0,0xE3,0xE8,0x04,0xA5,0xD0,
+0x88,0x07,0xAC,0x10,0x2A,0x01,0x00,0x01,0x88,0x10,0x96,0x01,0xE3,0xA0,0xE8,0x02,
+0x84,0x81,0x8C,0xA2,0xD5,0xEA,0xB8,0x19,0x8C,0x01,0xB8,0x99,0x5A,0x48,0x01,0x1E,
+0x44,0x20,0x00,0xD8,0xFE,0xB4,0xBD,0x1A,0x46,0x31,0x00,0x05,0x58,0x31,0x80,0x98,
+0x40,0x22,0x88,0x20,0x84,0x80,0xD2,0x0F,0xA5,0xE8,0xB8,0x19,0x22,0x11,0x80,0x00,
+0x96,0x03,0x40,0x00,0x80,0x16,0x88,0x07,0x96,0x01,0x1A,0x02,0x80,0x01,0x1A,0x41,
+0x80,0x01,0xD5,0xF2,0x84,0x00,0xB8,0x99,0xB9,0x19,0x2E,0x47,0xFD,0x2F,0x2E,0x07,
+0xFD,0x40,0x88,0x04,0xE2,0x20,0xE9,0x3A,0x84,0x40,0xBA,0x99,0xBD,0x1A,0x44,0x00,
+0x00,0xD8,0x42,0x13,0x00,0x24,0x46,0x31,0x00,0x05,0x58,0x31,0x80,0x98,0x40,0x12,
+0x84,0x20,0xD1,0x0D,0x22,0x01,0x80,0x00,0xA5,0xA8,0x40,0x00,0x10,0x16,0x88,0x06,
+0x96,0x01,0x1A,0x02,0x80,0x01,0x1A,0x21,0x80,0x01,0xD5,0xF4,0xB8,0x00,0x5A,0x08,
+0x02,0x1E,0x2E,0x07,0xFD,0x22,0x2E,0x10,0x00,0x70,0xE2,0x20,0xE8,0x05,0x84,0x01,
+0xB8,0x90,0x84,0x00,0xD5,0x11,0x2E,0x2F,0xFF,0xA3,0x4E,0x24,0x00,0x10,0x3C,0x33,
+0xFE,0xE2,0xBA,0x26,0xE2,0x62,0xE9,0x0A,0x3C,0x33,0xFE,0xE7,0xBA,0x25,0xE2,0x62,
+0xE9,0x05,0xC1,0x04,0x8C,0x01,0x3E,0x07,0xFD,0x22,0xFC,0xA0,0xFC,0x20,0x3C,0x1D,
+0xFF,0x90,0xEA,0x40,0x2E,0x37,0xFD,0x64,0xE2,0x03,0xE8,0x48,0xEB,0x27,0x5A,0x08,
+0x01,0x2C,0x2E,0x57,0xFD,0x48,0x9E,0x19,0xD8,0x27,0x2E,0x70,0x00,0x0A,0x84,0xA0,
+0x47,0x01,0x00,0x02,0x59,0x08,0x01,0x44,0x44,0x60,0x05,0x10,0x50,0x22,0x8F,0x34,
+0x99,0x0D,0x88,0x50,0xA4,0x20,0x03,0x11,0x00,0x00,0xE3,0xA0,0xE8,0x04,0xA4,0x20,
+0xA4,0x90,0xD5,0x03,0xA4,0x10,0xA4,0xA0,0x8A,0x02,0xE0,0xE0,0xE8,0x05,0x84,0x00,
+0x3E,0x07,0xFD,0x30,0xD5,0x03,0x8C,0xA2,0xDE,0xEA,0xEB,0x27,0x5A,0x08,0x01,0x05,
+0x3E,0x37,0xFD,0x45,0xD5,0x1D,0xEB,0x27,0xC8,0x1B,0xDD,0x4B,0x8E,0x02,0xE6,0x07,
+0xE8,0x17,0x3E,0xFF,0x7A,0xC8,0x38,0x07,0x80,0x00,0xEA,0xAF,0x4A,0x00,0x3C,0x00,
+0x08,0x1E,0x1E,0x1E,0x0C,0x08,0x0C,0x00,0xEA,0xB2,0xD5,0x02,0xEA,0x5A,0x46,0x21,
+0x00,0x03,0x58,0x21,0x00,0x78,0xDD,0x48,0xD5,0x03,0x49,0xFF,0xFF,0x03,0xFC,0xA0,
+0x92,0x00,0xFC,0x00,0xEB,0x38,0xC0,0x1C,0x2E,0x07,0xFD,0x4D,0x2E,0x17,0xFF,0xDE,
+0xE2,0x01,0xE9,0x10,0x84,0x00,0x3E,0x07,0xFD,0x3B,0x84,0x20,0x3C,0x1F,0xFF,0x8F,
+0x2E,0x07,0xFD,0x47,0x3E,0x07,0xFD,0x2F,0xEB,0x4E,0xEA,0x62,0xDD,0x4F,0xDD,0x42,
+0xD5,0x07,0x3C,0x1D,0xFF,0x87,0xC9,0x04,0x8C,0x01,0x3E,0x07,0xFD,0x4D,0xFC,0x80,
+0xFC,0x00,0x3F,0xCF,0xFD,0xD8,0x2E,0x17,0xFD,0x48,0x2E,0x07,0xFD,0x45,0xE2,0x20,
+0xE9,0x05,0x84,0x01,0xEA,0xAA,0x84,0x0A,0xD5,0x03,0x84,0x00,0xEA,0xAA,0x3E,0x07,
+0xFD,0x40,0x2E,0x07,0xFD,0x34,0xC0,0x2A,0x84,0x01,0xEB,0x25,0x84,0x01,0x3E,0x07,
+0xFD,0x30,0x84,0x02,0xEA,0xF9,0xBE,0x00,0x5A,0x68,0x02,0x18,0x2E,0x07,0xFD,0x5F,
+0x5A,0x08,0x01,0x14,0xEA,0x2B,0xE6,0x01,0x3E,0xF7,0xFD,0x79,0x80,0x06,0x80,0x26,
+0xEA,0x34,0x3E,0x67,0xFD,0x5F,0xEA,0x2B,0xC0,0x04,0xEB,0x64,0xDD,0x5D,0xD5,0x03,
+0xEB,0x64,0xEA,0xB6,0xB8,0x9A,0xD5,0x2B,0x84,0x00,0x3E,0x07,0xFD,0x59,0x2E,0x07,
+0xFD,0x43,0x8C,0x01,0x3E,0x07,0xFD,0x43,0xD5,0x08,0x49,0xFF,0xFF,0x51,0x2E,0x07,
+0xFD,0x59,0x8C,0x01,0x3E,0x07,0xFD,0x59,0xEB,0x81,0x02,0x50,0x03,0x01,0xEB,0x04,
+0xD0,0x09,0x2E,0x0F,0xFF,0xA2,0x4E,0x04,0x00,0x06,0xB8,0x00,0x8E,0x07,0xE6,0x02,
+0xE8,0x06,0xEA,0x40,0x8C,0x01,0x96,0x00,0xEA,0xC3,0xD5,0x09,0xEB,0x81,0x00,0x00,
+0x06,0x01,0xEB,0x5A,0x8C,0x01,0x96,0x00,0x10,0x00,0x86,0x01,0xFC,0x80,0xFC,0x20,
+0x3C,0x7D,0xFF,0x90,0x84,0xA0,0xEB,0x19,0xEB,0x24,0x84,0x63,0xDD,0x4F,0x98,0x7D,
+0x50,0x02,0x8F,0x34,0xA5,0x08,0x88,0x06,0xA4,0x00,0x42,0x02,0x0C,0x73,0x8C,0xA2,
+0x90,0x02,0x96,0x01,0xAC,0x08,0xDA,0xF4,0x84,0x03,0x3C,0x0F,0xFF,0x86,0xFC,0xA0,
+0xFC,0x00,0x3F,0xCF,0xFD,0xD8,0xB8,0x00,0x5A,0x00,0x08,0x04,0x5A,0x08,0x06,0x05,
+0xEB,0x4E,0xEA,0xA4,0xD5,0x04,0xB8,0x11,0xC8,0x04,0xEA,0x96,0xE6,0x01,0xD5,0x02,
+0x85,0xE0,0x3E,0xF7,0xFD,0x50,0xEA,0x6A,0xEA,0xA3,0xC0,0x0F,0x2E,0x07,0xFD,0x50,
+0xC0,0x0C,0xB8,0x10,0x5A,0x00,0x02,0x0A,0x49,0xFF,0xFE,0x4C,0x84,0x00,0x3E,0x07,
+0xFD,0x2D,0x84,0x00,0xEA,0x64,0xD5,0x10,0x84,0xC0,0xBE,0x99,0x80,0x26,0xEB,0x4E,
+0xEA,0x62,0xDD,0x4F,0xDD,0x42,0xB8,0x10,0x5A,0x08,0x02,0x05,0x49,0xFF,0xFF,0xB9,
+0xD5,0x03,0x3E,0x67,0xFD,0x22,0xFC,0x80,0x2E,0x07,0xFD,0x34,0xDD,0x9E,0xFC,0x60,
+0x3D,0x3C,0x00,0x49,0x2E,0x90,0x00,0x8A,0x2E,0x47,0xFF,0xA5,0x92,0x84,0x3C,0x2C,
+0x00,0x48,0x4E,0x42,0x00,0xF1,0x3F,0x18,0x02,0x5C,0x38,0x38,0x80,0x00,0x5A,0x38,
+0x01,0x13,0xEA,0xC6,0xFF,0x04,0x44,0x30,0xFF,0xFF,0x99,0xCC,0xA1,0xBE,0x4C,0x61,
+0xC0,0x0B,0xA1,0x7B,0xDE,0x08,0x38,0x30,0x90,0x02,0x4C,0x32,0xC0,0x05,0x84,0x60,
+0x38,0x38,0x80,0x08,0xEA,0xC6,0x42,0x30,0x10,0x24,0xEA,0x89,0x99,0xCB,0xB4,0xA7,
+0x8E,0x41,0x8F,0xE1,0xDC,0x54,0x50,0x41,0x80,0x0C,0x88,0x81,0xB5,0x84,0x4D,0x02,
+0x80,0x4F,0x51,0x21,0x80,0x18,0x89,0xC1,0xB4,0xD2,0x4C,0x62,0x80,0x49,0xA0,0xE1,
+0x40,0x18,0x04,0x08,0xE0,0x26,0x04,0x09,0x00,0x01,0x95,0xD9,0xE9,0x0B,0xE0,0xE0,
+0xE8,0x19,0x40,0x18,0x18,0x01,0xFE,0x5C,0x9A,0x83,0x40,0x10,0x88,0x36,0x88,0x30,
+0xD5,0x02,0x84,0x20,0xE0,0xE0,0xB6,0x24,0xE8,0x04,0x84,0x00,0xA8,0x21,0xF8,0x2D,
+0x9A,0x18,0x42,0x18,0x00,0x24,0x40,0x53,0x40,0x01,0x40,0x00,0x94,0x16,0x99,0x58,
+0xD5,0x23,0x99,0x72,0xE0,0xA1,0x41,0x10,0x4C,0x00,0xE9,0x0F,0xE1,0xA7,0x4E,0xF2,
+0x00,0x9B,0x40,0x58,0x18,0x01,0x40,0x11,0xCC,0x01,0xFE,0x6C,0x9B,0x43,0x40,0x10,
+0x94,0x36,0x88,0x30,0xB6,0x24,0xD5,0x02,0xB6,0x44,0xE1,0xA7,0xE8,0x04,0x15,0x32,
+0x00,0x01,0xF8,0x0B,0x40,0x58,0x08,0x01,0x9A,0x18,0xFE,0x2C,0x40,0x53,0x40,0x01,
+0x40,0x50,0x14,0xB6,0x88,0xA3,0xA9,0x61,0x48,0x00,0x00,0x7E,0x46,0x41,0x00,0x01,
+0x58,0x42,0x0D,0x80,0x40,0x42,0x00,0x20,0xA7,0x21,0x5A,0x40,0xFE,0x0D,0x2E,0x47,
+0xFD,0x67,0xCC,0x71,0xEA,0x89,0xD4,0x6F,0xA1,0xBB,0x4C,0x62,0x00,0x6D,0xA1,0xBE,
+0x4C,0x62,0x40,0x6A,0x8C,0x6C,0x38,0xB8,0x80,0x00,0x88,0x61,0xB5,0x83,0x05,0x21,
+0x80,0x01,0xA0,0x79,0x4E,0xB3,0x00,0x60,0x40,0x68,0x04,0x08,0x40,0x33,0x24,0x01,
+0xE0,0x65,0x40,0x39,0x04,0x08,0xE9,0x10,0x40,0x41,0xA4,0x01,0xE0,0x81,0xE8,0x1B,
+0x40,0x28,0x14,0x01,0x42,0x29,0x08,0x24,0x40,0x40,0xC8,0x01,0x40,0x21,0x10,0x56,
+0x88,0x50,0xA8,0xBE,0xD5,0x03,0x14,0xB3,0x80,0x06,0x8A,0x69,0xE0,0x61,0xE9,0x3C,
+0x40,0x39,0x04,0x01,0x42,0x38,0x0C,0x24,0x8A,0xB0,0x40,0x21,0x94,0x56,0x40,0x59,
+0x08,0x00,0xD5,0x30,0x99,0x2A,0x8A,0x89,0xE0,0x86,0x40,0xA0,0xCC,0x00,0xE9,0x06,
+0x40,0x45,0x24,0x01,0xE0,0x83,0xE9,0x04,0xD5,0x2E,0xA8,0xBE,0xD5,0x11,0x40,0x68,
+0x14,0x01,0x40,0x49,0x4C,0x01,0xFF,0x34,0x40,0x60,0xC8,0x01,0x40,0x42,0x18,0x96,
+0x88,0x90,0x4E,0x45,0x00,0x04,0xA9,0x3E,0xD5,0x03,0x14,0xB3,0x80,0x06,0x40,0x95,
+0x24,0x01,0xE1,0x23,0xE8,0x04,0x15,0x33,0x80,0x07,0xD5,0x12,0x40,0x38,0x08,0x01,
+0x40,0x29,0x04,0x01,0xFE,0x9C,0x8A,0xB0,0x40,0x51,0x14,0xB6,0x88,0xB2,0x4E,0x55,
+0x00,0x04,0xA9,0x7F,0xD5,0x05,0x50,0x13,0x80,0x18,0x84,0x40,0xA8,0x89,0x84,0x21,
+0x38,0x18,0x80,0x08,0xFC,0xE0,0x3E,0x18,0x02,0x5C,0x38,0x00,0x80,0x00,0xDD,0x9E,
+0xFC,0x20,0x3F,0xCF,0xFE,0x00,0x3E,0x68,0x01,0x40,0x84,0x1F,0x84,0xE0,0x12,0x03,
+0x00,0x44,0x12,0x03,0x00,0x45,0x84,0x20,0x50,0x03,0x00,0x60,0x84,0x4C,0x12,0x73,
+0x00,0x42,0x12,0x73,0x00,0x43,0xDD,0x42,0x80,0x06,0x44,0x10,0xFF,0xFF,0x44,0x20,
+0x00,0x60,0xDD,0x42,0x50,0x03,0x00,0x78,0x84,0x20,0x84,0x4C,0xDD,0x42,0x46,0x11,
+0x41,0x41,0x50,0x03,0x00,0x6C,0x50,0x10,0x84,0x14,0x84,0x4C,0xDD,0x42,0x46,0x01,
+0x00,0x07,0x58,0x00,0x02,0x66,0xA6,0x40,0xA6,0x81,0xEA,0x31,0xB9,0x81,0xA6,0x42,
+0xA6,0x83,0xEA,0x31,0xB9,0x8E,0xA6,0x45,0xA6,0x86,0xEA,0x31,0xB9,0x80,0xA6,0x47,
+0xEB,0x0E,0xEA,0x31,0xB9,0x94,0x00,0x10,0x00,0x0A,0x00,0x20,0x00,0x0B,0xEA,0x31,
+0xB9,0x96,0x00,0x10,0x00,0x0C,0x00,0x20,0x00,0x0D,0xEA,0x31,0xB9,0x97,0x00,0x10,
+0x00,0x0F,0x00,0x20,0x00,0x10,0xEA,0x31,0xB9,0x8C,0x00,0x10,0x00,0x11,0x00,0x00,
+0x00,0x12,0x40,0x00,0x05,0x04,0xB8,0x85,0x3C,0x7B,0xFE,0xDA,0x84,0x20,0x3E,0x08,
+0x02,0xA4,0xFA,0x48,0xDD,0x42,0xFC,0xA0,0xFC,0x20,0x46,0x71,0x00,0x07,0x58,0x73,
+0x83,0x48,0x82,0x00,0x46,0x51,0x00,0x01,0x58,0x52,0x8F,0xF4,0x84,0x00,0x47,0x11,
+0x00,0x01,0x59,0x18,0x8D,0x68,0x00,0x68,0x00,0x00,0x38,0x43,0x98,0x00,0x5A,0x40,
+0xFF,0x18,0x41,0x23,0x98,0x00,0x41,0x32,0x10,0x09,0x01,0x29,0x00,0x01,0x4C,0x29,
+0xC0,0x0C,0x97,0x1F,0xE2,0x64,0xE9,0x08,0x38,0x48,0x84,0x00,0x38,0x42,0x92,0x02,
+0xE2,0x92,0xE9,0x02,0x84,0x01,0x8C,0xC2,0x10,0x68,0x00,0x00,0xD5,0xE5,0xFC,0xA0,
+0x46,0x31,0x00,0x07,0x58,0x31,0x83,0x48,0xA6,0x80,0x38,0x41,0x88,0x00,0x8C,0x41,
+0x5A,0x48,0xFF,0x04,0xAE,0x80,0xDD,0x9E,0xC9,0xFE,0xAE,0x80,0xD5,0xF6,0x3C,0x3D,
+0xFF,0x87,0x84,0x28,0x3E,0x08,0x01,0xFC,0xEA,0x89,0xEB,0x0E,0xC2,0x08,0xCB,0x04,
+0x10,0x30,0x00,0x08,0xD5,0x04,0x8E,0x41,0x10,0x20,0x00,0x08,0xEB,0x0E,0xCA,0x03,
+0xB6,0x80,0xA9,0x01,0x8E,0x21,0x96,0x48,0x8C,0x0C,0xC9,0xF0,0xDD,0x9E,0xFC,0x01,
+0x84,0x6C,0xEA,0x38,0x80,0x5F,0x84,0x00,0x3E,0x48,0x01,0xFC,0x80,0x24,0x42,0x10,
+0x0C,0x73,0x00,0x50,0x80,0x08,0xCD,0x0A,0x46,0x01,0x00,0x07,0x3B,0x01,0x44,0x00,
+0x00,0x00,0x02,0x7A,0xEA,0xEA,0xEA,0xFB,0xD5,0x04,0x8C,0x01,0x5A,0x08,0x08,0xF0,
+0xFC,0x81,0xFC,0x21,0xEA,0x38,0x80,0x80,0x46,0x01,0x00,0x07,0x00,0x60,0x02,0x7D,
+0x46,0x01,0x00,0x07,0x00,0x70,0x02,0x7E,0x46,0x01,0x00,0x07,0x80,0xA1,0x01,0x00,
+0x02,0x7A,0x3E,0x18,0x01,0xFC,0x84,0x68,0x84,0x00,0x00,0x20,0x80,0x08,0xC2,0x14,
+0xB4,0x41,0xE2,0x82,0xE8,0x03,0x8A,0x44,0xD5,0x02,0x9A,0xA2,0xE2,0x46,0xE8,0x0C,
+0xA0,0x89,0xE2,0xA2,0xE8,0x03,0x8A,0x45,0xD5,0x02,0x9A,0xAA,0xE2,0x47,0xE8,0x04,
+0x11,0x00,0x80,0x08,0x84,0x01,0x8E,0x61,0x96,0xD8,0x8C,0x2C,0xCB,0xE7,0xFC,0xA1,
+0xFC,0x01,0xEA,0x38,0x80,0xC0,0x80,0x01,0x2E,0x17,0xFD,0x6D,0xC1,0x04,0x84,0x21,
+0x84,0xA2,0xD5,0x03,0x84,0x22,0x84,0xA1,0x3E,0x48,0x01,0x40,0x38,0x32,0x0B,0x02,
+0xE2,0x66,0xE8,0x03,0x9A,0xF3,0xD5,0x02,0x8A,0x66,0x46,0x61,0x00,0x07,0x00,0x63,
+0x02,0x7F,0xFF,0x74,0xE2,0xA3,0xE9,0x0D,0x40,0x32,0x08,0x60,0xA0,0x99,0xE2,0x40,
+0xE8,0x03,0x9A,0x82,0xD5,0x02,0x8A,0x40,0xFE,0x74,0x40,0x00,0x88,0x06,0xD5,0x02,
+0x84,0x01,0xFC,0x81,0xFC,0x20,0x84,0x00,0x3C,0x0B,0xFE,0xD4,0x3C,0x0B,0xFE,0xE0,
+0x3C,0x0B,0xFE,0xDE,0x46,0x11,0x00,0x07,0x04,0x70,0x83,0xCF,0x46,0x11,0x00,0x07,
+0x00,0x60,0x82,0x6A,0x46,0x11,0x00,0x07,0x00,0x50,0x82,0x6F,0x46,0x11,0x00,0x07,
+0x00,0x40,0x82,0x74,0x46,0x11,0x00,0x07,0x00,0x30,0x82,0x79,0x46,0x11,0x00,0x07,
+0x00,0x20,0x82,0x88,0x46,0x1A,0x11,0xAA,0x50,0x10,0x81,0x1A,0x4C,0x70,0x80,0x0C,
+0x46,0x11,0x00,0x07,0x04,0x70,0x83,0xCF,0x46,0x1A,0x33,0xAA,0x50,0x10,0x83,0x3A,
+0x4C,0x70,0xC0,0x26,0x84,0x00,0x3E,0x07,0xFD,0x6D,0x44,0x00,0x00,0x96,0x3C,0x0B,
+0xFE,0xDD,0x44,0x00,0x00,0x32,0x3C,0x0B,0xFE,0xDF,0x3C,0x6B,0xFE,0xD8,0x3C,0x5B,
+0xFE,0xDC,0x3C,0x4B,0xFE,0xD3,0x3C,0x3B,0xFE,0xDB,0x46,0x01,0x00,0x07,0x00,0x00,
+0x02,0x82,0x3C,0x0B,0xFE,0xD5,0x46,0x01,0x00,0x07,0x00,0x00,0x02,0x83,0x94,0x01,
+0x3C,0x0B,0xFE,0xD7,0x3C,0x2B,0xFE,0xD9,0x84,0x00,0xD5,0x21,0x84,0x21,0x3E,0x17,
+0xFD,0x6D,0x44,0x10,0x00,0x32,0x3C,0x1B,0xFE,0xDD,0x3C,0x1B,0xFE,0xDF,0x3C,0x6B,
+0xFE,0xD8,0x3C,0x5B,0xFE,0xDC,0x3C,0x4B,0xFE,0xD3,0x3C,0x3B,0xFE,0xDB,0x46,0x11,
+0x00,0x07,0x00,0x10,0x82,0x84,0x3C,0x1B,0xFE,0xD5,0x46,0x11,0x00,0x07,0x00,0x10,
+0x82,0x85,0x94,0x49,0x3C,0x1B,0xFE,0xD7,0x3C,0x2B,0xFE,0xD9,0x3C,0x0B,0xFE,0xD6,
+0xFC,0xA0,0xFC,0x01,0x3F,0xC8,0x01,0x20,0x46,0x21,0x00,0x07,0x04,0x51,0x03,0xCF,
+0x46,0x3A,0x11,0xAA,0xEA,0x38,0x50,0x31,0x81,0x1A,0x80,0x20,0x3C,0x23,0xFE,0xD7,
+0xF0,0x01,0xDB,0x03,0xE2,0x02,0xD5,0x0D,0x46,0x31,0x00,0x07,0x04,0x51,0x83,0xCF,
+0x46,0x3A,0x33,0xAA,0x50,0x31,0x83,0x3A,0xDB,0x0A,0xBB,0x01,0x9A,0x9A,0xE2,0x40,
+0xE8,0x15,0x3C,0x03,0xFE,0xD5,0xE2,0x20,0xE8,0x0A,0xD5,0x0E,0xE2,0x02,0xE9,0x05,
+0xBB,0x01,0x9A,0x9A,0xE2,0x40,0xE8,0x0A,0x3C,0x03,0xFE,0xD5,0xBA,0x00,0x9A,0x10,
+0x40,0x00,0x04,0x06,0xD5,0x04,0x84,0x01,0xD5,0x02,0x84,0x00,0xFC,0x81,0xFC,0x21,
+0x80,0xE0,0x3A,0x1F,0x88,0x20,0x3A,0x0F,0x84,0x00,0x80,0x47,0x80,0xDF,0x49,0xFF,
+0xFF,0xC2,0x5A,0x08,0x01,0x0A,0x3C,0x13,0xFE,0xDA,0x40,0x20,0x1C,0x0C,0xFE,0x57,
+0x3C,0x1B,0xFE,0xDA,0xD5,0x02,0x84,0x00,0xB4,0x5F,0x3E,0x18,0x02,0x8C,0x38,0x20,
+0x9D,0x09,0xA0,0xB1,0x3E,0x18,0x02,0xBC,0x38,0x20,0x9D,0x09,0xFC,0xA1,0xEB,0x78,
+0xEA,0x71,0x38,0x00,0x80,0x00,0x3E,0x18,0x01,0xCC,0x40,0x10,0x80,0x40,0xA6,0x0A,
+0xA6,0x4B,0x8A,0x01,0x96,0x01,0xDD,0x9E,0xEB,0x78,0xEA,0x71,0x38,0x20,0x80,0x00,
+0x3E,0x18,0x01,0xCC,0x40,0x00,0x88,0x40,0xA6,0x01,0x38,0x10,0x8A,0x00,0x8A,0x01,
+0x96,0x01,0xDD,0x9E,0xEB,0x78,0xEA,0x71,0x38,0x30,0x80,0x00,0x46,0x01,0x00,0x01,
+0x58,0x00,0x0F,0xDC,0x40,0x10,0x0C,0x20,0xA6,0x49,0x80,0x80,0xE6,0x22,0xE8,0x18,
+0x38,0x00,0x0D,0x00,0xE6,0x02,0xE8,0x14,0xEB,0x54,0x22,0xF0,0x05,0x4C,0xF8,0x08,
+0xEB,0x54,0x22,0xF0,0x05,0x70,0xF8,0x04,0xEB,0x54,0x22,0xF0,0x05,0x4D,0xDD,0x5F,
+0x4E,0xF3,0x00,0x79,0x83,0xFF,0xEB,0x54,0x22,0xF0,0x05,0x71,0xD5,0x3D,0xEA,0x3C,
+0x9E,0x82,0xE0,0x22,0x4E,0xF3,0x00,0x6D,0x38,0x52,0x0D,0x00,0xE6,0xA2,0xE8,0x15,
+0x46,0x11,0x00,0x02,0xEB,0x17,0x40,0x20,0x80,0x20,0x22,0xF1,0x0C,0xA9,0xDD,0x5F,
+0xE9,0x61,0x22,0xF1,0x0C,0xCD,0xDD,0x5F,0xE9,0x5D,0x22,0xF1,0x0C,0xA8,0xDD,0x5F,
+0xE9,0x59,0x22,0xF1,0x0C,0xCC,0xD5,0x20,0xE6,0x22,0xE8,0x20,0xEA,0xB0,0x38,0x12,
+0x0D,0x00,0x9F,0x42,0xE0,0x25,0xE9,0x4E,0x9E,0x41,0xEB,0x64,0x58,0x00,0x01,0x44,
+0x44,0x20,0x00,0x48,0x80,0x60,0x42,0x30,0x88,0x73,0x22,0xF1,0x8C,0xAA,0xDD,0x5F,
+0xE9,0x41,0x42,0x02,0x88,0x73,0xF8,0x23,0xE9,0x3D,0x22,0xF1,0x8C,0xAB,0xDD,0x5F,
+0xE9,0x39,0x22,0xF0,0x0C,0xAB,0xF8,0x2C,0xDD,0x9E,0xFC,0x00,0x2E,0x10,0x01,0x29,
+0x9F,0x8A,0xE0,0xA6,0xE9,0x2B,0x8E,0x21,0xFA,0x74,0xFE,0x5C,0x8E,0x01,0x46,0x41,
+0x00,0x02,0x58,0x42,0x01,0x44,0x99,0x48,0x40,0x52,0x14,0x20,0x22,0xF2,0x8C,0xAA,
+0xDD,0x5F,0xE9,0x1C,0xFE,0xF4,0x88,0x03,0x40,0x02,0x00,0x20,0x22,0xF0,0x0C,0xAA,
+0xDD,0x5F,0x83,0xFF,0xE9,0x13,0x88,0x22,0x40,0x12,0x04,0x20,0x22,0xF0,0x8C,0xAA,
+0xDD,0x5F,0xE9,0x0C,0x88,0x43,0x40,0x22,0x08,0x20,0x22,0xF1,0x0C,0xAA,0x44,0x00,
+0x00,0x96,0x40,0x00,0x3C,0x07,0x83,0xFF,0xD5,0x07,0x84,0x00,0xD5,0x05,0xE6,0x22,
+0xE9,0xAE,0x84,0x00,0xDD,0x9E,0xFC,0x80,0xFC,0x62,0x3F,0xC8,0x01,0x20,0xEA,0x38,
+0x81,0x20,0x80,0x02,0x80,0xE2,0x81,0x41,0x49,0xFF,0xFF,0x43,0x54,0xB0,0x00,0xFF,
+0x80,0xC0,0x80,0x07,0x49,0xFF,0xFF,0x4A,0x54,0xC0,0x00,0xFF,0x80,0x80,0x46,0xE1,
+0x00,0x01,0x58,0xE7,0x0D,0x68,0x84,0x00,0x10,0x0F,0x80,0x0F,0xEA,0xCA,0x46,0xD1,
+0x00,0x01,0x58,0xD6,0x8F,0xF4,0xEB,0x37,0x42,0xF6,0x2C,0x24,0xE2,0x0F,0xE8,0x07,
+0x97,0xB0,0x97,0x20,0xFF,0x34,0x9B,0xA0,0x97,0xB1,0xD5,0x03,0x44,0x60,0x00,0xFF,
+0x46,0x01,0x00,0x07,0x00,0x10,0x02,0x7C,0xE3,0x41,0xE9,0x06,0xB8,0x01,0x85,0x00,
+0x8A,0x01,0xE2,0x0A,0xE8,0x09,0xEA,0x39,0x80,0x27,0x80,0x4B,0x80,0x6C,0xEA,0x86,
+0x85,0x00,0x40,0x84,0x00,0x06,0xEA,0x39,0x80,0x28,0xEA,0xBF,0x46,0x01,0x00,0x07,
+0x00,0x00,0x02,0x7C,0xE3,0x40,0xE9,0x05,0xB9,0x01,0x8A,0x20,0xE2,0x2A,0xE8,0x19,
+0xE3,0x20,0xE9,0x05,0xB9,0x00,0x9A,0x08,0xE2,0x09,0xE8,0x13,0xEA,0xCA,0xEB,0x37,
+0xE2,0x06,0xE8,0x0F,0x9A,0x30,0xE6,0x03,0xE9,0x0C,0x80,0x07,0x49,0xFF,0xFF,0x0C,
+0xC0,0x08,0xEA,0x39,0x80,0x27,0x80,0x4B,0x80,0x6C,0xEA,0x86,0xC0,0x02,0x85,0x01,
+0xEA,0x39,0x80,0x28,0xEA,0xBF,0x2E,0x07,0xFD,0x6D,0xC8,0x33,0x46,0x01,0x00,0x07,
+0x00,0x10,0x02,0x7C,0xE3,0x21,0xE9,0x05,0xB8,0x00,0x8A,0x01,0xE2,0x09,0xE8,0x08,
+0xEA,0x39,0x80,0x27,0x80,0x4C,0x80,0x6B,0xEA,0x86,0xC0,0x02,0x85,0x01,0xEA,0x39,
+0x80,0x28,0xEA,0xBF,0x46,0x01,0x00,0x07,0x00,0x00,0x02,0x7C,0xE3,0x40,0xE9,0x05,
+0xB9,0x01,0x8A,0x20,0xE2,0x2A,0xE8,0x15,0xE3,0x20,0xE9,0x05,0xB9,0x00,0x9A,0x08,
+0xE2,0x09,0xE8,0x0F,0xEA,0xCA,0xEB,0x37,0xE2,0x06,0xE8,0x0B,0x8A,0xC0,0xE6,0xC4,
+0xE9,0x08,0xEA,0x39,0x80,0x27,0x80,0x4C,0x80,0x6B,0xEA,0x86,0xC0,0x02,0x85,0x01,
+0x80,0x08,0xFC,0xE2,0x40,0x00,0x04,0x0E,0x96,0x04,0xDD,0x9E,0x84,0x41,0x40,0x11,
+0x04,0x0C,0xA4,0x80,0xFE,0x57,0xAC,0x40,0xDD,0x9E,0x44,0x2E,0xFF,0xFF,0x40,0x11,
+0x04,0x0C,0xA4,0x80,0x40,0x11,0x06,0x1E,0xAC,0x40,0xDD,0x9E,0xFC,0x20,0x3E,0x78,
+0x01,0x40,0x80,0xC0,0x84,0x20,0x98,0x38,0x10,0x10,0x00,0x6C,0x50,0x03,0x80,0x84,
+0x80,0x26,0xF8,0x7E,0x50,0x03,0x80,0x86,0x80,0x26,0xF8,0x7A,0x50,0x03,0x80,0x8A,
+0x80,0x26,0xF8,0x76,0x50,0x03,0x80,0x88,0x80,0x26,0xF8,0x72,0xFC,0xA0,0xFC,0x41,
+0xEA,0x38,0x84,0x01,0x3C,0x10,0x00,0xE3,0x40,0x00,0x08,0x0C,0x96,0x03,0x80,0xC2,
+0xFE,0x47,0x3C,0x18,0x00,0xE3,0x3C,0x10,0x00,0xE2,0x3E,0x98,0x01,0x40,0xFE,0x0F,
+0x3C,0x08,0x00,0xE2,0x40,0x04,0x98,0x00,0x84,0x3F,0xEA,0x2F,0x50,0x04,0x80,0x8A,
+0x80,0x26,0x80,0xE3,0xF8,0x55,0x50,0x04,0x80,0x88,0x80,0x26,0xF8,0x51,0xC7,0x07,
+0x40,0x64,0x98,0x60,0x3B,0x0F,0xC4,0x00,0x3B,0x03,0x44,0x20,0xFC,0xC1,0xFC,0x62,
+0xB6,0x1F,0x50,0x9F,0x80,0x08,0x3A,0x14,0x88,0x20,0xEA,0xDB,0x3C,0x83,0xFE,0xDA,
+0x46,0x01,0x00,0x07,0x00,0xA0,0x02,0x7C,0xEB,0x3D,0x84,0xC0,0x40,0xC0,0x28,0x01,
+0xEA,0xB8,0x50,0xB1,0x80,0x0C,0x40,0xD0,0x28,0x01,0x80,0xE6,0x4C,0x71,0x00,0x1D,
+0x80,0x08,0x80,0x27,0xF2,0x81,0xF8,0x21,0x04,0xE5,0x80,0x00,0x05,0xC5,0x80,0x01,
+0xF2,0x01,0xC8,0x0D,0xE3,0x4E,0xE8,0x0B,0x40,0xF7,0x30,0x06,0xE8,0x08,0xE3,0x5C,
+0xE8,0x06,0x40,0xFE,0x34,0x06,0xE8,0x03,0x8C,0xC1,0x97,0xB0,0x8C,0xE1,0x97,0xF8,
+0x50,0xB5,0x80,0x30,0xD5,0xE4,0xC6,0x07,0x80,0x08,0xB4,0x3F,0xF8,0x06,0x84,0xC0,
+0x40,0x63,0x00,0x06,0x80,0x08,0xB4,0x3F,0xDD,0x56,0xC0,0x0B,0x3A,0x04,0x84,0x00,
+0xB4,0x5F,0x49,0xFF,0xFD,0x1F,0xC0,0x05,0x3E,0x0F,0xFD,0xB4,0xB4,0x3F,0xEA,0x4E,
+0x80,0x06,0xFC,0xE2,0xFC,0x63,0x3F,0xCF,0xFE,0x00,0xEB,0x45,0x42,0x10,0x98,0x0B,
+0x4E,0x12,0x02,0x43,0x46,0x11,0x00,0x07,0x00,0x10,0x82,0x87,0x5A,0x18,0xFF,0x07,
+0x46,0x11,0x00,0x07,0x00,0x10,0x82,0x81,0xD5,0x02,0x96,0x49,0xF1,0x82,0x81,0x80,
+0x84,0xC0,0x49,0xFF,0xFC,0x9E,0x44,0xD0,0xFF,0xFF,0x49,0xFF,0xFD,0x25,0x3E,0x78,
+0x01,0x40,0x50,0xAF,0x80,0x10,0x46,0xE1,0x00,0x01,0x58,0xE7,0x0D,0x08,0xEA,0x2C,
+0xE2,0xC0,0x4E,0xF2,0x01,0xD1,0x81,0x6C,0xDD,0x47,0x42,0xB3,0x00,0x73,0x8D,0x6C,
+0xB5,0x2B,0x4C,0x96,0xC0,0x60,0x54,0x93,0x00,0xFF,0xEB,0x28,0x80,0x29,0xDD,0x56,
+0xC0,0x1F,0xEA,0xA9,0x80,0x29,0xDD,0x56,0xC8,0x1B,0x98,0x3E,0x00,0x10,0x00,0x60,
+0xF2,0x02,0xE2,0x22,0xE8,0x2A,0xE6,0x24,0xE9,0x28,0x46,0x11,0x00,0x07,0x00,0x10,
+0x82,0x86,0x10,0x10,0x00,0x78,0x94,0x33,0x98,0x78,0xEA,0x6B,0x3B,0x05,0xC4,0x20,
+0xEA,0x2A,0x14,0x15,0x80,0x02,0x88,0x0E,0x3B,0x05,0xC4,0x00,0xD5,0x11,0x98,0x7E,
+0x00,0x00,0x80,0x78,0xC0,0x12,0x8E,0x01,0x10,0x00,0x80,0x78,0x94,0x33,0x98,0x78,
+0xEA,0x6B,0xEA,0x2A,0x3B,0x05,0xC4,0x20,0x14,0x15,0x80,0x02,0x88,0x0E,0x3B,0x00,
+0x44,0x20,0xB8,0x11,0x8C,0x01,0xB8,0x91,0x98,0x3E,0x00,0x00,0x00,0x78,0xC8,0x06,
+0xEB,0x44,0x38,0xD3,0x9B,0x0A,0x14,0xD0,0x00,0x01,0x98,0x3E,0x84,0x20,0xEA,0x2F,
+0xFA,0x24,0x10,0x10,0x00,0x6C,0x80,0x29,0x3E,0x08,0x01,0xC8,0xEA,0xF2,0x80,0x29,
+0x3E,0x08,0x01,0xCA,0xEA,0xF2,0x80,0x29,0x3E,0x08,0x01,0xC4,0xEA,0x4E,0x80,0x29,
+0x3E,0x08,0x01,0xC6,0xEA,0x4E,0x3E,0x0F,0xFD,0xB4,0x80,0x29,0xEA,0x4E,0x48,0x00,
+0x01,0x67,0x96,0x30,0x3B,0x05,0xC4,0x00,0xF0,0x81,0x3C,0x00,0x00,0xE4,0xF1,0x01,
+0x3B,0x05,0x44,0x20,0x81,0x11,0xDD,0x56,0xC0,0x1A,0x14,0x9F,0x80,0x04,0x14,0x8F,
+0x80,0x05,0xEA,0x2E,0x49,0xFF,0xFC,0x47,0xC0,0x06,0xEA,0x2E,0xF2,0x01,0x84,0x61,
+0xEA,0xF7,0xD5,0x0D,0xEA,0x2E,0xF2,0x01,0x49,0xFF,0xFE,0x18,0xC0,0x08,0xEA,0x2E,
+0xF2,0x01,0x84,0x61,0xEA,0xF7,0xEA,0x2E,0x49,0xFF,0xFC,0x1B,0x2E,0x17,0xFD,0x6D,
+0x46,0x01,0x00,0x07,0x00,0x00,0x02,0x7C,0xC9,0x07,0xE2,0x09,0xE8,0x10,0xEA,0xDE,
+0x9A,0x08,0xE3,0x20,0xD5,0x07,0xE2,0x08,0xE8,0x0A,0x3C,0x1C,0x00,0x49,0x9A,0x08,
+0xE3,0x00,0xE8,0x05,0x3E,0x08,0x01,0xC8,0xF1,0x01,0xEA,0x4E,0x14,0x9F,0x80,0x04,
+0x14,0x8F,0x80,0x05,0xEA,0x2E,0x49,0xFF,0xFC,0x16,0xEA,0xA9,0xF1,0x01,0xDD,0x56,
+0xC0,0x09,0xEA,0x2E,0xF2,0x01,0x49,0xFF,0xFC,0x3D,0xC0,0x04,0xF0,0x01,0x49,0xFF,
+0xFE,0x97,0x3C,0x00,0x00,0xE5,0xF1,0x01,0xDD,0x56,0xC0,0x44,0x3A,0x15,0x08,0x00,
+0xF0,0x01,0x49,0xFF,0xFD,0x06,0xB9,0x01,0xE2,0x29,0xE8,0x08,0xB9,0x0E,0xE3,0x21,
+0xE8,0x05,0x3C,0x13,0xFE,0xD8,0xE3,0x01,0xE9,0x26,0xB9,0x00,0xE2,0x29,0xE8,0x0B,
+0xB9,0x14,0xE3,0x21,0xE8,0x08,0x3C,0x23,0xFE,0xDC,0x3C,0x1C,0x00,0x49,0x8A,0x22,
+0xE2,0x28,0xE9,0x19,0xB9,0x16,0xE2,0x28,0xE8,0x08,0xB9,0x17,0xE3,0x01,0xE8,0x05,
+0x3C,0x13,0xFE,0xD3,0xE3,0x21,0xE9,0x0F,0xB9,0x0C,0xE2,0x28,0xE8,0x0A,0xB9,0x05,
+0xE3,0x01,0xE8,0x07,0x3C,0x23,0xFE,0xDB,0xEA,0xDE,0x8A,0x22,0xE2,0x29,0xE9,0x03,
+0x96,0x04,0xC0,0x0C,0xEB,0x44,0xB7,0x20,0x14,0x80,0x00,0x01,0xF1,0x01,0x3E,0x08,
+0x01,0xC4,0xEA,0xF2,0x98,0x3E,0x84,0x20,0xEA,0x2F,0x3E,0x08,0x01,0xCA,0xF1,0x01,
+0xEA,0x4E,0xEB,0x28,0xF1,0x01,0xDD,0x56,0xC0,0x33,0xEA,0xA9,0xF1,0x01,0xDD,0x56,
+0xC8,0x2F,0x98,0x7E,0x00,0x00,0x80,0x60,0x5A,0x00,0xFF,0x05,0x8C,0x01,0x10,0x00,
+0x80,0x60,0x38,0x03,0x9B,0x02,0xE2,0x09,0xE8,0x04,0x40,0x04,0x80,0x01,0xD5,0x02,
+0x8A,0x09,0x46,0x11,0x00,0x07,0x00,0x10,0x82,0x80,0xE2,0x20,0xE9,0x16,0xEB,0x44,
+0xA0,0x01,0xE2,0x08,0xE8,0x04,0x40,0x04,0x00,0x01,0xD5,0x02,0x8A,0x08,0xE2,0x20,
+0xE9,0x0C,0x46,0x01,0x00,0x07,0x00,0x00,0x02,0x87,0x5A,0x00,0xFF,0x0A,0x98,0x7E,
+0x00,0x10,0x80,0x60,0xE2,0x01,0xE8,0x04,0xF0,0x01,0x49,0xFF,0xFE,0x19,0xF0,0x01,
+0x3A,0x15,0x08,0x00,0x80,0x6C,0x49,0xFF,0xFE,0x54,0x5A,0x08,0x01,0x06,0xEA,0x2E,
+0xF2,0x01,0x84,0x60,0xEA,0xF7,0xEB,0x28,0xF1,0x01,0xDD,0x56,0x80,0x80,0xC0,0x1A,
+0xF0,0x83,0xEA,0xA9,0xF1,0x01,0xDD,0x56,0xF4,0x03,0xC8,0x14,0x3C,0x13,0xFE,0xD9,
+0xE3,0x01,0xE9,0x0D,0xEA,0xB8,0x8A,0x01,0xE2,0x08,0xE9,0x09,0x3C,0x13,0xFE,0xD6,
+0xE3,0x21,0xE9,0x05,0xEB,0x3D,0x8A,0x01,0xE2,0x09,0xE8,0x04,0x98,0x3E,0x84,0x20,
+0xEA,0x2F,0x98,0x3E,0x00,0x20,0x00,0x6C,0xE6,0x54,0xE8,0x61,0x8C,0x41,0x96,0x90,
+0x46,0x11,0x00,0x07,0x10,0x20,0x00,0x6C,0x00,0x10,0x82,0x87,0x00,0x00,0x00,0x60,
+0x94,0xF3,0xE2,0x01,0xE8,0x3D,0x5A,0x10,0xFF,0x3C,0x38,0x53,0x9B,0x01,0x3D,0x1C,
+0x00,0x48,0x98,0x3B,0x40,0x28,0x94,0x01,0xA4,0x02,0x3D,0x0C,0x00,0x49,0x96,0x91,
+0x40,0x18,0x00,0x01,0xE2,0xA2,0x96,0x49,0xE8,0x08,0xE2,0xA0,0xE8,0x06,0xE2,0xA1,
+0xE8,0x04,0x86,0x40,0x39,0x23,0x9B,0x0A,0xE2,0x45,0xE8,0x08,0xE2,0x40,0xE8,0x06,
+0xE2,0x41,0xE8,0x04,0x8F,0xA1,0x39,0x13,0x9B,0x0A,0xE2,0x05,0xE8,0x0A,0xE2,0x02,
+0xE8,0x08,0xE2,0x01,0xE8,0x06,0x41,0x13,0x8C,0x00,0x86,0x40,0x15,0x28,0x80,0x01,
+0xE2,0x25,0xE8,0x09,0xE2,0x22,0xE8,0x07,0xE2,0x20,0xE8,0x05,0x98,0x3B,0x8F,0x81,
+0x15,0x00,0x00,0x01,0x88,0x67,0xB5,0x23,0x04,0x81,0x80,0x01,0xD5,0x12,0x38,0x03,
+0x9B,0x02,0xFA,0xA4,0x40,0x14,0x80,0x01,0xFE,0x54,0x88,0x67,0x40,0x90,0x95,0x36,
+0x89,0x20,0xA0,0x19,0x40,0x14,0x00,0x01,0xFE,0x54,0x40,0x80,0x95,0x16,0x89,0x00,
+0x98,0x3E,0x84,0x3F,0xB7,0x2B,0x14,0x85,0x80,0x01,0xEA,0x2F,0xC4,0x08,0x84,0x00,
+0x14,0xD5,0x80,0x00,0x14,0xD5,0x80,0x01,0x14,0x05,0x80,0x02,0x8C,0xC1,0x97,0xB1,
+0x48,0xFF,0xFE,0x2F,0x84,0x00,0x49,0xFF,0xFC,0x14,0x46,0x11,0x00,0x07,0x12,0x00,
+0x81,0xDF,0x84,0x00,0x49,0xFF,0xFC,0x1A,0x46,0x11,0x00,0x07,0x12,0x00,0x81,0xE0,
+0x46,0x01,0x00,0x01,0x00,0x10,0x0D,0x68,0x46,0x01,0x00,0x01,0x58,0x00,0x0F,0xF4,
+0x38,0x00,0x06,0x01,0x46,0x11,0x00,0x07,0x12,0x00,0x81,0xE1,0x3C,0x40,0x00,0xE2,
+0x46,0x11,0x00,0x07,0x3C,0x30,0x00,0xE3,0x84,0x00,0x12,0x00,0x81,0xE2,0x46,0x11,
+0x00,0x07,0x12,0x00,0x81,0xE3,0x84,0xAA,0x84,0x25,0x84,0x01,0x46,0x21,0x00,0x07,
+0x02,0x21,0x01,0xE2,0x97,0xA4,0x42,0x20,0x18,0x73,0x46,0x61,0x00,0x07,0x96,0x91,
+0x12,0x23,0x01,0xE2,0x46,0x21,0x00,0x07,0x97,0x9C,0x02,0x21,0x01,0xE3,0x42,0x20,
+0x18,0x73,0x8E,0x21,0xFE,0x2C,0x96,0x91,0x46,0x61,0x00,0x07,0x96,0x49,0x12,0x23,
+0x01,0xE3,0x92,0x81,0x92,0x61,0x96,0x01,0xC9,0xE2,0x2E,0x00,0x01,0xA0,0x46,0x11,
+0x00,0x07,0x12,0x00,0x81,0xE4,0xFC,0xE3,0x3E,0x18,0x01,0x40,0x88,0x01,0x00,0x00,
+0x00,0x78,0xDD,0x9E,0xFC,0x60,0x47,0x01,0x00,0x07,0x59,0x08,0x02,0x4E,0x47,0x21,
+0x00,0x07,0x59,0x29,0x02,0x1E,0x2E,0x90,0x01,0x2B,0x8C,0x04,0x84,0x80,0xEA,0xB5,
+0x46,0x71,0x00,0x01,0x58,0x73,0x8E,0x38,0x81,0x50,0x47,0x11,0x00,0x07,0x59,0x18,
+0x82,0x36,0x81,0x72,0x47,0x31,0x00,0x07,0x59,0x39,0x82,0x06,0x96,0x60,0xE2,0x29,
+0xE8,0x4B,0x04,0x50,0x7F,0xFF,0xD6,0x45,0xB4,0x20,0x4C,0x13,0x00,0x43,0x40,0x23,
+0x90,0x60,0x38,0x53,0x93,0x0A,0xA8,0x51,0xEB,0x45,0xEB,0x34,0xC1,0x1B,0x84,0x41,
+0x38,0x89,0x09,0x01,0xE3,0x05,0xE8,0x04,0x8C,0x41,0x96,0x90,0xD5,0xFA,0x9E,0x51,
+0x96,0x48,0x38,0x39,0x85,0x01,0x38,0xF5,0x85,0x01,0x38,0x19,0x89,0x01,0x8A,0xAF,
+0x8A,0x23,0xFE,0x6C,0x40,0x54,0x3C,0x01,0x40,0x50,0x94,0xB7,0x88,0xA3,0x14,0x50,
+0x7F,0xFF,0xEB,0x45,0xEA,0x8B,0xC1,0x1D,0xB4,0x40,0x84,0x61,0x38,0x18,0x0D,0x01,
+0xE2,0x22,0xE8,0x04,0x8C,0x61,0x96,0xD8,0xD5,0xFA,0x9F,0x59,0x54,0xC2,0x80,0xFF,
+0x38,0xF5,0x31,0x01,0x38,0x58,0xB1,0x01,0x40,0x81,0x3C,0x01,0x38,0x28,0x8D,0x01,
+0x8A,0x2F,0x8A,0x45,0x42,0x24,0x08,0x24,0x40,0x11,0x04,0x37,0x88,0x25,0xB6,0x20,
+0x8C,0x81,0x8C,0x0C,0xD5,0xB4,0xFC,0xE0,0x3C,0x1D,0xFF,0x82,0x5A,0x18,0x02,0x07,
+0x2E,0x37,0xFD,0x54,0x2E,0x47,0xFD,0x6A,0xD5,0x05,0x2E,0x37,0xFD,0x5A,0x2E,0x47,
+0xFD,0x1D,0x2E,0x27,0xFD,0x4B,0xC8,0x12,0x5A,0x28,0x01,0x22,0x2E,0x17,0xFE,0x7C,
+0x8C,0x21,0x96,0x48,0xE2,0x24,0x3E,0x17,0xFE,0x7C,0xE9,0x19,0x3E,0x07,0xFD,0x4B,
+0x3E,0x07,0xFE,0x7C,0x3E,0x07,0xFE,0x7B,0xD5,0x12,0x5A,0x08,0x01,0x11,0xCA,0x0F,
+0x2E,0x17,0xFE,0x7B,0x8C,0x21,0x96,0x48,0xE2,0x23,0x3E,0x17,0xFE,0x7B,0xE9,0x07,
+0x3E,0x07,0xFD,0x4B,0x3E,0x27,0xFE,0x7C,0x3E,0x27,0xFE,0x7B,0x2E,0x57,0xFD,0x4B,
+0xD8,0x06,0x84,0x00,0x3E,0x07,0xFE,0x7C,0x3E,0x07,0xFE,0x7B,0xDD,0x9E,0xFC,0x69,
+0x3F,0xCF,0xFE,0x1C,0x2E,0x77,0xFD,0x4B,0xB8,0x00,0x8E,0xE1,0xE6,0x02,0x5C,0x73,
+0x80,0x01,0x84,0xC0,0xE9,0x04,0x9F,0x81,0xFF,0x84,0x92,0xC1,0x50,0x8F,0x80,0x3C,
+0x80,0x08,0x84,0x20,0x84,0x4C,0xDD,0x42,0x46,0xD1,0x00,0x02,0x58,0xD6,0x80,0xB4,
+0x85,0x60,0x46,0x51,0x00,0x01,0x58,0x52,0x8F,0xDC,0x46,0xA1,0x00,0x02,0x58,0xA5,
+0x00,0x24,0x81,0x2D,0x80,0x6B,0x81,0x85,0x85,0xDF,0x47,0x31,0x00,0x01,0x59,0x39,
+0x8F,0xF4,0xB8,0x00,0xE2,0x60,0xE8,0x68,0x38,0x14,0x0C,0x00,0x51,0x01,0x80,0x01,
+0xC9,0x3C,0x3D,0x13,0xFE,0xD1,0x41,0x21,0x84,0x08,0x80,0x90,0x41,0x48,0x84,0x08,
+0x41,0x59,0x14,0x00,0x4C,0x40,0x00,0x32,0x41,0x72,0x04,0x08,0x40,0x26,0x5C,0x00,
+0x00,0x1A,0x80,0x01,0xA6,0x91,0x8A,0x22,0xEB,0x14,0x96,0x48,0xE6,0x2C,0xE8,0x05,
+0xFE,0x4C,0x55,0x60,0x80,0xFF,0xD5,0x03,0x45,0x60,0x00,0x79,0x38,0x26,0x48,0x00,
+0x38,0x16,0x5C,0x00,0x9A,0x51,0xEB,0x14,0x96,0x48,0xE6,0x2C,0xE8,0x04,0xFE,0x4C,
+0x96,0x48,0xD5,0x03,0x44,0x10,0x00,0x79,0x88,0x36,0x96,0x48,0xE3,0xA1,0xE9,0x07,
+0x38,0xE4,0x0C,0x08,0x84,0xE1,0x38,0xE4,0x10,0x08,0xD5,0x05,0x40,0xFA,0x04,0x07,
+0xE8,0x02,0x8D,0x61,0x8C,0x81,0xD5,0xCF,0x2E,0x07,0xFF,0xCF,0x38,0x19,0x8E,0x02,
+0xE2,0x20,0xE9,0x10,0x80,0x49,0x80,0x6A,0xA0,0x52,0xA0,0x1A,0x88,0x01,0xA8,0x12,
+0xB4,0x29,0xB4,0x0A,0x88,0x01,0xB6,0x09,0xA0,0x51,0xA0,0x19,0x88,0x01,0xA8,0x11,
+0xD5,0x0F,0x96,0x18,0x15,0x3F,0x80,0x03,0xF5,0x82,0x15,0x0F,0x80,0x01,0x49,0x00,
+0x00,0xDF,0x05,0x0F,0x80,0x01,0xF5,0x02,0x05,0x3F,0x80,0x03,0xC8,0xE4,0x80,0x70,
+0x8D,0x2C,0x8D,0x4C,0xD5,0x97,0x4C,0xB3,0x40,0x03,0x84,0xE0,0x80,0x07,0x49,0xFF,
+0xFF,0x2D,0xBF,0x00,0xCF,0x05,0x3E,0x77,0xFD,0x35,0x3E,0x77,0xFD,0x4A,0x3C,0x9C,
+0x00,0x48,0xEA,0x3C,0xF0,0x86,0x3C,0xAC,0x00,0x49,0xEA,0xB0,0xF0,0x87,0x50,0x04,
+0xFF,0xFF,0xF0,0x81,0x50,0x05,0x7F,0xFF,0xF0,0x82,0x2E,0x00,0x00,0x14,0x46,0x81,
+0x00,0x01,0x58,0x84,0x0D,0x98,0x96,0x44,0xEA,0x8A,0xF0,0x8A,0x2E,0x07,0xFD,0x5C,
+0xF0,0x8B,0x2E,0x60,0x00,0x8B,0xF1,0x88,0x54,0x03,0x00,0xF0,0xF0,0x83,0x40,0x05,
+0x00,0x01,0xF0,0x8C,0x95,0xB4,0x2E,0x07,0xFD,0x35,0x97,0xB0,0xF0,0x85,0x40,0x04,
+0x98,0x01,0xF0,0x8D,0x2E,0x17,0xFD,0x6B,0x2E,0x07,0xFD,0x4A,0xF1,0x89,0xF0,0x84,
+0x85,0x60,0x81,0x88,0x4C,0xB3,0x80,0x71,0xB4,0x0D,0x04,0xE6,0x80,0x02,0xF2,0x06,
+0x84,0x60,0x42,0x00,0x24,0x69,0xEA,0x68,0x80,0x4E,0x84,0x60,0xEA,0x68,0xF2,0x06,
+0x40,0x24,0x88,0x57,0x92,0x41,0xC9,0x04,0xC9,0x05,0xE2,0x40,0xE8,0x03,0x8A,0x02,
+0xD5,0x02,0x84,0x00,0xB6,0x08,0x04,0x06,0x80,0x01,0xF2,0x07,0x84,0x60,0x42,0x00,
+0x28,0x69,0xEA,0x68,0x80,0x4E,0x84,0x60,0xEA,0x68,0xF2,0x07,0x40,0x25,0x08,0x57,
+0x92,0x41,0xC9,0x04,0xC9,0x05,0xE2,0x40,0xE8,0x03,0x8A,0x02,0xD5,0x02,0x84,0x00,
+0x14,0x04,0x00,0x01,0xB4,0x08,0xE2,0x09,0xE9,0x03,0xF0,0x01,0xB6,0x08,0x04,0x04,
+0x00,0x01,0xE2,0x0A,0xE9,0x04,0xF0,0x02,0x14,0x04,0x00,0x01,0xF0,0x08,0xC0,0x05,
+0xB4,0x08,0xF1,0x01,0x9A,0x08,0xB6,0x08,0xB4,0x08,0xF1,0x09,0xEB,0x75,0x58,0x21,
+0x0E,0xA4,0x40,0x10,0x04,0x37,0x38,0x11,0x2C,0x08,0xF1,0x0A,0xC1,0x06,0x80,0x68,
+0xA0,0x59,0xF2,0x02,0x9A,0x51,0xA8,0x59,0x04,0x14,0x00,0x01,0xF2,0x0B,0xEB,0x67,
+0x58,0x31,0x8E,0x98,0x40,0x20,0x88,0x57,0x38,0x21,0xAC,0x08,0xF2,0x03,0xE2,0x41,
+0xE8,0x06,0xF2,0x0C,0xE2,0x22,0xE8,0x03,0x84,0x21,0xF1,0x85,0xE2,0xC0,0xE8,0x06,
+0xF1,0x0D,0xE2,0x01,0xE8,0x03,0x84,0x01,0xF0,0x84,0x8D,0x61,0x8D,0x08,0x50,0xD6,
+0x80,0x0C,0x48,0xFF,0xFF,0x91,0x00,0x1F,0x80,0x14,0x3E,0x17,0xFD,0x35,0x00,0x1F,
+0x80,0x10,0x3E,0x17,0xFD,0x4A,0x46,0x01,0x00,0x01,0x02,0x00,0x06,0xCC,0x46,0x11,
+0x00,0x07,0x12,0x00,0x87,0xAD,0x46,0x01,0x00,0x01,0x02,0x00,0x06,0xCE,0x46,0x11,
+0x00,0x07,0x12,0x00,0x87,0xAE,0xEA,0x29,0xE6,0xEC,0xE8,0x08,0x40,0x16,0x1C,0x60,
+0x38,0x06,0x1F,0x0A,0xA8,0x09,0x8C,0xE1,0xD5,0xF8,0xFC,0xE9,0x46,0x31,0x00,0x01,
+0x58,0x31,0x8F,0xDC,0x40,0x41,0x80,0x20,0x2E,0x20,0x01,0x28,0xA7,0x21,0x8E,0x41,
+0xE6,0x82,0x96,0x90,0x2E,0x10,0x01,0x29,0xE9,0x0C,0xE2,0x44,0xE9,0x0A,0x38,0x01,
+0x81,0x00,0xE6,0x02,0xE9,0x06,0x8E,0x21,0x96,0x48,0x40,0x00,0x80,0x06,0xDD,0x9E,
+0x84,0x01,0xDD,0x9E,0xFC,0x00,0x3F,0xCF,0xFE,0x08,0x2E,0x07,0xFD,0x5D,0xC0,0x05,
+0x84,0x00,0xB8,0x85,0x48,0x00,0x00,0x83,0xBE,0x0F,0xCE,0x34,0xB9,0x05,0x8E,0x21,
+0xE6,0x23,0xE8,0x30,0xDD,0x59,0x5A,0x08,0x01,0x0C,0x80,0x06,0x49,0xFF,0xFF,0xD0,
+0xC0,0x04,0x2E,0x07,0xFF,0xB7,0xD5,0x06,0x2E,0x07,0xFF,0xB6,0xD5,0x03,0x2E,0x07,
+0xFF,0xBA,0xB9,0x00,0x5A,0x10,0x03,0x05,0xEA,0xBB,0x5A,0x18,0x01,0x06,0x2E,0x17,
+0xFF,0xB8,0x88,0x01,0x96,0x01,0xDD,0x49,0xEA,0x94,0xC1,0x0B,0x84,0x00,0x49,0xFF,
+0xFF,0xB7,0x2E,0x10,0x00,0x54,0xC0,0x04,0x40,0x00,0x84,0x09,0xD5,0x02,0x96,0x09,
+0x46,0x11,0x00,0x02,0x04,0x10,0x80,0x2F,0x92,0x21,0xE2,0x20,0xE8,0x03,0x84,0x00,
+0xB8,0x85,0xEA,0x96,0x46,0x11,0x00,0x02,0x04,0x10,0x80,0x2F,0xC8,0x07,0x3C,0x03,
+0xFE,0xCF,0x40,0x00,0x80,0x17,0x3E,0x07,0xFD,0x46,0xB8,0x05,0x92,0x21,0x49,0xFF,
+0xEA,0x03,0xB8,0x05,0xE6,0x02,0xE9,0x3A,0xB9,0x0F,0xE2,0x20,0xE8,0x37,0x3C,0x63,
+0xFE,0xD2,0xEB,0x08,0xC8,0x04,0x40,0x13,0x04,0x09,0xD5,0x03,0x94,0x71,0x96,0x49,
+0xEA,0x49,0xC0,0x09,0x2E,0x07,0xFF,0xB4,0xDD,0x49,0x80,0xC0,0x2E,0x07,0xFF,0xB5,
+0xDD,0x49,0x80,0x20,0xEA,0x45,0xC0,0x0A,0x2E,0x00,0x00,0x61,0xDD,0x49,0x80,0xC0,
+0x2E,0x00,0x00,0x61,0xDD,0x49,0x94,0x01,0x96,0x41,0xBA,0x0F,0xBB,0x05,0x84,0x8C,
+0x46,0x51,0x00,0x02,0x58,0x52,0x80,0xB4,0xE2,0x43,0xE8,0x10,0x80,0x05,0x42,0x01,
+0x10,0x73,0xE6,0x42,0xA0,0x02,0x82,0x01,0x92,0x01,0x41,0x03,0x3C,0x1B,0xE2,0x10,
+0xE8,0x03,0xBA,0x85,0xD5,0x03,0x8C,0x41,0xD5,0xF0,0xFC,0x80,0xFC,0x60,0x2E,0x07,
+0xFD,0x60,0x5A,0x08,0x01,0x0D,0x2E,0x07,0xFD,0x37,0xE6,0x15,0xE9,0x05,0x84,0x00,
+0x3E,0x07,0xFD,0x60,0xD5,0x04,0x8C,0x01,0x3E,0x07,0xFD,0x37,0x3C,0x03,0xFE,0xC4,
+0xE6,0x1F,0x2F,0x30,0x01,0x2B,0xE8,0x14,0x2E,0x47,0xFD,0x60,0x2E,0x37,0xFD,0x37,
+0x84,0x00,0xEB,0x78,0x58,0x10,0x8C,0xCC,0x46,0x51,0x00,0x01,0x58,0x52,0x8D,0x98,
+0xEA,0xB5,0x80,0xE0,0x47,0x01,0x00,0x01,0x59,0x08,0x0D,0x74,0xD5,0x1B,0xEB,0x3B,
+0xC8,0xEC,0xEB,0x78,0x58,0x10,0x8C,0x6C,0xEA,0xC7,0xE2,0x13,0xE8,0xE6,0x40,0x30,
+0x80,0x60,0x38,0x20,0x83,0x0A,0xA8,0x99,0x8C,0x01,0xD5,0xF8,0x38,0x22,0x83,0x02,
+0x4C,0x23,0x40,0x13,0xA6,0x88,0x8E,0x41,0xE6,0x53,0xE9,0x07,0xAF,0xC8,0x8C,0x01,
+0x8C,0x21,0xE2,0x13,0xE9,0xF4,0xD5,0x0E,0x38,0x28,0x00,0x00,0x5A,0x28,0x01,0xF8,
+0x80,0x82,0x84,0x60,0xD5,0xF4,0xA6,0x88,0x5A,0x20,0xFF,0xF3,0x8C,0x41,0xAE,0x88,
+0xD5,0xEF,0x3E,0x47,0xFD,0x60,0x46,0xA1,0x00,0x01,0x58,0xA5,0x0B,0xA0,0x3E,0x37,
+0xFD,0x37,0xEB,0x78,0x58,0x10,0x8B,0xAC,0x46,0x31,0x00,0x01,0x58,0x31,0x8D,0x98,
+0x46,0x71,0x00,0x01,0x58,0x73,0x8D,0x74,0x80,0xCA,0x45,0x20,0xFF,0xFF,0x85,0x20,
+0x85,0x61,0x40,0x03,0x28,0x01,0xE2,0x13,0xE8,0x50,0xB4,0x43,0x4C,0x29,0x40,0x08,
+0xB7,0xC1,0x10,0xB3,0x80,0x00,0x10,0xB3,0x00,0x00,0xD5,0x26,0xA6,0x38,0x5A,0x08,
+0x01,0x24,0xB4,0xA1,0x4C,0x59,0x40,0x06,0x3B,0x01,0xC4,0x00,0xEA,0xEA,0xD5,0x1C,
+0xE2,0xA2,0xE8,0x03,0x9A,0x15,0xD5,0x02,0x9A,0x2A,0xA1,0x59,0xA1,0x09,0xE2,0x85,
+0xE8,0x03,0x9B,0x2C,0xD5,0x02,0x8A,0x85,0xFE,0x04,0x42,0x02,0x10,0x73,0x81,0xE0,
+0x2E,0x50,0x01,0x32,0x2E,0x40,0x01,0x33,0xFF,0x2C,0xE2,0x8F,0xE8,0x05,0x10,0x93,
+0x80,0x00,0x3E,0x97,0xFD,0x60,0xB4,0xA1,0x4C,0x59,0x00,0x1B,0x4C,0x29,0x00,0x19,
+0xA6,0x30,0x5A,0x08,0x01,0x16,0xE2,0xA2,0xE8,0x03,0x9B,0x55,0xD5,0x02,0x8A,0xA2,
+0xA0,0x99,0xA0,0x09,0xE2,0x02,0xE8,0x03,0x9A,0x10,0xD5,0x02,0x8A,0x02,0xFF,0x6C,
+0x42,0x50,0x00,0x73,0x5C,0xF2,0xB8,0x41,0xE9,0x03,0x10,0x93,0x00,0x00,0x8C,0xC1,
+0x8C,0x28,0x8C,0x68,0x8C,0xE1,0xD5,0xAE,0xFC,0xE0,0xFC,0x61,0x3F,0xCF,0xFE,0x44,
+0x46,0x71,0x00,0x01,0x58,0x73,0x8D,0x98,0x46,0xB1,0x00,0x01,0x58,0xB5,0x8B,0x88,
+0x46,0x91,0x00,0x01,0x58,0x94,0x8B,0x94,0x84,0xC0,0x81,0x47,0x44,0x80,0xFF,0xFF,
+0x46,0xC1,0x00,0x01,0x58,0xC6,0x0D,0x80,0x44,0xDF,0xFF,0x80,0x46,0xE1,0x00,0x01,
+0x58,0xE7,0x0D,0x08,0x46,0x31,0x00,0x01,0x58,0x31,0x8C,0x6C,0x44,0x10,0xFF,0xFE,
+0xEA,0x2C,0xE2,0xC0,0xE8,0x52,0x96,0x30,0xF1,0x81,0xB6,0x7F,0x49,0xFF,0xF6,0x2D,
+0xB4,0x7F,0xF1,0x01,0x5A,0x08,0x01,0x05,0x2E,0x07,0xFD,0x67,0xEA,0x91,0xB4,0xA7,
+0x4C,0x54,0x40,0x1C,0x00,0x04,0x80,0x00,0x2E,0x27,0xFD,0x67,0xE2,0x02,0xE8,0x06,
+0x8C,0x01,0xEA,0x91,0xB6,0x27,0xA8,0x79,0xD5,0x33,0x84,0x00,0x38,0x57,0x1B,0x02,
+0xEA,0xC0,0x84,0x1F,0xEA,0x91,0x94,0x33,0x4C,0x54,0x00,0x2B,0x98,0x98,0x88,0x0E,
+0x3B,0x00,0x44,0x00,0xEA,0x9E,0xD5,0x24,0xEA,0xE6,0xC0,0x0E,0xC6,0x0D,0x46,0x01,
+0x00,0x01,0x04,0x00,0x03,0x36,0x5C,0xF0,0x00,0xC9,0xE9,0x06,0x2E,0x27,0xFF,0xFB,
+0x3E,0xD7,0xFD,0x58,0xD5,0x03,0x2E,0x27,0xFD,0x23,0x00,0x05,0x80,0x00,0xE2,0x02,
+0xE8,0x0B,0x8C,0x01,0xEA,0xC0,0x84,0x5F,0x40,0x06,0x18,0x20,0xB7,0x07,0x14,0x83,
+0x80,0x01,0xAE,0x81,0xD5,0x05,0x84,0x00,0xEA,0x91,0x84,0x1F,0xEA,0xC0,0x8C,0xC1,
+0x8D,0x61,0x8D,0x21,0x8C,0xE8,0xD5,0xAD,0x84,0xC0,0xBE,0x80,0x84,0x3F,0x46,0x01,
+0x00,0x01,0x58,0x00,0x0D,0x80,0xFA,0x48,0xDD,0x42,0x80,0x06,0x46,0x41,0x00,0x01,
+0x58,0x42,0x0D,0x98,0xEA,0xB5,0x46,0x31,0x00,0x01,0x58,0x31,0x8D,0x08,0x46,0x71,
+0x00,0x01,0x58,0x73,0x8C,0xD8,0x82,0x40,0x45,0x30,0xFF,0xFE,0x46,0x91,0x00,0x01,
+0x58,0x94,0x8D,0x80,0x85,0x7E,0x38,0x55,0x02,0x02,0x94,0x42,0xD6,0x0F,0xBA,0x00,
+0x8C,0x41,0xBA,0x80,0x4C,0x59,0xC0,0x0D,0x98,0xA1,0x88,0x23,0xEA,0x6B,0x40,0x10,
+0x24,0x00,0xEA,0x9E,0x10,0xB0,0x80,0x01,0xD5,0x07,0x39,0x23,0x81,0x0A,0x98,0x99,
+0x88,0x2A,0xEA,0x6B,0xEA,0x9E,0x8C,0x02,0x5A,0x08,0x18,0xE7,0x49,0xFF,0xFE,0x90,
+0xFC,0xE1,0xFC,0x60,0x3F,0xCF,0xFE,0x1C,0xB8,0x0B,0xC0,0x03,0x84,0x00,0xD5,0x04,
+0x2E,0x07,0xFF,0xA5,0x92,0x04,0x3E,0x07,0xFD,0x2B,0xEB,0x16,0xB9,0x04,0x8C,0x01,
+0xE2,0x20,0x46,0x21,0x00,0x01,0x58,0x21,0x09,0x48,0x2E,0x90,0x01,0x2B,0xE9,0x21,
+0x84,0xEC,0x42,0x60,0x1C,0x24,0x84,0x74,0x84,0xA0,0x46,0xB1,0x00,0x01,0x58,0xB5,
+0x8D,0x98,0xB8,0x84,0x88,0x46,0xEB,0x78,0x58,0x10,0x89,0x54,0x43,0x30,0x0C,0x24,
+0x88,0xC3,0x81,0x05,0x46,0xA1,0x00,0x01,0x58,0xA5,0x0D,0x68,0x46,0xC1,0x00,0x02,
+0x58,0xC6,0x00,0xB4,0x3E,0xD8,0x02,0xD4,0xEA,0x89,0x81,0xCB,0x86,0x87,0xD5,0x4E,
+0x84,0x60,0x44,0x60,0x00,0x30,0xE0,0x69,0xE8,0xDC,0x80,0x22,0x42,0x11,0x98,0x73,
+0x84,0x81,0x8C,0x2C,0xE0,0x80,0x8C,0x2C,0xE8,0x09,0x50,0x50,0xFF,0xF4,0x3B,0x02,
+0xC8,0x00,0x8C,0x81,0x3B,0x00,0xC8,0x20,0xD5,0xF6,0x8C,0x61,0xD5,0xED,0x50,0xF1,
+0xFF,0xF4,0x3B,0x01,0xC8,0x00,0x51,0x5A,0x80,0x01,0x3B,0x07,0xC8,0x20,0x40,0xFA,
+0x80,0x07,0x8C,0x6C,0xE9,0xF5,0x2E,0x37,0xFF,0xA4,0x43,0x21,0x98,0x0B,0x38,0x35,
+0x14,0x00,0x4F,0x22,0x00,0x29,0x38,0x36,0x8C,0x10,0x39,0x15,0x97,0x02,0x41,0x02,
+0x8C,0x08,0x4D,0x12,0x00,0x2B,0x2F,0x17,0xFD,0x3A,0xE3,0xA3,0x40,0x38,0xBC,0x1B,
+0x89,0x8E,0x3B,0x08,0x44,0x00,0xEA,0x9E,0x4F,0x23,0x00,0x07,0x05,0x01,0x00,0x02,
+0x42,0x3A,0x40,0x73,0x92,0x63,0xA8,0xD2,0x04,0x30,0xFF,0xFD,0x4C,0x32,0x00,0x18,
+0x8C,0xA1,0x50,0x10,0x80,0x30,0x50,0x21,0x00,0x30,0xE0,0xA9,0xE8,0x2F,0x80,0x61,
+0x86,0xA0,0xD5,0xC6,0x81,0xEC,0x42,0xF1,0x9C,0x73,0x80,0x6F,0x2E,0xF7,0xFD,0x52,
+0xA0,0xDA,0x40,0x31,0xBC,0x0D,0xD5,0xD2,0x84,0x60,0xD5,0xDB,0xB4,0x61,0x4C,0x32,
+0x3F,0xE9,0x5A,0x00,0x01,0xE7,0xBB,0x00,0xE6,0x63,0xE8,0x05,0xA0,0xCB,0x4C,0x32,
+0x40,0x5A,0xD5,0x20,0xA0,0xCB,0x4C,0x32,0x00,0x07,0x5A,0x08,0x03,0xF9,0xA0,0xCE,
+0x4C,0x32,0x7F,0xF6,0x80,0x61,0x86,0x01,0x8D,0x81,0xE0,0x10,0xB6,0x83,0xA9,0x19,
+0x14,0x81,0x80,0x02,0x8C,0x6C,0xE8,0xF9,0xD5,0xEA,0x84,0xC0,0xEA,0x2C,0xE0,0xC0,
+0xE8,0x45,0x96,0x30,0xEB,0x78,0x58,0x10,0x89,0x48,0x49,0xFF,0xF3,0xEA,0x8C,0xC1,
+0xD5,0xF6,0x84,0x61,0x5A,0x08,0x03,0xBE,0x05,0x00,0x80,0x06,0x4D,0x02,0x3F,0xBA,
+0xCB,0xB8,0xB4,0x61,0xB5,0xA2,0x05,0x01,0x00,0x01,0x41,0x58,0x8C,0x01,0xA0,0xC9,
+0x40,0xF8,0x0C,0x01,0x2E,0x30,0x01,0x32,0x42,0xF7,0xBC,0x24,0x41,0x21,0x88,0x09,
+0x2E,0x30,0x01,0x33,0x42,0xFA,0xD4,0x73,0x92,0x62,0xFE,0xDC,0x42,0x39,0x48,0x73,
+0x40,0xF7,0x8C,0x07,0xE8,0x9E,0x41,0x21,0x4C,0x00,0x38,0x39,0x18,0x02,0x89,0xC6,
+0x89,0xA3,0x04,0x39,0x00,0x01,0x93,0xA1,0x88,0x70,0x92,0x61,0x82,0x01,0x86,0x41,
+0x8D,0xC1,0xE0,0x12,0xB7,0xB0,0x14,0x38,0x00,0x01,0x8D,0x8C,0xE8,0xFA,0x48,0xFF,
+0xFF,0x89,0x84,0x60,0x5A,0x00,0x03,0xCA,0xD5,0xCD,0xFC,0xE0,0xFC,0x64,0x81,0x80,
+0x84,0x00,0x12,0x06,0x00,0x48,0x10,0x06,0x00,0x92,0x2E,0x17,0xFD,0x4B,0x2E,0x47,
+0xFF,0xC2,0x2E,0x07,0xFF,0xC1,0xC9,0x05,0xEA,0xBB,0xC9,0x03,0xEA,0x94,0xC1,0x06,
+0x58,0x12,0x00,0x0F,0xB6,0x3F,0x92,0x04,0xD5,0x05,0x97,0x1F,0x94,0x63,0xB6,0x3F,
+0x96,0x1F,0x8C,0x01,0x85,0x48,0x42,0xA0,0x28,0x01,0x2E,0x07,0xFD,0x1F,0xE2,0x0A,
+0xE8,0x03,0x8C,0x01,0xD5,0x04,0xE3,0x40,0xE8,0x03,0x8E,0x01,0xEA,0xEB,0x40,0x05,
+0x04,0x09,0x96,0x00,0xF0,0x82,0x84,0xC0,0x46,0x81,0x00,0x01,0x58,0x84,0x06,0x30,
+0x3C,0xDD,0xFE,0xDB,0x46,0xE1,0x00,0x01,0x58,0xE7,0x06,0x24,0xEA,0x2C,0xE2,0xC0,
+0x4E,0xF2,0x01,0x5A,0x94,0x73,0x46,0x01,0x00,0x01,0x58,0x00,0x0E,0x38,0x39,0x10,
+0x1B,0x02,0x88,0x01,0xF1,0x81,0xA1,0x41,0xEB,0x78,0x58,0x10,0x89,0x48,0xDD,0x47,
+0xEB,0x0D,0x38,0x44,0x18,0x00,0x80,0x01,0x8C,0x0C,0xA1,0xCB,0x04,0x90,0x00,0x01,
+0xEA,0x29,0x46,0x21,0x00,0x01,0x58,0x21,0x06,0x3C,0x4C,0x70,0x40,0x0D,0x4C,0x93,
+0xC0,0x0B,0x44,0x0F,0xFF,0xB4,0x38,0x07,0x18,0x08,0x84,0x00,0x38,0x01,0x18,0x08,
+0x48,0x00,0x01,0x1D,0x00,0x06,0x00,0x92,0x84,0x21,0x8C,0x01,0x10,0x06,0x00,0x92,
+0x02,0x06,0x00,0x48,0x40,0x30,0x98,0x0C,0xFE,0x1F,0x12,0x06,0x00,0x48,0x38,0x01,
+0x18,0x00,0x47,0xC1,0x00,0x01,0x59,0xCE,0x06,0x48,0xC8,0x14,0x46,0x21,0x00,0x01,
+0x58,0x21,0x06,0x3C,0x38,0x11,0x18,0x08,0x94,0xB6,0x40,0x1E,0x00,0x00,0x38,0x70,
+0x88,0x0A,0x8C,0x08,0x88,0x22,0x14,0x90,0x80,0x01,0x5A,0x08,0x40,0xF8,0x48,0x00,
+0x00,0xF8,0xE3,0xA7,0xE8,0x04,0x41,0x33,0xC4,0x01,0xD5,0x03,0x41,0x38,0x9C,0x01,
+0xE2,0xA9,0xE8,0x04,0x41,0x24,0x94,0x01,0xD5,0x03,0x41,0x22,0xA4,0x01,0x42,0x19,
+0xCC,0x24,0x42,0x19,0x48,0x73,0x38,0x07,0x18,0x00,0x92,0x21,0xC8,0x06,0x2E,0x27,
+0xFF,0xBB,0x2E,0x37,0xFF,0xBC,0xD5,0x05,0x2E,0x27,0xFF,0xBF,0x2E,0x37,0xFF,0xC0,
+0x2E,0xF7,0xFD,0x6E,0x47,0x61,0x00,0x01,0x59,0x6B,0x0D,0x68,0xE9,0x10,0x38,0xFB,
+0x18,0x00,0x47,0x01,0x00,0x01,0x59,0x08,0x0F,0xF4,0x2E,0xB7,0xFD,0x49,0x39,0x08,
+0x3E,0x02,0xE3,0x70,0xE9,0x04,0x2E,0xF7,0xFD,0x68,0xE8,0x07,0x86,0x03,0x42,0x21,
+0x40,0x24,0xEA,0xEF,0x96,0x90,0x96,0xD8,0xC8,0x15,0xE2,0xE2,0xE9,0x09,0x3D,0x0C,
+0x00,0x48,0x8F,0x81,0x8B,0x82,0xE3,0x87,0x40,0x20,0x3C,0x1B,0xD5,0x02,0x80,0x40,
+0xE3,0x23,0xE9,0x07,0x3D,0x0C,0x00,0x49,0x8F,0x81,0x8B,0x83,0xE3,0x89,0xE8,0x02,
+0x84,0x60,0x46,0xB1,0x00,0x02,0x58,0xB5,0x80,0xB4,0x38,0xFB,0x18,0x00,0x86,0x0C,
+0x82,0x8B,0x43,0x47,0xC0,0x73,0x04,0xFA,0x00,0x02,0xE9,0x02,0xC0,0x0F,0xE3,0xE2,
+0xE8,0x03,0xE3,0xC3,0xE9,0x09,0x84,0x00,0x46,0x21,0x00,0x01,0x58,0x21,0x06,0x24,
+0x38,0x01,0x18,0x08,0xD5,0x03,0x81,0x25,0x80,0xF1,0xB4,0x1F,0x92,0x22,0x40,0x10,
+0x80,0x37,0x8C,0x21,0xE6,0x31,0xE9,0x02,0xFA,0x20,0xB4,0x1F,0xC0,0x41,0xEB,0x16,
+0xC0,0x09,0xDD,0x47,0x80,0x4D,0x42,0x23,0x00,0x73,0xEA,0x29,0xA0,0x96,0x4C,0x20,
+0x00,0x38,0x80,0x06,0x15,0x6F,0x80,0x07,0xF1,0x86,0xF5,0x85,0x15,0x1F,0x80,0x04,
+0xF4,0x83,0xF8,0x41,0xF4,0x03,0x05,0x1F,0x80,0x04,0xF5,0x05,0xF1,0x06,0x05,0x6F,
+0x80,0x07,0xC8,0x26,0x38,0x2B,0x18,0x00,0x84,0x0C,0x42,0xB1,0x00,0x73,0x04,0x05,
+0x80,0x02,0xC0,0x1E,0x52,0x00,0x80,0x10,0x42,0x20,0x44,0x24,0x42,0x23,0x84,0x73,
+0x95,0xFC,0x82,0x22,0x3C,0x2C,0x00,0x48,0xFF,0x44,0x40,0x73,0x88,0xF7,0x42,0x54,
+0x84,0x73,0x40,0x04,0x90,0x08,0x3C,0x9C,0x00,0x49,0x97,0xF8,0x40,0x00,0x24,0x17,
+0x96,0x00,0x89,0xA7,0x88,0xA0,0x40,0x78,0x90,0x09,0x40,0x92,0x90,0x09,0xF0,0x01,
+0xE6,0x2D,0x88,0x04,0x40,0x0E,0x00,0x60,0xB6,0xE0,0x14,0x90,0x00,0x01,0xE9,0x09,
+0xDD,0x47,0x80,0x2D,0xEB,0x0D,0xEA,0x29,0xA1,0x4E,0xD8,0x03,0xEB,0x16,0xC8,0x23,
+0x80,0x06,0xF4,0x83,0x49,0xFF,0xF3,0x51,0xF4,0x03,0xC8,0x1D,0x80,0xE0,0x80,0xA0,
+0x4C,0x55,0x00,0x13,0xF1,0x01,0x88,0x24,0x38,0x2E,0x07,0x02,0x40,0x1E,0x04,0x60,
+0xA0,0x49,0x88,0xE2,0x88,0x01,0xC4,0x04,0x9E,0x61,0x97,0x08,0xD5,0x02,0x84,0x87,
+0x8C,0xA1,0x97,0x68,0xD5,0xEE,0xF1,0x02,0x88,0xE1,0x88,0x01,0x40,0x73,0xA8,0xF7,
+0x40,0x90,0x29,0x37,0x46,0x01,0x00,0x01,0x58,0x00,0x06,0x30,0x38,0x00,0x18,0x00,
+0x8C,0x01,0x96,0x00,0x5A,0x08,0x08,0x03,0x84,0x00,0x38,0x04,0x18,0x08,0x84,0x0C,
+0x80,0x2C,0xEB,0x0D,0x80,0x4D,0xB6,0xE1,0x14,0x90,0x80,0x01,0x80,0x01,0x44,0x10,
+0x00,0x30,0x42,0x23,0x04,0x73,0x8C,0xC1,0xA0,0x55,0x10,0x10,0x00,0x08,0x97,0xB0,
+0x48,0xFF,0xFE,0xA6,0x3E,0xA7,0xFD,0x1F,0xFC,0xE4,0xEA,0x69,0x42,0x00,0x18,0x0B,
+0x4E,0x02,0x01,0x69,0x84,0x00,0x3E,0x18,0x02,0xD4,0x84,0x41,0x38,0x20,0x80,0x08,
+0x8C,0x01,0x5A,0x08,0x0C,0xFD,0xFC,0x66,0xEB,0x3B,0xF0,0x83,0xEB,0x3D,0xF0,0x81,
+0xEA,0x3C,0xF0,0x84,0xEA,0xB8,0xF0,0x82,0xEA,0xB0,0xF0,0x85,0x2E,0x00,0x01,0x02,
+0xF0,0x86,0x2E,0x00,0x01,0x03,0x85,0x80,0xF0,0x87,0x3E,0x68,0x02,0xD4,0x3E,0xA8,
+0x01,0xCC,0x84,0xE1,0x81,0x6C,0xF0,0x03,0x4C,0xB0,0x01,0x44,0x00,0x15,0x00,0x00,
+0x01,0x05,0x00,0x01,0x01,0x15,0x00,0x02,0x40,0x00,0xC0,0x00,0x40,0x80,0x04,0x0A,
+0x00,0x05,0x00,0x03,0x40,0x28,0x80,0x00,0x41,0x41,0x04,0x0A,0xC1,0x08,0x4F,0x02,
+0x00,0x09,0x4F,0x12,0x00,0x09,0x40,0x70,0x00,0x1A,0xD5,0x06,0x80,0xE1,0xD5,0x04,
+0x80,0xF0,0xD5,0x02,0x80,0xF1,0x44,0x20,0x00,0x48,0x42,0x40,0x08,0x24,0x84,0x60,
+0x40,0x42,0x04,0x20,0x44,0x20,0x00,0x4A,0x42,0x43,0x88,0x75,0x80,0xA1,0x82,0x63,
+0x81,0x23,0x82,0x43,0x83,0x03,0xE3,0x85,0xE9,0x24,0x41,0x51,0x90,0x00,0x46,0x21,
+0x00,0x02,0x58,0x21,0x01,0x44,0x41,0x5A,0x88,0x00,0x81,0xA0,0x85,0xC0,0x40,0x22,
+0xA0,0x06,0xE3,0xAD,0xE9,0x13,0x40,0xFA,0xB8,0x00,0x22,0xF7,0x8C,0xAA,0xC2,0x05,
+0x89,0xCF,0x43,0x37,0x94,0x73,0xD5,0x05,0x41,0x8C,0x3C,0x00,0x42,0x97,0x94,0x73,
+0x50,0xD6,0x80,0x01,0x50,0xE7,0x00,0x48,0xD5,0xED,0x8C,0xA1,0x8C,0x62,0xD5,0xDC,
+0x84,0x60,0x83,0x83,0x81,0xA3,0x81,0xC3,0x81,0x03,0xE3,0x81,0xE9,0x23,0x99,0x5C,
+0x46,0x21,0x00,0x02,0x58,0x21,0x01,0x44,0x41,0x62,0x88,0x00,0x86,0xA0,0x80,0xA0,
+0xE3,0xA5,0xE9,0x15,0xE2,0xB4,0x41,0x7B,0x54,0x00,0xE8,0x07,0x22,0xFB,0x8C,0xAA,
+0x89,0x0F,0x42,0xD7,0x94,0x73,0xD5,0x07,0x22,0xFB,0x8C,0xAA,0x40,0xE7,0x3C,0x00,
+0x43,0xC7,0x94,0x73,0x8C,0xA1,0x51,0x5A,0x80,0x48,0xD5,0xEB,0x8C,0x21,0x8C,0x62,
+0xD5,0xDD,0xF0,0x01,0xF1,0x04,0x80,0x58,0x40,0x40,0x04,0x97,0x84,0x60,0x42,0x04,
+0x90,0x69,0x15,0x3F,0x80,0x0B,0x15,0x2F,0x80,0x0A,0xF4,0x88,0xF8,0x36,0xF4,0x08,
+0x81,0x20,0x40,0x52,0x04,0x09,0x05,0x2F,0x80,0x0A,0x05,0x3F,0x80,0x0B,0xC9,0x05,
+0xC9,0x03,0xE2,0xA0,0xE9,0x02,0x85,0x20,0x42,0x09,0x90,0x69,0x80,0x52,0x84,0x60,
+0xF5,0x88,0xF8,0x23,0x80,0x80,0xF5,0x08,0xC9,0x05,0xC9,0x03,0xE2,0xA0,0xE9,0x02,
+0x84,0x80,0xF0,0x02,0xF1,0x05,0x80,0x4E,0x40,0x50,0x04,0xB7,0x84,0x60,0x42,0x0E,
+0x14,0x69,0xF4,0x8A,0xF5,0x88,0xF8,0x11,0xF5,0x08,0x81,0xC0,0x41,0xC2,0x84,0x09,
+0xF4,0x0A,0xC9,0x06,0xC9,0x04,0x40,0xFE,0x00,0x06,0xE9,0x02,0x85,0xC0,0x80,0x48,
+0x42,0x06,0x94,0x69,0x84,0x60,0xF4,0x88,0xEA,0x68,0x80,0x40,0xF4,0x08,0xC9,0x05,
+0xC9,0x06,0x40,0xFE,0x00,0x06,0xE8,0x03,0x80,0x02,0xD5,0x02,0x84,0x00,0x4E,0x92,
+0x00,0x0C,0xC4,0x0A,0xE2,0x89,0xE8,0x04,0x40,0x44,0x90,0x01,0xD5,0x02,0x8A,0x89,
+0x40,0x92,0x00,0x13,0xD5,0x02,0x85,0x21,0x4E,0xE2,0x00,0x0B,0xC0,0x09,0xE2,0x0E,
+0xE8,0x04,0x40,0x07,0x00,0x01,0xD5,0x02,0x8A,0x0E,0x96,0x01,0xD5,0x02,0x84,0x01,
+0xF8,0x11,0xF8,0x12,0xF8,0x1E,0x84,0x40,0x46,0x34,0x05,0x0C,0xF8,0x1A,0xFD,0x20,
+0xF0,0x88,0xF0,0x02,0xF5,0x89,0xF8,0x1B,0xF8,0x1C,0xF8,0x20,0xF8,0x21,0x81,0x00,
+0x80,0x09,0x49,0x00,0x2C,0xF7,0x46,0x2F,0x5C,0x28,0x46,0x34,0x00,0x15,0x50,0x21,
+0x0F,0x5C,0x50,0x31,0x8C,0x28,0x83,0xFF,0xF8,0x04,0x84,0x40,0x46,0x34,0x06,0x28,
+0x49,0x00,0x2A,0x6C,0xFD,0x20,0xF0,0x88,0xF0,0x01,0xF5,0x89,0x49,0x00,0x2D,0x08,
+0xF4,0x08,0xF5,0x09,0xFD,0x10,0xFD,0x02,0x83,0xFF,0x49,0x00,0x2B,0x4F,0x49,0x00,
+0x2C,0xB3,0xE3,0x00,0x40,0x04,0x3C,0x1A,0x96,0x42,0xE4,0x34,0xE9,0x02,0x85,0x81,
+0xEB,0x78,0x58,0x10,0x8F,0xF4,0x88,0x0C,0x38,0x10,0xAE,0x02,0x96,0x02,0xE2,0x20,
+0x80,0x46,0xAE,0x30,0xE8,0x02,0xAE,0x70,0xF0,0x06,0xE2,0x20,0xE9,0x0A,0x46,0x01,
+0x00,0x01,0x58,0x00,0x0C,0xCC,0x38,0x00,0x2C,0x00,0xF1,0x07,0xE2,0x01,0xE8,0x05,
+0x20,0x03,0x00,0x00,0x90,0x01,0xAE,0x30,0x20,0x01,0x00,0x00,0x8C,0xC1,0x4E,0x06,
+0x00,0x05,0x84,0x01,0x10,0x03,0x7F,0xFF,0x8D,0x61,0x8D,0x44,0x48,0xFF,0xFE,0xBD,
+0xFC,0xE6,0xDD,0x9E,0xFC,0x60,0x3F,0xCF,0xFE,0x08,0x46,0x01,0x00,0x01,0x58,0x00,
+0x00,0x28,0x84,0x20,0xFA,0x54,0xDD,0x42,0xEA,0x6A,0xEA,0xF0,0xC0,0x1F,0xDD,0x59,
+0x5A,0x08,0x01,0x12,0xEB,0x38,0xC8,0x0C,0xEB,0x23,0x2E,0x07,0xFF,0xDF,0xC1,0x03,
+0x2E,0x00,0x00,0x72,0xEA,0x94,0xC1,0x09,0x2E,0x00,0x00,0x55,0xD5,0x06,0x2E,0x07,
+0xFF,0xE2,0xD5,0x03,0x2E,0x07,0xFF,0xE0,0xB9,0x00,0x5A,0x18,0x03,0x04,0x2E,0x07,
+0xFF,0xE3,0xEA,0xBB,0xC1,0x03,0x2E,0x00,0x00,0x73,0xEA,0xF5,0xEA,0x8B,0xC1,0x18,
+0xB9,0x00,0x5A,0x18,0x02,0x06,0x2E,0x27,0xFD,0x6E,0x5A,0x20,0x01,0x05,0x2E,0x27,
+0xFD,0x4F,0xC2,0x04,0x2E,0x17,0xFF,0xE8,0xD5,0x0B,0x5A,0x10,0x03,0x05,0xEA,0xBB,
+0x5A,0x18,0x01,0x05,0x2E,0x17,0xFF,0xE7,0xD5,0x03,0x2E,0x17,0xFF,0xE6,0x46,0x21,
+0x00,0x07,0x12,0x01,0x07,0xA4,0x2E,0x27,0xFD,0x46,0x2E,0x30,0x00,0xE7,0xE2,0x62,
+0xE8,0x03,0x8A,0x43,0xD5,0x02,0x84,0x40,0x3E,0x27,0xFD,0x46,0x2F,0x37,0xFD,0x46,
+0x46,0x21,0x00,0x07,0x02,0x21,0x07,0xA4,0x40,0x99,0x80,0x13,0x88,0x49,0x96,0x91,
+0x46,0x31,0x00,0x07,0x12,0x21,0x87,0xA4,0x46,0x21,0x00,0x01,0x96,0x03,0x12,0x11,
+0x00,0x13,0x46,0x21,0x00,0x01,0x12,0x01,0x00,0x12,0x84,0x00,0x46,0x21,0x00,0x05,
+0x12,0x01,0x02,0xD6,0x2F,0x10,0x01,0x29,0x2F,0x20,0x01,0x28,0x3C,0x8D,0xFF,0x90,
+0x46,0x71,0x00,0x03,0x58,0x73,0x80,0x78,0x46,0x01,0x00,0x01,0x58,0x00,0x00,0x28,
+0x84,0x80,0x81,0x80,0x44,0xE0,0x00,0x48,0x46,0xD1,0x00,0x07,0x58,0xD6,0x85,0x00,
+0x44,0xA0,0x00,0x4C,0x51,0x43,0xF0,0xCC,0xE2,0x91,0xE8,0x3B,0x81,0x6D,0x42,0xB2,
+0x38,0x73,0x43,0x02,0x28,0x24,0x84,0x60,0xE2,0x72,0xE8,0x29,0x38,0x55,0x8D,0x01,
+0x40,0x68,0x0C,0x20,0x38,0x23,0x95,0x01,0x38,0x54,0x15,0x01,0x88,0xD4,0x8A,0x45,
+0x96,0x91,0x97,0x53,0x12,0x53,0x14,0xB2,0xA5,0x80,0xE0,0xC5,0xE8,0x02,0xAC,0x80,
+0x4E,0x57,0x00,0x14,0x46,0x61,0x00,0x05,0x02,0x63,0x02,0xD6,0xE0,0xC5,0xE8,0x0D,
+0x46,0x51,0x00,0x05,0x12,0x22,0x82,0xD6,0x46,0x21,0x00,0x05,0x10,0x41,0x05,0xAE,
+0x46,0x21,0x00,0x05,0x10,0x31,0x05,0xAF,0x8C,0x61,0xD5,0xD7,0xC9,0x03,0xAC,0x40,
+0xD5,0x05,0xA4,0x80,0x40,0x21,0x04,0x57,0xAC,0x80,0x8C,0x81,0x8C,0x02,0xD5,0xC5,
+0xEB,0x4E,0x46,0x21,0x00,0x05,0x02,0x10,0x02,0xD6,0x00,0x21,0x05,0xAE,0x46,0x01,
+0x00,0x01,0x02,0x00,0x00,0x12,0x38,0x26,0x09,0x01,0x96,0x03,0x88,0x02,0xE0,0x01,
+0xEB,0x19,0xEB,0x24,0xE8,0x0C,0x46,0x01,0x00,0x01,0x02,0x00,0x00,0x12,0x96,0x03,
+0x88,0x40,0x8A,0x22,0xEB,0x4E,0x12,0x10,0x02,0xD6,0xD5,0x06,0x84,0x00,0x46,0x11,
+0x00,0x05,0x12,0x00,0x82,0xD6,0xEB,0x4E,0xEB,0x1C,0x84,0x40,0x40,0xA0,0x04,0x09,
+0x2E,0x87,0xFF,0xAC,0x2F,0x40,0x00,0x15,0x46,0x01,0x00,0x01,0x00,0x70,0x02,0xC0,
+0x2E,0xB7,0xFD,0x4C,0x80,0x82,0x80,0x62,0x44,0xE0,0x00,0x4C,0x80,0xA2,0x53,0x59,
+0x80,0x00,0xE2,0x71,0xE8,0x52,0x80,0x06,0x42,0x01,0xB8,0x73,0x40,0xD1,0x84,0x08,
+0x50,0x00,0x29,0x64,0x86,0x00,0xE3,0x92,0xE8,0x46,0x22,0x10,0x00,0x00,0x4E,0x15,
+0x00,0x13,0xEA,0x85,0xEA,0x99,0x39,0x66,0x34,0x01,0xEA,0x7E,0x40,0xFB,0x3C,0x00,
+0x40,0xF7,0x84,0x07,0xE8,0x14,0xEA,0x85,0xEA,0x99,0xEA,0x7E,0x40,0xFB,0x3C,0x00,
+0x8A,0x2F,0xD5,0x0B,0xEA,0x85,0xEA,0x99,0xEA,0x7E,0x52,0xF7,0x80,0x00,0xE0,0x2F,
+0xE8,0x06,0xEA,0x85,0xEA,0x99,0x88,0x2F,0xAC,0x40,0xD5,0x02,0xAD,0x40,0x22,0x10,
+0x00,0x00,0x4E,0x17,0x00,0x08,0xE0,0x2A,0xE8,0x0B,0xE1,0xE1,0xE8,0x08,0x8A,0x29,
+0xD5,0x04,0xE0,0x35,0xE8,0x04,0x88,0x29,0xAC,0x40,0xD5,0x02,0xAD,0x40,0x2A,0x10,
+0x00,0x01,0x40,0xF0,0xA0,0x00,0x4E,0xF4,0x00,0x09,0x8C,0x81,0x97,0x21,0xE2,0x94,
+0xE9,0x04,0x58,0x73,0x80,0x01,0x85,0x61,0x4E,0x14,0x00,0x04,0x8A,0x41,0x96,0x91,
+0x8D,0x81,0xD5,0xBA,0x8C,0x61,0xD5,0xAE,0x46,0x01,0x00,0x01,0x10,0x70,0x02,0xC0,
+0x3E,0xB7,0xFD,0x4C,0x2E,0x00,0x00,0x46,0x94,0x05,0xE0,0x02,0xE8,0x07,0x96,0x38,
+0xEB,0x03,0xEB,0x78,0xEA,0xEC,0x84,0x01,0xEA,0x76,0x46,0x01,0x00,0x07,0x04,0x10,
+0x03,0xF2,0xEB,0x4E,0xEB,0x1C,0xE2,0x20,0xE8,0x11,0x46,0x01,0x00,0x01,0x00,0x00,
+0x02,0xC0,0xEB,0x78,0xEB,0x05,0xEA,0xEC,0x84,0x21,0x3E,0x17,0xFD,0x4C,0x2E,0x07,
+0xFD,0x28,0x8C,0x01,0xB8,0x91,0x3E,0x17,0xFD,0x5D,0xB8,0x00,0x5A,0x08,0x03,0x05,
+0x84,0xA1,0x84,0xE4,0xD5,0x03,0x84,0xA0,0x84,0xE1,0xEB,0x08,0x5A,0x08,0x01,0x04,
+0x80,0xA0,0x84,0xE2,0x40,0x03,0x94,0x20,0x54,0x90,0x00,0xFF,0x2F,0x67,0xFD,0x6E,
+0x2F,0x37,0xFD,0x78,0x84,0x80,0x51,0x79,0xFF,0xFF,0x80,0x44,0x45,0x50,0x00,0x26,
+0x45,0x40,0x00,0x24,0x44,0xE0,0x00,0x48,0x44,0xDF,0xFF,0xB8,0xE2,0x51,0xE8,0x41,
+0x42,0xA1,0x38,0x24,0x52,0x12,0x29,0x64,0x50,0x35,0x19,0x54,0x42,0xB1,0x54,0x24,
+0x42,0x81,0x50,0x24,0x88,0x26,0x88,0x66,0x42,0xC1,0x34,0x24,0x86,0x00,0xE3,0x92,
+0xE8,0x2C,0x40,0xF0,0x90,0x00,0x4F,0x62,0x00,0x0D,0x4F,0x32,0x00,0x0B,0x38,0x07,
+0xAD,0x11,0x22,0xF0,0xFD,0x2F,0x42,0x07,0xDC,0x73,0x40,0x00,0x4C,0x16,0xD5,0x12,
+0x40,0x01,0xB0,0x00,0x38,0x00,0x21,0x11,0x39,0x87,0xAD,0x11,0x40,0xF7,0xA8,0x00,
+0xFE,0x2C,0x22,0xF7,0xFA,0x80,0x42,0x0C,0x1C,0x73,0x42,0x07,0x94,0x73,0x40,0x00,
+0x24,0x16,0x12,0x00,0xFD,0x2F,0xA4,0x18,0x12,0x01,0x82,0x88,0x2A,0x00,0x80,0x01,
+0x1A,0x01,0x80,0x01,0x8D,0x81,0xD5,0xD4,0x8C,0x41,0x50,0x42,0x7F,0xB4,0xD5,0xBF,
+0x46,0x01,0x00,0x04,0x58,0x00,0x0A,0xA8,0x44,0x10,0x00,0xFD,0x44,0x20,0x02,0xF8,
+0xEB,0x1F,0x2E,0x08,0x00,0x14,0x4E,0x04,0x00,0xAC,0x2E,0x07,0xFD,0x35,0xC8,0x04,
+0x2F,0x00,0x00,0x8C,0xD5,0x03,0x45,0x00,0x00,0xFF,0x2E,0x07,0xFD,0x4A,0xC8,0x04,
+0x2E,0x70,0x00,0x8C,0xD5,0x02,0xEA,0xE4,0x2E,0x50,0x01,0x29,0xEA,0x3C,0x9D,0x29,
+0x50,0x90,0x7F,0xFF,0x51,0x10,0x00,0x01,0x46,0x11,0x00,0x04,0x58,0x10,0x85,0x04,
+0x84,0x61,0x86,0x40,0xE2,0x64,0xE8,0x20,0x22,0x20,0x80,0x01,0x23,0x30,0x80,0x02,
+0xE1,0xE2,0xE8,0x06,0x8A,0x53,0xFE,0xBC,0x90,0x48,0xAC,0x88,0xD5,0x03,0x13,0x20,
+0x80,0x00,0x38,0x20,0x81,0x11,0x39,0x30,0xA5,0x11,0xE1,0xE2,0xE8,0x07,0x8A,0x53,
+0xFE,0xBC,0x90,0x48,0x38,0x20,0xC5,0x09,0xD5,0x03,0x39,0x20,0xC5,0x09,0x8C,0x61,
+0x50,0x10,0x80,0x4C,0xD5,0xE0,0x44,0x70,0x00,0x4C,0xFF,0xEC,0x9C,0x81,0x46,0x11,
+0x00,0x04,0x58,0x10,0x84,0xBA,0x51,0x23,0x80,0x4C,0x86,0x21,0x86,0x60,0xE3,0xA2,
+0xE8,0x21,0x22,0x30,0x80,0x26,0x22,0x90,0x80,0x4C,0xE1,0x23,0xE8,0x06,0x8A,0x69,
+0xEA,0xEF,0x90,0x68,0xAC,0xC8,0xD5,0x03,0x13,0x30,0x80,0x00,0x40,0x90,0x9C,0x00,
+0x38,0x30,0x9C,0x11,0x22,0x94,0xFF,0xDA,0xE1,0x23,0xE8,0x07,0x8A,0x69,0xEA,0xEF,
+0x90,0x68,0x38,0x30,0xC8,0x09,0xD5,0x03,0x39,0x30,0xC8,0x09,0x8D,0xA1,0x8C,0x22,
+0xD5,0xDF,0x46,0x11,0x00,0x04,0x22,0x30,0x82,0x5D,0x46,0x11,0x00,0x04,0x22,0x10,
+0x82,0x82,0x44,0x70,0x00,0x4C,0x88,0x23,0x90,0x21,0x46,0x31,0x00,0x04,0x12,0x11,
+0x82,0x5C,0x80,0x66,0x80,0x26,0x42,0x32,0x1C,0x73,0x42,0x12,0x9C,0x73,0x23,0x01,
+0x91,0xBB,0x22,0x10,0x91,0xBA,0x88,0x30,0x90,0x21,0x12,0x11,0x91,0xBA,0x40,0x33,
+0x08,0x20,0x40,0x13,0x00,0x20,0x22,0x70,0x91,0xBA,0x22,0x11,0x91,0xE0,0x88,0x27,
+0x90,0x21,0x12,0x11,0x91,0xBA,0xFA,0x76,0xFF,0x1C,0x98,0x62,0x42,0x22,0x8C,0x73,
+0x88,0x04,0x40,0x03,0x00,0x20,0x40,0x13,0x04,0x20,0x40,0x63,0x08,0x20,0x22,0x40,
+0x11,0xBA,0x22,0x03,0x11,0xBA,0x88,0x04,0x90,0x01,0x12,0x00,0x91,0xBA,0xFC,0xE0,
+0xEB,0x78,0x58,0x10,0x80,0x28,0x38,0x00,0x81,0x01,0xDD,0x9E,0xFC,0x40,0x82,0x40,
+0x2E,0x47,0xFE,0xA1,0x3D,0x0C,0x00,0x48,0x3D,0x1C,0x00,0x49,0x84,0x00,0x80,0xE0,
+0x80,0x40,0x86,0x6C,0x44,0x90,0xFF,0xFF,0x85,0x41,0x2E,0x30,0x01,0x2B,0xE2,0x43,
+0xE8,0x2D,0x80,0x72,0x42,0x31,0x4C,0x73,0xB4,0xA3,0xA0,0xD9,0x4C,0x54,0x80,0x24,
+0x40,0x62,0x08,0x0E,0x97,0xB4,0xC6,0x15,0x46,0x61,0x00,0x07,0x00,0x63,0x03,0x99,
+0x40,0xF8,0x18,0x01,0xE2,0xAF,0xE8,0x17,0xE2,0xC5,0xE8,0x15,0x46,0x61,0x00,0x07,
+0x00,0x63,0x03,0x9A,0x40,0xF8,0x98,0x01,0xE2,0x6F,0xE8,0x0D,0xE2,0xC3,0xE8,0x0B,
+0xCF,0x03,0xA9,0x49,0xB6,0x61,0x40,0x35,0x08,0x0C,0x40,0x42,0x0C,0x12,0x9C,0xC1,
+0x96,0x18,0x84,0xE1,0x8C,0x41,0x96,0x90,0xD5,0xD1,0x3E,0x47,0xFE,0xA1,0xFC,0xC0,
+0xFC,0x00,0x84,0x1F,0x3E,0x07,0xFE,0xA1,0x84,0x00,0x3C,0x0B,0xFF,0xC1,0x3C,0x0B,
+0xFF,0xC0,0x84,0x3F,0x3C,0x1B,0xFF,0xBF,0x3C,0x1B,0xFF,0xBE,0x3E,0x2F,0xFF,0x78,
+0xAC,0x10,0xAC,0x11,0x3E,0x2F,0xFF,0x74,0xAC,0x10,0xAC,0x11,0x3E,0x2F,0xFF,0x70,
+0xAC,0x50,0xAC,0x51,0x3E,0x2F,0xFF,0x6C,0xAC,0x50,0xAC,0x51,0x3E,0x07,0xFF,0x14,
+0xEA,0xD5,0x46,0x01,0x00,0x07,0x58,0x00,0x03,0x80,0xA6,0x46,0xA6,0x87,0xEA,0x79,
+0x3C,0x1B,0xFF,0x61,0x00,0x10,0x00,0x08,0x00,0x20,0x00,0x09,0xEA,0x79,0x3C,0x1B,
+0xFF,0x60,0x00,0x10,0x00,0x0A,0x00,0x20,0x00,0x0B,0xEA,0x79,0x3C,0x1B,0xFF,0x5F,
+0x00,0x10,0x00,0x0C,0x3E,0x17,0xFE,0xBD,0x00,0x10,0x00,0x0D,0x3E,0x17,0xFE,0xBC,
+0x00,0x10,0x00,0x0E,0x3E,0x17,0xFE,0xBB,0x00,0x10,0x00,0x0F,0x3E,0x17,0xFE,0xBA,
+0x3E,0x18,0x01,0x20,0xA4,0x8A,0x00,0x30,0x00,0x10,0x9B,0x13,0x3C,0x4B,0xFF,0x5C,
+0x3C,0x3B,0xFF,0x5B,0xA4,0x48,0x00,0x30,0x00,0x11,0x9B,0x0B,0x3C,0x4B,0xFF,0x5A,
+0x3C,0x3B,0xFF,0x59,0x00,0x30,0x00,0x12,0x8A,0x43,0x3C,0x2B,0xFF,0x58,0x3C,0x3B,
+0xFF,0x57,0x00,0x20,0x00,0x13,0x8A,0x22,0x3C,0x1B,0xFF,0x56,0x3C,0x2B,0xFF,0x55,
+0x00,0x10,0x00,0x14,0x00,0x20,0x00,0x15,0xEA,0x79,0x3C,0x1B,0xFF,0x54,0x00,0x10,
+0x00,0x16,0x3C,0x1B,0xFF,0x53,0x00,0x10,0x00,0x17,0x3C,0x1B,0xFF,0x52,0x00,0x00,
+0x00,0x18,0x3C,0x0B,0xFF,0x51,0xFA,0x44,0x3E,0x0F,0xFF,0x00,0x84,0x20,0xDD,0x42,
+0x3E,0x6F,0xFF,0x20,0x3E,0x0F,0xFE,0xEC,0x84,0x20,0xFA,0x44,0xDD,0x42,0x80,0x06,
+0x84,0x3F,0x44,0x20,0x00,0x4C,0xDD,0x42,0x80,0x06,0x84,0x3F,0x44,0x20,0x00,0x4C,
+0xDD,0x42,0xEA,0xD9,0x84,0x20,0xFA,0x56,0xDD,0x42,0x46,0x01,0x00,0x01,0xEA,0xD8,
+0x84,0x20,0xFA,0x43,0xDD,0x42,0x3E,0x0F,0xFF,0x18,0x84,0x20,0x84,0x48,0xDD,0x42,
+0xFC,0x80,0xFC,0x00,0xEA,0x33,0x2E,0x67,0xFE,0x24,0x9E,0x71,0x96,0x48,0x5C,0xF0,
+0x80,0xFE,0xE8,0x23,0xC8,0x22,0x40,0x03,0x40,0x08,0x40,0x00,0x19,0x00,0x88,0x06,
+0x40,0x00,0x1B,0x00,0x95,0xB2,0xDD,0x4A,0x52,0x63,0x7F,0xF0,0x44,0x00,0x44,0xCC,
+0x40,0x00,0x1B,0x00,0xDD,0x4A,0x84,0xCC,0x8E,0xC1,0x84,0x1F,0x97,0xB0,0xDD,0x4A,
+0xCE,0xFC,0x84,0x0A,0x49,0xFF,0xD7,0xCA,0x3E,0x0F,0xFE,0x24,0x84,0x3F,0x84,0x41,
+0xDD,0x42,0x84,0x01,0x3E,0x07,0xFE,0xA0,0xFC,0x80,0x5A,0x08,0x08,0x14,0x5A,0x10,
+0x0C,0x1D,0xE6,0x2D,0xE8,0x08,0xE6,0x25,0xE9,0x17,0xE6,0x27,0xE9,0x0F,0x5A,0x10,
+0x09,0x15,0xD5,0x12,0x5A,0x10,0x2F,0x12,0x5A,0x10,0x79,0x0D,0x5A,0x10,0x1F,0x0E,
+0xD5,0x0B,0x5A,0x10,0xFF,0x0B,0x5A,0x10,0x79,0x06,0x5A,0x18,0x0D,0x07,0x84,0x27,
+0xD5,0x04,0x84,0x29,0xD5,0x02,0x84,0x28,0x80,0x01,0xDD,0x9E,0x2E,0x07,0xFE,0xA0,
+0xDD,0x9E,0x84,0x00,0x3E,0x07,0xFE,0xA0,0xDD,0x9E,0xE2,0x20,0xE8,0x03,0x8A,0x01,
+0xD5,0x02,0x9A,0x08,0x96,0x01,0xDD,0x9E,0xFC,0x60,0x80,0xE0,0xEA,0x5F,0x80,0xC1,
+0xE6,0x02,0xE8,0x0A,0x84,0x20,0x3E,0x17,0xFE,0x9F,0x3E,0x17,0xFE,0x9E,0x3E,0x17,
+0xFE,0x9D,0x3E,0x17,0xFE,0x9C,0x3C,0x13,0xFF,0xBC,0xE2,0x27,0xE8,0x07,0x3C,0x7B,
+0xFF,0xBC,0x3C,0x6B,0xFF,0xBD,0x3C,0x0B,0xFF,0x8F,0xEA,0xA2,0xE2,0xE1,0xE8,0x07,
+0x3C,0x7B,0xFF,0xB8,0x3C,0x6B,0xFF,0xB9,0x3C,0x0B,0xFF,0x8D,0x3C,0x13,0xFF,0xBB,
+0xE2,0x26,0xE8,0x07,0x3C,0x7B,0xFF,0xBA,0x3C,0x6B,0xFF,0xBB,0x3C,0x0B,0xFF,0x8E,
+0xEA,0xA0,0xE2,0xC1,0xE8,0x07,0x3C,0x7B,0xFF,0xB6,0x3C,0x6B,0xFF,0xB7,0x3C,0x0B,
+0xFF,0x8C,0x3C,0xA3,0xFF,0xBF,0x80,0x07,0x80,0x2A,0xDD,0x41,0x81,0x60,0x3C,0x93,
+0xFF,0xBE,0x80,0x06,0x80,0x29,0xDD,0x41,0x46,0x11,0x00,0x07,0x00,0x10,0x83,0x81,
+0xE2,0x2B,0xE9,0x04,0xE2,0x20,0x4E,0xF2,0x00,0x58,0xE3,0x47,0x2E,0x0F,0xFE,0x9D,
+0xE8,0x0B,0x2E,0x37,0xFE,0x9F,0xEB,0x42,0xEA,0x9C,0xE4,0x02,0x8C,0x21,0xEA,0x9F,
+0xE8,0x11,0x8C,0x01,0xD5,0x0D,0xE2,0xEA,0xE8,0x0D,0x2E,0x37,0xFE,0x9F,0xEB,0x42,
+0xEA,0x9C,0x5E,0xF0,0x7F,0xFF,0x8E,0x21,0xEA,0x9F,0xE9,0x04,0x8E,0x01,0x3E,0x07,
+0xFE,0x9D,0xE3,0x26,0x2E,0x0F,0xFE,0x9C,0xE8,0x0C,0x2E,0x37,0xFE,0x9E,0x3E,0x2F,
+0xFE,0xEC,0xEA,0x9C,0xE4,0x02,0x8C,0x21,0xEA,0x9F,0xE8,0x12,0x8C,0x01,0xD5,0x0E,
+0xE2,0xC9,0xE8,0x0E,0x2E,0x37,0xFE,0x9E,0x3E,0x2F,0xFE,0xEC,0xEA,0x9C,0x5E,0xF0,
+0x7F,0xFF,0x8E,0x21,0xEA,0x9F,0xE9,0x04,0x8E,0x01,0x3E,0x07,0xFE,0x9C,0x2E,0x0F,
+0xFE,0x9D,0xC8,0x0C,0x4C,0x75,0x00,0x0B,0x2E,0x07,0xFE,0x9F,0x8C,0x01,0x96,0x00,
+0xE6,0x0A,0xE9,0x02,0x84,0x09,0x3E,0x07,0xFE,0x9F,0x2E,0x0F,0xFE,0x9C,0xC8,0x0C,
+0x4C,0x64,0x80,0x0B,0x2E,0x07,0xFE,0x9E,0x8C,0x01,0x96,0x00,0xE6,0x0A,0xE9,0x02,
+0x84,0x09,0x3E,0x07,0xFE,0x9E,0xFC,0xE0,0xFC,0x61,0x83,0x80,0xEA,0x5F,0x81,0x41,
+0xE6,0x02,0x46,0xD1,0x00,0x01,0x58,0xD6,0x81,0x90,0x46,0xC1,0x00,0x01,0x58,0xC6,
+0x00,0x60,0xE8,0x13,0x84,0x40,0x3E,0x1F,0xFE,0x88,0x80,0x02,0x82,0x42,0xD5,0x11,
+0x38,0x02,0x0D,0x09,0x38,0x03,0x8D,0x09,0x80,0x66,0x5A,0x68,0x08,0x10,0x8C,0x50,
+0x19,0x20,0x80,0x01,0x5A,0x29,0x30,0x06,0x3E,0x8F,0xFE,0x88,0x85,0x20,0xD5,0x0E,
+0x84,0x60,0x40,0x46,0x88,0x00,0x40,0x76,0x08,0x00,0x9D,0x99,0xCB,0xEA,0x39,0xC6,
+0x88,0x09,0x38,0xA6,0x08,0x09,0x80,0x66,0xD5,0xF9,0x46,0x01,0x00,0x01,0xEA,0xD8,
+0x38,0x60,0x24,0x00,0x40,0xB4,0x8C,0x08,0x40,0x05,0x98,0x00,0x38,0x16,0x01,0x01,
+0x38,0x76,0x81,0x01,0xF1,0x81,0x3E,0x1F,0xFB,0x70,0x38,0xE0,0x80,0x00,0x80,0x1C,
+0x80,0x27,0xDD,0x41,0xE6,0x06,0xE9,0x0B,0x5A,0xE8,0x01,0x05,0x40,0x7E,0x1C,0x06,
+0xD5,0x07,0x5A,0xE8,0x03,0x05,0x40,0x73,0xF0,0x06,0xD5,0x02,0xEA,0xE4,0x80,0x0A,
+0xF1,0x01,0xDD,0x41,0xE6,0x06,0xE9,0x0D,0x5A,0xE8,0x02,0x06,0xF0,0x01,0x40,0x75,
+0x00,0x06,0xD5,0x07,0x5A,0xE8,0x04,0x06,0xF0,0x01,0xE2,0x0A,0xE9,0x04,0xD5,0x18,
+0x5A,0x78,0x01,0x16,0x00,0x04,0x00,0x00,0x8C,0x01,0x96,0x00,0x5A,0x08,0x02,0x18,
+0x8C,0xC1,0x84,0x00,0x96,0xB0,0x40,0x65,0x88,0x00,0x10,0x04,0x00,0x00,0x46,0x01,
+0x00,0x01,0xEA,0xD8,0x38,0x20,0x24,0x08,0xF8,0x04,0xD5,0x0B,0xCF,0x0A,0x88,0xCB,
+0x39,0xC6,0x99,0x09,0x38,0xA6,0x19,0x09,0x83,0xFF,0x84,0x00,0x10,0x04,0x00,0x00,
+0x8D,0x21,0x8D,0x01,0x5A,0x98,0x13,0xAB,0xFC,0xE1,0xFC,0x65,0x80,0xC0,0x3C,0xD3,
+0xFF,0xBF,0x3C,0xA3,0xFF,0xBE,0xEA,0x5F,0x80,0xE1,0xE6,0x02,0xE8,0x04,0x84,0x1F,
+0x3E,0x07,0xFE,0x87,0x40,0xF6,0x98,0x06,0xE9,0x04,0x44,0x90,0x00,0x40,0xD5,0x03,
+0x44,0x90,0x00,0x60,0x80,0x06,0x80,0x2D,0xDD,0x41,0xE3,0x47,0x81,0x60,0x85,0x00,
+0xE8,0x02,0xFB,0x10,0x80,0x07,0x80,0x2A,0xDD,0x41,0x80,0x80,0x46,0x01,0x00,0x07,
+0x00,0x00,0x03,0x80,0xB6,0x1F,0x02,0x5F,0x80,0x00,0xE2,0xAB,0xE9,0x03,0xE2,0xA4,
+0xE8,0x09,0x2E,0x07,0xFE,0x87,0x5A,0x08,0xFF,0x06,0xE2,0x8B,0xE8,0x1D,0x3E,0x97,
+0xFE,0x87,0xE2,0xCD,0x14,0xFF,0x80,0x02,0x40,0x16,0x98,0x06,0xF1,0x83,0xE3,0x47,
+0x2E,0x07,0xFE,0x87,0x14,0xFF,0x80,0x04,0xE2,0xEA,0xF0,0x81,0x3E,0xCF,0xFE,0xC4,
+0x3F,0xCF,0xFF,0x20,0x80,0x04,0x82,0xAB,0x85,0xC0,0x86,0x8C,0x14,0xFF,0x80,0x05,
+0x44,0xD0,0x00,0xFF,0xD5,0x06,0xE3,0x64,0xE8,0xE5,0x3E,0x87,0xFE,0x87,0xD5,0xE2,
+0x02,0xA6,0x00,0x00,0x5A,0xA0,0xFF,0x2A,0x02,0x1E,0x00,0x00,0xE2,0x26,0xE9,0x04,
+0x44,0x90,0x00,0x40,0xD5,0x03,0x44,0x90,0x00,0x60,0x80,0x06,0x15,0x4F,0x80,0x08,
+0xF5,0x87,0xF4,0x86,0xDD,0x41,0x02,0x1E,0x00,0x01,0x82,0xA0,0xE2,0x27,0xF4,0x06,
+0xF5,0x07,0x05,0x4F,0x80,0x08,0x85,0x00,0xE8,0x02,0xFB,0x10,0x80,0x07,0x15,0x4F,
+0x80,0x09,0xF5,0x88,0xF4,0x87,0x15,0x5F,0x80,0x06,0xDD,0x41,0x05,0x4F,0x80,0x09,
+0xF5,0x08,0xF4,0x07,0x05,0x5F,0x80,0x06,0x80,0x2A,0x42,0x17,0x50,0x73,0xEA,0xA8,
+0x38,0x11,0x04,0x00,0x40,0xF0,0x9C,0x09,0x5A,0xF8,0x01,0x19,0x5A,0xA0,0xFF,0x17,
+0x55,0x60,0x80,0x60,0x96,0x67,0xC1,0x05,0xB4,0x5F,0xFE,0x54,0x96,0x48,0xD5,0x02,
+0x80,0x2F,0x4D,0x64,0xC0,0x04,0xE2,0x35,0xD5,0x04,0x4D,0x64,0x40,0x08,0xE2,0x20,
+0xE8,0x05,0x50,0x25,0x00,0x01,0x12,0x26,0x00,0x00,0x02,0x16,0x00,0x00,0xC1,0x1E,
+0x5A,0x10,0xFF,0x1D,0xEA,0xA8,0x42,0x27,0x50,0x73,0xF8,0x33,0xC9,0x03,0xF1,0x05,
+0xD5,0x04,0x5A,0x18,0x20,0x06,0xF1,0x04,0xC1,0x11,0xCC,0x0C,0xD5,0x0F,0x5A,0x18,
+0x60,0x04,0xF1,0x03,0xD5,0x04,0x5A,0x18,0x40,0x0A,0xF1,0x02,0xC1,0x07,0x4E,0xB2,
+0x00,0x06,0x12,0x6E,0x00,0x00,0x12,0x7E,0x00,0x01,0x42,0x17,0x50,0x24,0xEA,0xA8,
+0x38,0x11,0x04,0x00,0xF2,0x01,0x54,0x10,0x80,0x60,0xFE,0x55,0x5A,0x18,0x20,0x04,
+0x12,0xD6,0x00,0x00,0x0A,0x16,0x00,0x01,0x42,0xA7,0x50,0x24,0xEA,0xA8,0x40,0x35,
+0x04,0x00,0x38,0x31,0x0C,0x00,0x92,0x67,0xCB,0x18,0x5A,0x10,0xFF,0x17,0x88,0x4A,
+0x88,0x22,0x00,0x10,0xFF,0xFF,0x54,0x10,0x80,0x60,0x83,0xFF,0x40,0x24,0x04,0x03,
+0x5A,0x28,0x20,0x04,0xE2,0xA0,0xE9,0x07,0x40,0x14,0x84,0x03,0x5A,0x18,0x20,0x06,
+0xE2,0xB5,0xE8,0x03,0x12,0xD6,0x7F,0xFF,0x50,0xE7,0x00,0x01,0x51,0xCE,0x00,0x04,
+0x5A,0xE0,0x13,0x04,0x48,0xFF,0xFF,0x5E,0xFC,0xE5,0xFC,0x60,0x80,0xA0,0x46,0x01,
+0x00,0x07,0x02,0x60,0x01,0xDC,0x46,0x01,0x00,0x07,0x02,0x70,0x01,0xDD,0xE6,0x42,
+0x81,0x41,0x81,0x22,0x97,0xB1,0x97,0xF9,0xE9,0x17,0x84,0x05,0x44,0x20,0x27,0x10,
+0xDD,0x5A,0x40,0x03,0x08,0x57,0x44,0x10,0x03,0xE8,0x96,0x91,0x40,0x21,0x04,0x57,
+0x44,0x0F,0xFC,0x18,0x42,0x61,0x00,0x73,0x8C,0x41,0x84,0x0A,0x40,0x21,0x00,0x16,
+0x42,0x60,0x04,0x73,0x97,0xB1,0x2E,0x07,0xFE,0x86,0xC0,0x20,0x5A,0x00,0x05,0x1F,
+0x5A,0x00,0x04,0x07,0x3C,0x03,0xFF,0x42,0x8C,0x01,0x3C,0x0B,0xFF,0x42,0xEB,0x40,
+0x3C,0x13,0xFF,0x5B,0xE2,0x20,0x4E,0xF2,0x00,0xE1,0x3C,0x13,0xFF,0x5C,0xE2,0x01,
+0x4E,0xF2,0x00,0xDC,0xEB,0x3F,0x3C,0x13,0xFF,0x59,0xE2,0x20,0x4E,0xF2,0x00,0xD6,
+0x3C,0x13,0xFF,0x5A,0xE2,0x01,0x4E,0xF2,0x00,0xD1,0x2E,0x27,0xFE,0x86,0xCA,0x15,
+0x5A,0x90,0x01,0x03,0xF8,0x4E,0xEA,0x29,0x4C,0x50,0x00,0xAE,0x3E,0x97,0xFE,0x86,
+0x3C,0x5B,0xFF,0x41,0x3C,0xAB,0xFF,0x40,0x3C,0x2B,0xFF,0x42,0x3C,0x2B,0xFF,0x3F,
+0x84,0x1F,0x3E,0x07,0xFC,0xF8,0xF8,0x3D,0x54,0x01,0x00,0xFD,0x5A,0x00,0x01,0x04,
+0x48,0x00,0x00,0x55,0x5A,0x98,0x01,0x38,0x80,0x25,0xEB,0x40,0xDD,0x41,0x2E,0xB7,
+0xFE,0xBA,0xE3,0x60,0xE9,0x06,0xEB,0x3F,0x80,0x2A,0xDD,0x41,0xE3,0x60,0xE8,0x13,
+0x84,0x05,0xDD,0x5A,0xDD,0x5C,0x40,0x13,0x00,0x17,0x84,0x2A,0x96,0x01,0x40,0x00,
+0x04,0x17,0x84,0x56,0x42,0x60,0x08,0x73,0x8C,0x01,0x40,0x00,0x04,0x56,0x42,0x60,
+0x88,0x73,0xD5,0x16,0x3C,0x13,0xFF,0x42,0x3C,0x23,0xFF,0x3F,0x2E,0x07,0xFE,0xBD,
+0x88,0x02,0xE0,0x01,0x4E,0xF2,0x00,0x70,0x84,0x05,0xDD,0x5A,0x84,0x0A,0x40,0x23,
+0x00,0x37,0x96,0x49,0x8A,0xC1,0x8C,0x21,0x40,0x00,0x80,0x36,0x88,0xC1,0x97,0xB1,
+0x48,0x00,0x00,0x62,0x4E,0x93,0x00,0x60,0x3C,0x03,0xFF,0x42,0x3C,0x33,0xFF,0x3F,
+0xE2,0x60,0xE8,0x11,0x2E,0x17,0xFE,0xBD,0x88,0x23,0xE0,0x20,0xE9,0x0C,0x84,0x22,
+0x5A,0x20,0x01,0x05,0x5A,0x28,0x03,0x05,0x84,0x24,0x3E,0x17,0xFE,0x86,0x3C,0x0B,
+0xFF,0x3F,0xD5,0x49,0x84,0x05,0xDD,0x5A,0xD5,0x46,0x5A,0x28,0x02,0x45,0x3C,0xB3,
+0xFF,0x42,0x3C,0x83,0xFF,0x3F,0xE3,0x68,0xE9,0x32,0x2E,0x07,0xFE,0xBC,0x88,0x08,
+0xE1,0x60,0xE8,0x2D,0x5A,0x98,0x01,0x38,0xEA,0x29,0xD0,0x35,0x80,0x25,0xEB,0x40,
+0xDD,0x41,0x2E,0xC7,0xFE,0xBA,0xE2,0x0C,0xE8,0x10,0xEB,0x3F,0x80,0x2A,0xDD,0x41,
+0xE2,0x0C,0xE8,0x0B,0x2E,0x07,0xFE,0xBB,0x88,0x08,0xE1,0x60,0xE9,0x06,0x84,0x03,
+0xDD,0x5A,0x3C,0xBB,0xFF,0x3F,0xD5,0x1F,0x84,0x05,0xDD,0x5A,0xDD,0x5C,0x40,0x13,
+0x80,0x17,0x84,0x2A,0x96,0x01,0x40,0x00,0x04,0x17,0x84,0x56,0x42,0x70,0x08,0x73,
+0x8C,0x01,0x40,0x00,0x04,0x56,0x42,0x70,0x88,0x73,0xD5,0x0C,0x84,0x05,0xDD,0x5A,
+0x84,0x0A,0x40,0x23,0x80,0x37,0x96,0x49,0x8A,0xE1,0x8C,0x21,0x40,0x00,0x80,0x36,
+0x88,0xE1,0x97,0xF9,0x2E,0x07,0xFE,0x86,0x5A,0x08,0x04,0x09,0x44,0x0F,0xFF,0x80,
+0x3E,0x07,0xFC,0xF8,0x84,0x00,0xDD,0x5A,0xD5,0x07,0x5A,0x08,0x05,0x06,0x4E,0x93,
+0x00,0x04,0x3E,0x97,0xFE,0x86,0x46,0x01,0x00,0x07,0x12,0x60,0x01,0xDC,0x46,0x01,
+0x00,0x07,0x12,0x70,0x01,0xDD,0xFC,0xE0,0x84,0x05,0x44,0x30,0x03,0xE8,0xDD,0x5A,
+0x40,0x03,0x0C,0x77,0xEA,0x2A,0x96,0xD9,0x40,0x31,0x84,0x77,0x44,0x0F,0xFF,0x9C,
+0x42,0x61,0x80,0x73,0x8C,0x61,0x84,0x0A,0x40,0x31,0x80,0x16,0x42,0x60,0x04,0x73,
+0x97,0xB1,0x48,0xFF,0xFF,0x1C,0xFC,0x00,0x84,0x00,0x3E,0x6F,0xFF,0x00,0x3E,0x5F,
+0xFE,0xEC,0x80,0x20,0x80,0x40,0x2A,0x43,0x00,0x01,0xC4,0x0E,0x22,0x33,0x00,0x00,
+0xC3,0x0B,0x42,0x42,0x00,0x03,0xE4,0x85,0xE9,0x07,0x42,0x31,0x80,0x03,0xE4,0x65,
+0xE9,0x03,0x8C,0x21,0x96,0x48,0x2A,0x42,0x80,0x01,0xC4,0x0E,0x22,0x32,0x80,0x00,
+0xC3,0x0B,0x42,0x42,0x00,0x03,0xE4,0x85,0xE9,0x07,0x42,0x31,0x80,0x03,0xE4,0x65,
+0xE9,0x03,0x8C,0x01,0x96,0x00,0x8C,0x41,0x96,0x90,0x5A,0x28,0x09,0xDE,0x8E,0x21,
+0xE6,0x22,0xE8,0x5C,0x8E,0x01,0xE6,0x02,0xE8,0x59,0xEA,0x36,0x3C,0x63,0xFF,0xBF,
+0xE2,0xC0,0xE8,0x03,0x9A,0x86,0xD5,0x02,0x9A,0xB0,0x46,0x11,0x00,0x07,0x00,0x10,
+0x83,0x82,0x46,0x31,0x00,0x07,0x00,0x31,0x83,0x83,0x40,0xF1,0x85,0x00,0xE0,0x4F,
+0xE8,0x45,0x3C,0x23,0xFF,0xC0,0xEA,0x9A,0xE2,0x22,0xE8,0x03,0x9A,0x51,0xD5,0x02,
+0x8A,0x22,0x46,0x21,0x00,0x07,0x00,0x21,0x03,0x84,0x46,0x31,0x00,0x07,0x00,0x31,
+0x83,0x85,0x40,0xF1,0x89,0x00,0xE0,0x2F,0xE8,0x31,0xEA,0xA2,0xDD,0x41,0x5C,0xF0,
+0x00,0x64,0xE8,0x08,0x80,0x06,0x3C,0x13,0xFF,0xBC,0xDD,0x41,0x5C,0xF0,0x00,0x64,
+0xE9,0x25,0x3C,0x43,0xFF,0x8F,0x3C,0x33,0xFF,0x8C,0x84,0x00,0x3E,0x2F,0xFF,0x18,
+0x80,0x20,0x40,0x31,0x90,0x06,0x5A,0x10,0x03,0x07,0xA5,0x10,0xA5,0x51,0xE2,0xA4,
+0xE8,0x05,0xD5,0x02,0xC3,0x03,0x8C,0x01,0xD5,0x02,0x8E,0x01,0x8C,0x21,0x96,0x48,
+0x96,0x02,0x8C,0x42,0x5A,0x18,0x04,0xF1,0x4E,0x07,0x00,0x04,0x84,0x01,0xD5,0x02,
+0x84,0x00,0x3E,0x07,0xFF,0x14,0x84,0x08,0xD5,0x02,0xEA,0x8D,0xFC,0x80,0xFC,0x60,
+0x80,0xE0,0x81,0x21,0x3C,0xA3,0xFF,0x5F,0x5A,0x10,0x0B,0x04,0x5A,0x18,0x07,0x1F,
+0x3C,0x07,0xFF,0x80,0xE4,0x05,0xE9,0x15,0x3C,0xF7,0xFF,0x81,0x5E,0xF7,0xFF,0xFC,
+0xE8,0x10,0x3C,0x07,0xFF,0x82,0xE4,0x05,0xE9,0x0C,0x3C,0x67,0xFF,0x83,0xCE,0x09,
+0x3C,0x07,0xFF,0x84,0xC8,0x07,0x3C,0x67,0xFF,0x85,0x5C,0x63,0x00,0x01,0xD5,0x02,
+0x84,0xC0,0xEA,0x36,0xEB,0x09,0xE2,0x20,0xF8,0x71,0xEB,0x78,0x58,0x10,0x81,0x90,
+0x94,0x3C,0x98,0x81,0x80,0x81,0x5A,0x98,0x0D,0x12,0x3C,0x13,0xFF,0xC1,0x3C,0x03,
+0xFF,0xBF,0xE2,0x20,0x4E,0xF2,0x02,0x3F,0xA4,0x50,0xA4,0x11,0xE2,0x20,0x4E,0xF2,
+0x02,0x3A,0xA4,0x52,0xA4,0x13,0x48,0x00,0x00,0xE5,0xEB,0x78,0x58,0x10,0x80,0x60,
+0x98,0xC1,0x5A,0x90,0x06,0x06,0x5A,0x90,0x09,0x04,0x48,0x00,0x00,0x52,0x38,0xA0,
+0x80,0x01,0xA4,0x19,0xE2,0x0A,0xE9,0x1C,0x3C,0x83,0xFF,0xBE,0x3C,0x63,0xFF,0xBB,
+0x80,0x08,0x80,0x26,0xDD,0x41,0x81,0x80,0x3C,0xB3,0xFF,0xB7,0x80,0x08,0x80,0x2B,
+0xDD,0x41,0xE2,0x0C,0xE9,0x0D,0x3C,0x83,0xFF,0xC0,0x80,0x26,0x80,0x08,0xDD,0x41,
+0x80,0xC0,0x80,0x2B,0x80,0x08,0xDD,0x41,0x40,0x63,0x00,0x06,0xD5,0x02,0x84,0xC1,
+0x5A,0x98,0x06,0x10,0xEA,0xFF,0xE3,0x40,0xE8,0x04,0x40,0x05,0x00,0x11,0xD5,0x02,
+0x96,0x03,0x96,0x01,0xEA,0xA0,0xDD,0x41,0xE6,0x1A,0x4E,0xF3,0x01,0xFA,0xF8,0x9A,
+0x5A,0x90,0x09,0x03,0xF9,0xAB,0x3C,0xB3,0xFF,0xBC,0x3C,0x93,0xFF,0xC1,0x80,0x0B,
+0x80,0x29,0xDD,0x41,0x81,0x80,0x3C,0xA3,0xFF,0xB8,0x80,0x29,0x80,0x0A,0xDD,0x41,
+0xE2,0x0C,0x4E,0xF3,0x01,0xE8,0x3C,0x93,0xFF,0xBF,0x80,0x0B,0x80,0x29,0xDD,0x41,
+0x81,0x60,0x80,0x29,0x80,0x0A,0xDD,0x41,0xE3,0x60,0x48,0x00,0x00,0xFD,0x5A,0x98,
+0x79,0x3A,0x3C,0xA3,0xFF,0xBC,0x3C,0x63,0xFF,0xC1,0x80,0x0A,0x80,0x26,0xDD,0x41,
+0x81,0x60,0x3C,0x93,0xFF,0xB8,0x80,0x26,0x80,0x09,0xDD,0x41,0xE2,0x0B,0x4E,0xF3,
+0x01,0xCA,0x3C,0x63,0xFF,0xBF,0x80,0x0A,0x80,0x26,0xDD,0x41,0x81,0x40,0x80,0x26,
+0x80,0x09,0xDD,0x41,0xE3,0x40,0x4E,0xF3,0x01,0xBE,0x3C,0x93,0xFF,0xB7,0x3C,0x63,
+0xFF,0xC0,0x80,0x09,0x80,0x26,0xDD,0x41,0x81,0x60,0x3C,0xA3,0xFF,0xBB,0x80,0x26,
+0x80,0x0A,0xDD,0x41,0xE2,0x0B,0x4E,0xF3,0x01,0xAE,0x3C,0x63,0xFF,0xBE,0x80,0x0A,
+0x80,0x26,0xDD,0x41,0x81,0x40,0x80,0x26,0x80,0x09,0xDD,0x41,0xE2,0x0A,0x48,0x00,
+0x01,0x9E,0x5A,0x98,0x3D,0x1F,0x84,0x40,0x80,0x22,0x80,0x02,0x3E,0x4F,0xFE,0xEC,
+0x38,0x32,0x09,0x11,0x4E,0x37,0x00,0x05,0x88,0x03,0x96,0x03,0xD5,0x03,0x88,0x23,
+0x96,0x4B,0x8C,0x41,0x5A,0x28,0x0A,0xF6,0x42,0xF0,0x00,0x03,0x42,0x20,0x80,0x03,
+0xE0,0x4F,0xE8,0x04,0x4E,0x13,0x01,0x87,0xF8,0xE4,0x4E,0x03,0x01,0x84,0xF8,0xE1,
+0x5A,0x98,0x05,0x24,0xEB,0x42,0x84,0x29,0x84,0x00,0x2A,0x41,0x00,0x01,0xC4,0x15,
+0x22,0x31,0x00,0x00,0xC3,0x12,0x42,0x52,0x00,0x03,0xE4,0xA5,0xE9,0x0E,0x42,0x51,
+0x80,0x03,0xE4,0xA5,0xE9,0x0A,0xC8,0x06,0x4E,0x44,0x00,0x08,0x40,0x00,0x0C,0x07,
+0xD5,0x04,0x5A,0x08,0x01,0x03,0x84,0x05,0x8E,0x21,0x96,0x48,0xC9,0xE7,0x5A,0x00,
+0x01,0x04,0x48,0x00,0x01,0x60,0xF8,0xBD,0x5A,0x98,0x0E,0x0E,0xA4,0x50,0xEA,0x36,
+0xE2,0x01,0x4E,0xF3,0x01,0x58,0xA4,0x12,0xE2,0x20,0x4E,0xF2,0x01,0x54,0xA4,0x51,
+0xE2,0x20,0xF8,0x49,0x5A,0x98,0x1F,0x21,0xA5,0x51,0xA5,0x12,0xE2,0x85,0x4E,0xF2,
+0x01,0x4A,0xA5,0x13,0x3C,0x63,0xFF,0xC1,0xE2,0xC4,0x4E,0xF2,0x01,0x44,0xA5,0x1C,
+0xEA,0xE0,0xE2,0x04,0x4E,0xF2,0x01,0x3F,0xA4,0x19,0xE2,0x04,0x4E,0xF2,0x01,0x3B,
+0xA4,0x1A,0xE2,0x04,0x4E,0xF2,0x01,0x37,0xA4,0x1B,0xE2,0x04,0x4E,0xF2,0x01,0x33,
+0xA4,0x15,0xE2,0x05,0xF8,0x28,0x5A,0x98,0x2F,0x29,0x3C,0x53,0xFF,0xC1,0x38,0x42,
+0x00,0x01,0xE2,0x85,0x4E,0xF2,0x01,0x27,0x3C,0x43,0xFF,0xC0,0xEA,0xE0,0xE2,0x80,
+0x4E,0xF2,0x01,0x21,0xA5,0x59,0xE2,0x05,0x4E,0xF2,0x01,0x1D,0xA4,0x12,0xA4,0x51,
+0xE2,0x01,0x4E,0xF2,0x01,0x18,0xA4,0x5A,0xE2,0x25,0x4E,0xF2,0x01,0x14,0x3C,0x23,
+0xFF,0xBF,0xE2,0x02,0x4E,0xF2,0x01,0x0F,0x3C,0x03,0xFF,0xBE,0xE2,0x01,0x4E,0xF2,
+0x01,0x0A,0xE2,0x80,0x48,0x00,0x00,0x64,0x5A,0x98,0x0C,0x29,0xEA,0xE0,0xA5,0x19,
+0x02,0xC1,0x80,0x02,0xE2,0x80,0x3C,0xA3,0xFF,0xC1,0x3C,0x83,0xFF,0xBF,0xE8,0x07,
+0xE2,0x8C,0xE8,0x05,0xE3,0x48,0x56,0x67,0x80,0x01,0xD5,0x02,0x84,0xC1,0xA4,0x52,
+0x80,0x0A,0xDD,0x41,0x81,0x20,0x3C,0xB3,0xFF,0xC0,0x80,0x2C,0x80,0x0B,0xDD,0x41,
+0x89,0x20,0x80,0x28,0x80,0x0A,0xDD,0x41,0x81,0x40,0xEA,0x9A,0x80,0x0B,0xDD,0x41,
+0x88,0x0A,0xE0,0x09,0x4E,0xF3,0x00,0xDF,0xF8,0x91,0x5A,0x90,0x0A,0x04,0x5A,0x98,
+0x1D,0x1C,0x84,0x40,0x80,0x22,0x80,0x02,0x3E,0x4F,0xFF,0x00,0x38,0x32,0x09,0x11,
+0x4E,0x37,0x00,0x05,0x88,0x03,0x96,0x03,0xD5,0x03,0x88,0x23,0x96,0x4B,0x8C,0x41,
+0x5A,0x28,0x0A,0xF6,0x42,0x00,0x00,0x03,0xEB,0x14,0xE0,0x20,0xE8,0x03,0xE4,0x24,
+0xD5,0x1E,0xE0,0x01,0xD5,0x19,0x5A,0x98,0x2D,0x1F,0x84,0x40,0x80,0x02,0x80,0x22,
+0x3E,0x3F,0xFE,0xEC,0x38,0xF1,0x89,0x11,0x4E,0xF7,0x00,0x05,0x88,0x2F,0x96,0x4B,
+0xD5,0x03,0x88,0x0F,0x96,0x03,0x8C,0x41,0x5A,0x28,0x0A,0xF6,0x42,0x00,0x00,0x03,
+0x42,0xF0,0x80,0x03,0xE0,0x0F,0x4E,0xF2,0x00,0xAB,0xE4,0x04,0x4E,0xF2,0x00,0xA3,
+0x48,0x00,0x00,0xA6,0x8F,0x21,0xE7,0x24,0x4E,0xF2,0x00,0xA2,0x84,0x00,0x80,0xC0,
+0x81,0x20,0x81,0x60,0x81,0x00,0x3E,0x4F,0xFF,0x00,0x3E,0x5F,0xFE,0xEC,0x38,0x32,
+0x01,0x11,0x94,0x41,0xE4,0x65,0xE9,0x05,0x88,0x6B,0x40,0xB1,0x80,0x11,0xD5,0x07,
+0x5E,0xF1,0xFF,0xFC,0xE8,0x04,0x88,0x69,0x40,0x91,0x80,0x11,0x38,0x12,0x84,0x11,
+0xE4,0x25,0xE9,0x06,0x40,0x20,0xA0,0x00,0x40,0x81,0x00,0x11,0xD5,0x06,0x5E,0xF0,
+0xFF,0xFC,0xE8,0x03,0x88,0xC1,0x97,0xB3,0x8C,0x01,0x5A,0x08,0x0A,0xE2,0xEA,0xD9,
+0x38,0x10,0x1D,0x01,0x84,0x4C,0x3E,0x0F,0xFC,0x08,0x42,0x03,0x88,0x73,0x88,0x01,
+0x00,0x00,0x7F,0xFF,0x54,0x00,0x00,0x60,0xC8,0x1B,0xEA,0x9A,0xEA,0xFF,0xE2,0x20,
+0x4E,0xF2,0x00,0x61,0xDD,0x41,0x3C,0x13,0xFF,0x60,0xE2,0x20,0x4E,0xF2,0x00,0x5B,
+0x3C,0x03,0xFF,0xBC,0xEA,0xA2,0xDD,0x41,0xE2,0x0A,0x4E,0xF2,0x00,0x54,0x4E,0x83,
+0x00,0x52,0x8C,0xC3,0x97,0xB1,0x5C,0x63,0x00,0x07,0x48,0x00,0x00,0x4A,0x5A,0x08,
+0x20,0x18,0xEA,0xFF,0xEA,0x9A,0xE2,0x01,0x4E,0xF2,0x00,0x45,0xDD,0x41,0x3C,0x13,
+0xFF,0x60,0xE2,0x20,0xE8,0x3F,0x3C,0x03,0xFF,0xBC,0xEA,0xA2,0xDD,0x41,0xE2,0x0A,
+0xE8,0x39,0xE5,0x04,0xE9,0x37,0x84,0x20,0x40,0x60,0x98,0x06,0xD5,0x31,0x5A,0x08,
+0x60,0x17,0xEB,0x09,0xEA,0x36,0xE2,0x01,0xE8,0x2D,0xDD,0x41,0x3C,0x13,0xFF,0x61,
+0xE2,0x20,0xE8,0x28,0x3C,0x03,0xFF,0xBB,0xEA,0xA0,0xDD,0x41,0xE2,0x0A,0xE8,0x22,
+0xE5,0x64,0xE9,0x20,0x84,0x20,0x40,0x60,0xA4,0x06,0xD5,0x1A,0x5A,0x08,0x40,0x20,
+0xEA,0x36,0xEB,0x09,0xE2,0x20,0xE8,0x16,0xDD,0x41,0x3C,0x13,0xFF,0x61,0xE2,0x20,
+0xE8,0x11,0x3C,0x03,0xFF,0xBB,0xEA,0xA0,0xDD,0x41,0xE2,0x0A,0xE8,0x0B,0x4E,0xB3,
+0x00,0x0A,0x50,0x64,0x80,0x03,0x97,0xB1,0xE6,0xC7,0xE9,0x04,0xD5,0x08,0x5A,0x68,
+0x01,0x07,0x44,0x10,0x00,0xFF,0xEA,0xD9,0x38,0x10,0x1D,0x09,0xFC,0xE0,0xFC,0x64,
+0x84,0x20,0xB0,0x02,0xFA,0x48,0xDD,0x42,0x84,0x00,0x3E,0x4F,0xFE,0xC4,0x3E,0x3F,
+0xFC,0x08,0x84,0xAC,0x38,0x12,0x01,0x01,0x3E,0xDF,0xFE,0xC4,0x5A,0x10,0xFF,0x13,
+0x42,0x20,0x14,0x24,0x99,0x91,0x38,0x61,0x98,0x10,0x4E,0x65,0x00,0x0C,0x88,0x43,
+0x88,0x22,0xA6,0x89,0xB0,0x42,0x38,0x10,0x88,0x00,0xB1,0x82,0x8C,0x21,0x38,0x13,
+0x08,0x08,0x8C,0x01,0x5A,0x08,0x13,0xE8,0x84,0x00,0xB0,0x42,0x38,0x10,0x80,0x00,
+0x97,0x00,0xC1,0x0A,0x84,0xC0,0x81,0x26,0xEA,0xE4,0x3F,0xCF,0xFE,0xC4,0x3E,0xBF,
+0xFC,0x08,0x85,0xCC,0xD5,0x12,0x8C,0x01,0x5A,0x08,0x18,0xF1,0xEA,0x8D,0xD5,0x35,
+0x42,0xC3,0x38,0x24,0x40,0x06,0x08,0x00,0x38,0x15,0x80,0x00,0x96,0x0A,0x4E,0x04,
+0x00,0x0D,0x8C,0xC1,0x5A,0x60,0x13,0x23,0x38,0x26,0x99,0x01,0x54,0x83,0x00,0xFF,
+0x94,0xF1,0x5A,0x28,0xFF,0xEF,0xD5,0xF6,0x40,0x05,0xB0,0x00,0x88,0x40,0xA7,0x51,
+0xDC,0xF1,0x80,0x08,0xF3,0x81,0xB6,0x9F,0x49,0xFF,0xFD,0x33,0xF3,0x01,0xB4,0x9F,
+0x38,0x2E,0x0C,0x01,0x5A,0x20,0xFF,0xE7,0x50,0x14,0x80,0x01,0x88,0x4C,0x54,0x90,
+0x80,0xFF,0x38,0x75,0x88,0x00,0x81,0x48,0xD5,0xDD,0x5A,0x98,0x01,0xD1,0x38,0x06,
+0xA9,0x01,0x5A,0x00,0xFF,0xCD,0x80,0x07,0xFC,0xE4,0xFC,0x42,0xB0,0xC2,0x97,0x81,
+0x97,0xC9,0x3A,0x01,0x84,0x20,0x81,0x42,0xFD,0x03,0x49,0xFF,0xFB,0x58,0x5A,0xA8,
+0x01,0x3C,0x9E,0x31,0x96,0x01,0x44,0x10,0xFF,0xFD,0xE2,0x20,0x4E,0xF3,0x00,0x50,
+0xEA,0x36,0xC8,0x15,0x3C,0x93,0xFF,0xC0,0x4E,0x93,0x00,0x12,0xF8,0x5F,0x80,0x09,
+0x3E,0x1F,0xFF,0x20,0x38,0x60,0x80,0x09,0x98,0x81,0x8C,0x04,0xAD,0xD1,0x5A,0x08,
+0x4C,0xFB,0x3C,0x6B,0xFF,0xC1,0x3C,0x7B,0xFF,0xC0,0xD5,0x19,0x46,0x11,0x00,0x07,
+0x00,0x10,0x83,0x9B,0x46,0x21,0x00,0x07,0xEA,0x5F,0x00,0x21,0x03,0x9C,0x40,0xF1,
+0x05,0x00,0xE0,0x0F,0xE8,0x03,0x8C,0x01,0xEA,0xD5,0xFD,0x03,0x49,0xFF,0xF9,0x06,
+0xFD,0x03,0x49,0xFF,0xFA,0x2C,0xFD,0x03,0x49,0xFF,0xF9,0xA0,0x3C,0x6B,0xFF,0xBF,
+0x3C,0x7B,0xFF,0xBE,0xD5,0x1C,0x4E,0xA3,0x00,0x1F,0xEA,0x96,0xC0,0x09,0x2E,0x07,
+0xFC,0xF8,0x5A,0x00,0xFF,0x16,0x84,0x3F,0x3E,0x17,0xFC,0xF8,0xD5,0x11,0xEA,0x36,
+0xC0,0xF7,0x49,0xFF,0xFC,0x3A,0xB6,0x1F,0x49,0xFF,0xFF,0x3B,0xF0,0x81,0xF1,0x01,
+0xB4,0x1F,0x49,0xFF,0xF8,0xB4,0x5A,0x08,0xFF,0x04,0xD5,0xEA,0xEA,0x8D,0xEA,0xFD,
+0x5A,0x18,0x01,0x12,0x46,0x11,0x00,0x07,0x00,0x10,0x83,0x9B,0x46,0x21,0x00,0x07,
+0xEA,0x5F,0x00,0x21,0x03,0x9C,0x40,0xF1,0x05,0x00,0xE0,0x0F,0xE8,0x03,0x8C,0x01,
+0xEA,0xD5,0xEA,0x8D,0x4E,0xA3,0x00,0x06,0xB6,0x1F,0x49,0xFF,0xF7,0xCB,0xB4,0x1F,
+0xFC,0xC2,0x3E,0x1F,0xFE,0x64,0xA6,0x08,0xFA,0x56,0xA6,0x49,0x8E,0x01,0x42,0x10,
+0x08,0x73,0xEB,0x64,0x58,0x00,0x01,0x44,0x50,0x40,0x91,0xB8,0x40,0x40,0x10,0x20,
+0xA5,0x62,0x3E,0x28,0x02,0xF4,0x97,0x6B,0xAD,0x50,0x9C,0xE4,0xA5,0x21,0x50,0x10,
+0x94,0xB0,0x97,0x23,0xAD,0x15,0xA5,0x19,0x40,0x00,0x04,0x20,0x97,0x23,0xAD,0x16,
+0x02,0x41,0x80,0x26,0x3E,0x18,0x02,0xE0,0x97,0x23,0xAD,0x14,0x02,0x41,0x80,0x25,
+0x97,0x23,0xAD,0x12,0x02,0x41,0x80,0x27,0x97,0x23,0xAD,0x13,0x02,0x41,0x80,0x4C,
+0x97,0x23,0xAD,0x11,0x02,0x41,0x80,0x4B,0x97,0x23,0xAD,0x17,0x02,0x31,0x80,0x4D,
+0x96,0xDB,0x12,0x31,0x00,0x08,0xA4,0xC2,0x9C,0x84,0x96,0xDB,0xAC,0xC8,0xA4,0x01,
+0x96,0x03,0xAC,0x0D,0xA4,0x11,0x96,0x03,0xAC,0x0E,0x02,0x01,0x00,0x26,0x96,0x03,
+0xAC,0x0C,0x02,0x01,0x00,0x25,0x96,0x03,0xAC,0x0A,0x02,0x01,0x00,0x27,0x96,0x03,
+0xAC,0x0B,0x02,0x01,0x00,0x4C,0x96,0x03,0xAC,0x09,0x02,0x01,0x00,0x4B,0x96,0x03,
+0xAC,0x0F,0x02,0x01,0x00,0x4D,0x96,0x03,0x12,0x00,0x80,0x08,0xDD,0x9E,0x00,0x00,
+0x46,0x21,0x00,0x01,0x58,0x21,0x0F,0xDC,0x38,0x31,0x05,0x00,0x38,0x31,0x01,0x08,
+0x40,0x31,0x04,0x20,0xA6,0xD9,0x40,0x21,0x00,0x20,0xAE,0xD1,0x46,0x21,0x00,0x01,
+0xEB,0x36,0x38,0x31,0x06,0x02,0x38,0x31,0x02,0x0A,0x84,0x4C,0x42,0x30,0x08,0x24,
+0xFE,0x8C,0x46,0x41,0x00,0x02,0x58,0x42,0x00,0xB4,0x99,0x63,0x88,0x82,0x3B,0x02,
+0x48,0x00,0x46,0x41,0x00,0x02,0x58,0x42,0x00,0x24,0x88,0x44,0x3B,0x02,0xC8,0x20,
+0x88,0x64,0x3B,0x01,0x48,0x00,0x3E,0x28,0x01,0xCC,0x3B,0x01,0xC8,0x20,0x40,0x11,
+0x04,0x40,0xEA,0xDA,0x3A,0x10,0x84,0x00,0x3A,0x10,0x04,0x20,0xDD,0x9E,0x92,0x00,
+0x84,0x20,0x46,0x21,0x00,0x01,0xEB,0x36,0x38,0x11,0x02,0x0A,0x84,0x4C,0xFE,0x84,
+0x46,0x31,0x00,0x02,0x58,0x31,0x80,0xB4,0x88,0x62,0xB6,0x23,0xA8,0x59,0xA8,0x5A,
+0x46,0x31,0x00,0x02,0x58,0x31,0x80,0x24,0x88,0x43,0xB6,0x22,0xA8,0x51,0xA8,0x52,
+0x2E,0x37,0xFD,0x05,0x3E,0x28,0x01,0xCC,0x38,0x31,0x02,0x08,0xEA,0xDA,0xAE,0x41,
+0xAE,0x42,0x2E,0x17,0xFD,0x16,0xAE,0x43,0xDD,0x9E,0x92,0x00,0x3B,0xFF,0xFC,0xBC,
+0x51,0xFF,0xFF,0xFC,0x49,0xFF,0xFF,0x3F,0x3C,0x00,0x01,0x7E,0x96,0x03,0x4E,0x05,
+0x00,0xAF,0x3C,0x20,0x01,0x7E,0x80,0xA2,0x46,0x11,0x00,0x01,0x2E,0x07,0xFE,0x65,
+0x00,0x10,0x8F,0xF3,0xE2,0x20,0xE8,0x49,0x9A,0x41,0xE4,0x22,0x4E,0xF3,0x00,0x4A,
+0x2E,0x17,0xFE,0x64,0x46,0x31,0x00,0x02,0x04,0x31,0x80,0x2C,0x98,0x93,0x46,0x31,
+0x00,0x02,0x04,0x41,0x80,0x2A,0x46,0x31,0x00,0x02,0x04,0x31,0x80,0x2B,0xF8,0x52,
+0x46,0x51,0x00,0x02,0x14,0x22,0x80,0x2C,0x46,0x21,0x00,0x02,0x14,0x41,0x00,0x2A,
+0x46,0x21,0x00,0x02,0x14,0x31,0x00,0x2B,0x2E,0x20,0x01,0xF9,0xE2,0x40,0xE8,0x5D,
+0x3E,0x00,0x01,0xF9,0x2E,0x20,0x01,0xFA,0xE2,0x41,0xE8,0x4F,0x3E,0x10,0x01,0xFA,
+0xFA,0x56,0x42,0x00,0x88,0x73,0x46,0x11,0x00,0x02,0xEB,0x17,0x50,0x00,0x14,0xB0,
+0x94,0x01,0x88,0x01,0x22,0x10,0x00,0x02,0x5A,0x10,0xFE,0x50,0xEA,0x4F,0x2E,0x27,
+0xFE,0x64,0xAC,0xC2,0x2E,0x17,0xFE,0x65,0x3E,0x27,0xFE,0x60,0xEC,0x04,0x3E,0x17,
+0xFE,0x61,0x3B,0xFF,0xFC,0x84,0xDD,0x9E,0x8A,0x20,0xE4,0x22,0x4E,0xF2,0xFF,0xBA,
+0x46,0x31,0x00,0x01,0x2E,0x17,0xFE,0x64,0x00,0x31,0x8F,0xF2,0xE2,0x61,0xE8,0x53,
+0x9A,0xCB,0xE4,0x62,0x4E,0xF2,0xFF,0xB0,0x46,0x31,0x00,0x02,0x04,0x31,0x80,0x50,
+0x88,0x43,0x46,0x31,0x00,0x02,0x04,0x41,0x80,0x4E,0x46,0x31,0x00,0x02,0x04,0x31,
+0x80,0x4F,0x42,0x42,0x80,0x73,0x42,0x32,0x84,0x73,0x4A,0x00,0x00,0x60,0x46,0x51,
+0x00,0x02,0x14,0x22,0x80,0x50,0x46,0x21,0x00,0x02,0x14,0x41,0x00,0x4E,0x46,0x21,
+0x00,0x02,0x14,0x31,0x00,0x4F,0xD5,0xA9,0x2E,0x20,0x01,0xFB,0xE2,0x22,0xE8,0xB1,
+0x3E,0x10,0x01,0xFB,0x48,0xFF,0xFF,0xAE,0x2E,0x20,0x01,0xF8,0xE2,0x02,0xE8,0xA3,
+0x3E,0x00,0x01,0xF8,0x48,0xFF,0xFF,0xA0,0x2E,0x27,0xFD,0x36,0x46,0x11,0x00,0x02,
+0x04,0x10,0x80,0x08,0x8C,0x21,0xEA,0x4F,0xAC,0xC2,0xE2,0x41,0xEB,0x64,0x14,0x10,
+0x00,0x08,0xE8,0x17,0x2E,0x17,0xFE,0x64,0x2E,0x07,0xFE,0x65,0x3E,0x17,0xFE,0x60,
+0xEC,0x04,0x3E,0x07,0xFE,0x61,0x3B,0xFF,0xFC,0x84,0xDD,0x9E,0x84,0xA0,0x84,0x40,
+0x48,0xFF,0xFF,0x54,0x8A,0x61,0xE4,0x62,0x4E,0xF2,0xFF,0x5E,0x48,0xFF,0xFF,0xAE,
+0x49,0xFF,0xCE,0xF3,0xC8,0xE8,0xDD,0x5B,0xC1,0x1C,0x3C,0x00,0x01,0x70,0xEA,0xA6,
+0x97,0x43,0xD2,0x17,0xEA,0x22,0xEA,0x80,0xEB,0x1E,0x4E,0x00,0x00,0x56,0xE9,0x11,
+0x8E,0x21,0xDD,0x51,0x49,0xFF,0xFF,0x2C,0x2E,0x07,0xFE,0x60,0x50,0x00,0x00,0x01,
+0x2E,0x17,0xFE,0x61,0x3E,0x07,0xFE,0x64,0xEA,0x7A,0xEA,0x2D,0x2E,0x17,0xFE,0x64,
+0xEA,0xE7,0x8E,0x01,0xE0,0x20,0xE8,0x19,0x3C,0x00,0x01,0x71,0xEA,0xA6,0x97,0x43,
+0xD2,0x14,0xEA,0x22,0xEA,0x80,0xEB,0x1D,0xF8,0x37,0xE9,0x0F,0x9C,0x49,0xDD,0x51,
+0x49,0xFF,0xFF,0x0E,0x2E,0x07,0xFE,0x60,0x50,0x00,0x7F,0xFF,0x2E,0x17,0xFE,0x61,
+0x3E,0x07,0xFE,0x64,0xEA,0x7A,0xEA,0x2D,0xEA,0xCC,0xC1,0x19,0x3C,0x00,0x01,0x72,
+0xEA,0xA6,0x97,0x43,0xD2,0x14,0xEA,0x22,0xEA,0x80,0x3C,0x30,0x01,0x7C,0xF8,0x1C,
+0xE9,0x0E,0x9E,0x49,0xEA,0x7A,0xEA,0x25,0xEA,0x44,0xEA,0x41,0x50,0x00,0x00,0x01,
+0xDD,0x51,0xEA,0x46,0x49,0xFF,0xFE,0x2F,0x2E,0x17,0xFE,0x65,0xEA,0xC5,0x8E,0x01,
+0xE0,0x20,0xE8,0x1B,0x3C,0x00,0x01,0x73,0xEA,0xA6,0x97,0x43,0xD2,0x16,0xEA,0x22,
+0xEA,0x80,0x3C,0x30,0x01,0x7D,0x96,0x03,0x96,0xDB,0x88,0x02,0xE0,0x03,0x83,0xFF,
+0xE9,0x0C,0x9C,0x49,0xEA,0x7A,0xEA,0x25,0xEA,0x44,0xEA,0x41,0x50,0x00,0x7F,0xFF,
+0xDD,0x51,0xEA,0x46,0x49,0xFF,0xFE,0x0F,0xDD,0x5B,0x4E,0x12,0x00,0x51,0xEA,0x83,
+0xC2,0x20,0x3C,0x00,0x01,0x75,0xEA,0x4F,0x97,0x43,0xD3,0x1B,0xEA,0x22,0xEA,0x78,
+0xEB,0x1E,0xF8,0x75,0xE9,0x16,0xEA,0xA1,0x3C,0x00,0x01,0x7C,0xF8,0x7A,0xE9,0x11,
+0x3C,0x00,0x01,0x7A,0x3C,0x40,0x01,0x7C,0x3C,0x50,0x01,0x7F,0x97,0x23,0x96,0x03,
+0xEA,0xA7,0x88,0x04,0x88,0x03,0x97,0x2B,0x40,0xF0,0x10,0x07,0x4E,0xF2,0x00,0xA6,
+0xEA,0xC5,0x8E,0x01,0xE0,0x40,0xE8,0x2B,0x3C,0x00,0x01,0x76,0xEA,0x4F,0x97,0x43,
+0xD3,0x26,0xEA,0x22,0xEA,0x78,0xEB,0x1E,0xF8,0x52,0xE9,0x21,0xEA,0xA1,0x3C,0x00,
+0x01,0x7D,0xF8,0x57,0xE9,0x1C,0x3C,0x00,0x01,0x7A,0x3C,0x40,0x01,0x7D,0x3C,0x50,
+0x01,0x80,0x97,0x23,0x96,0x03,0xEA,0xA7,0x4E,0x00,0x00,0x5C,0xE9,0x10,0x8E,0x21,
+0x8C,0x41,0xDD,0x51,0xEA,0xBC,0xEA,0x25,0xEA,0x41,0xEA,0x44,0x8C,0x21,0x8E,0x01,
+0xDD,0x51,0xEA,0x46,0x49,0xFF,0xFD,0xBF,0x2E,0x17,0xFE,0x64,0xEA,0xE7,0x8E,0x01,
+0xE0,0x20,0x4E,0xF2,0xFF,0x21,0xEA,0x83,0xC2,0x1C,0x3C,0x00,0x01,0x77,0xEA,0x4F,
+0x97,0x43,0xD3,0x17,0xEA,0x22,0xEA,0x78,0xEB,0x1D,0xF8,0x21,0xE9,0x12,0xEA,0xA1,
+0x3C,0x00,0x01,0x7C,0xF8,0x26,0xE9,0x0D,0x3C,0x00,0x01,0x7B,0x3C,0x40,0x01,0x7C,
+0x3C,0x50,0x01,0x81,0x97,0x23,0x96,0x03,0xEA,0xA7,0x4E,0x00,0x00,0x2B,0xE8,0x3D,
+0xEA,0xC5,0x8E,0x01,0xE0,0x40,0x4E,0xF2,0xFE,0xFF,0x3C,0x00,0x01,0x78,0xEA,0x4F,
+0x97,0x43,0x4C,0x51,0xBE,0xF9,0xEA,0x22,0xEA,0x78,0xEB,0x1D,0x96,0x03,0x96,0xDB,
+0x88,0x04,0xE0,0x03,0x83,0xFF,0x4E,0xF3,0xFE,0xEF,0xEA,0xA1,0x3C,0x00,0x01,0x7D,
+0x96,0xDB,0x97,0x43,0x98,0x23,0xE0,0x05,0x83,0xFF,0x4E,0xF3,0xFE,0xE5,0x3C,0x00,
+0x01,0x7B,0x3C,0x40,0x01,0x7D,0x3C,0x50,0x01,0x82,0x97,0x23,0x96,0x03,0xEA,0xA7,
+0x88,0x04,0x88,0x03,0x97,0x2B,0xE0,0x04,0x83,0xFF,0x4E,0xF3,0xFE,0xD5,0x8C,0x21,
+0x9C,0x91,0xDD,0x51,0xEA,0xBC,0xEA,0x25,0xEA,0x41,0xEA,0x44,0x8E,0x21,0x8E,0x01,
+0xDD,0x51,0xEA,0x46,0x48,0xFF,0xFE,0xC8,0x8C,0x21,0x8E,0x41,0xDD,0x51,0xEA,0xBC,
+0x49,0xFF,0xFE,0x16,0xEA,0x41,0xEA,0x44,0x8E,0x21,0x8C,0x01,0xDD,0x51,0xEA,0x46,
+0x49,0xFF,0xFD,0x51,0xEA,0xE7,0xDD,0x5B,0x8E,0x01,0x40,0x00,0x80,0x07,0x4E,0x02,
+0xFE,0xB3,0xEA,0x83,0x48,0xFF,0xFF,0xAE,0x8E,0x21,0x50,0x21,0x7F,0xFF,0xDD,0x51,
+0xEA,0xBC,0xEA,0x25,0xEA,0x41,0xEA,0x44,0x8C,0x21,0x8C,0x01,0xDD,0x51,0xEA,0x46,
+0x49,0xFF,0xFD,0x39,0xDD,0x5B,0x4E,0x12,0xFF,0x7B,0xEA,0x83,0x48,0xFF,0xFF,0x4A,
+0x84,0x00,0x46,0x11,0x00,0x05,0x12,0x00,0x82,0xD4,0x46,0x11,0x00,0x05,0x12,0x00,
+0x82,0xD5,0x2E,0x20,0x01,0x29,0x2E,0x10,0x01,0x28,0x2E,0x37,0xFD,0x2A,0x3A,0x6F,
+0xB4,0x3C,0x2F,0x37,0xFD,0x26,0x84,0x80,0x44,0x90,0x00,0x48,0x47,0x11,0x00,0x02,
+0x59,0x18,0x81,0x44,0x44,0xA0,0x00,0x4C,0x44,0xB0,0x00,0xFE,0x47,0x21,0x00,0x01,
+0x59,0x29,0x0E,0xB0,0x96,0x20,0xE2,0x02,0xE8,0x36,0x80,0xD1,0x80,0xF1,0x42,0x62,
+0x24,0x73,0x42,0x72,0x28,0x73,0x50,0x63,0x19,0x54,0x50,0x73,0xA9,0xB2,0x84,0xA0,
+0x51,0x00,0x00,0x01,0xD1,0x1E,0xA4,0x30,0x8C,0xA1,0x96,0x03,0xE0,0x60,0xE8,0x15,
+0x12,0xB3,0x80,0x00,0xEB,0x4E,0xEA,0xA4,0x40,0xC9,0x00,0x20,0x5C,0xF0,0x00,0x95,
+0x39,0x09,0x01,0x08,0x10,0x56,0x00,0x01,0xE8,0x04,0x8C,0x01,0x40,0x00,0x00,0x13,
+0x46,0xC1,0x00,0x05,0x12,0x06,0x02,0xD4,0x8C,0xC2,0x97,0x68,0x8C,0xE2,0xD5,0xE3,
+0xEB,0x4E,0xEA,0xA4,0x8C,0x81,0xE2,0x13,0xE9,0xCE,0x84,0x01,0xEA,0xF8,0x44,0x00,
+0x00,0x00,0xEA,0x64,0x2E,0x60,0x00,0xFF,0x4E,0x63,0x00,0x0E,0xEB,0x4E,0x02,0x50,
+0x02,0xD5,0xEA,0xD1,0x9F,0x01,0x2E,0x00,0x00,0x11,0x8E,0x01,0xFE,0x24,0xE0,0xA0,
+0xE9,0x26,0xD5,0x23,0x44,0x00,0x00,0x64,0xFF,0x84,0x41,0x00,0x84,0x08,0xEB,0x54,
+0xEA,0xAC,0x84,0xA0,0xD2,0xEC,0x80,0x80,0x41,0x10,0x40,0x00,0x4C,0x48,0x80,0x11,
+0xA5,0xE0,0x97,0xFB,0xE0,0xC7,0xE8,0x0A,0x46,0x71,0x00,0x05,0x02,0x73,0x82,0xD5,
+0x46,0x91,0x00,0x05,0x8C,0xE1,0x12,0x74,0x82,0xD5,0x8C,0x82,0xD5,0xF0,0x8C,0xA1,
+0x97,0x68,0x50,0x00,0x00,0x48,0xD5,0xE7,0x48,0x00,0x00,0x00,0x2E,0x08,0x00,0x14,
+0x4E,0x04,0x00,0x4E,0x46,0x51,0x00,0x02,0x58,0x52,0x81,0x44,0x9D,0xC9,0x84,0x00,
+0x8C,0x41,0x45,0x00,0x00,0x4C,0x82,0x25,0x44,0x60,0x00,0xFC,0xFB,0xD6,0xE0,0x40,
+0xE9,0x1A,0x80,0x85,0x42,0x40,0x40,0x73,0x22,0xF2,0x11,0xBA,0xE0,0x6F,0xE8,0x03,
+0x12,0x62,0x14,0xB2,0x80,0x87,0x42,0x40,0x48,0x73,0x41,0x38,0x90,0x20,0x22,0xF9,
+0x91,0xBA,0xE0,0x6F,0xE8,0x05,0x40,0x42,0x90,0x20,0x12,0x62,0x14,0xB2,0x8C,0x01,
+0x96,0x00,0xD5,0xE6,0x46,0x41,0x00,0x02,0x58,0x42,0x01,0x44,0xFA,0xB6,0x8C,0x21,
+0x84,0x00,0x80,0xE4,0x44,0x60,0x00,0xFC,0xFE,0xAC,0xE0,0x20,0xE9,0x18,0x40,0x52,
+0x00,0x20,0x22,0xF2,0x91,0xBA,0xE0,0x6F,0xE8,0x03,0x12,0x62,0x94,0xB2,0x99,0x50,
+0x41,0x03,0x94,0x20,0x22,0xF8,0x11,0xBA,0xE0,0x6F,0xE8,0x05,0x40,0x52,0x14,0x20,
+0x12,0x62,0x94,0xB2,0x8C,0x01,0x96,0x00,0x48,0xFF,0xFF,0xE9,0x3A,0x6F,0xB4,0x04,
+0xDD,0x9E,0x92,0x00,0x3A,0x6F,0xBA,0xBC,0xEF,0xFC,0x3F,0xCF,0xFE,0x1C,0x84,0xC0,
+0x80,0x06,0x8C,0xC1,0x54,0x63,0x00,0xFF,0x49,0xFF,0xFC,0xDC,0x5A,0x68,0x0C,0xFA,
+0x84,0x20,0xB9,0x80,0xB9,0x8E,0xEB,0x4E,0x02,0x20,0x02,0xD4,0x2E,0x07,0xFD,0x36,
+0x92,0x01,0xE2,0x40,0xE8,0x24,0x3C,0x03,0xFE,0xC7,0x8C,0x01,0x96,0x01,0xEA,0x64,
+0x2E,0x47,0xFF,0xC3,0x84,0x6A,0xFE,0xE4,0xE0,0x60,0xE8,0x19,0x3C,0x1B,0xFE,0xC7,
+0x3E,0x17,0xFD,0x57,0x3E,0x17,0xFD,0x65,0xC2,0x13,0x84,0xC0,0x46,0xB1,0x00,0x02,
+0x58,0xB5,0x80,0xB4,0x80,0xE6,0x46,0x91,0x00,0x01,0x58,0x94,0x8E,0xB0,0x46,0xA1,
+0x00,0x02,0x58,0xA5,0x01,0x44,0x81,0x8B,0x48,0x00,0x00,0x5F,0xCA,0x06,0x84,0x00,
+0xEA,0x64,0x3E,0x07,0xFD,0x57,0xEA,0xF8,0xEA,0x96,0xC0,0xE8,0xEA,0x6A,0x96,0x04,
+0xC0,0xE5,0x84,0x00,0x3E,0x07,0xFD,0x68,0x48,0x00,0x00,0x9E,0x40,0x24,0x84,0x20,
+0xA7,0x11,0x38,0x34,0x85,0x00,0x80,0x44,0x42,0x21,0xC0,0x73,0x41,0x15,0x08,0x20,
+0x23,0x18,0x94,0xB2,0x5B,0x10,0xFE,0x4C,0x8C,0x21,0x96,0x48,0xE2,0x25,0xE9,0xEF,
+0x4E,0x02,0x00,0x74,0x46,0x01,0x00,0x01,0x10,0x70,0x0F,0xF2,0x46,0x01,0x00,0x01,
+0x10,0x60,0x0F,0xF3,0x3E,0x77,0xFE,0x64,0x3E,0x67,0xFE,0x65,0x49,0xFF,0xFC,0xA0,
+0x2E,0x17,0xFD,0x36,0xEB,0x64,0x04,0x00,0x00,0x08,0xE2,0x20,0xE8,0x06,0x84,0x01,
+0x3E,0x07,0xFD,0x57,0x84,0x00,0xEA,0x64,0x2E,0x07,0xFF,0xA2,0x96,0x04,0xC8,0x31,
+0xB8,0x00,0xC0,0x4E,0x9E,0x41,0x84,0x4C,0x80,0x6B,0x42,0x30,0x88,0x73,0x46,0x11,
+0x00,0x02,0xA0,0xDA,0x04,0x10,0x80,0x50,0xE2,0x61,0xE8,0x42,0x96,0x00,0x81,0xC2,
+0x4E,0x03,0x00,0x2A,0xB8,0x00,0xE6,0x0B,0xE8,0x04,0x9C,0x01,0x3C,0x0F,0xFF,0x87,
+0xB8,0x0E,0x8C,0x01,0xB8,0x8E,0x84,0x0B,0x49,0xFF,0xFC,0x4C,0x46,0x01,0x00,0x05,
+0x02,0x50,0x02,0xD4,0x84,0x00,0x80,0x20,0xFB,0x96,0xD5,0xB9,0x40,0x25,0x08,0x20,
+0x22,0x21,0x11,0xBA,0xE0,0x02,0xE8,0xB1,0x96,0x11,0x80,0xC4,0x80,0xE3,0xD5,0xAD,
+0x2E,0x07,0xFD,0x57,0xC0,0xCE,0xEA,0x45,0x96,0x00,0xC8,0xCB,0xB8,0x80,0x84,0x01,
+0xEA,0xF8,0xD5,0x31,0x50,0xD0,0x7F,0xFF,0x80,0x2C,0x42,0x16,0xB8,0x73,0xA0,0x8A,
+0x46,0x11,0x00,0x02,0x04,0x10,0x80,0x50,0xE2,0x41,0xE8,0xCD,0x80,0x2D,0xEA,0xFE,
+0x80,0x0D,0x44,0x10,0x00,0x0B,0xEA,0xFE,0x54,0x06,0x80,0xFF,0xD5,0xC2,0x84,0x2B,
+0x49,0xFF,0xFB,0xE0,0x48,0xFF,0xFF,0xC0,0x3C,0x2D,0xFF,0x87,0x2E,0x37,0xFD,0x49,
+0x46,0x41,0x00,0x01,0x58,0x42,0x0F,0xF4,0x80,0x20,0xE2,0x22,0xE8,0x0A,0x38,0x52,
+0x06,0x02,0xE2,0x65,0xE8,0x03,0x8C,0x01,0x96,0x00,0x8C,0x21,0x96,0x48,0xD5,0xF6,
+0x3E,0x07,0xFD,0x4F,0xEC,0x04,0x3A,0x6F,0xBA,0x84,0xDD,0x9E,0xFC,0x60,0x51,0xFF,
+0xFB,0xA0,0x3D,0x3D,0xFF,0x87,0x4F,0x32,0x02,0xEB,0x46,0x37,0xFF,0xFF,0x84,0x20,
+0xB1,0x50,0xB1,0xDC,0xB1,0xA8,0x51,0x1F,0x80,0xD0,0x51,0x2F,0x81,0x00,0x50,0x2F,
+0x81,0x30,0x50,0xBF,0x81,0x60,0x50,0x31,0x8F,0xFF,0x84,0x00,0xB1,0x04,0x38,0x02,
+0x06,0x0A,0x50,0x4F,0x81,0x90,0x38,0x02,0x06,0x0A,0x50,0x9F,0x82,0x20,0xEA,0xC6,
+0x42,0x90,0x90,0x73,0x38,0x02,0x86,0x0A,0x38,0x03,0x86,0x0A,0x38,0x03,0x06,0x0A,
+0x38,0x08,0x86,0x0A,0x38,0x09,0x06,0x0A,0x38,0x01,0x06,0x0A,0x38,0x05,0x86,0x0A,
+0x80,0x89,0x38,0x32,0x02,0x0A,0x8C,0x01,0x5A,0x08,0x0C,0xFD,0x8C,0x21,0x5A,0x18,
+0x0C,0xDE,0x3C,0x9D,0xFF,0x91,0x84,0x80,0xE3,0x33,0x80,0x13,0x47,0x97,0xFF,0xFF,
+0x40,0x04,0xBC,0x1A,0x80,0x64,0x46,0xC1,0x00,0x01,0x58,0xC6,0x0D,0x08,0x45,0xE0,
+0xFF,0xFF,0x51,0x9C,0x8F,0xFF,0x46,0xD1,0x00,0x01,0x58,0xD6,0x8D,0x98,0x40,0x99,
+0xA4,0x06,0x47,0x51,0x00,0x01,0x59,0x5A,0x8C,0x0C,0x47,0x61,0x00,0x01,0x59,0x6B,
+0x0C,0x3C,0x38,0xE6,0x13,0x02,0x94,0x63,0x4C,0xEF,0x00,0x41,0x50,0xAF,0x82,0x20,
+0x40,0xA5,0x0C,0x40,0x40,0x80,0xB0,0x00,0x41,0x42,0x08,0x08,0x86,0x00,0xE1,0x80,
+0xE8,0x31,0xE3,0x93,0xE8,0x29,0x38,0x16,0xC3,0x02,0x04,0xF4,0x00,0x01,0x41,0x80,
+0xB8,0x01,0x40,0x16,0xC0,0x60,0xA0,0x49,0x40,0xF0,0xBC,0x01,0x43,0x77,0xBC,0x24,
+0x2E,0x17,0xFD,0x27,0x43,0x7C,0x60,0x73,0x15,0x75,0x00,0x00,0xC9,0x17,0x4E,0x92,
+0x00,0x16,0x38,0x1A,0xD0,0x02,0x43,0x8C,0x04,0x24,0x38,0x1B,0x50,0x02,0x42,0x17,
+0x84,0x24,0xE0,0x38,0xE8,0x04,0x40,0x1C,0x04,0x01,0xD5,0x02,0x8A,0x38,0x94,0x4D,
+0x88,0x37,0xB6,0x2A,0xD5,0x03,0x15,0x95,0x00,0x00,0x8D,0x81,0x50,0xA5,0x00,0x30,
+0xD5,0xCF,0xEB,0x10,0x38,0x40,0x8E,0x0A,0x8C,0x61,0x8C,0x81,0x5A,0x48,0x0C,0xBB,
+0x46,0x47,0xFF,0xFF,0x45,0x30,0x00,0x30,0x50,0x42,0x0F,0xFF,0xE0,0x60,0xE8,0x10,
+0x50,0x1F,0x82,0x20,0x41,0x00,0x8C,0x40,0x84,0x20,0xE0,0x20,0xE8,0x07,0x42,0x90,
+0xCC,0x24,0x8C,0x21,0x38,0x48,0x24,0x0A,0xD5,0xF9,0x8C,0x61,0xD5,0xF0,0x84,0x20,
+0x46,0x37,0xFF,0xFF,0x84,0x9F,0x82,0x01,0x50,0x31,0x8F,0xFF,0xE0,0x20,0xE8,0x0B,
+0x38,0x42,0x86,0x0A,0x38,0x43,0x86,0x0A,0x39,0x09,0x06,0x0A,0x38,0x31,0x06,0x0A,
+0x8C,0x21,0xD5,0xF5,0x51,0x0F,0x82,0x20,0x80,0x30,0x86,0x60,0x44,0xA0,0x00,0x30,
+0xE1,0xE0,0xE8,0x1D,0xB4,0x81,0x84,0x61,0xE0,0x60,0xE8,0x09,0x42,0x91,0xA8,0x24,
+0x8C,0x61,0x38,0x90,0xA4,0x02,0x42,0x42,0x24,0x01,0xD5,0xF7,0xC4,0x0D,0x84,0x60,
+0xE0,0x60,0xE8,0x0A,0x42,0xC1,0xA8,0x24,0x8C,0x61,0x38,0x90,0xB0,0x02,0x8B,0x24,
+0x38,0x90,0xB0,0x0A,0xD5,0xF6,0x8D,0xE1,0x8C,0x24,0xD5,0xE3,0x85,0x80,0x80,0x2C,
+0x85,0x5F,0xE0,0x20,0xE8,0x2B,0xB5,0xF0,0x84,0x61,0xE0,0x60,0xE8,0x07,0x38,0x98,
+0x0E,0x02,0x8C,0x61,0x43,0x39,0xA4,0x01,0xD5,0xF9,0x39,0x38,0x86,0x0A,0x84,0x60,
+0xE0,0x60,0xE8,0x11,0x38,0x98,0x0E,0x02,0x4D,0x34,0xC0,0x0C,0x38,0x92,0x8E,0x02,
+0x4E,0x94,0x00,0x08,0xB1,0x04,0x38,0x32,0x06,0x0A,0x38,0x12,0x8E,0x0A,0xD5,0x0A,
+0x8C,0x61,0xD5,0xEF,0xB0,0xC4,0x38,0x13,0x32,0x0A,0x38,0xA1,0x86,0x0A,0x50,0xC6,
+0x00,0x01,0x8C,0x21,0x51,0x08,0x00,0x30,0xD5,0xD5,0x82,0xEC,0x4E,0xC3,0x00,0x0C,
+0x84,0x00,0x50,0xDF,0x81,0xC0,0x46,0x31,0x00,0x01,0x58,0x31,0x8D,0x98,0xEA,0xC7,
+0x48,0x00,0x00,0xAC,0x47,0x37,0xFF,0xFF,0x51,0x39,0x8F,0xFF,0x80,0x6C,0x85,0x40,
+0x44,0xC0,0x00,0x30,0x81,0xB3,0x85,0x1F,0x86,0x80,0x40,0xFA,0x0C,0x07,0xE8,0x2D,
+0x39,0x03,0x52,0x02,0x51,0x5F,0x82,0x20,0x39,0x68,0xC2,0x02,0x43,0x58,0x30,0x73,
+0x84,0x20,0xE0,0x20,0xE8,0x1F,0xEB,0x35,0xE8,0x1B,0x38,0x9A,0x86,0x02,0x40,0xE4,
+0xD8,0x01,0x38,0x49,0x06,0x02,0x88,0x8E,0xE0,0x8F,0xE8,0x12,0xCC,0x0D,0x38,0xE2,
+0x86,0x02,0x4E,0xE5,0x00,0x59,0x38,0xE3,0x0E,0x0A,0x38,0x41,0x06,0x0A,0x39,0x03,
+0x86,0x0A,0x8C,0x61,0xD5,0x05,0x38,0x41,0x06,0x0A,0x39,0x05,0x86,0x0A,0x8C,0x21,
+0xD5,0xE1,0x51,0x4A,0x00,0x01,0xD5,0xD2,0x81,0xCD,0x84,0x20,0xE0,0x20,0xE8,0x07,
+0xEB,0x35,0xE8,0x03,0x42,0xE7,0x3C,0x01,0x8C,0x21,0xD5,0xF9,0x86,0x00,0xE1,0x83,
+0xE8,0x0A,0x38,0x93,0x42,0x02,0x8D,0x81,0x38,0x18,0xA6,0x02,0x88,0x2E,0x38,0x18,
+0xA6,0x0A,0xD5,0xF6,0x43,0x41,0xA8,0x00,0x84,0x20,0xE0,0x20,0xE8,0xB7,0xEB,0x35,
+0x50,0x90,0x80,0x01,0xE8,0x21,0x40,0xF7,0xB8,0x01,0x38,0xF1,0x06,0x0A,0xE9,0x21,
+0x38,0xF2,0x86,0x02,0x39,0x05,0x86,0x02,0x4E,0xF4,0x00,0x11,0x80,0x69,0xE0,0x60,
+0xE8,0x1A,0x38,0xF1,0x0E,0x02,0xE9,0x08,0x50,0x4F,0x81,0x00,0x38,0x92,0x0E,0x02,
+0x89,0x2E,0x38,0x92,0x0E,0x0A,0x8C,0x61,0xD5,0xF3,0x38,0xF3,0x0E,0x0A,0x39,0x03,
+0x86,0x0A,0x8C,0x61,0xD5,0x06,0x39,0x09,0x06,0x02,0x89,0x8E,0x39,0x09,0x06,0x0A,
+0x80,0x29,0xD5,0xD4,0xB0,0xC4,0x38,0x31,0xC2,0x02,0xB1,0x04,0x38,0x12,0x42,0x0A,
+0x39,0x02,0x86,0x0A,0x4E,0x35,0x00,0x06,0x39,0x03,0x8E,0x02,0x80,0x23,0xD5,0xF3,
+0x51,0x7B,0xFF,0xFF,0x4F,0x72,0xFF,0x66,0x84,0x20,0xE0,0x20,0xE8,0x07,0x38,0x83,
+0x86,0x0A,0x39,0x31,0x06,0x0A,0x8C,0x21,0xD5,0xF9,0x84,0x60,0x80,0x23,0xE0,0x20,
+0x4E,0xF2,0xFF,0x6C,0xB1,0x04,0x39,0x02,0x06,0x02,0x4F,0x04,0x00,0x05,0x38,0x13,
+0x0E,0x0A,0x8C,0x61,0x8C,0x21,0xD5,0xF4,0x98,0x58,0xEA,0x6B,0x40,0x40,0x34,0x00,
+0x38,0x21,0x80,0x0A,0x8C,0x08,0x3B,0x02,0x44,0x20,0xA8,0x89,0x47,0x41,0x00,0x01,
+0x59,0x4A,0x0D,0x98,0x5A,0x08,0x60,0xF2,0x84,0xE0,0x47,0x61,0x00,0x01,0x59,0x6B,
+0x0D,0x08,0x46,0xE1,0x00,0x01,0x58,0xE7,0x0C,0x3C,0x47,0x51,0x00,0x01,0x59,0x5A,
+0x8C,0x6C,0x3D,0x3D,0xFF,0x87,0xE2,0xF3,0x4E,0xF2,0x00,0xFA,0x2E,0x57,0xFD,0x61,
+0xB0,0x44,0x38,0x20,0x9E,0x02,0x3C,0x1D,0xFF,0x91,0x2E,0x37,0xFD,0x56,0xE2,0x41,
+0x2E,0x00,0x01,0x32,0x4E,0xF2,0x00,0x77,0xEB,0x10,0x38,0x60,0x8A,0x02,0x46,0xC1,
+0x00,0x01,0x58,0xC6,0x0C,0xD8,0x38,0x16,0x1A,0x02,0xC9,0x03,0xFF,0x44,0xD5,0x03,
+0x44,0x50,0x00,0x64,0x46,0x21,0x00,0x01,0xEB,0x1B,0x38,0x21,0x1B,0x02,0x39,0x06,
+0x9F,0x02,0x40,0x83,0x8C,0x08,0x40,0x98,0x08,0x01,0x40,0x26,0xA0,0x00,0x05,0x11,
+0x00,0x01,0x46,0x21,0x00,0x01,0xEB,0x1B,0x40,0x21,0x18,0x60,0xA0,0x91,0x40,0xA8,
+0x88,0x01,0x46,0x21,0x00,0x01,0x58,0x21,0x0D,0x74,0x38,0x21,0x18,0x00,0x42,0xB5,
+0x28,0x24,0x42,0xB4,0xA4,0x73,0x5A,0x28,0x01,0x2B,0x2F,0xE0,0x01,0x2B,0x3C,0x23,
+0xFE,0xC9,0x84,0x80,0x41,0x21,0x04,0x08,0x3C,0x23,0xFE,0xC5,0x41,0x71,0x04,0x08,
+0xE0,0x9E,0xE8,0x1D,0x38,0x2A,0x93,0x02,0x41,0x82,0x0C,0x08,0xE3,0x82,0xE8,0x03,
+0x8A,0x50,0xD5,0x03,0x40,0x28,0x08,0x01,0xE2,0x52,0xE8,0x0F,0x46,0x21,0x00,0x01,
+0x58,0x21,0x0C,0x6C,0x88,0x58,0xA0,0x91,0xE3,0xA2,0xE8,0x03,0x8A,0x51,0xD5,0x03,
+0x40,0x28,0x88,0x01,0xE2,0x57,0xE9,0x4B,0x8C,0x81,0xD5,0xE3,0x84,0x41,0x96,0xDF,
+0x8C,0x67,0xFE,0x1C,0x88,0x25,0x85,0xE7,0x40,0x15,0x84,0x37,0x40,0xF0,0x3D,0xF6,
+0xE2,0x2F,0xE9,0x42,0x2E,0x07,0xFD,0x4E,0x2E,0x47,0xFD,0x60,0xEB,0x78,0x58,0x10,
+0x8C,0xCC,0x9D,0x43,0x84,0x7D,0x38,0x10,0x98,0x00,0x42,0x52,0x0C,0x73,0xE0,0x25,
+0xE9,0x30,0x84,0x00,0xEA,0xC7,0x46,0x31,0x00,0x01,0x58,0x31,0x8D,0x08,0x38,0x51,
+0x83,0x02,0x94,0x43,0xDA,0x1E,0x44,0x20,0xFF,0xFD,0x46,0x31,0x00,0x01,0x58,0x31,
+0x8C,0x0C,0x38,0x2B,0x03,0x0A,0x84,0x40,0x38,0x21,0x82,0x0A,0x40,0x36,0x9C,0x60,
+0x88,0x34,0x3B,0x01,0xC4,0x00,0xEA,0xEA,0xEB,0x78,0xEA,0x71,0x38,0x70,0x80,0x08,
+0xEB,0x78,0x58,0x10,0x8C,0xD8,0x38,0x27,0x02,0x0A,0x38,0x20,0x82,0x0A,0xD5,0x04,
+0x8C,0x01,0x5A,0x08,0x0C,0xDA,0x8C,0xE1,0x48,0xFF,0xFF,0x4D,0x84,0x42,0xD5,0xB8,
+0xE7,0xE3,0xE8,0xD0,0xC0,0xCF,0x96,0x30,0x15,0x5F,0x80,0x03,0x15,0x6F,0x80,0x02,
+0x15,0x4F,0x80,0x01,0xB6,0x5F,0x49,0xFF,0xE5,0x69,0xB4,0x5F,0x05,0x4F,0x80,0x01,
+0x05,0x6F,0x80,0x02,0x05,0x5F,0x80,0x03,0xC8,0xBD,0x3C,0x33,0xFE,0xC9,0x3C,0x13,
+0xFE,0xC5,0xFE,0x5C,0xFE,0x8C,0xE2,0x4B,0xE8,0x09,0xEB,0x78,0x58,0x10,0x8C,0x0C,
+0x38,0x07,0x1A,0x0A,0x38,0x00,0x9A,0x0A,0xD5,0xD7,0xB0,0x04,0x38,0x00,0x1E,0x02,
+0xEB,0x10,0x38,0x00,0x82,0x02,0x89,0x0D,0x40,0x0A,0x00,0x60,0x3B,0x04,0x44,0x00,
+0x3B,0x00,0x44,0x20,0x46,0x01,0x00,0x01,0x58,0x00,0x0D,0x68,0x38,0x70,0x18,0x08,
+0x2E,0x07,0xFD,0x27,0xC8,0xC1,0x46,0x01,0x00,0x01,0x58,0x00,0x0C,0x0C,0x38,0x97,
+0x1A,0x0A,0x38,0xA0,0x1A,0x0A,0x38,0xB6,0x1A,0x0A,0xD5,0xB6,0x51,0xFF,0x84,0x60,
+0xFC,0xE0,0xFC,0x00,0x3F,0xCF,0xFD,0xD8,0xB9,0x00,0x2E,0x07,0xFF,0xD8,0x5A,0x18,
+0x07,0x03,0x92,0x01,0x3E,0x07,0xFD,0x24,0xB8,0x11,0xC0,0x05,0x2E,0x07,0xFD,0x20,
+0x5A,0x08,0x01,0x37,0x2E,0x37,0xFD,0x24,0x2E,0x27,0xFF,0xDB,0xB8,0x17,0xFE,0x9C,
+0xE2,0x02,0xE8,0x07,0xEA,0xF5,0x42,0x10,0x8C,0x0B,0xC1,0x2C,0x8C,0x01,0xD5,0x29,
+0x84,0x01,0xEB,0x3C,0x84,0x00,0xEB,0x0C,0x84,0x00,0xB8,0x8E,0x84,0x01,0xB8,0x9C,
+0x84,0x08,0x5A,0x10,0x07,0x09,0x5A,0x18,0x02,0x0A,0x2E,0x07,0xFF,0xA7,0x5A,0x08,
+0x03,0x06,0x84,0x06,0x2E,0x17,0xFD,0x31,0xEA,0x34,0x84,0x00,0xEB,0x25,0x2E,0x07,
+0xFD,0x31,0xC0,0x03,0x84,0x00,0xEB,0x2E,0xB8,0x00,0x5A,0x00,0x06,0x04,0x5A,0x08,
+0x08,0x0A,0x46,0x01,0x00,0x01,0x58,0x00,0x04,0x74,0xB8,0x9A,0xD5,0x03,0x84,0x00,
+0xB8,0x97,0xFC,0x80,0xFC,0x00,0x3F,0xCF,0xFD,0xD8,0xB9,0x11,0xB8,0x00,0xC9,0x0F,
+0x5A,0x08,0x08,0x08,0x46,0x11,0x00,0x05,0x02,0x10,0x82,0xD4,0xC9,0x08,0xD5,0x03,
+0x5A,0x00,0x06,0xFA,0x2E,0x17,0xFD,0x20,0x5A,0x18,0x01,0x32,0x84,0x20,0x3E,0x17,
+0xFD,0x3D,0x84,0x20,0xB9,0x97,0x5A,0x00,0x08,0x04,0x5A,0x08,0x06,0x20,0xB9,0x8E,
+0x5A,0x08,0x08,0x04,0x84,0x07,0xD5,0x04,0x5A,0x08,0x06,0x06,0x84,0x02,0x2E,0x17,
+0xFD,0x20,0xEA,0x34,0x84,0x00,0xEB,0x25,0xB8,0x00,0x5A,0x08,0x07,0x05,0xEB,0x64,
+0xEB,0x47,0xD5,0x05,0xEA,0x2B,0xC8,0x05,0xEB,0x64,0xEA,0xB6,0xB8,0x9A,0xD5,0x1E,
+0x5A,0x08,0x01,0x1D,0xEB,0x64,0xDD,0x5D,0xD5,0xFA,0x8E,0x03,0xE6,0x03,0xE8,0x16,
+0xEA,0x43,0xB4,0x01,0x58,0x00,0x04,0x00,0xB6,0x01,0xD5,0x10,0x2E,0x27,0xFF,0xDA,
+0xFA,0x2E,0xFE,0x54,0x2E,0x27,0xFF,0xDB,0xB8,0x0E,0xFE,0x54,0xE2,0x01,0xE8,0x04,
+0x8C,0x01,0xB8,0x8E,0xD5,0x03,0x84,0x01,0xEB,0x0C,0xFC,0x80,0xDD,0x4B,0x5A,0x08,
+0x08,0x05,0x2E,0x27,0xFF,0xAE,0xD5,0x06,0x84,0x40,0x5A,0x08,0x06,0x04,0x2E,0x27,
+0xFF,0xB9,0x84,0x20,0x80,0x01,0x46,0x31,0x00,0x01,0x58,0x31,0x82,0xC4,0x38,0xF1,
+0x85,0x11,0xE0,0x4F,0xE8,0x06,0x5C,0xF0,0x00,0x95,0xE8,0x03,0x8C,0x01,0x96,0x01,
+0x8C,0x21,0x5A,0x18,0xD8,0xF6,0x46,0x11,0x00,0x05,0x12,0x00,0x82,0xD4,0xDD,0x9E,
+0xFC,0x20,0xDD,0x4B,0x5A,0x08,0x08,0x09,0x2E,0x17,0xFF,0xAE,0x94,0x49,0x96,0x4B,
+0x2E,0x57,0xFF,0xE5,0xD5,0x0C,0x5A,0x08,0x06,0x09,0x2E,0x17,0xFF,0xB9,0x94,0x49,
+0x96,0x4B,0x2E,0x57,0xFF,0xE1,0xD5,0x03,0x84,0x20,0x80,0xA1,0x84,0x40,0x3C,0x6D,
+0xFF,0x90,0x80,0x82,0x46,0x71,0x00,0x02,0x58,0x73,0x81,0x44,0x82,0x02,0x47,0x11,
+0x00,0x01,0x59,0x18,0x82,0xC4,0x98,0x17,0x02,0x00,0x07,0x9A,0x38,0x33,0x08,0x01,
+0x9A,0xC3,0x96,0xD9,0x96,0x1B,0x4E,0x05,0x00,0x07,0xE0,0xA0,0x84,0x00,0xE8,0x07,
+0x9A,0x1D,0xD5,0x04,0x88,0x05,0x42,0x00,0x40,0x01,0x96,0x03,0x38,0x08,0x88,0x09,
+0x88,0x01,0x4E,0x04,0x00,0x04,0x8C,0x81,0x97,0x21,0x8C,0x42,0x5A,0x29,0xB0,0xE5,
+0x2E,0x00,0x00,0x15,0xE2,0x04,0xE8,0x0A,0x46,0x01,0x00,0x01,0x00,0x00,0x02,0xC0,
+0xEB,0x78,0xEA,0x37,0xEA,0xEC,0x84,0x01,0xEA,0x76,0xFC,0xA0,0xEB,0x43,0xDD,0x9E,
+0xEB,0x3B,0xC0,0x04,0x84,0x00,0x3C,0x0F,0xFF,0x92,0xDD,0x9E,0xFC,0x40,0x3F,0xCF,
+0xFD,0xF4,0x80,0xE1,0x84,0x20,0x80,0xC0,0x46,0x41,0x00,0x01,0x58,0x42,0x09,0x48,
+0x80,0xA1,0x44,0x30,0xFF,0xFF,0x50,0x00,0x80,0x08,0x88,0x04,0x84,0x40,0x8C,0x41,
+0xB6,0xA0,0x14,0x30,0x7F,0xFE,0x14,0x30,0x7F,0xFF,0x8C,0x0C,0x5A,0x28,0x04,0xF9,
+0x50,0x10,0x80,0x30,0x5A,0x1A,0x40,0xF1,0x84,0x00,0x46,0x21,0x00,0x01,0xEB,0x1B,
+0x44,0x10,0xFF,0xFF,0x38,0x11,0x00,0x0A,0x98,0xC2,0x8C,0x08,0xA8,0x59,0x5A,0x08,
+0x60,0xFB,0x46,0x01,0x00,0x01,0x58,0x00,0x0C,0x3C,0x84,0x20,0xEA,0xED,0xDD,0x42,
+0x46,0x01,0x00,0x01,0x58,0x00,0x0C,0x0C,0x84,0x20,0xEA,0xED,0xDD,0x42,0xC6,0x04,
+0x2E,0x00,0x00,0x0B,0xD5,0x07,0xC7,0x04,0x2E,0x00,0x00,0x0D,0xD5,0x03,0x2E,0x00,
+0x00,0x0F,0x8C,0x01,0xEA,0xF9,0x2E,0x07,0xFD,0x64,0x5A,0x08,0x01,0x04,0x84,0x02,
+0xEA,0xF9,0xEA,0xCF,0x85,0x20,0xEB,0x15,0x3E,0x97,0xFD,0x57,0x3E,0x97,0xFD,0x65,
+0x3E,0x97,0xFD,0x5E,0x84,0x40,0x3E,0x97,0xFD,0x27,0xBA,0x8A,0xBA,0x98,0xEB,0x4E,
+0x12,0x20,0x02,0xD4,0xBA,0x94,0xBA,0x8D,0xBA,0x96,0x3E,0x27,0xFD,0x50,0xBA,0x92,
+0x3E,0x97,0xFD,0x5B,0xBA,0x90,0xEA,0xDE,0x92,0x27,0x8C,0x21,0x96,0x48,0x3E,0x17,
+0xFD,0x6B,0xEA,0xB8,0x92,0x07,0x8C,0x01,0x96,0x00,0x3E,0x07,0xFD,0x5C,0x2E,0x27,
+0xFF,0xBE,0x2E,0x40,0x01,0x32,0x3E,0x27,0xFD,0x56,0x54,0x31,0x00,0x0F,0x42,0x51,
+0x90,0x24,0x92,0x44,0x40,0x12,0x84,0x36,0x3C,0x1B,0xFE,0xC6,0x2E,0x10,0x01,0x33,
+0xFF,0x14,0xFE,0xCC,0xFE,0x8C,0x40,0x01,0x80,0x16,0x3C,0x0B,0xFE,0xCE,0x3C,0x4B,
+0xFE,0xC9,0x3C,0x2B,0xFE,0xC5,0x2E,0x07,0xFF,0xBD,0x54,0x10,0x00,0x0F,0x3E,0x17,
+0xFD,0x4E,0x92,0x04,0x3E,0x07,0xFD,0x61,0x2E,0x07,0xFF,0xA5,0x92,0x04,0x3E,0x07,
+0xFD,0x2B,0x84,0x02,0xB8,0x85,0x2E,0x07,0xFF,0xA8,0xDD,0x49,0x3C,0x0B,0xFE,0xC8,
+0x2E,0x07,0xFF,0xB2,0xDD,0x49,0x3C,0x0B,0xFE,0xCC,0x2E,0x07,0xFF,0xB3,0xDD,0x49,
+0x3C,0x0B,0xFE,0xCD,0x3E,0x97,0xFD,0x41,0x3E,0x97,0xFD,0x66,0x3E,0x97,0xFD,0x42,
+0x2E,0x07,0xFF,0xC6,0xEA,0x98,0x2E,0x07,0xFF,0xC7,0xEA,0xAD,0x2E,0x07,0xFF,0xC9,
+0x40,0x10,0x10,0x09,0x3E,0x17,0xFD,0x52,0x96,0x1F,0x84,0x2A,0xFE,0x0C,0x3E,0x07,
+0xFD,0x3A,0x2E,0x07,0xFF,0xD3,0x3C,0x0B,0xFE,0xD1,0xC7,0x0B,0x2E,0x07,0xFF,0xCE,
+0x54,0x10,0x00,0x0F,0x3E,0x17,0xFD,0x38,0x92,0x04,0x3E,0x07,0xFD,0x2C,0xD5,0x13,
+0x2E,0x07,0xFF,0xCC,0x54,0x10,0x00,0x0F,0x3E,0x17,0xFD,0x38,0x92,0x04,0x3E,0x07,
+0xFD,0x2C,0x2E,0x07,0xFF,0xCD,0x54,0x10,0x00,0x0F,0x3E,0x17,0xFD,0x21,0x92,0x04,
+0x3E,0x07,0xFD,0x39,0x49,0xFF,0xEF,0x2F,0x46,0x01,0x00,0x01,0x58,0x00,0x0B,0x94,
+0x84,0x3F,0x84,0x4C,0xDD,0x42,0x84,0x00,0x3E,0x07,0xFD,0x4D,0x2E,0x17,0xFF,0xDE,
+0x84,0x00,0x40,0x00,0x04,0x06,0x3E,0x07,0xFD,0x3B,0x2E,0x27,0xFF,0xD6,0x3E,0x27,
+0xFD,0x28,0x2E,0x37,0xFF,0xD7,0xFA,0x24,0x42,0x21,0x84,0x73,0x96,0x90,0x3E,0x27,
+0xFD,0x47,0xC0,0x02,0x84,0x44,0x3E,0x27,0xFD,0x2F,0x2E,0x07,0xFF,0xD8,0x84,0x40,
+0x3E,0x07,0xFD,0x24,0x3E,0x27,0xFD,0x46,0x3E,0x27,0xFD,0x68,0x3E,0x27,0xFD,0x55,
+0x3E,0x27,0xFD,0x1E,0x3E,0x27,0xFD,0x3E,0x3E,0x27,0xFD,0x25,0x84,0x00,0x3C,0x0B,
+0xFE,0xCB,0x3E,0x07,0xFD,0x4F,0x2E,0x07,0xFF,0xC8,0x3E,0x07,0xFD,0x49,0x2E,0x00,
+0x01,0x00,0x54,0x10,0x00,0x0F,0x3E,0x17,0xFD,0x54,0x92,0x04,0x3E,0x07,0xFD,0x6A,
+0x2E,0x00,0x01,0x01,0x54,0x10,0x00,0x0F,0x3E,0x17,0xFD,0x5A,0x92,0x04,0x3E,0x07,
+0xFD,0x1D,0x3E,0x27,0xFD,0x6E,0xCE,0x03,0x3E,0x27,0xFD,0x79,0x3E,0x27,0xFD,0x72,
+0x3E,0x27,0xFD,0x77,0x3E,0x27,0xFD,0x6F,0x3E,0x27,0xFD,0x71,0x3E,0x27,0xFD,0x73,
+0x3E,0x27,0xFD,0x76,0x84,0x00,0xB8,0x9F,0xB8,0x9E,0x2E,0x4F,0xFF,0xA3,0x4E,0x45,
+0x00,0x03,0x84,0x02,0x84,0x40,0x3E,0x07,0xFD,0x5F,0x86,0x00,0x3E,0x27,0xFD,0x74,
+0x84,0xA0,0x3D,0x0B,0xFE,0xE6,0xBD,0x9D,0x2E,0x30,0x00,0x6A,0xEA,0x2A,0xFE,0xCC,
+0x3C,0x3B,0xFE,0xE5,0x2E,0x30,0x00,0x6B,0xFE,0xCC,0x3C,0x3B,0xFE,0xE8,0x2E,0x30,
+0x00,0x6C,0xFE,0xCC,0x3C,0x3B,0xFE,0xE2,0x2E,0x30,0x00,0x6D,0xFE,0x5C,0x3C,0x1B,
+0xFE,0xE7,0x2E,0x10,0x00,0x6E,0x3C,0x1B,0xFE,0xE3,0x2E,0x10,0x00,0x6F,0x3E,0x17,
+0xFD,0x75,0x2E,0x10,0x00,0x71,0x3E,0x17,0xFD,0x78,0x3F,0x07,0xFD,0x70,0x3E,0x27,
+0xFD,0x22,0xBD,0x89,0x3E,0x27,0xFD,0x69,0x3E,0x27,0xFD,0x6C,0x3E,0x27,0xFD,0x29,
+0x2E,0x10,0x00,0x62,0x40,0x30,0x90,0x09,0x3E,0x37,0xFD,0x32,0x96,0x5F,0x3E,0x17,
+0xFD,0x53,0xCE,0x10,0x3E,0x27,0xFD,0x3D,0xEB,0x78,0x10,0x20,0x82,0xC0,0xEB,0x78,
+0x10,0x20,0x82,0xC1,0x84,0x21,0x3E,0x17,0xFD,0x30,0x3E,0x27,0xFD,0x59,0xBE,0x80,
+0xBE,0x86,0xC7,0x04,0xEB,0x64,0xEB,0x47,0xD5,0x12,0x4E,0x44,0x00,0x0C,0xC8,0x08,
+0xEA,0x2B,0xE6,0x01,0x3E,0xF7,0xFD,0x79,0x84,0x01,0x3E,0x07,0xFD,0x5F,0xEA,0x2B,
+0xC8,0x04,0xEB,0x64,0xEA,0xB6,0xD5,0x03,0xEB,0x64,0xDD,0x5D,0xB8,0x93,0x84,0xE0,
+0x44,0x20,0x05,0x10,0x3E,0x77,0xFD,0x40,0x84,0x20,0xEB,0x4E,0xEA,0x62,0xDD,0x42,
+0x3E,0x77,0xFD,0x3D,0x84,0x01,0xEB,0x2E,0x84,0xC0,0x3E,0x77,0xFD,0x20,0xBE,0x87,
+0x49,0xFF,0xDC,0x28,0xEB,0x4E,0x12,0x60,0x02,0xD6,0x3C,0x6B,0xFE,0xC7,0x3E,0x67,
+0xFD,0x5D,0x3C,0x6B,0xFE,0xC3,0x46,0x01,0x00,0x05,0x10,0x60,0x06,0xD6,0x46,0x01,
+0x00,0x05,0x12,0x60,0x03,0x6A,0x46,0x01,0x00,0x05,0x10,0x60,0x06,0x42,0x46,0x01,
+0x00,0x05,0x12,0x60,0x03,0x20,0x46,0x31,0x00,0x05,0x58,0x31,0x86,0x44,0xEA,0x29,
+0x46,0x21,0x00,0x05,0x58,0x21,0x05,0xB0,0x98,0x73,0x38,0x01,0x98,0x0A,0x38,0x01,
+0x18,0x0A,0xA8,0x09,0x10,0x70,0x80,0x08,0x98,0x72,0x8C,0xCC,0xA8,0x09,0x10,0x70,
+0x80,0x08,0x5A,0x68,0x90,0xF3,0xFC,0xC0,0x2E,0x27,0xFD,0x64,0x5A,0x18,0x02,0x05,
+0x3E,0x27,0xFD,0x45,0xD5,0x0E,0x8E,0x07,0xE6,0x02,0xE8,0x05,0x2E,0x00,0x00,0x0C,
+0xEA,0xDA,0xD5,0x05,0x2E,0x10,0x00,0x0E,0x40,0x01,0x04,0x40,0x3E,0x07,0xFD,0x45,
+0x84,0x00,0x3E,0x07,0xFD,0x2E,0xEA,0xAA,0xEA,0xC3,0xDD,0x9E,0xFC,0x0B,0x3F,0xCF,
+0xFD,0xD8,0x2E,0x07,0xFD,0x4B,0xC8,0x12,0xB8,0x0C,0x5A,0x00,0x02,0x09,0x2E,0x07,
+0xFF,0xD0,0xDD,0x49,0xEA,0x3D,0x2E,0x07,0xFF,0xD1,0xD5,0x0E,0x2E,0x07,0xFF,0xD4,
+0xDD,0x49,0xEA,0x3D,0x2E,0x07,0xFF,0xD5,0xD5,0x07,0xEA,0x9D,0x96,0x1F,0xDD,0x49,
+0xEA,0x3D,0xEA,0x9D,0x92,0x04,0xDD,0x49,0xEA,0x65,0xEA,0x45,0xC0,0x09,0x2E,0x00,
+0x00,0x63,0xDD,0x49,0xEA,0x3D,0x2E,0x00,0x00,0x63,0xDD,0x49,0xEA,0x65,0xEA,0x49,
+0xC0,0x07,0xEA,0xE3,0x94,0x01,0xEA,0x3D,0xEA,0xC9,0x94,0x01,0xEA,0x65,0xDD,0x59,
+0x5A,0x08,0x01,0x04,0x49,0x00,0x03,0x31,0xEB,0x11,0xEB,0x2A,0xDD,0x4D,0x42,0x00,
+0x18,0x0B,0xC0,0x06,0xDD,0x59,0x5A,0x08,0x01,0x04,0x49,0x00,0x04,0x64,0xB8,0x1B,
+0xB9,0x11,0xE2,0x01,0xE8,0x0C,0xC0,0x0B,0xEA,0x45,0xC0,0x09,0xEA,0xE3,0x94,0x01,
+0xEA,0x3D,0xEA,0xC9,0x94,0x01,0xEA,0x65,0xEB,0x11,0xEB,0x2A,0x84,0x00,0x3E,0x07,
+0xFD,0x58,0xDD,0x4D,0x42,0x00,0x18,0x0B,0xBA,0x11,0xC0,0x33,0xB8,0x14,0x5A,0x08,
+0x01,0x31,0xE6,0x42,0xE9,0x2E,0x46,0x01,0x00,0x01,0x00,0x10,0x0F,0xDC,0x46,0x01,
+0x00,0x01,0x00,0x00,0x0F,0xDE,0xE2,0x01,0xE8,0x03,0x9A,0x08,0xD5,0x02,0x8A,0x01,
+0x2E,0x37,0xFF,0xFA,0xE0,0x03,0xE8,0x1D,0x46,0x01,0x00,0x01,0x00,0x10,0x0F,0xDD,
+0x46,0x01,0x00,0x01,0x00,0x00,0x0F,0xDF,0xE2,0x01,0xE8,0x03,0x9A,0x08,0xD5,0x02,
+0x8A,0x01,0xE0,0x03,0xE8,0x0E,0xEB,0x64,0x04,0x00,0x00,0x2F,0x46,0x11,0x00,0x02,
+0x04,0x10,0x80,0x32,0x92,0x01,0xE2,0x20,0xE8,0x04,0x84,0x01,0x3E,0x07,0xFD,0x58,
+0xB8,0x1B,0xE2,0x40,0xE8,0x12,0x2E,0x07,0xFD,0x4B,0xC0,0x0F,0xEA,0x45,0xC8,0x0D,
+0xEA,0xE6,0xC8,0x0B,0xEA,0x9D,0x96,0x1F,0xDD,0x49,0xEA,0x3D,0xEA,0x9D,0x92,0x04,
+0xDD,0x49,0xEA,0x65,0xEB,0x11,0xEB,0x2A,0xB8,0x11,0xC0,0x1E,0x46,0x11,0x00,0x01,
+0x00,0x10,0x8F,0xDC,0x46,0x01,0x00,0x01,0x8E,0x21,0x00,0x00,0x0F,0xDD,0xFA,0x54,
+0x42,0x00,0x88,0x73,0x46,0x11,0x00,0x02,0xEB,0x17,0x40,0x00,0x80,0x20,0x22,0xF0,
+0x0C,0xA9,0x2E,0x07,0xFF,0xAA,0x94,0x01,0xE0,0x0F,0xE8,0x06,0x84,0x00,0xEB,0x15,
+0xEA,0xFD,0xC1,0x11,0xD5,0x0E,0x3C,0x03,0xFE,0xC4,0x5C,0xF0,0x03,0xE8,0xE8,0x0B,
+0x8C,0x01,0xEB,0x15,0x3C,0x03,0xFE,0xC0,0x5C,0xF0,0x00,0xC8,0xE8,0x04,0x8C,0x01,
+0x3C,0x0B,0xFE,0xC0,0x46,0x01,0x00,0x07,0xEA,0x63,0xEA,0x21,0xEA,0x20,0xD8,0x17,
+0x49,0xFF,0xE3,0x62,0x49,0xFF,0xE1,0xDD,0x49,0xFF,0xF9,0x12,0x49,0xFF,0xE7,0xEF,
+0x49,0xFF,0xE4,0xA5,0x49,0xFF,0xE5,0x57,0xDD,0x59,0x5A,0x08,0x01,0x10,0x46,0x01,
+0x00,0x01,0x58,0x00,0x09,0x48,0x49,0xFF,0xDE,0xD7,0xD5,0x08,0xDD,0x4D,0xEA,0xF0,
+0xC8,0xE8,0xDD,0x59,0x5A,0x08,0x01,0x30,0xD5,0xE4,0x46,0x01,0x00,0x05,0xEA,0x54,
+0x49,0xFF,0xE6,0x3E,0x46,0x01,0x00,0x05,0xEA,0x54,0x49,0xFF,0xE1,0x15,0xB8,0x00,
+0x5A,0x08,0x07,0x1F,0xB1,0x82,0x80,0x26,0x46,0x21,0x00,0x01,0xEB,0x36,0x46,0x01,
+0x00,0x05,0xEA,0x54,0x46,0x31,0x00,0x01,0x58,0x31,0x8D,0x68,0x49,0xFF,0xEB,0xC8,
+0xF0,0x81,0xF2,0x01,0x3A,0x03,0x04,0x00,0x49,0xFF,0xF3,0xC1,0x5A,0x00,0xFF,0x09,
+0x3E,0x07,0xFE,0x24,0x96,0x01,0x46,0x11,0x00,0x07,0x12,0x00,0x81,0xDB,0x84,0x00,
+0x3E,0x07,0xFD,0x27,0x46,0x01,0x00,0x05,0xEA,0x54,0xFC,0x8B,0x46,0x01,0x00,0x05,
+0x58,0x00,0x05,0xB0,0xDD,0x9E,0x46,0x11,0x00,0x05,0x58,0x10,0x85,0xB0,0x46,0x01,
+0x00,0x05,0xEA,0x54,0x3B,0x00,0x64,0x04,0xF8,0x01,0x3B,0x00,0xE4,0x24,0x3B,0x00,
+0x64,0x04,0x83,0xFF,0x3B,0x00,0xE4,0x24,0x3B,0x00,0x58,0x00,0x3B,0x00,0xD8,0x20,
+0xDD,0x9E,0x3C,0x0F,0xFF,0x8A,0xDD,0x9E,0x3C,0x13,0xFE,0xE4,0x3C,0x53,0xFE,0xE3,
+0xD9,0x07,0x84,0x00,0x3E,0x07,0xFD,0x6E,0x84,0x00,0xEA,0xCD,0xDD,0x9E,0xC8,0x06,
+0xEA,0x49,0xC0,0x04,0x8C,0x21,0x3C,0x1B,0xFE,0xE4,0xDD,0x9E,0xFC,0x00,0x84,0x01,
+0x3E,0x07,0xFD,0x72,0x3E,0x07,0xFD,0x74,0x84,0x00,0x3C,0x0B,0xFE,0xE6,0x84,0x21,
+0x3C,0x1F,0xFF,0x9A,0xEA,0xCD,0xFC,0x80,0xFC,0x00,0x3C,0x1D,0xFF,0x9A,0x5A,0x18,
+0x01,0x1F,0x2E,0x17,0xFD,0x72,0x5A,0x18,0x01,0x14,0x84,0x40,0x3E,0x27,0xFD,0x72,
+0x2E,0x37,0xFD,0x79,0xCB,0x04,0x3E,0x17,0xFD,0x79,0xD5,0x06,0x5A,0x38,0x01,0x09,
+0x3E,0x27,0xFD,0x79,0x84,0x20,0x49,0x00,0x06,0xA9,0x49,0x00,0x0A,0xEF,0x2E,0x07,
+0xFD,0x73,0x8C,0x01,0x3E,0x07,0xFD,0x73,0x84,0x02,0xD5,0x07,0x84,0x03,0x5A,0x10,
+0x02,0x05,0x5A,0x18,0x03,0x05,0x84,0x00,0x3C,0x0F,0xFF,0x9A,0xFC,0x80,0xFC,0x00,
+0x3C,0x1F,0xFF,0x90,0x84,0x20,0x3C,0x1F,0xFF,0x8F,0xDD,0x4F,0x46,0x01,0x00,0x05,
+0xEA,0x62,0xDD,0x42,0xFC,0x80,0xFC,0x00,0x3F,0xCF,0xFE,0x18,0xEB,0x23,0xC9,0x04,
+0x3C,0x63,0xFE,0xE5,0xD5,0x07,0x5A,0x18,0x01,0x05,0x3C,0x63,0xFE,0xE8,0xD5,0x02,
+0xEA,0xB5,0x84,0x40,0x80,0x02,0x46,0x41,0x00,0x05,0x58,0x42,0x06,0xD8,0x38,0x32,
+0x09,0x01,0x8C,0x41,0x88,0x03,0x5A,0x28,0xD8,0xFC,0x44,0x20,0x7F,0xFF,0x92,0x04,
+0xE2,0x40,0x40,0x01,0x3C,0x1B,0x2E,0x27,0xFD,0x77,0xCA,0x03,0xB8,0x96,0xD5,0x02,
+0xB8,0x95,0x2E,0x07,0xFD,0x76,0xE6,0x0A,0xE8,0x04,0x8C,0x01,0x3E,0x07,0xFD,0x76,
+0x2E,0x07,0xFD,0x76,0xE6,0x02,0x4E,0xF3,0x00,0x7C,0xC9,0x43,0x3C,0x23,0xFE,0xE2,
+0xB8,0x16,0xE2,0x40,0xE8,0x07,0x84,0x01,0x3E,0x07,0xFD,0x6E,0x3C,0x1B,0xFE,0xE4,
+0xD5,0x04,0xB8,0x01,0x49,0xFF,0xFF,0x6A,0xB8,0x15,0x88,0xC0,0xB8,0x16,0xE2,0xC0,
+0xE8,0x03,0xEA,0x49,0xC8,0x05,0xB8,0x00,0xEB,0x12,0x5A,0x08,0x01,0x12,0x2E,0x0F,
+0xFF,0xA3,0x4E,0x04,0x00,0x0E,0x46,0x01,0x00,0x07,0xEA,0x27,0xEA,0x48,0xEA,0x3F,
+0xD0,0x07,0x46,0x01,0x00,0x07,0xEA,0x27,0xEA,0x21,0xEA,0x20,0xD8,0x08,0x46,0x01,
+0x00,0x07,0xEA,0x27,0xEA,0x21,0xEA,0x20,0x4C,0x50,0x40,0x4B,0xEB,0x0A,0x46,0x01,
+0x00,0x02,0xEA,0xB6,0x50,0x10,0x05,0x10,0x49,0xFF,0xFF,0x8B,0xB8,0x00,0x5A,0x08,
+0x01,0x04,0x84,0x02,0xD5,0x04,0x5A,0x08,0x03,0x3C,0x84,0x00,0xB8,0x80,0xD5,0x38,
+0x5A,0x18,0x01,0x37,0x3C,0x23,0xFE,0xE7,0xB8,0x15,0xE2,0x40,0xE8,0x06,0x3E,0x17,
+0xFD,0x6E,0x84,0x00,0xEA,0xCD,0xD5,0x04,0xB8,0x01,0x49,0xFF,0xFF,0x27,0xB8,0x16,
+0x88,0xC0,0xB8,0x15,0xE2,0xC0,0xE8,0x03,0xEA,0x49,0xC8,0x05,0xB8,0x00,0xEB,0x12,
+0x5A,0x08,0x01,0x12,0x2E,0x0F,0xFF,0xA3,0x4E,0x04,0x00,0x0E,0x46,0x01,0x00,0x07,
+0xEA,0x27,0xEA,0x48,0xEA,0x3F,0xD0,0x07,0x46,0x01,0x00,0x07,0xEA,0x27,0xEA,0x21,
+0xEA,0x20,0xD8,0x07,0x46,0x01,0x00,0x07,0xEA,0x27,0xEA,0x48,0xEA,0x3F,0xD8,0x08,
+0xEB,0x0A,0x46,0x01,0x00,0x02,0xDD,0x5D,0x50,0x10,0x7A,0xF0,0xD5,0xBE,0xB8,0x04,
+0xC8,0x2F,0xEA,0x2B,0x5A,0x08,0x01,0x2D,0x2E,0x17,0xFD,0x3D,0xC9,0x29,0x3C,0x03,
+0xFE,0xE2,0xBA,0x16,0xE2,0x40,0xE8,0x24,0x3C,0x03,0xFE,0xE7,0xBA,0x15,0xE2,0x40,
+0xE8,0x1F,0x46,0x01,0x00,0x07,0xEA,0x27,0xEA,0x21,0xEA,0x20,0xD0,0x19,0x46,0x01,
+0x00,0x07,0xEA,0x27,0xEA,0x48,0xEA,0x3F,0xD0,0x13,0x2E,0x07,0xFD,0x70,0x5C,0xF0,
+0x00,0xC8,0xE8,0x03,0x8C,0x01,0xD5,0x0D,0x3E,0x17,0xFD,0x70,0xEB,0x0A,0x46,0x01,
+0x00,0x02,0xDD,0x5D,0x50,0x10,0x7A,0xF0,0x49,0xFF,0xFF,0x1B,0xD5,0x04,0x84,0x00,
+0x3E,0x07,0xFD,0x70,0xB9,0x01,0x2E,0x07,0xFD,0x74,0xC0,0x0F,0xC9,0x0E,0x3C,0x03,
+0xFE,0xE6,0x2E,0x27,0xFD,0x75,0xE2,0x40,0xE8,0x06,0x3E,0x17,0xFD,0x74,0x3C,0x1B,
+0xFE,0xE6,0xD5,0x06,0x8C,0x01,0xD5,0x02,0x84,0x00,0x3C,0x0B,0xFE,0xE6,0xFC,0x80,
+0xFC,0x00,0x3F,0xCF,0xFE,0x1C,0x3C,0x13,0xFE,0xE2,0xB8,0x15,0xE2,0x20,0xE9,0x06,
+0x3C,0x13,0xFE,0xE7,0xB8,0x14,0xE2,0x20,0xE8,0x05,0x2E,0x07,0xFD,0x5D,0xC8,0x02,
+0xEA,0x76,0x2E,0x07,0xFD,0x4C,0xC0,0x2D,0x84,0x00,0xEA,0x76,0x2E,0x17,0xFD,0x28,
+0xB8,0x0C,0xE2,0x20,0xEA,0xF5,0xE8,0x22,0x42,0x20,0x84,0x0B,0xC2,0x1F,0xBA,0x00,
+0xC2,0x04,0x2E,0x27,0xFD,0x5D,0xC2,0x1A,0xDD,0x59,0x5C,0x10,0x00,0x01,0x84,0x01,
+0xEA,0xAB,0xDD,0x59,0x5A,0x00,0x01,0x04,0x84,0x07,0xD5,0x02,0x84,0x02,0x84,0x22,
+0xEA,0x34,0xDD,0x59,0x80,0xC0,0x5A,0x08,0x01,0x0E,0xEA,0x33,0xC8,0x04,0xEA,0xB7,
+0xEA,0xC4,0xD5,0x08,0x3E,0x67,0xFD,0x1A,0xD5,0x05,0xEA,0x5B,0xC1,0x03,0x8C,0x01,
+0xB8,0x8C,0xFC,0x80,0xFC,0x00,0x3F,0xCF,0xFD,0xD8,0x46,0x01,0x00,0x07,0x04,0x50,
+0x03,0xCE,0xEA,0x21,0xEA,0x20,0xD8,0x03,0x84,0x03,0xD5,0x1E,0x46,0x01,0x00,0x05,
+0xEB,0x1C,0x3C,0x13,0xFE,0xC8,0xE2,0x20,0x84,0x20,0xBA,0x0C,0xE8,0x0B,0xB9,0x8D,
+0xB8,0x07,0xE6,0x03,0xE8,0x04,0x8C,0x01,0xB8,0x87,0xD5,0x0F,0xC2,0x0E,0xB9,0x8C,
+0xD5,0x0C,0xB9,0x87,0xB8,0x0D,0xE6,0x0F,0xE8,0x04,0x8C,0x01,0xB8,0x8D,0xD5,0x05,
+0x5A,0x20,0x02,0x04,0x84,0x02,0xB8,0x8C,0xB8,0x0C,0xC8,0x0A,0x2E,0x07,0xFF,0xA9,
+0xEA,0x4B,0x3C,0x03,0xFE,0xCC,0xEA,0xB4,0x2E,0x07,0xFD,0x38,0xD5,0x22,0x5A,0x08,
+0x02,0x17,0x2E,0x07,0xFF,0xAA,0xEA,0x4B,0x3C,0x03,0xFE,0xCD,0xEA,0xB4,0x2E,0x07,
+0xFD,0x38,0xEA,0x97,0x2E,0x07,0xFD,0x39,0xEA,0x90,0x2E,0x07,0xFF,0xC6,0xEA,0x98,
+0x2E,0x07,0xFF,0xC7,0xEA,0xAD,0x2E,0x00,0x00,0xE6,0xD5,0x16,0x5A,0x08,0x03,0x18,
+0x2E,0x07,0xFF,0xAB,0xEA,0x4B,0x3C,0x03,0xFE,0xCC,0xEA,0xB4,0x2E,0x07,0xFD,0x2C,
+0xEA,0x97,0xEB,0x02,0xEA,0x90,0x2E,0x07,0xFF,0xC4,0xEA,0x98,0x2E,0x07,0xFF,0xC5,
+0xEA,0xAD,0x2E,0x00,0x00,0xE5,0xDD,0x49,0x3C,0x0B,0xFE,0xCF,0xEB,0x08,0xC0,0x1C,
+0xEB,0x38,0xC8,0x1A,0x2E,0x00,0x00,0x52,0xEA,0x4B,0x2E,0x00,0x00,0x54,0xEA,0xB4,
+0x2E,0x00,0x00,0x57,0x40,0x10,0x10,0x09,0x3E,0x17,0xFD,0x23,0xB9,0x1B,0x5A,0x18,
+0x01,0x04,0x96,0x1F,0xD5,0x02,0xEB,0x02,0xEA,0x90,0x2E,0x07,0xFF,0xC4,0xEA,0x98,
+0x2E,0x00,0x00,0x56,0xEA,0xAD,0xB8,0x00,0x5A,0x08,0x07,0x05,0x2E,0x07,0xFF,0xAD,
+0xEA,0x4B,0xEB,0x43,0xC0,0x04,0x2E,0x07,0xFF,0xB9,0xEA,0x4B,0xEA,0x49,0xC0,0x07,
+0x2E,0x07,0xFD,0x2C,0xEA,0x97,0xEB,0x02,0x8C,0x02,0xEA,0x90,0xB8,0x1C,0xC0,0x03,
+0x84,0x00,0xEA,0x97,0xFC,0x80,0xFC,0x40,0x2E,0x50,0x00,0x58,0x40,0x62,0x90,0x09,
+0x4E,0x62,0x01,0x38,0x46,0x01,0x00,0x07,0x04,0x10,0x03,0xC5,0xEA,0x21,0xEA,0x20,
+0x4C,0x10,0x00,0x06,0xDD,0x4D,0xEB,0x18,0x4E,0x02,0x01,0x2C,0xEA,0x94,0x3C,0x0D,
+0xFF,0x8A,0x4E,0x13,0x01,0x0E,0xE6,0x02,0x4E,0xF2,0x01,0x0B,0x2E,0x37,0xFD,0x65,
+0x4E,0x33,0x01,0x07,0x2E,0x20,0x00,0x5C,0x2E,0x70,0x01,0x29,0x54,0x01,0x00,0x0F,
+0x8C,0xE1,0x9C,0x41,0x8A,0xE0,0xEA,0x3C,0x92,0x44,0x51,0x00,0x00,0x01,0x51,0x21,
+0x00,0x01,0x8B,0x82,0x80,0x03,0x80,0x43,0xFB,0xF6,0x46,0x91,0x00,0x04,0x58,0x94,
+0x84,0xB8,0xE0,0x27,0xE8,0x19,0x42,0xA0,0xCC,0x24,0x80,0x92,0xE0,0x90,0xE8,0x11,
+0x41,0x12,0x28,0x00,0x41,0x14,0xC4,0x20,0x02,0xF8,0x80,0x00,0xEA,0x7E,0xE0,0x0F,
+0xE8,0x05,0x02,0x08,0x80,0x00,0x80,0x61,0x80,0x44,0x8C,0x81,0x97,0x20,0xD5,0xEF,
+0x8C,0x21,0x96,0x48,0xD5,0xE7,0x46,0x11,0x00,0x07,0x12,0x00,0x87,0xBB,0x2E,0x40,
+0x00,0x83,0x2E,0x10,0x00,0x84,0xE2,0x04,0x40,0x10,0x80,0x06,0x41,0x07,0x84,0x02,
+0x3F,0x07,0xFD,0x55,0x2E,0x10,0x00,0x5A,0xE2,0x20,0xE8,0x0D,0x2E,0x10,0x00,0x59,
+0xE2,0x01,0xE8,0x09,0x3C,0x43,0xFE,0xC4,0x2E,0x70,0x00,0x5B,0x84,0x2A,0xFE,0x7C,
+0xE0,0x24,0xE9,0x03,0x4F,0x02,0x00,0xB0,0xFA,0x96,0xFF,0x1C,0x47,0x11,0x00,0x04,
+0x59,0x18,0x84,0xB8,0x99,0xE2,0x95,0xF9,0x8E,0xE2,0x40,0x13,0xC4,0x00,0xA4,0x48,
+0x8C,0xE4,0x88,0xF1,0x41,0x20,0x80,0x11,0xA4,0x78,0x50,0x72,0x7F,0xDA,0x96,0x4B,
+0x88,0xE2,0x95,0xF9,0x88,0x32,0x88,0x01,0x40,0x13,0xC4,0x00,0xA4,0x48,0x88,0x01,
+0x50,0x12,0x00,0x26,0x88,0x22,0x94,0x49,0x40,0x40,0xC4,0x00,0xA5,0x20,0x88,0x04,
+0x9F,0x3A,0x88,0x91,0xA5,0x20,0x8C,0xE2,0x88,0xF1,0x88,0x04,0xA5,0x38,0x88,0x04,
+0x9F,0x0A,0x88,0x91,0x8C,0x22,0xA5,0x20,0x88,0x31,0xA4,0x48,0x88,0x04,0x88,0x01,
+0x96,0x01,0x92,0x01,0x46,0x11,0x00,0x07,0x12,0x00,0x87,0xBC,0x2E,0x10,0x00,0x5D,
+0xE2,0x20,0xE8,0x03,0x4F,0x02,0x00,0x0E,0x2E,0x10,0x00,0x86,0xE2,0x20,0x4E,0xF2,
+0x00,0x84,0x2E,0x10,0x00,0x85,0xE2,0x01,0x4E,0xF2,0x00,0x7F,0x4F,0x02,0x00,0x7D,
+0xEA,0x92,0x5A,0x08,0xFF,0x04,0x48,0x00,0x00,0x7D,0xC8,0x08,0x3E,0x27,0xFD,0x3E,
+0x3E,0x37,0xFD,0x25,0x3E,0x07,0xFD,0x33,0xD5,0x4F,0x2E,0x07,0xFD,0x3E,0xE2,0x40,
+0xE8,0x03,0x9A,0x82,0xD5,0x02,0x8A,0x40,0x2E,0x07,0xFD,0x25,0x96,0x90,0xE2,0x60,
+0xE8,0x03,0x9A,0xC3,0xD5,0x02,0x8A,0x60,0xDD,0x5C,0x96,0xD8,0x80,0x82,0x42,0x41,
+0x80,0x73,0x97,0x5F,0x80,0x04,0x46,0x41,0x00,0x07,0x12,0x02,0x07,0xBD,0x9C,0x69,
+0x2E,0x00,0x00,0x5E,0x5A,0x68,0x01,0x0F,0x96,0x1F,0xE0,0x02,0xE9,0x03,0xE0,0x03,
+0xE8,0x03,0x84,0x1F,0xEA,0x8F,0x2E,0x57,0xFD,0x1E,0xD9,0x26,0x84,0x01,0xEA,0xFC,
+0xD5,0x23,0x92,0x04,0xE2,0x02,0xE9,0x03,0xE2,0x03,0xE8,0x04,0x84,0x1F,0xEA,0x8F,
+0xD5,0x1B,0x98,0x1A,0x2E,0x47,0xFD,0x33,0x96,0x00,0xE2,0x04,0xE8,0x07,0x8A,0x80,
+0xE4,0x83,0xE9,0x04,0x84,0x1F,0xEA,0x8F,0xD5,0x03,0x3E,0x07,0xFD,0x33,0xFE,0x94,
+0x42,0x21,0x8C,0x73,0xFE,0x4C,0x96,0x90,0xE0,0x22,0xE8,0x06,0xEA,0x92,0x90,0xA1,
+0xE0,0xA0,0xE9,0xDD,0xD5,0xE4,0xEA,0x92,0x5C,0xF0,0x00,0xF0,0xE8,0x1D,0x8C,0x01,
+0xEA,0x8F,0xD5,0x1A,0x5A,0x60,0x03,0x19,0x3F,0x07,0xFD,0x1E,0xD5,0x15,0x84,0x20,
+0x3E,0x17,0xFD,0x1E,0xC8,0x0E,0x2E,0x20,0x00,0x5F,0x3C,0x13,0xFE,0xCB,0x94,0x91,
+0xE0,0x22,0xE8,0x05,0x8C,0x21,0x3C,0x1B,0xFE,0xCB,0xD5,0x06,0xEA,0xFC,0xD5,0x02,
+0x84,0x00,0x3C,0x0B,0xFE,0xCB,0xEA,0x92,0x46,0x11,0x00,0x07,0x12,0x00,0x87,0xBA,
+0xFC,0xC0,0xFC,0x20,0x3F,0xCF,0xFE,0x1C,0x2E,0x50,0x01,0xCD,0x2E,0x40,0x01,0xCC,
+0x84,0x22,0x9A,0xAC,0x8C,0x41,0x40,0x21,0x04,0x56,0x2F,0x00,0x01,0xCE,0x88,0x44,
+0x2E,0x70,0x01,0xCF,0x96,0x10,0x46,0x21,0x00,0x01,0x00,0x21,0x0F,0xDD,0x46,0x61,
+0x00,0x07,0x9A,0x82,0x42,0x31,0x00,0x03,0x40,0x28,0x1C,0x01,0x8C,0x41,0x40,0x11,
+0x04,0x36,0x46,0x21,0x00,0x01,0x88,0x27,0x00,0x21,0x0F,0xDC,0x96,0x48,0x9A,0x8A,
+0x42,0x21,0x00,0x03,0x88,0x43,0x96,0xD1,0x12,0x33,0x07,0xB5,0x2E,0x37,0xFD,0x29,
+0xCB,0x21,0xB8,0x00,0xC0,0x57,0x46,0x01,0x00,0x01,0x00,0x10,0x0B,0xA0,0xC9,0x52,
+0x2E,0x00,0x00,0x60,0xE0,0x02,0xE8,0x13,0x2E,0x07,0xFD,0x6C,0x8C,0x01,0x96,0x00,
+0x3E,0x07,0xFD,0x6C,0x2E,0x07,0xFD,0x6C,0x2E,0x27,0xFD,0x32,0xE2,0x40,0xE8,0x42,
+0x84,0x01,0x3E,0x07,0xFD,0x29,0x3E,0x17,0xFD,0x68,0xD5,0x3C,0x3E,0x17,0xFD,0x6C,
+0xD5,0x39,0xBA,0x03,0xCA,0x07,0xBA,0x00,0xCA,0x05,0x3E,0x27,0xFD,0x6C,0x3E,0x27,
+0xFD,0x29,0x2E,0x30,0x00,0x64,0x46,0x21,0x00,0x01,0x04,0x21,0x03,0xFD,0xE2,0x62,
+0xE8,0x29,0xFA,0x76,0x80,0x40,0x42,0x23,0x8C,0x73,0xEB,0x19,0xEB,0x24,0x40,0x23,
+0x08,0x20,0x22,0x21,0x14,0xB2,0x5A,0x20,0xFD,0x1E,0x42,0x08,0x0C,0x73,0x40,0x23,
+0x00,0x20,0x22,0x01,0x14,0xB2,0x5A,0x00,0xFD,0x16,0xFE,0x5C,0x98,0x0C,0x40,0x03,
+0x00,0x20,0x22,0x00,0x14,0xB2,0x5A,0x00,0xFD,0x0E,0x88,0xA1,0x40,0x53,0x14,0x20,
+0x22,0x02,0x94,0xB2,0x5A,0x00,0xFD,0x07,0x84,0x00,0x3E,0x07,0xFD,0x6C,0x3E,0x07,
+0xFD,0x29,0xFC,0xA0,0x46,0x19,0x00,0x00,0x04,0x00,0x80,0x30,0xEA,0x37,0x14,0x00,
+0x80,0x30,0xDD,0x9E,0x46,0x19,0x00,0x28,0xA4,0xCA,0x84,0x41,0x40,0x21,0x00,0x0C,
+0x40,0x21,0x88,0x12,0xAC,0x8A,0x50,0x10,0x80,0x74,0x40,0x10,0x80,0x40,0xA6,0x08,
+0xDD,0x9E,0x46,0x09,0x00,0x88,0x84,0x21,0x10,0x10,0x00,0xA8,0x44,0x1F,0xFF,0xA5,
+0x10,0x10,0x00,0xE0,0x46,0x02,0xB1,0x18,0x50,0x00,0x03,0x00,0x46,0x13,0x00,0xB9,
+0xB6,0x01,0x46,0x06,0x65,0x5F,0x50,0x00,0x0F,0x00,0x46,0x13,0x00,0xEB,0xB6,0x01,
+0xDD,0x9E,0xFC,0x40,0x80,0xE1,0x81,0x20,0x80,0xC2,0xDD,0x52,0x46,0x33,0x00,0x00,
+0x88,0x67,0x4E,0x92,0x00,0x04,0xB6,0xC3,0xD5,0x03,0x97,0xB0,0xAF,0x98,0xDD,0x57,
+0x04,0x00,0x00,0x3A,0x92,0x0C,0x96,0x0F,0x5A,0x08,0x03,0x06,0x84,0x20,0x46,0x03,
+0x00,0xB9,0xB6,0x20,0x84,0x20,0xEA,0x5D,0x10,0x10,0x00,0xA8,0xFC,0xC0,0xFC,0x00,
+0xF8,0x32,0x80,0x43,0xDD,0x4C,0xFC,0x80,0xFC,0x20,0x80,0xE0,0x80,0xC1,0xDD,0x52,
+0x46,0x23,0x00,0x00,0xC7,0x13,0x98,0x32,0xA6,0x40,0x9C,0x11,0x88,0x06,0xA7,0x00,
+0x9C,0x12,0x88,0x06,0x9C,0xD3,0xA6,0x00,0x98,0xB3,0xA6,0x90,0xEA,0xE8,0x40,0x00,
+0x0B,0x04,0xFE,0x0F,0x40,0x00,0x11,0x04,0xD5,0x04,0x88,0x46,0xA6,0x10,0x96,0x00,
+0xEA,0x3E,0x04,0x10,0x80,0x3A,0x92,0x2C,0x96,0x4F,0x5A,0x18,0x03,0x06,0x84,0x40,
+0x46,0x13,0x00,0xB9,0xB6,0x41,0x84,0x40,0x46,0x19,0x00,0x88,0x10,0x20,0x80,0xA8,
+0xFC,0xA0,0xFC,0x00,0x40,0x10,0xA8,0x08,0x40,0x10,0x81,0x80,0x88,0x22,0x84,0x00,
+0x83,0xFF,0xEA,0x60,0x96,0x00,0xFC,0x80,0x46,0x38,0x00,0x00,0x84,0x40,0x50,0x31,
+0x80,0x34,0xB4,0x03,0x46,0x18,0x00,0x00,0x96,0x04,0xC0,0x06,0x5A,0x20,0x64,0x2E,
+0x8C,0x41,0x96,0x90,0xD5,0xF7,0x5A,0x20,0x64,0x29,0xA8,0x0C,0xA0,0x8C,0x50,0x40,
+0x80,0x20,0x58,0x21,0x00,0x80,0xA8,0x8C,0xA0,0x8C,0x66,0x21,0x1F,0x00,0x58,0x21,
+0x07,0x00,0xA8,0x8C,0xA0,0xCC,0x44,0x2C,0xFF,0xFF,0xFE,0x9E,0x42,0x21,0x44,0x08,
+0xA8,0x8C,0xB6,0x04,0xB4,0x64,0x46,0x2F,0x0F,0xFF,0x50,0x21,0x0F,0xFF,0xFE,0x9E,
+0x46,0x30,0x70,0x00,0xFE,0x9F,0xB6,0x44,0xB4,0x44,0x42,0x21,0x78,0x08,0xB6,0x44,
+0x84,0x44,0x10,0x20,0x80,0x24,0xDD,0x9E,0xFA,0x11,0xDD,0x9E,0xFC,0x63,0xF0,0x81,
+0xEB,0x5A,0xEB,0x30,0x44,0x00,0x04,0x00,0xF2,0x01,0xDD,0x48,0xEA,0x9B,0x81,0x60,
+0x4E,0x03,0x00,0x9B,0x46,0xEF,0xF0,0x0F,0x81,0x80,0x50,0x07,0x0F,0xFF,0x84,0xC1,
+0x85,0xA4,0xF0,0x84,0xEB,0x81,0x58,0x00,0x00,0x04,0x38,0x70,0x34,0x00,0x8C,0x01,
+0x38,0xA6,0x80,0x00,0x4E,0x72,0x00,0x89,0x54,0x05,0x00,0xFB,0x85,0x00,0xF0,0x83,
+0xE3,0x07,0x4E,0xF2,0x00,0x7B,0x40,0x04,0x34,0x00,0xEB,0x5A,0x58,0x10,0x80,0x00,
+0x88,0x01,0x00,0x90,0x00,0x06,0x5A,0xA0,0xBD,0x6B,0x5A,0xA8,0xE9,0x0C,0x54,0x04,
+0x80,0xC0,0x5A,0x08,0xC0,0x05,0x54,0xE4,0x80,0x3F,0xD5,0x0F,0x85,0xC1,0xC0,0x0D,
+0xD5,0x0B,0x5A,0xA8,0xC1,0x08,0x2E,0x07,0xFD,0x1B,0x81,0xC6,0x5A,0x08,0x01,0x06,
+0xD5,0x58,0x5A,0xA0,0xB6,0x0A,0x81,0xC6,0x88,0xC8,0x96,0x30,0xF0,0x81,0xEA,0xD3,
+0x84,0xC3,0xF0,0x82,0xD5,0x07,0x2E,0x07,0xFD,0x04,0x5A,0x00,0xFF,0xF6,0x81,0xC6,
+0xD5,0x48,0x80,0x0A,0x80,0x2C,0xF2,0x02,0x80,0x69,0xDD,0x54,0x5A,0xA0,0xB9,0x42,
+0xF0,0x03,0x5A,0x00,0xB2,0x3F,0x5A,0xA0,0xE9,0x3D,0x80,0x0A,0x80,0x2C,0xF2,0x02,
+0xEA,0x3A,0xF0,0x85,0x4C,0x90,0x00,0x36,0x44,0x00,0x00,0x32,0xDD,0x50,0x9E,0x31,
+0x97,0x80,0xF3,0x05,0xCE,0xE7,0x46,0x01,0x00,0x07,0x04,0x20,0x03,0xF0,0xF1,0x04,
+0x66,0x21,0x00,0xFF,0x40,0x25,0x08,0x04,0x14,0x20,0x03,0xF0,0x04,0x00,0x03,0xF0,
+0x44,0x2F,0x00,0xFF,0xFE,0x86,0x40,0x21,0x31,0x04,0x46,0x01,0x00,0x07,0x14,0x20,
+0x03,0xF0,0x04,0x00,0x03,0xF0,0x81,0x6A,0xFE,0x0E,0xF1,0x01,0x40,0x60,0x06,0x04,
+0x46,0x01,0x00,0x07,0x14,0x60,0x03,0xF0,0x04,0x10,0x03,0xF0,0x40,0x10,0xA0,0x08,
+0x92,0x28,0x40,0x10,0x8F,0x04,0x14,0x10,0x03,0xF0,0xD5,0x03,0x81,0xC6,0x81,0x89,
+0x8D,0x01,0x80,0xCE,0x48,0xFF,0xFF,0x86,0x8C,0xE2,0x40,0xD6,0x9C,0x00,0x5C,0xF6,
+0x84,0x00,0x4E,0xF3,0xFF,0x71,0x80,0x0B,0xFC,0xE3,0x46,0x09,0x00,0x08,0x02,0x50,
+0x00,0x08,0xEA,0xE9,0xD1,0x03,0x12,0x10,0x00,0x08,0xDD,0x9E,0xFC,0x00,0xEA,0x93,
+0x46,0x10,0x30,0x00,0xEA,0xB9,0x8C,0x21,0xEB,0x2B,0xB4,0x02,0x96,0x04,0xC0,0x04,
+0x8E,0x21,0xC9,0xFC,0xFA,0x14,0xFC,0x80,0xFC,0x00,0xDD,0x52,0x84,0x00,0x44,0x11,
+0x00,0x00,0x80,0x40,0xDD,0x4C,0xEA,0x4A,0xFC,0x80,0xFC,0x00,0xDD,0x52,0x84,0x00,
+0x44,0x11,0x10,0x00,0x80,0x40,0xDD,0x4C,0xEA,0x4A,0xFC,0x80,0xFC,0x00,0xDD,0x52,
+0x84,0x00,0x44,0x12,0x90,0x00,0x80,0x40,0xDD,0x4C,0xEA,0x4A,0xFC,0x80,0xFC,0x00,
+0xDD,0x52,0x84,0x00,0x44,0x12,0x80,0x00,0x80,0x40,0xDD,0x4C,0xEA,0x4A,0xFC,0x80,
+0x46,0x09,0x00,0x08,0xA5,0x46,0x44,0x10,0xAC,0x53,0xD1,0x04,0x44,0x1F,0xAC,0x53,
+0xAC,0x46,0xDD,0x9E,0x46,0x09,0x00,0x08,0xA4,0x46,0xC1,0x03,0x84,0x20,0xAC,0x46,
+0xDD,0x9E,0xFC,0x01,0xEA,0x38,0x00,0x1F,0x80,0x00,0x84,0x01,0x40,0x30,0x80,0x02,
+0x00,0x1F,0x80,0x01,0x00,0x2F,0x80,0x04,0xFE,0x46,0x40,0x11,0x84,0x20,0x00,0x3F,
+0x80,0x02,0xFE,0xC6,0x40,0x10,0x8C,0x60,0x00,0x3F,0x80,0x03,0xFE,0xC6,0x40,0x10,
+0x8C,0x80,0xFE,0x16,0x40,0x00,0x80,0xA0,0xEB,0x3E,0xEB,0x3A,0xEA,0x5C,0xFC,0x81,
+0x9E,0x41,0xE6,0x23,0xE8,0x1B,0xEA,0x28,0x84,0x40,0x10,0x20,0x80,0x94,0x84,0x41,
+0x10,0x20,0x80,0x94,0xEA,0x3E,0x5A,0x00,0x02,0x08,0x5A,0x00,0x03,0x0A,0xEA,0xD0,
+0x12,0x00,0x80,0x0A,0xD5,0x09,0x44,0x00,0x00,0xA5,0xAC,0x0E,0xD5,0x05,0x44,0x00,
+0x00,0x55,0x12,0x00,0x80,0x0C,0x84,0x00,0xDD,0x9E,0xFA,0x02,0xDD,0x9E,0x46,0x20,
+0x4C,0x4B,0x50,0x21,0x04,0x00,0xE2,0x41,0xE9,0x18,0xE6,0x04,0xE8,0x16,0xFC,0x01,
+0xF0,0x81,0x80,0xC1,0x84,0x00,0xF1,0x01,0xEA,0x3B,0x3C,0x1D,0xFF,0xE3,0xFA,0x44,
+0xFF,0x8C,0x84,0x00,0xF1,0x01,0x40,0x23,0x08,0x57,0xF8,0x2C,0x84,0x00,0xF1,0x01,
+0x84,0x48,0xF8,0x2D,0x84,0x00,0xFC,0x81,0xFA,0x02,0xDD,0x9E,0xE6,0x04,0xE8,0x2B,
+0xFC,0x40,0x80,0xE0,0x81,0x21,0x84,0x01,0x80,0x27,0xEA,0x3B,0x46,0x49,0x00,0x80,
+0x8C,0x84,0x40,0x42,0x1C,0xA0,0x44,0x10,0x00,0x65,0x8E,0x21,0x96,0x48,0xB4,0x64,
+0xB4,0x04,0xC1,0x1B,0x40,0x60,0x0C,0x04,0xCE,0xF9,0x40,0x24,0x88,0x09,0xDD,0x5C,
+0x42,0x11,0x00,0x24,0x2E,0x27,0xFD,0xEA,0x84,0x01,0x40,0x20,0x88,0x57,0x80,0x27,
+0x88,0x40,0x49,0x00,0x0A,0x6E,0x84,0x01,0x80,0x40,0x80,0x27,0x49,0x00,0x0A,0x74,
+0x80,0x06,0xD5,0x04,0xFA,0x02,0xDD,0x9E,0xFA,0x14,0xFC,0xC0,0x46,0x18,0x00,0x60,
+0x00,0x00,0x80,0x14,0xEB,0x03,0x10,0x00,0x80,0x14,0xDD,0x9E,0x46,0x08,0x00,0x60,
+0x00,0x10,0x00,0x10,0x84,0x01,0x40,0x00,0x04,0x12,0xDD,0x9E,0xFC,0x01,0x10,0x0F,
+0x80,0x07,0x00,0x0F,0x80,0x07,0x96,0x00,0xE6,0x06,0xE8,0x47,0x3E,0xFF,0xD5,0xF4,
+0x38,0x07,0x80,0x00,0x40,0xF0,0x3C,0x00,0x4A,0x00,0x3C,0x00,0x22,0x06,0x0A,0x10,
+0x16,0x1C,0xEB,0x0B,0xD5,0x0E,0x44,0x60,0x00,0x66,0xD5,0x0B,0x44,0x60,0x00,0x77,
+0xD5,0x08,0x44,0x60,0x00,0x99,0xD5,0x05,0x44,0x60,0x00,0xAA,0xD5,0x02,0x84,0xC0,
+0x46,0x19,0x00,0x78,0x00,0x0F,0x80,0x07,0xF8,0x03,0x46,0x19,0x00,0x70,0x00,0x00,
+0x80,0x08,0xEA,0x37,0xEA,0xFB,0x83,0xFF,0x2E,0x07,0xFD,0x02,0xC0,0x02,0xEB,0x0B,
+0xEA,0x69,0xEA,0xA3,0xC8,0x11,0xEA,0xA5,0xC8,0x0F,0x49,0xFF,0xE6,0x49,0xC8,0x0C,
+0xEA,0x3E,0x04,0x00,0x80,0x10,0x42,0x00,0x44,0x0B,0xC8,0x06,0x04,0x00,0x80,0x10,
+0x42,0x00,0x48,0x0B,0xC0,0x02,0xEB,0x0B,0x97,0xB1,0xDD,0x57,0x12,0x60,0x00,0x50,
+0x64,0x00,0x00,0x00,0x84,0x00,0xD5,0x02,0xFA,0x02,0xFC,0x81,0xFC,0x20,0x84,0xA0,
+0x50,0x21,0x00,0x24,0x80,0x85,0x45,0x20,0x00,0x48,0x47,0x11,0x00,0x07,0x59,0x18,
+0x85,0x00,0x2E,0x30,0x01,0x29,0xE0,0x83,0xE8,0x18,0x82,0x11,0x43,0x02,0x48,0x73,
+0x84,0x60,0x2E,0x60,0x01,0x28,0xE0,0x66,0xE8,0x0D,0x38,0x78,0x0D,0x01,0x99,0x9D,
+0x40,0x70,0x1C,0x20,0xA5,0xF8,0x40,0x60,0x98,0x20,0x97,0xFB,0xAD,0xF0,0x8C,0x61,
+0xD5,0xF1,0x8C,0x81,0x88,0xA2,0xD5,0xE6,0xFC,0xA0,0xFC,0x21,0x3F,0xCF,0xFD,0xD4,
+0xF0,0x81,0xDD,0x47,0x80,0xE1,0x80,0xC2,0xDD,0x40,0xC0,0x02,0x84,0xC4,0xEA,0x24,
+0xC0,0x1A,0xDD,0x43,0x02,0x30,0x00,0x9C,0x02,0x00,0x00,0x0A,0x8A,0x60,0x40,0x31,
+0xA4,0x08,0xBB,0x80,0x3C,0x3D,0xFF,0x75,0xFE,0xDA,0xBB,0x84,0x80,0x06,0x49,0x00,
+0x09,0x7C,0xB9,0x04,0xF0,0x01,0x44,0x20,0x01,0xB0,0x42,0x70,0x08,0x73,0x80,0x47,
+0x49,0x00,0x09,0x8C,0xFC,0xA1,0x00,0x00,0xFC,0x00,0xE6,0x28,0x4E,0xF2,0x01,0x89,
+0x9E,0x82,0xE6,0x47,0x4E,0xF2,0x01,0x85,0x44,0x30,0x01,0xAC,0x3E,0xFF,0xD7,0x34,
+0x38,0x27,0x88,0x00,0x40,0xF1,0x3C,0x00,0x4A,0x00,0x3C,0x00,0x08,0x08,0x08,0x08,
+0x08,0x0E,0x0E,0x00,0x44,0x20,0xD6,0xB0,0xD5,0x03,0x44,0x20,0xD3,0x58,0x42,0x20,
+0x8C,0x73,0x00,0x31,0x01,0x88,0x80,0x22,0xEA,0xB9,0x10,0x31,0x00,0x28,0x3C,0x3D,
+0xFF,0x76,0x8E,0x67,0xE6,0x62,0xE8,0x0F,0x46,0x31,0x00,0x07,0x04,0x51,0x83,0xC4,
+0x46,0x3A,0x55,0xAA,0x50,0x31,0x85,0x5A,0xD3,0x06,0x2E,0x37,0xFF,0xA3,0x42,0x31,
+0x90,0x0B,0xC3,0x05,0x04,0x30,0x80,0x59,0x14,0x31,0x00,0x30,0x46,0x28,0x00,0x20,
+0x00,0x30,0x81,0x89,0x10,0x31,0x02,0xBC,0x00,0x30,0x81,0x8A,0x10,0x31,0x00,0x2C,
+0x00,0x30,0x81,0x8B,0x10,0x31,0x02,0x38,0x04,0x30,0x80,0x4B,0x14,0x31,0x00,0x8D,
+0x04,0x30,0x80,0x4C,0x14,0x31,0x00,0x0E,0x00,0x30,0x81,0x8C,0x10,0x31,0x00,0x40,
+0x00,0x30,0x81,0x8D,0x10,0x31,0x00,0x44,0x00,0x30,0x81,0x8E,0x10,0x31,0x00,0x48,
+0x00,0x30,0x81,0x8F,0x10,0x31,0x00,0x4C,0x00,0x30,0x81,0x90,0x10,0x31,0x00,0x50,
+0x00,0x30,0x81,0x91,0x10,0x31,0x00,0x54,0x00,0x30,0x81,0x92,0x10,0x31,0x00,0x58,
+0x00,0x30,0x81,0x93,0x10,0x31,0x00,0x64,0x02,0x30,0x80,0xB4,0x12,0x31,0x00,0x12,
+0x02,0x30,0x80,0xB5,0x12,0x31,0x00,0x8A,0x02,0x30,0x80,0xB6,0x12,0x31,0x00,0x1E,
+0x00,0x30,0x81,0x94,0x10,0x31,0x00,0x28,0x00,0x30,0x81,0x95,0x10,0x31,0x00,0x34,
+0x00,0x30,0x81,0x96,0x10,0x31,0x02,0xAC,0x00,0x30,0x81,0x97,0x10,0x31,0x00,0x18,
+0x00,0x30,0x81,0x98,0x10,0x31,0x05,0x68,0x00,0x30,0x81,0x99,0x10,0x31,0x05,0x78,
+0x00,0x30,0x81,0x9A,0x10,0x31,0x01,0x30,0x00,0x30,0x81,0x9B,0x10,0x31,0x01,0x2C,
+0x00,0x30,0x81,0x9C,0x10,0x31,0x01,0xDC,0x00,0x30,0x81,0x9D,0x10,0x31,0x02,0x9C,
+0x00,0x30,0x81,0x9E,0x10,0x31,0x01,0xD8,0x02,0x30,0x80,0xB7,0x12,0x31,0x00,0x9A,
+0x02,0x30,0x80,0xB8,0x12,0x31,0x00,0x9C,0x02,0x30,0x80,0xB9,0x12,0x31,0x00,0x0A,
+0x02,0x30,0x80,0xBA,0x12,0x31,0x00,0xF8,0x02,0x30,0x80,0xBB,0x12,0x31,0x00,0xFC,
+0x02,0x30,0x80,0xBC,0x12,0x31,0x00,0xFE,0x02,0x30,0x80,0xBD,0x12,0x31,0x01,0x00,
+0x00,0x30,0x81,0x9F,0x10,0x31,0x02,0x04,0x04,0x30,0x80,0x4D,0x14,0x31,0x00,0x38,
+0x04,0x30,0x80,0x4E,0x14,0x31,0x00,0x39,0x00,0x30,0x81,0xA0,0x10,0x31,0x00,0xCC,
+0x00,0x30,0x81,0xA1,0x10,0x31,0x00,0xD0,0x02,0x30,0x80,0xBE,0x12,0x31,0x00,0xF6,
+0x04,0x30,0x80,0x4F,0x14,0x31,0x00,0x78,0x04,0x30,0x80,0x50,0x14,0x31,0x00,0x79,
+0x02,0x30,0x80,0xBF,0x12,0x31,0x00,0xF4,0x02,0x30,0x80,0xC0,0x12,0x31,0x02,0xB8,
+0x02,0x30,0x80,0xC1,0x12,0x31,0x00,0xB6,0x04,0x30,0x80,0x51,0x14,0x31,0x00,0xB1,
+0x04,0x30,0x80,0x52,0x14,0x31,0x00,0xB3,0x04,0x30,0x80,0x53,0x14,0x31,0x00,0xB4,
+0x04,0x30,0x80,0x3F,0x14,0x31,0x01,0x5F,0x04,0x30,0x80,0x40,0x14,0x31,0x01,0x60,
+0x04,0x30,0x80,0x41,0x14,0x31,0x01,0x61,0x04,0x30,0x80,0x42,0x14,0x31,0x01,0x62,
+0x04,0x30,0x80,0x43,0x14,0x31,0x01,0x63,0x04,0x30,0x80,0x44,0x14,0x31,0x01,0x64,
+0x04,0x30,0x80,0x45,0x14,0x31,0x01,0x65,0x04,0x30,0x80,0x46,0x14,0x31,0x01,0x66,
+0x04,0x30,0x80,0x47,0x14,0x31,0x01,0x67,0x04,0x30,0x80,0x48,0x14,0x31,0x01,0x68,
+0x04,0x30,0x80,0x49,0x14,0x31,0x01,0x69,0x04,0x30,0x80,0x4A,0x14,0x31,0x01,0x6A,
+0x00,0x30,0x81,0xA2,0x10,0x31,0x00,0xD8,0x04,0x30,0x80,0x54,0x14,0x31,0x00,0x30,
+0x04,0x30,0x80,0x55,0x14,0x31,0x00,0x31,0x04,0x30,0x80,0x56,0x14,0x31,0x00,0x32,
+0x00,0x30,0x81,0xA3,0x10,0x31,0x00,0xB0,0x00,0x30,0x81,0xA4,0x10,0x31,0x00,0xB4,
+0x00,0x30,0x81,0xA5,0x10,0x31,0x05,0xBC,0x04,0x30,0x80,0x57,0x14,0x31,0x00,0xB2,
+0x04,0x30,0x80,0x58,0x14,0x31,0x00,0xB0,0x00,0x30,0x81,0xA6,0x10,0x31,0x01,0x58,
+0x00,0x30,0x81,0xA7,0x10,0x31,0x01,0x5C,0x02,0x30,0x80,0xC2,0x46,0x52,0x00,0x00,
+0x12,0x31,0x00,0x94,0x50,0x22,0x80,0xFC,0xB4,0x61,0xB6,0x65,0xB4,0x85,0xB4,0x61,
+0x4C,0x41,0xFF,0xFC,0x8C,0xA4,0x8C,0x24,0xDA,0xF8,0x49,0xFF,0xC8,0x68,0x49,0xFF,
+0xC4,0x7C,0x46,0x00,0x00,0x0D,0x00,0x00,0x04,0xF9,0x8E,0x01,0x96,0x00,0x3E,0x07,
+0xFD,0x0E,0x46,0x00,0x00,0x0D,0x00,0x00,0x06,0xA5,0x8E,0x01,0x96,0x00,0x3E,0x07,
+0xFD,0x15,0xEA,0x9B,0x80,0xC0,0xC8,0x0E,0xDD,0x5C,0xDD,0x50,0xDD,0x4B,0x8E,0x07,
+0xE6,0x02,0xE8,0x08,0x84,0x21,0xDD,0x43,0x10,0x10,0x02,0xA0,0xD5,0x03,0xFA,0x02,
+0xD5,0x02,0x80,0x06,0xFC,0x80,0x92,0x00,0xFC,0x40,0x84,0xC0,0x80,0x26,0x84,0x01,
+0xEA,0x3B,0x80,0x26,0x8C,0xC1,0x84,0x00,0x97,0xB0,0xEA,0x3B,0x5A,0x68,0x04,0xF8,
+0x84,0xE0,0x3E,0x77,0xFD,0x19,0x46,0x68,0x00,0x20,0x85,0x21,0x3E,0x97,0xFD,0x01,
+0x10,0x73,0x01,0x68,0x44,0x00,0x01,0xF4,0x10,0x73,0x02,0x14,0x10,0x73,0x02,0xA0,
+0x10,0x73,0x00,0xB0,0x10,0x73,0x00,0x84,0x10,0x73,0x01,0x00,0x10,0x73,0x00,0x8C,
+0x10,0x73,0x00,0x1C,0x10,0x73,0x00,0x20,0xDD,0x50,0x10,0x93,0x00,0x20,0xDD,0x5C,
+0x10,0x73,0x00,0x94,0xEA,0x6E,0x8E,0x01,0xC8,0xFE,0x84,0x21,0x46,0x28,0x00,0x30,
+0x10,0x13,0x00,0x94,0x12,0x01,0x00,0xE4,0x10,0x13,0x00,0x90,0x46,0x19,0x00,0x68,
+0xAE,0x08,0xDD,0x4B,0x8E,0x07,0xE6,0x02,0xE8,0x0B,0x46,0x01,0x00,0x07,0xEA,0x63,
+0xEA,0x21,0xEA,0x20,0xD0,0x04,0xDD,0x4D,0xEA,0xF0,0xC0,0x02,0xEA,0x5E,0x84,0x20,
+0xEA,0x73,0xAE,0x40,0xDD,0x4F,0x46,0x01,0x00,0x00,0x58,0x00,0x0B,0x14,0x84,0x20,
+0xDD,0x42,0xFC,0xC0,0xFC,0x00,0x3F,0xCF,0xFD,0xD8,0x46,0x10,0x00,0xE7,0x84,0x00,
+0x50,0x10,0x8C,0x15,0x44,0x20,0x00,0x68,0xDD,0x4C,0xDD,0x43,0x84,0x21,0x46,0x20,
+0xFF,0xFF,0xEA,0x47,0x50,0x21,0x0F,0xFF,0x10,0x10,0x00,0x1C,0x10,0x10,0x00,0x84,
+0x10,0x10,0x00,0x80,0xEB,0x4C,0xB4,0xA0,0xEA,0x28,0xDA,0xFE,0x84,0xC1,0x84,0x00,
+0x10,0x60,0x80,0xFC,0x10,0x60,0x81,0x00,0x10,0x00,0x80,0x90,0xB8,0x00,0x8E,0x07,
+0xE6,0x02,0xE8,0x08,0xEA,0x5E,0xEA,0x5D,0xEB,0x00,0xEA,0x43,0xB4,0x01,0xEA,0xF3,
+0xB6,0x01,0x84,0x01,0xEA,0x55,0xB8,0x00,0x8E,0x02,0xE6,0x04,0xE8,0x05,0xFA,0x38,
+0xDD,0x43,0x10,0x10,0x00,0xD8,0xB8,0x00,0x5A,0x08,0x02,0x05,0x84,0x03,0x49,0x00,
+0x08,0xB8,0xB8,0x00,0x5A,0x08,0x06,0x07,0x44,0x10,0xFF,0xEE,0xDD,0x43,0x14,0x10,
+0x00,0xAD,0xFC,0x80,0x46,0x01,0x00,0x07,0xDD,0x46,0x46,0x11,0x00,0x07,0x96,0x00,
+0xDD,0x45,0xDD,0x57,0xF8,0x07,0xC1,0x31,0x00,0x10,0x00,0x50,0x54,0x10,0x80,0xFE,
+0xEA,0xDF,0x04,0x10,0x00,0x15,0x92,0x30,0x96,0x48,0x83,0xFF,0x5A,0x18,0x33,0x26,
+0xEB,0x2C,0x8E,0x27,0xE6,0x22,0xE8,0x21,0x04,0x10,0x00,0x15,0x92,0x38,0x5A,0x18,
+0x11,0x05,0x3E,0x17,0xFD,0x06,0xD5,0x08,0x04,0x00,0x00,0x15,0x92,0x18,0x5A,0x08,
+0x22,0x04,0x3E,0x07,0xFD,0x06,0x2E,0x07,0xFD,0x06,0x5A,0x08,0x22,0x09,0xEA,0x48,
+0xEA,0x3F,0x83,0xFF,0x46,0x11,0x00,0x07,0xEA,0x70,0xD5,0x07,0x2E,0x07,0xFD,0x06,
+0x5A,0x08,0x11,0x04,0x84,0x01,0xEA,0xC8,0xDD,0x57,0x04,0x10,0x00,0x16,0x4E,0x00,
+0xFF,0xD4,0xC1,0x06,0x00,0x10,0x00,0x50,0x54,0x10,0x80,0xFD,0xEA,0xDF,0x04,0x00,
+0x00,0x17,0x5A,0x08,0xA5,0x11,0xFC,0x00,0x44,0x10,0x00,0x87,0xDD,0x57,0x14,0x10,
+0x00,0x17,0xF9,0x9A,0x84,0x00,0xEB,0x3E,0xEB,0x3A,0xEA,0x5C,0xEA,0x93,0xEA,0xCF,
+0xDD,0x50,0xD5,0xFD,0x46,0x01,0x00,0x07,0xDD,0x46,0x46,0x11,0x00,0x07,0x96,0x00,
+0x58,0x00,0x01,0x00,0xDD,0x45,0xDD,0x9E,0xFC,0x00,0x46,0x01,0x00,0x07,0xDD,0x46,
+0x46,0x11,0x00,0x07,0x96,0x00,0x58,0x00,0x30,0x00,0xDD,0x45,0xDD,0x57,0x04,0x10,
+0x00,0x3A,0x83,0xFF,0x42,0x10,0xE0,0x0B,0xC1,0x08,0x44,0x10,0x00,0x49,0x12,0x10,
+0x00,0x0E,0x84,0x20,0x12,0x10,0x00,0x0E,0x04,0x00,0x00,0x3A,0x42,0x00,0x68,0x0B,
+0xC0,0x04,0x84,0x02,0x49,0xFF,0xFC,0x36,0x46,0x01,0x00,0x07,0xDD,0x46,0x46,0x11,
+0x00,0x07,0x96,0x00,0x58,0x00,0x31,0x00,0xDD,0x45,0xFC,0x80,0xFC,0x01,0x80,0xC0,
+0x46,0x09,0x00,0x20,0xA0,0x84,0xB6,0x46,0xA0,0x05,0xB6,0x01,0xB4,0x66,0x42,0x11,
+0xC4,0x0B,0xC9,0x04,0x42,0x21,0xC0,0x0B,0xD5,0x03,0x84,0x41,0x80,0x22,0x42,0x01,
+0xC8,0x0B,0xC0,0x03,0x84,0x41,0x84,0x22,0x42,0x01,0xCC,0x0B,0xC0,0x03,0x84,0x41,
+0x84,0x23,0x42,0x01,0xD0,0x0B,0xC0,0x03,0x84,0x40,0x80,0x22,0x42,0x31,0xD4,0x0B,
+0xC3,0x08,0xEA,0x24,0x96,0x00,0xDD,0x55,0x49,0xFF,0xCA,0x02,0x84,0x40,0x84,0x21,
+0xB4,0x06,0x42,0x00,0x58,0x0B,0xC0,0x18,0x3C,0x0D,0xFF,0x77,0x5A,0x08,0x01,0x13,
+0xDD,0x4B,0x5A,0x08,0x06,0x10,0x84,0x25,0x84,0x02,0xEA,0x8E,0x2E,0x17,0xFD,0x13,
+0x8C,0x21,0x96,0x48,0x3E,0x17,0xFD,0x13,0x8C,0x21,0x94,0x09,0x54,0x00,0x00,0xFE,
+0xEB,0x20,0x84,0x40,0x84,0x22,0xB4,0x06,0x84,0xC1,0x42,0x00,0x5C,0x0B,0xC0,0x07,
+0xDD,0x4D,0xFE,0x36,0xC0,0x19,0x80,0x06,0xEB,0x48,0xD5,0x16,0xC2,0x10,0x5A,0x18,
+0x02,0x0B,0xF1,0x81,0xEA,0x93,0xF1,0x01,0x80,0x01,0x44,0x10,0x07,0xD0,0x49,0xFF,
+0xFC,0x0F,0xD5,0x0C,0x80,0x06,0xEA,0x3B,0xEB,0x41,0xD5,0x08,0x5A,0x10,0x02,0x07,
+0x84,0x00,0xEA,0x3B,0xD5,0x03,0x84,0x23,0xD5,0xFC,0xFC,0x81,0xFC,0x20,0x46,0x60,
+0x00,0xCB,0x50,0x73,0x08,0x02,0xDD,0x52,0x80,0x27,0x84,0x00,0xEA,0x60,0x54,0x20,
+0x00,0x7F,0x80,0x27,0x84,0x00,0xDD,0x4C,0x50,0x13,0x08,0x05,0x84,0x00,0xEA,0x60,
+0x96,0x00,0x92,0x03,0xFC,0xA0,0xFC,0x40,0x46,0x60,0x00,0xCB,0x50,0xA3,0x08,0x05,
+0x80,0x2A,0x80,0xE0,0x84,0x00,0xEA,0x60,0x50,0x63,0x08,0x02,0x81,0x20,0xDD,0x52,
+0x80,0x26,0x84,0x00,0xEA,0x60,0x54,0x20,0x00,0x7F,0x80,0x26,0x84,0x00,0xDD,0x4C,
+0x54,0x24,0x80,0x07,0x40,0x21,0x1C,0x64,0x84,0x00,0x80,0x2A,0x96,0x90,0xDD,0x4C,
+0xFC,0xC0,0x2E,0x07,0xFF,0x88,0xC0,0x34,0xFC,0x00,0xEA,0x73,0xA1,0x83,0x49,0xFF,
+0xFF,0xC7,0x46,0x21,0x00,0x00,0x02,0x51,0x03,0x01,0x44,0x20,0xA5,0x5A,0x80,0x20,
+0xDA,0x09,0x46,0x21,0x00,0x00,0x00,0x51,0x06,0x00,0xD0,0x04,0x00,0x01,0x06,0x00,
+0xD5,0x1C,0x3C,0x2D,0xFF,0xE6,0xE2,0x46,0xE8,0x04,0xC0,0x12,0x8E,0x01,0xD5,0x08,
+0x3C,0x2D,0xFF,0xE7,0xE2,0xC2,0xE8,0x06,0xE6,0x1F,0xE8,0x0A,0x8C,0x01,0x96,0x40,
+0xD5,0x07,0x44,0x0F,0xA5,0x5A,0x46,0x21,0x00,0x00,0x12,0x01,0x03,0x01,0x46,0x01,
+0x00,0x00,0x10,0x10,0x06,0x00,0x80,0x01,0x49,0xFF,0xFF,0xAF,0xFC,0x80,0xDD,0x9E,
+0x46,0x09,0x00,0x90,0xEB,0x29,0x58,0x10,0x80,0x04,0xEB,0x07,0x84,0x20,0x10,0x10,
+0x00,0x68,0xEB,0x4B,0x54,0x10,0x80,0xFB,0xEA,0x61,0xDD,0x9E,0xC3,0x20,0xFC,0x00,
+0x3E,0x07,0xFF,0x88,0x3C,0x1F,0xFF,0xE3,0x46,0x50,0x00,0xF4,0x3C,0x2F,0xFF,0xE4,
+0x99,0x8A,0x3C,0x3F,0xFF,0xE5,0x8A,0x22,0x50,0x42,0x82,0x40,0x42,0x53,0x10,0x24,
+0xFF,0x0C,0x40,0x52,0x8C,0xB7,0x40,0x32,0x0C,0x77,0x3C,0x5F,0xFF,0xE6,0x3C,0x3F,
+0xFF,0xE7,0xC0,0x07,0x49,0xFF,0xFF,0xD6,0x84,0x00,0xD5,0x03,0xFA,0x00,0xDD,0x9E,
+0xFC,0x80,0x46,0x09,0x00,0x90,0xEB,0x29,0xEA,0xB3,0xEB,0x07,0x84,0x20,0x10,0x10,
+0x00,0x64,0xEB,0x4B,0x54,0x10,0x80,0xFD,0xEA,0x61,0xDD,0x9E,0x46,0x09,0x00,0x90,
+0xEB,0x29,0x58,0x10,0x80,0x01,0xEB,0x07,0x84,0x2F,0xEA,0x2F,0xEB,0x4B,0x54,0x10,
+0x80,0xFE,0xEA,0x61,0xDD,0x9E,0x3E,0x07,0xFD,0xE8,0x84,0x60,0x3E,0x37,0xFD,0xE9,
+0x3E,0x17,0xFD,0xEA,0x3E,0x17,0xFD,0xEB,0x3E,0x27,0xFD,0xEC,0xC0,0x07,0xFC,0x00,
+0x49,0xFF,0xFF,0xD9,0x49,0xFF,0xFF,0xE4,0xFC,0x80,0xDD,0x9E,0xFC,0x20,0x46,0x08,
+0x00,0x50,0x46,0x69,0x00,0x00,0x84,0xE0,0xB4,0x00,0x12,0x73,0x00,0x4C,0x46,0x00,
+0x00,0x0F,0x04,0x00,0x02,0xC0,0xEA,0x9B,0xC8,0x2F,0x3E,0x77,0xFF,0x88,0x44,0x10,
+0x01,0xF4,0x3C,0x1F,0xFF,0xE3,0x84,0x2A,0x3C,0x1F,0xFF,0xE4,0x44,0x10,0x02,0x58,
+0x3C,0x1F,0xFF,0xE5,0x46,0x10,0x00,0xCF,0x50,0x10,0x88,0x50,0x3C,0x1F,0xFF,0xE6,
+0x46,0x10,0x00,0xC7,0x50,0x10,0x86,0x1A,0x3C,0x1F,0xFF,0xE7,0x44,0x10,0x00,0x80,
+0x84,0x45,0x49,0xFF,0xFF,0xC2,0x49,0xFF,0xFD,0x79,0x49,0x00,0x05,0x44,0x84,0x09,
+0xEB,0x3E,0xEB,0x3A,0xEA,0x5C,0xEA,0x4A,0xC8,0x07,0x44,0x10,0x00,0xDA,0x12,0x13,
+0x00,0x1A,0x12,0x13,0x00,0x1E,0xFC,0xA0,0x2E,0x07,0xFD,0xE8,0xC0,0x09,0x46,0x19,
+0x00,0x90,0xA6,0x08,0xEA,0x37,0xAE,0x08,0x84,0x01,0x3E,0x07,0xFD,0xE9,0xDD,0x9E,
+0x2E,0x07,0xFD,0xE8,0xC0,0x10,0xEB,0x2C,0xEA,0x73,0x5A,0x18,0x08,0x09,0xA0,0x41,
+0x84,0x20,0x3E,0x17,0xFD,0xE9,0x00,0x00,0x00,0x60,0xD5,0x05,0xA0,0x02,0x84,0x00,
+0x3E,0x07,0xFD,0xE9,0x84,0x00,0xDD,0x9E,0x46,0x28,0x00,0x20,0x02,0x11,0x00,0x9C,
+0x02,0x31,0x00,0x0A,0x02,0x01,0x00,0x0A,0x8A,0x23,0x96,0x4B,0x8E,0x09,0x96,0x01,
+0x9E,0xC9,0x12,0x01,0x00,0x94,0x84,0x80,0x46,0x09,0x00,0x68,0x96,0xD9,0xAF,0x00,
+0xAC,0xC2,0x10,0x40,0x00,0x08,0x84,0x83,0x10,0x40,0x00,0x0C,0x02,0x41,0x00,0x9A,
+0x46,0x22,0x00,0x00,0x40,0x21,0x10,0x56,0x8C,0x41,0x90,0x41,0xA8,0x85,0xEA,0xED,
+0x10,0x20,0x00,0x20,0x46,0x20,0x40,0x00,0x40,0x11,0x04,0x36,0x8C,0x21,0x90,0x21,
+0x14,0x10,0x00,0x09,0x84,0x21,0x12,0x30,0x00,0x14,0xAE,0x40,0xDD,0x9E,0x00,0x00,
+0xFC,0x01,0x3F,0xCF,0xFD,0xD8,0xF1,0x81,0xBA,0x00,0xBA,0x82,0xB8,0x80,0xB6,0x1F,
+0x2E,0x27,0xFF,0xA2,0x92,0x47,0x3E,0x27,0xFF,0x88,0x84,0x41,0x3E,0x27,0xFD,0x0D,
+0x3E,0x27,0xFD,0x0B,0x49,0xFF,0xFD,0x02,0xF1,0x01,0xB4,0x1F,0xC1,0x03,0x49,0xFF,
+0xF3,0x35,0xB8,0x00,0x9E,0x42,0xE6,0x27,0xE8,0x20,0x3E,0xFF,0xE0,0x50,0x38,0x17,
+0x84,0x00,0x40,0xF0,0xBC,0x00,0xDD,0x0F,0x08,0x08,0x08,0x08,0x16,0x1E,0x26,0x00,
+0xEB,0x4A,0xEA,0x74,0x2E,0x27,0xFD,0x79,0x84,0x20,0xE2,0x22,0xD5,0x0C,0x84,0x26,
+0xEA,0x74,0x85,0xE2,0xD5,0x08,0xEB,0x4A,0xEA,0x74,0x85,0xE0,0xD5,0x04,0x84,0x26,
+0xEA,0x74,0x85,0xE1,0x3C,0xFF,0xFF,0x7C,0xEA,0xF4,0xEA,0x8B,0xC1,0x03,0x84,0x22,
+0xB9,0x81,0xB9,0x06,0x49,0xFF,0xFB,0x42,0xC8,0x2F,0xB9,0x00,0x8E,0x27,0xE6,0x22,
+0xE8,0x25,0x46,0x11,0x00,0x07,0x04,0x50,0x83,0xC4,0x46,0x1A,0x55,0xAA,0x50,0x10,
+0x85,0x5A,0xD1,0x1C,0x2E,0x17,0xFF,0xA3,0xEB,0x34,0xC9,0x18,0x46,0x01,0x00,0x07,
+0xEA,0x63,0xEA,0x48,0xEA,0x3F,0xD8,0x06,0x44,0x11,0xFF,0x00,0xDD,0x57,0x14,0x10,
+0x00,0x30,0x84,0x05,0xEA,0x55,0xEA,0x93,0x84,0x20,0xDD,0x43,0xEA,0xF1,0x44,0x10,
+0x07,0xD0,0x84,0x02,0x49,0xFF,0xFA,0x3C,0xD5,0x07,0xB6,0x1F,0x49,0xFF,0xFF,0x5E,
+0x49,0xFF,0xFC,0xFA,0xB4,0x1F,0xFC,0x81,0x92,0x00,0x46,0x18,0x00,0x20,0x50,0x10,
+0x85,0xC8,0xA6,0x88,0xDD,0x43,0xCA,0xFE,0xFC,0x00,0x84,0x21,0x10,0x10,0x02,0xA0,
+0xEB,0x2C,0x5A,0x18,0x07,0x0C,0x46,0x10,0x00,0x0D,0x02,0x10,0x82,0x6C,0xEA,0xF1,
+0x46,0x10,0x00,0x0D,0x02,0x10,0x82,0x6D,0xD5,0x0C,0x5A,0x18,0x08,0x0D,0x46,0x10,
+0x00,0x0D,0x02,0x10,0x83,0x42,0xEA,0xF1,0x46,0x10,0x00,0x0D,0x02,0x10,0x83,0x43,
+0x12,0x10,0x00,0xB6,0xEA,0x28,0x02,0x00,0x82,0xB8,0x02,0x10,0x80,0xB6,0x49,0xFF,
+0xC5,0x86,0xEA,0x9B,0xFC,0x80,0x46,0x08,0x00,0x20,0x00,0x10,0x00,0xF8,0xEB,0x4C,
+0xEA,0xB3,0x10,0x10,0x7D,0xBC,0xEA,0xC1,0xEA,0x7F,0xB4,0xA0,0xD9,0xFF,0xDD,0x9E,
+0xC0,0x04,0xFC,0x00,0xEA,0x5E,0xFC,0x80,0xEA,0x3E,0x04,0x00,0x80,0x30,0x66,0x00,
+0x00,0x01,0x14,0x00,0x80,0x30,0xDD,0x9E,0xFC,0x21,0x3F,0xCF,0xFD,0xD8,0x46,0x01,
+0x00,0x07,0xDD,0x46,0x46,0x11,0x00,0x07,0x96,0x00,0x58,0x00,0x50,0x00,0xDD,0x45,
+0x46,0x69,0x00,0x20,0x04,0x03,0x00,0x0A,0xB6,0x1F,0xB4,0x1F,0xEB,0x12,0xB6,0x1F,
+0xF0,0x81,0xF0,0x01,0x66,0x00,0x00,0x04,0xF0,0x81,0xB6,0x1F,0xB4,0x3F,0x84,0x00,
+0x49,0x00,0x04,0x9B,0x80,0x1F,0xB0,0x41,0x49,0xFF,0xFD,0x62,0xB4,0x1F,0x42,0x00,
+0x2C,0x0B,0xC0,0x19,0x46,0x01,0x00,0x07,0xDD,0x46,0x46,0x11,0x00,0x07,0x96,0x00,
+0x58,0x00,0x51,0x00,0xDD,0x45,0xB4,0x06,0x66,0x00,0x08,0x00,0xB6,0x06,0xB8,0x00,
+0x8E,0x07,0xE6,0x02,0xE8,0x08,0x84,0x00,0x49,0xFF,0xFF,0xBC,0xEA,0x5D,0x84,0x21,
+0x10,0x10,0x00,0xA0,0xB4,0x1F,0x42,0x00,0x28,0x0B,0xC0,0x33,0x46,0x01,0x00,0x07,
+0xDD,0x46,0x46,0x11,0x00,0x07,0x96,0x00,0x58,0x00,0x52,0x00,0xDD,0x45,0xEA,0x43,
+0xB4,0x01,0x66,0x00,0x04,0x00,0xB6,0x01,0xB8,0x00,0x5A,0x08,0x02,0x09,0xEA,0xDC,
+0x5A,0x08,0x01,0x06,0x84,0x06,0xB8,0x80,0x84,0x04,0xD5,0x0A,0xEA,0xDC,0xC8,0x0A,
+0xB8,0x00,0x8E,0x03,0xE6,0x03,0xE8,0x06,0x84,0x02,0xB8,0x80,0x84,0x03,0x49,0x00,
+0x05,0x40,0xB8,0x01,0x5A,0x08,0x02,0x0E,0xB8,0x00,0x5A,0x08,0x06,0x05,0xB8,0x02,
+0x5A,0x00,0x02,0x04,0x2E,0x07,0xFD,0x03,0x49,0xFF,0xFD,0x8F,0x84,0x00,0xB8,0x81,
+0xB4,0x1F,0x42,0x00,0x4C,0x0B,0xC0,0x0D,0x46,0x01,0x00,0x07,0xDD,0x46,0x46,0x11,
+0x00,0x07,0x96,0x00,0x58,0x00,0x53,0x00,0xDD,0x45,0x84,0x00,0x49,0xFF,0xFF,0x72,
+0xF0,0x01,0x42,0x00,0x38,0x0B,0xC0,0x04,0x49,0xFF,0xF8,0xF4,0xD5,0x07,0xF0,0x01,
+0x42,0x00,0x3C,0x0B,0xC0,0x03,0x49,0xFF,0xF8,0xF7,0xF0,0x01,0x84,0xC1,0x42,0x00,
+0x0C,0x0B,0xC0,0x16,0xDD,0x43,0x00,0x00,0x03,0x40,0xB9,0x00,0x96,0x00,0x5A,0x18,
+0x06,0x10,0x54,0x00,0x00,0xFB,0xC8,0x0C,0xB8,0x01,0x5A,0x00,0x02,0x0A,0x84,0x25,
+0x84,0x02,0xEA,0x8E,0x3E,0x67,0xFD,0x13,0x84,0x04,0xEB,0x20,0xBE,0x81,0xF6,0x01,
+0x84,0xE1,0x42,0x63,0x04,0x0B,0x4E,0x62,0x00,0x39,0x46,0x01,0x00,0x07,0xDD,0x46,
+0x46,0x11,0x00,0x07,0x96,0x00,0x58,0x00,0x54,0x00,0xDD,0x45,0x84,0x00,0x80,0x27,
+0xEA,0xAB,0x49,0xFF,0xF9,0x5D,0x84,0x0E,0xDD,0x40,0xC0,0x04,0x49,0xFF,0xC4,0x71,
+0xD5,0x20,0xFA,0x02,0xDD,0x40,0xC8,0xFB,0xFA,0x06,0xDD,0x40,0xC8,0xF8,0x84,0x0A,
+0xDD,0x40,0xC8,0xF5,0xFA,0x0A,0xDD,0x40,0xC8,0xF2,0xFA,0x13,0xDD,0x40,0xC8,0xEF,
+0xFA,0x0E,0xDD,0x40,0xC8,0xEC,0xFA,0x18,0xDD,0x40,0xC8,0xE9,0xFA,0x1C,0xDD,0x40,
+0xC8,0xE6,0xDD,0x47,0xDD,0x40,0xC8,0xE3,0x84,0x07,0x84,0x21,0x49,0xFF,0xFE,0x62,
+0x84,0x00,0x3E,0x07,0xFF,0x87,0xD5,0x24,0xF0,0x01,0xEA,0xA3,0xC0,0x21,0x46,0x01,
+0x00,0x07,0xDD,0x46,0x46,0x11,0x00,0x07,0x96,0x00,0x58,0x00,0x55,0x00,0xDD,0x45,
+0x3E,0x67,0xFD,0x0F,0x80,0x26,0x3E,0x67,0xFD,0x14,0x80,0x06,0xEA,0xAB,0x49,0xFF,
+0xF9,0x1F,0x80,0x27,0x2E,0x07,0xFF,0xA6,0x49,0xFF,0xFE,0x44,0xDD,0x52,0x46,0x10,
+0x00,0xBC,0x80,0x06,0x8C,0x21,0x84,0x46,0xDD,0x4C,0x3E,0x77,0xFF,0x87,0x46,0x01,
+0x00,0x07,0xDD,0x46,0x46,0x11,0x00,0x07,0x96,0x00,0x58,0x00,0x56,0x00,0xDD,0x45,
+0xFC,0xA1,0xFC,0x00,0xE6,0x04,0xE8,0x03,0x8E,0x01,0xD5,0x1B,0x5A,0x00,0x04,0x04,
+0x5A,0x08,0x08,0x14,0x84,0x00,0x46,0x11,0x00,0x05,0x58,0x10,0x88,0x88,0x84,0x44,
+0xF8,0x17,0xEA,0x24,0xC0,0x16,0x2E,0x07,0xFD,0x6F,0x3E,0x07,0xFD,0x71,0x8C,0x01,
+0x96,0x04,0x3E,0x07,0xFD,0x6F,0xD5,0x0D,0x8E,0x05,0x96,0x40,0xE6,0x23,0xE8,0x09,
+0x84,0x23,0x40,0x10,0x04,0x16,0x84,0x44,0x96,0x00,0xEB,0x5A,0xEA,0x77,0xEA,0x7D,
+0xFC,0x80,0xFC,0x00,0x54,0x10,0x00,0xFB,0x5A,0x10,0x03,0x04,0x48,0x00,0x00,0x71,
+0xF8,0x75,0xB4,0xA2,0xDD,0x43,0xD9,0xFE,0xEB,0x0F,0x44,0x10,0xFE,0xFF,0x83,0xFF,
+0xF8,0x03,0x44,0x10,0xFD,0xFF,0xFE,0x56,0xEA,0x32,0xEB,0x0F,0x83,0xFF,0x44,0x10,
+0xFB,0xFF,0x4E,0x00,0xFF,0xFA,0x44,0x10,0xF7,0xFF,0xFE,0x56,0xEA,0x32,0x83,0xFF,
+0xFA,0x20,0xEA,0x61,0x10,0x10,0x00,0x48,0xEB,0x2D,0x2E,0x17,0xFD,0x6F,0xC1,0x22,
+0x5A,0x10,0x01,0x03,0xF8,0x51,0xEB,0x6D,0x02,0x51,0x06,0x8E,0xEB,0x6D,0x02,0x41,
+0x06,0x8F,0xEB,0x6D,0x02,0x31,0x06,0x8D,0xEB,0x6D,0x02,0x21,0x06,0x8B,0xF8,0x1E,
+0xEB,0x6D,0x04,0x21,0x03,0x37,0x83,0x80,0xBA,0x8E,0x84,0x40,0x10,0x20,0x02,0x38,
+0x46,0x20,0x08,0x09,0x50,0x21,0x0A,0x12,0xBA,0x8E,0x50,0x00,0x01,0x9C,0xAE,0x40,
+0xD5,0x2A,0xEB,0x6D,0x02,0x51,0x05,0xB8,0xEB,0x6D,0x02,0x41,0x05,0xB9,0xEB,0x6D,
+0x02,0x31,0x05,0xB7,0xEB,0x6D,0x02,0x21,0x05,0xB5,0x12,0x50,0x00,0x9C,0x12,0x40,
+0x00,0x0A,0x12,0x30,0x00,0x9A,0x12,0x20,0x00,0x8A,0x83,0xFF,0xEB,0x6D,0x04,0x21,
+0x02,0xCC,0x83,0x80,0xBA,0x8E,0xEA,0x75,0x46,0x10,0x08,0x09,0x50,0x10,0x8A,0x12,
+0xB9,0x8E,0x84,0x21,0x10,0x10,0x01,0x9C,0x50,0x00,0x01,0x9C,0xA6,0x40,0x5A,0x10,
+0x01,0xFF,0xF8,0x04,0xA6,0x40,0x5A,0x10,0x01,0xFF,0x48,0x00,0x00,0x6F,0x5A,0x00,
+0x04,0x06,0x5A,0x00,0x08,0x04,0x48,0x00,0x00,0x6B,0x46,0x28,0x00,0x20,0xEA,0xC1,
+0x50,0x21,0x03,0x3C,0xEA,0x7F,0x83,0xFF,0xB4,0xA2,0xDD,0x43,0xD9,0xFE,0x83,0x80,
+0xB9,0x0E,0x42,0x10,0xD4,0x09,0xB9,0x8E,0xEB,0x23,0xC9,0x24,0xEB,0x5D,0x00,0x30,
+0x8B,0x8D,0xEB,0x5D,0x00,0x20,0x8B,0x8E,0xEB,0x5D,0x00,0x10,0x8B,0x8F,0xF8,0x23,
+0xEB,0x5D,0x02,0x40,0x85,0xB8,0xEB,0x5D,0x02,0x30,0x85,0xB9,0xEB,0x5D,0x02,0x20,
+0x85,0xB7,0xEB,0x5D,0x02,0x10,0x85,0xB5,0xF8,0x28,0xEB,0x5D,0x04,0x10,0x82,0xCC,
+0xEB,0x1A,0xEB,0x5D,0x02,0x10,0x85,0xB6,0xEA,0x32,0xEB,0x5D,0x00,0x10,0x8B,0x8B,
+0xD5,0x30,0xEB,0x5D,0x00,0x30,0x8D,0x39,0xEB,0x5D,0x00,0x20,0x8D,0x3A,0xEB,0x5D,
+0x00,0x10,0x8D,0x3B,0x10,0x30,0x00,0x44,0x10,0x20,0x00,0x48,0xEB,0x2D,0x83,0xFF,
+0xEB,0x5D,0x02,0x40,0x86,0x8E,0xEB,0x5D,0x02,0x30,0x86,0x8F,0xEB,0x5D,0x02,0x20,
+0x86,0x8D,0xEB,0x5D,0x02,0x10,0x86,0x8B,0x12,0x40,0x00,0x9C,0x12,0x30,0x00,0x0A,
+0x12,0x20,0x00,0x9A,0x12,0x10,0x00,0x8A,0x83,0xFF,0xEB,0x5D,0x04,0x10,0x83,0x37,
+0xEB,0x1A,0xEB,0x5D,0x02,0x10,0x86,0x8C,0xEA,0x32,0xEB,0x5D,0x00,0x10,0x8D,0x37,
+0xEA,0x75,0x84,0x21,0x10,0x10,0x01,0x9C,0x49,0xFF,0xFC,0xF0,0xFC,0x80,0x00,0x00,
+0xFC,0x20,0x3F,0xCF,0xFD,0xD8,0x46,0x01,0x00,0x07,0xDD,0x46,0x46,0x11,0x00,0x07,
+0x96,0x00,0x58,0x00,0x10,0x00,0xDD,0x45,0xDD,0x43,0x84,0x20,0x10,0x10,0x00,0x88,
+0x00,0x60,0x03,0x40,0xEA,0x69,0x97,0xB0,0xEB,0x18,0xC0,0x0B,0xB8,0x00,0x5A,0x08,
+0x06,0x09,0x84,0x22,0x84,0x00,0xEA,0x3B,0x84,0x02,0xEB,0x20,0x84,0x00,0xB8,0x81,
+0xDD,0x4B,0x8E,0x02,0xE6,0x07,0x4E,0xF2,0x01,0xA2,0x3E,0xFF,0xE6,0x20,0x38,0x07,
+0x81,0x01,0x40,0xF0,0x3C,0x00,0xDD,0x0F,0x0E,0x00,0x32,0x03,0x32,0x03,0x32,0x03,
+0x7C,0x01,0xAA,0x01,0x6E,0x02,0xDD,0x57,0x04,0x10,0x00,0x3A,0x9F,0xF1,0xEA,0xD7,
+0x84,0x01,0xC1,0x09,0x46,0x11,0x00,0x07,0xEA,0xD4,0x40,0x00,0x1C,0x0C,0x40,0x00,
+0x80,0x12,0xD5,0x08,0x46,0x11,0x00,0x07,0xEA,0xD4,0x40,0x00,0x1C,0x0C,0xFE,0x0F,
+0x96,0x01,0x46,0x11,0x00,0x07,0xEA,0x95,0x46,0x01,0x00,0x07,0x02,0x10,0x07,0xF4,
+0x44,0x00,0xDF,0xFF,0xFE,0x0E,0x46,0x11,0x00,0x07,0xEA,0x95,0xEA,0xD4,0x44,0x00,
+0xBF,0xFF,0xFE,0x0E,0x46,0x11,0x00,0x07,0xEA,0x95,0x02,0x00,0x87,0xF4,0x54,0x00,
+0x7F,0xFF,0xEA,0x95,0x84,0x00,0x3E,0x07,0xFF,0x86,0x84,0x0E,0xDD,0x40,0xC0,0x05,
+0x80,0x06,0x49,0xFF,0xC0,0x09,0xEA,0x6C,0xFA,0x02,0xDD,0x40,0xC8,0xFA,0xFA,0x06,
+0xDD,0x40,0xC8,0xF7,0x5A,0x60,0x01,0x04,0x48,0x00,0x01,0x53,0xDD,0x43,0x84,0x22,
+0xEA,0x58,0x84,0x23,0xEA,0x47,0xEA,0x42,0xE6,0x01,0xEA,0x66,0x97,0xF8,0xE6,0xE8,
+0xE8,0x04,0x80,0x06,0x49,0xFF,0xFE,0x6F,0x9E,0x33,0xE6,0x02,0xE9,0x08,0x9E,0x37,
+0xE6,0x02,0xE9,0x05,0x5A,0x60,0x08,0x03,0xEA,0x6C,0xD5,0x0F,0x80,0x06,0x49,0xFF,
+0xFE,0x8A,0x5A,0x60,0x04,0x05,0x5A,0x60,0x08,0x03,0xEA,0x6C,0xB8,0x00,0x49,0xFF,
+0xF1,0x4D,0x5A,0x60,0x04,0x13,0xD5,0xEF,0x84,0x01,0x44,0x10,0x04,0xA6,0xEA,0x8E,
+0x2E,0x07,0xFD,0x0F,0xC8,0x1A,0xEA,0x73,0xA6,0x40,0xEA,0xB3,0xAE,0x40,0xA6,0x40,
+0x58,0x10,0x80,0x04,0xAE,0x40,0xD5,0x11,0xEA,0x24,0x96,0x00,0xDD,0x55,0x49,0xFF,
+0xC4,0xD7,0xEA,0xDC,0x5A,0x00,0x01,0x04,0x48,0x00,0x00,0x4A,0xEA,0x43,0xB4,0x01,
+0x58,0x00,0x04,0x00,0xB6,0x01,0xD5,0x43,0x2E,0x07,0xFD,0x0F,0x8C,0x01,0x96,0x00,
+0xE6,0x04,0xE8,0x03,0xEA,0xD6,0xD5,0x3B,0x84,0x00,0xEA,0xD6,0xDD,0x43,0x00,0x10,
+0x03,0x20,0x5A,0x10,0x10,0x06,0x00,0x10,0x03,0x20,0x5A,0x18,0x06,0x31,0xEA,0xC1,
+0xEB,0x4C,0xEA,0x7F,0xB4,0xA0,0xD9,0xFF,0x46,0x19,0x00,0x90,0xA6,0x08,0xC8,0xFF,
+0x49,0xFF,0xFB,0x21,0xEA,0x69,0xEB,0x18,0xC0,0x09,0x2E,0x0F,0xFF,0xA2,0x4E,0x04,
+0x00,0x06,0x49,0xFF,0xFA,0xE5,0x3E,0x07,0xFD,0x03,0x49,0xFF,0xFB,0xF3,0xC0,0x17,
+0x48,0x00,0x00,0xE5,0x8E,0xC1,0xE6,0xC2,0x4E,0xF2,0x00,0xCE,0xDD,0x43,0x84,0x22,
+0xEA,0x58,0x84,0x23,0xEA,0x47,0xEA,0x42,0xE6,0x01,0xEA,0x66,0x84,0x44,0x84,0x00,
+0xEB,0x5A,0xEA,0x77,0xEA,0x7D,0xEA,0x24,0x96,0x00,0xDD,0x55,0x49,0xFF,0xB6,0x6C,
+0xEA,0x6C,0x5A,0x68,0x01,0x0A,0xDD,0x43,0x84,0x22,0xEA,0x58,0x84,0x23,0xEA,0x47,
+0xEA,0x42,0xE6,0x01,0xEA,0x66,0xDD,0x43,0x84,0x21,0x10,0x10,0x00,0xBC,0x50,0x00,
+0x00,0xBC,0xA6,0x40,0xC9,0xFF,0xEA,0x57,0xE6,0x03,0xEA,0x57,0xE9,0x0C,0x8E,0x02,
+0xE0,0xC0,0xE9,0x11,0xEA,0x57,0xE2,0x06,0xE9,0x0E,0x2E,0x17,0xFD,0x0E,0x9C,0x32,
+0x8A,0x01,0xD5,0x04,0xE2,0x06,0xE9,0x07,0x9E,0x31,0x96,0x00,0xEB,0x5A,0xEA,0x77,
+0x84,0x44,0xEA,0x7D,0xEA,0x57,0x4C,0x60,0x40,0x35,0x84,0xC1,0xDD,0x43,0x12,0x60,
+0x02,0xE0,0xEA,0x24,0x96,0x00,0xDD,0x55,0xEA,0x5E,0xEA,0x5D,0xEB,0x00,0xEA,0x43,
+0xB4,0x01,0xEA,0xF3,0xB6,0x01,0x2E,0x07,0xFF,0x86,0xE6,0x09,0xE9,0x04,0x84,0x04,
+0xEA,0x55,0xD5,0x02,0xEB,0x41,0x46,0x60,0x00,0xD8,0x50,0x63,0x0C,0x0D,0x80,0x26,
+0x44,0x20,0x00,0xAA,0x84,0x00,0xDD,0x4C,0x44,0x00,0x02,0xBC,0xDD,0x50,0x84,0x00,
+0x80,0x26,0x44,0x20,0x00,0xBA,0xDD,0x4C,0x2E,0x07,0xFF,0x86,0xE6,0x14,0xE8,0x04,
+0x8C,0x01,0x3E,0x07,0xFF,0x86,0xEA,0xA5,0x4E,0x02,0x00,0x5E,0x84,0x01,0xD5,0x02,
+0x84,0x02,0xEA,0x55,0xEA,0x6C,0xEA,0x82,0x4C,0x60,0x40,0x56,0x49,0xFF,0xFB,0x66,
+0x2E,0x17,0xFD,0x15,0xDD,0x43,0x5A,0x10,0x01,0x05,0x84,0x22,0x10,0x10,0x00,0xB4,
+0x84,0xC1,0x84,0x22,0x10,0x60,0x01,0xCC,0xEA,0x58,0x84,0x23,0xEA,0x47,0xEA,0x5E,
+0xEA,0x5D,0xEB,0x00,0xEA,0x43,0xB4,0x01,0xEA,0xF3,0xB6,0x01,0xEA,0x82,0x5A,0x08,
+0x01,0x18,0xB8,0x00,0x5A,0x08,0x08,0x15,0x46,0x60,0x00,0xD8,0x50,0x63,0x0C,0x0D,
+0x49,0xFF,0xFC,0x3B,0x80,0x26,0x44,0x20,0x00,0xAA,0x84,0x00,0xDD,0x4C,0x44,0x00,
+0x02,0xBC,0xDD,0x50,0x84,0x00,0x80,0x26,0x44,0x20,0x00,0xBA,0xDD,0x4C,0xEA,0x42,
+0xE6,0x01,0xEA,0x66,0x84,0x44,0x84,0x00,0xEB,0x5A,0xEA,0x77,0xEA,0x7D,0xEA,0x82,
+0x5A,0x00,0x01,0x0E,0xDD,0x43,0x84,0x21,0x10,0x10,0x00,0xBC,0x50,0x10,0x00,0xBC,
+0xA6,0x08,0x96,0x00,0xC8,0xFE,0xEA,0x28,0x10,0x00,0x80,0xB4,0xDD,0x43,0x84,0xC1,
+0x12,0x60,0x02,0xE0,0xEA,0x24,0x96,0x00,0xDD,0x55,0x84,0x04,0xEA,0x55,0xEA,0xA5,
+0xC0,0x02,0xEB,0x41,0x46,0x01,0x00,0x07,0xDD,0x46,0x46,0x11,0x00,0x07,0x96,0x00,
+0x58,0x00,0x11,0x00,0xDD,0x45,0x84,0x00,0xD5,0x09,0xFA,0x02,0xD5,0x07,0x5A,0x60,
+0x05,0x04,0x48,0xFF,0xFE,0xB5,0x48,0xFF,0xFE,0xB0,0xFC,0xA0,0xFC,0x00,0x84,0x00,
+0xEB,0x48,0x2E,0x27,0xFF,0xF0,0x84,0x2A,0xFE,0x54,0x84,0x03,0xEA,0x8E,0xFC,0x80,
+0x2E,0x07,0xFF,0x87,0xDD,0x9E,0x8E,0x01,0xC0,0x03,0xEA,0x6E,0xD5,0xFD,0xDD,0x9E,
+0xFC,0x01,0x10,0x0F,0x80,0x07,0x10,0x1F,0x80,0x06,0x46,0x08,0x00,0x30,0x84,0x20,
+0x10,0x2F,0x80,0x05,0x10,0x10,0x00,0x0C,0x10,0x10,0x00,0x10,0x84,0x21,0x10,0x10,
+0x00,0x14,0x00,0x1F,0x80,0x07,0x96,0x48,0x10,0x10,0x00,0x34,0x00,0x1F,0x80,0x06,
+0x96,0x48,0x10,0x10,0x00,0x38,0x00,0x1F,0x80,0x05,0x96,0x48,0x10,0x10,0x00,0x3C,
+0xFC,0x81,0x84,0x00,0x46,0x21,0x00,0x05,0x58,0x21,0x0A,0x38,0x96,0x40,0x38,0x11,
+0x00,0x08,0x50,0x30,0x00,0x6C,0x56,0x10,0x80,0x80,0x8C,0x01,0x38,0x11,0x0C,0x08,
+0x5A,0x08,0x6C,0xF6,0xDD,0x9E,0x46,0x38,0x00,0x30,0xA6,0x98,0x46,0x18,0x00,0x30,
+0x96,0x90,0x83,0xFF,0xCA,0xFB,0xFA,0x6C,0x10,0x20,0x81,0xB4,0xAE,0xCC,0x10,0x00,
+0x80,0xC4,0x84,0x05,0x10,0x20,0x80,0x18,0x10,0x20,0x81,0x18,0x10,0x00,0x80,0x0C,
+0x84,0x01,0xEA,0xFB,0x83,0xFF,0xDD,0x9E,0x46,0x08,0x00,0x30,0x14,0x10,0x00,0x32,
+0x44,0x1F,0xFF,0xD8,0x10,0x10,0x00,0x34,0x10,0x10,0x00,0x38,0x84,0x20,0x10,0x10,
+0x00,0xC0,0x46,0x11,0x00,0x05,0x58,0x10,0x8A,0x38,0x12,0x10,0x00,0x5C,0x96,0x91,
+0x84,0x21,0x12,0x20,0x00,0x5E,0xAE,0x40,0xA6,0x40,0xC9,0xFF,0xDD,0x9E,0x46,0x19,
+0x00,0x28,0x10,0x00,0x80,0x68,0xDD,0x9E,0x96,0x00,0x46,0x19,0x00,0x28,0x10,0x00,
+0x80,0x60,0xDD,0x9E,0x46,0x08,0x00,0x20,0x00,0x00,0x04,0xB4,0xDD,0x9E,0xE6,0x24,
+0xE8,0x09,0x94,0x4D,0xC0,0x03,0xEB,0x33,0xD5,0x03,0x46,0x09,0x00,0x10,0x88,0x20,
+0xB6,0x41,0xDD,0x9E,0xE6,0x24,0xE8,0x0C,0x94,0x4D,0x96,0x90,0xC0,0x04,0xEB,0x33,
+0x8C,0x10,0xD5,0x04,0x46,0x09,0x00,0x10,0x8C,0x08,0x88,0x20,0xAE,0x88,0xDD,0x9E,
+0xE6,0x24,0xE8,0x1C,0x94,0x4D,0xC0,0x10,0xEB,0x33,0x50,0x30,0x00,0x10,0x88,0x61,
+0x84,0x42,0xAE,0x98,0xA6,0x98,0x96,0x90,0xCA,0xFE,0x8C,0x0C,0x88,0x20,0xAE,0x88,
+0xA6,0x08,0xC8,0xFF,0xDD,0x9E,0x46,0x29,0x00,0x10,0x8C,0x48,0x88,0x22,0xAE,0x08,
+0x44,0x00,0x00,0x40,0xAE,0x08,0xA6,0x08,0xC8,0xFF,0xDD,0x9E,0x46,0x29,0x00,0x20,
+0xB6,0x02,0xA8,0x51,0xDD,0x9E,0x46,0x29,0x00,0x20,0x14,0x01,0x00,0x09,0x14,0x11,
+0x00,0x0A,0xDD,0x9E,0x46,0x18,0x00,0x60,0xB6,0x01,0xDD,0x9E,0x46,0x01,0x00,0x00,
+0xEA,0x4D,0xEB,0x04,0xD0,0x16,0x46,0x01,0x00,0x00,0xEA,0x4D,0x44,0x00,0xA3,0x3A,
+0xD0,0x10,0x46,0x01,0x00,0x00,0xEA,0x4D,0xEB,0x06,0xD0,0x0B,0x46,0x01,0x00,0x00,
+0x02,0x00,0x00,0x00,0x84,0x20,0x50,0x00,0x45,0x5D,0x40,0x00,0x80,0x06,0xDD,0x9E,
+0x84,0x00,0xDD,0x9E,0x46,0x01,0x00,0x00,0xEA,0x4D,0xEB,0x06,0xD0,0x07,0x46,0x01,
+0x00,0x00,0xEA,0x4D,0x44,0x00,0x3A,0xA3,0xD8,0x3F,0xEA,0x84,0xC0,0x3D,0xFC,0x20,
+0x49,0xFF,0xBB,0x81,0xEA,0xAE,0xEA,0x3C,0x84,0xA0,0x98,0x50,0x42,0x11,0x00,0x73,
+0x2E,0x00,0x00,0x02,0x46,0x31,0x00,0x00,0x58,0x31,0x80,0x04,0x88,0x20,0x3C,0x23,
+0xFE,0xC1,0x44,0x60,0x5A,0xA5,0x80,0x05,0xD1,0x11,0x46,0x41,0x00,0x00,0x02,0x42,
+0x00,0x00,0x4C,0x43,0x00,0x06,0x99,0x2A,0x40,0x42,0x04,0xF7,0xAD,0xD8,0x0A,0x41,
+0x80,0x01,0x8C,0xA1,0x88,0x04,0x96,0x01,0xD5,0xF0,0xFE,0x02,0x96,0x01,0xEB,0x5A,
+0x12,0x00,0x80,0x01,0x46,0x01,0x00,0x00,0xEA,0x4D,0xEB,0x06,0xD8,0x04,0x44,0x0F,
+0xA5,0x5A,0xD5,0x03,0x44,0x0F,0xA3,0x3A,0xEB,0x5A,0x12,0x00,0x80,0x00,0x8C,0x41,
+0x3C,0x2B,0xFE,0xC1,0xFC,0xA0,0xDD,0x9E,0xFC,0x00,0xF8,0x15,0x42,0x10,0x8C,0x0B,
+0xC9,0x08,0xF8,0x1C,0xC9,0x06,0x02,0x00,0x00,0x72,0x42,0x00,0x28,0x0B,0xC0,0x36,
+0xDD,0x4D,0x96,0x04,0xC0,0x08,0x46,0x09,0x00,0x28,0x84,0x21,0x10,0x10,0x00,0x68,
+0x84,0x22,0xEA,0x2F,0xDD,0x57,0x02,0x10,0x00,0x72,0x83,0xFF,0xEA,0xD7,0xC1,0x06,
+0x46,0x0E,0xBE,0xBE,0x50,0x00,0x0B,0xEB,0xD5,0x14,0x02,0x10,0x00,0x72,0xEB,0x34,
+0x83,0xFF,0xC1,0x06,0x46,0x0E,0xCE,0xCE,0x50,0x00,0x0C,0xEC,0xD5,0x0A,0x02,0x00,
+0x00,0x72,0x42,0x00,0x0C,0x0B,0xC0,0x07,0x46,0x0E,0xDE,0xDE,0x50,0x00,0x0D,0xED,
+0x49,0xFF,0xB3,0x00,0xDD,0x4D,0x96,0x04,0xC0,0x05,0xEA,0xA5,0xC0,0x03,0x49,0xFF,
+0xFE,0x8F,0x44,0x00,0x13,0x88,0x49,0xFF,0xB2,0xEA,0xFC,0x80,0xFC,0x00,0xEA,0x4A,
+0xDD,0x52,0xEA,0xCE,0x84,0x20,0x84,0x41,0xEA,0x3A,0x5A,0x08,0xEE,0x04,0x84,0x00,
+0xD5,0x20,0xEA,0xCE,0x84,0x20,0x84,0x41,0xEA,0x3A,0x5A,0x08,0xDE,0x04,0x84,0x01,
+0xD5,0x18,0xEA,0xCE,0x84,0x20,0x84,0x41,0xEA,0x3A,0x5A,0x08,0xCE,0x17,0x44,0x00,
+0x00,0xE8,0x84,0x20,0x84,0x46,0xEA,0x3A,0x5A,0x08,0x03,0x04,0x84,0x02,0xD5,0x09,
+0x44,0x00,0x00,0xE8,0x84,0x20,0x84,0x46,0xEA,0x3A,0x5A,0x08,0x04,0x07,0x84,0x03,
+0x46,0x11,0x00,0x07,0x12,0x00,0x80,0x40,0xEA,0x3E,0x46,0x21,0x00,0x07,0x04,0x00,
+0x80,0x34,0x00,0x21,0x00,0x80,0xFE,0x17,0x14,0x00,0x80,0x74,0xFC,0x80,0x5A,0x00,
+0x05,0x0B,0x5A,0x00,0x06,0x14,0x5A,0x08,0x03,0x29,0xF8,0x10,0x44,0x10,0xFF,0x00,
+0xF8,0x15,0xD5,0x1F,0xF8,0x0B,0x84,0x30,0xF8,0x11,0x46,0x13,0x11,0x50,0x50,0x10,
+0x8E,0x07,0xEA,0xCB,0x14,0x10,0x01,0x60,0xD5,0x14,0xDD,0x43,0x84,0x20,0xEB,0x31,
+0xEB,0x32,0x83,0xFF,0xEB,0x31,0xEB,0x32,0x84,0x3A,0x14,0x10,0x00,0xAD,0x84,0x27,
+0x10,0x10,0x02,0xAC,0x83,0xFF,0x46,0x10,0x03,0x10,0x50,0x10,0x80,0x31,0xEA,0xCB,
+0x84,0x21,0xDD,0x43,0x10,0x10,0x01,0xCC,0xDD,0x9E,0xFC,0x40,0xDD,0x52,0xF8,0x03,
+0xFA,0x72,0xDD,0x54,0xDD,0x53,0x84,0x20,0x84,0x4D,0x83,0xFF,0xFA,0x73,0xDD,0x54,
+0xEA,0xCF,0x49,0xFF,0xFE,0x22,0x84,0xE0,0x46,0x91,0x00,0x07,0x58,0x94,0x82,0x98,
+0xDD,0x53,0x84,0x20,0x84,0x41,0x83,0xFF,0x84,0x65,0xDD,0x54,0x50,0x33,0xFF,0xF3,
+0xDD,0x53,0x84,0x20,0x84,0x42,0x83,0xFF,0x96,0xD8,0xDD,0x54,0xDD,0x53,0x84,0x20,
+0x84,0x44,0x44,0x30,0x00,0x80,0xDD,0x54,0x44,0x60,0x00,0x64,0xEA,0x6E,0x8E,0xC1,
+0x97,0xB1,0xCE,0xFD,0xDD,0x53,0x80,0x26,0x84,0x44,0x80,0x66,0xDD,0x54,0xDD,0x53,
+0x80,0x26,0x84,0x45,0xEA,0x3A,0x38,0x04,0x9C,0x08,0x8C,0xE1,0x5A,0x78,0x0D,0xDA,
+0x44,0x00,0x72,0xC4,0x46,0x11,0x00,0x07,0x14,0x00,0x80,0xB1,0x84,0x41,0x80,0x26,
+0xDD,0x53,0x44,0x30,0x00,0x40,0xDD,0x54,0xDD,0x53,0x80,0x26,0x80,0x47,0xFA,0x70,
+0xDD,0x54,0xFC,0xC0,0xFC,0x00,0x84,0x22,0x80,0xC0,0x80,0x41,0xEA,0xD0,0x84,0x61,
+0xDD,0x54,0x84,0x67,0x40,0x31,0x98,0x64,0xEA,0xD0,0x84,0x22,0x84,0x45,0x96,0xD8,
+0xDD,0x54,0xFC,0x80,0x84,0x80,0xD5,0x2D,0x41,0x41,0x40,0x09,0x97,0x41,0x92,0x10,
+0x40,0x40,0xD0,0x37,0x96,0xD1,0x40,0x10,0xC0,0x08,0xFE,0x47,0x42,0x02,0x0C,0x24,
+0xE2,0x20,0xE8,0x09,0x9F,0x21,0x98,0x4A,0xE2,0x22,0xE9,0x05,0xE2,0x20,0xE8,0x03,
+0x9F,0x21,0x98,0x4A,0x9A,0x48,0x40,0x10,0xD0,0x17,0x40,0x00,0x40,0x08,0xFE,0x2F,
+0xFE,0xCC,0xE2,0x03,0xE8,0x09,0x98,0x02,0x9E,0x49,0xE2,0x02,0xE9,0x05,0xE2,0x03,
+0xE8,0x03,0x98,0x02,0x9E,0x49,0x9A,0x03,0x40,0x42,0x40,0x08,0xFE,0x67,0xDD,0x9E,
+0x3B,0xFF,0xFE,0xBC,0xFD,0x80,0xFD,0x91,0x83,0x84,0xCB,0x4D,0xE3,0xB2,0xE8,0x19,
+0x42,0x09,0x00,0x07,0x82,0xA0,0xC0,0x0D,0x41,0x29,0x00,0x0C,0x52,0x50,0x00,0x20,
+0x40,0x58,0x14,0x0D,0x41,0x18,0x80,0x0C,0x41,0x18,0x94,0x04,0x41,0x08,0x00,0x0C,
+0xFD,0x08,0x80,0x52,0x49,0xFF,0xFF,0xBA,0x82,0xC1,0x82,0x00,0x86,0xE0,0xD5,0x23,
+0xC2,0x28,0x42,0x09,0x00,0x07,0x82,0xA0,0xC8,0x04,0x8B,0xB2,0x86,0xE1,0xD5,0x14,
+0x52,0xF0,0x00,0x20,0x41,0x29,0x00,0x0C,0x80,0x52,0x40,0x48,0x3C,0x0D,0x40,0x58,
+0x80,0x0C,0x41,0x08,0x00,0x0C,0x40,0x02,0x90,0x04,0x40,0x18,0xBC,0x0D,0x49,0xFF,
+0xFF,0x9D,0x82,0xE1,0x82,0x20,0xFD,0x08,0x80,0x52,0x49,0xFF,0xFF,0x97,0x82,0xC1,
+0x51,0x00,0x00,0x00,0x4F,0xC2,0x00,0x53,0x86,0x20,0x41,0x08,0x54,0x0D,0xD5,0x4B,
+0x41,0x19,0x4A,0x17,0x84,0x20,0x84,0x00,0x4F,0xC2,0x00,0x4C,0xB7,0x9C,0x15,0x1E,
+0x00,0x01,0xD5,0x47,0xE3,0xB3,0xE9,0xF7,0x42,0x09,0x80,0x07,0x82,0xA0,0xC0,0x44,
+0x52,0x40,0x00,0x20,0x40,0x59,0x10,0x0D,0x40,0x29,0x80,0x0C,0xFE,0xAF,0x82,0x62,
+0x41,0x29,0x00,0x0C,0x40,0x38,0x10,0x0D,0x41,0x08,0x00,0x0C,0x40,0x08,0x80,0x0C,
+0x40,0x18,0x90,0x0D,0xFE,0x1F,0x49,0xFF,0xFF,0x69,0x82,0xC1,0x82,0x20,0x42,0x00,
+0xC8,0x69,0xE3,0xA1,0xE9,0x05,0x4C,0x18,0xC0,0x0C,0xE3,0x80,0xE8,0x09,0x51,0x6B,
+0x7F,0xFF,0x8A,0x33,0x40,0x30,0x48,0x01,0xE2,0x03,0x8A,0x2F,0x80,0x03,0x86,0xE0,
+0x4F,0xC2,0x00,0x15,0x40,0x08,0x00,0x01,0x40,0x18,0x84,0x01,0xE3,0x80,0x8A,0x2F,
+0x52,0x4A,0x80,0x20,0x41,0x10,0x90,0x0C,0x41,0x00,0x54,0x0D,0x41,0x08,0x44,0x04,
+0x41,0x10,0xD4,0x0D,0xB7,0x9C,0x15,0x1E,0x00,0x01,0x80,0x16,0x50,0x1B,0x80,0x00,
+0x3B,0xFF,0xFE,0x84,0xDD,0x9E,0xE3,0xF1,0xE9,0x03,0xE3,0x92,0xE9,0x09,0x86,0xC1,
+0x40,0x48,0x48,0x01,0x8B,0xB3,0xE3,0x84,0x8B,0xAF,0x82,0x04,0xD5,0x02,0x86,0xC0,
+0x86,0xE0,0x4F,0xC3,0xFF,0xE9,0xD5,0xEA,0xFC,0x42,0x95,0x09,0x92,0x95,0x40,0x70,
+0xAC,0x08,0x40,0x60,0x54,0x09,0xFF,0xF7,0x40,0x60,0x2C,0x08,0x47,0xC8,0x00,0x00,
+0x95,0x59,0x92,0xB5,0x40,0x91,0xAC,0x08,0x40,0x81,0x54,0x09,0x40,0x94,0xA0,0x04,
+0x40,0x81,0x2C,0x08,0xFE,0xCD,0x40,0xA1,0xF0,0x02,0x44,0x30,0x07,0xFF,0xC4,0x58,
+0x4C,0x32,0x00,0x75,0x40,0x73,0xF0,0x04,0x4E,0x52,0x00,0x87,0x4C,0x32,0x80,0x79,
+0x40,0x94,0xF0,0x04,0x14,0xAF,0x80,0x03,0x50,0x02,0xFC,0x02,0x99,0x20,0x42,0x23,
+0xA4,0x69,0x42,0x03,0x24,0x69,0x40,0x91,0x04,0x00,0xE3,0x21,0x40,0xA1,0xBC,0x00,
+0x42,0x23,0xA0,0x69,0x99,0xD0,0xE2,0xE0,0x89,0x2F,0xE3,0x2F,0x89,0x4F,0x89,0x23,
+0xE3,0x23,0x89,0x4F,0x42,0x03,0x20,0x69,0x99,0xF9,0xE2,0xE1,0x89,0x2F,0xE3,0x2F,
+0x40,0x15,0x3C,0x00,0xFF,0xC7,0x58,0x04,0x80,0x01,0x40,0x04,0x9C,0x1A,0xE4,0x20,
+0xE9,0x07,0x81,0xE0,0x98,0x00,0xE2,0x0F,0x98,0x49,0x88,0x2F,0x9F,0x21,0x04,0xAF,
+0x80,0x03,0x4E,0x47,0x00,0x71,0x52,0x52,0x07,0xFF,0x4E,0x57,0x00,0x46,0x50,0x00,
+0x04,0x00,0x5C,0xF0,0x04,0x00,0xE8,0x04,0x88,0x2F,0xE2,0x2F,0x88,0x8F,0x40,0x20,
+0x2C,0x09,0x96,0x94,0x9A,0x02,0x92,0x0B,0x40,0x20,0xD4,0x08,0xFE,0x17,0x94,0x49,
+0x92,0x2C,0x40,0x52,0x50,0x08,0xFE,0x6F,0x40,0x10,0xA8,0x04,0xFC,0xC2,0x40,0xF3,
+0x98,0x04,0xE8,0x19,0x40,0xF3,0x7C,0x09,0x99,0xFF,0x88,0xEF,0x99,0xB6,0xCF,0x05,
+0x80,0xE6,0x84,0xC0,0x50,0x42,0x7F,0xE0,0x42,0x03,0x80,0x07,0xC0,0x9E,0x9B,0x20,
+0x52,0x20,0x00,0x20,0x40,0x23,0x08,0x0D,0x40,0x63,0x00,0x0C,0x40,0x73,0x80,0x0C,
+0xFF,0xD7,0xD5,0x93,0xD3,0x15,0x80,0x2A,0xFC,0xC2,0xFF,0xF7,0x4C,0x7E,0x40,0x11,
+0xCD,0x06,0x40,0x24,0x84,0x08,0x40,0x21,0x20,0x04,0xC2,0x0A,0xDB,0x05,0x40,0x94,
+0xA0,0x04,0x4C,0x9E,0x40,0x06,0x84,0x00,0x46,0x17,0xFF,0x00,0xD5,0xCE,0x84,0x00,
+0x44,0x18,0x00,0x00,0xFC,0xC2,0x40,0x04,0xA0,0x04,0xC0,0xE6,0x40,0xF4,0x7C,0x09,
+0x89,0x29,0x89,0x2F,0x89,0x08,0x4E,0x93,0x00,0x06,0x81,0x28,0x85,0x00,0x50,0x52,
+0xFF,0xE0,0x42,0x04,0x80,0x07,0x4E,0x02,0xFF,0x6F,0x9B,0x68,0x52,0x20,0x00,0x20,
+0x40,0x24,0x08,0x0D,0x40,0x84,0x00,0x0C,0x40,0x94,0x80,0x0C,0x40,0x94,0x88,0x04,
+0x48,0xFF,0xFF,0x62,0x84,0xC0,0x52,0x32,0x00,0x01,0x5C,0xF1,0x80,0x20,0xE9,0x0A,
+0x80,0xC0,0x80,0x01,0x84,0x20,0x50,0x31,0xFF,0xE0,0xC0,0x04,0x5C,0xF1,0x80,0x20,
+0xE8,0x1A,0xC3,0x10,0x52,0x21,0x80,0x20,0x40,0x70,0x88,0x0C,0x40,0x50,0x08,0x0C,
+0x40,0x00,0x0C,0x0D,0x40,0x10,0x8C,0x0D,0xFE,0x3F,0xFF,0xAF,0xC6,0x03,0x58,0x00,
+0x00,0x01,0x50,0x00,0x04,0x00,0x5C,0xF0,0x04,0x00,0x88,0x2F,0x40,0x40,0xFC,0x09,
+0x48,0xFF,0xFF,0x77,0x84,0x00,0xD5,0xA0,0xFC,0x42,0x95,0x09,0x92,0x95,0x40,0x70,
+0xAC,0x08,0x40,0x60,0x54,0x09,0xFF,0xF7,0x40,0x60,0x2C,0x08,0x47,0xC8,0x00,0x00,
+0x95,0x59,0x92,0xB5,0x40,0x91,0xAC,0x08,0x40,0x81,0x54,0x09,0x40,0x94,0xA0,0x04,
+0x40,0x81,0x2C,0x08,0xFE,0xCD,0x40,0xA1,0xF0,0x02,0x44,0x30,0x07,0xFF,0x4E,0x42,
+0x00,0xC5,0x4C,0x32,0x00,0xEF,0x40,0x73,0xF0,0x04,0x4E,0x52,0x00,0xFB,0x4C,0x32,
+0x80,0xF3,0x40,0x94,0xF0,0x04,0x9B,0x25,0x50,0x42,0x03,0xFF,0x92,0xC1,0x40,0x13,
+0xFC,0x08,0xFF,0x8F,0x92,0xE1,0x40,0x24,0xC0,0x09,0x40,0x33,0x88,0xF7,0x40,0x14,
+0x80,0x13,0x42,0x50,0x8C,0x24,0x40,0x73,0xC0,0x08,0x40,0x03,0x40,0x09,0xFF,0xC7,
+0x80,0x07,0x9B,0xFD,0xE2,0x07,0xE8,0x05,0x9E,0xD9,0x88,0xE9,0xE2,0xE9,0xE8,0xFD,
+0x40,0x23,0x88,0xF7,0x42,0x50,0x88,0x24,0x40,0x73,0xC0,0x08,0x96,0x31,0xFF,0xC7,
+0x80,0x07,0x9B,0xFD,0xE2,0x07,0xE8,0x05,0x9E,0x91,0x88,0xE9,0xE2,0xE9,0xE8,0xFD,
+0x40,0x31,0xC0,0x08,0x98,0xDA,0x42,0x01,0xA0,0x69,0xFF,0x82,0x80,0x07,0x9B,0xF9,
+0xE2,0x07,0xC6,0x05,0x80,0x07,0x9F,0xF9,0xE9,0x03,0xE2,0x07,0xE8,0x0C,0x9E,0xD9,
+0x88,0xC8,0x40,0x03,0x20,0x06,0x88,0xE9,0xE2,0xE9,0xC0,0x04,0x9D,0xF9,0xE9,0x03,
+0xE6,0xE1,0xE8,0xF6,0x4C,0x74,0xC0,0x07,0x80,0x28,0x80,0xE6,0x84,0x40,0x84,0x00,
+0xD5,0x2B,0x40,0x14,0xC0,0x09,0x40,0x23,0x84,0xF7,0x40,0x04,0x80,0x13,0x42,0xF0,
+0x08,0x24,0x40,0x73,0xC0,0x08,0x40,0x53,0x40,0x09,0xFF,0xEF,0x80,0xA7,0x8A,0xEF,
+0xE2,0xA7,0xE8,0x05,0x9E,0x91,0x88,0xE9,0xE2,0xE9,0xE8,0xFD,0x40,0x13,0x84,0xF7,
+0x42,0x50,0x04,0x24,0x40,0x73,0xC0,0x08,0x96,0x31,0xFF,0xC7,0x80,0x07,0x9B,0xFD,
+0xE2,0x07,0xE8,0x05,0x9E,0x49,0x88,0xE9,0xE2,0xE9,0xE8,0xFD,0x40,0x21,0x40,0x08,
+0x98,0x91,0x42,0x01,0x20,0x69,0xFF,0x82,0x80,0x07,0x9B,0xF9,0xE2,0x07,0xC6,0x05,
+0x80,0x07,0x9F,0xF9,0xE9,0x03,0xE2,0x07,0xE8,0x0C,0x9E,0x91,0x88,0xC8,0x40,0x03,
+0x20,0x06,0x88,0xE9,0xE2,0xE9,0xC0,0x04,0x9D,0xF9,0xE9,0x03,0xE6,0xE1,0xE8,0xF6,
+0xE4,0x60,0xE9,0x07,0x81,0xE2,0x98,0x92,0xE2,0x4F,0x98,0xDB,0x88,0x6F,0x9F,0x21,
+0xFF,0xF7,0x58,0x01,0x00,0x01,0x40,0x01,0x1C,0x1A,0x80,0x23,0x4E,0x47,0x00,0x79,
+0x52,0x52,0x07,0xFF,0x4E,0x57,0x00,0x4A,0x50,0x00,0x04,0x00,0x5C,0xF0,0x04,0x00,
+0xE8,0x04,0x88,0x2F,0xE2,0x2F,0x88,0x8F,0x40,0x20,0x2C,0x09,0x96,0x94,0x9A,0x02,
+0x92,0x0B,0x40,0x20,0xD4,0x08,0xFE,0x17,0x94,0x49,0x92,0x2C,0x40,0x52,0x50,0x08,
+0xFE,0x6F,0x40,0x10,0xA8,0x04,0xFC,0xC2,0x40,0xF3,0x98,0x04,0xE8,0x1B,0x40,0xF3,
+0x7C,0x09,0x99,0xFF,0x88,0xEF,0x99,0xB6,0xCF,0x05,0x80,0xE6,0x84,0xC0,0x50,0x42,
+0x7F,0xE0,0x42,0x03,0x80,0x07,0x4E,0x02,0xFF,0x32,0x9B,0x20,0x52,0x20,0x00,0x20,
+0x40,0x23,0x08,0x0D,0x40,0x63,0x00,0x0C,0x40,0x73,0x80,0x0C,0xFF,0xD7,0x48,0xFF,
+0xFF,0x26,0xD3,0x07,0xCD,0x04,0x40,0xF4,0xA0,0x04,0xE8,0x07,0x80,0x2A,0xFC,0xC2,
+0x40,0x94,0xA0,0x04,0x4C,0x9E,0x3F,0xFC,0x84,0x00,0x44,0x18,0x00,0x00,0xFC,0xC2,
+0xFF,0xF7,0x4C,0x7E,0x7F,0xFB,0xD3,0xF9,0x84,0x00,0x46,0x17,0xFF,0x00,0x40,0x10,
+0xA8,0x04,0xFC,0xC2,0x40,0x94,0xA0,0x04,0x4C,0x9E,0x7F,0xF0,0x84,0x00,0xD5,0xE7,
+0x40,0xF4,0xA0,0x04,0xE8,0xF2,0x40,0xF4,0x7C,0x09,0x89,0x29,0x89,0x2F,0x89,0x08,
+0x4E,0x93,0x00,0x06,0x81,0x28,0x85,0x00,0x50,0x52,0xFF,0xE0,0x42,0x04,0x80,0x07,
+0x4E,0x02,0xFE,0xFB,0x9B,0x68,0x52,0x20,0x00,0x20,0x40,0x24,0x08,0x0D,0x40,0x84,
+0x00,0x0C,0x40,0x94,0x80,0x0C,0x40,0x94,0x88,0x04,0x48,0xFF,0xFE,0xEE,0x84,0xC0,
+0x52,0x32,0x00,0x01,0x5C,0xF1,0x80,0x20,0xE9,0x0A,0x80,0xC0,0x80,0x01,0x84,0x20,
+0x50,0x31,0xFF,0xE0,0xC0,0x04,0x5C,0xF1,0x80,0x20,0xE8,0x1A,0xC3,0x10,0x52,0x21,
+0x80,0x20,0x40,0x70,0x88,0x0C,0x40,0x50,0x08,0x0C,0x40,0x00,0x0C,0x0D,0x40,0x10,
+0x8C,0x0D,0xFE,0x3F,0xFF,0xAF,0xC6,0x03,0x58,0x00,0x00,0x01,0x50,0x00,0x04,0x00,
+0x5C,0xF0,0x04,0x00,0x88,0x2F,0x40,0x40,0xFC,0x09,0x48,0xFF,0xFF,0x6F,0x84,0x00,
+0xD5,0x9E,0x92,0x00,0x40,0x30,0xAC,0x08,0x40,0x40,0x54,0x09,0xFE,0xE7,0x46,0x48,
+0x00,0x00,0xFE,0xE7,0x95,0x09,0x92,0x95,0x52,0x22,0x04,0x1E,0xE4,0x40,0xE9,0x0C,
+0xFA,0x90,0xE2,0x44,0xE9,0x02,0x84,0x60,0x40,0x31,0x88,0x0D,0xE4,0x20,0xE8,0x02,
+0xFE,0xDA,0x80,0x03,0xDD,0x9E,0xC0,0x03,0x58,0x10,0x80,0x01,0x46,0x47,0xFF,0x00,
+0xE2,0x81,0xE8,0x04,0x46,0x08,0x00,0x00,0xDD,0x9E,0x84,0x1F,0xDD,0x9E,0x92,0x00,
+0x3A,0x6F,0x98,0x3C,0x84,0x20,0x80,0xA1,0x80,0x61,0x80,0x40,0xC2,0x10,0xE4,0x40,
+0xE8,0x07,0x46,0x58,0x00,0x00,0xFE,0x92,0xC1,0x03,0xFE,0x4A,0x8E,0x41,0x44,0x30,
+0x04,0x1E,0x42,0x41,0x00,0x07,0x9A,0xDC,0x40,0x21,0x10,0x0C,0x40,0x40,0xAC,0x09,
+0x40,0x61,0x54,0x08,0xFF,0x37,0x95,0x91,0x92,0xCC,0xFF,0x77,0x40,0x61,0xD0,0x08,
+0xFF,0x77,0x80,0x04,0x80,0x25,0x3A,0x6F,0x98,0x04,0xDD,0x9E,0x3A,0x6F,0x98,0x3C,
+0x84,0x20,0x80,0x61,0x80,0x40,0xC2,0x08,0x44,0x30,0x04,0x1E,0x42,0x51,0x00,0x07,
+0x9A,0xDD,0x40,0x21,0x14,0x0C,0x40,0x40,0xAC,0x09,0x40,0x61,0x54,0x08,0xFF,0x37,
+0x95,0x51,0x92,0xAC,0x40,0x61,0xD0,0x08,0xFF,0x77,0x80,0x04,0x80,0x25,0x3A,0x6F,
+0x98,0x04,0xDD,0x9E,0x49,0x00,0x07,0x54,0x49,0x00,0x2A,0x75,0x49,0x00,0x01,0xE6,
+0x46,0x08,0x00,0x20,0x04,0x10,0x03,0xC1,0x12,0x00,0x87,0xA0,0x02,0x00,0x07,0xA0,
+0x44,0x00,0x00,0x30,0x49,0x00,0x01,0xF7,0x49,0x00,0x03,0x4D,0x49,0x00,0x4E,0x82,
+0x3C,0x0D,0xFF,0x76,0x49,0x00,0x41,0xC9,0x2E,0x07,0xFF,0xA3,0x49,0x00,0x41,0xE7,
+0x44,0x20,0x05,0x10,0x49,0x00,0x4D,0xC3,0x3E,0x17,0xFE,0x64,0x49,0x00,0x41,0xB1,
+0x44,0x00,0x00,0xBB,0x49,0x00,0x41,0xE7,0x3E,0x07,0xFD,0x19,0x49,0x00,0x1B,0x8A,
+0x46,0x09,0x00,0x00,0x66,0x00,0x00,0xFF,0x49,0x00,0x4D,0xC0,0x3E,0x07,0xFE,0x86,
+0x2E,0x17,0xFE,0x64,0x44,0x00,0x00,0x64,0x58,0x00,0x06,0x58,0x04,0x00,0x03,0xC1,
+0x5E,0xF7,0x80,0x97,0x50,0x00,0x05,0x5A,0x46,0x0A,0x55,0xAA,0x3C,0x00,0x01,0x7E,
+0x02,0x3F,0x80,0x07,0x2E,0x07,0xFD,0x01,0x49,0x00,0x32,0x76,0x02,0x0F,0x80,0x07,
+0x04,0x50,0x03,0xF1,0x46,0x18,0x00,0x20,0x44,0x00,0xFF,0xFF,0x44,0x10,0x00,0x64,
+0x2E,0x07,0xFD,0x79,0x2E,0x00,0x01,0x2B,0x49,0x00,0x31,0xB9,0x3A,0x05,0x04,0x00,
+0x10,0x10,0x00,0x60,0x14,0x00,0x83,0xC1,0x40,0x11,0x05,0x04,0x12,0x10,0x00,0x1E,
+0x49,0x00,0x43,0xE6,0x49,0x00,0x49,0x08,0x2E,0x00,0x00,0xDF,0x3C,0x03,0xFF,0xC1,
+0x58,0x00,0x00,0x01,0x3A,0x0F,0x84,0x20,0x50,0x0F,0x80,0x0F,0x49,0x00,0x42,0x19,
+0x49,0x00,0x4E,0x58,0x2E,0x00,0x01,0x28,0x3C,0x0B,0xFE,0xD0,0x46,0x19,0x00,0x00,
+0x50,0x00,0x03,0x3A,0x2E,0x07,0xFD,0x48,0x2E,0x17,0xFE,0x60,0x2E,0x07,0xFD,0x19,
+0x46,0x19,0x00,0x20,0x2E,0x07,0xFE,0x61,0x2E,0x07,0xFD,0x29,0x3E,0x07,0xFE,0x65,
+0x10,0x10,0x00,0x8C,0x46,0x0A,0x33,0xAA,0x2E,0x07,0xFD,0x6E,0x49,0x00,0x43,0x0E,
+0x3E,0x07,0xFD,0x2A,0x3E,0x1F,0xFF,0xA0,0x02,0x50,0x00,0x00,0x49,0x00,0x1B,0x95,
+0x3C,0x3D,0xFF,0x95,0x49,0x00,0x0F,0x20,0x2E,0x07,0xFD,0x00,0x2E,0x07,0xFD,0x07,
+0x49,0x00,0x09,0x75,0x58,0x00,0x06,0x44,0x3E,0x07,0xFD,0x0D,0x54,0xC6,0x00,0xFF,
+0x2E,0x07,0xFD,0x0E,0x10,0x10,0x01,0x68,0x2E,0x07,0xFD,0x51,0x44,0x00,0x01,0xB0,
+0x42,0x10,0x84,0x0B,0x64,0x00,0x00,0x08,0x46,0x09,0x00,0x88,0x49,0x00,0x41,0x9A,
+0x3C,0x03,0xFF,0xC2,0x49,0x00,0x41,0xEC,0x10,0x10,0x00,0x44,0x58,0x00,0x00,0x98,
+0x04,0x50,0x03,0xC4,0x3C,0x0B,0xFE,0xC7,0x3C,0x0B,0xFE,0xCA,0x3E,0xF7,0xFD,0x01,
+0x58,0x21,0x0B,0x14,0x49,0x00,0x4F,0xF2,0x2E,0x07,0xFF,0xA4,0x2E,0x07,0xFF,0xA2,
+0x3B,0x00,0xC4,0x00,0x48,0x00,0x4D,0xA2,0x49,0x00,0x4E,0x34,0x40,0x00,0x00,0x09,
+0x66,0x10,0x80,0xFF,0x14,0x00,0x83,0xC4,0x58,0x10,0x8D,0x68,0x58,0x00,0x00,0x78,
+0x46,0x09,0x00,0x90,0x3E,0x10,0x01,0x29,0x10,0x10,0x02,0x38,0x3E,0x07,0xFD,0x4C,
+0x58,0x10,0x8B,0x14,0x3C,0x43,0xFE,0xD0,0x40,0x11,0x05,0x00,0x3E,0x17,0xFE,0x65,
+0x2E,0x17,0xFD,0x17,0x12,0x10,0x07,0xA0,0x49,0x00,0x44,0x65,0x40,0xF7,0x80,0x11,
+0x50,0x10,0x8F,0xFF,0x3C,0x23,0xFE,0xD0,0x02,0x0F,0x80,0x04,0x2E,0x07,0xFD,0x15,
+0x2E,0x27,0xFE,0x65,0x2E,0x07,0xFD,0x17,0x46,0xF1,0x00,0x01,0x49,0x00,0x18,0xA4,
+0x40,0x00,0x07,0x00,0x49,0x00,0x42,0x19,0x44,0x40,0xFF,0xFF,0x42,0x00,0x04,0x0B,
+0x42,0x10,0x94,0x0B,0x58,0x10,0x86,0x04,0x44,0x00,0x00,0xFF,0x49,0x00,0x43,0x8F,
+0x3E,0x07,0xFD,0x1E,0x3E,0x07,0xFD,0x67,0x10,0x04,0x80,0x00,0x2E,0x07,0xFD,0x1E,
+0x49,0x00,0x43,0x05,0x2E,0x17,0xFD,0x68,0x12,0x00,0x87,0xF4,0x2E,0x07,0xFD,0x65,
+0x3E,0x07,0xFD,0x23,0x3E,0x07,0xFD,0x26,0x02,0xF7,0x80,0x12,0x3C,0x13,0xFF,0xBE,
+0x49,0x00,0x42,0x24,0x38,0x11,0x0D,0x01,0x2E,0x07,0xFF,0xD2,0x3B,0x01,0x44,0x20,
+0x38,0x11,0x0D,0x09,0x3C,0x13,0xFF,0xB7,0x3C,0x30,0x01,0x7E,0x3C,0x13,0xFF,0xB8,
+0x42,0x00,0x08,0x0B,0x02,0x00,0x02,0xD4,0x49,0x00,0x43,0xE6,0x3C,0x2D,0xFF,0x95,
+0x3C,0x33,0xFE,0xCA,0x3E,0x2F,0xFC,0x08,0x3C,0x00,0x00,0xE3,0x3E,0x07,0xFD,0x34,
+0x49,0x00,0x12,0xA2,0x58,0x00,0x0A,0x98,0x3E,0x07,0xFD,0x36,0x2E,0x20,0x00,0x11,
+0x40,0xF0,0x3C,0x00,0x2E,0x00,0x01,0x29,0x40,0x00,0x20,0x08,0x44,0x00,0x05,0x10,
+0x58,0x10,0x80,0x02,0x3C,0x0B,0xFE,0xD2,0x44,0x60,0xFF,0xFF,0x58,0x00,0x01,0x48,
+0x49,0x00,0x10,0x96,0x3C,0x0C,0x00,0x49,0x46,0x29,0x00,0x00,0x02,0x10,0x07,0xA0,
+0x2E,0x17,0xFD,0x6E,0x3E,0x27,0xFE,0x65,0x38,0x30,0x89,0x09,0x38,0x13,0x08,0x00,
+0x49,0x00,0x18,0xD0,0x10,0x05,0x80,0x00,0x46,0x10,0xFF,0xFF,0x3E,0x07,0xFD,0x08,
+0x3E,0x07,0xFD,0x48,0x49,0x00,0x03,0x3F,0x2E,0x07,0xFD,0x05,0x44,0x40,0x00,0x30,
+0x44,0x20,0xFF,0xFF,0x3E,0x07,0xFD,0x02,0x3C,0x03,0xFE,0xCA,0x38,0x07,0x1C,0x00,
+0x14,0x10,0x01,0x5F,0x2E,0x17,0xFE,0x65,0x3C,0x0B,0xFE,0xE4,0x44,0x00,0x00,0xC6,
+0x44,0x00,0x03,0xE8,0x44,0x00,0x00,0xCB,0x2E,0x00,0x00,0x10,0x02,0x0F,0x80,0x01,
+0x02,0x0F,0x80,0x02,0x02,0x10,0x87,0xF4,0x3C,0x0B,0xFF,0xC2,0x3E,0x07,0xFD,0x0F,
+0x42,0x10,0xA8,0x0B,0x58,0x00,0x00,0x4C,0x3E,0x0F,0xFE,0xC4,0x40,0x01,0x00,0x40,
+0x2E,0x20,0x01,0x2B,0x49,0x00,0x3A,0x56,0x40,0x00,0x04,0x16,0x3C,0x1C,0x00,0x48,
+0x10,0x10,0x00,0x50,0x38,0x00,0x80,0x01,0x12,0x00,0x87,0x92,0x02,0x00,0x07,0x92,
+0x3C,0x03,0xFE,0xD0,0x44,0x70,0x00,0xFF,0x02,0x0F,0x80,0x05,0x2E,0x07,0xFD,0x58,
+0x2E,0x07,0xFD,0x16,0x40,0x00,0x40,0x08,0x44,0x10,0x35,0xCA,0x3B,0x00,0xC4,0x20,
+0x54,0xA0,0x00,0xFF,0x10,0x00,0x82,0xC0,0x44,0x20,0x00,0x30,0x00,0x03,0x00,0x92,
+0x42,0x31,0xC0,0x24,0x42,0x00,0x10,0x0B,0x12,0x10,0x02,0xB8,0x49,0x00,0x1B,0x8E,
+0x58,0x00,0x08,0x00,0x2E,0x17,0xFF,0xA4,0x2E,0x17,0xFF,0xA2,0x48,0x00,0x12,0xA1,
+0x49,0x00,0x1B,0xB7,0x3E,0x07,0xFD,0x65,0x3E,0x07,0xFD,0x64,0x58,0x00,0x02,0xC4,
+0x10,0x00,0x80,0x08,0x3E,0x07,0xFD,0x68,0x2E,0x17,0xFD,0x65,0x49,0x00,0x32,0x18,
+0x3C,0x03,0xFF,0xC0,0x10,0x60,0x00,0xA0,0x42,0x01,0x04,0x73,0x2E,0x07,0xFD,0x21,
+0x58,0x00,0x00,0x02,0x44,0x00,0xA5,0x5A,0x58,0x00,0x00,0x04,0x44,0x00,0x5A,0xA5,
+0x10,0x10,0x00,0x40,0x2E,0x07,0xFD,0x68,0x3C,0x13,0xFF,0xBF,0x49,0x00,0x3D,0xBE,
+0x44,0x60,0x00,0x55,0x3E,0x07,0xFD,0x20,0x42,0x13,0x00,0x73,0x00,0x20,0x00,0x08,
+0x02,0x20,0x00,0x1E,0x50,0x1F,0x81,0x90,0x49,0x00,0x34,0x88,0x66,0x00,0x00,0x02,
+0x49,0x00,0x0A,0xA8,0x42,0x10,0x80,0x03,0x3C,0x0B,0xFE,0xC4,0x2E,0x07,0xFD,0x2B,
+0x58,0x10,0x81,0x44,0x42,0x00,0x14,0x0B,0x46,0x61,0x00,0x02,0x14,0x10,0x00,0x0E,
+0x58,0x21,0x0D,0x08,0x02,0x00,0x02,0xD6,0x3C,0x30,0x01,0x7B,0x3C,0x30,0x01,0x7A,
+0x49,0x00,0x01,0xDE,0x49,0x00,0x4F,0xE2,0x3C,0x0D,0xFF,0x9A,0x46,0x11,0x00,0x03,
+0x2E,0x17,0xFD,0x79,0x58,0x63,0x01,0x44,0x49,0x00,0x15,0x5B,0x00,0x00,0x02,0x7C,
+0x2E,0x07,0xFD,0x30,0x3C,0x00,0x00,0xE2,0x00,0x10,0x00,0x40,0x49,0x00,0x35,0x6A,
+0x50,0x21,0x00,0xE8,0x3C,0x1D,0xFF,0x76,0x10,0x10,0x00,0x4C,0x3E,0x07,0xFD,0x31,
+0x58,0x10,0x80,0x78,0x58,0x10,0x80,0x04,0x14,0x10,0x01,0x6D,0x14,0x10,0x01,0x6E,
+0x46,0x09,0x00,0x80,0x42,0x10,0x90,0x0B,0x38,0xF1,0x06,0x02,0x58,0x21,0x0F,0xF4,
+0x38,0x06,0x82,0x02,0x2E,0x07,0xFD,0x3B,0x49,0x00,0x0F,0x14,0x64,0x12,0x00,0x43,
+0x3C,0x0D,0xFF,0x87,0x3E,0x07,0xFD,0x3D,0x3C,0x0C,0x00,0x48,0x64,0x03,0x00,0x03,
+0x3C,0x03,0xFF,0x40,0x3C,0x03,0xFF,0x41,0x3E,0x67,0xFD,0x0D,0x3E,0x2F,0xFF,0x00,
+0x2E,0x07,0xFD,0x3D,0x40,0x03,0x98,0x60,0x2E,0x10,0x00,0x14,0x2E,0x07,0xFD,0x3F,
+0x58,0x00,0x0B,0x68,0x49,0x00,0x4E,0x2F,0x40,0x00,0x82,0x00,0x2E,0x10,0x00,0x11,
+0x00,0x10,0x00,0x44,0x50,0x00,0x03,0x3C,0x44,0x00,0x00,0x3C,0x46,0x01,0x00,0x05,
+0x46,0x01,0x00,0x06,0x46,0x01,0x00,0x07,0x46,0x01,0x00,0x01,0x46,0x01,0x00,0x02,
+0x46,0x01,0x00,0x03,0x46,0x01,0x00,0x03,0x46,0x01,0x00,0x04,0x46,0x01,0x00,0x05,
+0x46,0x21,0x00,0x00,0x46,0x21,0x00,0x01,0x46,0x21,0x00,0x02,0x46,0x11,0x00,0x00,
+0x46,0x11,0x00,0x01,0x46,0x11,0x00,0x02,0x46,0x11,0x00,0x06,0x46,0x11,0x00,0x07,
+0x46,0x51,0x00,0x07,0x46,0x51,0x00,0x08,0x46,0x01,0x00,0x07,0x46,0x01,0x00,0x08,
+0x46,0x01,0x00,0x09,0x46,0x01,0x00,0x02,0x46,0x01,0x00,0x03,0x46,0x01,0x00,0x04,
+0x46,0x31,0x00,0x01,0x46,0x31,0x00,0x02,0x46,0x31,0x00,0x03,0x46,0x31,0x00,0x07,
+0x46,0x31,0x00,0x08,0x46,0x31,0x00,0x09,0x46,0x21,0x00,0x06,0x46,0x21,0x00,0x07,
+0x46,0x31,0x00,0x02,0x46,0x31,0x00,0x03,0x46,0x31,0x00,0x04,0x46,0x21,0x00,0x07,
+0x46,0x21,0x00,0x08,0x46,0x21,0x00,0x09,0x46,0x21,0x00,0x01,0x46,0x21,0x00,0x02,
+0x46,0x21,0x00,0x03,0x46,0x11,0x00,0x01,0x46,0x11,0x00,0x02,0x46,0x11,0x00,0x03,
+0x46,0x11,0x00,0x02,0x46,0x11,0x00,0x03,0x46,0x11,0x00,0x04,0x46,0x00,0x00,0x0D,
+0x46,0x00,0x00,0x0E,0x46,0x00,0x00,0x0F,0x46,0x01,0x00,0x00,0x46,0x01,0x00,0x01,
+0x46,0x01,0x00,0x02,0x46,0x11,0x00,0x07,0x46,0x11,0x00,0x08,0x46,0x11,0x00,0x09,
+0x00,0x01,0x02,0x00,0x01,0x02,0x01,0x00,0x00,0x02,0x02,0x01,0x02,0x02,0x01,0x01,
+0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x08,0x09,0x10,0x11,0x00,0x01,0x08,0x09,
+0x10,0x11,0x00,0x01,0x08,0x09,0x10,0x11,0x00,0x01,0x08,0x09,0x10,0x11,0x00,0x01,
+0x08,0x09,0x10,0x11,0x00,0x01,0x08,0x09,0x00,0xA1,0x28,0x04,0x00,0x0A,0x85,0x02,
+0x00,0x54,0x50,0x01,0x48,0x19,0x00,0x10,0x02,0x04,0x02,0x00,0x00,0x00,0x00,0x00,
+0x04,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x02,0x04,0x02,0x04,0x00,0x00,0x00,0x00,
+0x04,0x02,0x01,0x04,0x03,0x02,0x00,0x00,0x02,0x01,0x04,0x03,0x01,0x02,0x00,0x00,
+0x03,0x02,0x03,0x00,0x00,0x00,0x00,0x00,0x01,0x04,0x03,0x02,0x00,0x00,0x00,0x00,
+0x04,0x03,0x02,0x00,0x00,0x00,0x00,0x00,0x01,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
+0x04,0x03,0x01,0x02,0x00,0x00,0x00,0x00,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
+0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0xA2,0x82,0xA2,0x82,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x81,0xA1,0x81,0xA1,
+0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA2,0x82,0xA2,0x82,0xA2,0x0D,0x00,0x00,
+0x00,0x00,0x00,0x00,0xC1,0xA1,0xE1,0x81,0xA1,0x85,0xC5,0xA5,0xE5,0x0E,0x00,0x00,
+0xE5,0x85,0xC5,0xAA,0xC1,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0xC1,0xA2,0xC1,0x82,
+0xE1,0x2F,0x00,0x00,0x00,0x00,0x00,0x00,0xE3,0x83,0xC3,0xA3,0xE3,0x0C,0x00,0x00,
+0x00,0x00,0x00,0x00,0xC5,0xA5,0xE5,0x05,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0xEA,0xCA,0xEA,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC5,0xE5,0xC5,0x85,
+0x79,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCA,0xEA,0xCA,0x09,0x01,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0xAA,0x8A,0x0A,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x8A,0xAA,0x1D,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEA,0xCA,0x2D,0x02,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xCA,0xEA,0x3D,0x02,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x81,0x01,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0xA1,0x02,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC1,0x03,0x03,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE1,0x04,0x03,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0xA5,0x5A,0x08,0x04,0x06,0x02,0x09,0x52,0x44,0x4A,0x4E,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x46,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x41,0x72,0x69,0x6D,0x61,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x39,0x30,0x39,0x30,0x33,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x14,0x02,0x3F,0x82,0xC2,0x10,0x02,0x03,0x37,0x64,0x30,0x96,0xC8,0x3C,0xFF,0x0A,
+0x14,0x14,0x28,0x14,0x32,0x32,0x25,0x20,0x05,0x40,0x25,0x14,0x14,0x82,0x82,0x16,
+0x16,0x53,0x75,0x0A,0x78,0x46,0x64,0x3C,0x0F,0x0C,0x00,0x00,0x11,0x00,0x00,0x08,
+0x0F,0x0A,0x96,0x10,0x09,0x06,0x0A,0x04,0x14,0x64,0xFF,0x14,0x00,0x00,0x1E,0x8C,
+0x64,0x64,0x78,0x90,0x08,0x00,0x0F,0x06,0x04,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x02,0x80,0x00,0x00,0x00,
+0x00,0x0C,0x00,0x00,0x00,0x1E,0x20,0x22,0x24,0x00,0x50,0x02,0x02,0x0A,0x02,0x05,
+0x24,0x12,0x0A,0x06,0xE5,0x00,0x08,0x70,0x04,0x38,0x00,0x7F,0x03,0x44,0x47,0x34,
+0x00,0x04,0x56,0x0D,0xD4,0x53,0x0F,0x00,0x00,0x7F,0x03,0x44,0x47,0x34,0x00,0x04,
+0x56,0x0D,0xD4,0x53,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x28,0x00,0x00,
+0x00,0x00,0x00,0x16,0x0A,0x14,0x0A,0x0A,0x14,0x64,0x14,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x0B,0x0C,0x1B,0x15,0x50,0x25,0x02,0x50,0x0F,0x03,0x00,0x28,0xB2,0x64,
+0x04,0x3C,0x35,0x1E,0x32,0x80,0x0E,0x07,0x23,0x0A,0xB4,0x78,0x96,0x5A,0x64,0x32,
+0x00,0x00,0x64,0x64,0x00,0x14,0x03,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,
+0x06,0x0A,0x0A,0x78,0x3C,0x96,0x32,0x00,0x00,0x00,0x00,0x88,0x30,0x00,0x00,0x00,
+0x00,0x0A,0x0A,0x50,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x06,0x00,0x00,0x00,
+0x1E,0x00,0x00,0x00,0x00,0x02,0xD0,0x05,0x00,0x0A,0x05,0xFF,0x0A,0x03,0xE8,0x03,
+0xE8,0x03,0x02,0x01,0xF4,0x00,0x00,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,
+0x14,0x14,0x0A,0x0A,0x1C,0x30,0x00,0x00,0x11,0x11,0x0A,0x05,0x3D,0x0A,0x1B,0x33,
+0x00,0x00,0x11,0x0A,0x05,0x85,0x14,0x15,0x14,0x10,0x15,0x14,0x00,0x00,0x00,0x01,
+0x00,0x00,0x00,0x00,0x00,0x10,0x0A,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x01,0x0A,0x06,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x6F,0x08,0x6F,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x00,0x5C,0x08,0x6F,0x08,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0xED,0x00,0x36,0x01,0xE2,0x02,0x2D,0x03,0x37,0x04,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEB,0x00,0x40,0x01,0xDF,0x02,
+0x34,0x03,0x37,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x08,0x70,0x14,0x00,0x00,0x08,0x70,0x14,0x00,0x00,0x04,0x38,0x0A,0x00,
+0x00,0x04,0x38,0x0A,0x64,0x0C,0x64,0xFF,0x96,0x96,0x64,0x3C,0xC8,0xFF,0xB4,0x5A,
+0x05,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x40,
+0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x65,0x67,0x65,0x67,0x65,0x67,0x65,0x67,0x64,0x65,0x64,0x65,
+0x00,0x65,0x00,0x65,0x00,0x65,0x00,0x65,0x64,0x65,0x64,0x65,0x65,0x67,0x65,0x67,
+0x65,0x67,0x65,0x67,0x00,0x00,0x00,0x00,0x26,0x00,0x39,0x00,0x24,0x0C,0x36,0x0C,
+0xFF,0x34,0x00,0x45,0x00,0xFF,0x37,0x00,0x26,0x00,0xFF,0x36,0x00,0x24,0x00,0xFF,
+0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x05,0x02,0x00,0xFA,0x00,0xFA,0x01,0xC2,0x03,0x20,0x01,0x2C,0x19,0x20,0x00,0x4B,
+0x32,0x32,0x00,0x00,0x01,0xF4,0x00,0x96,0xC8,0x18,0x18,0x01,0xF4,0x20,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0xFE,0xF7,0x9B,0x3C,0xFF,0xFF,0x07,0x80,0x4B,0x00,0xEF,0x0F,0x0C,0x44,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA5,0x5A,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE3,0x64,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x1C,0x30,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,0xFF,0x38,0xE0,0x30,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0x03,0x00,0xFF,0xC0,0x01,0x37,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,
+0xFF,0x07,0x1C,0x30,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,0xFF,0x38,0xE0,0x30,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,0xFF,0xC0,0x01,0x37,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0x03,0x00,0xFF,0xFF,0xFD,0x37,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,
+0xFF,0x00,0x00,0x30,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,0x07,0x0E,0x15,0x00,
+0x07,0x0E,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
+0x0A,0xBA,0x90,0x00,0x20,0x00,0x00,0x00,0xDC,0x05,0x00,0x00,0xC9,0x00,0x00,0x00,
+0x80,0x61,0x00,0x00,0x0A,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x14,0x00,0x00,0x00,
+0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0x03,0x00,0x00,0x00,
+0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x81,0x02,0x20,0x47,0x81,0x02,
+0x85,0x0C,0x81,0x02,0x14,0x00,0xC8,0x00,0x5E,0x01,0x5E,0x01,0x64,0x00,0x14,0x00,
+0x00,0x00,0x00,0x00,0x78,0x02,0x00,0x00,0x03,0x5D,0x08,0x02,0x1F,0x06,0x11,0x1B,
+0x0C,0x11,0x1F,0x09,0x00,0x04,0x00,0x03,0x00,0x02,0x03,0x03,0x01,0x00,0x15,0x15,
+0x00,0x04,0x30,0x03,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x1C,0x30,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0x03,0x00,0xFF,0x38,0xE0,0x30,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,
+0xFF,0xC0,0x01,0x37,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,0xFF,0x07,0x1C,0x30,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,0xFF,0x38,0xE0,0x30,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0x03,0x00,0xFF,0xC0,0x01,0x37,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,
+0xFF,0xFF,0xFD,0x37,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,0xFF,0x00,0x00,0x30,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,0x07,0x0E,0x15,0x00,0x07,0x0E,0x15,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x0A,0xBA,0x90,0x00,
+0x20,0x00,0x00,0x00,0xDC,0x05,0x00,0x00,0xC9,0x00,0x00,0x00,0x80,0x61,0x00,0x00,
+0x0A,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0xAA,0xAA,0xAA,0xAA,
+0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0x03,0x00,0x00,0x00,0x0A,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x04,0x81,0x02,0x20,0x47,0x81,0x02,0x85,0x0C,0x81,0x02,
+0x14,0x00,0xC8,0x00,0x5E,0x01,0x5E,0x01,0x64,0x00,0x14,0x00,0x00,0x00,0x00,0x00,
+0x78,0x02,0x00,0x00,0x03,0x5D,0x08,0x02,0x1F,0x06,0x11,0x1B,0x0C,0x11,0x1F,0x09,
+0x00,0x04,0x00,0x03,0x00,0x02,0x03,0x03,0x01,0x00,0x15,0x15,0x00,0x04,0x30,0x03,
+0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0xFF,0x07,0x1C,0x30,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,
+0xFF,0x38,0xE0,0x30,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,0xFF,0xC0,0x01,0x37,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,0xFF,0x07,0x1C,0x30,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0x03,0x00,0xFF,0x38,0xE0,0x30,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,
+0xFF,0xC0,0x01,0x37,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,0xFF,0xFF,0xFD,0x37,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,0xFF,0x00,0x00,0x30,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0x03,0x00,0x07,0x0E,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x22,0x9A,0x80,0x00,0x20,0x00,0x00,0x00,
+0xF0,0x04,0x00,0x00,0xC9,0x00,0x00,0x00,0x80,0x61,0x00,0x00,0x0A,0x00,0x00,0x00,
+0x32,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,
+0xAA,0xAA,0xAA,0xAA,0x03,0x00,0x00,0x00,0x0A,0x00,0x00,0x00,0x00,0x03,0x00,0x00,
+0x00,0x04,0xA0,0x00,0x20,0x47,0xA0,0x00,0x20,0x08,0xA0,0x00,0x14,0x00,0xC8,0x00,
+0x5E,0x01,0x5E,0x01,0xC8,0x00,0x14,0x00,0x29,0x0E,0x5B,0x0E,0x97,0x00,0x00,0x00,
+0x04,0x5D,0x08,0x04,0x1F,0x06,0x10,0x1A,0x0B,0x10,0x15,0x09,0x00,0x03,0x02,0x03,
+0x00,0x02,0x03,0x03,0x01,0x00,0x15,0x15,0x00,0x04,0x30,0x03,0x02,0x00,0x03,0x03,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0xFF,0x07,0x1C,0x30,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,0xFF,0x38,0xE0,0x30,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,0xFF,0xC0,0x01,0x37,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0x03,0x00,0xFF,0x07,0x1C,0x30,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,
+0xFF,0x38,0xE0,0x30,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,0xFF,0xC0,0x01,0x37,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,0xFF,0xFF,0xFD,0x37,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0x03,0x00,0xFF,0x00,0x00,0x30,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,
+0x38,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x04,0x00,0x00,0x00,0x3A,0x9A,0x84,0x00,0x20,0x00,0x00,0x00,0xF4,0x01,0x00,0x00,
+0xC9,0x00,0x00,0x00,0x00,0x41,0x00,0x00,0x0A,0x00,0x00,0x00,0x32,0x00,0x00,0x00,
+0x14,0x00,0x00,0x00,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,
+0x02,0x00,0x00,0x00,0x0A,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x04,0xA0,0x00,
+0x20,0x47,0xA0,0x00,0x20,0x08,0xA0,0x00,0x14,0x00,0xC8,0x00,0x5E,0x01,0x5E,0x01,
+0xC8,0x00,0x14,0x00,0xA4,0x38,0xD6,0x38,0x97,0x00,0x00,0x00,0x04,0x5D,0x08,0x04,
+0x1F,0x06,0x10,0x1A,0x0B,0x10,0x15,0x09,0x00,0x04,0x02,0x03,0x00,0x02,0x03,0x03,
+0x01,0x00,0x15,0x15,0x00,0x03,0x30,0x03,0x00,0x01,0x03,0x03,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x1C,0x30,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,0xFF,0x38,0xE0,0x30,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0x03,0x00,0xFF,0xC0,0x01,0x37,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,
+0xFF,0x07,0x1C,0x30,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,0xFF,0x38,0xE0,0x30,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,0xFF,0xC0,0x01,0x37,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0x03,0x00,0xFF,0xFF,0xFD,0x37,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,
+0xFF,0x00,0x00,0x30,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,0x07,0x00,0x0E,0x00,
+0x15,0x00,0x31,0x00,0x1C,0x00,0x23,0x00,0x2A,0x00,0x31,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
+0x22,0x9A,0x80,0x00,0x20,0x00,0x00,0x00,0xF0,0x04,0x00,0x00,0xC9,0x00,0x00,0x00,
+0x80,0x61,0x00,0x00,0x0A,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x14,0x00,0x00,0x00,
+0xAA,0xAA,0xAA,0xA2,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0x03,0x00,0x00,0x00,
+0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0xA0,0x00,0x20,0x47,0xA0,0x00,
+0x20,0x08,0xA0,0x00,0x14,0x00,0xC8,0x00,0x5E,0x01,0x5E,0x01,0x64,0x00,0x14,0x00,
+0x00,0x00,0x00,0x00,0x97,0x00,0x00,0x00,0x04,0x05,0x08,0x04,0x1F,0x06,0x10,0x1A,
+0x0B,0x10,0x15,0x09,0x00,0x03,0x00,0x03,0x00,0x02,0x03,0x03,0x00,0x01,0x15,0x15,
+0x00,0x04,0x30,0x01,0x00,0x00,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0x1C,0x30,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0x03,0x00,0xFF,0x38,0xE0,0x30,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,
+0xFF,0xC0,0x01,0x37,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,0xFF,0x07,0x1C,0x30,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,0xFF,0x38,0xE0,0x30,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0x03,0x00,0xFF,0xC0,0x01,0x37,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,
+0xFF,0xFF,0xFD,0x37,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,0xFF,0x00,0x00,0x30,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,0x07,0x00,0x0E,0x00,0x15,0x00,0x31,0x00,
+0x1C,0x00,0x23,0x00,0x2A,0x00,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x3A,0xBA,0x84,0x00,
+0x20,0x00,0x00,0x00,0xF0,0x04,0x00,0x00,0xC9,0x00,0x00,0x00,0x80,0x61,0x00,0x00,
+0x0A,0x00,0x00,0x00,0x32,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0xAA,0xAA,0xAA,0xA2,
+0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0x03,0x00,0x00,0x00,0x0A,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x04,0xA0,0x00,0x20,0x47,0x64,0x00,0x34,0x08,0x64,0x00,
+0x14,0x00,0xC8,0x00,0x5E,0x01,0x5E,0x01,0x64,0x00,0x14,0x00,0x00,0x00,0x00,0x00,
+0x97,0x00,0x00,0x00,0x04,0x05,0x08,0x07,0x1F,0x08,0x11,0x18,0x0C,0x11,0x16,0x09,
+0x00,0x04,0x00,0x03,0x00,0x02,0x03,0x03,0x00,0x01,0x15,0x15,0x00,0x04,0x30,0x01,
+0x00,0x00,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0xFF,0x07,0x1C,0x30,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,
+0xFF,0x38,0xE0,0x30,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,0xFF,0xC0,0x01,0x37,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,0xFF,0x07,0x1C,0x30,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0x03,0x00,0xFF,0x38,0xE0,0x30,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,
+0xFF,0xC0,0x01,0x37,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,0xFF,0xFF,0xFD,0x37,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0x03,0x00,0xFF,0x00,0x00,0x30,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,
+0xFF,0xFF,0x03,0x00,0x31,0x00,0x31,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x3A,0x9A,0x84,0x00,0x20,0x00,0x00,0x00,
+0xF0,0x04,0x00,0x00,0xC9,0x00,0x00,0x00,0x80,0x61,0x00,0x00,0x0A,0x00,0x00,0x00,
+0x32,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,
+0xAA,0xAA,0xAA,0xAA,0x03,0x00,0x00,0x00,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x04,0xA0,0x00,0x20,0x47,0xA0,0x00,0x20,0x08,0xA0,0x00,0x14,0x00,0xC8,0x00,
+0x5E,0x01,0x5E,0x01,0x64,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x97,0x00,0x00,0x00,
+0x04,0x05,0x08,0x04,0x1F,0x06,0x10,0x1A,0x0B,0x10,0x15,0x09,0x00,0x04,0x07,0x03,
+0x00,0x02,0x03,0x03,0x00,0x01,0x15,0x15,0x00,0x04,0x30,0x01,0x00,0x00,0x03,0x03,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x65,0x02,0x66,0x02,0x67,0x02,0x68,0x02,0x69,0x02,0x6A,0x02,0x6B,0x02,0x6C,0x02,
+0x6D,0x02,0x6E,0x02,0x6F,0x02,0x70,0x02,0x71,0x02,0x72,0x02,0x73,0x02,0x74,0x02,
+0x75,0x02,0x76,0x02,0x77,0x02,0x78,0x02,0x79,0x02,0x7A,0x02,0x7B,0x02,0x7C,0x02,
+0x7D,0x02,0x7E,0x02,0x7F,0x02,0x80,0x02,0x81,0x02,0x82,0x02,0x83,0x02,0x84,0x02,
+0x85,0x02,0x86,0x02,0x87,0x02,0x88,0x02,0x41,0x02,0x42,0x02,0x43,0x02,0x44,0x02,
+0x45,0x02,0x46,0x02,0x47,0x02,0x48,0x02,0x49,0x02,0x4A,0x02,0x4B,0x02,0x4C,0x02,
+0x4D,0x02,0x4E,0x02,0x4F,0x02,0x50,0x02,0x51,0x02,0x52,0x02,0x53,0x02,0x54,0x02,
+0x55,0x02,0x56,0x02,0x57,0x02,0x58,0x02,0x59,0x02,0x5A,0x02,0x5B,0x02,0x5C,0x02,
+0x5D,0x02,0x5E,0x02,0x5F,0x02,0x60,0x02,0x61,0x02,0x62,0x02,0x63,0x02,0x64,0x02,
+0x1D,0x02,0x1E,0x02,0x1F,0x02,0x20,0x02,0x21,0x02,0x22,0x02,0x23,0x02,0x24,0x02,
+0x25,0x02,0x26,0x02,0x27,0x02,0x28,0x02,0x29,0x02,0x2A,0x02,0x2B,0x02,0x2C,0x02,
+0x2D,0x02,0x2E,0x02,0x2F,0x02,0x30,0x02,0x31,0x02,0x32,0x02,0x33,0x02,0x34,0x02,
+0x35,0x02,0x36,0x02,0x37,0x02,0x38,0x02,0x39,0x02,0x3A,0x02,0x3B,0x02,0x3C,0x02,
+0x3D,0x02,0x3E,0x02,0x3F,0x02,0x40,0x02,0xF9,0x01,0xFA,0x01,0xFB,0x01,0xFC,0x01,
+0xFD,0x01,0xFE,0x01,0xFF,0x01,0x00,0x02,0x01,0x02,0x02,0x02,0x03,0x02,0x04,0x02,
+0x05,0x02,0x06,0x02,0x07,0x02,0x08,0x02,0x09,0x02,0x0A,0x02,0x0B,0x02,0x0C,0x02,
+0x0D,0x02,0x0E,0x02,0x0F,0x02,0x10,0x02,0x11,0x02,0x12,0x02,0x13,0x02,0x14,0x02,
+0x15,0x02,0x16,0x02,0x17,0x02,0x18,0x02,0x19,0x02,0x1A,0x02,0x1B,0x02,0x1C,0x02,
+0xD5,0x01,0xD6,0x01,0xD7,0x01,0xD8,0x01,0xD9,0x01,0xDA,0x01,0xDB,0x01,0xDC,0x01,
+0xDD,0x01,0xDE,0x01,0xDF,0x01,0xE0,0x01,0xE1,0x01,0xE2,0x01,0xE3,0x01,0xE4,0x01,
+0xE5,0x01,0xE6,0x01,0xE7,0x01,0xE8,0x01,0xE9,0x01,0xEA,0x01,0xEB,0x01,0xEC,0x01,
+0xED,0x01,0xEE,0x01,0xEF,0x01,0xF0,0x01,0xF1,0x01,0xF2,0x01,0xF3,0x01,0xF4,0x01,
+0xF5,0x01,0xF6,0x01,0xF7,0x01,0xF8,0x01,0xB1,0x01,0xB2,0x01,0xB3,0x01,0xB4,0x01,
+0xB5,0x01,0xB6,0x01,0xB7,0x01,0xB8,0x01,0xB9,0x01,0xBA,0x01,0xBB,0x01,0xBC,0x01,
+0xBD,0x01,0xBE,0x01,0xBF,0x01,0xC0,0x01,0xC1,0x01,0xC2,0x01,0xC3,0x01,0xC4,0x01,
+0xC5,0x01,0xC6,0x01,0xC7,0x01,0xC8,0x01,0xC9,0x01,0xCA,0x01,0xCB,0x01,0xCC,0x01,
+0xCD,0x01,0xCE,0x01,0xCF,0x01,0xD0,0x01,0xD1,0x01,0xD2,0x01,0xD3,0x01,0xD4,0x01,
+0x8D,0x01,0x8E,0x01,0x8F,0x01,0x90,0x01,0x91,0x01,0x92,0x01,0x93,0x01,0x94,0x01,
+0x95,0x01,0x96,0x01,0x97,0x01,0x98,0x01,0x99,0x01,0x9A,0x01,0x9B,0x01,0x9C,0x01,
+0x9D,0x01,0x9E,0x01,0x9F,0x01,0xA0,0x01,0xA1,0x01,0xA2,0x01,0xA3,0x01,0xA4,0x01,
+0xA5,0x01,0xA6,0x01,0xA7,0x01,0xA8,0x01,0xA9,0x01,0xAA,0x01,0xAB,0x01,0xAC,0x01,
+0xAD,0x01,0xAE,0x01,0xAF,0x01,0xB0,0x01,0x69,0x01,0x6A,0x01,0x6B,0x01,0x6C,0x01,
+0x6D,0x01,0x6E,0x01,0x6F,0x01,0x70,0x01,0x71,0x01,0x72,0x01,0x73,0x01,0x74,0x01,
+0x75,0x01,0x76,0x01,0x77,0x01,0x78,0x01,0x79,0x01,0x7A,0x01,0x7B,0x01,0x7C,0x01,
+0x7D,0x01,0x7E,0x01,0x7F,0x01,0x80,0x01,0x81,0x01,0x82,0x01,0x83,0x01,0x84,0x01,
+0x85,0x01,0x86,0x01,0x87,0x01,0x88,0x01,0x89,0x01,0x8A,0x01,0x8B,0x01,0x8C,0x01,
+0x45,0x01,0x46,0x01,0x47,0x01,0x48,0x01,0x49,0x01,0x4A,0x01,0x4B,0x01,0x4C,0x01,
+0x4D,0x01,0x4E,0x01,0x4F,0x01,0x50,0x01,0x51,0x01,0x52,0x01,0x53,0x01,0x54,0x01,
+0x55,0x01,0x56,0x01,0x57,0x01,0x58,0x01,0x59,0x01,0x5A,0x01,0x5B,0x01,0x5C,0x01,
+0x5D,0x01,0x5E,0x01,0x5F,0x01,0x60,0x01,0x61,0x01,0x62,0x01,0x63,0x01,0x64,0x01,
+0x65,0x01,0x66,0x01,0x67,0x01,0x68,0x01,0x21,0x01,0x22,0x01,0x23,0x01,0x24,0x01,
+0x25,0x01,0x26,0x01,0x27,0x01,0x28,0x01,0x29,0x01,0x2A,0x01,0x2B,0x01,0x2C,0x01,
+0x2D,0x01,0x2E,0x01,0x2F,0x01,0x30,0x01,0x31,0x01,0x32,0x01,0x33,0x01,0x34,0x01,
+0x35,0x01,0x36,0x01,0x37,0x01,0x38,0x01,0x39,0x01,0x3A,0x01,0x3B,0x01,0x3C,0x01,
+0x3D,0x01,0x3E,0x01,0x3F,0x01,0x40,0x01,0x41,0x01,0x42,0x01,0x43,0x01,0x44,0x01,
+0xFD,0x00,0xFE,0x00,0xFF,0x00,0x00,0x01,0x01,0x01,0x02,0x01,0x03,0x01,0x04,0x01,
+0x05,0x01,0x06,0x01,0x07,0x01,0x08,0x01,0x09,0x01,0x0A,0x01,0x0B,0x01,0x0C,0x01,
+0x0D,0x01,0x0E,0x01,0x0F,0x01,0x10,0x01,0x11,0x01,0x12,0x01,0x13,0x01,0x14,0x01,
+0x15,0x01,0x16,0x01,0x17,0x01,0x18,0x01,0x19,0x01,0x1A,0x01,0x1B,0x01,0x1C,0x01,
+0x1D,0x01,0x1E,0x01,0x1F,0x01,0x20,0x01,0xD9,0x00,0xDA,0x00,0xDB,0x00,0xDC,0x00,
+0xDD,0x00,0xDE,0x00,0xDF,0x00,0xE0,0x00,0xE1,0x00,0xE2,0x00,0xE3,0x00,0xE4,0x00,
+0xE5,0x00,0xE6,0x00,0xE7,0x00,0xE8,0x00,0xE9,0x00,0xEA,0x00,0xEB,0x00,0xEC,0x00,
+0xED,0x00,0xEE,0x00,0xEF,0x00,0xF0,0x00,0xF1,0x00,0xF2,0x00,0xF3,0x00,0xF4,0x00,
+0xF5,0x00,0xF6,0x00,0xF7,0x00,0xF8,0x00,0xF9,0x00,0xFA,0x00,0xFB,0x00,0xFC,0x00,
+0xB5,0x00,0xB6,0x00,0xB7,0x00,0xB8,0x00,0xB9,0x00,0xBA,0x00,0xBB,0x00,0xBC,0x00,
+0xBD,0x00,0xBE,0x00,0xBF,0x00,0xC0,0x00,0xC1,0x00,0xC2,0x00,0xC3,0x00,0xC4,0x00,
+0xC5,0x00,0xC6,0x00,0xC7,0x00,0xC8,0x00,0xC9,0x00,0xCA,0x00,0xCB,0x00,0xCC,0x00,
+0xCD,0x00,0xCE,0x00,0xCF,0x00,0xD0,0x00,0xD1,0x00,0xD2,0x00,0xD3,0x00,0xD4,0x00,
+0xD5,0x00,0xD6,0x00,0xD7,0x00,0xD8,0x00,0x91,0x00,0x92,0x00,0x93,0x00,0x94,0x00,
+0x95,0x00,0x96,0x00,0x97,0x00,0x98,0x00,0x99,0x00,0x9A,0x00,0x9B,0x00,0x9C,0x00,
+0x9D,0x00,0x9E,0x00,0x9F,0x00,0xA0,0x00,0xA1,0x00,0xA2,0x00,0xA3,0x00,0xA4,0x00,
+0xA5,0x00,0xA6,0x00,0xA7,0x00,0xA8,0x00,0xA9,0x00,0xAA,0x00,0xAB,0x00,0xAC,0x00,
+0xAD,0x00,0xAE,0x00,0xAF,0x00,0xB0,0x00,0xB1,0x00,0xB2,0x00,0xB3,0x00,0xB4,0x00,
+0x6D,0x00,0x6E,0x00,0x6F,0x00,0x70,0x00,0x71,0x00,0x72,0x00,0x73,0x00,0x74,0x00,
+0x75,0x00,0x76,0x00,0x77,0x00,0x78,0x00,0x79,0x00,0x7A,0x00,0x7B,0x00,0x7C,0x00,
+0x7D,0x00,0x7E,0x00,0x7F,0x00,0x80,0x00,0x81,0x00,0x82,0x00,0x83,0x00,0x84,0x00,
+0x85,0x00,0x86,0x00,0x87,0x00,0x88,0x00,0x89,0x00,0x8A,0x00,0x8B,0x00,0x8C,0x00,
+0x8D,0x00,0x8E,0x00,0x8F,0x00,0x90,0x00,0x49,0x00,0x4A,0x00,0x4B,0x00,0x4C,0x00,
+0x4D,0x00,0x4E,0x00,0x4F,0x00,0x50,0x00,0x51,0x00,0x52,0x00,0x53,0x00,0x54,0x00,
+0x55,0x00,0x56,0x00,0x57,0x00,0x58,0x00,0x59,0x00,0x5A,0x00,0x5B,0x00,0x5C,0x00,
+0x5D,0x00,0x5E,0x00,0x5F,0x00,0x60,0x00,0x61,0x00,0x62,0x00,0x63,0x00,0x64,0x00,
+0x65,0x00,0x66,0x00,0x67,0x00,0x68,0x00,0x69,0x00,0x6A,0x00,0x6B,0x00,0x6C,0x00,
+0x25,0x00,0x26,0x00,0x27,0x00,0x28,0x00,0x29,0x00,0x2A,0x00,0x2B,0x00,0x2C,0x00,
+0x2D,0x00,0x2E,0x00,0x2F,0x00,0x30,0x00,0x31,0x00,0x32,0x00,0x33,0x00,0x34,0x00,
+0x35,0x00,0x36,0x00,0x37,0x00,0x38,0x00,0x39,0x00,0x3A,0x00,0x3B,0x00,0x3C,0x00,
+0x3D,0x00,0x3E,0x00,0x3F,0x00,0x40,0x00,0x41,0x00,0x42,0x00,0x43,0x00,0x44,0x00,
+0x45,0x00,0x46,0x00,0x47,0x00,0x48,0x00,0x01,0x00,0x02,0x00,0x03,0x00,0x04,0x00,
+0x05,0x00,0x06,0x00,0x07,0x00,0x08,0x00,0x09,0x00,0x0A,0x00,0x0B,0x00,0x0C,0x00,
+0x0D,0x00,0x0E,0x00,0x0F,0x00,0x10,0x00,0x11,0x00,0x12,0x00,0x13,0x00,0x14,0x00,
+0x15,0x00,0x16,0x00,0x17,0x00,0x18,0x00,0x19,0x00,0x1A,0x00,0x1B,0x00,0x1C,0x00,
+0x1D,0x00,0x1E,0x00,0x1F,0x00,0x20,0x00,0x21,0x00,0x22,0x00,0x23,0x00,0x24,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x04,0x00,0x00,0x03,0xB9,0x83,0x11,0x2B,0x01,0xBD,0x01,0x02,0xC2,0x08,0x70,
+0x01,0xBD,0x03,0x04,0xB2,0x04,0x38,0x08,0x70,0x01,0xBD,0x00,0x0A,0xB1,0xF8,0x27,
+0x27,0x00,0x00,0x0B,0x0E,0x0B,0x0E,0x33,0x02,0xD2,0x2D,0x2D,0x0B,0xB2,0x80,0x02,
+0x18,0x80,0x70,0x00,0x08,0x1C,0x08,0x11,0x05,0x01,0xE9,0xD1,0x02,0xB2,0x00,0x08,
+0x01,0xE9,0x00,0x01,0xBD,0x02,0x02,0xB2,0xB5,0x0A,0x01,0xBD,0x00,0x08,0xDD,0x00,
+0x00,0x08,0x1C,0x08,0x34,0x34,0x88,0x18,0xB4,0x65,0x6B,0x00,0x00,0xD0,0xD4,0x36,
+0xCF,0x06,0xCE,0x00,0xCE,0x00,0x00,0x00,0x07,0x00,0x2A,0x07,0x01,0x07,0x00,0x00,
+0x2A,0x01,0xBD,0x03,0x01,0xE9,0xC3,0x03,0xB4,0x01,0x67,0x2A,0x01,0xE9,0x00,0x01,
+0xBD,0x00,0x01,0xC1,0x01,0x01,0xBD,0x01,0x39,0xC1,0xFF,0xFB,0xF9,0xF6,0xF4,0xF1,
+0xEF,0xEA,0xE7,0xE5,0xE2,0xDF,0xDD,0xDA,0xD8,0xD5,0xD2,0xCF,0xCC,0xC5,0xBE,0xB7,
+0xB0,0xA8,0xA0,0x98,0x8E,0x85,0x7B,0x72,0x69,0x5E,0x53,0x48,0x3E,0x35,0x2B,0x22,
+0x17,0x0D,0x09,0x07,0x05,0x01,0x00,0x26,0xF0,0x86,0x25,0x6E,0xB6,0xDD,0xF3,0xD8,
+0xCC,0x9B,0x00,0x01,0xBD,0x02,0x39,0xC1,0xFF,0xFB,0xF9,0xF6,0xF4,0xF1,0xEF,0xEA,
+0xE7,0xE5,0xE2,0xDF,0xDD,0xDA,0xD8,0xD5,0xD2,0xCF,0xCC,0xC5,0xBE,0xB7,0xB0,0xA8,
+0xA0,0x98,0x8E,0x85,0x7B,0x72,0x69,0x5E,0x53,0x48,0x3E,0x35,0x2B,0x22,0x17,0x0D,
+0x09,0x07,0x05,0x01,0x00,0x26,0xF0,0x86,0x25,0x6E,0xB6,0xDD,0xF3,0xD8,0xCC,0x9B,
+0x00,0x01,0xBD,0x03,0x39,0xC1,0xFF,0xFB,0xF9,0xF6,0xF4,0xF1,0xEF,0xEA,0xE7,0xE5,
+0xE2,0xDF,0xDD,0xDA,0xD8,0xD5,0xD2,0xCF,0xCC,0xC5,0xBE,0xB7,0xB0,0xA8,0xA0,0x98,
+0x8E,0x85,0x7B,0x72,0x69,0x5E,0x53,0x48,0x3E,0x35,0x2B,0x22,0x17,0x0D,0x09,0x07,
+0x05,0x01,0x00,0x26,0xF0,0x86,0x25,0x6E,0xB6,0xDD,0xF3,0xD8,0xCC,0x9B,0x00,0x01,
+0xBD,0x00,0x01,0xC2,0xC8,0x01,0xCC,0x08,0x25,0xD3,0x81,0x00,0x00,0x00,0x00,0x01,
+0x00,0x04,0x00,0x01,0x13,0x40,0x04,0x09,0x09,0x0B,0x0B,0x32,0x10,0x08,0x00,0x08,
+0x32,0x10,0x08,0x00,0x08,0x32,0x10,0x08,0x00,0x08,0x00,0x00,0x0A,0x08,0x7B,0x01,
+0xE9,0xC5,0x01,0xC6,0xF7,0x01,0xE9,0x00,0x01,0xE9,0xD4,0x01,0xC6,0x6E,0x01,0xE9,
+0x00,0x01,0xE9,0xEF,0x01,0xD3,0x0C,0x01,0xE9,0x00,0x01,0xBD,0x01,0x01,0xE9,0xC8,
+0x01,0xD3,0xA1,0x01,0xE9,0x00,0x01,0xBD,0x00,0x38,0xD5,0x18,0x18,0x19,0x18,0x18,
+0x20,0x18,0x18,0x18,0x10,0x10,0x18,0x18,0x00,0x00,0x18,0x18,0x01,0x01,0x18,0x18,
+0x28,0x28,0x18,0x18,0x18,0x18,0x18,0x2F,0x2F,0x30,0x30,0x31,0x31,0x35,0x35,0x36,
+0x36,0x37,0x37,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xFC,0xFC,0x00,0x00,0xFC,
+0xFC,0x00,0x00,0x30,0xD6,0x18,0x18,0x19,0x18,0x18,0x20,0x19,0x18,0x18,0x10,0x10,
+0x18,0x18,0x00,0x00,0x18,0x18,0x01,0x01,0x18,0x18,0x28,0x28,0x18,0x18,0x18,0x18,
+0x18,0x2F,0x2F,0x30,0x30,0x31,0x31,0x35,0x35,0x36,0x36,0x37,0x37,0x18,0x18,0x18,
+0x18,0x18,0x18,0x18,0x18,0x18,0xD8,0xAA,0xAA,0xAA,0xAF,0xEA,0xAA,0xAA,0xAA,0xAA,
+0xAF,0xEA,0xAA,0xAA,0xAA,0xAB,0xAF,0xEF,0xAA,0xAA,0xAA,0xAA,0xAF,0xEA,0xAA,0x01,
+0xBD,0x01,0x0C,0xD8,0xAA,0xAA,0xAB,0xAF,0xEA,0xAA,0xAA,0xAA,0xAE,0xAF,0xEA,0xAA,
+0x01,0xBD,0x02,0x0C,0xD8,0xAA,0xAA,0xAA,0xAF,0xEA,0xAA,0xAA,0xAA,0xAA,0xAF,0xEA,
+0xAA,0x01,0xBD,0x03,0x18,0xD8,0xBA,0xAA,0xAA,0xAF,0xEA,0xAA,0xAA,0xAA,0xAA,0xAF,
+0xEA,0xAA,0xBA,0xAA,0xAA,0xAF,0xEA,0xAA,0xAA,0xAA,0xAA,0xAF,0xEA,0xAA,0x01,0xBD,
+0x00,0x01,0xE9,0xE4,0x02,0xE7,0x17,0x69,0x01,0xE9,0x00,0x19,0xE7,0x09,0x09,0x00,
+0x07,0xE8,0x00,0x26,0x00,0x07,0x00,0x00,0xE8,0x32,0x00,0xE9,0x0A,0x0A,0x00,0x00,
+0x00,0x01,0x01,0x00,0x12,0x04,0x01,0xBD,0x01,0x09,0xE7,0x02,0x00,0x01,0x20,0x01,
+0x18,0x08,0xA8,0x09,0x01,0xBD,0x02,0x03,0xE7,0x20,0x20,0x00,0x01,0xBD,0x03,0x06,
+0xE7,0x00,0xDC,0x11,0x70,0x00,0x20,0x01,0xE9,0xC9,0x06,0xE7,0x2A,0xCE,0x02,0x70,
+0x01,0x04,0x01,0xE9,0x00,0x01,0xBD,0x00,0x01,0xD1,0x27,0x04,0xC9,0x04,0x0C,0x6D,
+0x01,0x00,0x35,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x04,0x00,0x00,0x03,0xB9,0x83,0x11,0x2B,0x01,0xBD,0x01,0x02,0xC2,0x08,0x70,
+0x01,0xBD,0x03,0x04,0xB2,0x04,0x38,0x08,0x70,0x01,0xBD,0x00,0x0A,0xB1,0xF8,0x27,
+0x27,0x00,0x00,0x0B,0x0E,0x0B,0x0E,0x33,0x02,0xD2,0x2D,0x2D,0x0B,0xB2,0x80,0x02,
+0x18,0x80,0x70,0x00,0x08,0x1C,0x08,0x11,0x05,0x01,0xE9,0xD1,0x02,0xB2,0x00,0x08,
+0x01,0xE9,0x00,0x01,0xBD,0x02,0x02,0xB2,0xB5,0x0A,0x01,0xBD,0x00,0x08,0xDD,0x00,
+0x00,0x08,0x1C,0x08,0x34,0x34,0x88,0x18,0xB4,0x65,0x6B,0x00,0x00,0xD0,0xD4,0x36,
+0xCF,0x06,0xCE,0x00,0xCE,0x00,0x00,0x00,0x07,0x00,0x2A,0x07,0x01,0x07,0x00,0x00,
+0x2A,0x01,0xBD,0x03,0x01,0xE9,0xC3,0x03,0xB4,0x01,0x67,0x2A,0x01,0xE9,0x00,0x01,
+0xBD,0x00,0x01,0xC1,0x01,0x01,0xBD,0x01,0x39,0xC1,0xFF,0xFB,0xF9,0xF6,0xF4,0xF1,
+0xEF,0xEA,0xE7,0xE5,0xE2,0xDF,0xDD,0xDA,0xD8,0xD5,0xD2,0xCF,0xCC,0xC5,0xBE,0xB7,
+0xB0,0xA8,0xA0,0x98,0x8E,0x85,0x7B,0x72,0x69,0x5E,0x53,0x48,0x3E,0x35,0x2B,0x22,
+0x17,0x0D,0x09,0x07,0x05,0x01,0x00,0x26,0xF0,0x86,0x25,0x6E,0xB6,0xDD,0xF3,0xD8,
+0xCC,0x9B,0x00,0x01,0xBD,0x02,0x39,0xC1,0xFF,0xFB,0xF9,0xF6,0xF4,0xF1,0xEF,0xEA,
+0xE7,0xE5,0xE2,0xDF,0xDD,0xDA,0xD8,0xD5,0xD2,0xCF,0xCC,0xC5,0xBE,0xB7,0xB0,0xA8,
+0xA0,0x98,0x8E,0x85,0x7B,0x72,0x69,0x5E,0x53,0x48,0x3E,0x35,0x2B,0x22,0x17,0x0D,
+0x09,0x07,0x05,0x01,0x00,0x26,0xF0,0x86,0x25,0x6E,0xB6,0xDD,0xF3,0xD8,0xCC,0x9B,
+0x00,0x01,0xBD,0x03,0x39,0xC1,0xFF,0xFB,0xF9,0xF6,0xF4,0xF1,0xEF,0xEA,0xE7,0xE5,
+0xE2,0xDF,0xDD,0xDA,0xD8,0xD5,0xD2,0xCF,0xCC,0xC5,0xBE,0xB7,0xB0,0xA8,0xA0,0x98,
+0x8E,0x85,0x7B,0x72,0x69,0x5E,0x53,0x48,0x3E,0x35,0x2B,0x22,0x17,0x0D,0x09,0x07,
+0x05,0x01,0x00,0x26,0xF0,0x86,0x25,0x6E,0xB6,0xDD,0xF3,0xD8,0xCC,0x9B,0x00,0x01,
+0xBD,0x00,0x01,0xC2,0xC8,0x01,0xCC,0x08,0x25,0xD3,0x81,0x00,0x00,0x00,0x00,0x01,
+0x00,0x04,0x00,0x01,0x13,0x40,0x04,0x09,0x09,0x0B,0x0B,0x32,0x10,0x08,0x00,0x08,
+0x32,0x10,0x08,0x00,0x08,0x32,0x10,0x08,0x00,0x08,0x00,0x00,0x0A,0x08,0x7B,0x01,
+0xE9,0xC5,0x01,0xC6,0xF7,0x01,0xE9,0x00,0x01,0xE9,0xD4,0x01,0xC6,0x6E,0x01,0xE9,
+0x00,0x01,0xE9,0xEF,0x01,0xD3,0x0C,0x01,0xE9,0x00,0x01,0xBD,0x01,0x01,0xE9,0xC8,
+0x01,0xD3,0xA1,0x01,0xE9,0x00,0x01,0xBD,0x00,0x38,0xD5,0x18,0x18,0x19,0x18,0x18,
+0x20,0x18,0x18,0x18,0x10,0x10,0x18,0x18,0x00,0x00,0x18,0x18,0x01,0x01,0x18,0x18,
+0x28,0x28,0x18,0x18,0x18,0x18,0x18,0x2F,0x2F,0x30,0x30,0x31,0x31,0x35,0x35,0x36,
+0x36,0x37,0x37,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0xFC,0xFC,0x00,0x00,0xFC,
+0xFC,0x00,0x00,0x30,0xD6,0x18,0x18,0x19,0x18,0x18,0x20,0x19,0x18,0x18,0x10,0x10,
+0x18,0x18,0x00,0x00,0x18,0x18,0x01,0x01,0x18,0x18,0x28,0x28,0x18,0x18,0x18,0x18,
+0x18,0x2F,0x2F,0x30,0x30,0x31,0x31,0x35,0x35,0x36,0x36,0x37,0x37,0x18,0x18,0x18,
+0x18,0x18,0x18,0x18,0x18,0x18,0xD8,0xAA,0xAA,0xAA,0xAF,0xEA,0xAA,0xAA,0xAA,0xAA,
+0xAF,0xEA,0xAA,0xAA,0xAA,0xAB,0xAF,0xEF,0xAA,0xAA,0xAA,0xAA,0xAF,0xEA,0xAA,0x01,
+0xBD,0x01,0x0C,0xD8,0xAA,0xAA,0xAB,0xAF,0xEA,0xAA,0xAA,0xAA,0xAE,0xAF,0xEA,0xAA,
+0x01,0xBD,0x02,0x0C,0xD8,0xAA,0xAA,0xAA,0xAF,0xEA,0xAA,0xAA,0xAA,0xAA,0xAF,0xEA,
+0xAA,0x01,0xBD,0x03,0x18,0xD8,0xBA,0xAA,0xAA,0xAF,0xEA,0xAA,0xAA,0xAA,0xAA,0xAF,
+0xEA,0xAA,0xBA,0xAA,0xAA,0xAF,0xEA,0xAA,0xAA,0xAA,0xAA,0xAF,0xEA,0xAA,0x01,0xBD,
+0x00,0x01,0xE9,0xE4,0x02,0xE7,0x17,0x69,0x01,0xE9,0x00,0x19,0xE7,0x09,0x09,0x00,
+0x07,0xE8,0x00,0x26,0x00,0x07,0x00,0x00,0xE8,0x32,0x00,0xE9,0x0A,0x0A,0x00,0x00,
+0x00,0x01,0x01,0x00,0x12,0x04,0x01,0xBD,0x01,0x09,0xE7,0x02,0x00,0x01,0x20,0x01,
+0x18,0x08,0xA8,0x09,0x01,0xBD,0x02,0x03,0xE7,0x20,0x20,0x00,0x01,0xBD,0x03,0x06,
+0xE7,0x00,0xDC,0x11,0x70,0x00,0x20,0x01,0xE9,0xC9,0x06,0xE7,0x2A,0xCE,0x02,0x70,
+0x01,0x04,0x01,0xE9,0x00,0x01,0xBD,0x00,0x01,0xD1,0x27,0x04,0xC9,0x04,0x0C,0x6D,
+0x01,0x00,0x35,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x30,0xC3,0x1B,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x08,0x78,0x56,0xE7,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x53,0x00,0x00,0x00,0x0C,0x2B,0xDF,0x15
diff --git a/drivers/input/touchscreen/hxchipset83112b/Kconfig b/drivers/input/touchscreen/hxchipset83112b/Kconfig
new file mode 100644
index 0000000..2efd9c3
--- /dev/null
+++ b/drivers/input/touchscreen/hxchipset83112b/Kconfig
@@ -0,0 +1,27 @@
+#
+# Himax Touchscreen driver configuration
+#
+
+config TOUCHSCREEN_HIMAX_I2C
+        tristate "HIMAX chipset i2c touchscreen"
+		depends on TOUCHSCREEN_HIMAX_CHIPSET
+		help
+		This enables support for HIMAX CHIPSET over I2C based touchscreens.
+
+config TOUCHSCREEN_HIMAX_DEBUG
+        tristate "HIMAX debug function"
+		depends on TOUCHSCREEN_HIMAX_I2C
+		help
+		This enables support for HIMAX debug function.
+
+config TOUCHSCREEN_HIMAX_ITO_TEST
+	tristate "HIMAX driver test over Dragon Board"
+	depends on TOUCHSCREEN_HIMAX_I2C
+	help
+	  This enables support for HIMAX driver test over Dragon Board.
+
+config HMX_DB
+	tristate "HIMAX driver test over Dragon Board"
+	depends on TOUCHSCREEN_HIMAX_I2C
+	help
+	  This enables support for HIMAX driver test over Dragon Board.
diff --git a/drivers/input/touchscreen/hxchipset83112b/Makefile b/drivers/input/touchscreen/hxchipset83112b/Makefile
new file mode 100644
index 0000000..522907a
--- /dev/null
+++ b/drivers/input/touchscreen/hxchipset83112b/Makefile
@@ -0,0 +1,4 @@
+# Makefile for the Himax touchscreen drivers.
+
+obj-$(CONFIG_TOUCHSCREEN_HIMAX_I2C)   	+= himax_platform.o himax_ic.o himax_common.o himax_debug.o
+obj-$(CONFIG_TOUCHSCREEN_HIMAX_ITO_TEST)   	+= 	himax_ito_test.o
\ No newline at end of file
diff --git a/drivers/input/touchscreen/hxchipset83112b/himax_common.c b/drivers/input/touchscreen/hxchipset83112b/himax_common.c
new file mode 100644
index 0000000..24dd7a2b
--- /dev/null
+++ b/drivers/input/touchscreen/hxchipset83112b/himax_common.c
@@ -0,0 +1,2464 @@
+/* Himax Android Driver Sample Code for common functions
+*
+* Copyright (C) 2017 Himax Corporation.
+*
+* This software is licensed under the terms of the GNU General Public
+* License version 2, as published by the Free Software Foundation, and
+* may be copied, distributed, and modified under those terms.
+*
+* This program is distributed in the hope that 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.
+*
+*/
+
+#include "himax_common.h"
+#include "himax_ic.h"
+
+#define SUPPORT_FINGER_DATA_CHECKSUM 0x0F
+#define TS_WAKE_LOCK_TIMEOUT		(2 * HZ)
+#define FRAME_COUNT 5
+
+#ifdef HX_RST_PIN_FUNC
+extern void himax_ic_reset(uint8_t loadconfig,uint8_t int_off);
+#endif
+/*[Arima_8901][jinjia] Upgrade himax fw CID0804_D02_C14 for 0.9mm CG performance 20190903 begin*/
+/*[Arima_8901][TracyChui]Add usb plug detect function and updated FW CID0804_D02_C13 20190816 start */
+/*[Arima_8901][jinjia] Upgrade himax fw CID0804_D02_C12 for 0.9mm CG performance 20190812 begin*/
+/*[Arima_8901][allen_yu] Upgrade himax fw CID0802_D02_C06 for DQA low ground issue 20190530 begin*/
+/*[Arima_8901][allen_yu] Modify to edge trigger and upgrade fw to CID0802_D02_C05 20190322 begin*/
+/*[Arima_8901][allen_yu] Upgrade himax fw CID0802_D02_C04 20190116 begin*/
+/*[Arima_8901][allen_yu] Upgrade himax fw CID0802_D02_C03 20181226 begin*/
+/*[Arima_8901][allen_yu] Modify to edge trigger and upgrade himax fw CIDFF00_D01_C02 20181128 begin*/
+/*[Arima_8901][allen_yu] Upgrade himax first fw CIDFF00_D01_C01 20181122 begin*/
+#if defined(HX_AUTO_UPDATE_FW)
+
+unsigned char i_CTPM_FW_HX83112A[]=
+{
+	0
+//#include "Yandex_Truly_Arima_CIDFF04_D02_C04_20180801.i"
+};
+unsigned char i_CTPM_FW_HX83112B[]=
+{
+#include "FP_DJN_Arima_CID0804_D02_C14_20190903.i"
+};
+
+#endif
+/*[Arima_8901][allen_yu] 20181122 end*/
+/*[Arima_8901][allen_yu] 20181128 end*/
+/*[Arima_8901][allen_yu] 20181226 end*/
+/*[Arima_8901][allen_yu] 20190116 end*/
+/*[Arima_8901][allen_yu] 20190322 end*/
+/*[Arima_8901][allen_yu] 20190530 end*/
+/*[Arima_8901][jinjia] 20190812 end*/
+/*[Arima_8901][TracyChui] 20190816 end */
+/*[Arima_8901][jinjia] 20190812 end*/
+
+/*[Arima_8710][allen_yu] Solve the report point issue 20180619 begin*/
+static void himax_release_all_finger(void);
+/*[Arima_8710][allen_yu] 20180619 end*/
+
+#if defined(HX_SMART_WAKEUP)||defined(HX_HIGH_SENSE)||defined(HX_USB_DETECT_GLOBAL)
+extern void himax_resend_cmd_func(bool suspended);
+/*[Arima_7947][allen_yu] Change the rule of upgrading fw 20171221 begin*/
+extern void himax_rst_cmd_recovery_func(bool suspended);
+/*[Arima_7947][allen_yu] 20171221 end*/
+#endif
+
+/*[Arima_8710][allen_yu] Fix TP I2C error in suspend 20180423 begin*/
+#ifdef HX_RST_PIN_FUNC
+int reset_flag =1;
+#endif
+/*[Arima_8710][allen_yu] 20180423 end*/
+
+struct himax_ts_data *private_ts;
+struct himax_ic_data *ic_data;
+struct himax_report_data *hx_touch_data;
+
+static int		HX_TOUCH_INFO_POINT_CNT   = 0;
+
+unsigned long	FW_VER_MAJ_FLASH_ADDR;
+unsigned long 	FW_VER_MIN_FLASH_ADDR;
+unsigned long 	CFG_VER_MAJ_FLASH_ADDR;
+unsigned long 	CFG_VER_MIN_FLASH_ADDR;
+unsigned long 	CID_VER_MAJ_FLASH_ADDR;
+unsigned long 	CID_VER_MIN_FLASH_ADDR;
+//unsigned long	PANEL_VERSION_ADDR;
+
+unsigned long 	FW_VER_MAJ_FLASH_LENG;
+unsigned long 	FW_VER_MIN_FLASH_LENG;
+unsigned long 	CFG_VER_MAJ_FLASH_LENG;
+unsigned long 	CFG_VER_MIN_FLASH_LENG;
+unsigned long 	CID_VER_MAJ_FLASH_LENG;
+unsigned long 	CID_VER_MIN_FLASH_LENG;
+//unsigned long	PANEL_VERSION_LENG;
+
+unsigned long 	FW_CFG_VER_FLASH_ADDR;
+
+#ifdef HX_AUTO_UPDATE_FW
+int g_i_FW_VER = 0;
+int g_i_CFG_VER = 0;
+int g_i_CID_MAJ = 0; //GUEST ID
+int g_i_CID_MIN = 0; //VER for GUEST
+#endif
+
+unsigned char	IC_TYPE = 11;
+unsigned char	IC_CHECKSUM = 0;
+
+#ifdef HX_ESD_RECOVERY
+u8 HX_ESD_RESET_ACTIVATE = 0;
+int hx_EB_event_flag = 0;
+int hx_EC_event_flag = 0;
+int hx_ED_event_flag = 0;
+extern int g_zero_event_count;
+#endif
+u8 	HX_HW_RESET_ACTIVATE = 0;
+
+#if defined(CONFIG_TOUCHSCREEN_HIMAX_DEBUG)
+extern int himax_touch_proc_init(void);
+extern void himax_touch_proc_deinit(void);
+//PROC-START
+#ifdef  HX_TP_PROC_FLASH_DUMP
+extern void	himax_ts_flash_func(void);
+extern void setFlashBuffer(void);
+extern bool getFlashDumpGoing(void);
+extern uint8_t getSysOperation(void);
+extern void setSysOperation(uint8_t operation);
+#endif
+/*[Arima_7947][allen_yu] Change the rule of upgrading fw 20171221 begin*/
+#ifdef HX_TP_PROC_GUEST_INFO
+extern int himax_guest_info_get_status(void);
+extern void himax_guest_info_set_status(int setting);
+extern int himax_read_project_id(void);
+#endif
+/*[Arima_7947][allen_yu] 20171221 end*/
+
+#if defined(HX_PLATFOME_DEFINE_KEY)
+extern void	himax_platform_key(void);
+#endif
+
+#ifdef HX_TP_PROC_DIAG
+extern void	himax_ts_diag_func(void);
+
+extern int16_t *getMutualBuffer(void);
+extern int16_t *getMutualNewBuffer(void);
+extern int16_t *getMutualOldBuffer(void);
+extern int16_t *getSelfBuffer(void);
+extern uint8_t getXChannel(void);
+extern uint8_t getYChannel(void);
+extern uint8_t getDiagCommand(void);
+extern void setXChannel(uint8_t x);
+extern void setYChannel(uint8_t y);
+extern void setMutualBuffer(void);
+extern void setMutualNewBuffer(void);
+extern void setMutualOldBuffer(void);
+extern uint8_t diag_coor[128];
+extern int himax_set_diag_cmd(struct himax_ic_data *ic_data,struct himax_report_data *hx_touch_data);
+#ifdef HX_TP_PROC_2T2R
+extern bool Is_2T2R;
+extern int16_t *getMutualBuffer_2(void);
+extern uint8_t getXChannel_2(void);
+extern uint8_t getYChannel_2(void);
+extern void setXChannel_2(uint8_t x);
+extern void setYChannel_2(uint8_t y);
+extern void setMutualBuffer_2(void);
+#endif
+#endif
+//PROC-END
+#endif
+
+extern int himax_parse_dt(struct himax_ts_data *ts,
+                          struct himax_i2c_platform_data *pdata);
+extern bool himax_calculateChecksum(struct i2c_client *client, bool change_iref);
+#if defined(HX_EN_SEL_BUTTON) || defined(HX_EN_MUT_BUTTON)
+static uint8_t 	vk_press = 0x00;
+#endif
+static uint8_t 	AA_press = 0x00;
+static uint8_t 	EN_NoiseFilter = 0x00;
+static uint8_t	Last_EN_NoiseFilter = 0x00;
+static int	hx_point_num	= 0;																	// for himax_ts_work_func use
+static int	p_point_num	= 0xFFFF;
+static int	tpd_key	   	= 0x00;
+static int	tpd_key_old	= 0x00;
+static int	probe_fail_flag	= 0;
+/*[Arima_8901][TracyChui]Add usb plug detect function and updated FW CID0804_D02_C13 20190816 start */
+#ifdef HX_USB_DETECT_GLOBAL
+//bool USB_detect_flag = 0;
+#endif
+/*[Arima_8901][TracyChui] 20190816 end */
+
+#if defined(CONFIG_FB)
+int fb_notifier_callback(struct notifier_block *self,
+                         unsigned long event, void *data);
+#elif defined(CONFIG_HAS_EARLYSUSPEND)
+static void himax_ts_early_suspend(struct early_suspend *h);
+static void himax_ts_late_resume(struct early_suspend *h);
+#endif
+
+#if defined(HX_PALM_REPORT)
+int himax_palm_detect(uint8_t *buf);
+#endif
+
+#ifdef HX_GESTURE_TRACK
+static int gest_pt_cnt;
+static int gest_pt_x[GEST_PT_MAX_NUM];
+static int gest_pt_y[GEST_PT_MAX_NUM];
+static int gest_start_x=0,gest_start_y=0,gest_end_x=0,gest_end_y=0;
+static int gest_width=0,gest_height=0,gest_mid_x=0,gest_mid_y=0;
+static int gn_gesture_coor[16];
+#endif
+
+#ifdef HX_CHIP_STATUS_MONITOR
+struct chip_monitor_data *g_chip_monitor_data;
+#endif
+
+#if defined(HX_TP_PROC_SELF_TEST)|| defined(CONFIG_TOUCHSCREEN_HIMAX_ITO_TEST)
+extern int g_self_test_entered;
+#endif
+
+int himax_report_data_init(void);
+extern int himax_get_touch_data_size(void);
+//void himax_HW_reset(uint8_t loadconfig,uint8_t int_off);
+extern void himax_log_touch_data(uint8_t *buf,struct himax_report_data *hx_touch_data);
+extern void himax_log_touch_event(int x,int y,int w,int loop_i,uint8_t EN_NoiseFilter,int touched);
+extern void himax_log_touch_event_detail(struct himax_ts_data *ts,int x,int y,int w,int loop_i,uint8_t EN_NoiseFilter,int touched,uint16_t old_finger);
+
+#if defined(HX_ESD_RECOVERY)
+extern void himax_esd_ic_reset(void);
+extern int himax_ic_esd_recovery(int hx_esd_event,int hx_zero_event,int length);
+#endif
+
+extern int himax_dev_set(struct himax_ts_data *ts);
+extern int himax_input_register_device(struct input_dev *input_dev);
+
+
+#ifdef HX_ZERO_FLASH
+extern void himax_0f_operation(struct work_struct *work);
+#endif
+
+int himax_input_register(struct himax_ts_data *ts)
+{
+    int ret = 0;
+
+    ret = himax_dev_set(ts);
+    if(ret < 0)
+        goto input_device_fail;
+
+    set_bit(EV_SYN, ts->input_dev->evbit);
+    set_bit(EV_ABS, ts->input_dev->evbit);
+    set_bit(EV_KEY, ts->input_dev->evbit);
+
+#if defined(HX_EN_SEL_BUTTON) || defined(HX_EN_MUT_BUTTON)
+#if defined(HX_PLATFOME_DEFINE_KEY)
+    himax_platform_key();
+#else
+    set_bit(KEY_BACK, ts->input_dev->keybit);
+    set_bit(KEY_HOME, ts->input_dev->keybit);
+    set_bit(KEY_MENU, ts->input_dev->keybit);
+    set_bit(KEY_SEARCH, ts->input_dev->keybit);
+    set_bit(KEY_APP_SWITCH, ts->input_dev->keybit);
+#endif
+#endif
+
+#if defined(HX_SMART_WAKEUP) || defined(HX_PALM_REPORT)
+    set_bit(KEY_POWER, ts->input_dev->keybit);
+#endif
+#if defined(HX_SMART_WAKEUP)
+    set_bit(KEY_CUST_01, ts->input_dev->keybit);
+    set_bit(KEY_CUST_02, ts->input_dev->keybit);
+    set_bit(KEY_CUST_03, ts->input_dev->keybit);
+    set_bit(KEY_CUST_04, ts->input_dev->keybit);
+    set_bit(KEY_CUST_05, ts->input_dev->keybit);
+    set_bit(KEY_CUST_06, ts->input_dev->keybit);
+    set_bit(KEY_CUST_07, ts->input_dev->keybit);
+    set_bit(KEY_CUST_08, ts->input_dev->keybit);
+    set_bit(KEY_CUST_09, ts->input_dev->keybit);
+    set_bit(KEY_CUST_10, ts->input_dev->keybit);
+    set_bit(KEY_CUST_11, ts->input_dev->keybit);
+    set_bit(KEY_CUST_12, ts->input_dev->keybit);
+    set_bit(KEY_CUST_13, ts->input_dev->keybit);
+    set_bit(KEY_CUST_14, ts->input_dev->keybit);
+    set_bit(KEY_CUST_15, ts->input_dev->keybit);
+#endif
+    set_bit(BTN_TOUCH, ts->input_dev->keybit);
+    set_bit(INPUT_PROP_DIRECT, ts->input_dev->propbit);
+
+#ifdef	HX_PROTOCOL_A
+    //ts->input_dev->mtsize = ts->nFinger_support;
+    input_set_abs_params(ts->input_dev, ABS_MT_TRACKING_ID,
+                         0, 3, 0, 0);
+#else
+    set_bit(MT_TOOL_FINGER, ts->input_dev->keybit);
+#if defined(HX_PROTOCOL_B_3PA)
+    input_mt_init_slots(ts->input_dev, ts->nFinger_support,0);
+#else
+    input_mt_init_slots(ts->input_dev, ts->nFinger_support);
+#endif
+#endif
+
+    I("input_set_abs_params: mix_x %d, max_x %d, min_y %d, max_y %d\n",
+      ts->pdata->abs_x_min, ts->pdata->abs_x_max, ts->pdata->abs_y_min, ts->pdata->abs_y_max);
+
+    input_set_abs_params(ts->input_dev, ABS_MT_POSITION_X,ts->pdata->abs_x_min, ts->pdata->abs_x_max, ts->pdata->abs_x_fuzz, 0);
+    input_set_abs_params(ts->input_dev, ABS_MT_POSITION_Y,ts->pdata->abs_y_min, ts->pdata->abs_y_max, ts->pdata->abs_y_fuzz, 0);
+    input_set_abs_params(ts->input_dev, ABS_MT_TOUCH_MAJOR,ts->pdata->abs_pressure_min, ts->pdata->abs_pressure_max, ts->pdata->abs_pressure_fuzz, 0);
+#ifndef	HX_PROTOCOL_A
+    input_set_abs_params(ts->input_dev, ABS_MT_PRESSURE,ts->pdata->abs_pressure_min, ts->pdata->abs_pressure_max, ts->pdata->abs_pressure_fuzz, 0);
+    input_set_abs_params(ts->input_dev, ABS_MT_WIDTH_MAJOR,ts->pdata->abs_width_min, ts->pdata->abs_width_max, ts->pdata->abs_pressure_fuzz, 0);
+#endif
+//	input_set_abs_params(ts->input_dev, ABS_MT_AMPLITUDE, 0, ((ts->pdata->abs_pressure_max << 16) | ts->pdata->abs_width_max), 0, 0);
+//	input_set_abs_params(ts->input_dev, ABS_MT_POSITION, 0, (BIT(31) | (ts->pdata->abs_x_max << 16) | ts->pdata->abs_y_max), 0, 0);
+
+
+    if(himax_input_register_device(ts->input_dev) == 0)
+        return NO_ERR;
+    else
+        ret = INPUT_REGISTER_FAIL;
+
+input_device_fail:
+    I("%s, input device register fail!\n",__func__);
+    return ret;
+}
+
+static void calcDataSize(uint8_t finger_num)
+{
+    struct himax_ts_data *ts_data = private_ts;
+    ts_data->coord_data_size = 4 * finger_num;
+    ts_data->area_data_size = ((finger_num / 4) + (finger_num % 4 ? 1 : 0)) * 4;
+    //printk("allenyu : area_data_size = %d \n",ts_data->area_data_size );
+    ts_data->coordInfoSize = ts_data->coord_data_size + ts_data->area_data_size + 4;
+    ts_data->raw_data_frame_size = 128 - ts_data->coord_data_size - ts_data->area_data_size - 4 - 4 - 1;
+    if(ts_data->raw_data_frame_size == 0)
+    {
+        E("%s: could NOT calculate! \n", __func__);
+        return;
+    }
+    ts_data->raw_data_nframes  = ((uint32_t)ts_data->x_channel * ts_data->y_channel +
+                                  ts_data->x_channel + ts_data->y_channel) / ts_data->raw_data_frame_size +
+                                 (((uint32_t)ts_data->x_channel * ts_data->y_channel +
+                                   ts_data->x_channel + ts_data->y_channel) % ts_data->raw_data_frame_size)? 1 : 0;
+    I("%s: coord_data_size: %d, area_data_size:%d, raw_data_frame_size:%d, raw_data_nframes:%d", __func__, ts_data->coord_data_size, ts_data->area_data_size, ts_data->raw_data_frame_size, ts_data->raw_data_nframes);
+}
+
+void calculate_point_number(void)
+{
+    HX_TOUCH_INFO_POINT_CNT = ic_data->HX_MAX_PT * 4 ;
+
+    if ( (ic_data->HX_MAX_PT % 4) == 0)
+        HX_TOUCH_INFO_POINT_CNT += (ic_data->HX_MAX_PT / 4) * 4 ;
+    else
+        HX_TOUCH_INFO_POINT_CNT += ((ic_data->HX_MAX_PT / 4) +1) * 4 ;
+}
+
+#ifdef HX_AUTO_UPDATE_FW
+static int i_update_FW(void)
+{
+    int upgrade_times = 0;
+/*[Arima_8710][allen_yu] Dynamic detect Yandex LCM/TP 2nd source and add PCBA node 20180828 begin*/
+    //unsigned char* ImageBuffer = i_CTPM_FW;
+    //int fullFileLength = sizeof(i_CTPM_FW);
+	unsigned char* ImageBuffer = NULL;
+    int fullFileLength = 0;
+/*[Arima_8710][allen_yu] 20180828 end*/
+    uint8_t ret = 0, result = 0;
+
+/*[Arima_8710][allen_yu] Dynamic detect Yandex LCM/TP 2nd source and add PCBA node 20180828 begin*/
+if(IC_TYPE == HX_83112A_SERIES_PWON)
+		{
+			ImageBuffer = i_CTPM_FW_HX83112A;
+			fullFileLength = sizeof(i_CTPM_FW_HX83112A);
+		}
+	else/*HX_83112B_SERIES_PWON*/
+		{
+/*[Arima_8710][allen_yu] Modify the touch fw dynamic auto upgtade rule 20180830 begin*/
+			//printk("%s: (%d)No upgrade 2nd source fw\n", __func__, __LINE__);
+			//return false;
+			ImageBuffer = i_CTPM_FW_HX83112B;
+			fullFileLength = sizeof(i_CTPM_FW_HX83112B);
+/*[Arima_8710][allen_yu] 20180830 end*/
+		}
+/*[Arima_8710][allen_yu] 20180828 end*/
+    I("%s: i_fullFileLength = %d\n", __func__,fullFileLength);
+
+    himax_int_enable(private_ts->client->irq,0);
+update_retry:
+    if(fullFileLength == FW_SIZE_32k)
+    {
+        ret = fts_ctpm_fw_upgrade_with_sys_fs_32k(private_ts->client,ImageBuffer,fullFileLength,false);
+    }
+    else if(fullFileLength == FW_SIZE_60k)
+    {
+        ret = fts_ctpm_fw_upgrade_with_sys_fs_60k(private_ts->client,ImageBuffer,fullFileLength,false);
+    }
+    else if (fullFileLength == FW_SIZE_64k)
+    {
+        ret = fts_ctpm_fw_upgrade_with_sys_fs_64k(private_ts->client,ImageBuffer,fullFileLength,false);
+    }
+    else if (fullFileLength == FW_SIZE_124k)
+    {
+        ret = fts_ctpm_fw_upgrade_with_sys_fs_124k(private_ts->client,ImageBuffer,fullFileLength,false);
+    }
+    else if (fullFileLength == FW_SIZE_128k)
+    {
+        ret = fts_ctpm_fw_upgrade_with_sys_fs_128k(private_ts->client,ImageBuffer,fullFileLength,false);
+    }
+    if(ret == 0)
+    {
+        upgrade_times++;
+        E("%s: TP upgrade error, upgrade_times = %d\n", __func__, upgrade_times);
+        if(upgrade_times < 3)
+            goto update_retry;
+        else
+            result = -1;//upgrade fail
+    }
+    else
+    {
+        ic_data->vendor_fw_ver = g_i_FW_VER;
+        ic_data->vendor_config_ver = g_i_CFG_VER;
+        result = 1;//upgrade success
+        I("%s: TP upgrade OK\n", __func__);
+    }
+#ifdef HX_RST_PIN_FUNC
+    himax_ic_reset(true,false);
+#endif
+    himax_int_enable(private_ts->client->irq,1);
+    return result;
+}
+#endif
+
+int himax_loadSensorConfig(struct i2c_client *client, struct himax_i2c_platform_data *pdata)
+{
+
+    if (!client)
+    {
+        E("%s: Necessary parameters client are null!\n", __func__);
+        return -1;
+    }
+
+    I("%s: initialization complete\n", __func__);
+
+    return NO_ERR;
+}
+
+#ifdef HX_ESD_RECOVERY
+void himax_esd_hw_reset(void)
+{
+    I("START_Himax TP: ESD - Reset\n");
+#if defined(HX_TP_PROC_SELF_TEST) || defined(CONFIG_TOUCHSCREEN_HIMAX_ITO_TEST)
+    if (g_self_test_entered == 1)
+    {
+        I("In self test ,not  TP: ESD - Reset\n");
+        return;
+    }
+#endif
+    HX_ESD_RESET_ACTIVATE = 1;
+#if defined(HX_CHIP_STATUS_MONITOR)
+    g_chip_monitor_data->HX_CHIP_POLLING_COUNT=0;
+#endif
+    himax_esd_ic_reset();
+
+    I("END_Himax TP: ESD - Reset\n");
+}
+#endif
+
+#ifdef HX_CHIP_STATUS_MONITOR
+static void himax_chip_monitor_function(struct work_struct *work) //for ESD solution
+{
+    int ret=0;
+
+    I(" %s: POLLING_COUNT=%x, STATUS=%x\n", __func__,g_chip_monitor_data->HX_CHIP_POLLING_COUNT,ret);
+    if(g_chip_monitor_data->HX_CHIP_POLLING_COUNT >= (g_chip_monitor_data->HX_POLLING_TIMES-1))//POLLING TIME
+    {
+        g_chip_monitor_data->HX_ON_HAND_SHAKING=1;
+        ret = himax_hand_shaking(private_ts->client); //0:Running, 1:Stop, 2:I2C Fail
+        g_chip_monitor_data->HX_ON_HAND_SHAKING=0;
+        if(ret == 2)
+        {
+            I(" %s: I2C Fail \n", __func__);
+            himax_esd_hw_reset();
+        }
+        else if(ret == 1)
+        {
+            I(" %s: MCU Stop \n", __func__);
+            himax_esd_hw_reset();
+        }
+        g_chip_monitor_data->HX_CHIP_POLLING_COUNT = 0;//clear polling counter
+    }
+    else
+        g_chip_monitor_data->HX_CHIP_POLLING_COUNT++;
+
+
+    g_chip_monitor_data->HX_CHIP_MONITOR_EN = 1;
+    queue_delayed_work(private_ts->himax_chip_monitor_wq, &private_ts->himax_chip_monitor, g_chip_monitor_data->HX_POLLING_TIMER*HZ);
+
+    return;
+}
+#endif
+
+#ifdef HX_SMART_WAKEUP
+#ifdef HX_GESTURE_TRACK
+static void gest_pt_log_coordinate(int rx, int tx)
+{
+    //driver report x y with range 0 - 255 , we scale it up to x/y pixel
+    gest_pt_x[gest_pt_cnt] = rx*(ic_data->HX_X_RES)/255;
+    gest_pt_y[gest_pt_cnt] = tx*(ic_data->HX_Y_RES)/255;
+}
+#endif
+static int himax_parse_wake_event(struct himax_ts_data *ts)
+{
+    uint8_t *buf;
+#ifdef HX_GESTURE_TRACK
+    int tmp_max_x=0x00,tmp_min_x=0xFFFF,tmp_max_y=0x00,tmp_min_y=0xFFFF;
+    int gest_len;
+#endif
+    int i=0, check_FC = 0, gesture_flag = 0;
+
+    buf = kzalloc(hx_touch_data->event_size*sizeof(uint8_t),GFP_KERNEL);
+    memcpy(buf,hx_touch_data->hx_event_buf,hx_touch_data->event_size);
+
+    for(i=0; i<GEST_PTLG_ID_LEN; i++)
+    {
+        if (check_FC==0)
+        {
+            if((buf[0]!=0x00)&&((buf[0]<=0x0F)||(buf[0]==0x80)))
+            {
+                check_FC = 1;
+                gesture_flag = buf[i];
+            }
+            else
+            {
+                check_FC = 0;
+                I("ID START at %x , value = %x skip the event\n", i, buf[i]);
+                break;
+            }
+        }
+        else
+        {
+            if(buf[i]!=gesture_flag)
+            {
+                check_FC = 0;
+                I("ID NOT the same %x != %x So STOP parse event\n", buf[i], gesture_flag);
+                break;
+            }
+        }
+
+        I("0x%2.2X ", buf[i]);
+        if (i % 8 == 7)
+            I("\n");
+    }
+    I("Himax gesture_flag= %x\n",gesture_flag );
+    I("Himax check_FC is %d\n", check_FC);
+
+    if (check_FC == 0)
+        return 0;
+    if(buf[GEST_PTLG_ID_LEN] != GEST_PTLG_HDR_ID1 ||
+            buf[GEST_PTLG_ID_LEN+1] != GEST_PTLG_HDR_ID2)
+        return 0;
+
+#ifdef HX_GESTURE_TRACK
+    if(buf[GEST_PTLG_ID_LEN] == GEST_PTLG_HDR_ID1 &&
+            buf[GEST_PTLG_ID_LEN+1] == GEST_PTLG_HDR_ID2)
+    {
+        gest_len = buf[GEST_PTLG_ID_LEN+2];
+
+        I("gest_len = %d ",gest_len);
+
+        i = 0;
+        gest_pt_cnt = 0;
+        I("gest doornidate start \n %s",__func__);
+        while(i<(gest_len+1)/2)
+        {
+            gest_pt_log_coordinate(buf[GEST_PTLG_ID_LEN+4+i*2],buf[GEST_PTLG_ID_LEN+4+i*2+1]);
+            i++;
+
+            I("gest_pt_x[%d]=%d \n",gest_pt_cnt,gest_pt_x[gest_pt_cnt]);
+            I("gest_pt_y[%d]=%d \n",gest_pt_cnt,gest_pt_y[gest_pt_cnt]);
+
+            gest_pt_cnt +=1;
+        }
+        if(gest_pt_cnt)
+        {
+            for(i=0; i<gest_pt_cnt; i++)
+            {
+                if(tmp_max_x<gest_pt_x[i])
+                    tmp_max_x=gest_pt_x[i];
+                if(tmp_min_x>gest_pt_x[i])
+                    tmp_min_x=gest_pt_x[i];
+                if(tmp_max_y<gest_pt_y[i])
+                    tmp_max_y=gest_pt_y[i];
+                if(tmp_min_y>gest_pt_y[i])
+                    tmp_min_y=gest_pt_y[i];
+            }
+            I("gest_point x_min= %d, x_max= %d, y_min= %d, y_max= %d\n",tmp_min_x,tmp_max_x,tmp_min_y,tmp_max_y);
+            gest_start_x=gest_pt_x[0];
+            gn_gesture_coor[0] = gest_start_x;
+            gest_start_y=gest_pt_y[0];
+            gn_gesture_coor[1] = gest_start_y;
+            gest_end_x=gest_pt_x[gest_pt_cnt-1];
+            gn_gesture_coor[2] = gest_end_x;
+            gest_end_y=gest_pt_y[gest_pt_cnt-1];
+            gn_gesture_coor[3] = gest_end_y;
+            gest_width = tmp_max_x - tmp_min_x;
+            gn_gesture_coor[4] = gest_width;
+            gest_height = tmp_max_y - tmp_min_y;
+            gn_gesture_coor[5] = gest_height;
+            gest_mid_x = (tmp_max_x + tmp_min_x)/2;
+            gn_gesture_coor[6] = gest_mid_x;
+            gest_mid_y = (tmp_max_y + tmp_min_y)/2;
+            gn_gesture_coor[7] = gest_mid_y;
+            gn_gesture_coor[8] = gest_mid_x;//gest_up_x
+            gn_gesture_coor[9] = gest_mid_y-gest_height/2;//gest_up_y
+            gn_gesture_coor[10] = gest_mid_x;//gest_down_x
+            gn_gesture_coor[11] = gest_mid_y+gest_height/2;	//gest_down_y
+            gn_gesture_coor[12] = gest_mid_x-gest_width/2;	//gest_left_x
+            gn_gesture_coor[13] = gest_mid_y;	//gest_left_y
+            gn_gesture_coor[14] = gest_mid_x+gest_width/2;	//gest_right_x
+            gn_gesture_coor[15] = gest_mid_y; //gest_right_y
+
+        }
+
+    }
+#endif
+    if(gesture_flag != 0x80)
+    {
+        if(!ts->gesture_cust_en[gesture_flag])
+        {
+            I("%s NOT report customer key \n ",__func__);
+            return 0;//NOT report customer key
+        }
+    }
+    else
+    {
+        if(!ts->gesture_cust_en[0])
+        {
+            I("%s NOT report report double click \n",__func__);
+            return 0;//NOT report power key
+        }
+    }
+
+    if(gesture_flag == 0x80)
+        return EV_GESTURE_PWR;
+    else
+        return gesture_flag;
+}
+
+void himax_wake_check_func(void)
+{
+    int ret_event = 0, KEY_EVENT = 0;
+
+    ret_event = himax_parse_wake_event(private_ts);
+    switch (ret_event)
+    {
+    case EV_GESTURE_PWR:
+        KEY_EVENT = KEY_POWER;
+        break;
+    case EV_GESTURE_01:
+        KEY_EVENT = KEY_CUST_01;
+        break;
+    case EV_GESTURE_02:
+        KEY_EVENT = KEY_CUST_02;
+        break;
+    case EV_GESTURE_03:
+        KEY_EVENT = KEY_CUST_03;
+        break;
+    case EV_GESTURE_04:
+        KEY_EVENT = KEY_CUST_04;
+        break;
+    case EV_GESTURE_05:
+        KEY_EVENT = KEY_CUST_05;
+        break;
+    case EV_GESTURE_06:
+        KEY_EVENT = KEY_CUST_06;
+        break;
+    case EV_GESTURE_07:
+        KEY_EVENT = KEY_CUST_07;
+        break;
+    case EV_GESTURE_08:
+        KEY_EVENT = KEY_CUST_08;
+        break;
+    case EV_GESTURE_09:
+        KEY_EVENT = KEY_CUST_09;
+        break;
+    case EV_GESTURE_10:
+        KEY_EVENT = KEY_CUST_10;
+        break;
+    case EV_GESTURE_11:
+        KEY_EVENT = KEY_CUST_11;
+        break;
+    case EV_GESTURE_12:
+        KEY_EVENT = KEY_CUST_12;
+        break;
+    case EV_GESTURE_13:
+        KEY_EVENT = KEY_CUST_13;
+        break;
+    case EV_GESTURE_14:
+        KEY_EVENT = KEY_CUST_14;
+        break;
+    case EV_GESTURE_15:
+        KEY_EVENT = KEY_CUST_15;
+        break;
+    }
+    if(ret_event)
+    {
+        I(" %s SMART WAKEUP KEY event %x press\n",__func__,KEY_EVENT);
+        input_report_key(private_ts->input_dev, KEY_EVENT, 1);
+        input_sync(private_ts->input_dev);
+        //msleep(100);
+        I(" %s SMART WAKEUP KEY event %x release\n",__func__,KEY_EVENT);
+        input_report_key(private_ts->input_dev, KEY_EVENT, 0);
+        input_sync(private_ts->input_dev);
+        FAKE_POWER_KEY_SEND=true;
+#ifdef HX_GESTURE_TRACK
+        I("gest_start_x= %d, gest_start_y= %d, gest_end_x= %d, gest_end_y= %d\n",gest_start_x,gest_start_y,
+          gest_end_x,gest_end_y);
+        I("gest_width= %d, gest_height= %d, gest_mid_x= %d, gest_mid_y= %d\n",gest_width,gest_height,
+          gest_mid_x,gest_mid_y);
+        I("gest_up_x= %d, gest_up_y= %d, gest_down_x= %d, gest_down_y= %d\n",gn_gesture_coor[8],gn_gesture_coor[9],
+          gn_gesture_coor[10],gn_gesture_coor[11]);
+        I("gest_left_x= %d, gest_left_y= %d, gest_right_x= %d, gest_right_y= %d\n",gn_gesture_coor[12],gn_gesture_coor[13],
+          gn_gesture_coor[14],gn_gesture_coor[15]);
+#endif
+    }
+}
+
+#endif
+
+#if defined(HX_EN_SEL_BUTTON) || defined(HX_EN_MUT_BUTTON)
+static void himax_ts_button_func(int tp_key_index,struct himax_ts_data *ts)
+{
+    uint16_t x_position = 0, y_position = 0;
+    if ( tp_key_index != 0x00)
+    {
+        I("virtual key index =%x\n",tp_key_index);
+        if ( tp_key_index == 0x01)
+        {
+            vk_press = 1;
+            I("back key pressed\n");
+            if (ts->pdata->virtual_key)
+            {
+                if (ts->button[0].index)
+                {
+                    x_position = (ts->button[0].x_range_min + ts->button[0].x_range_max) / 2;
+                    y_position = (ts->button[0].y_range_min + ts->button[0].y_range_max) / 2;
+                }
+#ifdef	HX_PROTOCOL_A
+                input_report_abs(ts->input_dev, ABS_MT_TOUCH_MAJOR,
+                                 100);
+                input_report_abs(ts->input_dev, ABS_MT_TRACKING_ID, 0);
+
+                input_report_abs(ts->input_dev, ABS_MT_POSITION_X,
+                                 x_position);
+                input_report_abs(ts->input_dev, ABS_MT_POSITION_Y,
+                                 y_position);
+                input_mt_sync(ts->input_dev);
+#else
+                input_mt_slot(ts->input_dev, 0);
+                input_mt_report_slot_state(ts->input_dev, MT_TOOL_FINGER,
+                                           1);
+                input_report_abs(ts->input_dev, ABS_MT_TOUCH_MAJOR,
+                                 100);
+                input_report_abs(ts->input_dev, ABS_MT_WIDTH_MAJOR,
+                                 100);
+                input_report_abs(ts->input_dev, ABS_MT_PRESSURE,
+                                 100);
+                input_report_abs(ts->input_dev, ABS_MT_POSITION_X,
+                                 x_position);
+                input_report_abs(ts->input_dev, ABS_MT_POSITION_Y,
+                                 y_position);
+#endif
+            }
+            else
+                input_report_key(ts->input_dev, KEY_BACK, 1);
+        }
+        else if ( tp_key_index == 0x02)
+        {
+            vk_press = 1;
+            I("home key pressed\n");
+            if (ts->pdata->virtual_key)
+            {
+                if (ts->button[1].index)
+                {
+                    x_position = (ts->button[1].x_range_min + ts->button[1].x_range_max) / 2;
+                    y_position = (ts->button[1].y_range_min + ts->button[1].y_range_max) / 2;
+                }
+#ifdef	HX_PROTOCOL_A
+                input_report_abs(ts->input_dev, ABS_MT_TRACKING_ID, 0);
+                input_report_abs(ts->input_dev, ABS_MT_TOUCH_MAJOR,
+                                 100);
+
+                input_report_abs(ts->input_dev, ABS_MT_POSITION_X,
+                                 x_position);
+                input_report_abs(ts->input_dev, ABS_MT_POSITION_Y,
+                                 y_position);
+                input_mt_sync(ts->input_dev);
+#else
+                input_mt_slot(ts->input_dev, 0);
+                input_mt_report_slot_state(ts->input_dev, MT_TOOL_FINGER,
+                                           1);
+                input_report_abs(ts->input_dev, ABS_MT_TOUCH_MAJOR,
+                                 100);
+                input_report_abs(ts->input_dev, ABS_MT_WIDTH_MAJOR,
+                                 100);
+                input_report_abs(ts->input_dev, ABS_MT_PRESSURE,
+                                 100);
+                input_report_abs(ts->input_dev, ABS_MT_POSITION_X,
+                                 x_position);
+                input_report_abs(ts->input_dev, ABS_MT_POSITION_Y,
+                                 y_position);
+#endif
+            }
+            else
+                input_report_key(ts->input_dev, KEY_HOME, 1);
+        }
+        else if ( tp_key_index == 0x04)
+        {
+            vk_press = 1;
+            I("APP_switch key pressed\n");
+            if (ts->pdata->virtual_key)
+            {
+                if (ts->button[2].index)
+                {
+                    x_position = (ts->button[2].x_range_min + ts->button[2].x_range_max) / 2;
+                    y_position = (ts->button[2].y_range_min + ts->button[2].y_range_max) / 2;
+                }
+#ifdef	HX_PROTOCOL_A
+                input_report_abs(ts->input_dev, ABS_MT_TRACKING_ID, 0);
+
+                input_report_abs(ts->input_dev, ABS_MT_PRESSURE,
+                                 100);
+                input_report_abs(ts->input_dev, ABS_MT_POSITION_X,
+                                 x_position);
+                input_report_abs(ts->input_dev, ABS_MT_POSITION_Y,
+                                 y_position);
+                input_mt_sync(ts->input_dev);
+#else
+                input_mt_slot(ts->input_dev, 0);
+                input_mt_report_slot_state(ts->input_dev, MT_TOOL_FINGER,
+                                           1);
+                input_report_abs(ts->input_dev, ABS_MT_TOUCH_MAJOR,
+                                 100);
+                input_report_abs(ts->input_dev, ABS_MT_WIDTH_MAJOR,
+                                 100);
+                input_report_abs(ts->input_dev, ABS_MT_PRESSURE,
+                                 100);
+                input_report_abs(ts->input_dev, ABS_MT_POSITION_X,
+                                 x_position);
+                input_report_abs(ts->input_dev, ABS_MT_POSITION_Y,
+                                 y_position);
+#endif
+            }
+            else
+                input_report_key(ts->input_dev, KEY_APP_SWITCH, 1);
+        }
+        input_sync(ts->input_dev);
+    }
+    else/*tp_key_index =0x00*/
+    {
+        I("virtual key released\n");
+        vk_press = 0;
+#ifndef	HX_PROTOCOL_A
+        input_mt_slot(ts->input_dev, 0);
+        input_mt_report_slot_state(ts->input_dev, MT_TOOL_FINGER, 0);
+#else
+        input_mt_sync(ts->input_dev);
+#endif
+        input_report_key(ts->input_dev, KEY_BACK, 0);
+        input_report_key(ts->input_dev, KEY_HOME, 0);
+        input_report_key(ts->input_dev, KEY_APP_SWITCH, 0);
+#ifndef	HX_PROTOCOL_A
+        input_sync(ts->input_dev);
+#endif
+    }
+}
+
+void himax_report_key(struct himax_ts_data *ts)
+{
+    if(hx_point_num!=0)
+    {
+        //Touch KEY
+        if ((tpd_key_old != 0x00)&&(tpd_key == 0x00))
+        {
+            //temp_x[0] = 0xFFFF;
+            //temp_y[0] = 0xFFFF;
+            //temp_x[1] = 0xFFFF;
+            //temp_y[1] = 0xFFFF;
+            hx_touch_data->finger_on = 0;
+#ifdef HX_PROTOCOL_A
+            input_report_key(ts->input_dev, BTN_TOUCH, hx_touch_data->finger_on);
+#endif
+            himax_ts_button_func(tpd_key,ts);
+        }
+#ifndef HX_PROTOCOL_A
+        input_report_key(ts->input_dev, BTN_TOUCH, hx_touch_data->finger_on);
+#endif
+        input_sync(ts->input_dev);
+    }
+    else
+    {
+        if (tpd_key != 0x00)
+        {
+            hx_touch_data->finger_on = 1;
+#ifdef HX_PROTOCOL_A
+            input_report_key(ts->input_dev, BTN_TOUCH, hx_touch_data->finger_on);
+#endif
+            himax_ts_button_func(tpd_key,ts);
+
+        }
+        else if ((tpd_key_old != 0x00)&&(tpd_key == 0x00))
+        {
+            hx_touch_data->finger_on = 0;
+#ifdef HX_PROTOCOL_A
+            input_report_key(ts->input_dev, BTN_TOUCH, hx_touch_data->finger_on);
+#endif
+            himax_ts_button_func(tpd_key,ts);
+
+        }
+#ifndef HX_PROTOCOL_A
+        input_report_key(ts->input_dev, BTN_TOUCH, hx_touch_data->finger_on);
+#endif
+        input_sync(ts->input_dev);
+    }
+    tpd_key_old = tpd_key;
+    Last_EN_NoiseFilter = EN_NoiseFilter;
+}
+#endif
+
+int himax_report_data_init(void)
+{
+    if(hx_touch_data->hx_coord_buf!=NULL)
+    {
+        kfree(hx_touch_data->hx_coord_buf);
+    }
+#ifdef HX_TP_PROC_DIAG
+    if(hx_touch_data->hx_rawdata_buf!=NULL)
+    {
+        kfree(hx_touch_data->hx_rawdata_buf);
+    }
+#endif
+
+#if defined(HX_SMART_WAKEUP)
+    hx_touch_data->event_size = himax_get_touch_data_size();
+    if(hx_touch_data->hx_event_buf!=NULL)
+    {
+        kfree(hx_touch_data->hx_event_buf);
+    }
+#endif
+
+    hx_touch_data->touch_all_size = himax_get_touch_data_size();
+    hx_touch_data->raw_cnt_max = ic_data->HX_MAX_PT/4;
+    hx_touch_data->raw_cnt_rmd = ic_data->HX_MAX_PT%4;
+
+    if (hx_touch_data->raw_cnt_rmd != 0x00) //more than 4 fingers
+    {
+        hx_touch_data->rawdata_size = cal_data_len(hx_touch_data->raw_cnt_rmd, ic_data->HX_MAX_PT, hx_touch_data->raw_cnt_max);
+        hx_touch_data->touch_info_size = (ic_data->HX_MAX_PT+hx_touch_data->raw_cnt_max+2)*4;
+    }
+    else //less than 4 fingers
+    {
+        hx_touch_data->rawdata_size = cal_data_len(hx_touch_data->raw_cnt_rmd, ic_data->HX_MAX_PT, hx_touch_data->raw_cnt_max);
+        hx_touch_data->touch_info_size = (ic_data->HX_MAX_PT+hx_touch_data->raw_cnt_max+1)*4;
+    }
+    if((ic_data->HX_TX_NUM * ic_data->HX_RX_NUM + ic_data->HX_TX_NUM + ic_data->HX_RX_NUM) % hx_touch_data->rawdata_size == 0)
+        hx_touch_data->rawdata_frame_size = (ic_data->HX_TX_NUM * ic_data->HX_RX_NUM + ic_data->HX_TX_NUM + ic_data->HX_RX_NUM) / hx_touch_data->rawdata_size;
+    else
+        hx_touch_data->rawdata_frame_size = (ic_data->HX_TX_NUM * ic_data->HX_RX_NUM + ic_data->HX_TX_NUM + ic_data->HX_RX_NUM) / hx_touch_data->rawdata_size + 1;
+    I("%s: rawdata_frame_size = %d ",__func__,hx_touch_data->rawdata_frame_size);
+    I("%s: ic_data->HX_MAX_PT:%d,hx_raw_cnt_max:%d,hx_raw_cnt_rmd:%d,g_hx_rawdata_size:%d,hx_touch_data->touch_info_size:%d\n",__func__,ic_data->HX_MAX_PT,hx_touch_data->raw_cnt_max,hx_touch_data->raw_cnt_rmd,hx_touch_data->rawdata_size,hx_touch_data->touch_info_size);
+
+    hx_touch_data->hx_coord_buf = kzalloc(sizeof(uint8_t)*(hx_touch_data->touch_info_size),GFP_KERNEL);
+    if(hx_touch_data->hx_coord_buf == NULL)
+        goto mem_alloc_fail;
+#ifdef HX_TP_PROC_DIAG
+    hx_touch_data->hx_rawdata_buf = kzalloc(sizeof(uint8_t)*(hx_touch_data->touch_all_size - hx_touch_data->touch_info_size),GFP_KERNEL);
+    if(hx_touch_data->hx_rawdata_buf == NULL)
+        goto mem_alloc_fail;
+#endif
+
+#if defined(HX_SMART_WAKEUP)
+    hx_touch_data->hx_event_buf = kzalloc(sizeof(uint8_t)*(hx_touch_data->event_size),GFP_KERNEL);
+    if(hx_touch_data->hx_event_buf == NULL)
+        goto mem_alloc_fail;
+#endif
+
+    return NO_ERR;
+
+mem_alloc_fail:
+    kfree(hx_touch_data->hx_coord_buf);
+#if defined(HX_TP_PROC_DIAG)
+    kfree(hx_touch_data->hx_rawdata_buf);
+#endif
+#if defined(HX_SMART_WAKEUP)
+    kfree(hx_touch_data->hx_event_buf);
+#endif
+
+    I("%s: Memory allocate fail!\n",__func__);
+    return MEM_ALLOC_FAIL;
+
+}
+
+
+#if defined(HX_USB_DETECT_GLOBAL)
+/*[Arima_8901][TracyChui]Add usb plug detect function and updated FW CID0804_D02_C13 20190816 start */
+void himax_read_file_func(char *pFilePath, u8 *pBuf, u16 nLength)
+{
+    struct file *pFile = NULL;
+    mm_segment_t old_fs;
+    ssize_t nReadBytes = 0;
+
+    old_fs = get_fs();
+    set_fs(get_ds());
+
+    pFile = filp_open(pFilePath, O_RDONLY, 0);
+
+    if (IS_ERR(pFile)) {
+        printk ( "[Tracy]Open file failed: %s\n", pFilePath);
+        return;
+    }
+
+    pFile->f_op->llseek(pFile, 0, SEEK_SET);
+    nReadBytes = pFile->f_op->read(pFile, pBuf, nLength, &pFile->f_pos);
+
+    set_fs(old_fs);
+
+    filp_close(pFile, NULL);
+
+}
+
+void himax_cable_detect_func(bool force_renew)
+{
+    struct himax_ts_data *ts;
+    u32 connect_status = 0;
+    u8 szChargerStatus[20] = {0};
+
+	ts = private_ts;
+
+	if (ts->suspended==false)
+	{
+		himax_read_file_func(POWER_SUPPLY_BATTERY_STATUS_PATCH, szChargerStatus, 20);
+			if (strstr(szChargerStatus, "Charging") != NULL || strstr(szChargerStatus, "Full") != NULL || strstr(szChargerStatus, "Fully charged") != NULL) // Charging
+				{
+					connect_status=1;
+				}
+			else
+				{
+					connect_status=0;
+				}
+	}
+
+	if (ts->cable_config)
+	{
+		if (((!!connect_status) != ts->usb_connected) || force_renew)
+		{
+			if (!!connect_status)
+			{
+			ts->cable_config[1] = 0x01;
+			ts->usb_connected = 0x01;
+			}
+			else
+			{
+			ts->cable_config[1] = 0x00;
+			ts->usb_connected = 0x00;
+			}
+		himax_usb_detect_set(ts->client,ts->cable_config);
+		printk("%s: Cable status change: 0x%2.2X\n", __func__, ts->usb_connected);
+		}
+	}
+}
+/*[Arima_8901][TracyChui] 20190816 end */
+#endif
+
+
+void himax_report_points(struct himax_ts_data *ts)
+{
+    int x = 0;
+    int y = 0;
+    int w = 0;
+    int base = 0;
+    int32_t	loop_i = 0;
+    uint16_t old_finger = 0;
+
+    //I("%s:Entering\n",__func__);
+
+    /* finger on/press */
+    if (hx_point_num != 0 )
+    {
+        old_finger = ts->pre_finger_mask;
+        ts->pre_finger_mask = 0;
+        hx_touch_data->finger_num = hx_touch_data->hx_coord_buf[ts->coordInfoSize - 4] & 0x0F;
+        hx_touch_data->finger_on = 1;
+        AA_press = 1;
+        for (loop_i = 0; loop_i < ts->nFinger_support; loop_i++)
+        {
+            base = loop_i * 4;
+            x = hx_touch_data->hx_coord_buf[base] << 8 | hx_touch_data->hx_coord_buf[base + 1];
+            y = (hx_touch_data->hx_coord_buf[base + 2] << 8 | hx_touch_data->hx_coord_buf[base + 3]);
+            w = hx_touch_data->hx_coord_buf[(ts->nFinger_support * 4) + loop_i];
+            //x = ic_data->HX_X_RES - x;
+            //y = ic_data->HX_Y_RES - y;
+            //printk("allenyu:abs_x_max = %d \n",ts->pdata->abs_x_max);
+            //printk("allenyu:abs_y_max = %d \n",ts->pdata->abs_y_max);
+            if(x >= 0 && x <= ts->pdata->abs_x_max && y >= 0 && y <= ts->pdata->abs_y_max)
+            {
+/*[Arima_8710][allen_yu] close touch driver log 20180411 begin*/
+                //printk("allenyu_010\n");
+/*[Arima_8710][allen_yu] 20180411 end*/
+                hx_touch_data->finger_num--;
+                if ((ts->debug_log_level & BIT(3)) > 0)
+                {
+                    himax_log_touch_event_detail(ts,x,y,w,loop_i,EN_NoiseFilter,HX_FINGER_ON,old_finger);
+                }
+#ifndef	HX_PROTOCOL_A
+
+                input_mt_slot(ts->input_dev, loop_i);
+#endif
+                input_report_key(ts->input_dev, BTN_TOUCH, hx_touch_data->finger_on);
+                input_report_abs(ts->input_dev, ABS_MT_TOUCH_MAJOR, w);
+                input_report_abs(ts->input_dev, ABS_MT_TRACKING_ID, loop_i);
+#ifndef	HX_PROTOCOL_A
+                input_report_abs(ts->input_dev, ABS_MT_WIDTH_MAJOR, w);
+                input_report_abs(ts->input_dev, ABS_MT_PRESSURE, w);
+#endif
+                input_report_abs(ts->input_dev, ABS_MT_POSITION_X, x);
+                input_report_abs(ts->input_dev, ABS_MT_POSITION_Y, y);
+
+#ifndef	HX_PROTOCOL_A
+                ts->last_slot = loop_i;
+                input_mt_report_slot_state(ts->input_dev, MT_TOOL_FINGER, 1);
+#else
+                input_mt_sync(ts->input_dev);
+#endif
+
+                if (!ts->first_pressed)
+                {
+                    ts->first_pressed = 1;
+                    I("S1@%d, %d\n", x, y);
+                }
+
+                ts->pre_finger_data[loop_i][0] = x;
+                ts->pre_finger_data[loop_i][1] = y;
+                if (ts->debug_log_level & BIT(1))
+                    himax_log_touch_event(x, y, w,loop_i,EN_NoiseFilter,HX_FINGER_ON);
+
+                ts->pre_finger_mask = ts->pre_finger_mask + (1 << loop_i);
+            }
+            /* report coordinates */
+            else
+            {
+                //printk("allenyu_020\n");
+#ifndef	HX_PROTOCOL_A
+                input_mt_slot(ts->input_dev, loop_i);
+                input_mt_report_slot_state(ts->input_dev, MT_TOOL_FINGER, 0);
+#endif
+
+                if (loop_i == 0 && ts->first_pressed == 1)
+                {
+                    ts->first_pressed = 2;
+                    I("E1@%d, %d\n",
+                      ts->pre_finger_data[0][0], ts->pre_finger_data[0][1]);
+                }
+                if ((ts->debug_log_level & BIT(3)) > 0)
+                {
+                    himax_log_touch_event_detail(ts,x,y,w,loop_i,Last_EN_NoiseFilter,HX_FINGER_LEAVE,old_finger);
+                }
+            }
+        }
+#ifndef	HX_PROTOCOL_A
+        input_report_key(ts->input_dev, BTN_TOUCH, hx_touch_data->finger_on);
+#endif
+        input_sync(ts->input_dev);
+    }
+
+    /* finger leave/release */
+    else
+    {
+#if defined(HX_PALM_REPORT)
+        if(himax_palm_detect(hx_touch_data->hx_coord_buf) == NO_ERR)
+        {
+            I(" %s HX_PALM_REPORT KEY power event press\n",__func__);
+            input_report_key(ts->input_dev, KEY_POWER, 1);
+            input_sync(ts->input_dev);
+            msleep(100);
+            I(" %s HX_PALM_REPORT KEY power event release\n",__func__);
+            input_report_key(ts->input_dev, KEY_POWER, 0);
+            input_sync(ts->input_dev);
+            return;
+        }
+#endif
+        hx_touch_data->finger_on = 0;
+        AA_press = 0;
+#ifdef	HX_PROTOCOL_A
+        input_mt_sync(ts->input_dev);
+#endif
+
+        for (loop_i = 0; loop_i < ts->nFinger_support; loop_i++)
+        {
+            if (((ts->pre_finger_mask >> loop_i) & 1) == 1)
+            {
+#ifndef	HX_PROTOCOL_A
+                input_mt_slot(ts->input_dev, loop_i);
+                input_mt_report_slot_state(ts->input_dev, MT_TOOL_FINGER, 0);
+#endif
+            }
+            if(ts->pre_finger_mask > 0 && (ts->debug_log_level & BIT(3)) > 0)
+            {
+                if (((ts->pre_finger_mask >> loop_i) & 1) == 1)
+                {
+                    if (ts->useScreenRes)
+                    {
+                        I("status:%X, Screen:F:%02d Up, X:%d, Y:%d, N:%d\n", 0, loop_i+1, ts->pre_finger_data[loop_i][0] * ts->widthFactor >> SHIFTBITS,
+                          ts->pre_finger_data[loop_i][1] * ts->heightFactor >> SHIFTBITS, Last_EN_NoiseFilter);
+                    }
+                    else
+                    {
+                        I("status:%X, Raw:F:%02d Up, X:%d, Y:%d, N:%d\n",0, loop_i+1, ts->pre_finger_data[loop_i][0],ts->pre_finger_data[loop_i][1], Last_EN_NoiseFilter);
+                    }
+                }
+            }
+        }
+        if (ts->pre_finger_mask > 0)
+        {
+            /*for (loop_i = 0; loop_i < ts->nFinger_support && (ts->debug_log_level & BIT(3)) > 0; loop_i++)
+            {
+		if (((ts->pre_finger_mask >> loop_i) & 1) == 1)
+		{
+			if (ts->useScreenRes)
+			{
+				I("status:%X, Screen:F:%02d Up, X:%d, Y:%d, N:%d\n", 0, loop_i+1, ts->pre_finger_data[loop_i][0] * ts->widthFactor >> SHIFTBITS,
+				ts->pre_finger_data[loop_i][1] * ts->heightFactor >> SHIFTBITS, Last_EN_NoiseFilter);
+			}
+			else
+			{
+				I("status:%X, Raw:F:%02d Up, X:%d, Y:%d, N:%d\n",0, loop_i+1, ts->pre_finger_data[loop_i][0],ts->pre_finger_data[loop_i][1], Last_EN_NoiseFilter);
+			}
+		}
+            }*/
+            ts->pre_finger_mask = 0;
+        }
+
+        if (ts->first_pressed == 1)
+        {
+            ts->first_pressed = 2;
+            I("E1@%d, %d\n",ts->pre_finger_data[0][0], ts->pre_finger_data[0][1]);
+        }
+
+        if (ts->debug_log_level & BIT(1))
+            himax_log_touch_event(x, y, w,loop_i,EN_NoiseFilter,HX_FINGER_LEAVE);
+
+        input_report_key(ts->input_dev, BTN_TOUCH, hx_touch_data->finger_on);
+        input_sync(ts->input_dev);
+    }
+    Last_EN_NoiseFilter = EN_NoiseFilter;
+
+    //I("%s:End\n",__func__);
+}
+
+int himax_touch_get(struct himax_ts_data *ts,uint8_t *buf,int ts_status)
+{
+    int ret = 0;
+
+    switch(ts_status)
+    {
+    /*normal*/
+    case 1:
+#ifdef HX_TP_PROC_DIAG
+        hx_touch_data->diag_cmd = getDiagCommand();
+
+        if((hx_touch_data->diag_cmd)
+                || (HX_HW_RESET_ACTIVATE)
+#ifdef HX_ESD_RECOVERY
+                || (HX_ESD_RESET_ACTIVATE)
+#endif
+          )
+        {
+            ret = himax_read_event_stack(ts->client, buf, 128);
+        }
+        else
+        {
+            ret = himax_read_event_stack(ts->client, buf, hx_touch_data->touch_info_size);
+        }
+
+        if (!ret)
+#else
+        if(!himax_read_event_stack(ts->client, buf, hx_touch_data->touch_info_size))
+#endif
+        {
+            E("%s: can't read data from chip!\n", __func__);
+            goto err_workqueue_out;
+        }
+        break;
+#if defined(HX_SMART_WAKEUP)
+    /*SMWP*/
+    case 2:
+        himax_burst_enable(ts->client, 0);
+        if(!himax_read_event_stack(ts->client,buf,hx_touch_data->event_size))
+        {
+            E("%s: can't read data from chip!\n", __func__);
+            goto err_workqueue_out;
+        }
+        break;
+#endif
+    default:
+        break;
+    }
+    return NO_ERR;
+
+err_workqueue_out:
+    return I2C_FAIL;
+
+}
+
+int himax_checksum_cal(struct himax_ts_data *ts,uint8_t *buf,int ts_status)
+{
+#if defined(HX_ESD_RECOVERY)
+    int hx_EB_event = 0;
+    int hx_EC_event = 0;
+    int hx_ED_event = 0;
+    int hx_esd_event = 0;
+    int hx_zero_event = 0;
+    int shaking_ret = 0;
+#endif
+    uint16_t check_sum_cal = 0;
+    int32_t	loop_i = 0;
+    int length = 0;
+
+    /* Normal */
+    if(ts_status == HX_REPORT_COORD)
+        length = hx_touch_data->touch_info_size;
+#if defined(HX_SMART_WAKEUP)
+    /* SMWP */
+    else if(ts_status == HX_REPORT_SMWP_EVENT)
+        length = (GEST_PTLG_ID_LEN+GEST_PTLG_HDR_LEN);
+#endif
+    else
+    {
+        I("%s, Neither Normal Nor SMWP error!\n",__func__);
+    }
+    //I("Now status=%d,length=%d\n",ts_status,length);
+    for (loop_i = 0; loop_i < length; loop_i++)
+    {
+        check_sum_cal+=buf[loop_i];
+
+        /*if (ts->debug_log_level & BIT(0))
+        {
+		I("P %d = 0x%2.2X ", loop_i, hx_touch_data->hx_coord_buf[loop_i]);
+		if (loop_i % 8 == 7)
+			I("\n");
+        }*/
+
+#ifdef HX_ESD_RECOVERY
+        if(ts_status == HX_REPORT_COORD)
+        {
+            /* case 1 ESD recovery flow */
+            if(buf[loop_i] == 0xEB)
+                hx_EB_event++;
+            else if(buf[loop_i] == 0xEC)
+                hx_EC_event++;
+            else if(buf[loop_i] == 0xED)
+                hx_ED_event++;
+            /* case 2 ESD recovery flow-Disable */
+            else if(buf[loop_i] == 0x00)
+                hx_zero_event++;
+            else
+            {
+                hx_EB_event = 0;
+                hx_EC_event = 0;
+                hx_ED_event = 0;
+                hx_zero_event = 0;
+				g_zero_event_count = 0;
+            }
+
+            if(hx_EB_event == length)
+            {
+                hx_esd_event = length;
+                hx_EB_event_flag ++;
+                I("[HIMAX TP MSG]: ESD event checked - ALL 0xEB.\n");
+            }
+            else if(hx_EC_event == length)
+            {
+                hx_esd_event = length;
+                hx_EC_event_flag ++;
+                I("[HIMAX TP MSG]: ESD event checked - ALL 0xEC.\n");
+            }
+            else if(hx_ED_event == length)
+            {
+                hx_esd_event = length;
+                hx_ED_event_flag ++;
+                I("[HIMAX TP MSG]: ESD event checked - ALL 0xED.\n");
+            }
+            else
+            {
+                hx_esd_event = 0;
+            }
+        }
+#endif
+    }
+
+    if(ts_status == HX_REPORT_COORD)
+    {
+#ifdef HX_ESD_RECOVERY
+        if ((hx_esd_event == length || hx_zero_event == length)
+                && (HX_HW_RESET_ACTIVATE == 0)
+                && (HX_ESD_RESET_ACTIVATE == 0)
+#if defined(HX_TP_PROC_DIAG)
+                && (hx_touch_data->diag_cmd == 0)
+#endif
+#if defined(HX_TP_PROC_SELF_TEST) || defined(CONFIG_TOUCHSCREEN_HIMAX_ITO_TEST)
+                && (g_self_test_entered == 0)
+#endif
+           )
+        {
+            shaking_ret = himax_ic_esd_recovery(hx_esd_event,hx_zero_event,length);
+            if(shaking_ret == CHECKSUM_FAIL)
+            {
+                himax_esd_hw_reset();
+                goto checksum_fail;
+            }
+            else if(shaking_ret == ERR_WORK_OUT)
+                goto err_workqueue_out;
+            else
+            {
+                //I("I2C running. Nothing to be done!\n");
+                goto workqueue_out;
+            }
+        }
+        else if (HX_ESD_RESET_ACTIVATE)
+        {
+#if defined(HX_SMART_WAKEUP)||defined(HX_HIGH_SENSE)||defined(HX_USB_DETECT_GLOBAL)
+#ifdef HX_RESUME_SEND_CMD
+/*[Arima_7947][allen_yu] Change the rule of upgrading fw 20171221 begin*/
+#if 0
+			himax_resend_cmd_func(ts->suspended);
+#endif
+			himax_rst_cmd_recovery_func(ts->suspended);
+/*[Arima_7947][allen_yu] 20171221 end*/
+#endif
+#endif
+            /* drop 1st interrupts after chip reset */
+            HX_ESD_RESET_ACTIVATE = 0;
+            I("[HX_ESD_RESET_ACTIVATE]:%s: Back from reset, ready to serve.\n", __func__);
+            goto checksum_fail;
+        }
+
+        else if (HX_HW_RESET_ACTIVATE)
+#else
+        if (HX_HW_RESET_ACTIVATE)
+#endif
+        {
+#if defined(HX_SMART_WAKEUP)||defined(HX_HIGH_SENSE)||defined(HX_USB_DETECT_GLOBAL)
+#ifdef HX_RESUME_SEND_CMD
+/*[Arima_7947][allen_yu] Change the rule of upgrading fw 20171221 begin*/
+#if 0
+			himax_resend_cmd_func(ts->suspended);
+#endif
+			himax_rst_cmd_recovery_func(ts->suspended);
+/*[Arima_7947][allen_yu] 20171221 end*/
+#endif
+#endif
+            /* drop 1st interrupts after chip reset */
+            HX_HW_RESET_ACTIVATE = 0;
+            I("[HX_HW_RESET_ACTIVATE]:%s: Back from reset, ready to serve.\n", __func__);
+            goto ready_to_serve;
+        }
+    }
+
+    if ((check_sum_cal % 0x100 != 0) )
+    {
+        I("[HIMAX TP MSG] checksum fail : check_sum_cal: 0x%02X\n", check_sum_cal);
+        goto checksum_fail;
+    }
+
+    /* I("%s:End\n",__func__); */
+    return NO_ERR;
+
+ready_to_serve:
+    return READY_TO_SERVE;
+checksum_fail:
+    return CHECKSUM_FAIL;
+#ifdef HX_ESD_RECOVERY
+err_workqueue_out:
+    return ERR_WORK_OUT;
+workqueue_out:
+    return WORK_OUT;
+#endif
+}
+
+int himax_ts_work_status(struct himax_ts_data *ts)
+{
+    /* 1: normal, 2:SMWP */
+    int result = HX_REPORT_COORD;
+    uint8_t diag_cmd = 0;
+
+#ifdef HX_TP_PROC_DIAG
+    diag_cmd = getDiagCommand();
+#endif
+
+#ifdef HX_SMART_WAKEUP
+    if (atomic_read(&ts->suspend_mode)&&(!FAKE_POWER_KEY_SEND)&&(ts->SMWP_enable)&&(!diag_cmd))
+    {
+        result = HX_REPORT_SMWP_EVENT;
+    }
+#endif
+    /* I("Now Status is %d\n",result); */
+    return result;
+}
+
+void himax_assign_touch_data(uint8_t *buf,int ts_status)
+{
+    uint8_t hx_state_info_pos = hx_touch_data->touch_info_size - 3;
+
+    if(ts_status == HX_REPORT_COORD)
+    {
+        memcpy(hx_touch_data->hx_coord_buf,&buf[0],hx_touch_data->touch_info_size);
+        if(buf[hx_state_info_pos] != 0xFF && buf[hx_state_info_pos + 1] != 0xFF )
+            memcpy(hx_touch_data->hx_state_info,&buf[hx_state_info_pos],2);
+        else
+            memset(hx_touch_data->hx_state_info, 0x00, sizeof(hx_touch_data->hx_state_info));
+    }
+#if defined(HX_SMART_WAKEUP)
+    else
+        memcpy(hx_touch_data->hx_event_buf,buf,hx_touch_data->event_size);
+#endif
+
+#ifdef HX_TP_PROC_DIAG
+    if((hx_touch_data->diag_cmd)
+            || (HX_HW_RESET_ACTIVATE)
+#ifdef HX_ESD_RECOVERY
+            || (HX_ESD_RESET_ACTIVATE)
+#endif
+      )
+    {
+        memcpy(hx_touch_data->hx_rawdata_buf,&buf[hx_touch_data->touch_info_size],hx_touch_data->touch_all_size - hx_touch_data->touch_info_size);
+    }
+#endif
+
+}
+
+void himax_coord_report(struct himax_ts_data *ts)
+{
+
+#if defined(HX_TP_PROC_DIAG)
+    //touch monitor raw data fetch
+    if(himax_set_diag_cmd(ic_data,hx_touch_data))
+        I("%s: coordinate dump fail and bypass with checksum err\n",__func__);
+#endif
+    EN_NoiseFilter = (hx_touch_data->hx_coord_buf[HX_TOUCH_INFO_POINT_CNT+2]>>3);
+    //I("EN_NoiseFilter=%d\n",EN_NoiseFilter);
+    EN_NoiseFilter = EN_NoiseFilter & 0x01;
+    //I("EN_NoiseFilter2=%d\n",EN_NoiseFilter);
+
+#if defined(HX_EN_SEL_BUTTON) || defined(HX_EN_MUT_BUTTON)
+    tpd_key = (hx_touch_data->hx_coord_buf[HX_TOUCH_INFO_POINT_CNT+2]>>4);
+    /* All (VK+AA)leave */
+    if (tpd_key == 0x0F)
+    {
+        tpd_key = 0x00;
+    }
+    //I("[DEBUG] tpd_key:  %x\r\n", tpd_key);
+#else
+    tpd_key = 0x00;
+#endif
+
+    p_point_num = hx_point_num;
+
+    if (hx_touch_data->hx_coord_buf[HX_TOUCH_INFO_POINT_CNT] == 0xff)
+        hx_point_num = 0;
+    else
+        hx_point_num= hx_touch_data->hx_coord_buf[HX_TOUCH_INFO_POINT_CNT] & 0x0f;
+
+    /* Touch Point information */
+    if(!tpd_key && !tpd_key_old)
+        himax_report_points(ts);
+#if defined(HX_EN_SEL_BUTTON) || defined(HX_EN_MUT_BUTTON)
+    else
+        himax_report_key(ts);
+#endif
+    /* I("%s:END\n",__func__); */
+
+}
+
+void himax_ts_work(struct himax_ts_data *ts)
+{
+    uint8_t hw_reset_check[2];
+    uint8_t buf[128];
+    int check_sum_cal = 0;
+    //int loop_i = 0;
+    int ts_status = 0;
+#ifdef HX_CHIP_STATUS_MONITOR
+    int j=0;
+#endif
+
+#if defined(HX_USB_DETECT_GLOBAL)
+    himax_cable_detect_func(false);
+#endif
+
+#if defined(HX_CHIP_STATUS_MONITOR)
+    g_chip_monitor_data->HX_CHIP_POLLING_COUNT=0;
+    if(g_chip_monitor_data->HX_ON_HAND_SHAKING)//chip on hand shaking,wait hand shaking
+    {
+        for(j=0; j<100; j++)
+        {
+            if(g_chip_monitor_data->HX_ON_HAND_SHAKING==0)//chip on hand shaking end
+            {
+                I("%s:HX_ON_HAND_SHAKING OK check %d times\n",__func__,j);
+                break;
+            }
+            else
+                msleep(1);
+        }
+        if(j==100)
+        {
+            E("%s:HX_ON_HAND_SHAKING timeout reject interrupt\n",__func__);
+            return;
+        }
+    }
+#endif
+
+    ts_status = himax_ts_work_status(ts);
+    if(ts_status > HX_REPORT_SMWP_EVENT || ts_status < HX_REPORT_COORD)
+        goto neither_normal_nor_smwp;
+
+    memset(buf, 0x00, sizeof(buf));
+    memset(hw_reset_check, 0x00, sizeof(hw_reset_check));
+
+    //I("New Method for ts_work\n");
+
+    if(himax_touch_get(ts,buf,ts_status))
+        goto err_workqueue_out;
+
+    if (ts->debug_log_level & BIT(0))
+    {
+
+        himax_log_touch_data(buf,hx_touch_data);
+
+    }
+
+    check_sum_cal = himax_checksum_cal(ts,buf,ts_status);
+    if (check_sum_cal == CHECKSUM_FAIL)
+        goto checksum_fail;
+    else if (check_sum_cal == READY_TO_SERVE)
+        goto ready_to_serve;
+    else if (check_sum_cal == ERR_WORK_OUT)
+        goto err_workqueue_out;
+    else if (check_sum_cal == WORK_OUT)
+        goto workqueue_out;
+    /* checksum calculate pass and assign data to global touch data*/
+    else
+        himax_assign_touch_data(buf,ts_status);
+
+    if(ts_status == HX_REPORT_COORD)
+        himax_coord_report(ts);
+#if defined(HX_SMART_WAKEUP)
+    else
+    {
+        //wake_lock_timeout(&ts->ts_SMWP_wake_lock, TS_WAKE_LOCK_TIMEOUT);
+		__pm_wakeup_event(&ts->ts_SMWP_wake_lock, TS_WAKE_LOCK_TIMEOUT);
+        msleep(200);
+        himax_wake_check_func();
+    }
+#endif
+
+checksum_fail:
+workqueue_out:
+ready_to_serve:
+neither_normal_nor_smwp:
+    return;
+
+err_workqueue_out:
+    I("%s: Now reset the Touch chip.\n", __func__);
+
+#ifdef HX_RST_PIN_FUNC
+    himax_ic_reset(false,true);
+#endif
+
+    goto workqueue_out;
+}
+enum hrtimer_restart himax_ts_timer_func(struct hrtimer *timer)
+{
+    struct himax_ts_data *ts;
+
+    ts = container_of(timer, struct himax_ts_data, timer);
+    queue_work(ts->himax_wq, &ts->work);
+    hrtimer_start(&ts->timer, ktime_set(0, 12500000), HRTIMER_MODE_REL);
+    return HRTIMER_NORESTART;
+}
+
+#if defined( HX_USB_DETECT_CALLBACK)
+static void himax_cable_tp_status_handler_func(int connect_status)
+{
+    struct himax_ts_data *ts;
+    I("Touch: cable change to %d\n", connect_status);
+    ts = private_ts;
+    if (ts->cable_config)
+    {
+        if (!atomic_read(&ts->suspend_mode))
+        {
+            if ((!!connect_status) != ts->usb_connected)
+            {
+                if (!!connect_status)
+                {
+                    ts->cable_config[1] = 0x01;
+                    ts->usb_connected = 0x01;
+                }
+                else
+                {
+                    ts->cable_config[1] = 0x00;
+                    ts->usb_connected = 0x00;
+                }
+
+                i2c_himax_master_write(ts->client, ts->cable_config,
+                                       sizeof(ts->cable_config), DEFAULT_RETRY_CNT);
+
+                I("%s: Cable status change: 0x%2.2X\n", __func__, ts->cable_config[1]);
+            }
+            else
+                I("%s: Cable status is the same as previous one, ignore.\n", __func__);
+        }
+        else
+        {
+            if (connect_status)
+                ts->usb_connected = 0x01;
+            else
+                ts->usb_connected = 0x00;
+            I("%s: Cable status remembered: 0x%2.2X\n", __func__, ts->usb_connected);
+        }
+    }
+}
+
+static struct t_cable_status_notifier himax_cable_status_handler =
+{
+    .name = "usb_tp_connected",
+    .func = himax_cable_tp_status_handler_func,
+};
+
+#endif
+
+#ifdef HX_AUTO_UPDATE_FW
+static void himax_update_register(struct work_struct *work)
+{
+    I(" %s in", __func__);
+#if defined(HX_CHIP_STATUS_MONITOR)
+    I("Cancel Chip monitor during auto-updating!\n");
+    g_chip_monitor_data->HX_CHIP_POLLING_COUNT = 0;
+    g_chip_monitor_data->HX_CHIP_MONITOR_EN = 0;
+    cancel_delayed_work_sync(&private_ts->himax_chip_monitor);
+#endif
+    if(i_update_FW() == false)
+        I("NOT Have new FW=NOT UPDATE=\n");
+    else
+        I("Have new FW=UPDATE=\n");
+#ifdef HX_CHIP_STATUS_MONITOR
+    I("Auto-updating over, now chip monitor working!\n");
+    g_chip_monitor_data->HX_CHIP_POLLING_COUNT = 0;
+    g_chip_monitor_data->HX_CHIP_MONITOR_EN = 1;
+    queue_delayed_work(private_ts->himax_chip_monitor_wq, &private_ts->himax_chip_monitor, g_chip_monitor_data->HX_POLLING_TIMER*HZ);
+#endif
+}
+#endif
+
+#ifdef CONFIG_FB
+static void himax_fb_register(struct work_struct *work)
+{
+    int ret = 0;
+    struct himax_ts_data *ts = container_of(work, struct himax_ts_data,
+                                            work_att.work);
+    I(" %s in\n", __func__);
+
+    ts->fb_notif.notifier_call = fb_notifier_callback;
+/*[Arima_7947][allen_yu] Modify Mutex initialization in callback function 20180305 begin*/
+//ParisKuong modified Mutex initialization +++
+    mutex_init(&ts->ops_lock);
+//ParisKuong modified Mutex initialization ---
+/*[Arima_7947][allen_yu] 20180305 end*/
+    ret = fb_register_client(&ts->fb_notif);
+    if (ret)
+        E(" Unable to register fb_notifier: %d\n", ret);
+}
+#endif
+
+#if defined(CONFIG_TOUCHSCREEN_HIMAX_ITO_TEST)
+static void himax_ito_test_work(struct work_struct *work)
+{
+    I(" %s in\n", __func__);
+    himax_ito_test();
+}
+#endif
+
+#ifdef  HX_TP_PROC_FLASH_DUMP
+static void himax_ts_flash_work_func(struct work_struct *work)
+{
+    himax_ts_flash_func();
+}
+#endif
+/*[Arima_7947][allen_yu] Change the rule of upgrading fw 20171221 begin*/
+#ifdef  HX_TP_PROC_GUEST_INFO
+static void himax_ts_guest_info_work_func(struct work_struct *work)
+{
+
+	himax_read_project_id();
+
+}
+#endif
+/*[Arima_7947][allen_yu] 20171221 end*/
+#ifdef  HX_TP_PROC_DIAG
+static void himax_ts_diag_work_func(struct work_struct *work)
+{
+    himax_ts_diag_func();
+}
+#endif
+
+/*[Arima_8710][allen_yu] Solve the report point issue 20180619 begin*/
+static void himax_release_all_finger(void)
+{
+    struct input_dev *input_dev = private_ts->input_dev;
+    u32 finger_count = 0;
+
+
+    I("%s: enter \n", __func__);
+    mutex_lock(&private_ts->report_mutex);
+    for (finger_count = 0; finger_count < private_ts->nFinger_support; finger_count++) {
+        input_mt_slot(input_dev, finger_count);
+        input_mt_report_slot_state(input_dev, MT_TOOL_FINGER, 0);
+    }
+    input_report_key(input_dev, BTN_TOUCH, 0);
+    input_sync(input_dev);
+    mutex_unlock(&private_ts->report_mutex);
+    I("%s: exit \n", __func__);
+}
+/*[Arima_8710][allen_yu] 20180619 end*/
+
+int himax_chip_common_probe(struct i2c_client *client, const struct i2c_device_id *id)
+{
+    int ret = 0, err = 0;
+    bool auto_update_flag = false;
+    struct himax_ts_data *ts;
+    struct himax_i2c_platform_data *pdata;
+
+	printk("himax probe enter \n");
+
+    //Check I2C functionality
+    if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C))
+    {
+        E("%s: i2c check functionality error\n", __func__);
+        err = -ENODEV;
+        goto err_check_functionality_failed;
+    }
+
+    ts = kzalloc(sizeof(struct himax_ts_data), GFP_KERNEL);
+    if (ts == NULL)
+    {
+        E("%s: allocate himax_ts_data failed\n", __func__);
+        err = -ENOMEM;
+        goto err_alloc_data_failed;
+    }
+
+    i2c_set_clientdata(client, ts);
+    ts->client = client;
+    ts->dev = &client->dev;
+    mutex_init(&ts->rw_lock);
+
+    pdata = kzalloc(sizeof(*pdata), GFP_KERNEL);
+    if (pdata == NULL)   /*Allocate Platform data space*/
+    {
+        err = -ENOMEM;
+        goto err_dt_platform_data_fail;
+    }
+
+    ic_data = kzalloc(sizeof(*ic_data), GFP_KERNEL);
+    if (ic_data == NULL)   /*Allocate IC data space*/
+    {
+        err = -ENOMEM;
+        goto err_dt_ic_data_fail;
+    }
+
+    /* allocate report data */
+    hx_touch_data = kzalloc(sizeof(struct himax_report_data),GFP_KERNEL);
+    if(hx_touch_data == NULL)
+    {
+        err = -ENOMEM;
+        goto err_alloc_data_failed;
+    }
+
+    if (himax_parse_dt(ts, pdata) < 0)
+    {
+        I(" pdata is NULL for DT\n");
+        goto err_alloc_dt_pdata_failed;
+    }
+
+#ifdef HX_RST_PIN_FUNC
+    ts->rst_gpio = pdata->gpio_reset;
+#endif
+
+    himax_gpio_power_config(ts->client, pdata);
+
+#ifndef CONFIG_OF
+    if (pdata->power)
+    {
+        ret = pdata->power(1);
+        if (ret < 0)
+        {
+            E("%s: power on failed\n", __func__);
+            goto err_power_failed;
+        }
+    }
+#endif
+    private_ts = ts;
+
+    if (himax_ic_package_check(ts->client) == false)
+    {
+        E("Himax chip doesn NOT EXIST");
+        goto err_ic_package_failed;
+    }
+
+    if (pdata->virtual_key)
+        ts->button = pdata->virtual_key;
+#ifdef  HX_TP_PROC_FLASH_DUMP
+    ts->flash_wq = create_singlethread_workqueue("himax_flash_wq");
+    if (!ts->flash_wq)
+    {
+        E("%s: create flash workqueue failed\n", __func__);
+        err = -ENOMEM;
+        goto err_create_wq_failed;
+    }
+
+    INIT_WORK(&ts->flash_work, himax_ts_flash_work_func);
+
+    setSysOperation(0);
+    setFlashBuffer();
+#endif
+/*[Arima_7947][allen_yu] Change the rule of upgrading fw 20171221 begin*/
+#ifdef  HX_TP_PROC_GUEST_INFO
+    ts->guest_info_wq = create_singlethread_workqueue("himax_guest_info_wq");
+    if (!ts->guest_info_wq)
+    {
+        E("%s: create guest info workqueue failed\n", __func__);
+        err = -ENOMEM;
+        goto err_create_guest_info_wq_failed;
+    }
+    INIT_WORK(&ts->guest_info_work, himax_ts_guest_info_work_func);
+#endif
+/*[Arima_7947][allen_yu] 20171221 end*/
+#ifdef  HX_TP_PROC_DIAG
+    ts->himax_diag_wq = create_singlethread_workqueue("himax_diag");
+    if (!ts->himax_diag_wq)
+    {
+        E("%s: create diag workqueue failed\n", __func__);
+        err = -ENOMEM;
+        goto err_create_wq_failed;
+    }
+    INIT_DELAYED_WORK(&ts->himax_diag_delay_wrok, himax_ts_diag_work_func);
+#endif
+
+    himax_read_FW_ver(client);
+    auto_update_flag = !himax_calculateChecksum(client, false);
+#ifdef HX_AUTO_UPDATE_FW
+/*[Arima_7947][allen_yu] Change the rule of upgrading fw 20171221 begin*/
+#if 0
+    auto_update_flag |= (( ic_data->vendor_fw_ver < g_i_FW_VER ) || ( ic_data->vendor_config_ver < g_i_CFG_VER ));
+    /* Not sure to do */
+    auto_update_flag |= ((ic_data->vendor_cid_maj_ver != g_i_CID_MAJ) || (ic_data->vendor_cid_min_ver < g_i_CID_MIN));
+/*[Arima_8710][allen_yu] Modify the touch fw dynamic auto upgtade rule 20180830 begin*/
+    auto_update_flag |= (( ic_data->vendor_touch_cfg_ver < ((g_i_CFG_VER >> 8)&0xff) ) || ( ic_data->vendor_display_cfg_ver < ((g_i_CFG_VER)&0xff) ));
+#endif
+
+/*wrong FW in IC cases need to force FW upgrade*/
+	if (IC_TYPE == HX_83112A_SERIES_PWON)
+		{
+            if (ic_data->vendor_hx_ic_id == 0x51)
+            {
+                if (( ic_data->vendor_touch_cfg_ver < ((g_i_CFG_VER >> 8)&0xff) ) || ( ic_data->vendor_display_cfg_ver < ((g_i_CFG_VER)&0xff) ))
+                {
+                    auto_update_flag |= true;
+                }
+                else
+                {
+                    auto_update_flag |= false;
+                }
+            }
+            else
+            {
+				auto_update_flag |= true;
+            }
+		}
+	else if (IC_TYPE == HX_83112B_SERIES_PWON)
+		{
+			if (ic_data->vendor_hx_ic_id == 0x52)
+			{
+                if (( ic_data->vendor_touch_cfg_ver < ((g_i_CFG_VER >> 8)&0xff) ) || ( ic_data->vendor_display_cfg_ver < ((g_i_CFG_VER)&0xff) ))
+                {
+                    auto_update_flag |= true;
+                }
+                else
+                {
+                    auto_update_flag |= false;
+                }
+			}
+            else
+            {
+				auto_update_flag |= true;
+            }
+		}
+/*[Arima_8710][allen_yu] 20180830 end*/
+/*[Arima_7947][allen_yu] 20171221 end*/
+    if (auto_update_flag)
+    {
+        ts->himax_update_wq = create_singlethread_workqueue("HMX_update_reuqest");
+        if (!ts->himax_update_wq)
+        {
+            E(" allocate syn_update_wq failed\n");
+            err = -ENOMEM;
+            goto err_update_wq_failed;
+        }
+        INIT_DELAYED_WORK(&ts->work_update, himax_update_register);
+        queue_delayed_work(ts->himax_update_wq, &ts->work_update, msecs_to_jiffies(2000));
+    }
+#endif
+
+#ifdef HX_ZERO_FLASH
+	ts->himax_0f_update_wq = create_singlethread_workqueue("HMX_0f_update_reuqest");
+	INIT_DELAYED_WORK(&ts->work_0f_update, himax_0f_operation);
+	queue_delayed_work(ts->himax_0f_update_wq, &ts->work_0f_update, msecs_to_jiffies(2000));
+#endif
+    //Himax Power On and Load Config
+    if (himax_loadSensorConfig(client, pdata))
+    {
+        E("%s: Load Sesnsor configuration failed, unload driver.\n", __func__);
+        goto err_detect_failed;
+    }
+    himax_power_on_init(client);
+
+    calculate_point_number();
+#ifdef HX_TP_PROC_DIAG
+    setXChannel(ic_data->HX_RX_NUM); // X channel
+    setYChannel(ic_data->HX_TX_NUM); // Y channel
+
+    setMutualBuffer();
+    setMutualNewBuffer();
+    setMutualOldBuffer();
+    if (getMutualBuffer() == NULL)
+    {
+        E("%s: mutual buffer allocate fail failed\n", __func__);
+        return -1;
+    }
+#ifdef HX_TP_PROC_2T2R
+    if(Is_2T2R)
+    {
+        setXChannel_2(ic_data->HX_RX_NUM_2); // X channel
+        setYChannel_2(ic_data->HX_TX_NUM_2); // Y channel
+
+        setMutualBuffer_2();
+
+        if (getMutualBuffer_2() == NULL)
+        {
+            E("%s: mutual buffer 2 allocate fail failed\n", __func__);
+            return -1;
+        }
+    }
+#endif
+#endif
+#ifdef CONFIG_OF
+    ts->power = pdata->power;
+#endif
+    ts->pdata = pdata;
+
+    ts->x_channel = ic_data->HX_RX_NUM;
+    ts->y_channel = ic_data->HX_TX_NUM;
+    ts->nFinger_support = ic_data->HX_MAX_PT;
+    //calculate the i2c data size
+    calcDataSize(ts->nFinger_support);
+    I("%s: calcDataSize complete\n", __func__);
+#ifdef CONFIG_OF
+    ts->pdata->abs_pressure_min        = 0;
+    ts->pdata->abs_pressure_max        = 200;
+    ts->pdata->abs_width_min           = 0;
+    ts->pdata->abs_width_max           = 200;
+    pdata->cable_config[0]             = 0xF0;
+    pdata->cable_config[1]             = 0x00;
+#endif
+    ts->suspended                      = false;
+#if defined( HX_USB_DETECT_CALLBACK)||defined(HX_USB_DETECT_GLOBAL)
+    ts->usb_connected = 0x00;
+    ts->cable_config = pdata->cable_config;
+#endif
+#ifdef	HX_PROTOCOL_A
+    ts->protocol_type = PROTOCOL_TYPE_A;
+#else
+    ts->protocol_type = PROTOCOL_TYPE_B;
+#endif
+    I("%s: Use Protocol Type %c\n", __func__,
+      ts->protocol_type == PROTOCOL_TYPE_A ? 'A' : 'B');
+
+    ret = himax_input_register(ts);
+    if (ret)
+    {
+        E("%s: Unable to register %s input device\n",
+          __func__, ts->input_dev->name);
+        goto err_input_register_device_failed;
+    }
+#ifdef CONFIG_FB
+    ts->himax_att_wq = create_singlethread_workqueue("HMX_ATT_reuqest");
+    if (!ts->himax_att_wq)
+    {
+        E(" allocate syn_att_wq failed\n");
+        err = -ENOMEM;
+        goto err_get_intr_bit_failed;
+    }
+    INIT_DELAYED_WORK(&ts->work_att, himax_fb_register);
+    queue_delayed_work(ts->himax_att_wq, &ts->work_att, msecs_to_jiffies(15000));
+#endif
+
+/*[Arima_8710][allen_yu] Solve the report point issue 20180619 begin*/
+	mutex_init(&ts->report_mutex);
+/*[Arima_8710][allen_yu] 20180619 end*/
+
+#if defined(HX_CHIP_STATUS_MONITOR)//for ESD solution
+    I("Enter HX_CHIP_STATUS_MONITOR! \n");
+
+    g_chip_monitor_data = kzalloc(sizeof(struct chip_monitor_data),GFP_KERNEL);
+    if(g_chip_monitor_data == NULL)
+    {
+        err = -ENOMEM;
+        goto err_alloc_monitor_data;
+    }
+    g_chip_monitor_data->HX_CHIP_POLLING_COUNT = 0;
+    g_chip_monitor_data->HX_POLLING_TIMER	= 5;//unit:sec
+    g_chip_monitor_data->HX_POLLING_TIMES	= 2;//ex:5(timer)x2(times)=10sec(polling time)
+    g_chip_monitor_data->HX_ON_HAND_SHAKING = 0;//
+    g_chip_monitor_data->HX_CHIP_MONITOR_EN = 1;
+
+    ts->himax_chip_monitor_wq = create_singlethread_workqueue("himax_chip_monitor_wq");
+    if (!ts->himax_chip_monitor_wq)
+    {
+        E(" %s: create workqueue failed\n", __func__);
+        err = -ENOMEM;
+        goto err_create_chip_monitor_wq_failed;
+    }
+    g_chip_monitor_data->HX_CHIP_MONITOR_EN = 1;
+
+    INIT_DELAYED_WORK(&ts->himax_chip_monitor, himax_chip_monitor_function);
+
+    queue_delayed_work(ts->himax_chip_monitor_wq, &ts->himax_chip_monitor, g_chip_monitor_data->HX_POLLING_TIMER*HZ);
+
+#endif
+
+#ifdef HX_SMART_WAKEUP
+    ts->SMWP_enable=0;
+    //wake_lock_init(&ts->ts_SMWP_wake_lock, WAKE_LOCK_SUSPEND, HIMAX_common_NAME);
+	wakeup_source_init(&ts->ts_SMWP_wake_lock, HIMAX_common_NAME);
+#endif
+#ifdef HX_HIGH_SENSE
+    ts->HSEN_enable=0;
+#endif
+
+#if defined(CONFIG_TOUCHSCREEN_HIMAX_ITO_TEST)
+    ts->ito_test_wq = create_singlethread_workqueue("himax_ito_test_wq");
+    if (!ts->ito_test_wq)
+    {
+        E("%s: ito test workqueue failed\n", __func__);
+        err = -ENOMEM;
+        goto err_ito_test_wq_failed;
+    }
+
+    INIT_WORK(&ts->ito_test_work, himax_ito_test_work);
+#endif
+
+    //touch data init
+    err=himax_report_data_init();
+    if(err)
+        goto err_report_data_init_failed;
+
+#if defined(CONFIG_TOUCHSCREEN_HIMAX_DEBUG)
+    himax_touch_proc_init();
+#endif
+
+#if defined( HX_USB_DETECT_CALLBACK)
+    if (ts->cable_config)
+        cable_detect_register_notifier(&himax_cable_status_handler);
+#endif
+
+    err = himax_ts_register_interrupt(ts->client);
+    if (err)
+        goto err_register_interrupt_failed;
+
+#if defined(HX_AUTO_UPDATE_FW) || defined(HX_ZERO_FLASH)
+    if (auto_update_flag)
+    {
+        himax_int_enable(client->irq,0);
+    }
+#endif
+
+    return 0;
+
+err_register_interrupt_failed:
+err_report_data_init_failed:
+
+#if defined(CONFIG_TOUCHSCREEN_HIMAX_ITO_TEST)
+err_ito_test_wq_failed:
+#endif
+#ifdef HX_SMART_WAKEUP
+    //wake_lock_destroy(&ts->ts_SMWP_wake_lock);
+	wakeup_source_trash(&ts->ts_SMWP_wake_lock);
+#endif
+#ifdef  HX_CHIP_STATUS_MONITOR
+    g_chip_monitor_data->HX_CHIP_MONITOR_EN = 0;
+    cancel_delayed_work_sync(&ts->himax_chip_monitor);
+    destroy_workqueue(ts->himax_chip_monitor_wq);
+err_create_chip_monitor_wq_failed:
+err_alloc_monitor_data:
+    kfree(g_chip_monitor_data);
+#endif
+#ifdef CONFIG_FB
+err_get_intr_bit_failed:
+#endif
+err_input_register_device_failed:
+    input_free_device(ts->input_dev);
+err_detect_failed:
+#ifdef HX_AUTO_UPDATE_FW
+err_update_wq_failed:
+#endif
+/*[Arima_7947][allen_yu] Change the rule of upgrading fw 20171221 begin*/
+#ifdef  HX_TP_PROC_GUEST_INFO
+err_create_guest_info_wq_failed:
+#endif
+/*[Arima_7947][allen_yu] 20171221 end*/
+#ifdef  HX_TP_PROC_FLASH_DUMP
+err_create_wq_failed:
+#endif
+err_ic_package_failed:
+
+    if (gpio_is_valid(pdata->gpio_irq))
+        gpio_free(pdata->gpio_irq);
+#ifdef HX_RST_PIN_FUNC
+    if (gpio_is_valid(pdata->gpio_reset))
+        gpio_free(pdata->gpio_reset);
+#endif
+
+err_alloc_dt_pdata_failed:
+#ifndef CONFIG_OF
+err_power_failed:
+#endif
+
+    kfree(ic_data);
+
+err_dt_ic_data_fail:
+    kfree(pdata);
+
+err_dt_platform_data_fail:
+    kfree(ts);
+
+err_alloc_data_failed:
+    kfree(hx_touch_data);
+
+err_check_functionality_failed:
+    probe_fail_flag = 1;
+    return err;
+
+}
+
+int himax_chip_common_remove(struct i2c_client *client)
+{
+    struct himax_ts_data *ts = i2c_get_clientdata(client);
+#if defined(CONFIG_TOUCHSCREEN_HIMAX_DEBUG)
+    himax_touch_proc_deinit();
+#endif
+#ifdef  HX_CHIP_STATUS_MONITOR
+    g_chip_monitor_data->HX_CHIP_MONITOR_EN = 0;
+    cancel_delayed_work_sync(&ts->himax_chip_monitor);
+    destroy_workqueue(ts->himax_chip_monitor_wq);
+    kfree(g_chip_monitor_data);
+#endif
+#ifdef CONFIG_FB
+    if (fb_unregister_client(&ts->fb_notif))
+        dev_err(&client->dev, "Error occurred while unregistering fb_notifier.\n");
+#endif
+
+    if (!ts->use_irq)
+        hrtimer_cancel(&ts->timer);
+
+    destroy_workqueue(ts->himax_wq);
+
+#ifndef	HX_PROTOCOL_A
+    input_mt_destroy_slots(ts->input_dev);
+#endif
+
+    input_unregister_device(ts->input_dev);
+
+#ifdef HX_SMART_WAKEUP
+    //wake_lock_destroy(&ts->ts_SMWP_wake_lock);
+	wakeup_source_trash(&ts->ts_SMWP_wake_lock);
+#endif
+    kfree(ts);
+
+    return 0;
+
+}
+
+int himax_chip_common_suspend(struct himax_ts_data *ts)
+{
+    int ret;
+#ifdef HX_CHIP_STATUS_MONITOR
+    int t = 0;
+#endif
+
+    if(ts->suspended)
+    {
+        I("%s: Already suspended. Skipped. \n", __func__);
+        return 0;
+    }
+    else
+    {
+        ts->suspended = true;
+        I("%s: enter \n", __func__);
+    }
+
+#ifdef HX_TP_PROC_FLASH_DUMP
+    if (getFlashDumpGoing())
+    {
+        I("[himax] %s: Flash dump is going, reject suspend\n",__func__);
+        return 0;
+    }
+#endif
+/*[Arima_7947][allen_yu] Change the rule of upgrading fw 20171221 begin*/
+#ifdef HX_TP_PROC_GUEST_INFO
+    if (himax_guest_info_get_status())
+    {
+        I("[himax] %s: GUEST INFO dump is going, reject suspend\n",__func__);
+        return 0;
+    }
+#endif
+/*[Arima_7947][allen_yu] 20171221 end*/
+#ifdef HX_CHIP_STATUS_MONITOR
+    if(g_chip_monitor_data->HX_ON_HAND_SHAKING)//chip on hand shaking,wait hand shaking
+    {
+        for(t=0; t<100; t++)
+        {
+            if(g_chip_monitor_data->HX_ON_HAND_SHAKING==0)//chip on hand shaking end
+            {
+                I("%s:HX_ON_HAND_SHAKING OK check %d times\n",__func__,t);
+                break;
+            }
+            else
+                msleep(1);
+        }
+        if(t==100)
+        {
+            E("%s:HX_ON_HAND_SHAKING timeout reject suspend\n",__func__);
+            return 0;
+        }
+    }
+    g_chip_monitor_data->HX_CHIP_MONITOR_EN = 0;
+    g_chip_monitor_data->HX_CHIP_POLLING_COUNT = 0;
+    cancel_delayed_work_sync(&ts->himax_chip_monitor);
+#endif
+
+#if defined(HX_SMART_WAKEUP)||defined(HX_HIGH_SENSE)||defined(HX_USB_DETECT_GLOBAL)
+#ifndef HX_RESUME_SEND_CMD
+    himax_resend_cmd_func(ts->suspended);
+#endif
+#endif
+
+#ifdef HX_SMART_WAKEUP
+    if(ts->SMWP_enable)
+    {
+        atomic_set(&ts->suspend_mode, 1);
+        ts->pre_finger_mask = 0;
+        FAKE_POWER_KEY_SEND=false;
+        I("[himax] %s: SMART_WAKEUP enable, reject suspend\n",__func__);
+        return 0;
+    }
+#endif
+
+    himax_int_enable(ts->client->irq,0);
+/*[Arima_8710][allen_yu] Fix TP I2C error in suspend 20180423 begin*/
+#ifdef HX_RST_PIN_FUNC
+    reset_flag = 0;
+#endif
+/*[Arima_8710][allen_yu] 20180423 end*/
+    himax_suspend_ic_action(ts->client);
+
+    if (!ts->use_irq)
+    {
+        ret = cancel_work_sync(&ts->work);
+        if (ret)
+            himax_int_enable(ts->client->irq,1);
+    }
+
+    //ts->first_pressed = 0;
+    atomic_set(&ts->suspend_mode, 1);
+    ts->pre_finger_mask = 0;
+    if (ts->pdata->powerOff3V3 && ts->pdata->power)
+        ts->pdata->power(0);
+    I("%s: END \n", __func__);
+    return 0;
+}
+
+int himax_chip_common_resume(struct himax_ts_data *ts)
+{
+
+#ifdef HX_CHIP_STATUS_MONITOR
+    int t=0;
+#endif
+
+    I("%s: enter \n", __func__);
+    if(ts->suspended == false)
+    {
+        I("%s: It had entered resume,skip this step \n", __func__);
+        return 0;
+    }
+    else
+        ts->suspended = false;
+
+    atomic_set(&ts->suspend_mode, 0);
+
+/*[Arima_8710][allen_yu] Solve the report point issue 20180619 begin*/
+	himax_release_all_finger();
+/*[Arima_8710][allen_yu] 20180619 end*/
+
+    if (ts->pdata->powerOff3V3 && ts->pdata->power)
+        ts->pdata->power(1);
+
+#ifdef HX_CHIP_STATUS_MONITOR
+    if(g_chip_monitor_data->HX_ON_HAND_SHAKING)//chip on hand shaking,wait hand shaking
+    {
+        for(t=0; t<100; t++)
+        {
+            if(g_chip_monitor_data->HX_ON_HAND_SHAKING == 0)//chip on hand shaking end
+            {
+                I("%s:HX_ON_HAND_SHAKING OK check %d times\n",__func__,t);
+                break;
+            }
+            else
+                msleep(1);
+        }
+        if(t==100)
+        {
+            E("%s:HX_ON_HAND_SHAKING timeout reject resume\n",__func__);
+            return 0;
+        }
+    }
+#endif
+
+#if defined(HX_SMART_WAKEUP)||defined(HX_HIGH_SENSE)||defined(HX_USB_DETECT_GLOBAL)
+#if defined(HX_RESUME_SEND_CMD)
+    himax_resend_cmd_func(ts->suspended);
+#endif
+#elif defined(HX_RESUME_HW_RESET)
+    himax_ic_reset(false,false);
+#endif
+
+    himax_resume_ic_action(ts->client);
+
+    himax_int_enable(ts->client->irq,1);
+/*[Arima_8710][allen_yu] Fix TP I2C error in suspend 20180423 begin*/
+#ifdef HX_RST_PIN_FUNC
+    reset_flag = 1;
+#endif
+/*[Arima_8710][allen_yu] 20180423 end*/
+#ifdef HX_CHIP_STATUS_MONITOR
+    g_chip_monitor_data->HX_CHIP_POLLING_COUNT = 0;
+    g_chip_monitor_data->HX_CHIP_MONITOR_EN = 1;
+    queue_delayed_work(ts->himax_chip_monitor_wq, &ts->himax_chip_monitor, g_chip_monitor_data->HX_POLLING_TIMER*HZ); //for ESD solution
+#endif
+    I("%s: END \n", __func__);
+    return 0;
+}
diff --git a/drivers/input/touchscreen/hxchipset83112b/himax_common.h b/drivers/input/touchscreen/hxchipset83112b/himax_common.h
new file mode 100644
index 0000000..2a13498
--- /dev/null
+++ b/drivers/input/touchscreen/hxchipset83112b/himax_common.h
@@ -0,0 +1,467 @@
+/* Himax Android Driver Sample Code for common functions
+*
+* Copyright (C) 2017 Himax Corporation.
+*
+* This software is licensed under the terms of the GNU General Public
+* License version 2, as published by the Free Software Foundation, and
+* may be copied, distributed, and modified under those terms.
+*
+* This program is distributed in the hope that 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.
+*
+*/
+
+#ifndef HIMAX_COMMON_H
+#define HIMAX_COMMON_H
+
+#include <asm/segment.h>
+#include <asm/uaccess.h>
+#include <asm/atomic.h>
+
+#include <linux/delay.h>
+#include <linux/i2c.h>
+#include <linux/input.h>
+#include <linux/interrupt.h>
+#include <linux/module.h>
+#include <linux/async.h>
+#include <linux/platform_device.h>
+#include <linux/slab.h>
+#include <linux/gpio.h>
+#include <linux/input/mt.h>
+#include <linux/firmware.h>
+#include <linux/types.h>
+#include <linux/fs.h>
+#include <linux/buffer_head.h>
+//#include <linux/wakelock.h>
+#include <linux/pm_wakeup.h>
+#include <linux/seq_file.h>
+#include <linux/proc_fs.h>
+#include "himax_platform.h"
+/*[Arima_8901][TracyChui]Add usb plug detect function and updated FW CID0804_D02_C13 20190816 start */
+#include <linux/file.h>
+/*[Arima_8901][TracyChui] 20190816 end */
+#if defined(CONFIG_FB)
+#include <linux/notifier.h>
+#include <linux/fb.h>
+/*[Arima_7947][allen_yu] Add mutex in callback function 20180131 begin*/
+#include <linux/mutex.h>
+/*[Arima_7947][allen_yu] 20180131 end*/
+#elif defined(CONFIG_HAS_EARLYSUSPEND)
+#include <linux/earlysuspend.h>
+#endif
+
+#ifdef CONFIG_OF
+#include <linux/of_gpio.h>
+#endif
+//#define HIMAX_DRIVER_VER "0.1.95.0_ABCD1234_01"
+#define HIMAX_DRIVER_VER "1.2.2.69_ABCD1234_01"
+
+#define FLASH_DUMP_FILE "/sdcard/HX_Flash_Dump.bin"
+
+#if defined(CONFIG_TOUCHSCREEN_HIMAX_DEBUG)
+
+#define HX_TP_PROC_DIAG
+#define HX_TP_PROC_REGISTER
+#define HX_TP_PROC_DEBUG
+#define HX_TP_PROC_FLASH_DUMP
+#define HX_TP_PROC_SELF_TEST
+#define HX_TP_PROC_RESET
+#define HX_TP_PROC_SENSE_ON_OFF
+#define HX_TP_PROC_2T2R
+
+#ifdef HX_TP_PROC_SELF_TEST
+//#define HX_TP_SELF_TEST_DRIVER //if enable, selftest works in driver
+#endif
+
+int himax_touch_proc_init(void);
+void himax_touch_proc_deinit(void);
+#endif
+//===========Himax Option function=============
+#define HX_RST_PIN_FUNC
+/*[Arima_8901][allen_yu] Upgrade himax first fw CIDFF00_D01_C01 20181122 begin*/
+#define HX_AUTO_UPDATE_FW
+/*[Arima_8901][allen_yu] 20181122 end*/
+//#define HX_ESD_RECOVERY
+//#define HX_CHIP_STATUS_MONITOR		/*for ESD 2nd solution,it does not support incell,default off*/
+//#define HX_SMART_WAKEUP
+//#define HX_GESTURE_TRACK
+//#define HX_HIGH_SENSE
+//#define HX_PALM_REPORT
+/*[Arima_8901][TracyChui]Add usb plug detect function and updated FW CID0804_D02_C13 20190816 start */
+#define HX_USB_DETECT_GLOBAL
+/*[Arima_8901][TracyChui]20190816 end */
+//#define HX_USB_DETECT_CALLBACK
+//#define HX_PROTOCOL_A					/* for MTK special platform.If turning on,it will report to system by using specific format. */
+//#define HX_RESUME_HW_RESET
+//#define HX_RESUME_SEND_CMD
+#define HX_PROTOCOL_B_3PA
+/*[Arima_7947][allen_yu] Define the value of collecting raw_data and delta_data 20171221 begin*/
+#define HX_FIX_TOUCH_INFO 	/* if open, you need to change the touch info in the fix_touch_info*/
+/*[Arima_7947][allen_yu] 20171221 end*/
+//#define HX_EN_SEL_BUTTON		       	/* Support Self Virtual key		,default is close*/
+//#define HX_EN_MUT_BUTTON		       	/* Support Mutual Virtual Key	,default is close*/
+
+#if defined(HX_EN_SEL_BUTTON) || defined(HX_EN_MUT_BUTTON)
+//#define HX_PLATFOME_DEFINE_KEY		/* for specfic platform to set key(button) */
+#endif
+
+/*[Arima_8901][TracyChui]Add usb plug detect function and updated FW CID0804_D02_C13 20190816 start */
+#ifdef HX_USB_DETECT_GLOBAL
+#define POWER_SUPPLY_BATTERY_STATUS_PATCH  "/sys/class/power_supply/battery/status"
+#endif
+/*[Arima_8901][TracyChui] 20190816 end */
+
+#define HX_KEY_MAX_COUNT             4
+#define DEFAULT_RETRY_CNT            3
+
+#define HX_85XX_A_SERIES_PWON		1
+#define HX_85XX_B_SERIES_PWON		2
+#define HX_85XX_C_SERIES_PWON		3
+#define HX_85XX_D_SERIES_PWON		4
+#define HX_85XX_E_SERIES_PWON		5
+#define HX_85XX_ES_SERIES_PWON		6
+#define HX_85XX_F_SERIES_PWON		7
+#define HX_85XX_G_SERIES_PWON		8
+#define HX_85XX_H_SERIES_PWON		9
+#define HX_83100A_SERIES_PWON		10
+#define HX_83102A_SERIES_PWON		11
+#define HX_83102B_SERIES_PWON		12
+#define HX_83110A_SERIES_PWON		13
+#define HX_83110B_SERIES_PWON		14
+#define HX_83111B_SERIES_PWON		15
+#define HX_83112A_SERIES_PWON		16
+#define HX_83112B_SERIES_PWON		17
+
+#define HX_TP_BIN_CHECKSUM_SW		1
+#define HX_TP_BIN_CHECKSUM_HW		2
+#define HX_TP_BIN_CHECKSUM_CRC		3
+
+#define SHIFTBITS 5
+
+#define  FW_SIZE_32k 	32768
+#define  FW_SIZE_60k 	61440
+#define  FW_SIZE_64k 	65536
+#define  FW_SIZE_124k 	126976
+#define  FW_SIZE_128k 	131072
+
+#define NO_ERR 0
+#define READY_TO_SERVE 1
+#define WORK_OUT	2
+#define I2C_FAIL -1
+#define MEM_ALLOC_FAIL -2
+#define CHECKSUM_FAIL -3
+#define GESTURE_DETECT_FAIL -4
+#define INPUT_REGISTER_FAIL -5
+#define FW_NOT_READY -6
+#define LENGTH_FAIL -7
+#define OPEN_FILE_FAIL -8
+#define ERR_WORK_OUT	-10
+
+#define HX_FINGER_ON	1
+#define HX_FINGER_LEAVE	2
+
+#define HX_REPORT_COORD	1
+#define HX_REPORT_SMWP_EVENT	2
+/*[Arima_7947][allen_yu] Define the value of collecting raw_data and delta_data 20171221 begin*/
+#ifdef HX_FIX_TOUCH_INFO
+enum fix_touch_info
+{
+    FIX_HX_RX_NUM = 30,
+    FIX_HX_TX_NUM = 18,
+    FIX_HX_BT_NUM = 0,
+    FIX_HX_X_RES = 1080,
+    FIX_HX_Y_RES = 2160,
+    FIX_HX_MAX_PT = 10,
+    FIX_HX_XY_REVERSE = true,
+/*[Arima_7947][allen_yu] Modify Int trigger way and upgrade himax fw to CID0404_D01_C02 20171228 begin*/
+    FIX_HX_INT_IS_EDGE = false,
+/*[Arima_7947][allen_yu] 20171228 end*/
+#ifdef HX_TP_PROC_2T2R
+    FIX_HX_RX_NUM_2 = 0,
+    FIX_HX_TX_NUM_2 = 0,
+#endif
+/*[Arima_8710][allen_yu] Dynamic detect touch golden value 20180929 begin*/
+    SEC_FIX_HX_RX_NUM = 36,
+    SEC_FIX_HX_TX_NUM = 18,
+    SEC_FIX_HX_BT_NUM = 0,
+    SEC_FIX_HX_X_RES = 1080,
+    SEC_FIX_HX_Y_RES = 2160,
+    SEC_FIX_HX_MAX_PT = 10,
+    SEC_FIX_HX_XY_REVERSE = true,
+/*[Arima_8901][allen_yu] Modify to edge trigger and upgrade fw to CID0802_D02_C05 20190322 begin*/
+/*[Arima_8901][allen_yu] Modify to edge trigger and upgrade himax first fw CIDFF00_D01_C02 20181128 begin*/
+    SEC_FIX_HX_INT_IS_EDGE = false,
+/*[Arima_8901][allen_yu] 20181128 end*/
+/*[Arima_8901][allen_yu] 20190322 end*/
+#ifdef HX_TP_PROC_2T2R
+    SEC_FIX_HX_RX_NUM_2 = 0,
+    SEC_FIX_HX_TX_NUM_2 = 0
+#endif
+/*[Arima_8710][allen_yu] 20180929 end*/
+};
+#endif
+/*[Arima_7947][allen_yu] 20171221 end*/
+#ifdef HX_ZERO_FLASH
+#define HX_0F_DEBUG
+#endif
+
+struct himax_ic_data
+{
+    int vendor_fw_ver;
+    int vendor_config_ver;
+    int vendor_touch_cfg_ver;
+    int vendor_display_cfg_ver;
+    int vendor_cid_maj_ver;
+    int vendor_cid_min_ver;
+    int vendor_panel_ver;
+    int vendor_sensor_id;
+/*[Arima_8710][allen_yu] Modify the touch fw dynamic auto upgtade rule 20180830 begin*/
+	int vendor_hx_ic_id;
+/*[Arima_8710][allen_yu] 20180830 end*/
+    int		HX_RX_NUM;
+    int		HX_TX_NUM;
+    int		HX_BT_NUM;
+    int		HX_X_RES;
+    int		HX_Y_RES;
+    int		HX_MAX_PT;
+    bool	HX_XY_REVERSE;
+    bool	HX_INT_IS_EDGE;
+#ifdef HX_TP_PROC_2T2R
+    int HX_RX_NUM_2;
+    int HX_TX_NUM_2;
+#endif
+};
+
+struct himax_virtual_key
+{
+    int index;
+    int keycode;
+    int x_range_min;
+    int x_range_max;
+    int y_range_min;
+    int y_range_max;
+};
+
+struct himax_report_data
+{
+    int touch_all_size;
+    int raw_cnt_max;
+    int raw_cnt_rmd;
+    int touch_info_size;
+    uint8_t	finger_num;
+    uint8_t	finger_on;
+    uint8_t *hx_coord_buf;
+    uint8_t hx_state_info[2];
+#if defined(HX_SMART_WAKEUP)
+    int event_size;
+    uint8_t *hx_event_buf;
+#endif
+#if defined(HX_TP_PROC_DIAG)
+    int rawdata_size;
+    uint8_t diag_cmd;
+    uint8_t *hx_rawdata_buf;
+    uint8_t rawdata_frame_size;
+#endif
+};
+
+struct himax_ts_data
+{
+    bool suspended;
+    atomic_t suspend_mode;
+    uint8_t x_channel;
+    uint8_t y_channel;
+    uint8_t useScreenRes;
+    uint8_t diag_command;
+
+    uint8_t protocol_type;
+    uint8_t first_pressed;
+    uint8_t coord_data_size;
+    uint8_t area_data_size;
+    uint8_t coordInfoSize;
+    uint8_t raw_data_frame_size;
+    uint8_t raw_data_nframes;
+    uint8_t nFinger_support;
+    uint8_t irq_enabled;
+    uint8_t diag_self[50];
+
+    uint16_t finger_pressed;
+    uint16_t last_slot;
+    uint16_t pre_finger_mask;
+
+    uint32_t debug_log_level;
+    uint32_t widthFactor;
+    uint32_t heightFactor;
+    uint32_t tw_x_min;
+    uint32_t tw_x_max;
+    uint32_t tw_y_min;
+    uint32_t tw_y_max;
+    uint32_t pl_x_min;
+    uint32_t pl_x_max;
+    uint32_t pl_y_min;
+    uint32_t pl_y_max;
+
+    int rst_gpio;
+    int use_irq;
+    int (*power)(int on);
+    int pre_finger_data[10][2];
+
+    struct device *dev;
+    struct workqueue_struct *himax_wq;
+    struct work_struct work;
+    struct input_dev *input_dev;
+    struct hrtimer timer;
+    struct i2c_client *client;
+    struct himax_i2c_platform_data *pdata;
+    struct himax_virtual_key *button;
+    struct mutex rw_lock;
+/*[Arima_8710][allen_yu] Solve the report point issue 20180619 begin*/
+    struct mutex report_mutex;
+/*[Arima_8710][allen_yu] 20180619 end*/
+
+#if defined(CONFIG_FB)
+    struct notifier_block fb_notif;
+    struct workqueue_struct *himax_att_wq;
+    struct delayed_work work_att;
+/*[Arima_7947][allen_yu] Add mutex in callback function 20180131 begin*/
+    struct mutex ops_lock;
+/*[Arima_7947][allen_yu] 20180131 end*/
+#elif defined(CONFIG_HAS_EARLYSUSPEND)
+    struct early_suspend early_suspend;
+#endif
+#ifdef HX_CHIP_STATUS_MONITOR
+    struct workqueue_struct *himax_chip_monitor_wq;
+    struct delayed_work himax_chip_monitor;
+#endif
+#ifdef HX_TP_PROC_FLASH_DUMP
+    struct workqueue_struct 			*flash_wq;
+    struct work_struct 					flash_work;
+#endif
+
+#ifdef HX_AUTO_UPDATE_FW
+    struct workqueue_struct *himax_update_wq;
+    struct delayed_work work_update;
+#endif
+
+#ifdef HX_ZERO_FLASH
+	struct workqueue_struct *himax_0f_update_wq;
+	struct delayed_work work_0f_update;
+#endif
+
+#ifdef HX_TP_PROC_DIAG
+    struct workqueue_struct *himax_diag_wq;
+    struct delayed_work himax_diag_delay_wrok;
+#endif
+
+#ifdef HX_SMART_WAKEUP
+    uint8_t SMWP_enable;
+    uint8_t gesture_cust_en[16];
+    //struct wake_lock ts_SMWP_wake_lock;
+	struct wakeup_source ts_SMWP_wake_lock;
+#endif
+
+#ifdef HX_HIGH_SENSE
+    uint8_t HSEN_enable;
+#endif
+
+#if defined(HX_USB_DETECT_CALLBACK)||defined(HX_USB_DETECT_GLOBAL)
+    uint8_t usb_connected;
+    uint8_t *cable_config;
+#endif
+
+#if defined(CONFIG_TOUCHSCREEN_HIMAX_ITO_TEST)
+    struct workqueue_struct *ito_test_wq;
+    struct work_struct ito_test_work;
+#endif
+
+};
+
+#ifdef HX_CHIP_STATUS_MONITOR
+struct chip_monitor_data
+{
+    int HX_CHIP_POLLING_COUNT;
+    int HX_POLLING_TIMER;//unit:sec
+    int HX_POLLING_TIMES;//ex:5(timer)x2(times)=10sec(polling time)
+    int HX_ON_HAND_SHAKING;//
+    int HX_CHIP_MONITOR_EN;
+};
+#endif
+
+
+enum input_protocol_type
+{
+    PROTOCOL_TYPE_A	= 0x00,
+    PROTOCOL_TYPE_B	= 0x01,
+};
+
+#ifdef HX_HIGH_SENSE
+void himax_set_HSEN_func(struct i2c_client *client,uint8_t HSEN_enable);
+#endif
+
+#ifdef HX_SMART_WAKEUP
+#define GEST_PTLG_ID_LEN	(4)
+#define GEST_PTLG_HDR_LEN	(4)
+#define GEST_PTLG_HDR_ID1	(0xCC)
+#define GEST_PTLG_HDR_ID2	(0x44)
+#define GEST_PT_MAX_NUM 	(128)
+
+void himax_set_SMWP_func(struct i2c_client *client,uint8_t SMWP_enable);
+extern bool FAKE_POWER_KEY_SEND;
+
+enum gesture_event_type
+{
+    EV_GESTURE_01 = 0x01,
+    EV_GESTURE_02,
+    EV_GESTURE_03,
+    EV_GESTURE_04,
+    EV_GESTURE_05,
+    EV_GESTURE_06,
+    EV_GESTURE_07,
+    EV_GESTURE_08,
+    EV_GESTURE_09,
+    EV_GESTURE_10,
+    EV_GESTURE_11,
+    EV_GESTURE_12,
+    EV_GESTURE_13,
+    EV_GESTURE_14,
+    EV_GESTURE_15,
+    EV_GESTURE_PWR = 0x80,
+};
+
+#define KEY_CUST_01 251
+#define KEY_CUST_02 252
+#define KEY_CUST_03 253
+#define KEY_CUST_04 254
+#define KEY_CUST_05 255
+#define KEY_CUST_06 256
+#define KEY_CUST_07 257
+#define KEY_CUST_08 258
+#define KEY_CUST_09 259
+#define KEY_CUST_10 260
+#define KEY_CUST_11 261
+#define KEY_CUST_12 262
+#define KEY_CUST_13 263
+#define KEY_CUST_14 264
+#define KEY_CUST_15 265
+#endif
+
+#if defined(CONFIG_TOUCHSCREEN_HIMAX_ITO_TEST)
+extern uint8_t himax_ito_test(void);
+#endif
+
+extern int irq_enable_count;
+
+//void himax_HW_reset(uint8_t loadconfig,uint8_t int_off);
+
+#ifdef QCT
+irqreturn_t himax_ts_thread(int irq, void *ptr);
+int himax_input_register(struct himax_ts_data *ts);
+#endif
+
+extern int himax_chip_common_probe(struct i2c_client *client, const struct i2c_device_id *id);
+extern int himax_chip_common_remove(struct i2c_client *client);
+extern int himax_chip_common_suspend(struct himax_ts_data *ts);
+extern int himax_chip_common_resume(struct himax_ts_data *ts);
+
+#endif
diff --git a/drivers/input/touchscreen/hxchipset83112b/himax_debug.c b/drivers/input/touchscreen/hxchipset83112b/himax_debug.c
new file mode 100644
index 0000000..01e83fc
--- /dev/null
+++ b/drivers/input/touchscreen/hxchipset83112b/himax_debug.c
@@ -0,0 +1,3361 @@
+/* Himax Android Driver Sample Code for debug nodes
+*
+* Copyright (C) 2017 Himax Corporation.
+*
+* This software is licensed under the terms of the GNU General Public
+* License version 2, as published by the Free Software Foundation, and
+* may be copied, distributed, and modified under those terms.
+*
+* This program is distributed in the hope that 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.
+*
+*/
+
+#include "himax_debug.h"
+#include "himax_ic.h"
+
+//struct himax_debug_data* debug_data;
+
+extern struct himax_ic_data* ic_data;
+extern struct himax_ts_data *private_ts;
+extern unsigned char	IC_TYPE;
+extern unsigned char	IC_CHECKSUM;
+extern int himax_input_register(struct himax_ts_data *ts);
+#ifdef HX_CHIP_STATUS_MONITOR
+extern struct chip_monitor_data *g_chip_monitor_data;
+#endif
+
+#ifdef HX_RST_PIN_FUNC
+extern void himax_ic_reset(uint8_t loadconfig,uint8_t int_off);
+#endif
+
+#ifdef HX_TP_PROC_DIAG
+#ifdef HX_TP_PROC_2T2R
+extern bool Is_2T2R;
+int		HX_RX_NUM_2					= 0;
+int 		HX_TX_NUM_2					= 0;
+#endif
+uint8_t g_diag_arr_num = 0;
+#endif
+
+#ifdef HX_SMART_WAKEUP
+bool FAKE_POWER_KEY_SEND;
+#endif
+
+int g_max_mutual = 0;
+int g_min_mutual = 255;
+int g_max_self = 0;
+int g_min_self = 255;
+
+#if defined(HX_TP_PROC_SELF_TEST) || defined(CONFIG_TOUCHSCREEN_HIMAX_ITO_TEST)
+int g_self_test_entered = 0;
+#endif
+
+struct timespec timeStart, timeEnd, timeDelta;
+int g_switch_mode = 0;
+extern void himax_idle_mode(struct i2c_client *client,int disable);
+extern int himax_switch_mode(struct i2c_client *client,int mode);
+extern void himax_return_event_stack(struct i2c_client *client);
+
+#ifdef HX_ZERO_FLASH
+extern void himax_0f_operation(struct work_struct *work);
+extern void himax_0f_operation_check(void);
+extern void himax_sys_reset(void);
+#endif
+
+//=============================================================================================================
+//
+//	Segment : Himax PROC Debug Function
+//
+//=============================================================================================================
+#if defined(CONFIG_TOUCHSCREEN_HIMAX_DEBUG)
+
+#if defined(CONFIG_TOUCHSCREEN_HIMAX_ITO_TEST)
+
+static ssize_t himax_ito_test_read(struct file *file, char *buf,
+                                   size_t len, loff_t *pos)
+{
+    ssize_t ret = 0;
+    uint8_t result = 0;
+    uint8_t status = 0;
+
+    if(!HX_PROC_SEND_FLAG)
+    {
+        status = ito_get_step_status();
+
+        switch(status)
+        {
+        case 0:
+            ret += sprintf(buf + ret, "Step : START_TEST\n");
+            break;
+        case 1:
+            ret += sprintf(buf + ret, "Step : RAW_DATA\n");
+            break;
+        case 2:
+            ret += sprintf(buf + ret, "Step : PERCENT_TEST\n");
+            break;
+        case 3:
+            ret += sprintf(buf + ret, "Step : DEV_TEST\n");
+            break;
+        case 4:
+            ret += sprintf(buf + ret, "Step : NOISE_TEST\n");
+            break;
+        case 9:
+            ret += sprintf(buf + ret, "Step : END_TEST\n");
+            break;
+        default:
+            ret += sprintf(buf + ret, "Step : Null\n");
+        }
+
+        result = ito_get_result_status();
+        if(result == 0xF)
+            ret += sprintf(buf + ret, "ITO test is On-going! \n");
+        else if(result == 0)
+            ret += sprintf(buf + ret, "ITO test is Pass! \n");
+        else if(result == 2)
+            ret += sprintf(buf + ret, "Open config file fail! \n");
+        else
+            ret += sprintf(buf + ret, "ITO test is Fail! \n");
+        HX_PROC_SEND_FLAG=1;
+    }
+    else
+        HX_PROC_SEND_FLAG=0;
+
+    return ret;
+}
+
+static ssize_t himax_ito_test_write(struct file *file, const char *buff,
+                                    size_t len, loff_t *pos)
+{
+    struct himax_ts_data *ts = private_ts;
+    uint8_t result = 0;
+    char buf[80] = {0};
+
+    if (len >= 80)
+    {
+        I("%s: no command exceeds 80 chars.\n", __func__);
+        return -EFAULT;
+    }
+    if (copy_from_user(buf, buff, len))
+    {
+        return -EFAULT;
+    }
+
+    result = ito_get_result_status();
+    I("%s: buf = %s, result = %d.\n", __func__, buf, result);
+
+    if(buf[0] == '1' && result != 0xF)
+    {
+        I("%s: buf[0] = %c.\n", __func__, buf[0]);
+        ito_set_step_status(0);
+        queue_work(ts->ito_test_wq, &ts->ito_test_work);
+    }
+
+    return len;
+}
+
+static struct file_operations himax_proc_ito_test_ops =
+{
+    .owner = THIS_MODULE,
+    .read = himax_ito_test_read,
+    .write = himax_ito_test_write,
+};
+#endif
+
+static ssize_t himax_CRC_test_read(struct file *file, char *buf,
+                                   size_t len, loff_t *pos)
+{
+    ssize_t ret = 0;
+    uint8_t result = 0;
+    char *temp_buf;
+
+    temp_buf = kzalloc(len,GFP_KERNEL);
+
+    if(!HX_PROC_SEND_FLAG)
+    {
+        himax_sense_off(private_ts->client);
+        msleep(20);
+        result = himax_calculateChecksum(private_ts->client, false);
+        himax_sense_on(private_ts->client, 0x01);
+        if(result)
+            ret += sprintf(temp_buf + ret, "CRC test is Pass! \n");
+        else
+            ret += sprintf(temp_buf + ret, "CRC test is Fail! \n");
+        if(copy_to_user(buf, temp_buf, len))
+            I("%s,here:%d\n",__func__,__LINE__);
+        kfree(temp_buf);
+        HX_PROC_SEND_FLAG=1;
+    }
+    else
+        HX_PROC_SEND_FLAG=0;
+
+    return ret;
+}
+
+static struct file_operations himax_proc_CRC_test_ops =
+{
+    .owner = THIS_MODULE,
+    .read = himax_CRC_test_read,
+};
+
+static ssize_t himax_vendor_read(struct file *file, char *buf,
+                                 size_t len, loff_t *pos)
+{
+    ssize_t count = 0;
+    char *temp_buf;
+
+    temp_buf = kzalloc(len,GFP_KERNEL);
+
+    if(!HX_PROC_SEND_FLAG)
+    {
+/*[Arima_8710][allen_yu] Dynamic detect Yandex LCM/TP 2nd source and add PCBA node 20180828 begin*/
+/*[Arima_7947][allen_yu] Show the Himax firmware version 20180123 begin*/
+#if 1
+        if((IC_TYPE >= 8)&&(ic_data->vendor_cid_maj_ver >= 0 || ic_data->vendor_cid_min_ver >= 0))
+		{
+			if(IC_TYPE == HX_83112A_SERIES_PWON)
+			{
+				count += sprintf(temp_buf + count, "Truly Himax CID0%2.2X_D%2.2X_C%2.2X \n",(ic_data->vendor_cid_maj_ver << 8 | ic_data->vendor_cid_min_ver),ic_data->vendor_display_cfg_ver,ic_data->vendor_touch_cfg_ver);
+			}
+			else
+			{
+				count += sprintf(temp_buf + count, "DJN Himax CID0%2.2X_D%2.2X_C%2.2X \n",(ic_data->vendor_cid_maj_ver << 8 | ic_data->vendor_cid_min_ver),ic_data->vendor_display_cfg_ver,ic_data->vendor_touch_cfg_ver);
+			}
+		}
+        else
+		{
+            count += sprintf(temp_buf + count, "Himax null\n");
+		}
+/*[Arima_8710][allen_yu] 20180828 end*/
+#else
+        count += sprintf(temp_buf + count, "FW_VER = 0x%2.2X \n",ic_data->vendor_fw_ver);
+
+        if(IC_TYPE < 8)
+            count += sprintf(temp_buf + count, "CONFIG_VER = 0x%2.2X \n",ic_data->vendor_config_ver);
+        else
+        {
+            count += sprintf(temp_buf + count, "TOUCH_VER = 0x%2.2X \n",ic_data->vendor_touch_cfg_ver);
+            count += sprintf(temp_buf + count, "DISPLAY_VER = 0x%2.2X \n",ic_data->vendor_display_cfg_ver);
+        }
+        if(ic_data->vendor_cid_maj_ver < 0 && ic_data->vendor_cid_min_ver < 0)
+            count += sprintf(temp_buf + count, "CID_VER = NULL\n");
+        else
+            count += sprintf(temp_buf + count, "CID_VER = 0x%2.2X \n",(ic_data->vendor_cid_maj_ver << 8 | ic_data->vendor_cid_min_ver));
+
+        if(ic_data->vendor_panel_ver < 0)
+            count += sprintf(temp_buf + count, "PANEL_VER = NULL\n");
+        else
+            count += sprintf(temp_buf + count, "PANEL_VER = 0x%2.2X \n",ic_data->vendor_panel_ver);
+
+        count += sprintf(temp_buf + count, "\n");
+
+        count += sprintf(temp_buf + count, "Himax Touch Driver Version:\n");
+        count += sprintf(temp_buf + count, "%s \n", HIMAX_DRIVER_VER);
+#endif
+/*[Arima_7947][allen_yu] 20180123 end*/
+        HX_PROC_SEND_FLAG=1;
+        if(copy_to_user(buf, temp_buf, len))
+            I("%s,here:%d\n",__func__,__LINE__);
+        kfree(temp_buf);
+    }
+    else
+        HX_PROC_SEND_FLAG=0;
+
+    return count;
+}
+
+static struct file_operations himax_proc_vendor_ops =
+{
+    .owner = THIS_MODULE,
+    .read = himax_vendor_read,
+};
+
+static ssize_t himax_attn_read(struct file *file, char *buf,
+                               size_t len, loff_t *pos)
+{
+    ssize_t ret = 0;
+    struct himax_ts_data *ts_data;
+    char *temp_buf;
+
+    temp_buf = kzalloc(len,GFP_KERNEL);
+    ts_data = private_ts;
+
+    if(!HX_PROC_SEND_FLAG)
+    {
+        ret += sprintf(temp_buf, "attn = %x\n", himax_int_gpio_read(ts_data->pdata->gpio_irq));
+        if(copy_to_user(buf, temp_buf, len))
+            I("%s,here:%d\n",__func__,__LINE__);
+        kfree(temp_buf);
+        HX_PROC_SEND_FLAG=1;
+    }
+    else
+        HX_PROC_SEND_FLAG=0;
+
+    return ret;
+}
+
+
+static struct file_operations himax_proc_attn_ops =
+{
+    .owner = THIS_MODULE,
+    .read = himax_attn_read,
+};
+
+static ssize_t himax_int_en_read(struct file *file, char *buf,
+                                 size_t len, loff_t *pos)
+{
+    struct himax_ts_data *ts = private_ts;
+    size_t count = 0;
+    char *temp_buf;
+
+    temp_buf = kzalloc(len,GFP_KERNEL);
+
+    if(!HX_PROC_SEND_FLAG)
+    {
+        count += sprintf(temp_buf + count, "%d ", ts->irq_enabled);
+        count += sprintf(temp_buf + count, "\n");
+        if(copy_to_user(buf, temp_buf, len))
+            I("%s,here:%d\n",__func__,__LINE__);
+        kfree(temp_buf);
+        HX_PROC_SEND_FLAG=1;
+    }
+    else
+        HX_PROC_SEND_FLAG=0;
+    return count;
+}
+
+static ssize_t himax_int_en_write(struct file *file, const char *buff,
+                                  size_t len, loff_t *pos)
+{
+    struct himax_ts_data *ts = private_ts;
+    char buf_tmp[12]= {0};
+    int value, ret=0;
+
+    if (len >= 12)
+    {
+        I("%s: no command exceeds 12 chars.\n", __func__);
+        return -EFAULT;
+    }
+    if (copy_from_user(buf_tmp, buff, len))
+    {
+        return -EFAULT;
+    }
+
+    if (buf_tmp[0] == '0')
+        value = false;
+    else if (buf_tmp[0] == '1')
+        value = true;
+    else
+        return -EINVAL;
+
+    if (value)
+    {
+        ret = himax_int_en_set(ts->client);
+        if (ret == 0)
+        {
+            ts->irq_enabled = 1;
+            irq_enable_count = 1;
+        }
+    }
+    else
+    {
+        himax_int_enable(ts->client->irq,0);
+        free_irq(ts->client->irq, ts);
+        ts->irq_enabled = 0;
+    }
+
+    return len;
+}
+
+static struct file_operations himax_proc_int_en_ops =
+{
+    .owner = THIS_MODULE,
+    .read = himax_int_en_read,
+    .write = himax_int_en_write,
+};
+
+static ssize_t himax_layout_read(struct file *file, char *buf,
+                                 size_t len, loff_t *pos)
+{
+    struct himax_ts_data *ts = private_ts;
+    size_t count = 0;
+    char *temp_buf;
+
+    temp_buf = kzalloc(len,GFP_KERNEL);
+
+    if(!HX_PROC_SEND_FLAG)
+    {
+        count += sprintf(temp_buf + count, "%d ", ts->pdata->abs_x_min);
+        count += sprintf(temp_buf + count, "%d ", ts->pdata->abs_x_max);
+        count += sprintf(temp_buf + count, "%d ", ts->pdata->abs_y_min);
+        count += sprintf(temp_buf + count, "%d ", ts->pdata->abs_y_max);
+        count += sprintf(temp_buf + count, "\n");
+        if(copy_to_user(buf, temp_buf, len))
+            I("%s,here:%d\n",__func__,__LINE__);
+        kfree(temp_buf);
+        HX_PROC_SEND_FLAG=1;
+    }
+    else
+        HX_PROC_SEND_FLAG=0;
+
+    return count;
+}
+
+static ssize_t himax_layout_write(struct file *file, const char *buff,
+                                  size_t len, loff_t *pos)
+{
+    struct himax_ts_data *ts = private_ts;
+    char buf_tmp[5];
+    int i = 0, j = 0, k = 0, ret;
+    unsigned long value;
+    int layout[4] = {0};
+    char buf[80] = {0};
+
+    if (len >= 80)
+    {
+        I("%s: no command exceeds 80 chars.\n", __func__);
+        return -EFAULT;
+    }
+    if (copy_from_user(buf, buff, len))
+    {
+        return -EFAULT;
+    }
+
+    for (i = 0; i < 20; i++)
+    {
+        if (buf[i] == ',' || buf[i] == '\n')
+        {
+            memset(buf_tmp, 0x0, sizeof(buf_tmp));
+            if (i - j <= 5)
+                memcpy(buf_tmp, buf + j, i - j);
+            else
+            {
+                I("buffer size is over 5 char\n");
+                return len;
+            }
+            j = i + 1;
+            if (k < 4)
+            {
+                ret = kstrtoul(buf_tmp, 10, &value);
+                layout[k++] = value;
+            }
+        }
+    }
+    if (k == 4)
+    {
+        ts->pdata->abs_x_min=layout[0];
+        ts->pdata->abs_x_max=layout[1];
+        ts->pdata->abs_y_min=layout[2];
+        ts->pdata->abs_y_max=layout[3];
+        I("%d, %d, %d, %d\n",
+          ts->pdata->abs_x_min, ts->pdata->abs_x_max, ts->pdata->abs_y_min, ts->pdata->abs_y_max);
+        input_unregister_device(ts->input_dev);
+        himax_input_register(ts);
+    }
+    else
+        I("ERR@%d, %d, %d, %d\n",
+          ts->pdata->abs_x_min, ts->pdata->abs_x_max, ts->pdata->abs_y_min, ts->pdata->abs_y_max);
+    return len;
+}
+
+static struct file_operations himax_proc_layout_ops =
+{
+    .owner = THIS_MODULE,
+    .read = himax_layout_read,
+    .write = himax_layout_write,
+};
+
+static ssize_t himax_debug_level_read(struct file *file, char *buf,
+                                      size_t len, loff_t *pos)
+{
+    struct himax_ts_data *ts_data;
+    size_t count = 0;
+    char *temp_buf;
+
+    temp_buf = kzalloc(len,GFP_KERNEL);
+    ts_data = private_ts;
+
+    if(!HX_PROC_SEND_FLAG)
+    {
+        count += sprintf(temp_buf, "%d\n", ts_data->debug_log_level);
+        if(copy_to_user(buf, temp_buf, len))
+            I("%s,here:%d\n",__func__,__LINE__);
+        kfree(temp_buf);
+        HX_PROC_SEND_FLAG = 1;
+    }
+    else
+        HX_PROC_SEND_FLAG=0;
+
+    return count;
+}
+
+static ssize_t himax_debug_level_write(struct file *file, const char *buff,
+                                       size_t len, loff_t *pos)
+{
+    struct himax_ts_data *ts;
+    char buf_tmp[11];
+    int i;
+    ts = private_ts;
+
+    if (len >= 12)
+    {
+        I("%s: no command exceeds 12 chars.\n", __func__);
+        return -EFAULT;
+    }
+    if (copy_from_user(buf_tmp, buff, len))
+    {
+        return -EFAULT;
+    }
+
+    ts->debug_log_level = 0;
+    for(i=0; i<len-1; i++)
+    {
+        if( buf_tmp[i]>='0' && buf_tmp[i]<='9' )
+            ts->debug_log_level |= (buf_tmp[i]-'0');
+        else if( buf_tmp[i]>='A' && buf_tmp[i]<='F' )
+            ts->debug_log_level |= (buf_tmp[i]-'A'+10);
+        else if( buf_tmp[i]>='a' && buf_tmp[i]<='f' )
+            ts->debug_log_level |= (buf_tmp[i]-'a'+10);
+
+        if(i!=len-2)
+            ts->debug_log_level <<= 4;
+    }
+
+    if (ts->debug_log_level & BIT(3))
+    {
+        if (ts->pdata->screenWidth > 0 && ts->pdata->screenHeight > 0 &&
+                (ts->pdata->abs_x_max - ts->pdata->abs_x_min) > 0 &&
+                (ts->pdata->abs_y_max - ts->pdata->abs_y_min) > 0)
+        {
+            ts->widthFactor = (ts->pdata->screenWidth << SHIFTBITS)/(ts->pdata->abs_x_max - ts->pdata->abs_x_min);
+            ts->heightFactor = (ts->pdata->screenHeight << SHIFTBITS)/(ts->pdata->abs_y_max - ts->pdata->abs_y_min);
+            if (ts->widthFactor > 0 && ts->heightFactor > 0)
+                ts->useScreenRes = 1;
+            else
+            {
+                ts->heightFactor = 0;
+                ts->widthFactor = 0;
+                ts->useScreenRes = 0;
+            }
+        }
+        else
+            I("Enable finger debug with raw position mode!\n");
+    }
+    else
+    {
+        ts->useScreenRes = 0;
+        ts->widthFactor = 0;
+        ts->heightFactor = 0;
+    }
+
+    return len;
+}
+
+static struct file_operations himax_proc_debug_level_ops =
+{
+    .owner = THIS_MODULE,
+    .read = himax_debug_level_read,
+    .write = himax_debug_level_write,
+};
+
+#ifdef HX_TP_PROC_REGISTER
+static ssize_t himax_proc_register_read(struct file *file, char *buf,
+                                        size_t len, loff_t *pos)
+{
+    int ret = 0;
+    uint16_t loop_i;
+    uint8_t data[128];
+    char *temp_buf;
+
+    temp_buf = kzalloc(len,GFP_KERNEL);
+    memset(data, 0x00, sizeof(data));
+
+    if(!HX_PROC_SEND_FLAG)
+    {
+        I("himax_register_show: %02X,%02X,%02X,%02X\n", register_command[3],register_command[2],register_command[1],register_command[0]);
+        himax_register_read(private_ts->client, register_command, 128, data, cfg_flag);
+
+        ret += sprintf(temp_buf, "command:  %02X,%02X,%02X,%02X\n", register_command[3],register_command[2],register_command[1],register_command[0]);
+
+        for (loop_i = 0; loop_i < 128; loop_i++)
+        {
+            ret += sprintf(temp_buf + ret, "0x%2.2X ", data[loop_i]);
+            if ((loop_i % 16) == 15)
+                ret += sprintf(temp_buf + ret, "\n");
+        }
+        ret += sprintf(temp_buf + ret, "\n");
+        if(copy_to_user(buf, temp_buf, len))
+            I("%s,here:%d\n",__func__,__LINE__);
+        kfree(temp_buf);
+        HX_PROC_SEND_FLAG=1;
+    }
+    else
+        HX_PROC_SEND_FLAG=0;
+    return ret;
+}
+
+static ssize_t himax_proc_register_write(struct file *file, const char *buff,
+        size_t len, loff_t *pos)
+{
+    char buf[80] = {0};
+    char buf_tmp[16];
+    uint8_t length = 0;
+    unsigned long result    = 0;
+    uint8_t loop_i          = 0;
+    uint16_t base           = 2;
+    char *data_str = NULL;
+    uint8_t w_data[20];
+    uint8_t x_pos[20];
+    uint8_t count = 0;
+
+    if (len >= 80)
+    {
+        I("%s: no command exceeds 80 chars.\n", __func__);
+        return -EFAULT;
+    }
+
+    if (copy_from_user(buf, buff, len))
+    {
+        return -EFAULT;
+    }
+
+    memset(buf_tmp, 0x0, sizeof(buf_tmp));
+    memset(w_data, 0x0, sizeof(w_data));
+    memset(x_pos, 0x0, sizeof(x_pos));
+
+    I("himax %s \n",buf);
+
+    if ((buf[0] == 'r' || buf[0] == 'w') && buf[1] == ':' && buf[2] == 'x')
+    {
+
+        length = strlen(buf);
+
+        //I("%s: length = %d.\n", __func__,length);
+        for (loop_i = 0; loop_i < length; loop_i++) //find postion of 'x'
+        {
+            if(buf[loop_i] == 'x')
+            {
+                x_pos[count] = loop_i;
+                count++;
+            }
+        }
+
+        data_str = strrchr(buf, 'x');
+        I("%s: %s.\n", __func__,data_str);
+        length = strlen(data_str+1) - 1;
+
+        if (buf[0] == 'r')
+        {
+            if (buf[3] == 'F' && buf[4] == 'E' && length == 4)
+            {
+                length = length - base;
+                cfg_flag = true;
+                memcpy(buf_tmp, data_str + base +1, length);
+            }
+            else
+            {
+                cfg_flag = false;
+                memcpy(buf_tmp, data_str + 1, length);
+            }
+
+            byte_length = length/2;
+            if (!kstrtoul(buf_tmp, 16, &result))
+            {
+                for (loop_i = 0 ; loop_i < byte_length ; loop_i++)
+                {
+                    register_command[loop_i] = (uint8_t)(result >> loop_i*8);
+                }
+            }
+        }
+        else if (buf[0] == 'w')
+        {
+            if (buf[3] == 'F' && buf[4] == 'E')
+            {
+                cfg_flag = true;
+                memcpy(buf_tmp, buf + base + 3, length);
+            }
+            else
+            {
+                cfg_flag = false;
+                memcpy(buf_tmp, buf + 3, length);
+            }
+            if(count < 3)
+            {
+                byte_length = length/2;
+                if (!kstrtoul(buf_tmp, 16, &result)) //command
+                {
+                    for (loop_i = 0 ; loop_i < byte_length ; loop_i++)
+                    {
+                        register_command[loop_i] = (uint8_t)(result >> loop_i*8);
+                    }
+                }
+                if (!kstrtoul(data_str+1, 16, &result)) //data
+                {
+                    for (loop_i = 0 ; loop_i < byte_length ; loop_i++)
+                    {
+                        w_data[loop_i] = (uint8_t)(result >> loop_i*8);
+                    }
+                }
+                himax_register_write(private_ts->client, register_command, byte_length, w_data, cfg_flag);
+            }
+            else
+            {
+                byte_length = x_pos[1] - x_pos[0] - 2;
+                for (loop_i = 0; loop_i < count; loop_i++) //parsing addr after 'x'
+                {
+                    memcpy(buf_tmp, buf + x_pos[loop_i] + 1, byte_length);
+                    //I("%s: buf_tmp = %s\n", __func__,buf_tmp);
+                    if (!kstrtoul(buf_tmp, 16, &result))
+                    {
+                        if(loop_i == 0)
+                        {
+                            register_command[loop_i] = (uint8_t)(result);
+                            //I("%s: register_command = %X\n", __func__,register_command[0]);
+                        }
+                        else
+                        {
+                            w_data[loop_i - 1] = (uint8_t)(result);
+                            //I("%s: w_data[%d] = %2X\n", __func__,loop_i - 1,w_data[loop_i - 1]);
+                        }
+                    }
+                }
+
+                byte_length = count - 1;
+                himax_register_write(private_ts->client, register_command, byte_length, &w_data[0], cfg_flag);
+            }
+        }
+        else
+            return len;
+
+    }
+    return len;
+}
+
+static struct file_operations himax_proc_register_ops =
+{
+    .owner = THIS_MODULE,
+    .read = himax_proc_register_read,
+    .write = himax_proc_register_write,
+};
+#endif
+
+#ifdef HX_TP_PROC_DIAG
+int32_t *getMutualBuffer(void)
+{
+    return diag_mutual;
+}
+int32_t *getMutualNewBuffer(void)
+{
+    return diag_mutual_new;
+}
+int32_t *getMutualOldBuffer(void)
+{
+    return diag_mutual_old;
+}
+int32_t *getSelfBuffer(void)
+{
+    return &diag_self[0];
+}
+uint8_t getXChannel(void)
+{
+    return x_channel;
+}
+uint8_t getYChannel(void)
+{
+    return y_channel;
+}
+uint8_t getDiagCommand(void)
+{
+    return g_diag_command;
+}
+void setXChannel(uint8_t x)
+{
+    x_channel = x;
+}
+void setYChannel(uint8_t y)
+{
+    y_channel = y;
+}
+void setMutualBuffer(void)
+{
+	diag_mutual = kzalloc(x_channel * y_channel * sizeof(int32_t), GFP_KERNEL);
+}
+void setMutualNewBuffer(void)
+{
+	diag_mutual_new = kzalloc(x_channel * y_channel * sizeof(int32_t), GFP_KERNEL);
+}
+void setMutualOldBuffer(void)
+{
+	diag_mutual_old = kzalloc(x_channel * y_channel * sizeof(int32_t), GFP_KERNEL);
+}
+
+#ifdef HX_TP_PROC_2T2R
+int32_t *getMutualBuffer_2(void)
+{
+    return diag_mutual_2;
+}
+uint8_t getXChannel_2(void)
+{
+    return x_channel_2;
+}
+uint8_t getYChannel_2(void)
+{
+    return y_channel_2;
+}
+void setXChannel_2(uint8_t x)
+{
+    x_channel_2 = x;
+}
+void setYChannel_2(uint8_t y)
+{
+    y_channel_2 = y;
+}
+void setMutualBuffer_2(void)
+{
+    diag_mutual_2 = kzalloc(x_channel_2 * y_channel_2 * sizeof(int32_t), GFP_KERNEL);
+}
+#endif
+
+#ifdef HX_TP_PROC_DIAG
+int himax_set_diag_cmd(struct himax_ic_data *ic_data,struct himax_report_data *hx_touch_data)
+{
+	int32_t *mutual_data;
+	int32_t *self_data;
+    int 	mul_num;
+    int 	self_num;
+    //int RawDataLen = 0;
+
+    hx_touch_data->diag_cmd = getDiagCommand();
+    if (hx_touch_data->diag_cmd >= 1 && hx_touch_data->diag_cmd <= 7)
+    {
+        //Check event stack CRC
+        if(!diag_check_sum(hx_touch_data))
+        {
+            goto bypass_checksum_failed_packet;
+        }
+#ifdef HX_TP_PROC_2T2R
+        if(Is_2T2R && (hx_touch_data->diag_cmd >= 4 && hx_touch_data->diag_cmd <= 6))
+        {
+            mutual_data = getMutualBuffer_2();
+            self_data 	= getSelfBuffer();
+
+            // initiallize the block number of mutual and self
+            mul_num = getXChannel_2() * getYChannel_2();
+
+#ifdef HX_EN_SEL_BUTTON
+            self_num = getXChannel_2() + getYChannel_2() + ic_data->HX_BT_NUM;
+#else
+            self_num = getXChannel_2() + getYChannel_2();
+#endif
+        }
+        else
+#endif
+        {
+            mutual_data = getMutualBuffer();
+            self_data 	= getSelfBuffer();
+
+            // initiallize the block number of mutual and self
+            mul_num = getXChannel() * getYChannel();
+
+#ifdef HX_EN_SEL_BUTTON
+            self_num = getXChannel() + getYChannel() + ic_data->HX_BT_NUM;
+#else
+            self_num = getXChannel() + getYChannel();
+#endif
+        }
+
+        diag_parse_raw_data(hx_touch_data,mul_num, self_num,hx_touch_data->diag_cmd, mutual_data,self_data);
+
+    }
+    else if (hx_touch_data->diag_cmd == 8)
+    {
+        memset(diag_coor, 0x00, sizeof(diag_coor));
+        memcpy(&(diag_coor[0]), &hx_touch_data->hx_coord_buf[0], hx_touch_data->touch_info_size);
+    }
+    //assign state info data
+    memcpy(&(hx_state_info[0]), &hx_touch_data->hx_state_info[0], 2);
+
+    return NO_ERR;
+
+bypass_checksum_failed_packet:
+    return 1;
+}
+#endif
+//#if defined(HX_DEBUG_LEVEL)
+void himax_log_touch_data(uint8_t *buf,struct himax_report_data *hx_touch_data)
+{
+    int loop_i = 0;
+    int print_size = 0;
+
+    if(!hx_touch_data->diag_cmd)
+        print_size = hx_touch_data->touch_info_size;
+    else
+        print_size = hx_touch_data->touch_all_size;
+
+    for (loop_i = 0; loop_i < print_size; loop_i+=8)
+    {
+        if((loop_i + 7) >= print_size)
+        {
+            I("%s: over flow\n",__func__);
+            break;
+        }
+        I("P %2d = 0x%2.2X P %2d = 0x%2.2X ", loop_i, buf[loop_i], loop_i + 1, buf[loop_i + 1]);
+        I("P %2d = 0x%2.2X P %2d = 0x%2.2X ", loop_i + 2, buf[loop_i + 2], loop_i + 3, buf[loop_i + 3]);
+        I("P %2d = 0x%2.2X P %2d = 0x%2.2X ", loop_i + 4, buf[loop_i + 4], loop_i + 5, buf[loop_i + 5]);
+        I("P %2d = 0x%2.2X P %2d = 0x%2.2X ", loop_i + 6, buf[loop_i + 6], loop_i + 7, buf[loop_i + 7]);
+        I("\n");
+    }
+}
+void himax_log_touch_event(int x,int y,int w,int loop_i,uint8_t EN_NoiseFilter,int touched)
+{
+    if(touched == HX_FINGER_ON)
+        I("Finger %d=> X:%d, Y:%d W:%d, Z:%d, F:%d, N:%d\n",loop_i + 1, x, y, w, w, loop_i + 1, EN_NoiseFilter);
+    else if(touched == HX_FINGER_LEAVE)
+        I("All Finger leave\n");
+    else
+        I("%s : wrong input!\n",__func__);
+}
+void himax_log_touch_int_devation(int touched)
+{
+
+
+    if(touched == HX_FINGER_ON)
+    {
+        getnstimeofday(&timeStart);
+        /* I(" Irq start time = %ld.%06ld s\n",
+		timeStart.tv_sec, timeStart.tv_nsec/1000); */
+    }
+    else if(touched == HX_FINGER_LEAVE)
+    {
+        getnstimeofday(&timeEnd);
+        timeDelta.tv_nsec = (timeEnd.tv_sec*1000000000+timeEnd.tv_nsec) - (timeStart.tv_sec*1000000000+timeStart.tv_nsec);
+        /*I("Irq finish time = %ld.%06ld s\n",
+		timeEnd.tv_sec, timeEnd.tv_nsec/1000);*/
+        I("Touch latency = %ld us\n", timeDelta.tv_nsec/1000);
+    }
+    else
+        I("%s : wrong input!\n",__func__);
+}
+void himax_log_touch_event_detail(struct himax_ts_data *ts,int x,int y,int w,int loop_i,uint8_t EN_NoiseFilter,int touched,uint16_t old_finger)
+{
+
+    if (touched == HX_FINGER_ON)
+    {
+        if (old_finger >> loop_i == 0)
+        {
+            if (ts->useScreenRes)
+            {
+                I("status: Screen:F:%02d Down, X:%d, Y:%d, W:%d, N:%d\n",
+                  loop_i+1, x * ts->widthFactor >> SHIFTBITS,
+                  y * ts->heightFactor >> SHIFTBITS, w, EN_NoiseFilter);
+            }
+            else
+            {
+                I("status: Raw:F:%02d Down, X:%d, Y:%d, W:%d, N:%d\n",
+                  loop_i+1, x, y, w, EN_NoiseFilter);
+            }
+        }
+    }
+    else if(touched == HX_FINGER_LEAVE)//if (old_finger >> loop_i == 1)
+    {
+        if (old_finger >> loop_i == 1)
+        {
+            if (ts->useScreenRes)
+            {
+                I("status: Screen:F:%02d Up, X:%d, Y:%d, N:%d\n",
+                  loop_i+1, ts->pre_finger_data[loop_i][0] * ts->widthFactor >> SHIFTBITS,
+                  ts->pre_finger_data[loop_i][1] * ts->heightFactor >> SHIFTBITS, EN_NoiseFilter); //Last_EN_NoiseFilter
+            }
+            else
+            {
+                I("status: Raw:F:%02d Up, X:%d, Y:%d, N:%d\n",
+                  loop_i+1, ts->pre_finger_data[loop_i][0],
+                  ts->pre_finger_data[loop_i][1], EN_NoiseFilter); //Last_EN_NoiseFilter
+            }
+        }
+    }
+    else
+    {
+        I("%s : wrong input!\n",__func__);
+    }
+}
+//#endif
+static ssize_t himax_diag_arrange_write(struct file *file, const char *buff,
+                                        size_t len, loff_t *pos)
+{
+
+    char buf[80] = {0};
+
+    if (len >= 80)
+    {
+        I("%s: no command exceeds 80 chars.\n", __func__);
+        return -EFAULT;
+    }
+    if (copy_from_user(buf, buff, len))
+    {
+        return -EFAULT;
+    }
+
+    g_diag_arr_num = buf[0] - '0';
+    I("%s: g_diag_arr_num = %d \n", __func__,g_diag_arr_num);
+
+    return len;
+}
+
+void himax_get_mutual_edge(void)
+{
+    int i = 0;
+    for(i = 0; i < (x_channel * y_channel); i++)
+    {
+        if(diag_mutual[i] > g_max_mutual)
+            g_max_mutual = diag_mutual[i];
+        if(diag_mutual[i] < g_min_mutual)
+            g_min_mutual = diag_mutual[i];
+    }
+}
+
+void himax_get_self_edge(void)
+{
+    int i = 0;
+    for(i = 0; i < (x_channel + y_channel); i++)
+    {
+        if(diag_self[i] > g_max_self)
+            g_max_self = diag_self[i];
+        if(diag_self[i] < g_min_self)
+            g_min_self = diag_self[i];
+    }
+}
+
+/* print first step which is row */
+static struct file_operations himax_proc_diag_arrange_ops =
+{
+    .owner = THIS_MODULE,
+    .write = himax_diag_arrange_write,
+};
+static void print_state_info(struct seq_file *s)
+{
+    //seq_printf(s, "State_info_2bytes:%3d, %3d\n",hx_state_info[0],hx_state_info[1]);
+    seq_printf(s, "ReCal = %d\t",hx_state_info[0] & 0x01);
+    seq_printf(s, "Palm = %d\t",hx_state_info[0]>>1 & 0x01);
+    seq_printf(s, "AC mode = %d\t",hx_state_info[0]>>2 & 0x01);
+    seq_printf(s, "Water = %d\n",hx_state_info[0]>>3 & 0x01);
+    seq_printf(s, "Glove = %d\t",hx_state_info[0]>>4 & 0x01);
+    seq_printf(s, "TX Hop = %d\t",hx_state_info[0]>>5 & 0x01 );
+    seq_printf(s, "Base Line = %d\t",hx_state_info[0]>>6 & 0x01);
+    seq_printf(s, "OSR Hop = %d\t",hx_state_info[1]>>3 & 0x01);
+    seq_printf(s, "KEY = %d\n",hx_state_info[1]>>4 & 0x0F);
+}
+
+static void himax_diag_arrange_print(struct seq_file *s, int i, int j, int transpose)
+{
+
+    if(transpose)
+        seq_printf(s, "%6d", diag_mutual[ j + i*x_channel]);
+    else
+        seq_printf(s, "%6d", diag_mutual[ i + j*x_channel]);
+}
+
+/* ready to print second step which is column*/
+static void himax_diag_arrange_inloop(struct seq_file *s, int in_init,int out_init,bool transpose, int j)
+{
+    int i;
+    int in_max = 0;
+
+    if(transpose)
+        in_max = y_channel;
+    else
+        in_max = x_channel;
+
+    if (in_init > 0) //bit0 = 1
+    {
+        for(i = in_init-1; i >= 0; i--)
+        {
+            himax_diag_arrange_print(s, i, j, transpose);
+        }
+        if(transpose)
+        {
+            if(out_init > 0)
+                seq_printf(s, " %5d\n", diag_self[j]);
+            else
+                seq_printf(s, " %5d\n", diag_self[x_channel - j - 1]);
+        }
+    }
+    else	//bit0 = 0
+    {
+        for (i = 0; i < in_max; i++)
+        {
+            himax_diag_arrange_print(s, i, j, transpose);
+        }
+        if(transpose)
+        {
+            if(out_init > 0)
+                seq_printf(s, " %5d\n", diag_self[x_channel - j - 1]);
+            else
+                seq_printf(s, " %5d\n", diag_self[j]);
+        }
+    }
+}
+
+/* print first step which is row */
+static void himax_diag_arrange_outloop(struct seq_file *s, int transpose, int out_init, int in_init)
+{
+    int j;
+    int out_max = 0;
+    int self_cnt = 0;
+
+    if(transpose)
+        out_max = x_channel;
+    else
+        out_max = y_channel;
+
+    if(out_init > 0) //bit1 = 1
+    {
+        self_cnt = 1;
+        for(j = out_init-1; j >= 0; j--)
+        {
+            seq_printf(s, "%3c%02d%c",'[', j + 1,']');
+            himax_diag_arrange_inloop(s, in_init, out_init, transpose, j);
+            if(!transpose)
+            {
+                seq_printf(s, " %5d\n", diag_self[y_channel + x_channel - self_cnt]);
+                self_cnt++;
+            }
+        }
+    }
+    else	//bit1 = 0
+    {
+        //self_cnt = x_channel;
+        for(j = 0; j < out_max; j++)
+        {
+            seq_printf(s, "%3c%02d%c",'[', j + 1,']');
+            himax_diag_arrange_inloop(s, in_init, out_init, transpose, j);
+            if(!transpose)
+            {
+                seq_printf(s, " %5d\n", diag_self[j + x_channel]);
+            }
+        }
+    }
+}
+
+/* determin the output format of diag */
+static void himax_diag_arrange(struct seq_file *s)
+{
+    int bit2,bit1,bit0;
+    int i;
+
+    /* rotate bit */
+    bit2 = g_diag_arr_num >> 2;
+    /* reverse Y */
+    bit1 = g_diag_arr_num >> 1 & 0x1;
+    /* reverse X */
+    bit0 = g_diag_arr_num & 0x1;
+
+    if (g_diag_arr_num < 4)
+    {
+        for (i = 0 ; i <= x_channel; i++)
+            seq_printf(s, "%3c%02d%c",'[', i,']');
+        seq_printf(s,"\n");
+        himax_diag_arrange_outloop(s, bit2, bit1 * y_channel, bit0 * x_channel);
+        seq_printf(s, "%6c",' ');
+        if(bit0 == 1)
+        {
+            for (i = x_channel - 1; i >= 0; i--)
+                seq_printf(s, "%6d", diag_self[i]);
+        }
+        else
+        {
+            for (i = 0; i < x_channel; i++)
+                seq_printf(s, "%6d", diag_self[i]);
+        }
+    }
+    else
+    {
+        for (i = 0 ; i <= y_channel; i++)
+            seq_printf(s, "%3c%02d%c",'[', i,']');
+        seq_printf(s,"\n");
+        himax_diag_arrange_outloop(s, bit2, bit1 * x_channel, bit0 * y_channel);
+        seq_printf(s, "%6c",' ');
+        if(bit1 == 1)
+        {
+            for (i = x_channel + y_channel - 1; i >= x_channel; i--)
+            {
+                seq_printf(s, "%6d", diag_self[i]);
+            }
+        }
+        else
+        {
+            for (i = x_channel; i < x_channel + y_channel; i++)
+            {
+                seq_printf(s, "%6d", diag_self[i]);
+            }
+        }
+    }
+}
+
+static void *himax_diag_seq_start(struct seq_file *s, loff_t *pos)
+{
+    if (*pos>=1) return NULL;
+    return (void *)((unsigned long) *pos+1);
+}
+
+static void *himax_diag_seq_next(struct seq_file *s, void *v, loff_t *pos)
+{
+    return NULL;
+}
+static void himax_diag_seq_stop(struct seq_file *s, void *v)
+{
+}
+static int himax_diag_seq_read(struct seq_file *s, void *v)
+{
+    size_t count = 0;
+    uint32_t loop_i;
+    uint16_t mutual_num, self_num, width;
+    int dsram_type = 0;
+
+    dsram_type = g_diag_command/10;
+
+#ifdef HX_TP_PROC_2T2R
+    if(Is_2T2R &&(g_diag_command >= 4 && g_diag_command <= 6))
+    {
+        mutual_num	= x_channel_2 * y_channel_2;
+        self_num	= x_channel_2 + y_channel_2; //don't add KEY_COUNT
+        width		= x_channel_2;
+        seq_printf(s, "ChannelStart: %4d, %4d\n\n", x_channel_2, y_channel_2);
+    }
+    else
+#endif
+    {
+        mutual_num	= x_channel * y_channel;
+        self_num	= x_channel + y_channel; //don't add KEY_COUNT
+        width		= x_channel;
+        seq_printf(s, "ChannelStart: %4d, %4d\n\n", x_channel, y_channel);
+    }
+
+    // start to show out the raw data in adb shell
+    if ((g_diag_command >= 1 && g_diag_command <= 3) || (g_diag_command == 7))
+    {
+        himax_diag_arrange(s);
+        seq_printf(s, "\n");
+#ifdef HX_EN_SEL_BUTTON
+        seq_printf(s, "\n");
+        for (loop_i = 0; loop_i < ic_data->HX_BT_NUM; loop_i++)
+            seq_printf(s, "%6d", diag_self[ic_data->HX_RX_NUM + ic_data->HX_TX_NUM + loop_i]);
+#endif
+        seq_printf(s, "ChannelEnd");
+        seq_printf(s, "\n");
+    }
+#ifdef HX_TP_PROC_2T2R
+    else if(Is_2T2R && g_diag_command >= 4 && g_diag_command <= 6)
+    {
+        for (loop_i = 0; loop_i < mutual_num; loop_i++)
+        {
+            seq_printf(s, "%4d", diag_mutual_2[loop_i]);
+            if ((loop_i % width) == (width - 1))
+                seq_printf(s, " %4d\n", diag_self[width + loop_i/width]);
+        }
+        seq_printf(s, "\n");
+        for (loop_i = 0; loop_i < width; loop_i++)
+        {
+            seq_printf(s, "%4d", diag_self[loop_i]);
+            if (((loop_i) % width) == (width - 1))
+                seq_printf(s, "\n");
+        }
+
+#ifdef HX_EN_SEL_BUTTON
+        seq_printf(s, "\n");
+        for (loop_i = 0; loop_i < HX_BT_NUM; loop_i++)
+            seq_printf(s, "%4d", diag_self[ic_data->HX_RX_NUM_2 + ic_data->HX_TX_NUM_2 + loop_i]);
+#endif
+        seq_printf(s, "ChannelEnd");
+        seq_printf(s, "\n");
+    }
+#endif
+    else if (g_diag_command == 8)
+    {
+        for (loop_i = 0; loop_i < 128 ; loop_i++)
+        {
+            if ((loop_i % 16) == 0)
+                seq_printf(s, "LineStart:");
+            seq_printf(s, "%4x", diag_coor[loop_i]);
+            if ((loop_i % 16) == 15)
+                seq_printf(s, "\n");
+        }
+    }
+    else if (dsram_type > 0 && dsram_type <= 8)
+    {
+        himax_diag_arrange(s);
+        seq_printf(s, "ChannelEnd");
+        seq_printf(s, "\n");
+    }
+    if((g_diag_command >= 1 && g_diag_command <= 7) || dsram_type > 0)
+    {
+        /* print Mutual/Slef Maximum and Minimum */
+        himax_get_mutual_edge();
+        himax_get_self_edge();
+        seq_printf(s, "Mutual Max:%3d, Min:%3d\n",g_max_mutual,g_min_mutual);
+        seq_printf(s, "Self Max:%3d, Min:%3d\n",g_max_self,g_min_self);
+
+        /* recovery status after print*/
+        g_max_mutual = 0;
+        g_min_mutual = 255;
+        g_max_self = 0;
+        g_min_self = 255;
+    }
+    /*pring state info*/
+    print_state_info(s);
+    return count;
+}
+static struct seq_operations himax_diag_seq_ops =
+{
+    .start	= himax_diag_seq_start,
+    .next	= himax_diag_seq_next,
+    .stop	= himax_diag_seq_stop,
+    .show	= himax_diag_seq_read,
+};
+static int himax_diag_proc_open(struct inode *inode, struct file *file)
+{
+    return seq_open(file, &himax_diag_seq_ops);
+};
+bool DSRAM_Flag = false;
+
+//DSRAM thread
+void himax_ts_diag_func(void)
+{
+    int i=0, j=0;
+    unsigned int index = 0;
+    int total_size = ic_data->HX_TX_NUM * ic_data->HX_RX_NUM * 2;
+    uint8_t  info_data[total_size];
+	int32_t *mutual_data;
+	int32_t *mutual_data_new;
+	int32_t *mutual_data_old;
+	int32_t new_data;
+    /* 1:common dsram,2:100 frame Max,3:N-(N-1)frame */
+    int dsram_type = 0;
+    char temp_buf[20];
+    char write_buf[total_size*3];
+
+    mutual_data = NULL;
+    mutual_data_new = NULL;
+    mutual_data_old = NULL;
+    memset(write_buf, '\0', sizeof(write_buf));
+
+    dsram_type = g_diag_command/10;
+
+    I("%s:Entering g_diag_command=%d\n!",__func__,g_diag_command);
+
+    if(dsram_type == 8)
+    {
+        dsram_type = 1;
+        I("%s Sorting Mode run sram type1 ! \n",__func__);
+    }
+
+    himax_burst_enable(private_ts->client, 1);
+    if(dsram_type == 1 || dsram_type == 2 || dsram_type == 4)
+    {
+        mutual_data = getMutualBuffer();
+    }
+    else if(dsram_type == 3)
+    {
+        mutual_data = getMutualBuffer();
+        mutual_data_new = getMutualNewBuffer();
+        mutual_data_old = getMutualOldBuffer();
+    }
+    himax_get_DSRAM_data(private_ts->client, info_data);
+
+    index = 0;
+    for (i = 0; i < ic_data->HX_TX_NUM; i++)
+    {
+        for (j = 0; j < ic_data->HX_RX_NUM; j++)
+        {
+			new_data = (info_data[index + 1] << 8 | info_data[index]);
+            if(dsram_type == 1 || dsram_type == 4)
+            {
+                mutual_data[i*ic_data->HX_RX_NUM+j] = new_data;
+            }
+            else if(dsram_type == 2)
+            {
+                //Keep max data for 100 frame
+                if(mutual_data[i * ic_data->HX_RX_NUM + j] < new_data)
+                    mutual_data[i * ic_data->HX_RX_NUM + j] = new_data;
+            }
+            else if(dsram_type == 3)
+            {
+                //Cal data for [N]-[N-1] frame
+                mutual_data_new[i * ic_data->HX_RX_NUM + j] = new_data;
+                mutual_data[i * ic_data->HX_RX_NUM + j] = mutual_data_new[i * ic_data->HX_RX_NUM + j] - mutual_data_old[i * ic_data->HX_RX_NUM + j];
+            }
+            index += 2;
+        }
+    }
+    if(dsram_type == 3)
+    {
+        memcpy(mutual_data_old,mutual_data_new,x_channel * y_channel * sizeof(int16_t)); //copy N data to N-1 array
+    }
+    diag_max_cnt++;
+    if(dsram_type == 1 || dsram_type == 3 )
+    {
+        queue_delayed_work(private_ts->himax_diag_wq, &private_ts->himax_diag_delay_wrok, 1/10*HZ);
+    }
+    else if(dsram_type == 4)
+    {
+        for(i = 0; i < x_channel * y_channel; i++)
+        {
+            memset(temp_buf, '\0', sizeof(temp_buf));
+            if(i == (x_channel * y_channel - 1))
+                snprintf(temp_buf, sizeof(temp_buf), "%4d\n\n", mutual_data[i]);
+            //I("%s :temp_buf = %s\n",__func__,temp_buf);
+            else if(i % x_channel == (x_channel - 1))
+                snprintf(temp_buf, sizeof(temp_buf), "%4d\n", mutual_data[i]);
+            else
+                snprintf(temp_buf, sizeof(temp_buf), "%4d\t", mutual_data[i]);
+            //I("%s :mutual_data[%d] = %d, temp_buf = %s\n",__func__, i, mutual_data[i], temp_buf);
+            strcat(write_buf, temp_buf);
+        }
+
+        //save raw data in file
+        if (!IS_ERR(diag_sram_fn))
+        {
+            I("%s create file and ready to write\n",__func__);
+            diag_sram_fn->f_op->write(diag_sram_fn, write_buf, sizeof(write_buf), &diag_sram_fn->f_pos);
+            write_counter++;
+            if(write_counter < write_max_count)
+                queue_delayed_work(private_ts->himax_diag_wq, &private_ts->himax_diag_delay_wrok, 1/10*HZ);
+            else
+            {
+                filp_close(diag_sram_fn,NULL);
+                write_counter = 0;
+            }
+        }
+    }
+    else if(dsram_type == 2)
+    {
+        if(diag_max_cnt > 100) //count for 100 frame
+        {
+            //Clear DSRAM flag
+            DSRAM_Flag = false;
+
+            //Enable ISR
+            himax_int_enable(private_ts->client->irq,1);
+
+            //=====================================
+            // test result command : 0x8002_0324 ==> 0x00
+            //=====================================
+            himax_diag_register_set(private_ts->client, 0x00);
+        }
+        else
+        {
+            queue_delayed_work(private_ts->himax_diag_wq, &private_ts->himax_diag_delay_wrok, 1/10*HZ);
+        }
+    }
+}
+
+static ssize_t himax_diag_write(struct file *filp, const char __user *buff, size_t len, loff_t *data)
+{
+    char messages[80] = {0};
+
+    uint8_t command[2] = {0x00, 0x00};
+    uint8_t receive[1];
+
+    /* 0: common , other: dsram*/
+    int storage_type = 0;
+    /* 1:IIR,2:DC,3:Bank,4:IIR2,5:IIR2_N,6:FIR2,7:Baseline,8:dump coord */
+    int rawdata_type = 0;
+
+    memset(receive, 0x00, sizeof(receive));
+
+    if (len >= 80)
+    {
+        I("%s: no command exceeds 80 chars.\n", __func__);
+        return -EFAULT;
+    }
+    if (copy_from_user(messages, buff, len))
+    {
+        return -EFAULT;
+    }
+
+    I("%s:g_switch_mode = %d\n",__func__,g_switch_mode);
+
+    if (messages[1] == 0x0A)
+    {
+        g_diag_command =messages[0] - '0';
+    }
+    else
+    {
+        g_diag_command =(messages[0] - '0')*10 + (messages[1] - '0');
+    }
+
+    storage_type = himax_determin_diag_storage(g_diag_command);
+    rawdata_type = himax_determin_diag_rawdata(g_diag_command);
+
+    if(g_diag_command > 0 && rawdata_type == 0)
+    {
+        I("[Himax]g_diag_command=0x%x ,storage_type=%d, rawdata_type=%d! Maybe no support!\n"
+          ,g_diag_command,storage_type,rawdata_type);
+        g_diag_command = 0x00;
+    }
+    else
+        I("[Himax]g_diag_command=0x%x ,storage_type=%d, rawdata_type=%d\n",g_diag_command,storage_type,rawdata_type);
+
+    if (storage_type == 0 && rawdata_type > 0 && rawdata_type < 8)
+    {
+        I("%s,common\n",__func__);
+        if(DSRAM_Flag)
+        {
+            //1. Clear DSRAM flag
+            DSRAM_Flag = false;
+            //2. Stop DSRAM thread
+            cancel_delayed_work(&private_ts->himax_diag_delay_wrok);
+            //3. Enable ISR
+            himax_int_enable(private_ts->client->irq,1);
+
+            /*(4) FW leave sram and return to event stack*/
+            himax_return_event_stack(private_ts->client);
+        }
+
+        if(g_switch_mode == 2)
+        {
+            himax_idle_mode(private_ts->client,0);
+            g_switch_mode = himax_switch_mode(private_ts->client,0);
+        }
+
+        if(g_diag_command == 0x04)
+        {
+#if defined(HX_TP_PROC_2T2R)
+            command[0] = g_diag_command;
+#else
+            g_diag_command = 0x00;
+            command[0] = 0x00;
+#endif
+        }
+        else
+            command[0] = g_diag_command;
+        himax_diag_register_set(private_ts->client, command[0]);
+    }
+    else if (storage_type > 0 && storage_type < 8 && rawdata_type > 0 && rawdata_type < 8)
+    {
+        I("%s,dsram\n",__func__);
+
+        diag_max_cnt = 0;
+		memset(diag_mutual, 0x00, x_channel * y_channel * sizeof(int32_t)); //Set data 0 everytime
+
+        //0. set diag flag
+        if(DSRAM_Flag)
+        {
+            //(1) Clear DSRAM flag
+            DSRAM_Flag = false;
+
+            //(2) Stop DSRAM thread
+            cancel_delayed_work(&private_ts->himax_diag_delay_wrok);
+            //(3) Enable ISR
+            himax_int_enable(private_ts->client->irq,1);
+
+            /*(4) FW leave sram and return to event stack*/
+            himax_return_event_stack(private_ts->client);
+        }
+        /* close sorting if turn on*/
+        if(g_switch_mode == 2)
+        {
+            himax_idle_mode(private_ts->client,0);
+            g_switch_mode = himax_switch_mode(private_ts->client,0);
+        }
+
+        switch(rawdata_type)
+        {
+        case 1:
+            command[0] = 0x09;  //IIR
+            break;
+        case 2:
+            command[0] = 0x0A;  //RAWDATA
+            break;
+        case 7:
+            command[0] = 0x0B;   //DC
+            break;
+        default:
+            command[0] = 0x00;
+            E("%s: Sram no support this type !\n",__func__);
+            break;
+        }
+        himax_diag_register_set(private_ts->client, command[0]);
+
+        //1. Disable ISR
+        himax_int_enable(private_ts->client->irq,0);
+
+        //Open file for save raw data log
+        if (storage_type == 4)
+        {
+            switch (rawdata_type)
+            {
+            case 1:
+                diag_sram_fn = filp_open(IIR_DUMP_FILE,O_CREAT | O_WRONLY,0);
+                break;
+            case 2:
+                diag_sram_fn = filp_open(DC_DUMP_FILE,O_CREAT | O_WRONLY,0);
+                break;
+            case 3:
+                diag_sram_fn = filp_open(BANK_DUMP_FILE,O_CREAT | O_WRONLY,0);
+                break;
+            default:
+                I("%s raw data type is not true. raw data type is %d \n",__func__, rawdata_type);
+            }
+        }
+
+        //2. Start DSRAM thread
+        queue_delayed_work(private_ts->himax_diag_wq, &private_ts->himax_diag_delay_wrok, 2*HZ/100);
+
+        I("%s: Start get raw data in DSRAM\n", __func__);
+        if (storage_type == 4)
+            msleep(6000);
+        //3. Set DSRAM flag
+        DSRAM_Flag = true;
+
+
+    }
+    else if(storage_type == 8)
+    {
+        I("Soritng mode!\n");
+
+        if(DSRAM_Flag)
+        {
+            //1. Clear DSRAM flag
+            DSRAM_Flag = false;
+            //2. Stop DSRAM thread
+            cancel_delayed_work(&private_ts->himax_diag_delay_wrok);
+            //3. Enable ISR
+            himax_int_enable(private_ts->client->irq,1);
+
+            /*(4) FW leave sram and return to event stack*/
+            himax_return_event_stack(private_ts->client);
+        }
+
+        himax_idle_mode(private_ts->client,1);
+        g_switch_mode = himax_switch_mode(private_ts->client,1);
+        if(g_switch_mode == 2)
+        {
+            if(rawdata_type == 1)
+                command[0] = 0x09; //IIR
+            else if(rawdata_type == 2)
+                command[0] = 0x0A; //DC
+            else if(rawdata_type == 7)
+                command[0] = 0x08; //BASLINE
+            else
+            {
+                command[0] = 0x00;
+                E("%s: Now Sorting Mode does not support this command=%d\n",__func__,g_diag_command);
+            }
+            himax_diag_register_set(private_ts->client, command[0]);
+        }
+
+        queue_delayed_work(private_ts->himax_diag_wq, &private_ts->himax_diag_delay_wrok, 2*HZ/100);
+        DSRAM_Flag = true;
+
+    }
+    else
+    {
+        //set diag flag
+        if(DSRAM_Flag)
+        {
+            I("return and cancel sram thread!\n");
+            //(1) Clear DSRAM flag
+            DSRAM_Flag = false;
+
+            //(2) Stop DSRAM thread
+            cancel_delayed_work(&private_ts->himax_diag_delay_wrok);
+            //(3) Enable ISR
+            himax_int_enable(private_ts->client->irq,1);
+
+            /*(4) FW leave sram and return to event stack*/
+            himax_return_event_stack(private_ts->client);
+        }
+
+        if(g_switch_mode == 2)
+        {
+            himax_idle_mode(private_ts->client,0);
+            g_switch_mode = himax_switch_mode(private_ts->client,0);
+        }
+
+        if(g_diag_command != 0x00)
+        {
+
+            E("[Himax]g_diag_command error!diag_command=0x%x so reset\n",g_diag_command);
+            command[0] = 0x00;
+            if(g_diag_command != 0x08)
+                g_diag_command = 0x00;
+            himax_diag_register_set(private_ts->client, command[0]);
+        }
+        else
+        {
+            command[0] = 0x00;
+            g_diag_command = 0x00;
+            himax_diag_register_set(private_ts->client, command[0]);
+            I("return to normal g_diag_command=0x%x\n",g_diag_command);
+        }
+    }
+    return len;
+}
+
+static struct file_operations himax_proc_diag_ops =
+{
+    .owner = THIS_MODULE,
+    .open = himax_diag_proc_open,
+    .read = seq_read,
+    .write = himax_diag_write,
+};
+#endif
+
+#ifdef HX_TP_PROC_RESET
+static ssize_t himax_reset_write(struct file *file, const char *buff,
+                                 size_t len, loff_t *pos)
+{
+    char buf_tmp[12];
+
+    if (len >= 12)
+    {
+        I("%s: no command exceeds 12 chars.\n", __func__);
+        return -EFAULT;
+    }
+    if (copy_from_user(buf_tmp, buff, len))
+    {
+        return -EFAULT;
+    }
+#ifdef HX_RST_PIN_FUNC
+    if (buf_tmp[0] == '1')
+        himax_ic_reset(false,false);
+    else if (buf_tmp[0] == '2')
+        himax_ic_reset(false,true);
+    else if (buf_tmp[0] == '3')
+        himax_ic_reset(true,false);
+    else if (buf_tmp[0] == '4')
+        himax_ic_reset(true,true);
+    //else if (buf_tmp[0] == '5')
+    //	ESD_HW_REST();
+#endif
+    return len;
+}
+
+static struct file_operations himax_proc_reset_ops =
+{
+    .owner = THIS_MODULE,
+    .write = himax_reset_write,
+};
+#endif
+
+#ifdef HX_TP_PROC_DEBUG
+static ssize_t himax_debug_read(struct file *file, char *buf,
+                                size_t len, loff_t *pos)
+{
+    size_t count = 0;
+    char *temp_buf;
+
+    temp_buf = kzalloc(len,GFP_KERNEL);
+
+    if(!HX_PROC_SEND_FLAG)
+    {
+        if (debug_level_cmd == 't')
+        {
+            if (fw_update_complete)
+            {
+                count += sprintf(temp_buf, "FW Update Complete ");
+            }
+            else
+            {
+                count += sprintf(temp_buf, "FW Update Fail ");
+            }
+        }
+        else if (debug_level_cmd == 'h')
+        {
+            if (handshaking_result == 0)
+            {
+                count += sprintf(temp_buf, "Handshaking Result = %d (MCU Running)\n",handshaking_result);
+            }
+            else if (handshaking_result == 1)
+            {
+                count += sprintf(temp_buf, "Handshaking Result = %d (MCU Stop)\n",handshaking_result);
+            }
+            else if (handshaking_result == 2)
+            {
+                count += sprintf(temp_buf, "Handshaking Result = %d (I2C Error)\n",handshaking_result);
+            }
+            else
+            {
+                count += sprintf(temp_buf, "Handshaking Result = error \n");
+            }
+        }
+        else if (debug_level_cmd == 'v')
+        {
+            count += sprintf(temp_buf + count, "FW_VER = 0x%2.2X \n",ic_data->vendor_fw_ver);
+
+            if(IC_TYPE < 8)
+                count += sprintf(temp_buf + count, "CONFIG_VER = 0x%2.2X \n",ic_data->vendor_config_ver);
+            else
+            {
+                count += sprintf(temp_buf + count, "TOUCH_VER = 0x%2.2X \n",ic_data->vendor_touch_cfg_ver);
+                count += sprintf(temp_buf + count, "DISPLAY_VER = 0x%2.2X \n",ic_data->vendor_display_cfg_ver);
+            }
+            if(ic_data->vendor_cid_maj_ver < 0 && ic_data->vendor_cid_min_ver < 0)
+                count += sprintf(temp_buf + count, "CID_VER = NULL\n");
+            else
+                count += sprintf(temp_buf + count, "CID_VER = 0x%2.2X \n",(ic_data->vendor_cid_maj_ver << 8 | ic_data->vendor_cid_min_ver));
+
+            if(ic_data->vendor_panel_ver < 0)
+                count += sprintf(temp_buf + count, "PANEL_VER = NULL\n");
+            else
+                count += sprintf(temp_buf + count, "PANEL_VER = 0x%2.2X \n",ic_data->vendor_panel_ver);
+
+            count += sprintf(temp_buf + count, "\n");
+
+            count += sprintf(temp_buf + count, "Himax Touch Driver Version:\n");
+            count += sprintf(temp_buf + count, "%s \n", HIMAX_DRIVER_VER);
+        }
+        else if (debug_level_cmd == 'd')
+        {
+            count += sprintf(temp_buf + count, "Himax Touch IC Information :\n");
+            switch(IC_TYPE)
+            {
+            case HX_85XX_D_SERIES_PWON:
+                count += sprintf(temp_buf + count, "IC Type : HX852xD\n");
+                break;
+            case HX_85XX_E_SERIES_PWON:
+                count += sprintf(temp_buf + count, "IC Type : HX852xE\n");
+                break;
+            case HX_85XX_ES_SERIES_PWON:
+                count += sprintf(temp_buf + count, "IC Type : HX852xES\n");
+                break;
+            case HX_85XX_F_SERIES_PWON:
+                count += sprintf(temp_buf + count, "IC Type : HX852xF\n");
+                break;
+            case HX_83100A_SERIES_PWON:
+                count += sprintf(temp_buf + count, "IC Type : HX83100A\n");
+                break;
+            case HX_83102A_SERIES_PWON:
+                count += sprintf(temp_buf + count, "IC Type : HX83102A\n");
+                break;
+            case HX_83102B_SERIES_PWON:
+                count += sprintf(temp_buf + count, "IC Type : HX83102B\n");
+                break;
+            case HX_83110A_SERIES_PWON:
+                count += sprintf(temp_buf + count, "IC Type : HX83110A\n");
+                break;
+            case HX_83110B_SERIES_PWON:
+                count += sprintf(temp_buf + count, "IC Type : HX83110B\n");
+                break;
+            case HX_83111B_SERIES_PWON:
+                count += sprintf(temp_buf + count, "IC Type : HX83111B\n");
+                break;
+            case HX_83112A_SERIES_PWON:
+                count += sprintf(temp_buf + count, "IC Type : HX83112A\n");
+                break;
+            case HX_83112B_SERIES_PWON:
+                count += sprintf(temp_buf + count, "IC Type : HX83112B\n");
+                break;
+            default:
+                count += sprintf(temp_buf + count, "IC Type error.\n");
+            }
+            switch(IC_CHECKSUM)
+            {
+            case HX_TP_BIN_CHECKSUM_SW:
+                count += sprintf(temp_buf + count, "IC Checksum : SW\n");
+                break;
+            case HX_TP_BIN_CHECKSUM_HW:
+                count += sprintf(temp_buf + count, "IC Checksum : HW\n");
+                break;
+            case HX_TP_BIN_CHECKSUM_CRC:
+                count += sprintf(temp_buf + count, "IC Checksum : CRC\n");
+                break;
+            default:
+                count += sprintf(temp_buf + count, "IC Checksum error.\n");
+            }
+
+            if (ic_data->HX_INT_IS_EDGE)
+            {
+                count += sprintf(temp_buf + count, "Driver register Interrupt : EDGE TIRGGER\n");
+            }
+            else
+            {
+                count += sprintf(temp_buf + count, "Driver register Interrupt : LEVEL TRIGGER\n");
+            }
+            if (private_ts->protocol_type == PROTOCOL_TYPE_A)
+            {
+                count += sprintf(temp_buf + count, "Protocol : TYPE_A\n");
+            }
+            else
+            {
+                count += sprintf(temp_buf + count, "Protocol : TYPE_B\n");
+            }
+            count += sprintf(temp_buf + count, "RX Num : %d\n",ic_data->HX_RX_NUM);
+            count += sprintf(temp_buf + count, "TX Num : %d\n",ic_data->HX_TX_NUM);
+            count += sprintf(temp_buf + count, "BT Num : %d\n",ic_data->HX_BT_NUM);
+            count += sprintf(temp_buf + count, "X Resolution : %d\n",ic_data->HX_X_RES);
+            count += sprintf(temp_buf + count, "Y Resolution : %d\n",ic_data->HX_Y_RES);
+            count += sprintf(temp_buf + count, "Max Point : %d\n",ic_data->HX_MAX_PT);
+            count += sprintf(temp_buf + count, "XY reverse : %d\n",ic_data->HX_XY_REVERSE);
+#ifdef HX_TP_PROC_2T2R
+            if(Is_2T2R)
+            {
+                count += sprintf(temp_buf + count, "2T2R panel\n");
+                count += sprintf(temp_buf + count, "RX Num_2 : %d\n",HX_RX_NUM_2);
+                count += sprintf(temp_buf + count, "TX Num_2 : %d\n",HX_TX_NUM_2);
+            }
+#endif
+        }
+        else if (debug_level_cmd == 'i')
+        {
+            if(himax_read_i2c_status(private_ts->client))
+                count += sprintf(temp_buf + count, "I2C communication is bad.\n");
+            else
+                count += sprintf(temp_buf + count, "I2C communication is good.\n");
+        }
+        else if (debug_level_cmd == 'n')
+        {
+            if(himax_read_ic_trigger_type(private_ts->client) == 1) //Edgd = 1, Level = 0
+                count += sprintf(temp_buf + count, "IC Interrupt type is edge trigger.\n");
+            else if(himax_read_ic_trigger_type(private_ts->client) == 0)
+                count += sprintf(temp_buf + count, "IC Interrupt type is level trigger.\n");
+            else
+                count += sprintf(temp_buf + count, "Unkown IC trigger type.\n");
+            if (ic_data->HX_INT_IS_EDGE)
+                count += sprintf(temp_buf + count, "Driver register Interrupt : EDGE TIRGGER\n");
+            else
+                count += sprintf(temp_buf + count, "Driver register Interrupt : LEVEL TRIGGER\n");
+        }
+#if defined(HX_CHIP_STATUS_MONITOR)
+        else if(debug_level_cmd=='c')
+        {
+            count += sprintf(temp_buf + count, "chip_monitor :%d\n", g_chip_monitor_data->HX_CHIP_MONITOR_EN);
+        }
+#endif
+        if(copy_to_user(buf, temp_buf, len))
+            I("%s,here:%d\n",__func__,__LINE__);
+        kfree(temp_buf);
+        HX_PROC_SEND_FLAG=1;
+    }
+    else
+        HX_PROC_SEND_FLAG=0;
+    return count;
+}
+
+static ssize_t himax_debug_write(struct file *file, const char *buff,
+                                 size_t len, loff_t *pos)
+{
+    struct file* filp = NULL;
+    mm_segment_t oldfs;
+    int result = 0;
+    char fileName[128];
+    char buf[80] = {0};
+    int fw_type = 0;
+/*[Arima_7947][allen_yu] Upgrade himax fw to CID101 and modify node of manual update 20171121 begin*/
+    struct inode *inode;
+    loff_t file_len = 0;
+/*[Arima_7947][allen_yu] 20171121 end*/
+
+    if (len >= 80)
+    {
+        I("%s: no command exceeds 80 chars.\n", __func__);
+        return -EFAULT;
+    }
+    if (copy_from_user(buf, buff, len))
+    {
+        return -EFAULT;
+    }
+
+    if ( buf[0] == 'h') //handshaking
+    {
+        debug_level_cmd = buf[0];
+
+        himax_int_enable(private_ts->client->irq,0);
+
+        handshaking_result = himax_hand_shaking(private_ts->client); //0:Running, 1:Stop, 2:I2C Fail
+
+        himax_int_enable(private_ts->client->irq,1);
+
+        return len;
+    }
+
+    else if ( buf[0] == 'v') //firmware version
+    {
+        himax_int_enable(private_ts->client->irq,0);
+#ifdef HX_RST_PIN_FUNC
+        himax_ic_reset(false,false);
+#endif
+        debug_level_cmd = buf[0];
+        himax_read_FW_ver(private_ts->client);
+#ifdef HX_RST_PIN_FUNC
+        himax_ic_reset(true,false);
+#endif
+        himax_int_enable(private_ts->client->irq,1);
+        //himax_check_chip_version();
+        return len;
+    }
+
+    else if ( buf[0] == 'd') //ic information
+    {
+        debug_level_cmd = buf[0];
+        return len;
+    }
+
+    else if (buf[0] == 't')
+    {
+
+        himax_int_enable(private_ts->client->irq,0);
+
+#ifdef HX_CHIP_STATUS_MONITOR
+        g_chip_monitor_data->HX_CHIP_POLLING_COUNT = 0;
+        g_chip_monitor_data->HX_CHIP_MONITOR_EN = 0;
+        cancel_delayed_work_sync(&private_ts->himax_chip_monitor);
+#endif
+
+        debug_level_cmd 		= buf[0];
+        fw_update_complete		= false;
+
+        memset(fileName, 0, 128);
+        // parse the file name
+        snprintf(fileName, len-2, "%s", &buf[2]);
+        I("%s: upgrade from file(%s) start!\n", __func__, fileName);
+        // open file
+        filp = filp_open(fileName, O_RDONLY, 0);
+        if (IS_ERR(filp))
+        {
+            E("%s: open firmware file failed\n", __func__);
+            goto firmware_upgrade_done;
+            //return len;
+        }
+/*[Arima_7947][allen_yu] Upgrade himax fw to CID101 and modify node of manual update 20171121 begin*/
+	    inode = filp->f_inode;
+	    file_len = inode->i_size;
+/*[Arima_7947][allen_yu] 20171121 end*/
+        oldfs = get_fs();
+        set_fs(get_ds());
+
+/*[Arima_7947][allen_yu] Upgrade himax fw to CID101 and modify node of manual update 20171121 begin*/
+        // read the latest firmware binary file
+        result=vfs_read(filp,upgrade_fw,file_len, &filp->f_pos);
+        if (result < 0)
+        {
+            E("%s: read firmware file failed\n", __func__);
+            goto firmware_upgrade_done;
+            //return len;
+        }
+/*[Arima_7947][allen_yu] 20171121 end*/
+
+        set_fs(oldfs);
+        filp_close(filp, NULL);
+
+        I("%s: FW image,len %d: %02X, %02X, %02X, %02X\n", __func__, result, upgrade_fw[0], upgrade_fw[1], upgrade_fw[2], upgrade_fw[3]);
+
+        if (result > 0)
+        {
+            fw_type = result/1024;
+            // start to upgrade
+            himax_int_enable(private_ts->client->irq,0);
+            I("Now FW size is : %dk\n",fw_type);
+            switch(fw_type)
+            {
+            case 32:
+                if (fts_ctpm_fw_upgrade_with_sys_fs_32k(private_ts->client,upgrade_fw, result, false) == 0)
+                {
+                    E("%s: TP upgrade error, line: %d\n", __func__, __LINE__);
+                    fw_update_complete = false;
+                }
+                else
+                {
+                    I("%s: TP upgrade OK, line: %d\n", __func__, __LINE__);
+                    fw_update_complete = true;
+                }
+                break;
+            case 60:
+                if (fts_ctpm_fw_upgrade_with_sys_fs_60k(private_ts->client,upgrade_fw, result, false) == 0)
+                {
+                    E("%s: TP upgrade error, line: %d\n", __func__, __LINE__);
+                    fw_update_complete = false;
+                }
+                else
+                {
+                    I("%s: TP upgrade OK, line: %d\n", __func__, __LINE__);
+                    fw_update_complete = true;
+                }
+                break;
+            case 64:
+                if (fts_ctpm_fw_upgrade_with_sys_fs_64k(private_ts->client,upgrade_fw, result, false) == 0)
+                {
+                    E("%s: TP upgrade error, line: %d\n", __func__, __LINE__);
+                    fw_update_complete = false;
+                }
+                else
+                {
+                    I("%s: TP upgrade OK, line: %d\n", __func__, __LINE__);
+                    fw_update_complete = true;
+                }
+                break;
+            case 124:
+                if (fts_ctpm_fw_upgrade_with_sys_fs_124k(private_ts->client,upgrade_fw, result, false) == 0)
+                {
+                    E("%s: TP upgrade error, line: %d\n", __func__, __LINE__);
+                    fw_update_complete = false;
+                }
+                else
+                {
+                    I("%s: TP upgrade OK, line: %d\n", __func__, __LINE__);
+                    fw_update_complete = true;
+                }
+                break;
+            case 128:
+                if (fts_ctpm_fw_upgrade_with_sys_fs_128k(private_ts->client,upgrade_fw, result, false) == 0)
+                {
+                    E("%s: TP upgrade error, line: %d\n", __func__, __LINE__);
+                    fw_update_complete = false;
+                }
+                else
+                {
+                    I("%s: TP upgrade OK, line: %d\n", __func__, __LINE__);
+                    fw_update_complete = true;
+                }
+                break;
+            default:
+                E("%s: Flash command fail: %d\n", __func__, __LINE__);
+                fw_update_complete = false;
+                break;
+            }
+            goto firmware_upgrade_done;
+            //return count;
+        }
+    }
+    else if (buf[0] == 'i' && buf[1] == '2' && buf[2] == 'c') //i2c commutation
+    {
+        debug_level_cmd = 'i';
+        return len;
+    }
+
+    else if (buf[0] == 'i' && buf[1] == 'n' && buf[2] == 't') //INT trigger
+    {
+        debug_level_cmd = 'n';
+        return len;
+    }
+#if defined(HX_CHIP_STATUS_MONITOR)
+    else if(buf[0] == 'c')
+    {
+        debug_level_cmd = buf[0];
+        g_chip_monitor_data->HX_CHIP_POLLING_COUNT = 0;
+        g_chip_monitor_data->HX_CHIP_MONITOR_EN = 0;
+        cancel_delayed_work_sync(&private_ts->himax_chip_monitor);
+        return len;
+    }
+#endif
+#ifdef HX_ZERO_FLASH
+	else if(buf[0] == 'z')
+	{
+		himax_0f_operation_check();
+		return len;
+	}
+	else if(buf[0] == 'p')
+	{
+		I("NOW debug echo r!\n");
+		//himax_program_sram();
+		private_ts->himax_0f_update_wq = create_singlethread_workqueue("HMX_update_0f_reuqest_write");
+		if (!private_ts->himax_0f_update_wq)
+			E(" allocate syn_update_wq failed\n");
+
+		INIT_DELAYED_WORK(&private_ts->work_0f_update, himax_0f_operation);
+		queue_delayed_work(private_ts->himax_0f_update_wq, &private_ts->work_0f_update, msecs_to_jiffies(100));
+		return len;
+	}
+	else if(buf[0] == 'x')
+	{
+		himax_sys_reset();
+		return len;
+	}
+#endif
+    /* others,do nothing */
+    else
+    {
+        debug_level_cmd = 0;
+        return len;
+    }
+
+firmware_upgrade_done:
+
+#ifdef HX_RST_PIN_FUNC
+    himax_ic_reset(true,false);
+#endif
+	himax_int_enable(private_ts->client->irq,1);
+
+#ifdef HX_CHIP_STATUS_MONITOR
+    g_chip_monitor_data->HX_CHIP_POLLING_COUNT = 0;
+    g_chip_monitor_data->HX_CHIP_MONITOR_EN = 1;
+    queue_delayed_work(private_ts->himax_chip_monitor_wq, &private_ts->himax_chip_monitor, g_chip_monitor_data->HX_POLLING_TIMES*HZ);
+#endif
+
+    //todo himax_chip->tp_firmware_upgrade_proceed = 0;
+    //todo himax_chip->suspend_state = 0;
+    //todo enable_irq(himax_chip->irq);
+    return len;
+}
+
+static struct file_operations himax_proc_debug_ops =
+{
+    .owner = THIS_MODULE,
+    .read = himax_debug_read,
+    .write = himax_debug_write,
+};
+
+static ssize_t himax_proc_FW_debug_read(struct file *file, char *buf,
+                                        size_t len, loff_t *pos)
+{
+    int ret = 0;
+    uint8_t loop_i = 0;
+	uint8_t tmp_data[64];
+    char *temp_buf;
+
+    temp_buf = kzalloc(len,GFP_KERNEL);
+
+    if(!HX_PROC_SEND_FLAG)
+    {
+	cmd_set[0] = 0x01;
+        if(himax_read_FW_status(cmd_set, tmp_data) == NO_ERR)
+        {
+            ret += sprintf(temp_buf + ret, "0x%02X%02X%02X%02X :\t",cmd_set[5],cmd_set[4],cmd_set[3],cmd_set[2]);
+            for (loop_i = 0; loop_i < cmd_set[1]; loop_i++)
+            {
+                ret += sprintf(temp_buf+ ret, "%5d\t", tmp_data[loop_i]);
+            }
+            ret += sprintf(temp_buf + ret, "\n");
+        }
+		cmd_set[0] = 0x02;
+		if(himax_read_FW_status(cmd_set, tmp_data) == NO_ERR)
+        {
+            for (loop_i = 0; loop_i < cmd_set[1]; loop_i = loop_i + 2)
+            {
+                if ((loop_i % 16) == 0)
+                    ret += sprintf(temp_buf + ret, "0x%02X%02X%02X%02X :\t",
+                    cmd_set[5],cmd_set[4],cmd_set[3]+(((cmd_set[2]+ loop_i)>>8)&0xFF), (cmd_set[2] + loop_i)&0xFF);
+                ret += sprintf(temp_buf + ret, "%5d\t", tmp_data[loop_i] + (tmp_data[loop_i + 1] << 8));
+                if ((loop_i % 16) == 14)
+                    ret += sprintf(temp_buf + ret, "\n");
+            }
+
+        }
+        ret += sprintf(temp_buf + ret, "\n");
+        if(copy_to_user(buf, temp_buf, len))
+            I("%s,here:%d\n",__func__,__LINE__);
+        kfree(temp_buf);
+        HX_PROC_SEND_FLAG=1;
+    }
+    else
+        HX_PROC_SEND_FLAG=0;
+    return ret;
+}
+
+static struct file_operations himax_proc_fw_debug_ops =
+{
+    .owner = THIS_MODULE,
+    .read = himax_proc_FW_debug_read,
+};
+
+static ssize_t himax_proc_DD_debug_read(struct file *file, char *buf,
+                                        size_t len, loff_t *pos)
+{
+    int ret = 0;
+    uint8_t tmp_data[64];
+    uint8_t loop_i = 0;
+    char *temp_buf;
+
+    temp_buf = kzalloc(len,GFP_KERNEL);
+
+    if(!HX_PROC_SEND_FLAG)
+    {
+        if(mutual_set_flag == 1)
+        {
+            if(himax_read_DD_status(cmd_set, tmp_data) == NO_ERR)
+            {
+                for (loop_i = 0; loop_i < cmd_set[0]; loop_i++)
+                {
+                    if ((loop_i % 8) == 0)
+                        ret += sprintf(temp_buf + ret, "0x%02X : ", loop_i);
+                    ret += sprintf(temp_buf + ret, "0x%02X ", tmp_data[loop_i]);
+                    if ((loop_i % 8) == 7)
+                        ret += sprintf(temp_buf + ret, "\n");
+                }
+            }
+        }
+        //else
+        ret += sprintf(temp_buf + ret, "\n");
+        if(copy_to_user(buf, temp_buf, len))
+            I("%s,here:%d\n",__func__,__LINE__);
+        kfree(temp_buf);
+        HX_PROC_SEND_FLAG=1;
+    }
+    else
+        HX_PROC_SEND_FLAG=0;
+    return ret;
+}
+
+static ssize_t himax_proc_DD_debug_write(struct file *file, const char *buff,
+        size_t len, loff_t *pos)
+{
+    uint8_t i = 0;
+    uint8_t cnt = 2;
+    unsigned long result = 0;
+    char buf_tmp[20];
+    char buf_tmp2[4];
+
+    if (len >= 20)
+    {
+        I("%s: no command exceeds 20 chars.\n", __func__);
+        return -EFAULT;
+    }
+    if (copy_from_user(buf_tmp, buff, len))
+    {
+        return -EFAULT;
+    }
+    memset(buf_tmp2, 0x0, sizeof(buf_tmp2));
+
+    if (buf_tmp[2] == 'x' && buf_tmp[6] == 'x' && buf_tmp[10] == 'x')
+    {
+        mutual_set_flag = 1;
+        for (i = 3; i < 12; i = i + 4)
+        {
+            memcpy(buf_tmp2, buf_tmp + i, 2);
+            if (!kstrtoul(buf_tmp2, 16, &result))
+                cmd_set[cnt] = (uint8_t)result;
+            else
+                I("String to oul is fail in cnt = %d, buf_tmp2 = %s",cnt, buf_tmp2);
+            cnt--;
+        }
+        I("cmd_set[2] = %02X, cmd_set[1] = %02X, cmd_set[0] = %02X\n",cmd_set[2],cmd_set[1],cmd_set[0]);
+    }
+    else
+        mutual_set_flag = 0;
+
+    return len;
+}
+
+static struct file_operations himax_proc_dd_debug_ops =
+{
+    .owner = THIS_MODULE,
+    .read = himax_proc_DD_debug_read,
+    .write = himax_proc_DD_debug_write,
+};
+
+#endif
+
+#ifdef HX_TP_PROC_FLASH_DUMP
+
+uint8_t getFlashCommand(void)
+{
+    return flash_command;
+}
+
+static uint8_t getFlashDumpProgress(void)
+{
+    return flash_progress;
+}
+
+static uint8_t getFlashDumpComplete(void)
+{
+    return flash_dump_complete;
+}
+
+static uint8_t getFlashDumpFail(void)
+{
+    return flash_dump_fail;
+}
+
+uint8_t getSysOperation(void)
+{
+    return sys_operation;
+}
+
+static uint8_t getFlashReadStep(void)
+{
+    return flash_read_step;
+}
+
+bool getFlashDumpGoing(void)
+{
+    return flash_dump_going;
+}
+
+void setFlashBuffer(void)
+{
+    flash_buffer = kzalloc(Flash_Size * sizeof(uint8_t), GFP_KERNEL);
+    memset(flash_buffer,0x00,Flash_Size);
+}
+
+void setSysOperation(uint8_t operation)
+{
+    sys_operation = operation;
+}
+
+void setFlashDumpProgress(uint8_t progress)
+{
+    flash_progress = progress;
+    //I("setFlashDumpProgress : progress = %d ,flash_progress = %d \n",progress,flash_progress);
+}
+
+void setFlashDumpComplete(uint8_t status)
+{
+    flash_dump_complete = status;
+}
+
+void setFlashDumpFail(uint8_t fail)
+{
+    flash_dump_fail = fail;
+}
+
+static void setFlashCommand(uint8_t command)
+{
+    flash_command = command;
+}
+
+static void setFlashReadStep(uint8_t step)
+{
+    flash_read_step = step;
+}
+
+void setFlashDumpGoing(bool going)
+{
+    flash_dump_going = going;
+}
+
+static ssize_t himax_proc_flash_read(struct file *file, char *buf,
+                                     size_t len, loff_t *pos)
+{
+    int ret = 0;
+    int loop_i;
+    uint8_t local_flash_read_step=0;
+    uint8_t local_flash_complete = 0;
+    uint8_t local_flash_progress = 0;
+    uint8_t local_flash_command = 0;
+    uint8_t local_flash_fail = 0;
+    char *temp_buf;
+
+    temp_buf = kzalloc(len,GFP_KERNEL);
+
+    local_flash_complete = getFlashDumpComplete();
+    local_flash_progress = getFlashDumpProgress();
+    local_flash_command = getFlashCommand();
+    local_flash_fail = getFlashDumpFail();
+
+    I("flash_progress = %d \n",local_flash_progress);
+    if(!HX_PROC_SEND_FLAG)
+    {
+        if (local_flash_fail)
+        {
+            ret += sprintf(temp_buf + ret, "FlashStart:Fail \n");
+            ret += sprintf(temp_buf + ret, "FlashEnd");
+            ret += sprintf(temp_buf + ret, "\n");
+            if(copy_to_user(buf, temp_buf, len))
+                I("%s,here:%d\n",__func__,__LINE__);
+            kfree(temp_buf);
+            HX_PROC_SEND_FLAG=1;
+            return ret;
+        }
+
+        if (!local_flash_complete)
+        {
+            ret += sprintf(temp_buf + ret, "FlashStart:Ongoing:0x%2.2x \n",flash_progress);
+            ret += sprintf(temp_buf + ret, "FlashEnd");
+            ret += sprintf(temp_buf + ret, "\n");
+            if(copy_to_user(buf, temp_buf, len))
+                I("%s,here:%d\n",__func__,__LINE__);
+            kfree(temp_buf);
+            HX_PROC_SEND_FLAG=1;
+            return ret;
+        }
+
+        if (local_flash_command == 1 && local_flash_complete)
+        {
+            ret += sprintf(temp_buf + ret, "FlashStart:Complete \n");
+            ret += sprintf(temp_buf + ret, "FlashEnd");
+            ret += sprintf(temp_buf + ret, "\n");
+            if(copy_to_user(buf, temp_buf, len))
+                I("%s,here:%d\n",__func__,__LINE__);
+            kfree(temp_buf);
+            HX_PROC_SEND_FLAG=1;
+            return ret;
+        }
+
+        if (local_flash_command == 3 && local_flash_complete)
+        {
+            ret += sprintf(temp_buf + ret, "FlashStart: \n");
+            for(loop_i = 0; loop_i < 128; loop_i++)
+            {
+                ret += sprintf(temp_buf + ret, "x%2.2x", flash_buffer[loop_i]);
+                if ((loop_i % 16) == 15)
+                {
+                    ret += sprintf(temp_buf + ret, "\n");
+                }
+            }
+            ret += sprintf(temp_buf + ret, "FlashEnd");
+            ret += sprintf(temp_buf + ret, "\n");
+            if(copy_to_user(buf, temp_buf, len))
+                I("%s,here:%d\n",__func__,__LINE__);
+            kfree(temp_buf);
+            HX_PROC_SEND_FLAG=1;
+            return ret;
+        }
+
+        //flash command == 0 , report the data
+        local_flash_read_step = getFlashReadStep();
+
+        ret += sprintf(temp_buf + ret, "FlashStart:%2.2x \n",local_flash_read_step);
+
+        for (loop_i = 0; loop_i < 1024; loop_i++)
+        {
+            ret += sprintf(temp_buf + ret, "x%2.2X", flash_buffer[local_flash_read_step*1024 + loop_i]);
+
+            if ((loop_i % 16) == 15)
+            {
+                ret += sprintf(temp_buf + ret, "\n");
+            }
+        }
+
+        ret += sprintf(temp_buf + ret, "FlashEnd");
+        ret += sprintf(temp_buf + ret, "\n");
+        if(copy_to_user(buf, temp_buf, len))
+            I("%s,here:%d\n",__func__,__LINE__);
+        kfree(temp_buf);
+        HX_PROC_SEND_FLAG=1;
+    }
+    else
+        HX_PROC_SEND_FLAG=0;
+    return ret;
+}
+
+static ssize_t himax_proc_flash_write(struct file *file, const char *buff,
+                                      size_t len, loff_t *pos)
+{
+    char buf_tmp[6];
+    unsigned long result = 0;
+    char buf[80] = {0};
+
+    if (len >= 80)
+    {
+        I("%s: no command exceeds 80 chars.\n", __func__);
+        return -EFAULT;
+    }
+    if (copy_from_user(buf, buff, len))
+    {
+        return -EFAULT;
+    }
+    memset(buf_tmp, 0x0, sizeof(buf_tmp));
+
+    I("%s: buf = %s\n", __func__, buf);
+
+    if (getSysOperation() == 1)
+    {
+        E("%s: PROC is busy , return!\n", __func__);
+        return len;
+    }
+
+    if (buf[0] == '0')
+    {
+        setFlashCommand(0);
+        if (buf[1] == ':' && buf[2] == 'x')
+        {
+            memcpy(buf_tmp, buf + 3, 2);
+            I("%s: read_Step = %s\n", __func__, buf_tmp);
+            if (!kstrtoul(buf_tmp, 16, &result))
+            {
+                I("%s: read_Step = %lu \n", __func__, result);
+                setFlashReadStep(result);
+            }
+        }
+    }
+    else if (buf[0] == '1')// 1_32,1_60,1_64,1_24,1_28 for flash size 32k,60k,64k,124k,128k
+    {
+        setSysOperation(1);
+        setFlashCommand(1);
+        setFlashDumpProgress(0);
+        setFlashDumpComplete(0);
+        setFlashDumpFail(0);
+        if ((buf[1] == '_' ) && (buf[2] == '3' ) && (buf[3] == '2' ))
+        {
+            Flash_Size = FW_SIZE_32k;
+        }
+        else if ((buf[1] == '_' ) && (buf[2] == '6' ))
+        {
+            if (buf[3] == '0')
+            {
+                Flash_Size = FW_SIZE_60k;
+            }
+            else if (buf[3] == '4')
+            {
+                Flash_Size = FW_SIZE_64k;
+            }
+        }
+        else if ((buf[1] == '_' ) && (buf[2] == '2' ))
+        {
+            if (buf[3] == '4')
+            {
+                Flash_Size = FW_SIZE_124k;
+            }
+            else if (buf[3] == '8')
+            {
+                Flash_Size = FW_SIZE_128k;
+            }
+        }
+        queue_work(private_ts->flash_wq, &private_ts->flash_work);
+    }
+    else if (buf[0] == '2') // 2_32,2_60,2_64,2_24,2_28 for flash size 32k,60k,64k,124k,128k
+    {
+        setSysOperation(1);
+        setFlashCommand(2);
+        setFlashDumpProgress(0);
+        setFlashDumpComplete(0);
+        setFlashDumpFail(0);
+        if ((buf[1] == '_' ) && (buf[2] == '3' ) && (buf[3] == '2' ))
+        {
+            Flash_Size = FW_SIZE_32k;
+        }
+        else if ((buf[1] == '_' ) && (buf[2] == '6' ))
+        {
+            if (buf[3] == '0')
+            {
+                Flash_Size = FW_SIZE_60k;
+            }
+            else if (buf[3] == '4')
+            {
+                Flash_Size = FW_SIZE_64k;
+            }
+        }
+        else if ((buf[1] == '_' ) && (buf[2] == '2' ))
+        {
+            if (buf[3] == '4')
+            {
+                Flash_Size = FW_SIZE_124k;
+            }
+            else if (buf[3] == '8')
+            {
+                Flash_Size = FW_SIZE_128k;
+            }
+        }
+        queue_work(private_ts->flash_wq, &private_ts->flash_work);
+    }
+    return len;
+}
+
+static struct file_operations himax_proc_flash_ops =
+{
+    .owner = THIS_MODULE,
+    .read = himax_proc_flash_read,
+    .write = himax_proc_flash_write,
+};
+
+void himax_ts_flash_func(void)
+{
+    uint8_t local_flash_command = 0;
+
+    himax_int_enable(private_ts->client->irq,0);
+    setFlashDumpGoing(true);
+
+    //sector = getFlashDumpSector();
+    //page = getFlashDumpPage();
+
+    local_flash_command = getFlashCommand();
+
+    msleep(100);
+
+    I("%s: local_flash_command = %d enter.\n", __func__,local_flash_command);
+
+    if ((local_flash_command == 1 || local_flash_command == 2)|| (local_flash_command==0x0F))
+    {
+        himax_flash_dump_func(private_ts->client, local_flash_command,Flash_Size, flash_buffer);
+    }
+
+    I("Complete~~~~~~~~~~~~~~~~~~~~~~~\n");
+
+    if (local_flash_command == 2)
+    {
+        struct file *fn;
+
+        fn = filp_open(FLASH_DUMP_FILE,O_CREAT | O_WRONLY,0);
+        if (!IS_ERR(fn))
+        {
+            I("%s create file and ready to write\n",__func__);
+            fn->f_op->write(fn,flash_buffer,Flash_Size*sizeof(uint8_t),&fn->f_pos);
+            filp_close(fn,NULL);
+        }
+    }
+
+    himax_int_enable(private_ts->client->irq,1);
+    setFlashDumpGoing(false);
+
+    setFlashDumpComplete(1);
+    setSysOperation(0);
+    return;
+
+    /*	Flash_Dump_i2c_transfer_error:
+
+	himax_int_enable(private_ts->client->irq,1);
+	setFlashDumpGoing(false);
+	setFlashDumpComplete(0);
+	setFlashDumpFail(1);
+	setSysOperation(0);
+	return;
+    */
+}
+
+#endif
+
+#ifdef HX_TP_PROC_SELF_TEST
+static ssize_t himax_self_test_read(struct file *file, char *buf,
+                                    size_t len, loff_t *pos)
+{
+    int val=0x00;
+    int ret = 0;
+    char *temp_buf;
+
+    temp_buf = kzalloc(len,GFP_KERNEL);
+    I("%s: enter, %d \n", __func__, __LINE__);
+    if(!HX_PROC_SEND_FLAG)
+    {
+        himax_int_enable(private_ts->client->irq,0);//disable irq
+        g_self_test_entered = 1;
+        val = himax_chip_self_test(private_ts->client);
+#ifdef HX_ESD_RECOVERY
+        HX_ESD_RESET_ACTIVATE = 1;
+#endif
+        himax_int_enable(private_ts->client->irq,1);//enable irq
+
+        if (val == 0x01)
+        {
+            ret += sprintf(temp_buf + ret, "Self_Test Pass\n");
+        }
+        else
+        {
+            ret += sprintf(temp_buf + ret, "Self_Test Fail\n");
+        }
+        g_self_test_entered = 0;
+        if(copy_to_user(buf, temp_buf, len))
+            I("%s,here:%d\n",__func__,__LINE__);
+        kfree(temp_buf);
+        HX_PROC_SEND_FLAG=1;
+    }
+    else
+        HX_PROC_SEND_FLAG=0;
+    return ret;
+}
+
+/*
+static ssize_t himax_chip_self_test_store(struct device *dev,struct device_attribute *attr, const char *buf, size_t count)
+{
+	char buf_tmp[2];
+	unsigned long result = 0;
+
+	memset(buf_tmp, 0x0, sizeof(buf_tmp));
+	memcpy(buf_tmp, buf, 2);
+	if(!kstrtoul(buf_tmp, 16, &result))
+		{
+			sel_type = (uint8_t)result;
+		}
+	I("sel_type = %x \r\n", sel_type);
+	return count;
+}
+*/
+
+static struct file_operations himax_proc_self_test_ops =
+{
+    .owner = THIS_MODULE,
+    .read = himax_self_test_read,
+};
+#endif
+
+#ifdef HX_TP_PROC_SENSE_ON_OFF
+static ssize_t himax_sense_on_off_write(struct file *file, const char *buff,
+                                        size_t len, loff_t *pos)
+{
+    char buf[80] = {0};
+
+    if (len >= 80)
+    {
+        I("%s: no command exceeds 80 chars.\n", __func__);
+        return -EFAULT;
+    }
+    if (copy_from_user(buf, buff, len))
+    {
+        return -EFAULT;
+    }
+
+    if(buf[0] == '0')
+    {
+        himax_sense_off(private_ts->client);
+        I("Sense off \n");
+    }
+    else if(buf[0] == '1')
+    {
+        if(buf[1] == 's')
+        {
+            himax_sense_on(private_ts->client, 0x00);
+            I("Sense on re-map on, run sram \n");
+        }
+        else
+        {
+            himax_sense_on(private_ts->client, 0x01);
+            I("Sense on re-map off, run flash \n");
+        }
+    }
+    else
+    {
+        I("Do nothing \n");
+    }
+    return len;
+}
+
+static struct file_operations himax_proc_sense_on_off_ops =
+{
+    .owner = THIS_MODULE,
+    .write = himax_sense_on_off_write,
+};
+#endif
+
+#ifdef HX_HIGH_SENSE
+static ssize_t himax_HSEN_read(struct file *file, char *buf,
+                               size_t len, loff_t *pos)
+{
+    struct himax_ts_data *ts = private_ts;
+    size_t count = 0;
+    char *temp_buf;
+
+    temp_buf = kzalloc(len,GFP_KERNEL);
+
+    if(!HX_PROC_SEND_FLAG)
+    {
+        count = snprintf(temp_buf, PAGE_SIZE, "%d\n", ts->HSEN_enable);
+        if(copy_to_user(buf, temp_buf, len))
+            I("%s,here:%d\n",__func__,__LINE__);
+        kfree(temp_buf);
+        HX_PROC_SEND_FLAG=1;
+    }
+    else
+        HX_PROC_SEND_FLAG=0;
+    return count;
+}
+
+static ssize_t himax_HSEN_write(struct file *file, const char *buff,
+                                size_t len, loff_t *pos)
+{
+    struct himax_ts_data *ts = private_ts;
+    char buf[80] = {0};
+
+
+    if (len >= 80)
+    {
+        I("%s: no command exceeds 80 chars.\n", __func__);
+        return -EFAULT;
+    }
+    if (copy_from_user(buf, buff, len))
+    {
+        return -EFAULT;
+    }
+
+    if (buf[0] == '0')
+    {
+        ts->HSEN_enable = 0;
+    }
+    else if (buf[0] == '1')
+    {
+        ts->HSEN_enable = 1;
+    }
+    else
+        return -EINVAL;
+
+    himax_set_HSEN_enable(ts->client, ts->HSEN_enable, ts->suspended);
+
+    I("%s: HSEN_enable = %d.\n", __func__, ts->HSEN_enable);
+
+    return len;
+}
+
+static struct file_operations himax_proc_HSEN_ops =
+{
+    .owner = THIS_MODULE,
+    .read = himax_HSEN_read,
+    .write = himax_HSEN_write,
+};
+#endif
+
+#ifdef HX_SMART_WAKEUP
+static ssize_t himax_SMWP_read(struct file *file, char *buf,
+                               size_t len, loff_t *pos)
+{
+    size_t count = 0;
+    struct himax_ts_data *ts = private_ts;
+
+    char *temp_buf;
+
+    temp_buf = kzalloc(len,GFP_KERNEL);
+
+    if(!HX_PROC_SEND_FLAG)
+    {
+        count = snprintf(temp_buf, PAGE_SIZE, "%d\n", ts->SMWP_enable);
+        if(copy_to_user(buf, temp_buf, len))
+            I("%s,here:%d\n",__func__,__LINE__);
+        kfree(temp_buf);
+        HX_PROC_SEND_FLAG=1;
+    }
+    else
+        HX_PROC_SEND_FLAG=0;
+
+    return count;
+}
+
+static ssize_t himax_SMWP_write(struct file *file, const char *buff,
+                                size_t len, loff_t *pos)
+{
+    struct himax_ts_data *ts = private_ts;
+    char buf[80] = {0};
+
+    if (len >= 80)
+    {
+        I("%s: no command exceeds 80 chars.\n", __func__);
+        return -EFAULT;
+    }
+    if (copy_from_user(buf, buff, len))
+    {
+        return -EFAULT;
+    }
+
+
+    if (buf[0] == '0')
+    {
+        ts->SMWP_enable = 0;
+    }
+    else if (buf[0] == '1')
+    {
+        ts->SMWP_enable = 1;
+    }
+    else
+        return -EINVAL;
+
+    himax_set_SMWP_enable(ts->client, ts->SMWP_enable, ts->suspended);
+
+    HX_SMWP_EN = ts->SMWP_enable;
+    I("%s: SMART_WAKEUP_enable = %d.\n", __func__, HX_SMWP_EN);
+
+    return len;
+}
+
+static struct file_operations himax_proc_SMWP_ops =
+{
+    .owner = THIS_MODULE,
+    .read = himax_SMWP_read,
+    .write = himax_SMWP_write,
+};
+
+static ssize_t himax_GESTURE_read(struct file *file, char *buf,
+                                  size_t len, loff_t *pos)
+{
+    struct himax_ts_data *ts = private_ts;
+    int i =0;
+    int ret = 0;
+    char *temp_buf;
+
+    temp_buf = kzalloc(len,GFP_KERNEL);
+    if(!HX_PROC_SEND_FLAG)
+    {
+        for(i=0; i<16; i++)
+            ret += sprintf(temp_buf + ret, "ges_en[%d]=%d \n",i,ts->gesture_cust_en[i]);
+        if(copy_to_user(buf, temp_buf, len))
+            I("%s,here:%d\n",__func__,__LINE__);
+        kfree(temp_buf);
+        HX_PROC_SEND_FLAG = 1;
+    }
+    else
+    {
+        HX_PROC_SEND_FLAG = 0;
+        ret = 0;
+    }
+    return ret;
+}
+
+static ssize_t himax_GESTURE_write(struct file *file, const char *buff,
+                                   size_t len, loff_t *pos)
+{
+    struct himax_ts_data *ts = private_ts;
+    int i =0;
+    char buf[80] = {0};
+
+    if (len >= 80)
+    {
+        I("%s: no command exceeds 80 chars.\n", __func__);
+        return -EFAULT;
+    }
+    if (copy_from_user(buf, buff, len))
+    {
+        return -EFAULT;
+    }
+
+    I("himax_GESTURE_store= %s \n",buf);
+    for (i=0; i<16; i++)
+    {
+        if (buf[i] == '0')
+            ts->gesture_cust_en[i]= 0;
+        else if (buf[i] == '1')
+            ts->gesture_cust_en[i]= 1;
+        else
+            ts->gesture_cust_en[i]= 0;
+        I("gesture en[%d]=%d \n", i, ts->gesture_cust_en[i]);
+    }
+    return len;
+}
+
+static struct file_operations himax_proc_Gesture_ops =
+{
+    .owner = THIS_MODULE,
+    .read = himax_GESTURE_read,
+    .write = himax_GESTURE_write,
+};
+#endif
+
+#ifdef HX_ESD_RECOVERY
+static ssize_t himax_esd_cnt_read(struct file *file, char *buf,
+                                  size_t len, loff_t *pos)
+{
+    int ret = 0;
+    char *temp_buf;
+
+    temp_buf = kzalloc(len,GFP_KERNEL);
+
+    I("%s: enter, %d \n", __func__, __LINE__);
+    if(!HX_PROC_SEND_FLAG)
+    {
+        ret += sprintf(temp_buf + ret, "EB_cnt = %d, EC_cnt = %d, ED_cnt = %d\n",hx_EB_event_flag, hx_EC_event_flag, hx_ED_event_flag);
+        if(copy_to_user(buf, temp_buf, len))
+            I("%s,here:%d\n",__func__,__LINE__);
+        kfree(temp_buf);
+        HX_PROC_SEND_FLAG=1;
+    }
+    else
+        HX_PROC_SEND_FLAG=0;
+    return ret;
+}
+
+static ssize_t himax_esd_cnt_write(struct file *file, const char *buff,
+                                   size_t len, loff_t *pos)
+{
+    int i =0;
+    char buf[12] = {0};
+
+    if (len >= 12)
+    {
+        I("%s: no command exceeds 80 chars.\n", __func__);
+        return -EFAULT;
+    }
+    if (copy_from_user(buf, buff, len))
+    {
+        return -EFAULT;
+    }
+
+    I("Clear ESD Flag \n");
+    if (buf[i] == '0')
+    {
+        hx_EB_event_flag = 0;
+        hx_EC_event_flag = 0;
+        hx_ED_event_flag = 0;
+    }
+
+    return len;
+}
+
+static struct file_operations himax_proc_esd_cnt_ops =
+{
+    .owner = THIS_MODULE,
+    .read = himax_esd_cnt_read,
+    .write = himax_esd_cnt_write,
+};
+#endif
+
+int himax_touch_proc_init(void)
+{
+    himax_touch_proc_dir = proc_mkdir( HIMAX_PROC_TOUCH_FOLDER, NULL);
+    if (himax_touch_proc_dir == NULL)
+    {
+        E(" %s: himax_touch_proc_dir file create failed!\n", __func__);
+        return -ENOMEM;
+    }
+
+    himax_proc_debug_level_file = proc_create(HIMAX_PROC_DEBUG_LEVEL_FILE, (S_IWUSR|S_IRUGO),
+                                  himax_touch_proc_dir, &himax_proc_debug_level_ops);
+    if (himax_proc_debug_level_file == NULL)
+    {
+        E(" %s: proc debug_level file create failed!\n", __func__);
+        goto fail_1;
+    }
+
+    himax_proc_vendor_file = proc_create(HIMAX_PROC_VENDOR_FILE, (S_IRUGO),
+                                         himax_touch_proc_dir, &himax_proc_vendor_ops);
+    if(himax_proc_vendor_file == NULL)
+    {
+        E(" %s: proc vendor file create failed!\n", __func__);
+        goto fail_2;
+    }
+
+    himax_proc_attn_file = proc_create(HIMAX_PROC_ATTN_FILE, (S_IRUGO),
+                                       himax_touch_proc_dir, &himax_proc_attn_ops);
+    if(himax_proc_attn_file == NULL)
+    {
+        E(" %s: proc attn file create failed!\n", __func__);
+        goto fail_3;
+    }
+
+    himax_proc_int_en_file = proc_create(HIMAX_PROC_INT_EN_FILE, (S_IWUSR|S_IRUGO),
+                                         himax_touch_proc_dir, &himax_proc_int_en_ops);
+    if(himax_proc_int_en_file == NULL)
+    {
+        E(" %s: proc int en file create failed!\n", __func__);
+        goto fail_4;
+    }
+
+    himax_proc_layout_file = proc_create(HIMAX_PROC_LAYOUT_FILE, (S_IWUSR|S_IRUGO),
+                                         himax_touch_proc_dir, &himax_proc_layout_ops);
+    if(himax_proc_layout_file == NULL)
+    {
+        E(" %s: proc layout file create failed!\n", __func__);
+        goto fail_5;
+    }
+
+#ifdef HX_TP_PROC_RESET
+    himax_proc_reset_file = proc_create(HIMAX_PROC_RESET_FILE, (S_IWUSR),
+                                        himax_touch_proc_dir, &himax_proc_reset_ops);
+    if(himax_proc_reset_file == NULL)
+    {
+        E(" %s: proc reset file create failed!\n", __func__);
+        goto fail_6;
+    }
+#endif
+
+#ifdef HX_TP_PROC_DIAG
+    himax_proc_diag_file = proc_create(HIMAX_PROC_DIAG_FILE, (S_IWUSR|S_IRUGO),
+                                       himax_touch_proc_dir, &himax_proc_diag_ops);
+    if(himax_proc_diag_file == NULL)
+    {
+        E(" %s: proc diag file create failed!\n", __func__);
+        goto fail_7;
+    }
+    himax_proc_diag_arrange_file = proc_create(HIMAX_PROC_DIAG_ARR_FILE, (S_IWUSR|S_IRUGO),
+                                   himax_touch_proc_dir, &himax_proc_diag_arrange_ops);
+    if(himax_proc_diag_arrange_file == NULL)
+    {
+        E(" %s: proc diag file create failed!\n", __func__);
+        goto fail_7_1;
+    }
+#endif
+
+#ifdef HX_TP_PROC_REGISTER
+    himax_proc_register_file = proc_create(HIMAX_PROC_REGISTER_FILE, (S_IWUSR|S_IRUGO),
+                                           himax_touch_proc_dir, &himax_proc_register_ops);
+    if(himax_proc_register_file == NULL)
+    {
+        E(" %s: proc register file create failed!\n", __func__);
+        goto fail_8;
+    }
+#endif
+
+#ifdef HX_TP_PROC_DEBUG
+    himax_proc_debug_file = proc_create(HIMAX_PROC_DEBUG_FILE, (S_IWUSR|S_IRUGO),
+                                        himax_touch_proc_dir, &himax_proc_debug_ops);
+    if(himax_proc_debug_file == NULL)
+    {
+        E(" %s: proc debug file create failed!\n", __func__);
+        goto fail_9;
+    }
+
+    himax_proc_fw_debug_file = proc_create(HIMAX_PROC_FW_DEBUG_FILE, (S_IWUSR|S_IRUGO),
+                                           himax_touch_proc_dir, &himax_proc_fw_debug_ops);
+    if(himax_proc_fw_debug_file == NULL)
+    {
+        E(" %s: proc fw debug file create failed!\n", __func__);
+        goto fail_9_1;
+    }
+
+    himax_proc_dd_debug_file = proc_create(HIMAX_PROC_DD_DEBUG_FILE, (S_IWUSR|S_IRUGO),
+                                           himax_touch_proc_dir, &himax_proc_dd_debug_ops);
+    if(himax_proc_dd_debug_file == NULL)
+    {
+        E(" %s: proc DD debug file create failed!\n", __func__);
+        goto fail_9_2;
+    }
+#endif
+
+#ifdef HX_TP_PROC_FLASH_DUMP
+    himax_proc_flash_dump_file = proc_create(HIMAX_PROC_FLASH_DUMP_FILE, (S_IWUSR|S_IRUGO),
+                                 himax_touch_proc_dir, &himax_proc_flash_ops);
+    if(himax_proc_flash_dump_file == NULL)
+    {
+        E(" %s: proc flash dump file create failed!\n", __func__);
+        goto fail_10;
+    }
+#endif
+
+#ifdef HX_TP_PROC_SELF_TEST
+    himax_proc_self_test_file = proc_create(HIMAX_PROC_SELF_TEST_FILE, (S_IRUGO),
+                                            himax_touch_proc_dir, &himax_proc_self_test_ops);
+    if(himax_proc_self_test_file == NULL)
+    {
+        E(" %s: proc self_test file create failed!\n", __func__);
+        goto fail_11;
+    }
+#endif
+
+#ifdef HX_HIGH_SENSE
+    himax_proc_HSEN_file = proc_create(HIMAX_PROC_HSEN_FILE, (S_IWUSR|S_IRUGO|S_IWUGO),
+                                       himax_touch_proc_dir, &himax_proc_HSEN_ops);
+    if(himax_proc_HSEN_file == NULL)
+    {
+        E(" %s: proc HSEN file create failed!\n", __func__);
+        goto fail_13;
+    }
+#endif
+
+#ifdef HX_SMART_WAKEUP
+    himax_proc_SMWP_file = proc_create(HIMAX_PROC_SMWP_FILE, (S_IWUSR|S_IRUGO|S_IWUGO),
+                                       himax_touch_proc_dir, &himax_proc_SMWP_ops);
+    if(himax_proc_SMWP_file == NULL)
+    {
+        E(" %s: proc SMWP file create failed!\n", __func__);
+        goto fail_14;
+    }
+    himax_proc_GESTURE_file = proc_create(HIMAX_PROC_GESTURE_FILE, (S_IWUSR|S_IRUGO|S_IWUGO),
+                                          himax_touch_proc_dir, &himax_proc_Gesture_ops);
+    if(himax_proc_GESTURE_file == NULL)
+    {
+        E(" %s: proc GESTURE file create failed!\n", __func__);
+        goto fail_15;
+    }
+#endif
+
+#ifdef HX_TP_PROC_SENSE_ON_OFF
+    himax_proc_SENSE_ON_OFF_file = proc_create(HIMAX_PROC_SENSE_ON_OFF_FILE, (S_IWUSR|S_IRUGO|S_IWUGO),
+                                   himax_touch_proc_dir, &himax_proc_sense_on_off_ops);
+    if(himax_proc_SENSE_ON_OFF_file == NULL)
+    {
+        E(" %s: proc SENSE_ON_OFF file create failed!\n", __func__);
+        goto fail_16;
+    }
+#endif
+#ifdef HX_ESD_RECOVERY
+    himax_proc_ESD_cnt_file = proc_create(HIMAX_PROC_ESD_CNT_FILE, (S_IWUSR|S_IRUGO|S_IWUGO),
+                                          himax_touch_proc_dir, &himax_proc_esd_cnt_ops);
+    if(himax_proc_ESD_cnt_file == NULL)
+    {
+        E(" %s: proc ESD cnt file create failed!\n", __func__);
+        goto fail_17;
+    }
+#endif
+    himax_proc_CRC_test_file = proc_create(HIMAX_PROC_CRC_TEST_FILE, (S_IWUSR|S_IRUGO|S_IWUGO),
+                                           himax_touch_proc_dir, &himax_proc_CRC_test_ops);
+    if(himax_proc_CRC_test_file == NULL)
+    {
+        E(" %s: proc CRC test file create failed!\n", __func__);
+        goto fail_18;
+    }
+    return 0 ;
+
+fail_18:
+#ifdef HX_ESD_RECOVERY
+    remove_proc_entry( HIMAX_PROC_ESD_CNT_FILE, himax_touch_proc_dir );
+fail_17:
+#endif
+#ifdef HX_TP_PROC_SENSE_ON_OFF
+    remove_proc_entry( HIMAX_PROC_SENSE_ON_OFF_FILE, himax_touch_proc_dir );
+fail_16:
+#endif
+#ifdef HX_SMART_WAKEUP
+    remove_proc_entry( HIMAX_PROC_GESTURE_FILE, himax_touch_proc_dir );
+fail_15:
+    remove_proc_entry( HIMAX_PROC_SMWP_FILE, himax_touch_proc_dir );
+fail_14:
+#endif
+#ifdef HX_HIGH_SENSE
+    remove_proc_entry( HIMAX_PROC_HSEN_FILE, himax_touch_proc_dir );
+fail_13:
+#endif
+#ifdef HX_TP_PROC_SELF_TEST
+    remove_proc_entry( HIMAX_PROC_SELF_TEST_FILE, himax_touch_proc_dir );
+fail_11:
+#endif
+#ifdef HX_TP_PROC_FLASH_DUMP
+    remove_proc_entry( HIMAX_PROC_FLASH_DUMP_FILE, himax_touch_proc_dir );
+fail_10:
+#endif
+#ifdef HX_TP_PROC_DEBUG
+    remove_proc_entry( HIMAX_PROC_DEBUG_FILE, himax_touch_proc_dir );
+fail_9:
+    remove_proc_entry( HIMAX_PROC_FW_DEBUG_FILE, himax_touch_proc_dir );
+fail_9_1:
+    remove_proc_entry( HIMAX_PROC_DD_DEBUG_FILE, himax_touch_proc_dir );
+fail_9_2:
+#endif
+#ifdef HX_TP_PROC_REGISTER
+    remove_proc_entry( HIMAX_PROC_REGISTER_FILE, himax_touch_proc_dir );
+fail_8:
+#endif
+#ifdef HX_TP_PROC_DIAG
+    remove_proc_entry( HIMAX_PROC_DIAG_FILE, himax_touch_proc_dir );
+fail_7:
+    remove_proc_entry( HIMAX_PROC_DIAG_ARR_FILE, himax_touch_proc_dir );
+fail_7_1:
+#endif
+#ifdef HX_TP_PROC_RESET
+    remove_proc_entry( HIMAX_PROC_RESET_FILE, himax_touch_proc_dir );
+fail_6:
+#endif
+    remove_proc_entry( HIMAX_PROC_LAYOUT_FILE, himax_touch_proc_dir );
+fail_5:
+    remove_proc_entry( HIMAX_PROC_INT_EN_FILE, himax_touch_proc_dir );
+fail_4:
+    remove_proc_entry( HIMAX_PROC_ATTN_FILE, himax_touch_proc_dir );
+fail_3:
+    remove_proc_entry( HIMAX_PROC_VENDOR_FILE, himax_touch_proc_dir );
+fail_2:
+    remove_proc_entry( HIMAX_PROC_DEBUG_LEVEL_FILE, himax_touch_proc_dir );
+fail_1:
+    remove_proc_entry( HIMAX_PROC_TOUCH_FOLDER, NULL );
+    return -ENOMEM;
+}
+
+void himax_touch_proc_deinit(void)
+{
+    remove_proc_entry( HIMAX_PROC_CRC_TEST_FILE, himax_touch_proc_dir );
+#ifdef HX_ESD_RECOVERY
+    remove_proc_entry( HIMAX_PROC_ESD_CNT_FILE, himax_touch_proc_dir );
+#endif
+#ifdef HX_TP_PROC_SENSE_ON_OFF
+    remove_proc_entry( HIMAX_PROC_SENSE_ON_OFF_FILE, himax_touch_proc_dir );
+#endif
+#ifdef HX_SMART_WAKEUP
+    remove_proc_entry( HIMAX_PROC_GESTURE_FILE, himax_touch_proc_dir );
+    remove_proc_entry( HIMAX_PROC_SMWP_FILE, himax_touch_proc_dir );
+#endif
+#ifdef HX_DOT_VIEW
+    remove_proc_entry( HIMAX_PROC_HSEN_FILE, himax_touch_proc_dir );
+#endif
+#ifdef HX_TP_PROC_SELF_TEST
+    remove_proc_entry(HIMAX_PROC_SELF_TEST_FILE, himax_touch_proc_dir);
+#endif
+#ifdef HX_TP_PROC_FLASH_DUMP
+    remove_proc_entry(HIMAX_PROC_FLASH_DUMP_FILE, himax_touch_proc_dir);
+#endif
+#ifdef HX_TP_PROC_DEBUG
+    remove_proc_entry( HIMAX_PROC_DEBUG_FILE, himax_touch_proc_dir );
+    remove_proc_entry( HIMAX_PROC_FW_DEBUG_FILE, himax_touch_proc_dir );
+    remove_proc_entry( HIMAX_PROC_DD_DEBUG_FILE, himax_touch_proc_dir );
+#endif
+#ifdef HX_TP_PROC_REGISTER
+    remove_proc_entry(HIMAX_PROC_REGISTER_FILE, himax_touch_proc_dir);
+#endif
+#ifdef HX_TP_PROC_DIAG
+    remove_proc_entry(HIMAX_PROC_DIAG_FILE, himax_touch_proc_dir);
+#endif
+#ifdef HX_TP_PROC_RESET
+    remove_proc_entry( HIMAX_PROC_RESET_FILE, himax_touch_proc_dir );
+#endif
+    remove_proc_entry( HIMAX_PROC_LAYOUT_FILE, himax_touch_proc_dir );
+    remove_proc_entry( HIMAX_PROC_INT_EN_FILE, himax_touch_proc_dir );
+    remove_proc_entry( HIMAX_PROC_ATTN_FILE, himax_touch_proc_dir );
+    remove_proc_entry( HIMAX_PROC_VENDOR_FILE, himax_touch_proc_dir );
+    remove_proc_entry( HIMAX_PROC_DEBUG_LEVEL_FILE, himax_touch_proc_dir );
+    remove_proc_entry( HIMAX_PROC_TOUCH_FOLDER, NULL );
+}
+#endif
diff --git a/drivers/input/touchscreen/hxchipset83112b/himax_debug.h b/drivers/input/touchscreen/hxchipset83112b/himax_debug.h
new file mode 100644
index 0000000..925d5e0
--- /dev/null
+++ b/drivers/input/touchscreen/hxchipset83112b/himax_debug.h
@@ -0,0 +1,213 @@
+/* Himax Android Driver Sample Code for debug nodes
+*
+* Copyright (C) 2017 Himax Corporation.
+*
+* This software is licensed under the terms of the GNU General Public
+* License version 2, as published by the Free Software Foundation, and
+* may be copied, distributed, and modified under those terms.
+*
+* This program is distributed in the hope that 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.
+*
+*/
+#ifndef H_HIMAX_DEBUG
+#define H_HIMAX_DEBUG
+
+#include "himax_platform.h"
+#include "himax_common.h"
+
+
+#ifdef HX_ESD_RECOVERY
+extern u8 HX_ESD_RESET_ACTIVATE;
+extern 	int hx_EB_event_flag;
+extern 	int hx_EC_event_flag;
+extern 	int hx_ED_event_flag;
+#endif
+
+#if defined(CONFIG_TOUCHSCREEN_HIMAX_DEBUG)
+#define HIMAX_PROC_TOUCH_FOLDER 	"android_touch"
+#define HIMAX_PROC_DEBUG_LEVEL_FILE	"debug_level"
+#define HIMAX_PROC_VENDOR_FILE		"vendor"
+#define HIMAX_PROC_ATTN_FILE		"attn"
+#define HIMAX_PROC_INT_EN_FILE		"int_en"
+#define HIMAX_PROC_LAYOUT_FILE		"layout"
+#define HIMAX_PROC_CRC_TEST_FILE		"CRC_test"
+
+static struct proc_dir_entry *himax_touch_proc_dir 			= NULL;
+static struct proc_dir_entry *himax_proc_debug_level_file 	= NULL;
+static struct proc_dir_entry *himax_proc_vendor_file 		= NULL;
+static struct proc_dir_entry *himax_proc_attn_file 			= NULL;
+static struct proc_dir_entry *himax_proc_int_en_file 		= NULL;
+static struct proc_dir_entry *himax_proc_layout_file 		= NULL;
+static struct proc_dir_entry *himax_proc_CRC_test_file 		= NULL;
+
+uint8_t HX_PROC_SEND_FLAG;
+
+extern int himax_touch_proc_init(void);
+extern void himax_touch_proc_deinit(void);
+bool getFlashDumpGoing(void);
+
+extern int himax_int_en_set(struct i2c_client *client);
+
+#if defined(CONFIG_TOUCHSCREEN_HIMAX_ITO_TEST)
+#define HIMAX_PROC_ITO_TEST_FILE		"ITO_test"
+static struct proc_dir_entry *himax_proc_ito_test_file 		= NULL;
+
+extern void ito_set_step_status(uint8_t status);
+extern uint8_t ito_get_step_status(void);
+extern void ito_set_result_status(uint8_t status);
+extern uint8_t ito_get_result_status(void);
+
+#endif
+
+#ifdef HX_TP_PROC_REGISTER
+#define HIMAX_PROC_REGISTER_FILE	"register"
+struct proc_dir_entry *himax_proc_register_file = NULL;
+uint8_t byte_length = 0;
+uint8_t register_command[4];
+bool cfg_flag = false;
+#endif
+
+#ifdef HX_TP_PROC_DIAG
+#define HIMAX_PROC_DIAG_FILE	"diag"
+struct proc_dir_entry *himax_proc_diag_file = NULL;
+#define HIMAX_PROC_DIAG_ARR_FILE	"diag_arr"
+struct proc_dir_entry *himax_proc_diag_arrange_file = NULL;
+struct file *diag_sram_fn;
+uint8_t write_counter = 0;
+uint8_t write_max_count = 30;
+#define IIR_DUMP_FILE "/sdcard/HX_IIR_Dump.txt"
+#define DC_DUMP_FILE "/sdcard/HX_DC_Dump.txt"
+#define BANK_DUMP_FILE "/sdcard/HX_BANK_Dump.txt"
+
+#ifdef HX_TP_PROC_2T2R
+static uint8_t x_channel_2 = 0;
+static uint8_t y_channel_2 = 0;
+static uint32_t *diag_mutual_2 = NULL;
+
+int32_t *getMutualBuffer_2(void);
+uint8_t 	getXChannel_2(void);
+uint8_t 	getYChannel_2(void);
+
+void 	setMutualBuffer_2(void);
+void 	setXChannel_2(uint8_t x);
+void 	setYChannel_2(uint8_t y);
+#endif
+uint8_t x_channel 		= 0;
+uint8_t y_channel 		= 0;
+	int32_t *diag_mutual = NULL;
+	int32_t *diag_mutual_new = NULL;
+	int32_t *diag_mutual_old = NULL;
+uint8_t diag_max_cnt = 0;
+uint8_t hx_state_info[2] = {0};
+
+int g_diag_command = 0;
+uint8_t diag_coor[128];// = {0xFF};
+	int32_t diag_self[100] = {0};
+
+	int32_t *getMutualBuffer(void);
+	int32_t *getMutualNewBuffer(void);
+	int32_t *getMutualOldBuffer(void);
+	int32_t *getSelfBuffer(void);
+uint8_t 	getDiagCommand(void);
+uint8_t 	getXChannel(void);
+uint8_t 	getYChannel(void);
+
+void 	setMutualBuffer(void);
+void 	setMutualNewBuffer(void);
+void 	setMutualOldBuffer(void);
+void 	setXChannel(uint8_t x);
+void 	setYChannel(uint8_t y);
+#endif
+
+#ifdef HX_TP_PROC_DEBUG
+#define HIMAX_PROC_DEBUG_FILE	"debug"
+struct proc_dir_entry *himax_proc_debug_file = NULL;
+#define HIMAX_PROC_FW_DEBUG_FILE	"FW_debug"
+struct proc_dir_entry *himax_proc_fw_debug_file = NULL;
+#define HIMAX_PROC_DD_DEBUG_FILE	"DD_debug"
+struct proc_dir_entry *himax_proc_dd_debug_file = NULL;
+
+bool	fw_update_complete = false;
+int handshaking_result = 0;
+unsigned char debug_level_cmd = 0;
+unsigned char upgrade_fw[128*1024];
+uint8_t cmd_set[8];
+uint8_t mutual_set_flag = 0;
+#endif
+
+#ifdef HX_TP_PROC_FLASH_DUMP
+#define HIMAX_PROC_FLASH_DUMP_FILE	"flash_dump"
+struct proc_dir_entry *himax_proc_flash_dump_file = NULL;
+
+static int Flash_Size = 131072;
+static uint8_t *flash_buffer 				= NULL;
+static uint8_t flash_command 				= 0;
+static uint8_t flash_read_step 			= 0;
+static uint8_t flash_progress 			= 0;
+static uint8_t flash_dump_complete	= 0;
+static uint8_t flash_dump_fail 			= 0;
+static uint8_t sys_operation				= 0;
+static bool    flash_dump_going			= false;
+
+static uint8_t getFlashDumpComplete(void);
+static uint8_t getFlashDumpFail(void);
+static uint8_t getFlashDumpProgress(void);
+static uint8_t getFlashReadStep(void);
+uint8_t getFlashCommand(void);
+uint8_t getSysOperation(void);
+
+static void setFlashCommand(uint8_t command);
+static void setFlashReadStep(uint8_t step);
+
+void setFlashBuffer(void);
+void setFlashDumpComplete(uint8_t complete);
+void setFlashDumpFail(uint8_t fail);
+void setFlashDumpProgress(uint8_t progress);
+void setSysOperation(uint8_t operation);
+void setFlashDumpGoing(bool going);
+
+#endif
+
+#ifdef HX_TP_PROC_SELF_TEST
+#define HIMAX_PROC_SELF_TEST_FILE	"self_test"
+struct proc_dir_entry *himax_proc_self_test_file = NULL;
+uint32_t **raw_data_array;
+uint8_t X_NUM = 0, Y_NUM = 0;
+uint8_t sel_type = 0x0D;
+#endif
+
+#ifdef HX_TP_PROC_RESET
+#define HIMAX_PROC_RESET_FILE		"reset"
+struct proc_dir_entry *himax_proc_reset_file 		= NULL;
+#endif
+
+#ifdef HX_HIGH_SENSE
+#define HIMAX_PROC_HSEN_FILE "HSEN"
+struct proc_dir_entry *himax_proc_HSEN_file = NULL;
+#endif
+
+#ifdef HX_TP_PROC_SENSE_ON_OFF
+#define HIMAX_PROC_SENSE_ON_OFF_FILE "SenseOnOff"
+struct proc_dir_entry *himax_proc_SENSE_ON_OFF_file = NULL;
+#endif
+
+#ifdef HX_SMART_WAKEUP
+#define HIMAX_PROC_SMWP_FILE "SMWP"
+struct proc_dir_entry *himax_proc_SMWP_file = NULL;
+#define HIMAX_PROC_GESTURE_FILE "GESTURE"
+struct proc_dir_entry *himax_proc_GESTURE_file = NULL;
+uint8_t HX_SMWP_EN = 0;
+//extern bool FAKE_POWER_KEY_SEND;
+#endif
+
+#ifdef HX_ESD_RECOVERY
+#define HIMAX_PROC_ESD_CNT_FILE "ESD_cnt"
+struct proc_dir_entry *himax_proc_ESD_cnt_file = NULL;
+#endif
+
+#endif
+
+#endif
diff --git a/drivers/input/touchscreen/hxchipset83112b/himax_ic.c b/drivers/input/touchscreen/hxchipset83112b/himax_ic.c
new file mode 100644
index 0000000..b81f726
--- /dev/null
+++ b/drivers/input/touchscreen/hxchipset83112b/himax_ic.c
@@ -0,0 +1,3289 @@
+/* Himax Android Driver Sample Code for HX83112 chipset
+*
+* Copyright (C) 2017 Himax Corporation.
+*
+* This software is licensed under the terms of the GNU General Public
+* License version 2, as published by the Free Software Foundation, and
+* may be copied, distributed, and modified under those terms.
+*
+* This program is distributed in the hope that 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.
+*
+*/
+
+#include "himax_ic.h"
+/*[Arima_8710][allen_yu] Fix TP I2C error in suspend 20180423 begin*/
+#include "himax_common.h"
+/*[Arima_8710][allen_yu] 20180423 end*/
+
+extern int i2c_error_count;
+/*[Arima_8710][allen_yu] Fix TP I2C error in suspend 20180419 begin*/
+extern int reset_flag;
+/*[Arima_8710][allen_yu] 20180419 end*/
+
+extern unsigned long	FW_VER_MAJ_FLASH_ADDR;
+extern unsigned long 	FW_VER_MIN_FLASH_ADDR;
+extern unsigned long 	CFG_VER_MAJ_FLASH_ADDR;
+extern unsigned long 	CFG_VER_MIN_FLASH_ADDR;
+extern unsigned long 	CID_VER_MAJ_FLASH_ADDR;
+extern unsigned long 	CID_VER_MIN_FLASH_ADDR;
+
+extern unsigned long 	FW_VER_MAJ_FLASH_LENG;
+extern unsigned long 	FW_VER_MIN_FLASH_LENG;
+extern unsigned long 	CFG_VER_MAJ_FLASH_LENG;
+extern unsigned long 	CFG_VER_MIN_FLASH_LENG;
+extern unsigned long 	CID_VER_MAJ_FLASH_LENG;
+extern unsigned long 	CID_VER_MIN_FLASH_LENG;
+
+#ifdef HX_AUTO_UPDATE_FW
+extern int g_i_FW_VER;
+extern int g_i_CFG_VER;
+extern int g_i_CID_MAJ;
+extern int g_i_CID_MIN;
+/*[Arima_8710][allen_yu] Dynamic detect Yandex LCM/TP 2nd source and add PCBA node 20180828 begin*/
+//extern unsigned char i_CTPM_FW[];
+extern unsigned char i_CTPM_FW_HX83112A[];
+extern unsigned char i_CTPM_FW_HX83112B[];
+/*[Arima_8710][allen_yu] 20180828 end*/
+#endif
+
+extern unsigned char	IC_TYPE;
+extern unsigned char	IC_CHECKSUM;
+
+extern bool DSRAM_Flag;
+
+extern struct himax_ic_data* ic_data;
+extern struct himax_ts_data *private_ts;
+
+int himax_touch_data_size = 128;
+
+#ifdef HX_TP_PROC_2T2R
+bool Is_2T2R = false;
+#endif
+
+#ifdef HX_USB_DETECT_GLOBAL
+//extern kal_bool upmu_is_chr_det(void);
+extern void himax_cable_detect_func(bool force_renew);
+#endif
+
+int himax_get_touch_data_size(void)
+{
+    return himax_touch_data_size;
+}
+
+#ifdef HX_RST_PIN_FUNC
+extern void himax_rst_gpio_set(int pinnum, uint8_t value);
+extern int himax_report_data_init(void);
+extern u8 HX_HW_RESET_ACTIVATE;
+
+void himax_pin_reset(void)
+{
+	I("%s: Now reset the Touch chip.\n", __func__);
+	himax_rst_gpio_set(private_ts->rst_gpio, 0);
+	msleep(20);
+	himax_rst_gpio_set(private_ts->rst_gpio, 1);
+/*[Arima_7947][allen_yu] Enter safe mode when i2c fail 20180129 begin*/
+#if 0
+	msleep(20);
+#endif
+/*[Arima_7947][allen_yu] 20180129 end*/
+}
+
+void himax_reload_config(void)
+{
+    if(himax_report_data_init())
+        E("%s: allocate data fail\n",__func__);
+
+    himax_sense_on(private_ts->client, 0x00);
+}
+
+void himax_irq_switch(int switch_on)
+{
+    int ret = 0;
+    if(switch_on)
+    {
+
+        if (private_ts->use_irq)
+            himax_int_enable(private_ts->client->irq,switch_on);
+        else
+            hrtimer_start(&private_ts->timer, ktime_set(1, 0), HRTIMER_MODE_REL);
+    }
+    else
+    {
+        if (private_ts->use_irq)
+            himax_int_enable(private_ts->client->irq,switch_on);
+        else
+        {
+            hrtimer_cancel(&private_ts->timer);
+            ret = cancel_work_sync(&private_ts->work);
+        }
+    }
+}
+
+void himax_ic_reset(uint8_t loadconfig,uint8_t int_off)
+{
+/*[Arima_8710][allen_yu] Fix TP I2C error in suspend 20180423 begin*/
+#ifdef HX_RST_PIN_FUNC
+if (reset_flag ==1){
+/*[Arima_8710][allen_yu] 20180423 end*/
+    struct himax_ts_data *ts = private_ts;
+
+    HX_HW_RESET_ACTIVATE = 1;
+
+    I("%s,status: loadconfig=%d,int_off=%d\n",__func__,loadconfig,int_off);
+
+    if (ts->rst_gpio)
+    {
+        if(int_off)
+        {
+            himax_irq_switch(0);
+        }
+
+        himax_pin_reset();
+        if(loadconfig)
+        {
+            himax_reload_config();
+        }
+        if(int_off)
+        {
+            himax_irq_switch(1);
+        }
+    }
+/*[Arima_8710][allen_yu] Fix TP I2C error in suspend 20180423 begin*/
+}
+#endif
+/*[Arima_8710][allen_yu] 20180423 end*/
+}
+#endif
+
+#if defined(HX_ESD_RECOVERY)
+int g_zero_event_count = 0;
+int himax_ic_esd_recovery(int hx_esd_event,int hx_zero_event,int length)
+{
+    if(g_zero_event_count > 5)
+    {
+        g_zero_event_count = 0;
+        I("[HIMAX TP MSG]: ESD event checked - ALL Zero.\n");
+        goto checksum_fail;
+    }
+
+    if(hx_esd_event == length)
+    {
+	g_zero_event_count = 0;
+        goto checksum_fail;
+    }
+    else if(hx_zero_event == length)
+    {
+        g_zero_event_count++;
+        I("[HIMAX TP MSG]: ALL Zero event is %d times.\n",g_zero_event_count);
+        goto err_workqueue_out;
+    }
+
+checksum_fail:
+    return CHECKSUM_FAIL;
+err_workqueue_out:
+    return WORK_OUT;
+}
+void himax_esd_ic_reset(void)
+{
+    /*Nothing to do in incell,need to follow display reset*/
+}
+#endif
+
+int himax_hand_shaking(struct i2c_client *client)    //0:Running, 1:Stop, 2:I2C Fail
+{
+    int result = 0;
+
+    return result;
+}
+
+void himax_idle_mode(struct i2c_client *client,int disable)
+{
+    int retry = 20;
+    uint8_t tmp_addr[4];
+    uint8_t tmp_data[4];
+    uint8_t switch_cmd = 0x00;
+
+    I("%s:entering\n",__func__);
+    do
+    {
+
+        I("%s,now %d times\n!",__func__,retry);
+
+        tmp_addr[3] = 0x10;
+        tmp_addr[2] = 0x00;
+        tmp_addr[1] = 0x70;
+        tmp_addr[0] = 0x88;
+        himax_register_read(client, tmp_addr, 4, tmp_data, false);
+
+        if(disable)
+            switch_cmd = 0x17;
+        else
+            switch_cmd = 0x1F;
+
+        tmp_data[0] = switch_cmd;
+        himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+        himax_register_read(client, tmp_addr, 4, tmp_data, false);
+        I("%s:After turn ON/OFF IDLE Mode [0] = 0x%02X,[1] = 0x%02X,[2] = 0x%02X,[3] = 0x%02X\n", __func__,tmp_data[0],tmp_data[1],tmp_data[2],tmp_data[3]);
+
+        retry--;
+        msleep(10);
+
+    }
+    while((tmp_data[0] != switch_cmd) && retry > 0);
+
+    I("%s: setting OK!\n",__func__);
+
+}
+
+int himax_write_read_reg(struct i2c_client *client,uint8_t *tmp_addr,uint8_t *tmp_data,uint8_t hb,uint8_t lb)
+{
+    int cnt = 0;
+
+    do
+    {
+        himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+        msleep(10);
+        himax_register_read(client, tmp_addr, 4, tmp_data, false);
+        //I("%s:Now tmp_data[0]=0x%02X,[1]=0x%02X,[2]=0x%02X,[3]=0x%02X\n",__func__,tmp_data[0],tmp_data[1],tmp_data[2],tmp_data[3]);
+    }
+    while((tmp_data[1] != hb && tmp_data[0] != lb) && cnt++ < 100);
+
+    if(cnt == 99)
+        return -1;
+
+    I("Now register 0x%08X : high byte=0x%02X,low byte=0x%02X\n",tmp_addr[3],tmp_data[1],tmp_data[0]);
+    return NO_ERR;
+}
+
+int himax_determin_diag_rawdata(int diag_command)
+{
+    return diag_command%10;
+}
+
+int himax_determin_diag_storage(int diag_command)
+{
+    return diag_command/10;
+}
+
+void himax_reload_disable(struct i2c_client *client)
+{
+	uint8_t tmp_addr[4];
+	uint8_t tmp_data[4];
+
+	I("%s:entering\n",__func__);
+
+	tmp_addr[3] = 0x10; tmp_addr[2] = 0x00; tmp_addr[1] = 0x7F; tmp_addr[0] = 0x00;
+	tmp_data[3] = 0x00; tmp_data[2] = 0x00; tmp_data[1] = 0xA5; tmp_data[0] = 0x5A;
+
+	himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+	I("%s: setting OK!\n",__func__);
+}
+
+int himax_switch_mode(struct i2c_client *client,int mode)
+{
+    uint8_t tmp_addr[4];
+    uint8_t tmp_data[4];
+    uint8_t mode_wirte_cmd;
+    uint8_t mode_read_cmd;
+    int result = -1;
+    int retry = 200;
+
+    I("%s: Entering\n",__func__);
+
+    if(mode == 0) /*normal mode*/
+    {
+        mode_wirte_cmd = 0x00;
+        mode_read_cmd = 0x99;
+    }
+    else		/*sorting mode*/
+    {
+        mode_wirte_cmd = 0xAA;
+        mode_read_cmd = 0xCC;
+    }
+
+    himax_sense_off(client);
+
+    //himax_interface_on(client);
+
+    /*  */
+
+    /* clean up FW status */
+    tmp_addr[3] = 0x10;
+    tmp_addr[2] = 0x00;
+    tmp_addr[1] = 0x00;
+    tmp_addr[0] = 0x00;
+    tmp_data[3] = 0x00;
+    tmp_data[2] = 0x00;
+    tmp_data[1] = 0x00;
+    tmp_data[0] = 0x00;
+    himax_flash_write_burst(client, tmp_addr, tmp_data);
+    //msleep(30);
+
+    tmp_addr[3] = 0x10;
+    tmp_addr[2] = 0x00;
+    tmp_addr[1] = 0x7F;
+    tmp_addr[0] = 0x04;
+    tmp_data[3] = 0x00;
+    tmp_data[2] = 0x00;
+    tmp_data[1] = mode_wirte_cmd;
+    tmp_data[0] = mode_wirte_cmd;
+    himax_flash_write_burst(client, tmp_addr, tmp_data);
+    //msleep(30);
+
+    himax_idle_mode(client,1);
+	himax_reload_disable(client);
+
+    // To stable the sorting //skip frames
+    if(mode)
+    {
+        tmp_addr[3] = 0x10;
+        tmp_addr[2] = 0x00;
+        tmp_addr[1] = 0x70;
+        tmp_addr[0] = 0xF4;
+        tmp_data[3] = 0x00;
+        tmp_data[2] = 0x00;
+        tmp_data[1] = 0x00;
+        tmp_data[0] = 0x08;
+        himax_flash_write_burst(client, tmp_addr, tmp_data);
+    }
+    else
+    {
+		tmp_addr[3] = 0x10;
+		tmp_addr[2] = 0x00;
+		tmp_addr[1] = 0x72;
+		tmp_addr[0] = 0x94;
+		tmp_data[3] = 0x00;
+		tmp_data[2] = 0x00;
+		tmp_data[1] = 0x00;
+		tmp_data[0] = 0x50;/*0x50 normal mode 80 frame*/
+		/* N Frame Sorting*/
+		himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+        tmp_addr[3] = 0x10;
+        tmp_addr[2] = 0x00;
+        tmp_addr[1] = 0x70;
+        tmp_addr[0] = 0xF4;
+        tmp_data[3] = 0x00;
+        tmp_data[2] = 0x00;
+        tmp_data[1] = 0x00;
+        tmp_data[0] = 0x14;
+        himax_flash_write_burst(client, tmp_addr, tmp_data);
+    }
+
+    himax_sense_on(client,0x01);
+    I("mode_wirte_cmd(0)=0x%2.2X,mode_wirte_cmd(1)=0x%2.2X\n",tmp_data[0],tmp_data[1]);
+    while(retry!=0)
+    {
+        I("[%d]Read 10007F04!\n",retry);
+        tmp_addr[3] = 0x10;
+        tmp_addr[2] = 0x00;
+        tmp_addr[1] = 0x7F;
+        tmp_addr[0] = 0x04;
+        himax_register_read(client, tmp_addr, 4, tmp_data, false);
+        msleep(100);
+        I("mode_read_cmd(0)=0x%2.2X,mode_read_cmd(1)=0x%2.2X\n",tmp_data[0],tmp_data[1]);
+        if(tmp_data[0] == mode_read_cmd && tmp_data[1] == mode_read_cmd)
+        {
+            I("Read OK!\n");
+            result = 0;
+            break;
+        }
+        tmp_addr[3] = 0x90;
+        tmp_addr[2] = 0x00;
+        tmp_addr[1] = 0x00;
+        tmp_addr[0] = 0xA8;
+        himax_register_read(client, tmp_addr, 4, tmp_data, false);
+        if(tmp_data[0] == 0x00 && tmp_data[1] == 0x00 && tmp_data[2] == 0x00 && tmp_data[3] == 0x00)
+        {
+            E("%s,: FW Stop!\n",__func__);
+            break;
+        }
+        retry--;
+    }
+
+    if(result == 0)
+    {
+        if(mode == 0)
+            return 1;  //normal mode
+        else
+            return 2;  //sorting mode
+    }
+    else
+        return -1;    //change mode fail
+}
+
+void himax_return_event_stack(struct i2c_client *client)
+{
+    int retry = 20;
+    uint8_t tmp_addr[4];
+    uint8_t tmp_data[4];
+
+    I("%s:entering\n",__func__);
+    do
+    {
+
+        I("%s,now %d times\n!",__func__,retry);
+        tmp_addr[3] = 0x10;
+        tmp_addr[2] = 0x00;
+        tmp_addr[1] = 0x00;
+        tmp_addr[0] = 0x00;
+        tmp_data[3] = 0x00;
+        tmp_data[2] = 0x00;
+        tmp_data[1] = 0x00;
+        tmp_data[0] = 0x00;
+        himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+        himax_register_read(client, tmp_addr, 4, tmp_data, false);
+        retry--;
+        msleep(10);
+
+    }
+    while((tmp_data[1] != 0x00 && tmp_data[0] != 0x00) && retry > 0);
+
+    I("%s: End of setting!\n",__func__);
+
+}
+
+void himax_diag_register_set(struct i2c_client *client, uint8_t diag_command)
+{
+    uint8_t tmp_addr[4];
+    uint8_t tmp_data[4];
+
+    I("diag_command = %d\n", diag_command );
+
+    himax_interface_on(client);
+
+    tmp_addr[3] = 0x80;
+    tmp_addr[2] = 0x02;
+    tmp_addr[1] = 0x04;
+    tmp_addr[0] = 0xB4;
+    tmp_data[3] = 0x00;
+    tmp_data[2] = 0x00;
+    tmp_data[1] = 0x00;
+    tmp_data[0] = diag_command;
+    himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+    himax_register_read(client, tmp_addr, 4, tmp_data, false);
+    I("%s: tmp_data[3]=0x%02X,tmp_data[2]=0x%02X,tmp_data[1]=0x%02X,tmp_data[0]=0x%02X!\n",
+      __func__,tmp_data[3],tmp_data[2],tmp_data[1],tmp_data[0]);
+
+}
+
+void himax_init_psl(struct i2c_client *client) //power saving level
+{
+    uint8_t tmp_addr[4];
+    uint8_t tmp_data[4];
+
+    //==============================================================
+    // SCU_Power_State_PW : 0x9000_00A0 ==> 0x0000_0000 (Reset PSL)
+    //==============================================================
+    tmp_addr[3] = 0x90;
+    tmp_addr[2] = 0x00;
+    tmp_addr[1] = 0x00;
+    tmp_addr[0] = 0xA0;
+    tmp_data[3] = 0x00;
+    tmp_data[2] = 0x00;
+    tmp_data[1] = 0x00;
+    tmp_data[0] = 0x00;
+    himax_register_write(client, tmp_addr, 4, tmp_data, false);
+
+    I("%s: power saving level reset OK!\n",__func__);
+}
+
+void himax_flash_dump_func(struct i2c_client *client, uint8_t local_flash_command, int Flash_Size, uint8_t *flash_buffer)
+{
+    uint8_t tmp_addr[4];
+    uint8_t buffer[256];
+    int page_prog_start = 0;
+
+    himax_sense_off(client);
+    himax_burst_enable(client, 1);
+
+    for (page_prog_start = 0; page_prog_start < Flash_Size; page_prog_start = page_prog_start + 128)
+    {
+
+        tmp_addr[0] = page_prog_start % 0x100;
+        tmp_addr[1] = (page_prog_start >> 8) % 0x100;
+        tmp_addr[2] = (page_prog_start >> 16) % 0x100;
+        tmp_addr[3] = page_prog_start / 0x1000000;
+        himax_register_read(client, tmp_addr,128,buffer,false);
+        memcpy(&flash_buffer[page_prog_start],buffer,128);
+    }
+
+    himax_burst_enable(client, 0);
+    himax_sense_on(client, 0x01);
+
+    return;
+
+}
+
+int himax_chip_self_test(struct i2c_client *client)
+{
+    uint8_t tmp_addr[4];
+    uint8_t tmp_data[128];
+    uint8_t self_test_info[24];
+    int pf_value=0x00;
+    uint8_t test_result_id = 0;
+    int i;
+
+    memset(tmp_addr, 0x00, sizeof(tmp_addr));
+    memset(tmp_data, 0x00, sizeof(tmp_data));
+
+    himax_interface_on(client);
+    himax_sense_off(client);
+
+
+    himax_burst_enable(client, 1);
+
+    // 0x10007f18 -> 0x00006AA6
+    tmp_addr[3] = 0x10;
+    tmp_addr[2] = 0x00;
+    tmp_addr[1] = 0x7F;
+    tmp_addr[0] = 0x18;
+    tmp_data[3] = 0x00;
+    tmp_data[2] = 0x00;
+    tmp_data[1] = 0x6A;
+    tmp_data[0] = 0xA6;
+    himax_flash_write_burst(client, tmp_addr, tmp_data);
+/*[Arima_8710][allen_yu] Set touch golden value for ATS 20180620 begin*/
+    //Set criteria 0x10007F1C [0,1]=aa/up,down=, [2-3]=key/up,down, [4-5]=avg/up,down
+    tmp_addr[3] = 0x10;
+    tmp_addr[2] = 0x00;
+    tmp_addr[1] = 0x7F;
+    tmp_addr[0] = 0x1C;
+/*[20190822][TracyChui]Modify touch self test criteria for 0.9 glass start */
+/*[20190815][TracyChui]Modify touch self test criteria start */
+/*[Arima_8901][allen_yu] Modify touch golden value 20190527 begin*/
+/*[Arima_8710][allen_yu] Dynamic detect touch golden value 20180929 begin*/
+/*[Arima_8710][allen_yu] Dynamic detect Yandex LCM/TP 2nd source and add PCBA node 20180828 begin*/
+    if(IC_TYPE == HX_83112A_SERIES_PWON)
+	{
+		    tmp_data[3] = 0x00;
+		    tmp_data[2] = 0x64;
+		    tmp_data[1] = 0x08;
+		    tmp_data[0] = 0x32;
+		    tmp_data[7] = 0x00;
+		    tmp_data[6] = 0x00;
+		    tmp_data[5] = 0x00;
+		    tmp_data[4] = 0x64;
+	}
+	else/*HX_83112B_SERIES_PWON*/
+		 {
+		    tmp_data[3] = 0x00;
+		    tmp_data[2] = 0x64;
+		    tmp_data[1] = 0x0F;
+		    tmp_data[0] = 0x46;
+		    tmp_data[7] = 0x00;
+		    tmp_data[6] = 0x00;
+		    tmp_data[5] = 0x00;
+		    tmp_data[4] = 0x64;
+	}
+/*[Arima_8710][allen_yu] 20180929 end*/
+/*[Arima_8710][allen_yu] 20180828 end*/
+/*[Arima_8901][allen_yu] 20190527 end*/
+/*[20190815][TracyChui]Modify touch self test criteria end */
+/*[20190822][TracyChui]Modify touch self test criteria for 0.9 glass end */
+    himax_flash_write_burst_lenth(client, tmp_addr, tmp_data, 8);
+/*[Arima_8710][allen_yu] 20180620 end*/
+    // 0x10007294 -> 0x0000190  //SET IIR_MAX FRAMES
+    tmp_addr[3] = 0x10;
+    tmp_addr[2] = 0x00;
+    tmp_addr[1] = 0x7F;
+    tmp_addr[0] = 0x00;
+    tmp_data[3] = 0x00;
+    tmp_data[2] = 0x00;
+    tmp_data[1] = 0x01;
+    tmp_data[0] = 0x90;
+    himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+    //Disable IDLE Mode
+    himax_idle_mode(client,1);
+
+    // 0x10007f00 -> 0x0000A55A //Diable Flash Reload
+    tmp_addr[3] = 0x10;
+    tmp_addr[2] = 0x00;
+    tmp_addr[1] = 0x7F;
+    tmp_addr[0] = 0x00;
+    tmp_data[3] = 0x00;
+    tmp_data[2] = 0x00;
+    tmp_data[1] = 0xA5;
+    tmp_data[0] = 0x5A;
+    himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+
+    //start selftest // leave safe mode
+    himax_sense_on(client, 1);
+
+    //Hand shaking -> 0x100007f8 waiting 0xA66A
+    for(i = 0; i < 1000; i++)
+    {
+        tmp_addr[3] = 0x10;
+        tmp_addr[2] = 0x00;
+        tmp_addr[1] = 0x7F;
+        tmp_addr[0] = 0x18;
+        himax_register_read(client, tmp_addr, 4, tmp_data, false);
+        I("%s: tmp_data[0] = 0x%02X,tmp_data[1] = 0x%02X,tmp_data[2] = 0x%02X,tmp_data[3] = 0x%02X, cnt=%d\n", __func__,tmp_data[0],tmp_data[1],tmp_data[2],tmp_data[3],i);
+        msleep(10);
+        if(tmp_data[1] == 0xA6 && tmp_data[0] == 0x6A )
+        {
+            I("%s Data ready goto moving data\n", __func__);
+            break;
+        }
+    }
+
+    himax_sense_off(client);
+    msleep(20);
+
+    //=====================================
+    // Read test result ID : 0x10007f24 ==> bit[2][1][0] = [key][AA][avg] => 0xF = PASS
+    //=====================================
+    tmp_addr[3] = 0x10;
+    tmp_addr[2] = 0x00;
+    tmp_addr[1] = 0x7F;
+    tmp_addr[0] = 0x24;
+    himax_register_read(client, tmp_addr, 24, self_test_info, false);
+
+    test_result_id = self_test_info[0];
+
+    I("%s: check test result, test_result_id=%x, test_result=%x\n", __func__
+      ,test_result_id,self_test_info[0]);
+
+    I("raw top 1 = %d\n",self_test_info[3]*256+self_test_info[2]);
+    I("raw top 2 = %d\n",self_test_info[5]*256+self_test_info[4]);
+    I("raw top 3 = %d\n",self_test_info[7]*256+self_test_info[6]);
+
+    I("raw last 1 = %d\n",self_test_info[9]*256+self_test_info[8]);
+    I("raw last 2 = %d\n",self_test_info[11]*256+self_test_info[10]);
+    I("raw last 3 = %d\n",self_test_info[13]*256+self_test_info[12]);
+
+    I("raw key 1 = %d\n",self_test_info[15]*256+self_test_info[14]);
+    I("raw key 2 = %d\n",self_test_info[17]*256+self_test_info[16]);
+    I("raw key 3 = %d\n",self_test_info[19]*256+self_test_info[18]);
+
+    if (test_result_id==0xAA)
+    {
+        I("[Himax]: self-test pass\n");
+        pf_value = 0x1;
+    }
+    else
+    {
+        E("[Himax]: self-test fail\n");
+        /* E("[Himax]: bank_avg = %d, bank_max = %d,%d,%d, bank_min = %d,%d,%d, key = %d,%d,%d\n",
+        tmp_data[1],tmp_data[2],tmp_data[3],tmp_data[4],tmp_data[5],tmp_data[6],tmp_data[7],
+        tmp_data[8],tmp_data[9],tmp_data[10]); */
+        pf_value = 0x0;
+    }
+
+    //Enable IDLE Mode
+    himax_idle_mode(client,0);
+
+    // 0x10007f00 -> 0x00000000 //Enable Flash Reload //recovery
+    tmp_addr[3] = 0x10;
+    tmp_addr[2] = 0x00;
+    tmp_addr[1] = 0x7F;
+    tmp_addr[0] = 0x00;
+    tmp_data[3] = 0x00;
+    tmp_data[2] = 0x00;
+    tmp_data[1] = 0x00;
+    tmp_data[0] = 0x00;
+    himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+    himax_sense_on(client, 0);
+    msleep(120);
+
+    return pf_value;
+}
+
+void himax_set_HSEN_enable(struct i2c_client *client, uint8_t HSEN_enable, bool suspended)
+{
+    uint8_t tmp_addr[4];
+    uint8_t tmp_data[4];
+	uint8_t back_data[4];
+    uint8_t retry_cnt = 0;
+
+	himax_sense_off(client);
+
+	//Enable:0x10007F14 = 0xA55AA55A
+	do
+	{
+		if(HSEN_enable)
+		{
+			tmp_addr[3] = 0x10;
+			tmp_addr[2] = 0x00;
+			tmp_addr[1] = 0x7F;
+			tmp_addr[0] = 0x14;
+			tmp_data[3] = 0xA5;
+			tmp_data[2] = 0x5A;
+			tmp_data[1] = 0xA5;
+			tmp_data[0] = 0x5A;
+			himax_flash_write_burst(client, tmp_addr, tmp_data);
+			back_data[3] = 0XA5;
+			back_data[2] = 0X5A;
+			back_data[1] = 0XA5;
+			back_data[0] = 0X5A;
+		}
+		else
+		{
+			tmp_addr[3] = 0x10;
+			tmp_addr[2] = 0x00;
+			tmp_addr[1] = 0x7F;
+			tmp_addr[0] = 0x14;
+			tmp_data[3] = 0x00;
+			tmp_data[2] = 0x00;
+			tmp_data[1] = 0x00;
+			tmp_data[0] = 0x00;
+			himax_flash_write_burst(client, tmp_addr, tmp_data);
+			back_data[3] = 0X00;
+			back_data[2] = 0X00;
+			back_data[1] = 0X00;
+			back_data[0] = 0x00;
+		}
+		himax_register_read(client, tmp_addr, 4, tmp_data, false);
+		//I("%s: tmp_data[0]=%d, HSEN_enable=%d, retry_cnt=%d \n", __func__, tmp_data[0],HSEN_enable,retry_cnt);
+		retry_cnt++;
+	}
+	while((tmp_data[3] != back_data[3] || tmp_data[2] != back_data[2] || tmp_data[1] != back_data[1]  || tmp_data[0] != back_data[0] ) && retry_cnt < HIMAX_REG_RETRY_TIMES);
+
+	himax_sense_on(client,0);
+}
+
+int himax_palm_detect(uint8_t *buf)
+{
+
+    return GESTURE_DETECT_FAIL;
+
+}
+
+void himax_set_SMWP_enable(struct i2c_client *client, uint8_t SMWP_enable, bool suspended)
+{
+    uint8_t tmp_addr[4];
+    uint8_t tmp_data[4];
+    uint8_t back_data[4];
+    uint8_t retry_cnt = 0;
+
+	himax_sense_off(client);
+
+    //Enable:0x10007F10 = 0xA55AA55A
+    do
+    {
+        if(SMWP_enable)
+        {
+            tmp_addr[3] = 0x10;
+            tmp_addr[2] = 0x00;
+            tmp_addr[1] = 0x7F;
+            tmp_addr[0] = 0x10;
+            tmp_data[3] = 0xA5;
+            tmp_data[2] = 0x5A;
+            tmp_data[1] = 0xA5;
+            tmp_data[0] = 0x5A;
+            himax_flash_write_burst(client, tmp_addr, tmp_data);
+            back_data[3] = 0XA5;
+            back_data[2] = 0X5A;
+            back_data[1] = 0XA5;
+            back_data[0] = 0X5A;
+        }
+        else
+        {
+            tmp_addr[3] = 0x10;
+            tmp_addr[2] = 0x00;
+            tmp_addr[1] = 0x7F;
+            tmp_addr[0] = 0x10;
+            tmp_data[3] = 0x00;
+            tmp_data[2] = 0x00;
+            tmp_data[1] = 0x00;
+            tmp_data[0] = 0x00;
+            himax_flash_write_burst(client, tmp_addr, tmp_data);
+            back_data[3] = 0X00;
+            back_data[2] = 0X00;
+            back_data[1] = 0X00;
+            back_data[0] = 0x00;
+        }
+        himax_register_read(client, tmp_addr, 4, tmp_data, false);
+        //I("%s: tmp_data[0]=%d, SMWP_enable=%d, retry_cnt=%d \n", __func__, tmp_data[0],SMWP_enable,retry_cnt);
+        retry_cnt++;
+    }
+    while((tmp_data[3] != back_data[3] || tmp_data[2] != back_data[2] || tmp_data[1] != back_data[1]  || tmp_data[0] != back_data[0] ) && retry_cnt < HIMAX_REG_RETRY_TIMES);
+
+	himax_sense_on(client,0);
+
+}
+
+void himax_usb_detect_set(struct i2c_client *client,uint8_t *cable_config)
+{
+    uint8_t tmp_addr[4];
+    uint8_t tmp_data[4];
+
+	//Enable:0x10007F38 = 0xA55AA55A
+
+    if(cable_config[1] == 0x01)
+    {
+       tmp_addr[3] = 0x10;
+       tmp_addr[2] = 0x00;
+       tmp_addr[1] = 0x7F;
+       tmp_addr[0] = 0x38;
+       tmp_data[3] = 0xA5;
+       tmp_data[2] = 0x5A;
+       tmp_data[1] = 0xA5;
+       tmp_data[0] = 0x5A;
+       himax_flash_write_burst(client, tmp_addr, tmp_data);
+    }
+    else
+    {
+       tmp_addr[3] = 0x10;
+       tmp_addr[2] = 0x00;
+       tmp_addr[1] = 0x7F;
+       tmp_addr[0] = 0x38;
+       tmp_data[3] = 0x77;
+       tmp_data[2] = 0x88;
+       tmp_data[1] = 0x77;
+       tmp_data[0] = 0x88;
+       himax_flash_write_burst(client, tmp_addr, tmp_data);
+     }
+}
+
+void himax_burst_enable(struct i2c_client *client, uint8_t auto_add_4_byte)
+{
+    uint8_t tmp_data[4];
+
+    tmp_data[0] = 0x31;
+    if ( i2c_himax_write(client, 0x13,tmp_data, 1, DEFAULT_RETRY_CNT) < 0)
+    {
+        E("%s: i2c access fail!\n", __func__);
+        return;
+    }
+
+    tmp_data[0] = (0x10 | auto_add_4_byte);
+    if ( i2c_himax_write(client, 0x0D,tmp_data, 1, DEFAULT_RETRY_CNT) < 0)
+    {
+        E("%s: i2c access fail!\n", __func__);
+        return;
+    }
+
+    //isBusrtOn = true;
+}
+
+void himax_register_read(struct i2c_client *client, uint8_t *read_addr, int read_length, uint8_t *read_data, bool cfg_flag)
+{
+    uint8_t tmp_data[4];
+    int i = 0;
+    int address = 0;
+    if(cfg_flag == false)
+    {
+        if(read_length>256)
+        {
+            E("%s: read len over 256!\n", __func__);
+            return;
+        }
+        if (read_length > 4)
+            himax_burst_enable(client, 1);
+        else
+            himax_burst_enable(client, 0);
+
+        address = (read_addr[3] << 24) + (read_addr[2] << 16) + (read_addr[1] << 8) + read_addr[0];
+        i = address;
+        tmp_data[0] = (uint8_t)i;
+        tmp_data[1] = (uint8_t)(i >> 8);
+        tmp_data[2] = (uint8_t)(i >> 16);
+        tmp_data[3] = (uint8_t)(i >> 24);
+        if ( i2c_himax_write(client, 0x00,tmp_data, 4, DEFAULT_RETRY_CNT) < 0)
+        {
+            E("%s: i2c access fail!\n", __func__);
+            return;
+        }
+        tmp_data[0] = 0x00;
+        if ( i2c_himax_write(client, 0x0C,tmp_data, 1, DEFAULT_RETRY_CNT) < 0)
+        {
+            E("%s: i2c access fail!\n", __func__);
+            return;
+        }
+
+        if ( i2c_himax_read(client, 0x08,read_data, read_length, DEFAULT_RETRY_CNT) < 0)
+        {
+            E("%s: i2c access fail!\n", __func__);
+            return;
+        }
+        if (read_length > 4)
+            himax_burst_enable(client, 0);
+    }
+    else if(cfg_flag == true)
+    {
+        if(i2c_himax_read(client, read_addr[0], read_data,read_length,DEFAULT_RETRY_CNT) < 0)
+        {
+            E("%s: i2c access fail!\n", __func__);
+            return;
+        }
+    }
+    else
+    {
+        E("%s: cfg_flag = %d, value is wrong!\n", __func__,cfg_flag);
+        return;
+    }
+}
+
+void himax_flash_write_burst(struct i2c_client *client, uint8_t * reg_byte, uint8_t * write_data)
+{
+    uint8_t data_byte[8];
+    int i = 0, j = 0;
+
+    for (i = 0; i < 4; i++)
+    {
+        data_byte[i] = reg_byte[i];
+    }
+    for (j = 4; j < 8; j++)
+    {
+        data_byte[j] = write_data[j-4];
+    }
+
+    if ( i2c_himax_write(client, 0x00,data_byte, 8, DEFAULT_RETRY_CNT) < 0)
+    {
+        E("%s: i2c access fail!\n", __func__);
+        return;
+    }
+
+}
+
+void himax_flash_write_burst_lenth(struct i2c_client *client, uint8_t *reg_byte, uint8_t *write_data, int length)
+{
+    uint8_t data_byte[256];
+    int i = 0, j = 0;
+
+    for (i = 0; i < 4; i++)
+    {
+        data_byte[i] = reg_byte[i];
+    }
+    for (j = 4; j < length + 4; j++)
+    {
+        data_byte[j] = write_data[j - 4];
+    }
+
+    if ( i2c_himax_write(client, 0x00,data_byte, length + 4, DEFAULT_RETRY_CNT) < 0)
+    {
+        E("%s: i2c access fail!\n", __func__);
+        return;
+    }
+}
+
+void himax_register_write(struct i2c_client *client, uint8_t *write_addr, int write_length, uint8_t *write_data, bool cfg_flag)
+{
+    int i =0, address = 0;
+    if(cfg_flag == false)
+    {
+        address = (write_addr[3] << 24) + (write_addr[2] << 16) + (write_addr[1] << 8) + write_addr[0];
+
+        for (i = address; i < address + write_length; i++)
+        {
+            if (write_length > 4)
+            {
+                himax_burst_enable(client, 1);
+            }
+            else
+            {
+                himax_burst_enable(client, 0);
+            }
+            himax_flash_write_burst_lenth(client, write_addr, write_data, write_length);
+        }
+    }
+    else if(cfg_flag == true)
+    {
+        if(i2c_himax_write(client, write_addr[0], write_data,write_length,DEFAULT_RETRY_CNT) < 0)
+        {
+            E("%s: i2c access fail!\n", __func__);
+            return;
+        }
+    }
+    else
+    {
+        E("%s: cfg_flag = %d, value is wrong!\n", __func__,cfg_flag);
+        return;
+    }
+}
+
+bool himax_sense_off(struct i2c_client *client)
+{
+    uint8_t cnt = 0;
+    uint8_t tmp_addr[4];
+    uint8_t tmp_data[4];
+/*[Arima_7947][allen_yu] Modify Int trigger way and upgrade himax fw to CID0404_D01_C02 20171228 begin*/
+	/*1225 for power on test*/
+	//=====================================
+	// FW ISR=0
+	//=====================================
+	tmp_addr[3] = 0x90;
+	tmp_addr[2] = 0x00;
+	tmp_addr[1] = 0x00;
+	tmp_addr[0] = 0x5C;
+	tmp_data[3] = 0x00;
+	tmp_data[2] = 0x00;
+	tmp_data[1] = 0x00;
+	tmp_data[0] = 0xA5;
+	himax_flash_write_burst(client, tmp_addr, tmp_data);
+	msleep(20);
+	/*1225 for power on test*/
+/*[Arima_7947][allen_yu] 20171228 end*/
+    do
+    {
+        //===========================================
+        //  0x31 ==> 0x27
+        //===========================================
+        tmp_data[0] = 0x27;
+        if ( i2c_himax_write(client, 0x31,tmp_data, 1, DEFAULT_RETRY_CNT) < 0)
+        {
+            E("%s: i2c access fail!\n", __func__);
+            return false;
+        }
+        //===========================================
+        //  0x32 ==> 0x95
+        //===========================================
+        tmp_data[0] = 0x95;
+        if ( i2c_himax_write(client, 0x32,tmp_data, 1, DEFAULT_RETRY_CNT) < 0)
+        {
+            E("%s: i2c access fail!\n", __func__);
+            return false;
+        }
+
+        // ======================
+        // Check enter_save_mode
+        // ======================
+        tmp_addr[3] = 0x90;
+        tmp_addr[2] = 0x00;
+        tmp_addr[1] = 0x00;
+        tmp_addr[0] = 0xA8;
+        himax_register_read(client, tmp_addr, 4, tmp_data, false);
+
+        I("%s: Check enter_save_mode data[0]=%X \n", __func__,tmp_data[0]);
+
+        if (tmp_data[0] == 0x0C)
+        {
+            //=====================================
+            // Reset TCON
+            //=====================================
+            tmp_addr[3] = 0x80;
+            tmp_addr[2] = 0x02;
+            tmp_addr[1] = 0x00;
+            tmp_addr[0] = 0x20;
+            tmp_data[3] = 0x00;
+            tmp_data[2] = 0x00;
+            tmp_data[1] = 0x00;
+            tmp_data[0] = 0x00;
+            himax_flash_write_burst(client, tmp_addr, tmp_data);
+            msleep(1);
+            tmp_data[3] = 0x00;
+            tmp_data[2] = 0x00;
+            tmp_data[1] = 0x00;
+            tmp_data[0] = 0x01;
+            himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+            //=====================================
+            // Reset ADC
+            //=====================================
+            tmp_addr[3] = 0x80;
+            tmp_addr[2] = 0x02;
+            tmp_addr[1] = 0x00;
+            tmp_addr[0] = 0x94;
+            tmp_data[3] = 0x00;
+            tmp_data[2] = 0x00;
+            tmp_data[1] = 0x00;
+            tmp_data[0] = 0x00;
+            himax_flash_write_burst(client, tmp_addr, tmp_data);
+            msleep(1);
+            tmp_data[3] = 0x00;
+            tmp_data[2] = 0x00;
+            tmp_data[1] = 0x00;
+            tmp_data[0] = 0x01;
+            himax_flash_write_burst(client, tmp_addr, tmp_data);
+            return true;
+        }
+        else
+        {
+            msleep(10);
+#ifdef HX_RST_PIN_FUNC
+			himax_ic_reset(false,false);
+#endif
+        }
+    }
+    while (cnt++ < 15);
+
+    return false;
+}
+/*[Arima_7947][allen_yu] Enter safe mode when i2c fail 20180129 begin*/
+bool himax_enter_safe_mode(struct i2c_client *client)
+{
+    uint8_t cnt = 0;
+    uint8_t tmp_addr[4];
+    uint8_t tmp_data[4];
+
+    do
+    {
+        //===========================================
+        //  0x31 ==> 0x27
+        //===========================================
+        tmp_data[0] = 0x27;
+        if ( i2c_himax_write(client, 0x31,tmp_data, 1, DEFAULT_RETRY_CNT) < 0)
+        {
+            E("%s: i2c access fail!\n", __func__);
+            return false;
+        }
+        //===========================================
+        //  0x32 ==> 0x95
+        //===========================================
+        tmp_data[0] = 0x95;
+        if ( i2c_himax_write(client, 0x32,tmp_data, 1, DEFAULT_RETRY_CNT) < 0)
+        {
+            E("%s: i2c access fail!\n", __func__);
+            return false;
+        }
+
+        //===========================================
+        //  0x31 ==> 0x00
+        //===========================================
+        tmp_data[0] = 0x00;
+        if ( i2c_himax_write(client, 0x31,tmp_data, 1, DEFAULT_RETRY_CNT) < 0)
+        {
+            E("%s: i2c access fail!\n", __func__);
+            return false;
+        }
+		msleep(10);
+        //===========================================
+        //  0x31 ==> 0x27
+        //===========================================
+        tmp_data[0] = 0x27;
+        if ( i2c_himax_write(client, 0x31,tmp_data, 1, DEFAULT_RETRY_CNT) < 0)
+        {
+            E("%s: i2c access fail!\n", __func__);
+            return false;
+        }
+        //===========================================
+        //  0x32 ==> 0x95
+        //===========================================
+        tmp_data[0] = 0x95;
+        if ( i2c_himax_write(client, 0x32,tmp_data, 1, DEFAULT_RETRY_CNT) < 0)
+        {
+            E("%s: i2c access fail!\n", __func__);
+            return false;
+        }
+
+        // ======================
+        // Check enter_save_mode
+        // ======================
+        tmp_addr[3] = 0x90;
+        tmp_addr[2] = 0x00;
+        tmp_addr[1] = 0x00;
+        tmp_addr[0] = 0xA8;
+        himax_register_read(client, tmp_addr, 4, tmp_data, false);
+
+        I("%s: Check enter_save_mode data[0]=%X \n", __func__,tmp_data[0]);
+
+        if (tmp_data[0] == 0x0C)
+        {
+            //=====================================
+            // Reset TCON
+            //=====================================
+            tmp_addr[3] = 0x80;
+            tmp_addr[2] = 0x02;
+            tmp_addr[1] = 0x00;
+            tmp_addr[0] = 0x20;
+            tmp_data[3] = 0x00;
+            tmp_data[2] = 0x00;
+            tmp_data[1] = 0x00;
+            tmp_data[0] = 0x00;
+            himax_flash_write_burst(client, tmp_addr, tmp_data);
+            msleep(1);
+            tmp_data[3] = 0x00;
+            tmp_data[2] = 0x00;
+            tmp_data[1] = 0x00;
+            tmp_data[0] = 0x01;
+            himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+            //=====================================
+            // Reset ADC
+            //=====================================
+            tmp_addr[3] = 0x80;
+            tmp_addr[2] = 0x02;
+            tmp_addr[1] = 0x00;
+            tmp_addr[0] = 0x94;
+            tmp_data[3] = 0x00;
+            tmp_data[2] = 0x00;
+            tmp_data[1] = 0x00;
+            tmp_data[0] = 0x00;
+            himax_flash_write_burst(client, tmp_addr, tmp_data);
+            msleep(1);
+            tmp_data[3] = 0x00;
+            tmp_data[2] = 0x00;
+            tmp_data[1] = 0x00;
+            tmp_data[0] = 0x01;
+            himax_flash_write_burst(client, tmp_addr, tmp_data);
+            return true;
+        }
+        else
+        {
+            msleep(10);
+#ifdef HX_RST_PIN_FUNC
+			himax_ic_reset(false,false);
+#endif
+        }
+    }
+    while (cnt++ < 15);
+
+    return false;
+}
+/*[Arima_7947][allen_yu] 20180129 end*/
+void himax_interface_on(struct i2c_client *client)
+{
+    uint8_t tmp_data[5];
+    uint8_t tmp_data2[2];
+    int cnt = 0;
+
+    //Read a dummy register to wake up I2C.
+    if ( i2c_himax_read(client, 0x08, tmp_data,4,DEFAULT_RETRY_CNT) < 0)  // to knock I2C
+    {
+        E("%s: i2c access fail!\n", __func__);
+        return;
+    }
+
+    do
+    {
+        //===========================================
+        // Enable continuous burst mode : 0x13 ==> 0x31
+        //===========================================
+        tmp_data[0] = 0x31;
+        if ( i2c_himax_write(client, 0x13,tmp_data, 1, DEFAULT_RETRY_CNT) < 0)
+        {
+            E("%s: i2c access fail!\n", __func__);
+            return;
+        }
+        //===========================================
+        // AHB address auto +4		: 0x0D ==> 0x11
+        // Do not AHB address auto +4 : 0x0D ==> 0x10
+        //===========================================
+        tmp_data[0] = (0x10);
+        if ( i2c_himax_write(client, 0x0D,tmp_data, 1, DEFAULT_RETRY_CNT) < 0)
+        {
+            E("%s: i2c access fail!\n", __func__);
+            return;
+        }
+
+        // Check cmd
+        i2c_himax_read(client, 0x13, tmp_data,1,DEFAULT_RETRY_CNT);
+        i2c_himax_read(client, 0x0D, tmp_data2,1,DEFAULT_RETRY_CNT);
+
+        if (tmp_data[0] == 0x31 && tmp_data2[0] == 0x10)
+        {
+            //isBusrtOn = true;
+            break;
+        }
+        msleep(1);
+    }
+    while (++cnt < 10);
+
+    if (cnt > 0)
+        I("%s:Polling burst mode: %d times", __func__,cnt);
+
+}
+
+bool wait_wip(struct i2c_client *client, int Timing)
+{
+    uint8_t tmp_addr[4];
+    uint8_t tmp_data[4];
+    uint8_t in_buffer[10];
+    //uint8_t out_buffer[20];
+    int retry_cnt = 0;
+
+    //=====================================
+    // SPI Transfer Format : 0x8000_0010 ==> 0x0002_0780
+    //=====================================
+    tmp_addr[3] = 0x80;
+    tmp_addr[2] = 0x00;
+    tmp_addr[1] = 0x00;
+    tmp_addr[0] = 0x10;
+    tmp_data[3] = 0x00;
+    tmp_data[2] = 0x02;
+    tmp_data[1] = 0x07;
+    tmp_data[0] = 0x80;
+    himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+    in_buffer[0] = 0x01;
+
+    do
+    {
+        //=====================================
+        // SPI Transfer Control : 0x8000_0020 ==> 0x4200_0003
+        //=====================================
+        tmp_addr[3] = 0x80;
+        tmp_addr[2] = 0x00;
+        tmp_addr[1] = 0x00;
+        tmp_addr[0] = 0x20;
+        tmp_data[3] = 0x42;
+        tmp_data[2] = 0x00;
+        tmp_data[1] = 0x00;
+        tmp_data[0] = 0x03;
+        himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+        //=====================================
+        // SPI Command : 0x8000_0024 ==> 0x0000_0005
+        // read 0x8000_002C for 0x01, means wait success
+        //=====================================
+        tmp_addr[3] = 0x80;
+        tmp_addr[2] = 0x00;
+        tmp_addr[1] = 0x00;
+        tmp_addr[0] = 0x24;
+        tmp_data[3] = 0x00;
+        tmp_data[2] = 0x00;
+        tmp_data[1] = 0x00;
+        tmp_data[0] = 0x05;
+        himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+        in_buffer[0] = in_buffer[1] = in_buffer[2] = in_buffer[3] = 0xFF;
+        tmp_addr[3] = 0x80;
+        tmp_addr[2] = 0x00;
+        tmp_addr[1] = 0x00;
+        tmp_addr[0] = 0x2C;
+        himax_register_read(client, tmp_addr, 4, in_buffer, false);
+
+        if ((in_buffer[0] & 0x01) == 0x00)
+            return true;
+
+        retry_cnt++;
+
+        if (in_buffer[0] != 0x00 || in_buffer[1] != 0x00 || in_buffer[2] != 0x00 || in_buffer[3] != 0x00)
+            I("%s:Wait wip retry_cnt:%d, buffer[0]=%d, buffer[1]=%d, buffer[2]=%d, buffer[3]=%d \n", __func__,
+              retry_cnt,in_buffer[0],in_buffer[1],in_buffer[2],in_buffer[3]);
+
+        if (retry_cnt > 100)
+        {
+            E("%s: Wait wip error!\n", __func__);
+            return false;
+        }
+        msleep(Timing);
+    }
+    while ((in_buffer[0] & 0x01) == 0x01);
+    return true;
+}
+
+void himax_sense_on(struct i2c_client *client, uint8_t FlashMode)
+{
+    uint8_t tmp_addr[4];
+    uint8_t tmp_data[4];
+	int retry = 0;
+
+    I("Enter %s  \n", __func__);
+
+    himax_interface_on(client);
+
+	if(!FlashMode)
+		{
+#ifdef HX_RST_PIN_FUNC
+			himax_ic_reset(false,false);
+#else
+			//===AHBI2C_SystemReset==========
+			tmp_addr[3] = 0x90;
+			tmp_addr[2] = 0x00;
+			tmp_addr[1] = 0x00;
+			tmp_addr[0] = 0x18;
+			tmp_data[3] = 0x00;
+			tmp_data[2] = 0x00;
+			tmp_data[1] = 0x00;
+			tmp_data[0] = 0x55;
+			himax_register_write(client, tmp_addr, 4, tmp_data, false);
+#endif
+		}
+	else
+		{
+		    do
+		    {
+		        tmp_addr[3] = 0x90;
+		        tmp_addr[2] = 0x00;
+		        tmp_addr[1] = 0x00;
+		        tmp_addr[0] = 0x98;
+		        tmp_data[3] = 0x00;
+		        tmp_data[2] = 0x00;
+		        tmp_data[1] = 0x00;
+		        tmp_data[0] = 0x53;
+		        himax_register_write(client, tmp_addr, 4, tmp_data, false);
+
+		        tmp_addr[0] = 0xE4;
+		        himax_register_read(client, tmp_addr, 4, tmp_data, false);
+
+		        I("%s:Read status from IC = %X,%X\n", __func__, tmp_data[0],tmp_data[1]);
+
+		    }
+		    while((tmp_data[1] != 0x01 || tmp_data[0] != 0x00) && retry++ < 5);
+
+		    if(retry >= 5)
+		    {
+		        E("%s: Fail:\n", __func__);
+#ifdef HX_RST_PIN_FUNC
+				himax_ic_reset(false,false);
+#else
+				//===AHBI2C_SystemReset==========
+				tmp_addr[3] = 0x90;
+				tmp_addr[2] = 0x00;
+				tmp_addr[1] = 0x00;
+				tmp_addr[0] = 0x18;
+				tmp_data[3] = 0x00;
+				tmp_data[2] = 0x00;
+				tmp_data[1] = 0x00;
+				tmp_data[0] = 0x55;
+				himax_register_write(client, tmp_addr, 4, tmp_data, false);
+#endif
+		    }
+		    else
+		    {
+		        I("%s:OK and Read status from IC = %X,%X\n", __func__, tmp_data[0],tmp_data[1]);
+
+		        /* reset code*/
+		        tmp_data[0] = 0x00;
+		        if ( i2c_himax_write(client, 0x31,tmp_data, 1, DEFAULT_RETRY_CNT) < 0)
+		        {
+		            E("%s: i2c access fail!\n", __func__);
+		        }
+		        if ( i2c_himax_write(client, 0x32,tmp_data, 1, DEFAULT_RETRY_CNT) < 0)
+		        {
+		            E("%s: i2c access fail!\n", __func__);
+		        }
+
+		        tmp_addr[3] = 0x90;
+		        tmp_addr[2] = 0x00;
+		        tmp_addr[1] = 0x00;
+		        tmp_addr[0] = 0x98;
+		        tmp_data[3] = 0x00;
+		        tmp_data[2] = 0x00;
+		        tmp_data[1] = 0x00;
+		        tmp_data[0] = 0x00;
+		        himax_register_write(client, tmp_addr, 4, tmp_data, false);
+		    }
+		}
+}
+
+void himax_chip_erase(struct i2c_client *client)
+{
+    uint8_t tmp_addr[4];
+    uint8_t tmp_data[4];
+
+    himax_interface_on(client);
+
+    /* init psl */
+    himax_init_psl(client);
+
+    //=====================================
+    // SPI Transfer Format : 0x8000_0010 ==> 0x0002_0780
+    //=====================================
+    tmp_addr[3] = 0x80;
+    tmp_addr[2] = 0x00;
+    tmp_addr[1] = 0x00;
+    tmp_addr[0] = 0x10;
+    tmp_data[3] = 0x00;
+    tmp_data[2] = 0x02;
+    tmp_data[1] = 0x07;
+    tmp_data[0] = 0x80;
+    himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+    //=====================================
+    // Chip Erase
+    // Write Enable : 1. 0x8000_0020 ==> 0x4700_0000
+    //				  2. 0x8000_0024 ==> 0x0000_0006
+    //=====================================
+    tmp_addr[3] = 0x80;
+    tmp_addr[2] = 0x00;
+    tmp_addr[1] = 0x00;
+    tmp_addr[0] = 0x20;
+    tmp_data[3] = 0x47;
+    tmp_data[2] = 0x00;
+    tmp_data[1] = 0x00;
+    tmp_data[0] = 0x00;
+    himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+    tmp_addr[3] = 0x80;
+    tmp_addr[2] = 0x00;
+    tmp_addr[1] = 0x00;
+    tmp_addr[0] = 0x24;
+    tmp_data[3] = 0x00;
+    tmp_data[2] = 0x00;
+    tmp_data[1] = 0x00;
+    tmp_data[0] = 0x06;
+    himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+    //=====================================
+    // Chip Erase
+    // Erase Command : 0x8000_0024 ==> 0x0000_00C7
+    //=====================================
+    tmp_addr[3] = 0x80;
+    tmp_addr[2] = 0x00;
+    tmp_addr[1] = 0x00;
+    tmp_addr[0] = 0x24;
+    tmp_data[3] = 0x00;
+    tmp_data[2] = 0x00;
+    tmp_data[1] = 0x00;
+    tmp_data[0] = 0xC7;
+    himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+    msleep(2000);
+
+    if (!wait_wip(client, 100))
+        E("%s:83112_Chip_Erase Fail\n", __func__);
+
+}
+
+bool himax_block_erase(struct i2c_client *client)
+{
+    uint8_t tmp_addr[4];
+    uint8_t tmp_data[4];
+
+    himax_burst_enable(client, 0);
+
+    //=====================================
+    // SPI Transfer Format : 0x8000_0010 ==> 0x0002_0780
+    //=====================================
+    tmp_addr[3] = 0x80;
+    tmp_addr[2] = 0x00;
+    tmp_addr[1] = 0x00;
+    tmp_addr[0] = 0x10;
+    tmp_data[3] = 0x00;
+    tmp_data[2] = 0x02;
+    tmp_data[1] = 0x07;
+    tmp_data[0] = 0x80;
+    himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+    //=====================================
+    // Chip Erase
+    // Write Enable : 1. 0x8000_0020 ==> 0x4700_0000
+    //				  2. 0x8000_0024 ==> 0x0000_0006
+    //=====================================
+    tmp_addr[3] = 0x80;
+    tmp_addr[2] = 0x00;
+    tmp_addr[1] = 0x00;
+    tmp_addr[0] = 0x20;
+    tmp_data[3] = 0x47;
+    tmp_data[2] = 0x00;
+    tmp_data[1] = 0x00;
+    tmp_data[0] = 0x00;
+    himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+    tmp_addr[3] = 0x80;
+    tmp_addr[2] = 0x00;
+    tmp_addr[1] = 0x00;
+    tmp_addr[0] = 0x24;
+    tmp_data[3] = 0x00;
+    tmp_data[2] = 0x00;
+    tmp_data[1] = 0x00;
+    tmp_data[0] = 0x06;
+    himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+    //=====================================
+    // Block Erase
+    // Erase Command : 0x8000_0028 ==> 0x0000_0000 //SPI addr
+    //				   0x8000_0020 ==> 0x6700_0000 //control
+    //				   0x8000_0024 ==> 0x0000_0052 //BE
+    //=====================================
+    tmp_addr[3] = 0x80;
+    tmp_addr[2] = 0x00;
+    tmp_addr[1] = 0x00;
+    tmp_addr[0] = 0x28;
+    tmp_data[3] = 0x00;
+    tmp_data[2] = 0x00;
+    tmp_data[1] = 0x00;
+    tmp_data[0] = 0x00;
+    himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+    tmp_addr[3] = 0x80;
+    tmp_addr[2] = 0x00;
+    tmp_addr[1] = 0x00;
+    tmp_addr[0] = 0x20;
+    tmp_data[3] = 0x67;
+    tmp_data[2] = 0x00;
+    tmp_data[1] = 0x00;
+    tmp_data[0] = 0x00;
+    himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+    tmp_addr[3] = 0x80;
+    tmp_addr[2] = 0x00;
+    tmp_addr[1] = 0x00;
+    tmp_addr[0] = 0x24;
+    tmp_data[3] = 0x00;
+    tmp_data[2] = 0x00;
+    tmp_data[1] = 0x00;
+    tmp_data[0] = 0x52;
+    himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+    msleep(1000);
+
+    if (!wait_wip(client, 100))
+    {
+        E("%s:83112_Erase Fail\n", __func__);
+        return false;
+    }
+    else
+    {
+        return true;
+    }
+
+}
+
+bool himax_sector_erase(struct i2c_client *client, int start_addr)
+{
+	return true;
+}
+
+void himax_sram_write(struct i2c_client *client, uint8_t *FW_content)
+{
+
+}
+
+bool himax_sram_verify(struct i2c_client *client, uint8_t *FW_File, int FW_Size)
+{
+	return true;
+}
+
+void himax_flash_programming(struct i2c_client *client, uint8_t *FW_content, int FW_Size)
+{
+    int page_prog_start = 0;
+    int program_length = 48;
+    int i = 0, j = 0, k = 0;
+    uint8_t tmp_addr[4];
+    uint8_t tmp_data[4];
+    uint8_t buring_data[256];    // Read for flash data, 128K
+    // 4 bytes for 0x80002C padding
+
+    himax_interface_on(client);
+
+    //=====================================
+    // SPI Transfer Format : 0x8000_0010 ==> 0x0002_0780
+    //=====================================
+    tmp_addr[3] = 0x80;
+    tmp_addr[2] = 0x00;
+    tmp_addr[1] = 0x00;
+    tmp_addr[0] = 0x10;
+    tmp_data[3] = 0x00;
+    tmp_data[2] = 0x02;
+    tmp_data[1] = 0x07;
+    tmp_data[0] = 0x80;
+    himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+    for (page_prog_start = 0; page_prog_start < FW_Size; page_prog_start = page_prog_start + 256)
+    {
+        //msleep(5);
+        //=====================================
+        // Write Enable : 1. 0x8000_0020 ==> 0x4700_0000
+        //				  2. 0x8000_0024 ==> 0x0000_0006
+        //=====================================
+        tmp_addr[3] = 0x80;
+        tmp_addr[2] = 0x00;
+        tmp_addr[1] = 0x00;
+        tmp_addr[0] = 0x20;
+        tmp_data[3] = 0x47;
+        tmp_data[2] = 0x00;
+        tmp_data[1] = 0x00;
+        tmp_data[0] = 0x00;
+        himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+        tmp_addr[3] = 0x80;
+        tmp_addr[2] = 0x00;
+        tmp_addr[1] = 0x00;
+        tmp_addr[0] = 0x24;
+        tmp_data[3] = 0x00;
+        tmp_data[2] = 0x00;
+        tmp_data[1] = 0x00;
+        tmp_data[0] = 0x06;
+        himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+        //=================================
+        // SPI Transfer Control
+        // Set 256 bytes page write : 0x8000_0020 ==> 0x610F_F000
+        // Set read start address	: 0x8000_0028 ==> 0x0000_0000
+        //=================================
+        tmp_addr[3] = 0x80;
+        tmp_addr[2] = 0x00;
+        tmp_addr[1] = 0x00;
+        tmp_addr[0] = 0x20;
+        tmp_data[3] = 0x61;
+        tmp_data[2] = 0x0F;
+        tmp_data[1] = 0xF0;
+        tmp_data[0] = 0x00;
+        // data bytes should be 0x6100_0000 + ((word_number)*4-1)*4096 = 0x6100_0000 + 0xFF000 = 0x610F_F000
+        // Programmable size = 1 page = 256 bytes, word_number = 256 byte / 4 = 64
+        himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+        tmp_addr[3] = 0x80;
+        tmp_addr[2] = 0x00;
+        tmp_addr[1] = 0x00;
+        tmp_addr[0] = 0x28;
+        //tmp_data[3] = 0x00; tmp_data[2] = 0x00; tmp_data[1] = 0x00; tmp_data[0] = 0x00; // Flash start address 1st : 0x0000_0000
+
+        if (page_prog_start < 0x100)
+        {
+            tmp_data[3] = 0x00;
+            tmp_data[2] = 0x00;
+            tmp_data[1] = 0x00;
+            tmp_data[0] = (uint8_t)page_prog_start;
+        }
+        else if (page_prog_start >= 0x100 && page_prog_start < 0x10000)
+        {
+            tmp_data[3] = 0x00;
+            tmp_data[2] = 0x00;
+            tmp_data[1] = (uint8_t)(page_prog_start >> 8);
+            tmp_data[0] = (uint8_t)page_prog_start;
+        }
+        else if (page_prog_start >= 0x10000 && page_prog_start < 0x1000000)
+        {
+            tmp_data[3] = 0x00;
+            tmp_data[2] = (uint8_t)(page_prog_start >> 16);
+            tmp_data[1] = (uint8_t)(page_prog_start >> 8);
+            tmp_data[0] = (uint8_t)page_prog_start;
+        }
+
+        himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+
+        //=================================
+        // Send 16 bytes data : 0x8000_002C ==> 16 bytes data
+        //=================================
+        buring_data[0] = 0x2C;
+        buring_data[1] = 0x00;
+        buring_data[2] = 0x00;
+        buring_data[3] = 0x80;
+
+        for (i = /*0*/page_prog_start, j = 0; i < 16 + page_prog_start/**/; i++, j++)	/// <------ bin file
+        {
+            buring_data[j + 4] = FW_content[i];
+        }
+
+
+        if ( i2c_himax_write(client, 0x00,buring_data, 20, DEFAULT_RETRY_CNT) < 0)
+        {
+            E("%s: i2c access fail!\n", __func__);
+            return;
+        }
+        //=================================
+        // Write command : 0x8000_0024 ==> 0x0000_0002
+        //=================================
+        tmp_addr[3] = 0x80;
+        tmp_addr[2] = 0x00;
+        tmp_addr[1] = 0x00;
+        tmp_addr[0] = 0x24;
+        tmp_data[3] = 0x00;
+        tmp_data[2] = 0x00;
+        tmp_data[1] = 0x00;
+        tmp_data[0] = 0x02;
+        himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+        //=================================
+        // Send 240 bytes data : 0x8000_002C ==> 240 bytes data
+        //=================================
+
+        for (j = 0; j < 5; j++)
+        {
+            for (i = (page_prog_start + 16 + (j * 48)), k = 0; i < (page_prog_start + 16 + (j * 48)) + program_length; i++, k++)   /// <------ bin file
+            {
+                buring_data[k+4] = FW_content[i];//(byte)i;
+            }
+
+            if ( i2c_himax_write(client, 0x00,buring_data, program_length+4, DEFAULT_RETRY_CNT) < 0)
+            {
+                E("%s: i2c access fail!\n", __func__);
+                return;
+            }
+
+        }
+
+        if (!wait_wip(client, 1))
+            E("%s:83112_Flash_Programming Fail\n", __func__);
+    }
+}
+
+
+bool himax_check_chip_version(struct i2c_client *client)
+{
+    uint8_t tmp_addr[4];
+    uint8_t tmp_data[4];
+    uint8_t ret_data = false;
+    int i = 0;
+
+    for (i = 0; i < 5; i++)
+    {
+        // Product ID
+        // Touch
+        tmp_addr[3] = 0x90;
+        tmp_addr[2] = 0x00;
+        tmp_addr[1] = 0x00;
+        tmp_addr[0] = 0xD0;
+        himax_register_read(client, tmp_addr, 4, tmp_data, false);
+
+        I("%s:Read driver IC ID = %X,%X,%X\n", __func__, tmp_data[3],tmp_data[2],tmp_data[1]);
+        if ((tmp_data[3] == 0x83) && (tmp_data[2] == 0x11) && (tmp_data[1] == 0x2a))
+        {
+            IC_TYPE         = HX_83112A_SERIES_PWON;
+            ret_data = true;
+            break;
+        }
+/*[Arima_8710][allen_yu] Dynamic detect Yandex LCM/TP 2nd source and add PCBA node 20180828 begin*/
+	else if ((tmp_data[3] == 0x83) && (tmp_data[2] == 0x11) && (tmp_data[1] == 0x2b))
+        {
+            IC_TYPE         = HX_83112B_SERIES_PWON;
+            ret_data = true;
+            break;
+        }
+/*[Arima_8710][allen_yu] 20180828 end*/
+        else
+        {
+            ret_data = false;
+            E("%s:Read driver ID register Fail:\n", __func__);
+        }
+    }
+
+    return ret_data;
+}
+
+bool Calculate_CRC_with_AP(unsigned char *FW_content, int CRC_from_FW, int mode)
+{
+	return true;
+}
+
+uint32_t himax_hw_check_CRC(struct i2c_client *client, uint8_t *start_addr, int reload_length)
+{
+    uint32_t result = 0;
+    uint8_t tmp_addr[4];
+    uint8_t tmp_data[4];
+    int cnt = 0;
+    int length = reload_length / 4;
+
+    //CRC4 // 0x8005_0020 <= from, 0x8005_0028 <= 0x0099_length
+    tmp_addr[3] = 0x80;
+    tmp_addr[2] = 0x05;
+    tmp_addr[1] = 0x00;
+    tmp_addr[0] = 0x20;
+    //tmp_data[3] = 0x00; tmp_data[2] = 0x00; tmp_data[1] = 0xFB; tmp_data[0] = 0x00;
+    himax_flash_write_burst(client, tmp_addr, start_addr);
+
+    tmp_addr[3] = 0x80;
+    tmp_addr[2] = 0x05;
+    tmp_addr[1] = 0x00;
+    tmp_addr[0] = 0x28;
+    tmp_data[3] = 0x00;
+    tmp_data[2] = 0x99;
+    tmp_data[1] = (length >> 8);
+    tmp_data[0] = length;
+    himax_flash_write_burst(client, tmp_addr, tmp_data);
+
+    cnt = 0;
+    tmp_addr[3] = 0x80;
+    tmp_addr[2] = 0x05;
+    tmp_addr[1] = 0x00;
+    tmp_addr[0] = 0x00;
+    do
+    {
+        himax_register_read(client, tmp_addr, 4, tmp_data, false);
+
+        if ((tmp_data[0] & 0x01) != 0x01)
+        {
+            tmp_addr[3] = 0x80;
+            tmp_addr[2] = 0x05;
+            tmp_addr[1] = 0x00;
+            tmp_addr[0] = 0x18;
+            himax_register_read(client, tmp_addr, 4, tmp_data, false);
+            I("%s: tmp_data[3]=%X, tmp_data[2]=%X, tmp_data[1]=%X, tmp_data[0]=%X  \n", __func__, tmp_data[3], tmp_data[2], tmp_data[1], tmp_data[0]);
+            result = ((tmp_data[3] << 24) + (tmp_data[2] << 16) + (tmp_data[1] << 8) + tmp_data[0]);
+            break;
+        }
+    }
+    while (cnt++ < 100);
+
+    return result;
+}
+
+void himax_flash_page_write(struct i2c_client *client, uint8_t *write_addr, uint8_t *write_data)
+{
+
+}
+
+void himax_set_reload_cmd(uint8_t *write_data, int idx, uint32_t cmd_from, uint32_t cmd_to, uint32_t cmd_beat)
+{
+    int index = idx * 12;
+    int i;
+    for (i = 3; i >= 0; i--)
+    {
+        write_data[index + i] = (cmd_from >> (8 * i));
+        write_data[index + 4 + i] = (cmd_to >> (8 * i));
+        write_data[index + 8 + i] = (cmd_beat >> (8 * i));
+    }
+}
+
+bool himax_program_reload(struct i2c_client *client)
+{
+    return true;
+}
+
+int fts_ctpm_fw_upgrade_with_sys_fs_32k(struct i2c_client *client, unsigned char *fw, int len, bool change_iref)
+{
+    /* Not use */
+    return 0;
+}
+
+int fts_ctpm_fw_upgrade_with_sys_fs_60k(struct i2c_client *client, unsigned char *fw, int len, bool change_iref)
+{
+    /* Not use */
+    return 0;
+}
+
+int fts_ctpm_fw_upgrade_with_sys_fs_64k(struct i2c_client *client, unsigned char *fw, int len, bool change_iref) //Alice - Un
+{
+
+    //int CRC_from_FW = 0;
+    int burnFW_success = 0;
+    uint8_t tmp_addr[4];
+    uint8_t tmp_data[4];
+
+    if (len != FW_SIZE_64k)   //64k
+    {
+        E("%s: The file size is not 64K bytes\n", __func__);
+        return false;
+    }
+
+#ifdef HX_RST_PIN_FUNC
+	himax_ic_reset(false,false);
+#else
+	//===AHBI2C_SystemReset==========
+	tmp_addr[3] = 0x90;
+	tmp_addr[2] = 0x00;
+	tmp_addr[1] = 0x00;
+	tmp_addr[0] = 0x18;
+	tmp_data[3] = 0x00;
+	tmp_data[2] = 0x00;
+	tmp_data[1] = 0x00;
+	tmp_data[0] = 0x55;
+	himax_register_write(client, tmp_addr, 4, tmp_data, false);
+#endif
+
+/*[Arima_7947][allen_yu] Enter safe mode when i2c fail 20180129 begin*/
+    himax_enter_safe_mode(client);
+/*[Arima_7947][allen_yu] 20180129 end*/
+    himax_chip_erase(client);
+    himax_flash_programming(client, fw, FW_SIZE_64k);
+
+    tmp_data[3] = 0x00;
+    tmp_data[2] = 0x00;
+    tmp_data[1] = 0x00;
+    tmp_data[0] = 0x00;
+
+    if(himax_hw_check_CRC(client,tmp_data, FW_SIZE_64k) == 0)
+    {
+        burnFW_success = 1;
+    }
+    else
+    {
+        burnFW_success = 0;
+    }
+	/*RawOut select initial*/
+	tmp_addr[3] = 0x80;tmp_addr[2] = 0x02;tmp_addr[1] = 0x04;tmp_addr[0] = 0xB4;
+    tmp_data[3] = 0x00;tmp_data[2] = 0x00;tmp_data[1] = 0x00;tmp_data[0] = 0x00;
+	himax_register_write(client,tmp_addr, 4, tmp_data, false);
+
+	/*DSRAM func initial*/
+    tmp_addr[3] = 0x10;tmp_addr[2] = 0x00;tmp_addr[1] = 0x07;tmp_addr[0] = 0xFC;
+    tmp_data[3] = 0x00;tmp_data[2] = 0x00;tmp_data[1] = 0x00;tmp_data[0] = 0x00;
+	himax_register_write(client,tmp_addr, 4, tmp_data, false);
+
+#ifdef HX_RST_PIN_FUNC
+/*[Arima_7947][allen_yu] Upgrade himax fw to CID0404_D01_C06 and modify the node to access fw_ver 20180118 begin*/
+	himax_ic_reset(true,false);
+/*[Arima_7947][allen_yu] 20180118 end*/
+#else
+	//===AHBI2C_SystemReset==========
+	tmp_addr[3] = 0x90;
+	tmp_addr[2] = 0x00;
+	tmp_addr[1] = 0x00;
+	tmp_addr[0] = 0x18;
+	tmp_data[3] = 0x00;
+	tmp_data[2] = 0x00;
+	tmp_data[1] = 0x00;
+	tmp_data[0] = 0x55;
+	himax_register_write(client, tmp_addr, 4, tmp_data, false);
+#endif
+/*[Arima_7947][allen_yu] Upgrade himax fw to CID0404_D01_C06 and modify the node to access fw_ver 20180118 begin*/
+	msleep(800);
+	himax_read_FW_ver(private_ts->client);
+/*[Arima_7947][allen_yu] 20180118 end*/
+    return burnFW_success;
+
+}
+
+int fts_ctpm_fw_upgrade_with_sys_fs_124k(struct i2c_client *client, unsigned char *fw, int len, bool change_iref)
+{
+    /* Not use */
+    return 0;
+}
+
+int fts_ctpm_fw_upgrade_with_sys_fs_128k(struct i2c_client *client, unsigned char *fw, int len, bool change_iref)
+{
+    /* Not use */
+    return 0;
+}
+
+void himax_touch_information(struct i2c_client *client)
+{
+#ifndef HX_FIX_TOUCH_INFO
+    uint8_t cmd[4];
+    char data[12] = {0};
+
+    I("%s:IC_TYPE =%d\n", __func__,IC_TYPE);
+
+/*[Arima_8710][allen_yu] Dynamic detect Yandex LCM/TP 2nd source and add PCBA node 20180828 begin*/
+    //if(IC_TYPE == HX_83112A_SERIES_PWON)
+	   if((IC_TYPE == HX_83112A_SERIES_PWON)||(IC_TYPE == HX_83112B_SERIES_PWON))
+/*[Arima_8710][allen_yu] 20180828 end*/
+	{
+        cmd[3] = 0x10;
+        cmd[2] = 0x00;
+        cmd[1] = 0x70;
+        cmd[0] = 0xF4;
+        himax_register_read(client, cmd, 8, data, false);
+        ic_data->HX_RX_NUM				= data[2];
+        ic_data->HX_TX_NUM				= data[3];
+        ic_data->HX_MAX_PT				= data[4];
+        //I("%s : HX_RX_NUM=%d,ic_data->HX_TX_NUM=%d,ic_data->HX_MAX_PT=%d\n",__func__,ic_data->HX_RX_NUM,ic_data->HX_TX_NUM,ic_data->HX_MAX_PT);
+
+        cmd[3] = 0x10;
+        cmd[2] = 0x00;
+        cmd[1] = 0x70;
+        cmd[0] = 0xFA;
+        himax_register_read(client, cmd, 4, data, false);
+        //I("%s : c_data->HX_XY_REVERSE=0x%2.2X\n",__func__,data[1]);
+        if((data[1] & 0x04) == 0x04)
+        {
+            ic_data->HX_XY_REVERSE = true;
+        }
+        else
+        {
+            ic_data->HX_XY_REVERSE = false;
+        }
+
+        cmd[3] = 0x10;
+        cmd[2] = 0x00;
+        cmd[1] = 0x70;
+        cmd[0] = 0xFC;
+        himax_register_read(client, cmd, 4, data, false);
+        ic_data->HX_Y_RES = data[0]*256;
+        ic_data->HX_Y_RES = ic_data->HX_Y_RES + data[1];
+        ic_data->HX_X_RES = data[2]*256 + data[3];
+        //I("%s : ic_data->HX_Y_RES=%d,ic_data->HX_X_RES=%d \n",__func__,ic_data->HX_Y_RES,ic_data->HX_X_RES);
+
+        cmd[3] = 0x10;
+        cmd[2] = 0x00;
+        cmd[1] = 0x70;
+        cmd[0] = 0x89;
+        himax_register_read(client, cmd, 4, data, false);
+        //I("%s : data[0]=0x%2.2X,data[1]=0x%2.2X,data[2]=0x%2.2X,data[3]=0x%2.2X\n",__func__,data[0],data[1],data[2],data[3]);
+        //I("data[0] & 0x01 = %d\n",(data[0] & 0x01));
+        if((data[0] & 0x01) == 1)
+        {
+            ic_data->HX_INT_IS_EDGE = true;
+        }
+        else
+        {
+            ic_data->HX_INT_IS_EDGE = false;
+        }
+
+        if (ic_data->HX_RX_NUM > 40)
+            ic_data->HX_RX_NUM = 32;
+        if (ic_data->HX_TX_NUM > 20)
+            ic_data->HX_TX_NUM = 18;
+        if (ic_data->HX_MAX_PT > 10)
+            ic_data->HX_MAX_PT = 10;
+        if (ic_data->HX_Y_RES > 2000)
+            ic_data->HX_Y_RES = 1280;
+        if (ic_data->HX_X_RES > 2000)
+            ic_data->HX_X_RES = 720;
+
+		/*Read number of MKey R100070E8H*/
+		cmd[3] = 0x10;
+		cmd[2] = 0x00;
+		cmd[1] = 0x70;
+		cmd[0] = 0xE8;
+		himax_register_read(client, cmd, 4,data, false);
+		//I("%s: data[0] = 0x%02X,data[1] = 0x%02X,data[2] = 0x%02X,data[3] = 0x%02X\n", __func__,data[0],data[1],data[2],data[3]);
+		ic_data->HX_BT_NUM = data[0] & 0x03;
+    }
+    else
+    {
+        ic_data->HX_RX_NUM				= 0;
+        ic_data->HX_TX_NUM				= 0;
+        ic_data->HX_BT_NUM				= 0;
+        ic_data->HX_X_RES				= 0;
+        ic_data->HX_Y_RES				= 0;
+        ic_data->HX_MAX_PT				= 0;
+        ic_data->HX_XY_REVERSE		= false;
+        ic_data->HX_INT_IS_EDGE		= false;
+    }
+#else
+/*[Arima_8710][allen_yu] Dynamic detect touch golden value 20180929 begin*/
+	if(IC_TYPE == HX_83112A_SERIES_PWON) {
+		    ic_data->HX_RX_NUM				= FIX_HX_RX_NUM;
+		    ic_data->HX_TX_NUM				= FIX_HX_TX_NUM;
+		    ic_data->HX_BT_NUM				= FIX_HX_BT_NUM;
+		    ic_data->HX_X_RES				= FIX_HX_X_RES;
+		    ic_data->HX_Y_RES				= FIX_HX_Y_RES;
+		    ic_data->HX_MAX_PT				= FIX_HX_MAX_PT;
+		    ic_data->HX_XY_REVERSE			= FIX_HX_XY_REVERSE;
+		    ic_data->HX_INT_IS_EDGE			= FIX_HX_INT_IS_EDGE;
+		}
+	else {
+			ic_data->HX_RX_NUM				= SEC_FIX_HX_RX_NUM;
+		    ic_data->HX_TX_NUM				= SEC_FIX_HX_TX_NUM;
+		    ic_data->HX_BT_NUM				= SEC_FIX_HX_BT_NUM;
+		    ic_data->HX_X_RES				= SEC_FIX_HX_X_RES;
+		    ic_data->HX_Y_RES				= SEC_FIX_HX_Y_RES;
+		    ic_data->HX_MAX_PT				= SEC_FIX_HX_MAX_PT;
+		    ic_data->HX_XY_REVERSE			= SEC_FIX_HX_XY_REVERSE;
+		    ic_data->HX_INT_IS_EDGE			= SEC_FIX_HX_INT_IS_EDGE;
+		}
+/*[Arima_8710][allen_yu] 20180929 end*/
+#endif
+    I("%s:HX_RX_NUM =%d,HX_TX_NUM =%d,HX_MAX_PT=%d \n", __func__,ic_data->HX_RX_NUM,ic_data->HX_TX_NUM,ic_data->HX_MAX_PT);
+    I("%s:HX_XY_REVERSE =%d,HX_Y_RES =%d,HX_X_RES=%d \n", __func__,ic_data->HX_XY_REVERSE,ic_data->HX_Y_RES,ic_data->HX_X_RES);
+    I("%s:HX_INT_IS_EDGE =%d \n", __func__,ic_data->HX_INT_IS_EDGE);
+}
+
+int himax_read_i2c_status(struct i2c_client *client)
+{
+    return i2c_error_count; //
+}
+
+int himax_read_ic_trigger_type(struct i2c_client *client)
+{
+    uint8_t cmd[4];
+    char data[12] = {0};
+    int trigger_type = false;
+
+    cmd[3] = 0x10;
+    cmd[2] = 0x00;
+    cmd[1] = 0x70;
+    cmd[0] = 0x89;
+    himax_register_read(client, cmd, 4, data, false);
+    if((data[0] & 0x01) == 1)
+    {
+        trigger_type = true;
+    }
+    else
+    {
+        trigger_type = false;
+    }
+
+    return trigger_type;
+}
+
+void himax_read_FW_ver(struct i2c_client *client)
+{
+    uint8_t cmd[4];
+    uint8_t data[64];
+/*[Arima_7947][allen_yu] Upgrade himax fw to CID0404_D01_C06 and modify the node to access fw_ver 20180118 begin*/
+	uint8_t cmd_2[4];
+    uint8_t data_2[64];
+/*[Arima_7947][allen_yu] 20180118 end*/
+/*[Arima_7947][allen_yu] Modify Int trigger way and upgrade himax fw to CID0404_D01_C02 20171228 begin*/
+	int retry = 20;
+/*[Arima_7947][allen_yu] 20171228 end*/
+    int reload_status = 0;
+	while(reload_status == 0)
+	{
+		cmd[3] = 0x10;
+		cmd[2] = 0x00;
+		cmd[1] = 0x7f;
+		cmd[0] = 0x00;
+		himax_register_read(client, cmd, 4, data, false);
+
+/*[Arima_7947][allen_yu] Upgrade himax fw to CID0404_D01_C06 and modify the node to access fw_ver 20180118 begin*/
+		cmd_2[3] = 0x10;
+		cmd_2[2] = 0x00;
+		cmd_2[1] = 0x72;
+		cmd_2[0] = 0xc0;
+		himax_register_read(client, cmd_2, 4, data_2, false);
+
+		if((data[3]==0x00 && data[2]==0x00 && data[1]==0x3A && data[0]==0xA3 )
+			||(data_2[3]==0x00 && data_2[2]==0x00 && data_2[1]==0x72 && data_2[0]==0xC0 ))
+/*[Arima_7947][allen_yu] 20180118 end*/
+		{
+			I("reload OK! \n");
+			reload_status = 1;
+			break;
+		}
+		else if(retry == 0)
+		{
+			E("reload 20 times! fail \n");
+			ic_data->vendor_panel_ver = 0;
+			ic_data->vendor_fw_ver = 0;
+			ic_data->vendor_config_ver = 0;
+			ic_data->vendor_touch_cfg_ver = 0;
+			ic_data->vendor_display_cfg_ver = 0;
+			ic_data->vendor_cid_maj_ver = 0;
+		ic_data->vendor_cid_min_ver = 0;
+			return;
+		}
+		else
+		{
+/*[Arima_7947][allen_yu] Upgrade himax fw to CID0404_D01_C06 and modify the node to access fw_ver 20180118 begin*/
+			I("%s: 0x10007f00, data[0]=%x,data[1]=%x,data[2]=%x,data[3]=%x \n", __func__, data[0],data[1],data[2],data[3]);
+			I("%s: 0x100072c0, data[0]=%x,data[1]=%x,data[2]=%x,data[3]=%x \n", __func__, data_2[0],data_2[1],data_2[2],data_2[3]);
+
+			cmd[3] = 0x90; cmd[2] = 0x00; cmd[1] = 0x00; cmd[0] = 0xA8;
+			himax_register_read(client, cmd, 4, data, false);
+	        I("%s: 0x900000A8, data[0]=%x,data[1]=%x,data[2]=%x,data[3]=%x \n", __func__, data[0],data[1],data[2],data[3]);
+
+			cmd[3] = 0x90; cmd[2] = 0x00; cmd[1] = 0x00; cmd[0] = 0xE4;
+			himax_register_read(client, cmd, 4, data, false);
+	        I("%s: 0x900000E4, data[0]=%x,data[1]=%x,data[2]=%x,data[3]=%x \n", __func__, data[0],data[1],data[2],data[3]);
+
+			cmd[3] = 0x10; cmd[2] = 0x00; cmd[1] = 0x7F; cmd[0] = 0x40;
+			himax_register_read(client, cmd, 4, data, false);
+	        I("%s: 0x10007F40, data[0]=%x,data[1]=%x,data[2]=%x,data[3]=%x \n", __func__, data[0],data[1],data[2],data[3]);
+
+/*[Arima_7947][allen_yu] 20180118 end*/
+			retry --;
+			msleep(10);
+			I("reload fail ,delay 10ms retry=%d\n",retry);
+		}
+	}
+	I("%s : data[0]=0x%2.2X,data[1]=0x%2.2X,data[2]=0x%2.2X,data[3]=0x%2.2X\n",__func__,data[0],data[1],data[2],data[3]);
+	I("reload_status=%d\n",reload_status);
+
+	himax_sense_off(client);
+
+    //=====================================
+    // Read FW version : 0x1000_7004  but 05,06 are the real addr for FW Version
+    //=====================================
+
+    cmd[3] = 0x10;
+    cmd[2] = 0x00;
+    cmd[1] = 0x70;
+    cmd[0] = 0x04;
+    himax_register_read(client, cmd, 4, data, false);
+
+    ic_data->vendor_panel_ver =  data[0];
+    ic_data->vendor_fw_ver = data[1] << 8 | data[2];
+/*[Arima_8710][allen_yu] Modify the touch fw dynamic auto upgtade rule 20180830 begin*/
+	ic_data->vendor_hx_ic_id = data[3];
+/*[Arima_8710][allen_yu] 20180830 end*/
+
+    I("PANEL_VER : %X \n",ic_data->vendor_panel_ver);
+    I("FW_VER : %X \n",ic_data->vendor_fw_ver);
+/*[Arima_8710][allen_yu] Modify the touch fw dynamic auto upgtade rule 20180830 begin*/
+	I("IC_ID : %X \n",ic_data->vendor_hx_ic_id);
+/*[Arima_8710][allen_yu] 20180830 end*/
+
+    cmd[3] = 0x10;
+    cmd[2] = 0x00;
+    cmd[1] = 0x70;
+    cmd[0] = 0x84;
+    himax_register_read(client, cmd, 4, data, false);
+
+    ic_data->vendor_config_ver = data[2] << 8 | data[3];
+    //I("CFG_VER : %X \n",ic_data->vendor_config_ver);
+    ic_data->vendor_touch_cfg_ver = data[2];
+    I("TOUCH_VER : %X \n",ic_data->vendor_touch_cfg_ver);
+    ic_data->vendor_display_cfg_ver = data[3];
+    I("DISPLAY_VER : %X \n",ic_data->vendor_display_cfg_ver);
+
+
+    cmd[3] = 0x10;
+    cmd[2] = 0x00;
+    cmd[1] = 0x70;
+    cmd[0] = 0x00;
+    himax_register_read(client, cmd, 4, data, false);
+
+    ic_data->vendor_cid_maj_ver = data[2] ;
+    ic_data->vendor_cid_min_ver = data[3];
+
+    I("CID_VER : %X \n",(ic_data->vendor_cid_maj_ver << 8 | ic_data->vendor_cid_min_ver));
+    return;
+}
+
+bool himax_ic_package_check(struct i2c_client *client)
+{
+    uint8_t tmp_addr[4];
+    uint8_t tmp_data[4];
+    uint8_t ret_data = 0x00;
+    int i = 0;
+
+/*[Arima_7947][allen_yu] Enter safe mode when i2c fail 20180129 begin*/
+    himax_enter_safe_mode(client);
+/*[Arima_7947][allen_yu] 20180129 end*/
+    for (i = 0; i < 5; i++)
+    {
+// Product ID
+        // Touch
+        tmp_addr[3] = 0x90;
+        tmp_addr[2] = 0x00;
+        tmp_addr[1] = 0x00;
+        tmp_addr[0] = 0xD0;
+        himax_register_read(client, tmp_addr, 4, tmp_data, false);
+
+        I("%s:Read driver IC ID = %X,%X,%X\n", __func__, tmp_data[3],tmp_data[2],tmp_data[1]);
+        if ((tmp_data[3] == 0x83) && (tmp_data[2] == 0x11) && ((tmp_data[1] == 0x2a)||(tmp_data[1] == 0x2b)))
+/*[Arima_8710][allen_yu] Dynamic detect Yandex LCM/TP 2nd source and add PCBA node 20180828 begin*/
+        {
+/*[Arima_8710][allen_yu] Modify the touch fw dynamic auto upgtade rule 20180830 begin*/
+/*[Arima_8710][allen_yu] 20180828 end*/
+            IC_CHECKSUM 			= HX_TP_BIN_CHECKSUM_CRC;
+            //Himax: Set FW and CFG Flash Address
+            FW_VER_MAJ_FLASH_ADDR   = 49157;  //0x00C005
+            FW_VER_MAJ_FLASH_LENG   = 1;
+            FW_VER_MIN_FLASH_ADDR   = 49158;  //0x00C006
+            FW_VER_MIN_FLASH_LENG   = 1;
+            CFG_VER_MAJ_FLASH_ADDR 	= 49408;  //0x00C100
+            CFG_VER_MAJ_FLASH_LENG 	= 1;
+            CFG_VER_MIN_FLASH_ADDR 	= 49409;  //0x00C101
+            CFG_VER_MIN_FLASH_LENG 	= 1;
+            CID_VER_MAJ_FLASH_ADDR	= 49154;  //0x00C002
+            CID_VER_MAJ_FLASH_LENG	= 1;
+            CID_VER_MIN_FLASH_ADDR	= 49155;  //0x00C003
+            CID_VER_MIN_FLASH_LENG	= 1;
+            //PANEL_VERSION_ADDR		= 49156;  //0x00C004
+            //PANEL_VERSION_LENG		= 1;
+/*[Arima_8710][allen_yu] 20180830 end*/
+		if ((tmp_data[3] == 0x83) && (tmp_data[2] == 0x11) && (tmp_data[1] == 0x2a))
+			{
+			IC_TYPE         		= HX_83112A_SERIES_PWON;
+#ifdef HX_AUTO_UPDATE_FW
+		            g_i_FW_VER = i_CTPM_FW_HX83112A[FW_VER_MAJ_FLASH_ADDR]<<8 |i_CTPM_FW_HX83112A[FW_VER_MIN_FLASH_ADDR];
+		            g_i_CFG_VER = i_CTPM_FW_HX83112A[CFG_VER_MAJ_FLASH_ADDR]<<8 |i_CTPM_FW_HX83112A[CFG_VER_MIN_FLASH_ADDR];
+		            g_i_CID_MAJ = i_CTPM_FW_HX83112A[CID_VER_MAJ_FLASH_ADDR];
+		            g_i_CID_MIN = i_CTPM_FW_HX83112A[CID_VER_MIN_FLASH_ADDR];
+#endif
+			}
+		else
+		{
+			IC_TYPE         		= HX_83112B_SERIES_PWON;
+#ifdef HX_AUTO_UPDATE_FW
+					printk("%s: (%d)No need check 2nd ic package\n", __func__, __LINE__);
+		            g_i_FW_VER = i_CTPM_FW_HX83112B[FW_VER_MAJ_FLASH_ADDR]<<8 |i_CTPM_FW_HX83112B[FW_VER_MIN_FLASH_ADDR];
+		            g_i_CFG_VER = i_CTPM_FW_HX83112B[CFG_VER_MAJ_FLASH_ADDR]<<8 |i_CTPM_FW_HX83112B[CFG_VER_MIN_FLASH_ADDR];
+		            g_i_CID_MAJ = i_CTPM_FW_HX83112B[CID_VER_MAJ_FLASH_ADDR];
+		            g_i_CID_MIN = i_CTPM_FW_HX83112B[CID_VER_MIN_FLASH_ADDR];
+#endif
+			}
+/*[Arima_8710][allen_yu] Modify the touch fw dynamic auto upgtade rule 20180830 begin*/
+#if 0
+/*[Arima_8710][allen_yu] 20180828 end*/
+            IC_CHECKSUM 			= HX_TP_BIN_CHECKSUM_CRC;
+            //Himax: Set FW and CFG Flash Address
+            FW_VER_MAJ_FLASH_ADDR   = 49157;  //0x00C005
+            FW_VER_MAJ_FLASH_LENG   = 1;
+            FW_VER_MIN_FLASH_ADDR   = 49158;  //0x00C006
+            FW_VER_MIN_FLASH_LENG   = 1;
+            CFG_VER_MAJ_FLASH_ADDR 	= 49408;  //0x00C100
+            CFG_VER_MAJ_FLASH_LENG 	= 1;
+            CFG_VER_MIN_FLASH_ADDR 	= 49409;  //0x00C101
+            CFG_VER_MIN_FLASH_LENG 	= 1;
+            CID_VER_MAJ_FLASH_ADDR	= 49154;  //0x00C002
+            CID_VER_MAJ_FLASH_LENG	= 1;
+            CID_VER_MIN_FLASH_ADDR	= 49155;  //0x00C003
+            CID_VER_MIN_FLASH_LENG	= 1;
+            //PANEL_VERSION_ADDR		= 49156;  //0x00C004
+            //PANEL_VERSION_LENG		= 1;
+#endif
+/*[Arima_8710][allen_yu] 20180830 end*/
+/*[Arima_8710][allen_yu] Dynamic detect Yandex LCM/TP 2nd source and add PCBA node 20180828 begin*/
+#if 0
+            g_i_FW_VER = i_CTPM_FW[FW_VER_MAJ_FLASH_ADDR]<<8 |i_CTPM_FW[FW_VER_MIN_FLASH_ADDR];
+            g_i_CFG_VER = i_CTPM_FW[CFG_VER_MAJ_FLASH_ADDR]<<8 |i_CTPM_FW[CFG_VER_MIN_FLASH_ADDR];
+            g_i_CID_MAJ = i_CTPM_FW[CID_VER_MAJ_FLASH_ADDR];
+            g_i_CID_MIN = i_CTPM_FW[CID_VER_MIN_FLASH_ADDR];
+#endif
+/*[Arima_8710][allen_yu] 20180828 end*/
+            I("Himax IC package 83112_in\n");
+            ret_data = true;
+/*[Arima_7947][allen_yu] Enter save mode when i2c fail 20180129 begin*/
+            himax_sense_on(client, 0);
+/*[Arima_7947][allen_yu] 20180129 end*/
+            break;
+        }
+        else
+        {
+            ret_data = false;
+            E("%s:Read driver ID register Fail:\n", __func__);
+        }
+    }
+
+    return ret_data;
+}
+
+void himax_power_on_init(struct i2c_client *client)
+{
+	uint8_t tmp_addr[4];
+    uint8_t tmp_data[4];
+
+    I("%s:\n", __func__);
+    himax_touch_information(client);
+
+	/*RawOut select initial*/
+	tmp_addr[3] = 0x80;tmp_addr[2] = 0x02;tmp_addr[1] = 0x04;tmp_addr[0] = 0xB4;
+    tmp_data[3] = 0x00;tmp_data[2] = 0x00;tmp_data[1] = 0x00;tmp_data[0] = 0x00;
+	himax_register_write(client,tmp_addr, 4, tmp_data, false);
+
+	/*DSRAM func initial*/
+    tmp_addr[3] = 0x10;tmp_addr[2] = 0x00;tmp_addr[1] = 0x07;tmp_addr[0] = 0xFC;
+    tmp_data[3] = 0x00;tmp_data[2] = 0x00;tmp_data[1] = 0x00;tmp_data[0] = 0x00;
+	himax_register_write(client,tmp_addr, 4, tmp_data, false);
+
+	himax_sense_on(client, 0x00);
+}
+
+bool himax_read_event_stack(struct i2c_client *client, 	uint8_t *buf, uint8_t length) //Alice - Un
+{
+    uint8_t cmd[4];
+
+    //  AHB_I2C Burst Read Off
+    cmd[0] = 0x00;
+    if ( i2c_himax_write(client, 0x11,cmd, 1, DEFAULT_RETRY_CNT) < 0)
+    {
+        E("%s: i2c access fail!\n", __func__);
+        return 0;
+    }
+
+    i2c_himax_read(client, 0x30, buf, length,DEFAULT_RETRY_CNT);
+
+    //  AHB_I2C Burst Read On
+    cmd[0] = 0x01;
+    if ( i2c_himax_write(client, 0x11,cmd, 1, 3) < 0)
+    {
+        E("%s: i2c access fail!\n", __func__);
+        return 0;
+    }
+    return 1;
+}
+
+void himax_get_DSRAM_data(struct i2c_client *client, uint8_t *info_data)
+{
+    int i = 0;
+    //int cnt = 0;
+    unsigned char tmp_addr[4];
+    unsigned char tmp_data[4];
+    uint8_t max_i2c_size = 128;
+    uint8_t x_num = ic_data->HX_RX_NUM;
+    uint8_t y_num = ic_data->HX_TX_NUM;
+    int m_key_num = 0;
+    int total_size = (x_num * y_num + x_num + y_num) * 2 + 4;
+    int total_size_temp;
+    int mutual_data_size = x_num * y_num * 2;
+    int total_read_times = 0;
+    int address = 0;
+    uint8_t  *temp_info_data; //max mkey size = 8
+    uint16_t check_sum_cal = 0;
+    int fw_run_flag = -1;
+    //uint16_t temp_check_sum_cal = 0;
+
+	temp_info_data = kzalloc(sizeof(uint8_t)*(total_size + 8),GFP_KERNEL);
+
+    /*1. Read number of MKey R100070E8H to determin data size*/
+    m_key_num = ic_data->HX_BT_NUM;
+    //I("%s,m_key_num=%d\n",__func__,m_key_num);
+    total_size += m_key_num*2;
+
+    /* 2. Start DSRAM Rawdata and Wait Data Ready */
+    tmp_addr[3] = 0x10;
+    tmp_addr[2] = 0x00;
+    tmp_addr[1] = 0x00;
+    tmp_addr[0] = 0x00;
+    tmp_data[3] = 0x00;
+    tmp_data[2] = 0x00;
+    tmp_data[1] = 0x5A;
+    tmp_data[0] = 0xA5;
+    fw_run_flag = himax_write_read_reg(client,tmp_addr,tmp_data,0xA5,0x5A);
+
+    if(fw_run_flag < 0)
+    {
+        I("%s Data NOT ready => bypass \n", __func__);
+		kfree(temp_info_data);
+        return;
+    }
+
+    /* 3. Read RawData */
+    total_size_temp = total_size;
+    tmp_addr[3] = 0x10;
+    tmp_addr[2] = 0x00;
+    tmp_addr[1] = 0x00;
+    tmp_addr[0] = 0x00;
+
+    if (total_size % max_i2c_size == 0)
+    {
+        total_read_times = total_size / max_i2c_size;
+    }
+    else
+    {
+        total_read_times = total_size / max_i2c_size + 1;
+    }
+
+    for (i = 0; i < (total_read_times); i++)
+    {
+        if ( total_size_temp >= max_i2c_size)
+        {
+            himax_register_read(client, tmp_addr, max_i2c_size, &temp_info_data[i*max_i2c_size], false);
+            total_size_temp = total_size_temp - max_i2c_size;
+        }
+        else
+        {
+            //I("last total_size_temp=%d\n",total_size_temp);
+            himax_register_read(client, tmp_addr, total_size_temp % max_i2c_size, &temp_info_data[i*max_i2c_size], false);
+        }
+
+        address = ((i+1)*max_i2c_size);
+        tmp_addr[1] = (uint8_t)((address>>8)&0x00FF);
+        tmp_addr[0] = (uint8_t)((address)&0x00FF);
+    }
+
+    /* 4. FW stop outputing */
+    //I("DSRAM_Flag=%d\n",DSRAM_Flag);
+    if(DSRAM_Flag == false)
+    {
+        //I("Return to Event Stack!\n");
+        tmp_addr[3] = 0x10;
+        tmp_addr[2] = 0x00;
+        tmp_addr[1] = 0x00;
+        tmp_addr[0] = 0x00;
+        tmp_data[3] = 0x00;
+        tmp_data[2] = 0x00;
+        tmp_data[1] = 0x00;
+        tmp_data[0] = 0x00;
+        himax_flash_write_burst(client, tmp_addr, tmp_data);
+    }
+    else
+    {
+        //I("Continue to SRAM!\n");
+        tmp_addr[3] = 0x10;
+        tmp_addr[2] = 0x00;
+        tmp_addr[1] = 0x00;
+        tmp_addr[0] = 0x00;
+        tmp_data[3] = 0x11;
+        tmp_data[2] = 0x22;
+        tmp_data[1] = 0x33;
+        tmp_data[0] = 0x44;
+        himax_flash_write_burst(client, tmp_addr, tmp_data);
+    }
+
+    /* 5. Data Checksum Check */
+    for (i = 2; i < total_size; i=i+2)/* 2:PASSWORD NOT included */
+    {
+        check_sum_cal += (temp_info_data[i+1]*256 + temp_info_data[i]);
+    }
+
+    if (check_sum_cal % 0x10000 != 0)
+    {
+        I("%s check_sum_cal fail=%2X \n", __func__, check_sum_cal);
+		kfree(temp_info_data);
+        return;
+    }
+    else
+    {
+        memcpy(info_data, &temp_info_data[4], mutual_data_size * sizeof(uint8_t));
+        //I("%s checksum PASS \n", __func__);
+    }
+	kfree(temp_info_data);
+}
+
+bool himax_calculateChecksum(struct i2c_client *client, bool change_iref)
+{
+    uint8_t CRC_result = 0;
+    uint8_t tmp_data[4];
+
+    tmp_data[3] = 0x00;
+    tmp_data[2] = 0x00;
+    tmp_data[1] = 0x00;
+    tmp_data[0] = 0x00;
+
+    CRC_result = himax_hw_check_CRC(client,tmp_data, FW_SIZE_64k);
+
+	msleep(50);
+
+    return !CRC_result;
+}
+
+//ts_work
+int cal_data_len(int raw_cnt_rmd, int HX_MAX_PT, int raw_cnt_max)
+{
+    int RawDataLen;
+    if (raw_cnt_rmd != 0x00)
+    {
+        RawDataLen = 128 - ((HX_MAX_PT+raw_cnt_max+3)*4) - 1;
+    }
+    else
+    {
+        RawDataLen = 128 - ((HX_MAX_PT+raw_cnt_max+2)*4) - 1;
+    }
+    return RawDataLen;
+}
+
+bool diag_check_sum( struct himax_report_data *hx_touch_data ) //return checksum value
+{
+    uint16_t check_sum_cal = 0;
+    int i;
+
+    //Check 128th byte CRC
+    for (i = 0, check_sum_cal = 0; i < (hx_touch_data->touch_all_size - hx_touch_data->touch_info_size); i=i+2)
+    {
+        check_sum_cal += (hx_touch_data->hx_rawdata_buf[i+1]*256 + hx_touch_data->hx_rawdata_buf[i]);
+    }
+    if (check_sum_cal % 0x10000 != 0)
+    {
+        I("%s fail=%2X \n", __func__, check_sum_cal);
+        return 0;
+        //goto bypass_checksum_failed_packet;
+    }
+
+    return 1;
+}
+
+
+void diag_parse_raw_data(struct himax_report_data *hx_touch_data,int mul_num, int self_num,uint8_t diag_cmd, int32_t *mutual_data, int32_t *self_data)
+{
+    int RawDataLen_word;
+    int index = 0;
+    int temp1, temp2,i;
+
+    if (hx_touch_data->hx_rawdata_buf[0] == 0x3A
+            && hx_touch_data->hx_rawdata_buf[1] == 0xA3
+            && hx_touch_data->hx_rawdata_buf[2] > 0
+            && hx_touch_data->hx_rawdata_buf[3] == diag_cmd )
+    {
+        RawDataLen_word = hx_touch_data->rawdata_size/2;
+        index = (hx_touch_data->hx_rawdata_buf[2] - 1) * RawDataLen_word;
+        //I("Header[%d]: %x, %x, %x, %x, mutual: %d, self: %d\n", index, buf[56], buf[57], buf[58], buf[59], mul_num, self_num);
+        //I("RawDataLen=%d , RawDataLen_word=%d , hx_touch_info_size=%d\n", RawDataLen, RawDataLen_word, hx_touch_info_size);
+        for (i = 0; i < RawDataLen_word; i++)
+        {
+            temp1 = index + i;
+
+            if (temp1 < mul_num)
+            {
+                //mutual
+                mutual_data[index + i] = hx_touch_data->hx_rawdata_buf[i*2 + 4 + 1]*256 + hx_touch_data->hx_rawdata_buf[i*2 + 4];	//4: RawData Header, 1:HSB
+            }
+            else
+            {
+                //self
+                temp1 = i + index;
+                temp2 = self_num + mul_num;
+
+                if (temp1 >= temp2)
+                {
+                    break;
+                }
+                self_data[i+index-mul_num] = hx_touch_data->hx_rawdata_buf[i*2 + 4];	//4: RawData Header
+                self_data[i+index-mul_num+1] = hx_touch_data->hx_rawdata_buf[i*2 + 4 + 1];
+            }
+        }
+    }
+
+}
+uint8_t himax_read_DD_status(uint8_t *cmd_set, uint8_t *tmp_data)
+{
+    int cnt = 0;
+    uint8_t req_size = cmd_set[0];
+    uint8_t cmd_addr[4] = {0xFC, 0x00, 0x00, 0x90}; //0x900000FC -> cmd and hand shaking
+    uint8_t tmp_addr[4] = {0x80, 0x7F, 0x00, 0x10}; //0x10007F80 -> data space
+
+    cmd_set[3] = 0xAA;
+    himax_register_write(private_ts->client, cmd_addr, 4, cmd_set, 0);
+
+    I("%s: cmd_set[0] = 0x%02X,cmd_set[1] = 0x%02X,cmd_set[2] = 0x%02X,cmd_set[3] = 0x%02X\n", __func__,cmd_set[0],cmd_set[1],cmd_set[2],cmd_set[3]);
+
+    for (cnt = 0; cnt < 100; cnt++) //doing hand shaking 0xAA -> 0xBB
+    {
+        himax_register_read(private_ts->client, cmd_addr, 4, tmp_data, false);
+        //I("%s: tmp_data[0] = 0x%02X,tmp_data[1] = 0x%02X,tmp_data[2] = 0x%02X,tmp_data[3] = 0x%02X, cnt=%d\n", __func__,tmp_data[0],tmp_data[1],tmp_data[2],tmp_data[3],cnt);
+        msleep(10);
+        if(tmp_data[3] == 0xBB)
+        {
+            I("%s Data ready goto moving data\n", __func__);
+            break;
+        }
+        else if(cnt >= 99)
+        {
+            I("%s Data not ready in FW \n", __func__);
+            return FW_NOT_READY;
+        }
+    }
+    himax_register_read(private_ts->client, tmp_addr, req_size, tmp_data, false);
+    return NO_ERR;
+}
+
+int himax_read_FW_status(uint8_t *state_addr, uint8_t *tmp_addr)
+{
+	uint8_t req_size = 0;
+	uint8_t status_addr[4] = {0x44, 0x7F, 0x00, 0x10}; //0x10007F44
+	uint8_t cmd_addr[4] = {0xF8, 0x00, 0x00, 0x90}; //0x900000F8
+
+	if(state_addr[0]==0x01)
+		{
+			state_addr[1]= 0x04;
+			state_addr[2]= status_addr[0];state_addr[3]= status_addr[1];state_addr[4]= status_addr[2];state_addr[5]= status_addr[3];
+			req_size = 0x04;
+			himax_sense_off(private_ts->client);
+			himax_register_read(private_ts->client, status_addr, req_size, tmp_addr, false);
+			himax_sense_on(private_ts->client,1);
+		}
+	else if(state_addr[0]==0x02)
+		{
+			state_addr[1]= 0x30;
+			state_addr[2]= cmd_addr[0];state_addr[3]= cmd_addr[1];state_addr[4]= cmd_addr[2];state_addr[5]= cmd_addr[3];
+			req_size = 0x30;
+			himax_register_read(private_ts->client, cmd_addr, req_size, tmp_addr, false);
+		}
+
+	return NO_ERR;
+}
+
+#if defined(HX_SMART_WAKEUP)||defined(HX_HIGH_SENSE)||defined(HX_USB_DETECT_GLOBAL)
+void himax_resend_cmd_func(bool suspended)
+{
+    struct himax_ts_data *ts;
+
+    ts = private_ts;
+
+#ifdef HX_SMART_WAKEUP
+    himax_set_SMWP_enable(ts->client,ts->SMWP_enable,suspended);
+#endif
+#ifdef HX_HIGH_SENSE
+    himax_set_HSEN_enable(ts->client,ts->HSEN_enable,suspended);
+#endif
+#ifdef HX_USB_DETECT_GLOBAL
+    himax_cable_detect_func(true);
+#endif
+}
+#endif
+
+void himax_resume_ic_action(struct i2c_client *client)
+{
+    return;
+}
+
+void himax_suspend_ic_action(struct i2c_client *client)
+{
+    return;
+}
+
+#ifdef HX_ZERO_FLASH
+int G_POWERONOF = 1;
+void himax_sys_reset(void)
+{
+	uint8_t tmp_addr[4];
+	uint8_t tmp_data[4];
+
+	// 0x10007f00 -> 0x0000A55A //Diable Flash Reload
+	tmp_addr[3] = 0x10; tmp_addr[2] = 0x00; tmp_addr[1] = 0x7F; tmp_addr[0] = 0x00;
+	tmp_data[3] = 0x00; tmp_data[2] = 0x00; tmp_data[1] = 0x9A; tmp_data[0] = 0xA9;
+	himax_flash_write_burst(private_ts->client,tmp_addr, tmp_data);
+
+	msleep(100);
+
+	tmp_addr[3] = 0x90; tmp_addr[2] = 0x00; tmp_addr[1] = 0x00; tmp_addr[0] = 0x18;
+	tmp_data[3] = 0x00; tmp_data[2] = 0x00; tmp_data[1] = 0x00; tmp_data[0] = 0x55;
+	himax_register_write(private_ts->client,tmp_addr, 4, tmp_data, false);
+}
+void himax_clean_sram_0f(uint8_t *addr,int write_len,int type)
+{
+	int total_read_times = 0;
+	int max_bus_size = 128;
+	int total_size_temp = 0;
+	int total_size = 0;
+	int address = 0;
+	int i = 0;
+
+	uint8_t fix_data = 0x00;
+	uint8_t tmp_addr[4];
+	uint8_t tmp_data[128]={0};
+
+	I("%s,Entering \n",__func__);
+
+	total_size = write_len;
+
+	total_size_temp = write_len;
+
+	I("[log]enable start!\n");
+	himax_burst_enable(private_ts->client,1);
+	I("[log]enable end!\n");
+
+	tmp_addr[3] = addr[3]; tmp_addr[2] = addr[2]; tmp_addr[1] = addr[1]; tmp_addr[0] = addr[0];
+	I("%s, write addr tmp_addr[3]=0x%2.2X, tmp_addr[2]=0x%2.2X, tmp_addr[1]=0x%2.2X, tmp_addr[0]=0x%2.2X\n",__func__,tmp_addr[3],tmp_addr[2],tmp_addr[1],tmp_addr[0]);
+
+
+	switch(type)
+	{
+		case 0:
+			fix_data = 0x00;
+			break;
+		case 1:
+			fix_data = 0xAA;
+			break;
+		case 2:
+			fix_data = 0xBB;
+			break;
+	}
+
+	for(i = 0;i<128;i++)
+	{
+		tmp_data[i] = fix_data;
+	}
+
+
+	I("%s, total size=%d\n",__func__,total_size);
+
+	if (total_size_temp % max_bus_size == 0)
+	{
+		total_read_times = total_size_temp / max_bus_size;
+	}
+	else
+	{
+		total_read_times = total_size_temp / max_bus_size + 1;
+	}
+
+	for (i = 0; i < (total_read_times); i++)
+	{
+		I("[log]write %d time start!\n",i);
+		if ( total_size_temp >= max_bus_size)
+		{
+			himax_flash_write_burst_lenth(private_ts->client,tmp_addr,tmp_data, max_bus_size);
+			total_size_temp = total_size_temp - max_bus_size;
+		}
+		else
+		{
+			I("last total_size_temp=%d\n",total_size_temp);
+			himax_flash_write_burst_lenth(private_ts->client,tmp_addr,tmp_data, total_size_temp % max_bus_size);
+		}
+		address = ((i+1)*max_bus_size);
+		tmp_addr[1] = addr[1] + (uint8_t)((address>>8)&0x00FF);
+		tmp_addr[0] = addr[0] + (uint8_t)((address)&0x00FF);
+
+		msleep(10);
+	}
+
+	I("%s,END \n",__func__);
+}
+
+void himax_write_sram_0f(const struct firmware *fw_entry,uint8_t *addr,int start_index,int write_len)
+{
+	int total_read_times = 0;
+	int max_bus_size = 128;
+	int total_size_temp = 0;
+	int total_size = 0;
+	int address = 0;
+	int i = 0;
+
+	uint8_t tmp_addr[4];
+	uint8_t *tmp_data;
+	uint32_t now_addr;
+
+	I("%s,Entering \n",__func__);
+
+	total_size = 65536;
+
+	total_size_temp = write_len;
+
+	I("[log]enable start!\n");
+	himax_burst_enable(private_ts->client,1);
+	I("[log]enable end!\n");
+
+	tmp_addr[3] = addr[3]; tmp_addr[2] = addr[2]; tmp_addr[1] = addr[1]; tmp_addr[0] = addr[0];
+	I("%s, write addr tmp_addr[3]=0x%2.2X, tmp_addr[2]=0x%2.2X, tmp_addr[1]=0x%2.2X, tmp_addr[0]=0x%2.2X\n",__func__,tmp_addr[3],tmp_addr[2],tmp_addr[1],tmp_addr[0]);
+	now_addr = (addr[3] << 24) + (addr[2] << 16) + (addr[1] << 8) + addr[0];
+	I("now addr= 0x%08X\n",now_addr);
+
+	I("%s, total size=%d\n",__func__,total_size);
+
+	//I("[log]locate start!\n");
+	tmp_data = kzalloc(sizeof(uint8_t)*total_size,GFP_KERNEL);
+	//I("[log]enable end!\n");
+	//I("[log]memcpy start!\n");
+	memcpy(tmp_data,fw_entry->data,total_size);
+	//I("[log]memcpy end!\n");
+
+	I("tmp_data size=%d\n",(int)sizeof(tmp_data));
+
+	for(i = 0;i<10;i++)
+	{
+		I("[%d] 0x%2.2X",i,tmp_data[i]);
+	}
+	I("\n");
+	if (total_size_temp % max_bus_size == 0)
+	{
+		total_read_times = total_size_temp / max_bus_size;
+	}
+	else
+	{
+		total_read_times = total_size_temp / max_bus_size + 1;
+	}
+
+	for (i = 0; i < (total_read_times); i++)
+	{
+		I("[log]write %d time start!\n",i);
+		if ( total_size_temp >= max_bus_size)
+		{
+			himax_flash_write_burst_lenth(private_ts->client,tmp_addr,&(tmp_data[start_index+i*max_bus_size]), max_bus_size);
+			total_size_temp = total_size_temp - max_bus_size;
+		}
+		else
+		{
+			I("last total_size_temp=%d\n",total_size_temp);
+			himax_flash_write_burst_lenth(private_ts->client,tmp_addr,&(tmp_data[start_index+i*max_bus_size]), total_size_temp % max_bus_size);
+		}
+		I("[log]write %d time end!\n",i);
+		address = ((i+1)*max_bus_size);
+		tmp_addr[0] = addr[0] + (uint8_t)((address)&0x00FF);
+		if(tmp_addr[0] <  addr[0])
+			tmp_addr[1] = addr[1] + (uint8_t)((address>>8)&0x00FF) + 1;
+		else
+			tmp_addr[1] = addr[1] + (uint8_t)((address>>8)&0x00FF);
+
+
+		msleep(10);
+	}
+	I("%s,END \n",__func__);
+	kfree(tmp_data);
+}
+
+void himax_firmware_update_0f(const struct firmware *fw_entry)
+{
+	uint8_t tmp_addr[4];
+	uint8_t tmp_data[4];
+
+	I("%s,Entering \n",__func__);
+
+	tmp_addr[3] = 0x90; tmp_addr[2] = 0x00; tmp_addr[1] = 0x00; tmp_addr[0] = 0x18;
+	tmp_data[3] = 0x00; tmp_data[2] = 0x00; tmp_data[1] = 0x00; tmp_data[0] = 0x55;
+	himax_register_write(private_ts->client,tmp_addr, 4, tmp_data, false);
+
+	himax_sense_off(private_ts->client);
+
+	himax_chip_erase(private_ts->client);
+
+	/* first 48K */
+	tmp_addr[3] = 0x08;tmp_addr[2] = 0x00;tmp_addr[1] = 0x00;tmp_addr[0] = 0x00;
+	himax_write_sram_0f(fw_entry,tmp_addr,0,0xC000);
+
+
+	/* clean */
+	if(G_POWERONOF == 1)
+	{
+		tmp_addr[3] = 0x10;tmp_addr[2] = 0x00;tmp_addr[1] = 0x00;tmp_addr[0] = 0x00;
+		himax_clean_sram_0f(tmp_addr,32768,0);
+	}
+
+	/*last 16k*/
+	/*config info*/
+	tmp_addr[3] = 0x10;tmp_addr[2] = 0x00;tmp_addr[1] = 0x70;tmp_addr[0] = 0x00;
+	if(G_POWERONOF == 1)
+		himax_write_sram_0f(fw_entry,tmp_addr,0xC000,132);
+	else
+		himax_clean_sram_0f(tmp_addr,132,2);
+	/*FW config*/
+	tmp_addr[3] = 0x10;tmp_addr[2] = 0x00;tmp_addr[1] = 0x70;tmp_addr[0] = 0x84;
+	if(G_POWERONOF == 1)
+		himax_write_sram_0f(fw_entry,tmp_addr,0xC0FE,512); //0xc100-2
+	else
+		himax_clean_sram_0f(tmp_addr,512,1);
+	/*ADC config*/
+	tmp_addr[3] = 0x10;tmp_addr[2] = 0x00;tmp_addr[1] = 0x78;tmp_addr[0] = 0x00;
+	if(G_POWERONOF == 1)
+		himax_write_sram_0f(fw_entry,tmp_addr,0xD000,376);
+	else
+		himax_clean_sram_0f(tmp_addr,376,2);
+
+	tmp_addr[3] = 0x10;tmp_addr[2] = 0x00;tmp_addr[1] = 0x79;tmp_addr[0] = 0x78;
+	if(G_POWERONOF == 1)
+		himax_write_sram_0f(fw_entry,tmp_addr,0xD178,376);
+	else
+		himax_clean_sram_0f(tmp_addr,376,2);
+
+	tmp_addr[3] = 0x10;tmp_addr[2] = 0x00;tmp_addr[1] = 0x7A;tmp_addr[0] = 0xF0;
+	if(G_POWERONOF == 1)
+		himax_write_sram_0f(fw_entry,tmp_addr,0xD000,376);
+	else
+		himax_clean_sram_0f(tmp_addr,376,2);
+
+	//G_POWERONOF = 0;
+
+	I("%s,END \n",__func__);
+}
+void himax_0f_operation(struct work_struct *work)
+{
+	int err = NO_ERR;
+	const struct firmware *fw_entry = NULL;
+	char *firmware_name = "himax.bin";
+	uint8_t tmp_data[4];
+
+	I("%s,Entering \n",__func__);
+	I("file name = %s\n",firmware_name);
+	err = request_firmware(&fw_entry, firmware_name, private_ts->dev);
+	if (err < 0) {
+		E("%s,fail in line%d error code=%d\n",__func__,__LINE__,err);
+		//goto err_request_firmware;
+		return ;
+	}
+	himax_firmware_update_0f(fw_entry);
+	release_firmware(fw_entry);
+
+	tmp_data[0] = 0x00;tmp_data[1] = 0x00;tmp_data[2] = 0x00;tmp_data[3] = 0x08;
+	if(himax_hw_check_CRC(private_ts->client,tmp_data, 0xC000) == 0)
+	{
+		I("%s,HW CRC OK!\n",__func__);
+	}
+	else
+	{
+		E("%s,HW CRC FAIL!\n",__func__);
+	}
+
+	msleep(100);
+	himax_sys_reset();
+	msleep(100);
+	himax_int_enable(private_ts->client->irq,1);
+
+	I("%s,END \n",__func__);
+	return ;
+}
+
+#ifdef HX_0F_DEBUG
+void himax_read_sram_0f(const struct firmware *fw_entry,uint8_t *addr,int start_index,int read_len)
+{
+	int total_read_times = 0;
+	int max_i2c_size = 128;
+	int total_size_temp = 0;
+	int total_size = 0;
+	int address = 0;
+	int i = 0,j = 0;
+	int not_same = 0;
+
+	uint8_t tmp_addr[4];
+	uint8_t *temp_info_data;
+	int *not_same_buff;
+
+	I("%s,Entering \n",__func__);
+
+	himax_burst_enable(private_ts->client,1);
+
+	total_size = read_len;
+
+	total_size_temp = read_len;
+
+	temp_info_data = kzalloc(sizeof(uint8_t)*total_size,GFP_KERNEL);
+	not_same_buff = kzalloc(sizeof(int)*total_size,GFP_KERNEL);
+
+
+	tmp_addr[3] = addr[3]; tmp_addr[2] = addr[2]; tmp_addr[1] = addr[1]; tmp_addr[0] = addr[0];
+	I("%s, read addr tmp_addr[3]=0x%2.2X, tmp_addr[2]=0x%2.2X, tmp_addr[1]=0x%2.2X, tmp_addr[0]=0x%2.2X\n",__func__,tmp_addr[3],tmp_addr[2],tmp_addr[1],tmp_addr[0]);
+
+	I("%s, total size=%d\n",__func__,total_size);
+
+	himax_burst_enable(private_ts->client,1);
+
+	if (total_size % max_i2c_size == 0)
+	{
+		total_read_times = total_size / max_i2c_size;
+	}
+	else
+	{
+		total_read_times = total_size / max_i2c_size + 1;
+	}
+
+	for (i = 0; i < (total_read_times); i++)
+	{
+		if ( total_size_temp >= max_i2c_size)
+		{
+			himax_register_read(private_ts->client,tmp_addr, max_i2c_size, &temp_info_data[i*max_i2c_size], false);
+			total_size_temp = total_size_temp - max_i2c_size;
+		}
+		else
+		{
+			//I("last total_size_temp=%d\n",total_size_temp);
+			himax_register_read(private_ts->client,tmp_addr, total_size_temp % max_i2c_size, &temp_info_data[i*max_i2c_size], false);
+		}
+
+		address = ((i+1)*max_i2c_size);
+		tmp_addr[0] = addr[0] + (uint8_t)((address)&0x00FF);
+		if(tmp_addr[0] <  addr[0])
+			tmp_addr[1] = addr[1] + (uint8_t)((address>>8)&0x00FF) + 1;
+		else
+			tmp_addr[1] = addr[1] + (uint8_t)((address>>8)&0x00FF);
+
+		msleep(10);
+	}
+	I("%s,READ Start \n",__func__);
+	I("%s,start_index = %d \n",__func__,start_index);
+	j = start_index;
+	for(i = 0;i < read_len;i++,j++)
+	{
+		if(fw_entry->data[j] != temp_info_data[i])
+		{
+			not_same++;
+			not_same_buff[i] = 1;
+		}
+
+
+
+
+		I("0x%2.2X,",temp_info_data[i]);
+
+		if (i > 0 && i%16 == 15)
+			printk("\n");
+	}
+	I("%s,READ END \n",__func__);
+	I("%s,Not Same count=%d\n",__func__,not_same);
+	if(not_same != 0)
+	{
+		j = start_index;
+		for(i = 0;i<read_len;i++,j++)
+		{
+			if(not_same_buff[i] == 1)
+				I("bin = [%d] 0x%2.2X\n",i,fw_entry->data[j]);
+		}
+		for(i = 0;i<read_len;i++,j++)
+		{
+			if(not_same_buff[i] == 1)
+				I("sram = [%d] 0x%2.2X \n",i,temp_info_data[i]);
+		}
+	}
+	I("%s,END \n",__func__);
+
+	kfree(temp_info_data);
+}
+
+void himax_read_all_sram(uint8_t *addr,int read_len)
+{
+	int total_read_times = 0;
+	int max_bus_size = 128;
+	int total_size_temp = 0;
+	int total_size = 0;
+	int address = 0;
+	int i = 0;
+	struct file *fn;
+
+	uint8_t tmp_addr[4];
+	uint8_t *temp_info_data;
+
+	I("%s,Entering \n",__func__);
+
+	himax_burst_enable(private_ts->client,1);
+
+	total_size = read_len;
+
+	total_size_temp = read_len;
+
+	temp_info_data = kzalloc(sizeof(uint8_t)*total_size,GFP_KERNEL);
+
+
+	tmp_addr[3] = addr[3]; tmp_addr[2] = addr[2]; tmp_addr[1] = addr[1]; tmp_addr[0] = addr[0];
+	I("%s, read addr tmp_addr[3]=0x%2.2X, tmp_addr[2]=0x%2.2X, tmp_addr[1]=0x%2.2X, tmp_addr[0]=0x%2.2X\n",__func__,tmp_addr[3],tmp_addr[2],tmp_addr[1],tmp_addr[0]);
+
+	I("%s, total size=%d\n",__func__,total_size);
+
+	if (total_size % max_bus_size == 0)
+	{
+		total_read_times = total_size / max_bus_size;
+	}
+	else
+	{
+		total_read_times = total_size / max_bus_size + 1;
+	}
+
+	for (i = 0; i < (total_read_times); i++)
+	{
+		if ( total_size_temp >= max_bus_size)
+		{
+			himax_register_read(private_ts->client,tmp_addr, max_bus_size, &temp_info_data[i*max_bus_size], false);
+			total_size_temp = total_size_temp - max_bus_size;
+		}
+		else
+		{
+			//I("last total_size_temp=%d\n",total_size_temp);
+			himax_register_read(private_ts->client,tmp_addr, total_size_temp % max_bus_size, &temp_info_data[i*max_bus_size], false);
+		}
+
+		address = ((i+1)*max_bus_size);
+		tmp_addr[1] = addr[1] + (uint8_t)((address>>8)&0x00FF);
+		tmp_addr[0] = addr[0] + (uint8_t)((address)&0x00FF);
+
+		msleep(10);
+	}
+	I("%s, NOW addr tmp_addr[3]=0x%2.2X, tmp_addr[2]=0x%2.2X, tmp_addr[1]=0x%2.2X, tmp_addr[0]=0x%2.2X\n",__func__,tmp_addr[3],tmp_addr[2],tmp_addr[1],tmp_addr[0]);
+	/*for(i = 0;i<read_len;i++)
+	{
+		I("0x%2.2X,",temp_info_data[i]);
+
+		if (i > 0 && i%16 == 15)
+			printk("\n");
+	}*/
+
+
+	I("Now Write File start!\n");
+	fn = filp_open("/sdcard/dump_dsram.txt",O_CREAT | O_WRONLY ,0);
+	if (!IS_ERR(fn))
+	{
+		I("%s create file and ready to write\n",__func__);
+		fn->f_op->write(fn,temp_info_data,read_len*sizeof(uint8_t),&fn->f_pos);
+		filp_close(fn,NULL);
+	}
+	I("Now Write File End!\n");
+
+
+	I("%s,END \n",__func__);
+
+	kfree(temp_info_data);
+}
+
+void himax_firmware_read_0f(const struct firmware *fw_entry)
+{
+	uint8_t tmp_addr[4];
+
+	I("%s,Entering \n",__func__);
+	/* first 48K */
+	tmp_addr[3] = 0x08;tmp_addr[2] = 0x00;tmp_addr[1] = 0x00;tmp_addr[0] = 0x00;
+	himax_read_sram_0f(fw_entry,tmp_addr,0,0xC000);
+
+	/*last 16k*/
+	tmp_addr[3] = 0x10;tmp_addr[2] = 0x00;tmp_addr[1] = 0x70;tmp_addr[0] = 0x00;
+	himax_read_sram_0f(fw_entry,tmp_addr,0xC000,132);
+	tmp_addr[3] = 0x10;tmp_addr[2] = 0x00;tmp_addr[1] = 0x70;tmp_addr[0] = 0x84;
+	himax_read_sram_0f(fw_entry,tmp_addr,0xC0FE,512);//0xc100-2
+	tmp_addr[3] = 0x10;tmp_addr[2] = 0x00;tmp_addr[1] = 0x78;tmp_addr[0] = 0x00;
+	himax_read_sram_0f(fw_entry,tmp_addr,0xD000,376);
+	tmp_addr[3] = 0x10;tmp_addr[2] = 0x00;tmp_addr[1] = 0x79;tmp_addr[0] = 0x78;
+	himax_read_sram_0f(fw_entry,tmp_addr,0xD178,376);
+	tmp_addr[3] = 0x10;tmp_addr[2] = 0x00;tmp_addr[1] = 0x7A;tmp_addr[0] = 0xF0;
+	himax_read_sram_0f(fw_entry,tmp_addr,0xD000,376);
+
+	tmp_addr[3] = 0x10;tmp_addr[2] = 0x00;tmp_addr[1] = 0x00;tmp_addr[0] = 0x00;
+	himax_read_all_sram(tmp_addr,32768);
+	I("%s,END \n",__func__);
+}
+
+void himax_0f_operation_check(void)
+{
+	int err = NO_ERR;
+	const struct firmware *fw_entry = NULL;
+	char *firmware_name = "himax.bin";
+
+
+	I("%s,Entering \n",__func__);
+	I("file name = %s\n",firmware_name);
+
+	err = request_firmware(&fw_entry, firmware_name, private_ts->dev);
+	if (err < 0) {
+		E("%s,fail in line%d error code=%d\n",__func__,__LINE__,err);
+		//goto err_request_firmware;
+		return ;
+	}
+
+	I("first 4 bytes 0x%2X,0x%2X,0x%2X,0x%2X !\n",fw_entry->data[0],fw_entry->data[1],fw_entry->data[2],fw_entry->data[3]);
+	I("next 4 bytes 0x%2X,0x%2X,0x%2X,0x%2X !\n",fw_entry->data[4],fw_entry->data[5],fw_entry->data[6],fw_entry->data[7]);
+	I("and next 4 bytes 0x%2X,0x%2X,0x%2X,0x%2X !\n",fw_entry->data[8],fw_entry->data[9],fw_entry->data[10],fw_entry->data[11]);
+
+	himax_firmware_read_0f(fw_entry);
+
+	release_firmware(fw_entry);
+	I("%s,END \n",__func__);
+	return ;
+}
+#endif
+
+#endif
diff --git a/drivers/input/touchscreen/hxchipset83112b/himax_ic.h b/drivers/input/touchscreen/hxchipset83112b/himax_ic.h
new file mode 100644
index 0000000..3241427
--- /dev/null
+++ b/drivers/input/touchscreen/hxchipset83112b/himax_ic.h
@@ -0,0 +1,82 @@
+/* Himax Android Driver Sample Code for HX83112 chipset
+*
+* Copyright (C) 2017 Himax Corporation.
+*
+* This software is licensed under the terms of the GNU General Public
+* License version 2, as published by the Free Software Foundation, and
+* may be copied, distributed, and modified under those terms.
+*
+* This program is distributed in the hope that 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.
+*
+*/
+
+#include "himax_platform.h"
+#include "himax_common.h"
+#include <linux/slab.h>
+
+#define HIMAX_REG_RETRY_TIMES 5
+
+enum fw_image_type
+{
+    fw_image_32k	= 0x01,
+    fw_image_48k,
+    fw_image_60k,
+    fw_image_64k,
+    fw_image_124k,
+    fw_image_128k,
+};
+
+int himax_hand_shaking(struct i2c_client *client);
+void himax_set_SMWP_enable(struct i2c_client *client,uint8_t SMWP_enable, bool suspended);
+void himax_set_HSEN_enable(struct i2c_client *client,uint8_t HSEN_enable, bool suspended);
+void himax_usb_detect_set(struct i2c_client *client,uint8_t *cable_config);
+int himax_determin_diag_rawdata(int diag_command);
+int himax_determin_diag_storage(int diag_command);
+void himax_diag_register_set(struct i2c_client *client, uint8_t diag_command);
+void himax_flash_dump_func(struct i2c_client *client, uint8_t local_flash_command, int Flash_Size, uint8_t *flash_buffer);
+int himax_chip_self_test(struct i2c_client *client);
+void himax_burst_enable(struct i2c_client *client, uint8_t auto_add_4_byte); ////himax_83110_BURST_INC0_EN
+void himax_register_read(struct i2c_client *client, uint8_t *read_addr, int read_length, uint8_t *read_data, bool cfg_flag); ////RegisterRead83110
+void himax_flash_read(struct i2c_client *client, uint8_t *reg_byte, uint8_t *read_data); ////himax_83110_Flash_Read
+void himax_flash_write_burst(struct i2c_client *client, uint8_t * reg_byte, uint8_t * write_data); ////himax_83110_Flash_Write_Burst
+void himax_flash_write_burst_lenth(struct i2c_client *client, uint8_t *reg_byte, uint8_t *write_data, int length); ////himax_83110_Flash_Write_Burst_lenth
+void himax_register_write(struct i2c_client *client, uint8_t *write_addr, int write_length, uint8_t *write_data, bool cfg_flag); ////RegisterWrite83110
+bool himax_sense_off(struct i2c_client *client); ////himax_83110_SenseOff
+/*[Arima_7947][allen_yu] Enter safe mode when i2c fail 20180129 begin*/
+bool himax_enter_safe_mode(struct i2c_client *client);
+/*[Arima_7947][allen_yu] 20180129 end*/
+void himax_interface_on(struct i2c_client *client); ////himax_83110_Interface_on
+bool wait_wip(struct i2c_client *client, int Timing);
+void himax_sense_on(struct i2c_client *client, uint8_t FlashMode); ////himax_83110_SenseOn
+void himax_chip_erase(struct i2c_client *client); ////himax_83110_Chip_Erase
+bool himax_block_erase(struct i2c_client *client); ////himax_83110_Block_Erase
+void himax_flash_programming(struct i2c_client *client, uint8_t *FW_content, int FW_Size); ////himax_83110_Flash_Programming
+bool himax_check_chip_version(struct i2c_client *client); ////himax_83110_CheckChipVersion
+int himax_check_CRC(struct i2c_client *client, int mode); ////himax_83110_Check_CRC
+int fts_ctpm_fw_upgrade_with_sys_fs_32k(struct i2c_client *client, unsigned char *fw, int len, bool change_iref);
+int fts_ctpm_fw_upgrade_with_sys_fs_60k(struct i2c_client *client, unsigned char *fw, int len, bool change_iref);
+int fts_ctpm_fw_upgrade_with_sys_fs_64k(struct i2c_client *client, unsigned char *fw, int len, bool change_iref);
+int fts_ctpm_fw_upgrade_with_sys_fs_124k(struct i2c_client *client, unsigned char *fw, int len, bool change_iref);
+int fts_ctpm_fw_upgrade_with_sys_fs_128k(struct i2c_client *client, unsigned char *fw, int len, bool change_iref);
+void himax_touch_information(struct i2c_client *client);
+int  himax_read_i2c_status(struct i2c_client *client);
+int  himax_read_ic_trigger_type(struct i2c_client *client);
+void himax_read_FW_ver(struct i2c_client *client);
+bool himax_ic_package_check(struct i2c_client *client);
+void himax_power_on_init(struct i2c_client *client);
+bool himax_read_event_stack(struct i2c_client *client, uint8_t *buf, uint8_t length);
+void himax_get_DSRAM_data(struct i2c_client *client, uint8_t *info_data);
+bool himax_calculateChecksum(struct i2c_client *client, bool change_iref);
+bool himax_program_reload(struct i2c_client *client);//5442 Program_Reload
+uint8_t himax_read_DD_status(uint8_t *cmd_set, uint8_t *tmp_data);
+int himax_read_FW_status(uint8_t *state_addr, uint8_t *tmp_addr);
+void himax_resume_ic_action(struct i2c_client *client);
+void himax_suspend_ic_action(struct i2c_client *client);
+
+//ts_work
+int cal_data_len(int raw_cnt_rmd, int HX_MAX_PT, int raw_cnt_max);
+bool diag_check_sum(struct himax_report_data *hx_touch_data); //return checksum value
+void diag_parse_raw_data(struct himax_report_data *hx_touch_data,int mul_num, int self_num,uint8_t diag_cmd, int32_t *mutual_data, int32_t *self_data);
\ No newline at end of file
diff --git a/drivers/input/touchscreen/hxchipset83112b/himax_platform.c b/drivers/input/touchscreen/hxchipset83112b/himax_platform.c
new file mode 100644
index 0000000..08cf2ec
--- /dev/null
+++ b/drivers/input/touchscreen/hxchipset83112b/himax_platform.c
@@ -0,0 +1,828 @@
+/* Himax Android Driver Sample Code for QCT platform
+*
+* Copyright (C) 2017 Himax Corporation.
+*
+* This software is licensed under the terms of the GNU General Public
+* License version 2, as published by the Free Software Foundation, and
+* may be copied, distributed, and modified under those terms.
+*
+* This program is distributed in the hope that 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.
+*
+*/
+
+#include "himax_platform.h"
+#include "himax_common.h"
+#include "himax_ic.h"
+
+int i2c_error_count = 0;
+int irq_enable_count = 0;
+
+extern struct himax_ic_data* ic_data;
+extern struct himax_ts_data *private_ts;
+extern void himax_ts_work(struct himax_ts_data *ts);
+extern enum hrtimer_restart himax_ts_timer_func(struct hrtimer *timer);
+
+#ifdef HX_TP_PROC_DIAG
+extern uint8_t getDiagCommand(void);
+#endif
+
+extern void himax_log_touch_int_devation(int touched);
+
+
+int himax_dev_set(struct himax_ts_data *ts)
+{
+    int ret = 0;
+
+    ts->input_dev = input_allocate_device();
+    if (ts->input_dev == NULL)
+    {
+        ret = -ENOMEM;
+        E("%s: Failed to allocate input device\n", __func__);
+        return ret;
+    }
+    ts->input_dev->name = "himax-touchscreen";
+
+    return ret;
+}
+int himax_input_register_device(struct input_dev *input_dev)
+{
+    return input_register_device(input_dev);
+}
+
+#if defined(HX_PLATFOME_DEFINE_KEY)
+void himax_platform_key(void)
+{
+    I("Nothing to be done! Plz cancel it!\n");
+}
+#endif
+
+void himax_vk_parser(struct device_node *dt,
+                     struct himax_i2c_platform_data *pdata)
+{
+    u32 data = 0;
+    uint8_t cnt = 0, i = 0;
+    uint32_t coords[4] = {0};
+    struct device_node *node, *pp = NULL;
+    struct himax_virtual_key *vk;
+
+    node = of_parse_phandle(dt, "virtualkey", 0);
+    if (node == NULL)
+    {
+        I(" DT-No vk info in DT");
+        return;
+    }
+    else
+    {
+        while ((pp = of_get_next_child(node, pp)))
+            cnt++;
+        if (!cnt)
+            return;
+
+        vk = kzalloc(cnt * (sizeof *vk), GFP_KERNEL);
+        pp = NULL;
+        while ((pp = of_get_next_child(node, pp)))
+        {
+            if (of_property_read_u32(pp, "idx", &data) == 0)
+                vk[i].index = data;
+            if (of_property_read_u32_array(pp, "range", coords, 4) == 0)
+            {
+                vk[i].x_range_min = coords[0], vk[i].x_range_max = coords[1];
+                vk[i].y_range_min = coords[2], vk[i].y_range_max = coords[3];
+            }
+            else
+                I(" range faile");
+            i++;
+        }
+        pdata->virtual_key = vk;
+        for (i = 0; i < cnt; i++)
+            I(" vk[%d] idx:%d x_min:%d, y_max:%d", i,pdata->virtual_key[i].index,
+              pdata->virtual_key[i].x_range_min, pdata->virtual_key[i].y_range_max);
+    }
+}
+
+int himax_parse_dt(struct himax_ts_data *ts,
+                   struct himax_i2c_platform_data *pdata)
+{
+    int rc, coords_size = 0;
+    uint32_t coords[4] = {0};
+    struct property *prop;
+    struct device_node *dt = ts->client->dev.of_node;
+    u32 data = 0;
+	//printk("AllenYu_7-1\n");
+    prop = of_find_property(dt, "himax,panel-coords", NULL);
+    if (prop)
+    {
+        coords_size = prop->length / sizeof(u32);
+        if (coords_size != 4)
+            D(" %s:Invalid panel coords size %d", __func__, coords_size);
+    }
+	//printk("AllenYu_7-2\n");
+    if (of_property_read_u32_array(dt, "himax,panel-coords", coords, coords_size) == 0)
+    {
+        pdata->abs_x_min = coords[0], pdata->abs_x_max = coords[1];
+        pdata->abs_y_min = coords[2], pdata->abs_y_max = coords[3];
+        I(" DT-%s:panel-coords = %d, %d, %d, %d\n", __func__, pdata->abs_x_min,
+          pdata->abs_x_max, pdata->abs_y_min, pdata->abs_y_max);
+    }
+	//printk("AllenYu_7-3\n");
+    prop = of_find_property(dt, "himax,display-coords", NULL);
+    if (prop)
+    {
+        coords_size = prop->length / sizeof(u32);
+        if (coords_size != 4)
+            D(" %s:Invalid display coords size %d", __func__, coords_size);
+    }
+		//printk("AllenYu_7-4\n");
+    rc = of_property_read_u32_array(dt, "himax,display-coords", coords, coords_size);
+    if (rc && (rc != -EINVAL))
+    {
+        D(" %s:Fail to read display-coords %d\n", __func__, rc);
+        return rc;
+    }
+	//printk("AllenYu_7-5\n");
+    pdata->screenWidth  = coords[1];
+    pdata->screenHeight = coords[3];
+    I(" DT-%s:display-coords = (%d, %d)", __func__, pdata->screenWidth,
+      pdata->screenHeight);
+	//printk("AllenYu_7-6\n");
+    pdata->gpio_irq = of_get_named_gpio(dt, "himax,irq-gpio", 0);
+    if (!gpio_is_valid(pdata->gpio_irq))
+    {
+        I(" DT:gpio_irq value is not valid\n");
+    }
+	//printk("AllenYu_7-7\n");
+    pdata->gpio_reset = of_get_named_gpio(dt, "himax,rst-gpio", 0);
+    if (!gpio_is_valid(pdata->gpio_reset))
+    {
+        I(" DT:gpio_rst value is not valid\n");
+    }
+	//printk("AllenYu_7-8\n");
+    pdata->gpio_3v3_en = of_get_named_gpio(dt, "himax,3v3-gpio", 0);
+    if (!gpio_is_valid(pdata->gpio_3v3_en))
+    {
+        I(" DT:gpio_3v3_en value is not valid\n");
+    }
+    I(" DT:gpio_irq=%d, gpio_rst=%d, gpio_3v3_en=%d", pdata->gpio_irq, pdata->gpio_reset, pdata->gpio_3v3_en);
+
+    if (of_property_read_u32(dt, "report_type", &data) == 0)
+    {
+        pdata->protocol_type = data;
+        I(" DT:protocol_type=%d", pdata->protocol_type);
+    }
+	//printk("AllenYu_7-9\n");
+    himax_vk_parser(dt, pdata);
+
+    return 0;
+}
+
+int i2c_himax_read(struct i2c_client *client, uint8_t command, uint8_t *data, uint8_t length, uint8_t toRetry)
+{
+    int retry;
+    struct i2c_msg msg[] =
+    {
+        {
+            .addr = client->addr,
+            .flags = 0,
+            .len = 1,
+            .buf = &command,
+        },
+        {
+            .addr = client->addr,
+            .flags = I2C_M_RD,
+            .len = length,
+            .buf = data,
+        }
+    };
+
+    mutex_lock(&private_ts->rw_lock);
+    for (retry = 0; retry < toRetry; retry++)
+    {
+        if (i2c_transfer(client->adapter, msg, 2) == 2)
+            break;
+        msleep(20);
+    }
+    if (retry == toRetry)
+    {
+        E("%s: i2c_read_block retry over %d\n",
+          __func__, toRetry);
+        i2c_error_count = toRetry;
+		mutex_unlock(&private_ts->rw_lock);
+        return -EIO;
+    }
+    mutex_unlock(&private_ts->rw_lock);
+    return 0;
+
+}
+
+int i2c_himax_write(struct i2c_client *client, uint8_t command, uint8_t *data, uint8_t length, uint8_t toRetry)
+{
+    int retry/*, loop_i*/;
+    uint8_t buf[length + 1];
+
+    struct i2c_msg msg[] =
+    {
+        {
+            .addr = client->addr,
+            .flags = 0,
+            .len = length + 1,
+            .buf = buf,
+        }
+    };
+
+    mutex_lock(&private_ts->rw_lock);
+    buf[0] = command;
+    memcpy(buf+1, data, length);
+
+    for (retry = 0; retry < toRetry; retry++)
+    {
+        if (i2c_transfer(client->adapter, msg, 1) == 1)
+            break;
+        msleep(20);
+    }
+
+    if (retry == toRetry)
+    {
+        E("%s: i2c_write_block retry over %d\n",
+          __func__, toRetry);
+        i2c_error_count = toRetry;
+		mutex_unlock(&private_ts->rw_lock);
+        return -EIO;
+    }
+    mutex_unlock(&private_ts->rw_lock);
+    return 0;
+
+}
+
+int i2c_himax_write_command(struct i2c_client *client, uint8_t command, uint8_t toRetry)
+{
+    return i2c_himax_write(client, command, NULL, 0, toRetry);
+}
+
+int i2c_himax_master_write(struct i2c_client *client, uint8_t *data, uint8_t length, uint8_t toRetry)
+{
+    int retry/*, loop_i*/;
+    uint8_t buf[length];
+
+    struct i2c_msg msg[] =
+    {
+        {
+            .addr = client->addr,
+            .flags = 0,
+            .len = length,
+            .buf = buf,
+        }
+    };
+    mutex_lock(&private_ts->rw_lock);
+    memcpy(buf, data, length);
+
+    for (retry = 0; retry < toRetry; retry++)
+    {
+        if (i2c_transfer(client->adapter, msg, 1) == 1)
+            break;
+        msleep(20);
+    }
+
+    if (retry == toRetry)
+    {
+        E("%s: i2c_write_block retry over %d\n",
+          __func__, toRetry);
+        i2c_error_count = toRetry;
+		mutex_unlock(&private_ts->rw_lock);
+        return -EIO;
+    }
+    mutex_unlock(&private_ts->rw_lock);
+    return 0;
+}
+
+void himax_int_enable(int irqnum, int enable)
+{
+    if (enable == 1 && irq_enable_count == 0)
+    {
+        enable_irq(irqnum);
+        irq_enable_count++;
+        private_ts->irq_enabled = 1;
+    }
+    else if (enable == 0 && irq_enable_count == 1)
+    {
+        disable_irq_nosync(irqnum);
+        irq_enable_count--;
+        private_ts->irq_enabled = 0;
+    }
+    I("irq_enable_count = %d", irq_enable_count);
+}
+
+#ifdef HX_RST_PIN_FUNC
+void himax_rst_gpio_set(int pinnum, uint8_t value)
+{
+    // gpio_direction_output(pinnum, value);  // old
+    gpio_set_value(pinnum, value);
+}
+#endif
+
+uint8_t himax_int_gpio_read(int pinnum)
+{
+    return gpio_get_value(pinnum);
+}
+
+#if defined(CONFIG_HMX_DB)
+static int himax_regulator_configure(struct i2c_client *client,struct himax_i2c_platform_data *pdata)
+{
+    int retval;
+    pdata->vcc_dig = regulator_get(&client->dev,
+                                   "vdd");
+    if (IS_ERR(pdata->vcc_dig))
+    {
+        E("%s: Failed to get regulator vdd\n",
+          __func__);
+        retval = PTR_ERR(pdata->vcc_dig);
+        return retval;
+    }
+    pdata->vcc_ana = regulator_get(&client->dev,
+                                   "avdd");
+    if (IS_ERR(pdata->vcc_ana))
+    {
+        E("%s: Failed to get regulator avdd\n",
+          __func__);
+        retval = PTR_ERR(pdata->vcc_ana);
+        regulator_put(pdata->vcc_ana);
+        return retval;
+    }
+
+    return 0;
+};
+
+static int himax_power_on(struct himax_i2c_platform_data *pdata, bool on)
+{
+    int retval;
+
+    if (on)
+    {
+        retval = regulator_enable(pdata->vcc_dig);
+        if (retval)
+        {
+            E("%s: Failed to enable regulator vdd\n",
+              __func__);
+            return retval;
+        }
+        msleep(100);
+        retval = regulator_enable(pdata->vcc_ana);
+        if (retval)
+        {
+            E("%s: Failed to enable regulator avdd\n",
+              __func__);
+            regulator_disable(pdata->vcc_dig);
+            return retval;
+        }
+    }
+    else
+    {
+        regulator_disable(pdata->vcc_dig);
+        regulator_disable(pdata->vcc_ana);
+    }
+
+    return 0;
+}
+
+int himax_gpio_power_config(struct i2c_client *client,struct himax_i2c_platform_data *pdata)
+{
+    int error;
+
+    error = himax_regulator_configure(client, pdata);
+    if (error)
+    {
+        E("Failed to intialize hardware\n");
+        goto err_regulator_not_on;
+    }
+
+#ifdef HX_RST_PIN_FUNC
+    if (gpio_is_valid(pdata->gpio_reset))
+    {
+        /* configure touchscreen reset out gpio */
+        error = gpio_request(pdata->gpio_reset, "hmx_reset_gpio");
+        if (error)
+        {
+            E("unable to request gpio [%d]\n",
+              pdata->gpio_reset);
+            goto err_regulator_on;
+        }
+
+        error = gpio_direction_output(pdata->gpio_reset, 0);
+        if (error)
+        {
+            E("unable to set direction for gpio [%d]\n",
+              pdata->gpio_reset);
+            goto err_gpio_reset_req;
+        }
+    }
+#endif
+
+    error = himax_power_on(pdata, true);
+    if (error)
+    {
+        E("Failed to power on hardware\n");
+        goto err_gpio_reset_req;
+    }
+
+    if (gpio_is_valid(pdata->gpio_irq))
+    {
+        /* configure touchscreen irq gpio */
+        error = gpio_request(pdata->gpio_irq, "hmx_gpio_irq");
+        if (error)
+        {
+            E("unable to request gpio [%d]\n",
+              pdata->gpio_irq);
+            goto err_power_on;
+        }
+        error = gpio_direction_input(pdata->gpio_irq);
+        if (error)
+        {
+            E("unable to set direction for gpio [%d]\n",
+              pdata->gpio_irq);
+            goto err_gpio_irq_req;
+        }
+        client->irq = gpio_to_irq(pdata->gpio_irq);
+    }
+    else
+    {
+        E("irq gpio not provided\n");
+        goto err_power_on;
+    }
+
+    msleep(20);
+#ifdef HX_RST_PIN_FUNC
+    if (gpio_is_valid(pdata->gpio_reset))
+    {
+        error = gpio_direction_output(pdata->gpio_reset, 1);
+        if (error)
+        {
+            E("unable to set direction for gpio [%d]\n",
+              pdata->gpio_reset);
+            goto err_gpio_irq_req;
+        }
+    }
+#endif
+    return 0;
+
+err_gpio_irq_req:
+    if (gpio_is_valid(pdata->gpio_irq))
+        gpio_free(pdata->gpio_irq);
+err_power_on:
+    himax_power_on(pdata, false);
+err_gpio_reset_req:
+#ifdef HX_RST_PIN_FUNC
+    if (gpio_is_valid(pdata->gpio_reset))
+        gpio_free(pdata->gpio_reset);
+err_regulator_on:
+#endif
+err_regulator_not_on:
+
+    return error;
+}
+
+#else
+int himax_gpio_power_config(struct i2c_client *client,struct himax_i2c_platform_data *pdata)
+{
+    int error=0;
+
+#ifdef HX_RST_PIN_FUNC
+    if (pdata->gpio_reset >= 0)
+    {
+        error = gpio_request(pdata->gpio_reset, "himax-reset");
+        if (error < 0)
+        {
+            E("%s: request reset pin failed\n", __func__);
+            return error;
+        }
+        error = gpio_direction_output(pdata->gpio_reset, 0);
+        if (error)
+        {
+            E("unable to set direction for gpio [%d]\n",
+              pdata->gpio_reset);
+            return error;
+        }
+    }
+#endif
+    if (pdata->gpio_3v3_en >= 0)
+    {
+        error = gpio_request(pdata->gpio_3v3_en, "himax-3v3_en");
+        if (error < 0)
+        {
+            E("%s: request 3v3_en pin failed\n", __func__);
+            return error;
+        }
+        gpio_direction_output(pdata->gpio_3v3_en, 1);
+        I("3v3_en pin =%d\n", gpio_get_value(pdata->gpio_3v3_en));
+    }
+    if (gpio_is_valid(pdata->gpio_irq))
+    {
+        /* configure touchscreen irq gpio */
+        error = gpio_request(pdata->gpio_irq, "himax_gpio_irq");
+        if (error)
+        {
+            E("unable to request gpio [%d]\n",pdata->gpio_irq);
+            return error;
+        }
+        error = gpio_direction_input(pdata->gpio_irq);
+        if (error)
+        {
+            E("unable to set direction for gpio [%d]\n",pdata->gpio_irq);
+            return error;
+        }
+        client->irq = gpio_to_irq(pdata->gpio_irq);
+    }
+    else
+    {
+        E("irq gpio not provided\n");
+        return error;
+    }
+    msleep(20);
+
+#ifdef HX_RST_PIN_FUNC
+    if (pdata->gpio_reset >= 0)
+    {
+        error = gpio_direction_output(pdata->gpio_reset, 1);
+        if (error)
+        {
+            E("unable to set direction for gpio [%d]\n",
+              pdata->gpio_reset);
+            return error;
+        }
+    }
+/*[Arima_7947][allen_yu] Enter safe mode when i2c fail 20180129 begin*/
+#if 0
+    msleep(20);
+#endif
+/*[Arima_7947][allen_yu] 20180129 end*/
+#endif
+
+    return error;
+}
+
+#endif
+
+static void himax_ts_isr_func(struct himax_ts_data *ts)
+{
+    himax_ts_work(ts);
+}
+
+irqreturn_t himax_ts_thread(int irq, void *ptr)
+{
+    struct himax_ts_data *ts = ptr;
+
+    if (ts->debug_log_level & BIT(2))
+    {
+        himax_log_touch_int_devation(HX_FINGER_ON);
+    }
+
+    himax_ts_isr_func((struct himax_ts_data *)ptr);
+
+    if(ts->debug_log_level & BIT(2))
+    {
+        himax_log_touch_int_devation(HX_FINGER_LEAVE);
+    }
+    return IRQ_HANDLED;
+}
+
+static void himax_ts_work_func(struct work_struct *work)
+{
+    struct himax_ts_data *ts = container_of(work, struct himax_ts_data, work);
+    himax_ts_work(ts);
+}
+
+int himax_int_register_trigger(struct i2c_client *client)
+{
+    int ret = 0;
+    struct himax_ts_data *ts = i2c_get_clientdata(client);
+
+    if(ic_data->HX_INT_IS_EDGE)
+    {
+        I("%s edge triiger falling\n ",__func__);
+        ret = request_threaded_irq(client->irq, NULL, himax_ts_thread,IRQF_TRIGGER_FALLING | IRQF_ONESHOT, client->name, ts);
+    }
+    else
+    {
+        I("%s level trigger low\n ",__func__);
+        ret = request_threaded_irq(client->irq, NULL, himax_ts_thread,IRQF_TRIGGER_LOW | IRQF_ONESHOT, client->name, ts);
+    }
+    return ret;
+}
+
+int himax_int_en_set(struct i2c_client *client)
+{
+    int ret = NO_ERR;
+    ret = himax_int_register_trigger(client);
+    return ret;
+}
+
+int himax_ts_register_interrupt(struct i2c_client *client)
+{
+    struct himax_ts_data *ts = i2c_get_clientdata(client);
+    int ret = 0;
+
+    ts->irq_enabled = 0;
+    //Work functon
+    if (client->irq)  /*INT mode*/
+    {
+        ts->use_irq = 1;
+        ret = himax_int_register_trigger(client);
+        if (ret == 0)
+        {
+            ts->irq_enabled = 1;
+            irq_enable_count = 1;
+            I("%s: irq enabled at qpio: %d\n", __func__, client->irq);
+#ifdef HX_SMART_WAKEUP
+            irq_set_irq_wake(client->irq, 1);
+#endif
+        }
+        else
+        {
+            ts->use_irq = 0;
+            E("%s: request_irq failed\n", __func__);
+        }
+    }
+    else
+    {
+        I("%s: client->irq is empty, use polling mode.\n", __func__);
+    }
+
+    if (!ts->use_irq)  /*if use polling mode need to disable HX_ESD_RECOVERY function*/
+    {
+        ts->himax_wq = create_singlethread_workqueue("himax_touch");
+
+        INIT_WORK(&ts->work, himax_ts_work_func);
+
+        hrtimer_init(&ts->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
+        ts->timer.function = himax_ts_timer_func;
+        hrtimer_start(&ts->timer, ktime_set(1, 0), HRTIMER_MODE_REL);
+        I("%s: polling mode enabled\n", __func__);
+    }
+    return ret;
+}
+
+static int himax_common_suspend(struct device *dev)
+{
+    struct himax_ts_data *ts = dev_get_drvdata(dev);
+
+    I("%s: enter \n", __func__);
+
+    himax_chip_common_suspend(ts);
+    return 0;
+}
+
+static int himax_common_resume(struct device *dev)
+{
+    struct himax_ts_data *ts = dev_get_drvdata(dev);
+
+    I("%s: enter \n", __func__);
+
+    himax_chip_common_resume(ts);
+    return 0;
+}
+
+#if defined(CONFIG_FB)
+int fb_notifier_callback(struct notifier_block *self,
+                         unsigned long event, void *data)
+{
+    struct fb_event *evdata = data;
+    int *blank;
+    struct himax_ts_data *ts;
+/*[Arima_7947][allen_yu] Add mutex in callback function 20180131 begin*/
+    if (event != FB_EVENT_BLANK)
+    return 0;
+
+    ts=container_of(self, struct himax_ts_data, fb_notif);
+/*[Arima_7947][allen_yu] Modify Mutex initialization in callback function 20180305 begin*/
+//ParisKuong modified Mutex initialization +++
+#if 0
+    mutex_init(&ts->ops_lock);
+#endif
+//ParisKuong modified Mutex initialization ---
+/*[Arima_7947][allen_yu] 20180305 end*/
+    mutex_lock(&ts->ops_lock);
+
+/*[Arima_7947][allen_yu] 20180131 end*/
+/*[Arima_7947][allen_yu] Add error handling in callback function 20180123 begin*/
+    if(evdata == NULL)
+    {
+        E("%s(%d) evdata is NULL\n",__func__, __LINE__);
+    }
+    //I(" %s(%d)\n", __func__, __LINE__);
+/*[Arima_7947][allen_yu] 20180123 end*/
+    if (evdata && evdata->data && event == FB_EVENT_BLANK && ts && ts->client)
+    {
+/*[Arima_7947][allen_yu] Add error handling in callback function 20180123 begin*/
+        //I(" %s(%d)\n", __func__, __LINE__);
+/*[Arima_7947][allen_yu] 20180123 end*/
+        blank = evdata->data;
+/*[Arima_7947][allen_yu] Add error handling in callback function 20180123 begin*/
+        if(blank == NULL)
+        {
+            E("%s(%d) blank is NULL\n",__func__, __LINE__);
+        }
+/*[Arima_7947][allen_yu] 20180123 end*/
+/*[Arima_7947][allen_yu] fix the Ambient display issue 20180227 begin*/
+//I("blank = %d %s(%d)\n", *blank, __func__, __LINE__);
+        switch (*blank)
+        {
+        case FB_BLANK_UNBLANK:
+        case FB_BLANK_NORMAL:
+            himax_common_resume(&ts->client->dev);
+        break;
+
+        case FB_BLANK_POWERDOWN:
+        case FB_BLANK_HSYNC_SUSPEND:
+        case FB_BLANK_VSYNC_SUSPEND:
+#if 0
+        case FB_BLANK_NORMAL:
+#endif
+            himax_common_suspend(&ts->client->dev);
+        break;
+        }
+/*[Arima_7947][allen_yu] 20180227 end*/
+    }
+/*[Arima_7947][allen_yu] Add mutex in callback function 20180131 begin*/
+    mutex_unlock(&ts->ops_lock);
+/*[Arima_7947][allen_yu] 20180131 end*/
+    return 0;
+}
+#endif
+
+static const struct i2c_device_id himax_common_ts_id[] =
+{
+    {HIMAX_common_NAME, 0 },
+    {}
+};
+
+static const struct dev_pm_ops himax_common_pm_ops =
+{
+#if (!defined(CONFIG_FB))
+    .suspend = himax_common_suspend,
+    .resume  = himax_common_resume,
+#endif
+};
+
+//#ifdef CONFIG_OF
+#if 1
+static struct of_device_id himax_match_table[] =
+{
+    {.compatible = "himax,hxcommon", },
+    {},
+};
+#else
+#define himax_match_table NULL
+#endif
+
+static struct i2c_driver himax_common_driver = {
+    //.id_table	= himax_common_ts_id,
+    .probe		= himax_chip_common_probe,
+    .remove		= himax_chip_common_remove,
+    .driver		= {
+        .name = HIMAX_common_NAME,
+        .owner = THIS_MODULE,
+        .of_match_table = himax_match_table,
+#ifdef CONFIG_PM
+        .pm				= &himax_common_pm_ops,
+#endif
+    },
+	.id_table	= himax_common_ts_id,
+};
+
+//static void __init himax_common_init_async(void *unused, async_cookie_t cookie)
+//{
+//    I("%s:Enter \n", __func__);
+//    i2c_add_driver(&himax_common_driver);
+//}
+
+static int __init himax_common_init(void)
+{
+     int ret =  -1;
+	I("Enter Himax common touch panel driver init 83112-B\n");
+
+
+    ret = i2c_add_driver(&himax_common_driver);
+	printk("Himax ret : %d \n",ret);
+
+	if ( ret != 0 ) {
+		printk("Himax ret : %d \n",ret);
+        I("Focaltech touch screen driver init failed!");
+    }
+	//async_schedule(himax_common_init_async, NULL);
+
+    I("Exit Himax common touch panel driver init 83112-B\n");
+	//return i2c_add_driver(&himax_common_driver);
+    return ret;
+}
+
+static void __exit himax_common_exit(void)
+{
+    i2c_del_driver(&himax_common_driver);
+}
+
+module_init(himax_common_init);
+module_exit(himax_common_exit);
+
+MODULE_DESCRIPTION("Himax_common driver");
+MODULE_LICENSE("GPL");
diff --git a/drivers/input/touchscreen/hxchipset83112b/himax_platform.h b/drivers/input/touchscreen/hxchipset83112b/himax_platform.h
new file mode 100644
index 0000000..70def61
--- /dev/null
+++ b/drivers/input/touchscreen/hxchipset83112b/himax_platform.h
@@ -0,0 +1,130 @@
+/* Himax Android Driver Sample Code for QCT platform
+*
+* Copyright (C) 2017 Himax Corporation.
+*
+* This software is licensed under the terms of the GNU General Public
+* License version 2, as published by the Free Software Foundation, and
+* may be copied, distributed, and modified under those terms.
+*
+* This program is distributed in the hope that 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.
+*
+*/
+
+#ifndef HIMAX_PLATFORM_H
+#define HIMAX_PLATFORM_H
+
+#include <linux/delay.h>
+#include <linux/fs.h>
+#include <linux/gpio.h>
+#include <linux/types.h>
+#include <linux/i2c.h>
+#include <linux/interrupt.h>
+#if defined(CONFIG_HMX_DB)
+#include <linux/regulator/consumer.h>
+#endif
+
+#define QCT
+
+#if defined(CONFIG_TOUCHSCREEN_HIMAX_DEBUG)
+#define D(x...) printk("[HXTP] " x)
+#define I(x...) printk("[HXTP] " x)
+#define W(x...) printk("[HXTP][WARNING] " x)
+#define E(x...) printk("[HXTP][ERROR] " x)
+#define DIF(x...) \
+	if (debug_flag) \
+	printk("[HXTP][DEBUG] " x) \
+} while(0)
+#else
+#define D(x...)
+#define I(x...)
+#define W(x...)
+#define E(x...)
+#define DIF(x...)
+#endif
+
+#if defined(CONFIG_HMX_DB)
+/* Analog voltage @2.7 V */
+#define HX_VTG_MIN_UV			2700000
+#define HX_VTG_MAX_UV			3300000
+#define HX_ACTIVE_LOAD_UA		15000
+#define HX_LPM_LOAD_UA 			10
+/* Digital voltage @1.8 V */
+#define HX_VTG_DIG_MIN_UV		1800000
+#define HX_VTG_DIG_MAX_UV		1800000
+#define HX_ACTIVE_LOAD_DIG_UA	10000
+#define HX_LPM_LOAD_DIG_UA 		10
+
+#define HX_I2C_VTG_MIN_UV		1800000
+#define HX_I2C_VTG_MAX_UV		1800000
+#define HX_I2C_LOAD_UA 			10000
+#define HX_I2C_LPM_LOAD_UA 		10
+#endif
+
+#define HIMAX_common_NAME 				"himax_tp"
+#define HIMAX_I2C_ADDR					0x48
+#define INPUT_DEV_NAME					"himax-touchscreen"
+
+struct himax_i2c_platform_data
+{
+    int abs_x_min;
+    int abs_x_max;
+    int abs_x_fuzz;
+    int abs_y_min;
+    int abs_y_max;
+    int abs_y_fuzz;
+    int abs_pressure_min;
+    int abs_pressure_max;
+    int abs_pressure_fuzz;
+    int abs_width_min;
+    int abs_width_max;
+    int screenWidth;
+    int screenHeight;
+    uint8_t fw_version;
+    uint8_t tw_id;
+    uint8_t powerOff3V3;
+    uint8_t cable_config[2];
+    uint8_t protocol_type;
+    int gpio_irq;
+    int gpio_reset;
+    int gpio_3v3_en;
+    int (*power)(int on);
+    void (*reset)(void);
+    struct himax_virtual_key *virtual_key;
+    struct kobject *vk_obj;
+    struct kobj_attribute *vk2Use;
+
+    int hx_config_size;
+#if defined(CONFIG_HMX_DB)
+    bool	i2c_pull_up;
+    bool	digital_pwr_regulator;
+    int reset_gpio;
+    u32 reset_gpio_flags;
+    int irq_gpio;
+    u32 irq_gpio_flags;
+
+    struct regulator *vcc_ana; //For Dragon Board
+    struct regulator *vcc_dig; //For Dragon Board
+    struct regulator *vcc_i2c; //For Dragon Board
+#endif
+};
+
+
+extern int irq_enable_count;
+extern int i2c_himax_read(struct i2c_client *client, uint8_t command, uint8_t *data, uint8_t length, uint8_t toRetry);
+extern int i2c_himax_write(struct i2c_client *client, uint8_t command, uint8_t *data, uint8_t length, uint8_t toRetry);
+extern int i2c_himax_write_command(struct i2c_client *client, uint8_t command, uint8_t toRetry);
+extern int i2c_himax_master_write(struct i2c_client *client, uint8_t *data, uint8_t length, uint8_t toRetry);
+extern void himax_int_enable(int irqnum, int enable);
+extern int himax_ts_register_interrupt(struct i2c_client *client);
+extern uint8_t himax_int_gpio_read(int pinnum);
+
+extern int himax_gpio_power_config(struct i2c_client *client,struct himax_i2c_platform_data *pdata);
+
+#if defined(CONFIG_FB)
+extern int fb_notifier_callback(struct notifier_block *self, unsigned long event, void *data);
+#endif
+
+#endif