Samsung SPH-L720 (Sprint) source updates

file:10bd5726a19e056a4a7b99d645614b447aeb1662 -> file:c511d1bd5c6b1c50f2a88cb046e1a93d6680a35f
--- a/Makefile
+++ b/Makefile
@@ -192,8 +192,6 @@ SUBARCH := $(shell uname -m | sed -e s/i
# Default value for CROSS_COMPILE is not to prefix executables
# Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile
export KBUILD_BUILDHOST := $(SUBARCH)
-#ARCH ?= $(SUBARCH)
-#CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%)
ARCH ?= arm
CROSS_COMPILE ?= arm-eabi-
file:3086c83723e48bd214aab7a906aabdca66807878 -> file:dcb27503de1d14629b4d6b8d37c5e1b6879263cb
--- a/arch/arm/configs/jactive_att_defconfig
+++ b/arch/arm/configs/jactive_att_defconfig
@@ -1,8 +1,11 @@
CONFIG_MACH_JACTIVE_ATT=y
+CONFIG_MACH_JACTIVE=y
CONFIG_EXTRA_FIRMWARE="audience-es325-fw-jactive_att.bin"
CONFIG_EXTRA_FIRMWARE_DIR="firmware"
CONFIG_AUTHENTEC_VPNCLIENT_INTERCEPTOR=m
CONFIG_FB_MSM_MIPI_RENESAS_TFT_VIDEO_FULL_HD_PT_PANEL=y
+CONFIG_SUPPORT_SECOND_POWER=y
+CONFIG_ESD_ERR_FG_RECOVERY=y
CONFIG_SUPPORT_DISPLAY_OCTA_TFT=y
CONFIG_S5K3H5XA=y
CONFIG_S5K6B2YX=y
file:7a6179599e62ce7cd8395bf2f176ad0e74a655d3 -> file:8e2f1de545d0916e400e2d50b0096005ad172afd
--- a/arch/arm/configs/jactive_eur_defconfig
+++ b/arch/arm/configs/jactive_eur_defconfig
@@ -4,6 +4,8 @@ CONFIG_EXTRA_FIRMWARE_DIR="firmware"
CONFIG_FB_MSM_MIPI_RENESAS_TFT_VIDEO_FULL_HD_PT_PANEL=y
CONFIG_SUPPORT_DISPLAY_OCTA_TFT=y
+CONFIG_SUPPORT_SECOND_POWER=y
+CONFIG_ESD_ERR_FG_RECOVERY=y
# CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_VIDEO_FULL_HD_PT_PANEL is not set
# CONFIG_LCD_VDD3_BY_PMGPIO is not set
file:b725fd59528ad52c816bc98abcb364ab30397565 -> file:99516de8624467452b9513a8fbba6c257a341c8b
--- a/arch/arm/configs/jfeng_factory_defconfig
+++ b/arch/arm/configs/jfeng_factory_defconfig
@@ -29,6 +29,7 @@ CONFIG_FAULT_INJECTION_STACKTRACE_FILTER
CONFIG_DEBUG_PAGEALLOC=y
CONFIG_TOUCHSCREEN_FACTORY_PLATFORM=y
CONFIG_SAMSUNG_BATTERY_FACTORY=y
+CONFIG_PVS_IDDQ_FACTORY=y
# Overriding the rooting prevention feature as disable on ENG build
# CONFIG_SEC_RESTRICT_ROOTING is not set
file:2c433d393ddc09d0472dd9680800a4ff7055f8af -> file:207e1bd0d64618c79e823a1d233e1e43cadad1ce
--- a/arch/arm/mach-msm/Kconfig
+++ b/arch/arm/mach-msm/Kconfig
@@ -488,6 +488,12 @@ config MSM_REMOTE_SPINLOCK_SFPB
config MSM_ADM3
bool
+config MACH_JACTIVE
+ default n
+ bool "APQ8064 Samsung JACTIVE"
+ help
+ Support for the Samsung J ACTIVE device.
+
menu "MSM Board Selection"
config MACH_HALIBUT
@@ -1013,6 +1019,7 @@ config MACH_JACTIVE_EUR
config MACH_JACTIVE_ATT
depends on ARCH_APQ8064
default n
+ select MACH_JACTIVE
bool "APQ8064 Samsung JACTIVE_ATT"
help
Support for the Samsung J ACTIVE ATT device.
file:44e48d89efc3362465b41f0c2baeaa42280adb6e -> file:6f0d62a92418a7542ee0cda7ddab5a7800f27239
--- a/arch/arm/mach-msm/acpuclock-krait.c
+++ b/arch/arm/mach-msm/acpuclock-krait.c
@@ -949,10 +949,10 @@ static void __init cpufreq_table_init(vo
for (i = 0; drv.acpu_freq_tbl[i].speed.khz != 0
&& freq_cnt < ARRAY_SIZE(*freq_table); i++) {
if (drv.acpu_freq_tbl[i].use_for_scaling) {
-#if 0
+#ifdef CONFIG_SEC_FACTORY
// if factory_condition, set the core freq limit.
//QMCK
- if (console_set_on_cmdline && drv.acpu_freq_tbl[i].speed.khz > 1242000) {
+ if (console_set_on_cmdline && drv.acpu_freq_tbl[i].speed.khz > 1000000) {
if(console_batt_stat == 1) {
continue;
}
file:ee4f774ac0cc24d6942ae9b6c7de8faff925effc -> file:88cbfb99fa673efa01e3277b52a388d2a15aa59e
--- a/arch/arm/mach-msm/board-8064-display.c
+++ b/arch/arm/mach-msm/board-8064-display.c
@@ -423,7 +423,7 @@ static int gpio27; /* LED_DRIVER */
static int gpio33;
#endif
static struct regulator *reg_L15;
-#if defined(CONFIG_MACH_JACTIVE_EUR)
+#if defined(CONFIG_MACH_JACTIVE_EUR) || defined(CONFIG_MACH_JACTIVE)
static struct regulator *reg_LVS1;
#endif
#else
@@ -462,6 +462,44 @@ static struct pm8xxx_mpp_config_data MLC
.control = PM8XXX_MPP_DOUT_CTRL_LOW,
};
+static int mipi_dsi_power(int enable)
+{
+ int rc = 0;
+
+ if (enable) {
+
+ pr_info("[lcd] DSI ON\n");
+ rc = regulator_set_optimum_mode(reg_l2, 100000);
+ if (rc < 0) {
+ pr_err("set_optimum_mode L2 failed, rc=%d\n", rc);
+ return -EINVAL;
+ }
+
+ rc = regulator_enable(reg_l2);
+ if (rc) {
+ pr_err("enable L2 failed, rc=%d\n", rc);
+ return -ENODEV;
+ }
+ } else {
+
+ pr_info("[lcd] DSI OFF\n");
+ rc = regulator_set_optimum_mode(reg_l2, 100);
+ if (rc < 0) {
+ pr_err("set_optimum_mode L2 failed, rc=%d\n", rc);
+ return -EINVAL;
+ }
+
+ rc = regulator_disable(reg_l2);
+ if (rc) {
+ pr_err("disable reg_L2 failed, rc=%d\n", rc);
+ return -ENODEV;
+ }
+ }
+
+ return rc;
+
+}
+
#if defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
static int mipi_dsi_power_tft_request(void)
{
@@ -570,10 +608,11 @@ static int mipi_dsi_power_tft_request(vo
return rc;
}
-static int mipi_dsi_power_tft(int enable)
+static int mipi_panel_power_tft(int enable)
{
int rc = 0;
+ pr_info("%s %d", __func__, enable);
if (enable) {
#if defined(CONFIG_MACH_JACTIVE_EUR)
rc = regulator_set_optimum_mode(reg_LVS1, 100000); /*IOVDD */
@@ -586,6 +625,19 @@ static int mipi_dsi_power_tft(int enable
pr_err("enable LVS1 failed, rc=%d\n", rc);
return -ENODEV;
}
+#elif defined(CONFIG_MACH_JACTIVE)
+ if (system_rev >= 11) {
+ rc = regulator_set_optimum_mode(reg_LVS1, 100000); /*IOVDD */
+ if (rc < 0) {
+ pr_err("set_optimum_mode LVS1 failed, rc=%d\n", rc);
+ return -EINVAL;
+ }
+ rc = regulator_enable(reg_LVS1);
+ if (rc) {
+ pr_err("enable LVS1 failed, rc=%d\n", rc);
+ return -ENODEV;
+ }
+ }
#endif
rc = regulator_set_optimum_mode(reg_L15, 100000); /*IOVDD */
@@ -599,20 +651,6 @@ static int mipi_dsi_power_tft(int enable
return -ENODEV;
}
- rc = regulator_set_optimum_mode(reg_l2, 100000);
- if (rc < 0) {
- pr_err("set_optimum_mode L2 failed, rc=%d\n", rc);
- return -EINVAL;
- }
-
- rc = regulator_enable(reg_l2);
- if (rc) {
- pr_err("enable L2 failed, rc=%d\n", rc);
- return -ENODEV;
- }
-
-
- msleep(20);
#if defined(CONFIG_MACH_JACTIVE_ATT)
if(system_rev < 10)
gpio_direction_output(gpio33, 1);
@@ -621,7 +659,6 @@ static int mipi_dsi_power_tft(int enable
#else
gpio_direction_output(LCD_22V_EN, 1);
#endif
- msleep(20);
/*active_reset_ldi(gpio43);*/
if (system_rev == 0)
@@ -642,20 +679,6 @@ static int mipi_dsi_power_tft(int enable
PM8921_MPP_PM_TO_SYS(MLCD_RST_MPP2),
&MLCD_RESET_LOW_CONFIG);
- msleep(200);
-
- rc = regulator_set_optimum_mode(reg_l2, 100);
- if (rc < 0) {
- pr_err("set_optimum_mode L2 failed, rc=%d\n", rc);
- return -EINVAL;
- }
-
- rc = regulator_disable(reg_l2);
- if (rc) {
- pr_err("disable reg_L2 failed, rc=%d\n", rc);
- return -ENODEV;
- }
-
rc = regulator_set_optimum_mode(reg_L15, 100);
if (rc < 0) {
pr_err("set_optimum_mode L15 failed, rc=%d\n", rc);
@@ -668,8 +691,6 @@ static int mipi_dsi_power_tft(int enable
return -ENODEV;
}
- msleep(20);
-
gpio_direction_output(gpio27, 0);/*LED_DRIVER(gpio27);*/
#if defined(CONFIG_MACH_JACTIVE_ATT)
if(system_rev < 10)
@@ -691,8 +712,21 @@ static int mipi_dsi_power_tft(int enable
pr_err("disable reg_LVS1 failed, rc=%d\n", rc);
return -ENODEV;
}
- msleep(20);
+#elif defined(CONFIG_MACH_JACTIVE)
+ if (system_rev >= 11) {
+ rc = regulator_set_optimum_mode(reg_LVS1, 100);
+ if (rc < 0) {
+ pr_err("set_optimum_mode LVS1 failed, rc=%d\n", rc);
+ return -EINVAL;
+ }
+ rc = regulator_disable(reg_LVS1);
+ if (rc) {
+ pr_err("disable reg_LVS1 failed, rc=%d\n", rc);
+ return -ENODEV;
+ }
+ }
#endif
+ msleep(20);
}
return rc;
@@ -724,44 +758,6 @@ static int mipi_dsi_power_octa_request(v
return rc;
}
-static int mipi_dsi_power_oled(int enable)
-{
- int rc = 0;
-
- if (enable) {
-
- pr_info("[lcd] DSI ON\n");
- rc = regulator_set_optimum_mode(reg_l2, 100000);
- if (rc < 0) {
- pr_err("set_optimum_mode L2 failed, rc=%d\n", rc);
- return -EINVAL;
- }
-
- rc = regulator_enable(reg_l2);
- if (rc) {
- pr_err("enable L2 failed, rc=%d\n", rc);
- return -ENODEV;
- }
- } else {
-
- pr_info("[lcd] DSI OFF\n");
- rc = regulator_set_optimum_mode(reg_l2, 100);
- if (rc < 0) {
- pr_err("set_optimum_mode L2 failed, rc=%d\n", rc);
- return -EINVAL;
- }
-
- rc = regulator_disable(reg_l2);
- if (rc) {
- pr_err("disable reg_L2 failed, rc=%d\n", rc);
- return -ENODEV;
- }
- }
-
- return rc;
-
-}
-
static int mipi_panel_power_oled(int enable)
{
int rc = 0;
@@ -914,6 +910,15 @@ static int mipi_oled_power_set(void)
PTR_ERR(reg_LVS1));
return -ENODEV;
}
+#elif defined(CONFIG_MACH_JACTIVE)
+ if (system_rev >=11) {
+ reg_LVS1 = regulator_get(NULL, "8921_lvs1");
+ if (IS_ERR_OR_NULL(reg_LVS1)) {
+ pr_err("could not get 8917_LVS1, rc = %ld\n",
+ PTR_ERR(reg_LVS1));
+ return -ENODEV;
+ }
+ }
#endif
#endif
@@ -948,41 +953,35 @@ static int mipi_power_samsung_common(voi
return 0;
}
-static int mipi_dsi_power_samsung_oled(int on)
+static int mipi_dsi_power_samsung(int on)
{
- if (on) {
-#if defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
- mipi_dsi_power_tft(1);
-#else
- mipi_dsi_power_oled(1);
-#endif
- } else {
-#if defined(CONFIG_SUPPORT_DISPLAY_OCTA_TFT)
- mipi_dsi_power_tft(0);
-#else
- mipi_dsi_power_oled(0);
-#endif
- }
+ if (on)
+ mipi_dsi_power(1);
+ else
+ mipi_dsi_power(0);
return 0;
}
#if defined(CONFIG_SUPPORT_SECOND_POWER)
-static int mipi_panel_power_samsung_oled(int on)
+static int mipi_panel_power_samsung(int on)
{
int rc;
rc = 0;
#ifdef CONFIG_SUPPORT_DISPLAY_OCTA_TFT
- return rc;
+ if (on)
+ rc = mipi_panel_power_tft(1);
+ else
+ rc = mipi_panel_power_tft(0);
#else
- if (on) {
- mipi_panel_power_oled(1);
- } else {
- mipi_panel_power_oled(0);
- }
- return rc;
+ if (on)
+ rc = mipi_panel_power_oled(1);
+ else
+ rc = mipi_panel_power_oled(0);
+
#endif
+ return rc;
}
#endif
@@ -990,9 +989,9 @@ static char mipi_dsi_splash_is_enabled(v
static struct mipi_dsi_platform_data mipi_dsi_pdata = {
.power_common = mipi_power_samsung_common,
- .dsi_power_save = mipi_dsi_power_samsung_oled,
+ .dsi_power_save = mipi_dsi_power_samsung,
#if defined(CONFIG_SUPPORT_SECOND_POWER)
- .panel_power_save = mipi_panel_power_samsung_oled,
+ .panel_power_save = mipi_panel_power_samsung,
#endif
.splash_is_enabled = mipi_dsi_splash_is_enabled,
.active_reset = active_reset,
file:940291c86124de69a0079d0b88cd82a0f8d4cd57 -> file:7b51b965b9b763e8abb357ddfe07e737eed367f9
--- a/arch/arm/mach-msm/board-8064-storage.c
+++ b/arch/arm/mach-msm/board-8064-storage.c
@@ -634,7 +634,7 @@ void __init apq8064_init_mmc(void)
#if defined(CONFIG_MACH_JF_ATT) || defined(CONFIG_MACH_JF_TMO) || defined(CONFIG_MACH_JF_EUR) || \
defined(CONFIG_MACH_JF_DCM)
if (system_rev >= BOARD_REV09 && apq8064_sdc2_pdata) {
-#elif defined(CONFIG_MACH_JACTIVE_EUR)
+#elif defined(CONFIG_MACH_JACTIVE_EUR) || defined(CONFIG_MACH_JACTIVE_ATT)
if (system_rev < BOARD_REV05 && apq8064_sdc2_pdata) {
#else /* VZW/SPT/USCC */
if (system_rev >= BOARD_REV10 && apq8064_sdc2_pdata) {
@@ -644,7 +644,7 @@ void __init apq8064_init_mmc(void)
}
#if defined(CONFIG_MACH_JF_ATT) || defined(CONFIG_MACH_JF_TMO) || defined(CONFIG_MACH_JF_EUR) || \
- defined(CONFIG_MACH_JACTIVE_ATT)
+ defined(CONFIG_MACH_JACTIVE_EUR) || defined(CONFIG_MACH_JACTIVE_ATT)
if (system_rev < BOARD_REV08 && apq8064_sdc4_pdata)
#else /* VZW/SPT/USCC */
if (system_rev < BOARD_REV09 && apq8064_sdc4_pdata)
file:8b3be2a7fa3745cf9666a1fe11e60e22ad412d42 -> file:5e655069f8f76e81772d1e00a8ac6538f14f391e
--- a/arch/arm/mach-msm/board-jactive_att-gpiomux.c
+++ b/arch/arm/mach-msm/board-jactive_att-gpiomux.c
@@ -1525,9 +1525,8 @@ void __init apq8064_init_gpiomux(void)
msm_gpiomux_install(mpq8064_ir_configs,
ARRAY_SIZE(mpq8064_ir_configs));
- if (system_rev < BOARD_REV09)
- msm_gpiomux_install(msm8064_sd_det_config,
- ARRAY_SIZE(msm8064_sd_det_config));
+ msm_gpiomux_install(msm8064_sd_det_config,
+ ARRAY_SIZE(msm8064_sd_det_config));
#if defined(CONFIG_VIDEO_MHL_V2)
msm_gpiomux_install(msm8960_mhl_configs,
file:b802522e6434373aed12159ba1dbab567534f141 -> file:82f123f55442ccee3223babf15c00aa65aa71093
--- a/arch/arm/mach-msm/board-jactive_att.c
+++ b/arch/arm/mach-msm/board-jactive_att.c
@@ -1174,35 +1174,6 @@ static struct i2c_board_info touchkey_i2
},
};
-
-static struct i2c_gpio_platform_data cypress_touchkey_i2c_gpio_data = {
- .sda_pin = GPIO_TOUCHKEY_SDA,
- .scl_pin = GPIO_TOUCHKEY_SCL,
- .udelay = 0,
- .sda_is_open_drain = 0,
- .scl_is_open_drain = 0,
- .scl_is_output_only = 0,
-};
-static struct platform_device touchkey_i2c_gpio_device = {
- .name = "i2c-gpio",
- .id = MSM_TOUCHKEY_I2C_BUS_ID,
- .dev.platform_data = &cypress_touchkey_i2c_gpio_data,
-};
-
-static struct i2c_gpio_platform_data cypress_touchkey_i2c_gpio_data_2 = {
- .sda_pin = GPIO_TOUCHKEY_SDA,
- .scl_pin = GPIO_TOUCHKEY_SCL_2,
- .udelay = 0,
- .sda_is_open_drain = 0,
- .scl_is_open_drain = 0,
- .scl_is_output_only = 0,
-};
-static struct platform_device touchkey_i2c_gpio_device_2 = {
- .name = "i2c-gpio",
- .id = MSM_TOUCHKEY_I2C_BUS_ID,
- .dev.platform_data = &cypress_touchkey_i2c_gpio_data_2,
-};
-
#endif
static int apq8064_change_memory_power(u64 start, u64 size,
@@ -1935,6 +1906,46 @@ struct pm8xxx_mpp_config_data mpp4_cfg =
#define MPP_MCU_NRST PM8921_MPP_PM_TO_SYS(4)
+static void clear_ssp_gpio(void)
+{
+ struct pm_gpio ap_mcu_int_cfg = {
+ .direction = PM_GPIO_DIR_IN,
+ .pull = PM_GPIO_PULL_DN,
+ .vin_sel = 2,
+ .function = PM_GPIO_FUNC_NORMAL,
+ .inv_int_pol = 0,
+ };
+ struct pm_gpio mcu_ap_int_2_cfg = {
+ .direction = PM_GPIO_DIR_IN,
+ .pull = PM_GPIO_PULL_DN,
+ .vin_sel = 2,
+ .function = PM_GPIO_FUNC_NORMAL,
+ .inv_int_pol = 0,
+ };
+ struct pm_gpio mcu_ap_int_cfg = {
+ .direction = PM_GPIO_DIR_IN,
+ .pull = PM_GPIO_PULL_DN,
+ .vin_sel = 2,
+ .function = PM_GPIO_FUNC_NORMAL,
+ .inv_int_pol = 0,
+ };
+ struct pm_gpio ap_mcu_nrst_cfg = {
+ .direction = PM_GPIO_DIR_IN,
+ .pull = PM_GPIO_PULL_DN,
+ .vin_sel = 2,
+ .function = PM_GPIO_FUNC_NORMAL,
+ .inv_int_pol = 0,
+ };
+
+ pm8xxx_gpio_config(GPIO_AP_MCU_INT, &ap_mcu_int_cfg);
+ pm8xxx_gpio_config(GPIO_MCU_AP_INT, &mcu_ap_int_cfg);
+ pm8xxx_gpio_config(GPIO_MCU_AP_INT_2, &mcu_ap_int_2_cfg);
+ if (system_rev >= 5)
+ pm8xxx_gpio_config(GPIO_MCU_NRST, &ap_mcu_nrst_cfg);
+ mdelay(1);
+ pr_info("[SSP] %s done\n", __func__);
+}
+
static int initialize_ssp_gpio(void)
{
int err;
@@ -5157,13 +5168,6 @@ static void __init apq8064_common_init(v
platform_add_devices(common_not_mpq_devices,
ARRAY_SIZE(common_not_mpq_devices));
-#ifdef CONFIG_KEYBOARD_CYPRESS_TOUCH_236
- if (system_rev < 9)
- platform_device_register(&touchkey_i2c_gpio_device);
- else
- platform_device_register(&touchkey_i2c_gpio_device_2);
-#endif
-
enable_ddr3_regulator();
msm_hsic_pdata.swfi_latency =
msm_rpmrs_levels[0].latency_us;
@@ -5210,12 +5214,8 @@ static void __init apq8064_common_init(v
#if defined(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI) || defined(CONFIG_TOUCHSCREEN_ATMEL_MXTS)
printk(KERN_DEBUG"[TSP] System revision, LPM mode : %d %d\n",
system_rev, poweroff_charging);
- if (!poweroff_charging) {
- if (sec_tsp_synaptics_mode)
- S5000_tsp_input_init(lcd_tsp_panel_version);
- else
- mxt540s_tsp_input_init();
- }
+ if (!poweroff_charging)
+ S5000_tsp_input_init(lcd_tsp_panel_version);
#endif
#if defined(CONFIG_VIDEO_MHL_V2)
@@ -5313,6 +5313,7 @@ static void __init samsung_jf_init(void)
msm8960_init_battery();
#endif
#ifdef CONFIG_SENSORS_SSP
+ clear_ssp_gpio();
sensor_power_on_vdd(SNS_PWR_ON, SNS_PWR_ON);
initialize_ssp_gpio();
#endif
file:44b6d8cd3fd33b9f0e3abf30bd05c035d83eb283 -> file:2eb2aba977fbef525bd767cc658cee9c4c29154e
--- a/arch/arm/mach-msm/board-jactive_eur.c
+++ b/arch/arm/mach-msm/board-jactive_eur.c
@@ -2087,32 +2087,38 @@ static void bcm2079x_sw_i2c_config(void)
GPIO_CFG_NO_PULL, GPIO_CFG_2MA), 1);
}
#endif
+#define GPIO_NFC_FIRMWARE_AP 12
static int __init bcm2079x_init(void)
{
struct pm_gpio nfc_irq_cfg = {
.direction = PM_GPIO_DIR_IN,
- .pull = PM_GPIO_PULL_NO,
+ .pull = PM_GPIO_PULL_DN,
.vin_sel = 2,
.function = PM_GPIO_FUNC_NORMAL,
.inv_int_pol = 0,
};
struct pm_gpio nfc_en_cfg = {
.direction = PM_GPIO_DIR_OUT,
- .pull = PM_GPIO_PULL_UP_31P5,
+ .pull = PM_GPIO_PULL_DN,
.vin_sel = 2,
.function = PM_GPIO_FUNC_NORMAL,
.inv_int_pol = 0,
};
struct pm_gpio nfc_firmware_cfg = {
.direction = PM_GPIO_DIR_OUT,
- .pull = PM_GPIO_PULL_UP_31P5,
+ .pull = PM_GPIO_PULL_NO,
.vin_sel = 2,
.function = PM_GPIO_FUNC_NORMAL,
.inv_int_pol = 0,
};
pm8xxx_gpio_config(GPIO_NFC_IRQ, &nfc_irq_cfg);
pm8xxx_gpio_config(GPIO_NFC_EN, &nfc_en_cfg);
- pm8xxx_gpio_config(GPIO_NFC_FIRMWARE, &nfc_firmware_cfg);
+ if (system_rev > BOARD_REV13)
+ gpio_tlmm_config(GPIO_CFG(GPIO_NFC_FIRMWARE_AP, 0,
+ GPIO_CFG_OUTPUT, GPIO_CFG_NO_PULL,
+ GPIO_CFG_2MA), 1);
+ else
+ pm8xxx_gpio_config(GPIO_NFC_FIRMWARE, &nfc_firmware_cfg);
#ifdef NFC_SW_I2C
bcm2079x_sw_i2c_config();
#endif
@@ -2137,7 +2143,7 @@ static struct platform_device bcm2079x_i
static struct bcm2079x_platform_data bcm2079x_i2c_pdata = {
.irq_gpio = GPIO_NFC_IRQ,
.en_gpio = GPIO_NFC_EN,
- .wake_gpio = GPIO_NFC_FIRMWARE,
+ .wake_gpio = GPIO_NFC_FIRMWARE_AP,
};
static struct i2c_board_info nfc_bcm2079x_info[] __initdata = {
@@ -4251,15 +4257,6 @@ static struct gpio_keys_button gpio_keys
.debounce_interval = 5,
},
{
- .code = KEY_HOMEPAGE,
- .gpio = GPIO_KEY_HOME,
- .desc = "home_key",
- .active_low = 1,
- .type = EV_KEY,
- .wakeup = 1,
- .debounce_interval = 5,
- },
- {
.code = KEY_MENU,
.gpio = GPIO_KEY_MENU,
.desc = "menu_key",
@@ -4277,6 +4274,15 @@ static struct gpio_keys_button gpio_keys
.wakeup = 0,
.debounce_interval = 5,
},
+ {
+ .code = KEY_HOMEPAGE,
+ .gpio = GPIO_KEY_HOME,
+ .desc = "home_key",
+ .active_low = 1,
+ .type = EV_KEY,
+ .wakeup = 1,
+ .debounce_interval = 5,
+ },
};
static struct gpio_keys_platform_data gpio_keys_data = {
@@ -5135,6 +5141,11 @@ static void __init apq8064_gpio_keys_ini
pm8xxx_gpio_config(GPIO_KEY_BACK, &param);
}
+static void __init nfc_gpio_rev_init(void)
+{
+ if (system_rev < BOARD_REV14)
+ bcm2079x_i2c_pdata.wake_gpio = GPIO_NFC_FIRMWARE;
+}
static void __init samsung_jf_init(void)
{
#ifdef CONFIG_SEC_DEBUG
@@ -5191,6 +5202,7 @@ static void __init samsung_jf_init(void)
#endif
#ifdef CONFIG_BCM2079X_NFC_I2C
bcm2079x_init();
+ nfc_gpio_rev_init();
#endif
change_memory_power = &apq8064_change_memory_power;
file:594370a1d40d723f708e0dc2e5c6815b3166a2b2 -> file:09278c2dce46fbc63ffc421ac5859b885f542147
--- a/arch/arm/mach-msm/board-jf_dcm.c
+++ b/arch/arm/mach-msm/board-jf_dcm.c
@@ -1917,6 +1917,46 @@ struct pm8xxx_mpp_config_data mpp4_cfg =
#define MPP_MCU_NRST PM8921_MPP_PM_TO_SYS(4)
+static void clear_ssp_gpio(void)
+{
+ struct pm_gpio ap_mcu_int_cfg = {
+ .direction = PM_GPIO_DIR_IN,
+ .pull = PM_GPIO_PULL_DN,
+ .vin_sel = 2,
+ .function = PM_GPIO_FUNC_NORMAL,
+ .inv_int_pol = 0,
+ };
+ struct pm_gpio mcu_ap_int_2_cfg = {
+ .direction = PM_GPIO_DIR_IN,
+ .pull = PM_GPIO_PULL_DN,
+ .vin_sel = 2,
+ .function = PM_GPIO_FUNC_NORMAL,
+ .inv_int_pol = 0,
+ };
+ struct pm_gpio mcu_ap_int_cfg = {
+ .direction = PM_GPIO_DIR_IN,
+ .pull = PM_GPIO_PULL_DN,
+ .vin_sel = 2,
+ .function = PM_GPIO_FUNC_NORMAL,
+ .inv_int_pol = 0,
+ };
+ struct pm_gpio ap_mcu_nrst_cfg = {
+ .direction = PM_GPIO_DIR_IN,
+ .pull = PM_GPIO_PULL_DN,
+ .vin_sel = 2,
+ .function = PM_GPIO_FUNC_NORMAL,
+ .inv_int_pol = 0,
+ };
+
+ pm8xxx_gpio_config(GPIO_AP_MCU_INT, &ap_mcu_int_cfg);
+ pm8xxx_gpio_config(GPIO_MCU_AP_INT, &mcu_ap_int_cfg);
+ pm8xxx_gpio_config(GPIO_MCU_AP_INT_2, &mcu_ap_int_2_cfg);
+ if (system_rev >= 5)
+ pm8xxx_gpio_config(GPIO_MCU_NRST, &ap_mcu_nrst_cfg);
+ mdelay(1);
+ pr_info("[SSP] %s done\n", __func__);
+}
+
static int initialize_ssp_gpio(void)
{
int err;
@@ -5535,6 +5575,7 @@ static void __init samsung_jf_init(void)
apq8064_init_cam();
#endif
#ifdef CONFIG_SENSORS_SSP
+ clear_ssp_gpio();
sensor_power_on_vdd(SNS_PWR_ON, SNS_PWR_ON);
initialize_ssp_gpio();
#endif
file:05fa037eca715d230e91e8f69e261a0bacb6063b -> file:847d0a6186dc7949cea98ef57b2725d8bb6cc652
--- a/arch/arm/mach-msm/board-jf_eur.c
+++ b/arch/arm/mach-msm/board-jf_eur.c
@@ -1594,7 +1594,7 @@ struct sii8240_platform_data sii8240_pda
.power = sii8240_hw_onoff,
.hw_reset = sii8240_hw_reset,
.gpio_cfg = mhl_gpio_config,
- .swing_level = 0x36,
+ .swing_level = 0x26,
.vbus_present = muic77693_mhl_cb,
};
@@ -2125,7 +2125,9 @@ static int ssp_check_changes(void)
*/
static void ssp_get_positions(int *acc, int *mag)
{
- if (system_rev > BOARD_REV09)
+ if (system_rev == BOARD_REV13)
+ *acc = MPU6500_TOP_RIGHT_UPPER;
+ else if (system_rev > BOARD_REV09)
*acc = K330_TOP_LEFT_UPPER;
else if (system_rev > BOARD_REV04)
*acc = MPU6500_TOP_RIGHT_UPPER;
file:cfd0f7e65dc6e0b9fce490d7a4be908e044cdbc1 -> file:68e30ef7db41e21d6a4af77f8266a4e7fc3b181b
--- a/arch/arm/mach-msm/board-s5000-tsp.c
+++ b/arch/arm/mach-msm/board-s5000-tsp.c
@@ -165,8 +165,13 @@ static struct synaptics_rmi_f1a_button_m
#define SYNAPTICS_MAX_X_SIZE 1079
#define SYNAPTICS_MAX_Y_SIZE 1919
#define SYNAPTICS_MAX_WIDTH SYNAPTICS_MAX_Y_SIZE
+#if defined(CONFIG_MACH_JACTIVE_EUR)
+#define NUM_RX 16
+#define NUM_TX 28
+#else
#define NUM_RX 28
#define NUM_TX 16
+#endif
static struct synaptics_rmi4_platform_data rmi4_platformdata = {
/*.irq_type = IRQF_TRIGGER_FALLING,*/
file:b45efadf510950e68760d1514054745974ab5e49 -> file:82d81170b9912fa7d2a365477301f1ba579f236e
--- a/arch/arm/mach-msm/msm_bus/msm_bus_board_8064.c
+++ b/arch/arm/mach-msm/msm_bus/msm_bus_board_8064.c
@@ -439,7 +439,6 @@ static struct msm_bus_node_info system_f
static int mport_mdp[] = {
MSM_BUS_MASTER_PORT_MDP_PORT0,
- MSM_BUS_MASTER_PORT_MDP_PORT1,
};
static int mport_mdp1[] = {MSM_BUS_MASTER_PORT_MDP_PORT1,};
static int mport_rotator[] = {MSM_BUS_MASTER_PORT_ROTATOR,};
file:045dee6010356f9a563d4a9910316670ed7104c0 -> file:adc2d2ff3310a17fb7b451cf006ab8f35f8dcab1
--- a/arch/arm/mach-msm/socinfo.c
+++ b/arch/arm/mach-msm/socinfo.c
@@ -325,7 +325,52 @@ char *socinfo_get_build_id(void)
{
return (socinfo) ? socinfo->v1.build_id : NULL;
}
+#ifdef CONFIG_PVS_IDDQ_FACTORY
+uint32_t socinfo_get_iddq(void)
+{
+ void __iomem *pte_efuse;
+ uint32_t pte_efuse_val;
+ uint32_t qfprom_iddq;
+
+ pte_efuse = ioremap(0x007000C4, 4);
+ if (!pte_efuse) {
+ pr_err("%s : Unable to map QFPROM base\n", __func__);
+ return 0;
+ }
+
+ pte_efuse_val = readl_relaxed(pte_efuse);
+ iounmap(pte_efuse);
+ qfprom_iddq = pte_efuse_val & 0xFFFFFFFF;
+
+ return qfprom_iddq;
+}
+
+uint32_t socinfo_get_pvs(void)
+{
+ void __iomem *pte_efuse;
+ uint32_t pte_efuse_val;
+ uint32_t pvs_bin;
+
+ pte_efuse = ioremap(0x007000C0, 4);
+ if (!pte_efuse) {
+ pr_err("%s : Unable to map QFPROM base\n", __func__);
+ return 0;
+ }
+
+ pte_efuse_val = readl_relaxed(pte_efuse);
+ iounmap(pte_efuse);
+
+ pvs_bin = (pte_efuse_val >> 10) & 0x7;
+ if (pvs_bin == 0x7)
+ pvs_bin = (pte_efuse_val >> 13) & 0x7;
+
+ if (pvs_bin == 0x7)
+ pvs_bin = 0;
+
+ return pvs_bin;
+}
+#endif
uint32_t socinfo_get_raw_id(void)
{
return socinfo ?
@@ -435,8 +480,34 @@ socinfo_show_build_id(struct sys_device
return snprintf(buf, PAGE_SIZE, "%-.32s\n", socinfo_get_build_id());
}
+#ifdef CONFIG_PVS_IDDQ_FACTORY
+static ssize_t
+socinfo_show_soc_iddq(struct sys_device *dev,
+ struct sysdev_attribute *attr,
+ char *buf)
+{
+ if (!socinfo) {
+ pr_err("%s: No socinfo found!\n", __func__);
+ return 0;
+ }
+
+ return snprintf(buf, PAGE_SIZE, "%x\n", socinfo_get_iddq());
+}
static ssize_t
+socinfo_show_soc_pvs(struct sys_device *dev,
+ struct sysdev_attribute *attr,
+ char *buf)
+{
+ if (!socinfo) {
+ pr_err("%s: No socinfo found!\n", __func__);
+ return 0;
+ }
+
+ return snprintf(buf, PAGE_SIZE, "%x\n", socinfo_get_pvs());
+}
+#endif
+static ssize_t
socinfo_show_raw_id(struct sys_device *dev,
struct sysdev_attribute *attr,
char *buf)
@@ -598,6 +669,10 @@ static struct sysdev_attribute socinfo_v
_SYSDEV_ATTR(id, 0444, socinfo_show_id, NULL),
_SYSDEV_ATTR(version, 0444, socinfo_show_version, NULL),
_SYSDEV_ATTR(build_id, 0444, socinfo_show_build_id, NULL),
+#ifdef CONFIG_PVS_IDDQ_FACTORY
+ _SYSDEV_ATTR(soc_iddq, 0444, socinfo_show_soc_iddq, NULL),
+ _SYSDEV_ATTR(soc_pvs, 0444, socinfo_show_soc_pvs, NULL),
+#endif
};
static struct sysdev_attribute socinfo_v2_files[] = {
file:cb947bcba5330d385e8fe4353f37a8814bab68d9 -> file:86629ddca368c78f30f998a4dba85a8b8577a3f2
--- a/drivers/battery/max77693_charger.c
+++ b/drivers/battery/max77693_charger.c
@@ -729,10 +729,16 @@ static int sec_chg_set_property(struct p
cancel_delayed_work_sync(&charger->wpc_work);
/* recheck after cancel_delayed_work_sync */
if (charger->wc_w_state) {
+ union power_supply_propval cable_type;
+ psy_do_property("battery", get,
+ POWER_SUPPLY_PROP_ONLINE, cable_type);
wake_lock(&charger->wpc_wake_lock);
queue_delayed_work(charger->wqueue, &charger->wpc_work,
- msecs_to_jiffies(0));
- charger->wc_w_state = 0;
+ msecs_to_jiffies(500));
+ if (cable_type.intval != POWER_SUPPLY_TYPE_WIRELESS) {
+ charger->wc_w_state = 0;
+ pr_err("%s:cable removed,wireless connected\n", __func__);
+ }
}
}
} else {
file:985c2f02dcf1d20e5f42234e100531fd99c6f6ba -> file:60b3c538e40c8e4f211f45caf53b2328e59118b0
--- a/drivers/battery/sec_battery.c
+++ b/drivers/battery/sec_battery.c
@@ -2943,6 +2943,16 @@ static int __devinit sec_battery_probe(s
pdata->initial_check();
battery->present = battery->pdata->check_battery_callback();
+#ifdef CONFIG_SAMSUNG_BATTERY_FACTORY
+ /* do not sleep in lpm mode & factory mode */
+ if (battery->pdata->is_lpm()) {
+ wake_lock_init(&battery->lpm_wake_lock, WAKE_LOCK_SUSPEND,
+ "sec-lpm-monitor");
+ wake_lock(&battery->lpm_wake_lock);
+ }
+#endif
+
+
dev_dbg(battery->dev,
"%s: SEC Battery Driver Loaded\n", __func__);
return 0;
file:207ec5f4ca7d08bdaf61aad849392c599bb35ccc -> file:b84c219fbd437989805a261dd7b76fa3c9e0c21c
--- a/drivers/bluetooth/bluesleep.c
+++ b/drivers/bluetooth/bluesleep.c
@@ -285,6 +285,8 @@ static void bluesleep_sleep_work(struct
/*Deactivating UART */
hsuart_power(0);
+ clear_bit(BT_EXT_WAKE, &flags);
+
/*Deactivating UART */
/* UART clk is not turned off immediately. Release
* wakelock after 500 ms.
@@ -482,7 +484,7 @@ static void bluesleep_tx_timer_expire(un
{
bluesleep_tx_timer_expired();
}
- clear_bit(BT_EXT_WAKE, &flags);
+ //clear_bit(BT_EXT_WAKE, &flags);
bluesleep_tx_idle();
} else {
BT_DBG("Tx data during last period");
file:cd4fd12f63789d5f073e94af9655f153ff1b59ab -> file:d97eb9a9a65bac8111b1d6cce18f20bf674fb751
--- a/drivers/felica/felica.c
+++ b/drivers/felica/felica.c
@@ -1128,6 +1128,8 @@ static ssize_t felica_pon_read(struct fi
ret = gpio_get_value(GPIO_PINID_FELICA_PON);
#elif defined(CONFIG_ARCH_APQ8064)
ret = ice_gpiox_get(GPIO_PINID_FELICA_PON);
+#else
+ ret = gpio_get_value(GPIO_PINID_FELICA_PON);
#endif
if (ret == GPIO_VALUE_HIGH) {
retparam = FELICA_PON_WIRED;
file:9d25be4884318aa078f66ae8e12093cff018a819 -> file:810eafcb847bdb82ea378b79db022600a27180e3
--- a/drivers/input/keyboard/gpio_keys.c
+++ b/drivers/input/keyboard/gpio_keys.c
@@ -43,7 +43,7 @@ struct gpio_button_data {
spinlock_t lock;
bool disabled;
bool key_pressed;
- #ifdef KEY_BOOSTER
+#ifdef KEY_BOOSTER
struct delayed_work work_dvfs_off;
struct delayed_work work_dvfs_chg;
bool dvfs_lock_status;
@@ -435,11 +435,12 @@ static void gpio_keys_gpio_work_func(str
{
struct gpio_button_data *bdata =
container_of(work, struct gpio_button_data, work);
-const struct gpio_keys_button *button = bdata->button;
-int state = (gpio_get_value_cansleep(button->gpio) ? 1 : 0) ^ button->active_low;
+ const struct gpio_keys_button *button = bdata->button;
+ int state = (gpio_get_value_cansleep(button->gpio) ? 1 : 0) ^ button->active_low;
+
gpio_keys_gpio_report_event(bdata);
- #ifdef KEY_BOOSTER
- if (button->code == KEY_HOME)
+#ifdef KEY_BOOSTER
+ if (button->code == KEY_HOMEPAGE)
gpio_key_set_dvfs_lock(bdata, !!state);
#endif
}
@@ -958,10 +959,6 @@ static int __devinit gpio_keys_probe(str
error = gpio_keys_setup_key(pdev, input, bdata, button);
if (error)
goto fail2;
-
- if (button->wakeup)
- wakeup = 1;
- }
#ifdef KEY_BOOSTER
error = gpio_key_init_dvfs(bdata);
if (error < 0) {
@@ -969,6 +966,9 @@ static int __devinit gpio_keys_probe(str
goto fail2;
}
#endif
+ if (button->wakeup)
+ wakeup = 1;
+ }
error = sysfs_create_group(&pdev->dev.kobj, &gpio_keys_attr_group);
if (error) {
dev_err(dev, "Unable to export keys/switches, error: %d\n",
file:877aa07a428a335c9f5bfa3bc83c627dc7951b43 -> file:d560b989ea1f11116718798a2a3992e48b352ca8
--- a/drivers/input/touchscreen/rmi_f54.c
+++ b/drivers/input/touchscreen/rmi_f54.c
@@ -2173,7 +2173,11 @@ static void get_fw_ver_bin(void)
set_default_result(data);
sprintf(data->cmd_buff, "SY%02X%02X%02X",
rmi4_data->ic_revision_of_bin,
+#ifdef CONFIG_TOUCHSCREEN_FACTORY_PLATFORM
+ rmi4_data->factory_read_panel_wakeup,
+#else
rmi4_data->board->panel_touch_type,
+#endif
rmi4_data->fw_version_of_bin);
set_cmd_result(data, data->cmd_buff, strlen(data->cmd_buff));
@@ -2190,7 +2194,11 @@ static void get_fw_ver_ic(void)
set_default_result(data);
sprintf(data->cmd_buff, "SY%02X%02X%02X",
rmi4_data->ic_revision_of_ic,
+#ifdef CONFIG_TOUCHSCREEN_FACTORY_PLATFORM
+ rmi4_data->factory_read_panel_wakeup,
+#else
rmi4_data->board->panel_touch_type,
+#endif
rmi4_data->fw_version_of_ic);
set_cmd_result(data, data->cmd_buff, strlen(data->cmd_buff));
@@ -2208,9 +2216,14 @@ static void get_fac_fw_ver_bin(void)
const struct firmware *fw_entry = NULL;
set_default_result(data);
-
+#if defined(CONFIG_MACH_JACTIVE_EUR) || defined(CONFIG_MACH_JACTIVE_ATT)
+ retval = request_firmware(&fw_entry, FW_IMAGE_NAME_B0_HSYNC_FAC,
+ &rmi4_data->i2c_client->dev);
+#else
retval = request_firmware(&fw_entry, FW_IMAGE_NAME_B0_FAC,
&rmi4_data->i2c_client->dev);
+#endif
+
if (retval < 0) {
dev_err(&rmi4_data->i2c_client->dev,
"%s: factory firmware request failed\n",
file:6522ed9337ffa8745c1407369dd52081fd3add68 -> file:66c69da18039dfc57d30d628e8226eed4eff52d5
--- a/drivers/input/touchscreen/rmi_fw_update.c
+++ b/drivers/input/touchscreen/rmi_fw_update.c
@@ -78,6 +78,12 @@
#define MIN_SLEEP_TIME_US 50
#define MAX_SLEEP_TIME_US 100
+#define STATUS_POLLING_PERIOD_US 3000
+
+#if defined(CONFIG_MACH_JACTIVE_EUR) || defined(CONFIG_MACH_JACTIVE_ATT)
+#define FW_SUPPORT_HYNC(x) ((strncmp(x->product_id, "SY 03", 5))
+#define FW_NOT_SUPPORT_HYNC(x) ((strncmp(x->product_id, "SY 01", 5) == 0) || (strncmp(x->product_id, "S5000B", 6) == 0) || (strncmp(x->product_id, "SY 02", 5) == 0))
+#endif
static ssize_t fwu_sysfs_show_image(struct file *data_file,
struct kobject *kobj, struct bin_attribute *attributes,
@@ -204,6 +210,7 @@ struct synaptics_rmi4_fwu_handle {
char product_id[SYNAPTICS_RMI4_PRODUCT_ID_SIZE + 1];
const unsigned char *firmware_data;
const unsigned char *config_data;
+ struct mutex status_mutex;
struct f34_flash_status flash_status;
struct synaptics_rmi4_fn_desc f01_fd;
struct synaptics_rmi4_fn_desc f34_fd;
@@ -397,6 +404,8 @@ static int fwu_read_f34_flash_status(voi
unsigned char status;
unsigned char command;
+ mutex_lock(&(fwu->status_mutex));
+
retval = fwu->fn_ptr->read(fwu->rmi4_data,
fwu->f34_fd.data_base_addr + FLASH_STATUS_OFFSET,
&status,
@@ -405,7 +414,7 @@ static int fwu_read_f34_flash_status(voi
dev_err(&fwu->rmi4_data->i2c_client->dev,
"%s: Failed to read flash status\n",
__func__);
- return retval;
+ goto exit;
}
/* Program enabled bit not available - force bit to be set */
@@ -420,12 +429,17 @@ static int fwu_read_f34_flash_status(voi
dev_err(&fwu->rmi4_data->i2c_client->dev,
"%s: Failed to read flash command\n",
__func__);
- return retval;
+ goto exit;
}
fwu->command = command & MASK_4BIT;
- return 0;
+ retval = 0;
+
+exit:
+ mutex_unlock(&(fwu->status_mutex));
+
+ return retval;
}
static int fwu_write_f34_command(unsigned char cmd)
@@ -452,14 +466,24 @@ static int fwu_write_f34_command(unsigne
static int fwu_wait_for_idle(int timeout_ms)
{
int count = 0;
+ int polling_period = STATUS_POLLING_PERIOD_US / MAX_SLEEP_TIME_US;
int timeout_count = ((timeout_ms * 1000) / MAX_SLEEP_TIME_US) + 1;
do {
usleep_range(MIN_SLEEP_TIME_US, MAX_SLEEP_TIME_US);
count++;
- if (count == timeout_count)
+ if ((timeout_ms == WRITE_WAIT_MS) &&
+ (count >= polling_period) &&
+ ((count % polling_period) == 0)) {
+ fwu_read_f34_flash_status();
+ } else if (count == timeout_count) {
+ dev_err(&fwu->rmi4_data->i2c_client->dev,
+ "%s: wait usleep, in writing block [%d]\n",
+ __func__, count);
+
fwu_read_f34_flash_status();
+ }
if ((fwu->command == 0x00) &&
(fwu->flash_status.status == 0x00))
@@ -937,11 +961,52 @@ static int fwu_start_reflash(bool mode,
memset(&fw_path, 0, SYNAPTICS_MAX_FW_PATH);
/* use factory test FW */
+#if defined(CONFIG_MACH_JACTIVE_EUR) || defined(CONFIG_MACH_JACTIVE_ATT)
+ if (factory_fw) {
+ dev_info(&fwu->rmi4_data->i2c_client->dev,
+ "%s: run fw update for FACTORY FIRMWARE\n",
+ __func__);
+ if (FW_NOT_SUPPORT_HYNC(fwu))
+ snprintf(fw_path, SYNAPTICS_MAX_FW_PATH,
+ "%s", FW_IMAGE_NAME_B0_NON_HSYNC_FAC);
+ else
+ snprintf(fw_path, SYNAPTICS_MAX_FW_PATH,
+ "%s", FW_IMAGE_NAME_B0_HSYNC_FAC);
+ } else {
+ /* Read firmware according to ic revision */
+ if ((fwu->rmi4_data->ic_revision_of_ic >> 4) == 0xB) {
+ /* Read firmware according to panel ID */
+ switch (fwu->rmi4_data->panel_revision) {
+ case OCTA_PANEL_REVISION_34:
+ if (FW_NOT_SUPPORT_HYNC(fwu))
+ snprintf(fw_path, SYNAPTICS_MAX_FW_PATH,
+ "%s", FW_IMAGE_NAME_B0_NON_HSYNC);
+ else
+ snprintf(fw_path, SYNAPTICS_MAX_FW_PATH,
+ "%s", FW_IMAGE_NAME_B0_HSYNC);
+ break;
+ default:
+ dev_info(&fwu->rmi4_data->i2c_client->dev,
+ "%s: Do not request, not matched revision and FW.\n",
+ __func__);
+ goto out;
+ }
+ } else if ((fwu->rmi4_data->ic_revision_of_ic >> 4) == 0xA) {
+ dev_info(&fwu->rmi4_data->i2c_client->dev,
+ "%s: Do not request, not matched revision and FW.\n",
+ __func__);
+ goto out;
+ } else { // force update when ic_revision_of_ic is NULL
+ snprintf(fw_path, SYNAPTICS_MAX_FW_PATH, "%s", FW_IMAGE_NAME_B0_HSYNC);
+ printk(KERN_ERR "%s, force update when ic_revision_of_ic is NULL\n", __func__);
+ mode = true;
+ }
+ }
+#else
if (factory_fw) {
dev_info(&fwu->rmi4_data->i2c_client->dev,
"%s: run fw update for FACTORY FIRMWARE\n",
__func__);
-
if (fwu->rmi4_data->panel_revision < OCTA_PANEL_REVISION_51)
snprintf(fw_path, SYNAPTICS_MAX_FW_PATH,
"%s", FW_IMAGE_NAME_B0_FAC);
@@ -985,19 +1050,8 @@ static int fwu_start_reflash(bool mode,
snprintf(fw_path, SYNAPTICS_MAX_FW_PATH,
"%s", FW_IMAGE_NAME_B0_43);
}
-#if defined(CONFIG_MACH_JACTIVE_EUR) || defined(CONFIG_MACH_JACTIVE_ATT)
- else // force update when ic_revision_of_ic is NULL
- {
- snprintf(fw_path, SYNAPTICS_MAX_FW_PATH, "%s", FW_IMAGE_NAME_B0_34);
- printk(KERN_ERR "%s, force update when ic_revision_of_ic is NULL\n", __func__);
- mode = true;
- }
-#endif
}
-/*
- snprintf(fw_path, SYNAPTICS_MAX_FW_PATH,
- "%s", FW_IMAGE_TEST);
-*/
+#endif
dev_info(&fwu->rmi4_data->i2c_client->dev,
"%s: Requesting firmware image %s\n",
__func__, fw_path);
@@ -1612,6 +1666,7 @@ static int synaptics_rmi4_fwu_init(struc
if (retval < 0)
goto exit_free_mem;
+ mutex_init(&(fwu->status_mutex));
fwu->initialized = true;
retval = sysfs_create_bin_file(&rmi4_data->input_dev->dev.kobj,
file:82cecbe336c792bd257c9128295a0f1582156c62 -> file:6b0663ead2a54a7861ae4850ae8afca8f2192b54
--- a/drivers/input/touchscreen/synaptics_i2c_rmi.c
+++ b/drivers/input/touchscreen/synaptics_i2c_rmi.c
@@ -841,7 +841,7 @@ static int synaptics_rmi4_glove_mode_set
int retval = 0;
unsigned char glove_enable = 0;
-#if !defined(CONFIG_MACH_JACTIVE_EUR)
+#if !defined(CONFIG_MACH_JACTIVE_EUR) && !defined(CONFIG_MACH_JACTIVE_ATT)
if (rmi4_data->panel_revision < OCTA_PANEL_REVISION_43) {
dev_info(&rmi4_data->i2c_client->dev,
"%s: do not support this FPCB version.\n", __func__);
@@ -1665,7 +1665,7 @@ static int synaptics_rmi4_f51_edge_swipe
f51->surface_data.angle = data->edge_swipe_dg - 180;
#endif
else if (data->edge_swipe_dg < 90)
-#if defined(CONFIG_MACH_JACTIVE_EUR)
+#if defined(CONFIG_MACH_JACTIVE_EUR) || defined(CONFIG_MACH_JACTIVE_ATT)
f51->surface_data.angle = 90 - data->edge_swipe_dg;
#else
f51->surface_data.angle = data->edge_swipe_dg;
@@ -3269,6 +3269,49 @@ err_input_device:
return retval;
}
+#ifdef CONFIG_TOUCHSCREEN_FACTORY_PLATFORM
+#include <asm/uaccess.h>
+#define LCD_LDI_FILE_PATH "/sys/class/lcd/panel/window_type"
+static int synaptics_rmi4_open_lcd_ldi(struct synaptics_rmi4_data *rmi4_data)
+{
+ int iRet = 0;
+ mm_segment_t old_fs;
+ struct file *window_type;
+ unsigned char lcdtype[4] = {0,};
+
+ old_fs = get_fs();
+ set_fs(KERNEL_DS);
+
+ window_type = filp_open(LCD_LDI_FILE_PATH, O_RDONLY, 0666);
+ if (IS_ERR(window_type)) {
+ iRet = PTR_ERR(window_type);
+ if (iRet != -ENOENT)
+ dev_err(&rmi4_data->i2c_client->dev, "%s: window_type file open fail\n", __func__);
+ set_fs(old_fs);
+ goto exit;
+ }
+
+ iRet = window_type->f_op->read(window_type, (u8 *)lcdtype, sizeof(u8) * 4, &window_type->f_pos);
+ if (iRet != (sizeof(u8) * 4)) {
+ dev_err(&rmi4_data->i2c_client->dev, "%s: Can't read the lcd ldi data\n", __func__);
+ iRet = -EIO;
+ }
+
+ /* The variable of lcdtype has ASCII values(40 81 45) at 0x08 OCTA,
+ * so if someone need a TSP panel revision then to read third parameter.*/
+ rmi4_data->factory_read_panel_wakeup = lcdtype[3] & 0x0F;
+ dev_info(&rmi4_data->i2c_client->dev,
+ "%s: update factory_panel_revision 0x%02X\n",
+ __func__, rmi4_data->factory_read_panel_wakeup);
+
+ filp_close(window_type, current->files);
+ set_fs(old_fs);
+
+exit:
+ return iRet;
+}
+#endif
+
static int synaptics_rmi4_reinit_device(struct synaptics_rmi4_data *rmi4_data)
{
int retval;
@@ -4133,14 +4176,26 @@ static void synaptics_rmi4_late_resume(s
dev_info(&rmi4_data->i2c_client->dev, "%s: tsp int request failed, ret=%d", __func__, retval);
return ;
}
+#ifdef CONFIG_TOUCHSCREEN_FACTORY_PLATFORM
+ retval = synaptics_rmi4_query_device(rmi4_data);
+ if (retval < 0)
+ dev_err(&rmi4_data->i2c_client->dev,
+ "%s: Failed to query device\n",
+ __func__);
+ retval = synaptics_rmi4_open_lcd_ldi(rmi4_data);
+ if (retval < 0)
+ dev_err(&rmi4_data->i2c_client->dev,
+ "%s: Failed to read ldi ID2\n",
+ __func__);
+#else
retval = synaptics_rmi4_reinit_device(rmi4_data);
if (retval < 0) {
dev_err(&rmi4_data->i2c_client->dev,
"%s: Failed to reinit device\n",
__func__);
}
-
+#endif
if (rmi4_data->ta_status)
synaptics_charger_conn(rmi4_data, rmi4_data->ta_status);
file:856a8176ebcd692e3a201e6cb2c48145047cd856 -> file:4e86b41afd7024bcfc215c47c238aef3359aff11
--- a/drivers/input/touchscreen/synaptics_i2c_rmi.h
+++ b/drivers/input/touchscreen/synaptics_i2c_rmi.h
@@ -45,8 +45,14 @@
#define SYNAPTICS_PRODUCT_ID_B0_SPAIR "S5000B"
#if defined(CONFIG_MACH_JACTIVE_EUR) || defined(CONFIG_MACH_JACTIVE_ATT)
-#define FW_IMAGE_NAME_A1 "tsp_synaptics/synaptics_JA_a1.fw"
-#define FW_IMAGE_NAME_B0_34 "tsp_synaptics/synaptics_JA_b0_3_4.fw"
+#define FW_IMAGE_NAME_B0_HSYNC "tsp_synaptics/jactive/synaptics_b0_hsync.fw"
+#define FW_IMAGE_NAME_B0_HSYNC_FAC "tsp_synaptics/jactive/synaptics_b0_hsync_fac.fw"
+
+/* NON HYNC F/W will be removed */
+/* PRODUCT ID : SY 01, SY 02, S5000B */
+#define FW_IMAGE_NAME_B0_NON_HSYNC "tsp_synaptics/jactive/synaptics_b0_non_hsync.fw"
+#define FW_IMAGE_NAME_B0_NON_HSYNC_FAC "tsp_synaptics/jactive/synaptics_b0_non_hsync_fac.fw"
+
#else
#define FW_IMAGE_NAME_A1 "tsp_synaptics/synaptics_a1.fw"
#define FW_IMAGE_NAME_B0_34 "tsp_synaptics/synaptics_b0_3_4.fw"
@@ -286,6 +292,7 @@ struct synaptics_rmi4_data {
int fw_version_of_bin; /* firmware version of binary */
int fw_release_date_of_ic; /* Config release data from IC */
int panel_revision; /* Octa panel revision */
+ int factory_read_panel_wakeup;
bool doing_reflash;
#ifdef CONFIG_GLOVE_TOUCH
file:331994d8a3a8bfc2dfd2ffc13a0c1c9b3fbd7ff5 -> file:901f1668bd327700144f1ce993e1fb82758820bc
--- a/drivers/media/video/msm/sensors/jc_v4l2.c
+++ b/drivers/media/video/msm/sensors/jc_v4l2.c
@@ -31,6 +31,7 @@
#include <asm/mach-types.h>
#include <mach/vreg.h>
#include <linux/io.h>
+#include <linux/ctype.h>
#include "msm_sensor_common.h"
#include "msm.h"
@@ -143,6 +144,8 @@ struct jc_ctrl_t {
bool need_restart_caf;
bool is_isp_null;
bool isp_null_read_sensor_fw;
+ bool samsung_app;
+ bool factory_bin;
};
static struct jc_ctrl_t *jc_ctrl;
@@ -2366,7 +2369,6 @@ static int jc_set_ev(int mode)
static int jc_set_hjr(int mode)
{
int32_t rc = 0;
- u32 isp_mode;
cam_info("Entered, hjr %d\n", mode);
@@ -2375,37 +2377,16 @@ static int jc_set_hjr(int mode)
return rc;
}
- jc_readb(JC_CATEGORY_SYS, JC_SYS_MODE, &isp_mode);
-
- if (isp_mode == JC_MONITOR_MODE) {
- cam_info("monitor mode\n");
-
- jc_set_mode(JC_PARMSET_MODE);
-
- if (mode == 0) {
- cam_info("HJR Off\n");
- jc_writeb(JC_CATEGORY_CAPCTRL,
- 0x0B, 0x00);
- } else if (mode == 1) {
- cam_info("HJR On\n");
- jc_writeb(JC_CATEGORY_CAPCTRL,
- 0x0B, 0x01);
- }
-
- jc_set_mode(JC_MONITOR_MODE);
- } else {
- cam_info("parameter mode\n");
-
- if (mode == 0) {
- cam_info("HJR Off\n");
- jc_writeb(JC_CATEGORY_CAPCTRL,
- 0x0B, 0x00);
- } else if (mode == 1) {
- cam_info("HJR On\n");
- jc_writeb(JC_CATEGORY_CAPCTRL,
- 0x0B, 0x01);
- }
+ if (mode == 0) {
+ cam_info("HJR Off\n");
+ jc_writeb(JC_CATEGORY_CAPCTRL,
+ 0x0B, 0x00);
+ } else if (mode == 1) {
+ cam_info("HJR On\n");
+ jc_writeb(JC_CATEGORY_CAPCTRL,
+ 0x0B, 0x01);
}
+
return rc;
}
@@ -2908,6 +2889,14 @@ void sensor_native_control(void __user *
jc_set_ocr_focus_mode(ctrl_info.value_1);
break;
+ case EXT_CAM_SET_FACTORY_BIN:
+ cam_info(" factory binary: %d", ctrl_info.value_1);
+ if (ctrl_info.value_1 == 1)
+ jc_ctrl->factory_bin = true;
+ else
+ jc_ctrl->factory_bin = false;
+ break;
+
default:
break;
}
@@ -3091,7 +3080,6 @@ static int jc_sensor_power_up(struct msm
#endif
if (version_checked == false && jc_ctrl->fw_update == true) {
- jc_ctrl->fw_update = false;
isp_ret = jc_get_isp_version();
jc_isp_boot();
jc_get_sensor_version();
@@ -3102,6 +3090,16 @@ static int jc_sensor_power_up(struct msm
return -ENOSYS;
}
+ cam_info("isp_ret: %d, samsung app: %d, factory bin: %d\n",
+ isp_ret, jc_ctrl->samsung_app, jc_ctrl->factory_bin);
+
+ if (isp_ret == 0 && jc_ctrl->samsung_app == false && jc_ctrl->factory_bin == false) {
+ cam_err("3rd party app. skip ISP FW update\n");
+ goto start;
+ }
+
+ jc_ctrl->fw_update = false;
+
if (firmware_update_sdcard == true) {
cam_info("FW in sd card is higher priority than others!\n");
@@ -3128,7 +3126,7 @@ static int jc_sensor_power_up(struct msm
return -ENOSYS;
}
result_sensor_phone = jc_check_sensor_phone();
-
+
if (result_sensor_phone > 0) {
cam_info("Sensor > Phone, update from sensor\n");
jc_ctrl->isp_null_read_sensor_fw = true;
@@ -3188,6 +3186,7 @@ static int jc_sensor_power_up(struct msm
}
}
+start:
cam_info("nv12 output setting\n");
err = jc_writeb(JC_CATEGORY_CAPCTRL,
0x0, 0x0f);
@@ -3504,9 +3503,34 @@ static ssize_t jc_camera_check_fw_show(s
return sprintf(buf, "%s %s %s\n", sysfs_isp_fw_str, sysfs_phone_fw_str, sysfs_sensor_fw_str);
}
+static ssize_t jc_camera_check_app_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ return sprintf(buf, "%d\n", jc_ctrl->samsung_app);
+}
+
+static ssize_t jc_camera_check_app_store(struct device *dev,
+ struct device_attribute *attr, const char *buf, size_t size)
+{
+ unsigned long value = simple_strtoul(buf, NULL, 0);
+
+ CAM_DEBUG(" received value: %d\n", (int)value);
+
+ if (value == 0) {
+ jc_ctrl->samsung_app = false;
+ } else {
+ CAM_DEBUG(" samsung app");
+ jc_ctrl->samsung_app = true;
+ }
+
+ return size;
+}
+
static DEVICE_ATTR(rear_camtype, S_IRUGO, jc_camera_type_show, NULL);
static DEVICE_ATTR(rear_camfw, S_IRUGO, jc_camera_fw_show, NULL);
static DEVICE_ATTR(rear_checkfw, S_IRUGO, jc_camera_check_fw_show, NULL);
+static DEVICE_ATTR(rear_checkApp, S_IRUGO|S_IWUGO,
+ jc_camera_check_app_show, jc_camera_check_app_store);
int32_t jc_init_vreg_port(struct msm_sensor_ctrl_t *s_ctrl)
{
@@ -3655,6 +3679,8 @@ static int jc_i2c_probe(struct i2c_clien
s_ctrl->sensor_v4l2_subdev.devnode->num;
jc_ctrl->fw_update = true;
+ jc_ctrl->samsung_app = false;
+ jc_ctrl->factory_bin = false;
jc_ctrl->system_rev = s_ctrl->sensordata->sensor_platform_info->sys_rev();
/* to solve sleep current issue */
@@ -3724,7 +3750,13 @@ static int __init jc_init(void)
if (device_create_file
(cam_dev_rear, &dev_attr_rear_checkfw) < 0) {
cam_err("failed to create device file, %s\n",
- dev_attr_rear_camfw.attr.name);
+ dev_attr_rear_checkfw.attr.name);
+ }
+
+ if (device_create_file
+ (cam_dev_rear, &dev_attr_rear_checkApp) < 0) {
+ cam_err("failed to create device file, %s\n",
+ dev_attr_rear_checkApp.attr.name);
}
return i2c_add_driver(&jc_i2c_driver);
file:5f7029af863c84a47f114cf6e0652a21e02f922f -> file:6aa661debffabf1d28ee6748ea0d550acb0da21a
--- a/drivers/misc/max77693-muic.c
+++ b/drivers/misc/max77693-muic.c
@@ -2578,6 +2578,7 @@ static int __devinit max77693_muic_probe
MAX77693_MUIC_REG_CDETCTRL1, cdetctrl1);
pr_info("%s: CDETCTRL1(0x%02x)\n", __func__, cdetctrl1);
+
/* Show Register State */
max77693_muic_monitor_status();
@@ -2608,7 +2609,6 @@ static int __devinit max77693_muic_probe
INIT_DELAYED_WORK(&info->mhl_work, max77693_muic_mhl_detect);
schedule_delayed_work(&info->mhl_work, msecs_to_jiffies(25000));
-
return 0;
fail:
file:e558bcc907ccdae99c2b4df8c639e4145f8df684 -> file:566c827256e25fdc6146395f1276b4081066b271
--- a/drivers/misc/sec_param.c
+++ b/drivers/misc/sec_param.c
@@ -140,8 +140,8 @@ bool sec_get_param(enum sec_param_index
break;
case param_index_boot_alarm_value_h:
memcpy(value, &(param_data->boot_alarm_value_h), sizeof(unsigned int));
-#endif
break;
+#endif
default:
return false;
}
file:5715d130006c6cb872e044a14e325a97a337e105 -> file:7ed89ec1ea3a31954f7a7cb11789a5b8d68c2886
--- a/drivers/mmc/card/block.c
+++ b/drivers/mmc/card/block.c
@@ -1136,7 +1136,8 @@ retry:
goto out;
}
- if (mmc_can_sanitize(card))
+ if (mmc_can_sanitize(card) &&
+ (card->host->caps2 & MMC_CAP2_SANITIZE))
err = mmc_switch(card, EXT_CSD_CMD_SET_NORMAL,
EXT_CSD_SANITIZE_START, 1, 0);
out_retry:
file:e802920232360ba7a0ec1757619e32815f8527e5 -> file:357d714793dd972ffc163d916dffaa859298743d
--- a/drivers/mmc/host/msm_sdcc.c
+++ b/drivers/mmc/host/msm_sdcc.c
@@ -2618,7 +2618,7 @@ static int msmsdcc_setup_vreg(struct msm
#ifdef CONFIG_MMC_MSM_SDC4_SUPPORT
if (!enable) {
#if defined(CONFIG_MACH_JF_ATT) || defined(CONFIG_MACH_JF_TMO) || defined(CONFIG_MACH_JF_EUR) || \
- defined(CONFIG_MACH_JACTIVE_ATT)
+ defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
if (system_rev != BOARD_REV07) { /* TI Level Shifter */
if (system_rev < BOARD_REV08 && host->pdev_id == 4)
#else /* VZW/SPT/USCC */
@@ -2628,7 +2628,7 @@ static int msmsdcc_setup_vreg(struct msm
/* Disable level shifter */
gpio_set_value(60, 0); /* TFLASH_LS_EN */
#if defined(CONFIG_MACH_JF_ATT) || defined(CONFIG_MACH_JF_TMO) || defined(CONFIG_MACH_JF_EUR) || \
- defined(CONFIG_MACH_JACTIVE_ATT)
+ defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
else if (system_rev >= BOARD_REV08 && host->pdev_id == 2)
#else /* VZW/SPT/USCC/KOR */
else if (system_rev >= BOARD_REV09 && host->pdev_id == 2)
@@ -2664,7 +2664,7 @@ static int msmsdcc_setup_vreg(struct msm
if (enable) {
mdelay(1);
#if defined(CONFIG_MACH_JF_ATT) || defined(CONFIG_MACH_JF_TMO) || defined(CONFIG_MACH_JF_EUR) || \
- defined(CONFIG_MACH_JACTIVE_ATT)
+ defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
if (system_rev < BOARD_REV08 && host->pdev_id == 4)
#else /* VZW/SPT/USCC */
if (system_rev < BOARD_REV09 && host->pdev_id == 4)
@@ -2672,7 +2672,7 @@ static int msmsdcc_setup_vreg(struct msm
/* Enable level shifter */
gpio_set_value(60, 1); /* TFLASH_LS_EN */
#if defined(CONFIG_MACH_JF_ATT) || defined(CONFIG_MACH_JF_TMO) || defined(CONFIG_MACH_JF_EUR) || \
- defined(CONFIG_MACH_JACTIVE_ATT)
+ defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
else if (system_rev >= BOARD_REV08 && host->pdev_id == 2)
#else /* VZW/SPT/USCC/KOR */
else if (system_rev >= BOARD_REV09 && host->pdev_id == 2)
@@ -2688,7 +2688,7 @@ static int msmsdcc_setup_vreg(struct msm
} else {
mdelay(1);
#if defined(CONFIG_MACH_JF_ATT) || defined(CONFIG_MACH_JF_TMO) || defined(CONFIG_MACH_JF_EUR) || \
- defined(CONFIG_MACH_JACTIVE_ATT)
+ defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
if (system_rev == BOARD_REV07) { /* Toshiba Level Shifter */
if (system_rev < BOARD_REV08 && host->pdev_id == 4)
#else /* VZW/SPT/USCC */
@@ -6302,7 +6302,7 @@ msmsdcc_probe(struct platform_device *pd
#else
#if defined(CONFIG_MACH_JF_ATT) || defined(CONFIG_MACH_JF_TMO) || defined(CONFIG_MACH_JF_EUR) || \
- defined(CONFIG_MACH_JACTIVE_ATT)
+ defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
if (t_flash_detect_dev == NULL &&
(((host->pdev_id == 4) && (system_rev < BOARD_REV08)) ||
((host->pdev_id == 2) && (system_rev >= BOARD_REV08)))) {
file:40bc790bc58a2b37376ee4144ccf31b0a98c7f13 -> file:d3c05d7de15b12f70970b89015ec0b77bbffc735
--- a/drivers/net/wireless/bcmdhd/Makefile
+++ b/drivers/net/wireless/bcmdhd/Makefile
@@ -64,7 +64,11 @@ DHDCFLAGS += -DSUPPORT_SOFTAP_SINGL_DISA
DHDCFLAGS += -DUSE_STAMAC_4SOFTAP
# DPC priority
+ifeq ($(CONFIG_MACH_JF),y)
DHDCFLAGS += -DCUSTOM_DPC_PRIO_SETTING=49
+else
+DHDCFLAGS += -DCUSTOM_DPC_PRIO_SETTING=98
+endif
# WiFi turn off delay
DHDCFLAGS += -DWIFI_TURNOFF_DELAY=100
@@ -121,6 +125,9 @@ ifneq ($(CONFIG_BCM4335),)
DHDCFLAGS += -DWLTDLS
# DHDCFLAGS += -DTPUT_DEBUG
DHDCFLAGS += -DWLFBT
+ifeq ($(CONFIG_MACH_JF),y)
+ DHDCFLAGS += -DCUSTOM_TXGLOM_SIZE=32 -DDHD_TXBOUND=32
+endif
DHDCFLAGS += -DCUSTOM_MAX_TXGLOM_SIZE=32
# For BT LOCK
ifeq ($(CONFIG_BCM4335BT),y)
@@ -221,7 +228,10 @@ DHDCFLAGS += -include "dhd_sec_feature.h
# Others
#########
+ifneq ($(CONFIG_ARCH_EXYNOS),y)
+# Not needed in Exynos
EXTRA_LDFLAGS += --strip-debug
+endif
EXTRA_CFLAGS += $(DHDCFLAGS) -DDHD_DEBUG
EXTRA_CFLAGS += -DSRCBASE=\"$(src)\"
file:ea94da58d1454d6ab19bd79de4c7ec1d3e3194b2 -> file:16327a5fc0f041bdfac64dbab9dffc64d2f7a6d7
--- a/drivers/net/wireless/bcmdhd/aiutils.c
+++ b/drivers/net/wireless/bcmdhd/aiutils.c
@@ -229,16 +229,16 @@ ai_scan(si_t *sih, void *regs, uint devi
(mpd & MPD_MUI_MASK) >> MPD_MUI_SHIFT));
}
-
+
asd = get_asd(sih, &eromptr, 0, 0, AD_ST_SLAVE, &addrl, &addrh, &sizel, &sizeh);
if (asd == 0) {
do {
-
- asd = get_asd(sih, &eromptr, 0, 0, AD_ST_BRIDGE, &addrl, &addrh,
+
+ asd = get_asd(sih, &eromptr, 0, 0, AD_ST_BRIDGE, &addrl, &addrh,
&sizel, &sizeh);
- if (asd != 0)
- br = TRUE;
- else {
+ if (asd != 0)
+ br = TRUE;
+ else {
if (br == TRUE) {
break;
}
@@ -256,7 +256,7 @@ ai_scan(si_t *sih, void *regs, uint devi
}
sii->coresba[idx] = addrl;
sii->coresba_size[idx] = sizel;
-
+
j = 1;
do {
asd = get_asd(sih, &eromptr, 0, j, AD_ST_SLAVE, &addrl, &addrh,
file:9e3922bd3ae19cbdafc6d4585ac3cb20da3857af -> file:4e699708405a0b453c586d850839970a8ddba926
--- a/drivers/net/wireless/bcmdhd/bcmsdspi_linux.c
+++ b/drivers/net/wireless/bcmdhd/bcmsdspi_linux.c
@@ -2,13 +2,13 @@
* Broadcom SPI Host Controller Driver - Linux Per-port
*
* Copyright (C) 1999-2012, Broadcom Corporation
- *
+ *
* Unless you and Broadcom execute a separate written software license
* agreement governing use of this software, this software is licensed to you
* under the terms of the GNU General Public License version 2 (the "GPL"),
* available at http://www.broadcom.com/licenses/GPLv2.php, with the
* following added to such license:
- *
+ *
* As a special exception, the copyright holders of this software give you
* permission to link this software with independent modules, and to copy and
* distribute the resulting executable under terms of your choice, provided that
@@ -16,7 +16,7 @@
* the license of that module. An independent module is a module which is not
* derived from this software. The special exception does not apply to any
* modifications of the software.
- *
+ *
* Notwithstanding the above, under no circumstances may you combine this
* software in any way with any other Broadcom software provided under a license
* other than the GPL, without Broadcom's express prior written consent.
file:2dd7c10ba6059ea2f79764624d8336a51f858fad -> file:95b667370eae2278e604b08fb6459dc7c9fcac80
--- a/drivers/net/wireless/bcmdhd/bcmspibrcm.c
+++ b/drivers/net/wireless/bcmdhd/bcmspibrcm.c
@@ -2,13 +2,13 @@
* Broadcom BCMSDH to gSPI Protocol Conversion Layer
*
* Copyright (C) 1999-2012, Broadcom Corporation
- *
+ *
* Unless you and Broadcom execute a separate written software license
* agreement governing use of this software, this software is licensed to you
* under the terms of the GNU General Public License version 2 (the "GPL"),
* available at http://www.broadcom.com/licenses/GPLv2.php, with the
* following added to such license:
- *
+ *
* As a special exception, the copyright holders of this software give you
* permission to link this software with independent modules, and to copy and
* distribute the resulting executable under terms of your choice, provided that
@@ -16,7 +16,7 @@
* the license of that module. An independent module is a module which is not
* derived from this software. The special exception does not apply to any
* modifications of the software.
- *
+ *
* Notwithstanding the above, under no circumstances may you combine this
* software in any way with any other Broadcom software provided under a license
* other than the GPL, without Broadcom's express prior written consent.
@@ -72,7 +72,7 @@ extern void spi_sendrecv(sdioh_info_t *s
uint sd_msglevel = SDH_ERROR_VAL;
#else
uint sd_msglevel = 0;
-#endif
+#endif
uint sd_hiok = FALSE; /* Use hi-speed mode if available? */
uint sd_sdmode = SDIOH_MODE_SPI; /* Use SD4 mode by default */
@@ -336,7 +336,7 @@ enum {
};
const bcm_iovar_t sdioh_iovars[] = {
- {"sd_msglevel", IOV_MSGLEVEL, 0, IOVT_UINT32, 0 },
+ {"sd_msglevel", IOV_MSGLEVEL, 0, IOVT_UINT32, 0 },
{"sd_blocksize", IOV_BLOCKSIZE, 0, IOVT_UINT32, 0 }, /* ((fn << 16) | size) */
{"sd_dma", IOV_DMA, 0, IOVT_BOOL, 0 },
{"sd_ints", IOV_USEINTS, 0, IOVT_BOOL, 0 },
file:0cbc1cb80718b0c1d49c41fa0bc9e314da963297 -> file:45bde7c0f6fb869df5b4c703cab7daeef12fd87e
--- a/drivers/net/wireless/bcmdhd/bcmwifi_channels.c
+++ b/drivers/net/wireless/bcmdhd/bcmwifi_channels.c
@@ -884,7 +884,7 @@ wf_channel2chspec(uint ctl_ch, uint bw)
}
}
-
+
if (sb < 0) {
return 0;
}
file:d9884132443c2cefbd559bef477c09430cb9d628 -> file:c0998262bf9360829dc1cdcf97ee35289f657a8a
--- a/drivers/net/wireless/bcmdhd/bcmwifi_channels.h
+++ b/drivers/net/wireless/bcmdhd/bcmwifi_channels.h
@@ -86,7 +86,7 @@ typedef uint16 chanspec_t;
((channel) + CH_10MHZ_APART) : 0)
#define LL_20_SB(channel) (((channel) > 3 * CH_10MHZ_APART) ? ((channel) - 3 * CH_10MHZ_APART) : 0)
-#define UU_20_SB(channel) (((channel) < (MAXCHANNEL - 3 * CH_10MHZ_APART)) ? \
+#define UU_20_SB(channel) (((channel) < (MAXCHANNEL - 3 * CH_10MHZ_APART)) ? \
((channel) + 3 * CH_10MHZ_APART) : 0)
#define LU_20_SB(channel) LOWER_20_SB(channel)
#define UL_20_SB(channel) UPPER_20_SB(channel)
@@ -191,7 +191,7 @@ typedef uint16 chanspec_t;
((channel) + CH_10MHZ_APART) : 0)
#define LL_20_SB(channel) (((channel) > 3 * CH_10MHZ_APART) ? ((channel) - 3 * CH_10MHZ_APART) : 0)
-#define UU_20_SB(channel) (((channel) < (MAXCHANNEL - 3 * CH_10MHZ_APART)) ? \
+#define UU_20_SB(channel) (((channel) < (MAXCHANNEL - 3 * CH_10MHZ_APART)) ? \
((channel) + 3 * CH_10MHZ_APART) : 0)
#define LU_20_SB(channel) LOWER_20_SB(channel)
#define UL_20_SB(channel) UPPER_20_SB(channel)
file:213fb93a2f107485fc70a65c0192a83b30165e04 -> file:57e082a06cacf4965da27985ca32f8f4790e256d
--- a/drivers/net/wireless/bcmdhd/bcmwifi_rates.h
+++ b/drivers/net/wireless/bcmdhd/bcmwifi_rates.h
@@ -296,9 +296,9 @@ typedef enum clm_rates {
WL_RATE_3X3_VHT9SS3 = 115,
-
-
+
+
WL_RATE_1X2_TXBF_OFDM_6 = 116,
WL_RATE_1X2_TXBF_OFDM_9 = 117,
@@ -329,7 +329,7 @@ typedef enum clm_rates {
WL_RATE_1X2_TXBF_VHT8SS1 = 132,
WL_RATE_1X2_TXBF_VHT9SS1 = 133,
-
+
WL_RATE_2X2_TXBF_SDM_MCS8 = 134,
WL_RATE_2X2_TXBF_SDM_MCS9 = 135,
@@ -352,7 +352,7 @@ typedef enum clm_rates {
-
+
WL_RATE_1X3_TXBF_OFDM_6 = 142,
WL_RATE_1X3_TXBF_OFDM_9 = 143,
@@ -383,7 +383,7 @@ typedef enum clm_rates {
WL_RATE_1X3_TXBF_VHT8SS1 = 158,
WL_RATE_1X3_TXBF_VHT9SS1 = 159,
-
+
WL_RATE_2X3_TXBF_SDM_MCS8 = 160,
WL_RATE_2X3_TXBF_SDM_MCS9 = 161,
@@ -405,7 +405,7 @@ typedef enum clm_rates {
WL_RATE_2X3_TXBF_VHT8SS2 = 168,
WL_RATE_2X3_TXBF_VHT9SS2 = 169,
-
+
WL_RATE_3X3_TXBF_SDM_MCS16 = 170,
WL_RATE_3X3_TXBF_SDM_MCS17 = 171,
file:9e405b038f2192eeaf4704a7ef4325a7d51c7f45 -> file:d5d23c075b8a2b950baaca4a8376a951ecb8b5a3
--- a/drivers/net/wireless/bcmdhd/dhd_cdc.c
+++ b/drivers/net/wireless/bcmdhd/dhd_cdc.c
@@ -21,7 +21,7 @@
* software in any way with any other Broadcom software provided under a license
* other than the GPL, without Broadcom's express prior written consent.
*
- * $Id: dhd_cdc.c 390461 2013-03-12 07:21:34Z $
+ * $Id: dhd_cdc.c 391745 2013-03-19 08:35:39Z $
*
* BDC is like CDC, except it includes a header for data packets to convey
* packet priority over the bus, and flags (e.g. to indicate checksum status
file:ff8e6345a6912ac1b4fe801c3ac8f939a8d8022a -> file:ebb0f1b3ae520917741392f5663b737f7868ff27
--- a/drivers/net/wireless/bcmdhd/dhd_linux.c
+++ b/drivers/net/wireless/bcmdhd/dhd_linux.c
@@ -2290,7 +2290,10 @@ dhd_dpc_thread(void *data)
#endif
#ifdef CUSTOM_DPC_CPUCORE
- set_cpus_allowed_ptr(current, cpumask_of(CUSTOM_DPC_CPUCORE));
+#ifdef CONFIG_MACH_UNIVERSAL5410
+ if (strstr(fw_path, "_apsta") == NULL)
+#endif
+ set_cpus_allowed_ptr(current, cpumask_of(CUSTOM_DPC_CPUCORE));
#endif
/* Run until signal received */
@@ -5922,7 +5925,7 @@ int dhd_os_send_hang_message(dhd_pub_t *
if (!dhdp->hang_was_sent) {
dhdp->hang_was_sent = 1;
ret = schedule_work(&dhdp->info->work_hang);
- if(!ret)
+ if (!ret)
DHD_ERROR(("%s : schedule_task fail \n",__FUNCTION__));
else
DHD_ERROR(("%s : schedule_task success \n",__FUNCTION__));
file:933a78a1916aaaf251c0a644885636835434e757 -> file:5c4a8c156f3b911aad4deca3fb458ef73aabc4c0
--- a/drivers/net/wireless/bcmdhd/dhd_sec_feature.h
+++ b/drivers/net/wireless/bcmdhd/dhd_sec_feature.h
@@ -63,12 +63,6 @@
#define WIFI_TURNOFF_DELAY 200
#endif /* CONFIG_ARCH_MSM8960 */
-#ifdef CONFIG_MACH_JF
-#undef CUSTOM_TXGLOM_SIZE
-#define CUSTOM_TXGLOM_SIZE 32
-#define DHD_TXBOUND 32
-#endif /* CONFIG_MACH_JF */
-
#if defined(CONFIG_BCM4335) || defined (CONFIG_BCM4335_MODULE)
#define POWERUP_MAX_RETRY 5 /* Due to late start-up of FPGA in JF project */
#endif /* CONFIG_BCM4335 || CONFIG_BCM4335_MODULE */
file:26da752186a20ba2d12c340716b19b577b346c4d -> file:a0610edf9883d3b41d59c56f30398899ee0cbf50
--- a/drivers/net/wireless/bcmdhd/include/bcm_cfg.h
+++ b/drivers/net/wireless/bcmdhd/include/bcm_cfg.h
@@ -21,7 +21,7 @@
* software in any way with any other Broadcom software provided under a license
* other than the GPL, without Broadcom's express prior written consent.
*
- * $Id: bcm_cfg.h 294399 2011-11-07 03:31:22Z $
+ * $Id: bcm_cfg.h 351867 2012-08-21 18:46:16Z $
*/
#ifndef _bcm_cfg_h_
file:50e693a640611e6e54866fc2a536a38c46290a99 -> file:01762fde6019d2aa3e68054e213a262dfa487ffd
--- a/drivers/net/wireless/bcmdhd/include/bcmdevs.h
+++ b/drivers/net/wireless/bcmdhd/include/bcmdevs.h
@@ -152,25 +152,25 @@
#define BCM43131_D11N2G_ID 0x43aa
#define BCM4314_D11N2G_ID 0x4364
#define BCM43142_D11N2G_ID 0x4365
-#define BCM43143_D11N2G_ID 0x4366
+#define BCM43143_D11N2G_ID 0x4366
#define BCM4334_D11N_ID 0x4380
#define BCM4334_D11N2G_ID 0x4381
#define BCM4334_D11N5G_ID 0x4382
-#define BCM43342_D11N_ID 0x4383
-#define BCM43342_D11N2G_ID 0x4384
-#define BCM43342_D11N5G_ID 0x4385
-#define BCM43341_D11N_ID 0x4386
-#define BCM43341_D11N2G_ID 0x4387
-#define BCM43341_D11N5G_ID 0x4388
+#define BCM43342_D11N_ID 0x4383
+#define BCM43342_D11N2G_ID 0x4384
+#define BCM43342_D11N5G_ID 0x4385
+#define BCM43341_D11N_ID 0x4386
+#define BCM43341_D11N2G_ID 0x4387
+#define BCM43341_D11N5G_ID 0x4388
#define BCM4360_D11AC_ID 0x43a0
#define BCM4360_D11AC2G_ID 0x43a1
#define BCM4360_D11AC5G_ID 0x43a2
#define BCM4335_D11AC_ID 0x43ae
#define BCM4335_D11AC2G_ID 0x43af
#define BCM4335_D11AC5G_ID 0x43b0
-#define BCM4352_D11AC_ID 0x43b1
-#define BCM4352_D11AC2G_ID 0x43b2
-#define BCM4352_D11AC5G_ID 0x43b3
+#define BCM4352_D11AC_ID 0x43b1
+#define BCM4352_D11AC2G_ID 0x43b2
+#define BCM4352_D11AC5G_ID 0x43b3
#define BCM943228HMB_SSID_VEN1 0x0607
@@ -178,11 +178,11 @@
#define BCM94313HMG_SSID_VEN1 0x0609
#define BCM943142HM_SSID_VEN1 0x0611
-#define BCM43143_D11N2G_ID 0x4366
+#define BCM43143_D11N2G_ID 0x4366
-#define BCM43242_D11N_ID 0x4367
-#define BCM43242_D11N2G_ID 0x4368
-#define BCM43242_D11N5G_ID 0x4369
+#define BCM43242_D11N_ID 0x4367
+#define BCM43242_D11N2G_ID 0x4368
+#define BCM43242_D11N5G_ID 0x4369
#define BCM4350_D11AC_ID 0x43a3
#define BCM4350_D11AC2G_ID 0x43a4
@@ -225,8 +225,8 @@
#define BCM47XX_GIGETH_ID 0x471f
#define BCM4712_MIPS_ID 0x4720
#define BCM4716_DEVICE_ID 0x4722
-#define BCM47XX_USB30H_ID 0x472a
-#define BCM47XX_USB30D_ID 0x472b
+#define BCM47XX_USB30H_ID 0x472a
+#define BCM47XX_USB30D_ID 0x472b
#define BCM47XX_SMBUS_EMU_ID 0x47fe
#define BCM47XX_XOR_EMU_ID 0x47ff
#define EPI41210_DEVICE_ID 0xa0fa
@@ -282,26 +282,26 @@
#define BCM6362_CHIP_ID 0x6362
#define BCM4314_CHIP_ID 0x4314
#define BCM43142_CHIP_ID 43142
-#define BCM43143_CHIP_ID 43143
+#define BCM43143_CHIP_ID 43143
#define BCM4324_CHIP_ID 0x4324
#define BCM43242_CHIP_ID 43242
-#define BCM43243_CHIP_ID 43243
+#define BCM43243_CHIP_ID 43243
#define BCM4334_CHIP_ID 0x4334
-#define BCM4335_CHIP_ID 0x4335
+#define BCM4335_CHIP_ID 0x4335
#define BCM4360_CHIP_ID 0x4360
#define BCM4352_CHIP_ID 0x4352
#define BCM43526_CHIP_ID 0xAA06
-#define BCM43341_CHIP_ID 43341
-#define BCM43342_CHIP_ID 43342
+#define BCM43341_CHIP_ID 43341
+#define BCM43342_CHIP_ID 43342
#define BCM4335_CHIP_ID 0x4335
-#define BCM4350_CHIP_ID 0x4350
+#define BCM4350_CHIP_ID 0x4350
#define BCM4342_CHIP_ID 4342
#define BCM4402_CHIP_ID 0x4402
#define BCM4704_CHIP_ID 0x4704
#define BCM4706_CHIP_ID 0x5300
-#define BCM4707_CHIP_ID 53010
-#define BCM53018_CHIP_ID 53018
+#define BCM4707_CHIP_ID 53010
+#define BCM53018_CHIP_ID 53018
#define BCM4707_CHIP(chipid) (((chipid) == BCM4707_CHIP_ID) || ((chipid) == BCM53018_CHIP_ID))
#define BCM4710_CHIP_ID 0x4710
#define BCM4712_CHIP_ID 0x4712
@@ -364,17 +364,17 @@
#define BCM4314SDIO_FPBGA_PKG_ID (8 | 4)
#define BCM4314DEV_PKG_ID (8 | 6)
-#define BCM4707_PKG_ID 1
-#define BCM4708_PKG_ID 2
-#define BCM4709_PKG_ID 0
+#define BCM4707_PKG_ID 1
+#define BCM4708_PKG_ID 2
+#define BCM4709_PKG_ID 0
#define PCIXX21_FLASHMEDIA0_ID 0x8033
#define PCIXX21_SDIOH0_ID 0x8034
-#define BCM4335_WLCSP_PKG_ID (0x0)
-#define BCM4335_FCBGA_PKG_ID (0x1)
-#define BCM4335_WLBGA_PKG_ID (0x2)
-#define BCM4335_FCBGAD_PKG_ID (0x3)
+#define BCM4335_WLCSP_PKG_ID (0x0)
+#define BCM4335_FCBGA_PKG_ID (0x1)
+#define BCM4335_WLBGA_PKG_ID (0x2)
+#define BCM4335_FCBGAD_PKG_ID (0x3)
#define BCM4335_PKG_MASK (0x3)
@@ -389,7 +389,7 @@
#define BFL_CCKHIPWR 0x00000040
#define BFL_ENETADM 0x00000080
#define BFL_ENETVLAN 0x00000100
-#define BFL_LTECOEX 0x00000200
+#define BFL_LTECOEX 0x00000200
#define BFL_NOPCI 0x00000400
#define BFL_FEM 0x00000800
#define BFL_EXTLNA 0x00001000
@@ -404,7 +404,7 @@
#define BFL_PHASESHIFT 0x00100000
#define BFL_BUCKBOOST 0x00200000
#define BFL_FEM_BT 0x00400000
-#define BFL_RXCHAIN_OFF_BT 0x00400000
+#define BFL_RXCHAIN_OFF_BT 0x00400000
#define BFL_NOCBUCK 0x00800000
#define BFL_CCKFAVOREVM 0x01000000
#define BFL_PALDO 0x02000000
@@ -413,7 +413,7 @@
#define BFL_UCPWRCTL_MININDX 0x08000000
#define BFL_EXTLNA_5GHz 0x10000000
#define BFL_TRSW_1by2 0x20000000
-#define BFL_GAINBOOSTA01 0x20000000
+#define BFL_GAINBOOSTA01 0x20000000
#define BFL_LO_TRSW_R_5GHz 0x40000000
#define BFL_ELNA_GAINDEF 0x80000000
#define BFL_EXTLNA_TX 0x20000000
@@ -446,8 +446,8 @@
#define BFL2_ANAPACTRL_2G 0x00100000
#define BFL2_ANAPACTRL_5G 0x00200000
#define BFL2_ELNACTRL_TRSW_2G 0x00400000
-#define BFL2_BT_SHARE_ANT0 0x00800000
-#define BFL2_BT_SHARE_BM_BIT0 0x00800000
+#define BFL2_BT_SHARE_ANT0 0x00800000
+#define BFL2_BT_SHARE_BM_BIT0 0x00800000
#define BFL2_TEMPSENSE_HIGHER 0x01000000
#define BFL2_BTC3WIREONLY 0x02000000
#define BFL2_PWR_NOMINAL 0x04000000
@@ -455,31 +455,31 @@
#define BFL2_4313_RADIOREG 0x10000000
-#define BFL2_DYNAMIC_VMID 0x10000000
+#define BFL2_DYNAMIC_VMID 0x10000000
#define BFL2_SDR_EN 0x20000000
-#define BFL2_DYNAMIC_VMID 0x10000000
-#define BFL2_BT_SHARE_BM_BIT1 0x40000000
+#define BFL2_DYNAMIC_VMID 0x10000000
+#define BFL2_BT_SHARE_BM_BIT1 0x40000000
-#define BFL_SROM11_BTCOEX 0x00000001
-#define BFL_SROM11_WLAN_BT_SH_XTL 0x00000002
-#define BFL_SROM11_EXTLNA 0x00001000
-#define BFL_SROM11_EXTLNA_5GHz 0x10000000
-#define BFL_SROM11_GAINBOOSTA01 0x20000000
-#define BFL2_SROM11_APLL_WAR 0x00000002
-#define BFL2_SROM11_ANAPACTRL_2G 0x00100000
-#define BFL2_SROM11_ANAPACTRL_5G 0x00200000
-
-
-#define BFL3_FEMCTRL_SUB 0x00000007
-#define BFL3_RCAL_WAR 0x00000008
-#define BFL3_TXGAINTBLID 0x00000070
-#define BFL3_TXGAINTBLID_SHIFT 0x4
-#define BFL3_TSSI_DIV_WAR 0x00000080
-#define BFL3_TSSI_DIV_WAR_SHIFT 0x7
-#define BFL3_FEMTBL_FROM_NVRAM 0x00000100
-#define BFL3_FEMTBL_FROM_NVRAM_SHIFT 0x8
+#define BFL_SROM11_BTCOEX 0x00000001
+#define BFL_SROM11_WLAN_BT_SH_XTL 0x00000002
+#define BFL_SROM11_EXTLNA 0x00001000
+#define BFL_SROM11_EXTLNA_5GHz 0x10000000
+#define BFL_SROM11_GAINBOOSTA01 0x20000000
+#define BFL2_SROM11_APLL_WAR 0x00000002
+#define BFL2_SROM11_ANAPACTRL_2G 0x00100000
+#define BFL2_SROM11_ANAPACTRL_5G 0x00200000
+
+
+#define BFL3_FEMCTRL_SUB 0x00000007
+#define BFL3_RCAL_WAR 0x00000008
+#define BFL3_TXGAINTBLID 0x00000070
+#define BFL3_TXGAINTBLID_SHIFT 0x4
+#define BFL3_TSSI_DIV_WAR 0x00000080
+#define BFL3_TSSI_DIV_WAR_SHIFT 0x7
+#define BFL3_FEMTBL_FROM_NVRAM 0x00000100
+#define BFL3_FEMTBL_FROM_NVRAM_SHIFT 0x8
#define BOARD_GPIO_BTC3W_IN 0x850
file:ba22becea6af6ffa91bd28f866fbf9b0034c214c -> file:653dd7731708765eccdf48912ccd6c8c6e3489e6
--- a/drivers/net/wireless/bcmdhd/include/bcmnvram.h
+++ b/drivers/net/wireless/bcmdhd/include/bcmnvram.h
@@ -129,7 +129,7 @@ extern int nvram_space;
#endif
#define MAX_NVRAM_SPACE NVRAM_SPACE
#define ROM_ENVRAM_SPACE 0x1000
-#define NVRAM_LZMA_MAGIC 0x4c5a4d41
+#define NVRAM_LZMA_MAGIC 0x4c5a4d41
#define NVRAM_MAX_VALUE_LEN 255
#define NVRAM_MAX_PARAM_LEN 64
file:2b5adf10bd136c2f1a8842d768101bb8d07f98a4 -> file:1fa2e84f7a7bb0b2e5dfff1a6298dbea9b853682
--- a/drivers/net/wireless/bcmdhd/include/bcmsdstd.h
+++ b/drivers/net/wireless/bcmdhd/include/bcmsdstd.h
@@ -21,7 +21,7 @@
* software in any way with any other Broadcom software provided under a license
* other than the GPL, without Broadcom's express prior written consent.
*
- * $Id: bcmsdstd.h 343301 2012-07-06 13:07:32Z $
+ * $Id: bcmsdstd.h 372377 2012-12-03 12:24:59Z $
*/
#ifndef _BCM_SD_STD_H
#define _BCM_SD_STD_H
file:cb49421e49c956413224b728210753fe0c605509 -> file:8e8bf47b722d2d26f514437370b8b31f8756fd41
--- a/drivers/net/wireless/bcmdhd/include/bcmsrom_tbl.h
+++ b/drivers/net/wireless/bcmdhd/include/bcmsrom_tbl.h
@@ -69,7 +69,7 @@ static const sromvar_t pci_sromvars[] =
{"devid", 0xffffff00, SRFL_PRHEX, PCI_F0DEVID, 0xffff},
#else
{"devid", 0xffffff00, SRFL_PRHEX|SRFL_NOVAR, PCI_F0DEVID, 0xffff},
-#endif
+#endif
{"boardrev", 0x0000000e, SRFL_PRHEX, SROM_AABREV, SROM_BR_MASK},
{"boardrev", 0x000000f0, SRFL_PRHEX, SROM4_BREV, 0xffff},
{"boardrev", 0xffffff00, SRFL_PRHEX, SROM8_BREV, 0xffff},
@@ -494,7 +494,7 @@ static const sromvar_t pci_sromvars[] =
{"tempsense_slope", 0xfffff800, SRFL_PRHEX, SROM11_TS_SLP_OPT_CORRX, 0x00ff},
{"tempcorrx", 0xfffff800, SRFL_PRHEX, SROM11_TS_SLP_OPT_CORRX, 0xfc00},
{"tempsense_option", 0xfffff800, SRFL_PRHEX, SROM11_TS_SLP_OPT_CORRX, 0x0300},
- {"xtalfreq", 0xfffff800, 0, SROM11_XTAL_FREQ, 0xffff},
+ {"xtalfreq", 0xfffff800, 0, SROM11_XTAL_FREQ, 0xffff},
{"phycal_tempdelta", 0xfffff800, 0, SROM11_PHYCAL_TEMPDELTA, 0x00ff},
{"temps_period", 0xfffff800, 0, SROM11_PHYCAL_TEMPDELTA, 0x0f00},
{"temps_hysteresis", 0xfffff800, 0, SROM11_PHYCAL_TEMPDELTA, 0xf000},
@@ -544,7 +544,7 @@ static const sromvar_t pci_sromvars[] =
{"mcslr5glpo", 0xfffff800, 0, SROM11_MCSLR5GLPO, 0xffff},
{"mcslr5gmpo", 0xfffff800, 0, SROM11_MCSLR5GMPO, 0xffff},
{"mcslr5ghpo", 0xfffff800, 0, SROM11_MCSLR5GHPO, 0xffff},
- {"sb20in40hrpo", 0xfffff800, 0, SROM11_SB20IN40HRPO, 0xffff},
+ {"sb20in40hrpo", 0xfffff800, 0, SROM11_SB20IN40HRPO, 0xffff},
{"sb20in80and160hr5glpo", 0xfffff800, 0, SROM11_SB20IN80AND160HR5GLPO, 0xffff},
{"sb40and80hr5glpo", 0xfffff800, 0, SROM11_SB40AND80HR5GLPO, 0xffff},
{"sb20in80and160hr5gmpo", 0xfffff800, 0, SROM11_SB20IN80AND160HR5GMPO, 0xffff},
@@ -596,11 +596,11 @@ static const sromvar_t pci_sromvars[] =
{"", 0xfffff800, SRFL_ARRAY, SROM11_RXGAINERR_5GM, 0xf800},
{"", 0xfffff800, SRFL_ARRAY, SROM11_RXGAINERR_5GH, 0xf800},
{"", 0xfffff800, 0, SROM11_RXGAINERR_5GU, 0xf800},
- {"rpcal2g", 0xfffff800, 0, SROM11_RPCAL_2G, 0xffff},
- {"rpcal5gb0", 0xfffff800, 0, SROM11_RPCAL_5GL, 0xffff},
- {"rpcal5gb1", 0xfffff800, 0, SROM11_RPCAL_5GM, 0xffff},
- {"rpcal5gb2", 0xfffff800, 0, SROM11_RPCAL_5GH, 0xffff},
- {"rpcal5gb3", 0xfffff800, 0, SROM11_RPCAL_5GU, 0xffff},
+ {"rpcal2g", 0xfffff800, 0, SROM11_RPCAL_2G, 0xffff},
+ {"rpcal5gb0", 0xfffff800, 0, SROM11_RPCAL_5GL, 0xffff},
+ {"rpcal5gb1", 0xfffff800, 0, SROM11_RPCAL_5GM, 0xffff},
+ {"rpcal5gb2", 0xfffff800, 0, SROM11_RPCAL_5GH, 0xffff},
+ {"rpcal5gb3", 0xfffff800, 0, SROM11_RPCAL_5GU, 0xffff},
{NULL, 0, 0, 0, 0}
};
@@ -903,7 +903,7 @@ static const cis_tuple_t cis_hnbuvars[]
"0rxgains5gelnagaina2 0rxgains2gtrelnabypa2 0rxgains2gtrisoa2 0rxgains2gelnagaina2 "
"0rxgains5ghtrelnabypa2 0rxgains5ghtrisoa2 0rxgains5ghelnagaina2 0rxgains5gmtrelnabypa2 "
"0rxgains5gmtrisoa2 0rxgains5gmelnagaina2"}, /* special case */
- {HNBU_TXDUTY, 0xfffff800, 9, "2tx_duty_cycle_ofdm_40_5g "
+ {HNBU_TXDUTY, 0xfffff800, 9, "2tx_duty_cycle_ofdm_40_5g "
"2tx_duty_cycle_thresh_40_5g 2tx_duty_cycle_ofdm_80_5g 2tx_duty_cycle_thresh_80_5g"},
{HNBU_PDOFF_2G, 0xfffff800, 3, "0pdoffset2g40ma0 0pdoffset2g40ma1 "
"0pdoffset2g40ma2 0pdoffset2g40mvalid"},
file:1b21327b2e0866e463911cc8f36e98a41a061267 -> file:000651b6774798d48193b89f5ab8efe14219d1d1
--- a/drivers/net/wireless/bcmdhd/include/bcmutils.h
+++ b/drivers/net/wireless/bcmdhd/include/bcmutils.h
@@ -121,8 +121,8 @@ typedef struct {
uint32 max_avail;
uint32 max_used;
uint32 queue_capacity;
- uint32 rtsfail;
- uint32 acked;
+ uint32 rtsfail;
+ uint32 acked;
} pktq_counters_t;
#endif
@@ -139,9 +139,9 @@ struct pktq {
struct pktq_prec q[PKTQ_MAX_PREC];
#ifdef PKTQ_LOG
- pktq_counters_t _prec_cnt[PKTQ_MAX_PREC];
- pktq_counters_t _prec_bytes[PKTQ_MAX_PREC];
- uint32 _logtime;
+ pktq_counters_t _prec_cnt[PKTQ_MAX_PREC];
+ pktq_counters_t _prec_bytes[PKTQ_MAX_PREC];
+ uint32 _logtime;
#endif
};
@@ -578,19 +578,19 @@ extern int bcm_format_ssid(char* buf, co
#ifndef LIMIT_TO_RANGE
#define LIMIT_TO_RANGE(x, min, max) \
((x) < (min) ? (min) : ((x) > (max) ? (max) : (x)))
-#endif
+#endif
#ifndef LIMIT_TO_MAX
#define LIMIT_TO_MAX(x, max) \
(((x) > (max) ? (max) : (x)))
-#endif
+#endif
#ifndef LIMIT_TO_MIN
#define LIMIT_TO_MIN(x, min) \
(((x) < (min) ? (min) : (x)))
-#endif
+#endif
#define CEIL(x, y) (((x) + ((y) - 1)) / (y))
#define ROUNDUP(x, y) ((((x) + ((y) - 1)) / (y)) * (y))
@@ -622,7 +622,7 @@ extern void *_bcmutils_dummy_fn;
#ifndef setbit
-#ifndef NBBY
+#ifndef NBBY
#define NBBY 8
#endif
#define setbit(a, i) (((uint8 *)a)[(i) / NBBY] |= 1 << ((i) % NBBY))
@@ -689,7 +689,7 @@ extern void *_bcmutils_dummy_fn;
#else
#define MACDBG "%02x:%02x:%02x"
#define MAC2STRDBG(ea) (ea)[0], (ea)[4], (ea)[5]
-#endif
+#endif
typedef struct bcm_bit_desc {
file:c41def6c7d8abf92a47c8a349abf68d924b62320 -> file:810795ad57983d9e4414dc0345c39000b91e8d1e
--- a/drivers/net/wireless/bcmdhd/include/hndpmu.h
+++ b/drivers/net/wireless/bcmdhd/include/hndpmu.h
@@ -21,7 +21,7 @@
* software in any way with any other Broadcom software provided under a license
* other than the GPL, without Broadcom's express prior written consent.
*
- * $Id: hndpmu.h 241182 2011-02-17 21:50:03Z $
+ * $Id: hndpmu.h 344142 2012-07-11 10:50:39Z $
*/
#ifndef _hndpmu_h_
file:149b74002f2019d98ce1c1d8264c053312e2936a -> file:a8cb086fa5f7a83fa57f566117351f89944e8fb7
--- a/drivers/net/wireless/bcmdhd/include/linuxver.h
+++ b/drivers/net/wireless/bcmdhd/include/linuxver.h
@@ -22,7 +22,7 @@
* software in any way with any other Broadcom software provided under a license
* other than the GPL, without Broadcom's express prior written consent.
*
- * $Id: linuxver.h 367714 2012-11-09 03:26:01Z $
+ * $Id: linuxver.h 387186 2013-02-24 08:45:22Z $
*/
#ifndef _linuxver_h_
@@ -95,20 +95,20 @@
#ifndef flush_scheduled_work
#define flush_scheduled_work() flush_scheduled_tasks()
#endif
-#endif
+#endif
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0))
#define DAEMONIZE(a) daemonize(a); \
allow_signal(SIGKILL); \
allow_signal(SIGTERM);
-#else
+#else
#define RAISE_RX_SOFTIRQ() \
cpu_raise_softirq(smp_processor_id(), NET_RX_SOFTIRQ)
#define DAEMONIZE(a) daemonize(); \
do { if (a) \
strncpy(current->comm, a, MIN(sizeof(current->comm), (strlen(a)))); \
} while (0);
-#endif
+#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 19)
#define MY_INIT_WORK(_work, _func) INIT_WORK(_work, _func)
@@ -510,7 +510,6 @@ typedef struct {
#define SMP_RD_BARRIER_DEPENDS(x) smp_rmb(x)
#endif
-
#ifdef USE_KTHREAD_API
#define PROC_START(thread_func, owner, tsk_ctl, flags, name) \
{ \
file:b7173fdf5f908b8a4723ebdbcfd9d0ec15863c4a -> file:e59cc00a0c3363d4ec1ddc015c5c7a3d4c4fb0b8
--- a/drivers/net/wireless/bcmdhd/include/osl.h
+++ b/drivers/net/wireless/bcmdhd/include/osl.h
@@ -87,7 +87,7 @@ typedef void (*osl_wreg_fn_t)(void *ctx
#define FOREACH_CHAINED_PKT(skb, nskb) \
for ((nskb) = NULL; (skb) != NULL; (skb) = (nskb))
#define PKTCFREE PKTFREE
-#endif
+#endif
#ifndef HNDCTF
#define PKTSETCHAINED(osh, skb)
file:aca93169f3fd91f04f56f5ec164a83be25e9f076 -> file:ec8afc1b744ce462955ab9e632cd3c6a59f97324
--- a/drivers/net/wireless/bcmdhd/include/proto/802.11.h
+++ b/drivers/net/wireless/bcmdhd/include/proto/802.11.h
@@ -412,28 +412,28 @@ BWL_PRE_PACKED_STRUCT struct dot11y_acti
BWL_PRE_PACKED_STRUCT struct dot11_wide_bw_channel_switch {
- uint8 id;
- uint8 len;
- uint8 channel_width;
- uint8 center_frequency_segment_0;
- uint8 center_frequency_segment_1;
+ uint8 id;
+ uint8 len;
+ uint8 channel_width;
+ uint8 center_frequency_segment_0;
+ uint8 center_frequency_segment_1;
} BWL_POST_PACKED_STRUCT;
typedef struct dot11_wide_bw_channel_switch dot11_wide_bw_chan_switch_ie_t;
-#define DOT11_WIDE_BW_SWITCH_IE_LEN 3
+#define DOT11_WIDE_BW_SWITCH_IE_LEN 3
BWL_PRE_PACKED_STRUCT struct dot11_channel_switch_wrapper {
- uint8 id;
- uint8 len;
+ uint8 id;
+ uint8 len;
dot11_wide_bw_chan_switch_ie_t wb_chan_switch_ie;
} BWL_POST_PACKED_STRUCT;
typedef struct dot11_channel_switch_wrapper dot11_chan_switch_wrapper_ie_t;
BWL_PRE_PACKED_STRUCT struct dot11_vht_transmit_power_envelope {
- uint8 id;
- uint8 len;
+ uint8 id;
+ uint8 len;
uint8 transmit_power_info;
uint8 local_max_transmit_power_20;
} BWL_POST_PACKED_STRUCT;
@@ -499,7 +499,7 @@ typedef struct dot11_extcap dot11_extcap
#define DOT11_MEASURE_TYPE_NOISE 4
#define DOT11_MEASURE_TYPE_BEACON 5
#define DOT11_MEASURE_TYPE_FRAME 6
-#define DOT11_MEASURE_TYPE_STAT 7
+#define DOT11_MEASURE_TYPE_STAT 7
#define DOT11_MEASURE_TYPE_LCI 8
#define DOT11_MEASURE_TYPE_TXSTREAM 9
#define DOT11_MEASURE_TYPE_PAUSE 255
@@ -1090,7 +1090,7 @@ typedef struct ti_ie ti_ie_t;
#define DOT11_MNG_EXT_RATES_ID 50
#define DOT11_MNG_AP_CHREP_ID 51
#define DOT11_MNG_NBR_REP_ID 52
-#define DOT11_MNG_RCPI_ID 53
+#define DOT11_MNG_RCPI_ID 53
#define DOT11_MNG_MDIE_ID 54
#define DOT11_MNG_FTIE_ID 55
#define DOT11_MNG_FT_TI_ID 56
@@ -1098,20 +1098,20 @@ typedef struct ti_ie ti_ie_t;
#define DOT11_MNG_EXT_CSA_ID 60
#define DOT11_MNG_HT_ADD 61
#define DOT11_MNG_EXT_CHANNEL_OFFSET 62
-#define DOT11_MNG_BSS_AVR_ACCESS_DELAY_ID 63
-#define DOT11_MNG_ANTENNA_ID 64
-#define DOT11_MNG_RSNI_ID 65
-#define DOT11_MNG_MEASUREMENT_PILOT_TX_ID 66
-#define DOT11_MNG_BSS_AVAL_ADMISSION_CAP_ID 67
-#define DOT11_MNG_BSS_AC_ACCESS_DELAY_ID 68
+#define DOT11_MNG_BSS_AVR_ACCESS_DELAY_ID 63
+#define DOT11_MNG_ANTENNA_ID 64
+#define DOT11_MNG_RSNI_ID 65
+#define DOT11_MNG_MEASUREMENT_PILOT_TX_ID 66
+#define DOT11_MNG_BSS_AVAL_ADMISSION_CAP_ID 67
+#define DOT11_MNG_BSS_AC_ACCESS_DELAY_ID 68
#define DOT11_MNG_WAPI_ID 68
#define DOT11_MNG_TIME_ADVERTISE_ID 69
#define DOT11_MNG_RRM_CAP_ID 70
-#define DOT11_MNG_MULTIPLE_BSSID_ID 71
+#define DOT11_MNG_MULTIPLE_BSSID_ID 71
#define DOT11_MNG_HT_BSS_COEXINFO_ID 72
#define DOT11_MNG_HT_BSS_CHANNEL_REPORT_ID 73
#define DOT11_MNG_HT_OBSS_ID 74
-#define DOT11_MNG_MMIE_ID 76
+#define DOT11_MNG_MMIE_ID 76
#define DOT11_MNG_CHANNEL_USAGE 97
#define DOT11_MNG_TIME_ZONE_ID 98
#define DOT11_MNG_LINK_IDENTIFIER_ID 101
@@ -1128,9 +1128,9 @@ typedef struct ti_ie ti_ie_t;
#define DOT11_MNG_EXT_CAP_ID 127
#define DOT11_MNG_VHT_CAP_ID 191
#define DOT11_MNG_VHT_OPERATION_ID 192
-#define DOT11_MNG_WIDE_BW_CHANNEL_SWITCH_ID 194
-#define DOT11_MNG_VHT_TRANSMIT_POWER_ENVELOPE_ID 195
-#define DOT11_MNG_CHANNEL_SWITCH_WRAPPER_ID 196
+#define DOT11_MNG_WIDE_BW_CHANNEL_SWITCH_ID 194
+#define DOT11_MNG_VHT_TRANSMIT_POWER_ENVELOPE_ID 195
+#define DOT11_MNG_CHANNEL_SWITCH_WRAPPER_ID 196
#define DOT11_MNG_WPA_ID 221
@@ -1142,23 +1142,23 @@ typedef struct ti_ie ti_ie_t;
-#define DOT11_RATE_1M 2
-#define DOT11_RATE_2M 4
-#define DOT11_RATE_5M5 11
-#define DOT11_RATE_11M 22
-#define DOT11_RATE_6M 12
-#define DOT11_RATE_9M 18
-#define DOT11_RATE_12M 24
-#define DOT11_RATE_18M 36
-#define DOT11_RATE_24M 48
-#define DOT11_RATE_36M 72
-#define DOT11_RATE_48M 96
-#define DOT11_RATE_54M 108
-#define DOT11_RATE_MAX 108
+#define DOT11_RATE_1M 2
+#define DOT11_RATE_2M 4
+#define DOT11_RATE_5M5 11
+#define DOT11_RATE_11M 22
+#define DOT11_RATE_6M 12
+#define DOT11_RATE_9M 18
+#define DOT11_RATE_12M 24
+#define DOT11_RATE_18M 36
+#define DOT11_RATE_24M 48
+#define DOT11_RATE_36M 72
+#define DOT11_RATE_48M 96
+#define DOT11_RATE_54M 108
+#define DOT11_RATE_MAX 108
-#define DOT11_RATE_BASIC 0x80
-#define DOT11_RATE_MASK 0x7F
+#define DOT11_RATE_BASIC 0x80
+#define DOT11_RATE_MASK 0x7F
@@ -1217,7 +1217,7 @@ typedef struct ti_ie ti_ie_t;
#define DOT11_ACTION_CAT_HT 7
#define DOT11_ACTION_CAT_SA_QUERY 8
#define DOT11_ACTION_CAT_PDPA 9
-#define DOT11_ACTION_CAT_WNM 10
+#define DOT11_ACTION_CAT_WNM 10
#define DOT11_ACTION_NOTIFICATION 17
#define DOT11_ACTION_CAT_VSP 126
#define DOT11_ACTION_CAT_VS 127
@@ -1870,27 +1870,27 @@ typedef struct dot11_lmrep dot11_lmrep_t
#define HT_T_GF_STF 8
#define HT_T_SYML 4
-#define HT_N_SERVICE 16
-#define HT_N_TAIL 6
+#define HT_N_SERVICE 16
+#define HT_N_TAIL 6
-#define APHY_SLOT_TIME 9
-#define APHY_SIFS_TIME 16
-#define APHY_DIFS_TIME (APHY_SIFS_TIME + (2 * APHY_SLOT_TIME))
-#define APHY_PREAMBLE_TIME 16
-#define APHY_SIGNAL_TIME 4
-#define APHY_SYMBOL_TIME 4
-#define APHY_SERVICE_NBITS 16
-#define APHY_TAIL_NBITS 6
-#define APHY_CWMIN 15
-
-
-#define BPHY_SLOT_TIME 20
-#define BPHY_SIFS_TIME 10
-#define BPHY_DIFS_TIME 50
-#define BPHY_PLCP_TIME 192
-#define BPHY_PLCP_SHORT_TIME 96
-#define BPHY_CWMIN 31
+#define APHY_SLOT_TIME 9
+#define APHY_SIFS_TIME 16
+#define APHY_DIFS_TIME (APHY_SIFS_TIME + (2 * APHY_SLOT_TIME))
+#define APHY_PREAMBLE_TIME 16
+#define APHY_SIGNAL_TIME 4
+#define APHY_SYMBOL_TIME 4
+#define APHY_SERVICE_NBITS 16
+#define APHY_TAIL_NBITS 6
+#define APHY_CWMIN 15
+
+
+#define BPHY_SLOT_TIME 20
+#define BPHY_SIFS_TIME 10
+#define BPHY_DIFS_TIME 50
+#define BPHY_PLCP_TIME 192
+#define BPHY_PLCP_SHORT_TIME 96
+#define BPHY_CWMIN 31
#define DOT11_OFDM_SIGNAL_EXTENSION 6
@@ -1951,8 +1951,8 @@ typedef int vht_group_id_t;
#define VHT_T_SIG_B 4
#define VHT_T_SYML 4
-#define VHT_N_SERVICE 16
-#define VHT_N_TAIL 6
+#define VHT_N_SERVICE 16
+#define VHT_N_TAIL 6
@@ -1978,7 +1978,7 @@ typedef struct d11cnt {
-#define BRCM_SYSCAP_WET_TUNNEL 0x0100
+#define BRCM_SYSCAP_WET_TUNNEL 0x0100
#define BRCM_OUI "\x00\x10\x18"
@@ -2010,7 +2010,7 @@ typedef struct brcm_ie brcm_ie_t;
#define BRF1_RX_LARGE_AGG 0x10
#define BRF1_RFAWARE_DCS 0x20
#define BRF1_SOFTAP 0x40
-#define BRF1_DWDS 0x80
+#define BRF1_DWDS 0x80
BWL_PRE_PACKED_STRUCT struct vndr_ie {
@@ -2291,8 +2291,8 @@ typedef struct vht_cap_ie vht_cap_ie_t;
#define VHT_CAP_MCS_MAP_0_8 1
#define VHT_CAP_MCS_MAP_0_9 2
#define VHT_CAP_MCS_MAP_NONE 3
-#define VHT_CAP_MCS_MAP_S 2
-#define VHT_CAP_MCS_MAP_M 0x3
+#define VHT_CAP_MCS_MAP_S 2
+#define VHT_CAP_MCS_MAP_M 0x3
#define VHT_CAP_MCS_MAP_NONE_ALL 0xffff
@@ -2367,9 +2367,9 @@ typedef enum vht_op_chan_width {
#define BRCM_VHT_FEATURES_OUITYPE 0x4
BWL_PRE_PACKED_STRUCT struct vht_features_ie_hdr {
- uint8 oui[3];
- uint8 type;
- uint8 rate_mask;
+ uint8 oui[3];
+ uint8 type;
+ uint8 rate_mask;
} BWL_POST_PACKED_STRUCT;
typedef struct vht_features_ie_hdr vht_features_ie_hdr_t;
@@ -2389,7 +2389,7 @@ typedef struct vht_features_ie_hdr vht_f
#define WPA_OUI "\x00\x50\xF2"
#define WPA_OUI_TYPE 1
-#define WPA_OUI_LEN 3
+#define WPA_OUI_LEN 3
#define WPA_VERSION 1
#define WPA2_OUI "\x00\x0F\xAC"
#define WPA2_OUI_LEN 3
@@ -2417,8 +2417,8 @@ typedef struct vht_features_ie_hdr vht_f
#define WFA_OUI_TYPE_TPC 8
#ifdef WLTDLS
-#define WFA_OUI_TYPE_TPQ 4
-#define WFA_OUI_TYPE_TPS 5
+#define WFA_OUI_TYPE_TPQ 4
+#define WFA_OUI_TYPE_TPS 5
#define WFA_OUI_TYPE_WFD 10
#endif
@@ -2454,7 +2454,7 @@ typedef struct vht_features_ie_hdr vht_f
#define AES_KEY_SIZE 16
#define AES_MIC_SIZE 8
#define BIP_KEY_SIZE 16
-#define BIP_MIC_SIZE 8
+#define BIP_MIC_SIZE 8
#define WCN_OUI "\x00\x50\xf2"
@@ -2515,11 +2515,11 @@ typedef struct dot11_gtk_ie dot11_gtk_ie
BWL_PRE_PACKED_STRUCT struct mmic_ie {
- uint8 id;
- uint8 len;
- uint16 key_id;
- uint8 ipn[6];
- uint8 mic[BIP_MIC_SIZE];
+ uint8 id;
+ uint8 len;
+ uint16 key_id;
+ uint8 ipn[6];
+ uint8 mic[BIP_MIC_SIZE];
} BWL_POST_PACKED_STRUCT;
typedef struct mmic_ie mmic_ie_t;
file:243a97538fd3001ad429c2143349c6c15969899c -> file:1d69529ac4b406540c2049b81ade7e70efd6796d
--- a/drivers/net/wireless/bcmdhd/include/proto/bcmevent.h
+++ b/drivers/net/wireless/bcmdhd/include/proto/bcmevent.h
@@ -188,23 +188,23 @@ typedef BWL_PRE_PACKED_STRUCT struct bcm
#define WLC_E_AUTH_REQ 91
#define WLC_E_TDLS_PEER_EVENT 92
#define WLC_E_SPEEDY_RECREATE_FAIL 93
-#define WLC_E_NATIVE 94
-#define WLC_E_PKTDELAY_IND 95
-#define WLC_E_AWDL_AW 96
-#define WLC_E_AWDL_ROLE 97
-#define WLC_E_AWDL_EVENT 98
+#define WLC_E_NATIVE 94
+#define WLC_E_PKTDELAY_IND 95
+#define WLC_E_AWDL_AW 96
+#define WLC_E_AWDL_ROLE 97
+#define WLC_E_AWDL_EVENT 98
#ifdef WLNIC
-#define WLC_E_NIC_AF_TXS 99
-#define WLC_E_NIC_NIC_REPORT 100
+#define WLC_E_NIC_AF_TXS 99
+#define WLC_E_NIC_NIC_REPORT 100
#endif
#define WLC_E_BEACON_FRAME_RX 101
-#define WLC_E_SERVICE_FOUND 102
-#define WLC_E_GAS_FRAGMENT_RX 103
-#define WLC_E_GAS_COMPLETE 104
-#define WLC_E_P2PO_ADD_DEVICE 105
-#define WLC_E_P2PO_DEL_DEVICE 106
-#define WLC_E_IBSS_COALESCE 107
-#define WLC_E_LAST 108
+#define WLC_E_SERVICE_FOUND 102
+#define WLC_E_GAS_FRAGMENT_RX 103
+#define WLC_E_GAS_COMPLETE 104
+#define WLC_E_P2PO_ADD_DEVICE 105
+#define WLC_E_P2PO_DEL_DEVICE 106
+#define WLC_E_IBSS_COALESCE 107
+#define WLC_E_LAST 108
typedef struct {
@@ -231,8 +231,8 @@ extern const int bcmevent_names_size;
#define WLC_E_STATUS_SUPPRESS 12
#define WLC_E_STATUS_NOCHANS 13
#ifdef BCMCCX
-#define WLC_E_STATUS_CCXFASTRM 14
-#endif
+#define WLC_E_STATUS_CCXFASTRM 14
+#endif
#define WLC_E_STATUS_CS_ABORT 15
#define WLC_E_STATUS_ERROR 16
@@ -266,20 +266,20 @@ extern const int bcmevent_names_size;
#define WLC_E_PRUNE_NO_COMMON_RATES 9
#define WLC_E_PRUNE_BASIC_RATES 10
#ifdef BCMCCX
-#define WLC_E_PRUNE_CCXFAST_PREVAP 11
-#endif
+#define WLC_E_PRUNE_CCXFAST_PREVAP 11
+#endif
#define WLC_E_PRUNE_CIPHER_NA 12
#define WLC_E_PRUNE_KNOWN_STA 13
#ifdef BCMCCX
-#define WLC_E_PRUNE_CCXFAST_DROAM 14
-#endif
+#define WLC_E_PRUNE_CCXFAST_DROAM 14
+#endif
#define WLC_E_PRUNE_WDS_PEER 15
#define WLC_E_PRUNE_QBSS_LOAD 16
#define WLC_E_PRUNE_HOME_AP 17
#ifdef BCMCCX
-#define WLC_E_PRUNE_AP_BLOCKED 18
-#define WLC_E_PRUNE_NO_DIAG_SUPPORT 19
-#endif
+#define WLC_E_PRUNE_AP_BLOCKED 18
+#define WLC_E_PRUNE_NO_DIAG_SUPPORT 19
+#endif
#define WLC_E_SUP_OTHER 0
@@ -336,7 +336,7 @@ typedef struct wl_event_data_if {
#define WLC_E_IF_ROLE_BTA_ACCEPTOR 6
#endif
-#define WLC_E_IF_FLAGS_BSSCFG_NOIF 0x1
+#define WLC_E_IF_FLAGS_BSSCFG_NOIF 0x1
#define WLC_E_LINK_BCN_LOSS 1
#define WLC_E_LINK_DISASSOC 2
@@ -354,23 +354,23 @@ typedef struct wl_event_data_if {
typedef BWL_PRE_PACKED_STRUCT struct wl_event_gas {
- uint16 channel;
- uint8 dialog_token;
- uint8 fragment_id;
- uint16 status_code;
- uint16 data_len;
- uint8 data[1];
+ uint16 channel;
+ uint8 dialog_token;
+ uint8 fragment_id;
+ uint16 status_code;
+ uint16 data_len;
+ uint8 data[1];
} BWL_POST_PACKED_STRUCT wl_event_gas_t;
typedef BWL_PRE_PACKED_STRUCT struct wl_event_sd {
- uint8 protocol;
- uint16 channel;
- uint8 dialog_token;
- uint8 fragment_id;
- uint16 status_code;
- uint16 data_len;
- uint8 data[1];
+ uint8 protocol;
+ uint16 channel;
+ uint8 dialog_token;
+ uint8 fragment_id;
+ uint16 status_code;
+ uint16 data_len;
+ uint8 data[1];
} BWL_POST_PACKED_STRUCT wl_event_sd_t;
file:02ddd37368589f7a5f8db22d66c174bcf7d02a3c -> file:e24074635c0beed5f02b7d7c61c13a04fb8c4519
--- a/drivers/net/wireless/bcmdhd/include/proto/bcmip.h
+++ b/drivers/net/wireless/bcmdhd/include/proto/bcmip.h
@@ -52,16 +52,16 @@
#define IP_PROT_ICMP6 0x3a
-#define IPV4_VER_HL_OFFSET 0
-#define IPV4_TOS_OFFSET 1
-#define IPV4_PKTLEN_OFFSET 2
-#define IPV4_PKTFLAG_OFFSET 6
-#define IPV4_PROT_OFFSET 9
-#define IPV4_CHKSUM_OFFSET 10
-#define IPV4_SRC_IP_OFFSET 12
-#define IPV4_DEST_IP_OFFSET 16
-#define IPV4_OPTIONS_OFFSET 20
-#define IPV4_MIN_HEADER_LEN 20
+#define IPV4_VER_HL_OFFSET 0
+#define IPV4_TOS_OFFSET 1
+#define IPV4_PKTLEN_OFFSET 2
+#define IPV4_PKTFLAG_OFFSET 6
+#define IPV4_PROT_OFFSET 9
+#define IPV4_CHKSUM_OFFSET 10
+#define IPV4_SRC_IP_OFFSET 12
+#define IPV4_DEST_IP_OFFSET 16
+#define IPV4_OPTIONS_OFFSET 20
+#define IPV4_MIN_HEADER_LEN 20
#define IPV4_VER_MASK 0xf0
file:7b9b2e2b79480d6024e176a521a4026474935e86 -> file:7debff4293a8cf43fa6dfaef245b05913ce3987b
--- a/drivers/net/wireless/bcmdhd/include/proto/ethernet.h
+++ b/drivers/net/wireless/bcmdhd/include/proto/ethernet.h
@@ -24,7 +24,7 @@
* $Id: ethernet.h 354714 2012-09-03 03:12:21Z $
*/
-#ifndef _NET_ETHERNET_H_
+#ifndef _NET_ETHERNET_H_
#define _NET_ETHERNET_H_
#ifndef _TYPEDEFS_H_
@@ -68,10 +68,10 @@
#define ETHER_TYPE_BRCM 0x886c
#define ETHER_TYPE_802_1X 0x888e
#ifdef PLC
-#define ETHER_TYPE_88E1 0x88e1
-#define ETHER_TYPE_8912 0x8912
-#define ETHER_TYPE_GIGLED 0xffff
-#endif
+#define ETHER_TYPE_88E1 0x88e1
+#define ETHER_TYPE_8912 0x8912
+#define ETHER_TYPE_GIGLED 0xffff
+#endif
#define ETHER_TYPE_802_1X_PREAUTH 0x88c7
#define ETHER_TYPE_WAI 0x88b4
#define ETHER_TYPE_89_0D 0x890d
@@ -99,7 +99,7 @@
((uint8 *)ea)[5] = ((mgrp_ip) >> 0) & 0xff; \
}
-#ifndef __INCif_etherh
+#ifndef __INCif_etherh
BWL_PRE_PACKED_STRUCT struct ether_header {
uint8 ether_dhost[ETHER_ADDR_LEN];
file:8f7652f0bf9b260ea8dfc2ece8e8371ab8a4372b -> file:8134610dd5fb74a6ebc8856a0c6a52a6ee5d531d
--- a/drivers/net/wireless/bcmdhd/include/proto/p2p.h
+++ b/drivers/net/wireless/bcmdhd/include/proto/p2p.h
@@ -376,7 +376,7 @@ typedef struct wifi_p2p_pub_act_frame wi
#define P2P_PAF_DEVDIS_RSP 6
#define P2P_PAF_PROVDIS_REQ 7
#define P2P_PAF_PROVDIS_RSP 8
-#define P2P_PAF_SUBTYPE_INVALID 255
+#define P2P_PAF_SUBTYPE_INVALID 255
#define P2P_TYPE_MNREQ P2P_PAF_GON_REQ
file:2eb483294f3bdfc14ad59372ce66fac79d66088c -> file:a3cb25b1f17ece2e29bc3378857ffa503520175c
--- a/drivers/net/wireless/bcmdhd/include/proto/vlan.h
+++ b/drivers/net/wireless/bcmdhd/include/proto/vlan.h
@@ -40,8 +40,8 @@
#define VLAN_PRI_MASK 7
-#define VLAN_TPID_OFFSET 12
-#define VLAN_TCI_OFFSET 14
+#define VLAN_TPID_OFFSET 12
+#define VLAN_TCI_OFFSET 14
#define VLAN_TAG_LEN 4
#define VLAN_TAG_OFFSET (2 * ETHER_ADDR_LEN)
@@ -49,8 +49,8 @@
#define VLAN_TPID 0x8100
struct vlan_header {
- uint16 vlan_type;
- uint16 vlan_tag;
+ uint16 vlan_type;
+ uint16 vlan_tag;
};
struct ethervlan_header {
file:7ebeedacc198f8d136a2e77c2716aba221ac3535 -> file:9c73b545ece1cd2ac4b79220d03a484e078b7adc
--- a/drivers/net/wireless/bcmdhd/include/proto/wpa.h
+++ b/drivers/net/wireless/bcmdhd/include/proto/wpa.h
@@ -36,9 +36,7 @@
#ifdef CUSTOMER_HW4
#include <dhd_sec_feature.h>
-#endif
-
-
+#endif
#define DOT11_RC_INVALID_WPA_IE 13
@@ -120,9 +118,9 @@ typedef BWL_PRE_PACKED_STRUCT struct
#define WPA_CIPHER_BIP 6
#define WPA_CIPHER_TPK 7
#ifdef BCMCCX
-#define WPA_CIPHER_CKIP 8
-#define WPA_CIPHER_CKIP_MMH 9
-#define WPA_CIPHER_WEP_MMH 10
+#define WPA_CIPHER_CKIP 8
+#define WPA_CIPHER_CKIP_MMH 9
+#define WPA_CIPHER_WEP_MMH 10
#define IS_CCX_CIPHER(cipher) ((cipher) == WPA_CIPHER_CKIP || \
(cipher) == WPA_CIPHER_CKIP_MMH || \
file:463c8afded1142e14b861248c1a33e9bdd007f22 -> file:e949ad660dc7597c2cf8b2edcbbd8412f5f68738
--- a/drivers/net/wireless/bcmdhd/include/sbchipc.h
+++ b/drivers/net/wireless/bcmdhd/include/sbchipc.h
@@ -289,10 +289,10 @@ typedef volatile struct {
uint32 pllcontrol_data;
uint32 pmustrapopt;
uint32 pmu_xtalfreq;
- uint32 retention_ctl;
+ uint32 retention_ctl;
uint32 PAD[3];
- uint32 retention_grpidx;
- uint32 retention_grpctl;
+ uint32 retention_grpidx;
+ uint32 retention_grpctl;
uint32 PAD[94];
uint16 sromotp[512];
#ifdef NFLASH_SUPPORT
@@ -358,58 +358,58 @@ typedef volatile struct {
uint32 nand_cache_data;
uint32 nand_ctrl_config;
uint32 nand_ctrl_status;
-#endif
- uint32 gci_corecaps0;
+#endif
+ uint32 gci_corecaps0;
uint32 gci_corecaps1;
uint32 gci_corecaps2;
uint32 gci_corectrl;
- uint32 gci_corestat;
- uint32 gci_intstat;
- uint32 gci_intmask;
- uint32 gci_wakemask;
- uint32 gci_levelintstat;
- uint32 gci_eventintstat;
+ uint32 gci_corestat;
+ uint32 gci_intstat;
+ uint32 gci_intmask;
+ uint32 gci_wakemask;
+ uint32 gci_levelintstat;
+ uint32 gci_eventintstat;
uint32 PAD[6];
- uint32 gci_indirect_addr;
- uint32 gci_gpioctl;
+ uint32 gci_indirect_addr;
+ uint32 gci_gpioctl;
uint32 PAD;
- uint32 gci_gpiomask;
+ uint32 gci_gpiomask;
uint32 PAD;
- uint32 gci_miscctl;
+ uint32 gci_miscctl;
uint32 PAD[2];
- uint32 gci_input[32];
- uint32 gci_event[32];
- uint32 gci_output[4];
- uint32 gci_control_0;
- uint32 gci_control_1;
- uint32 gci_level_polreg;
- uint32 gci_levelintmask;
- uint32 gci_eventintmask;
+ uint32 gci_input[32];
+ uint32 gci_event[32];
+ uint32 gci_output[4];
+ uint32 gci_control_0;
+ uint32 gci_control_1;
+ uint32 gci_level_polreg;
+ uint32 gci_levelintmask;
+ uint32 gci_eventintmask;
uint32 PAD[3];
- uint32 gci_inbandlevelintmask;
- uint32 gci_inbandeventintmask;
+ uint32 gci_inbandlevelintmask;
+ uint32 gci_inbandeventintmask;
uint32 PAD[2];
- uint32 gci_seciauxtx;
- uint32 gci_seciauxrx;
- uint32 gci_secitx_datatag;
- uint32 gci_secirx_datatag;
- uint32 gci_secitx_datamask;
- uint32 gci_seciusef0tx_reg;
- uint32 gci_secif0tx_offset;
- uint32 gci_secif0rx_offset;
- uint32 gci_secif1tx_offset;
+ uint32 gci_seciauxtx;
+ uint32 gci_seciauxrx;
+ uint32 gci_secitx_datatag;
+ uint32 gci_secirx_datatag;
+ uint32 gci_secitx_datamask;
+ uint32 gci_seciusef0tx_reg;
+ uint32 gci_secif0tx_offset;
+ uint32 gci_secif0rx_offset;
+ uint32 gci_secif1tx_offset;
uint32 PAD[3];
- uint32 gci_uartescval;
+ uint32 gci_uartescval;
uint32 PAD[3];
- uint32 gci_secibauddiv;
- uint32 gci_secifcr;
- uint32 gci_secilcr;
- uint32 gci_secimcr;
+ uint32 gci_secibauddiv;
+ uint32 gci_secifcr;
+ uint32 gci_secilcr;
+ uint32 gci_secimcr;
uint32 PAD[2];
- uint32 gci_baudadj;
+ uint32 gci_baudadj;
uint32 PAD;
- uint32 gci_chipctrl;
- uint32 gci_chipsts;
+ uint32 gci_chipctrl;
+ uint32 gci_chipsts;
} chipcregs_t;
#endif
@@ -515,11 +515,11 @@ typedef volatile struct {
#define CC_CAP2_GSIO 0x00000002
-#define CC_CAP_EXT_SECI_PRESENT 0x00000001
-#define CC_CAP_EXT_GCI_PRESENT 0x00000004
+#define CC_CAP_EXT_SECI_PRESENT 0x00000001
+#define CC_CAP_EXT_GCI_PRESENT 0x00000004
-#define GCI_WL_CHN_INFO_MASK (0xFF00)
+#define GCI_WL_CHN_INFO_MASK (0xFF00)
#define PLL_NONE 0x00000000
#define PLL_TYPE1 0x00010000
@@ -556,7 +556,7 @@ typedef volatile struct {
#define NS_FAST_MEM_CLOCK 800000000
#define NS_MEM_CLOCK 533000000
#define NS_SLOW_MEM_CLOCK 400000000
-#endif
+#endif
#define HT_CLOCK 80000000
@@ -2125,7 +2125,7 @@ typedef volatile struct {
#define PMU_VREG4_LPLDO2_1p15V 1
#define PMU_VREG4_LPLDO2_1p20V 2
#define PMU_VREG4_LPLDO2_1p10V 3
-#define PMU_VREG4_LPLDO2_0p90V 4
+#define PMU_VREG4_LPLDO2_0p90V 4
#define PMU_VREG4_HSICLDO_BYPASS_SHIFT 27
#define PMU_VREG4_HSICLDO_BYPASS_MASK 0x1
@@ -2208,11 +2208,11 @@ typedef volatile struct {
#define CCTRL43341_BT_ISO_SEL (1 << 16)
-#define CCTRL1_4334_GPIO_SEL (1 << 0)
-#define CCTRL1_4334_ERCX_SEL (1 << 1)
-#define CCTRL1_4334_SDIO_HOST_WAKE (1 << 2)
-#define CCTRL1_4334_JTAG_DISABLE (1 << 3)
-#define CCTRL1_4334_UART_ON_4_5 (1 << 28)
+#define CCTRL1_4334_GPIO_SEL (1 << 0)
+#define CCTRL1_4334_ERCX_SEL (1 << 1)
+#define CCTRL1_4334_SDIO_HOST_WAKE (1 << 2)
+#define CCTRL1_4334_JTAG_DISABLE (1 << 3)
+#define CCTRL1_4334_UART_ON_4_5 (1 << 28)
#define CCTRL1_4324_GPIO_SEL (1 << 0)
@@ -2220,47 +2220,47 @@ typedef volatile struct {
-#define CST43143_REMAP_TO_ROM (3 << 0)
-#define CST43143_SDIO_EN (1 << 2)
-#define CST43143_SDIO_ISO (1 << 3)
-#define CST43143_USB_CPU_LESS (1 << 4)
-#define CST43143_CBUCK_MODE (3 << 6)
-#define CST43143_POK_CBUCK (1 << 8)
+#define CST43143_REMAP_TO_ROM (3 << 0)
+#define CST43143_SDIO_EN (1 << 2)
+#define CST43143_SDIO_ISO (1 << 3)
+#define CST43143_USB_CPU_LESS (1 << 4)
+#define CST43143_CBUCK_MODE (3 << 6)
+#define CST43143_POK_CBUCK (1 << 8)
#define CST43143_PMU_OVRSPIKE (1 << 9)
#define CST43143_PMU_OVRTEMP (0xF << 10)
#define CST43143_SR_FLL_CAL_DONE (1 << 14)
#define CST43143_USB_PLL_LOCKDET (1 << 15)
#define CST43143_PMU_PLL_LOCKDET (1 << 16)
-#define CST43143_CHIPMODE_SDIOD(cs) (((cs) & CST43143_SDIO_EN) != 0)
+#define CST43143_CHIPMODE_SDIOD(cs) (((cs) & CST43143_SDIO_EN) != 0)
#define CCTRL_43143_SECI (1<<0)
#define CCTRL_43143_BT_LEGACY (1<<1)
-#define CCTRL_43143_I2S_MODE (1<<2)
-#define CCTRL_43143_I2S_MASTER (1<<3)
-#define CCTRL_43143_I2S_FULL (1<<4)
-#define CCTRL_43143_GSIO (1<<5)
-#define CCTRL_43143_RF_SWCTRL_MASK (7<<6)
+#define CCTRL_43143_I2S_MODE (1<<2)
+#define CCTRL_43143_I2S_MASTER (1<<3)
+#define CCTRL_43143_I2S_FULL (1<<4)
+#define CCTRL_43143_GSIO (1<<5)
+#define CCTRL_43143_RF_SWCTRL_MASK (7<<6)
#define CCTRL_43143_RF_SWCTRL_0 (1<<6)
#define CCTRL_43143_RF_SWCTRL_1 (2<<6)
#define CCTRL_43143_RF_SWCTRL_2 (4<<6)
-#define CCTRL_43143_RF_XSWCTRL (1<<9)
-#define CCTRL_43143_HOST_WAKE0 (1<<11)
-#define CCTRL_43143_HOST_WAKE1 (1<<12)
-
-
-#define RES43143_EXT_SWITCHER_PWM 0
-#define RES43143_XTAL_PU 1
-#define RES43143_ILP_REQUEST 2
-#define RES43143_ALP_AVAIL 3
-#define RES43143_WL_CORE_READY 4
-#define RES43143_BBPLL_PWRSW_PU 5
-#define RES43143_HT_AVAIL 6
-#define RES43143_RADIO_PU 7
-#define RES43143_MACPHY_CLK_AVAIL 8
-#define RES43143_OTP_PU 9
-#define RES43143_LQ_AVAIL 10
+#define CCTRL_43143_RF_XSWCTRL (1<<9)
+#define CCTRL_43143_HOST_WAKE0 (1<<11)
+#define CCTRL_43143_HOST_WAKE1 (1<<12)
+
+
+#define RES43143_EXT_SWITCHER_PWM 0
+#define RES43143_XTAL_PU 1
+#define RES43143_ILP_REQUEST 2
+#define RES43143_ALP_AVAIL 3
+#define RES43143_WL_CORE_READY 4
+#define RES43143_BBPLL_PWRSW_PU 5
+#define RES43143_HT_AVAIL 6
+#define RES43143_RADIO_PU 7
+#define RES43143_MACPHY_CLK_AVAIL 8
+#define RES43143_OTP_PU 9
+#define RES43143_LQ_AVAIL 10
#define PMU43143_XTAL_CORE_SIZE_MASK 0x3F
@@ -2447,14 +2447,14 @@ typedef volatile struct {
#define CST4335_RES_INIT_MODE_SHIFT 7
#define CST4335_RES_INIT_MODE_MASK 0x00000180
#define CST4335_CHIPMODE_MASK 0xF
-#define CST4335_CHIPMODE_SDIOD(cs) (((cs) & (1 << 0)) != 0)
-#define CST4335_CHIPMODE_GSPI(cs) (((cs) & (1 << 1)) != 0)
-#define CST4335_CHIPMODE_USB20D(cs) (((cs) & (1 << 2)) != 0)
-#define CST4335_CHIPMODE_PCIE(cs) (((cs) & (1 << 3)) != 0)
+#define CST4335_CHIPMODE_SDIOD(cs) (((cs) & (1 << 0)) != 0)
+#define CST4335_CHIPMODE_GSPI(cs) (((cs) & (1 << 1)) != 0)
+#define CST4335_CHIPMODE_USB20D(cs) (((cs) & (1 << 2)) != 0)
+#define CST4335_CHIPMODE_PCIE(cs) (((cs) & (1 << 3)) != 0)
-#define CCTRL1_4335_GPIO_SEL (1 << 0)
-#define CCTRL1_4335_SDIO_HOST_WAKE (1 << 2)
+#define CCTRL1_4335_GPIO_SEL (1 << 0)
+#define CCTRL1_4335_SDIO_HOST_WAKE (1 << 2)
#define CR4_4335_RAM_BASE (0x180000)
#define CR4_4350_RAM_BASE (0x180000)
@@ -2562,7 +2562,7 @@ typedef volatile struct {
#define CC4350_FNSEL_GCI (7)
#define CC4350_FNSEL_MISC1 (8)
#define CC4350_FNSEL_MISC2 (9)
-#define CC4350_FNSEL_PWDOG (10)
+#define CC4350_FNSEL_PWDOG (10)
#define CC4350_FNSEL_IND (12)
#define CC4350_FNSEL_PDN (13)
#define CC4350_FNSEL_PUP (14)
file:0b4460275eca0e7a558e638efd2671641abb0013 -> file:811d68339247588487ce52c0e7794dd3912a6cb1
--- a/drivers/net/wireless/bcmdhd/include/sbhnddma.h
+++ b/drivers/net/wireless/bcmdhd/include/sbhnddma.h
@@ -264,7 +264,7 @@ typedef volatile struct {
#define D64_XP_LD_MASK 0x00001fff
-#define D64_XS0_CD_MASK (di->d64_xs0_cd_mask)
+#define D64_XS0_CD_MASK (di->d64_xs0_cd_mask)
#define D64_XS0_XS_MASK 0xf0000000
#define D64_XS0_XS_SHIFT 28
#define D64_XS0_XS_DISABLED 0x00000000
@@ -273,7 +273,7 @@ typedef volatile struct {
#define D64_XS0_XS_STOPPED 0x30000000
#define D64_XS0_XS_SUSP 0x40000000
-#define D64_XS1_AD_MASK (di->d64_xs1_ad_mask)
+#define D64_XS1_AD_MASK (di->d64_xs1_ad_mask)
#define D64_XS1_XE_MASK 0xf0000000
#define D64_XS1_XE_SHIFT 28
#define D64_XS1_XE_NOERR 0x00000000
@@ -312,7 +312,7 @@ typedef volatile struct {
#define D64_RP_LD_MASK 0x00001fff
-#define D64_RS0_CD_MASK (di->d64_rs0_cd_mask)
+#define D64_RS0_CD_MASK (di->d64_rs0_cd_mask)
#define D64_RS0_RS_MASK 0xf0000000
#define D64_RS0_RS_SHIFT 28
#define D64_RS0_RS_DISABLED 0x00000000
file:6ad98b521e764108f19768933ea56807dee056bc -> file:5e969215b42663aeb905a71fe87e13c40e4f490d
--- a/drivers/net/wireless/bcmdhd/include/sbpcmcia.h
+++ b/drivers/net/wireless/bcmdhd/include/sbpcmcia.h
@@ -21,7 +21,7 @@
* software in any way with any other Broadcom software provided under a license
* other than the GPL, without Broadcom's express prior written consent.
*
- * $Id: sbpcmcia.h 326494 2012-04-09 13:29:57Z $
+ * $Id: sbpcmcia.h 356305 2012-09-12 04:55:06Z $
*/
#ifndef _SBPCMCIA_H
file:30a891ed05864f6155592fc0736def064dcd0300 -> file:35f06e4bee1f1bfca510865f14eb14ba25126555
--- a/drivers/net/wireless/bcmdhd/include/sbsdio.h
+++ b/drivers/net/wireless/bcmdhd/include/sbsdio.h
@@ -119,7 +119,7 @@
*/
#define SBSDIO_DEVCTL_EN_F2_BLK_WATERMARK 0x10 /* Enable function 2 tx for each block */
#define SBSDIO_DEVCTL_F2WM_ENAB 0x10 /* Enable F2 Watermark */
-#define SBSDIO_DEVCTL_NONDAT_PADS_ISO 0x20 /* Isolate sdio clk and cmd (non-data) */
+#define SBSDIO_DEVCTL_NONDAT_PADS_ISO 0x20 /* Isolate sdio clk and cmd (non-data) */
/* SBSDIO_FUNC1_CHIPCLKCSR */
#define SBSDIO_FORCE_ALP 0x01 /* Force ALP request to backplane */
file:0c0ffd516590b215fd6455a13f836868aa53e71a -> file:6f539bbd26552f2161fc1f232bdce37c6e8c5809
--- a/drivers/net/wireless/bcmdhd/siutils.c
+++ b/drivers/net/wireless/bcmdhd/siutils.c
@@ -343,7 +343,7 @@ si_doattach(si_info_t *sii, uint devid,
char *pvars = NULL;
uint origidx;
#if !defined(_CFEZ_) || defined(CFG_WL)
-#endif
+#endif
ASSERT(GOODREGS(regs));
bzero((uchar*)sii, sizeof(si_info_t));
@@ -469,7 +469,7 @@ si_doattach(si_info_t *sii, uint devid,
if (bustype == PCI_BUS) {
}
-#endif
+#endif
pvars = NULL;
BCM_REFERENCE(pvars);
@@ -1133,7 +1133,7 @@ si_watchdog(si_t *sih, uint ticks)
si_core_disable(sih, 1);
si_setcore(sih, CC_CORE_ID, 0);
}
-#endif
+#endif
nb = (sih->ccrev < 26) ? 16 : ((sih->ccrev >= 37) ? 32 : 24);
/* The mips compiler uses the sllv instruction,
@@ -2281,7 +2281,7 @@ si_chipcontrl_epa4331_wowl(si_t *sih, bo
}
si_setcoreidx(sih, origidx);
}
-#endif
+#endif
uint
si_pll_reset(si_t *sih)
file:3232e3b05043c57bd3c456f99c0682fad3dd9974 -> file:0ef258811b013e3743a9bc42041d7a1b3b78ca68
--- a/drivers/net/wireless/bcmdhd/wl_android.c
+++ b/drivers/net/wireless/bcmdhd/wl_android.c
@@ -21,7 +21,7 @@
* software in any way with any other Broadcom software provided under a license
* other than the GPL, without Broadcom's express prior written consent.
*
- * $Id: wl_android.c 390499 2013-03-12 11:38:47Z $
+ * $Id: wl_android.c 393894 2013-03-29 07:14:35Z $
*/
#include <linux/module.h>
@@ -1649,7 +1649,7 @@ int wl_android_priv_cmd(struct net_devic
#define PRIVATE_COMMAND_MAX_LEN 16384
#else
#define PRIVATE_COMMAND_MAX_LEN 8192
-#endif
+#endif /* CUSTOMER_HW4 */
int ret = 0;
char *command = NULL;
int bytes_written = 0;
file:95e7c4ab3d1f4a64f163ad416c6bacce6fd9b58b -> file:66f8c9ffa372500d055968dbd6c3844406b0de0a
--- a/drivers/net/wireless/bcmdhd/wl_cfgp2p.h
+++ b/drivers/net/wireless/bcmdhd/wl_cfgp2p.h
@@ -21,7 +21,7 @@
* software in any way with any other Broadcom software provided under a license
* other than the GPL, without Broadcom's express prior written consent.
*
- * $Id: wl_cfgp2p.h 383351 2013-02-06 13:05:50Z $
+ * $Id: wl_cfgp2p.h 392206 2013-03-21 04:02:54Z $
*/
#ifndef _wl_cfgp2p_h_
#define _wl_cfgp2p_h_
file:b5e708075b831821a9ff7704a32375e72602d2a9 -> file:f9e93624b5b77cd8f64a47d9c3d9599fd2ae97c5
--- a/drivers/net/wireless/bcmdhd/wl_dbg.h
+++ b/drivers/net/wireless/bcmdhd/wl_dbg.h
@@ -22,7 +22,7 @@
* software in any way with any other Broadcom software provided under a license
* other than the GPL, without Broadcom's express prior written consent.
*
- * $Id: wl_dbg.h 326635 2012-04-10 03:15:29Z $
+ * $Id: wl_dbg.h 357993 2012-09-20 21:58:56Z $
*/
file:b2acd6a6f5b7025f063c99e4cbcfa96714db9f6b -> file:6c063434dfb1c1da8a20092448bab6c3a4367094
--- a/drivers/net/wireless/bcmdhd/wl_iw.c
+++ b/drivers/net/wireless/bcmdhd/wl_iw.c
@@ -21,7 +21,7 @@
* software in any way with any other Broadcom software provided under a license
* other than the GPL, without Broadcom's express prior written consent.
*
- * $Id: wl_iw.c 367054 2012-11-06 15:06:04Z $
+ * $Id: wl_iw.c 384655 2013-02-12 19:59:43Z $
*/
#if defined(USE_IW)
@@ -843,7 +843,7 @@ wl_iw_get_range(
if (dev_wlc_intvar_get(dev, "fbt_cap", &fbt_cap) == 0) {
if (fbt_cap == WLC_FBT_CAP_DRV_4WAY_AND_REASSOC) {
-
+
range->enc_capa |= IW_ENC_CAPA_4WAY_HANDSHAKE;
}
}
@@ -2692,7 +2692,7 @@ wl_iw_set_wpaauth(
if ((error = dev_wlc_intvar_set(dev, "wsec", val)))
return error;
-
+
if (dev_wlc_intvar_get(dev, "fbt_cap", &fbt_cap) == 0) {
if (fbt_cap == WLC_FBT_CAP_DRV_4WAY_AND_REASSOC) {
if ((paramid == IW_AUTH_CIPHER_PAIRWISE) && (val & AES_ENABLED)) {
@@ -3647,7 +3647,7 @@ static void wl_iw_send_scan_complete(isc
memset(&wrqu, 0, sizeof(wrqu));
-
+
wireless_send_event(iscan->dev, SIOCGIWSCAN, &wrqu, NULL);
}
file:944d41ba5a96cd0b15c7b14cde8102b45a4a89a7 -> file:f66c7cc37e0ebb30aaba326252fa91021d29e420
--- a/drivers/sensorhub/factory/accel_mpu6500.c
+++ b/drivers/sensorhub/factory/accel_mpu6500.c
@@ -44,10 +44,19 @@ static ssize_t accel_vendor_show(struct
{
#ifdef K330_REV
struct ssp_data *data = dev_get_drvdata(dev);
+#if defined(CONFIG_MACH_JF_EUR)
+ if (data->ap_rev == 13)
+ return sprintf(buf, "%s\n", VENDOR);
+ else if (data->ap_rev >= K330_REV)
+ return sprintf(buf, "%s\n", VENDOR_K330);
+ else
+ return sprintf(buf, "%s\n", VENDOR);
+#else
if (data->ap_rev >= K330_REV)
return sprintf(buf, "%s\n", VENDOR_K330);
else
return sprintf(buf, "%s\n", VENDOR);
+#endif
#else
return sprintf(buf, "%s\n", VENDOR);
#endif
@@ -58,10 +67,19 @@ static ssize_t accel_name_show(struct de
{
#ifdef K330_REV
struct ssp_data *data = dev_get_drvdata(dev);
+#if defined(CONFIG_MACH_JF_EUR)
+ if (data->ap_rev == 13)
+ return sprintf(buf, "%s\n", CHIP_ID);
+ else if (data->ap_rev >= K330_REV)
+ return sprintf(buf, "%s\n", CHIP_ID_K330);
+ else
+ return sprintf(buf, "%s\n", CHIP_ID);
+#else
if (data->ap_rev >= K330_REV)
return sprintf(buf, "%s\n", CHIP_ID_K330);
else
return sprintf(buf, "%s\n", CHIP_ID);
+#endif
#else
return sprintf(buf, "%s\n", CHIP_ID);
#endif
file:b1c85ec9c9c066331e4d3ef8359cfb5eb760484e -> file:07d878b16941c609027ae31a3934d4dfdd9f4332
--- a/drivers/sensorhub/factory/gyro_mpu6500.c
+++ b/drivers/sensorhub/factory/gyro_mpu6500.c
@@ -55,10 +55,19 @@ static ssize_t gyro_vendor_show(struct d
{
#ifdef K330_REV
struct ssp_data *data = dev_get_drvdata(dev);
+#if defined(CONFIG_MACH_JF_EUR)
+ if (data->ap_rev == 13)
+ return sprintf(buf, "%s\n", VENDOR);
+ else if (data->ap_rev >= K330_REV)
+ return sprintf(buf, "%s\n", VENDOR_K330);
+ else
+ return sprintf(buf, "%s\n", VENDOR);
+#else
if (data->ap_rev >= K330_REV)
return sprintf(buf, "%s\n", VENDOR_K330);
else
return sprintf(buf, "%s\n", VENDOR);
+#endif
#else
return sprintf(buf, "%s\n", VENDOR);
#endif
@@ -69,10 +78,19 @@ static ssize_t gyro_name_show(struct dev
{
#ifdef K330_REV
struct ssp_data *data = dev_get_drvdata(dev);
+#if defined(CONFIG_MACH_JF_EUR)
+ if (data->ap_rev == 13)
+ return sprintf(buf, "%s\n", CHIP_ID);
+ else if (data->ap_rev >= K330_REV)
+ return sprintf(buf, "%s\n", CHIP_ID_K330);
+ else
+ return sprintf(buf, "%s\n", CHIP_ID);
+#else
if (data->ap_rev >= K330_REV)
return sprintf(buf, "%s\n", CHIP_ID_K330);
else
return sprintf(buf, "%s\n", CHIP_ID);
+#endif
#else
return sprintf(buf, "%s\n", CHIP_ID);
#endif
@@ -235,10 +253,19 @@ static ssize_t gyro_get_temp(struct devi
short temperature = 0;
struct ssp_data *data = dev_get_drvdata(dev);
#ifdef K330_REV
+#if defined(CONFIG_MACH_JF_EUR)
+ if (data->ap_rev == 13)
+ temperature = mpu6500_gyro_get_temp(data);
+ else if (data->ap_rev >= K330_REV)
+ temperature = (short)k330_gyro_get_temp(data);
+ else
+ temperature = mpu6500_gyro_get_temp(data);
+#else
if (data->ap_rev >= K330_REV)
temperature = (short)k330_gyro_get_temp(data);
else
temperature = mpu6500_gyro_get_temp(data);
+#endif
#else
temperature = mpu6500_gyro_get_temp(data);
#endif
@@ -616,10 +643,19 @@ static ssize_t gyro_selftest_show(struct
{
struct ssp_data *data = dev_get_drvdata(dev);
#ifdef K330_REV
+#if defined(CONFIG_MACH_JF_EUR)
+ if (data->ap_rev == 13)
+ return mpu6500_gyro_selftest(buf, data);
+ else if (data->ap_rev >= K330_REV)
+ return k330_gyro_selftest(buf, data);
+ else
+ return mpu6500_gyro_selftest(buf, data);
+#else
if (data->ap_rev >= K330_REV)
return k330_gyro_selftest(buf, data);
else
return mpu6500_gyro_selftest(buf, data);
+#endif
#else
return mpu6500_gyro_selftest(buf, data);
#endif
file:c6325fad406d895b67e783666ccb4d48d8a0855d -> file:c731b7d6bd7e2116660adfd772e62728f4721dd3
--- a/drivers/staging/android/lowmemorykiller.c
+++ b/drivers/staging/android/lowmemorykiller.c
@@ -50,7 +50,7 @@
#include <linux/freezer.h>
#include <asm/atomic.h>
-#define MIN_FREESWAP_PAGES 2048 /* 8MB */
+#define MIN_FREESWAP_PAGES 8192 /* 32MB */
#define MIN_RECLAIM_PAGES 512 /* 2MB */
#define MIN_CSWAP_INTERVAL (10*HZ) /* 10 senconds */
@@ -395,6 +395,14 @@ inline void cancel_soft_reclaim(void)
atomic_set(&s_reclaim.need_to_reclaim, 0);
}
+int get_soft_reclaim_status(void)
+{
+ int kcompcache_running = atomic_read(&s_reclaim.kcompcached_running);
+ if(kcompcache_running)
+ set_user_nice(s_reclaim.kcompcached, 0);
+ return kcompcache_running;
+}
+
static int soft_reclaim(void)
{
int nid;
@@ -444,6 +452,7 @@ static int do_compcache(void * nothing)
atomic_set(&s_reclaim.kcompcached_running, 0);
set_current_state(TASK_INTERRUPTIBLE);
+ set_user_nice(s_reclaim.kcompcached, 15);
schedule();
}
file:031735743f07209f393b3aad0631bedc4f3a0a43 -> file:9f56a562622a4c2adfe277ecc9cef427343fc679
--- a/drivers/usb/gadget/ci13xxx_udc.c
+++ b/drivers/usb/gadget/ci13xxx_udc.c
@@ -2038,19 +2038,8 @@ static int _hardware_dequeue(struct ci13
if (mReq->zptr) {
if ((TD_STATUS_ACTIVE & mReq->zptr->token) != 0)
return -EBUSY;
-#ifdef CONFIG_MACH_JF_ATT
-#ifdef CONFIG_USB_MON
- udelay(10);
-#endif
-#endif
dma_pool_free(mEp->td_pool, mReq->zptr, mReq->zdma);
mReq->zptr = NULL;
- } else {
-#ifdef CONFIG_MACH_JF_ATT
-#ifdef CONFIG_USB_MON
- udelay(10);
-#endif
-#endif
}
mReq->req.status = 0;
file:97dd631241a4b6b1cbe67c35a2b8cf9da164d8b6 -> file:979ea63ce03e1d67b440debc1d50a835535d9d55
--- a/drivers/video/msm/Kconfig
+++ b/drivers/video/msm/Kconfig
@@ -1092,6 +1092,10 @@ config LCD_VDD3_BY_PMGPIO
bool "support externel dcdc for VDD3_IO"
default n
+config ESD_ERR_FG_RECOVERY
+ bool "ESD RECOVERY BY ERR_FG"
+ default n
+
if FB_MSM_MDSS
source "drivers/video/msm/mdss/Kconfig"
endif
file:6f7cabf62cb81e82a3277e0324d5fb3b786d6cae -> file:bbcb4a21aa8c328c3c44fca069c51963d080a911
--- a/drivers/video/msm/mdp.c
+++ b/drivers/video/msm/mdp.c
@@ -2280,7 +2280,9 @@ static int mdp_off(struct platform_devic
mdp_clk_ctrl(0);
#ifdef CONFIG_MSM_BUS_SCALING
- mdp_bus_scale_update_request(0, 0);
+
+ mdp_bus_scale_update_request(0, 0, 0, 0);
+
#endif
if (mdp_rev >= MDP_REV_41 && mfd->panel.type == MIPI_CMD_PANEL)
mdp_dsi_cmd_overlay_suspend(mfd);
@@ -2403,8 +2405,8 @@ void mdp_hw_version(void)
#ifdef CONFIG_MSM_BUS_SCALING
-#ifndef MDP_BUS_VECTOR_ENTRY
-#define MDP_BUS_VECTOR_ENTRY(ab_val, ib_val) \
+#ifndef MDP_BUS_VECTOR_ENTRY_P0
+#define MDP_BUS_VECTOR_ENTRY_P0(ab_val, ib_val) \
{ \
.src = MSM_BUS_MASTER_MDP_PORT0, \
.dst = MSM_BUS_SLAVE_EBI_CH0, \
@@ -2412,17 +2414,51 @@ void mdp_hw_version(void)
.ib = (ib_val), \
}
#endif
+#ifndef MDP_BUS_VECTOR_ENTRY_P1
+#define MDP_BUS_VECTOR_ENTRY_P1(ab_val, ib_val) \
+ { \
+ .src = MSM_BUS_MASTER_MDP_PORT1, \
+ .dst = MSM_BUS_SLAVE_EBI_CH0, \
+ .ab = (ab_val), \
+ .ib = (ib_val), \
+ }
+#endif
+
+
/*
* Entry 0 hold 0 request
* Entry 1 and 2 do ping pong request
*/
-static struct msm_bus_vectors mdp_bus_vectors[] = {
- MDP_BUS_VECTOR_ENTRY(0, 0),
- MDP_BUS_VECTOR_ENTRY( 128000000, 160000000),
- MDP_BUS_VECTOR_ENTRY( 128000000, 160000000),
+static struct msm_bus_vectors mdp_bus_init_vectors[] = {
+ MDP_BUS_VECTOR_ENTRY_P0(0, 0),
+ MDP_BUS_VECTOR_ENTRY_P1(0, 0),
+};
+
+static struct msm_bus_vectors mdp_bus_ping_vectors[] = {
+ MDP_BUS_VECTOR_ENTRY_P0(128000000, 160000000),
+ MDP_BUS_VECTOR_ENTRY_P1(128000000, 160000000),
+};
+
+static struct msm_bus_vectors mdp_bus_pong_vectors[] = {
+ MDP_BUS_VECTOR_ENTRY_P0(128000000, 160000000),
+ MDP_BUS_VECTOR_ENTRY_P1(128000000, 160000000),
+};
+
+static struct msm_bus_paths mdp_bus_usecases[] = {
+ {
+ ARRAY_SIZE(mdp_bus_init_vectors),
+ mdp_bus_init_vectors,
+ },
+ {
+ ARRAY_SIZE(mdp_bus_ping_vectors),
+ mdp_bus_ping_vectors,
+ },
+ {
+ ARRAY_SIZE(mdp_bus_pong_vectors),
+ mdp_bus_pong_vectors,
+ },
};
-static struct msm_bus_paths mdp_bus_usecases[ARRAY_SIZE(mdp_bus_vectors)];
static struct msm_bus_scale_pdata mdp_bus_scale_table = {
.usecase = mdp_bus_usecases,
.num_usecases = ARRAY_SIZE(mdp_bus_usecases),
@@ -2433,12 +2469,7 @@ static uint32_t mdp_bus_scale_handle;
static int mdp_bus_scale_register(void)
{
struct msm_bus_scale_pdata *bus_pdata = &mdp_bus_scale_table;
- int i;
- for (i = 0; i < bus_pdata->num_usecases; i++) {
- mdp_bus_usecases[i].num_paths = 1;
- mdp_bus_usecases[i].vectors = &mdp_bus_vectors[i];
- }
-
+
if (!mdp_bus_scale_handle) {
mdp_bus_scale_handle = msm_bus_scale_register_client(bus_pdata);
if (!mdp_bus_scale_handle) {
@@ -2450,14 +2481,14 @@ static int mdp_bus_scale_register(void)
}
static int bus_index = 1;
-int mdp_bus_scale_update_request(u64 ab, u64 ib)
+int mdp_bus_scale_update_request(u64 ab_p0, u64 ib_p0, u64 ab_p1, u64 ib_p1)
{
if (mdp_bus_scale_handle < 1) {
pr_err("%s invalid bus handle\n", __func__);
return -EINVAL;
}
- if (!ab)
+ if ((!ab_p0) && (!ab_p1))
return msm_bus_scale_client_update_request
(mdp_bus_scale_handle, 0);
@@ -2465,14 +2496,23 @@ int mdp_bus_scale_update_request(u64 ab,
bus_index++;
bus_index = (bus_index > 2) ? 1 : bus_index;
- mdp_bus_usecases[bus_index].vectors->ab = min(ab, mdp_max_bw);
- ib = max(ib, ab);
- mdp_bus_usecases[bus_index].vectors->ib = min(ib, mdp_max_bw);
-
+ mdp_bus_usecases[bus_index].vectors[0].ab = min(ab_p0, mdp_max_bw);
+ ib_p0 = max(ib_p0, ab_p0);
+ mdp_bus_usecases[bus_index].vectors[0].ib = min(ib_p0, mdp_max_bw);
+
+ mdp_bus_usecases[bus_index].vectors[1].ab = min(ab_p1, mdp_max_bw);
+ ib_p1 = max(ib_p1, ab_p1);
+ mdp_bus_usecases[bus_index].vectors[1].ib = min(ib_p1, mdp_max_bw);
+
pr_debug("%s: handle=%d index=%d ab=%llu ib=%llu\n", __func__,
(u32)mdp_bus_scale_handle, bus_index,
- mdp_bus_usecases[bus_index].vectors->ab,
- mdp_bus_usecases[bus_index].vectors->ib);
+ mdp_bus_usecases[bus_index].vectors[0].ab,
+ mdp_bus_usecases[bus_index].vectors[0].ib);
+ pr_debug("%s: p1 handle=%d index=%d ab=%llu ib=%llu\n", __func__,
+ (u32)mdp_bus_scale_handle, bus_index,
+ mdp_bus_usecases[bus_index].vectors[1].ab,
+ mdp_bus_usecases[bus_index].vectors[1].ib);
+
return msm_bus_scale_client_update_request
(mdp_bus_scale_handle, bus_index);
@@ -2482,15 +2522,25 @@ int mdp_bus_scale_restore_request(void)
{
u64 ab, ib;
if (!bus_index ||
- !mdp_bus_usecases[bus_index].vectors->ab) {
+ !mdp_bus_usecases[bus_index].vectors[0].ab) {
ab = mdp_max_bw;
ib = mdp_max_bw;
} else {
- ab = mdp_bus_usecases[bus_index].vectors->ab;
- ib = mdp_bus_usecases[bus_index].vectors->ib;
+ ab = mdp_bus_usecases[bus_index].vectors[0].ab;
+ ib = mdp_bus_usecases[bus_index].vectors[0].ib;
}
pr_info("%s: ab=%llu ib=%llu\n", __func__, ab, ib);
- return mdp_bus_scale_update_request(ab, ib);
+
+ pr_debug("%s: index=%d ab_p0=%llu ib_p0=%llu\n", __func__, bus_index,
+ mdp_bus_usecases[bus_index].vectors[0].ab,
+ mdp_bus_usecases[bus_index].vectors[0].ib);
+ pr_debug("%s: index=%d ab_p1=%llu ib_p1=%llu\n", __func__, bus_index,
+ mdp_bus_usecases[bus_index].vectors[1].ab,
+ mdp_bus_usecases[bus_index].vectors[1].ib);
+
+ return mdp_bus_scale_update_request(ab, ib,
+ mdp_bus_usecases[bus_index].vectors[1].ab,
+ mdp_bus_usecases[bus_index].vectors[1].ib);
}
#endif
@@ -3030,7 +3080,7 @@ static int mdp_probe(struct platform_dev
/* req bus bandwidth immediately */
if (!(mfd->cont_splash_done))
- mdp_bus_scale_update_request(mdp_max_bw, mdp_max_bw);
+ mdp_bus_scale_update_request(mdp_max_bw, mdp_max_bw,mdp_max_bw,mdp_max_bw);
#endif
/* set driver data */
file:605914e6f35e9b213f8d5fc0c2f4ea1bc8a48064 -> file:7f957bd65c6445ef88da358761837c4c5e386613
--- a/drivers/video/msm/mdp.h
+++ b/drivers/video/msm/mdp.h
@@ -834,14 +834,18 @@ int mdp_clk_round_rate(u32 rate);
unsigned long mdp_get_core_clk(void);
#ifdef CONFIG_MSM_BUS_SCALING
-int mdp_bus_scale_update_request(u64 ab, u64 ib);
+int mdp_bus_scale_update_request(u64 ab_p0, u64 ib_p0, u64 ab_p1, u64 ib_p1);
+
int mdp_bus_scale_restore_request(void);
#else
-static inline int mdp_bus_scale_update_request(u64 ab,
- u64 ib)
-{
- return 0;
-}
+static inline int mdp_bus_scale_update_request(u64 ab_p0,
+ u64 ib_p0,
+ u64 ab_p1,
+ u64 ib_p1)
+ {
+ return 0;
+ }
+
static int mdp_bus_scale_restore_request(void)
{
file:85eb79fb79fe569b719f09a405323f55d9cf3916 -> file:1c3f891f1c5056cd9cb9d283bb24a4ff53d27dac
--- a/drivers/video/msm/mdp4.h
+++ b/drivers/video/msm/mdp4.h
@@ -962,6 +962,7 @@ int mdp4_update_base_blend(struct msm_fb
struct mdp_blend_cfg *mdp_blend_cfg);
u32 mdp4_get_mixer_num(u32 panel_type);
int mdp4_overlay_reset(void);
+void dump_underrun_pipe_info(void);
#ifndef CONFIG_FB_MSM_WRITEBACK_MSM_PANEL
static inline void mdp4_wfd_pipe_queue(int cndx, struct mdp4_overlay_pipe *pipe)
file:c0267ac52510d6d0f4d1e5acd266423ff255f0fe -> file:d4c608b4ac61c4cb657c45c11c72b0afb3375a47
--- a/drivers/video/msm/mdp4_overlay.c
+++ b/drivers/video/msm/mdp4_overlay.c
@@ -61,6 +61,7 @@ struct mdp4_overlay_ctrl {
uint32 mixer_cfg[MDP4_MIXER_MAX];
uint32 flush[MDP4_MIXER_MAX];
struct iommu_free_list iommu_free[MDP4_MIXER_MAX];
+ struct iommu_free_list iommu_free_prev[MDP4_MIXER_MAX];
uint32 cs_controller;
uint32 panel_3d;
uint32 panel_mode;
@@ -119,8 +120,12 @@ struct mdp4_overlay_perf {
u32 use_ov_blt[MDP4_MIXER_MAX];
u64 mdp_ov_ab_bw[MDP4_MIXER_MAX];
u64 mdp_ov_ib_bw[MDP4_MIXER_MAX];
- u32 mdp_ab_bw;
- u32 mdp_ib_bw;
+ u64 mdp_ab_bw;
+ u64 mdp_ib_bw;
+ u64 mdp_ab_port0_bw;
+ u64 mdp_ib_port0_bw;
+ u64 mdp_ab_port1_bw;
+ u64 mdp_ib_port1_bw;
u32 pipe_cnt;
};
@@ -128,6 +133,7 @@ struct mdp4_overlay_perf perf_request;
struct mdp4_overlay_perf perf_current;
static struct ion_client *display_iclient;
+static char *sec_underrun_log_buff;
/*
@@ -142,18 +148,18 @@ void mdp4_overlay_iommu_unmap_freelist(i
int i;
struct ion_handle *ihdl;
struct iommu_free_list *flist;
+ struct iommu_free_list *pflist;
if (!display_iclient)
return;
mutex_lock(&iommu_mutex);
- flist = &ctrl->iommu_free[mixer];
- if (flist->total == 0) {
- mutex_unlock(&iommu_mutex);
- return;
+ pflist = &ctrl->iommu_free_prev[mixer];
+ if (pflist->total == 0) {
+ goto iommu_fill;
}
for (i = 0; i < IOMMU_FREE_LIST_MAX; i++) {
- ihdl = flist->ihdl[i];
+ ihdl = pflist->ihdl[i];
if (ihdl == NULL || ihdl->buffer == NULL || ihdl->client == NULL)
continue;
pr_debug("%s: mixer=%d i=%d ihdl=0x%p\n", __func__,
@@ -165,11 +171,24 @@ void mdp4_overlay_iommu_unmap_freelist(i
(int)mdp4_stat.iommu_map, (int)mdp4_stat.iommu_unmap,
(int)mdp4_stat.iommu_drop);
ion_free(display_iclient, ihdl);
- flist->ihdl[i] = NULL;
+ pflist->ihdl[i] = NULL;
}
- flist->fndx = 0;
- flist->total = 0;
+ pflist->fndx = 0;
+ pflist->total = 0;
+
+iommu_fill:
+ flist = &ctrl->iommu_free[mixer];
+ pflist = &ctrl->iommu_free_prev[mixer];
+ pflist->fndx = flist->fndx;
+ pflist->total = flist->total;
+ for (i = 0; i < IOMMU_FREE_LIST_MAX; i++) {
+ pflist->ihdl[i] = flist->ihdl[i];
+ flist->ihdl[i] = NULL;
+ }
+ flist->fndx = 0;
+ flist->total = 0;
+
mutex_unlock(&iommu_mutex);
}
@@ -2515,6 +2534,62 @@ static int mdp4_overlay_req2pipe(struct
return 0;
}
+/*
+ [srcx,srcy,srcw,srch]->[dstx,dsty,dstw,dsth][flags]|src_format|bpp|pipe_ndx|mdp_clk|ab|ib|
+ [cnt][total_ab_p0][total_ib_p0][total_ab_p0][total_ib_p0][mdp_clk]
+*/
+void dump_underrun_pipe_info(void)
+{
+
+ struct mdp4_overlay_pipe *pipe = ctrl->plist;
+ int i = 0;
+ int cnt = 0;
+ static int lindex = 0;
+ if(!sec_underrun_log_buff) {
+ sec_underrun_log_buff = kzalloc(4001,GFP_KERNEL);
+ if(!sec_underrun_log_buff) {
+ pr_err("Out of Memory: Failed to alloc underrun Buffer\n");
+ return;
+ }
+
+ }
+
+ for (i = 0; i < OVERLAY_PIPE_MAX; i++, pipe++) {
+
+ if (!pipe)
+ return ;
+
+ if (!pipe->pipe_used)
+ continue;
+ cnt++;
+ lindex += snprintf(sec_underrun_log_buff+lindex,4000-lindex,
+ "[%d,%d,%d,%d]->[%d,%d,%d,%d]|%d|%d|%d|%d|%d|%llu|%llu|\n",
+ pipe->src_x,pipe->src_y,pipe->src_w,pipe->src_h,
+ pipe->dst_x,pipe->dst_y,pipe->dst_w,pipe->dst_h,
+ pipe->flags,
+ pipe->src_format,pipe->bpp,pipe->pipe_ndx,pipe->req_clk,
+ pipe->bw_ab_quota,pipe->bw_ib_quota);
+ pr_err("[%d,%d,%d,%d]->[%d,%d,%d,%d]|%d|%d|%d|%d|%d|%llu|%llu|\n",
+ pipe->src_x,pipe->src_y,pipe->src_w,pipe->src_h,
+ pipe->dst_x,pipe->dst_y,pipe->dst_w,pipe->dst_h,
+ pipe->flags,
+ pipe->src_format,pipe->bpp,pipe->pipe_ndx,pipe->req_clk,
+ pipe->bw_ab_quota,pipe->bw_ib_quota);
+
+ }
+ lindex+=snprintf(sec_underrun_log_buff+lindex,4000-lindex,
+ "**[%d][%llu|%llu|%llu|%llu|%d]**\n",cnt,
+ perf_request.mdp_ab_port0_bw,perf_request.mdp_ib_port0_bw,
+ perf_request.mdp_ab_port1_bw,perf_request.mdp_ib_port1_bw,
+ perf_current.mdp_clk_rate);
+ pr_err("**[%d][%llu|%llu|%llu|%llu|%d]**\n",cnt,
+ perf_request.mdp_ab_port0_bw,perf_request.mdp_ib_port0_bw,
+ perf_request.mdp_ab_port1_bw,perf_request.mdp_ib_port1_bw,
+ perf_current.mdp_clk_rate);
+ lindex = lindex % 4000;
+
+}
+
static int mdp4_calc_pipe_mdp_clk(struct msm_fb_data_type *mfd,
struct mdp4_overlay_pipe *pipe)
{
@@ -2599,7 +2674,7 @@ static int mdp4_calc_pipe_mdp_clk(struct
/*
* For the scaling cases, make more margin by removing porch
* values and adding extra 20%.
- */
+
if ((pipe->src_h != pipe->dst_h) ||
(pipe->src_w != pipe->dst_w)) {
hsync = mfd->panel_info.xres;
@@ -2609,13 +2684,13 @@ static int mdp4_calc_pipe_mdp_clk(struct
__func__, hsync);
} else {
- hsync = mfd->panel_info.lcdc.h_back_porch +
- mfd->panel_info.lcdc.h_front_porch +
- mfd->panel_info.lcdc.h_pulse_width +
- mfd->panel_info.xres;
- pr_debug("%s: panel hsync is %d.\n",
- __func__, hsync);
- }
+ */
+ hsync = mfd->panel_info.lcdc.h_back_porch +
+ mfd->panel_info.lcdc.h_front_porch +
+ mfd->panel_info.lcdc.h_pulse_width +
+ mfd->panel_info.xres;
+ pr_debug("%s: panel hsync is %d.\n",
+ __func__, hsync);
if (!hsync) {
pipe->req_clk = mdp_max_clk;
@@ -2726,20 +2801,18 @@ static int mdp4_calc_pipe_mdp_bw(struct
quota >>= shift;
/* factor 1.15 for ab */
- pipe->bw_ab_quota = quota * MDP4_BW_AB_FACTOR / 100;
- /* factor 1.25 for ib */
- pipe->bw_ib_quota = quota * MDP4_BW_IB_FACTOR / 100;
- /* down scaling factor for ib */
+ quota = quota * MDP4_BW_AB_FACTOR / 100;
+ /* downscaling factor for ab */
if ((pipe->dst_h) && (pipe->src_h) &&
(pipe->src_h > pipe->dst_h)) {
- u32 ib = quota;
- ib *= pipe->src_h;
- ib /= pipe->dst_h;
- pipe->bw_ib_quota = max((u64)ib, pipe->bw_ib_quota);
- pr_debug("%s: src_h=%d dst_h=%d mdp ib %u, ib_quota=%llu\n",
- __func__, pipe->src_h, pipe->dst_h,
- ib<<shift, pipe->bw_ib_quota<<shift);
+ quota = quota * pipe->src_h / pipe->dst_h;
+ pr_debug("%s: src_h=%d dst_h=%d mdp ab %llu\n",
+ __func__, pipe->src_h, pipe->dst_h, ((u64)quota << 16));
}
+ pipe->bw_ab_quota = quota;
+
+ /*factor 1.5 for ib */
+ pipe->bw_ib_quota = quota * MDP4_BW_IB_FACTOR / 100;
pipe->bw_ab_quota <<= shift;
pipe->bw_ib_quota <<= shift;
@@ -2797,6 +2870,50 @@ int mdp4_calc_blt_mdp_bw(struct msm_fb_d
return 0;
}
+static int mdp4_axi_port_read_client_pipe(struct mdp4_overlay_pipe *pipe)
+{
+ u32 data = inpdw(MDP_BASE + 0x0404);
+ u32 port = 0;
+ if (pipe->pipe_ndx == 1) /* rgb1 */
+ port = (data & 0x0010) ? 1 : 0;
+ else if (pipe->pipe_ndx == 2) /* rgb2 */
+ port = (data & 0x0080) ? 1 : 0;
+ else if (pipe->pipe_ndx == 3) /* vg1 */
+ port = (data & 0x0001) ? 1 : 0;
+ else if (pipe->pipe_ndx == 4) /* vg2 */
+ port = (data & 0x0004) ? 1 : 0;
+ pr_debug("%s axi_rd=%x pipe_ndx=%d port=%d\n", __func__,
+ data, pipe->pipe_ndx, port);
+ return port;
+}
+
+static int mdp4_axi_port_read_client_mixer(int mixer)
+{
+ u32 data = inpdw(MDP_BASE + 0x0404);
+ u32 port = 0;
+ if (mixer == MDP4_MIXER0) /* dmap */
+ port = (data & 0x1000) ? 1 : 0;
+ else if (mixer == MDP4_MIXER1) /* dmae */
+ port = (data & 0x80000) ? 1 : 0;
+ pr_debug("%s axi_rd=%x mixer=%d port=%d\n",
+ __func__, data, mixer, port);
+ return port;
+}
+
+static int mdp4_axi_port_write_client_mixer(int mixer)
+{
+ u32 data = inpdw(MDP_BASE + 0x0408);
+ u32 port = 0;
+ if (mixer == MDP4_MIXER0) /* dmap */
+ port = (data & 0x0001) ? 1 : 0;
+ else if (mixer == MDP4_MIXER1) /* dmae */
+ port = (data & 0x0004) ? 1 : 0;
+ else if (mixer == MDP4_MIXER2)
+ port = (data & 0x0004) ? 1 : 0;
+ pr_debug("%s axi_wr=%x mixer=%d port=%d\n",
+ __func__, data, mixer, port);
+ return port;
+}
int mdp4_overlay_mdp_perf_req(struct msm_fb_data_type *mfd,
struct mdp4_overlay_pipe *plist)
@@ -2811,7 +2928,10 @@ int mdp4_overlay_mdp_perf_req(struct msm
int src_w_total = 0;
static u64 minimum_ab=0;
static u64 minimum_ib=0;
-
+
+ u64 ab_quota_port0 = 0, ib_quota_port0 = 0;
+ u64 ab_quota_port1 = 0, ib_quota_port1 = 0;
+
u32 cnt = 0;
int ret = -EINVAL;
u64 ab_quota_total = 0, ib_quota_total = 0;
@@ -2849,6 +2969,14 @@ int mdp4_overlay_mdp_perf_req(struct msm
if (pipe->pipe_type != OVERLAY_TYPE_BF) {
ab_quota_total += pipe->bw_ab_quota;
ib_quota_total += pipe->bw_ib_quota;
+ if (mdp4_axi_port_read_client_pipe(pipe)) {
+ ab_quota_port1 += pipe->bw_ab_quota;
+ ib_quota_port1 += pipe->bw_ib_quota;
+ } else {
+ ab_quota_port0 += pipe->bw_ab_quota;
+ ib_quota_port0 += pipe->bw_ib_quota;
+ }
+
}
if(pipe->pipe_type == OVERLAY_TYPE_RGB){
@@ -2868,7 +2996,9 @@ int mdp4_overlay_mdp_perf_req(struct msm
* writeback (blt) mode to provide work around
* for dsi cmd mode interface hardware bug.
*/
- if (ctrl->panel_mode & MDP4_PANEL_DSI_CMD) {
+
+
+ if (ctrl->panel_mode & MDP4_PANEL_DSI_CMD) {
if (pipe->dst_x != 0)
perf_req->use_ov_blt[MDP4_MIXER0] = 1;
}
@@ -2886,16 +3016,30 @@ int mdp4_overlay_mdp_perf_req(struct msm
if (perf_req->use_ov_blt[i]) {
ab_quota_total += perf_req->mdp_ov_ab_bw[i];
ib_quota_total += perf_req->mdp_ov_ib_bw[i];
+ if (mdp4_axi_port_read_client_mixer(i)) {
+ ab_quota_port1 +=
+ (perf_req->mdp_ov_ab_bw[i] >> 1);
+ ib_quota_port1 +=
+ (perf_req->mdp_ov_ib_bw[i] >> 1);
+ } else {
+ ab_quota_port0 +=
+ (perf_req->mdp_ov_ab_bw[i] >> 1);
+ ib_quota_port0 +=
+ (perf_req->mdp_ov_ib_bw[i] >> 1);
+ }
+ if (mdp4_axi_port_write_client_mixer(i)) {
+ ab_quota_port1 +=
+ (perf_req->mdp_ov_ab_bw[i] >> 1);
+ ib_quota_port1 +=
+ (perf_req->mdp_ov_ib_bw[i] >> 1);
+ } else {
+ ab_quota_port0 +=
+ (perf_req->mdp_ov_ab_bw[i] >> 1);
+ ib_quota_port0 +=
+ (perf_req->mdp_ov_ib_bw[i] >> 1);
+ }
}
}
-
-#if 1
- if (perf_req->use_ov_blt[0]) {
- perf_req->mdp_clk_rate = mdp_clk_round_rate(mdp_max_clk);
- perf_req->use_ov_blt[0] = 0;
- pr_info("[SEC_DEBUG] Blt Mode : Enable -> Disable\n");
- }
-#endif
if(minimum_ab == 0 ||minimum_ib == 0){
minimum_ab = (1920*1080*4*60)>>16;
@@ -2912,10 +3056,18 @@ int mdp4_overlay_mdp_perf_req(struct msm
if((verysmallarea+yuvcount)==(cnt-1)){
ab_quota_total +=MDP_BUS_SCALE_AB_STEP;
ib_quota_total +=MDP_BUS_SCALE_AB_STEP;
+ ab_quota_port1 +=MDP_BUS_SCALE_AB_STEP;
+ ib_quota_port1 +=MDP_BUS_SCALE_AB_STEP;
+ ab_quota_port0 +=MDP_BUS_SCALE_AB_STEP;
+ ib_quota_port0 +=MDP_BUS_SCALE_AB_STEP;
}
else{
ab_quota_total= minimum_ab;
ib_quota_total= minimum_ib;
+ ab_quota_port1 = minimum_ab >> 1;
+ ib_quota_port1 = minimum_ib >> 1;
+ ab_quota_port0 = minimum_ab >> 1;
+ ib_quota_port0 = minimum_ib >> 1;
}
}
@@ -2929,19 +3081,42 @@ int mdp4_overlay_mdp_perf_req(struct msm
int fact = ((int) (bw_extra>>16))/((int)(ab_quota_total>>16));
/* Do not increase bw for layers which require more than 3 folds */
- if(fact <= 3) {
+ if(fact <= 3 ) {
ab_quota_total += bw_extra;
ib_quota_total += bw_extra;
- }
+ ab_quota_port1 += bw_extra >> 1;
+ ib_quota_port1 += bw_extra >> 1;
+ ab_quota_port0 += bw_extra >> 1;
+ ib_quota_port0 += bw_extra >> 1;
+ }
}
perf_req->mdp_ab_bw = roundup(ab_quota_total, MDP_BUS_SCALE_AB_STEP);
perf_req->mdp_ib_bw = roundup(ib_quota_total, MDP_BUS_SCALE_AB_STEP);
+
+ perf_req->mdp_ab_port0_bw =
+ roundup(ab_quota_port0, MDP_BUS_SCALE_AB_STEP);
+ perf_req->mdp_ib_port0_bw =
+ roundup(ib_quota_total, MDP_BUS_SCALE_AB_STEP);
+ perf_req->mdp_ab_port1_bw =
+ roundup(ab_quota_port1, MDP_BUS_SCALE_AB_STEP);
+ perf_req->mdp_ib_port1_bw =
+ roundup(ib_quota_total, MDP_BUS_SCALE_AB_STEP);
- pr_debug("%s %d: ab_quota_total=(%llu, %d) ib_quota_total=(%llu, %d)\n",
+ pr_debug("%s %d: ab_quota_total=(%llu, %llu) ib_quota_total=(%llu, %llu)\n",
__func__, __LINE__,
ab_quota_total, perf_req->mdp_ab_bw,
ib_quota_total, perf_req->mdp_ib_bw);
+ pr_debug("%s %d: ab_quota_port0=(%llu, %llu) ib_quota_port0=(%llu, %llu)\n",
+ __func__, __LINE__,
+ ab_quota_port0, perf_req->mdp_ab_port0_bw,
+ ib_quota_port0, perf_req->mdp_ib_port0_bw);
+
+ pr_debug("%s %d: ab_quota_port1=(%llu, %llu) ib_quota_port1=(%llu, %llu)\n",
+ __func__, __LINE__,
+ ab_quota_port1, perf_req->mdp_ab_port1_bw,
+ ib_quota_port1, perf_req->mdp_ib_port1_bw);
+
if (ab_quota_total > mdp_max_bw)
pr_debug("%s: req ab bw=%llu is larger than max bw=%llu",
@@ -3006,13 +3181,17 @@ void mdp4_overlay_mdp_perf_upd(struct ms
if ((perf_req->mdp_ab_bw > perf_cur->mdp_ab_bw) ||
(perf_req->mdp_ib_bw > perf_cur->mdp_ib_bw)) {
mdp_bus_scale_update_request
- (perf_req->mdp_ab_bw, perf_req->mdp_ib_bw);
- pr_debug("%s mdp ab_bw is changed [%d] from %d to %d\n",
+ (perf_req->mdp_ab_port0_bw,
+ perf_req->mdp_ib_port0_bw,
+ perf_req->mdp_ab_port1_bw,
+ perf_req->mdp_ib_port1_bw);
+ pr_debug("%s mdp ab_bw is changed [%d] from %llu to %llu\n",
+
__func__,
flag,
perf_cur->mdp_ab_bw,
perf_req->mdp_ab_bw);
- pr_debug("%s mdp ib_bw is changed [%d] from %d to %d\n",
+ pr_debug("%s mdp ib_bw is changed [%d] from %llu to %llu\n",
__func__,
flag,
perf_cur->mdp_ib_bw,
@@ -3050,14 +3229,17 @@ void mdp4_overlay_mdp_perf_upd(struct ms
}
if (perf_req->mdp_ab_bw < perf_cur->mdp_ab_bw ||
perf_req->mdp_ib_bw < perf_cur->mdp_ib_bw) {
- mdp_bus_scale_update_request
- (perf_req->mdp_ab_bw, perf_req->mdp_ib_bw);
- pr_debug("%s mdp ab bw is changed [%d] from %d to %d\n",
+ mdp_bus_scale_update_request
+ (perf_req->mdp_ab_port0_bw,
+ perf_req->mdp_ib_port0_bw,
+ perf_req->mdp_ab_port1_bw,
+ perf_req->mdp_ib_port1_bw);
+ pr_debug("%s mdp ab bw is changed [%d] from %llu to %llu\n",
__func__,
flag,
perf_cur->mdp_ab_bw,
perf_req->mdp_ab_bw);
- pr_debug("%s mdp ib bw is changed [%d] from %d to %d\n",
+ pr_debug("%s mdp ib bw is changed [%d] from %llu to %llu\n",
__func__,
flag,
perf_cur->mdp_ib_bw,
file:637d8aef983e32b084347166ddcde144fd1c5e04 -> file:51a6837ebc11ec0e0633198dfe5e8e3a9706c75d
--- a/drivers/video/msm/mdp4_overlay_dsi_cmd.c
+++ b/drivers/video/msm/mdp4_overlay_dsi_cmd.c
@@ -878,7 +878,9 @@ static void mdp4_overlay_update_dsi_cmd(
/* TE enabled */
mdp4_mipi_vsync_enable(mfd, pipe, 0);
-
+
+ mdp4_overlay_mdp_pipe_req(pipe, mfd);
+ mdp4_calc_blt_mdp_bw(mfd, pipe);
MDP_OUTP(MDP_BASE + 0x021c, 10); /* read pointer */
/*
file:be241950481568b272594a73c1b7e7242dd11873 -> file:836c18a27bcbb141834142d8ef349ce93f61a922
--- a/drivers/video/msm/mdp4_overlay_dsi_video.c
+++ b/drivers/video/msm/mdp4_overlay_dsi_video.c
@@ -204,8 +204,6 @@ int mdp4_dsi_video_pipe_commit(int cndx,
}
mutex_unlock(&vctrl->update_lock);
- /* free previous committed iommu back to pool */
- mdp4_overlay_iommu_unmap_freelist(mixer);
spin_lock_irqsave(&vctrl->spin_lock, flags);
if (vctrl->ov_koff != vctrl->ov_done) {
@@ -235,16 +233,13 @@ int mdp4_dsi_video_pipe_commit(int cndx,
cnt++;
real_pipe = mdp4_overlay_ndx2pipe(pipe->pipe_ndx);
if (real_pipe && real_pipe->pipe_used) {
- /* pipe not unset */
+ /*
+ * commit pipes which are in pending queue
+ * and not be unset yet
+ */
mdp4_overlay_vsync_commit(pipe);
}
- /* free previous iommu to freelist
- * which will be freed at next
- * pipe_commit
- */
- mdp4_overlay_iommu_pipe_free(pipe->pipe_ndx, 0);
- pipe->pipe_used = 0; /* clear */
- }
+ }
}
mdp4_mixer_stage_commit(mixer);
@@ -252,6 +247,35 @@ int mdp4_dsi_video_pipe_commit(int cndx,
/* start timing generator & mmu if they are not started yet */
mdp4_overlay_dsi_video_start();
+ /*
+ * there has possibility that pipe commit come very close to next vsync
+ * this may cause two consecutive pie_commits happen within same vsync
+ * period which casue iommu page fault when previous iommu buffer
+ * freed. Set ION_IOMMU_UNMAP_DELAYED flag at ion_map_iommu() to
+ * add delay unmap iommu buffer to fix this problem.
+ * Also ion_unmap_iommu() may take as long as 9 ms to free an ion buffer.
+ * therefore mdp4_overlay_iommu_unmap_freelist(mixer) should be called
+ * ater stage_commit() to ensure pipe_commit (up to stage_commit)
+ * is completed within vsync period.
+ */
+
+ /* free previous committed iommu back to pool */
+ mdp4_overlay_iommu_unmap_freelist(mixer);
+
+ pipe = vp->plist;
+ for (i = 0; i < OVERLAY_PIPE_MAX; i++, pipe++) {
+ if (pipe->pipe_used) {
+
+
+ /* free previous iommu to freelist
+ * which will be freed at next
+ * pipe_commit
+ */
+ mdp4_overlay_iommu_pipe_free(pipe->pipe_ndx, 0);
+ pipe->pipe_used = 0; /* clear */
+ }
+ }
+
pipe = vctrl->base_pipe;
spin_lock_irqsave(&vctrl->spin_lock, flags);
if (pipe->ov_blt_addr) {
@@ -277,7 +301,7 @@ int mdp4_dsi_video_pipe_commit(int cndx,
if (pipe->ov_blt_addr)
mdp4_dsi_video_wait4ov(0);
else
- mdp4_dsi_video_wait4dmap(0);
+ mdp4_dsi_video_wait4vsync(0);
}
#ifdef MDP_ODD_RESOLUTION_CTRL
current_pipe_ndx = pipe->pipe_ndx;
@@ -451,6 +475,9 @@ ssize_t mdp4_dsi_video_show_event(struct
ssize_t ret = 0;
unsigned long flags;
u64 vsync_tick;
+ ktime_t ctime;
+ u32 ctick, ptick;
+ int diff;
cndx = 0;
vctrl = &vsync_ctrl_db[0];
@@ -459,6 +486,29 @@ ssize_t mdp4_dsi_video_show_event(struct
if (atomic_read(&vctrl->suspend) > 0 ||
atomic_read(&vctrl->vsync_resume) == 0)
return 0;
+ /*
+ * show_event thread keep spinning on vctrl->vsync_comp
+ * race condition on x.done if multiple thread blocked
+ * at wait_for_completion(&vctrl->vsync_comp)
+ *
+ * if show_event thread waked up first then it will come back
+ * and call INIT_COMPLETION(vctrl->vsync_comp) which set x.done = 0
+ * then second thread wakeed up which set x.done = 0x7ffffffd
+ * after that wait_for_completion will never wait.
+ * To avoid this, force show_event thread to sleep 5 ms here
+ * since it has full vsycn period (16.6 ms) to wait
+ */
+ ctime = ktime_get();
+ ctick = (u32)ktime_to_us(ctime);
+ ptick = (u32)ktime_to_us(vctrl->vsync_time);
+ ptick += 5000; /* 5ms */
+ diff = ptick - ctick;
+ if (diff > 0) {
+ if (diff > 1000) /* 1 ms */
+ diff = 1000;
+ usleep(diff);
+ }
+
spin_lock_irqsave(&vctrl->spin_lock, flags);
if (vctrl->wait_vsync_cnt == 0)
@@ -763,6 +813,7 @@ int mdp4_dsi_video_off(struct platform_d
mdp4_dsi_video_wait4vsync(cndx);
complete_all(&vctrl->vsync_comp);
+ vctrl->wait_vsync_cnt = 0;
if (pipe == NULL)
return -EINVAL;
@@ -983,13 +1034,11 @@ void mdp4_primary_vsync_dsi_video(void)
vctrl = &vsync_ctrl_db[cndx];
pr_debug("%s: cpu=%d\n", __func__, smp_processor_id());
- spin_lock(&vctrl->spin_lock);
- vctrl->vsync_time = ktime_get();
+ spin_lock(&vctrl->spin_lock);
- if (vctrl->wait_vsync_cnt) {
- complete_all(&vctrl->vsync_comp);
- vctrl->wait_vsync_cnt = 0;
- }
+ vctrl->vsync_time = ktime_get();
+ complete_all(&vctrl->vsync_comp);
+ vctrl->wait_vsync_cnt = 0;
spin_unlock(&vctrl->spin_lock);
}
@@ -1202,7 +1251,7 @@ void mdp4_dsi_video_overlay(struct msm_f
if (pipe->ov_blt_addr)
mdp4_dsi_video_wait4ov(cndx);
else
- mdp4_dsi_video_wait4dmap(cndx);
+ mdp4_dsi_video_wait4vsync(cndx);
}
mdp4_overlay_mdp_perf_upd(mfd, 0);
file:4ec45bc46bf58e8179e4270891451884dec4cf51 -> file:aa0f79d5b96d18a345b95e61a78d24ef63dd5f4c
--- a/drivers/video/msm/mdp4_overlay_dtv.c
+++ b/drivers/video/msm/mdp4_overlay_dtv.c
@@ -200,7 +200,6 @@ int mdp4_dtv_pipe_commit(int cndx, int w
vp = &vctrl->vlist[undx];
pipe = vctrl->base_pipe;
mixer = pipe->mixer_num;
- mdp4_overlay_iommu_unmap_freelist(mixer);
mdp_update_pm(vctrl->mfd, vctrl->vsync_time);
@@ -224,6 +223,31 @@ int mdp4_dtv_pipe_commit(int cndx, int w
/* pipe not unset */
mdp4_overlay_vsync_commit(pipe);
}
+ }
+ }
+ mdp4_mixer_stage_commit(mixer);
+
+ /* start timing generator & mmu if they are not started yet */
+ mdp4_overlay_dtv_start();
+
+ /*
+ * there has possibility that pipe commit come very close to next vsync
+ * this may cause two consecutive pie_commits happen within same vsync
+ * period which casue iommu page fault when previous iommu buffer
+ * freed. Set ION_IOMMU_UNMAP_DELAYED flag at ion_map_iommu() to
+ * add delay unmap iommu buffer to fix this problem.
+ * Also ion_unmap_iommu() may take as long as 9 ms to free an ion buffer.
+ * therefore mdp4_overlay_iommu_unmap_freelist(mixer) should be called
+ * ater stage_commit() to ensure pipe_commit (up to stage_commit)
+ * is completed within vsync period.
+ */
+
+ /* free previous committed iommu back to pool */
+ mdp4_overlay_iommu_unmap_freelist(mixer);
+
+ pipe = vp->plist;
+ for (i = 0; i < OVERLAY_PIPE_MAX; i++, pipe++) {
+ if (pipe->pipe_used) {
/* free previous iommu to freelist
* which will be freed at next
* pipe_commit
@@ -232,11 +256,6 @@ int mdp4_dtv_pipe_commit(int cndx, int w
pipe->pipe_used = 0; /* clear */
}
}
- mdp4_mixer_stage_commit(mixer);
-
- /* start timing generator & mmu if they are not started yet */
- mdp4_overlay_dtv_start();
-
pipe = vctrl->base_pipe;
spin_lock_irqsave(&vctrl->spin_lock, flags);
if (pipe->ov_blt_addr) {
@@ -371,6 +390,9 @@ ssize_t mdp4_dtv_show_event(struct devic
ssize_t ret = 0;
unsigned long flags;
u64 vsync_tick;
+ ktime_t ctime;
+ u32 ctick, ptick;
+ int diff;
cndx = 0;
vctrl = &vsync_ctrl_db[0];
@@ -379,6 +401,28 @@ ssize_t mdp4_dtv_show_event(struct devic
!external_common_state->hpd_state ||
atomic_read(&vctrl->vsync_resume) == 0)
return 0;
+ /*
+ * show_event thread keep spinning on vctrl->vsync_comp
+ * race condition on x.done if multiple thread blocked
+ * at wait_for_completion(&vctrl->vsync_comp)
+ *
+ * if show_event thread waked up first then it will come back
+ * and call INIT_COMPLETION(vctrl->vsync_comp) which set x.done = 0
+ * then second thread wakeed up which set x.done = 0x7ffffffd
+ * after that wait_for_completion will never wait.
+ * To avoid this, force show_event thread to sleep 5 ms here
+ * since it has full vsycn period (16.6 ms) to wait
+ */
+ ctime = ktime_get();
+ ctick = (u32)ktime_to_us(ctime);
+ ptick = (u32)ktime_to_us(vctrl->vsync_time);
+ ptick += 5000; /* 5ms */
+ diff = ptick - ctick;
+ if (diff > 0) {
+ if (diff > 1000) /* 1 ms */
+ diff = 1000;
+ usleep(diff);
+ }
spin_lock_irqsave(&vctrl->spin_lock, flags);
if (vctrl->wait_vsync_cnt == 0)
@@ -655,6 +699,7 @@ int mdp4_dtv_off(struct platform_device
mdp4_dtv_wait4vsync(cndx);
complete_all(&vctrl->vsync_comp);
+ vctrl->wait_vsync_cnt = 0;
pipe = vctrl->base_pipe;
if (pipe != NULL) {
@@ -893,10 +938,9 @@ void mdp4_external_vsync_dtv(void)
spin_lock(&vctrl->spin_lock);
vctrl->vsync_time = ktime_get();
- if (vctrl->wait_vsync_cnt) {
- complete_all(&vctrl->vsync_comp);
- vctrl->wait_vsync_cnt = 0;
- }
+ complete_all(&vctrl->vsync_comp);
+ vctrl->wait_vsync_cnt = 0;
+
spin_unlock(&vctrl->spin_lock);
}
file:e47eba0839e844b7ad019d52507dab721cb593f7 -> file:caea7e1c193acecc76d2f89d9a059a96a456b049
--- a/drivers/video/msm/mdp4_overlay_lcdc.c
+++ b/drivers/video/msm/mdp4_overlay_lcdc.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2009-2012, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2009-2013, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -240,12 +240,6 @@ int mdp4_lcdc_pipe_commit(int cndx, int
/* pipe not unset */
mdp4_overlay_vsync_commit(pipe);
}
- /* free previous iommu to freelist
- * which will be freed at next
- * pipe_commit
- */
- mdp4_overlay_iommu_pipe_free(pipe->pipe_ndx, 0);
- pipe->pipe_used = 0; /* clear */
}
}
@@ -253,6 +247,33 @@ int mdp4_lcdc_pipe_commit(int cndx, int
/* start timing generator & mmu if they are not started yet */
mdp4_overlay_lcdc_start();
+ /*
+ * there has possibility that pipe commit come very close to next vsync
+ * this may cause two consecutive pie_commits happen within same vsync
+ * period which casue iommu page fault when previous iommu buffer
+ * freed. Set ION_IOMMU_UNMAP_DELAYED flag at ion_map_iommu() to
+ * add delay unmap iommu buffer to fix this problem.
+ * Also ion_unmap_iommu() may take as long as 9 ms to free an ion buffer.
+ * therefore mdp4_overlay_iommu_unmap_freelist(mixer) should be called
+ * ater stage_commit() to ensure pipe_commit (up to stage_commit)
+ * is completed within vsync period.
+ */
+
+ /* free previous committed iommu back to pool */
+ mdp4_overlay_iommu_unmap_freelist(mixer);
+
+ pipe = vp->plist;
+ for (i = 0; i < OVERLAY_PIPE_MAX; i++, pipe++) {
+ if (pipe->pipe_used) {
+ /* free previous iommu to freelist
+ * which will be freed at next
+ * pipe_commit
+ */
+ mdp4_overlay_iommu_pipe_free(pipe->pipe_ndx, 0);
+ pipe->pipe_used = 0; /* clear */
+ }
+ }
+
pipe = vctrl->base_pipe;
spin_lock_irqsave(&vctrl->spin_lock, flags);
@@ -406,6 +427,9 @@ ssize_t mdp4_lcdc_show_event(struct devi
ssize_t ret = 0;
unsigned long flags;
u64 vsync_tick;
+ ktime_t ctime;
+ u32 ctick, ptick;
+ int diff;
cndx = 0;
vctrl = &vsync_ctrl_db[0];
@@ -413,6 +437,28 @@ ssize_t mdp4_lcdc_show_event(struct devi
if (atomic_read(&vctrl->suspend) > 0 ||
atomic_read(&vctrl->vsync_resume) == 0)
return 0;
+ /*
+ * show_event thread keep spinning on vctrl->vsync_comp
+ * race condition on x.done if multiple thread blocked
+ * at wait_for_completion(&vctrl->vsync_comp)
+ *
+ * if show_event thread waked up first then it will come back
+ * and call INIT_COMPLETION(vctrl->vsync_comp) which set x.done = 0
+ * then second thread wakeed up which set x.done = 0x7ffffffd
+ * after that wait_for_completion will never wait.
+ * To avoid this, force show_event thread to sleep 5 ms here
+ * since it has full vsycn period (16.6 ms) to wait
+ */
+ ctime = ktime_get();
+ ctick = (u32)ktime_to_us(ctime);
+ ptick = (u32)ktime_to_us(vctrl->vsync_time);
+ ptick += 5000; /* 5ms */
+ diff = ptick - ctick;
+ if (diff > 0) {
+ if (diff > 1000) /* 1 ms */
+ diff = 1000;
+ usleep(diff);
+ }
spin_lock_irqsave(&vctrl->spin_lock, flags);
if (vctrl->wait_vsync_cnt == 0)
@@ -713,6 +759,7 @@ int mdp4_lcdc_off(struct platform_device
msleep(20); /* >= 17 ms */
complete_all(&vctrl->vsync_comp);
+ vctrl->wait_vsync_cnt = 0;
if (pipe == NULL)
return -EINVAL;
if (pipe->ov_blt_addr) {
@@ -831,11 +878,8 @@ void mdp4_primary_vsync_lcdc(void)
spin_lock(&vctrl->spin_lock);
vctrl->vsync_time = ktime_get();
- if (vctrl->wait_vsync_cnt) {
- complete_all(&vctrl->vsync_comp);
- vctrl->wait_vsync_cnt = 0;
- }
-
+ complete_all(&vctrl->vsync_comp);
+ vctrl->wait_vsync_cnt = 0;
spin_unlock(&vctrl->spin_lock);
}
file:c81fee0c83ef39306e4eab49c533c07aa3b7d6a7 -> file:cf9baf259a2cc95e54572d235dde00998e70d408
--- a/drivers/video/msm/mdp4_util.c
+++ b/drivers/video/msm/mdp4_util.c
@@ -636,6 +636,7 @@ irqreturn_t mdp4_isr(int irq, void *ptr)
if (isr & INTR_PRIMARY_INTF_UDERRUN) {
pr_info("%s: UNDERRUN -- primary\n", __func__);
mdp4_stat.intr_underrun_p++;
+ dump_underrun_pipe_info();
/* When underun occurs mdp clear the histogram registers
that are set before in hw_init so restore them back so
that histogram works.*/
file:35ca9abf5335d4a01485cc126043c821867a27d2 -> file:a39137ee3d8b024d209993ad8109e2e533ff0247
--- a/drivers/video/msm/mipi_dsi.c
+++ b/drivers/video/msm/mipi_dsi.c
@@ -65,6 +65,10 @@ static struct platform_driver mipi_dsi_d
struct device dsi_dev;
+#if defined(CONFIG_ESD_ERR_FG_RECOVERY)
+extern struct mutex power_state_chagne;
+static struct platform_device *pdev_for_esd;
+#endif
static int mipi_dsi_off(struct platform_device *pdev)
{
int ret = 0;
@@ -166,6 +170,9 @@ static int mipi_dsi_on(struct platform_d
pr_debug("%s+:\n", __func__);
+#if defined(CONFIG_ESD_ERR_FG_RECOVERY)
+ pdev_for_esd = pdev;
+#endif
mfd = platform_get_drvdata(pdev);
fbi = mfd->fbi;
var = &fbi->var;
@@ -369,6 +376,64 @@ static int mipi_dsi_late_init(struct pla
return panel_next_late_init(pdev);
}
+#if defined(CONFIG_ESD_ERR_FG_RECOVERY)
+void esd_recovery(void)
+{
+ struct msm_fb_data_type *mfd;
+ u32 tmp, tmp2;
+
+ if (pdev_for_esd) {
+ mfd = platform_get_drvdata(pdev_for_esd);
+
+ if (mfd->panel_power_on == TRUE) {
+ mutex_lock(&power_state_chagne);
+
+ panel_next_off(pdev_for_esd);
+
+ if (mipi_dsi_pdata && mipi_dsi_pdata->active_reset)
+ mipi_dsi_pdata->active_reset(0); /* low */
+
+ if (mipi_dsi_pdata && mipi_dsi_pdata->panel_power_save)
+ mipi_dsi_pdata->panel_power_save(0);
+
+ msleep(10);
+
+ if (mipi_dsi_pdata && mipi_dsi_pdata->panel_power_save)
+ mipi_dsi_pdata->panel_power_save(1);
+
+ /* LP11 */
+ tmp2 = tmp = MIPI_INP(MIPI_DSI_BASE + 0xA8);
+ tmp &= ~(1<<28);
+ MIPI_OUTP(MIPI_DSI_BASE + 0xA8, tmp);
+ wmb();
+ /* LP11 */
+
+ usleep(5000);
+ if (mipi_dsi_pdata && mipi_dsi_pdata->active_reset)
+ mipi_dsi_pdata->active_reset(1); /* high */
+ msleep(10);
+ if (mipi_dsi_pdata && mipi_dsi_pdata->active_reset)
+ mipi_dsi_pdata->active_reset(0); /* low */
+ msleep(10);
+ if (mipi_dsi_pdata && mipi_dsi_pdata->active_reset)
+ mipi_dsi_pdata->active_reset(1); /* high */
+ msleep(10);
+
+ MIPI_OUTP(MIPI_DSI_BASE + 0xA8, tmp2);
+ wmb();
+
+ panel_next_on(pdev_for_esd);
+ mipi_dsi_late_init(pdev_for_esd);
+
+#if defined(CONFIG_MDNIE_LITE_TUNING)
+ is_negative_on();
+#endif
+ mutex_unlock(&power_state_chagne);
+ }
+ }
+}
+#endif
+
static int mipi_dsi_resource_initialized;
static int mipi_dsi_probe(struct platform_device *pdev)
file:1377e090f62be9596e1157a524c69a3e41ff21b4 -> file:47116e16b17ceacef9986651cbdef15b4db11217
--- a/drivers/video/msm/mipi_dsi.h
+++ b/drivers/video/msm/mipi_dsi.h
@@ -17,6 +17,10 @@
#include <mach/scm-io.h>
#include <linux/list.h>
+#if defined(CONFIG_ESD_ERR_FG_RECOVERY)
+#include "mdnie_lite_tuning.h"
+#endif
+
#ifdef BIT
#undef BIT
#endif
@@ -371,4 +375,8 @@ int mipi_runtime_clk_change(int fps);
void mipi_dsi_irq_set(uint32 mask, uint32 irq);
void mdp4_dsi_video_wait4dmap_for_dsi(int cndx);
+#if defined(CONFIG_ESD_ERR_FG_RECOVERY)
+void esd_recovery(void);
+#endif
+
#endif /* MIPI_DSI_H */
file:76690c06df48b14b5966ca3d2db1ccd367cd3238 -> file:0d94fcde32f78beea1370fbcecf335f1cee7f653
--- a/drivers/video/msm/mipi_renesas_tft_video_full_hd_pt.c
+++ b/drivers/video/msm/mipi_renesas_tft_video_full_hd_pt.c
@@ -20,30 +20,30 @@ static struct msm_panel_info pinfo;
static struct mipi_panel_data mipi_pd;
enum {
- GAMMA_30CD = 8, // MIN 10 from platform
- GAMMA_40CD = 16,
- GAMMA_50CD = 22,
- GAMMA_60CD = 28,
- GAMMA_70CD = 34,
- GAMMA_80CD = 40,
- GAMMA_90CD = 46,
- GAMMA_100CD = 52,
- GAMMA_110CD = 58,
- GAMMA_120CD = 64,
- GAMMA_130CD = 70,
- GAMMA_140CD = 76,
- GAMMA_150CD = 82, // DEF 150 from platform
- GAMMA_160CD = 94,
- GAMMA_170CD = 106,
- GAMMA_180CD = 118,
- GAMMA_190CD = 130,
- GAMMA_200CD = 142,
- GAMMA_210CD = 154,
- GAMMA_220CD = 166,
- GAMMA_230CD = 178,
- GAMMA_240CD = 190,
- GAMMA_250CD = 202, // MAX 255 from platform
- GAMMA_300CD = 202,
+ GAMMA_30CD = 7, // MIN 10 from platform
+ GAMMA_40CD = 14,
+ GAMMA_50CD = 20,
+ GAMMA_60CD = 24,
+ GAMMA_70CD = 28,
+ GAMMA_80CD = 32,
+ GAMMA_90CD = 36,
+ GAMMA_100CD = 40,
+ GAMMA_110CD = 44,
+ GAMMA_120CD = 48,
+ GAMMA_130CD = 52,
+ GAMMA_140CD = 56,
+ GAMMA_150CD = 60, // DEF 150 from platform
+ GAMMA_160CD = 72,
+ GAMMA_170CD = 84,
+ GAMMA_180CD = 96,
+ GAMMA_190CD = 108,
+ GAMMA_200CD = 120,
+ GAMMA_210CD = 132,
+ GAMMA_220CD = 144,
+ GAMMA_230CD = 156,
+ GAMMA_240CD = 168,
+ GAMMA_250CD = 182, // MAX 255 from platform
+ GAMMA_300CD = 182,
};
@@ -63,12 +63,12 @@ static char renesas_manufacture_cmd_acce
static char renesas_brightness_setting[] = {
0x51,
- 0xCA, /*0xFF,*/
+ 0xB6, /*0xFF,*/
};
static char renesas_brightness_packet[] = {
0x51,
- 0xCA, /*0xFF, */
+ 0xB6, /*0xFF, */
};
static char renesas_cabc_control[] = {
@@ -93,6 +93,11 @@ static char renesas_backlight_control[]
0x2C,
};
+static char renesas_teon_control[] = {
+ 0x35,
+ 0x01,
+};
+
static char renesas_memory_access_control[] = {
0x36,
0xC0,
@@ -114,6 +119,9 @@ static struct dsi_cmd_desc renesas_ready
sizeof(renesas_backlight_control), renesas_backlight_control},
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
+ sizeof(renesas_teon_control), renesas_teon_control},
+
+ {DTYPE_DCS_LWRITE, 1, 0, 0, 0,
sizeof(renesas_sleep_out), renesas_sleep_out},
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
@@ -279,7 +287,10 @@ static int brightness_control(int bl_lev
renesas_brightness_packet[1] = value & 0xFF;
renesas_brightness_packet[1] = (value >> 8) & 0xFF;
} else
+ {
renesas_brightness_packet[1] = level & 0xFF;
+ renesas_brightness_setting[1] = level & 0xFF;
+ }
return 0;
}
@@ -352,6 +363,8 @@ static int __init mipi_cmd_samsung_tft_f
#endif
pinfo.xres = 1080;
pinfo.yres = 1920;
+ pinfo.height = 111;
+ pinfo.width = 62;
pinfo.type = MIPI_VIDEO_PANEL;
pinfo.pdest = DISPLAY_1;
file:69f70a9c5449e90e840c1fcd66262df73e9c1c7a -> file:6d864a73915f1cc79ec3b7b0d086971cd12e461e
--- a/drivers/video/msm/mipi_samsung_octa_video_full_hd_pt.c
+++ b/drivers/video/msm/mipi_samsung_octa_video_full_hd_pt.c
@@ -42,11 +42,6 @@ static char samsung_test_key_on1[] = {
0x5A, 0x5A,
};
-static char samsung_test_key_on2[] = {
- 0xF1,
- 0x5A, 0x5A,
-};
-
static char samsung_test_key_on3[] = {
0xFC,
0x5A, 0x5A,
@@ -639,8 +634,6 @@ static struct dsi_cmd_desc samsung_on_cm
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
sizeof(samsung_test_key_on1), samsung_test_key_on1},
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
- sizeof(samsung_test_key_on2), samsung_test_key_on2},
- {DTYPE_DCS_LWRITE, 1, 0, 0, 0,
sizeof(samsung_test_key_on3), samsung_test_key_on3},
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
@@ -714,8 +707,6 @@ static struct dsi_cmd_desc samsung_on_cm
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
sizeof(samsung_test_key_on1), samsung_test_key_on1},
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
- sizeof(samsung_test_key_on2), samsung_test_key_on2},
- {DTYPE_DCS_LWRITE, 1, 0, 0, 0,
sizeof(samsung_test_key_on3), samsung_test_key_on3},
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
@@ -793,8 +784,6 @@ static struct dsi_cmd_desc samsung_on_cm
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
sizeof(samsung_test_key_on1), samsung_test_key_on1},
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
- sizeof(samsung_test_key_on2), samsung_test_key_on2},
- {DTYPE_DCS_LWRITE, 1, 0, 0, 0,
sizeof(samsung_test_key_on3), samsung_test_key_on3},
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
@@ -838,8 +827,6 @@ static struct dsi_cmd_desc samsung_on_cm
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
sizeof(samsung_test_key_on1), samsung_test_key_on1},
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
- sizeof(samsung_test_key_on2), samsung_test_key_on2},
- {DTYPE_DCS_LWRITE, 1, 0, 0, 0,
sizeof(samsung_test_key_on3), samsung_test_key_on3},
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
@@ -887,8 +874,6 @@ static struct dsi_cmd_desc samsung_on_cm
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
sizeof(samsung_test_key_on1), samsung_test_key_on1},
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
- sizeof(samsung_test_key_on2), samsung_test_key_on2},
- {DTYPE_DCS_LWRITE, 1, 0, 0, 0,
sizeof(samsung_test_key_on3), samsung_test_key_on3},
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
@@ -944,8 +929,6 @@ static struct dsi_cmd_desc samsung_on_cm
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
sizeof(samsung_test_key_on1), samsung_test_key_on1},
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
- sizeof(samsung_test_key_on2), samsung_test_key_on2},
- {DTYPE_DCS_LWRITE, 1, 0, 0, 0,
sizeof(samsung_test_key_on3), samsung_test_key_on3},
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
@@ -1013,8 +996,6 @@ static struct dsi_cmd_desc panel_mtp_ena
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
sizeof(samsung_test_key_on1), samsung_test_key_on1},
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
- sizeof(samsung_test_key_on2), samsung_test_key_on2},
- {DTYPE_DCS_LWRITE, 1, 0, 0, 0,
sizeof(samsung_test_key_on3), samsung_test_key_on3},
};
file:25f19dd3d092fa13d8b5bd42e2b96008f6cde16e -> file:5dbef2ecf91a6564de716a4239c3241344eaba7d
--- a/drivers/video/msm/mipi_samsung_tft.c
+++ b/drivers/video/msm/mipi_samsung_tft.c
@@ -18,6 +18,11 @@
#include "mipi_samsung_tft.h"
#include "mdp4.h"
+#include <linux/mfd/pm8xxx/pm8921.h>
+#include <linux/mfd/pm8xxx/pm8821.h>
+#include "../../../arch/arm/mach-msm/board-8064.h"
+#include <linux/gpio.h>
+
#if defined(CONFIG_FB_MDP4_ENHANCE)
#include "mdp4_video_enhance.h"
#elif defined(CONFIG_MDNIE_LITE_TUNING)
@@ -40,6 +45,39 @@ static int is_disp_on = 0;
static int is_cabc_delayed = 0;
#endif
+#if defined(CONFIG_ESD_ERR_FG_RECOVERY)
+struct work_struct err_fg_work;
+#define PMIC_GPIO_ERR_FG 8
+static int err_fg_gpio; /* PM_GPIO8 */
+struct pm_gpio gpio_get_param = {
+ .direction = PM_GPIO_DIR_IN,
+ .pull = PM_GPIO_PULL_NO,
+ .vin_sel = 2,
+ .function = PM_GPIO_FUNC_NORMAL,
+ .inv_int_pol = 0,
+};
+static int err_fg_working;
+#endif
+
+#if defined(RUMTIME_MIPI_CLK_CHANGE)
+static int current_fps;
+#endif
+
+static int atoi(const char *name)
+{
+ int val = 0;
+
+ for (;; name++) {
+ switch (*name) {
+ case '0' ... '9':
+ val = 10*val+(*name-'0');
+ break;
+ default:
+ return val;
+ }
+ }
+}
+
static int mipi_samsung_disp_send_cmd(struct msm_fb_data_type *mfd,
enum mipi_samsung_cmd_list cmd,
unsigned char lock)
@@ -247,6 +285,10 @@ static int mipi_samsung_disp_on(struct p
#endif
#endif
+#if defined(RUMTIME_MIPI_CLK_CHANGE)
+ current_fps = mfd->panel_info.mipi.frame_rate;
+#endif
+
#if defined(AUTO_BRIGHTNESS_CABC_FUNCTION)
is_disp_on = 1;
@@ -260,6 +302,9 @@ static int mipi_samsung_disp_on(struct p
printk(KERN_INFO "[lcd] mipi_samsung_disp_on end\n");
+#if defined(CONFIG_ESD_ERR_FG_RECOVERY)
+ enable_irq(PM8921_GPIO_IRQ(PM8921_IRQ_BASE, PMIC_GPIO_ERR_FG));
+#endif
return 0;
}
@@ -274,8 +319,18 @@ static int mipi_samsung_disp_off(struct
if (unlikely(mfd->key != MFD_KEY))
return -EINVAL;
+#if defined(CONFIG_ESD_ERR_FG_RECOVERY)
+ if (!err_fg_working)
+ cancel_work_sync(&err_fg_work);
+ disable_irq(PM8921_GPIO_IRQ(PM8921_IRQ_BASE, PMIC_GPIO_ERR_FG));
+#endif
mipi_samsung_disp_send_cmd(mfd, PANEL_OFF, false);
+#if defined(RUMTIME_MIPI_CLK_CHANGE)
+ if (mfd->panel_info.mipi.frame_rate != current_fps)
+ mipi_runtime_clk_change(mfd->panel_info.mipi.frame_rate);
+#endif
+
#if defined(AUTO_BRIGHTNESS_CABC_FUNCTION)
is_disp_on = 0;
#endif
@@ -463,12 +518,100 @@ static ssize_t mipi_samsung_auto_brightn
return size;
}
+static ssize_t mipi_samsung_disp_backlight_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ int rc;
+ struct msm_fb_data_type *mfd;
+ mfd = platform_get_drvdata(msd.msm_pdev);
+
+ rc = snprintf((char *)buf, sizeof(buf), "%d\n", mfd->bl_level);
+
+ return rc;
+}
+
+static ssize_t mipi_samsung_disp_backlight_store(struct device *dev,
+ struct device_attribute *attr, const char *buf, size_t size)
+{
+ struct msm_fb_data_type *mfd;
+ int level = atoi(buf);
+
+ mfd = platform_get_drvdata(msd.msm_pdev);
+
+ mfd->bl_level = level;
+
+ if (mfd->resume_state == MIPI_RESUME_STATE) {
+ mipi_samsung_disp_backlight(mfd);
+ pr_info("%s : level (%d)\n",__func__,level);
+ } else {
+ pr_info("%s : panel is off state!!\n", __func__);
+ }
+ return size;
+}
static struct lcd_ops mipi_samsung_disp_props = {
.get_power = NULL,
.set_power = NULL,
};
+#if defined(RUMTIME_MIPI_CLK_CHANGE)
+static ssize_t mipi_samsung_fps_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ int rc;
+
+ rc = snprintf((char *)buf, 20, "%d\n", current_fps);
+
+ return rc;
+}
+
+static ssize_t mipi_samsung_fps_store(struct device *dev,
+ struct device_attribute *attr, const char *buf, size_t size)
+{
+ struct msm_fb_data_type *mfd;
+ int goal_fps;
+ int level = atoi(buf);
+
+ mfd = platform_get_drvdata(msd.msm_pdev);
+
+ if (mfd->panel_power_on == FALSE) {
+ pr_err("%s fps set error, panel power off 1", __func__);
+ return size;
+ }
+
+ if (level == 0)
+ goal_fps = 60;
+ else if (level == 1)
+ goal_fps = 42;
+ else if (level == 2)
+ goal_fps = 51;
+ else {
+ pr_info("%s fps set error : invalid level %d", __func__, level);
+ return size;
+ }
+
+ if (current_fps != goal_fps)
+ current_fps = goal_fps;
+ else
+ return size;
+
+ mutex_lock(&dsi_tx_mutex);
+
+ if (mfd->panel_power_on == FALSE) {
+ mutex_unlock(&dsi_tx_mutex);
+ pr_info("%s fps set error, panel power off 2", __func__);
+ return size;
+ } else {
+ mipi_runtime_clk_change(current_fps);
+ mutex_unlock(&dsi_tx_mutex);
+ }
+
+ pr_info("%s goal_fps : %d", __func__, goal_fps);
+
+ return size;
+}
+#endif
+
static DEVICE_ATTR(lcd_power, S_IRUGO | S_IWUSR,
mipi_samsung_disp_get_power,
mipi_samsung_disp_set_power);
@@ -476,8 +619,13 @@ static DEVICE_ATTR(lcd_type, S_IRUGO, mi
static DEVICE_ATTR(auto_brightness, S_IRUGO | S_IWUSR | S_IWGRP,
mipi_samsung_auto_brightness_show,
mipi_samsung_auto_brightness_store);
+static DEVICE_ATTR(backlight, S_IRUGO | S_IWUSR | S_IWGRP,
+ mipi_samsung_disp_backlight_show,
+ mipi_samsung_disp_backlight_store);
#if defined(RUMTIME_MIPI_CLK_CHANGE)
-static DEVICE_ATTR(fps_change, S_IRUGO | S_IWUSR | S_IWGRP, NULL, NULL);
+static DEVICE_ATTR(fps_change, S_IRUGO | S_IWUSR | S_IWGRP,
+ mipi_samsung_fps_show,
+ mipi_samsung_fps_store);
#endif
#ifdef DDI_VIDEO_ENHANCE_TUNING
@@ -691,6 +839,23 @@ static ssize_t tuning_store(struct devic
static DEVICE_ATTR(tuning, 0664, tuning_show, tuning_store);
#endif
+#if defined(CONFIG_ESD_ERR_FG_RECOVERY)
+static irqreturn_t err_fg_irq_handler(int irq, void *handle)
+{
+ pr_info("%s start", __func__);
+ schedule_work(&err_fg_work);
+ return IRQ_HANDLED;
+}
+
+static void err_fg_work_func(struct work_struct *work)
+{
+ err_fg_working = 1;
+ esd_recovery();
+ err_fg_working = 0;
+ pr_info("%s end", __func__);
+ return;
+}
+#endif
static int __devinit mipi_samsung_disp_probe(struct platform_device *pdev)
{
int ret;
@@ -728,6 +893,34 @@ static int __devinit mipi_samsung_disp_p
register_early_suspend(&msd.early_suspend);
#endif
+#if defined(CONFIG_ESD_ERR_FG_RECOVERY)
+ INIT_WORK(&err_fg_work, err_fg_work_func);
+
+ err_fg_gpio = PM8921_GPIO_PM_TO_SYS(PMIC_GPIO_ERR_FG);
+
+ ret = gpio_request(err_fg_gpio, "err_fg");
+
+ if (ret) {
+ pr_err("request gpio err_fg failed, rc=%d\n", ret);
+ return -ENODEV;
+ }
+
+ ret = pm8xxx_gpio_config(err_fg_gpio, &gpio_get_param);
+
+ if (ret) {
+ pr_err("gpio_config err_fg_gpio failed (3), rc=%d\n", ret);
+ return -EINVAL;
+ }
+
+ ret = request_threaded_irq(PM8921_GPIO_IRQ(PM8921_IRQ_BASE, PMIC_GPIO_ERR_FG),
+ NULL, err_fg_irq_handler, IRQF_TRIGGER_RISING | IRQF_ONESHOT, "esd_detect", NULL);
+ if (ret) {
+ pr_err("%s : Failed to request_irq.:ret=%d", __func__, ret);
+ }
+
+ disable_irq(PM8921_GPIO_IRQ(PM8921_IRQ_BASE, PMIC_GPIO_ERR_FG));
+#endif
+
#if defined(CONFIG_LCD_CLASS_DEVICE)
printk(KERN_INFO "[lcd] lcd_device_register for panel start\n");
@@ -757,6 +950,13 @@ static int __devinit mipi_samsung_disp_p
dev_attr_lcd_type.attr.name);
}
+ ret = sysfs_create_file(&lcd_device->dev.kobj,
+ &dev_attr_backlight.attr);
+ if (ret) {
+ pr_info("sysfs create fail-%s\n",
+ dev_attr_backlight.attr.name);
+ }
+
#if defined(RUMTIME_MIPI_CLK_CHANGE)
ret = sysfs_create_file(&lcd_device->dev.kobj,
&dev_attr_fps_change.attr);
file:549931d8f320ae7fc8ff9ebe296e9c25901706a7 -> file:aecfa65a2bf90eacf65514b22c41ea556f6ee08b
--- a/drivers/video/msm/msm_fb.c
+++ b/drivers/video/msm/msm_fb.c
@@ -137,7 +137,7 @@ struct dentry *msm_fb_debugfs_file[MSM_F
static int bl_scale, bl_min_lvl;
DEFINE_MUTEX(msm_fb_notify_update_sem);
-static DEFINE_MUTEX(power_state_chagne);
+DEFINE_MUTEX(power_state_chagne);
void msmfb_no_update_notify_timer_cb(unsigned long data)
{
@@ -1380,7 +1380,9 @@ static int msm_fb_register(struct msm_fb
var->xres = panel_info->xres;
var->yres = panel_info->yres;
-#ifdef CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_VIDEO_FULL_HD_PT
+
+#if defined (CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_VIDEO_FULL_HD_PT) \
+ || defined (CONFIG_FB_MSM_MIPI_RENESAS_TFT_VIDEO_FULL_HD_PT_PANEL)
var->height = panel_info->height; /* height of picture in mm*/
var->width = panel_info->width; /* width of picture in mm*/
#else
file:4b70eeda0b7a544a96e290f28ec86ecc558bd41c -> file:5f970bff9ae8721a8dff71f0d54bb6d7e8c1eaf3
--- a/drivers/video/msm/vidc/common/vcd/vcd_power_sm.c
+++ b/drivers/video/msm/vidc/common/vcd/vcd_power_sm.c
@@ -342,17 +342,6 @@ u32 vcd_update_clnt_perf_lvl(
new_perf_lvl = frm_p_units *\
(fps->fps_numerator / fps->fps_denominator);
- if ((fps->fps_numerator * 1000) / fps->fps_denominator
- > VCD_MAXPERF_FPS_THRESHOLD_X_1000) {
- u32 max_perf_level = 0;
- if (res_trk_get_max_perf_level(&max_perf_level)) {
- new_perf_lvl = max_perf_level;
- VCD_MSG_HIGH("Using max perf level(%d) for >60fps\n",
- new_perf_lvl);
- } else {
- VCD_MSG_ERROR("Failed to get max perf level\n");
- }
- }
if (cctxt->status.req_perf_lvl) {
dev_ctxt->reqd_perf_lvl =
dev_ctxt->reqd_perf_lvl - cctxt->reqd_perf_lvl +
file:77a7d8fcf4514dba312839a07b4534db989b4520 -> file:5ca37215e2982cff172bb0ecd7d83e468bcd3a57
--- a/firmware/Makefile
+++ b/firmware/Makefile
@@ -156,13 +156,17 @@ fw-shipped-$(CONFIG_TOUCHSCREEN_SYNAPTIC
fw-shipped-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI) += tsp_synaptics/synaptics_b0_fac.fw
fw-shipped-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI) += tsp_synaptics/synaptics_b0_5_1_fac.fw
ifdef CONFIG_MACH_JACTIVE_EUR
-fw-shipped-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI) += tsp_synaptics/synaptics_JA_a1.fw
-fw-shipped-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI) += tsp_synaptics/synaptics_JA_b0_3_4.fw
+fw-shipped-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI) += tsp_synaptics/jactive/synaptics_b0_hsync.fw
+fw-shipped-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI) += tsp_synaptics/jactive/synaptics_b0_hsync_fac.fw
+fw-shipped-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI) += tsp_synaptics/jactive/synaptics_b0_non_hsync.fw
+fw-shipped-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI) += tsp_synaptics/jactive/synaptics_b0_non_hsync_fac.fw
fw-shipped-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI) += tsp_synaptics/synaptics_d0.fw
endif
ifdef CONFIG_MACH_JACTIVE_ATT
-fw-shipped-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI) += tsp_synaptics/synaptics_JA_a1.fw
-fw-shipped-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI) += tsp_synaptics/synaptics_JA_b0_3_4.fw
+fw-shipped-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI) += tsp_synaptics/jactive/synaptics_b0_hsync.fw
+fw-shipped-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI) += tsp_synaptics/jactive/synaptics_b0_hsync_fac.fw
+fw-shipped-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI) += tsp_synaptics/jactive/synaptics_b0_non_hsync.fw
+fw-shipped-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI) += tsp_synaptics/jactive/synaptics_b0_non_hsync_fac.fw
fw-shipped-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI) += tsp_synaptics/synaptics_d0.fw
endif
file:3694504d4e8e6a25e06d490d03b60f7e9e0fab1d -> file:dc4537ee7039846ef3757e9a8df5b3cd768072c0
Binary files a/firmware/audience-es325-fw-eur.bin and b/firmware/audience-es325-fw-eur.bin differ
file:ab823b86a9f6fe38e9a6b78455e8fb4f5a3984af -> file:ed1fc388f6bd49d2354201845b9b377b3fdeb29f
Binary files a/firmware/audience-es325-fw-jactive_att.bin and b/firmware/audience-es325-fw-jactive_att.bin differ
file:42b195939e298dd021115f283918551314b8384b(new)
--- /dev/null
+++ b/firmware/tsp_synaptics/jactive/synaptics_b0_hsync.fw.ihex
@@ -0,0 +1,3937 @@
+:10000000BCB288E60000000600EE0000000200001E
+:100010005335303030420000000000000000010085
+:1000200000000000000000000000000000000000D0
+:100030004453352052312E302E3000000000000095
+:100040005359203033000000000000000000000081
+:1000500000000000000000000000000000000000A0
+:100060000000000000000000000000000000000090
+:100070000000000000000000000000000000000080
+:100080000000000000000000000000000000000070
+:10009000493243000500FF000C0D20000000000065
+:1000A000493243000500FF000C0D20000000000055
+:1000B0007C694C9FAECF23F4B47903869758544D96
+:1000C00043F5E04A742634893ADFD10918EC5632F8
+:1000D000B39D202D09352D97B948CD173C3D1F8C78
+:1000E00014FFE5BE4CEB6D257E4AB494FEEBB7865B
+:1000F000BF61A5B8123273A838F4E46E1374797333
+:10010000F8EF938E382EA9027D0E85D22153A036AA
+:10011000CE46143E9C4C57C3ABB6C3A5E1536419FD
+:100120009766AACF59007470B3F9BE82105DC603FA
+:10013000E13139563D7975A670D8B9B0AF7D8DFCE7
+:10014000661BB53C8AA929632A109F6BF8354FCCF2
+:1001500047D2A48DA7623863AFD9E8BDEAFF360065
+:100160007464A4C6819E2024E91E0726606AE66F97
+:1001700070FF95745F48398EB524F80C1287B7B4B8
+:10018000AE74EE3DDDCC84B860D58362E4144B657B
+:10019000C053ABDD3931AD66AD9940A82B3E14D5C7
+:1001A000DF626E5416AC1D109678606CE04156BA52
+:1001B000DF8D6301C0376A4E68F9380DDF2549F7D6
+:1001C000AA078A08F3181142D22785465702EB6E18
+:1001D000A5C4D79979998F65765D75D3D7D7FDFB7F
+:1001E0006FDC958042C2754548A748B53BC4AD3E1B
+:1001F000C13F5E1F0211E098D7ED36E06334FE1771
+:10020000D26D56605E328964656B52DCA2F1015298
+:100210000CA4E657A31FCE4C6735B2CA70601433E6
+:100220002B6D1988C267D67D74B89A81DA542C3F39
+:10023000491ED90B00D17B5EDE74B1B17E29F1C1BC
+:10024000728FB8F354530ACA68DE310937696E7A7F
+:10025000016B4F2D6A0EB775AD335DF3CCBFDAB1CC
+:100260009FC365EDE3B1C88933A010A42E2A77FFA0
+:10027000941CDFC7C46DBC3168C5D507FC1325A726
+:1002800059788952BA53E27CB1FD52977DC40682F7
+:1002900007299A27888E6956712197069BB7E94CE2
+:1002A000BC43110C106717D4B3E026CABC2193D508
+:1002B000691165E7D7F351B98F092A9B21B55DCA4A
+:1002C000053516CD60C7E510B57411BB6672A07018
+:1002D000315120A808D9379334CA5D44D93C0B2B3F
+:1002E0006839B37FA993E6EF64A0A90FA5636B4EAD
+:1002F00016A19A55F3B9C30B60CC7AEAF7E4BE15A0
+:10030000A84C9A728549925D447B3F7B386EE489A4
+:1003100094BE9A1463CECB6A00FB34E6E624B6E1C1
+:100320004FD1DC0D366E4C4E98F939A348609C06CF
+:100330007DE14E2ADC7847872F6C858E2841FE4D63
+:100340000930D1608D89E2E65E3EEB8D09DAD73463
+:10035000060FB745D8E7B2092C190F176D8D684104
+:10036000B3CC6505A3EDFFBC64A7CC629335905573
+:100370002B40712C607821CDC14E643E91CCF92088
+:100380009AE6778AEBB1A763325720CB861699F5A8
+:1003900030222A723AE86D118ABD7DA135428D93D3
+:1003A0009F9EFECC988D1AC007C006F83F1BAC8FED
+:1003B0009F22C5972B1F6E4CD95F76BA3676DC3BF1
+:1003C000AAF331EE8C1512796A9C9CABA374A1B18F
+:1003D00092151D32C4BDA03D3AAEC7C00E2D62D3EA
+:1003E00049195E178500AC1822148603D933EE999B
+:1003F0008E6FD156F1CC00CF4970B3A342B87EB80E
+:10040000C4D76C02D907A46328C1903196FDCC45AE
+:10041000FC1FE9E66637288E9DC2AF3579B26F21A1
+:100420006717B686FC40DCE52DB43D5340FA706397
+:10043000F7086D26FAAB27351DDB8052258EF8783C
+:10044000CA1A2A458C81D39144D7FB76B609AE9D52
+:10045000EED9CA937311AA1CEFB40D7CAA58815E21
+:100460003FF3CDA235F9E88C5AD2EDBB61F91FF20A
+:1004700057561F9E32CB1B4F0E1E39BE323948D7FE
+:10048000B14114962DBB7F2A6820C10E43FCFC5855
+:10049000B0DFE0A7DCAB9745943BA0463A86E3EF9C
+:1004A000863A05ED8ADB29C8EA511B0E348CD8BC8C
+:1004B00083306154B72F9316AE8B050CCB40D08997
+:1004C000886E5EC5973FECB5B8490D6A9467A7750D
+:1004D000D202D3A2CA938981BFE705B19001B37E4E
+:1004E000DEDD85200015DCD4C7DEFD2F90E3AE7481
+:1004F0002439BBE5D95FC191DA52DFED6056BDD634
+:100500008D9A13998F72309030C8BD7B3D7576708F
+:1005100060268B94ED097CB842FC4237D95EAEC4AC
+:100520004766403129348423FA9B10751E6175A6F5
+:10053000729C6A149755DB8834231AB84B26998528
+:10054000154E87BAC7A344084B21270247B76A1F35
+:10055000ADEEA4EADD8F3EB8D532DA5DA627C9A894
+:10056000B747BD30F8B80762033C564AD562C51A92
+:1005700087CCB157EC9E4B25BABE811016CE3854AD
+:100580003C7735CB5D84EF1AC6365AC5F3A86E4D5D
+:1005900087C9ED98260398368B0EFC13A64BD20222
+:1005A0000A1E13D102A9D5E996AF5186D73AD9C907
+:1005B000AB4AE22CFFF0F2307632EDFE815AE820B1
+:1005C000A9A19614A36743DE49AD0A2E16F490E163
+:1005D00096DB89A997AB0D17BA04853766B9607B9E
+:1005E00059E9CB6CA386CFA031296C5BD9F12FF8E8
+:1005F00099D1523093A3D5FFD375AFB88DE0AB221C
+:10060000F9CF4F7F3632FAC927925F6EBCC7375990
+:100610004DBDEDE762317E0B73C2299F90E37E0DE5
+:100620001600961EBB20B898BF89509213D2F9309D
+:1006300038BAAEC7AD0CD7B20920B56452A629ECC2
+:10064000F8A2FFF1EF3A1F62BBBEDC6D2EE9485CF9
+:1006500030701EEBFC0B1942C19FA16FCF4D76721B
+:100660004E408B5DABD52305B0C591CDB163BBB614
+:10067000A224C572F7AA6ED039832A1775655D3733
+:10068000D0CC93D37A6FE50322F1DC1C280D92596C
+:10069000CE888F0D0FDA89E1ED2E94F690AF3C35C0
+:1006A00025B99D3F9C6B69692BC7E44B8C0F0DE905
+:1006B0009577A7030E365A2BF79FFEBBC98C89C1CD
+:1006C000B14476B6AA8D841BBCB072577782E4A77A
+:1006D000CBD2CF31918C435C29F1402B317B6C170D
+:1006E00079F4D5644842E0652F6B1DAD9ABDFFF9E2
+:1006F000CDA0340D3A501046EA2548FBF8F91D20EC
+:10070000D8C716C4AE43DFC24C1B63E7D265EEAE5A
+:1007100010AFB25EF740BB69461BEC20F12C870599
+:10072000C5107AE45180B6EB870CD12A8FD2EA68E3
+:100730005D7D6831F7F3D65DC20CEB14AB783BF509
+:100740006A2E3252D9CE664CDE3EFD6D4EB0C613D7
+:10075000A99A604FCD09DCB73FCE874C476EFB05A9
+:1007600045FCCDDCED5718EFB2B8A57715831252D2
+:1007700074B2382CB26974929231D392FAE4B613FF
+:10078000ED76C8FADC7B26B7771EAD982E5A15DABF
+:10079000092E67B3D4B76539023DF0CCE801073FB5
+:1007A00042176FB97F699AEF6227EA1A5185DBB663
+:1007B000A7E8D0FA7840593B02666BBB0ECECFCA91
+:1007C000FA57B5C5F7133E928B67429142E1C94192
+:1007D00009E8B77BCF5C849129FAED8470EF0E7A3B
+:1007E000C1644282E2183667C24C5493B63652C88E
+:1007F0007AE835A12A7DC307390CFCC9614E17A3DD
+:100800004D147B38B4ACA7D54F013B3C322E6DB4B0
+:100810005B639E577C87839A6F6DD5296F7B9C3273
+:100820004C4C68376822ADABBACFEF9D1BDE35D29A
+:10083000072F0BD68A6B8FE08036D3D3D6AC719955
+:100840000E237EC515F8FC13E2A0DBE77ECC072063
+:100850007AA8BEBC1587360B1A69E65B1B78DE40AA
+:1008600085CCB337CD60A2BCF6C5E828012F068041
+:100870004C06A65F1E13901AEAF3C024815402E0CE
+:1008800025B00942C4C09AF27976D8BB3B8154178F
+:1008900095AA5844E7EE578AEC735BD9C3E82A78E7
+:1008A000457B3148902044F77C3A8BC33AD186F39C
+:1008B0001B66FE25754FE0052E4435AC31585A961F
+:1008C000C9C4E0D19E11771C333020A0E8B4615236
+:1008D0001380491A4BD2FBCBA0301B5CC248790471
+:1008E00012F257E894337D322798B98B4FAA3755C7
+:1008F000B79A09FF2709F8D67D9C20CB5CE020370A
+:10090000042FDFCAA78FEF060325C822612D0C2A0A
+:10091000A1BBF8DC7FEE02B39E154C3B9872ACB7DE
+:100920006113996AC62670248AA13FB202457BC72B
+:1009300060B61FB809029036203E6E05D4EA85DE07
+:10094000FBF09B02B14B53D5A9326252EC29488A85
+:10095000C1BFFF6C9B133E252323C0CCFF6BD17519
+:10096000CFBB104941C44467D11D03F55DB09B194D
+:1009700092149D1A8D947764773B348FE0DDFA47AB
+:100980005336F826FFB66CAB0EBA95744D5AB27753
+:1009900042D98D4CD1C8FD5A6F563F4F91577BAE0F
+:1009A0008FB157DEFB81E1C371FE77221C91BEF04F
+:1009B0003382CF2EF6DC03807AC7126FCEC59E9F9E
+:1009C00086000009DDDB3ABB7CD5F29AAF5700B256
+:1009D000C1CA7F49652B6EF0C5963CA2C11A03239C
+:1009E000545F1E29601B4D95EC10F1D521677C6486
+:1009F000FD68C7878B596995C1BB841B922BA8E200
+:100A00008B91A8FD09D38A233B585827750E774A46
+:100A1000E85B6347C5EBA856F1D3D83CADFCBC6698
+:100A20009A3088F4579E25D28F3952445DEE8B62FE
+:100A3000E38FE0EAFFA0A346B738375B036EE430EC
+:100A4000883F7D1F1575555DC9C6AC62FCBACCBD2B
+:100A5000FB94BC41E8CD112930B56DCD47E5BE0111
+:100A600068C6FAC77A17B8A86FA3DE3091EA22F1F8
+:100A70001A9EE19165D23AD2D01317E169237DB66F
+:100A800050A98B53B5C65BBCC04EAB37B12AA1F39E
+:100A9000ADD1322153B7039D0C09362E63A5043224
+:100AA000A808C85BE12FC7CB9BA2D7D0AB8E70D470
+:100AB0004A2B50C3A493BB493A6A962C1911EE2ACB
+:100AC0009C30B3D7F9D52C4341102866662A1115FE
+:100AD000B81B88DE7C814534441C03ADC8CC07B00C
+:100AE000D0867850AEAE24BB1B6B603369EE307B92
+:100AF0002DA6BD1EEF126ACBF7639F90A10F2D9715
+:100B00003E6C202F6C70A22246A36D85D02CED5D2B
+:100B10007EB78A578915E9389C536E2F5391F0D4CC
+:100B20006956815B538429619F297CB264AE2DB4E0
+:100B30006635E84D91D2D54819E7BAF544E81B6906
+:100B40003B73F037249385620978295C16044DA322
+:100B5000F5F2ECC9273DA9798036DEAAF1FE357B96
+:100B600078B12C4BA3E94CFF5E9126F3572DA9B326
+:100B7000CD9224FB0800D77B10F27B15C1E9DBCABC
+:100B8000569E515D1B7C50D6C51BA873D36AF54990
+:100B9000E4BA39FEB10FDC05D37B3DE40EA2E2F4EA
+:100BA0006C701CC20E319505180176FABCCC791C0C
+:100BB0007E7D564BA259147C662536A82BDF2DC6A8
+:100BC000695666E71297DB17A8A33209C1B46BA276
+:100BD000683E55B418B88BD41F18F379901DB4C073
+:100BE000F9EF10E5027EFD2B392659FE25EA1D7925
+:100BF0007BB4F86727908A05F43D730B0A2CDCC39D
+:100C0000C4F7E809DC969F2F7F1B20FC8120080B8E
+:100C10003F84C1F2658144A75D643B03340A9A09AD
+:100C20000E0624C726019D63A38B3ADE512B377431
+:100C3000FE740D0B2287D6F8927DC79873DEB046FE
+:100C4000CC99BEA75E15F9CC32387651F1B9D92DC1
+:100C500001F1CB1387FEF7293F728698373D9350F9
+:100C60009641F4E6E29AEA380C93FD7A71A0271FC8
+:100C7000E40D15EE771F5C782C3C3BA7F0C5D7DB65
+:100C800041E781C0386B856356595743DDB67F32E3
+:100C90002ADB9532D9FE9434AF601763C9AC680281
+:100CA000CB3378FB69BC7106B666AC858453D9E05A
+:100CB00073FD86D8196A3473DE046AD5C60ECE3742
+:100CC0006630AFFC2B9213D518B17BD7E668A3D75B
+:100CD00086B5C601B7A6367EDB277C153DA9D4F3C1
+:100CE000B6018E23AD7981A02A3E609383420687A8
+:100CF0005F760B065901589326C36F886386DE6DB5
+:100D0000B7C39A4CBDA0A59E2077B9AB4C525C46A8
+:100D1000ED49221449FBCA790F1DF40C4D18A93D69
+:100D2000BA6C5E854D10039FA3C0463A56B1880C3D
+:100D300095AC3D4D69FE5F6C23A98309088BF630A5
+:100D400070A4A6899492426FBFF3871C67B6867D14
+:100D50000338BDC593416FBD09BADE19217BEE0F83
+:100D6000C3CAB8F7E243B38ED5E7B3B45C955B3141
+:100D70000BBD747443C20C445826E904BFAEE804AA
+:100D80006FEF8F1CA9DF46094D56F917E013FBB131
+:100D90006FBF4D9F3C7E26628D0BF4F261007D4754
+:100DA000330FC91D46985C1E80D10982249280545D
+:100DB00038F8C2FCD15274BEFD6ADBD0626E90740A
+:100DC00068EB96E822B18EC60F47B0DAD4FD5BD748
+:100DD000BAB27D9DA68555696E123CF9B63392B8BC
+:100DE0009240ED478A70FA47CC397A8B40D5C3528E
+:100DF00023235E526F4DF81DE39AB63D411BB5406B
+:100E000045F96E61BA237E1A43A0550E110E1CB52A
+:100E10007A8367B4663ED43CD129A5DE6325B5024A
+:100E20008EA7C1476A84BE4B15A9208E434F5BF045
+:100E300059FBE20DE11893102E0157D886ADA3DDC2
+:100E40004830E0844AE73D3B8B9D918EEB125E7A01
+:100E5000373F22B33B97CBF7997CE6B02EC4EE9F89
+:100E6000BB996E26647F84600D53C9AC5993193FBA
+:100E700029480C9ADDF3DF4170A45C8E0F52719308
+:100E80002CBD7A4E8E8FCEEF5948016BD9626F1A06
+:100E90009308616E85ED8A108D64C478433A132AF5
+:100EA00080DB7A76415EDB25E9A5E5A7858F3536BF
+:100EB0009ED6D32765F686FE792ABE4B4E4917E8A3
+:100EC000D6F35A7C2B26DFD2AAFD5E1B33E6794887
+:100ED00002A6771E1D9E611AF291BB18F5ABDAFFD0
+:100EE00051F75D73E62CC0193357406CEC9018DF56
+:100EF000E1DE528443EF316FEBB1269587C81BA426
+:100F0000A384917A64E0C26A1DFB2497E5F9C3D8F3
+:100F1000ED7DB60F999BD01C14154344FD02D020E3
+:100F2000930BF903A840356DC88C989ED5FA92931F
+:100F30002E900A369A82C40526190FFA60AABF3E7F
+:100F40000ECAD9E603AB950BC5B787C34C4CE195E8
+:100F50009A6874409E7BAFF78C0E4D1B838BE1D655
+:100F60000A762203710B685E7F961D7B70DCDD7F45
+:100F7000B62454DF0B2A27D33B85FD32F3D802D5A4
+:100F800029018406034598E0001C6AB2127F0072B2
+:100F9000E613ED6DB86BCCD2A0BF0F46CE90D574E2
+:100FA000B59FAD074BF53900724ACA3B142450A2D5
+:100FB000D2A4B3B72DFD2F64163406985C30CA2333
+:100FC000134A4536AAE6266730A112AB3688010ED1
+:100FD0009ED762B5754E82A4664ACCFC7A34E17C19
+:100FE000695D21568F5C3BD926DD70A32165D12D2B
+:100FF000F62C7D0D34A3B72B505497BFE61651E560
+:101000006BF4F9B4E47C3E233729A2A628498B90DF
+:101010002739645028FAFCA9FDFA98DF6C42E7EA08
+:10102000642440D2B18FBDBD7C1AC024AFB9645CCA
+:10103000A553ED926010B20FE8081B8B3F2F2639A5
+:10104000765E237D399413D8CE9AC6000BD6F281F2
+:101050003C108D22408761E80D4D69A2039DECB2E2
+:10106000CC6CBCF8B2A013A9669CD8E3BDF5F39B89
+:101070008F37EAC4D6F047214588FB5827F87D51C1
+:10108000B8E50F050C05BAB51F06948EF0488A0E18
+:101090006C00F8E8C7C0B36389E3E1ED5E111CFAA8
+:1010A000E35C735EDF3BA9B90CA9EA2F0A62289BB7
+:1010B000B0F6DEFFBE0F96B0F0F814ACACDC70DB1F
+:1010C000B796FA527F528F680E01E9BC7676594C7A
+:1010D0003501E54ED48EC4F471BE243BF47CDE9D14
+:1010E0000EE2542E1606A5AAFC0F2CBAB96897BCBE
+:1010F000A103C41EA4AA4770C2F986FE85E6938A9E
+:101100000DFA84D14DD7EE1144C12B83BFC23EFBF3
+:10111000A48FEEC62E7F7A97245E4D5A43DA62BCC6
+:101120000E752A90552825D1A8C5695D547C97CBAA
+:10113000647E2AB7C2A58A76A1DEDC5D5F9BA959D1
+:10114000F118A722E900689000110B60DA86A76900
+:10115000DA6ADA526B50AF804FE3163F74B500E5A0
+:10116000D981B8929D3C6D77A8008C358EC074B241
+:10117000AB8539B21269891D35CD6A1E975C24B4DE
+:10118000112A53CE29485B710E1EAF3DD1F70DE1F8
+:10119000246226AD19AED68416B0F57BCE6A56B160
+:1011A0002C4E6A626CAB4F86B4A1A5C74945BAE91B
+:1011B00029936ACD09C22CDC5C5EB9DE93BAC4F314
+:1011C00047B046015EE9A9E20E8735290F6E8BED27
+:1011D000A58EBC11BEA23A8316B48D0C4041D960D5
+:1011E0009B909C63DF8E3A7F89B6AAA8B74FEF48E1
+:1011F000A8E03B3553FF74EECB090A0A965F0F1A3D
+:101200004FE84D6E9E28031D2E700FFB74ACB2DDAF
+:10121000B96D701BDEE259CE07CE7A4D601B538F3D
+:10122000BE1172EAF188E37850BDB61693959171BC
+:10123000B6E98550C3BA8E2117FDEE64A12D68D999
+:1012400085B11693ABADE6D635E667AF3D75C048C0
+:10125000202D1ACDD52896471194B44C496AFC1517
+:1012600091801B69085A991802A425DB0BEA8D931B
+:10127000B8BB0AB29636022A6690C81BEAA5936BE1
+:101280000C2C922F1EDA89A3A6A8A376EC9E302CF4
+:1012900000D956F9F6E955CEA050527D0A27CB2D3C
+:1012A000EB72A69FF90FC684F23328BDE69DD936AE
+:1012B0005CB5A1BEB57EB456494489979FA47DA272
+:1012C000227CBE1E4057C6E7FD35C60836E4823490
+:1012D0007221ED734351A11CC838B99FF7B87957F3
+:1012E0009E4DB0FEE66EB219AF6F7083443AAA1BF2
+:1012F000011311AEB1EB0C4314106FBF18007D4405
+:10130000B4EE6E6776DA05C57BA0BF6A53318EC135
+:10131000EDD3E9268B2BBDEEA777EF87F8E890F9A0
+:1013200046FF6425150B8B81A72403B9BE35908F2A
+:1013300051C21CF58655F72546F0757AB75F372EF2
+:1013400031393C8250D50EE7A91906FDADB3CB1B50
+:101350006937E3A5AE8A6E411E5F8F25A80D95EC17
+:10136000EAB0FE2DF4B5B5BA48445A009C5515793B
+:101370003B47EE1910E05C34FE26EB16A5405CB747
+:101380002D65D53E00E271B5E5499D54B92260DF77
+:101390004FEF7705441AE9175AF6D4C3986022F440
+:1013A0008F38F2D9A85514CE0072EBD635332310FE
+:1013B00077C2D7FF395946B4208288F46759CBC623
+:1013C0009FFB38094415FC9B8D6C8E662EAD2F3724
+:1013D000464F029CE69F50B848E48B1FB7851263C6
+:1013E0007382794D3239C9948604F50589F40AC7A8
+:1013F0002E3CF75D4DB7BA39ACBEFF0820D252B0D3
+:10140000D7CC64081E7FDE595525E7A55585E31125
+:1014100075E066D444255955CFB7A69FE32F47ED15
+:101420009E12B3827A08124A83BD7390E45FA2FCD5
+:10143000BFA41A60BF8AE561897A8F5EC231F378F2
+:1014400066B22093BE59E36884095567600D119216
+:10145000805DD564940AC57D837E9A9516EA645BA7
+:1014600009AA42E68AED765B97FCD747497E0C9D38
+:1014700077C07A17856685BFF2BB94C4871E255D49
+:101480003CB77492A57A603F2CBF10A9943429F51B
+:101490002D741DC1C15FF3F5A42D8CEE04CF19D5B9
+:1014A0007A27F5CA4ABFA6EBC3AE8EB7231B4F56A9
+:1014B000B7C52A0C2A075978579DF7CB9AC98139A5
+:1014C0000BF4E52C1BA61CE90177269BA2C1584D05
+:1014D0005D79BC9635A3E8123B378417C5EF1462DB
+:1014E000E06FDF7AFCD8E89C15D13B26A1CE2C56C4
+:1014F000CC40CFC8378B81FB21CB7161AD4AA6416F
+:101500004A5940688E22535B11315A344BF7CBFA5B
+:10151000FD4C72CBBFB0DCD443AF4E111F59172E18
+:101520006B914015824AF46B0F6171BBD2571D2835
+:10153000905DDF2123922551C801663BCDC6BA27B5
+:1015400061E4F72922F9B0C2D757ABE08B15E92641
+:1015500056A53129176BB188828C126AA58A9046EC
+:101560008A5043A47AE0FF6A56330442BECF4AD67B
+:101570000E3E19A0EE2430E7DFF3780A4519994DA5
+:101580009C454447E259E0FB66ACF0C5C8489D8BDA
+:1015900003F8F4B6127240D90A0F656BC34BF91603
+:1015A000919EE234D8AB325DC135A386DE56228CE3
+:1015B000116E63E6602E7F0E8E43E1D95058346F72
+:1015C000290E48228C5465725DF14D1EC0CDAA2FA4
+:1015D0008B38EE62BF9892C05910211D4F60580A97
+:1015E0002B5192AB42E29A032640BEA54AC65B83CA
+:1015F00097F151DB72C6D1A4681D0FE341370B553B
+:10160000216AE1CD733935EEDBE419236F3503A090
+:101610000E8811353E97F021B884E525A5E77C1AA0
+:1016200025E3BBB90D0A899D7A50215D5ACF55B18A
+:1016300035EBBA28444942CC92957C27AAEBB813E3
+:10164000856560EB4AEC683B522B7155A554D6AFCB
+:101650001407B9D8428F5EFB0D9AA4CEBC59BD8445
+:10166000C86D1CCC21840C82133DD0CD24F572565C
+:10167000AD1916F5D5349EBD6C3325D73450C285CF
+:10168000E7D8CD96F9226778C8A6387A4ECE2AAA2E
+:10169000FF7DFB618B41E736FE39E96C7D4F27A664
+:1016A00091CED4AE2CD04E4B4A0FB6648D05F47B50
+:1016B0002B55BA7F2CA6FEE8F2CF9BC9972CDB8E68
+:1016C000E17B48C8D4A105F6DA3F8C6C787EC40D66
+:1016D000754D2935E2CF228699E87A5D01CC79D320
+:1016E0006D51C50DA5FF86CD7A7FF4C60752E684FD
+:1016F0004FB39517173A6AAAB1AABA641CAEB8C913
+:101700005A8967231AAE55124289C4336630A3FB47
+:101710009943E5A760A16DD65AF564F39B2CCAA343
+:10172000B0E802AF877CB1D37EAA6DF1C1C7FB865A
+:101730002834D2E10A4D2AB2E06A83D31D1BCFDFE1
+:101740009F140BCE7D135BE553A2B83BDF03ABBC0C
+:101750003A27BD10FF9EDD8753794ED02CFCCB6C11
+:10176000D503FC716126BEE4E10B680DD16712461A
+:1017700004002372CC517C6E9C17747BFF0985BAE0
+:10178000D4855323B00556A229D966FFDE045A6AD0
+:101790009173F1C7C915C93771EB1E60A9C5DD7F0B
+:1017A00070AC4C54163280C7ECE0A2666DF822197A
+:1017B000495D32E8AA07761FF72C24F131B2A23531
+:1017C000C80D9D99EA1BB92FC5C321DA137D712974
+:1017D000393279D21C576331E962FD59F64FA45969
+:1017E0001C5D1BA0BF0F29D426B85C89AEE1B346AF
+:1017F0006C1B87394E549BD24E77BF64C0CD5E3C84
+:10180000C75CC066F58476D961929823AF54F51F02
+:101810007C86C44595ADF5CC2CF920EB34A14C1554
+:10182000E70270D2284BD792082D8D9A38DEE19FBF
+:10183000BAB45B40E81E2CE967BCDDF4E52E7DC43C
+:10184000A53BA7142EB4A45DA852752658572BB0FB
+:10185000628159163885E2450858DEFBBCB9401054
+:10186000998EBD087212D3A56601E50BADDBC920C8
+:10187000B9F83EC331228FD8BE135FFD3F1396C126
+:10188000BCC190FCCB96FEA5C8360DD65103F03EE8
+:1018900022078DC6144FC987737ECB60E56B7477C2
+:1018A000152E6EFFFBAD31BF2625FE643EFC5B5658
+:1018B000350B9D1961ADBAFB8A64226CEE9E00C2A5
+:1018C000920552A44BEA6ED7FE8C512CA91CF16DE7
+:1018D000DD060F61FFA77B5C32B9FE453DC40BE31B
+:1018E0006FD70D0CBD012620D7106CF5F84838963F
+:1018F000569C9F463BC4CAB32AF55E8C81BEA5792F
+:1019000088B813F7B1E9AD6EBDB5774ABC30C68271
+:101910004423E1AC09621979E106D452AD3D7FD987
+:10192000A3D54FA19F7036F3346977DF3E4DCDB01C
+:10193000A047FFC947856C91D18E113970A63D042F
+:101940003361736EC8BC95324B63BAB1089FD4AD96
+:101950005DAC56EA0E687AE19F3F59B9DE2E03A4CA
+:101960005AAAF435E55E60928D2BEAD5FE6C66527C
+:10197000B1EE9C317D2313EF84407F808F3EF73F93
+:101980003EE17AE265E121D59CFBF2940DEE7165B2
+:10199000F226818D9205A07B5CE98A9448FBB8D43D
+:1019A000574F9D5BA769B83F5807B2DECA868826A5
+:1019B000D6AAD86ABFA35DB3F46A64A5D645315EE2
+:1019C0007AF0BAD04C015305155493AD8D24F383AE
+:1019D00037343F55F633394608D208CAEF60FF99CD
+:1019E0007618D1D56743CEC2E7D361E46AD586E6DF
+:1019F0005B91A7981EDCACF9AF0F0D56597586D3D5
+:101A0000DDDD221ABA5A690424483B3415091D9EAB
+:101A10002B29116D1D5B29E515CDD269B5B66888F6
+:101A2000ADD6D1080F34C75959CA8C700A56AD29A2
+:101A3000FAFFCF3742610D4D79DFFA680622C01AEE
+:101A4000D65B8FEA2C8BDD450E8F5959D689837270
+:101A50001E97A2471A366629AB92CF11B248B457E7
+:101A6000772DC5C82FA4D37263A249D71EBF1A9E73
+:101A70005E7004DCCF13D7C2ABBEFAD467BB2C9A1E
+:101A8000FFF45F459251159C689820389959056D6F
+:101A9000FCB84AEB13B2D9E6681ADB5380E0CC817C
+:101AA0005E2D5DF6D2602E0BB03660AB93C6A917E3
+:101AB000CEB9D4D3B5B17B1E65ADD602841BD2E6B8
+:101AC000D28A0F51341F543E9FC5CC1A2B68D210B6
+:101AD0002FDA0F68D5046675714C18F36CF0131C7F
+:101AE0001CF2D4771359CA9BE846E4723A8AA3F3EE
+:101AF000A4BE24F88DA406CB5125F0021B34155E3C
+:101B0000E5EB0030BD4302A5351990438B2BECD09B
+:101B1000F56637E07C605BF8FE04B308481B63E6BB
+:101B2000D832791AEC6958F8F3B1565AD97C000CBE
+:101B3000E3F9D41DFDA5E3CF07AF97C2D66AA3FA98
+:101B40001E54200ACD4E1CFBAF6EDEA354296074D8
+:101B500001949855454C2646FFF23CCFAD6FD474A6
+:101B60008A42B0D6B5AEDC204A55A18345ECF302DB
+:101B7000967AFBB7C1350D8EC2572C7F98AD79A2EE
+:101B80002CA8DAE72E1A7C507609ABB9AF850F7313
+:101B900043B1622F8D7D351F376077AD04FA5391C5
+:101BA00091E3DCE081D5923320CC7FA0ADA9E9247C
+:101BB0002305A083434706144B0A9000853C52E559
+:101BC000140697FCAC8106804C225BF5A8E5E1EC9D
+:101BD000521B69C2E60EBBE4678581922D15B3F9ED
+:101BE000DFA9D50E5AF1BB26408C0FA5AD469C4D02
+:101BF000954CED1E1DCDFDC3890D00F6CE882B0C36
+:101C0000EFB2ED99249A106064A98EF3BA440603EA
+:101C1000D1B896899962A47FF87496F2AAD9B7D5FB
+:101C2000B4B7563F147E08F4B473FDAA3709C57BD8
+:101C3000A412CEAD973FC2EB6775849980AAD1D626
+:101C4000B80BCB5CAAD278E3342F1112E9CBFB524C
+:101C50009073893D690A23CDEA1ACF50553E8B8790
+:101C6000F46ED9179F2029B0DCA2B25CE672C10DD8
+:101C70002C0137F211ABC3DEC08A3BB47733B86BAB
+:101C800075CEBCDAE07911DA82B2F5B83A7227651E
+:101C9000B186277AE24D2DF325D4DD7680B0B77278
+:101CA000440165A2BBBDE5EAF4EB7858A6C19935BD
+:101CB00087B3D9FB84B915732F40D757AFC37216BA
+:101CC000D43F73170A65AFD16637AF6D618DD4818C
+:101CD00008A729BC052D452C93754B361CD1B95E40
+:101CE0008D319DAC2665BA0C7394D8656807A255F2
+:101CF000936D808BB98127337A3A1C28697A540A0C
+:101D00007E3AD9A738043F416E5A2941C289B65953
+:101D1000E65B4E41A62C812966A6A9725DEC285C83
+:101D2000BB4BD0AA421AF27C0F01A511F7DC8D78CB
+:101D30007BD18FC2E1769942D0DCC24003A835F551
+:101D40007BD3FDA248AC32759C4490E9F6BD33B319
+:101D5000555291C0E75E386B01C0D6C0276A351571
+:101D6000FDBD8EC7A77179CE697C59489373E93858
+:101D700057F884217A112558530D503901C64C0467
+:101D8000B7D8263F26E9947EFA7D2CACDFD783DED8
+:101D9000F6D3B1F9C46B29165BE1F3DA0C81D01BE1
+:101DA0006392EB25427723753B2826AC29DDCEA331
+:101DB00017707E42A0EEB1CCCD8DEE76D10D560DD2
+:101DC0008DFB3E2DDE332426A6E1CB091BC053AA92
+:101DD0003A81A7D6BEA2449F3648B9DD13D2A26687
+:101DE0005CF0611CB75A8A6A9EBCD4C0A1D72A9302
+:101DF000435F5B3E18D1BE268B142AFB19E871772E
+:101E0000E79336F74A7C1CE90D7FAE2E50D8B48C90
+:101E1000ECC761C87998384F4D7FB75D9FEE5E9DE6
+:101E2000BCCEC13328F1F67FAA81245E3AE1AB989B
+:101E300033B608D769F5F5EEC0C548FE03BA295494
+:101E400029E87F2474BCEBE51DD99BEAC955A23F64
+:101E5000410A298A08062A44EC5AD136C313E19D67
+:101E60005E81ADACF11CB4DE939A518E96C9632CA1
+:101E70009754914E0B6ED8C7D0ACBF922E4AEDF559
+:101E8000E93C0B311A5667A97B098F4F8A92A2D978
+:101E900093CC55C692E3433294A8C8E9FF0524BE0B
+:101EA000EC8D2E4F979F967178F482F0D6D86E7293
+:101EB000AF574FA40E8C972DA6A4EE3324718190BA
+:101EC000670EC00528C6C92CD11F87A55816E78BF9
+:101ED0006EFE2E3C8D0C13176985F83C1BE5F3FE56
+:101EE000AFD030BC7FF84D1E54B56C78F65F3ED74E
+:101EF0003C8D67AC3DC7AE49AAEDFC2BF5C61CB2C4
+:101F00008E007F29389DD42756B36E176EB25EEAD5
+:101F1000918A2E4F8E16385212C1963BB8F98D0F0A
+:101F2000B629A51D5D5BA9E1F64F920A914E810786
+:101F3000E500035F940152CBBADF89DDB225524F31
+:101F40001F52078737928D6D34365E48E35B6B5DB9
+:101F50008297947DD6B94B21D5149BF9309E72702F
+:101F60008AE885419350576760072BAF5205F56C9F
+:101F700000CFC2149DCEFFDF0DAC57C7D7AC515573
+:101F800059390AFBC2896B1A11583C614F13C1843D
+:101F90001CEEAA457C62FB01BA2395385C0AD2117B
+:101FA000BFCF3934E170B2B85464ABE832919619BE
+:101FB000AEA153ACA7B28F3FE77C019764F7A4E3CF
+:101FC00038F78A664E94212528847CE398E9B1C6C7
+:101FD000B1ED7D80EBA9EBF7F5885AB3EB6F90CBB1
+:101FE000120DF370261DBB5A07C64F9EE02E4B51B3
+:101FF0006ACD22C112821AFC6DC870322411A00968
+:102000003BEF34BC6F918671155D1A0174151D6E1E
+:102010007A04E51B400DEE3E947F6F033F3F16D1DF
+:102020000AF40F6EB6CDF3DB86D4CBFE410CB4DCE4
+:10203000DAEB876F9EDB1D46DC13042F4165111020
+:1020400080B44C5292B5DF7B453ABB5DB4338BEA2A
+:10205000751939FFE453BFA19B24F37975E2C7AA30
+:10206000D51C81CA1174222A22523992CCAA388BEB
+:10207000F5155D9CC1D22E14FC9041A716B10F102E
+:102080008A98834940E731F51B1E81F453364C6F23
+:1020900068F13394BAC9806262121E554BA84C4A4B
+:1020A0006F03FD0B0115BCD747FD3DE65439E1E157
+:1020B000E34333B5F06B406D2585B2033480FD09F1
+:1020C00094EFB4D0BAB56D59F2807179D7F3529DBF
+:1020D0007540062557EDEB0CFDE954AEF12E8FF857
+:1020E00021D85BD21E2CF24F5C5CDEE088FAC80976
+:1020F00053AED747914941DA06AC1B7F7E7A443311
+:10210000B7E6AE037697AE48DB7DB1527D7ECAD08E
+:102110004349F44EEF3374F6E653913391F0600B7C
+:10212000A1167779B3BF845256F2527BD09F0BB47D
+:1021300040F021702923245B56D9956A5B8DEFBC52
+:1021400016B49A57EF66A7D88FCB42DE1AAC611649
+:10215000F105F23DC2233CF4FC138C3DE916D6CCCC
+:1021600096837B2B44270ED87643E361A189A95936
+:1021700016BCE0DA6364E3555BA1D1889475A2775D
+:10218000B7DBE1576007232443E80624914307B4F3
+:10219000D03C243A00421C8B2F62F622C78A0B6D7A
+:1021A0008A5F3108997A8450B16E5CAA8416DBD2BA
+:1021B000A550A0CDEC7D7256667E452D628895A512
+:1021C000F21E2E16D8969469C953A77422207FADAB
+:1021D000AB9F2AF75D0128521BF834310203719638
+:1021E00014F441C453D02841925BCA5BCC9875C9A2
+:1021F000A44D00B6BDF0B703A0D604CE07CE6E291D
+:102200001BB620D96AB280B94DBBF121C768A93489
+:102210002D26B5784DAD079A8507D20B0AAC7A26E4
+:10222000E81A9EC9F5E621C33CEA7E040FEEAB0036
+:10223000239688CA955AE9A115EB25DE10EE31E305
+:10224000CFE520A6878AC8D84098DD495E3F15496A
+:10225000DC088547967BC695FE03F0462E6DBA18BE
+:10226000A9B60C407A85AD3411F328D34CCCA54CDB
+:10227000962F72A1A1E3FC027139E256594B13412A
+:10228000B410433B0BCE982A51CF4A256C41E7A6A8
+:10229000F7294884073E363AA3EEEE95DB4FA81D9A
+:1022A000C79F1158B274E6ED45D9B8248812B9D940
+:1022B000D6288FB600A33640C3E8621891EB17E723
+:1022C00052F8AECC212A5A84A04DBB8FDB1C0A5495
+:1022D000966DC7C6578D724E803D47B6C6B743EC64
+:1022E000220E6AA9FEF6E1E27840F34811AAA6A000
+:1022F000DFC7CC57236B430C1FC398AA4462855D8C
+:10230000B6409919096D73B98C41A616A7BB5589BA
+:102310007F95CA39B8B8A3B724BB844D21C4A48C17
+:10232000B0A351C0A001748C81F08604EBADF23DE6
+:1023300012CD2650F7A9575652AA9B7A9AE2B316A5
+:10234000B26362BE10BE3028F32CCCDCF99103F8E6
+:102350003247004465BA7E7FC3FB8BB69E0208CA33
+:10236000DAB1366081800FB9FBE627E957544A8C11
+:10237000B8F97C989FC420716C04A27606A23A57E3
+:10238000917AE107CC0606E894F87D460AB799BB36
+:102390005AA78873FA262DCC23CAD41F8A3FEDBED4
+:1023A000E41034E163D266B6FF33A31FAA95B85791
+:1023B0006EDB7CB0B7D2D7F0C946DFEA4CCF23172B
+:1023C000B510B15E793C4D4D95638F36B9475D527E
+:1023D000E653276D1D0D44A2BDC41678258BF20F60
+:1023E0002854D9FF9183D4B11E565BD1261493F69D
+:1023F00021247C856FB8C62631ECCD3B32CCC44C51
+:102400001FE9730709C91664045B2203AF912AC34D
+:102410003B4555755D45B19DBAC0C8A2E6C0502B7D
+:1024200072D121D00182818A04D0D9606F124E8886
+:102430001AD6A37D653B20E8A1D36F345CB1713C13
+:102440005DEBD8A2D6AE633244CCFB7D7C983C08D1
+:10245000B8D9CDCAB8A45B79D2733B8C1C09B08CB7
+:10246000C4B21027C0008EA69E5AA848A512BF422B
+:10247000ED9B23E28CDE225FBBBE0F2247C8E390B8
+:102480002BD2C39321B43D8CA3F194BAE661E6D577
+:10249000797F9A07B1661CA2D2DB38CD228B806A85
+:1024A0001A97DF2DD2A4B3A92067F6A4D5ACB2BC8D
+:1024B000A6AC37945E4526004C5A974A927F90DD31
+:1024C000DB4C57F4AE2E12D9E973013DA4530148F9
+:1024D000CCD997E46AE20F5CEF7FA5EDBE71E4878B
+:1024E000485EE5D85DEB172F3D70E29FD42CAAD64D
+:1024F000323660AA8DB334AC5BE1C75F559AC6250E
+:1025000081A5677752635EE3A2091E025E11D18C3A
+:10251000B82ADBB24830D2D97CFBE1B9E78FA136CB
+:1025200036252B276FCCA4FC065FABF40DC336EF2A
+:10253000EE92947BC1BF77D79DBBE6F5A5F1BF9422
+:102540000D2BE006E06C23448E7C7760C1D6BD681D
+:1025500039D57A0397C228E4E04F86A51105C2BB9E
+:10256000119E912660B3A71ED239BE7EFFCD828A0E
+:10257000A033DE93AF16F3137BDA43E026091A1675
+:102580005B8F013B4F066B71510DDC439563B92B9B
+:10259000D11F731AC5874B5D6F2E30978812DCEA06
+:1025A000B7C3ED80920A866193CFABD143D9198826
+:1025B00024FB75FF4EEED1DAF2AFE115C99A8366BE
+:1025C00099505C714E5F9738DF43F7FB00639D764F
+:1025D000CD38292565D887A528D5E03FEA1F852C69
+:1025E0008EC98DF02C81D930B9EBF8485C2075BECE
+:1025F000489524AF1B4A9C9B24E0839C618AA94494
+:102600006C17B70AAF84D717DA8DDD3F787C9A2034
+:1026100029736F5ABA24EAB3D99544775208092C22
+:10262000487EEB1797CAAC5A42298AD8C2DAA1E28F
+:102630003D90E1C39FFCC8ACB2454F643BF4C75F1B
+:1026400068550F4775030F25929180B775BBB4A2EB
+:10265000630782A0384630094B496372FAB484405C
+:10266000BC9475E04CB7EA50280AFE13DF6AA891C3
+:10267000E5D5F3FA92E258149D196F11A5CF041F06
+:1026800070AF7588BF1EBB48C29F2B8345A94029E8
+:10269000414144D14C9CE89086E781EAFE90EDB23E
+:1026A0009ABBE8FC330698C27BCDEAB78E3DFF8229
+:1026B00048908F78F14CB455545C458964C46C756E
+:1026C000E2658B8942ED36702D68E165FDE8D9221F
+:1026D00058A155A5572277AAEDB6D9B43326B7032A
+:1026E000728538F3884A3BDAC7B33B33E2564A2255
+:1026F00019B02F8EEAF18CE67BB8E6DC019865C84C
+:10270000B13B7390A7FA624FB1880BF495685B0FE9
+:10271000C710B2A58E29593A2A5E96F9D7193E44B8
+:10272000D97F5784BB05EB506F2C270EE9C8658213
+:1027300075AA667ADA2014283AC99E9F00EF40DF16
+:1027400053667688131E3ADA2661A56DE058B823E1
+:10275000C944A1BE6E1A3AF1726576D55AE9445859
+:10276000AD383B4F60F23F112434B497CA75EF2265
+:10277000A74163C4CAE5EA9208A7F94BC4DF8AD52A
+:102780008055C59802E4F94C8DAFA79E126F8490D6
+:10279000176F40791A28F4451D1E712785074FB61B
+:1027A0004F1957650A0C7A829B67D69445250552C6
+:1027B000BEBB5093D49E70E94DF105C6A215869814
+:1027C000B49335027464E508A2CBCFC038F063B986
+:1027D0009783C1486C03D255158924609EC120A0FF
+:1027E000B5993A5B8F2DAFB6AE20A98A54CC500272
+:1027F0003ACA425515AFAFFA7C9B750E7BA2CAD878
+:10280000C61D9405EF46C53B9845696D1F0F21F124
+:10281000A24785832E7243089861D6374BBFFE03CB
+:10282000A59E8BDAED13F527A2337055DF1AD9FC7C
+:10283000FC494EAB522910577C309B6288483CBB08
+:102840004297B90645FB7EA6452ABBA3772D37F8EC
+:10285000EFA1BEB3ECD426441EF2227BD2207491A9
+:102860007B5C97F7D3DEC7FB89E3519D4653A48772
+:10287000B6E064990C39E73FF0BDD0ACF7D0016900
+:102880002CC85D73CE0AC7344EDA97CA6F2F02F098
+:10289000992A550A05E73F6ABF39FD2C75C9DE90B4
+:1028A000E007CAB5FDDFB458192B97FBFB305788FA
+:1028B0005FA17FC998E735DE0AB8C2025E74279926
+:1028C0009A7BDB303D6D1FB311E30EFCB8DB4FDBB1
+:1028D000D8A53F973180CC3397749B68ECB3F699B9
+:1028E0001E0F90CBE5871B23E28D936471BF8E761C
+:1028F0000E96E953E7CCA1E979EFB1BD6CC274B390
+:10290000C53875BAA8276219A7A2BFA9EC5C20BE7A
+:1029100058B9CB13591510352AFD47B6761CF6C5A4
+:1029200034A57B67F6C6D899386438B9C1A2A5D357
+:10293000C3E0050D99142C5AD2EC06A1311428C31A
+:102940005A2934F1BD052EB4585A3B34A79C58D1AE
+:10295000C503C0D5815174280AA605783AD0F3453D
+:1029600042D013E1532996A3A0B0BF403B0759EDD5
+:10297000EBD4DC61E1B71060703E11C09B749ED453
+:102980001A1B4B94D87C712BA5189FDE2DD7581B92
+:102990003BC818C57D8C009287F65362054112072B
+:1029A0004CE0084F65CBB1C940651E9EB8EE0140B2
+:1029B000B7B0E46EA9A364DC3D085835577B679D2A
+:1029C000AAB343CEC80C707CEB64B5874AD5EBEA5A
+:1029D000327CAD5BF7ABEF20707BCE92D99CAA9393
+:1029E0000A5A07A15B058DE5CC3FAD7C6021EAC2A8
+:1029F000FD708CFA12F46D1AF33719C8CBF0F29F00
+:102A0000294AC2C6D1F835FEA88CCD0E6DAE9748C6
+:102A100067F475361EF468572D35B751F790AD61E0
+:102A2000B213889320E5608DC05C730F00FCB02E5C
+:102A30007516F0ED0B53EEA0FC2F95F4C1485D57D1
+:102A40002195226A07007147260D5FC71DBA002C29
+:102A5000F91AB1AD4DBA00FD4852C1A97F7116DC1B
+:102A600004144F10B2085F8D87B766DEEBA401C572
+:102A700074599F5977A168D48C81B8B1FA3C1A94E3
+:102A8000C63CED897617E5B371F30133A3E6D8733D
+:102A900079A05C144CBA15D96F3AA92F636DBFD7D2
+:102AA00036D0AC528F15BFA3BF0EA2A5B0DFB6B70C
+:102AB00013E9285EABE3759E6ED9EC7D1C8037FD73
+:102AC000EDD4767ECE369669D7009B16536A83F690
+:102AD000CE0B17EC9F60A8A94AFAD7A5187FBE2590
+:102AE000527B9F7ECF826C83E09FD0F7C848E7ED92
+:102AF000A72E979186C039FEC10327E431C387A969
+:102B000006D8B3CAB577BA9716A1993D2EE6DEAFBF
+:102B10009E73EEF6E499AE4B4079A009BC22C253F5
+:102B20003A6281C1AA98E9EE006BE62928349CCD6F
+:102B300013EAD89D4E30FB66E576926EF7C04BB82F
+:102B4000A8FB4812E01B984E6DCBD6ECB420DC817C
+:102B5000831FEB4E1BF6215F5EB62273A7C3E79679
+:102B6000EFD9FC3886688022F74B079F31D13A486D
+:102B700008A63222654A6098F2B4F6B9CC0DD1B5F8
+:102B8000B69524DA11B9DD527F356F0B1813F9753C
+:102B90004C2537120D864F60010DD13A8E9D0C5891
+:102BA000F288B33A318F1A7B2D9F1A8416E54DF4C3
+:102BB000C665E569B3C3CF01E457BC658E15931CA8
+:102BC00065B00C3BFCAF60661399F3ED48FD1ACD80
+:102BD00061A776A8C1CAFDC3024C1B103232EFEFC9
+:102BE000988E1816B466E8C78D1C6DA847A6F8B372
+:102BF000D9C804C323988D25397E9FB37413AE10B2
+:102C0000B3D277EAD75089EA6B323AA3F4B063D4EF
+:102C100083EE4500BC7D280FBA0FB04CEDE0FADC26
+:102C2000FCAAD6C1E89FDF14154AA9C3BCF2964A94
+:102C30005C95C2526A02B0F22C8C1398EA88EAF4CE
+:102C4000707DB4912BBA4ABB073D76B7D5BA3E49E1
+:102C5000F9B88E993F47CC645FF84C3E48415CB46C
+:102C6000416F625871DE5E6029937C819D721171A3
+:102C700061D6B53A84E19D75D71FBF0C8AD9083952
+:102C8000E6B8C98B870D4D6A527AAD0174A57AC931
+:102C90008A7E59E00E53C658F8CDA9D9401AC3010F
+:102CA0009BD277D451BCDF33CAB88B274B33DD308E
+:102CB0002E4509B49299D8CE6C3902221A8AF5921F
+:102CC0009A588FB0440F6B2610328231E19A9E36AB
+:102CD000CF918A5C08027E8550496EC8FBA178F5C9
+:102CE000892F4D6D6C01745AC50446B6B15963EE17
+:102CF00039C8E86FF2EE23B3E4A4BAC18F8D1E5930
+:102D0000CFC185E62272DAF06F87F6245B40200897
+:102D1000C40C392599B557E0937AF008F7C2DD7FE6
+:102D20002F046094F496B572C869A22829AC8F5913
+:102D300067925A254C67E123D1276109E4D3CE205D
+:102D400018FC144973197230A2F6D5E4BCEE47ECB6
+:102D50008E1227A96186281DCF23142BC8F5681071
+:102D600064F5EF5CAE793A2840F5D6BBA80862E07E
+:102D700098FD412CE014F9F4A5A75DBAF0CC777169
+:102D8000122E397CACE6289F8ABF8E85F23781DB14
+:102D9000B55DA26E5E3F0EFBE240AFE3687BCA9773
+:102DA000D5777A8A5E5343BB28ED5511921D2AE4EC
+:102DB0002F5A60EDFBBE6C6A6EC4B6148F53613E31
+:102DC00010567CFD42293F890054B2795794513AFC
+:102DD00020A3268CB99C11A6E9A89EDEB4FBFF3384
+:102DE000DBDA80B7E35C04C009A0C25A421FBD55BC
+:102DF000E209A5C56FDC75FBCA0DA75B01F941FAB5
+:102E0000CDA584164A91140E372ADD554256264E1A
+:102E1000A588B14D5A68F3242C258A12B5D2BCF28C
+:102E2000B0C7ACC7385148D8802A4C4961ADAAEC2C
+:102E30003421A135D132C08072686ADC5DAB41E2D9
+:102E40007BD1EDB2A1539FD9DB937A3894F277B559
+:102E5000D9C86519E944B253A9EFC1B53971B85C55
+:102E60007F2EC29560DAB0FA0B302A6FC9F752355F
+:102E700058CA4E8A4F257DBE3786E2D84643DF309A
+:102E80001B021A713BB6555B57178C21D3930881EF
+:102E9000D108B48965110A7183BDCC3B6722359B8B
+:102EA000FA1C07A0FD2543D898D4E336DCAC5C2798
+:102EB0001DAD254F742ECE8EC63B5E6C23795D38DA
+:102EC000F12843094D790899C4804CC8BC2734EBDC
+:102ED000E4CBBBD6D6886A549B8DF003D6409FA81E
+:102EE000D79D1215946301C7FA4141693D6B0333C5
+:102EF00029CA18D36C546BD13B6ED729C37246F7DD
+:102F0000B2168CCD331866F526F1953F63392B1533
+:102F10004A1AAC1114228D9AD7DECFA1330EA4A881
+:102F2000E0DDD627F8461EA90536CA66BB4EA18E3F
+:102F3000B197AE6E205E3461A292AF7ED06F87D023
+:102F400049F5ACDE004EBC75765040E21B60BB8993
+:102F5000655923999D7B4A299429D88B1783A1A36E
+:102F60007C0B191EBA6848AFA04C3E4B93E708454E
+:102F700022C57212AE4D5A50CC8BD916DC086BEBC1
+:102F800041DD765B24973DE0DD7B5329E7AC4F6163
+:102F9000E228F4B75F327AFAE19C1AC597E32BE492
+:102FA00074CF87D4B566EBFD2D6A41DBC2259BBD8E
+:102FB000A74571F4AE063A1771A4EB502388E75881
+:102FC00037FD18D610D366639952BCEE0713BD4F78
+:102FD0002AC907660014839EFD132206DB737F68EF
+:102FE000BC4D058BE40E25626658467D457DE5990E
+:102FF00081A91E89209D175E90231E2049CF62DB88
+:103000000E416B4CCAD1CF2EFD099585906366B1F8
+:103010002EDB6A2A60D5F3FC4C7B1561A17B116421
+:103020009E3FE7FF797A6C620FA595E0A153C365D7
+:103030000CAD918BC819364F1B9B3352E77A80D267
+:10304000AC7227EA2B1F299B7C164F65DC2BAD94B5
+:103050005AB9CD1735F4C76DED251456C2882BF13A
+:103060004436CF313D9C831EB9F9B84E837F825AD6
+:10307000C59676EE8A5065ADF3BE13220F21E8F9AE
+:10308000982A85A786EB2E990A6C8B99669E785BA9
+:10309000921F1EBAF2D87EEF1EEC4603CCCE2FE371
+:1030A000D855840FA62A375E67436DC3CDE1F796E6
+:1030B0003070A3FE456FC8E3C34170925357BA9571
+:1030C0001B0FAA16971F6C4DE1F4CF4CC42113BA05
+:1030D000B93842D3B91C4CE37A537270DAF737111E
+:1030E000DDFB5F3F88CEE4E76DD55E5A57C3A9B3D9
+:1030F0005BF1B2FFB0302F577F24CA59225CDC2924
+:10310000D86CC3D12897A76BC672B19ACF673E7BA4
+:10311000DFED6993CF12F665A7F5CED9BFD10021B7
+:103120007DB6E383492F61A1CE56F9F4B155E4C9C8
+:10313000FEA7EF1EAF6E271467A57BB1DA7D3218AC
+:10314000AB0273CB413162AE82BE2096A2B9947DB0
+:1031500048E09AEA292314C3D3FF2D3E43EFD4D38A
+:10316000BA1B301FD82410BE799B2710C2F9B54A6C
+:10317000B9C134C6CFC131A41C9CA766C226E39F47
+:103180001F0367DF36D672D3CFFA4DFDA43DF3CBD4
+:103190003DBFF895814DA7A0C9AB70FAF7D9D3C050
+:1031A000E900982F7997C478DA81ECF7BE06B4EA83
+:1031B000212F223523ACBF881603B11707A3A844DB
+:1031C000F4550891EC556CC062E84B8DD73F77DA27
+:1031D0001B301EEFABACA36FEE5B90CB1F25ABD0CB
+:1031E0006E69568D7034926CE526467E146F3AC136
+:1031F00098FA17432EF2B6028927F41AF4F64BEC2C
+:103200004D91145545CDCD67B7778D7518D7853459
+:103210004CD770AB1A5CACD4AA7C129319120E2650
+:10322000B811C23BAD8278696E07A1FFDB8DFC034C
+:10323000F43BAE5E5A1A6893EA04F1F430BDC50C53
+:10324000935361A3D6E2919E658330B6A09F9C6D97
+:10325000B1B3539A4CE0265B31699AC358FC93EDA5
+:103260001D903CFD3C1EFCC9C406A770A242CF398C
+:1032700049B5B110F684094D5BFB6FF1A2D6CAB611
+:10328000611B2C0F3D158F91E2CD82305C56B90C3D
+:103290009DD5E43F75B8EFB669CCC4CE955FDE67C7
+:1032A000A8035C9204E8A3AA27B3E826F5591F26D1
+:1032B0001D431F10F9C377827C3CDC751408009D08
+:1032C00024EE0946B3ACBC0B796080377763C70A3C
+:1032D00097898753BBC9B4E17BBF1F03E1AB296367
+:1032E000D9A26AACA9CE1367328A112924BAF07A1E
+:1032F00019CF7A99564DC4BBA3A41306554038394B
+:1033000015368736EAF021780D3D4800B4F85BC8E1
+:1033100019A79FEC3873FE6516506302EC6EF9C076
+:1033200037A6A701213531B77A04A2448ED89C88EC
+:10333000654AC6C11218353AFB918CA8BB4CA75FF1
+:10334000C1A3521100827A2B98D1E35F97C653EF45
+:10335000A91C1E87144F4511397100103EB1F2CCE3
+:103360009C8E0BA526CAF230B7DCCCD0F2FC11EC57
+:10337000C40783BA6B3E273BEAE0D82040FC69755E
+:10338000BB74479A5D008EF2E190E810223CF62172
+:103390006EC452D10D9E92890436E094DE935F098B
+:1033A0005DE408A41EC787CB9F61343DA31CA155D3
+:1033B0000C5A0158E7F60AB6B8E4CFD6A9609CE6E5
+:1033C00036B207C1D85936C22EA58BEADF9B70D71B
+:1033D0001D437A3911D6D9BBC821B4E97F58B0CC86
+:1033E000D9C687BB7BB23FD63BE814A8773ED29ABA
+:1033F000A24C0574B519610BFADC5948607ECCFC0F
+:10340000860666864EC955C1504F766DCCC33C8A40
+:10341000BA99DF3FF670188F2B6C70BE0F655B2674
+:10342000D46056E14A92DCD182FD5E267E83FCCFD9
+:103430008E87AE4A9440D3A1C5A3F98EBB0C1B491D
+:1034400086CFB62765A4399CE34EA4A32689B3078B
+:103450006FBAA4540A43301981C00AA45AA631D9BC
+:10346000C93A6CEE36FC6953E5A382C962D8147878
+:10347000831389F28000FC81210871A11C48FC772C
+:103480004C6EE0D50C9C95A987ADDAC8959AB578B5
+:103490001287EA386F87A9CE9882DA2BA4BB450839
+:1034A000BEADC0B1BAAE343A7629399E035186E238
+:1034B000985EE860A6DD51C240F27E09476E31D2C7
+:1034C000D9EBFEB02BD5A79D4542B1E7B5009B9443
+:1034D000DA43347D24EE648604B354A0AE86BCC9BE
+:1034E000B0FF07E5D28A84AE1B45DAD353C300D0C0
+:1034F0001A2D8F6A7DB4CD8427AC2AA1C8661967BE
+:10350000C766FCEB609C8FDA99AE8FAC60E17243CA
+:1035100030991CCB62CDF7931B1CDD445C90515954
+:103520001AE08019AE66BE06681C60DD332F828902
+:10353000B65778E15EB639225A7EB6CC0FBFDED6DA
+:1035400056B8C1C6A42F332FC7B71B9736F2B89F02
+:103550001E18F669A007C83921529ABB45F872C6F1
+:10356000AD8307C48E99391A67AB8F185C06183C77
+:1035700092B550CB4E830C889A5DF5148DEBE8AA7A
+:103580005FBA59B9CE3297F8BAA4828223098B3731
+:103590001D35138F5AB4ED912E1128746B43FC2BFB
+:1035A000196F2C27D202472596CC26F08B7FE0ABF3
+:1035B000822F1B0900CBA9780E4D7CA3CF1F38B8F2
+:1035C0006B34EBEA6A832A3414B3FC260CDB411F0C
+:1035D000B23B21A0FF004630647D89A722A879C4B0
+:1035E00080F9FB49724FAE4A511446A1A44F18E02E
+:1035F0007B8AAE627D7350E35D268E660371DC9339
+:103600006CD2482A31900FD58A1452BC7B9179B77D
+:103610003A15BB93E30D41043DF576CB6C0F3D2885
+:10362000B9185C9D700DEC9AFC444211DD56BA2528
+:10363000D3FA9970DEC005C10F564A7029A8F87EEA
+:103640008E60ECE315B557F644ABA0A590E324B526
+:1036500043E62C39D9EFDAE70B4AB37A9120ED46ED
+:103660004E28DE3D8643E4C0B4E3B8329136E9B873
+:10367000E550A65EB2F9F30B6CFFAFC3EDE7974ED2
+:10368000EBA911DD88ADA6F3C6310E064ACE5F3137
+:103690005EC970F81CB9B73580D1C762D0659E9BF2
+:1036A0007BF54FDFB09A40C134D1462BC6FF4AF9B3
+:1036B000682DB3B371C5AB05FCFD319E8C32EEF1C4
+:1036C000EFEEF402FA21190DA3A5D29D67326A022A
+:1036D000D688EF7B7CB7C149EED6A26FCCDFDEB5D2
+:1036E00014DFB71A769C9F62F4C9B04D58DB0371A2
+:1036F000EABEF22E9661773F1B4F398A8EBA6F4A27
+:10370000025B467D23F534E0C400AF7BEE826AF1B4
+:1037100038C979BF26CE05607BBFD3CA7D24145239
+:10372000E7F8C0590801BEC09E4D5A2D5B825DC5A9
+:103730009DE1F464E5DB5639EF8A2B3AA09DA46045
+:103740006577412FA76E90672FF138BBD2553ABEEF
+:10375000ABB720BDAA13DDB6ED19982A23C4E8B390
+:10376000B76A71A8F5E093B59DAB78B817DD43B69D
+:103770005C9B49016DF5D6109743BC695D5BAFA2B8
+:10378000767DA22DBAF38D65C2991B3B74793420E6
+:10379000BEC3357B6134E4B0793877CB6E45791F91
+:1037A000578911AF17ECF20043CA7CFB9B12F83C1F
+:1037B0006ECCF798196DF350C89B72C1C84A288D1A
+:1037C0004345FBD15EC2E46CC9452424EB0BDF58B2
+:1037D00027C80029FD287767CFA4F7B0E39FDBA4B3
+:1037E000A11239697E4AAAAB21EB5103B89C9F977D
+:1037F000D175BA204CC51BA292AD9BC0D48C4CB0E5
+:10380000B4785E340E3322D707A0B91E4FEB7EA1E9
+:1038100095C493CB8110C8E2D0DC04D19B4C2B948F
+:1038200000F0C16219CBE84F09F0F67FAC2F9B0F77
+:10383000BFFBDECD56C3C621B05A3DF1F2A82D44E0
+:1038400087F3657FCD9E4D56F2E570A8A1A03FE4B9
+:10385000626CE437C772AA333695A461F5AD9D1545
+:1038600068A302F7D1C2EC2F8F5890EF8645ECFE8B
+:10387000D5862C7CB91A4268C5CD9CDEDB014EA5ED
+:10388000C875702DA64D50E1ECC9744FF0DF481C8F
+:103890001297F71D82C805F8934014FF18BEA313B2
+:1038A000B7E963F4193176F94A54D0F3EB39331A96
+:1038B000D21C949881364F76ED1D303174D2A98692
+:1038C000DBB4ED200689AA230ED89F6656045D98C6
+:1038D00000EE6DB52F529C6E13BD9460F307EA9B0A
+:1038E0000BE355CA0A43D755987B8578F3EBB13380
+:1038F0001F46F1A7A8C962B22B92D19194A87782F2
+:10390000862FE0607D92A909EF35D5E86192FDD55B
+:10391000F5342581C77A6253CD07633AB0D9733E37
+:10392000874F6B975457025B9DDC6D73CB01DB2F88
+:103930000EA6DB7D1EB1CC75F5D465DE0DDF06DA93
+:10394000492EB7A144206B09E5E9366EBDC4B6AE79
+:10395000D16B3D0D4E62B910E7CF48A2195757B74A
+:103960006005BAA4193BFED85DD02C02FFAB38F03D
+:1039700057E7E92A59F394CFF9DDEA3E70AC9E0B84
+:103980003EFA0A083FB378CFDFBEBC7DE5A1819D3A
+:103990008DF2FC9951AE6886C1CEDA78E13CD24610
+:1039A000950409BCDF876F7B0DE57C02C34EBE88A2
+:1039B00050B099CC53E7DD82EDFA39CD709F0DF60A
+:1039C0003E5400CA70F41857B40B7625CBF82F2A52
+:1039D000E53534DFE7DDB774D4EB88BD3666DBEB65
+:1039E0006BCA1FBABF4F62BCC006ADAE36208A1983
+:1039F0006E916F2A3DBB34772D9A31FF3E591D06DB
+:103A0000874158DA904CA0378481D83B3FE89196A3
+:103A1000662C90839820B5E79420875E8854D367FE
+:103A200004154FB7BE7D3C60D09F3505828B7A1B55
+:103A300084E3D5304A97EEC92BA78910753EAFF5C0
+:103A40004F7C9DAEF3BB4A4CA09F81190E13DC3A0C
+:103A500094B176E659D1438C0412B8A656A2AB2E87
+:103A60002282E13E9E997117C338BA024B6B5ACB42
+:103A70004E2C9F7030AC02C873E7D6F026E0E437D6
+:103A8000C1DB8F3BF43D8027AA0F0BA181DA942C78
+:103A9000E2B9A9053AEF6ABB156ECF5DA3AACBAC1C
+:103AA0008EA0FA822669D8740D52DC91CC38CB1DD9
+:103AB000E26459B0C9DC95CA56937AE4720456752B
+:103AC000C45FEF0D5583438B73DCB5C61481636F00
+:103AD000010A54C888890D6431581B9D92C0963DD7
+:103AE000CF9A446515C73ADDC3A06417AC358BC1C6
+:103AF000214FB8526EDC80458ED9527219BDC85E16
+:103B00007677C94F0B7EB6329E24A387DE81C49898
+:103B100035D5225FD4D25096C18A7BB1C16CE8E71B
+:103B2000F4A32302198BE23A4B1F3AC09F0859DCD9
+:103B30006A5AAE89FC783D56E3F38AB1E735842BA7
+:103B40002C4AAF71D1A3881EE256CCE1AF61E536B5
+:103B50006C8E229DBC2A5702933FF8ED78E3631CDC
+:103B60001E7E5B5AA0DB929A1A7CBFA8CC10BBECDD
+:103B7000CA4F684729F408DAB02115F55D8A41E497
+:103B8000E8DE0C52FD29D7F5AA955518672DEEB63B
+:103B9000D12861935BBA263A12E3391097A459E20F
+:103BA0006DDF8D0B7E12C733B2F7518EAAD54A72E4
+:103BB0002A05DB6852E4EAE784DA9C1C6DC5EC61F7
+:103BC00055E53EF370E47B4E07AAE28FD439DDBEA3
+:103BD00022A5249DE77906466A7B69CE64B8BB02BC
+:103BE0002B1221B4C364522E3C3D0BEA3F7A478D21
+:103BF000D274A76C88749102D81C12F4B97F12E8B1
+:103C000083D0DC180F6FB30E03F5F8702CC4AB8EA5
+:103C1000346E3C2EF8A0E33C1E53D60D4D10FAE254
+:103C20003CE11FE302CF9BF458E28778DC8A970CD3
+:103C3000B8594085E1BF1DDB04A00BF73795B0896B
+:103C4000C24662A6F4787778979F9007CC73D45BCE
+:103C5000A547960B0456702A74368552F98F1CD6E8
+:103C60007777CFC3FBF013B0D0CC29809A053AFE0A
+:103C700088A59C811974A8D54931600DBABC4AA2A7
+:103C80001FE73D010E7FFD3FE3DDF340402FCF2CCA
+:103C90001A57CBA1049E3D4ABE251AB9DD7031A644
+:103CA000865EB8D3EA6273DCBA33265D10705BA11E
+:103CB000CB24B98E699B4CF809E49910BF0C7108AC
+:103CC000FBEFD5C90A15A26845070233D9A2F4490A
+:103CD0006FC61A1A49933B9DC3F9A098C267DE24A8
+:103CE0007C8AAB429E7CE1404E75ECEAC38A587CEC
+:103CF000219B9C5FE66825F94EC17D6773F5E2481C
+:103D00005C219C16CFC1EAEB9140C0651F365A7FFB
+:103D1000125D495099B98F5BCD217E01BC3B25F3E3
+:103D2000841F3707BDBFBFCB8E33C82B4E1235065D
+:103D300082EEBD7AE948050CFE37C5576ADD44605E
+:103D4000CE0DE044896430CE296B0F225EE42595C8
+:103D5000A2ABEB6036BCC01C1DEA98046D82BD822C
+:103D6000138CE443AC146FBB36223B10237944CC54
+:103D700070F7EB5F7C2317EF304E2D7961C0E3EBDA
+:103D8000BCB0111010F86EF1F2266DA6E3FDBCDE9A
+:103D9000092E3891FF14CDA70151881A52B826EB8D
+:103DA0004C3034567EFA028D6E5321836D7C7DA299
+:103DB000564E6FA303A1FD7945A07E700F5946476B
+:103DC000138961D6F9DF8A285BB1A6185EEB85B04E
+:103DD0000B7425B8BCF5E318F8B0873BD96D99D3BF
+:103DE000E41364B1F0C3C389BC044DD292F83971B5
+:103DF000FEE3FC87B42AE70276ECA56C24CBDCF367
+:103E0000D8BDFBE43023C5B07CD1B772C1AE48F356
+:103E100093C07864B52B9E64F244AC59FA6519AC32
+:103E2000D9018C05AFD95423590EE27845BC8EB127
+:103E3000FF88C0D2B9A5C60789ECDECA48FDA90330
+:103E40008F66BAD9490B66FF8A2624DF36EA78FEE8
+:103E50009CB00DE5F6F0B09F9C58E7A4177FBE30EC
+:103E6000BAA23FB329BD56339E0C3EBF88E5734FBF
+:103E70004F890DB5FAD38038C5583730E9D2192F9C
+:103E80009CBBE7B2A222B502DE101C51BB7A82BAFB
+:103E90008452AD1FF8DF601B39DF55A9ECC7DBA2E8
+:103EA000503077DE6453EF80E39E1BEBD5140E9EFB
+:103EB000678699289B6FCB2637662E7DBFA0A88C7E
+:103EC000ECC85ED3D7C02B563E3EE6B209952EB263
+:103ED0005EE87EA72EE7177D91C15B60F22623CABC
+:103EE000E9279B3CBEE6B7988D621EAF34ECF875AF
+:103EF000725E80F376B6D2BB4F32FFEA2228B3114E
+:103F0000542BF1794EA25E66A11A4E56EFAAA91360
+:103F10008279AAB5EEF48906714FDC4BC1C3266FD6
+:103F2000DEF863768A135577C93E93BA63B6A66501
+:103F3000A8545DEB761AFA36BD1421AEE5F9D685A4
+:103F40003B07294771A6CBF99EE5CC69A3A608A338
+:103F5000C015C3BC67F02CB7730DBACC346C169087
+:103F600078834189D2870EBF5A1CBF0032E4DDD46A
+:103F70007649946C8B7FE6FEBA360CE47AA7484506
+:103F80000DDBDC4642ECE236E872028798A7535517
+:103F90008B779343E2BE2A26DFD81573C473A99AA0
+:103FA000F93E6167BEE6F7F2556A392913D27DB44E
+:103FB000A89AC3FE5F45DB760F30D0DFD35191ABBB
+:103FC000DF0772D8BBB4EEEA6B3F4303131D0278E0
+:103FD0008E0A45209269F12DA73919CC130611B22A
+:103FE00014C1045E86D81EE37D57A613E78545BB42
+:103FF00014D1424306EA307E637179B58559E89B56
+:104000002BC5B60204B8290AA4B43D6F7EC2D16D97
+:104010003A98D65F7FB93BFDE12AF1A51DDF97AF46
+:104020007B6F1FE01DA848BAF4A3327BBD07F98D52
+:10403000957E02214EE097F90FF62686CD8487B251
+:1040400034AA9E3786242F6B506D87AF48F90E8CAB
+:10405000601D4AF831DCA81A46507DAEC501CFEE8E
+:10406000F22FF38ECC31F409C83C5BA4C5A8350609
+:104070009D95A9C11EB2BEB44E8603105071FBD7E8
+:104080003429E6E40EFC364CFEBCCBF3442399CA3B
+:104090005ECE76A07A7F7DC20E60FBC528822E227E
+:1040A0006FD7999ADCCA1DB35663FC42A372D2D172
+:1040B000C13A0A4A8C9EC9CED3A62059D23244B501
+:1040C000418D1FFE9E9EE2CA090F24B746E1DE63C2
+:1040D0005636D300610AC59D8333FB9548EB057ABC
+:1040E000A39193DF02A6D851C9A55010A31986DB6E
+:1040F000C54646D7DDD6F35EA62869A2EE580A2E3D
+:1041000012BB61B295A0D4791C261121774881B8E1
+:104110003055FE5DF860921C96334527EF1D9B3BA2
+:10412000B6B80B0BC816EF9365AD6EB2CCE048097C
+:104130003100345B640BA91709557061F9C63CADB9
+:10414000116DE66913AFE0FED8C5B6F8DBC2E3EA4D
+:10415000787A924449A3E027FBD213FBF06B411716
+:10416000FD940EBC3EE6ECDB3B3CF0FCFF46CEC2D1
+:10417000D8F7683EE096C795032E53A8CD3C8C4FE8
+:104180009372012BC58A3B2F52E5D10F86EABE36CA
+:10419000C785096A18E6ACF3389BC5AE50752F3C4D
+:1041A00035D85090F12B50A4259D988F2147ECB71E
+:1041B000665992991DEDD68B5A4DE5DEFBC959D64D
+:1041C000FABCEA2705E0D08DD2BB72E2E7B076FFF9
+:1041D000571CEA2AB7C933DD24D07AF9ADE3A952D6
+:1041E000E9A8367E240C862BF2168EC6F2C253B393
+:1041F00058405C0C1F56BA0DE122D6D7872E546268
+:10420000DE583104330FB60B7D733C016B2A9AD014
+:10421000FA6DAEF07934EB8125E34411E64A6B9EEA
+:104220005E6AE2F995BC01418078A1CA680CD20CA3
+:1042300061343B15704FDA674428A55639778B10E7
+:10424000D0038D2E2EAD9B6605C95D0D35FE603504
+:1042500097E080471ABF67669D89412832B5A87EDE
+:10426000C8D4D028EE928C57089CBA89BF768B4A66
+:10427000B211AB93C115BB1BF87C06E44488ABEDCF
+:10428000C274FB0A3113672DC1902A51736424B99B
+:10429000791C02CA7C414A927678D93251E969E3A5
+:1042A000550B730F7B5233DF8FF08C20C04BD3360E
+:1042B000DAB4291B721F2E6170F85DF7B0936E2E71
+:1042C000FC82C738012F5A36AC9B4FB3FF4E682B88
+:1042D000E0C330900A020292E5794D9115683B10D7
+:1042E000B1EA508425094E69F385EF855B2AC54301
+:1042F0000CB1F8A63E116E2916F399D3824780843B
+:10430000BB87BDB278C4D5CFE3F59A314D62637AED
+:10431000BA69025C7FDD2E2687C15975073E926619
+:104320000C9623533B592A6F051FF506433A008626
+:10433000D7CFC0FAC0BFA403D69CCC32F4D988E64C
+:10434000EBA111F51B5393065A49C3C14F54509327
+:104350008C30E15638B82B0C87DBDCC8FB0E7023A1
+:10436000387BF0C9C2F79AA46C537AA8EFC5D93B41
+:104370006CD1217BA3233B1DA3D5061773B93579D7
+:10438000201C53F7410834A10EA747A9D9E6B20D66
+:1043900095BC7CE3CA14CCDCDD13E6E11D43FCB321
+:1043A0000DC91B3133AA1A2921240AD46C2BED4ADA
+:1043B00003DEED227B17884842B59BC4B7568DCFEC
+:1043C00017482E63320BE6ECE8A9219A00B8322C8C
+:1043D000CAF6FA4F352806F81314627BF11FE72856
+:1043E000B7B4F73C07EAD50098C0338B0A91516BFC
+:1043F0004A7C539775178E6AC3C7FB34750133FC2B
+:10440000CBB8E1B3AFBD936F30135CC53F335FE111
+:10441000DD5B44903D4B0A46A5639D69F4263D470C
+:10442000E3493521CE4FEF50E28987523B387C5B20
+:104430009F79EEA306C986BEB2970BD5BC6E1C1140
+:104440003EC43AF78CAD44D17E2E04D278B03416F7
+:10445000B0FB76643347D43FAF64C79A118B2B9F70
+:104460009CD9779509D0FBA984AFA629DD2CE8E774
+:104470002748C83664C80A2EEECF504C4364116CEE
+:104480009A2800295608F5F2011AD94BC85CE9A010
+:10449000851D509BE2B319461E67F8891547EF3B0F
+:1044A0004AA37B0E3165B25404687C198C8694D380
+:1044B0007A09F3D978B3156A1AEC0CC0F59EF26B41
+:1044C0005A4B7AAEB5CF8E660FC69ADD8CC9F24BC9
+:1044D000CF04391BFD8AAB902F8B8DA585B1844508
+:1044E00046E619FFFD84AEABFF5D5ADDBADD694BD0
+:1044F00014C301630592011DAB3CC90129615881B8
+:104500008D1BB6838FBC6BD97E3F95EBC4E97EFFD4
+:10451000396E96E9BAFF2414E43C239DE8AFB499C0
+:104520002F809D32BC8CBF761BFC8BC94CC3DDC178
+:104530002C0F75319A7F012F78E7AC95E76437D05F
+:1045400007506B67995EC263DF5ADA675F1FA93253
+:10455000CE32F7F83FCAFB3C8C63F134D002E95FFE
+:104560005E3EFC0CA8B5DA001A98839AABF8A55FFA
+:104570004B46DB92883A7CFA514CE26EDA000852E4
+:104580005318E5AB4BA8DC9ACE5CADB98605852700
+:10459000801CE72427A7A9534EAB7268C824402685
+:1045A000786B83589B12921F83B22896ED655F4209
+:1045B000FB064E53F3DDB3D298FD2B01079BBE09DA
+:1045C0006969F11F8B1B56F6202C6B2069B7013BE4
+:1045D000ED560012738DB22371458002DD36809353
+:1045E00050570DC2C41001066954831C7C7249CB1C
+:1045F000C490FAAE9497F15491313D1D693995BA42
+:10460000D714A7105ED68BF1C6ADEFA7959CCF9FB0
+:1046100005ABA49490104941753FE7041A41FACACA
+:104620007B75FB7CD7632327769AFCEAB16D71B268
+:10463000DCB7EF406CC8A10A8A520FE3908E539307
+:104640008B575148B86DF1CF110BCF7462DE93A335
+:104650003957E174CE4B963F9A0BDEE1D8247B1795
+:104660008236CADBC838A9507DB70A3896D8EB160F
+:104670003FE37B15798B3A2C815BDF7F9EE95E9A65
+:10468000F62A0445069848DF8EEC7C024CA1F7BD63
+:104690000D6E13E7563B27F0CEDD9C638D6C7F805B
+:1046A000A72F83474D34FA3D7C4515E493FB05E382
+:1046B000837780EF7D487BDCF39345A57C95055996
+:1046C000B75CB4279A4EE7774AA5AA0AF28353EE5D
+:1046D0003FF317399633C778099D3A21EBC796C443
+:1046E00042E4F33EF371A47F0D7A986CB879DC094B
+:1046F00038A313A4B1DBA840340491D8FE1C0B9757
+:10470000E92DD5B946AB524DAA3966B4966DB7239B
+:10471000AFDBE10D2B6F5517F9426B7140E21B9F28
+:10472000266D3BCDE7A933268F0F6B9295ABE1E267
+:1047300041A393565F6A5E3E7A9BFB2026661D4B23
+:1047400041BEC6060D07ACBD76D2C502E694167C06
+:1047500098E59AB603553F946FFBBE8A8FA33D350B
+:104760002544C76427B456B8847A910BB7FE0FF07E
+:10477000010008F96FFFD733453F65D1EF62B25CA6
+:104780003926617CFD3AB41AEB727A0CDEE7E16FF0
+:10479000FE116B95F5A368488D3C431CC3835D1ED9
+:1047A0003052FE6CFE40F3A0D27A51ED5F184EF607
+:1047B00017312A2642CBAB2882F8C45362EA102B69
+:1047C000AA2CFBA19C5AB2BA36002F223D254247A3
+:1047D000C5CDAAABE72A207966DC3A567937E44F93
+:1047E000CF57679FEC065A0C9BC7A2299CB94B2058
+:1047F000C1FD625B0C6B52C0C93E1EACA8588A71E9
+:104800003D88F9BEA6DE19E246972D1D54D8764E96
+:104810001D4D722FCCA346AB469BAD65AFC88C81B6
+:10482000C70D069B78FD2F8425D2420A86AD6845C8
+:104830003459AC7FA6D084C4F529561A041F98D9E0
+:10484000299FE96FD8212747D8D61D65C486DF5D2B
+:10485000ABFC462F93FC50AB0284012EC0E1B3EFBA
+:1048600088E0D75D04C3F42701A671BE3F39D72E77
+:1048700014AC99901C8B8E1728FB149BBC99BB80A1
+:10488000AEFA05D95C7436AB8799B9C7BD7A89157C
+:10489000BE7984B3378468000F61141D7D0F8B0DC2
+:1048A0005F0249170D47E4ED0CFDA54B1F5D898E96
+:1048B000D9F639654486630D83819634F9C8E903D6
+:1048C0004736987CB6ABD20CDEECE6CE0605745FBC
+:1048D000304F7C1C265289FC26BBCEFD20EA4DBC05
+:1048E0005FB71C1E457CFB3456448D0938E217998E
+:1048F000F34C768DFEA8AEA10C5BCE388E3C176CC7
+:10490000EEC1B69FBDB505DD2A509E50BDBDA5EBDD
+:104910005201B6F71446AF95C0F57ABFAC18FC2D1E
+:1049200096362A853305BECDCDB08BE4C0BD016C73
+:104930002B9416068DF36ED98D13D8BD498A9936FE
+:104940005C2BCA658BC1858312C8C9EABB8E2184E2
+:10495000D2A30C9563679E733802623AAFDCDFF036
+:10496000D6C2BE3E38B26A12EC9BE6A2557301284D
+:1049700064B742543C52B712433ADA52FF1E1EE16A
+:1049800045600CE93297A6C4D9B03FD7C343D64C93
+:104990000C5834898F51713D537B6F531B54F85819
+:1049A00053AC08CE2DCB2707878D1E3C7C235D950D
+:1049B000CE3EBB72898D4210EBAC1F7522916066B2
+:1049C0008519B82C22C8BE4E6D71F5922EA5C775FB
+:1049D000C62F8C84915E5D93ABACBA8A4F7211C8BE
+:1049E000E79F1CDB4359629A6CAA17C8029C944843
+:1049F000A8CCC4C94296DDF91A5678B8628DB18C3C
+:104A0000CEAD6501507B60E2B18360CAB1C5CD5FB8
+:104A1000377D2AC5544831B0D7AF8864D963415334
+:104A2000228242320E69B89A229DFF6EF8AEB956C4
+:104A30004C5702B20D9F2A79EC74CAFFDB4A4149F8
+:104A4000CABBC899AAAAA8809270618B364FAE4D96
+:104A5000F6508409C102B89CD5FAEC5DC814734ABB
+:104A60005B3EA3F582A71B6838C06F265A72AAB0B6
+:104A7000097BA370543E09E2D6286EB8223CC10BD4
+:104A80008D837C227715A5F60A9CAE54114CC888FC
+:104A9000684502739D9CD030E366EE1B7F4A8D0F04
+:104AA00052A3E6867FD68443B8EE34F4EE52016713
+:104AB00053874F2D11E692CAC98BD4AAE8A97A5818
+:104AC000F599C4C89DB4F3573B8B1B1494D1BCD447
+:104AD000FBC3F4830D7118F0F360EA764DE8E768E4
+:104AE0000E8C64725EE8496CB3D74FC330456FA833
+:104AF0006117FA231805B38ED13C3FB62B85B0FF62
+:104B0000A95FB8A96418F5CE37E42839397968E87F
+:104B10004B9210E1B436678AA03414214BF853E766
+:104B2000D0160C32FEE0AE567873C773DBA6B8A47D
+:104B30004C5E8F839546D763BAB9410743AB214B8F
+:104B4000ECDEAF983C574BFABC20DAD327783E5BBB
+:104B5000D22985495E41D97D7D02F1857F6D3F086F
+:104B6000E4162398E6120A2354AFF34D21C5BEB2D2
+:104B7000926B8771698CDF3B4CE7CC0DD369F57381
+:104B800033BAD3450D119AFA9EC3161E509C40307D
+:104B9000C4200E4BEC28129C335CCD8AEFA200E6B9
+:104BA000A9ACBA4F9D42A6D057E446574F0A6D565E
+:104BB000A06A7C3DF5FF2115D5401A1479B7FD2A6E
+:104BC00026C2ECF52D87CE7AFD9C4F1C8223EC2764
+:104BD0003C1A461C72FF63ADB9E609ECB738151DE7
+:104BE00025092B0CF6F4C0BDA1A34875ACBAADE7FE
+:104BF000F6152DF99F26215006DAA97414AE85D535
+:104C000063D2DECD52699134293A46D782C689F8FB
+:104C1000631F57F3D86990DD79043176A7D5B32A9D
+:104C200063FB8EEC541C054C1975B5611DCB4ACD48
+:104C30007009248710F5D33CAC91013DC9C2D981DC
+:104C4000A7D786C6EC28E0EFAA103456A5B065AB0E
+:104C5000316DC7E4464039297BA30B8F78A5330C0F
+:104C6000CCC5DB14D222E9F0D3A26CBBE5AF98C16E
+:104C7000462B5C7A7B38021A09E40A63568C0328B7
+:104C8000DE4C88032199A19A224A97C1D82A48CD9F
+:104C90007ADFB2AA1F70C15600A669C17A4039B343
+:104CA000372F6739D6886AD6E165B0FFFDD8F2ACF8
+:104CB000D10B995D54BFD5388E37AB35E9E3163942
+:104CC000953E21479EF9612E2BA37D5BDA16434565
+:104CD0005F0A48A0EB86B893F0FD4E4A98E146B4CF
+:104CE000E94E02BB00DE33BCFAF4AFE15C4078F879
+:104CF000E93FC387D0C14D623D505D01AB28D9B4B7
+:104D00007E0C332A4CB492FF5ACD7E351C057A7C3A
+:104D1000636D4C0A0C2962DF50FB915812670783C0
+:104D2000FB7B36442966072D832AF7E377F88769EA
+:104D3000EE55BB8679F2BE3FDA2BDF7D8656A24860
+:104D400089EE0E260BB31B509F24034F507CE78245
+:104D5000BC6DA61663C17AEDC3B3F641D97567275A
+:104D600084B40904A49CA4A5C73A75E37108193B4F
+:104D7000482BFD4CDDE8EB9F549ACD43F8D3DE522F
+:104D8000A1EA3245721C6CE75DF26987A32CA5513C
+:104D90007ABB0D9B18B3F0826C1A88833EC502471C
+:104DA000B0A83404BB48CF5EDEFC66E76EEF132D7F
+:104DB000C8B8C23505151D383205CAAE68A1BF9DF9
+:104DC000FF4EE934185E91F96E370EA25093BA1275
+:104DD000E92E1B7DCC6429952BE075D28D1710FC34
+:104DE0009AA3CEAF289BF22E64653E4A9253F642B8
+:104DF000E71F5D4EEC446A6A57498A8CDBEC3DE163
+:104E0000213A58D36D0D659822327A7952A458EC24
+:104E1000832CB1389B5A7783A7C83ED4532B34B226
+:104E20004C0A49E018AAC8A425522A6F00F27590CE
+:104E3000BCF4BC0CCD51E63D9B6D03D4FC72F26713
+:104E4000A432A0A172DE50316C5808C817610C3F23
+:104E500089037AED5698FAD953E4BF6AF9450E5F93
+:104E6000F31B45441D7D5585184BEA7751E604C573
+:104E70006CE76705169C3F1E454810AA66D253375B
+:104E80005624B6CA51E26BC7624372DF97C79123BB
+:104E900081AFD76E5A04CD4FA878D00AA06AE477C4
+:104EA0007A809022F54067548ABAF8DECED0E101CC
+:104EB0004375FA2A6DC30AA6E81E09DF387C8118FB
+:104EC0009616A82B497D450A00D8D496C4A117BFD1
+:104ED000383A7269E6404AA451BB82A6BE2F1B1A1B
+:104EE0006C4199CAC0DE808E3CC67B4AB471A73E35
+:104EF0003F81B83C9DB942A784FBE67A52FA9F5F96
+:104F0000F112B6A46C449ADC7F55D42A5CA0CD7A09
+:104F1000FD6C7C060BA1212CF40114A4DD330DFCE7
+:104F20000AAEF9A6D1B0D67A9929ED29DF4A6D6586
+:104F3000F88939987E9CD0B0C4D91166994218F28C
+:104F40003703D1AEACA62AA72BC491AB87E764C2C6
+:104F500096ADCF516E780B92AE2351DE3D72482D47
+:104F60005DF2F13A91094CBC7DB4098DF285E025E2
+:104F70003AACFF270A623737C58D6BE60069AB553F
+:104F80001E1C9715D56EB6FDB918C3C66142781DB3
+:104F9000C04248B69AFE5D6FD979A5D6A3FBAD6F26
+:104FA000FCEF9097219B0F12815298BFA4144B9154
+:104FB000EDD0FB2D33DF177C67055960E5213AD929
+:104FC0002B4A3826C066BDB2FC752C23919D4B3907
+:104FD00070DA42D4022DBE2239AC65CD25AE02B2C4
+:104FE000EDE898AE63F939E7E513057ACD074D345E
+:104FF0007D58ADAE16FB8B1F1C331B82B1A33F50F7
+:105000006FFCA826F95F0B2F09FA81FDDDA7255457
+:10501000D2AAA4F8A82E040F567B621954E8528332
+:10502000095098B2234928D36C2584FC2570F46775
+:1050300018D0B59646BDA09C5895525CB1A0265D8F
+:105040001E36103D303202B398E558717CC878D0D6
+:105050006990A22AC18C644D5F07C9722C46DEB7E5
+:10506000CCF96C046400BF0D88AAD3432D0E2D200B
+:10507000935907AB6DFF5985B37D51D5DE26A7AD9A
+:1050800016B7D3D9761FF4CAD729B9479F18234238
+:10509000240091B10FA17B0679F6F219C916D88FB9
+:1050A000DCF1D5D5895D03F31857C2F41C831132A6
+:1050B000FF4E893DF83056D7CFA4CEE0E61956F61C
+:1050C0001C45BE325BAC3884D2D87B16ABB553E2FC
+:1050D00052D2E818D1EB36665FE24506D0E45FCBEA
+:1050E0003E128F7A39D5F1C7C5030B6157E5AB4343
+:1050F0007674CE043F72EB002956FAEBB323D96BDA
+:105100006518470587AFA938AFF9FD99AB813DEA2E
+:105110009207D9C225B8906F4C7AA09397E487384C
+:10512000FAFA1C645BAED698BDD7ED9EEE327D6D6B
+:10513000104E45C04C06C4DD2BFE6DDFF2CFB246EB
+:10514000AA2A35E83EA8948266759248C7B8997E27
+:10515000B59B47D3BDF1C0007CF46983C670209035
+:105160002FFFF42B1A2DC4068902F22156A1F175E6
+:105170009D0FA163E569EE521AE864396E2135D1BD
+:10518000B780AAD16C804D4B7D9AF362385F71CCA9
+:10519000C4E3745506288C25C609C1B32DA6632D1A
+:1051A0003F7923942E5695ADB166AA6C1D0687A84B
+:1051B0003997DD42BC8B121F5737D2967519B3B0A1
+:1051C000A8B0FA22553DFCC8FBD3F008F2DB76ED1F
+:1051D00036F19547C6716BBFFD1C679E7B9B7A9B22
+:1051E000F9722FD870B75D874D148F5F81DF28FF6C
+:1051F0009E92DB01BD2380B6116A1F91D828AC3A7C
+:105200006061114FCEDCA7632B9CE8FDD0DBEECDB7
+:105210009C59EE971501CEC6B3C1069F1E90B76D7F
+:105220000377B250863AF9969054B7D1E15B7D642A
+:10523000D18A729EE969AA6CD8DF294FD089CB1A2E
+:10524000BFA2BC19CAB43FA28882C7F522B65CC906
+:1052500051ED0D8C338C53246C0AE47E0B30210EFF
+:10526000FC5C61102A9DA826A984509A451FF06114
+:10527000317D06A10EEFE54A42FECFE57A8E29B7D1
+:1052800029813BFC105BE3DED738F73839562D8E89
+:10529000E2B0C62B5B75BB0B61C2E108019D781AB9
+:1052A000FAE2D819EB715B1A1DEC9190AFD3A160B3
+:1052B000A1A51BE0A7A0CA5B9BB578FD90D05A645E
+:1052C00054B7C58752EAD651E17CB4FC063E182695
+:1052D00022694DF21D625636386E8E498A38FFFDBE
+:1052E00058774970DB95255908751033EA38CF8B0C
+:1052F00092D965EE4FFE4ADCBE9978399639F59E13
+:105300005B45F5BEF06F8BE6F86F3FF639C315EEDF
+:10531000CED98AD97FD76C1D48BF2ECEBD24FAEBDB
+:10532000B3EFC824D22AB5D18CC5FC247107EB0594
+:10533000C84AC0AEA86F28A816A5F2EBD34BB29FFF
+:1053400002FC770CC2756549DE1358BA0730ECBF12
+:105350002A30694EFD5E4C213FAE0A33BA903A3D89
+:105360008E8019EC4B2CBCBFD8BC7D715040E9C776
+:1053700089F4C4F0F1C850C9B83693B6431373E941
+:10538000616634D1457822EEF387B78169A7EAFCDC
+:10539000C8967A23B11114B0DC1573CAE69041CCDB
+:1053A00065CD198AD2E1DFFB6C894B8FEAE82C26A8
+:1053B000D390FD3A7BD327F296579E64A679084195
+:1053C00066B8E697A9C6349E50DCD0DD2339A372B7
+:1053D000F61F0A97BBB71538F425922B703A7F2732
+:1053E000BE549521C43D4F176C12D0DA662219D0F5
+:1053F000B7287E224D7303D2D64D7E63092AB85456
+:1054000047E21FA14956828D6384DF87A27DA949A7
+:105410002D9F7F23BA0EB4D26FF692A2705198914D
+:10542000D8324EE6B1D3E0BD8B15B5934AE829ECEE
+:10543000B7C7EB6A6EEE9A64F31493A224755870A2
+:10544000DA5DE9716E316CC42151DECFFE9BB42E62
+:105450007BA09B0DF6FEFD830E7CFD0960F0D4441D
+:1054600036D1A30769C928649F58D15B6F120E50CB
+:105470009F59B2CD4DE60E9FED181DD1516D5B4287
+:105480009D1B39F362FA9DAAF67D7E144E5D52A1F2
+:10549000BFF537E747F5B0A6F75EB0DBA71B6BEEAD
+:1054A0003222B97F61916F611B5530FAA7A405D1F3
+:1054B00010586996AC7AAE2553E486BDA9BC4DFD63
+:1054C000BD8AF7FF24DEE8445DB4083C8318C66E4D
+:1054D00050C29DE86CF104D63104137A5EE4D1D356
+:1054E0005F998E7C91CDBC57A5EE05C1E4E8F08AAA
+:1054F000F6427EEC0EF4C5F3F8B7712C4FD0B7B876
+:10550000280571FF5BB3B41D90BE6CA903BBB34A01
+:10551000FEAC66A7F0F6242FFD680EED2A3C542A57
+:105520003E44C30F52392F7AA96088B206B184561F
+:10553000CBDF47DC1D066835BFE3A21BB4FCB5AB6F
+:10554000E6D804CF1272AFD57759696B984F292DE1
+:10555000696831AF2234F5376202B3FCF2E4C37FED
+:1055600061EC39A1322B54B3BDD4A7B42035B76454
+:10557000AFB9669A3F4DC83F2D15B28F1A91E9B366
+:10558000BB516EA863B17E42AF127ECA26FD31A721
+:105590006DD67094E373CE9E0969989D043F26E40E
+:1055A0004D4210B6552C3A3E7E52BC835BE79C8B35
+:1055B0006456F376C40B860749D3E79690A51F5629
+:1055C000EEF875CEA57F155DAD6C5DD25A94BCB179
+:1055D00032C1A7A1381B1F196150516ABBFEC9F522
+:1055E0007B4EB13D45F27992BF00303CBB145DA5C6
+:1055F0008B6F8AF27114B5E7E133646FC87996C78F
+:105600006520EB023302FA73CDB68565CB39B472EF
+:10561000FA8A00549567658BF51926BF9F607CBD9B
+:105620004725D96069AC369058EB5E860D6A43B168
+:105630007AD08EAD944487FFF79F6EB480E72C66D6
+:10564000B09D124A315618344FB3B149C08D00BDD8
+:1056500024D11843E3C5118F66D0BD817E42C7BAFD
+:1056600045DAAB4E06158B3A590BDBF4DC820C9D08
+:1056700048482651CADFEDC62B4441C52E16E60C1C
+:10568000FECEC518E6B9C59EEE585C3EF2848CCCC1
+:105690002B41BD2DF772B8B6600666B6F133F6BB86
+:1056A000D49E85651451570558FB4F70F5FC85BC99
+:1056B000CEDFEA4FE3C781BF03C255D2B8521D7196
+:1056C00070ED0DEE7172C19F5C473D04CD00E2EAC2
+:1056D0007901825F20789D3D498292D403676F777C
+:1056E000EAAE87EB2B82EFB4ECF3D6D920321A095D
+:1056F0000772D2B8931C96A7EFCDBE9A334C7F7237
+:10570000DF040F6B1BE2E8F6DDD0DFA78162F4C196
+:105710004D20C9091F60321B77D00F164DFACD0BF3
+:10572000043075C6B42D956544EC779E723EC65F15
+:10573000F840D187330496BB37CB8B013F98ECA55B
+:105740005D8219CFD484752600BE3F42CE23456BBF
+:10575000212833CE7600C96EDE2D6814802E805E3F
+:1057600010CD9A0BC58FA65E33D608B5861464FD9E
+:10577000882F51F121FC72529ECC4E5A43A5F792CC
+:105780005190D0568382F88F4D09FB07A81E52987E
+:10579000F4E2D667FAAC7E771EA5667B56731617C1
+:1057A000EB2C4D9878780E839E51860E5A8D83F19E
+:1057B000E60EFAD8CFBC6B77996DFF9CDE32913143
+:1057C000D908783B2F701DAAFD813C82B620A449E0
+:1057D000E44279EC6457E32F764EF872ECBA68D95C
+:1057E0006C8157B9AC831AA5182052ABD35F2E63D6
+:1057F0006BA99F64B0620E5C72098275FA08DAA127
+:10580000677CD6B3B6962BD2FA06FEF6E9D3E46DE2
+:10581000EB2342B0BFAFFE8660E0D081D43634A423
+:10582000F6BFE61FA42BD49A9E9F9598F53BAA3805
+:1058300039CBD98E7EA13B76916C9E5A75E92DB9F4
+:105840004BBE0353BF920C52FAA889F8D78459066D
+:105850003B84E37E503DE9D3315D9A53F51402F465
+:10586000736D3A047F54AB88D5725D6DBFDED8E9A5
+:10587000AF857CCC182B34CF809BFD49B5AF013E62
+:10588000E34684F4960A73009DB0C34067C3D5CD48
+:10589000749C26C09001140808DA40D363F731A045
+:1058A0006D8095A833720850C4E732E747EDE40DE8
+:1058B0001A72C0F4C28179B88EDA5CD26EA37A73A0
+:1058C000E5CEC65A422A1AFF250A7571C833D91780
+:1058D000305AE8888B4FA7C1EA6034B9840B152B86
+:1058E000AD6425862A4738E6B22BE8165C531C3F88
+:1058F0006776C394B0FB3879DC6572B350783AA808
+:10590000D832444AFFE2E4EFF23DD858379764D6E4
+:10591000FFF96B8A8D1A540BD0A6E06451DF14EFA7
+:10592000387CB3CFE719B2BC48ECED5CED2D0985AE
+:10593000DBD825B4A4285FF66505FA5FBFBB6AF81B
+:10594000B2B38E57E227292164E8FA8A06010F0BC9
+:105950007C42BED58EAEE4A48A86255BA56CEE594A
+:105960003664BD41F38A89D22E6D284F9826446251
+:10597000B4E0A141482D52E50AE0B1118B50010479
+:1059800023B4CB62F06D2E790DE505376B1CBA831D
+:105990007B5805C85054494D7B9DD2EDA7C46B1769
+:1059A000CD186027B623742862C49E9ED4D1D088B7
+:1059B000D8DCFD0A2E585E671B7DBE2D8CD99E6AF1
+:1059C00055FA29CC74B61CD313A4FAFA8D8A2F8EFB
+:1059D000A5AE812EBDE92E449F54DA1FD911BB40DC
+:1059E0002C71144E5B7D515E1137F45D0E5E9BF79A
+:1059F0004BF9BC6C66051628757BC8FCEA8F4B8199
+:105A0000A7A681DDDF135E5EC33C85B18F591F09F8
+:105A10000B97B915D42D8B47B5E73104BFC89A5AF7
+:105A2000F559D2B69D86C6A40B405A6DBF0BF2FE47
+:105A30001D1DC3BDF3D3AB31EF44A6C8F5C41F7918
+:105A400024D4A21F0AE7C3A2AD09A0085E78E362CE
+:105A50004AAAC7DEE39DF22BBEE22CB2E2ABDB49E1
+:105A600098E5DD86EB4DFA7F606B40DEDC9A638162
+:105A7000B544BB7D9927446B3EF25D055C1E6A957B
+:105A800069F37C179C8E1F5796FC149F8B7D62DBFD
+:105A900025B662430E056B12007E4390C76B629B76
+:105AA0007159D8E7DEA5656CD54E7AA7D4F448487D
+:105AB000D10AAA51D5DC05ECCB1E27A24ED95B8EAC
+:105AC000FEAA25384F8638C8FF1138D60082E53740
+:105AD00046B813E4E1461FCE9B827EC5AF101B0E75
+:105AE000AD8E3D7703FADEB8ED30DB8923269B913E
+:105AF00035F2C8755608667349D1D4CC7BB4E043FF
+:105B0000278F14E340641A76F99B917CBEC5B12DB2
+:105B10007D1BCD57A1A13631030CD18D1F1F77D32B
+:105B2000D5951992723EBFE257B32489C9EF65D269
+:105B300002BD4CA885602E2C3720F4783AF678C543
+:105B400048247362DD488EA48957B1793D9680124E
+:105B500070F3594917F3970144017E6063D61B2700
+:105B60001CD1E91604BAF8F2B0EA62B05B14248BD7
+:105B700066209F8DA521EA1E31428D789917EA0E85
+:105B80008A92A048D5116C9C1F033139C9D39A1A47
+:105B900099FD051A5B468E5541997A4E761574BA71
+:105BA000D625D5C90F132C0D827CE93D9AFE3D8D7B
+:105BB00042B335586DC3D4CB8F07D79DA7B9F257E1
+:105BC000A7BC1D29914B6C808F6CAE117A980898F8
+:105BD00026B3A7E4E7AE33F55F2FF353C7DF6E3A82
+:105BE000DDBCEDFF97F86361B83AA2D37E36E3617E
+:105BF000221BB3589ECCA475DE229ED32974534138
+:105C0000DBB1680AD6E6FAE734BBCE1F1BC516BD6A
+:105C1000D9C8493A1FDE45DA90EFEC6C4FC07C00E2
+:105C20009B62D1E29CC9157A6575136F13E1681AFE
+:105C30003935F0FD1EA75804E2994A8555A0724CEB
+:105C400098A510AB41B0827005E27BBCB08428748B
+:105C5000DED9B4FD2675FFE75DA0E12D943D0E234E
+:105C60001260C18BA7ACCC0223F56BD731D898B1A9
+:105C7000FE4DDE35632A42AB6DA62ECA577BD1207E
+:105C80007563F85DC626D707A59AE66AB04AD2E8DA
+:105C90008CFDEBE459D50D3CB57DCFEF9AB090A1CA
+:105CA00049C5DCC0F47BEF9C8F79354A353E55E61B
+:105CB000E5DAC55084B1277FB7A245E75DDF8F3DA8
+:105CC000DC52DAB5F770366DFA9DDCF30559E8E081
+:105CD0002C1776790D4326563BA3C6A05646C4ED35
+:105CE000C1435D5C8D0F5DEE78B519AA7E321EC48E
+:105CF00087545D57F2E5F67B9074EF11A3AA90816B
+:105D0000E6637950140AEB9687C71B62A9603F6C63
+:105D10002CEE47928CC211BAFEF971D305803980FE
+:105D200024E278B97EDE748BF19435B83CE50F5BE4
+:105D3000F689EC2DC5C04C4397D1C3736AED761B31
+:105D400013640FF721E6B9F804DD955CDD303C976C
+:105D5000E4094556977517C9A6E432E011B9173A18
+:105D6000E214B8495DDB2374E8439DAF3566075202
+:105D70002AD6100F1A6C70FFAC4640A5C82895FDB6
+:105D800069E53CB58D3A9E2B65CC0483030269C15D
+:105D900002AB724242A3789017188BA103B660C47D
+:105DA0006D05958FC111BC356EC0C59A9C4AB4FF74
+:105DB0001A3B6F87A0E918377262B8578740AE293F
+:105DC00046CE9E6082A56F8453EF05DED9D76C283E
+:105DD000A29488CCB1CDD324598C6536682B6F182A
+:105DE0005DB6442C680A5EB9B501E8A03AD41C94AB
+:105DF0002E6771FF1238D3C47B32CB594A710862C7
+:105E0000AEBA3E1195046CA7C7959A77ABD8F0FD52
+:105E1000B140099CFC7989E7FAA61397A0EF5FB01F
+:105E20002283A2B482E3F6E1E3D8BAB14E4BF10A81
+:105E30000EA7A3047F1AE7A35485600E1A6C79F8A5
+:105E400093DC3728718D1FB4226B07253D0BBBA255
+:105E5000DDEA073314F20BB1623C70C5361672816D
+:105E6000EFFCFFD773E82FA159526E44BBA66EA575
+:105E700049E9DE29689FA3D63E009652456B377DDF
+:105E800011607EB8FC4D25FCFF68C10C72B6CA6774
+:105E9000E4BC70A28A4719B8CA5C2840E434F6FE14
+:105EA000423BE6CA2F2B3C5076BCDEFE575942CF10
+:105EB0007BAD3716CDA2EC8EB09B1B71925D533F2C
+:105EC0006B6066C8624A1750FACFB52516F6674E62
+:105ED00008B6E8843937B7E609F74249D7C44EAC6B
+:105EE000977F0D723E2901972C6615E2D517B66C87
+:105EF0003E80C44323DCBB89E3151FFEDE4074E112
+:105F00004DC002C7BC5D8A1ECB3334C390C6DF05CB
+:105F1000B63FF8C7CEE486670612858394E5D2D1F2
+:105F20005EE93BFAE4E037045BF4AC070208B4CC6A
+:105F3000DE7147BD5C0AC22B4C3604AA78BEAC08A1
+:105F400072E9E22CB9DE02E35896041AD2BB91D072
+:105F5000954FDEEAE6AF89799B8F40D73E840CFDF2
+:105F600002611A80D0AC2AB08D668D49F487A26E8A
+:105F7000D9045328A4938BC7BFBA7A5572008F7681
+:105F8000858F85D798325B1C671118492DE0FED0AC
+:105F900017813DD0D46EE98801A0172F496FCFA992
+:105FA000AB095042D3E21B76DE0119617967F2BF7B
+:105FB0001A4DF789E500FB3820A91EE02583F389F7
+:105FC000DABA9BF8AFCAD7799E2E493E23FE4FE13D
+:105FD000D6793D274439672D2D3747CB40CCFF3B41
+:105FE000E692E14C17FFED9AF1A7060F193391A83D
+:105FF000B01171FF19E160AA05B617D8A375B4D81E
+:106000005BDF22C8B1D8D766B18463D10142822C4C
+:106010007EDAEC5E80BE5E89E163DFD071D184FD03
+:106020000340F19325623FC2CFA546796C51C5E08C
+:1060300070F3EDF2C6D6809ECC3D23D5FE8ABDDA44
+:1060400097D7008A37069AE2784673EF353C3DAF22
+:1060500083070043B8C3019017DEC0251B4AF99798
+:1060600042171E1A4F4A16058FBFFB4150938E9F51
+:10607000CCA2452FE830C815085130B2789D341DA8
+:106080005E8E4F284EB9898C6F8CE38115696496BA
+:106090002B2543E01294624EBAE3892D0A15D323CF
+:1060A00089C60210F69B6F499A05229D0670D07131
+:1060B000FD637259F3236BA4F1875F544B6D47BCAA
+:1060C000A904CA8801435CC0774ABDA931A17C50AC
+:1060D00001A06479E2BAF0F56803C139C5D10203C1
+:1060E000890928A3E8599E33E31916C38B7AFCDE8D
+:1060F00095F20889D73E411C2A799D6923CA9AC71F
+:10610000241E05269A61FD8658737DB543E07E0AFC
+:10611000F9BAB433F2864A2A6E6D39042B777DD0F2
+:10612000DE32A24BDEC910021C4E19F515EF18160F
+:10613000C82662A73AF943FB75F33290E718732B30
+:106140007A6084C249B230C6CE0BA83219F02473EB
+:10615000EB948D3EE97DD52E21806C2FCD8D573C63
+:106160000DB1C7A74C843A30C6E8A957213B1F1D83
+:106170005FE11B46D4FEB08F0198050F71B3265620
+:106180007AD55AC99A1007E52F0DA9FA1533456F2C
+:106190008887710E49A3FC2FF773C1C718B19AAC59
+:1061A00043FC34D9978E46F58703CCDEC9ECA5FBBA
+:1061B000B69BD3CA7C8EC326550DD0BE10E16BD7DB
+:1061C0008B036A4A047498EE9F94ABBF15722F2418
+:1061D0009925127AADCA8E5AD4E7AC0BD669230E34
+:1061E000EDEE58C2A7955427A06F35916D9DB9313A
+:1061F000608172A6E8CC46286F0EE8354F3DDE99E7
+:10620000C509CF95E7D5E8ECF18F3A0DEE032D895E
+:10621000B2E04DB69BF64E6E6CA1DBA20870907D8D
+:10622000925E9FD61C0CCB06CBBCC3C8A19B04CEF0
+:10623000B658F234FB078C4BCFF01E2D05095AC21D
+:1062400040A24E9570B6C19F66ABE482416E04E3F6
+:10625000603F008D6544A249168592D848DF86B319
+:10626000DDCE9F59D75701B5C5F34995EA9E2BF767
+:10627000B4E74EB0DC161DB6E2CF00680DB0F8B141
+:10628000B96E3C610AE365B6DD5A0B623788BD2CF6
+:10629000F0FA8A720D6F81C42075439B01C028D724
+:1062A0001E2156852BAE6BFF1D2F3C753DD6ADC50F
+:1062B000E00C326D76FF6ACFE6EB062DD80DD345A4
+:1062C0004F39B57052698C158152EFB6DCCC6FDB5B
+:1062D00013CAC378E6F486081B31C371CD71A7BD1C
+:1062E0006BBA3CF53C1A7CC8E1FB8CD74AF99F138A
+:1062F00079BABE2582A2531387524FA6DC3C77B5EC
+:1063000054EEE8F9C20922032B5430AF7C0E886B9F
+:10631000204D91D7CE49402EFA62D4D316730C3C4F
+:10632000DCBAA047BE071F2E66D7F480A685165597
+:10633000EC9B40FB59B14839D5A695B78C947C0E9F
+:106340002DBF55322FE149F1A6CE6AFD07DFF9F6E0
+:1063500001F42B90FAAF4FF14763D4958289B77B54
+:106360000992B1FFFFBDC295D2C3113AFA16795412
+:106370002E3AF8A2FE488493A1CE6D5BF24D2526FD
+:1063800040E0F73DE9CC3A78231CFC31D19BD5E2C3
+:10639000928508F600EB62BF56FAE327890FC7AA79
+:1063A0005E9FC1BBDF07EB241F760105C5FB94A2EE
+:1063B000C00F5F357518E5236055C1FD8A9B1359E1
+:1063C0009914EF1540C9340851B8236A06CED01A83
+:1063D000EF6D609B4642BA0CD255318389CD34743F
+:1063E0001E9B4534B312B670338030370E71D4FA29
+:1063F00071351E3504359ECEC0B4BE7C67F37985F9
+:106400006185FA55CC678FDC89D72995C709241691
+:1064100022FEC30A1048D37FFA8ADAD6EE789ED6D7
+:10642000136114C94779AC25F297DBEE52C67AEFB7
+:1064300036757033A5774912DFBBC0C712D37CC550
+:10644000EEF0095A286E5694313601ECFDE84529E4
+:10645000B02B091D2F131F30FB002ED3BB7033420E
+:106460004A0696AC268869715959B0ABBDB2AC00EA
+:10647000D531525F4D6AFD40CEA637DC94B4CA5682
+:10648000158A8FB7C87002D72BFE7B1301D2F2FC9E
+:10649000B7AD4532A5245E9BFA6DEB7531702205D0
+:1064A000C8F252088B33BEE893ED376D51E5206595
+:1064B0004E4C438CF67211126A66598DA7650A5AC2
+:1064C0006EDF73F31C32F261090CA10D8EF0019D99
+:1064D00021166DC7B1B7B8DBE0E5B4244F4AAEFC76
+:1064E0005636DF1055F6F9FF68E8F7B290BF8C49D1
+:1064F000DB99152EBCCFEAC0AE497C488CA266A7BA
+:10650000EAF7B64CF989994737B2BFAED55EC05CA1
+:10651000952F46DE046C7F476946504C56862E9375
+:10652000263E64555A64D4179A19F0AE36AF94D704
+:10653000F31B1184C73275E3879247CF48725144E9
+:106540005C8B397A8E191A12B770B7495BF7D20E85
+:10655000791CDB129BC33ABFEC3A7C56CABD0BC810
+:10656000706FC09B487DB97BA5FFFC2398FE9D8A78
+:10657000B7DD2189287709EEDA6335F9E9DBE292A4
+:10658000FCE439A4B11379DCEF9DE992058E101477
+:1065900087ACC2615EE706E8AF331E998442784457
+:1065A00077621F0B3F07DC36F312A325D83704F3BD
+:1065B000A6289F9896B9D05A4B2E1E68DF38EE77E2
+:1065C000A6BEC21D695D6B88F4928366735A126A17
+:1065D0008294FB963EBBEFF7786CC2BABA727739F9
+:1065E0000607EE8C5DDC5B83CA38F6D0E8BBB77E6D
+:1065F0006464106DF196A03785C2FBCB607C9D7CF6
+:10660000D6E430D36F348AA620116774D648D1FA05
+:1066100006A58F47EB81720E61599351D8FACAB41F
+:106620008CFEC27EEC9C3CC79C6316E67DF5BF15D4
+:106630006A0113B72BD526ACC4D782735BFB175EF8
+:106640004D271E2F7183A02B4EB7ADCA51DF9FA6D9
+:10665000245918B0B651F539D11C2976C6E0B6A137
+:106660003ACF905D91A87D769A283E3A0B38DA3E73
+:106670000B4037CA7210085DD3068EB10482103DFC
+:10668000FA6948D76F456410CF5D9AA29677B2D168
+:106690006AF344F6C36A75A3D11337B77E494B003A
+:1066A0003926195D946F4018C4E6100FD028CB2D01
+:1066B00098EE4AB37447CC50F1781CBDC1F62CEB70
+:1066C00055D9968BAA730C57C5B4BDFE8B8C1B0E87
+:1066D00097B8907C86B13FCB5C62408455B381EA29
+:1066E000E7B2302C9E4149A81E04EA4507A00BEFF3
+:1066F0003CDAF4AE8DFFE36739E2EE75031495C81A
+:10670000BC0DC7E1E662377831BDB2A0BFD2BBA5F0
+:10671000E3888842D8B5EC1BC5243503B3AA6EDEE6
+:10672000301C6F34CF56405C786700C545773B58C6
+:106730007E73C29733AC3A0BABCC7E35F8DE1EBE0F
+:1067400029718A555FD0A2AC151EDDE22B8C8F42D9
+:1067500068BB2FC52D35E692A10618348286BE1B74
+:106760001163BFF4028A1D3286F7AD7DDA690D38F8
+:1067700019ADA881DF2B9F14E741198BD88E6712C2
+:10678000A34A60F09FE1AA3C45A4EB9C35655CB64A
+:106790006C27AA2745DF045B3B98335D3E7C63ABE7
+:1067A00059BA792B62019E4A5E9E65570053C630E6
+:1067B0006716E52C699E4F9D1600024660F8A2827E
+:1067C00038B4784ABB0EECF4532122B81232F3FAF3
+:1067D000CF25E2B02C35A54ACDCC0944AE8044E3A8
+:1067E000BFBD61C22DA11FEDA93C8C489F1BB50800
+:1067F0005BCC6182C7ADAC850A2E47E9937D40270B
+:10680000217D5E3584AD510E646B7CD0010AC84F8A
+:106810000E91504F7837CA700CC1DC61EEDAC2AF0E
+:10682000671F1FE5C1908EE68CF45CB1ACA86621B1
+:10683000E29BE4F76F1BE6816F3B4C4CC5F3CC7CCD
+:106840008290A004EE71FA541189C44BD9BB15454E
+:10685000C2B74B5E9173ED747F085D283EE41CDE89
+:10686000B77D4891C4B191980A1E5168CA4787C044
+:1068700042134056F5179E8AAFE614E7A7F3527508
+:106880001D6862705AD732BC4EC33A64F8305277F2
+:10689000B3BF15DEEF7FBEBB6841CFC22373C46BAD
+:1068A0006A8215EE84D19B63CF19FD54A9C2C84BEF
+:1068B000707AB992DABBEE7FE030B1644D2F062AD0
+:1068C00091DB5BC478DEF452F95CC794DF5F593F1B
+:1068D000FF99A53CCC55785395C41CC8FA5A780B3F
+:1068E000A9C2D83B4E64530A7D079A3A5701344AED
+:1068F00080F93640086D0CFF2F0351107F73B0B73D
+:106900007D90125BFD727275BF489F9D4852386D35
+:10691000F402D51ACC7675C6FCE9C2141CB89300F3
+:10692000F0F5CEAD9DF670975EFF6CCD2154FCC4A2
+:10693000F07C873C1E96ED4A36393E960B11B5D554
+:1069400000753AC0B1F36C508DB5F60CAAB843721D
+:10695000D8DD5CBE967E5FA7865BE4D675E85844BA
+:106960007CC96BF778A9E4A3DEBCC46CD3427BB3CB
+:10697000BCCA219D9E6C9FACD347747E211A0683AE
+:1069800051F6D75F0945119B750E21261B3DA65375
+:106990005D1D69D947C7F994B8686DD532F859209B
+:1069A0004A0B47ED96AECB4CFF53A9A7B1F5A860B3
+:1069B000AAE3BD27E0D756D9137688C8C0C463BE02
+:1069C000180C5BC5F4EDA9BB4B06651A7964A95395
+:1069D000288AE17FAA319798A53DDB158D44D627FB
+:1069E0003675CFA670A9B1487EB9BF25822EEF02B9
+:1069F0003E99956BE47D802C5E2025BD792AFF6849
+:106A0000465CBC2386B34D9CC04FFA772DD46F569D
+:106A1000EB9DE163285CC918C2E6C9F00A2BD76870
+:106A2000B0DA3F628FA63B813A224D1CE4DE9CE740
+:106A3000099DB12C70104A4389E3A94EE635AC4854
+:106A40009D87F334D2DD9E9CDF6E5B3D679A9EF39B
+:106A5000FE9F2C48045E94AF3D825FC3D2F0884213
+:106A60000A28190B082B93667022988E884127C735
+:106A70007ADE5B2B194A68DA12C4250380EF36955B
+:106A8000365C539F8FF52FEA83ED5179866D4A4D21
+:106A90009F1391682C291DE14381F97A2494ABDA84
+:106AA000D0DEF2B80692DCE0A922224FB28A2B99FE
+:106AB000E25C22B034EF4DD45D54EFA3F133602596
+:106AC0008725828C87C83BF1913ED4B22BFCEFDC4A
+:106AD000C312EE710C8F42003D81657C8965A96A05
+:106AE0009C94883415FA71D5B8326052D5716B76A2
+:106AF0009261985547D98F2A3F857E6344BBB1ADDB
+:106B00003D8FD36CC8FFAAE8DF6B385ED2565C5568
+:106B1000F49A0897A78A3B55BFD4EF3FF54EB78349
+:106B200053AAE7B2DB2307F2A3EE8B27C94332E176
+:106B3000981B4233FC4D8AC1E0D1D5531E14A50ADF
+:106B4000725E21E9A8CF3A90592610426AC9FA111B
+:106B50001EBF10EBAA5F9552C40BCD0E71ACE6427E
+:106B6000D68840EF9630302F60B8C7BFA2C503FF6C
+:106B70004218A0E64A7F88DA0F8CB07D56C4676061
+:106B80005A02BA62BEE171586BE6BF855DA7F5BBDC
+:106B90008C11749C64252C80382230752617520481
+:106BA0009A0C7A78A57030C82B19B60EF5B8A112D8
+:106BB0004461EFD58917D1B8968DD3CB22B24DC69B
+:106BC0002C465D1EFD49162BA55FB4DC01EDF56D6D
+:106BD0002E04C3FB1BAAA028EDA58FF68519EEECA9
+:106BE0007BFB1B2B4CE7C94745697F46B367CC87C6
+:106BF000C2157D06A592EE53A50D056DF121587CB9
+:106C0000C184B9099D064F491E3DCB905E184000D6
+:106C10002337F966C35C8E5B096569B06D385859D6
+:106C20000002C6C1251C7C96519590D3481AC05BC2
+:106C30007F51212DCE285A447E38180ECAD52D8575
+:106C40000BDDBC1E3DB9788AB3F5CB74FB8294D0C2
+:106C500031F3653A0300AAB1C490E5AE9006AF7B6C
+:106C6000D673401EA305E822E6BD7D299E844076AA
+:106C7000AA78ACBBEC3BF7FF6E20C1EB1259C2AB5C
+:106C800066E029C91D3349D337F785BDA6A79331DF
+:106C9000B91490FDFDCDBE76DD23F94D1F162DAF45
+:106CA0003B1E292E98F10E8F337FA289C7A1F5755F
+:106CB0006765B600D1E15CC4C657C07257F8402B77
+:106CC000C72530C3905BA87C48BD28C4432D47C866
+:106CD0002143AFAF76C435F4D973E482722747EB12
+:106CE000738680E78D3E505CCE7CB3659E9ECB97CD
+:106CF000F1C00947AC212394C9E0F32D08C93F3AFC
+:106D0000FF797FAA55B7FDC48383AE9AD4A9F5FB5A
+:106D1000B19657DCE476566E403D7BB074C2658513
+:106D20008198DD81A80417F695C31913B9BD4FEBFF
+:106D3000F1CF6723CC6F784DE9B33EFC5F4EC52F92
+:106D4000E32C3C68FBA977A4A78E0260DEBC170485
+:106D500055A9FFC2E62D96AEDF6E314AEBD89BA750
+:106D60007462275F63DDBA7290535E12D0505A444A
+:106D70003AD65DDDA1D6E7DF8C5E0AD624F828B0CE
+:106D8000EC396AEFFB08DBCA87C5B3C1F3040835E9
+:106D9000673EC5BA8773F808951FCEE53191BE2FBF
+:106DA000974CD9149997E3C563945B149F68365741
+:106DB000E1CE1069F0CB46F31B570C4BB0607AFA6A
+:106DC000A1AF3BE0FAD5ECE1F768C339C3F31F206C
+:106DD000C0578E0BA3DB8D24B22DA7A3360565B05B
+:106DE00082131E92C245048C1C7B9F5F5FB5982363
+:106DF00004DDAAD166BED289CBD6010171F6E318B3
+:106E000085727D2383AE59A18888541E30F1181EE7
+:106E100038A437119380EAAA9AD2A99A6AD0CFC926
+:106E20000C3F655AED44AE8AB3B666802F620BDB29
+:106E30001F12FFF13F9DEEE7DEFE8B68EDFD56ABC6
+:106E40009013AAE1CF16B5AC94BB9F8BE67DEAB850
+:106E50007DD5887B3B69CC9352C7FBAF4C9BD1243B
+:106E6000CA35480CA6B4CE98AD873C168FCBA24A43
+:106E7000CB790C6991740B62459A9397AF0A76842B
+:106E8000EB843C5B0EBA607F619A390962F7CE47AA
+:106E9000D3F93DC0C90654589F56D121BB445898D8
+:106EA000B6C6316FE4CDD46615E737BE5B9276DCAB
+:106EB00045BAF7872EA315F858BF342D721140FB41
+:106EC000AEAA42B7F8FB8CF8768D6B9CE4A18C16C9
+:106ED00044E1E0A9BBA0D6ECF94F766F1D0DD2F7C7
+:106EE000CD7A94BA69E1FA410531A9DA0BF68870D6
+:106EF0009116E9BBA2497B9505887BCD54D4C9A7DF
+:106F00009389B0B063B7645F11613610852C86AF8A
+:106F1000B91474BE80C85439895EA56BB1E9AAB9A9
+:106F200006BA90E042FB2D5DB8BE4DB23767AD5B4F
+:106F30004E069F582D180BF973AEADD09C2B706A7E
+:106F40002F6367C73A97993E8B2EB996D78987DB0F
+:106F5000A813287EC09156050F4A8A4B661D505CC7
+:106F6000620FA6B16C50FF4C42BC6EED206703B6B9
+:106F7000260C4666BF21CA5B864CF9506A18636CC2
+:106F80000DDDD050690CA196D0A3B6845221A31870
+:106F9000F75A2DDB490D0050B72F8A2BD94D7A9F18
+:106FA000A40346ED9223631AFE2C9FC11315D369E7
+:106FB00016CE86A25D48F1E04C2C38A902B38E9221
+:106FC00001C9A63952FA2F374A3583CDD9BD3BAB1B
+:106FD0007FBBAC85A82D4E78BB525D2BD49803AFF8
+:106FE000AF08B6264D7ACDA2023E8D20B2DEF9B4AE
+:106FF00027F4ADECD982C7722CF461322ADBA723C7
+:1070000007E93EFC396A9BA10DD5BE96705B4185B0
+:107010001CF8DA081A3E1F22459CFECA061108B762
+:107020002C441DD080555E9205BFC13A48A7F66832
+:107030007FD967CD23A52F1E775BB1287A152AAF9C
+:107040007A5B7B69327C2B598F596512B12CBE5CFF
+:10705000DBF387148C14F1A303AEB022E44763661C
+:10706000F78DB60D52F19662837FC277665BDDBC09
+:1070700053BC523B621097633BC37A9B1418869AA9
+:107080003614A935B6B6CD34431AC1569395415539
+:10709000C5910855B74303C5DD9139ACF6B7033048
+:1070A0001EF78526323F1A258212831348AE619758
+:1070B000066F691D098359F5084DA607812AA9D3D2
+:1070C000DCF4138A18003D238C7660C721EA450D55
+:1070D000C7AC7AFB8C5A56BF36963E47F3CF969E86
+:1070E000BE58D0A2253D7EB7C56CEF91AE2F39B802
+:1070F000EF25D8F1233411221D3301BC88C033534E
+:10710000DA1D8DC9EC32E61DD15A735B66BC6D4B3E
+:10711000F92743DBE9C1AA88E33DF8D6D338BC0799
+:10712000E24BE0C1C0B8B7E0373AFB1349B3534371
+:10713000B81BBBB79DC11FE61FCB5C0F4DE43A1CCB
+:1071400031BDAD2692832208A01B194FD3E0F9E28E
+:107150008D0655FF1EE0835D54E25084E198F249AC
+:1071600050CC33EB4C74DF77B63D59F8DE1C5EF043
+:10717000E15FF1FD020BA3EAF34E8001977479AB56
+:107180003992AB67816166E272F2EB72730DB4AC57
+:107190001A99E6BB19B8ABA83A513242CCC6C32DF6
+:1071A0004EB87FB58F48D2F72C0F10A817BA51F5FB
+:1071B000FE1BCFDCDB902D9092A4605C9408D0EA9B
+:1071C000B40FA069B0A48C6D38936EAF43BAC07190
+:1071D00057A1FE365E90B7F3FC1832DE4C21B94958
+:1071E00023AC209A1667ED22752D6471C85FB50433
+:1071F000D670C454C172A9605507A2DEB517834585
+:107200004B800D119E87338CDD858F479F962A78A2
+:10721000980230E6A3CF99D31A803A1AD24737FDA5
+:10722000E2841F2C1DEE7698177ADBEB594A264133
+:10723000CB98BA174DBC59EAFD8470519371DBCBE2
+:107240005C70CB0BA50802BA01E0189DC392CF7108
+:107250007D2E1EF48AA5B6DEF6E4E66C1BEADE801F
+:10726000371E5CC55C58953A688D7F58CFA3ABA795
+:10727000C429A2564CEB6EFD4862D84362026148B5
+:1072800042D29C7B08BBAD77B6FE247A761DF723ED
+:10729000C28AF7928506DFFCEE4E8CAB4F6D3756F7
+:1072A000913E7D47B4BAA0A98DC8C67E98E2C6A714
+:1072B0002E3948783E501C727A7C181F51370E8F39
+:1072C000185B717F6CB575B0EFC623F38DB8B6E966
+:1072D0005EBE6204BB8543ADB19024DDE96F745A94
+:1072E000DCFEA6298F76E85C931C2926CABCC6263C
+:1072F0008BBA9AFCA6870D67C8C339B9C3D260E2BE
+:107300000C39773A5A04E2EED3228092B9C1CBD33A
+:1073100019439460CE8E1E6B989CC772541CB32A7E
+:107320008F68C9F78F683FE8C12295C68E52C34364
+:1073300069A6F76E4E605BCA0ED8EB60BEC8E02D42
+:107340005A196D5EF887C392AAF9AC4FA400712256
+:10735000D0F0800B05DFB1CAA6848D1D2898A0143B
+:10736000B29CBF0F1BFC867CC67EB26075CA499575
+:107370001734160B498E71B2A9F63E22019B5FFCB1
+:1073800077F655D9C8B90ECFFD79D62D6276F306BA
+:10739000D55D0B11D43C35A104BB410B37A81612A7
+:1073A000BED22924EB1720F1C439625D41F3FC5CA5
+:1073B000F90AD9C56F9AD453093372A43DDE7F60B0
+:1073C00017946CAADBC52E830D011A00A4EB68E8A4
+:1073D000FCBB5E56EB68FE0C71BF45B1DAB3BE363E
+:1073E000F1E0320043B392CEC14BE4D147E4C7553C
+:1073F000E0EDB36B9FD60AD2E3EE15B984F0E9272E
+:107400005492578F2C4496D486439FB5F3663451DB
+:10741000C778EFFF853D2363B0B84E364041C8FFC3
+:10742000F1D133FC4713B5657C8BA60F0C253BF6D9
+:107430004CB54CED07EDB29892E5436C487584F37A
+:107440009991D3B3B3E4B1AAB69CB215E2B49093C8
+:10745000E0BD309B57462814089DE34D6F20BF08C0
+:1074600015143DAEB3F5EB3A1B21747657A71E51A8
+:107470007CB95316EB7E35153570E3058B7D61C302
+:107480003766CBF6FE59D76A7008472025E1197A8E
+:107490007570C794EF17A4562DDA0601780880F0AE
+:1074A00059134051D75251C4E99B0EA16EB5849136
+:1074B0005E87841D303855EED80157D437D7D0EBCE
+:1074C00090BE8E5EEAF6134947F968412562959FA2
+:1074D0002EF13DF0DE6BF8BFCE868EBA5A615907A9
+:1074E00093C7263148D8131509CEE2E0935B9A473B
+:1074F00042BB7B5D4137359F579DAD0212D37AF574
+:10750000C60B7C1D6905CAE2D4F70F95FE126348CD
+:107510001C1265D1581B6F93352669B64455C406B5
+:10752000BCE309EC3970C4C4AF95BB0768FF91D1C7
+:10753000B07DB48E094C41B57115D55532F223A9F1
+:10754000C33A6922F51B58521B9B93E5946685F15B
+:10755000ACC78C81FCFAD11CCB251258153AA7F97F
+:10756000EB345860AAC2C1250D6D1A7C32A91739B7
+:107570001EFED592ECD160F505CB17E0AF80AA389E
+:1075800078DC6144550466F42AFB0FDF1339E739D0
+:107590009CB25E78E1FCBD613736C471826D01300A
+:1075A00069E5815292A1083E7DC0B46BDDF1FD3BDF
+:1075B00049A10A7CF8E6CED673277DC13DB4E05AD6
+:1075C0004C6DD02CE3BBBD5ECFDDB5AA53639C49A7
+:1075D000BD0BA95D98B2D83915CBF545998FB78900
+:1075E000C7495060B52061583B04DCB04FA9AA766A
+:1075F000786B3ED8FCAA6F48C28A1313252704C8AB
+:1076000015C425602137C29AA8CED115407F87883E
+:107610006AB3DAEAF0A11D6FD0C4D4E23B5A2CC79A
+:1076200022CC4B69C6556C15AF18B7EBB42307E4F1
+:10763000A7572E3DF1A3E37CD489375765ECA7DE2D
+:107640002A6B2B6B8AF53A40BB653717D85CB7FBC2
+:10765000F0B4DAD8BEC4CE59E875965AB60FB75C06
+:107660006D7B458023E0F29C71C75EFBBE4863449E
+:10767000E1C25164CF4519F8FB25CC3316E72F4101
+:10768000772A1F6F73B3F7ED0BB0C669ACC3BA6945
+:10769000AA7C6EFCABE0081370B5E1431E081F2006
+:1076A0004C16B6CAAA3F899140D3EEEC612E8BDF0F
+:1076B000BCEBF2BEA683590C28559A4CCFF50C7F33
+:1076C000A7E2E56C63E856BC2F9297FDA3F53A005C
+:1076D0002AF567EF387AE2D91110D09A4AA7974E67
+:1076E0009554723DCBDAA6B68D45E47D43B093D573
+:1076F0005513206528755E2D5D23C5F72B83D5A511
+:10770000DDE30FD673DE7EE71AFBE90004733C224B
+:10771000F1ADA88DEC810564E79220B878006DFF8B
+:10772000D8A6F349624C9B11386E003F0995E86971
+:107730002DB2696718F4B10312FDEB15D4FA560C9B
+:10774000BE18E5ADC66DFE624DB03B0E615ACF1955
+:10775000EF3D6572AB318A046F441B8D9C7E29DC42
+:10776000D3665266E085728E842DE843A240996A02
+:107770000D9B25748B7C746DB78077D01AF4AE3175
+:10778000C08528D77D4E84716B4AF587E846510F36
+:107790004A962FE4C48735B6F9520FFD0B65B398AE
+:1077A0006A825AC2D07C9E8AC900DB643B2AB164DB
+:1077B0009E86D66121BD14E71960068A068FC70D23
+:1077C0001A3B67EB91E6F02A6F56693041CD98BDC0
+:1077D000C07E25C8F04CD98F4B0BFD68F819A87EE8
+:1077E0002E2A57DC5DFCEED416E7105C1B2E306BA6
+:1077F0001860F1300784019833F76FFD4029E709DD
+:1078000027F3C088C6433D99D6747B3E2D3D135A5D
+:10781000A0C51C8AAF72CD7F6A16022B70DA2E5C6F
+:107820005AA614E47EF046B185CFC846F2990AD62E
+:107830001861C95B8276837C1A8C2F1CF45E6C2BDA
+:10784000FBF6DFADBF1C978D2969EF7CE4E113A344
+:107850007C852E39932B8D415026C2625786870E28
+:10786000BF6FC5462BACC24C9A9E6AC4AA47B59856
+:10787000BF6BFB5AB6ED952F07F35AE858FA4870DC
+:1078800029956035CD74E7739711F98C49125C9294
+:10789000D3608702A58E5C25A3CC3B44A1DDA0B7B5
+:1078A000416DDCD9EA238C118EB31C980E80DA94DA
+:1078B00002A03A57953F1F07E8703BE2EBC3A33B9A
+:1078C000DC293FFE141C4EC1AB636D8E22958FD90F
+:1078D0007A4A2443610D7DC920E6460C5371B8AD48
+:1078E000811A4E89230A0C6EE05B423DDA71F4473F
+:1078F000164241BDB43A4EE1728AB61D0DCD174B0A
+:10790000E5C4ABAB712156EABC589714E8135A266C
+:107910001F0D0B3A576A2CE34E232D32A92AE74557
+:10792000D6D27F27D173FE627BC871BD44608515B6
+:10793000418BB6D35BA6C1E77378543E8D8349E093
+:10794000A83A48F3581E1B91149B91F7C81319D6F7
+:107950001D7156477A79FA8B2F8B42B8B0B678A44E
+:107960000544A3A369DD41395DE6747B3232AF5B28
+:107970008319678B2F274E5E3349DCB2418BAB05F1
+:107980003850747B777DE79F7B67929EB804BA6717
+:1079900074E962E693826DB53C00D83A8E0BE15EE5
+:1079A000D8756EBEED0BB2E36AEBBE80DE2BD19DC7
+:1079B0008780931FF01EB8E4C5AD4F711F5D09DAD3
+:1079C0003727AB4BC5351432DDEEC26B14E028828D
+:1079D0003AC6487AE8915816B557AE52A23FF738E2
+:1079E00028D2C2B11785945B7900E9F638A734B97B
+:1079F00090DE1304B17FA72D8D5766E030FFB2787B
+:107A0000390CF37C53F342322EE8004368E9EBC5AE
+:107A1000A265EAD4E991CC43E5C4D203C94DE6F5A9
+:107A200039FEB36EF0623A607A458DFB3F0CA98D4A
+:107A3000B70BB9994BB5C4CFD0A60D7029D7DE6F5F
+:107A400076ADFFFB0C93C89D5CA579E1FF76B2B5DE
+:107A50003CC10F2F696BEFE486003A980162A47174
+:107A60006E894E4A7BC1EDCC826A4AA6ACD842B040
+:107A7000A0CB5F8ADD0FD6A4465E80C942AEBB674D
+:107A800086AB786CF088BC8BD89B4C198BEEF7C01A
+:107A900081854F25FA28044A9CF5AC67FC29AB3454
+:107AA000898DCD899EF6205F4D5A507A195737D768
+:107AB0000CA46E75540AEDE970E841DF10505333A1
+:107AC00070E85F1E7A68A4D8133FFBAA83D329DB32
+:107AD000A7602A4BB1E5826219D03F1045A3CEE3DF
+:107AE000C2B44F1D6B4B0B5CBE8F4E8273F31EF303
+:107AF0004D9207D1D46B98FA1DCBC2E8ADD3FB6190
+:107B00005F6429FE21F60EA960E3BBFDA150478505
+:107B1000B81F58677A3483F1292551963268A2102C
+:107B200091C614D8B0502C93284FBF0AEACE5FA25A
+:107B30005217679AE3ED9F7A3DDBB46F3462F372BC
+:107B40007DF78865E5F5989ADA023DA81BD619F706
+:107B5000236EC318C8BD871B25ECF55347712BEF67
+:107B6000C1FEFCA901CC2A2232246FD7E93751AAE1
+:107B70004BD430CA897E7D21B7DF2B108ED23CAD2D
+:107B80003DAC8B57A01D47118CB4FF96ADB6D362A8
+:107B900091E640EB7E525E96E964AD5301BF84B03E
+:107BA00021445EC5B31F114B8CAEDB708037BB3EEA
+:107BB000A7D14E3B5117646FC685D9713B2A60E04F
+:107BC0007E84600A8A975D53E364D5FC2AAF822FD6
+:107BD00069E6274F1E1697906893F893D2BAEA0782
+:107BE00007B30FF37D5906015CEDE20A8EA2FDE5B5
+:107BF0003A113BADA08954C03032B6A55EAB74C11A
+:107C000098A6B8258D0F878C849C38FE30C7825586
+:107C1000F73ABA5DA24D9A8868C408487DD8B4FB8B
+:107C20002ACE163D9C8D3B0B32AC3A6758D79D3817
+:107C3000394574ADCCA7E23B2694B7A07F88B8B392
+:107C40001B0FCA69D18913D195F02AF2BD63EA24CA
+:107C500080C3AD750C58324EDFCC1AEFE8D5D28E0A
+:107C6000494764A7820CD2851FE5852FDEB704F152
+:107C7000DBF2E27D062AAE3C0A70F70C92E863B4B0
+:107C8000CB1CBBD15BC3D30FCDAA0A1E071C4FA3CD
+:107C9000F06A051584E95ABD3AAC979B7C08630CE1
+:107CA00096E86F78C641245E23DC945079045ADB51
+:107CB000190A653895FFACE5E17445348708555AD3
+:107CC0001833A854A487C14919F4AFCAE5036EA7B5
+:107CD000066D59146FA960B83833490E09D378F985
+:107CE000D0FFA175B4F2CA2EEE1D35BF1239F3488C
+:107CF00049E2111CDB24C4D6683BA71FAC0AFEC4B2
+:107D0000BAA1E9C8A668945F8AFFF434614B7E7912
+:107D10001C37BE98D6DA098931E895B6E314984243
+:107D20009946123DD29365D378ABEA695BC730F9C7
+:107D30001AB6612166CBB2909B7C7E6B498DA36C99
+:107D40003A21FD58EC907340F8A92059286A5D1F2C
+:107D50007E7254D53FCBDC046D070DF8EA39928969
+:107D6000D898B83A9CD6625A9B7F62D0CCAA8557E5
+:107D700018EE19CBA1EFF5C9BF9BF28015E3900473
+:107D80008B8AE12E1F216C1121B3055CA1334F18A2
+:107D9000FF7654914B5B6E5313AA7016CE995A3DE1
+:107DA00074A6841DC4B1BA140858F2BA9CAA3E182D
+:107DB00095B5221F65F1CED0E2B6E5C26A530998A7
+:107DC0004C14A924CB3610704FF113DD698BC7EF2B
+:107DD000E78501E3E27B666E3C9D5054B42D2DFB9C
+:107DE000D991724E05E8535E95DB71AD61B7FB66C4
+:107DF0009BF914996E5A77A9A294C0DF96E56C3A64
+:107E0000CDDF41A77CF8BA27689250F96321B12FE2
+:107E1000BEADBA3536D5605225C40E211DEFBD5218
+:107E2000B77CD3F6C8F4800B0C139970E69E95B618
+:107E3000BEF4EC14FAA4B056639775CBCFD3C13E11
+:107E400080A67C14F4B4A8DC0752CC39274D7A3ACA
+:107E500034FC406FB542B3F78D86F237229E94B85A
+:107E6000E7666E9E4EB5C1A8F9E44FDCBFF535DA82
+:107E700069B2AE867EC6AF181420A5AAE8A087A076
+:107E8000DBBB2758C44BC9D056090CCEF76F57F44B
+:107E90008ED886EC7D4621298F1286E04CD68FD86D
+:107EA0003C4C6F176DF7E2A8FA6D30BBA2DA4C4478
+:107EB0007475D1AA985A651BE26BA454D4121BAFF7
+:107EC000A2EFEE5347A2CF7BCF82B4590587CBF404
+:107ED000086069E7886EFA189295021D9B284AD9B6
+:107EE00059D476D31103AF9E60E797791BD4AA5972
+:107EF000AB72279803DA6171D6F547770EFA0490D2
+:107F0000E4588E824F6C68291AFCC58C7586BD4179
+:107F100034A07AECEC7FFFE5E4D0C316058166C798
+:107F2000DAA6EF619C7A595DFF5C2FE48E76695882
+:107F30004C694E3E6AB0F36C881003E128F779C5AE
+:107F4000D141BF0A51A97BD15530D5366C9F7E9A5D
+:107F5000F0F222A113DD3CB026A430915044C56A52
+:107F600078103CDB4EC12F1991E723BDA55D0EDFD4
+:107F700069661DD48CAD1A860C2E0120012C206B55
+:107F800026CE7591D167644D9B76431ABF53926F8D
+:107F90003DC4463AD272357D05B09D1C203C48FC5C
+:107FA000CE5136D8CD7C26B0415E8263729E83E08E
+:107FB0004E36A76A75C7C954579BD04CE43BA09A6C
+:107FC000DB0F9F2760ED37C583739F64622DF7B386
+:107FD0002958021263C64C83D7EF3B4DBD64BE885F
+:107FE000CC657ECDC379C15DE495BE96B94EF0D720
+:107FF00085FE4FB0052E8926344034B3B150D08F62
+:10800000EA91E002CE49D60B75B39CED785986AA69
+:10801000719F23E8D2FC03B5765EEE8B9FC33126B9
+:10802000701AAB2CCED837298E562AFEBFAF56DE3B
+:10803000E87DE0A124D20B6A778B9F26C0F0412314
+:1080400063E9039376F9581A7C1F370705A84A6439
+:10805000D7F30AE848701C1CEAF510B522C2880C58
+:10806000863965BCDEA22D329D8640DE77955FDCC9
+:10807000A60F439CD7A37196F474758CA818C546B7
+:10808000E7D4026D718B107C316ABA5067A76C140B
+:10809000468F602B6F3BFABBB7797A7D8B5D3F2AA9
+:1080A0005DAE541F46179EBCD257E77537F7CE1703
+:1080B00059CAE1B3EE6F96B155D7AEC5C62B9F3BFB
+:1080C000D42706EA5A26C9D5D588DFEE831236C8EA
+:1080D0001189CFD8FBAB4947CFDB9C1E8ACD7FD817
+:1080E00089241EC6C297B5AB1BA59CDD25AB17C85E
+:1080F00005D2E93DA0AE157AA4B4D2034272ED6E6A
+:10810000A5D682DABAA3F43BBF08734A4BDDD82F59
+:10811000D09B35E7AADC74C5654E491C7BF6E70B9E
+:1081200059CF27C051E1877603BB15B20A2D8DE3E5
+:108130004C4BDA0480AE6EBABA0883F65C3D513C13
+:10814000D78F356F8C6CEA4F21E1756CE0D37400EA
+:10815000343043955BFA1CFDACA76D072F8D627818
+:1081600087632FE8787C8F7ABA6E1FF5BBD1830BBB
+:10817000941188034628F6AB4C5A697A5ADE7B0F75
+:10818000D1949EF83E687E686392B10084B43F69E2
+:108190009052FF28792DE6E3C45D79A726A7BE217A
+:1081A000D745F945C80E9AB522022AB62BCF5704F7
+:1081B000A4FCA51358AC8FE720FE89C4EF04594BEB
+:1081C000EA046FEC0E1CBF8F358212D5163809C237
+:1081D0003792100798473D1773C13FAB7A2DFC4388
+:1081E000A0FDEDF1AA01C45BDE282639178EE61149
+:1081F0004E6E7A2867CF6DFC360D0E04808A87C1DB
+:108200006F6DA64A546D1D65684B1301CC46872FD0
+:108210002321AD413FDEF090C8480C6BA051D8320D
+:108220008CFE8BF320EAB279C52D8A26FD56AAA1D1
+:10823000E4CAABD08F986AB61F9E0019A40564B932
+:10824000951DBA4901C5D47835C6D58B84E453A0B1
+:10825000110EB7E2886C7201C329E8DAE8901405C0
+:1082600084679E5F20161A2F8CFCD3035C40CEC51A
+:10827000DE2C92F91520CE4944AD57F2957AC4B55B
+:1082800008A8E45D50C1DFD7507961AB8E8E50E411
+:1082900025CBFF0347E97CB17AF82CE79B7EBB2115
+:1082A0000E5599D75CCD917FDAC0F710B77FB82310
+:1082B000ECF21E545C4C1309D1A9E23382A4355F61
+:1082C000791E43C7B8913ED7A5912800D0ECD1CBF9
+:1082D00052E54F2EC0770CD09C79F2038A3528AF37
+:1082E000C0B5B5ACD5F2FE672C8113257734E30415
+:1082F000F009C44D7D6BC6E760A1EC7CFF39F3301B
+:10830000DEAA2D5B3706294C4A0EC5743786290430
+:108310008F52640AAABB61D6420FCE5C033C7DBC7F
+:10832000F8C56F322EFF73C1AB6136B90FAA76ED77
+:1083300022CECB2C066441A20A354C6D966FAE124C
+:108340001A4E338062371F765CD64BDC86BDEE2733
+:108350002FA5601E62F08609A23FD3D82A80B8F606
+:10836000B4EDFCA100456598BBCA30B06B79895863
+:108370006A7892E47E90F729501CC0E5E982746027
+:10838000E1D768FC00FCCBB6AF0E30012E5DC7CA4A
+:1083900086F9D4EB9DE959956FEAEBF39D4D0E23D9
+:1083A000CE2B6412804E2D9A34F2B92E42BC1B02A1
+:1083B00025965E0DA268122476727D08FAC555AD29
+:1083C0007DC5DE6DB0E4AFE57121E987903EA22F57
+:1083D000DA15EC20B7AAB1B7C74C47DB6026899302
+:1083E00075397049CC8A6CFCFF6D4D0BDCC1C8EA55
+:1083F000057D51FAAD0A1DE14A7A7B37A7F470B8C2
+:1084000096DFBF803A4F64AA016B0DA4E48141A5B9
+:10841000797BCA12A5C4B575EA59C72815713D19EB
+:108420005908A5C613A9C9B568411A48E0DBFCF88C
+:1084300046FB59F8FDAA617E9E0BB7B7CAADB6DB05
+:108440009DA7E5AD52E48C508FC04C16354396BBCA
+:10845000B97D604F9E540BC002F99983C8A4ED11F9
+:10846000D716D3BBB4A113098B9452628F9A6BA613
+:10847000F4FB5ADD6356F83C8E8DB2810745346BB0
+:10848000AAC746ED5B5BD11109F83FE0C631F0A900
+:10849000A0C73A5FD79AC0DDAA587C9F9414A60A59
+:1084A000D8B5580CBD29AE1AEFE4FE42111BD39784
+:1084B0002D108CC627D6A13D8360550687D1EFF9D4
+:1084C0004F5B0EE930C3B89BCF675EA2E0922716E0
+:1084D000E3E6E41920E88AEE73CAAD3390AC2F0AC4
+:1084E000FB3DFF07230CBEB413F8A30DA2078ABD02
+:1084F000BC95F5FB7FADDB792E285025FCAB0776CC
+:108500000AE0ED324C21B82F8504975834FD76D718
+:10851000AA71FDA9FAD0A221A8AE50D33F803C5D3C
+:10852000AA9DBAB84AF017103C3429BEA95C5E6E09
+:1085300099CD09354771F055E5F21277828327F915
+:108540000076645720380C2D33FE960E03DA20C9CE
+:10855000A04B06EA992D0BACD3AB1585FCA513688F
+:108560004167E251178B37A9E80A7ACBFB26B19510
+:10857000E7D832C4595DEF61AC08E51934C3BD6278
+:108580005C008F0E043F348C871B98CC9D55F84DB2
+:1085900048914CF08E086CE2E1ADEBC2F859CB4348
+:1085A00079B345C125A4E19507FA775F55E30D43FB
+:1085B000DFD36FF2D208373BD888F4AA36F47C6A4E
+:1085C00029DBC1AF777BD95F536E2CD2C863DD291D
+:1085D00076EB0DF83BF449BBCA864678C370583633
+:1085E00021C928CD818A841FC2F444F4188B0DC997
+:1085F0005F81C0E64F2DFFEE36A5848E7D0FA1A4CE
+:10860000CBC09BF1F09187849BDEC89F9F8A538FDC
+:10861000018E4BCFEBEFA0A65295B1F799FF328CAC
+:10862000741EE58EE74E0038A7E6910D14E51C791F
+:108630002E92A61A1560B7CE0BDE72FCACDC581D6C
+:10864000A9DB510D3B7203FC995EAEBE2A4474FC5B
+:108650009DDA470768BE05B90F8671CB66C9AB5B6B
+:10866000CD20C0E263570322F8FEDF68883115C9C8
+:1086700025016C2633195FC3ECFE7AB514B2D08D98
+:108680001345BE5F56FDF5ED98D78B3A4FFA7CE463
+:108690007872986099B085F8DDD5F93CCF79274399
+:1086A000A3B5BBA5D0EB0473C37F2333134EE09D6A
+:1086B00085C38F2C00D350D42427D05F2E99A41BC0
+:1086C0009EDF6FC54655C4220E06958EF55CC7F930
+:1086D0009AC8EB7A8FACA1D761CD800480AF6221BC
+:1086E000720A584000731D0C4DECACF7B83E4CB606
+:1086F00000F9D7D89B98DB15DC1FF3B8EB7B3CCF98
+:108700005308E48DD4F553628BB6839582D0CF9B0A
+:108710009E983DE304B5A259FAE4BA182D8C5B9BF0
+:108720001999A718F77588D820DE7543A64197D9FF
+:10873000A9A107E08534DEA0684090986C81AF7DE8
+:10874000794CD3D5CCFCF739D22A4CC7B16BFD9408
+:10875000B7E9CB3B538A93C15FBBF1FBA1A7C732FB
+:10876000F121E5FD7434DD9EA9C83AB6B52CB51BE0
+:108770001196A83A88557509173B15D6A95947107F
+:108780002A38EC781EFCF0BCD2AD689D71EE38D270
+:108790003DDBEAC87872844AD69D84EB2ED7BDF9BA
+:1087A00001B58605497D273F26DA474EFCB122D127
+:1087B000097D314EC5B2868B1306EE5CE7A50FFC32
+:1087C00023706D5B5BE868A5B2A3918B3E33BEC29C
+:1087D000A012671A3A530015CA201923C5C705DB32
+:1087E0003B92F0051699AEA716B0C770509D6C2E3F
+:1087F000B4E462A535C7B871D5E3890A867F8B6A70
+:10880000990153208C59FA62D99589AFCC7B5E329D
+:10881000CD089CAA834E099BE7FA96834F077941BE
+:108820005DA7924AEC7DFF6086FBF165F10DD4A255
+:10883000259864EAB18CC9EC8AAB3D8DE04C544676
+:10884000EAD171EA89466C3BB65A1DE832FCA07841
+:10885000A479C76643F483A9F3C57933CFC0296DE2
+:10886000D2DE72C58722A8E10F8927BD29DF2276D3
+:10887000049BB00882618DEE896EA0FAE55C04F875
+:10888000C004DF5EB146447C6A5854A7EE1B2A3808
+:10889000FA5FB0EBC96789D4049A46C9104F2B43DD
+:1088A0002E6C360AA0BCD882B984E2BF00440741CE
+:1088B000FCCD272EAEADCDB72C3850A6CB79F860C5
+:1088C000ADCB672497E0226AC58D2B48A7DBAC3679
+:1088D00089E47763A646EF3007060F27AE06816A64
+:1088E00020FE504D704E00134CEB0AAA6E7B1A729C
+:1088F00094C1C93910EC12A9A15B1D58DD37892A32
+:10890000ADEA2A784AAA88847E12C6ECF1D5C20163
+:108910000ADAA19C08FFBF48A40592658BEB52F9C7
+:1089200077381BA5F8052EE1DB328951A3ECB6D7C9
+:108930008840734E0C3C4A45D37C3F017E1C000AA4
+:108940009A0AFCC14F3D4E749FAB67280F613731C7
+:1089500048A83D735C9A1E41E2FEDC7B336D0C6FD0
+:10896000E0EE8CA2E5A7498D43639375605ECE2A45
+:10897000825603D884AF3AB2A5A5D914A279061EAF
+:108980008F3D45CBE0895EAE0FF9C208B5C5390F02
+:10899000E8445CC1118C38D51A2C67F63A30FCAA31
+:1089A0008876ADFC6C09CAF4B98B3ECF87271A5D77
+:1089B0003DF0BACC7A07D50125A14D1F413EFB5BA6
+:1089C000B0377FD7F70925D807F073EA5557ECC5BC
+:1089D000A871C24C2E4EC97692EBA91E3989EB764E
+:1089E000ED227DEFBBC72ADE92D96D4270977C7174
+:1089F00023F8BD4DA258D4E55556696F8498621886
+:108A00002D51166A1E4D12786186263CDF56E332E0
+:108A10007B31D7091C1E94A334F0228EB1D2552984
+:108A2000C4C2A951C50488A9AB1EBA4E3E3EAF5C74
+:108A3000C8BD4759FEB29BF0F9EB9DA99452BFD92E
+:108A4000AAE7B819E71935CDFF2C3AF03F2A123FB3
+:108A5000B81B8FA629EF4F0008161E8BEB3E9AFE1F
+:108A600068578C1E21BB1DA8CB9CFB78AB9AF834B1
+:108A7000A5C80639524901F4FEF7E3F28E9929B1EF
+:108A80000A5220FB04401CC4941B0E3636DA347C98
+:108A90005FCAE4FF3A67A424171F752DE1F2642D25
+:108AA00073B094ED08723BF00874052DD2C10F220B
+:108AB000091D5581AB2A8EC1281F4079DC8E543C9C
+:108AC00020B67E4C342BEACE3A962DD6B17DBCDE54
+:108AD0006B904CF4668DD51124EC0B7ADF43A80B18
+:108AE0002AC61B06D0AD02F3855B29DD72F4ACB15A
+:108AF000DBA26AC84FF979852321B945B34DB5BECC
+:108B00002AB0287AD996B2E56DC2EBC5439D52E4EE
+:108B10004578D7BE9A33DFFE3C4A6D6A932FFD62DB
+:108B2000B38B3727F18B7B5C1755DAB725B60DBDB4
+:108B30007F8C8157C8754DBC926E049CBC7C31C340
+:108B4000311A29FB4C8C41DF2C5A8D31868A44D84E
+:108B500034A5C5D42CBE187C1E25C230A526B289EA
+:108B6000D60B8753491B0B55DB1F8F59ACDB022FEC
+:108B7000215140077554147144B414413EC4538BC1
+:108B80001BF5E2C41E358107CAFDFA4DE55FC2AA96
+:108B9000090896D05B48951A47354477643E7C8235
+:108BA000ADEF39B87322AD450337277EE244F15962
+:108BB000AD07406665F00BF269B7C686E549C92086
+:108BC000975CE43CB946C458029F967186E74C0313
+:108BD0004FFA4391DA65EA465984DF9D417FDCFB19
+:108BE0009A203B8F537F151B41B9B793829C5A57EC
+:108BF00038011516D79EAB1F7774317D807D1DA877
+:108C00004773E0F75C14848C0F37904870686520D8
+:108C100030BF053B4C74BEAB2B694B145C48433DE5
+:108C20006F0FE66F7D87846D31582BEE3001A6DE25
+:108C3000D1CEBF3130146970E7227A4D6E7DFED4FB
+:108C4000DBA05A2C89EBD6E7961251E5AA009EF2DA
+:108C5000A0F876D6F63E7726629083DB8808D79414
+:108C6000F76B68927069343DADB97FBCD486075A02
+:108C70002762F15D68D2CCD1A5894029B9C2CC590F
+:108C8000C885345C422E82F434EE42D05CF1099DFA
+:108C9000BE3825355979CB8992B32BCA38DAB9CE8B
+:108CA00021E1A516D305BBFE2A75C7493A4235FF17
+:108CB0008C92EF9CAED041342DA36EFA6E7AE82BE5
+:108CC000955312DA42106BB50603EBAD920EA29BE0
+:108CD000566556034ABD01BE1DA1CDB0497AC611E5
+:108CE000F7A9ACDDC0887213C09EB2077CAD217AB3
+:108CF000FB2979EF79C10D7E8ACD03AA7D00AB40B7
+:108D000081AF045063D431BCE87A8324B2B7F08CCD
+:108D1000CD798A59546C3E79E9725686A40D124277
+:108D200084BCC668D34C103E8C4D39510479E09711
+:108D3000F351B95EAC680EA4412913D58EE832FE1A
+:108D4000F18577F159F4ABA65B191DDBE6B7B22EBE
+:108D500070E59C8A7FB903B265F75F76B27B9DDFD1
+:108D60008F85CBF0DF0F69A8E9F5EED6FEB000AE37
+:108D7000C6A5F4568C0D112B4D22759A4831A3B51A
+:108D80007EFF68196D99704D2529D7B7C42C5F37C0
+:108D9000EF0365AE4D8F8EC285522FF534B0B3739D
+:108DA000B4AE6727104B370B7197E77523C4465253
+:108DB0008BAC478B3284FB259E98F79A6A869A85FE
+:108DC000F1E2BBEFD6682A83F8473F2C3992E37B68
+:108DD000C9D6F416E3DEFB936537E15FE072AB18AA
+:108DE000C5CDBD6FDB77895A82B3F6F63B42245579
+:108DF0009B14D86E9C52B41DBD9F3213E1A6E4397A
+:108E0000B32CE50CD62E826D8D7CA4350354ABEFCC
+:108E100042B2F97F2F8BB05BC9A382D88FDC07B039
+:108E200012737C2027D802750362DCD5111BCDE9B3
+:108E30003FD6254C581198F072E360CBBC743DB21C
+:108E4000EDF03FD9388D297E1A986D418F4C9A5795
+:108E5000CDEE41DB6B97172F044E6D174DFA090DC0
+:108E60001E4FFC43786C533A447A6726596242F4A9
+:108E70004E318E72C9AD3870532F20CACC3FE1837A
+:108E8000646C0AA4C01EFA299CC839DA043C2B176A
+:108E90000C4EAB75843ED5964F2C0EDFDBD788FD8C
+:108EA000D1D520618B50B0D7CC430AE219183DCE02
+:108EB0006EC75255C36214B2E3AE8443E96E31A764
+:108EC0005CF0B948D01822B771A4C2AFD51145647F
+:108ED000D170FACAFAB70808F54CBEFB6A52516B5A
+:108EE0004DD5D4AF807932207F8BFC0D0011068ADE
+:108EF000685E2953CD389CC9A7DEF01583CF35E0D5
+:108F00004187496C4575C2E7E4E0DE3C51E04EE044
+:108F1000BF5E44588FC13CD8E80A66C2DFFB58C325
+:108F2000DFFF6BDAC5C4BACA190092452EA06A32B7
+:108F3000F0A1C9F39391E6C5C39AC0CB660F6C1F2D
+:108F4000B3F1CE37970014B46218749EDB2B363918
+:108F5000537D328969CD9D42B5708A13DEAD409E46
+:108F60002660D33FD6224FE1C63A1C07D38B38E6A2
+:108F70005C9D20E9AED3859FFF84EFFB7793B3D54B
+:108F8000FE7071A4D0672393B3F2F7F64A02244A25
+:108F90007823195179F1EE475AA2EFCCBA088238FA
+:108FA00059C7880EA055C8D9016B2E34EF12B49062
+:108FB000EC0E0885BA0C8458F8739BF2595DE1D425
+:108FC000C4281F00F3CAFCAA545DBE83CC99889ABA
+:108FD000A548D4F0ACAC15C6AC0EDAB774B6778D34
+:108FE000AE2F0F29BC9B08ADE63A5BF31BA0E12036
+:108FF00050ED3C77F4691388317EF2ECC8E47FFFD2
+:1090000009B8A91746876B9362C4BF18E4FF3F8174
+:10901000CDF70E09F365D500ED815D3673419A31C8
+:10902000FAA3501ACF7B1DAEB6E2C24B20E4B43196
+:109030008F7C9BD9738AA890ED7B98C13801051568
+:109040007D9EDD07A7AA00B2E445FF84B36E96A615
+:10905000889B66A1512B4745E62E80709D65A364D1
+:10906000751CC83B8A9BE340AE65368D5AE67B395A
+:10907000CE01598BD523CD669E749F670CAC39FF0A
+:10908000161968E6CFF5DCCCE871A916F127B4D43F
+:10909000456BB89E608362FC84E1FC24FA4187D46E
+:1090A00048CB8E2FC8A9AC3C11DA4DACC1F93C7845
+:1090B0009899AE13DB3ACF740D9B44E1F9D6CBDF20
+:1090C0008654A211A7166FF0327F9798F25EBAF31A
+:1090D0007CFC2B5EB6F923558739E59784FB749E9B
+:1090E000A568D5FA45F4D5B268AF2A930096438BAC
+:1090F0008AA1AD01CD2638134D531FF3CBED8ECF92
+:10910000954C05D662F7562AFD2BD737FAD3A06DBA
+:10911000A4EC32DD1D15FE71E09BF296EE889CB644
+:10912000B013C25AAE68A2B065855C7E8031A70DCF
+:109130004A799115545F45011764CE883EEA6AFF6B
+:10914000FFC8E3F316B21FA47F4F46FDE607C3989E
+:10915000FF06519EE6BF9840D1879F94C8EA034A14
+:10916000F36FA8498773C399FC697EFC01360A0F27
+:1091700099E81E741E9B6DC441FB7F4B611952AF71
+:1091800081362EF8DE6D360CCD2DD6E57D14A51F6B
+:10919000576BA6E6569C45907AD814F8000EBD4150
+:1091A000DECEAC3415757990C69FDD46F8075E2695
+:1091B00022E9B532E56DA64246D667F89C1911D66C
+:1091C00052887C361220E524B57D151F5E3075BFB0
+:1091D0007596408A78FEF87DAACB08BAA68A5A4FBF
+:1091E000DC7B9ED235BE45C7097EFBE3C4DFE86C5D
+:1091F000960BC33579E20B3BFC6B1F1F3B6B38FBB7
+:10920000614C2D4F2065CD608DC3F36DBAB312282C
+:10921000E10D3F5311394D76A6784E9D1DAE3F3777
+:109220006E504D5459C454BA4D0307F67379314A00
+:10923000888CE3CCB607E12BFBF70AB2E76A9D40C6
+:109240004AFDD6875A48CBFD2A4E0A1DF185CC4CE3
+:1092500097FDD9B6B2DFCB77AF2C174B506EB7F175
+:10926000B8ECFCB7C272F495FD0CE5DC7E467FE2FB
+:109270000F99F686DA0B8D5E262429C150AA8489BF
+:109280009F474E68B788EC257A7FA6C42DB684FF29
+:1092900004229E9C60C6FBC85F615A7C4C299D439A
+:1092A000283B3741BE8A6B169EF7D32E3837B971EB
+:1092B0008C11AFD605A4F3A464193826574384AAA9
+:1092C000C69D04F72A1552B1F93C99C9658BBD4D6D
+:1092D0005746259E188E44D70DF1EA0031EAF7CFA4
+:1092E0009FD476BD3A0DC7C172D9A5ADF391A0A4A4
+:1092F000DDEE1E2EE063E59EC904FD59A848A2D00C
+:1093000056B0AFA9D5C3B97AFDCE70D7174308B40C
+:109310002E33AD682E3B5025B00D9EAD5BCFED38A2
+:109320009D1AFC0D7300BC1A916BA622B3015D154A
+:10933000AABB86BA6CD92B9C36E510958769CF5AA3
+:109340006017A06753A432500E6372EE586EC9E0E6
+:10935000F81702E9780527F626B66C79F7F36D4120
+:10936000BA6D2EC371FDFB0CA39B48DD2C3FFC782E
+:1093700019464C739336D3370A88FEBA394ED9430F
+:1093800052EAC71B05CB386D35FCD6E220815CE67E
+:1093900098A9BEA63F7F15C29AF17E73558BF33D07
+:1093A000CFCCCAF01C9C80594217A9BDE4E693813A
+:1093B000C5DFFA0BA3175513CB97219BFB2CF7CDD9
+:1093C0004BA734351D6AB0EC26973166C0017895FD
+:1093D000E1CB008367CD2BF0852DD4E03747F9A989
+:1093E000171AF80ED957313DC960E44EAD4EAA3C6C
+:1093F000F677FE83F899409EF5F0769A18AF959728
+:10940000BF2DF501876640539ED9717799A8162123
+:10941000B4D6861E5390150A0CABD041B21ACAE3DB
+:1094200081D71F8900ADBFF9A54E9F1CC257DD1A19
+:10943000D42F0BC357BEB3BA141B3F9F6CCC59F447
+:10944000BC458A3DB63140533B178D7396B91977A9
+:10945000EDE20213B5EA9AB6FBE0427E53797D1342
+:10946000188ED473CE58691E22C4C8AE29EEE3E626
+:10947000BC4DF06B65574D8C87AD0EC1CC00C697C7
+:10948000E9A9A74BBD4C50518809328B444DF7C117
+:109490009D2B26B2CAD1FA30CA9DB7870D797BCEF3
+:1094A00050EEBFA02517FD8DB4CBE9625B1C0C9676
+:1094B0003DB8207AF957CF77AF9807081B14218859
+:1094C0004E51404403F0354C213CE02015553DE61B
+:1094D0008626E766CAC3F64E8D92AE1E329D20A444
+:1094E000FDAF822933EE55E21D9D559A7710E3A911
+:1094F000A8C10B988E082CE14A69FF0E723E9B179B
+:10950000DDE063D1B548D13C064465EAB498391032
+:10951000D6CA0D3B27D22C33B0692E04D54231E98F
+:1095200046C7C885C882280964550516F29EAB0A4D
+:10953000776B0E7EF67A93736E5C52496DB32A1286
+:10954000897F5077658A7E299863555D576205CB80
+:1095500042AB544484BCFC23CD9376CC5F46B30429
+:1095600093FB19F759BD117B1B0B0BFAAEB5D964F0
+:109570006E6EB95A490F517630619F4CE0B694F245
+:109580002A1F39015DDF360A9D1BE98A31FCA31FC2
+:109590004634B2F7A842B1B236581FC3AA3DD356DB
+:1095A000071ADFE87D73F18581BC5EDD47406E1CE4
+:1095B0000CBFD8C436BB4EEC064592EA357A998882
+:1095C000EF61A95080A4F00C8808875006FBB067B3
+:1095D00040F513C4C27A9347CB5F063A5DF7260481
+:1095E000622698925A98E13D8CC5271480DD354457
+:1095F000BBE15E336FE1460480AC608D2BF1BA3085
+:1096000062EF5496B2305ACD7A97D01F1346936CBE
+:109610005BBCD9D978FA178ADC644990D4F92FC693
+:10962000CD044D1FD4F6065692B40DF01B167D6B7B
+:10963000AD84A029D25EFB0F09D73BFC6C2DD89BD3
+:10964000AFC3CAC5A5A8D967282ACB748506FD89EA
+:10965000953D0691CDDCCFEF234EB0E759503BB29C
+:109660005320491CABEF93E1DF14DEF373B2A6176E
+:10967000801EDF9A6E06682DB1BEBD243D976762DD
+:10968000048AB2E346D91A84E6C58ED652749794FA
+:1096900043EFFEC88614E06C487BE7BA2A33F5C96D
+:1096A000CC3F90669F4F98635E09CED56B3D26896F
+:1096B00075A872651B0471B42D9D4F4BBED4E7B4E1
+:1096C00023EEF72F9C34C17A2B6901E518E25DE3A4
+:1096D00076E701FAECEBB13577992DC38A23E7D70A
+:1096E0009B89E1F5E319392F1E04A12132DF2CB744
+:1096F00027B325C5195493CF4BC77D017D6ADD3152
+:10970000E9A64B09109A33ABD63C54FB402215BB5B
+:10971000AA98223CDE7EA72AA0B21C6ADB90FD98A4
+:109720004486DEA2B65213E44B4DF98AA8057F5455
+:109730006737338F3E79D64F62D41A7132EF9D1F4F
+:10974000E3A4C1AA93257EB33408CFEE72FAD59A6A
+:109750008FC66D777FE0A9B5647DFE479359F070A1
+:10976000D70FBA9F2995AC39F0A933754447615496
+:109770008FEC1AF095EB09EAC66299C766F2C83019
+:1097800006D3E548D5B354A3A25AC5C5F08C65C825
+:1097900042FC16C63D934CB82064B88B70BF8CCB8E
+:1097A0004B592A56BE34578A2ADBF3D7C8EC0861D6
+:1097B0001A563125E71BE44216CDE9E408E9D6B193
+:1097C0001909B14382A5C155BA6CB1F0E3C393CC7A
+:1097D00056A43A9C98C4B918586659B9AC834B1929
+:1097E000AB764DC4294506F1E2ABFCBCFDC67993CE
+:1097F000021930F7D61D0FAA420389E0772C0A38E8
+:10980000BF442989C57D096ABCA144FB23983C98C3
+:10981000567405D8694AA81187F0F0F5CCC1DA7FF3
+:10982000A6BCB5FCCCCAEAE145BD62A39D33721368
+:10983000C7A7A05F314FBF5B41C989F0F5E2FBE7E5
+:10984000ED3E81E8B9549B73730807A26BE03F7744
+:10985000F1F2661B1ABC664203C61979D11F93D771
+:10986000160D7D78BB44D12BF9105331C269871591
+:10987000F5509E3F6E22647C17EE762266827C97BE
+:10988000CC08D12AA3F46A4885D67D764CBA5ECD41
+:10989000BD04879ACF8B51C399D0951C0C1AB6552D
+:1098A000C5C312714990C8B2CCCE873430027F351F
+:1098B000533F3C7AA6F3F76040BD9455BF4598628C
+:1098C00022AF3889C4A63D5447398DDCF13D5FFD98
+:1098D00008298C003931356AD3D8F3B000391445E2
+:1098E000C0B3E7E7BD3E4AA2FD86330DC17B1DD95B
+:1098F00097843308C014F57EE7A2DD4D06B9E9D49C
+:10990000D895C8100B2084FF8420DE6E4EE41A2206
+:109910003BCECBFFCF3D1E2BCBA7BB3A3C7427B22F
+:109920003BD5A19414D6B38937D7F8E0F81C425739
+:10993000BA04CFD1163064381D25A97CD21A20680C
+:109940003C7237E7EC228B37A91431CB756C4B5F37
+:109950005AC65E332B67527D9DADFA9D8F997AF082
+:109960007C380DB34B1ED6BE57D23579FA6FF30A49
+:10997000F822BB0E6D232A8C56883E45FC6BF2B153
+:10998000DE3B8B0B02862E1FCE41AE312F8FCCCE0D
+:10999000C702C1DF12ACD80C260633C588406D382B
+:1099A0005A457581E9AD29F14B8C1DD801EFDB39A2
+:1099B000F9E6B719D27E7EA21FBED69FBAFD1FE878
+:1099C000E0D208A32D8FA6F7785B42A561D2FB6297
+:1099D000D8113579B4FE6F9DF1B5F20425A3E30EDD
+:1099E0007B94147F3C1D040D1AA7B16D17D56CF63E
+:1099F0002A02849F930BBE605C807BA7AF97E3BA7B
+:109A00006EF2BA78B3E12E0EE17A98230170C9CFD5
+:109A10002B2DE18824A5A11288AF54D298120754A7
+:109A20005E120D68DA7FE64D894E5FD56D1C11CF51
+:109A3000C78DCCBFE4067424BAE1D67DD179622EFD
+:109A40009BDC2987BA60D29878E4D1CC7062D66466
+:109A500009A6A134C1FF683D9187E80D9EEBE10A9C
+:109A6000B191120B92999A343C3C74D655DDDC3896
+:109A70004B68AB97D421F5168E760EAB26B2E53C3B
+:109A80002A9FD5369448559B1C2BC329581604E0B1
+:109A90003E05223EBC4F141A69FB5441FC6A148CEB
+:109AA00098D14CBCC21D25EAB82F2AD3AFEA58D1B1
+:109AB000B6850B5E163E85904132438BCE286E668E
+:109AC0002805D9765864E36EE2C54EA4D1FF7EDE48
+:109AD0008E774783CDCF0114FBB537D60220F93BF3
+:109AE000690AD8A43D40E1B3E589B9CBE81E5674B4
+:109AF000F364C56ED1EB8604EEAC42379DA1EFDA7C
+:109B0000DD7DEB680ACEE48B8CCD43F6656DD9AA7A
+:109B100086999F2A9E3F60D7ACBCC70D4B2D3093D2
+:109B20008B41D677E9A19074A602E3B37576E8512C
+:109B3000216121A11E10945BA7B9DD1CD172E03711
+:109B4000D9F9EA5DB3F7C9BCFE45249C775746E7CF
+:109B5000D04228A3E0217B554997A478CFD8194D4E
+:109B6000E8A2933C5C0222C8BE0F2BEBDBCCDF707B
+:109B7000B2D76198790016B5643B6C456517509F64
+:109B8000D0A9CD1C2C3AEDAD47570027352971AA35
+:109B90004BFF22E0277D6560A4B32A82FC98927F68
+:109BA0000DFEB81602D4016225FAB37A3CA7147DE3
+:109BB000B87E21E6B6157F0E5633DA99130D5B8811
+:109BC000A7DE607E9AF1B79CB0C9764259516124F4
+:109BD000D720ADD7F3B59C1D8B62EBB5F1D6C4A9E8
+:109BE0001198C0C65AF72C24E74F9B81EC0E6D2DBF
+:109BF00095BF27A2315FADF17B98FE08C4445C732A
+:109C0000BBE48BD4556AA8137B210ABCCCDFE56A80
+:109C1000D2683FC7A6D07097CAB0E94BCC008987FD
+:109C2000BC09A3B414A2825BE3160A170263AC1842
+:109C3000008DD2FB813FA9D5130E0A1B2EB371A153
+:109C4000410A3B566418A2EADC8CD3A131A894DD0A
+:109C50002606F74AEEB09959DD7F0761CB6E78BBD7
+:109C600084DA2C8831AB677CB178B01AF2AB7B3FD9
+:109C7000D8521F267B937F3FDED8197E15647E7AEB
+:109C8000AE37313D1BD1DE9B05535A97D404464A6B
+:109C9000C0C61CBFE605EC641558C69370944AB55F
+:109CA000342A347D92A27142FD29042257BF759552
+:109CB00061F286D7D04A0A576261A410CC168B583D
+:109CC0006ED16FDC29ECD0934DA78F64CE25E89838
+:109CD000F6B93E1BB89F8E4AF2F67F11FF486835F1
+:109CE0009CE6DF0FA2AE3ACC5B2F5F85E37E4A781D
+:109CF00042103F81CA5E851DD17B15E1D4A6C23AD0
+:109D0000BFD3173E944FD0CC76BB3324399C2CDC88
+:109D1000A6DA54D04D86011E886C85321A86629967
+:109D200094DB6ED419122A5F87BC3463B4B6E7297A
+:109D300010F59FEDBADAB4427CFDBC9D028BE500C4
+:109D400061C96484EC7DD2B1C3B39125C711ADF470
+:109D50007DA02646897D5D7156764AD1E998CF99D6
+:109D6000A13BB5669C20543825A11B5280CCAE5E29
+:109D7000D01716B2BD3D26D0A07F30F33B274FBC95
+:109D800058F25ED7FD901A9791B30F6220461AB62B
+:109D90005F885FF7367470288345129616A59EACCF
+:109DA0002D8F3BE7745EEB79FDE2C36FA4BECC035D
+:109DB000A38052590C9E167B2B19FD2D1A3622BDFD
+:109DC000EC973C5B0BF3AB3062D51B2553EB52B8E1
+:109DD0003D88D14444BFE52B8E77BDDFE31270BAD6
+:109DE0000EAC81A7F017F2ECE6EFAE4D9ACAD5188B
+:109DF000E0ABEB56FE9A7F58A488501D2944D6DA72
+:109E00002F0A2418193266DAAE7946E34DB99C560A
+:109E10007EAEAC3CA9F4D52A4DA676475FF8271E46
+:109E2000C652884F0B14FB3CC5612E220FF4E88B01
+:109E30008F5C776A53A8D9FB07DFE490B98F46CAD5
+:109E4000C8DD31B1027EC6C3A355E38C14F3190CEF
+:109E50002EE61ED2D1BF36539FDC1E5CB1AE578FAB
+:109E6000E37FD6744D9E5C5B1B01372D688B89EFB9
+:109E70006AEFAE76A79CBADA81C5B8560DA05F909E
+:109E80009F95A60927124FCDC1BC30C062632272D4
+:109E9000889B3F520929AB7AF80D64A73909AFD4E2
+:109EA000CEC889815853A58CDB4FC2FFF013FA69E5
+:109EB000786C5EE6A946A26846662364910DE84484
+:109EC000D3B77F7141655925BC007E1BBAC5745A52
+:109ED0005A21EF3941E78CE1AD0C87029D87F7EA03
+:109EE0005A1CFD8F7B6DDFB4BA9D57D9441B602689
+:109EF000FDCA87C93952BCA39DA54FD64169D9FD7A
+:109F0000F7416A0BCA3051936E0F79DC60E860CD7F
+:109F1000767B452DC9FD1D1C368F329984AE2AF5FE
+:109F2000E6F700B47AD962AF3489A2BAF5E66C39A3
+:109F30006B34299BD0503D0D916DB8402FF24E6986
+:109F400055E93987C23DCEE1B72278337603121343
+:109F5000CC30B3BB7DCD9D2F000913E92ADE75857A
+:109F6000AF6DC9466E5CF3EC07CB5FF0F5C8C4AECD
+:109F70005C245EC2AE10840C902CB90E36BB937676
+:109F8000512C23C3D338B76C4ACCE907EA1DF9DE5C
+:109F90005284055F4396D71D857BCCD99A2014CB7C
+:109FA0007DD8314A2A9A94BCB759A2D4B852349970
+:109FB000F729A09B5D520F2A0E6B55581D219878EA
+:109FC0005AE83963A26EA162A0ED5101E962F03F47
+:109FD00081C29C8BA9858D0CE4C7297985E71AF18C
+:109FE000876C2F0438CCA461DB37D005415CEE0EC2
+:109FF0001A20B7568CFFDF9AA84BC25A89D5A28F78
+:10A000006F2830F079CFE016A40FC604D261A20702
+:10A010003C79465C46F3B9C4AC6ACD019BD6147D4D
+:10A020003B6576F522EF3CF653B7F27CDEC239434E
+:10A03000E00B5380C027F2BCB6D074B4742F5AD949
+:10A04000FA4794CB04B90A22E7BA8BE4E2462451DA
+:10A05000CDA8847646017009A3C76563B9652C67EE
+:10A0600085525ADC59DD6786CA16A53875DD32443B
+:10A07000EC6B4E53F683759B043D991FBB1E33D981
+:10A0800036CCF3D67CFD78E3458B1306BD4CD32745
+:10A09000FA5036F834B99F336BD3E813778446917E
+:10A0A000D2570D414985E221B00E66BB871CF909E4
+:10A0B000F6489DC46ABACCB5ABE54766E5FE462BCB
+:10A0C000031C3EF9BE4C6E1593D59BA8B2C2F37C1F
+:10A0D000912CA365DBCECE0B214C6029388CF92165
+:10A0E0001BAECF3149789C850EDAB85B6DFEA78E2A
+:10A0F00051CBB5935BA1F0FD467CE34475365CB073
+:10A100003073DEF760906AC4D1D7F39B71F2D3B39A
+:10A110001392945F28AF4BE66B2624A3B3B7740D5C
+:10A12000EAE0A14CEB98B6F802E8A99636E71600EB
+:10A13000652C9DBB68FC58FDD30F9620A9BB284019
+:10A14000C78FD8B707BF8FB7A0D85891AE1768FD93
+:10A150004F2A3792578BC356741C52EF974B8ACBBA
+:10A160004B2E72FD007C7F2019B676D875BD042574
+:10A17000B61BB10C55FB24FA260B1E37DE35FF3714
+:10A18000797B4E11B513A8628ABF97331E60C5C58F
+:10A19000B66893868B10D3100F2EC789276B95B79F
+:10A1A0009B781A70DB4E2AFDE7DD9FFE63ACE24927
+:10A1B000B233EF9ADC7A81EE8F54755AFCF88E93A5
+:10A1C000FAAF8FCDDB93534A69002C84ED03EAF894
+:10A1D0007382D5C9279504E47870C952ABC9289F0A
+:10A1E000327ECEB8C0C1752D6B32A1B48ECA766EE8
+:10A1F00072F4436632EC947DC43485D13FF7155A2E
+:10A200004835833AB66BD025517C965EB21BB26559
+:10A21000034C3A69780599FCE18A3419D62731064E
+:10A22000708F87DA2FAE0B21658370C0D79707CF69
+:10A230009A071B843ACFC6A551CD7A25D1F874224E
+:10A24000121CD8EEDB0F28B544385BD06D0EA6E7A4
+:10A250004D92C5DBB5801EECF28CE6AD0BE60193AA
+:10A26000C91C656E31997C2148C21DC29F55E627E5
+:10A27000D18A66F5F270854ABCD54555FA6AD5494A
+:10A28000DC80BFE73406EF8F7CED9A8F173E2D37C9
+:10A29000CA378963689EA806DCDF18369E68844B3F
+:10A2A000D23EC9816AD5CEC6934EBB8D463D53A6DC
+:10A2B0000606C49552AF2DC2A78BC2E37EF70A955E
+:10A2C000670B0EBE3B5BCF63E2F9F300110BCC2FA3
+:10A2D000541C24C64E267FD048BDA6D67B33C8A7C3
+:10A2E0007F8FF5180BD6217B35AFE43234D2B47AA8
+:10A2F000A4BFFFDF5A229B1382548F2192A545E011
+:10A30000F75253D8ECABE6710EBFD6FE519920C977
+:10A310003CF9324DA2034FEC6AC2BB9D6B58BF1B88
+:10A32000A8D39C05FC6274A32280F503183CCAB92B
+:10A33000818AB532F4A3BAD02EF90D8EC2BADDFFF0
+:10A340001A3552E0B0FE8E61167D8F491A13417C9A
+:10A350005873FAA9DC37AC7CB3B03226433DD1BA8E
+:10A36000A7D1472EFAEF676B9F9D1F0525FAFB09C2
+:10A37000405822D60F2202DE747A044BAD27100F0C
+:10A380001D9AD974D5B873003A8D0D45E6103F3C3F
+:10A3900028A954E5842B19F35E590DD82A337C3053
+:10A3A000C3D463C74D775D1306337812C344C67DAB
+:10A3B000B4BBE70FB982E7E15E10E824DB56F99EF3
+:10A3C00058297CCB19FAE35041EE3A24E055B30A00
+:10A3D000AB47020E6A7B6562EA74CA7FE010F33C09
+:10A3E0006EE52FEFA0BE512E070580B32ED967264C
+:10A3F0000B211C2D382A417000C6CB3AEF90E1F4B6
+:10A400004C9D2DB126236B83057CC03C77A2E023B5
+:10A41000BB8F76E100D0BB207713F8509380404982
+:10A42000229BD3A561BB379C1C14AC8B85C5D9EC92
+:10A430009531E71487381CA467A15BE74AB9D55862
+:10A4400080E576061AE02EA579FF347ACD47DA4703
+:10A4500059B38D98045738CD4BA43E7ABBEDF942E1
+:10A46000D19030B3B5AC222ED60DBB54B8D7B32B98
+:10A47000605F0B8A1D3792ECCB73BE7640CEB9E09D
+:10A48000F2B29A00FA8BBBA653EB8E9331C41CA098
+:10A49000AADCF62885AE5E7D55E2B68316C6C110ED
+:10A4A0005BFD652CBA6C8127FC1454BDBDE7C56605
+:10A4B000E2525DAC514E3DF55293D4A344D1663384
+:10A4C000092A31DCB2BF2E8AD51ED671FE638C4BB1
+:10A4D000E4E2A89484F02589E290115DA53A6BE648
+:10A4E00058EAD4BE9B78E1C0ACF551CC2F07E21CF2
+:10A4F000E8B13B7EF318D8290935DC30DA6C0DF66B
+:10A500001FDAB0DCFF112E4866090DEC3B654EC327
+:10A510004224BCB4A84826A6AA300E3CE707F01B8C
+:10A52000172BC39F38966DC4F5AB9C04B6215BA670
+:10A5300062DF396823720E63CAB84BD1BA04F41AC9
+:10A5400069F8E1B2125BBD3000171B2DF8D5E84D5C
+:10A55000BB7B49B03E80B78406AD773E4C3160731B
+:10A5600043EB648115E7B0EBBD122947927AE6D739
+:10A57000659420FBB13F3FC811D3E49E4D0632E401
+:10A580004FAE2E85E02A83C37EF1E68D06ACC873FC
+:10A5900061BA5AE73C4496B08217CA14B312A68532
+:10A5A0002F519BE3C453A4DC201FEA5AC5C269089B
+:10A5B0004EA92427D0E55BE249B9FFE39C35787EBC
+:10A5C0005043E0E137AB5C0945CCFF31BB9CD23E48
+:10A5D000D8DD2173D010C8EDB0B6F2C4A94B814BC1
+:10A5E0003F71E2FB28B5F2D23ECF112B7EEDB1CF09
+:10A5F0005B3D8A4DDD3FE11BAFFD24E8ECAFE5D2CA
+:10A600006DC042ACDC39234C84547BFA2A4D5B602C
+:10A61000959553853F69B6A3689CD50FA6F78678B4
+:10A62000386AD75B0124B369D62EB08B9E36D5DB52
+:10A630009440AA74A0A8AEA1FEC5B6EFED17C7540A
+:10A64000552CAA7F330E1C7F7591ADED259A1A10FB
+:10A650006690A0DA3BE51DA95DA712495C0AB837F0
+:10A66000A270664B7716857581B9CC2B24C7A45888
+:10A67000DF9C0860AEF5340B5945BA58D9E1E57B4B
+:10A680000D00260A522F5270E3161E247BF8361C4A
+:10A690004A1D82AFF60D33365F349C4693E98F85B1
+:10A6A000CFB210F63DE481566678EF1CE671BA032E
+:10A6B00020858212782D7C841CD28361996B71571E
+:10A6C00047CF45790FC7EE0CC97B8FDBD9C6765CC7
+:10A6D00033EFA02A0A5292B42540CCFBBA149E381C
+:10A6E00055D92766890BF3658A78949A9C4D6A013F
+:10A6F0001437629F5F6745F1BDD880B7F33576B6F2
+:10A700007D0AE139695CC24EB9BD0AFB367B75A989
+:10A710003D9FA4D7DDF1D911ABDB75DC3637735A19
+:10A72000047173AD8E733774F51722A83D73A8CFEB
+:10A7300011FDCECE7490985FC5CD80157B25ED8739
+:10A74000850D2F1B15570453E5BEAAD9F851236276
+:10A7500047EA489BE133C14A57AAED67DFDB6EE267
+:10A76000625527C2617817E3CFF2F7FAE14D8E9A6E
+:10A77000AE786312C25F25E5E3DF8523285E49D406
+:10A7800067253EC4EF2793BF4E5949892206C1B1C0
+:10A79000B7C818E0DD0C816E844FC69C7D1D9B26DA
+:10A7A0005CA77A84F33F7922B632F0903AF308B08E
+:10A7B000AF5F969F9614B305EB5242352CE9222EDB
+:10A7C0004AB523968B16DB5A5EFBCCF030C413D30C
+:10A7D00035DCEC58EB07CBF48592A4EE9D4257BED6
+:10A7E0003F1060A36E16835371FCE2DE1FC63B76FA
+:10A7F000A6633E2839E79D0FC7DE005CFB766899AB
+:10A80000D7DE19013F47F69890C76867DF0D587B80
+:10A8100044322120E9CACE8251E6959A0053F7804E
+:10A820004EFA1C89AA572CC4B4201125325FC843A4
+:10A8300069EB8E9CB98370DAA028A99C9B8FC645D2
+:10A840008E2289F56E92B0579AF84CDD4FB5CAF654
+:10A85000B2896BBBCC41F36F42819637B6978F5E5E
+:10A86000FB0087D20D4D14F0C47DEC5CA280F91E74
+:10A87000EDFD719E8259EE9084B5CBCB414BA48FF8
+:10A88000E873D3BCD3CA9015367C541DD0A4E125FF
+:10A89000A08D086D9D2119C4AE67A6C649AD6DB0E7
+:10A8A000363FF2F830F8E3BE5A1CDFB89C6A2C073A
+:10A8B0001AE1612CEECD3255B9F34BF210D96ABDD5
+:10A8C000C9F64E02950613D853B82F4B0866DDDC47
+:10A8D00068B4577506EB2492F35ACB32792CE07F9B
+:10A8E00086FED81EB6EC0436BAC5DA272DA982EA50
+:10A8F000FDFB5B75B614E2E66AF1195BA4DD9F28E7
+:10A9000033C4C05981EB8D0B0833A5DBE5F57E71AF
+:10A9100057A5F6844956083293A172063C35332276
+:10A920002608922136409ABBA9722FF38923DB6A4D
+:10A93000FD3580FB35EEFB9BCAD8DA3E48B5173DA6
+:10A940000B50755C30B6A7D8A592FF58A6E75C0BF4
+:10A95000EA05C22708FE0DE5996C3D6E7402C8A693
+:10A96000B5D88F750481206C2BED9B68280BB2AB9A
+:10A970005B22356E92553AEF6D586EEE4BCC65D634
+:10A98000C02358CC459A15675C4F2CEC002DC3B8FA
+:10A99000B9642ACA8F4D64A091E83BB29895ABFB8D
+:10A9A0003101F5830711651741D44DBCEB38E44004
+:10A9B00086BBCC9D056CAA54C598DE2F2E711291D2
+:10A9C000D12068A408A7C2316CF508F7DDF99875A5
+:10A9D00070CAD99B7D1E7748BCE3F687D817045F01
+:10A9E000473A9844FA5F6387B2111EB6871AC88E39
+:10A9F00032CEF07F1DB810A2881FDED8764FBF314F
+:10AA00000B66C06C0526CD6A6629927C7CA9A5B927
+:10AA10005191D88CD6DCFB083E9298C95B26141560
+:10AA2000D5A670CD6D51E66020DABF73379D3E7DAF
+:10AA3000B1CC639E3AC6756CA10F067E8F391DF1AD
+:10AA40006013BAF56747D68A3F9B9B6785EDCF5663
+:10AA5000D71F4A13E1E3C475F82076E7E11DE42827
+:10AA6000874E211AEC3EE146E229E935D275547849
+:10AA7000B6A68286C2C7B8A42CEAA49B8019EA4075
+:10AA8000207A80383F849065D5532413925D900FCF
+:10AA9000D054989314E95355D7B3329976D50249D7
+:10AAA000B69B4F338B4B3FA6FBA2E03880D6ADA2BE
+:10AAB000A6E55F04C25009B596D8D98026D531E6FF
+:10AAC0000DAF2F608FDC1350357546081175E4F516
+:10AAD0009A5CE773AFE25F403239F9805F1D5C61D9
+:10AAE000036D37F6948D5485E1CCDCE5CB6D1523F1
+:10AAF000D27E10AAA0D8FC91C73BF7210AB9C3198E
+:10AB0000FD8AEE05376CB29F6528FDDE58BBFEC698
+:10AB1000287029C55F8D87F9C3DF3070EA2C18CF04
+:10AB2000336295BB42D0ED09DD73AE3DDD60396126
+:10AB30002F5217259C73F9A1B87BCBF91A402F7BB4
+:10AB4000825EAC2689D0131596DFF60ACAB770DD8F
+:10AB5000FB3B159B778AD117465A22637B11AC1DAC
+:10AB60000F9E82C202B1CB7C9884DCD87E94F0F731
+:10AB70006AFB639B20FCFDF93F0A6FF821E46CFE41
+:10AB80006465549A70101B3FB506BDD6D534DDD22E
+:10AB9000BA4153131BF1E6BCB773AE7D38A85CE233
+:10ABA00000FCBDC490851E94FC3D6E20D6080A2A88
+:10ABB00081663CFF669BBA00A70F21CB7F014CAF9B
+:10ABC00048DF84D7C36501D4CF3FEBC9F2CAE16245
+:10ABD000214B729F6B544E7C87716573E4C0711F6B
+:10ABE000D86E3FE8ECD4D23C5DF1B3AC41770404BD
+:10ABF0000C199A0E8F0DB56A327CFF3D38BADC7F96
+:10AC00002D0763358B27F735163F7F8EF2AB462134
+:10AC1000573BF702EDAA14E065D71CF48EE45CF311
+:10AC200002833D221BFEC43F931F566E9D9CCD2286
+:10AC3000B1372C3C68DBEB56F1BF91AAA4A331DEFF
+:10AC40003F5C2B53AC64947F36512DDCB7A16D145F
+:10AC5000D8BE7B55656C1F3DBFC8A7F0C08120E6FC
+:10AC600003E7C45697389CC6C41A8E8C44D8534701
+:10AC7000C8ECA68BF71CEABED30C258253E681EB09
+:10AC80005B46557FC3C61652BB62B0F68ADCEA0645
+:10AC900093D704FF136F7F71317ACB30CECEAEDD08
+:10ACA0009F4C90A548B35AFCD5F39CD7A280E4DA18
+:10ACB0007EBD094096848E376ACD9189129B4B8E5A
+:10ACC000CC6DB547747F9C9DD6B916AE0493F0D871
+:10ACD000BA8F519E04F3336BB4C77958491050A210
+:10ACE00072FD18AB50B9E729B97EEE4D361B001244
+:10ACF0008D31254A5CC0729829151BD412F340F699
+:10AD0000C5587EBBFA36672FDD0D70D3B0A47181B4
+:10AD10000967BC71F77B0073AAE59AC372CCB3755F
+:10AD20000CB06C5F9ADE46175598171931B6188A21
+:10AD3000688C438329E87CB13364EE4D4D68B79845
+:10AD40007200E13C8656FCB1A75F5A4011711ABCF3
+:10AD5000476B7B1935B2CC46DC9187DCD1F2C3D688
+:10AD6000FE8582AA90E0C168ACC692158DE014FA07
+:10AD7000C64CB9420FBA1BDC500336AFC36C47E078
+:10AD80003082BAF30AEBD5571623E4B460098DC0BC
+:10AD900087730E79184093A5B8B633124F9DA83427
+:10ADA0000C1C39FF2C00679B60A1760C6A5A67FF68
+:10ADB00066F5369A3B8E8C9A75485E9EC413FF0CDE
+:10ADC0008A01F08E12B319AC9FC57F62D43EC9EAE6
+:10ADD0004B2A687B7102371D55DA50EA585C2F21E7
+:10ADE000CBB1ADBF2281981B5422FD41736DB4F8E5
+:10ADF000467521DF41C24D3CEFA62AA681D491358C
+:10AE0000B4C1B901211C435C99CEA08FE7F7A81506
+:10AE100034A79E57097D3E6768967E426E2FA13B00
+:10AE20003C001EA3D71724B0B833F3AA8CD5E94150
+:10AE30008CAB9E7E987C56D8E7ACD3CBCB29BB2E6F
+:10AE40009B2BEB14CBE2C80CFA98C1015D858C8179
+:10AE50007CE610E90D939DA971231F0B40967BDBC7
+:10AE60006F3AD88B93DB9F9077FA21169EDFE34BE6
+:10AE700067805A1E606D302D1E3947F18C5902C310
+:10AE8000A67C0307E5FD9B58EEE048BF58C2ECDF07
+:10AE900088EA5977CD76EDB4FE5A9FB677E8630D10
+:10AEA000E843D67F187E9870F25DD9A1103181D227
+:10AEB0004418FC7C1231DE5EA591F961AED75AD8F8
+:10AEC00095DB03ED4B2FC69BC0F30E4543765276C0
+:10AED00093C71AC8A1054B3E95000ACC268E346F45
+:10AEE000D5ABD85703E9D44CC7FEE82C7212F276E2
+:10AEF000E91EB3B07E2D7ED47D548AACD8B1C55D39
+:10AF000003CDC7F851D786F9CD0250293888217D65
+:10AF100090618943B7D5E7136F3FB7060F9ECD5BAE
+:10AF2000B8318E5697DBE5A6A1657C6787B343E809
+:10AF3000F2C933E73D78C1F79CA2DC9CDB124CE1FF
+:10AF40004F5CFA0B3A00C114293F6FE523693EBFFD
+:10AF5000AD05985AF05B4ACD56DBD696FF9B81A88B
+:10AF60003896F8B2A0E06DA1BDF50CB33AA72D9AC2
+:10AF7000D65CDE2B520AAA50E5A9EBC9E3606A53FE
+:10AF80003688E0541832864BB2FDAD6B14EDEC4FB1
+:10AF90005DFAF75798984BD0CC365BCDCDC7FE867F
+:10AFA00085784205E63EAC16948694E0500A0E5130
+:10AFB000DC64AAEC8ED6953FA49BD13293DACF3FC6
+:10AFC0001B15FAD6A46834069F5AC574702D6649BD
+:10AFD000EE8A379A04464C9E29F7EFCD7748271121
+:10AFE000FA1050C6ED584444A49D2BCB9C6A187BA4
+:10AFF000DA18F3566FEE3B5D7195F14E6912C03C65
+:10B0000047033499276FF0561CB69A5CF22B3DF338
+:10B010006D5245892F7232DCC5D2BC62490BFF8F5D
+:10B02000AD6B072B9F9BD8D63539405C379B68B8F2
+:10B0300069512447120A587DDA10438917EE5CF9EA
+:10B040000A0896B3EE52C2D83B65A412DDE41C1484
+:10B050004DDCB7CEA0A14A65D32A832FD8C010F00B
+:10B06000B0F88DCB0AD40DEC5513375A4E73867C4D
+:10B07000DDC54A7ED8C3B7EB20069606DCE6D89538
+:10B08000553798367F6E9A0766CDD25FBAE0EEE00C
+:10B09000151C8379897386620C582FFCA2C3FDCFDF
+:10B0A000A80F12BDCAE9E3CA7C04137BA35D74BC7C
+:10B0B000EDE609671C2F8790B4FF65D848E97A9BB5
+:10B0C000D083CE2F59A8F2F635CDE509C69F47EAC1
+:10B0D000C5B4483EED1A7F6966EB2659F98C0FAC72
+:10B0E0006083CF36A72A2D866DB62F0367EAEF5E01
+:10B0F00012F8409937FF0F1FD045BB6B81D1E2F3A7
+:10B10000CAF265ED480F320A4566C867B43D4E3F46
+:10B1100056A554C3C21DDCBD8DF86D7E2EB2F67BE4
+:10B120008380F5EB789EB6890DB47CE47B1D8E4E52
+:10B1300042DF85B40C5A01D2414C72A4AAD71E0436
+:10B1400051B3428EC8F5FAEEF7D3E820B8DA973E4D
+:10B150003C8D0384680B9D02868CE24A64D589E1AC
+:10B160006083F36BE9F4C9549C50EFE501D20C49BC
+:10B1700029E688AFFE941D6D4DAE833AD7EDB71525
+:10B18000C58D0FAF90224374E465E2E9EFD05BDF39
+:10B19000A5601849EA88221210094A547B177FAD2E
+:10B1A000CDCBAFEBCDF8D450653E82A86CD7A4C709
+:10B1B0004FC60D87C86C47D61423EB1FE9E906B5C7
+:10B1C0009A32EFB4204468D9E4B6799121601778B7
+:10B1D000901F6A9DCF1CEF4E0BC428D9743D1B9D58
+:10B1E0001E4432580CB598D4B1BF411F1FB4F4B3FC
+:10B1F00084ACF14C4EAC2415495402E0B4A920971C
+:10B200007D03051E606AF9781E119C52814D06C0AF
+:10B21000CFD37E403171C17FEAAEBC9FA01A2A70A5
+:10B22000C7ECB445C9CDA5B2011E58F40B004DBD05
+:10B23000C4D01588323F3360F7160B4E483378A0E0
+:10B240002160BF4D26B740BDDF0002235CEB85D1F6
+:10B250005C1589A047EE1032503EE23941F43ED3EE
+:10B2600053DF6CCCE5B4E2199D9FBD42B04D97E52C
+:10B27000A318AA3BA047D8EF9BC77B5FD721C999EA
+:10B280003C45D3F0BC6A6A74128FE8BBC4B7EBB517
+:10B29000BEB58897A78F42E4B76E0FDCDE13C832C5
+:10B2A0004EAC20FD1F4BC063EB144536A1DA6E0B8C
+:10B2B000D258A04A527C57DBCF257760781056B31E
+:10B2C0002ABBFEC54625166E45D15CB0B9380AD8F2
+:10B2D0006B4531B6CFFF12D5A5A3285E3C853C75E2
+:10B2E000A36E160A009D425F9D8E7026E2AD370167
+:10B2F000A6D468432BF92DE21E080E6A637F979A45
+:10B30000E4A162A6313158554608647EAC573B83B0
+:10B31000A7519ACDD490D145159EA5D81C4922FF9E
+:10B32000654A6975567B2928D8B1B3AD1AC61CFD8C
+:10B3300027278A8241B2B017BD9C93A25AB5BB6F32
+:10B34000E02405AFE966FBEEDE5F475BA8AD391B85
+:10B350005EB9384B6E25859D5CD2BEB6FFE7A23D37
+:10B36000DF42CC1D4814A70E3EDC965CA9EDA6D6A4
+:10B37000501D9F360DFA394B8AAEBC2D29877A169F
+:10B38000F7E7D2B6713468F19AFB01F21E6DB35241
+:10B390005F07F9CE09E485D0B2657269668D5147C1
+:10B3A0000D3F6157E3F05C7FA297FEC590B0423439
+:10B3B000FD082D159AD8B7E5F0A3D5B390DC27B0DA
+:10B3C00080BA4E81673A303A9D5B907C07F6A20DB9
+:10B3D000C1F9CDF9F400D7DB28BC30734A38B8F88E
+:10B3E000BC0E1219D9AED4D582F2D5E1D8C6C54C5F
+:10B3F000607BD8C017791FAC187C0BF9507CD83B08
+:10B400007D94D192B039ACA75AA4F2D617215B141F
+:10B41000C7C98A9DCA3A43D142593930A38FBC1853
+:10B420006B285C64A994787D6A8A38D5E4DF902023
+:10B4300012ABC74D6D548482E07D771C88A9411EF4
+:10B44000C7A61BFDC499353B15EAB392315729B500
+:10B45000BC643D90AD278E68ECB704733516D125DA
+:10B460004E46A34A616FEE6F1C14401A5EC4D1733E
+:10B47000626793CE2CEC0F94B514D21BD2F801F076
+:10B48000D4D0D876BB7575E88F9830978584863D83
+:10B49000FA05FF5C81D82AE4B82E719F91DBB4E9EC
+:10B4A000C8E7B7C2D72F0CAC3484165C4CDA66E41C
+:10B4B000E14CF16CF0DE63ADEFB50A50CDBA9E6B96
+:10B4C000EEB5ACDE7228F443975CC6CC42521593BD
+:10B4D000CA6D800751249561368ADDC9C203CD0D3E
+:10B4E0007E4DD037A8C4450F609200040CDC73E594
+:10B4F0000E19CA8C56935E667F29308B7869753C2D
+:10B50000777912308737288C3ED312F85DC78BE6E7
+:10B510004E3DB6FDB07FD081E292C4E7B7CED329CD
+:10B520006713B5F8385D94D94713DAD7BAE9B34051
+:10B5300094288A706F39A10BD00EDB382AD7DBC96B
+:10B54000317C36A5CF08A52EFD832FA07D18A452EF
+:10B550006F796FAD48ED2868F23562F57F834A6FE9
+:10B56000F77BC4F958512E3320D2D7C71A70EEEEAC
+:10B570004FEFD7C97F239471B1C96C38FEDBDD5022
+:10B58000CF2FDDCE579F0925B61D57732B1639E4F3
+:10B5900023B5E9EC7FB8A6A93A66318225309BC075
+:10B5A0008ED459DB5B6E531C449D80BDCA3FC74A95
+:10B5B000509CF7448D7D506502348357C08195C5FA
+:10B5C000D1D5E5A7C213B12685288038099603D4C2
+:10B5D0006601750D56206C0571ECB798A191CF30BE
+:10B5E00037013CE7F9025348CE5921021662A5F60D
+:10B5F00038709764A4F34A701D7C65ACEA130BDEC7
+:10B60000859DEE2481E146CAB83FEA43DB980AA350
+:10B610000B6BB494F97559FD46F74D436B268B17A8
+:10B62000A37F05E6406BEF1691DC519A810BE1791F
+:10B630004CCED0D4BBF4D707135808F22908634A7C
+:10B64000786788B0FB9E336ADD55312B1018E93DD1
+:10B65000ABBFA7908CB6DC2E8253B5239AF5430678
+:10B66000A6D27975675F6A8F2AAE28FBEB1156C5A3
+:10B670001343E5DFE67CF0B909D3C8BC9FF2A045CF
+:10B68000E910A27CED2A485EA782F75A9382CF6127
+:10B69000A5DAD1B010078B25792FB32ED4564BCA1B
+:10B6A000D03702A5833F1756AA0AB66F53D34F7DF2
+:10B6B000A1DD31DF1EBCDD849293589A8E5A95AA83
+:10B6C00017E11829EEB4A6C09DD0C8605EB9543702
+:10B6D000B194B75F1334A72C7EC80FF3D3B6D079DB
+:10B6E000035B7EF52B7B42BCCF4208A6D6E0ABDDE8
+:10B6F000CE6DA4C06661843A503894B5547C8E43B4
+:10B7000001BE7651E5805DB0B71EDA62741220EF9B
+:10B710001E3DFBC63808CD13C3A322C6180EDC1F7E
+:10B72000ADBFE5A9FB227B858C0396AFD1D069CB59
+:10B73000D89A2813B7F6D171501EEDA12920BF0B5E
+:10B74000017ACB966CCAE0AADC7B73014CADD1BA0E
+:10B75000B20E040CE118CF5B42BCE97083EA2AE325
+:10B760000F80437BEF3AC673D1E0FCD92DDCE25A5F
+:10B770001DE7CF5DC9E20425CD97C12460DAB39EF1
+:10B780008459D99333552D838209CDFEE68B798C6C
+:10B790003D8F1319CE2E42EB5301DD6593E84EDF4A
+:10B7A0008B6036F36FEC3F359B88DE9E7A47BA4656
+:10B7B000D7C985F9080D9A0663AD20A6EA676958CE
+:10B7C000AF2ACCF4296F50947C71EBC4210EA014E5
+:10B7D000B7CFBDAA02BEA9F6618579EC916F8B3F08
+:10B7E000E287C6A525132EEFF0D162C6B4637DCBE8
+:10B7F000F62CE7CB846ACDDC35C7AA3513909A5E68
+:10B800003FF467F12A82776AFFC52F4CE8877F42B1
+:10B8100037250E0F0C9BD96BCB9668F80D72D75459
+:10B82000C64396C1D3D603426E3753FD424E3BE624
+:10B83000457563D4B66F441AFD3E73779DD680E399
+:10B84000790F7BF34C85146F5E0F817C9514AF1CD0
+:10B85000DDAD91EDDED5856C961A349CAA2E6B2752
+:10B860002F2A3D3027C37E0B5877046FAD5E4F877C
+:10B87000419B4F5EE3A0655A1C4D1D83E1025FDDD5
+:10B880000022239F993C0B542B0AF8C17BE9A3208B
+:10B89000EB45F777EB29C4664488D339F034F8AC2C
+:10B8A00099710D50B9AA81A2A173EF8A6339549E90
+:10B8B000680D148A5B31BCA9B9B4796C9B5528BF5B
+:10B8C000E57CBB3D7C8B21F4FF29072EFC450A84D7
+:10B8D000FA611CC03465C9FFB065D8D7AC442B549D
+:10B8E000A32A24A5ABB073DF77A7A1C5536F88BE89
+:10B8F000E6DE563102051534DD87B4BCD1686BBE77
+:10B90000089AB028715808B60F017C0521211488C7
+:10B91000B36914B88F8A3FF3DD2FA38D0E65538171
+:10B92000456EDCD71953DE0072CA3C05A5192C9D63
+:10B93000FF25C773ECC9C0FD01AD89CD60AAC93A26
+:10B94000AC74F1DDCD01246B3DC8D35A87D87B7E22
+:10B95000E19114E91A5DB53B2C2E4653DC07928A1F
+:10B96000BEC57D9C7B9DF181E68407B46BF0DBA7AF
+:10B970007F4175EC313C31436C0B7CF2D97E68E43D
+:10B9800065743D06DCF8B3C149DB3827F5F320992F
+:10B99000B908D1FEE4AC8A5FBF19BBA53E282704D5
+:10B9A000289CDF6ED8A1380408036C8CAB4A71B9AF
+:10B9B00046FE8DB44D253471DB0D2E7DC66A44974D
+:10B9C000AE4B584CC594B3C8EAD04AFC79BC6BDF87
+:10B9D00095D6CB949F463E47F895C37178B2AD207B
+:10B9E0004B9676ABED69B79A6562AE7045D6935FBC
+:10B9F00007A168081054DD8F803D731CF83740782C
+:10BA000040603D814CCE8E8873D8B37D873E0C5DFF
+:10BA100083B15808207759B47112758B8F73E788FA
+:10BA200093FDD4DC2913DA79DADC03B5184FECFA8C
+:10BA30000615043F19FBE55D7B1184BDC52DB7EEEE
+:10BA4000975978E249A2AF548C3772B51C67FEDA79
+:10BA5000E4CE6BA0C48BC6C8C218807573A76B50A8
+:10BA6000919A7BD714770446F11BC6E43AFD366FF2
+:10BA7000295C0C62FFF17B5F98AF8395400B8019C6
+:10BA80001EF916BBDF0118F9126D2F73BB4A6EA0A9
+:10BA90003791557822DD6607B98F84FB88BCD3B215
+:10BAA00001DF25B7E596DAC4A7308910F44B519031
+:10BAB000E99E51B631AA264EF33234AD632B8C8CFD
+:10BAC000FB09166059D929E19CF7D54664B500C534
+:10BAD0001707DB5439AF58FB1BA97F5AB66CAAABCA
+:10BAE0007DA4A8F3B00D6BB5204061359306E33714
+:10BAF000739413FEB6E3E59FCF4230625A63491157
+:10BB0000BF8FF66A0D8F809BBC0D6682A0FD8DB540
+:10BB10004D3C493F39FEE8F2AA5D3D0CD295A4FDAB
+:10BB2000A4E85CBF7ECB16729FDB3D6FB161B5B3FD
+:10BB30002F4A41477E7C574BA04082708115EDB85B
+:10BB40007516BE7291975605D03127EBCF0D57660B
+:10BB5000A429A62D5DA007F49AE84DF4883F3E097C
+:10BB6000A6E14B11981A4882237D7251A7E55A0D20
+:10BB70002D266DA51DA350FEF12DB90D322C983E3A
+:10BB8000757493973FBA4C1A9DBE8B74E826AFA389
+:10BB9000B6E5EB33286B981B52D83FA523069B3D97
+:10BBA00098A709BDD89A052AF906EA45BDB2EB1057
+:10BBB000B96A6D889C21AEC24895E394B2649E5CDC
+:10BBC000786E0099C6B6856E6D8608FB5412F746EE
+:10BBD000801DBD46A57AF7CA912B9AE78E1C41239A
+:10BBE0002357F5EC547EB5AC8F45790DB192586B67
+:10BBF000F71681E0C70A48FC5FE9397FC8A5418B89
+:10BC000028168D04372A6530FF3CF05AC8EE8A8B1F
+:10BC1000E0233459651B8216CD9754A86C575362A4
+:10BC20008E6C793943B2DEA966EE27B9EA58820CE8
+:10BC3000AB66E22861F4CEEF00457D8A1794A182BD
+:10BC4000D07E0E1B21B4663D064496AE3B92275033
+:10BC50004B11C21DDB7DB75A273840CC9CCBD66632
+:10BC6000ADA7AA68C948FE733FF9995C9FAB498BA1
+:10BC70006C286BCFEEDB4475E99C8463041865EB9C
+:10BC8000875F5D92482FE9F57D52C83524336D17E3
+:10BC9000820E62621CCF4B4A948AD5BC1B83A08D56
+:10BCA00061D1190B42009976762F61A2E2DCB4A42F
+:10BCB0009760107294D6F39737EBD95D5DAB8CA982
+:10BCC0008234EC7F6480C382AE1FE0F013252557D9
+:10BCD000995EB59128B1514611E0A925F8A606F85C
+:10BCE000F3B549532BD3B6369D41312731C4C3A494
+:10BCF000E4F7A2C2D6F60ABD567F7557FC806BF9F1
+:10BD0000AD243D6A100632770D7E8C2BB975F42771
+:10BD10009A3303D6540107C6143F6288AE4F4A8651
+:10BD2000D7D072DB85D4EE9902CC8785EB83492985
+:10BD30006710194074AF9F10BB6117377CA58D1F2A
+:10BD400052EE7BA72263D417673BEE94117AAF1AA9
+:10BD500009ED4A8D8A3EB83FA05FFB672CD203DE17
+:10BD60003D3BE1F06C3456D20FC4F3D166BAE7C361
+:10BD7000EC2C5C488AF088ADA3E4F229B14B19C6DB
+:10BD8000AE5A75BAF39360D1B2F9611B5CE45B966D
+:10BD9000A3A3EDC4A5423B9385ECB3F7DA6DBEB522
+:10BDA000265FD9B316B28382E65245B7C847A3FAD5
+:10BDB0009390B634F78A3C9F2977B7755012464660
+:10BDC00026DBCDF98DD59794D8D9E978EF26AC3517
+:10BDD00087992F680371564D88ECFB22543B96BD22
+:10BDE0004F1EA26D6E1F8331C28820CE97CD5B5B44
+:10BDF00059341E1C6B4FA03B36BD5742CB85546552
+:10BE000048B99DEBD05C736D41FB70A414BE9D8658
+:10BE100088EF761C3F614B99D699EE79973BCCF829
+:10BE2000511EC96823874AF2D1BED35CC779CE03BD
+:10BE300070756F6561FDDB98BE9B2E735B171DD916
+:10BE4000095F5578DE10F19CCA1C7D80A12B2096DD
+:10BE50005B22B5869CE36E647AB7A4AAEE5E08A264
+:10BE60003B53D10C398A86752996C9DCD4C0B5FFFD
+:10BE70000D35EC17839EEE8A12183BFAD52B4B5DDD
+:10BE8000DB811DF919F5E8EEAC848ECBC30E679308
+:10BE9000D5A5AF5FE997A083069ADA41A34A1C6D46
+:10BEA000911BE4CEA92566A8413B16F3EBE23E5E6A
+:10BEB00000B36A5BB91EF34E6748B72C82A5595C84
+:10BEC0004B94F7E85D0C2B5B03A6BC10053DC574D5
+:10BED00076425370E2A86F4DB4F91F39CC8C9E891D
+:10BEE000C3D2A40E677FC4F7B5B53003B8DA917832
+:10BEF00053271EF7CED19E937D1A4A7DB9A47C06A6
+:10BF0000E8738C79D90E5A50DE4380277FC5D17FE4
+:10BF10007C356566CF4EF057BA7CC496C97669FC0D
+:10BF200077A51A8B84D9DC99939D22F9FB7AE0A737
+:10BF30005CF23756AF4716133691E547B3E333202B
+:10BF40003EEA9E963C4D19C68C47AA0E1FC2CD975D
+:10BF50009A4101A9DD67B741C1ED683EC43C38E1B3
+:10BF6000503D095CB7E88FA86D1C14ED5574B36D96
+:10BF70000ABB921EF07BFFCB144E493EE80C10B575
+:10BF80006A2B8F5F4B1D51D4D772BDCE46A0C0BD6A
+:10BF9000AFC1773C124F96A80C0AC3934CBD17D083
+:10BFA000A8F79B8993FFB9FD43F191228BCBF52232
+:10BFB0009E94B31FEF495616E1A8F31C7B32FDCBCC
+:10BFC000BA93E5DE08589D80E73720F376016E7658
+:10BFD000880A8F1E86602978052FE8E9B8C431BD2C
+:10BFE0009E367FCEC69572E2C5738E19057D1F50B1
+:10BFF0007280D926D3F09CAF4D9BA29F9FF3D9545A
+:10C0000089B22472B5F47B2172D17EDB8A468FBD62
+:10C01000A389039865F7CAB35EC8481BECC3F3F95C
+:10C020000A45694466F4B580E938036FCCBBC0515A
+:10C030007D93F327E242751EBA681D7F404B2DF5B4
+:10C04000860B909D90E44976D84C19310A523BB644
+:10C050002095FC85F4BDF50148CA6FBED9E87C8FF8
+:10C060004F85682D0E367C43922595110745EDFED0
+:10C07000AF79CC7DD842311F380CAD706DAF80CA1E
+:10C080009722984673F11BA6E038A5455A6B8EF1AE
+:10C09000452BE6E22D6F9EBA87FD60BE0E3A5EB973
+:10C0A000F88E50481D3CF21C39E74165DA50F7AD77
+:10C0B000C8B4F9C06D8CDC05801978BACA7DCD6032
+:10C0C0000FB0C2A4D170E94A27FAC332D7A9FE98AB
+:10C0D0005E1B81836C34070D71ED66AB709DE5E7E7
+:10C0E000F83F3BC6ED7092A5750BB370444DDBAACB
+:10C0F000E9CE70E1B7FC7D4611AA8FE9A0BD732996
+:10C10000E4135F9ED06E63BB71279BC77E9F768EC4
+:10C11000D9BD6B815FD7758932BDDD7C3B1B725DFC
+:10C12000734855484B9105011F0FC5FA46BE349E12
+:10C130008994A1A048539F08CA970F774B787CCC6D
+:10C14000F59A64B1E35FCF9D29D8E04EE7225362B0
+:10C150002B79F2E783096FC4546CF96FD04716B29C
+:10C16000507DF5A3194A02489A707A2735851ED367
+:10C1700042C17CC023751FA116BF90B5F0FE2224DA
+:10C18000474DF18D8DED0E064AC3C3D976584E8EBC
+:10C1900020C11DB8504B732E27DCFEE512AC1729C9
+:10C1A00085C19F356806B17065ED64A0A35A830D03
+:10C1B0005F15134956DE8A7821B431FEB9F25799DA
+:10C1C000E7C8682C8F80FF053E183B71DC0FA5691E
+:10C1D0002CC5FE09BCE8526341D43C37C5DEBB2206
+:10C1E00081523FBC47DFDF5B92E2E4ECCDCFEE4D06
+:10C1F0000866F1141E2CE5634D0CD8C93BA935AA7D
+:10C20000EE83BC174F6BA539F5C514611F439063CE
+:10C2100087E5D386A42A38B6611DB56EBF30C2D774
+:10C22000B9D59A755598D58D70C6D1024F23DBE8E4
+:10C2300045A9C1630350C071A8CB4BE28223F4C26D
+:10C24000DF701D18ED26EB0497F0C5B7AAE4CB61AB
+:10C2500073860D53AE185CBD7188A356A2F617E025
+:10C260001EB109E3548CCC9B833FF84E3D407E6663
+:10C2700088F21988E24EFE089411FE843E8E0B0768
+:10C28000C363C544409B06A11BBDF63793F946F432
+:10C29000E01EE0689CF6C45CD567DA410849D7998E
+:10C2A000EB6ADD65E274D1DA97AA1133B0BE24EBF4
+:10C2B000E1C86B169FFEBF71CC046474A1A109A9EB
+:10C2C000541C7FEA606CEE27A94DA82F3E34D8FF9E
+:10C2D0003549D2B8377A298A25957FD8A5A766D45B
+:10C2E0006558796F3A49123CC4DB81397B0B208455
+:10C2F000BCAEBF5576F25CEAF9621985831E5CB567
+:10C300001B706E7170276FD6FF9098AFDD66116459
+:10C3100075ED70693F0845CE56CC6CD87663BB2D61
+:10C32000C3C37F946ADCBA1ABC146A798CFA533D91
+:10C33000983BDEF717A3E7D198FB1A5CD96F7672AA
+:10C3400064FFA36F108E199636031382D2477806C6
+:10C350001EC5AFCCEE38638BEFB81BCAD769B34AA2
+:10C360007C86016BACCE3413B5A0FED96B672A4234
+:10C37000559C3A772A90D9BC7D684EAE7F6B40B110
+:10C38000AAB8BF389229451DE62AFCC7D1AB0628BA
+:10C390006787D65761AE18FFB1F314F5D9465AEC4A
+:10C3A000733D42C4C088EA37F916F0415B7D716C79
+:10C3B0000AE4E6F69BF6C23A2D4E2D4332DC7E2C83
+:10C3C000BFF1C73760A6821EA7C7E0340A752639B9
+:10C3D0003FE1598ECB4011E4E292466D06BA326ECF
+:10C3E0004CA23812D1F022084772B351772430633F
+:10C3F000F3B066B399DC1C4ACE135151641DE39629
+:10C400000E932D3B7E7430E36C4E2DD54D22EE27DE
+:10C41000B77D911ACC87FB838F71498E3DFC3DFB24
+:10C42000BE8D3F946B9D6AB27250142A67E29DE7FD
+:10C43000DC3005AD505B957D235BADABDB98FA0737
+:10C44000202AB8311D9EF5305F64F916A9527ADBB7
+:10C45000A47EBCC9D0B194FBAAA97983259E13D32D
+:10C46000F6E853944393D45B4070583655F359E142
+:10C470009057530E9A847CB59DE1D0D83C981365B3
+:10C480002DC2CAC3BA5D230D92E9918ADF64506957
+:10C490000D54EC36446A82D6F896B090077716CDE4
+:10C4A000441233A08E22FD050F5157FF7ECB377209
+:10C4B000FEBE1C8FB7DA67E6C41A33D6E3EF357ACF
+:10C4C000C6018F239898E7D8AD65EA9C051D74B81E
+:10C4D000237E83B85FD67F92D6BE4BE8B0B31B7B7A
+:10C4E000DFD3326DD7F2058B83F67D2C38BD197AF8
+:10C4F000C619669286A2C975864B78FD62DEA6577C
+:10C50000A37D44949F580635101B07B867034DCB95
+:10C51000798243C9F30DD4FB7F11404908BC061250
+:10C520004779E70D70D8DC09723B0EAA399886006E
+:10C530006C0113581A76C36290D325549E5A4F2625
+:10C54000BC47F23FC15157F85D572BF7D4C20B8B54
+:10C55000C65C81B614E24815D10CE94A97D719D2C6
+:10C56000E7117A5612D55C13CAF9DE6A99119490D4
+:10C570000A6573C13441D772549A94676878B87168
+:10C580006191B33AC30A094678B248BE6B5E606FE8
+:10C59000BC743418A64488A0BA4A4AB797F58712E3
+:10C5A00051CA79AE000CC90D0D3F78BB0E01039343
+:10C5B000A0384DDFD33A373A52AF7EA970062BD25E
+:10C5C00004FAF50A18754C0065628194D65B0B304D
+:10C5D000D00C6F2C1C3F3EBC9318E6A66A37D7E1FF
+:10C5E000B03F4013F931A94B5F14882F7B0E552AB9
+:10C5F000FDD7CAE082E26651B60976C525E065FA44
+:10C60000460E117A2B780CE3E309309CE11A6B9CFF
+:10C61000A6176A2387F19D4BDE49301B556A78B413
+:10C6200084BC1452A99E1F0F02F601C929FF47C3FB
+:10C63000A702DB25A76874960819085932CC4377FE
+:10C640007088CD13BA26FAF12ABC7094BD23027DFE
+:10C65000E319C6F13053695B212C78C92EE6FDDE63
+:10C6600000210B7A9D8CADA24575EA29C95D6F89C1
+:10C670002A47812C5525A7ECA8C91B6CF64AD5C2C0
+:10C68000C075CEF1D5B2A9AC7D19AA9F89EAE0DBCD
+:10C69000FC176FA777536EE8E15C3BB16BA2A3DD9B
+:10C6A00039B7468E446C41CC583CAAAF4092EA76EA
+:10C6B000F661FF16F5F62F58771E246DC2C46E7A08
+:10C6C000A5E528E9EF31BAED961F3C30D49FBBE9D0
+:10C6D000912F936AFDB42983BA94149B83D0638508
+:10C6E000A8EFFB13509DFE05965B3B46F18562EC7F
+:10C6F000919E7FD6194308E8FEFAD0DEE8E166DFB6
+:10C70000044EC14342C24B2DF4B43C65139B3331FC
+:10C71000D9C17D397F7A0891F606F2B1E619729B8C
+:10C720003A7A1FA0B8FD06FDDDD99B6103EA4BD420
+:10C730007C2FA1074210D35523FBAD19356E5ECE79
+:10C74000C84EA70C3EB3407F1784122964DA738E5B
+:10C7500086274D8CF68093E598C1E6B4B58695E2C0
+:10C76000426D09A695207CF75C3F8FA286CC2BC634
+:10C7700019B4E900AE438A2A5462C9A20128568539
+:10C78000FB55784B7705FF453499F81BDF55D011E1
+:10C790007BB2E62CC2E7CEDA82AF88FA4DC6BB6523
+:10C7A00002858F8305AEB6772D0350C4EB0D4DE4A3
+:10C7B0009FD17BD4F682B546E5E256C400EE4161D6
+:10C7C000ECAF0A4821388911271550E53BFB10785A
+:10C7D000C6F3F0517E0CC5F59B6D2DBBBD89793339
+:10C7E000330A224307B9C3036400082033C540EF6E
+:10C7F0004C8A109E07080BB12FBBDD78560DFD2823
+:10C80000E39FC508DD1B8D751B9C7FF954CAC29C34
+:10C81000033BFA04748E4FB34CE4FD487E07A062DC
+:10C820007F9B59435C18DA7DE2E89C56FD9ED8C791
+:10C8300086DC2E4BE8526985DD7728485BC1960E71
+:10C840005E42BBAF945CE9485B6C4E64C092FF8B68
+:10C850008E13670170C6830416473797115FFB2A52
+:10C86000F371D479E3D2F5C1B19E70CEEA6D019136
+:10C8700079CF55688DB83E2A1358714CC2A35931EF
+:10C880007E686E061D34814F5E5F85F7F41E4B1681
+:10C89000EF856A7C8CF121EA5053DBB32B57DF57CD
+:10C8A0007DD46AEDBB1BE4CB1D33564AEBE1EEEDC4
+:10C8B000810B3A525A163AD84F9C947B85D5FAC0D0
+:10C8C000A2DE71DA32E59C91F7F8ACA45038AC8660
+:10C8D00068E442BA689818217F252B69428F9258E4
+:10C8E000D76FBA45221DFFD6AA3BF8AFA890C1C2A8
+:10C8F000C62CABBB4136849545BDD6C88A809735DA
+:10C90000F3A5466B72A4349F5CF5BA76A83F8CD928
+:10C91000169E3D54B1CF66B396A282F42273FFF205
+:10C920002EB5F4E603811612E39CF8D77A120B4178
+:10C9300004ABD32C2BC5691AEB4264BC1063FD0811
+:10C94000C14FC86C9C50F489B01B1CAEA4EBCB65E6
+:10C95000CC88FF89A8AEEC636269A0E7840CA37F52
+:10C96000CC4E95CFDC18B7D6054F37017914F50CAE
+:10C97000BD16A817E3E3CBF18987CBC07556D35812
+:10C980008214B1953E61C51E1D3600DD74E014FCB5
+:10C99000EB1A850C30455FD7FE792F78942BAD4A82
+:10C9A000650876F2938623D24463F64EC404393880
+:10C9B000C2FC7E0DCA2F3A56577D3473CF2FF42117
+:10C9C00038D9F08D1CD5B5EFBA8BF7EE952AFD0559
+:10C9D00077D9323422F3920A2839FE2BF8A29292A8
+:10C9E000852E14B1DA8CA1CCF71DA6FB190975FCB4
+:10C9F0009CF68A32337D885FB6573BB51D041E74A2
+:10CA0000E64EB85255727028EA5D3D06BCDF7E8D59
+:10CA10001862B2E01D26E731685B8A15B9C0335948
+:10CA2000F68391C3CAC9B80C813FAF2BB2BF6C0D5E
+:10CA3000BA41E0CCC99517637C7C467CDDB7A32E58
+:10CA4000BA1CC56ECEC93A81680CF25A594F2B8474
+:10CA5000BC4E42640CC85859E3D0A23EE09D2FF46E
+:10CA60006B19416F31D806E15CDD82CFB11CB23564
+:10CA7000379EF1EBCB20B0DB29D53E64CC6BECA626
+:10CA80001D47B2AD080D4E356722A02572C18CDB63
+:10CA9000ADA5F4355343422F2055E603149663BFEA
+:10CAA0006EBF72F55CB0455EC5D2A921D346043F86
+:10CAB00079EF59B8E61A1C0B8BD43F589E47929CCD
+:10CAC000326EFC6E56D05D0224C93016CE68A6B414
+:10CAD000419742373E467CBA92EC97B4C650089BC9
+:10CAE0005B102C830BB0812D7DE52DEC0EA9DA0EA9
+:10CAF000EB3CF9320DB74E8FD53AFA50D612304C86
+:10CB0000C9E76B792C5A0899AEEA0DAB41EB7F006F
+:10CB1000A80164BC71E23C24E3B9C0A60CF97D9D78
+:10CB2000CD75364171C586F7F28BB96650611E141A
+:10CB3000202995B100A4DAF121137A8C453997A206
+:10CB4000B5EE9CDAFDF0016AAF1BA408EDECF8D25B
+:10CB5000BA30C5EF86F08B60312C0BFBBE17027527
+:10CB6000BC9DEEB716851928014AF849EF7E72F789
+:10CB700051F53219C855E1BC7CF20B92C41C68FD1A
+:10CB8000028439E60BC368E6270C658301D39A73E8
+:10CB9000CF54D6048C45018AD8CDEE124A3BD20D33
+:10CBA0007D0FD3F9C16B734642EC97146EB49BBDF5
+:10CBB000F33350AC1A1575F0BB877BA5AA72476892
+:10CBC0008B7EBDF6BB1DD3705ABF2E2AF6AAACBA17
+:10CBD000D8619A247F021BE90C371494536394BAEA
+:10CBE00009AEB1A7F4358095864A9223958D430806
+:10CBF0005B334280B49D65142DFC925FB1B59BBF41
+:10CC00004B548F8CD277B788C641F71F91FFEE380F
+:10CC1000CAD6EFD6C5E1D0F507564EE7A4C37FE5E7
+:10CC2000D33E399209701419C2D13B83344D335825
+:10CC300008D747D48FECC6E9E1073835BF41988F54
+:10CC400010C9FA05174C657ED447AA57DE9E62BA12
+:10CC50001AA39C2A3DC3674FE86B8D7D3238F34F92
+:10CC600047EAC9359E44EF5B0D8F34FC64EF2648DC
+:10CC70003702CE940903E3A1509D40275CABE2E369
+:10CC8000B5FBE57D10636F795AED2B7D82F98FF648
+:10CC9000D395A264C6C02BFEC0258A41D4F68D74FC
+:10CCA000B51D4ACACB97793D23D88569D7D5036688
+:10CCB0002908FF0A3986E9C6D80F7CE31B8864720D
+:10CCC00086D57F0BCAAA1864E81AC6D53B4C647D8A
+:10CCD000F58DE3A859E76A33C681356A3044AB1A4B
+:10CCE00086FEE775D32161B5E2334F4B27CE802214
+:10CCF0009CE2E582C842A886ABB29E7F580CC66D06
+:10CD0000CD96D56BC01F1AF357B2D787D597DAEEF9
+:10CD100078CD82DE4D3AA97D8EE68845ABD628E5F2
+:10CD20006DBEF95073C7A61283A444BC22EA35F63F
+:10CD3000624FD7E16AA8EBE17A5B78E2547D3D333C
+:10CD4000425E0A454131048BF55603112878C0E74D
+:10CD500074B76283F43F296352AA75518F18C6FDD8
+:10CD6000480C596298C9E28CE83CF3B4BA5AC245FF
+:10CD70003ED1735BE9F27A78CC38139B0784BBE22F
+:10CD8000EA589EE2919E51E5227708B416142A3B98
+:10CD90001E562C5D36699714AA62D474B96C9CFB3C
+:10CDA000416EA21AF6304216AE2E668DA786909B73
+:10CDB000442BA58C6EDE2DBD80D3955F891FE627A1
+:10CDC0000CFB56F12C754920AFF7E5019D1DD726C8
+:10CDD00093E3CC039919E12D8AF914B3A8DC57F237
+:10CDE00058734BAF63567FE8B8D25487FE8F5C1FF1
+:10CDF00022FE8423F5F32B6D2C091737BACA9F1F27
+:10CE0000DA0C814A1D23E636DC1F9AF182575966F7
+:10CE1000A36F399F03772762E109CDD516BA2B7A24
+:10CE2000287332E4F43E55E172FFFE009E3EC7C116
+:10CE3000129B49425EA3A117F65292A2028947EAC9
+:10CE400085FD43E6213DF706D118E6967148118429
+:10CE5000709752E640235F90D951E8B62530EA8FAB
+:10CE6000E07D78F48A9A4F1E14A2F4CFC09DFCB0E6
+:10CE7000AA56A6DD11E2E1745CA594CCE9886DC6E2
+:10CE8000FC7E47B6A69251FDF4CF40194B58FE8F59
+:10CE9000F234524BB1166D9D1A648619C3DE5EFCE6
+:10CEA000580363810B85F793F59D64806D02F82626
+:10CEB0008EC317227945967B702F31F7B54D2B9A8B
+:10CEC0007E8DD335E57B435AE0D53478DF4C9FCB5C
+:10CED000752D42D9CA8E6E76AA10989CF9137041AE
+:10CEE0003A8BA9D444B2761F84E342F012284362FD
+:10CEF000417C22A381F7EA5A900FEBAE90990B7018
+:10CF00006B51E71902FC5FA3D0A719CA321B1C0C96
+:10CF1000E8902CF3B3B308E802999B1E56A5E2ED06
+:10CF2000CC4A18C56A6E9BF2D8780578A141475A59
+:10CF3000BF9B478C149CA6994C383CD0DD3628BB4F
+:10CF4000977D2CE8E0647E2FA065D1F0140922D4EF
+:10CF5000A862AB2AD68143F768C3B0D7B0EE0E21E2
+:10CF6000A2F3E3DB256A001AF98223B25ACDA9960F
+:10CF7000860EA790F49ECEDE1E38E00A0A497D1F79
+:10CF8000A0B96863681E2C4F8C627F68E3FFBC5FAA
+:10CF9000FB53FDD444070D6208170D3700CE5EAB7E
+:10CFA000F8A66D0ED86E6FDE9AAEF69A2E3E10A8D9
+:10CFB000492490CBE1BBFFAEA7F9701394AF63A1F6
+:10CFC000A94E80DFB34BFF70ED9F00EBDE00CA0C73
+:10CFD000690D98A7B22ED6E4030E54FBD67E90C6F8
+:10CFE0005A6837F1877D9B99BD7B85859E2252705B
+:10CFF0002B0DD76DAB96D65563468089F7A7C68AA9
+:10D00000C8E01D7194F0BE57DC8F9964071D41C9BB
+:10D010001F630989561337849217BB5A2010343680
+:10D020008D0E5C26B992C0EC7CE520349312E3159A
+:10D030003E1749EFBA2B2623B8690D4A3518773BBE
+:10D04000975F518C911CFFA5D210D214A6050F6DCD
+:10D0500022FC565FDF426B762965365FB66CF59829
+:10D0600091A6540444A199F67275212E3D6DA347F3
+:10D070009E63E93C808BE8A9847831CACCF0BA1869
+:10D080005F12EAEBB0FF6EEA55A25ECF82D2CCAF60
+:10D09000DC795B1C8DDE3097A30829AED13A7D0088
+:10D0A000AE1AE9445E6797BC85528C833EF9B5158C
+:10D0B000456164562ED1BFEBB4833F85F339EC82D2
+:10D0C0000AB68FE4D97EC38D122C813232B9A48E78
+:10D0D000BE868D333922C519480F7127A20166DB40
+:10D0E0004DB8BF762B5D620706E36EE5A8E7A0B2F8
+:10D0F000A6156D5FC366F42EC1CD14F237ADD08F87
+:10D10000D5438AB5C7E3D6E3B3DA422A72C11C22FB
+:10D110000A775476E62AA52A1224CB7EA3BBB375E0
+:10D1200005CFA73EC5A95E0B38C7247DBE4C3FFD89
+:10D13000540F2D1939274070B39D3F0AF06B78E9E1
+:10D14000E3C1F97F2A469BA38109165B1C8B2A6DDC
+:10D150004EEF575E71962B76652D40DAEEDD24F4A6
+:10D16000685DA75DB19B3B0653F96CCADEA2F01463
+:10D170001D9C3BA7A63389E29D85C3CFAC307F2D94
+:10D180004B8FFA7CBD0347B483BB719DFD917956EB
+:10D190008F86C9BF54D2796C6B4EF5105CBE0AF90C
+:10D1A000812ADB9E43FBE084488B91A619102F71E6
+:10D1B0009685951F1595720D5F96F53EE6E4A64D92
+:10D1C000A4E4FC177982C55A6A4E1BA218023AC51C
+:10D1D00054B1AD82552B34ADAB79F6855C70D9A7CF
+:10D1E00015C71F9B301E4903936368E9ED9D42E913
+:10D1F0004EAE83E8176B45425AA7E5230312C89E3B
+:10D20000A36E2A68A07BC2C19CE326A4D20214F5B7
+:10D21000F6DB7ABFCBC12BE5C7CBF5926C6DF04C3A
+:10D2200075B5B006541C91DB0E1BC6815E75D69B8E
+:10D230004C68C68061D2BE91BA8AA19FBF7D2BEF98
+:10D240000D32FD421DF69D9E1A77EFD75FA353A6C0
+:10D25000510E048263E1CD48C443392CB81611A1A4
+:10D26000D36597C580DF82EECAF70D0CD96DA67124
+:10D27000FD9A4810C9CCC0BB4B9CF3AFEA9650B0A6
+:10D2800086935C0632BC8A19C16560448D9E3DC799
+:10D290004145EF5B3E887DCE3AFF40AFCC9F119178
+:10D2A0005D3E76F3C578865C05B88032A5985C1043
+:10D2B000286C70DCAC6C3DDD0147076DF96C555591
+:10D2C0001958C2C0F15D5034D292F507EAF18B6A69
+:10D2D000A7B898888D09EF854CDCA4D376A0085CAC
+:10D2E000FE603877F9F9C9A7F092948E450D77EF73
+:10D2F000FFB02751BBDE204733A595C650B157A6D6
+:10D30000999EFBA24A2D5B3D4BBEBCCD655B1604CE
+:10D31000C8A9D0C007D70CA3479A0CD690620C219D
+:10D32000C7A56A6B4B9E6697DF9D8FD939FE236038
+:10D330008BF5D06DBAFACECA5DFCC16D1DE6AB604F
+:10D340005551238CBE68EBDE6DB212998991C9FDEF
+:10D350008AC3FF54421EB73FE92592D85BC6A4BBDF
+:10D36000EBAB4684D5DD70B2E7DD539F0F4DFE0C6D
+:10D370009B7DD8ECDDE69019443FF5B0070545D01C
+:10D38000DBC738E18CA6D81AEE6B4A267BD4CC805A
+:10D39000A534C2C3810582908938CCB21970254565
+:10D3A0007896D1B1F80F8A4D3711A651B5316CED91
+:10D3B000ABDC656D9988ECCF5DDE7115505948F294
+:10D3C000953354DF3127811375B4D81B981DE4BC05
+:10D3D00024F8FC90E482106586D1FA2C3278276913
+:10D3E000F5E417D9BC358D44812B02968C0F1C7C3B
+:10D3F0003F8C6D0F1CC1526D3E6AFC3FD67E430DC3
+:10D4000013FDAE0926256A8C9C5CC3B5D233C403D8
+:10D41000B85ACBE77A979CA4B3464F51EEE23CC68C
+:10D420002172084278B9744019EA9374FADCD784FF
+:10D43000E8598CC7933629AEC76FA1A8CDB0560264
+:10D44000DEB906F4FFC6D9E2C30C252FB0C4B60E70
+:10D45000647176D0DAAF63AE8353423CE347E7753D
+:10D46000A78F082ABF6505F7E4CA8C7B85602EFF6D
+:10D4700078E1137B6A4E28FF3004A7646A117D614E
+:10D48000B1EF168A05EF3FC23615424BCCAA5821A0
+:10D49000158BCC63938E1782716595D16331E13A18
+:10D4A0000581E64672E98A6D8AF626135C9FB417F9
+:10D4B00014F679B84F449F0AB16E00926171EBB9CE
+:10D4C0007382939459CFCE88B81DC7C701421E07F7
+:10D4D00057F4E6FD66E16C811B9409574D4742DC29
+:10D4E000D52EE2874D277BEED3251A6C6C98062447
+:10D4F0001A94F9451009CF74B0FCE600FFF8114CFE
+:10D500002DC96D06D91993EC9B0AEE20A9278A2E06
+:10D5100042D1AC5D13B7C225BB487271E6B862B2A6
+:10D52000D9995EC95A4395D33CA764F0940EB506C9
+:10D53000F9D7809BF7D6E1B8E32F822056FBBC5089
+:10D54000A1CB127276C2F375D45D64D617EF00C812
+:10D5500047FFADA35AEBD057B0372B6D7DE9F88F5D
+:10D56000F09C54C176C4948BA0948840C25EFDE6C2
+:10D570003D324894FE1999DF7E18C0011D6A39B109
+:10D5800079EC837CE1D6F98AA72A360CAC60B842E4
+:10D59000A67FB7F7AA367679F10F71B50F6C7CD1FB
+:10D5A0005C75197F5C89E8B4F0DDBCE1E3B1B814C7
+:10D5B00040F2BEEA44AA11F0F1685BB914DA62D510
+:10D5C000A41BE9CAA8A2375ED4E0A1A677DF9CBF5E
+:10D5D0009B070D8B278BEECEBCAC3428E5EE02AA60
+:10D5E000E5F5B76D784A7AF5151151368F9B306E97
+:10D5F000E0B02723F397E7BBD64D7382AAB2E98D3B
+:10D60000FC9B06ED1DF4DAB2E8C6E54CB36C812C48
+:10D6100003E31232AD55B116F16B483DCF464A8A4D
+:10D62000C1EE2FDD95E3414EA9442D3ABCA001A9DE
+:10D63000C984982A88F0CBD31E97DA1B698FE8DC5F
+:10D64000FC20115AEB23C0960E8795E2C7D9B33E52
+:10D6500086DE3F528604374E01CD19E3026C33F962
+:10D6600052689DC84FBFD09E9621CF8081082CAABA
+:10D670006F11F157448B13DBC9523707685E405D69
+:10D680006873A5CAEEED5338FEFCB49A6ACF7C9C51
+:10D6900022BC5922E8206B9D0DD01A1C1B80F0E69D
+:10D6A000D50576DBA39DFBD9626132C2548D18B8D3
+:10D6B0006D477B71769E4C16BB7D604D66F5AD3235
+:10D6C000380BC501B46E2E968C40E1DDEA0506628A
+:10D6D000070E7AADD55915A369583233F5606C9CA5
+:10D6E000217D6E838843E063B6422057471CBF8785
+:10D6F000D5E658995484375F3A64C0FE019E70A6FF
+:10D70000251FA33AF55CC6260F6236CD17D9BE1683
+:10D71000A2CBBB0B8FF1B33E6EC9ACFBCD5887A536
+:10D720007EB22C3F8D75533B4702F77824C6B84B29
+:10D7300089800D82822EBE5757B865D01C2EB599B0
+:10D740009B6823E16251C579FB45FB819963F467CE
+:10D7500073DFDBD47B7B165B3541680640CAB8DEDD
+:10D76000347BEA3F5F13AEAE6973B02535BBA5B716
+:10D770006B5493CD47554E228B92D86EC50D7B319D
+:10D780009D3BF11682E5FA589A6C88C950D0DA2B85
+:10D790008E8CAECC413A0EF74D91BC553A9789C26A
+:10D7A00024CBF756CC526F754659E9BE395C4DA96A
+:10D7B000216C386A6AE7F41E3EBC71E426B2009020
+:10D7C00084628B94C149ABC452D575FDD52E3EEE13
+:10D7D0006ED7A075011F1A8FDB3A51F2D565B26979
+:10D7E000D8D1EBB7713C771BFCE6FBDF5E2D799758
+:10D7F00093479BE9099427F91F1ABD4B93DB5960A6
+:10D80000CEE8CD3F4F264791D8CA2DD70F23B98CEC
+:10D810000E4BA4CAE982FA2A11BE0CF5902BF6BA77
+:10D820006AF1135467D68CE1820E5BD9FDAAC30658
+:10D830002A858CF83B82DACB25E3BE2F33FFF6C175
+:10D84000ED29DF2ECA7D6BD114CCDC0D784BDFAF18
+:10D850007D891AF6B4F55E5E6F92D729FF1B46FAF2
+:10D860001FF4A1D7013850CCD9BEBFDE8ED89EB3ED
+:10D870005A02E15C1C0A916DF2C2A07CE3E200AEA8
+:10D8800036DE42BCD1C15EFB4E35FA9ACA324A7CC2
+:10D890001B0A1FA81BE8EAA720C8A4A05BA49B53EF
+:10D8A000A8241E1D935BB40BBCBA62721041FF1C0E
+:10D8B000812D37FF87B0E22C41ADCD49499B7DE2F8
+:10D8C000B73BC5029C3D836A85462182DDE71B7616
+:10D8D000504481E8BADCB73CD1311914EB2CD75352
+:10D8E000EBDC524D7AC62C536FE6999D5D2C938FDD
+:10D8F0006ED143FC75D0E12BF9D01A2071468945D1
+:10D90000E3E51D0D4CFA130FB37E15E5DF2184ED21
+:10D9100044FDB2E99960116A639F5AD8C78755AD33
+:10D9200015D5CD1FA8A73BBB4AA8FEB35296D24E31
+:10D93000CD5FD1DB91245B1B918D97ED8C9A375293
+:10D940003A8B44C08600904BC7D06B1A0B52F3EA57
+:10D950008C25B3C7D83A7789E9D11220788F3BD884
+:10D96000B7CDBA0083B2FE233E9092EEEE8D3EBA62
+:10D97000EE9E6880524C992CA46B59C2079DC0073B
+:10D98000020366839800C51558C6CC5D99B17FA681
+:10D990005C7401A38ED4778B61298CE1A8A8C43B69
+:10D9A000BCF8A9ECE841E34E6CF8FEA226E148B9C8
+:10D9B000D530AAF32B6CD9E438BA177D1DF3C4E631
+:10D9C0003F26C787B9B5E187102D91F66CE037D4B3
+:10D9D000239E3BAF02019D7AC09163EAF877C7743A
+:10D9E0007EEA32E30F42AC7254BF028620EE73DC53
+:10D9F000D32218988B2244C08E511BD988CD19B3DD
+:10DA0000D8EDF0767CA999D55E4BD8F161E302BCE4
+:10DA100053849C87596C90BF15190BCB3F8B4B8B54
+:10DA20002D39C830CC7261BED8C5067ABDED076C01
+:10DA3000920A4B1BA9E0D1B31632358660C0B6CB33
+:10DA400083AFD68936E14104BB8840B3DD11E4429F
+:10DA50002BDB9F1D3D440460966E2458A522127650
+:10DA6000DE6409AA0535389E6207A2921B8FCEA1FB
+:10DA70001F10CE3BF0EEF39E47C36823D3B6488118
+:10DA8000BD9350CE123AC5AF953819E55D0EDEA3B1
+:10DA9000FE75058DBB9274BF5C483D463F1D79A85D
+:10DAA0009AEB9ECDFA6B3A63CE1D3231DCD9BFDCE6
+:10DAB0001042D42BC1A054B071524638C3082E0C6A
+:10DAC000212C60C10A3F3AFAB5BEC57FB7D6923263
+:10DAD000FE70AB38C846009E93351C6A4EAB8A4A2E
+:10DAE000D11F5F6DD98F0F8D59874A48C7116724A1
+:10DAF000C70C7C935A9370E4B2B6ADC3CB43A7D89E
+:10DB000015F855C4BB3A3CF4839935CD1F1F8734B3
+:10DB10002B696263EACEB47570C59FBFACEF681A1B
+:10DB2000DECAF0B676824C6A64CA135B893315DAB2
+:10DB3000E7036B16225D91FFA6569D03FA1C085A57
+:10DB40009EA483EAA2FF52BF976A8D066D0CCBD3C9
+:10DB50008D7E622985E1E07CE52B593A5B983FC8D0
+:10DB60001002C36E2268CF4A1C322F8AE0FD18567D
+:10DB7000D3AB7BDBBDCC8E50BA13D5CC17E3FA0008
+:10DB80006F09DCD08821520A5452BD8D205B85D0AC
+:10DB9000FBCF923ADBFF4A50C5D0DFFB44E2F435BD
+:10DBA00011FA227367C45EA2C879B61B50E8B43577
+:10DBB000EC38B1757B2306ED9E2669764F966C5E38
+:10DBC0007AB194E9981F78B7CA252BCE4D5B016CCA
+:10DBD0000AAD270DF237C9BA186435F58050B4DBA9
+:10DBE00002BEAFFC9B4AB94EA8D498D7A11E8F099C
+:10DBF000A54A65B4BF920836BDD0846F90E6AEF2F8
+:10DC000080FA2934ACA573C22B47DAE74A4456BEE2
+:10DC100058FD121C4B5A5D2EF996544FDFA174CC5F
+:10DC20008540C2DC23DD5D93D8ED01CFC13FE9CE55
+:10DC3000AE017180E877E291752ECCC636DB61F2D9
+:10DC4000AE0B82B8FA292B8B8B8B4360D223C53A5B
+:10DC5000F40FE211A16955A94568DEEACB8E9CA0BC
+:10DC60008121A1F81936EFA1028D7EAB651B52A967
+:10DC70002BFA462823D1B1C44A727A53D6B06B3EF0
+:10DC80000D41C9E264749CEC36D609BF6AF5403791
+:10DC90009AB96A077F6BF144463D76628D008346F0
+:10DCA00007E909B6B95CBC08F8AB9AD6FBFF364A5F
+:10DCB000BADB4F87A1F2E066AAFDDB77553914691C
+:10DCC0003610DBE0E04868555EE00820DDC6DD5C2C
+:10DCD0008841258A21023B968767BBD63F1084FE88
+:10DCE0008307FBDC60FA2510E5ADCE7AC3FAF208B3
+:10DCF0002AE4F79413EE724F955E03D44284339F67
+:10DD000080F4AE5BBA5B39A13DF86BBFD58D751B56
+:10DD10004F140786D2268E6F072B7CF89BC0718923
+:10DD2000CBBCE0EF9022CEDE266ACA239051E2FE01
+:10DD30008D12BA8D095A053CF0D83D98410F7B856C
+:10DD40001DBD668164B1CE5FB7327777AC040DB488
+:10DD5000CC02833FE6346988CDAD2BC35B27F90E37
+:10DD60005DE24CA318D622AA8FD575218680F9C80A
+:10DD700004C52722B02472257F35465B068342D82E
+:10DD80004C9EB57E2495D1133E351455CA42BE34FF
+:10DD9000496DCED4EB6D5B74F339A09015CD79A3AA
+:10DDA0004FDEA87425C53A7B87D11EC76E7D7C7671
+:10DDB0005917BCA2E992137F7D741FA8DA4321652D
+:10DDC0000BBED1FC4B8CF8CF296B8D28B297ABCB17
+:10DDD000001968DDF9E206CBF9A7B65B322CBD610C
+:10DDE0005B25A192B6DEDB8BEA37F85B8E5F728D26
+:10DDF000A5DC05F42E8ED61685FAAEB0F7C3D5CACB
+:10DE000034A5AEFDC7428A0A7FEE4E30A64DD9F347
+:10DE100098B38E14FBF58179F54A2817DF44A9E3FE
+:10DE20001E4543C773D9AB54B372DCB0F207008709
+:10DE30006B310E5346B899EDCC79E9A6DCB0F5E923
+:10DE4000869AE53DEC0F3D1555F206123670E2BCA0
+:10DE50003CBC3C1D5E7C68ECBFAA16B0EA91D86C55
+:10DE600076A237FAE12443CB0DCC90346161B96CD2
+:10DE7000AFC91D9DABAD49FA6EC2C78BCC730FE81D
+:10DE8000F3F69456C50826C047B2C7C8072D83527B
+:10DE9000945191719CC141A06F8CDC71F482266D0C
+:10DEA000E23975A18B71D63B94C7DF09BBA70CF88B
+:10DEB00026D276BC1E74E738438448AA2384663B86
+:10DEC0004FBA808C1B43EA4A26A6BF6987D361F705
+:10DED00085CF1EBEC70809A3A7D3AD018033583F25
+:10DEE0006AD71E33010C976909D504FAD05B9A737F
+:10DEF0004ED9F74C201D191DBD02364BF15340C0C1
+:10DF0000A0613085667D05758811662929FEEC6360
+:10DF1000A8522207AF9B6612F977168CCE0CA3226B
+:10DF2000BAD0A791C7A41ECEAEA10A32C25CC8DB8C
+:10DF3000498C4B3DD7F4C69677C596A181CDA54CAB
+:10DF4000A17C03DE52878610F024874D2C49079F61
+:10DF50005A15B47B3189501705CD8AFFF4C6A02B22
+:10DF600068719F2A670CBA79FF67488E1A73DAB610
+:10DF70001374868542578B0F5A9926EB727BFC33BC
+:10DF8000293D16C46B6067F056292C7745BDD749EB
+:10DF900088EE1B166BC5FE9138684F050500BB4720
+:10DFA000EF31E71CF5F04D6B62ABCB951F01A3DDA4
+:10DFB0007B6FB4B9A0CC44286F123FC11B574554A6
+:10DFC0004A213A3E3BBDB5D04D70FA0669200D8E10
+:10DFD0007EFBC7C119926DE85CE30BC8D94FDD6BBE
+:10DFE0003D889BDBC03B8024B7C1675003DECCB1CA
+:10DFF000FEC219E61E54A1E34824C9FD939B2839AB
+:10E000001F7D42BE9525D3C4380530D81E411783E5
+:10E010008F85B01DB2C05AB2115AB4857E1802372E
+:10E02000C2A47DF6A3A2EC32C046CBD442ACBC82E3
+:10E03000B9F3D091DD112361989107D47907229526
+:10E04000D790E26AD3ED7F3FABE601D96943944EA6
+:10E05000D422B0274784A80D1D5560124D65668DEA
+:10E06000DE1BB452507FD19C8F50ECB9BA4497EE6E
+:10E07000E372F9A3418603D41DA0C2B583ABEAE0E5
+:10E080006C8476909DB1B075AE16679D740B086573
+:10E09000D7568E7486BC49F363E42A9BBBC1628465
+:10E0A0002B82E68A22DB60A0F202A78546149766DF
+:10E0B000A57807667A592ABE78B76186DF5834F4A6
+:10E0C00087B659A99D9C98C001B0933621F95E1975
+:10E0D000EFA17621DF62BCB191D18486058718E576
+:10E0E00075F4C0EB9A1F076F4DC58A1ED97E1CECD4
+:10E0F0002CAEAC7D352CDDD97E0506494263F86433
+:10E10000841A4D505187F78D231E6B2A271EEBBCB6
+:10E110002AEED75AB7E4A5394E45299F97057BA823
+:10E1200020097E6B2BCC404FA92F4CE8506EBBDAF8
+:10E130002E4FC92A4254B9587BAA2FDA0BABB13FF4
+:10E140001E64A82EAE04D7EE5A145E255C5A4BDB33
+:10E15000E9D50FF9786ACAE2D67FF30BFDFFC65DF9
+:10E16000C91F520D91C977914DF2C5812C7E58A1DE
+:10E17000AE17E8BCB3EB9DC9474EE9CFDAC2C1B1D7
+:10E1800033DF42D59591D7ACB1B1ABAB6B5338957A
+:10E19000DCAA46BAC06C2F13A6CE1F2DA15FD07883
+:10E1A000EADE96B8014E24FBE0664D48FB2C82E681
+:10E1B0004194873ADFA8C9F4A9FB286D1733186684
+:10E1C00051C41F5BC7B4ADD432D5061FD7F852ED8A
+:10E1D000EF4E9B9A13A46FBE7F86628B918BFC3AA5
+:10E1E000020453AEB1ED1139A3B0AD47E728862440
+:10E1F000C02EF0EAF63AC70A00DFCF0D514B2AF5E0
+:10E2000034B675752317DED3A3420D22A26F3630C4
+:10E21000CD5B367117238039A668667817545E0F78
+:10E220001267840CBA829E535CD651DC839A8A585A
+:10E23000BF7E747EEFED3FAFB5DEE784920031F82C
+:10E2400051F26A2A9734EB7EB2AE7341306243D307
+:10E25000074975E0ED01B59943EFD2DA503594B72F
+:10E26000A18C24FDEECEEB46CC4E83F4DEEB41E1F7
+:10E2700038DCBB69FDDD056E11F4ED71552E64DCF3
+:10E28000D8060DFCD23D85B0AAA8F45C309A990757
+:10E290009F8825E65AD95EF50FCE66F7741F7E85F6
+:10E2A00078FFC22A56DCE1801D581B7C154E6EE6B5
+:10E2B0005A38FF59343D5BE9CC02F9D533289858D8
+:10E2C0006273C54AD88E260C2CB273198937C436AE
+:10E2D000BE981E1CF5E7082AEF414987057CCBC193
+:10E2E0006D460D6010CEEC939F27E5B7C191B52E1A
+:10E2F00060242CBB396FC011A85A88A3BF4010D826
+:10E30000C49F24A052E502A6A3CC6CCA6CF38E9CD9
+:10E3100007211B56B2D0BC2828ED51A1A5C71484F3
+:10E320002654D4AD2F40DD8E47FBD7EEE2A20887FE
+:10E33000E13909A80F7D2FD42E948680F8EE1AA318
+:10E34000A3DBEC85C9C9EEF597009742E90270F4AA
+:10E350009FB5D666B69E1AE5F24F0ACF40ACB5A57A
+:10E36000A61FFA7E57296C5F72041D07BE8E95CFDB
+:10E370005421B97ABDBE8C284F091BEEA5BE159459
+:10E38000119FE74D8E51029EAAE76D4FE43B7AA1A3
+:10E3900014E1D0EC3A437AAFC7863B8DBF8D1C09A0
+:10E3A00030931B44030F9E09482024ECD4B9B53B9D
+:10E3B0007A3C15F97CD5BCC1E1ADF6EB49A6E77016
+:10E3C0006F59804EA93E1704F2FA2F34EE7D7CCDB2
+:10E3D000EA16A7D057A37C7672BD32904C9DB193BC
+:10E3E000643390BE64F6E03B102BB85AAE1E0BE0CF
+:10E3F000D21664BF9863595FCDAE9B00FF7F81C189
+:10E40000B5AE5E80A3DB8FA85F777C563A8451DC83
+:10E4100035E9DDC199D3399E63E9B279B7EDE9C039
+:10E420008FA21F0C5DEC4470108A467AB9202E79B9
+:10E430002C4F11D200F7262120EC5370F4FD1BD590
+:10E44000A88936CE4B6AA33CB075AF3B225BC5CBE7
+:10E45000ED5DCDB0A7A295C78DACD037E58DFC8B17
+:10E46000932EA2FF6069C93E696E5D3B3159CB9323
+:10E4700077D2EA1D11601065DE7B67450998358902
+:10E48000E1CB44A989907F81CF1882AD313A3DA379
+:10E490004F215B772C2B634EE5C5EBEDE27C23DB54
+:10E4A00082701FD2D5F505B9A4E20675F0B896D0F2
+:10E4B00051C88F5E2D0B80ABA892F2CE0AA805CE74
+:10E4C000CC1179CD510A9F9B78F626B180BA820192
+:10E4D000929A3449BB6E072C81E96BD012D473CB6E
+:10E4E00064852CA1F1F8D13904A522335ECC101B30
+:10E4F00069BD31FFB5ABC3DDC6A4C06C137487081A
+:10E50000422D679D411F3CB0E8777DEC12C934C8AD
+:10E5100021504AD65BD59610CC68FD21508EB58F20
+:10E5200063338F42DC9703979666A024831696CDBB
+:10E530007F6FB71D5E0E69D89F0E79BD75F01E0006
+:10E54000B01511AE0AD1434D26E17322E67BA05AE5
+:10E55000C2B32BFDDB4A9B998DD1640EC55BDD26D2
+:10E56000953B74A48EF2888D67451743141F0A608B
+:10E5700098015FC11448D2A0F26877F71E145BDFE0
+:10E58000802135EBDEA00C23C6B6876A98B4FFC69F
+:10E590002795E8EAD7B3370EF159BE80CF37FD692A
+:10E5A000DC9D8EDA12E73B39C45A5B1F0A633AA43A
+:10E5B0001FB39127F96174557B7D8D96F56D45925A
+:10E5C000A213CF18FFD32E01542A02744D43E672D2
+:10E5D0006FB65CC8AC92AC1CFB0AFD2E879F0A6D1F
+:10E5E000ADA54347BD36AAC097542AFAC09D5F35F2
+:10E5F00069E268C52E60B8259188ADB68F47C430F2
+:10E60000EF36A3F0548D9B2D168CD91E2DD1F7EC2F
+:10E6100005C6F5BCE1815EF0355A84372F1A802C8F
+:10E620005536CCF645020D267CC1DEB5704889A66C
+:10E63000F7B781EEBC4B29217E0DE30BE3C38612B5
+:10E64000FFD4BA88D99BDF67D9F40CDE7C2F36580B
+:10E65000CC743F723CBEB0BC8470381AC9E251E73A
+:10E66000777FCEE41D3C7BBE4B288C85E3F7BB0D4A
+:10E67000DAF51DDDB63FBC661DC99C89A325DF42C6
+:10E680002AC78D192751A4715B155A80F741C8B864
+:10E69000F777038FF568095AEF224D8731D6440783
+:10E6A00030DD18D811629E281F1EDD4C4ABBBA0609
+:10E6B0002A67508CD448294B50359AC05ED33CEC25
+:10E6C000FF487E5B6E8ABACAAA9680D903C58DF4CC
+:10E6D0004DA36F536A0EF2D5A337EA758C2B332AFC
+:10E6E00002FC2E99AB37BB3CD39F9D05DD9650FFB6
+:10E6F00034B208733157406B89A92EAB56C4D36826
+:10E70000E305792784CA50BC3AB6B92720E09315AF
+:10E71000B418A7943B08BEDE016C0A065A194904D6
+:10E7200034FDFD9D041039E46E7E87A76460656B3F
+:10E73000EF6714ED2E8D66FFE4E2FAC674E53A8EBB
+:10E740006BA068A0E519BB7CCF8A104D28A624CB0E
+:10E750002C1741AE8BC0C6206BF4493C867D3759DF
+:10E76000C11729529E817DBD62C3A463C39975D12F
+:10E7700036EAD955D74E098E39E46385E37399E0BB
+:10E7800086250ACA8D27B0EE4A025579653CF5B94F
+:10E79000DB608304027B50E9B7948EA327C16A8BA8
+:10E7A00076C2588501EF54E27CF7DDCF66FE3973FF
+:10E7B000DE35B15E46B88D5251B1E5EB188EA744F7
+:10E7C0004901771415A4CCE8EB0812C5628E889530
+:10E7D00025CF4F6F39A57BC22921C696CBD7501ABA
+:10E7E00071E36A842052678B79800C32D9C9D705CE
+:10E7F000BECBF77B08D71DF2E01E74284AE7D3B5DD
+:10E80000920A8FCFDD829257934D81AFFC21243045
+:10E8100091C4BEEC08FAEA491E67A535804EDE4079
+:10E82000708AB5C103BA5351556D4E927D953BAD7B
+:10E8300071000C673F2FF6305D9E7368DE23B04E8B
+:10E84000F537D36C5A6DEF15B7BA383FC8A52B1FF3
+:10E850006F4D375A3F591B59CA4111B8DFD0460C8A
+:10E86000D2049DC301274E88538EB455BD17FF1C9B
+:10E87000E25DC2923899E8DCE5AF5A8B877836536F
+:10E88000D999EE69A4CD5CC327848596F64E84940D
+:10E89000C2793F34F2E4087F0BE2AE2BD113C1AC56
+:10E8A0004763C4EA639F71138E8FE677D014E3B792
+:10E8B000713B43DFF08B766AD20C985D71BE82AA01
+:10E8C00001F8A4B56F2B54AD84E6C22ABF18BF610E
+:10E8D00089C279D508CD8B66E6B3332CDE29E3AC4B
+:10E8E00089BDAAC66EE71531DBB25CD6527AB44A4E
+:10E8F000E3C9D18B9D82105DF55D8A9003C3B5227B
+:10E90000CE768B05299E8556A80F0D6B0C0DB4DBBA
+:10E91000642419AF02E44121F0C1C35530829C73D5
+:10E9200064739C0DABB5248FB182C9893956B67F0B
+:10E9300001323122BEB167A96164DC4758D9F2794E
+:10E9400055A4C4D8C05C358515AA6A4EF9D13DC816
+:10E950006E75F35FD120AB3E8C53769CA063B937C4
+:10E96000DECA8350D8B305BA62E4AE5DB4A0EAF063
+:10E97000D17F01DC6E4B7C7993C0BC8893FBD1DCEA
+:10E98000E26338F690AA21A71ACB56A983442BE359
+:10E9900089DB356C24769F80DCAE5A8DC26AEE4EE0
+:10E9A000D5F729B969F334FB9F657F79A8AA3306A7
+:10E9B0008697F807A2763B9FE847774174FC225F71
+:10E9C000B98660FF58749C6D2354B12010D6471D42
+:10E9D000AD236ABCEB1D9C2DA5CBFEE5960D2F52F9
+:10E9E000A9AE2E8D0C04B7D2825513B8416C79AA0A
+:10E9F000E5D372DF21E691171CF6EFC033360B6EBC
+:10EA0000A00CE8A79C4D4A8B98D10DBD1B790988B5
+:10EA1000C5533ABEFB240D49C40A0F93C78F4A0C55
+:10EA20008F7DFACC48B46B84E8F078E726DBB586B6
+:10EA300081B9B0F6B4CF95506843B14C787DF6E516
+:10EA40004713CD68D35A3906AF6B9D0F3680B9C3D3
+:10EA5000213E9C0266A3D8C1CF34A6C5B337D85295
+:10EA60003A556CF8C51BE96F72F9100BEC84783AD3
+:10EA7000B68CD47F46E5985DC6B4CACE5CBB26ACE6
+:10EA800048A4E1A907910D33460324F802F805E0F4
+:10EA90006D0011CE52406415B4D133A6A5CABCF0A6
+:10EAA000F690ACD4F02C8925CB5FE4E88785A1C132
+:10EAB000D9DFEE3DFE80B52860021BB44F8DB83F14
+:10EAC00078831E903EA00ACEC45D1C978BB7B3F727
+:10EAD00013CA8D83158A7A81676487B6A0C6352AE2
+:10EAE000A4058EBDF56BCAE8A40A3260F28DF274FB
+:10EAF000B6C12A722ABAA755EA857F3717BF8FB9E0
+:10EB00007E8EE45B2FE73F98736BA56D150035EFA4
+:10EB10006505B105F3FB1413C43466767E48F34DE6
+:10EB20007E07BD738761D86E80A2DB77BB468B06FC
+:10EB300099E73D9C7CABBED3428F07913E335F8B00
+:10EB4000E2CD1113E0305B618F4B9A3FDB456FAD37
+:10EB50002C0FE460F3B4326200A03BCF42E577E9CA
+:10EB600006B283F242C490ADC64450478533BB1908
+:10EB7000472A7C03E7ECEFFD64D213BB8A0A7A25AF
+:10EB8000B6191AFB072E242465C24DBE8398705F08
+:10EB90006219FE2FBF43CBD6BDBC07F7A919E3DD31
+:10EBA0002C3C29A6103D1B35745B84CE7320E242B9
+:10EBB000011BEDB8689C673EA24102E5C721021126
+:10EBC000422245671CADA44BC413C62D2D6F8C4546
+:10EBD000584D0D004FD588F133AAD4DAB7013B3F29
+:10EBE00084883373B6B738EC3E0ECACA7CACC3E92E
+:10EBF000AA3499B4F96E08DE5C4AE716E40B902C4F
+:10EC0000A5CF8593E166166791550BC4C6FCCAFE75
+:10EC10003D2514F7D731951CDF5933A04CE6B37569
+:10EC2000E1F7D08F276DCFA1C02EA920BAAEC84082
+:10EC300093E77247C5E5BE57A83C5C4F0CEC16DC69
+:10EC40008EB6BFD555BBB70296C1A340257DC4FA89
+:10EC50005FCA73BA3CA4EBDF0AC7CA2BEEAF6F10D2
+:10EC60007E85965C017D88AFABEAA5CCC19C5F6FC9
+:10EC7000F1F7157ADC4F4A5A8FCB74D49CF33FAB33
+:10EC8000DF90D895062A5E8B530A506340B38220EA
+:10EC90001F735185F87C013789CBC05C9093D37684
+:10ECA0005440CA567281607B1D021F7907AC2B8DC0
+:10ECB0000130AAF6F2D2535A6A1CCEBE7AEB48351E
+:10ECC000254131414FCC275EF336610A223C0102D7
+:10ECD000FE611F62847A70AC5E120ACB8AB31AEBB3
+:10ECE000A6A7DCF186C8741FFACE43862829561FD2
+:10ECF0006C754F6C23FA2E56CCC7934206BFD93B96
+:10ED000086CB8E07C468D3BD500ED17643987BEC7A
+:10ED10000F097F81F1E32E72D9D286553FFDE4655C
+:10ED20006F645541F3E91B16F0D6066F2598EC1871
+:10ED3000A4A1BBC6AF9E4951EDFA6B79173E514C69
+:10ED4000B9DF0772F73A2AF56B8FB58DBB975C1365
+:10ED50004BCE0AE4C07B633307F32BFE1B055DA299
+:10ED600001A341958D24D027D054AC067FBA40989A
+:10ED700078042A88E2C0AFB77FC290CB26180B2553
+:10ED8000AB69D2D57B7B7B76674529667FD6749449
+:10ED9000AA1E008E18A709BD8724469BC8A86DC966
+:10EDA00044ED57AEAF90A11A77BE70A68B00E4F485
+:10EDB000C2A2A5F216CD81FF204EAA02D3602B5A23
+:10EDC00031627C37B8A59BE289D0BF7D961027843D
+:10EDD000F68B514D284C9F9CA65CD2B9424A967B3B
+:10EDE0001059EDAAE2D2D2E25D05EE9C850FE70F45
+:10EDF000179C7840A0C521EFA2F2CB62381CA60C6C
+:10EE00000108728676BA1DC76DFE52B23F9BCD6E69
+:10EE1000F026404B9691271375130A6417D8CF77C5
+:10EE20009973E433589D02B709432DE4FEC3D6D845
+:10EE3000205DF938B448138A7D259D389AA264680C
+:10EE4000C5A4A5CDBAABB92C001537C6F7CC75EC67
+:10EE50008F5ED6AB5B2425503F6514334478540154
+:10EE600014AE0A970536AB5CFF861B4BAF8BA9D857
+:10EE7000631088C811692EB122CC5A804E0C15053A
+:10EE8000410D36855424D9DA96BB608B8F9B3A1B93
+:10EE9000EE0E411C482AFF5805D02AE461C4E382E3
+:10EEA000F1C4F662BB26A83FDC5D83DC36E53B227D
+:10EEB0007FE77BC6675873EA6BC6D43BA72C502705
+:10EEC00005ADE420FE37C1B9677C527172254B87CE
+:10EED0003B79DB8D490532479C8A01E52A8460072E
+:10EEE0000223EA67F41537DFDECE7456FBA51C2437
+:10EEF00099E912219EC5A33635911BD3F51D9F5369
+:10EF0000031BB009003F011E2837047F077D3E9D8B
+:10EF10003F00000000101C1E05F5281E05283000CB
+:10EF20003000F0D2F0D2AB0A1080080A0101592B50
+:10EF30000040403200000000070A00FF0001D2003C
+:10EF40008004130318140004041B00100A0000B00E
+:10EF500004FFFFBF96307500C080004040010600EE
+:10EF6000002C010500DC05080801040548004000EC
+:10EF700000000200012005480040000002020001DC
+:10EF80002305480040000006020001270548004014
+:10EF9000000008020001290548004000000A0200A4
+:10EFA000012B0548004000000C0200012D01131147
+:10EFB0001815211D1416171A1C1E24191B1F292B86
+:10EFC000312D26272C2A2F28302E33320F0B070104
+:10EFD000030D0A0E0C0902050806012400199919EF
+:10EFE000330000190030080000CC1C0019991933B7
+:10EFF0000000190030080000CC1C041A0014002086
+:10F0000003000C2003000C02001028280000000060
+:10F0100000000000000000000000000000000000F0
+:10F0200000000000000000000000000000000000E0
+:10F0300000000000000000000000000000000000D0
+:10F0400000000000000000000000000000000000C0
+:10F0500000000000000000000000000000000000B0
+:10F0600000000000000000000000000000000000A0
+:10F070000000000000000000000000000000000090
+:10F080000000000000000000000000000000000080
+:10F090000000000000000000000000000000000070
+:10F0A0000000000000000000000000000000000060
+:10F0B0000000000000000000000000000000000050
+:10F0C0000000000000000000000000000000000040
+:10F0D0000000000000000000000000000000000030
+:10F0E0000000000000000000000000000000000020
+:10F0F00000000000000000000000000024D5FB46D6
+:10F1000001010001010000000000000000000000FB
+:10F1100000000000000000000000000000000000EF
+:10F1200000000000000000000000000000000000DF
+:10F1300000000000000000000000000000000000CF
+:10F1400000000000000000000000000000000000BF
+:10F1500000000000000000000000000000000000AF
+:10F16000000000000000000000000000000000009F
+:10F17000000000000000000000000000000000008F
+:10F18000000000000000000000000000000000007F
+:10F19000000000000000000000000000000000006F
+:10F1A000000000000000000000000000000000005F
+:10F1B000000000000000000000000000000000004F
+:10F1C000000000000000000000000000000000003F
+:10F1D000000000000000000000000000000000002F
+:10F1E000000000000000000000000000000000001F
+:10F1F000000000000000000000000000000000000F
+:10F20000000000000000000000000000003F011EA0
+:10F2100028371E0A015900000700FF00561D10E0A4
+:10F2200001E00000000000000000005335303030E5
+:10F23000420000000009030F000300000005000069
+:10F2400000000000000000000000000000000000BE
+:10F2500000000000000000000000000000000000AE
+:10F26000000000000000000000000000000000009E
+:10F27000000000000000000000000000000000008E
+:10F28000000000000000000000000000000000007E
+:10F29000000000000000000000000000000000006E
+:10F2A000000000000000000000000000000000005E
+:10F2B000000000000000000000000000000000004E
+:10F2C000000000000000000000000000000000003E
+:10F2D000000000000000000000000000003D0011E0
+:10F2E000060112201B0C0401011C0008002134003F
+:10F2F000000000000000000000000000000000000E
+:10F300000000000000000000000000000001D2002A
+:10F310008007130318140004041B00100A0000B037
+:10F3200004FFFFBF96307500C08000404001DC083C
+:10F330000500101C4410270101BA001C05C088609C
+:10F34000483B060F420000000000000000000000E3
+:10F3500000000000000000000000000000000000AD
+:10F36000000000000000000000000000000000009D
+:10F37000000000000000000000000000000000008D
+:10F38000000000000000000000000000000000007D
+:10F39000000000000000000000000000000000006D
+:10F3A000000000000000000000000000000000005D
+:10F3B000000000000000000000000000000000004D
+:10F3C000000000000000000000000000000000003D
+:10F3D000000000000000000000000000000000002D
+:10F3E00000000000000000000032310C0001540059
+:10F3F000000000000000000000000000000000000D
+:10F4000001132900101C0100000000000000000092
+:10F4100000000000000000000000000000000000EC
+:10F4200000000000000000000000000000000000DC
+:10F4300000000000000000000000000000000000CC
+:10F4400000000000000000000000000000000000BC
+:10F4500000000000000000000000000000000000AC
+:10F46000000000000000000000000000000000009C
+:10F47000000000000000000000000000000000008C
+:10F48000000000000000000000000000000000007C
+:10F49000000000000000000000000000000000006C
+:10F4A000000000000000000000000000000000005C
+:10F4B000000000000000000000000000000000004C
+:10F4C000000000000000000000000000000000003C
+:10F4D000000000000000000000000000000000002C
+:10F4E00000000000000000000004030000015500BF
+:10F4F000000000000000000000000000000000000C
+:10F5000000000000000000000000000000000000FB
+:10F5100000000000000124001999193300001900AF
+:10F5200030080000CC1C0019991933000019003074
+:10F53000080000CC1C041A0014002003000C200357
+:10F54000000C0200103228051532005100000000A6
+:10F5500000000000000000000000000000000000AB
+:10F56000000000000000000000000000000000009B
+:10F57000000000000000000000000000000000008B
+:10F58000000000000000000000000000000000007B
+:10F59000000000000000000000000000000000006B
+:10F5A000000000000000000000000000000000005B
+:10F5B000000000000000000000000000000000004B
+:10F5C000000000000000000000000000000000003B
+:10F5D000000000000000000000000000000000002B
+:10F5E000000000000000000000470015004151002D
+:10F5F000000000000000000000000000000000000B
+:00000001FF
file:ea0f3dca554911dbc3fde319f5292bacae6e078c(new)
--- /dev/null
+++ b/firmware/tsp_synaptics/jactive/synaptics_b0_hsync_fac.fw.ihex
@@ -0,0 +1,3937 @@
+:1000000078F191080000000600EE000000020000F8
+:100010005335303030420000000000000000010085
+:1000200000000000000000000000000000000000D0
+:100030004453352052312E302E3000000000000095
+:100040005359203033000000000000000000000081
+:1000500000000000000000000000000000000000A0
+:100060000000000000000000000000000000000090
+:100070000000000000000000000000000000000080
+:100080000000000000000000000000000000000070
+:10009000493243000500FF000C0D20000000000065
+:1000A000493243000500FF000C0D20000000000055
+:1000B0007C694C9FAECF23F4B47903869758544D96
+:1000C00043F5E04A742634893ADFD10918EC5632F8
+:1000D000B39D202D09352D97B948CD173C3D1F8C78
+:1000E00014FFE5BE4CEB6D257E4AB494FEEBB7865B
+:1000F000BF61A5B8123273A838F4E46E1374797333
+:10010000E1DFC7EB97F6FC07F0B2EDE624FB3186A2
+:10011000CE46143E9C4C57C3ABB6C3A5E1536419FD
+:100120009766AACF59007470B3F9BE82105DC603FA
+:10013000899C5682030CB1C2F2C664DCF8D2B89432
+:10014000661BB53C8AA929632A109F6BF8354FCCF2
+:10015000B20CF70A360B732F17DF7178A5971208C8
+:100160007464A4C6819E2024E91E0726606AE66F97
+:1001700070FF95745F48398EB524F80C1287B7B4B8
+:10018000AE74EE3DDDCC84B860D58362E4144B657B
+:10019000C053ABDD3931AD66AD9940A82B3E14D5C7
+:1001A000DF626E5416AC1D109678606CE04156BA52
+:1001B000DF8D6301C0376A4E68F9380DDF2549F7D6
+:1001C000AA078A08F3181142D22785465702EB6E18
+:1001D000A5C4D79979998F65765D75D3D7D7FDFB7F
+:1001E0006FDC958042C2754548A748B53BC4AD3E1B
+:1001F000C13F5E1F0211E098D7ED36E06334FE1771
+:10020000D26D56605E328964656B52DCA2F1015298
+:100210000CA4E657A31FCE4C6735B2CA70601433E6
+:100220002B6D1988C267D67D74B89A81DA542C3F39
+:10023000491ED90B00D17B5EDE74B1B17E29F1C1BC
+:10024000728FB8F354530ACA68DE310937696E7A7F
+:10025000016B4F2D6A0EB775AD335DF3CCBFDAB1CC
+:100260009FC365EDE3B1C88933A010A42E2A77FFA0
+:10027000941CDFC7C46DBC3168C5D507FC1325A726
+:1002800059788952BA53E27CB1FD52977DC40682F7
+:1002900007299A27888E6956712197069BB7E94CE2
+:1002A000BC43110C106717D4B3E026CABC2193D508
+:1002B000691165E7D7F351B98F092A9B21B55DCA4A
+:1002C000053516CD60C7E510B57411BB6672A07018
+:1002D000315120A808D9379334CA5D44D93C0B2B3F
+:1002E0006839B37FA993E6EF64A0A90FA5636B4EAD
+:1002F00016A19A55F3B9C30B60CC7AEAF7E4BE15A0
+:10030000A84C9A728549925D447B3F7B386EE489A4
+:1003100094BE9A1463CECB6A00FB34E6E624B6E1C1
+:100320004FD1DC0D366E4C4E98F939A348609C06CF
+:100330007DE14E2ADC7847872F6C858E2841FE4D63
+:100340000930D1608D89E2E65E3EEB8D09DAD73463
+:10035000060FB745D8E7B2092C190F176D8D684104
+:10036000B3CC6505A3EDFFBC64A7CC629335905573
+:100370002B40712C607821CDC14E643E91CCF92088
+:100380009AE6778AEBB1A763325720CB861699F5A8
+:1003900030222A723AE86D118ABD7DA135428D93D3
+:1003A0009F9EFECC988D1AC007C006F83F1BAC8FED
+:1003B0009F22C5972B1F6E4CD95F76BA3676DC3BF1
+:1003C000AAF331EE8C1512796A9C9CABA374A1B18F
+:1003D00092151D32C4BDA03D3AAEC7C00E2D62D3EA
+:1003E00049195E178500AC1822148603D933EE999B
+:1003F0008E6FD156F1CC00CF4970B3A342B87EB80E
+:10040000C4D76C02D907A46328C1903196FDCC45AE
+:10041000FC1FE9E66637288E9DC2AF3579B26F21A1
+:10042000ED743A07479DE69C95D7BCDA8070490F7A
+:10043000CFFA99D2E93BE3584AC5A856CE931BA5FB
+:100440001B104D5FD36878E962F0B3E12466EABF20
+:10045000FE7060939C41EB6B2510DBC477251CEA92
+:10046000C008B5B4FC8949F24DBAAD9073A30245FA
+:10047000B7C6FB61DA9D9302A712240D3CBFCC7C6A
+:10048000DF1AB076A8601CDA667A917DF14D8AD6C3
+:100490003ECC449C85747BD09BA4B97BD6684485B4
+:1004A0005713F94190532325EF1C33924A1BE3293C
+:1004B00089574DFF3E2927E9FD9D0C37C72D943DF7
+:1004C000886E5EC5973FECB5B8490D6A9467A7750D
+:1004D000DD991D86C4BD5002B15AD0A586135816A9
+:1004E00055836C26C7209992CE992B780A50AB92EF
+:1004F00019907D136474D0FA632DD7EBBD2245AB00
+:100500005C361F06139233740DF760A50C6E92953E
+:10051000955355FED237A80B38416CDFA0F31FCAA4
+:10052000605C4B03D55854E9E1A3B40CE463C77D88
+:10053000729C6A149755DB8834231AB84B26998528
+:1005400018EACB0510F5111B7B656ED2FC1DBCF1C2
+:100550003D120EB2F3CAD69391548477CF8B5DBE11
+:10056000B747BD30F8B80762033C564AD562C51A92
+:10057000C76CA31FB51E5081EDE072B4076EA4E5F1
+:10058000D6BCF1FED96CADD3087075DCCA57C27009
+:10059000F4C808B55BC5E5E485A21597FC22B187D0
+:1005A0000A1E13D102A9D5E996AF5186D73AD9C907
+:1005B0008EC55101AFFE5FFB7ECC04EF872A8FCF43
+:1005C00038B7C0295CC6DDC4CDF7371B0AD469141F
+:1005D0004F422210621CBE2DD088DB8D3B24C80EFA
+:1005E000B0906D95737EE2F2D6521D9B5968F31060
+:1005F00041D3CF267BD17FB162A2A64D169E104A71
+:10060000937ABB98E2205EE7CD6E08D8FD79AA7692
+:100610004DBDEDE762317E0B73C2299F90E37E0DE5
+:100620001600961EBB20B898BF89509213D2F9309D
+:1006300038BAAEC7AD0CD7B20920B56452A629ECC2
+:10064000F8A2FFF1EF3A1F62BBBEDC6D2EE9485CF9
+:1006500030701EEBFC0B1942C19FA16FCF4D76721B
+:100660004E408B5DABD52305B0C591CDB163BBB614
+:10067000991829225DAB98F35A9DFD80DEEF3390E7
+:10068000D0CC93D37A6FE50322F1DC1C280D92596C
+:10069000041567655FFB6962621E7E0A9E903332B5
+:1006A000232C4ECD23F9DB313C3F141EB9DE826D85
+:1006B0005206C70D87DAA95A442790A823C7420AD1
+:1006C000AA5C3760786AABDB4B88A2D184B5857DA4
+:1006D00048CBFE31D4E336717F40CA9F4966D6A22B
+:1006E000DB133B1DE1F2F5A8B9BC8074522AC3C6E6
+:1006F000CDA0340D3A501046EA2548FBF8F91D20EC
+:100700003139A83A01AEB51AB2B70C311DABBAAA4D
+:10071000D4F00EAECE6D59AF632E622AD686E84372
+:100720004082D65386DEF075612E7E50AD3AB99484
+:10073000AB2D60012C966D1B209611B357F5122836
+:10074000A4035FCCC3AAEF3CBB21E51463CFCBF27B
+:10075000E2AF7FD43B25CA030A98F18FA44118E782
+:1007600045FCCDDCED5718EFB2B8A57715831252D2
+:1007700074B2382CB26974929231D392FAE4B613FF
+:10078000ED76C8FADC7B26B7771EAD982E5A15DABF
+:100790009A5630D18FD7588054B8D48492359F4F11
+:1007A0006150930DA604545A12980538AD79E0C6ED
+:1007B000494C1EAC1B040A636E3AE76148843881D9
+:1007C0007365BBC7A76CBF6487217BAD4A7BFE10F6
+:1007D0001D0D29CFDC00B26B9CA0B22FCD0D9C2B40
+:1007E000DDE3B642C828C54A2024C30CC79F066F64
+:1007F0005A1F0528DFF6479961B69D1DF30C5990E5
+:100800004D147B38B4ACA7D54F013B3C322E6DB4B0
+:10081000DD2A67F8233739212DB056C8D0A2AB7234
+:10082000535ED62FEBD0ED050703161C29B32933F1
+:100830004545C324BBB0D3501DE7063D8D69277DD8
+:1008400038A45ACC935C88757B186775573CF7467B
+:1008500060866141EAEB29DE7E274661EA3E878AAF
+:1008600041EA5D0B220A2F58186DAB9F500CCA4805
+:1008700061D2239271983E42B0452D822128B98FD2
+:1008800098A886042FE2EDA50FC38FA82E2D7551D1
+:1008900041EC920B4AC74E4CC3B888EB806A8E2954
+:1008A000457B3148902044F77C3A8BC33AD186F39C
+:1008B0009D51469F21613DB60D08A1E2AB720FD953
+:1008C0008889292037F8C5FF07DFD7227F262B66C6
+:1008D0005D619194CE0758DD6F49A9FFA2FC6FAF0F
+:1008E000E25ADF07C2DF2820D4DABEAA74D9B06189
+:1008F00043644B7BBBCE2C5C68D8044AAD2C9DD2A4
+:10090000280C539F615F255E73B9819B8C43D9434B
+:10091000BCD4C0E0D414F777A43CC8A9D9DA5E08E7
+:100920006C06347C5AD2A528CEC1E0421C6157AF78
+:1009300083D019B315DBC12D305335EB9F6D23C721
+:1009400093ADE948C2AAA13ED73ADEADC3BE78084E
+:10095000315AF90055B0D00E2731B4CE59498275BD
+:1009600006D88F228AEA2A53A75372C49C3938FCCE
+:100970004058561188AFE8D54803E02914E768D6F7
+:100980005336F826FFB66CAB0EBA95744D5AB27753
+:10099000C68953BA6446318F2B13950A929FAFA133
+:1009A0008FB157DEFB81E1C371FE77221C91BEF04F
+:1009B0003382CF2EF6DC03807AC7126FCEC59E9F9E
+:1009C000F3D97DE912DAAD5A9E69ED8C7AC4D2CDA5
+:1009D000FCD3CE8D49E7F2A0FC963AD3233C520FCC
+:1009E00089CF382F6B3DA2DCBC595D59B08463A719
+:1009F000E53AB4564BFB94280F0B0BA52147F46A3C
+:100A000019999AD47492483D3EA9D158E1560AC129
+:100A1000CDEF03883A84E6AF51F4F7FB5C50080A47
+:100A20009A3088F4579E25D28F3952445DEE8B62FE
+:100A3000BBE865BA75117913A428F90D24C862A51D
+:100A4000883F7D1F1575555DC9C6AC62FCBACCBD2B
+:100A500063D21D17502E828DF962BAD847989AD06A
+:100A600068C6FAC77A17B8A86FA3DE3091EA22F1F8
+:100A700024309BFB332D8FFB4C0B6793ABEE7FE356
+:100A800050A98B53B5C65BBCC04EAB37B12AA1F39E
+:100A9000189E25E3897BC13A40C11D659F988189D5
+:100AA000A808C85BE12FC7CB9BA2D7D0AB8E70D470
+:100AB0004A2B50C3A493BB493A6A962C1911EE2ACB
+:100AC0002FB13C8A0349CB830A1713A3F2561ED8D1
+:100AD000A9AAC31ED2E482CB1DFDC0E64D34EC6949
+:100AE000D0867850AEAE24BB1B6B603369EE307B92
+:100AF0002DA6BD1EEF126ACBF7639F90A10F2D9715
+:100B00003E6C202F6C70A22246A36D85D02CED5D2B
+:100B10007EB78A578915E9389C536E2F5391F0D4CC
+:100B20007BE770C5B40E7658C77D73F128500E72FE
+:100B3000D455778E7571CCDCD1973F39162BFB6974
+:100B400070122C649F2600DAA9144E711CBC09B7E0
+:100B50008BED126233438EA4AC52E9A2A71F674605
+:100B600078B12C4BA3E94CFF5E9126F3572DA9B326
+:100B7000CD9224FB0800D77B10F27B15C1E9DBCABC
+:100B8000569E515D1B7C50D6C51BA873D36AF54990
+:100B9000E4BA39FEB10FDC05D37B3DE40EA2E2F4EA
+:100BA000B1953335728F2321CB09DE74E184FC6A61
+:100BB0007E7D564BA259147C662536A82BDF2DC6A8
+:100BC000B21294FD479503027218FD768F3953C215
+:100BD000FE8F127B6C54EDB44648E88BFF07268EDF
+:100BE000A6B099411DDAEDCE071F82C70EB0DF0314
+:100BF000212DAEB025A4F7C6860C79852CC4BFB8CC
+:100C00005A4CD89CCF1863570FB239EBB4A0F3BD40
+:100C1000AFBD3B7CC34F127E8DF117DB23695DF9BD
+:100C20000E0624C726019D63A38B3ADE512B377431
+:100C3000A7D54BF710FFE60853DA9F1554DE53345F
+:100C4000EDD90F3A305D49ECA1D71E6D0C7122FA37
+:100C5000A69D18E3B603334A53F0339BCB6FD20300
+:100C6000820FAE44211CD62B7882F7C15144D7FFA6
+:100C70009053C6C6D8A720615820EEFB81BAEEC7B4
+:100C8000899ED25CCAEBF68DAD056B893825BB54C5
+:100C9000358B39F73B7B93BECB8EE3028AA8521982
+:100CA000ED624BF5270D2D2651A4DE09BF4AEA96C9
+:100CB000D8D41D9A502DC27208E92F05A45368920A
+:100CC0005CD00F956E45E2253597481B655A4D3926
+:100CD000981C312453B596D9523AB7E1DEF86E4FDD
+:100CE00035A461DAF82252FC76D62F192128EBA21E
+:100CF0004349B670F86DAD9D895A9013CF7D6CC194
+:100D000067304B24AB8BC946969C02394EFC42CDD2
+:100D1000243E13EB1F5AAA3E64EB8FC96BB24BBD46
+:100D2000118E6CBA2EA5D98910353C62C27E1B810A
+:100D3000E14F195CC01296741390B48B87F1520B7B
+:100D40000E8AA77B33B885A6F105A889311410C295
+:100D50000338BDC593416FBD09BADE19217BEE0F83
+:100D60006BACEF2E79D0C25736F0AE008196F33BD4
+:100D70007731F3F8CA32DA4711FCB6A97417D17D7E
+:100D800063C5B31ED724D0143D4081F6CB992B7F89
+:100D90006FBF4D9F3C7E26628D0BF4F261007D4754
+:100DA0002C49CBF5912BF2ABD97FE45F19BF59F6F3
+:100DB000022D01A30780BB0660128BB0EC8DCCB175
+:100DC000D24BDCE3D1955A0A80906F717C2C2BD1E9
+:100DD000DA64528DFCDB061830A7835A23EA53DF0E
+:100DE000A05C65C8B960A2FBBDBF0497596AF83B17
+:100DF00071200BE22788F2BDA9780D72AC27386EFE
+:100E000039FF08BE5B3D109B59B55D61F3CC2E6088
+:100E10005BAE72606101956EA87B0F954476CB82C4
+:100E20002F1155782571E92D76EA6EEC53B7250D13
+:100E30003B0F05302A260AF4C354D764309A5F6505
+:100E400053E368E235A4C5EC2A4BAA3A29E87A12A2
+:100E500040668483C4E1B2F1DEF2859AC37B5CC252
+:100E60009927050EA1C526F6A0E661C9F3CE371075
+:100E7000E5BB47105C99E06B1F020D551ECAE1915E
+:100E80008874EF5CCE7A365176981B92B39E14DE4E
+:100E90008A5A6956FFB83509C71B013EEE27D3B3FE
+:100EA0007B8BCAC811461C9A5E315B15824D1FB4FC
+:100EB00059336609D51C6C519674E532B50D0000A6
+:100EC00010FAC4CE374620F1BFDB86FC1F80039E9C
+:100ED0000E5C597B9B28302E58D99F73B1A7223ABC
+:100EE0002BC7CDC266D5F9505C41572ACA36C525F5
+:100EF00084A4A83CD07A9290AE1BABFEEA1BE254CD
+:100F000069C702E16B7268805F239427D7466ECF72
+:100F100047271AA564211882B7BE56C20670D0D0E2
+:100F200017FB4A4F567FA24D11015246B4CA96E3B1
+:100F300010ADC9CA30952408B88FAD92A078251E8F
+:100F40000ECAD9E603AB950BC5B787C34C4CE195E8
+:100F500058FD30137DEB79E519C1FD1FD9353D737F
+:100F6000166BC93131FDDDC691868EA639CE820C55
+:100F700036E51E7A2D4E2B1839819CF495BF4CCC4A
+:100F800099AEEA14BB3A14DBBF5E023D94CF6E7D8E
+:100F9000FA68FD180D99C4B3CE84491758D423DCE0
+:100FA0002C73630641FA33CFF6F3FCFF8580E40C23
+:100FB00022FBF1819597DB2E6D139797531426E64C
+:100FC0004C4DE14C3C04532C573E41E481DDA613CB
+:100FD000062A5554A1DAF95F60A9519C564C5D0868
+:100FE00051E327B1290FC5BFBC2C6DA2727EEEBFA5
+:100FF000F62C7D0D34A3B72B505497BFE61651E560
+:101000006BF4F9B4E47C3E233729A2A628498B90DF
+:101010002739645028FAFCA9FDFA98DF6C42E7EA08
+:10102000642440D2B18FBDBD7C1AC024AFB9645CCA
+:101030008D2BB9D2F0DC774F1A99FAF8AF53C50B64
+:10104000DF84BEB727C61499BE3DE9A85397FDC4F7
+:101050003C108D22408761E80D4D69A2039DECB2E2
+:10106000CC6CBCF8B2A013A9669CD8E3BDF5F39B89
+:10107000E0984E77A718904C78FF4E17018B0E4FD3
+:10108000B8E50F050C05BAB51F06948EF0488A0E18
+:101090006C00F8E8C7C0B36389E3E1ED5E111CFAA8
+:1010A000E35C735EDF3BA9B90CA9EA2F0A62289BB7
+:1010B0006EB39E26A8F67F51167893E64F31F275EF
+:1010C0006A0E67A76D237E47192444F631049E24D7
+:1010D00043ED5F95A73D10AE3F7BBECCA833DC6CE3
+:1010E000DE0788DF3F24DF17F6031E355C6AAA059A
+:1010F000773BB72B9AF91FA8C893F870C49A6D2B49
+:10110000950C3EB26B693393E9E9E165633260ACFB
+:101110002E2B32EDC95D3CB23C06B4DA55B885548D
+:10112000DF8A4C01022DE8EF798B0A1B2A5493C306
+:1011300006383C8B675E29789288CF6FF2F1AE76E5
+:10114000FC8B7EDD42FF9B7BC7EE8AA75C85C7D008
+:1011500024C7F384FFB870A4264FD164421B3056D5
+:10116000FD2B868D34E0496B68404C8A10A7EC0B50
+:10117000AB8539B21269891D35CD6A1E975C24B4DE
+:10118000112A53CE29485B710E1EAF3DD1F70DE1F8
+:10119000246226AD19AED68416B0F57BCE6A56B160
+:1011A0002C4E6A626CAB4F86B4A1A5C74945BAE91B
+:1011B00029936ACD09C22CDC5C5EB9DE93BAC4F314
+:1011C00047B046015EE9A9E20E8735290F6E8BED27
+:1011D0002AF94C896982A5C831C0BAF9EF57B5A57B
+:1011E00004BBB5254CEE9E0A13E0D52A75DAA4B2ED
+:1011F00062BA91646889BA1ED2A4F7A100F339FAE1
+:10120000B018FC939500BA61AE9909FBC434BB0FCA
+:10121000C600E7A0BFE8AA3B448D2838DDE420895A
+:10122000BE1172EAF188E37850BDB61693959171BC
+:101230009E67DA89DFD3498EA8C73BED027338ED8C
+:1012400072F6C1E893A3C853B978023762A4761C3A
+:1012500053922D7911D60748D88D2A3B3245E69214
+:1012600004A499C61961CFAF57BC441937922E35E3
+:1012700031CA1C0499B8794CF55456E92BBC0A4C78
+:101280009CEBC6D1DE89DBA1B19EBEF668A4BF92FD
+:10129000762F5E6E029340585B736B3BF8A621D8A5
+:1012A000D749F7AF976B3FFAD4546E6FCB0711F362
+:1012B0000AB7DF2A9FF4A34CA9B21FDAB6AE819E0B
+:1012C000E60620B84B4C7D52E8F52797D715B44772
+:1012D0007221ED734351A11CC838B99FF7B87957F3
+:1012E0009E4DB0FEE66EB219AF6F7083443AAA1BF2
+:1012F0003ADEDDC2156A8A3295FBDB9BEB1018F7EC
+:10130000C2B92504E0EF91780B62F50579948DB3AD
+:10131000EDD3E9268B2BBDEEA777EF87F8E890F9A0
+:10132000BDA1E64E321EB7E200877DF1C742A4F6AA
+:1013300051C21CF58655F72546F0757AB75F372EF2
+:1013400041D3CF756E49792CEB7CC0E11E278E55B9
+:10135000CE0AF73C9CFF121B47CA6308C65E77B9EA
+:10136000A1E327E5D8B31A061DDF007473BC948887
+:10137000A6FF146A361B856CEE8922B334A8616619
+:10138000084B4FDFE86A8797B327E99D65348AA643
+:101390004FEF7705441AE9175AF6D4C3986022F440
+:1013A000D7C54A57BD9896C469534BB59F49B3C931
+:1013B000FC752BEF88AF805AD505E44B23A755E188
+:1013C0002CA9F041656C4950ADB8E6CEBE67070365
+:1013D000420F88277B4DC9677012A79811742BD5CF
+:1013E0002460333B479496C42894E1DBD325C5CED3
+:1013F0002D8CEBCF5B176DD54D4F6AE54CD25886DF
+:10140000538988F68B9277881AEA033035CB369069
+:10141000B0D593035A2E5E7AE99A873D919119F7D8
+:101420000CC96460E739BD46E0BDFDBBFC85F4C274
+:10143000532C5B7F13F142F7143102BEACFC64D530
+:101440003FDF8BD03310D76D8B6CF3996A6FECF064
+:1014500014E65A31BA8EAA2222AA0FA761A092439B
+:101460007E1FE2B5670C0DFDDDF28DDE207F25F0DD
+:1014700077C07A17856685BFF2BB94C4871E255D49
+:10148000B8F491DDB6BB67B493BEFD8A1F9B90474D
+:10149000066B6B24BCE5AD54E9483214F202569257
+:1014A00053DDA86205BEC666922DA0FBBF86FE6E08
+:1014B000EBD5D199E09CA555112E10ECFAD10A3844
+:1014C000943A8A5EFEB50FEEEE5772789C5B90A25E
+:1014D00029F67B6CECC8DEE916BE86257CD77964DC
+:1014E000DE2AD9A046AD2054458AE7336CB91FE007
+:1014F00098B477C47392DC619DACF5343833D8006E
+:10150000A65E06DF5BE5F00B8EDBE7820703682B48
+:101510001F97744CC198AF416F5589FE27F9E3E5D9
+:101520002FDF59398E7278BCB406D5AAB9C7D976DF
+:1015300015ACA6CC3D89B2DB9ADB5BD0A53BDDD2F6
+:10154000C99E971C08F63AD0FA76A2E65E344FABF5
+:10155000102971E15AA431295ACBEC54474BB6D625
+:10156000D56379253053CC00F34F83F5722DE1A478
+:101570002222E029FA6A771467879B63B35A730AB9
+:10158000F89B1127B363A2E0123D7C0880FCFCD1DC
+:1015900046AC6FA056A177260BE965E5F94B4EDE08
+:1015A000FF2B323149FAD76346BDF772BED372A41E
+:1015B000116E63E6602E7F0E8E43E1D95058346F72
+:1015C000B20A493E3D69087273FEAF2413C288E92E
+:1015D000249A9048AACE8555A94A7417B9CF3141AB
+:1015E0002B5192AB42E29A032640BEA54AC65B83CA
+:1015F00009C56DD612976CC1CDE5AF11E18A0E41D8
+:10160000FF5755940D4751B75F838AE98A30934E4F
+:101610005818479F7E326F50B9C08034C3DD0C2309
+:101620006E8C41D4B892C893013B76FB70F30020D6
+:10163000566E9FD09888316E4B54BB1F10F6FD57E5
+:1016400087AFBA7CABC4F2B585FFD29F8DFAE0D7E5
+:10165000CCAF5743D192F819C42B95CE095F3E8584
+:101660000C17917EF23E2EF260134B1FCB536997FD
+:10167000AD1916F5D5349EBD6C3325D73450C285CF
+:10168000BC820A17C32D73845C46CB2CE13083D710
+:10169000EAAFF209E16D9DF852B28619B81BC6692E
+:1016A00028B5A2C6D85B035E7A75A598E5A0833AF3
+:1016B0002B55BA7F2CA6FEE8F2CF9BC9972CDB8E68
+:1016C000E17B48C8D4A105F6DA3F8C6C787EC40D66
+:1016D000DC0F9AEBC114D306B7C2D2A67BB4DEDA14
+:1016E00014C5A5972FB2FCCA25DAE46A405C4D7F89
+:1016F000B60DDE7659E5762C332AD68E2EEE88E2AC
+:101700005A8967231AAE55124289C4336630A3FB47
+:10171000A78EFB6F5E6FA175317DEECFF1008C3728
+:10172000E7D183CA733218F0CD80CD2D86733DF694
+:101730002834D2E10A4D2AB2E06A83D31D1BCFDFE1
+:1017400003373C15DCEEF3271E5C137105D727F435
+:101750003A27BD10FF9EDD8753794ED02CFCCB6C11
+:101760000B016D43FDE9590F30312D53A724C85BA0
+:1017700004002372CC517C6E9C17747BFF0985BAE0
+:10178000D4855323B00556A229D966FFDE045A6AD0
+:101790004970C641AD705CD3695832C0455D7D1655
+:1017A00015B32C6537B5FD1C37B4EC6E307E140CC8
+:1017B00004523E402E31265D572C9354DA872E0B6F
+:1017C000C1A05724C74722CFFD96D0ADA0B68C4EFE
+:1017D00036513BE52F4075461A616E8810672A74B2
+:1017E000A8ADE8F894C8DF3E9D4BFD06EF1E671CD0
+:1017F000D8AACD7154392CE4BDDDC7FEB6CCA67491
+:10180000EEBD7FCD539ED8E14CBC835E1DA6F90E84
+:1018100029A441D72A6C9A82D926ED458E85AD122E
+:10182000B87D947D6766DC6A0595EB48D79A8C97FE
+:10183000BD914402B38A553B0508ACA6CCA8B9A813
+:10184000F8B9031C1C56E0973287EC3C74AEBE5FBF
+:10185000EFD07B1BD03EF4076FE9F471972107EAC4
+:10186000E9DD0288915E7D99DE7531B18B4FC41E32
+:10187000B9F83EC331228FD8BE135FFD3F1396C126
+:10188000EBA4E9AB43A6DD3CDB5D02D20B616A054C
+:10189000991A325F012C92966E1B4D912CC682B222
+:1018A0005ADE6122D25E42F2AF50A1C6AC6914AAE0
+:1018B0001AAE6B1C7140D72023F033AFFBA0E56B51
+:1018C000C3A70C4D3B55EAAED5C23C739D386E574D
+:1018D000DD060F61FFA77B5C32B9FE453DC40BE31B
+:1018E0007C7164E7B9BAD43EC8A7864B9CD7132A4B
+:1018F000CB7D0B47029F2517C8EA7317222080A6CD
+:10190000282A9D0495AACB09A18D0010F13420222C
+:10191000598146C9304685C9BC1900A9A7135BF196
+:10192000F8A05DA710355EB54A0EEE5AB393785E07
+:101930009CA6CD1CCF69F46092ED94B9A152A3B2DC
+:101940003361736EC8BC95324B63BAB1089FD4AD96
+:10195000537D4EBFA7C1A37B93A07A186EC8F68BA8
+:10196000C4D632E2D497F84EC2D43D8ABF6B09C4C4
+:10197000AD2C97B34035B154CBE90B541E18CBECCA
+:101980003EE17AE265E121D59CFBF2940DEE7165B2
+:10199000B8993BBBE060D4F96CC3FADA2B80AAC7D4
+:1019A0003A8F7706F4881081D676BB3FBF940FBC80
+:1019B0009CBF27263130B8FE4C0F80ECACCAF26FCA
+:1019C000E37AE7BC36A9BE75209B68A55AD033EBF5
+:1019D00037343F55F633394608D208CAEF60FF99CD
+:1019E0007618D1D56743CEC2E7D361E46AD586E6DF
+:1019F0005B91A7981EDCACF9AF0F0D56597586D3D5
+:101A0000DDDD221ABA5A690424483B3415091D9EAB
+:101A10002B29116D1D5B29E515CDD269B5B66888F6
+:101A2000ADD6D1080F34C75959CA8C700A56AD29A2
+:101A3000FAFFCF3742610D4D79DFFA680622C01AEE
+:101A4000D65B8FEA2C8BDD450E8F5959D689837270
+:101A500014D0B345AD6239C414BB888831280D67F2
+:101A6000CBB18304AD0787648F0C314353CA2D6D0E
+:101A70005E7004DCCF13D7C2ABBEFAD467BB2C9A1E
+:101A8000AB496CE69AB9754C6CBFD6937D8409C19D
+:101A9000FCB84AEB13B2D9E6681ADB5380E0CC817C
+:101AA0005B82E1D520992BCDFCA603E862073F03BA
+:101AB000CEB9D4D3B5B17B1E65ADD602841BD2E6B8
+:101AC000D28A0F51341F543E9FC5CC1A2B68D210B6
+:101AD0002FDA0F68D5046675714C18F36CF0131C7F
+:101AE0001CF2D4771359CA9BE846E4723A8AA3F3EE
+:101AF000A4BE24F88DA406CB5125F0021B34155E3C
+:101B0000E5EB0030BD4302A5351990438B2BECD09B
+:101B10002620D6A5A714561E1EC8BB628972B8B966
+:101B2000483584027D1335794CA89731FAEADEF303
+:101B3000E3F9D41DFDA5E3CF07AF97C2D66AA3FA98
+:101B4000B3839664B59CE39553620F7640DB34F81B
+:101B500077011084C1DDC918C0828E466E7C94E87E
+:101B60008A42B0D6B5AEDC204A55A18345ECF302DB
+:101B7000967AFBB7C1350D8EC2572C7F98AD79A2EE
+:101B80002CA8DAE72E1A7C507609ABB9AF850F7313
+:101B90007001C050EAF6E07B355A54D79F490537AB
+:101BA0002B9C696819FDF11F530499C603CCA9CD7C
+:101BB0002025CA440538169B6F3292B01A1CC94BB7
+:101BC000F83F2BE10CE4794FE034D9DCEFDB8AFFFE
+:101BD000A534B070DE65EA319FEDF21D13AA4ECC3C
+:101BE0003784E1D4199A9986A9FFF1AB80943E5FBE
+:101BF000FC5608B2CE81A771E053BB996C1919B895
+:101C00005BEA63A537FBD246D92E295593A2C73686
+:101C1000D1B896899962A47FF87496F2AAD9B7D5FB
+:101C2000C136A17F99EFF5E62E7F3352C743A44515
+:101C300000CC468CDBEAB4EF3F0AB3C0122D10F3A0
+:101C4000B80BCB5CAAD278E3342F1112E9CBFB524C
+:101C500020B67B4B51C1271152D55949C0FE5A9726
+:101C6000F46ED9179F2029B0DCA2B25CE672C10DD8
+:101C70002C0137F211ABC3DEC08A3BB47733B86BAB
+:101C8000151B1624ABF3FEDDFCF2B67BB21ADF2285
+:101C90000EAC2867DE6EF9E452BAFC5F8EEB769CE0
+:101CA000046253B339F6163661530D4270BF8EE6A7
+:101CB000AD84FC20C348C4F7BCEF65E4367F66EB17
+:101CC000D5AFF3BACC777961305EC9A3EF38065A45
+:101CD00008A729BC052D452C93754B361CD1B95E40
+:101CE0008D319DAC2665BA0C7394D8656807A255F2
+:101CF000936D808BB98127337A3A1C28697A540A0C
+:101D00007E3AD9A738043F416E5A2941C289B65953
+:101D1000E65B4E41A62C812966A6A9725DEC285C83
+:101D2000BB4BD0AA421AF27C0F01A511F7DC8D78CB
+:101D30007BD18FC2E1769942D0DCC24003A835F551
+:101D40007BD3FDA248AC32759C4490E9F6BD33B319
+:101D5000555291C0E75E386B01C0D6C0276A351571
+:101D6000FDBD8EC7A77179CE697C59489373E93858
+:101D700057F884217A112558530D503901C64C0467
+:101D8000B7D8263F26E9947EFA7D2CACDFD783DED8
+:101D900021DE42F9C65E5F47B4AE44D5F21928F899
+:101DA0006392EB25427723753B2826AC29DDCEA331
+:101DB0006D4E6FFB990EEFDA610350E12C6F535EAD
+:101DC000732C3F17CE148770AC7650DBAF97F86C4E
+:101DD0003A81A7D6BEA2449F3648B9DD13D2A26687
+:101DE000414145B7A11C8D754C47CC5F11D2262EC1
+:101DF0003666839E8A4E50C865B550C80D047DBBBB
+:101E0000E79336F74A7C1CE90D7FAE2E50D8B48C90
+:101E1000BA7F6C7D52352FD7107E46F87FFA5AD79D
+:101E2000A0DD5B1B299CBF6EA7BED8E21FDA328EF5
+:101E3000D0F57FCD1B0D8083CC6A7442ED58DDDC7C
+:101E4000FA5C07D930320DA782EBCDF2BEA46C69E3
+:101E50005BDAC455670C0B73311433CD07C1F5330E
+:101E60005E81ADACF11CB4DE939A518E96C9632CA1
+:101E70009754914E0B6ED8C7D0ACBF922E4AEDF559
+:101E8000F4049A3BECFF046CEBBA536AF3A512AD71
+:101E9000FA85C6628D8BD0E9F9A71458E506480289
+:101EA00033A0EF6DEB1EB04C70146DA126D3C7604C
+:101EB000AF574FA40E8C972DA6A4EE3324718190BA
+:101EC000FD9154114FAFEB8EE95BF33201C2A27565
+:101ED0009239B0C0DA259863325B53F2D6D1A4E1CF
+:101EE000E7EC8242DFA3A5DCE9C946E96D16C4EC44
+:101EF0003EDE3EEC22D019D0014E296F847563EB93
+:101F0000DCCC88CAE003DF0F4F01B9C35252FA108C
+:101F1000EAB0CC47DCCF61D15D61A09B3167137C17
+:101F200061AB39E808A2F3AA455F001123E85279B2
+:101F30009721B73AA0B7BB1A98C15EF1BB8F24FBBB
+:101F40004951A0B8F5248DC78693F943FDD698DC96
+:101F50007C9208249AAC43A20CFDA9D153A0A4EF13
+:101F60005779C5A8735160E23FE45D972D32A8CB45
+:101F700060ACFEA01ADEAF43D9B1A28467F000E7DF
+:101F8000C5BF30ABF9B4173567CCF446C3FBCFA25D
+:101F900071F4FAF6F1E804D37F6E46060ED7D10845
+:101FA000D153F5030965E41C72E2C1AFD673140B7B
+:101FB000010B847501F347CA6E301E342B5915C8C6
+:101FC000BEEF919CF772248CD1507280BA17432DCA
+:101FD000B1ED7D80EBA9EBF7F5885AB3EB6F90CBB1
+:101FE000120DF370261DBB5A07C64F9EE02E4B51B3
+:101FF000D5ACACF811A050E94BC9D694263CCEC361
+:10200000ACAEC92ACCB6A0F2F7D681E2211A0D11E6
+:10201000A72E6AFCA1D65CC5001C0BFF98B3D7861F
+:102020002641345717D2B937F5D11D872024F665DC
+:10203000D90E4F85ED120EB2291B04A03308A53628
+:1020400028F18308FFEF91D41D6F7B618514BA6777
+:1020500031D971D7DCA82B82625C6229A33D396B30
+:1020600007039C61677DD3D043D56556E32DF4B259
+:10207000435A24C7E489191AB7D44A7BE4AA46B75D
+:10208000D056995FCB299D63B672E9BEDAD403B905
+:1020900068F13394BAC9806262121E554BA84C4A4B
+:1020A000E262E279EA7B26C64811E2E8718E5A3490
+:1020B000D1EF8762212200F0A2340DC81DB9354A44
+:1020C0009105AB1BCCBBD9D82E00FB4C4D5E3D110E
+:1020D0000DC382D19749B07222844AFB66FDF5FE9A
+:1020E00021D85BD21E2CF24F5C5CDEE088FAC80976
+:1020F0002674472E2E110A1F4BE9B954F7C8AE08B3
+:1021000057696CE224DB9F92630591E77F9E796EAD
+:102110004349F44EEF3374F6E653913391F0600B7C
+:1021200045CB0023553B63CA6129E10C52E9A82A3B
+:1021300040F021702923245B56D9956A5B8DEFBC52
+:10214000D30D63D9DFC29BFEB982E5E582330F521E
+:10215000511E438186EEEE92CD227A9842EEFE1A0F
+:1021600087BE6671CCC94E0073335DC6C734542533
+:10217000E0676BA6194069AA99816DFFFD491CBEF5
+:102180003A36D5062200DBD6367C84A33C90E5B6F1
+:10219000B0DC6A6140E21140A39F47D887AA1BC503
+:1021A0000E2213995E9F6C0C73B5943F84A404CBEC
+:1021B000723D3DE417C63E1F1041ACBB39FB3BAD41
+:1021C00028B85730EA4CD082FA4586F3C74EF4E778
+:1021D000AB9F2AF75D0128521BF834310203719638
+:1021E00014F441C453D02841925BCA5BCC9875C9A2
+:1021F000CE84B1FCF802CEDED394E436D7F9632E58
+:10220000BAFD6E49EDD25A5CCE6CFDE0616682ADDE
+:10221000B5FC873ADCDE9D17C68395645A9BA73EC2
+:10222000BB6935B4A0D43CE04DBB1ED419DD04E23B
+:10223000239688CA955AE9A115EB25DE10EE31E305
+:10224000FFCEEF93233109594A6AEF9E96EDC515EB
+:102250007659651A7B6E80F1E5027D874D42D42365
+:10226000B46EB24DCB4398F9A0862FA36ABB30C69B
+:102270006BE7A09B2F046D7F05E80CD30D9305DB66
+:1022800030FD028BDA98E29072047FC114225EF571
+:1022900073E86DB32C66B51EB3100FBB95532CCAF3
+:1022A0005AD3C36ED652DE91A6B9B5E9D4D8C0CE02
+:1022B0000AB053B544AFD913876A11EA55F27AFED2
+:1022C00052F8AECC212A5A84A04DBB8FDB1C0A5495
+:1022D000CACBBF2CFF99248B3F0CD2B09D2D7BD055
+:1022E0008BB649A86147D633FCC752E416DA977E0D
+:1022F000F61DDF507DB61AFA0312ACCDAE2F915504
+:102300009130965B99DEE7D32543B3AB34B8910E99
+:10231000F0200AA54862022497E0DD9F32819AEFFF
+:102320009242D8021420BA7971E3AD5EFAB281927A
+:10233000A482DB4DCF2254E4D3F2F1122ED8FA5D01
+:102340009E4F1E250BAE131B0FCD1267F1AA6EED2B
+:10235000917857F4642EABE5BCA217827E0E6354CD
+:10236000F93CE9C2EBAD89A8B09A85F137666C3DBE
+:102370000C52415FCF5E3454A963CC2D369C2AC6E3
+:10238000177FE19726ECB94CF317166B83B14C8F8E
+:10239000C3241BF2069F87F09E2F845CDEE8D11BCE
+:1023A0002ACE4F8E2039E71D75A0634894ABC0D864
+:1023B0008084C6F69CA30740894C7754E55F964914
+:1023C000E018B6459646CBFAB28E53ED10C1BF97D2
+:1023D000A0D2A97D0E39FB9C8A8ABA552BE34460B2
+:1023E00016EA08E3B0A7FB250E27158050556D2986
+:1023F0009B2D34F57AE5A1DAEFB8E6300C7C667FE8
+:1024000074710D01B9AC1275781AF46082FF15A6CB
+:1024100037034D0581E192BEF6236DBDE2B9C59A41
+:10242000315B338FFA12DD418EF6A9BBBB67F4F73F
+:102430008880116F13FC8E200588ECFEEE9EB3E1C0
+:10244000743ECB3A96A573ACB4FB0984BDE66D33FC
+:10245000C1FFF12BD4E1A444202A99D3DAD13972F7
+:1024600060601B266ED13A773F95F3C6D702FF799D
+:102470003188CFE04989CA6FCCDCFCEE710F03864E
+:102480008E73498390296A3D2BE16514D17FB94B46
+:102490006EF563AD161927928BA0352F4443BCB45B
+:1024A00097486A65F6868CBBCA61756366B975061E
+:1024B00030BB70D1835F82BDCA6D753F9031C41649
+:1024C000E7169B018C4ECE9B1F0AD2B0CF245B1225
+:1024D0009D13927652D565E3AB13E2E1D4B12F6D33
+:1024E0006832C54E27380FD08778F996B0FCFB8547
+:1024F000EF4A5DC5C24D7EE8205DF3ADE7D3F10E36
+:1025000038F447483654FBC0E3D01B65201898B117
+:10251000429BA29570EBF46B386A299EE1187CEC23
+:10252000C023CEC323B1FEB03D92467C47C0A0E697
+:10253000D5639372570C4ADF7C501AD4BC1C2B60B5
+:1025400041C2A510559D4E38E07B4E4B0578180FC3
+:1025500038D0CBA9056948FE7BE99CA693922EF45E
+:10256000F4D0F57D4CE26AA2FC3F62879DB5CB4179
+:10257000BA99DA13E08617984E78F79598EEC16EFF
+:102580002A0621824674865A36C95054D328977E2B
+:102590002991E48E75AB7E893A6EFA0188E7120BB9
+:1025A00096F428DF567BF1A587E2BA141269D3CDE1
+:1025B00091A7C6B9C355D9B0B9D5FCD53E21A6C996
+:1025C0000B63723885827F875743548D683D6493CF
+:1025D000104BB102073FD356A48A3FD860776DA84D
+:1025E0006874675A17381AEBA6AFF55F2AE453747C
+:1025F0009E0AAFB7E927C66019DBB93FDD80AB1390
+:102600004E804C2FD64E2D5C723CB51C8E671E8AB8
+:10261000152B6225FD613A72030EE66C43050861D5
+:102620007BA924DF513422AD1F55D7667EF071B5EA
+:10263000F5ACDEA53A03CD58448A587DC88A429C41
+:1026400091B0032079E104E8EC9BEA0C8ED2AD5EF8
+:10265000571490CD382DF7C6275F2E642E4BD5EC3E
+:102660001D24671B4E88B32E94F2F0E6191A08ED6C
+:10267000D26242C26BB3093CF9461479447C0BDA4E
+:10268000F11509CD0C26F6DCB464DA37CBD7158CFE
+:10269000A683E0D6D3C09069780888A766B07F4249
+:1026A000BBB3910642EFAB55491AF0BC9D48FE6C96
+:1026B000D8D69BC7F9D378E1A9427DD0D759C210AB
+:1026C000F37C0B288552B405D1AA2EB8D2AF88E985
+:1026D000F2E9890E6784AF1F95992118EA2C7C4591
+:1026E0000E2617D384ED64710C27594975450D8A60
+:1026F000B56B86DF5168C0C15D896F1E45DAB46E67
+:102700003E4B40F71A28D6A0EDD3B984A02BDEAB00
+:1027100039DA8948F7F0418FACC5FC21C32E2B5420
+:10272000D718CFBA04CE3C25DF4E1BBE9DA74C6602
+:102730001333238740FA7119FC6F48215590844D5B
+:10274000F804658399F95AF97CCC00AE5F382457B8
+:10275000C19DD632753D4CD157E0DA4BF1C51D30E5
+:1027600071D47EDAA12854868401863F99FBACBFE0
+:1027700099313BB013D6ED3D4266AB46FE57304F24
+:10278000A411C21C51338B9CBDFBC41C9F978F2D81
+:102790008CBA36C1B0E5EC63DD405D31900103B227
+:1027A000BC34002D4CD5AE2C345179EBB89D400093
+:1027B0007529724F727AD6B6CBE6C8390D6DC82A24
+:1027C000D3B175BB3EC5051EEA04CABEB65B20BDCB
+:1027D000F34206178867D6C5948176E2681EE460E6
+:1027E0009070E77BFCCACA3250C98D0C051A0336BB
+:1027F000121067DF6B93F9E77E8FE3E5671DEF3318
+:10280000C6E650B6371496F03E19D7AB72A8ABD5D2
+:10281000B84232D7549BEDC6C61C250A8F0CB84966
+:1028200078789B004D96CDC6E199805D66F214B52F
+:10283000903989C6A7D45B0C5D2C88065D60163A7A
+:102840008604A8F72729F804318C711CB67AFE8219
+:10285000B8C7D765E792D9FDFB6ECD53A52B04A36E
+:10286000A5905D3828DAC00ED2CD6B6A948F25967C
+:10287000FDCEB6E1F7A626AFF37090B69E4F991144
+:102880008E14F7E729859EFFF70DC6824F33C18866
+:10289000E6EACE79460B5F77722F6C72EAC0784118
+:1028A000D9047341C0A8FC183769638119B4C232D6
+:1028B000EE37ABBC4C31B208BEA4C0B76A0DED42D6
+:1028C0002F18A7A48F3D85E01CC47602690F95AF31
+:1028D000D3851405B49FEF4E21012FFD73762F7120
+:1028E00058302A93B7A56CF13A266D28F03B4B611E
+:1028F00080EAF65CE039DE281A7DC559523D317C0C
+:10290000B2E1582CD89E07E42AD71A862DDCBEE9FE
+:10291000ECB90CACCD6CD2AFB599941255EB88A242
+:102920008770ECE3E8AD2B4DB4FE3BF1C60AB03E38
+:10293000FDB1A663A52917AB416CED691FE5724B8C
+:102940007FD8BFA071C01825CFF4E752389BE14D66
+:10295000E75929E7ACC3D562B9B86E06217122AA3E
+:10296000C445A70C5760D1F656257F60713821BA4F
+:102970004B6FC64F5ED54AEEDA98AE28E631E0BC22
+:102980008566A408F2924CC7B036C7A707BF5B1490
+:10299000707E34431F79B3B9B82A0D849849FF6516
+:1029A000DBF7D844D0A0C9498F7B52162A93FC8903
+:1029B0002A8E0A829325E3EAE418B98CC89AFFEBC1
+:1029C000417937DA459FCF9B29D5A271485E7D8931
+:1029D0001929BEF2D848343311389D660FEE03FD35
+:1029E000F60D50EC734675265545FA7C86A4E3B483
+:1029F0005431FEED840F0C0DC638F2D2CEC525FC45
+:102A0000F14DCEFED6DD9881FDCC41C9AAC4C36E7E
+:102A1000E47DCE26CA2DD163738870851D6EC9767C
+:102A20003FCB6924351721E7E89B05A7A8718FD90B
+:102A300074DE3CE1B3AD7E680AE8B9BDC1FFD94997
+:102A40008F4125B6A3C5C758A8D914A13C957B30A2
+:102A50008C4B6562D2A6B4B99A4C5466033D29F8F2
+:102A600044AFD233187DE00C6BBCD15433B40C931B
+:102A7000DFD2375B3D657A9CF1EE2B2F7144D74056
+:102A8000A321AB65A4086804DA4A413F492A2CE334
+:102A90002E3D095BC6CA4AA4084F2C1A7A8E3DA364
+:102AA0001271FBB318D580846064F3EF71BC4CE9FC
+:102AB000B251F656038E04974C2099BF55CF9130F2
+:102AC000AA657F166A7EF96C0ED48B2AFF5B37D518
+:102AD000E2566918E414E0B6875D09ECA27C22D9BD
+:102AE00038E60D79A6D9FAFBDE9E7E3A59080DC26A
+:102AF00019F71FD00C6125E81E59C65068CA7B051E
+:102B000083C0E93F893145AFE316D4A69A2AADC701
+:102B10005E30676ABF452021FFF6DE7C93AC87FDFF
+:102B20004443765FA41E0D87F52CE75620EEBA3C91
+:102B3000BC57A18D7A798E192F8CAF907B0C5EF3E8
+:102B40005292B18181A9D341B928516E0D91475C50
+:102B5000579B119C6A25599B53D58BA175095A0423
+:102B600089D7B17210933A825FDA15CCF33C74D8EE
+:102B70003DFC4DAC42EB27B7C44C961369AFDDA9C1
+:102B8000F41CC7F3552B5A7905B6C37D4B24966FB9
+:102B9000B908BCD4A089CB64227CC90B7CC65F7DFC
+:102BA000DBE78573CA56E443BA7D24A52C56A516E7
+:102BB0006619B9E3EA55834A6F3DFA23BC96B4EE31
+:102BC0004EE6C1678693C75256337F9EDFC3533D9F
+:102BD0000692F8EC7369B01FE27B543F7D8371F875
+:102BE00073E74E3446B2CF8E41D2B6B46DC3CE84B5
+:102BF000D91DB084037C95BE349648FE447879AFE5
+:102C0000ADB03CBF14DF7CAA33B1C37FF90A8D7528
+:102C1000C8D7D5C1D3CD440543F13F7AEC55E4D0B4
+:102C2000AC483AF174E689007672838C8996372431
+:102C3000FC953D074BFA7F1D99011DB0CC67DBDF8A
+:102C400019A282F75AAF29C19E1F8F81E662EFABAE
+:102C5000C693B1E28D0DC852E2EC2E9AB583C06ADC
+:102C60000F3375BEC29510DD1C482E0B284B1799EB
+:102C700036C251BEE3F99A67FC79B895EC96364BAB
+:102C8000A0089F894E7DC261DE53C0E440EBF9E2AB
+:102C90001B57E802E40589551644D692C03373A544
+:102CA0007326A02652602C59C72ECE6796EA569CF2
+:102CB00009B6A8E2581493C24738A3224DF8CA7D3A
+:102CC00038CD23E47C231791F3B39815279E52E364
+:102CD000B10C49ABAD50B1F216ACEDA26D556D170C
+:102CE000B45F527F3F3D9BBCB777631D4BA8DD4966
+:102CF000589502860240F6B5CFEA79496D6136DB18
+:102D0000A8FBA270A13F12AB56E8C5FD77A156C53E
+:102D100092DEFE0B80001472E67A010E4306A31DBC
+:102D2000AB04C53318FFA3E6D7085030E5FED8FE44
+:102D3000DD8D78E808AAE2D59A48866662A4CA3E84
+:102D40009335354AA8480F61F1962BEDDC40AC4C29
+:102D5000338AFCFCFA200DB0B75D4DAF57857AD1B0
+:102D60005AF6F689ECE932D3977AEA45247ED639C9
+:102D700048EEB2A2FD1E72F4B284552F9B4B603117
+:102D8000F3412AD05E3C0809A80C445155A0259176
+:102D9000CB6E098FA869114D1CE17AAFA1373216AD
+:102DA0001F15FBAF1F1BBBE0C063C35FEE84E25D7A
+:102DB00093F94FABF2482081765AF9412868FCE735
+:102DC000AE9898527D28D3411ED1941D9FA167A52E
+:102DD0005D45163C0A89EA56BE2FAD96AFD84873BA
+:102DE00048769C016A180F392A8951638D41118AEE
+:102DF0001741AF9EEDFECE863A67E55164D6A471C9
+:102E000085E0CB276FA327D9AB1DEA486FED514072
+:102E10007606C7EE924CCF39B8605065D1BF0D85AC
+:102E2000F1C15416EB425F40BFC803CF5F865FE934
+:102E30005FB1AB723A1F299F3EDE3ED6B4CA23076C
+:102E400057BF53161701FFEC87C393FA8EEE0E009F
+:102E5000401F99F01D207FCC302F127C240C95C58B
+:102E60007FEC11EBC2351AF5F9251CF6D4FC634A48
+:102E7000EA27A89E3B584C48652C64F13E751565C1
+:102E80007CD0B172E21DDB76BB9088EACB9F396DB6
+:102E9000B4793866E456FD86BB2DE26AC80D80AF72
+:102EA000748BA6FBBAA71F5945C5296ABBA5DA2BA7
+:102EB00012D29BB5FC2E5CD5302DC8D290E980DFB4
+:102EC0006B0647E1A85FBF6F97BBA83B4C4866B84D
+:102ED0006C7E03DB2E8B74BA4B210247E997462C9C
+:102EE00059B8CC517DD76E31B9347709D19A67463C
+:102EF0009AA98E4DD90C742DEC70123D18AD70F25C
+:102F00002FE89403D0331EB4AF6BA340559C83804D
+:102F1000632208015C3AB9D4DF0B2E7AA929AD0CE3
+:102F2000B4F2356A2B96C808B39B10C005AA474671
+:102F3000B1B9EAFF69FAFA80DEC894B4BD387FA55A
+:102F4000B8E7925C498C1157BCEC441E2151041621
+:102F500015D89DCED229ABD7ACDB75B5CF3A47ACEF
+:102F6000C0F0FC56286E9A4426D0D70F4ED2D41506
+:102F70009E5805F307AD48FF5BAAD00AB32D27CEB4
+:102F8000E53257062184055CDB14E68A658BC3BFF6
+:102F90008438D45E8CCFD257154E8EBD15C4AA8C02
+:102FA000D1C23AAE16C18854878E555D2E2E393D5A
+:102FB000B2DB343ACE356BEFD5F97824FD710B993D
+:102FC0009FA328630A159456097F68C288965745BF
+:102FD0004D44B2DE1B5C8D57D8116265633FDE2421
+:102FE000D9BC795F06BDFDF9BCAB1E5D224E476EB4
+:102FF0007D7AB2764875BAD99FB02A166B820CEAF0
+:10300000F7AFB9C4D4584E6E7FD803A7B1CA47A151
+:10301000696D7F58B2E18B0F4A37C561AFE2A0CF2F
+:10302000925C0E10BE37F0DF3708E7461AA59E7790
+:103030005663F249D8BF1E1E257654BC33D6F225FE
+:10304000BDA73E22F2390EA5084DD00DF28E1BA66B
+:10305000A26B4D829BA9E3058DE6782D499FB96A45
+:10306000536B7311AC571009FB8E3C951FABC0C15D
+:10307000DC4C62C19059A7B2C950A35BCE0EE1747B
+:10308000863CDB7B98B4581B727A2104E1CC145443
+:10309000EDB360161ECB876DB5B9D4DE92CA34C6C7
+:1030A00054A3137C3B4EB746EEF9AE8BB79E5CFA49
+:1030B0007E3EE4B6E163239A67DC26310FDF876842
+:1030C000140FE0E7380064F3AC8CF0963202CF893D
+:1030D000C2CF8C87CC36986414884505E4CAF97E43
+:1030E0002745FF9C39034158BC10FBED66F405D21F
+:1030F0003567706A430824F7B1A6BC5E224A409542
+:103100004B11B2BD7A9604CEFF2AC47636F7993BAE
+:10311000BD2412133244397273210A2C6770C636EB
+:10312000DDA6CD99CF3FC4AF736585B44EC6666F3B
+:103130001EA7DA4199406823F0859BE8BEA740A608
+:1031400049DFF43E9D600BF27F6EAC3B7935D8C011
+:10315000068FA32A52D0CC647565FED1471024B5E2
+:1031600027408952474D0CBA26543BC71CAAACD7FE
+:103170006ADD9B23DCF2DD6E66D6269F535099E50F
+:1031800021A5D69D631CB1D62117B247039B7307B7
+:10319000AFA368F8C6CC1EEDE06A71DF1DF5045CD4
+:1031A0005DA80DAD58DD1009DE3314E9E842BDA17C
+:1031B00079F328A6AC8303A29D568A3543B9913C86
+:1031C000AA896C62A761C4179A8A6EB98443BEF15A
+:1031D000EA4301048E84B21F105C594ABCA9581FEF
+:1031E000A2F21263DCE4D513095D0444B477C55C34
+:1031F0003D7A7534725D34B1A8A66EE07A9BDF9398
+:1032000057FA0C3846C11FC4E2EE98BAFC3F594A3F
+:1032100003798C268819CE254CC8865EAC4CE69383
+:10322000B6CB3017EF31E2699D42F039BBE6C1A859
+:103230005209EEFD34FE28D182352ABB04AA607201
+:1032400083EAB461D30AA244A2C31762800E01E7E5
+:10325000741ADF08A11D46CA8FBB968EC2E1CA1040
+:10326000520B0A0508437BF002D159D7C1F8AA04D2
+:10327000F3617F927E3499576BA4918D0124D569B7
+:103280004398A73FD06BB28B3D2ADBFFFF56C83D6A
+:103290005E82F1C635A715597E79176EB45A1C485F
+:1032A0006807E4029C0D61828F7EE5D4885706672B
+:1032B000583EBB85F5D57BF8AFA25772DCA011B99B
+:1032C000BB9D8E86A206C30BC21033BF0A99F2E3E0
+:1032D0006EBAB6A9D065A0240429AF92B28727C0E0
+:1032E0003F508C7F933119DB0BC4AD4B9BD6D94D2E
+:1032F000FDE9149934C3032C30A8668CB4EB586DE7
+:10330000705684CE907A482AE7A34950A57999BB94
+:103310003890C2113C6B5E7E456631F587F073DAFA
+:103320002B2B8334DB4EB0C637B410E012C886AB0B
+:103330004A671DDAA5E4AF8548DB13D84A3D56112C
+:103340003FD4DB84312C8818C0E32DC593977F8C44
+:103350001F1FA48104023DD93CF96ADA00A3626808
+:10336000EADAF8497547AC1D2038C30BC4BC0F0C12
+:103370006999758FFB53336D76D06162A881B53D35
+:103380005EB6B3D33823F8FC20AEA8D604BEBA9AF2
+:1033900029610215ECD5A7712019953193A4F0117C
+:1033A000F7C242B690EC69F59A4885CEFBC86A949C
+:1033B000A66C75A04D87E783540DA46D98F5516AEE
+:1033C0006E87D9EBD5DDFC72053B94CA189ADB42B7
+:1033D0001D5625F92633E249BB3B0CFE839792919B
+:1033E000A6A39EEC72F1E194BD3BBBA05CBCE43CA7
+:1033F0007DF4102ABD317931BDD91D97B65ED4292F
+:10340000BE12E756A5D44717DEEE50BA4A1E543E08
+:103410006186D5B5CFB362338537F83FD71ACD7EF5
+:10342000FBDFA962173B69F581B45250F48ED18D50
+:1034300068FE86261BB1816A830A680E1482985F33
+:103440001A8257347444AB9FCB48EB85561F79885A
+:1034500043C665EC328CF735991F0FD0ACD5C879CF
+:103460008D0DD112746230EF666F4E8CF00E3E43BC
+:1034700053EDD56753903F0BDB1AD02F64B36D7AB1
+:103480002B4035300576B2727DDBE3DE766F51CBB3
+:10349000B50C5868059E4C29DC0D4F11C36A844257
+:1034A0001FFA73C6FF71AE8C88DAB7EFF4DE7CA228
+:1034B0005B1655412D35CBFCFAE4CC1263364760E0
+:1034C00018BB8D3C11735AD7224EBF3F698F8DFEBA
+:1034D000DB256211AC4FDC5F7FEC597C0E80AE5F68
+:1034E0002501B2CC5AE0111CBC0713F015030152A0
+:1034F000DD0F017232C7FB0427D02C80C1C4E28DDE
+:1035000052A9438976B10E4E80A2F70A05409D6C00
+:103510002D7D8CAF4C9846866D129DAE2C90B59843
+:103520007548A7550AA8851FB3ECC23C5C2D2DDD5C
+:10353000EC2790E9EFEB6F84AC0D40ED73DB986DF9
+:10354000E2EB99209E497EB6A202F948C985002C7B
+:103550007925B4CEE96C14095A0FB2F9ED9A46C830
+:10356000F31B4852D236179BCEA72326FF20636455
+:1035700072933F3505B01F0EC5B2BA01F44720045F
+:10358000AE3E1F875A200220D9FB7B114BB0BD28CD
+:1035900002E77FAB0DED692B9F21105EAB39D34A5B
+:1035A000621CC849D560A0238BDAF6518BCE2FB3AD
+:1035B000911881925186CA5CBF4E0DF26C460ADCAE
+:1035C000B04F0953F7B03FAD2732D2A6772520017F
+:1035D0000CB3C949F8562BF785B2F48ADFCDE15810
+:1035E00043BFCA8AD11F21F2707DBF4997899926AE
+:1035F0004F5D1F3DF3F68F79A32585BEC3F151FDC5
+:10360000A137176CB1ED421C9CB08290023ADAE906
+:10361000EF3B3D93777573021DAA1BC477974D1638
+:103620000503FDCBF9C895101BC52F45586A72D903
+:103630006739604193DB969D0BDE71AC0A39D5D3B7
+:1036400055361451DF825E2A3541AF3EC8ED85BA4A
+:103650005BFB07AF160CAA3499299394FECB3DED82
+:10366000BAE92DC91C5E24C8C04881E43BF25D352F
+:10367000B83A961E6F6FCF62ADA6603E2C35B82269
+:103680004E0797F85425BF4C1E26AC65FA311BD265
+:103690007B80E156E2DABC7434EDC17F232BCD7F11
+:1036A0003676993C598DA5C3647CCF2628EA8602DC
+:1036B000AB3EC461F7D7543632D4F07C1CB52063DE
+:1036C000748956C0C1205DBC2AE66B0712C288C847
+:1036D000A9642D58D70B6F75695A56977374B8F053
+:1036E0003FB8A7F944EF29B6F6B1A1515E2852536D
+:1036F0000CB3D9D3726763B2B5ABF2427F97C9A45A
+:1037000042748749C64FEE088C54CC3A849DAA2057
+:10371000812ACD41DF3C79E1832FF7767FE6978DD3
+:10372000ADFDFEEAE5CA07FDF821364984D868D721
+:1037300089B196BB8E9E0619090098F272F14679FE
+:10374000335A2428A7E60E15A7087661DC8465B2F3
+:1037500086216817C491623BE2F433694B05E43B70
+:10376000750AB6A8B92D7190157F54DDC77866A388
+:1037700082A894B11F4796FF4DD50F92D02A7A9E0A
+:10378000FF5FD1C5396F2B47C6CC2638F3B9AE6A77
+:103790001867EDEEC55DB3F12CF87CD612255942C1
+:1037A000A3A05424B65D1E6ECB1EB396C9A5FCCA59
+:1037B0000C10AD1EC2AA0B2937C0C67F6F404CDD6E
+:1037C000709FC7BFD717B6DD50AD37B64C80DC0150
+:1037D00068EA3E5EBFBA611F0B84D3897B3DEECCA5
+:1037E000E2BCAFA9C92D24CD9E34185D21C2593148
+:1037F0003F9541789B064E88A95EF7161F28A24880
+:103800007F1C2203F37A0B6C98F758BB9762E9AFE1
+:1038100032504621661415C6EE62A942D026C13147
+:103820001AFD7C49AA45DD0ACD439B0B0CC517BA8E
+:103830009781E178D581C1E54152BAE34FBC1D07BC
+:10384000374EF56C2469A9FA4FB28CC2D7ECBEA6EC
+:103850001E6397A49C7E96CE0921B135C7C82DD68C
+:103860006C3E1342994A4252306B9F146A91B232B5
+:103870001D58DAF1CFC252F2BB3940674A18155AC7
+:103880006DCC310E8DA7E4D3DAAD0BC631E9A4DFE0
+:1038900010AC4E05C8993FDEE46A2915FD1E50BDE7
+:1038A000A5D11793C37AE661174821549173FB326F
+:1038B000457AAA0541872E4512AAA3CF145DFC774D
+:1038C000979A401B707DAA0E7BA97379C5F7561392
+:1038D000E178349A4799B0611F504DFA13A53F4BD8
+:1038E000713FD2DF25F8C5083326EF53CA53410B89
+:1038F0001120A982AC4B2A3277006EB6A78117F44B
+:10390000379B17E7D699E071BD05F95931443E80E0
+:10391000C47DC5F205AB8F27566E3606EF6A9C73E1
+:10392000E0F7EE663A0BEB4024A98C7C5E636423DF
+:103930003AA9880363E3AD0DD9357AC9A71FFBEE19
+:10394000512E9FB4D6F30B2B5DC11E9210F0284B65
+:10395000F3C0263D1A93DEBAA743C9F09D3EBA9440
+:103960009FDD2B490A81B70F5BADC7853CDB3BB5BB
+:10397000575A9E27856BC46B2226846F9A047E99C2
+:1039800083220A744D1B5E8D834AAFE9ED5D8D3253
+:10399000914049990377130B3CFDAC6EEA9D10DB17
+:1039A000114536C08271585449561FF8133092821F
+:1039B0001A675DCD48522153D1F2789BE16BE471D7
+:1039C00075C42790214780E6741D784E313FEF95EE
+:1039D000F677BBAC4DEAFDEEB8BD948DEC34A9345E
+:1039E0007D08906519447CAB2652F5687E4596C1EA
+:1039F000796BAE3958521E52CB8FA44158FE68568F
+:103A00002C0FE3D0F5B22686589677B135BE5D25EA
+:103A10002038797329C2739B014A890DABD251D9E1
+:103A200089AEBCB97CF972E648C021B0A5F2E80DB8
+:103A3000DB7BDA2B5AB2660428DBF292DE1A3A7F7D
+:103A4000C4D7FE35A55A5B8337F28C5FAFD96C4281
+:103A50003E94103DA3F0D0B17AE43346495371B798
+:103A6000413B93AB949E51C2762002805B1730A1FC
+:103A70000C0274AC373F48D7B71955229B8B1D6891
+:103A80009E0762DB4F89156753D14A05981511349B
+:103A9000C48047DA16FFA591A40ED0EF3AF306CB07
+:103AA00080B861B7B2846728DCC3C5E8B3C87D823B
+:103AB000254F2F3F019217983188C9EF0CF6DCA0F3
+:103AC000ABD967D14E1675AE5EB2542D5A798BA123
+:103AD000B773D7F60600B9932766F50826F30555A0
+:103AE000F3A6D74C4A988B9225810D8603772CD26A
+:103AF0002F07F2D7D418CEDCD6E7CC34036BFDF613
+:103B00002563458F5610AAFEA21E7910CBBA61E438
+:103B1000E29610EF53BECEBEEC14E967A8433ACF4D
+:103B20007AFC6161B02142A1DCA1CE7417D3047389
+:103B3000D97F88F4C5DF17AB85287935A20BA19909
+:103B40001F23DA767D0FF8D5D2CACB57F13876E548
+:103B5000EB464F808BEF53282F3D5FB8C0AD3D52F1
+:103B60007B3BB3F7DEF5779AD10A1B774A7380F077
+:103B700088175CB7EF705BDDCAA060B09BF2356060
+:103B8000338E1A48AAD80F2225FA19F3FFA2C33D93
+:103B9000E35F13897A4EBEB710BC2DDB08B0C33289
+:103BA000495209D81AD60AC7A6A82838B9878CA7B7
+:103BB000E9B0C13E52280F3FA4D4C0077C1781183A
+:103BC000C47A00BE04A6670101793E0A52C68B582A
+:103BD0000FB9946AAD2E15AEDEC8B8CB368B34E87B
+:103BE00041DBD0B7A99820BB7D6CBBBA35921225BA
+:103BF000AE43A174B2BC73610505AB127D6480DA7B
+:103C000044D3454E7F6B6097B2E1B0805AB2EC214D
+:103C1000147758CA2CDA9CD1B859E7140EFCB813A3
+:103C200035B9CE6305F4726D92D27114EB95C17FF4
+:103C300031B3E6DF1A8ACA16F19FEC694398F6A3FE
+:103C4000E8A837015CF3317E196579C9530BEE5D45
+:103C5000AA6E20D3DE590A05F6DB261C7F10279DAD
+:103C6000684B1F1DF4E02B5692C41BB93317061482
+:103C700029AF9AF4D06033C4F258A63444DC4DF036
+:103C8000870635902F1881A4CDEFEA185AABFA7247
+:103C9000E535E1120B740AE7DDAFD826623E32BE8D
+:103CA000B042E12F3705A3B8B1BB447EEC80A475C8
+:103CB000C60A9E7D6FCFD2CF6CA396613DE2303EA7
+:103CC000C31B5A570DAE0C30A19B6193E1F2D9D6BC
+:103CD00019EA91EEDDD63963CC3353DD29A1E6E252
+:103CE000EEB34D56B703872900E615F5A2879DE18F
+:103CF000D00A6F0FF41F1F62C6C094532C1A46FFE0
+:103D0000974FEEB211299FCAC0D8974583E235007C
+:103D100059F07D37884ED7FD14CAD9272F16BA859A
+:103D20000282A60BD5FA65ABE16A173256915EECBA
+:103D3000B79AEED9B1448D1A29E83DAD93FFFAA1A7
+:103D4000CF45BE0B6EE359B4E9F463C1C7789581E2
+:103D5000D3EC8F30463B7A93E6B0D9B0834ABE2489
+:103D6000D2C639F4463BB23AA694D84E54CAB3A64A
+:103D7000D449714E431EC6756B812A2D1B5F4A665E
+:103D8000796A56DE69D48D0DEDAF7104034E6E98DD
+:103D9000F49E29C972B0C4D0353BD93506F7857475
+:103DA0003084209D728460B3F956C3A88C5CEF2ADE
+:103DB0006DF631370FB92F1D0668FAAAEBF9E53019
+:103DC000FD918F71EF3C4DF2EED118A52EAAD612BF
+:103DD00069F9C203930B079440ED001F75D83A317F
+:103DE0009787E8643FF3F210F0265F7D6840BAF3EE
+:103DF000D21D658CB54474B175A9E3B0CC5F5499FC
+:103E0000856B9B9910507F5E653A1B0B25E1535AD9
+:103E1000543EF5A8332644391A976CA3CF3E572356
+:103E200038B4EA32FC93C6D2E5CAE6019BF73D936B
+:103E30003DDFD9BF773C6FF62987C529094996CD63
+:103E40004D24CBFAC9A1423A7E22BE48DA0D9E45E6
+:103E50007455AC31D7CF72F814EC34EF92C54131C0
+:103E600074E8CC3B3F4474D2905751D7832C76787A
+:103E70003E75071F9DC1417EDE3B0F79A0CCE6F564
+:103E8000155CD3187AE0FA91A8E7D858A0340BEE65
+:103E9000C8F95B8DF19110E8D7AD9A48BC48452A26
+:103EA0003831FD27F0505404E6B14CD247DC57C5F9
+:103EB000D98EC77F16A4D12089F4EE6C61F678C53F
+:103EC00096EFF9194FC84206688D2239C61232EBB7
+:103ED000D6CEFABAC443ACB0E0F00E94EE71B43C66
+:103EE0006F092E16D8C1702E97B902C9881078CFE5
+:103EF0004378875D67E1E7626A74B841D2343DB5C3
+:103F0000A8EB48F1B65838AC1D611997C6AFBCF99B
+:103F1000BC6096FFF9F4DDFD94A175C9261C36BF7F
+:103F2000C22E7296F88D6567ED71E83D5D9776411A
+:103F30008A237E116AED2C3CB18B68AC16C6B3EEB9
+:103F400085E3A130AE6A0D8E581CC0AFE4C6FA7787
+:103F50002D5C3DA9830F9EA2FDFEF5988AF52CB33A
+:103F600021BC4ABD3F789D204FEB5DD932975ABEA8
+:103F7000ED7A3975A77298BAC2158E33E1A6A938C1
+:103F80008E78BDF253AEDB0546B1C20901A3CA8AE1
+:103F9000E15E114524476EC2E9F847DCADC34C2F02
+:103FA000A6D4B62771B8C13AB9624C131ECEB6EE8C
+:103FB00056729C5B7965ED7D177495362F9EB90915
+:103FC00075CC50E560AEF2D4A96FF8F2C27F46E13D
+:103FD00073CDB44ED63D0F25F24149087AE66247CB
+:103FE00042B40ABA9247742BBD86B0A489CF029C12
+:103FF0004E5F6D730CDD1AB4DC3DEDE385CC99AEFC
+:1040000069F0F538E0D43A29535A2A42915F2AD50B
+:1040100038DC46AF92CE56BA9B3AE090743E6D4083
+:10402000679747A9DE2CB069A71FD8694471BD0EF8
+:104030008AC26E08CC31799178AF482845F238B2FF
+:104040009EA45F3D46C7B8A861284FAE317119BE26
+:104050005055B9EECE0AA08D1C4030AC98949CA16E
+:104060004B50BB76A94F03C4009D1E3C58D6D82C9C
+:10407000A91AA00152F464A3C9678DCA6C513BFC14
+:10408000FD48C2AAFF0327ADF3B7B402C98DA58AC4
+:1040900012A9B4FEA37570B0BE0A40C08E32CD2501
+:1040A00063B8085DE1D506E995C44FC593BBBF521F
+:1040B00015D5AAF917E093856351B1EB05B31C211F
+:1040C000549B83ED505E90DD3164FD32F5E498350C
+:1040D000E8542120B400C27A2B26F0A8EEABF2A857
+:1040E000B10275FB5CD8DC24734B8C30137A6EE51F
+:1040F000333D8B62BD27CE407E6DE2FBC4881FBF7F
+:10410000CC2FD5F75D3B87053A5463ABF2EB419278
+:1041100029410F1048BED4E84DE94BF517F9B157C6
+:10412000E302BB3EABA693D559CC0D49F46A7BE0C4
+:104130003A40879B868DB5DBE7CF2E17120B314BAC
+:10414000AE7F78890415B4C0C149E9EA79116FB925
+:104150006BF604FF41C5BBA27051855163A5FBCA34
+:104160004C06CB6C4BE64F308BA1B2018BF26F0942
+:104170004E6811CBDEE3D7168B3BAF125A3E7EF86A
+:10418000C49D671E96C8557FC688D10C0F09EEA83E
+:10419000DB13D3899D54971D3F3C89B66A4EF618B0
+:1041A000FFD307ECE5F0D3724B47AD6535F310E074
+:1041B000B3EDD2B479E6C9C008413BF8C1076CC37E
+:1041C000D8218E53AE1C8B8E0A343DCE0E23CFEBFE
+:1041D00055B9436BD31DA7FFBDC03725945B75F759
+:1041E000A2318601E0055FC693A65A94C6E07848DE
+:1041F0006724CDF79143D33CB47B667762B24A53D0
+:10420000DD7BAF7AF99C43AC6CE9AB2787ED8FD9A6
+:1042100073DC8F6118BC81426D19D88BAF9D05B8D6
+:104220001171E9EFB4A90271EC2513E2639783D30E
+:1042300030C955CABCD3C5578F722537BD625EFFE2
+:1042400027D000AD5D716F944D0247538D4F83278A
+:10425000EDF358C356074D4DAB82759797F35D1F2D
+:1042600021AD072F51385471D9E01BC5443623893D
+:10427000E2DA51421B4385602A692EDE4F2ABA25B5
+:1042800021FEADEFFD5E81B8BBB1669EF735F3440C
+:10429000C9747CE56A423339CA1DA4D415B9799A28
+:1042A00047589337D89CF523EEBFFDDAC14139E179
+:1042B000DEB2CD36E9F3743D0DE5AE0FC5F76418F7
+:1042C00045071E071FC9BFDB5FAFCF8570824B5903
+:1042D000007B72D071606740A9723B32DD66028D4F
+:1042E000C037FD4D86DC98EDB434FBFC23A1A77DDF
+:1042F0005F1FECCA48B4CB5E19FE8499F86CD0619C
+:1043000093DA8290A7519C6EB689956827B2AF5414
+:10431000A80CE9C9D8DD0A8F7D6DFEBCE6C43DF569
+:104320001254F646EE8C13F8AF210D74B339A72959
+:10433000710103D783C2076F6B7E7B28DAC145CE3C
+:104340008DEB68ABB9090D8D4E603E79AA7BD952D1
+:1043500061C492630C8536520693F8B585E9E1EEA7
+:1043600003C6AF5EC78806971DB5FF1E0C3854B94B
+:10437000DA50E568ED84D198C0C9BCDF414C6C4788
+:10438000B163722B5B1E3329C1023190512E235130
+:10439000F19F00414A51DD4391F02B176EAF2D2C58
+:1043A0002225339FEB5CF9AFDFF6E849E323257A5A
+:1043B000E7AFC6B8B51EB10CE7684D4AB484B94E34
+:1043C00040619252577AACFBA304B670719D6D5C4C
+:1043D00082607376CB24FDFC922D31D5F5AECD6491
+:1043E0002F8EAB8ED2BAB8C8C58C9932D76E95765F
+:1043F00019871358DFCF899AC4341D53B05486BE31
+:104400006BBFE3C58F3FB527D3F24D7D1D11788576
+:1044100046BEAE5DC34F005959A22FABACD5593043
+:104420000F26F3220D50B10130F1EF1CF21F8391E2
+:10443000EDA684B6D3FD0E1BF0BE3EFB0ECD9B0752
+:104440003A235514FF7196CA400155877FEC2973B2
+:10445000ECC20F80AA6861605950704F15759A3F81
+:10446000C12342F37FEA929CA6064AA1B4F6525AAF
+:104470001FFFA20FD220727674054C57A766F5670E
+:10448000042932504FBA0191804094C105470E7DF6
+:10449000E6CFF81D03DED5F64030A9D5862375EAB0
+:1044A000E8993012B6AFA702BBBA115ABFAC312B94
+:1044B000C2141BE792D594165C9AFF7728869490D5
+:1044C0009F8580392F77FF5C6119A3C7AC3BE50856
+:1044D000F4986D4D13F4531CA9EF82171F32730E1D
+:1044E00016809EE8E952C6B857B97F983E21768477
+:1044F00059880F24C98DA132CDDE474C6F3111523E
+:1045000093A7965427B2916373C242C007E16DD05E
+:10451000A73EA6D77A8212E13661725D80A7C67E79
+:10452000A70A9C41EA7A447AD54D2773D83B585460
+:10453000939A0FD2E333E5B18893EA445A342D1AA3
+:10454000EFDE83D4A1EF369E38CAF052C49B3B21E4
+:10455000905ADD62A8922D9BBB99A4D8EE42F20A34
+:104560007C1843535B6F7039CF6BEC516360B8AA12
+:104570008A0EB19CD8D74D892DC899188945399292
+:10458000458B5CEC55C3C81775190463BA50FFAA74
+:1045900007ECC8941F543FD5CA7538166A1CF4BE80
+:1045A0009D418BB844F48577EFEB13B715045BCBD3
+:1045B000B649C6E43E6E438D32C667A4D7C25046A4
+:1045C000A1D9FE5B74525D1A1D3CB742B1C483C0D1
+:1045D000676D992920F756E88C503A1C1064D01367
+:1045E000A29D02054071B5C788EF88767F66E8F026
+:1045F000727404220379D89F5548A7E3D550B49C20
+:1046000036C62D305C47262A152BCBA5C8F9C9B86C
+:10461000CCEE490EACE6290E35515779E93D79F2D9
+:10462000D2747AC77A89150FF406EB64C9AE87068F
+:10463000793F5CB6783DDA16924025F088FCD7BF0A
+:10464000E9776820BD24BF2030B5E1CA51A1CB4134
+:10465000A181D81E0B861E7E6BAC3EACE8B9EE6223
+:104660008C36EF0F1CB6999CA825833C2A8190427A
+:10467000BB2133A080E476903C57F4225577EE645A
+:104680005A7AF1BB70F3601A54DFD7BED8E3592EC3
+:10469000947730FEC4BD5A29E210AC31700DFE0C87
+:1046A000DA382F109B98944458A01D1F09C4170A8C
+:1046B0002A46BF1CE598A3C80CA6523761E83DBD49
+:1046C00079EAB257AF955EDD6A5EB9C336D9FC9A16
+:1046D000E8E37D3B7A1FEBFB065800495B82C91D6E
+:1046E00039F15CD868BCA373C8E5F75C74ABB8D18A
+:1046F0007E8FC40CE16D215DF9991721DE07B87436
+:10470000D193BFA022160EE0FB1185B5EA521D41E0
+:104710000EC97E430EA213DF2F174D81AD22A9E2F1
+:104720003DE761330F81F2346793B3444D5619E985
+:10473000FC91F3C5531C4F526D6107FE714EF7D7C4
+:10474000B0A95CA96187F8C65059B16FE708276A1C
+:1047500072ACB35899FFBA3ACF3107857D6A4400ED
+:10476000CC5951928D0373253F2FA659ED34059DE9
+:1047700032FB04F40D01356B448D74E64C1C2E3075
+:1047800051C7F4C504516C3DB37FFCA136D4750EFE
+:104790007AFC89F75F87F7677EFAD34F5A59C701CA
+:1047A000D668D776F470246AF8D9532038A8DFA9E0
+:1047B000D045163B0CE444806E9C3B2B87FB72A5D6
+:1047C000CD7E674CA08CB2606185C95D60E3302FFF
+:1047D000F96933770DDBDBD175B0EA8FD137C312BE
+:1047E0005DC423715C49268B44244559B8AF3A1304
+:1047F000DAB813EF44B0258178C4E010F9A073AEA5
+:104800008354A39CDC6F7D435E05F229D505723786
+:10481000B2D586FE3B9D3ABCFBCC0B4461907865DB
+:104820003E3247C72483B1DB0317DFCD062A83530B
+:104830008F250605C68F0A3036EA77C3C25508B3FE
+:10484000070E94A364FE034A972673568457D056E6
+:1048500003582EB37EF4C3B61BC793219029854E0F
+:1048600038A50E2B72128BBF07F25D1E40ECC3857C
+:1048700007C5C62B41E37888939FBB71E2E5D569F4
+:104880009CC6CE1A6AD138BFF191B7417C8146A14E
+:104890005850A214F9820106D1EB74806499AB3AA6
+:1048A00058526BAE156E5B2325123BFDFE3F8B64A9
+:1048B00035608B72F0048C48FE2CA0C7EB0AF21C0A
+:1048C000E2FC871303796B99EF141DC7CD1DB96BFB
+:1048D00035F710457D611AC9DE166D2AB93D9FABCB
+:1048E000F6DD6260EA4601B96581839C187DE63891
+:1048F0009CFAD2787E597E683AA50F7F5A858E6ED3
+:1049000052DC1FD7B74D04A3E2BB8B0273E6FB302A
+:10491000CAE295A86317CEF3AB6542441A8D229480
+:10492000A3FD217F1E54CD9CE7DCB521916FF735A7
+:104930000134910D60E0C5411015B841C5DD1A7311
+:10494000CE47124F7956E1F6E0749925762842D980
+:10495000AD24283A1DBAE13DB2BA0C23D14F268FBF
+:10496000C90D0ED0695594E95A43FB321528F18DD3
+:10497000B3949056CF9C1AF8F67D18643EA207A611
+:104980006F8B83740195B1706EAA1451B704DC1457
+:10499000D243B3933C7D82A1180B846C59D00C0A8E
+:1049A0004D6195713917A14F626F9E15CC9577694E
+:1049B000F12A08D20F76AF8D6DCD0B70E430BA2D91
+:1049C0007594B2C9FA5564BBD5E5EF4158FEADF117
+:1049D000ACBFD7F5479DEC69EFDF5655120AE00FE3
+:1049E0004E752E4761DCD07D80F03BDA5FF1F9F740
+:1049F0004C5FD531D21FECA7FEB75E56B06F0838BA
+:104A000066248E91AA3BFA19DFCA91B7A5910FE2ED
+:104A10008953BB4775D5990A006CDF699316A48446
+:104A2000BB856B9606DF0FCD49A8684A75048B27B6
+:104A30004F8F6F93BF4AB3DDDD878E4F21DE6BD979
+:104A400000BEE8214CDC128B2D944935B147080F8C
+:104A500068B31F2A3FD8D12A7B7D355738A5C29E1F
+:104A6000818AD52A57034E18F78362159F8543AE76
+:104A7000F238718A49521EC1F2B4EDD20DFC848421
+:104A800090D5E10CBC324CCCD9F6B627D7FE28F233
+:104A90009F27A2B1AF7644F232B18ABEAE0068A0C1
+:104AA0001642BD1F6C3BCC570F2EDB785C3C2D3C77
+:104AB000D55F22ADF0363C5A643E12B23E7194147A
+:104AC000BA0BE5742F345B41C304C17067F85554C9
+:104AD000AD634603310385FF288526A6EF83263381
+:104AE0007297505A9509957EF9E3602D63AF27D3ED
+:104AF00047822B24BEC952698273167E192724FE71
+:104B000064180006863F3CFE15360B85DC72DC3DE2
+:104B1000CB8E9B805A1BE0316318A1978DB38D8A91
+:104B2000494947D4726EB09ED3E9D5D0C95C6D4E69
+:104B3000425129ABDCBD647A6F25F8E25468FE234C
+:104B4000FB87C0A87269541CBEDB8F17C95D3E7914
+:104B5000CD4E443E8AD3147329900473CBEED36BAD
+:104B60008BEEC492791D45F9356F7460B9D31C4D35
+:104B700021880C50D41EADC5543984D0CEB127C283
+:104B80004C583CF017008C6C841DED4A11A1003884
+:104B9000729B93B3558BBA8DF10E7D00447BB5D7D4
+:104BA0002BEF0E102C58B5B1C252969DC3B64F4A8A
+:104BB000614871888F5441D4FFD83B5E5AAA13775D
+:104BC00005784EA6AB093F280DDC183305637F4CF2
+:104BD0009831214E7481F721DE4F6810028F88BC16
+:104BE00063CA6D261F132B7CC88F54A1F8CAEA7FB5
+:104BF000C54F62D358901690DDF305E337CE87C1D9
+:104C0000EB22B5F857985E47A2B3A7507B7EDB2016
+:104C1000624403D97A607C50EDAD44F851E277DC10
+:104C2000445AB3CDA829B10D918CDB69CF52E63936
+:104C3000C43E77693613F07D6C81A3C1D4AD33F0E7
+:104C40001E8A28EB90E5B8047DDB83C0DC798C3AC2
+:104C500059A47F2FCBF323D0313942270F13221EC3
+:104C600032D1C3D8F082B6201365D9FE440D109F0F
+:104C7000245C0C5E640A2666E612D41A778001581A
+:104C8000D65E4985E5B35D78D7A8AA1936402E3996
+:104C9000DEB3D4F2CBD9A7D1AD50F1394959BD8B90
+:104CA00067D4D4D592EA76B1511B2A9127143BC31D
+:104CB00029D389195F94C63C3BF243F11B00E8F30A
+:104CC0005D0310C19B7282543918B151B3C52C15C4
+:104CD0003FFAA342EDFC5473DF6C415905A25869B9
+:104CE0004E804FE2ABEB0BB338093F47E7C76DF798
+:104CF000C7B18011BD8BBA842B3C5DF1D3E07CA1A0
+:104D000041FF6D1D45F9E2853C21116784368E9B7C
+:104D10003F38387A4390AC022AAF58A1CDB391BB4B
+:104D2000B9CA0165CDDA0E6BD5C639E73A9A81AEBC
+:104D300047879A1C5C04D75464D77A3D5D0E07817F
+:104D4000DA5ECC67C93284576BFCA149A77B12C8D5
+:104D5000439FAEB979F4B6CD8D0CDC7149544C2724
+:104D60000668E9A12759337E259B68F8121A469FE9
+:104D70004A61062B3977FBC5622A58DA7F8817C14A
+:104D80002880484C3560C52802D53455AA8BE29658
+:104D9000B09494B0B63A0E958E1AE3B51D9A54A904
+:104DA000DD2055BA9CAD9F99B6ECB96A0288A74F31
+:104DB00013BDC935240427DCCD6D2BF4AC4903E2C7
+:104DC0002B2B5077F2ACB36647E34B657A66B58C14
+:104DD000C98BECCC9E6F34954497A9EA7B5C3E0E60
+:104DE000716A314CEDDC930D6A0C26697639A200AC
+:104DF000DF203251C344828CD88653F6FB74EC4ECC
+:104E0000EA638C813AFC26380D5F45D8EE89DEDFF7
+:104E1000FAFAD96AECB56ED8B1DBB0B5A2942D7AA6
+:104E2000FFDC448A25E098E051A0F0D243825D1176
+:104E3000C2CE18F6324252D08784C2634F5B4DE631
+:104E4000208E8C33B5C586433B49D4F9159DE56C5E
+:104E50008D3422DBF9A39987254E0DB6A9DF137C8B
+:104E60005A88FB4D10FA5236A06538882003A49169
+:104E700023905571DEC07A501E7324EB8B5DDFC129
+:104E80007E9FD27685DE23E42119A4BAC62E0C5566
+:104E90002FD7DBD700B676307EC4F90DC8CCC30D52
+:104EA000FF053294752F47A1941229AEEC9288D950
+:104EB000409C19A60085079F0D5C5A41625787AE3A
+:104EC0003C36337547BBAA2F55042FA077AA0B5346
+:104ED0005C1DB2D556AD0F727B6411A53523B16E42
+:104EE000A1CB0B563D25777F555E065804735B8A30
+:104EF000CB48A186831B31AC33BFAB6BF9D5C9243A
+:104F00006866B5E521CAAF825C43A67F02DECD1696
+:104F10009C062355F4EF48ED508269FC58C800E622
+:104F2000A9689AC2583CBBF1945FDE196947EBDE71
+:104F300043CFC377B4EB31F86C5643FFA531DD6442
+:104F40005F7D856AF1D3E714AE0A63A1A89FDA7387
+:104F50003C64F40329BAE90799B358DF09C4FD7D1D
+:104F600010EEA27379EC4F3A25F8E73EAEAC54BC94
+:104F7000482E40C14806E3A6049BE243179F5BCF3F
+:104F8000E7877492273FDE8ECB52244DF9E25EA173
+:104F90009F8D88392848DFEC083CF285AC0587C82E
+:104FA000EC9E43C3210514263C7D41E7EBE452C04F
+:104FB000AD36EAAD70B25FBE6224860DCC55A75700
+:104FC00063499326206617574C17658DFA61BBDB42
+:104FD00001A8845E7F0C3A4A4EA1A07B7E1209A7ED
+:104FE000091B50F0EE61733CE9C4DAF753DB884AE1
+:104FF000891110B655F7651B1763781D9910533F3B
+:10500000118F491D280C2870A8ABC41380F27B7A3D
+:1050100001FA13321C0783A58F4E57FBAD759564BB
+:10502000E0A5D1DC1D63BE91B8CBBA9FC927E73C90
+:10503000B1755D8DE04351A44DC356AEA3563EE01D
+:10504000C6EEC54FFF917C43364F5145D457725041
+:10505000C0A530C3060A9545915B09F7EC1B42D009
+:105060008F847C9FFFBB99A54D11E5FCF812823817
+:10507000E811CD57D1BBE57BD188EA1071F722A5A5
+:10508000939D208518F90693EC3DA8D7A22F73F8BD
+:10509000C46C565F53965E72D8310967EEE7C8F369
+:1050A000CE72E32AA59A1690AB8FC971CFFFBFB31A
+:1050B000035620B7388AFC14D0F2C8C9B3EC54F8B0
+:1050C0007AC84375635799DB878083051F0F38942F
+:1050D00049E745F697B58D205E2CFFEDADA668B685
+:1050E000E38B847898593A043D210A6D9F084E76E7
+:1050F0003F1EDF08F40EF8567835C75988217FE047
+:1051000018BABDDFDE8A4F58137618C5EC91CA5B1A
+:10511000267BEC5C13BF1F4DDFAD5F572FC88C099A
+:10512000AC8E9F7F49597B67408FCECEDB8B16F7C5
+:105130006CE08061328FED9F8B352C1418E1F436D2
+:10514000EC85DD5720C7A962E2575D45E1D72DAD5B
+:105150007569652C9835B205F6FE1A368B08E8405D
+:10516000F0E3A06F4F76E7ABFDE9331AEE078EA6AA
+:10517000BE4887EAA748FBE476C7EE8A13BEBF396C
+:10518000DBF05F4AD1C21597E09385D24DBB08B9D9
+:1051900094A67324C9093F7B74BF2E6F86D6DABFED
+:1051A00060F3D1FADBADF8C8C959CC57CD9AA03B12
+:1051B000C9C14E6DC58391DCF29A348E9F4E9ACB55
+:1051C000BB35260A04807D7F76E35003F27D2317EA
+:1051D0009788D725BF3B9B9DDBD98F427826CAC7CE
+:1051E000975BC8E2BF6BFAF8DEFB52D6ED28D262BD
+:1051F000BEF47AC257491ADDFF4CE01FF202A4BE8A
+:105200009DD15CD84FDD7EEDF8FD855D4767187652
+:1052100021D1D1A29F573D16AB56C5C7FA1BD04529
+:10522000DA384BCC2C3EC43EB51A974DCAD8AE3DA9
+:1052300082D3A81B5685A8348DD92CA54D0F7C454B
+:105240004A61F92CB572B784D7424F8ED45452FFBD
+:10525000AAFC4EFF4F9766AB06B9A48597F938595B
+:1052600029B0FCA73ABD75B180A58F891B6A8C4611
+:10527000CEF571088B1B1B5A7D1F44CAB9780B569B
+:1052800092105F1B136246AA73CE6D5C664AC522FC
+:105290004A386C10CC6B3A92DC224A12363EA20B92
+:1052A0005C1ACC67C3D4F959F798839465F392C418
+:1052B0008B1FE9C6860346B3C3FC983306D2D95880
+:1052C000997117E86BDDC566FB079024EAECDDA257
+:1052D000D4FE32D354C37BB5263333BD78B888C0EF
+:1052E0006D291B4AF42C90F36175A5AA0C48A65BA6
+:1052F000205EC74ED9AC930EBF12135E756D3C0B8A
+:1053000027B5E26C4141223EC6D13DD2111AE327B6
+:1053100077C229E5370AA6BC591B24B16315A53A03
+:105320009B3EFEE058748C77DEE338E6FDC72DCA5D
+:10533000294B88EB4A093C8ABA6542066EF1F23E77
+:105340005D0E9079B49E22027139C9BD3DE2C1B0B3
+:10535000758DA1E6FF2C0A4E7DB67FD2145FF01C3E
+:10536000A22FDB228056067985FDD9A826E24AF3D2
+:105370009C6347EEA0B6B88B11A7332B4FBF505A92
+:10538000E6A378A3B11AB5988DD98620ACD23FE2B6
+:10539000D9AAABEE36A166F102FFA4337D607FAEE1
+:1053A000258EF5995114EE980F122CFE5DEF50D416
+:1053B000952F9161F63F8A834B73C499370C102562
+:1053C0004DDB64245DA00EE997D79E97B0597EA36C
+:1053D000283B068701E87E17C600E8627294C6F68D
+:1053E000C871C5E6BFB3730C6F62C688B7BC55B64B
+:1053F0009622312AA37F0B4D0DE1F53B9A55659C12
+:1054000073C1FB824263F6E8E260245A48324EEFF1
+:10541000E102617DFB2311A5669E60FB1D145CE625
+:105420000B6F2E433560FB0772FA083734CE180233
+:10543000EAC669B5A5859853E65FBEC3CC15B37AB5
+:1054400053F419798111B0E102A231E8785E4C3150
+:10545000FE4FE2E1434FE8A146FFBBF4A9F014A0E0
+:10546000C996245628E638671126D8FE40FB01501D
+:105470008D26315B43D4AAA0E203D3FE3237CEBAE5
+:1054800016F110E46274182A4EAA7DBC09E20F35A9
+:10549000D4C2ED22CA71318147102516D6B00EF85C
+:1054A0000912A87546E2585D4231440C52C2DCE450
+:1054B0006344957E137F5D191BAF69F41AC24FCC0C
+:1054C00022FBA1DFAF954A4E88448D5F4943FA9F86
+:1054D0008E02A70C72F7667FC699C3A1F0608CF8A4
+:1054E000395412C724C541D0BF85B9B39926808CE1
+:1054F000F513F8A70AA7A4A8492D27BFAD9CE28CF5
+:105500009C0BEB79CC8BCA78185A7ED6DD4602E329
+:105510003075C0A61ED850E23DC6767D2635C961DD
+:105520008E89DC633B9AC7CE7378C176834C2B336C
+:105530008238717099858803177CEF8C656D8F9028
+:10554000DB948D94CE05A1DE3245C14428D7445A60
+:105550002E6BBFC0FA80A4F386586AB3D3D1E5940A
+:105560000349D4B14AF4DF982FD04CD158219F661B
+:1055700026720666D2F0E6E6615A04EB2054265302
+:10558000BABCE97C6370AA7CAF0B3C86A534CC57CF
+:10559000BEDD683754B6421BCAF644E0707FBD5B7F
+:1055A0002B698415688A0E76E55E645F1CF83E22DE
+:1055B0009D389A8CEBA25E8F690ABEDBE4C9320982
+:1055C000BDD8AF633D79D46294ED0D71C00E0DB1BD
+:1055D00049E8EB0318FB7DEB840FAC3130C3E804E2
+:1055E0009C71CC92D38D15FC11283FBFF56DEAF26A
+:1055F000921FDBB86EA4ECC2E96B8F2B8DFD064FBA
+:1056000017D339BC5D09861744EBEE320BCB6C6EB9
+:10561000BD8C5F902B8737AB94BF42AA3923FD2204
+:10562000859F99B65E509ED32B9CB577F42D7A0654
+:10563000175D45A28FDA6C78A789ECF257B0D66275
+:105640004367F5579217732F386C3CA4E3326A7F97
+:10565000458A255665C5DBFCB198FE1E039B2ADCF6
+:105660004E99791F9E35CE49A54CFC455A8AFF06B6
+:1056700023E4759A7DC44BC4774683F31C9CA0C673
+:105680002D2B63E9DB5D352118B167538884D9EF91
+:10569000FA4EAC45DE2EF16BB809D586B0E4DB6C72
+:1056A000C667B8A4C0F3F36A542318B26CE1D4718E
+:1056B0006D2DB09BF6CB7AC0110E21C9C30F625875
+:1056C0003C39001E12987AC828598DBEA10D534B43
+:1056D00093DC0629F78FC6590AB6114DD472287586
+:1056E000BD07024D49F1DABD509976EB68C63A9E86
+:1056F00062292D6C950AD5504BEC3B7D7B6EF74DA6
+:1057000065ED336758B9D8A5F8CCF50FAEF10DB0FB
+:1057100031DDCC5541013BBB0F8DC39E86C676CD96
+:10572000F04527B8B4A00B883E6F534E097A8869BC
+:10573000D87B8B193B5B132E005F00FD0AE7D2FC80
+:1057400063DA8D0FB0E9E253DE6026010B2506CB4C
+:10575000C9149B7CAFD60F34D19DB48DB48CC9D104
+:10576000EBCA5E698E1921D3C9B927D4752EE322FD
+:1057700094A84F9457302764B2CD7D639C9CBABCEB
+:10578000E29C3F1E49F061294BC2377F785CF5F1FE
+:10579000ABE1109DC4373093F01762369FC49D680B
+:1057A000100EC01CE793649C6B9E36DBEF2CDA8EE8
+:1057B000B255D35144614941135572E912095A0750
+:1057C00024B62ACB1DFD68BE9F7AFC87F0CF5C967D
+:1057D00037B839BED3BAE39CFF6421596756E3C991
+:1057E000C81A3D108839141D318F6B6BD930C569CB
+:1057F0007712B5A982E7DF616097DF57D1195E8B19
+:105800007A68A31A081C37E57F271CD87528443509
+:10581000E0522E2E512E75E75096972E488A00F1B1
+:105820004254F77FAD2EFC141FA5D7A67C0F72BB88
+:105830009BA9916C472D15E20F11D5FE52C5EEE1E3
+:10584000EA8BA2222B24AB7C96E13DA24B1EFAA947
+:10585000F654F79D9CA8F77DF12BAB3F0A49F80160
+:105860004F5582C1CD85E319906D3365DF1AE6EEA1
+:1058700022E03CFF89CD22F2A8C4F5525F9DEF15CE
+:105880005BBFFCF39BCBEAFD9B5CE80B9A2BF2D44D
+:10589000D2C9941C32A7FBC0330884B13EB819D7D3
+:1058A000B287550E339EB270302D587C8398F576B2
+:1058B00013A73BCF96BAA2789B1405F1241F278922
+:1058C000B7FCB5F8C6CC941E60B7A1291B0C3354A5
+:1058D00046E4984FF2DA483AF76B1F73B0C073BBD7
+:1058E000BB9585A5D08F1ED5925972D69796D0A01C
+:1058F000F458C0A937FC24827EA220A559E6A673DD
+:105900007AD7B5BD447996AF8035E7BEBDD29B6BE3
+:105910005B4503D928AF4EE8381ED9F9AC54A6AF81
+:1059200062014EFDB5B8DED03C7DAF33BA2EA30C7C
+:10593000F5CFFFAECFB8E15AF140E56AFAC96F0082
+:105940001D47B29D2B24D3D6B12E76F40528B91F5E
+:10595000F8231ACC92C570B24288D602E172A9E649
+:1059600005A09C32C2DD36B469537D04BFC8F90E70
+:10597000CDA0FF74BAA4EAA2C521184D445CD3039C
+:10598000FC736130FA55757BD7662BFA561052EBD3
+:1059900003829AD96E1183B320B3BA75BDD16E88D4
+:1059A000867E528291DBBAE449EED873B7EA81B7BA
+:1059B000F481F7E5CEE4BD9F032D47AB4B1DDAFA2A
+:1059C000D422623518D712F4DD8323ED0C63C4951D
+:1059D0001495773A1914A1EDF018CE9E78155CF560
+:1059E0000C75E2F8F7E06B12230A50996673EB3FEF
+:1059F000C01495E7DC525414239C97FD43F82060B3
+:105A00000A8CDAD12E8EA6C5701490BFE585DD45CF
+:105A1000752240629FF6B047C4AB3145B49E94BD39
+:105A2000A7B794D9CD4780135A18AF7349F6C0B5BC
+:105A3000ECCD44EA8E8717A963700DDA2D6A624CAB
+:105A40009EE57A2A28C44FC346FC829AECB9CAA7BD
+:105A5000BCB5D73BDCCD4C1DCF18BC7C33D51CED81
+:105A60001AEB3C0A8910E3E93C37BF65516A3812EA
+:105A70001A4CA72C922B42E13CCF54753D51C5A046
+:105A80002DA607AD12FA1432D47167CFE00A635A1B
+:105A90000587F918CB92B00D4CCC61570077D9032C
+:105AA000E7C8DF0118EBB44CCD7F3418697E5DBDCB
+:105AB00058BDA015EB894E0898756C02FDA50380B2
+:105AC0009BBE07B620EE73BDEF2CEB523CBFCC8FD4
+:105AD000DCAC4E949B4B13A2E6EB05B07213177D22
+:105AE000BD3A2C7E5FD6F93CA8F88A22C7C387A7A7
+:105AF0008C0545FF940891F7A3FF4123CAB2C65312
+:105B0000849E1F9D6BDBAD911FC9774C1C01965283
+:105B1000F4FC05911C591D2433D53888ECC80611B6
+:105B20007B178E71773D39F805FCB51C1D40060BBF
+:105B3000D5A91EA867B476960CF6D49CF11FA3D7FE
+:105B4000311F470144D10E366AF359EE0621BCB825
+:105B5000B27DB45DD5D742A30888EEB73BDCF79B96
+:105B6000D242AB5544BBAF2C3D517B84DC7D077FDB
+:105B7000DBA7C1B4A9B6BA6E1F08147FD3CFB30593
+:105B80004F1A7501629955325E25E20F13262913CB
+:105B9000011D01EB509E24207F76C389FA7638BC24
+:105BA0001DDB9F90E829E6E0421992997819274D6C
+:105BB000C06BD18E58583917265EFF7191B446627A
+:105BC0007323E251EAF3270A2E25FEE2E9CEC4321E
+:105BD00000E06D1BE4DAF5851DD400962D28CEBBC0
+:105BE0000202C14DE5B203575E563CD68A3CE91825
+:105BF000315D09E4849C1C6608EDE15579696CFF10
+:105C00009490FD5F17AE269199A583CBE8326A097F
+:105C1000D582D72D81922955E1F4E2C57C2FB59923
+:105C20001137960F2061B831E0557DF1CC70757653
+:105C3000B3617EE443A41B8D346E894D9B2C667B3F
+:105C400092EDA7526E8FE9B086B9604408C4997E80
+:105C500078FC70981A2BF8E64D97E4F63CC0F117E3
+:105C6000C3E2E2F5FA2B53226F504ECF0856F505EA
+:105C70002A2BE19D9F2599D6261E9F8EB9F740F7C6
+:105C8000768317C5314AEAEFA2CDC6C481EE9C39AE
+:105C9000FDA44CAE176A9FCCD631829BFB28DB6AF1
+:105CA0004F73129C86681886495FB9F43966938DE4
+:105CB000F63C87994A7464435C944CF9317D1A44EC
+:105CC00080F6048C29C817F841808AF7AE3DD8B613
+:105CD000301AF7347F45F8246EE111AD46D9CEADC8
+:105CE0004871E5B10DD074EF2B92B0F33ED123880B
+:105CF000B6E082A9B6A473A05E4AF21A3C03B7ECE0
+:105D0000CE25F4B75890F8A5E6B3F9197350098475
+:105D1000725CB4DCBB5B7817567AD097FAEB380A22
+:105D2000240C083F9FF7F77BC556A3CFC68D6DACFB
+:105D300050F2984D75DF07DA0B535EF769149FC672
+:105D40009757662F29129311B8775227D0AD234267
+:105D5000750F5F3DC05C7AAE053FA2652C4882F8A6
+:105D60006C9E54DE42942B6D573C876E829194CB8F
+:105D7000C17F3746D2FB291CED4E96A095BEAE885A
+:105D8000B955FF929F97A92CE41B6DC5F1B0181867
+:105D9000F605B1547E87A4EAB3C3E24F36D7055B5C
+:105DA000398C85EC412071D673D095BF16A5BE9570
+:105DB000F1FC0AF13458AE15024FACAB62CA1BE4D9
+:105DC0002FEA04A9AC449B295FF984DCD036BBFAE6
+:105DD0006D9100599E45DDFB32EF220BFE8D17CCF5
+:105DE000934323A38DAC55FC60041BE69DC764B9A7
+:105DF000EC984776E29625DEBFE595D8BCA8ACDAEC
+:105E0000E5C04D203AF4AD23F1C53A0B09CD2CD2B3
+:105E1000880AB74DD266761D2504C00B65CC158F58
+:105E2000BD3C07532535041AC8CC725B29BE3C61C2
+:105E3000A84398885F86A283F381400AF8D9DE4997
+:105E4000BB880AD7680EF58069026A3A4CC4593398
+:105E500056DDB39633F9FD4178DE7324E3260EA0B8
+:105E6000482DC3CE1A6AF9D704192AFB648B048023
+:105E700002FDAF2D259C978E41D24E8E0614160B37
+:105E8000D74909081F80DE1F25212CD428E4708DF6
+:105E90006B94D1BCE1FD8E5E9420D426FA881BAFB2
+:105EA0001E67C6FAE60C51457E21FC73F058A3A28A
+:105EB000CD520E9AA29EFA3E7B7132FF2E7D9B8EB2
+:105EC000BFFCA429F898F015A66EC189DDB9EEE3F0
+:105ED00032F8EE9DD83529DE143C5749E4A13FCC79
+:105EE0007F2AB8FCC02644DB33B2FB335A69F60C78
+:105EF00019B2FBB3AE8330563829853E79A37CB303
+:105F000034DC409302AA45D3754247F4FBCEB6ED8C
+:105F1000BBC51BB8143114A77BE3C568A8973550DF
+:105F2000EC612F1870BE3FFA5500C57F117129A58D
+:105F300073B90CC618D577DA35E79059485C1EFD61
+:105F4000C13D529A0850952F0B7A0123221EE7E794
+:105F5000E84C0A7E112D19C8D798BEEE4AEE47804C
+:105F600070C5599F90A6E5D53DDF6564C6E56529F6
+:105F7000D00BCBA814DB1A22266B5C62288F9BA067
+:105F80003BAC5C47749893D856493DDC7407C816FF
+:105F900044BCB686CDD540B29EB409704DAD769066
+:105FA000CBF96AA448F899DB50066BB2E6DE8A8D1D
+:105FB0008E42706A56D9314D283D607F4C81F56420
+:105FC00027E71E19F8AD465A37FB0A6E88CE6C1FBC
+:105FD000BCE8D650D1CDCB5163C73DA53FA889635E
+:105FE000F56179E4798DCCEF31CAFFCD9D8BB0F7A7
+:105FF00040260CF30D1FF41D6DDFD10AADDB1D7FB4
+:10600000249757119DEFA60FF05A8B5D0FE5EA2AF2
+:10601000A320045F2A2F119C49EC3F12EC512DE77D
+:106020003CC754922CE8C795B02E05CC6BC7A298FC
+:10603000BBA3C94DAD9FDE14B57E427B389D9F3614
+:10604000BB410E4BB99F155E186282106D4E171E34
+:106050003EAC3F3D0BEC81B1053250A41F6448D4E7
+:106060009DCC8EC342AC68CD658B939E1B96299DBB
+:10607000B0ACD87B408730B5CF90AF6982A54BAB31
+:10608000E9303707DA96A5A7EBE032A7399958CA65
+:1060900024056AA54764DFB7565FC0883021A1F99F
+:1060A0004D58D56690C3A641208D5760313AEE1FFA
+:1060B0001E1DA83E9BB5D4BE6082FF9C21A3DCBF01
+:1060C000E81E6BEF7AE9C2420C8BFECA98BB8FE1E7
+:1060D000300A3783E4339EAFC3B73069FF32D667E7
+:1060E0002D9451E5C0CB93531EF654BBA292F5926A
+:1060F000800CE13059F6E0EAF7C662C4792B76D21B
+:106100007BF46D5CA22339451FC203D87E53060D74
+:10611000F31C288B1CB0B2DFC999F2EB7BD538E3B6
+:10612000D35918A7E97E31A1B67E3D9EB2C8AFA073
+:1061300012A77EDF90DADE509BF90FF8714912DA70
+:106140005D576BAE0C2D9AFEB1018BC636A2CFBB4C
+:10615000F5A8021DBC5A18A3A1C75EC1A7E6D88442
+:106160002FCC5F2B068CD38A08BB284A3855EDD13B
+:106170009297A0788EF38C3B7C7B320C7672FBA9D5
+:10618000A454C1709C89C4B53A3255BAB1A62AF25A
+:106190005972CBCBB87A08E02C04615D36F39E329D
+:1061A000FB786070952D5DB49F3F3B3EC561BED5C9
+:1061B000CE516B0B6A1CA0DAF94F19158D6657D4B6
+:1061C0004175459EADB46F33DC5F0C127871BA2116
+:1061D0008DB6B868416A2EEAE804C4E34DDBBB5AC9
+:1061E000554EEB28150AFDCB2301649F7A55B6B1B5
+:1061F0006AC4C1309357D2779D5CFD64FFCB752094
+:10620000E3F413C93D961C1B9A1F6A71A01B4DF144
+:10621000445C3BE863E4D06A5CB0A9BEC009D39398
+:106220007F2DC470505B700AB8D9DA8AF0F3ADC71D
+:106230004B66551903C69C7550BC9481677073A951
+:106240001F05A20AAF374B38360E75A042134062C5
+:106250009293A985C131BD019DAF2B675EBD0C082E
+:1062600000F82F16C35836AD08FF1763523894ACA8
+:106270003E895DB06EEF020AF149686992C7DBF4AE
+:106280000F9D0A2BA1C8D586E92298DCAE5C9E2220
+:1062900085B77FF5FB13C8413C882FD3A9D3D2A47F
+:1062A0001CF420E6FF32362C6BED52561ACABBEFB7
+:1062B000BD864B213070F14572FC0BE842BF4B9E0E
+:1062C00080B8A692F59CE3775ADFF191A2FA6B6051
+:1062D000AE6ED55E4D7BA8D5E371B986FB338C3BA2
+:1062E000FC349D39350C22DA72A0A88E43DD9BF573
+:1062F000ED1B0602FBC1C47AE6988A179617706BED
+:10630000384337C3FA27D8196EE6EAB23BC3B8EA76
+:106310004D651DE8A447152003B2A85793B0F9F0C6
+:106320009A179FB6A9838F9FAE70FB08A7D497A634
+:1063300044D586248F53B6719C590E927ED392B960
+:106340006B3AABF1DE0D8D2B326096C06144753A2D
+:10635000AF4FB361D58A8DC85ED5D0535A9300FD37
+:1063600050F8FBC78E858314071B2999E8EE578BDD
+:106370000B8EFC50359EFC34943270DEEB5E305256
+:106380004139DA529F16D3C7FB340F632CF61793AB
+:10639000E66E272AF65C003F27FFE51037354D9261
+:1063A000722E641F031480A353A853A3F9DBF95082
+:1063B00033DC3CF3DFCD81FAEB9E1C895D79765DA1
+:1063C00009F4A7A715F63EDDADD45A8E294E5C23FD
+:1063D00021A4454F0AFE60F6ED005B44850C662261
+:1063E000FE4C144C2DC086D07A208F50290769228C
+:1063F000E51702D1CDDA13ECC8F513887690A344E3
+:1064000042F933C0894C7A8CC9EEDE5E8315CC8AA2
+:106410009F3DC111E900C039F9B2690CCE9A070756
+:10642000A5E86DAA5B99E4F09269FB48316D1E4BBB
+:10643000FA90C3C540F994C8451286B5A90501F084
+:10644000425280184957405AE9C3AEC5A6024EE8E9
+:106450001E482B97828E525C978E7526FD1A1BD58F
+:10646000A7E1FE99C1745B61FAC2D2AD34FF10F8A6
+:1064700045A931EF31F102CF93F1F1EB527636B805
+:106480003B720CBE880AF932DE23CDE45B08976DBF
+:10649000CFECC3C3FD5002369BB694B7B931251675
+:1064A0008D12122B5F854B30589C9882932E2C7640
+:1064B00063F829C27E00E049FFDF0D801B9321D8DD
+:1064C000A7E7F0CC5DC29484BC592F9D2B9621ED9B
+:1064D000FC6B91AB57EFC6D8697860506D63A79C91
+:1064E0004A2D94468BADA53B446B31D6D34E83E801
+:1064F00059F2F70B25D2F155DB3A714C9D7F469648
+:1065000003C7E0005F5B848020E0D4FD78065390F1
+:10651000E1120AE5913F401351F0CA6A4E6DE7431C
+:106520003CDA2BA7E9F438D906AE28CD6883D0AC85
+:10653000DFBFE407BA853D07BFB70C6906BE2486F6
+:10654000B1400B08F8CCA46B29709E354A163289ED
+:106550009EB72DB402FED4B4E0C3467759FB3E4F3C
+:10656000102E5669FE54C22369330341F5001B35D2
+:10657000DC498962903F61C4FF17766896FF8DB051
+:10658000E24F1AC2D643E89B0747FCF62613FB4CA2
+:106590008BF2C40D6A1063A6F8EA1DC6982B57CB80
+:1065A000FAFD6409E4353774EF1FA083EEDD43681C
+:1065B000A4FBBF0F23042C594DA78D37C320C70F51
+:1065C0003D9E1AA07D6A29A10463AE447C74BE5628
+:1065D000B3D3FF739D88AD49C8132936336E7DFF51
+:1065E000F2CB032F5912823697122AAFE27EE4854E
+:1065F00050FF2F0E866644E89892079533F5371EB4
+:10660000A803658E52BCDB6F2FCA3AF94F4CF88550
+:10661000E6D68695D9B5B913F556235800262739FD
+:1066200096643B02F094B2ED9E1BDC885F6BE3A5A1
+:106630005616B0E2A43B1620D0C5ADB29F7D992A74
+:10664000EDDBA8E076372B19D7EC68F0B948C6081F
+:10665000C03F47088FFB5964526E74297CA5A24441
+:10666000F8F30231C97D266991BDED012DF13FFBA3
+:106670001A1D9870F97EE4804601E246330A7814C8
+:1066800079561B4F9D24901DECD8191B3490DA27A6
+:1066900092E419EFEE31FFE19DE236CE82C1A917F7
+:1066A000F333687295D5BC3A1767E86EF1DE3A406D
+:1066B000C295B96A9CCFE3D2AAC820DAB4AE132B34
+:1066C0004F1465502F1BB52CB05C1FC42DEA7062AF
+:1066D00069D2046A44C637FE78FF1F433DCDB04AF5
+:1066E000114BC3B1FFFCDF5C28E214EB2C04E3E99F
+:1066F000BB10D38668BB11338455EF19C43102B780
+:10670000C38B338A94E8444B0516E5075B4A60C0A7
+:106710006F2ED0B7972797775E66051D383907E546
+:106720007816B6199B2B2E801856C425E45B792366
+:10673000662A4645B1910CF7EEAE3F058734B6BCEC
+:106740006952A5F8AA1A5778DFBB46862D80F8C68D
+:10675000A6FCF53A3EF7067322A12ADF6C0E2DAF98
+:1067600010702C36CB9C32C976809FD8220EA7DEC3
+:10677000AA084021560D963A54E7F70414D4FBE2D8
+:1067800019893F5FE04D91F0E6DF13626855E6F648
+:10679000FC315E26162D5B7BF973EE28687D4E6614
+:1067A0009DB5130CA11CF56336DDC92BC407CCDDE8
+:1067B000E4A93CEA8586689F80DFD74C38A16D5DEF
+:1067C0003BF38EA6A17C990834F574A7491F1C578A
+:1067D000C6AA0CA24080B6B02633FF82003F39A57E
+:1067E000BC5D033A788B9BCB5A8139AD403BF0FEC0
+:1067F000659B65832595EDD55B11EEB6E60D3314EB
+:106800002FB9E7B93DD892502007CBAC42FBEFCB74
+:10681000E6DA3687B38C8A8AA0758BB78F88909E0C
+:106820005AD7A97AB4774B85B31A5C42449ABC6EA6
+:1068300094D8FA5C111426E0529B495A2E27E2267E
+:10684000F11E05984FD688E79A42BC471FA37DDE0C
+:10685000543BF70DAFBD9CA33C14651052B885693D
+:106860009E0FE86871DD3D6926B48E8673F8EAC72D
+:10687000BF0F9E16377F341EF5C766FA10F868837F
+:106880001F442C78FE33F1AD50F26F5863E2D00212
+:106890005A15DA596476A7C46B67597864101108E1
+:1068A00007A2EADF5C33886A8EC590476ADBFA8FFD
+:1068B00039E972A8EF529CD6B93BAAEBC40464C470
+:1068C0007D8DCF07E5E1E53BC04FCC75208E321AB8
+:1068D000ABE720E543BFFE49C3F0FDCCB068EBBF9A
+:1068E0004908636A96C240B524B454305107470E34
+:1068F000D58EF26B7150D7631B740CACCCA774C0EF
+:10690000F19AA5DA9AF93B276F91E481B79D0826A1
+:10691000BFDC359028B538E57D7B6039BE00C1AF5E
+:10692000E8ECA80628F1EAEBA71A53AE026AA340E6
+:10693000C76C3C6DC42D0BB0AA8D7DF282EB6A59F9
+:10694000E0984047275D2326840D369B6730829769
+:106950003953698494ED4CE302D9F5A432E2C69A26
+:106960001143BD249DFA82A653D768FD941E2DC8FD
+:10697000A75501A55206D0DF25E5652BA88CFA2B7B
+:1069800075660CCE12990485AF3CD599FC7F2F63B8
+:10699000465EE5B3756CD47905BF340EF0203C3EFD
+:1069A000555C0DB98514B14D1D6744CC846896675C
+:1069B00090293B2C582D89F47BDACA8D6197F42FEE
+:1069C0005C74855CDBD74543410710CADB90713DA1
+:1069D0009DF41D7DD285849DB9E4476ADD26D035BE
+:1069E0006E2E5849772673D6903FA8AE4E905A081F
+:1069F0003BE178272E926E9C6644A06DCB0577B064
+:106A000060BFA41471D87FBB8F0C8B5C35913FA203
+:106A1000080E69BF070EB57974B02956920C0BE4C5
+:106A200049BE7CDCC5322EC5DD31A3AA47EACAF9CE
+:106A3000FA875A35387378000E82BAD545D3BC2709
+:106A4000DC287249C2861987F24850AEF1CDB8AC45
+:106A50004DAE3A8C126274B87BF3D57E9C1E753FA6
+:106A6000214BB4C4704472AA032EFD50CACB2BE450
+:106A70005710E29FD804EE2BE8FE92D9657EB29EB5
+:106A80009C2C77E74E8D4D40DF6B3D6D2677635133
+:106A90002896763966715B6402CA1142D8140A5E80
+:106AA000489648B9017FFAEAD8BBC529E183560167
+:106AB000B2DE08A75A3176BB2B44EC42CCC015A8F5
+:106AC0003243BF126EA6D3B6A37FE49C51DCA42848
+:106AD000956F5E1D2AC7930844B0525C1297F3EC81
+:106AE000EF8F10E735AA99FBD5FEE4ECA8BA041E97
+:106AF000AAB43A470A58C95621DD07EB767A97CBF4
+:106B00008A4A29239BE88A6966DF6AF3C22BA4AA12
+:106B10000C4D92650F1F990670A49E6D47934CDA39
+:106B20007398E504BA043D3CD23E20080AF110A057
+:106B3000CD475536417C887A120226BE2DF1974901
+:106B40005F39F28577111ED7F749FC1995BFCDF84B
+:106B5000DBC6E3292F8FAAF940430614540840BF2F
+:106B6000D2ECD688406967B7A8432FBF3F9D968176
+:106B7000E660DCEF402F3A2C63903560C753045831
+:106B8000A04E5335CA03B69C426FAC0AE0D2813A9C
+:106B9000A41962287EB03497585390E2A62E9E1A0C
+:106BA000FB2EF70E29C2E4DBBC53BA4365655C07D4
+:106BB0002B8C4F6616EADB1AFADB0B423020A7BC9F
+:106BC000953D2166F5B670ADC774C690F5DF838F2D
+:106BD000CF843CA46D209CBDFD3E1593393C7E9F27
+:106BE000146F65EFC6663F52BB0ACED4929F42FB3C
+:106BF000CD05E55D4F72EF90D3FD292B14CC68587D
+:106C000003A476F8A270289648894B563A7D6CF01A
+:106C10004AE6668E3D6D388B7B52F3F92764691C1A
+:106C2000D41B3F688437EF3B2B89F0A7576B061FB7
+:106C30004A78474139A1AA93345F4738194C373510
+:106C4000DD6B9884986AC113FF7B2B3ABBFD61789A
+:106C5000D492422F4AFB60956FC16FFB351B100F1A
+:106C6000F0E2EF61FDDB70972DDA4935A04867CF80
+:106C7000FC47BC0C4390EE68DB81853209B6650D9C
+:106C800017DF4B9FCF36533E0D025C79F32F344D07
+:106C9000DCE5FE7627857D74537479BB2150EA8C40
+:106CA00093BF8FC559DA927CB93A03753E600CF3F5
+:106CB000D751FCA9B6648DFF285AE351F3601575CE
+:106CC0006DEE8BFFBE04D96885EC99DFE35543E494
+:106CD0003F3A84F2864AEBF35859CDBCCB0190166B
+:106CE00026F589B9DCE0405EAC27E4FA73A60C4BCC
+:106CF00060F1B2E376F2879300D3FEFEC193C4D96C
+:106D000096467BBEE243684546E80EAD21E6579CB9
+:106D1000ED3D5478C07508D4E9BADA51F681D7F759
+:106D2000C188A39CB839D173A395C2ACC354519AFE
+:106D3000EAB2CD1D57165D9F184220D8A55DC21C32
+:106D4000B7503699FA7F80ABB13A6D1A3A5E5FF66A
+:106D500008682EB0228261CD81F504D46D251DEF27
+:106D600081EB9E0F80940F1D8098CF60A8CD781680
+:106D7000D925FC55E0FB964864A6FB3B60F8E1078B
+:106D8000F9443E9E81DB2FDC30CE5E5033E3490078
+:106D9000AC330AD1E02A1B963234F70760F4A95BC2
+:106DA000728733B45D03F780939A6D09AABA1FEA1C
+:106DB00090CA7A2AB2F30EE093B497D0B78F8E6B55
+:106DC0001E150FB431D9EB586A7474715638E67ACF
+:106DD000357F9CA829FB30A761A34F0602B5A3BA53
+:106DE0006AD7DA93079E4A635C51FB3DD1354FF772
+:106DF00063F464683EAB5770C8C3EF4637000004C5
+:106E00003C595539CFEF6239BC1B6B4C931F33078C
+:106E1000A0DD5C907AB2EC1000BFD80873B5465084
+:106E200046F06C3C1027ECF5DD12E6E7359ECFB856
+:106E3000F1B19B02228E0FB77DE7120C0C3129A213
+:106E40009F957F9D15187EC3D4B17DA01E1581D05E
+:106E500004E333B5944269A10044C6389DEAF8B012
+:106E6000A5DF77E25B0F4B20A132E50F8FFA0639E1
+:106E70001323D1081ACE375B806C16B3F74DA75693
+:106E8000AD4F5D840986CA3AD2834B093849B4278D
+:106E90005B7926697359BF3EAEF03824371799FAEB
+:106EA00033B166D2AA013930C33E5C4B7391B70748
+:106EB0006F1332A52729DF2C288C37C72B988E0D0E
+:106EC0002F0E2A7194AD959BE2BE1D8193E948A3D4
+:106ED000F7D68335FA8584524E77923B155DDDD225
+:106EE0000D508FBE26C855D08F66DEFAB568FB43BD
+:106EF0009301C34C71591DDCBA311813B109133118
+:106F000092F934E2E05838982ABE20B4A3D627B4C8
+:106F1000048917003177DD96837A018C54900F8EA7
+:106F2000E179316D738C727E5365BAF420B4C2037B
+:106F3000CF786E2C3F0532C4FC338256A940E11451
+:106F4000A1A3012C21E8BA41D9A47A57A20D7461FA
+:106F500011F996FCA713D026A7C6907D0F9A174C5F
+:106F6000735F6FA50960C5EAE8174F5810C48D9F7D
+:106F70000C59CE20921DA63D8F2F5BE6886115CE61
+:106F80005969D06D2646E61977200046ACF5A781F1
+:106F90009A3A9363D8A07A780AB0FCC884A54904C9
+:106FA000420D400C3DC5F5939D540F5893984A2CC3
+:106FB000BFA7FA0689606AF47AA72D124908C33D73
+:106FC00026711F8A4333168C2DB684224BCAB7D63E
+:106FD0003EA102895D280B84C17117AD91E58AED50
+:106FE000904EB6235473BC31598B2CD7A266948D26
+:106FF000ADEA27469D9DE257D83A9A74E35FA12BEC
+:10700000AE81063729455115357C7E1252E3DFB536
+:1070100038209F024FA4E178A9CE249636466EA868
+:107020003B156E492B3A0877C1291E9BAA65760548
+:107030006A8F6AB56C756D8C4D688371FDDC053C9B
+:1070400064A5B826BF6B923C71F87E18CF7EACDB8E
+:107050007EC6583C1133B8AD0AE0CB17A78517EAB6
+:107060000188F20E2DF3D18CC2FD77F9C9BC012A3B
+:107070008E1252CE266D947E3D8EF47F40699BDB4E
+:1070800075A7032E362B82FD424899557FC90FDA2A
+:107090002DE9FB6102ACB01618A006751173D77C00
+:1070A0009FA549983494AF0CF8A87427DEBBC35150
+:1070B0000A1976536469263E7C46E02FABAD046F17
+:1070C0000B0C7951899FDD21EEDBF5C8A368E3DD68
+:1070D000A7C64F0C18F2835D69BCB69E39EB4ACA4D
+:1070E00026B1A844F006245035E9F26A808F439017
+:1070F00044F085C90AC740E7505F8AE5B98B643D13
+:107100002FE6852EC7C9BA85CF35DAD2E8B86B929B
+:107110007A1452E02E9CB78D681517706548926DF1
+:107120001DD05122D2CC389D759CB496D1A664EB6B
+:107130007DF08B07A3CA2D8F168201D32BCB06407F
+:10714000061458D4ADDA4FEBE9AE89F28A9325895B
+:10715000FC94C60BE6F5A90AD90162B3FAAA7543F5
+:1071600095F34938EFA78ADB622E64ADEDFFE69C0C
+:107170000CBC5A560DC70169D6E53F31040C29965F
+:107180001E8BD96F8804917A29FB42A7027AAD1031
+:1071900092198AC8C6859F2EC5723E9BD0FE46595D
+:1071A000FF2C4D491C9A0A35997B006256C14D133C
+:1071B0007AB45C8D57B124268095E8FB3FF0F98FB7
+:1071C000B3ED654F2415284277EB6B8BBB094C7DE3
+:1071D000038D02D32B65EF10EAAD3A1C2818D8CBEB
+:1071E000D01819EF300F7CA48EA3E44E857B5C6A27
+:1071F0008ECE2B094FE034434C68048694ECA96092
+:107200005227E502AD22CF30C2994EF4E3BA812B6A
+:10721000B869E7F4A99B6A93CFDE793B05C14F12A9
+:10722000613810A3B12EF0EEDD5F628E58C4AEF46B
+:10723000653F38E91E5AE33657F107338CD85D1E97
+:107240001AF7A974B835DDA8B00926F1C583D301B2
+:1072500087C0C36594AB3275EC8575C7B7FE7D27D3
+:107260004E0A506237323445D648142F60DF091277
+:10727000F31BB352FAE3E2357AD41A6DA8208A2CB4
+:107280004FAA856562CDA610E20D202C91E17E7B90
+:1072900078CE3E3E9279DD196E4A7382E728945883
+:1072A00033D27478B299FF8B114CCAA3DC8A8E5604
+:1072B0002EA8E1C70983D312B802A030C3615306D8
+:1072C00066D7302FA911DC459CDEB6BE4141D043C4
+:1072D00059EC42A7036623BEF18153F4775975F147
+:1072E00051F45A73E3E3BE800DBA671DF11F19C153
+:1072F00067F41D86BFDB94782CF89BEF66776E06EB
+:10730000460E3E73AEB71F253A91EA73AB4672F252
+:10731000F918DA33392864B9894EE5136F72B01A57
+:107320002AB24551879A6336016558ED67562FB7E3
+:10733000853E0BECB5F4A0F7A774DBAADEA5307C84
+:10734000B5EA319C535C22994E3591959F32660384
+:1073500047CABD7C6F769954A64EE47E7F7CC89E5A
+:107360006BDD6D04C3B62FAC5A7EEB8815B2980F57
+:10737000206968CC0CB389639AD0C04A8E09211366
+:10738000160DDAD5D868ACC076DF72E948836B2F6A
+:10739000D9196E632C70D4D846143CFAC5450E79C1
+:1073A000D30B2DD1FE88E5C5B9D9E24A91BF0D278F
+:1073B00049CCA3AE52CD0766301C5BFE72B884B8D0
+:1073C0009DC5852ACEC6A9C52B5E83BA3DA3CF1E17
+:1073D00068D8909CBADA916F7C1D5AAB2811AA8F9D
+:1073E000A55DE057418652047578AEC0769508C613
+:1073F000BBAA991237C2711AF75B28F3FBBB227B39
+:1074000081AD0122CE7700FE165C1728CDF510283D
+:1074100067B6C0FE9E8F333E269F9DE6141276AC63
+:1074200078944D5C1B12713E8010B9A14CE8A617F0
+:10743000ADB44C1A2A6118CE6619D62A01193559ED
+:107440008F5D8770183D2061B22BB0CF73B8043ABE
+:10745000F66BAE19C251B94B3C6E5315701456D72A
+:107460008E769A3FC4E7E8030F15BD22253C17D658
+:107470005DB3004C10FB5305E225FA96F44B55FC26
+:10748000143F8068BFBBB67106D14B4E3CC69A9F75
+:107490009230D73617FBFFEEA08A0EC39CB71F535E
+:1074A0006BBCFFC83B86F273B8FCF9A663BE930FB2
+:1074B0008AD574CD621901E145661C05A34F0257B8
+:1074C00017EA3A4EEDC3AEBD88953E44CF056BB189
+:1074D0004E9ED45AA92F3FE383B21E2E1593C94D59
+:1074E000D9750D7F19F72A574D34096F1D29D640DC
+:1074F0001AFB6C94B074A28D956EF31CBC4A28DE06
+:10750000ED57CE519D1974E21F535D160813F9BC57
+:1075100066224D96DEF0E4B716C6330F6851DB5F86
+:10752000F3AB56AF7A182739D6875E5C4C36DDE56B
+:107530006C8A2AE584989ED947DB6B542A40857A69
+:10754000B229270E6C3F52561261BB9D68A446AA11
+:10755000C0F88BBD92DDF00A5A8BBC76076B422FC8
+:10756000F4E39D2ECC7E129F310F44DBAB41B9AAD0
+:10757000802D182CDE3C4C552BA37F6686AA2163F8
+:10758000E3B1754212732B4D9F4A72B92A66A599D1
+:10759000CD346C9DA0B5EC6EEF84DE441578969DDD
+:1075A000B94E9AD2E7FFF7703C645D5C0312E0E8E5
+:1075B0006F2092496486B939349757FE836A850EE5
+:1075C000F5EDB18D6BBF82A51B5C44116ADFC31A58
+:1075D0003ED03646D323FD631C89F8588141484F7D
+:1075E000052FD446E0891573E56DA2465AEB316745
+:1075F00063336F7FDC54642576E6271F2D5BF3250C
+:10760000ABE3418E0CB409C6210CA5DC858F269412
+:10761000C6E675DB9104FD8AA40A42508505053053
+:10762000EE2089303C355C49FAD6DF849934082B4A
+:10763000F78404B04064C10F0102A9FBE6C55F5E98
+:107640006915C6CA18757F54E1A77D234CCB3D341C
+:107650001678444C349D2BEABFE5A303631C606F8E
+:107660000C34CA8935943FA2D78BE15D04806591C3
+:10767000BC25E39F5A8E18480BC0F152878EA9A4EF
+:10768000717B9BA714E3A1667F576ECDC236003392
+:1076900088BC18C8A28512DF9A4729EB88203A2BAC
+:1076A000596DA77C854074C7764F041C7B5785FEB7
+:1076B00001F6F9F37408A62C8E0F0CFC177A0B0751
+:1076C000578FE714BA30EBA5A12E750D8677636F3F
+:1076D0000011FE46AC1D1AD8579E229CD39C084030
+:1076E0001134DE2B6B126FD65049BD16067D8E34D9
+:1076F000B2A086F3AF646BF7EF5A5BD4F7F789E675
+:10770000F67E9185C3AB69BD71D70493D93C6C8972
+:10771000FBA39D0B90D7E3C5740E2ADD52A59501FE
+:1077200075E3194BA908E787A7A7BE6E631A80B94E
+:1077300098F65544DA85F8BACB28095C57BCB17481
+:1077400024BFCA1115F93FB8BEEA87E8ADBB405166
+:10775000B5008ED593F5D418F36BDDA875E61F8BB5
+:10776000F0E46E59354396D132B294C2D6FBDCFEBA
+:107770004CFE1C5D9AAC6FAD5293BEB6E56088C4FA
+:1077800005047C714D71CCD332432665CC799500CC
+:10779000455A435C4841746D14BF4B9D0CB037A8EB
+:1077A0007E5BFC2AD9BA8DF5A02D91BDE9E8E920D0
+:1077B0001DDFDF128D2703B55099FA1C3007F1BB8E
+:1077C000C81E188B36044896248B9DEE4F9F56F0AA
+:1077D000E1EC91DFCAD0743241F8A78776B627541E
+:1077E0002EEC9070E2EE88E4AC888268FB2409609D
+:1077F000EDF91A901E3BF4E35584FC37D3889828A2
+:107800004D0634D2346DEAC9002947D565E6982380
+:10781000AF3B35BD2D94D82B4D74D10E641B5B6CE2
+:10782000045058C616A46139F2596E1D0DF8DE8257
+:107830008DE51E0AFC55CCAFF198AFBDC08E4294C9
+:107840004661E023903C0AFEF9BEF81E55E34C0E5B
+:1078500066B6E2EB1D78D2D3C1193286FC4D47EDF6
+:10786000D07D78C22237288BB72B032494C999097D
+:10787000942C69C67379B6DF7B61915D865E5A8D03
+:107880000862C04564AB13D50622498B92E6C89CBA
+:10789000017077A9DFEB3C460632708C3D47C0F3A0
+:1078A0007F5F3C5B7585D9E2EFE82D09ACC45EAA29
+:1078B000826BCD4887B33B6DB7FFD1FA4C5A451365
+:1078C0004EBBF9C64B4EFE9E52E23BE13F2AED977E
+:1078D000CAE8E08B9DF56C91E93A889B661CE056FE
+:1078E0009DC37BB5167FC01D79AD9A0BA303D10C48
+:1078F0007D9E9819A49FF895EB5DBC9DE24F88B5DD
+:10790000DF886A20ED009297513EFE36601DD62139
+:107910008F18AFB7084FDC41793D9B183892F06C57
+:107920001A364A11341BE77AB35E781515BEAE5D80
+:107930003FE8F97075FA0B77E84A874EF6CFF66B99
+:10794000C073808D6E76E207E2C145FAB8FE22E789
+:1079500025511E2B8B56989B51CF005800D11BF8F8
+:1079600023EF9F0E814E3488DF2131910D886BFE0D
+:1079700071CC96EBCE3769465916AABC67DF324800
+:10798000B19FD649A7AC085B37849F48C949B3A5C6
+:10799000D4570163C50F7F380E775F254F3A3B2CD4
+:1079A0002266BBBFE05F48C0DEEBAB1D12C31C49C3
+:1079B0003C7A64C23FA73947DACBB956643FB3DAA1
+:1079C000D95299E996E56F3016CED33FDB9E7B9472
+:1079D0008BE1AAA68B129D42A7BFB276015FFE681B
+:1079E0008DC43EA47130D6F3C320104141EE821BFA
+:1079F000C2B2FDC42886DD3D79CBFE3C6068158FA0
+:107A00006C35B9214D56ED5B02B146564C9A253482
+:107A10002ADE977A771E57E04F6DFC4901261B3C02
+:107A200015B5FEB4E7A7243504233B48E983F3AF3B
+:107A3000E74EE72A1A2195645A152C110812E768B7
+:107A40009A08E1F70F6B1C81F3D2D77093E3EE3401
+:107A50000E8E2D5A3D8328CFAAF9783533AB83EEAD
+:107A6000C46CA62137EFB449E6B99AF94FECA88364
+:107A700036052F3DC724956AA137909909C0D84192
+:107A80002F8218A36ECD2946A79F0685D5A5849E73
+:107A9000E6B56728AE51A64152C400DB053D7BAA7E
+:107AA000FCC1310637FFF2D6B95410684E2A79F777
+:107AB000EBC2E33A28985A471B7D39F4667438952F
+:107AC0002DB06512CA80946E7670C1699035215CC4
+:107AD00002018019C40DF4630D8AB53E698576688C
+:107AE00039EF722F89080837E095CB306305675569
+:107AF0005E2CA43B95155696CD97F4CFC10DE3723D
+:107B0000E75C39174326F125C4574247871E127B8D
+:107B1000EAD304E75908CB3E16E97DC138E0679700
+:107B2000171E43A6D65F31DA50B13A59B95ED7B8BD
+:107B3000566B5AAE7CEE9394A06511CB73E16D62E7
+:107B4000120DCBDE140080BB28BFE8A9FB5DFEDF71
+:107B50007EE369ACE70181D5B20B6052D77B30037D
+:107B6000B58181512FCBF3F37E6E4493D3A987F275
+:107B700010715AE929517B550111C01C63B661FD92
+:107B8000274928ECCFEEFA3C2BAB0CA4EEAF60DF1C
+:107B9000CDE36748E1450F239175B92D8446E3CEC7
+:107BA00067B0F6CF5C882AD6547A9F0D873CBBD845
+:107BB000C1DEB2C2FC10E2592B87D23052C5244636
+:107BC0000C2C0F7C34651CC009CEC9F64925031A5C
+:107BD000225D781B33A41B2B4FE32B51B304911868
+:107BE0006B9E497D3A17A34C5155A93C90AC6DBF93
+:107BF0008501B2F49546A705D9E49DD0867F7EDF46
+:107C00008AF762197997A51B34972AE86FA82F166F
+:107C10000CC15A525C7F1FD68F7340E47DEE93E215
+:107C200027631973853C500F8EE8CA9EC72FBF7417
+:107C30001E9AED9779714145900EF83405A823E717
+:107C400042853AF51ACA8E8404D0CE20D19B19E120
+:107C50001342552D271CB6001F778407E6950B317C
+:107C6000048D42874C34D56383CAB97F6CF9A593E0
+:107C7000329810233B9ABE078DEA46B8259AFD73C9
+:107C8000F6227D2D29B4C24B5944E771832976EF42
+:107C900059F694E8EE7C14CB06FB7650A18FF0D910
+:107CA00094A61D5ED6FB9F35865B2F9EDF0D9B6ED7
+:107CB00021C0B450B6E2DB8B9D77DFD759391EA3C4
+:107CC0006FF587983E346CEBBE40958B18E1E60368
+:107CD000F826A613D8BB0109EE62F45DAD4805ACE9
+:107CE0009F949440F8BB9EC30140A2BC694E522BA6
+:107CF000010455A935E408EFBF2EF03DFD58DE78AC
+:107D00001195BF744AA1C17D7B24DF250EB4813E4D
+:107D10009E66629643E22A089A133A7BB49964DE1F
+:107D2000F8254DC2C0FFC5DA74966A778A3BA6BEB5
+:107D300025FB2825184E915124D6A4012908BE0000
+:107D40009C075CE21F3C026E9FB5233EEA9C467393
+:107D5000EDC3E07FEEA510EF3FAE86ADB3861CC449
+:107D6000EF8ACF77D667BEABBC3717962C232C167D
+:107D7000708CD5D2CD4EC620666799B4F8FDFAE670
+:107D8000409AF47A212837E169BDAE8C3B7189D3E2
+:107D9000CDD42D19FAC9E31F2023D1CA6A87D75041
+:107DA00004B8CE042C81ABCB058348D76504368A52
+:107DB000A69A22E4D2AF32D63D5379A1BAEC77CA63
+:107DC0002400E5BE9C1C4052780C676F3868626BDB
+:107DD000555BF9F49422058DDB1B1831D0C29BB2A0
+:107DE000A4A36E7ABF0F7FAD508FC59C30DEB20961
+:107DF00085EEA729687EB99A7340A26A041E2645BB
+:107E00008ED5B991604DA71C8A1017A27B09ABA52E
+:107E10005CA5B5F8BE9AE5B0C5E2A55FB7213D3FC8
+:107E20003BF6A26CE1595F83DE8151E2DF21607B8A
+:107E3000EF3362969978AA6AD68C2E9EDE25A766C5
+:107E4000662C998A11BBCCD2CDF385C7778C9E4C1A
+:107E50002330F392B7DFBFB9DF0CB0B8CF3E02D901
+:107E6000A275E7E0B815970404400FAA023D9506F5
+:107E700072D8DF6877A80F32EF785ED33715EC81C0
+:107E800073556D6CAA3CB6FAD36A50E81DB6DF9AFA
+:107E90002DE273204EEFF79C9444208A26F0EF41A8
+:107EA000FB09A521D5F469892BCD48BB191CCA153E
+:107EB00065B8E2B76ABD7C4AA1548301CD93EA1943
+:107EC000BED89D113C353192D72CFAB1048E375073
+:107ED0005AADE3A790E020C28C72B3D5CCD29EEC11
+:107EE00047513EFFD00E37B8BD95EEC509960779CC
+:107EF0003B79A8048C9ECBE50576A48C07EEE515AE
+:107F0000A7A6D4ED5D77AF0EDC4230AB43BBF23BAE
+:107F1000B87B5E4EDDEBB7060D4EBBB9F3727A331C
+:107F20009A30018A13680C83321B7EFF43611FC2A3
+:107F3000A99EEDFAEBC43DDE48DE1B6C544E05B73E
+:107F400075D2DA78F80E027150D442292319FFFB5A
+:107F5000CB4CFEC86169E4A9ABDDE5AF975AA71A1F
+:107F60007DFD21FBBE684F830A398997A88ED56CA9
+:107F70004D19FC7382D3EED5018FA57CBDD1AFB175
+:107F80004C4CA9D13DC2F133C68AE4DE09B52E724C
+:107F90008F70ECE7AC31ADF7823E33CDA50A836E2E
+:107FA00054E47CD8E3E36F0560C32E3E32AB158505
+:107FB0000F69B518FCC59B0932EC5D67B2AEA4DF52
+:107FC000AB970E3B46ED787244196E8667031788AF
+:107FD00070A3983CA115A2C18742F94EEDAA04E115
+:107FE0001DD57BE1CD4C372C84162A21C8600F4566
+:107FF0009152FF7FFD9F105AA172466B9073270F1D
+:10800000F666F9193C3DD0FA9E95A21199101471AB
+:1080100007F221C600034F803F4A14EA9969EC3FFA
+:1080200020530D5FE555C1DE6C959C5432E19BF108
+:108030001228FB462E616B11D9880889B8921E5709
+:108040001E1695B4C0F7873D04E56FBF03CE5908EF
+:1080500011FE24CD3088658AE0DDB3DBB1387EE6E1
+:108060005EC508A88D8BD9977B2FF18AA70639D9D1
+:10807000F26F4F5792C6ABFA9B6340EEDF492EF882
+:1080800058A144190FCC306C582CF570EA0DD00073
+:10809000ED2F201EFF1948DD5780392C4B247B3BE8
+:1080A0009CCA984A5654496A14D16CD7576B582DBC
+:1080B0005A5F2B15802BFA947B24505EDAA3B6DD31
+:1080C0001237A74A9865FFEE53F42E145A5EBD9BF3
+:1080D0009F73E86961220062A53DE11F2E99F0DCE3
+:1080E0004DA1F86ADB7B9AA697EAEC6A0B8AD23834
+:1080F000D340BD8FDDAE10D88BED2F2AF3BE341FD9
+:108100006DD8B29D7F518F70F69E3FE0AAF7F622A0
+:108110009AFA9687FEF20295D11884677D28D97263
+:108120006BF92D5DA3303E6199B83C534817BC4BA9
+:1081300018C165753148A22279482A16E557B9F465
+:108140002955C87966B7C5AC83265BD1AE210DBB76
+:108150002A999985B792B169DDD3CCF14CBE2260E2
+:10816000CB517826E5EB8DE4607811CE865119D39A
+:1081700068E4DD530BEE34962086262B09566E8379
+:10818000EC00C21B53772098C95F383C3CD3A43C19
+:108190009DFB50A6B0D8FDC1D51D49856D000735A2
+:1081A000AA50E9BC9A3D1081F9B511838CAE5A747E
+:1081B000323C5CAE231E56B087FE82AEF30B98BEF7
+:1081C000C0F9144880EA2FF20F35143A2334BE87E1
+:1081D000A1AA5FD945518F217040F0BEF45D33599B
+:1081E000461110F381D4EF13F6DD39B8833EA15B5D
+:1081F00086894F4F21AAFB827A1F4E9285452FBC5C
+:108200007A3DA170FB2FBE922590B1DE6B9134DBDD
+:108210005190678CC701891AF8B48D76A7CBECD042
+:10822000135E8B880F3198E125871BD53CA43C1445
+:108230006A012E33ABC3BDBE1C968D749BF4F46FE4
+:1082400078D54C0DBD8ED382CD199D67CBFE7EC7F0
+:1082500091D13520E4C2CDAB2223952AB60170A579
+:10826000BC01E38FB5A70A9F0636BCBBEC24C855FA
+:108270000818CC9B1E433C666795ABA736A22B30F3
+:108280007DBE7928D90260E296B3ECEEA0FE17FA23
+:10829000F29C189527C82CEF6B818BC8A938A17365
+:1082A000F5320A3F037D6869E6C1BD06A8D872D2DF
+:1082B0005B3C4EBA2EAC53FDB10E0DF0ACAC9169E7
+:1082C000C9CBF431E73619891C70D16E3E0A158985
+:1082D00019C5C79D2D3F647CACA7500C1B47046398
+:1082E000EECFC95D6383C956B5802B71BA59C61AE2
+:1082F000F30E2210C26C0B59F09564F47A13A52882
+:108300002559BCDB5BB11D8DDB0B84AE86573697E0
+:108310003F5686F49FA6C615BC730FFDD1E88C08A6
+:1083200093D1EB24CA6EB056615A003B362EA1059C
+:108330003FA8B842FE15E3A2738639D631491157DA
+:10834000CFA5BEBEFDEEB62CE70F44037E7D822C8A
+:108350000B7E71325F9F6FBA3D3C9463C1F42D1167
+:108360008C28D72C600D35A261278603D4E9C4E0A0
+:108370005C6E64AAC12245B2FDCC6C0C8A24AC624E
+:10838000BFDDD53ABF266F8A54BAF6267E983901EA
+:10839000630176090BC33CF19BA16E6167AC76A9C2
+:1083A000B240AA7FBC5DA42FE1E5B214478AEEA2D9
+:1083B000940E998E96DDAFE423ED9C606C4A3A5D95
+:1083C0007F3E8550F4D190C173A1C2194ABA3F4F84
+:1083D000C559176F176459F417CA926F2090068910
+:1083E0000606FFCED9E653E578AA7EC391D5E9CE3D
+:1083F000139DB1D45B2C4B3603D85A1EE35F218208
+:10840000B78BABCD7E2EC4B044A7F659608CB97241
+:108410005F83F71389FE49F08804A2414AA30D8BBC
+:10842000F7549A37EE2E8B2E694C6DFB84FA63B5A8
+:10843000D4ABA2EEEB512BB1E108C1B15400E42161
+:10844000FA3E228C7DA677AF6DFDBE47D7DC36990C
+:108450005058DFC3BF0BC480768F45DA1951B8621C
+:1084600094B600E397F7DDABFB7AECC9661545FEE1
+:10847000B601A3F2FD38A34833384899DB35520FD3
+:108480003847E4401416A20830B893081CA194EEB3
+:108490009CA9DBB062850EB1304001DD2D437040F8
+:1084A000BBB45F8D3E30FA3F16C2FC9957912FD76F
+:1084B0006305AEE31F2DBD56ED1F4FA464E5F6B274
+:1084C0000432F28163869F6B76C78606CD8EC7F332
+:1084D00055C454E9FC24C668237757853AB0C3CE07
+:1084E00015404F616666E5E5A21AE7B6DA9EBD075C
+:1084F000A58330E5CD84FD893F14DABE083DF96CD3
+:108500007DD73A795E73E7733D84813A2A2A540F06
+:108510007BF2DFA4DBEFDB5C9EB9D801E6781C4B75
+:108520003273AC3DA67DEC5FC521BC570A3B24EB02
+:1085300090B620BCDA9FA6AE8EEFD948D5ADC5D790
+:1085400072F4C6EE14DCCEA332B3109DB171A15506
+:10855000B2D65101E4331021F9DD895C006BCFB054
+:1085600075663F67CC92CE027ADBFA8EAE8899EEC2
+:1085700020C196941B7B4FA3E3E6BCA62B75DFB10D
+:108580003AE3E44BE4FDADBF358B83933C54D88E86
+:10859000D2C0F1ED19772DA84CF453C82A0DF9C3B8
+:1085A000CB0483CD046356B48A55CB79DEB92C92C3
+:1085B00087737CCEBA135AC1B18E4D4AC7EE84B4CC
+:1085C0002B8612224152BD07CB88211781C453A7A5
+:1085D000704F606A9D270673A3FDDFB95C40C78EAC
+:1085E0001CB4374069F0BEE69910036B5D0543A5E6
+:1085F0004D61A61B6F8DC4393EC3C0CF3E4C97D191
+:10860000B04387A08D941E29E28536B0E76D2246DF
+:10861000C7A25C2DE5896A18799971535F5771ED8E
+:10862000D8ADA24BBAD9CE05A258A8F1E4296EB2B2
+:108630003D17D8B538597C3EFE1141F9532D4AF506
+:1086400004939381FB65C0BBDEF3D91ADBD5310CF3
+:108650003489214960DFEE425A12EC5A21795EC911
+:10866000BD6B31AEDFEC6C6AA075B191C5491CBF22
+:10867000F6D1058251ECBAE4D6B5FC4399FC071556
+:10868000B5E49F09E07C1FDB441A9AAD977559A7A2
+:10869000962B1EDB3607E97828114C620C96E02CED
+:1086A000841F896EBEA692437A3E4FD1DC79B18E8B
+:1086B000082805DDA4F240686B5F0B1040D5CD297A
+:1086C000A0C6B821E96A6D32687F5D9050AAD94989
+:1086D00063C34528E2FF7AAD6A2073334CECB7D010
+:1086E0003E7048D39EC061231702CF26F7E4E0D73F
+:1086F000057012F011E83B9BC3B836DEEC7B70F8D6
+:10870000D1B9D9A70B4BFBE9CE84C1124755EC7206
+:10871000474F437C72CFE458D932B8A4515CB29A27
+:1087200052BA13C85BA3515D19C409C1A4AC19C5E1
+:10873000A09389DD820959291676190F14349015F2
+:10874000C81AD427DBB8D2C3D091836811A302EB37
+:10875000919D35D29BF4DA1E361E0676290A259F96
+:108760001F7FA12AE41E2FE6736613E2F724D8AC1C
+:10877000FCCE28981268E794CC4E3BA0E8C648A7E8
+:1087800065F6DD15510E975CD8CA1792A37C0B7560
+:10879000FD0227C2A8994358452757C4302F4B44A0
+:1087A00095399924AD3492C4EC48021D7340355D6F
+:1087B000C12B3B6663A1629193AA4466A0F7D0AF38
+:1087C000B16383300B902D2697332C9661F2F34BD7
+:1087D000F1E0BE826AFC6FEC094317F398B2E2B194
+:1087E000C24EC5FDA9A0A3CE7093D938BD869F32D5
+:1087F000C86C392B0BB8A32A87E89875541C8918C4
+:10880000ED033367F63BB16EF977BC5397B0B4B65E
+:108810008CB48ABC813EFDB671AF35EE08ADC69B07
+:10882000B710FD0210F6D5560CA0565D68EBE9A70F
+:10883000344E540DCC34A15ED24B1BF9E6D0EF4937
+:108840005DE90543B258736E1E070D671B997641AB
+:108850008EB6E4B490C6BC60C5EB07627C795C530D
+:1088600034F82638FDD05D83D2245802CACEF635BE
+:108870001982C7999E0B7F7C758A45EA1C1E1EDAF9
+:10888000520E16FE5850703E48F30D61EEE4C1F3EF
+:10889000D2D4329FEA1DC4C36CF926F5249A05DFB1
+:1088A0009E440A79785AF8DF372DB537A3C459D7D3
+:1088B0003BDFAA3023ABBC05C14A9C2FD8F022C6AF
+:1088C000F1252E6D8216EF74C2BC573AB136CB1427
+:1088D000BAE60ECF1032885DEF412CEDB34324DEB3
+:1088E000A8AC4C9A51325FAA8AE83BB07E28F8AD1A
+:1088F000724B1967693542B4F2D0A29C62350C5DA7
+:10890000D803DF16FE72F6E4D868046515DEA8B653
+:10891000C2DF27BAB083DE9FBBD95822C831708D21
+:1089200016C2A3D9A624B39F81956CC05356AA4FF3
+:10893000D240673B5F9B87407937392E5A4C813F45
+:10894000397FADD5CE732F13ED29290822609516F6
+:10895000A3EE1EF056D0B1A846AB2F1526F07E67C9
+:10896000EC86D879CADE8BC2779124A3DCD3EAC720
+:108970002D89264CCD3371863F68AC64D9EAB3911A
+:10898000FE6E25D1C5CAEC1A87B3ABDB826334888F
+:10899000A26EFE094CB000F2588E60DCAD148086E9
+:1089A0000A0EE3C2C1D3F55B02A91A25D1938386CF
+:1089B000EE126F749D970F11339BEBDB7615B42D80
+:1089C000C961E88272432534ED5091BF6873DA5073
+:1089D0005ED57CDBEC879F436E39FE6BF4D2145975
+:1089E00043ABEEAE7862F02DCEEA9519E1E038B5F2
+:1089F000B05DD31E0F7FB6E9A7CFAFD11C906597AE
+:108A00002C69F2C9D971BBE75BC920DC9F3A8C1293
+:108A100012E327736540B148528E1D70177DCEEC6E
+:108A2000C61FD40F90E41071633A517EB27D4EECB4
+:108A3000005C6E44011A701864B691F0480138AFBA
+:108A40003C483F968F6B37BECDC028DD2178CBD711
+:108A50002679908F47C2321572125F12366FF4C2B8
+:108A6000D63E4D9DBC40DA04D3EB8A2D704BF7CA3D
+:108A700017ED85777E015CD38784699A803997D515
+:108A800022AD4969541D12816A00E65C5EC0A8C827
+:108A90009411B3E60404BA62891A0CEED1E80AD53F
+:108AA0000639284635AE16FAC75DE31A3B958FD1D5
+:108AB0009FC56C2CC6B3AB9486E6B495F6DAA927AD
+:108AC000870E16E68FDDA6844187BCF464CC334F55
+:108AD000DADB337E76D9D5E35B546E1488A43DE5AA
+:108AE000E5C1E0F31CB69A257CA56AC36C0FD09053
+:108AF0005717EE6149025A0F3394CFB7825C7B302F
+:108B00008B936BB415B9A12478240FC4AA984FC5D0
+:108B1000F0F0D2121ECE8056D361BD7D3C76206629
+:108B200095B1F97FCC8B3A078AEB381481C21CA827
+:108B3000E21D3755E94A0D2B782DEE5653ACEC5C0F
+:108B40004526F90D26E9F4BC490C1A407FECD42DDA
+:108B5000FC426628C35EAF44A13BA457166F9A98A7
+:108B600033FA1086046C28C2A3A86F4718B33ABB27
+:108B70009E2232CD7B348A47897F23443D64B22FC5
+:108B8000F20876C0A42A0F294B298308E61A808FA1
+:108B9000C5607D7CA7213E51178B167ED3931FD6CF
+:108BA000B804CFC72F4FB887FDB8A5F10EA0A0B06D
+:108BB0004C04B8AB0EF6AA156A5E546B50DA4986BF
+:108BC0009D0C23DB967D4078840BA9E6B47F7A72F6
+:108BD000E3E1DBF6F6740411A65D8211557E2AD915
+:108BE0004184CE7D93A3E88CDE34B337E098487E91
+:108BF000A4AF520705D87380607AE0DEE8EFF8464C
+:108C0000654EE3430DD5729E56200119B673BC180C
+:108C1000BAC52A04E295E6D2709F7A2FC726BECC49
+:108C200078EA9C43590563B8434B66C29542693F55
+:108C30000C3C9C0CB49F565262D40CAF482F993117
+:108C4000C71BCF6A0041D4288EE3AB9E43048A8DB4
+:108C5000CDE64A8D50E9F53FA24BE0DC11027F01E1
+:108C6000143CD87107F501650CF463A458BA2E3B87
+:108C7000A23A9706B34A9C86FCC49585C6AC302BB5
+:108C800098BAFFCB728E524A456EC2B7B7760A22A7
+:108C90001040993DEB350F22A7E7C98AE442E9D09D
+:108CA0000426D94EFB522EFC43062CB826FA2AE79E
+:108CB0008DFE9E8D52E1ABD38F6A1C2EDC784179FC
+:108CC0005755C53D2B9854C496DE108FB1C35062E2
+:108CD00063BA6C0376D12921FB5023AAD17BF428F7
+:108CE0004931559B80724A1C7FBE3D7B1AD5F25795
+:108CF000EC4EEF795D2403740AF371C4C3245393DB
+:108D00009BA177F1A46AD1F7EA164E0C0A514BCC1D
+:108D10001E57ED9886A05C17F24F0CD83E6B4FD5CE
+:108D2000819149E51B33394562D216EE6A33FF3A29
+:108D3000F42B9899CEC61B17E7B4BA98DAF714410A
+:108D4000E61F30C22221EDDDDAEEED45ED196ACDE8
+:108D50002B24B8C738D8B6F4F62F512FDBED354A9F
+:108D600095176CCD759E0EE84821D64A09C51B01A2
+:108D7000EFEA7E5A2C0C606223BD67775D939515F0
+:108D8000A9762314B90E30F98A2AD7B4E7B3CCF206
+:108D9000340D9B67F3E9FB19DF7439D6C23F308B82
+:108DA0005A1041B9EE3971669A3C855639FF25D57E
+:108DB0004C31F31C216CC56E701A50DEAE71CC01C3
+:108DC00022902B43F3665D50100F9F31ECDC8A9E9E
+:108DD0007400A68D588BEC15C184080A00530AFC58
+:108DE0004F5D7D50BE47775C0A5CA3818C3DF01DD2
+:108DF000BF35276B26FEC834D3AE1834BF90514E12
+:108E00005612DD4F43BFDE59A381423851243D281D
+:108E1000B176997E0969F6D0FD0AB6723CBCCDB731
+:108E200075BF71528C55ABA5DD34F39FB46D0963EA
+:108E30007CB31F3DABECE34EF16295C05F0FED15C7
+:108E4000B3C75043237743D5CC083B874F6A486666
+:108E500035D0813B7C20323B2C429C837AE802C790
+:108E6000E11BD5B1262BB3CBB5AC1F6555C39CF325
+:108E7000E4B8CAFA97EA2B535DD00BC0AF20D120DB
+:108E8000831C251B62169C4B036F5318E13146FA75
+:108E90009AE28E5C912B7DE7B2682B81C8402F62ED
+:108EA000F7D986F00811433CFC2C534F3DC4249461
+:108EB000C2E9F542CBE256C3B4C35F2DACD0C76E56
+:108EC0007AFB1F44FD434A7E7402DDC626FF1E3A2C
+:108ED000E823EC83D9021CF92ED4B4BEB27007FC8F
+:108EE000C56B9E628494218C68C731224F795ACC1D
+:108EF000C7EC69AB78BBD73AB7AA6E60D09880BE92
+:108F0000348030C21E90D1DFEC3C1D3A8E59D926F8
+:108F1000820A16C6894F7861C919E25E8029EB4141
+:108F20002EDD369F0E403E71C57F69E964A5FEBF08
+:108F3000167043E67BD5CB77FB12C7A8C1C6A779CD
+:108F4000300701ED8B2578711CFE607AF38BB23D02
+:108F50000DC783C4DA81D0960131F1482E44BB702D
+:108F6000046C33879BCF0323BC5376AE4C6405E778
+:108F7000DB948265CB0DF180E3B2B08FE3F2DD4B81
+:108F80001BA76CA3B5BD5C7EAD984BCA5AA9BC4D5E
+:108F9000D2FEF1839104DBD25C07CDF2FA0E4002DF
+:108FA00033382490450BAFC94B8D808A90AA0E1799
+:108FB0001C7FA994D0DA74768256F497E13863BEA8
+:108FC000850198C62C43223BE7C47F52C6B6C7AF83
+:108FD000AEFC51FA6E902EC464E1B824EF473242E1
+:108FE0007F652C4CC118FF4D2D7A033CCA6A35A40D
+:108FF0002DD8B7A4655AC9CB714CA97BD562BDA643
+:1090000005E74306BC4B383792FDB5FDA934C5D6FC
+:10901000042230DDD7D4325AC7B8AA5C93B4CA410F
+:10902000156F837B0D8C33BFE27BD32C3ED795200D
+:1090300030CFD55C4437F4AD9CD0CBA9A6A34D6C02
+:10904000ACDB057BC7FA41A87F026D5AB6BCDED304
+:1090500080AB4FC56554674FB55DA36EBB536007CA
+:10906000169F58D22E3D061493B85CCA52C4BF89CD
+:109070004CBEAEE1033FB164C6E95E35E798965356
+:10908000D5DE991EC2C58DAE9811243EF409750D2A
+:10909000C6BFB4CE0BF0362AA2265EB7ED2C7FD227
+:1090A000C384F5DEB077B21C3A1F45DA18D61DA48A
+:1090B0007AA03467D912B8E9BD54A83F191095D2E7
+:1090C00035F84C9104EEE863397585E95CFF5E3450
+:1090D000368FBA67C9F8F7EFC54378EC99A3E9076B
+:1090E000B79AA99D51457AB3E60FE34D4CA2F238E9
+:1090F000283E08013621B1D688B3DFC683BF8EC1B2
+:1091000090C98D74D8E400626F84015A45DBA14197
+:1091100020F16A12B5ABD6A81E9493932C03A2BE7D
+:109120008BEA6B5AD8AEFC9ADDD26B9D5D275DBB96
+:109130002959962DD2EF7FB562E2B1197E5CCE49F6
+:10914000852518FED4EA0734CA28E02F02F371AC53
+:10915000AF0299A72CFC0B514949480B494C376980
+:109160005978E780E70FD08523B12A35DCFCF82158
+:1091700006A70FF17E01FD6B0B487E09639EC9D1E6
+:109180004011B1B6E6FBA7C165B117E7D8B5C61F58
+:1091900046DAFA7DFC593A9DC5331E316DFE0958F9
+:1091A000891D367BC7313BBE3DED8B6FDF7E74F68C
+:1091B00042D6CD0EAEAD5B31B2DA624045EDC8C1EC
+:1091C000E8FF517144F1C5F9F93F3724C90A5651F6
+:1091D000DD8EBCE66870A11D6116D81B4BC9CCAEF4
+:1091E00050EB50CCFD253B9260F0963ACC2F642397
+:1091F00096EE8941CB54C6DAE481BBD4F573C8B48A
+:10920000C4AF83DAB5A64DE34B673102506D4D2FE5
+:10921000D47A63AAFDFFA79F72C202BB7B44BE4201
+:10922000E6EE22B4CBBA8C270765BD14F4010CBE60
+:10923000914DA07B13094D5377C3AD8E8593A5D770
+:109240008E2543F253EFA2AFAD2D379EF9C3DC5309
+:1092500035DE3298E87D9A1CC9F856D03D6A482E12
+:10926000F271F0D4193B61F25206569E020DDBF505
+:109270002CA7E143D88A7408E0B55ECFF906CD2D5E
+:109280009A8BBFF7D2300ED2C89CF106F485DD5A16
+:10929000FA268CF583A76507794F6F78C5D37E5979
+:1092A000965C0297F42228FB9C3863369D63774EC8
+:1092B000DAE8070407E1FBEF42289E08D9C125C27E
+:1092C000D85C7E5F179CE29BB5A6F547DFBCB35226
+:1092D0000D91A3372EC74055208C8A4E773F978932
+:1092E000D818BD4AD3E9E46C0BC4A6D874B3E6FC25
+:1092F000881A9D24D191AD6EB0D028684DBFF985F4
+:109300008BCE5C83730264BFBA1D60FFFE05ABD3D6
+:10931000C2A4595B21D3A723835E811EF444679ABC
+:1093200083EFC4ECEE3B0458774203E211D9C58DBC
+:109330004F65DCBA6242117445D44912EABF054C4C
+:10934000EDB4FE220027E3437CCC1D1722DC68B07D
+:10935000989D95D0A8C12B2964E5650CF0F545E8EA
+:109360004AF0BB22661A9BC6D1F4682C73C58EAD39
+:1093700076AE12F48CC713D59DD04F0329B88B8CD1
+:10938000CFB9998F8D1B8A1A6037C6D2086C796B5A
+:109390001A045AE1C82946BFDF2F8DCCEF78C67575
+:1093A000EBEBB8E4AB1CF11EC54EF736189E6D9B77
+:1093B0005A691B7ED713BC860FDA9747F3CF2FE38A
+:1093C0001AE705AEF00558B498ECE57DCC9C6976BB
+:1093D000FF55F298DD4F51A9C2D3AA8293A6FBD7BD
+:1093E0000A7CEA7A24347BF24AD4B8C35BAC138596
+:1093F000A3A8C0F5D7D3AE36ADC4B9D7C2D13049D2
+:10940000DDCB6AE8E42B8469034AFB8F7903109D66
+:10941000313814DBFC5B38F50BB49B27E995E096FB
+:1094200012B3C0B2BC3AF64A546175D0B1420A8652
+:10943000EF1279F688FADB1A927C9672370C6DB2CD
+:109440000F1DF615495001BDCED27D06D44DAF702B
+:10945000D8E9641DA82A4069A85D02FBA1B61302E1
+:10946000D70104F1964808F78D64CBF799CC17DC47
+:109470004D07A1E7869AA28AB3FDBB92F33EF1E3C2
+:10948000694CA478A47F604453E73A9419CB1859E7
+:10949000035BE5AA7331E181C2AC71B8A19A178C64
+:1094A000210E6015EFA4B29BE50029737EFAF782C6
+:1094B0009E233DA91A3B7B40A87A1E5B523089CF80
+:1094C000D2FEAC00996A56C371BA938C1A41A6EECB
+:1094D00084C1E299EECA5B0FD145F11C8BBC080E2A
+:1094E00044B278836489266BB66CB5610DC1F2ED28
+:1094F000651B8326BA951635B41ED45DA3133DE7CC
+:10950000B79A7C4055A20BCF1945A09E87FABDFBA8
+:109510003731F1DA582D68658EE40B775E62418948
+:10952000FD78C05ADF012795B4EC960E57494B6879
+:109530007D9A29F742848E8977CC453976F8D324F1
+:10954000EB3F5778482CDAA3AD9BFE5C7830DD8E7C
+:109550008FEB7E0C3BBC1F83583E76880DDF55D4C5
+:10956000DE752D12E801021DC257FC84976486C780
+:1095700050EE03063DFB9BDEB197DA934E7563DA3E
+:10958000196DA1AB27422E64CD41BB4E7F36F88FBB
+:10959000887F6B6A01F25BD755B5DBA79005C1B434
+:1095A000BE61C2EB8338004564B007CC0CEDC5D773
+:1095B0006CAAED0CF1DBBA27A7FEBEB9C554A26FA9
+:1095C000F22C33D3AA5E2CB8BE263BA384D539FF38
+:1095D00040DB268E2991C3DD807522C826A6BD33C7
+:1095E00028E5095CD2FE999B6C74E16F3F133B0048
+:1095F000CA2A4D45FF2848792CCB0C119E1C13FC20
+:10960000A8969C3F79F583A4E96082DE34AEED3AFA
+:10961000F21873E6726454DA234D866B6B7AA16399
+:1096200064D1CD9DB4E961DF27F61BABD06A5351FD
+:10963000392BF1962DF80053D67471A0DD6431D822
+:10964000695671292A7C3BCF79F1CA089875DE31B9
+:10965000F8B07277200C44DF0FBCAD51049E134468
+:1096600067BBB51126149ACE8AA9A0381F68647DFD
+:10967000E305F64EAE6B70B1FAE26F9B8F31FCA141
+:1096800066E406CBD210185933FC7010B79B2F95A7
+:109690003FF30F40DA70334E4DFE5AE34F3015085A
+:1096A00056F128D58FEC0A938A1F88F2596EAB5376
+:1096B0004E3059F3A2D3578B376C74058111B41F08
+:1096C00015DC562A5CBA6BFFFACB2D48954C0D0F72
+:1096D0006C10ABD9C15542C5735D3DA1F2493E63E3
+:1096E0005F7A416A2D56CCB4B271461CEB7EE160C4
+:1096F0004476825743659C9DCFCAA0CF5573D15104
+:10970000D9CCC19DB048DB4A1F5D05EF37D66EB599
+:10971000D3B47649B0540AC2D52C989F1B45851501
+:10972000BE34A89708A7FAF0C71CA9FAC9874580D4
+:10973000672D4AC3885438228474BE078A3CB3C557
+:109740002FA99FE5CA568DEFB71A7AB12A67E0F9BB
+:10975000444E9BD4F20D1905EC83ABE22819EE823E
+:10976000CCDDFBBB0F4D00E7CCF1B23B4040968611
+:10977000DBC93440C639D20761B0819237C229C7EC
+:10978000FCC41ED0107DE10BF2B50935AC1BFC0BFF
+:109790009A4867A24EAA7B80659A7D32475B12C7C2
+:1097A000FFE0F71265BFE4F401A52F5EBBBE6ECEED
+:1097B000BA429FDA0CEFF00CE98EF91B13051F6F0C
+:1097C00063CF8516326BCC88BB573B788C2410391D
+:1097D00058D05429ABF8C91B75B8606A9EE4C25CC6
+:1097E000B31E361BE389ACF254F63FE27AAF75192B
+:1097F000B149FFE6F6B1D47C816C88B214B50A9702
+:109800008E640A6EEDCB488A193B61B29BEF49BC6E
+:10981000CC351E7BB5F62D48BF7900791DBA0B0CEF
+:10982000B584DAADF4B11A9EFA510F9DA35D505B79
+:10983000410F46DC0A8B2F6A3AA7AAC37D8C9D1C78
+:1098400056F067799EF9E10B86C670AE8C70565C57
+:109850001AA0D7D8DC348AAB5FD491C3E92DB1AC60
+:10986000B7C99F036E798CDF8CD6F9D2462B81382D
+:109870008344EB5572B995EF7F265F23C1DAFBF283
+:109880003FAD032E71D4A62AFFBE628D3F7D67BE19
+:109890006652DAF82F2A3631B0753BD38A794D916A
+:1098A000E9F177071E054AC7242C8D57ADA0D6E1F4
+:1098B00003E9621FFC49C22242F7E9F5F30995D892
+:1098C000AB8AF1DBD4BBF5AFBE6B720D8686C4BA32
+:1098D0003156B6B8576792B210D3B72CC1AB26B287
+:1098E000AC1E7558200F0A55BE9D25B6CABE12A7DC
+:1098F0005C420EE865CD1C4E20983D51DF5C801621
+:109900001308EFB0D2E542CEE789725F74B5F88CE8
+:10991000D211041D4D58C87B4506FD92F7606ACAF6
+:109920000C7D7FF0A7390A5F43A995FD49B91CDD7D
+:1099300014A32A9F56DD589CC66DC874C58C7199B6
+:109940004F73DC983C37672229CC06E684D82B116C
+:10995000667EBA01AFB2AE4FE940AF8EF54261927A
+:109960002B0DA08D5C4CE3FE88DC0B7E686C61D116
+:10997000AD97D53869315ABB2F9EF2153F0F34B9D8
+:1099800084565DEE213ADEB85DE8790177259B11BA
+:109990002419B6B4F92A008052A878071248B016E4
+:1099A000BF80403F21C0DEBBC233BD9372CBBE201F
+:1099B000DB7B74EEE17D1AA38DB91F7A9384AF909F
+:1099C00073C4EDBB9DAD56B25BEB5D5288867C489F
+:1099D000328FD0AD9501FBBF1C26D0FF2C8B229679
+:1099E00085B5B833AB66673AF97D3C6D5BF29BBBDE
+:1099F00014676FC3F582EC5E50CBD397E048934D6C
+:109A00004064093998E601038DE202A05A1EDE3354
+:109A1000854553DD08D713C5B340E012A9A4589F6C
+:109A20009EAEFE62C98335C49B0E5CF1695D2CE17C
+:109A3000920C5AC7F1416E040EB1640A40B1E98735
+:109A40003504A5BB75E47180037BA2F8E046037E74
+:109A5000CDC6B6ABCF2DBA759EEA7640731113759D
+:109A6000208A13865B41C5CA887136818876A6082C
+:109A70002D85F289D42F56C4FFE86009ABD5E7B233
+:109A8000E627F2794FBB03643923EC1B19CD460559
+:109A9000BAAA247AD02E47B68507AA998F881DA521
+:109AA0007D2E20347022FB0EA7CE6BA144AD29770A
+:109AB000AF338AD28E84517AFD2F13EA8247C57C58
+:109AC00076631BE68C361077E2D849346F8BD22F41
+:109AD000FD0A3268F50662CD5138C584FD17D5EF11
+:109AE0005D73C21F2491D3EB985E76F5D12F62543B
+:109AF0009B4104CF4DE14584ED9E64EF0937CFB122
+:109B00007C4256A59524BDBEBF61C4E8AC181C5D5F
+:109B1000AC2D752083C48C1A8C02ECDF82DE47E901
+:109B200068CED8B3CC903275D218FDBF5A710FFDF4
+:109B300071CB725876EDA3873C6DA38358EF1778ED
+:109B40008E016B6E6CC64D39E82BFCC7F2A87449C8
+:109B5000056BC81A0AE8140FF94FC1F91FA069F67E
+:109B6000C591D9569EBF95B92C2D5786CAF49ABD7A
+:109B70007ABBA33487E9C67FD4E1745F745EF7CC07
+:109B8000A0B4A107AB9522241568381852E633D447
+:109B9000A0ABEED8619F5B49625F308FDC1AF61F85
+:109BA0000FC2570DB8D3B8B9CB585BC629DA456791
+:109BB0006B2930C66A97CC1C36A644879D4511A3F5
+:109BC00050CE6A15A39B1FE2876BB7B258DF0083A4
+:109BD0000E975F145C73052E38D4A73CDD311F034C
+:109BE00085CC3ADEF8E845B459BB449513C3F8C3B5
+:109BF00044BC0B76D474E4B954B7BE58685C8A91FF
+:109C0000887BFF65CCE0BC804C1CE775B80D0AC9A9
+:109C1000DBCBBF3E4D13B0AC07B6828D51F2AF79AE
+:109C2000D6C87C35EC608E537C877911F199854BD1
+:109C30007C738E13F3886BFC6EBC6F6565A3BEE707
+:109C4000CB0E7D559402EEC44E7ED51366F53715C6
+:109C50004A5052BC846332C0BE3F56A3AA8A72BD2A
+:109C60001E13764537C2DCE35E91B1B839922F35C9
+:109C700068BEB719729B1BBB5B2D80B98418247B0F
+:109C80000C27007F6DEA6EB7C60607288213296C81
+:109C90004EFE5D0C04F648806F6ECF91EAFC9DE5A8
+:109CA000B8ED8015A1731F6C8336C82F5F570484ED
+:109CB0002BEB1B2619750E789BEAC9B9FBBEF7631F
+:109CC000C2D0C457D9A7F86DDE0B3B82ABE70C8E30
+:109CD000EF114D3EC57E2D49AF1825044BF2CFB193
+:109CE000CFFC9B898C8507F6DD330F4354B68FFF7D
+:109CF000A84D2A6A231D13B990408E2677FE6276FE
+:109D00003DAEF3582129368ED09C8896BAF007EEE6
+:109D1000E003AAC2700B53B64249FED1A37A67642E
+:109D200018B38B7D11D91BBBCC7B0DAB601C718F25
+:109D30004C25E32396631D80DB809B5DAF5F48FF6E
+:109D40004050A4401549AD4E17662072AF481D82A1
+:109D5000C17C1566F3DDF3F3DD71105C06916C13C5
+:109D600072A9279A5E692BEAF3406214B19DA70B92
+:109D70002CC0E9C59076DC6B7E25BC7FC5D76CB066
+:109D80006B55E8719719D33AAD93EA46B4A27DECCE
+:109D90000CD0874A40C0BADDE592EE12A2B7612727
+:109DA000FB5EB56490B5718755404EFED1CAF4D7BD
+:109DB00012BE109CFA18184B34AE3D6DE40573E3E7
+:109DC0006D052D054777A469945207478ABC64AD99
+:109DD000892EE5BE3568693C9A8FDEA839D2E8DB6A
+:109DE00058E375C35B465EFDD0C06BCEC07FCBCD64
+:109DF000F089B2231EB64E3D37EBF0077F20429626
+:109E00000378AEE564C0EA1FB3CE08BE4BF1DC4276
+:109E1000656F0378AB6375B599C21212492F5C4127
+:109E2000567519CCB858C9BFA9C075BE4E610FF898
+:109E3000C119C996A25F600EBC23F0E9B1BA1073D4
+:109E400003C7D3FD3956624A041B2A7A359604A209
+:109E50009DAED00E973266744D3EF52461D3D00D81
+:109E6000C805CFD7FC7F9AB23D552D69D07014DB61
+:109E700024A118FC67DEB9B7FF9EC1A35FC7E7B195
+:109E8000549C6FB4879D15A9223491741CC9366205
+:109E90007D5B78D7492D39EF39E2886F1FBEB0D18D
+:109EA000BCDFD4E99D4122C724EB2D0E24A1047709
+:109EB00005F01D78BFA6AE9798ADE678BA78051084
+:109EC000215DC4F69DB0E2A9941F72324AB41B3FD3
+:109ED0002574A732A298A1C6CBAF69D97F3DE85AB5
+:109EE00066F57AE6541E424693E78021B5F2CBFF31
+:109EF000231E7B21A584857255087DED558AD213DA
+:109F000021EACDC206505A8206E79BB1399A5DB864
+:109F1000F92387ADB28CCB893B9898D1B950D064E6
+:109F2000A5CD4FB6CB05B7FBAC8D1157E46AB8ADE4
+:109F300000D9E231A3E0316CBD6ECF6047C949E47E
+:109F40009C50AF461660F372D9D6C6E255337A9666
+:109F500052204143139A68D860359BCD8567AB6C1E
+:109F6000B51ECFE9540C16C9316D40FD706C916778
+:109F700097F24FE0A34A668ED01B5F998D718CD209
+:109F8000D328133560B02CF2AE7EABECCA4C047310
+:109F900088E816052A99F5F2059E94B7818EDDAD05
+:109FA000C7141BE3376395EC8295DECCD5809C13F8
+:109FB000CDE7AE5C777266978A173676781D852076
+:109FC000FBE7B028298151DB83029A69EE2DFA263E
+:109FD0001C232C53F80C745A502441E9866728F549
+:109FE00074B5F95727D85FC1D1685E523A80AC2268
+:109FF000C4A05A03CE2D1DC474D1C70923BB142E8F
+:10A00000FBE26CECB4004F1CCA7D31502577D84B75
+:10A010006725158AB44B313CAEE2273454CD4864F1
+:10A02000A5F127F31B7DA0E834A755A393E90B2CDA
+:10A0300064912AA5C8795515388A7E44FAC1C0FFB3
+:10A04000ADD87A3A6BBAE72D83DFBAAB801E28BF52
+:10A05000305C234240DB1E60B4A6099721B06894AF
+:10A0600006B051B58EEC1F0AE05926F740CA88DBCE
+:10A070005D48B8F393B7BC211DEF353644B4F8D52D
+:10A08000683F2E311B57972C06116C6D41D96FF923
+:10A0900040A7750D5D716796900F31B49B91A5BE79
+:10A0A0002DE14B454C57962DF8879189C905BCE4A5
+:10A0B000564ADC3B755F32E4682E3577E2436BFD30
+:10A0C000E4912914ECC901C7F498D708CBE67E6F58
+:10A0D00021D5F8A8D7F584ADDAB34A1961DE280C8A
+:10A0E000138457E42B5D1082AC96D36FC5CC3FDE52
+:10A0F00079517DA74FAF81718E57EBC57A940CC013
+:10A1000097E2BE484DAEDBCEF00F5D3905C8301189
+:10A11000DDA56E6EC184D7D1F7293C924A1476E949
+:10A120007718D68A055277091A4C91B82529A9EDD6
+:10A130007A0483D76FA966E07AE76A427A0B1379CB
+:10A140000930ED3286055254884B85F3322106439F
+:10A150001EDDA7D67F9A3E748CC7306441594A49A8
+:10A16000807BBDAC614C9BE5AA2483E1C951B7E675
+:10A17000B66C8CA15588A152BAD222473BA3B20B30
+:10A1800081B11B30A765EA726E2A7CDAE369E1844B
+:10A19000811CC5DF2E852C3E8C09D240025A5F9F60
+:10A1A00065B427FF35F200E232D09FA425FF920E5E
+:10A1B000E9A62A23AA8A9386A821578136F9F08531
+:10A1C000AF65A832892E4D402F4A0DDDF66ECB1BB0
+:10A1D000CC9A44E924581BD1FC0C9AC3F8637D1631
+:10A1E00090B71F7359D6F5C1B2C36D78B099A60B5D
+:10A1F00020BFB50C62A7DF87EB1760FDDC95F4315B
+:10A20000C5D74F7F3B96904F25870E5AED2A073FC3
+:10A21000E86DBDED852326A201289CCA0354C1A385
+:10A220005DB2103522A9BA641D7BB8D55EC9AE39BE
+:10A23000611FEE86074F852BA5DFB4532D2CE8391F
+:10A24000DADDF4338D42F4C56E47EE7128F9A222AF
+:10A25000D9F7532341B1272C90E0ED3EF04FC3AC2A
+:10A2600044BF75F1615DF38FF434D7AADBE8C460B5
+:10A27000077FA4262630217167982F48CB85EB2EC7
+:10A280002790221EF573409640BF9944C7F27CA2E6
+:10A290000CF8E987179A4948A1418DD8680369D518
+:10A2A0000DA98CD846CFC5B35E2FDB33D60813DE9D
+:10A2B0009CECAD8FD0DCD2FE33D589FB227D453FAF
+:10A2C00019A9302AFECF9B9D5FA28C8606EBA92F91
+:10A2D0001E3C7AE800F03E08DFCBCA52EF058C81C5
+:10A2E000541DB0DEA6D5E96C9C6846CD85F609A85C
+:10A2F0009B7EEBF210769DB1115F7164C3A5D98787
+:10A300005FA96BAB727906ADE61B2A7CDBCC5ED411
+:10A310008BB4EF95893B24BAD0A24EC7CEB47D90C2
+:10A32000761F75B1E6A1A6983A7769700704418C4B
+:10A330006D5FFE51C20D10B635F8D7236EB0E7132E
+:10A340007EF285E4FC056E3E5456C516CEE473538A
+:10A35000C4804BEB6C4A6FB26AA848AE68BB745AB3
+:10A360004679816784EF38C7BAFFA6F1DD7CE18CBE
+:10A37000E8FC909BE015580F3D5CE8DEEF207DEF98
+:10A380000361DA62780DA7305DFBA966930AE9A73D
+:10A3900096E8136FF1161F7DC09EA2E070B8382CAE
+:10A3A000D97CDC00CE33142B9F28F9F8EF0C94B441
+:10A3B000263432F97FFB6A7AAFCCCBF9E63B1A84BC
+:10A3C00056ECA9695131EF20687A362455DE258490
+:10A3D000E405C396D40DA4EA11F7906661E295E511
+:10A3E00087159A23E07607E32B77F618AB7872E0AF
+:10A3F000350F679B4BFA54D331404298AFC06E7310
+:10A40000C3677141AFC12B52AC650F56BE3C4E6C59
+:10A4100075194FDC4136B6A4F32EF9FFDA6D2B66C1
+:10A42000AE9EFC9B4863BDA542CFF677B085E7633F
+:10A43000AAB372F5E64B4015B1432E4B30B011E58